Simulation de présence

Mon problème

Bonjour,

Vacances oblige, je souhaite créer une automatisation ou un script (je ne sais pas ce qui sera le mieux) pour simuler une présence à la maison.

le matin, les lumières (et autres appareils connectés) s’allument pour simuler le réveil et le petit déjeuner et le soir idem.

Je ne sais pas comment démarrer et si je dois plutôt faire une automatisation ou un script ?

Si vous quelqu’un a une trame ou connait un Blueprint, je suis preneur.

Ma configuration


System Health

version core-2021.10.6
installation_type Home Assistant OS
dev false
hassio true
docker true
user root
virtualenv false
python_version 3.9.7
os_name Linux
os_version 5.10.17-v8
arch aarch64
timezone Europe/Paris
Home Assistant Community Store
GitHub API ok
Github API Calls Remaining 4938
Installed Version 1.15.2
Stage running
Available Repositories 888
Installed Repositories 9
Home Assistant Cloud
logged_in false
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Home Assistant Supervisor
host_os Home Assistant OS 6.5
update_channel stable
supervisor_version supervisor-2021.10.0
docker_version 20.10.7
disk_total 116.7 GB
disk_used 9.4 GB
healthy true
supported true
board rpi4-64
supervisor_api ok
version_api ok
installed_addons Samba share (9.5.1), deCONZ (6.10.0), File editor (5.3.3), Mosquitto broker (6.0.1), SSH & Web Terminal (9.0.1), Duck DNS (1.14.0), ESPHome (2021.10.1), eWeLink Smart Home (1.2.3)
Lovelace
dashboards 1
resources 3
views 4
mode storage
___

Et pourquoi pas les 2 ?.. :innocent:

Pour aller au plus simple, tu fais 2 automatisations :

  1. Automatisation sur le déclencheur lever de soleil (avec ou non un offset négatif/positif en dur ou aléatoire)

  2. Automatisation sur le déclencheur coucher de soleil (avec ou non un offset positif/négatif en dur ou aléatoire)

Dés l’instant où la notion de déclencheur intervient, c’est une automatisation.

Maintenant que tu as 2 automatisations qui se déclenchent, il faut leur réaliser des actions.

En théorie, les actions sont censées se retrouver dans un script pour pouvoir les exécuter indépendamment d’un déclencheur. Ensuite, ton automatisation contiendra l’appel du service script.turn_on.

Mais en pratique, si tu ne comptes pas pouvoir exécuter les actions manuellement, mets les directement dans l’automatisation (en plus, dans HA, on peut déclencher une automatisation… ce qui inhibe les conditions par contre).

Donc tu peux très bien faire les deux… :innocent:

Voici un exemple de celles que j’utilise :

alias: vacances_lumieres_allumage
description: ''
trigger:
  - platform: sun
    event: sunset
    offset: '-01:00'
condition: []
action:
  - service: light.turn_on
    target:
      entity_id:
        - light.piece_de_vie
        - light.salon_lampe_01
  - service: notify.telegram_clemalex
    data:
      message: '🌴 : Allumage 💡'
mode: single
alias: vacances_lumieres_extinction
description: ''
trigger:
  - platform: sun
    event: sunset
condition: []
action:
  - service: light.turn_off
    target:
      entity_id:
        - light.piece_de_vie
        - light.salon_lampe_01
  - service: notify.telegram_clemale,x
    data:
      message: '🌴 : Extinction 💡'
mode: single
alias: vacances_volets_fermetures
description: ''
trigger:
  - platform: sun
    event: sunset
    offset: '-00:02'
condition: []
action:
  - service: cover.close_cover
    target:
      entity_id:
        - cover.volet_a
        - cover.volet_cuisine
        - cover.volet_e
        - cover.volet_jardin
        - cover.volet_parent
        - cover.volet_rue
  - service: notify.telegram_clemalex
    data:
      message: '🌴 : fermeture volets'
mode: single
alias: vacances_volets_ouvertures
description: ''
trigger:
  - platform: sun
    event: sunrise
    offset: '01:15'
condition: []
action:
  - service: cover.open_cover
    target:
      entity_id:
        - cover.volet_a
        - cover.volet_cuisine
        - cover.volet_e
        - cover.volet_jardin
        - cover.volet_parent
        - cover.volet_rue
  - service: notify.telegram_clemalex
    data:
      message: '🌴 : Ouvertures volets'
