Créé un flux Node Red pour interrupteur va et vient

Je souhaite optimiser mon flux NR pour des interrupteurs première génération dont le va et vient physique n’existe pas.

Sur NR, j’ai créé deux flux distinct pour chaque interrupteur qui s’allume ou s’éteins l’un et l’autre.

[{"id":"dd3666ad06d3884d","type":"server-state-changed","z":"e81d425f7e8899f8","name":"Interrupteur Escalier (Entrée)","server":"66fa8575.19001c","version":5,"outputs":2,"exposeAsEntityConfig":"","entityId":"switch.sonoff_10016fe8b0_1","entityIdType":"exact","outputInitially":true,"stateType":"str","ifState":"on","ifStateType":"str","ifStateOperator":"is","outputOnlyOnStateChange":true,"for":"0","forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"x":120,"y":260,"wires":[["7f35feecb6c88082"],["2116c121caa9511e"]]},{"id":"ae980132a7220dc7","type":"api-call-service","z":"e81d425f7e8899f8","name":"Interrupteur Escalier (Palier)","server":"66fa8575.19001c","version":5,"debugenabled":false,"domain":"switch","service":"turn_on","areaId":[],"deviceId":[],"entityId":["switch.sonoff_10016fe8a6_2"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":840,"y":220,"wires":[[]]},{"id":"4f536cc42f5bd4d0","type":"api-call-service","z":"e81d425f7e8899f8","name":"Interrupteur Escalier (Palier)","server":"66fa8575.19001c","version":5,"debugenabled":false,"domain":"switch","service":"turn_off","areaId":[],"deviceId":[],"entityId":["switch.sonoff_10016fe8a6_2"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":840,"y":300,"wires":[[]]},{"id":"763dbfc3185a2414","type":"server-state-changed","z":"e81d425f7e8899f8","name":"Interrupteur Escalier (Palier)","server":"66fa8575.19001c","version":5,"outputs":2,"exposeAsEntityConfig":"","entityId":"switch.sonoff_10016fe8a6_2","entityIdType":"exact","outputInitially":true,"stateType":"str","ifState":"on","ifStateType":"str","ifStateOperator":"is","outputOnlyOnStateChange":true,"for":"0","forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"eventData"},{"property":"topic","propertyType":"msg","value":"","valueType":"triggerId"}],"x":120,"y":440,"wires":[["cec07cf4b2c9f2dd"],["442719216539e042"]]},{"id":"e0dea93712df09c7","type":"api-call-service","z":"e81d425f7e8899f8","name":"Interrupteur Escalier (Entrée)","server":"66fa8575.19001c","version":5,"debugenabled":false,"domain":"switch","service":"turn_on","areaId":[],"deviceId":[],"entityId":["switch.sonoff_10016fe8b0_1"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":840,"y":400,"wires":[[]]},{"id":"78fa62e971eb4398","type":"api-call-service","z":"e81d425f7e8899f8","name":"Interrupteur Escalier (Entrée)","server":"66fa8575.19001c","version":5,"debugenabled":false,"domain":"switch","service":"turn_off","areaId":[],"deviceId":[],"entityId":["switch.sonoff_10016fe8b0_1"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":840,"y":480,"wires":[[]]},{"id":"7f35feecb6c88082","type":"api-current-state","z":"e81d425f7e8899f8","name":"Vérif Escalier (Palier)","server":"66fa8575.19001c","version":3,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","entity_id":"switch.sonoff_10016fe8a6_2","state_type":"str","blockInputOverrides":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"}],"for":"0","forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":420,"y":220,"wires":[["ab577c7cf121e021"]]},{"id":"ab577c7cf121e021","type":"switch","z":"e81d425f7e8899f8","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"off","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":620,"y":220,"wires":[["ae980132a7220dc7"]]},{"id":"2116c121caa9511e","type":"api-current-state","z":"e81d425f7e8899f8","name":"Vérif Escalier (Palier)","server":"66fa8575.19001c","version":3,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","entity_id":"switch.sonoff_10016fe8a6_2","state_type":"str","blockInputOverrides":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"}],"for":"0","forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":420,"y":300,"wires":[["db9ad0dc8efb2382"]]},{"id":"db9ad0dc8efb2382","type":"switch","z":"e81d425f7e8899f8","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"on","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":620,"y":300,"wires":[["4f536cc42f5bd4d0"]]},{"id":"cec07cf4b2c9f2dd","type":"api-current-state","z":"e81d425f7e8899f8","name":"Vérif Escalier (Entrée)","server":"66fa8575.19001c","version":3,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","entity_id":"switch.sonoff_10016fe8b0_1","state_type":"str","blockInputOverrides":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"}],"for":"0","forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":420,"y":400,"wires":[["0c77d978e4a1f65f"]]},{"id":"0c77d978e4a1f65f","type":"switch","z":"e81d425f7e8899f8","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"off","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":620,"y":400,"wires":[["e0dea93712df09c7"]]},{"id":"442719216539e042","type":"api-current-state","z":"e81d425f7e8899f8","name":"Vérif Escalier (Entrée)","server":"66fa8575.19001c","version":3,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","entity_id":"switch.sonoff_10016fe8b0_1","state_type":"str","blockInputOverrides":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"}],"for":"0","forType":"num","forUnits":"minutes","override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":420,"y":480,"wires":[["fe29b27a872489f2"]]},{"id":"fe29b27a872489f2","type":"switch","z":"e81d425f7e8899f8","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"on","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":620,"y":480,"wires":[["78fa62e971eb4398"]]},{"id":"66fa8575.19001c","type":"server","name":"Home Assistant","addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"","connectionDelay":false,"cacheJson":true,"heartbeat":false,"heartbeatInterval":"","statusSeparator":"","enableGlobalContextStore":false}]

J’aimerais savoir si il était possible d’avoir un flux unique pour faire le va et vient

Merci

Ma configuration


System Information

version core-2023.12.1
installation_type Home Assistant OS
dev false
hassio true
docker true
user root
virtualenv false
python_version 3.11.6
os_name Linux
os_version 6.1.58-haos-raspi
arch aarch64
timezone Europe/Paris
config_dir /config
Home Assistant Community Store
GitHub API ok
GitHub Content ok
GitHub Web ok
GitHub API Calls Remaining 5000
Installed Version 1.33.0
Stage running
Available Repositories 1425
Downloaded Repositories 25
HACS Data ok
Home Assistant Cloud
logged_in true
subscription_expiration 14 septembre 2024 à 02:00
relayer_connected true
relayer_region eu-central-1
remote_enabled true
remote_connected true
alexa_enabled true
google_enabled false
remote_server eu-central-1-2.ui.nabu.casa
certificate_status ready
instance_id 7c01cf98f6c744468aa1b753b0cd4a65
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Home Assistant Supervisor
host_os Home Assistant OS 11.2
update_channel stable
supervisor_version supervisor-2023.11.6
agent_version 1.6.0
docker_version 24.0.7
disk_total 116.7 GB
disk_used 23.6 GB
healthy true
supported true
board rpi4-64
supervisor_api ok
version_api ok
installed_addons Samba share (12.2.0), File editor (5.7.0), Advanced SSH & Web Terminal (17.0.0), ESPHome (2022.3.1), AppDaemon (0.16.0), room-assistant (2.20.0), Studio Code Server (5.14.2), Zigbee2MQTT (1.34.0-1), CEC Scanner (3.0), eWeLink Smart Home (1.4.3), Mosquitto broker (6.4.0), Node-RED (16.0.2)
Dashboards
dashboards 1
resources 7
views 6
mode storage
Recorder
oldest_recorder_run 29 novembre 2023 à 03:45
current_recorder_run 9 décembre 2023 à 10:54
estimated_db_size 6373.88 MiB
database_engine sqlite
database_version 3.41.2
Sonoff
version 3.5.2 (2ad1cd7)
cloud_online 17 / 17
local_online 17 / 17
debug failed to load:
___

Le but, si j’ai compris, c’est que quand le switch « escalier » passe dans un état (on ou off), le switch « entrée » fasse de même.
Et réciproquement. C’est bien ça ?

Dans ce quand, tu peux virer les noeuds « Vérifs… » et le switch derrière et appeler « turn_on » ou « turn_off ».
Si le switch cible est déjà sur « on », ce n’est pas grave. Il ne se passera rien.

Ensuite pour fusionner, mais, ça va passer au détriment de la lisibilité, il faudrait :

  • créer un groupe avec les deux switches dans HA
  • utiliser le « trigger node » en donnant une liste d’entité (escalier et entrée), puis deux outputs, si c’est « on », appeler un turn_on sur le groupe de switches. Et réciproquement.

Merci pour ton retour tout fonctionne nickel :+1:

Bonjour,

Même si Golfvert m’a donné la solution. Je relance le sujet car j’ai quelques petits bugs.

Je voulais vérifier avec vous si j’ai bien compris l’explication de Golfvert.

Je vous joint le flux créé.
Capture d'écran 2023-12-17 093306

[{"id":"b92e7095f69ccffd","type":"api-call-service","z":"e81d425f7e8899f8","name":"Allume lumière escalier","server":"66fa8575.19001c","version":5,"debugenabled":false,"domain":"switch","service":"turn_on","areaId":[],"deviceId":[],"entityId":["switch.lumieres_escalier"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":370,"y":220,"wires":[[]]},{"id":"60bec97f9cc9b7e1","type":"api-call-service","z":"e81d425f7e8899f8","name":"Eteins lumière esclaier","server":"66fa8575.19001c","version":5,"debugenabled":false,"domain":"switch","service":"turn_off","areaId":[],"deviceId":[],"entityId":["switch.lumieres_escalier"],"data":"","dataType":"jsonata","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":360,"y":300,"wires":[[]]},{"id":"41778f16cbfc064a","type":"trigger-state","z":"e81d425f7e8899f8","name":"Interrupteurs escalier","server":"66fa8575.19001c","version":4,"inputs":0,"outputs":4,"exposeAsEntityConfig":"","entityId":["switch.sonoff_10016fe8b0_1","switch.sonoff_10016fe8a6_2"],"entityIdType":"list","debugEnabled":false,"constraints":[],"customOutputs":[{"messageType":"default","messageValue":"","messageValueType":"json","comparatorPropertyType":"current_state","comparatorPropertyValue":"new_state.state","comparatorType":"is","comparatorValue":"on","comparatorValueDataType":"str"},{"messageType":"default","messageValue":"","messageValueType":"json","comparatorPropertyType":"current_state","comparatorPropertyValue":"new_state.state","comparatorType":"is","comparatorValue":"off","comparatorValueDataType":"str"}],"outputInitially":true,"stateType":"str","enableInput":false,"x":100,"y":260,"wires":[[],[],["b92e7095f69ccffd"],["60bec97f9cc9b7e1"]]},{"id":"66fa8575.19001c","type":"server","name":"Home Assistant","addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"","connectionDelay":false,"cacheJson":true,"heartbeat":false,"heartbeatInterval":"","statusSeparator":"","enableGlobalContextStore":false}]

Le problème que je rencontre:
C’est que de temps en temps, j’ai les interrupteurs qui font un va et vient en permanence sans s’arrêter (genre guirlande de noël).
Merci pour vos retours.