mode: single
1 « J'aime »

Bonjour @Apollon16

En plus des proposition de @Clemalex, si tu procède des enceintes connectées (type Google mini) et/ou un tv connectée, tu peux aussi les faires fonctionner comme si tu était present.

Voici le script pour jouer des sons (musique) sur une enceintes :

play_song:
  alias: "Play song in media_players"
  sequence:
    - service: media_player.volume_set
      data_template:
        entity_id: "{{ media_device }}"
        volume_level: 0.6
    - service: media_player.play_media
      data_template:
        entity_id: "{{ media_device }}"
        media_content_id: "/local/music/{{ song }}.mp3"
        media_content_type: audio/mp3

et l’appel dans l’automatisation est fait comme suit :

  action:
    - service: script.play_song
      data_template:
        song: [nom du fichier]
        media_device: [id du device]
   

Merci Clematex et wilfrid pour vos retours. Je vais travailler dessus.

Si j’ai bien compris tu démarre tous les appareils en même temps pendant toute la nuit?

En « node-rediste » convaincu, je ne peux pas m’empêcher de vous signaler l’existence de l’excellent Presence Faker qui permet de rajouter facilement de l’aléatoire dans les allumages/extensions des lumières, musique,…

2 « J'aime »

Merci pour l’info, étant novice comment on fait pour rajouter des extention dans nod-red?

Je viens de créer cette automatisation pour mon départ en vacances pensez-vous quelle va fonctionner ?

alias: Départ en vacances
description: Mise en mode absence du chauffage
trigger:
  - platform: zone
    entity_id: person.1
    zone: zone.A
    event: enter
  - platform: zone
    entity_id: person.2
    zone: zone.A
    event: enter
condition:
  - condition: or
    conditions:
      - condition: zone
        entity_id: person.1
        zone: zone.B
      - condition: zone
        entity_id: person.2
        zone: zone.B
  - condition: state
    entity_id: person.1
    state: not_home
  - condition: state
    entity_id: person.2
    state: not_home
action:
  - scene: scene.mise_en_mode_absence_du_chauffage
mode: parallel
max: 10

````Texte préformaté`

T’as mal compris… :innocent:

Mes déclencheurs sont le lever et le coucher du soleil.

Mes actions la levée et la descente des volets.

Ai-je allume la lumière une heure avant le coucher du soleil je l’éteins à la descente des volets

Il faut d’abord installer nodered (via un addon -comme tu utilises HAOS c’est la solution- ou un container à part), faire dialoguer HA et NR. Avec l’addon ça se fait presque tout seul. Sinon, il faut installer node-red-contrib-home-assistant-websocket et le configurer.

Pour installer des « extensions », dans le menu hamburger de nodered, choisir « Gestion de la palette » et dans le popup qui apparait on peut chercher et installer des outils complémentaires comme presence faker (et bien d’autres).

Je viens de tout installer mais je n’arrive pas le programmer. Comment fait-on ?
J’aime bien le coté aléatoire de ce nod.

Qu’est ce que tu as commencé à faire?

Comme je dis toujours, on lit la doc :slight_smile:
Il y a un exemple sur GitHub - csuermann/node-red-contrib-presence-faker: Node-RED node that fakes presence in a smart home by switching devices (e.g. lights) on and off at random times.

Il faut démarrer simple (avec l’exemple) et ensuite ajouter des éléments plus compliqués…

J’ai commencer à faire ceci

Mais cela ne fonctionne pas. Je n’arrive pas à trouver les modules ‹ Enable › et ‹ Disable › comme dans l’exemple. Et ou trouve-t-on le chemin de nos appareils pour remplir le champ ‹ on Topic › et ‹ Off Topic › ?

Voilà un exemple pour commencer:

[{"id":"f7cdec0dc58a01c5","type":"template","z":"c07c0ac5.ca6f98","name":"Jour","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{\n  \"windowBegin\": \"20:00\",\n  \"windowEnd\": \"23:00\",\n  \"minDuration\": 240,\n  \"maxDuration\": 600,\n  \"minCount\": 40,\n  \"maxCount\": 90\n}","output":"json","x":410,"y":4620,"wires":[["e08afefc78d6e283"]]},{"id":"c42b0538316dcb24","type":"cronplus","z":"c07c0ac5.ca6f98","name":"","outputField":"payload","timeZone":"","persistDynamic":false,"commandResponseMsgOutput":"output1","outputs":1,"options":[{"name":"schedule1","topic":"schedule1","payloadType":"default","payload":"","expressionType":"cron","expression":"0 5 0 * * * *","location":"","offset":"0","solarType":"all","solarEvents":"sunrise,sunset"}],"x":260,"y":4620,"wires":[["f7cdec0dc58a01c5"]]},{"id":"e08afefc78d6e283","type":"presence-faker","z":"c07c0ac5.ca6f98","name":"Lumière Veranda","onPayload":"{\"domain\":\"light\",\"action\":\"turn_on\",\"entity\":\"light.veranda_left\"}","onPayloadType":"json","onTopic":"","offPayload":"{\"domain\":\"light\",\"action\":\"turn_off\",\"entity\":\"light.veranda_left\"}","offPayloadType":"json","offTopic":"","windowBegin":"00:00","windowEnd":"00:00","minDurationHours":0,"minDurationMinutes":"0","minDurationSeconds":0,"minDuration":"0","maxDurationHours":0,"maxDurationMinutes":"0","maxDurationSeconds":0,"maxDuration":"0","minCount":1,"maxCount":1,"startupBehavior":"onMsg","actionOnDisable":"off","firstBlockType":"off","lastBlockType":"off","isLoggingEnabled":false,"x":590,"y":4620,"wires":[["9b0eaee655c52f79"]]},{"id":"9b0eaee655c52f79","type":"api-call-service","z":"c07c0ac5.ca6f98","name":"Lumière","server":"d28c9492.f419c8","version":3,"debugenabled":false,"service_domain":"{{payload.domain}}","service":"{{payload.action}}","entityId":"{{payload.entity}}","data":"","dataType":"json","mergecontext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":780,"y":4620,"wires":[[]]},{"id":"d28c9492.f419c8","type":"server","name":"hassio","version":1,"legacy":false,"addon":false,"rejectUnauthorizedCerts":false,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true}]

Le premier noeud est cronplus. C’est la raison qui au début m’a fait choisir nodered pour les automatisation. L’absence d’un tel outil sur HA à l’époque m’a gêné.

Il faut comprendre la logique de l’exemple (ce n’est pas totalement immédiat…) et après ça va tout seul.

Merci pour ton exemple mais je ne vois pas ou l’enregistrer dans HA ou Node? si c’est dans Node ou je trouve l’interface pour la saisi de ligne de code car actuellement, je n’ai que l’interface graphique. :pensive:

Mieux que le aléatoire il y a aussi le rejeu via le blueprint suivant

1 « J'aime »

Regarder les tutoriels sur youtube t’aidera à faire les choses de bases: https://www.youtube.com/playlist?list=PLyNBB9VCLmo1hyO-4fIZ08gqFcXBkHy-6

Je l’ai installer mais quand je regarde la trace, j’ai ce message pour tous les appareils inscrit dans le blueprint.


Triggered by the state of sensor.replay_lumiere_chambre at 26 octobre 2021, 19:04:32
Test state condition
Stopped because a condition failed at 26 octobre 2021, 19:04:32 (runtime: 0.00 seconds)
Not all shown logbook entries might be related to this automation.

Je ne comprend pas ce que cela signifie.

Il faut au moins 7 jours d’historique (pour infos) je ne sais pas si ton probleme vient de la

Pour ma part je suis parti sur une automatisation à base d’appdeamon.

Je scrute le changement des personnes importantes dans la maison pour générer un boolean « simu présence ».

Dès qu’il est activé j’ai une grille d’horaire d’allumage et extinction des lumières et volets. Bien entendu avec de l’aléatoire et avec cohérence en fonction de la lumière extérieure : allumer les lumières à 18h en plein été, c’est bof :wink:

Objectif n°2 : déclencher des musiques sur mon Nest mini.

Merci pour à tous pour vos différentes propositions.

Tu peux regarder sur HA S il y a une add on ‹ simulation presence › qui se base sur ton historique de tous les jours, je ne l ai pas encore utilisé mais déjà installé :slight_smile: