guimatheus92 / node-red-homeassistant-three-way

This project is a web application designed to help users manage their Home Assistant devices and mappings, focusing on creating virtual three-way switch setups and virtual parallel switch setups throught Node-RED. The application allows users to independently manage their own device configurations and mappings.
4 stars 2 forks source link

[feat]: Adicionar capacidade para four-Way #10

Open juslex opened 2 months ago

juslex commented 2 months ago

Olá, sou aqui mais uma vez. O que achas de adaptar a aplicação para que permita também criar um 4-way além do 3-way?

Segue abaixo um código json de um for-way como exemplo:

[{"id":"87b64b8c.7dcac8","type":"group","z":"b42cb65a.143ae8","name":"Pé Direito","style":{"stroke":"#ff0000","fill":"#ffbfbf","label":true},"nodes":["30ddc791.a86aa8","8310ef35.5e05f","1e43db5b.ff1095","d4d4d093.3a7fd","7f21d96b.ee4dd8","54d83dff.05eb84","ca12bfc4.0c8ab","3430af56.c093c","cd1db466.b29a18","52718d57.6763f4","d94e528c.6af9e","995dc225.2b52e","e4e0154a.026b78","7d14f401.d5261c","994b6001.e64ff","c2b3984e.1648e8","e77b3579.2046b8","f3ae7dac.d9d6","8f5356f9.148878","cc5c79df.ff4458","28c4d8d8.6ee7a8","1a939dfc.fc09c2","4497b6ee.3d3e18","4b1cd62a.e68778","9c160127.9eb66","77792341.6fc6ac","609a7918.89c338","1342c00a.2fe0a","79a7da15.850de4","f1f38336.3b65"],"x":54,"y":39,"w":1072,"h":622},{"id":"30ddc791.a86aa8","type":"server-state-changed","z":"b42cb65a.143ae8","g":"87b64b8c.7dcac8","name":"Escada (Pé Direito)","server":"fa7437b1.7faae8","version":1,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"switch.pe_direito","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"","halt_if_type":"str","halt_if_compare":"is","outputs":1,"output_only_on_state_change":true,"for":0,"forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"x":170,"y":140,"wires":[["8310ef35.5e05f"]]},{"id":"8310ef35.5e05f","type":"switch","z":"b42cb65a.143ae8","g":"87b64b8c.7dcac8","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"on","vt":"str"},{"t":"eq","v":"off","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":430,"y":140,"wires":[["8f5356f9.148878","cc5c79df.ff4458"],["9c160127.9eb66","77792341.6fc6ac"]]},{"id":"1e43db5b.ff1095","type":"api-call-service","z":"b42cb65a.143ae8","g":"87b64b8c.7dcac8","name":"Sala Jantar (Pé Direito Virtual) On","server":"fa7437b1.7faae8","version":1,"debugenabled":false,"service_domain":"homeassistant","service":"turn_on","entityId":"switch.pe_direito_virtual_sala_de_jantar","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":960,"y":80,"wires":[[]]},{"id":"d4d4d093.3a7fd","type":"api-call-service","z":"b42cb65a.143ae8","g":"87b64b8c.7dcac8","name":"Corredor (Pé Direito Virtual) Off","server":"fa7437b1.7faae8","version":1,"debugenabled":false,"service_domain":"homeassistant","service":"turn_off","entityId":"switch.pe_direito_virtual_corredor","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":970,"y":220,"wires":[[]]},{"id":"7f21d96b.ee4dd8","type":"api-call-service","z":"b42cb65a.143ae8","g":"87b64b8c.7dcac8","name":"Corredor (Pé Direito Virtual) On","server":"fa7437b1.7faae8","version":1,"debugenabled":false,"service_domain":"homeassistant","service":"turn_on","entityId":"switch.pe_direito_virtual_corredor","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":970,"y":120,"wires":[[]]},{"id":"54d83dff.05eb84","type":"api-call-service","z":"b42cb65a.143ae8","g":"87b64b8c.7dcac8","name":"Sala Jantar (Pé Direito Virtual) Off","server":"fa7437b1.7faae8","version":1,"debugenabled":false,"service_domain":"homeassistant","service":"turn_off","entityId":"switch.pe_direito_virtual_sala_de_jantar","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":960,"y":180,"wires":[[]]},{"id":"ca12bfc4.0c8ab","type":"server-state-changed","z":"b42cb65a.143ae8","g":"87b64b8c.7dcac8","name":"Sala Jantar (Pé Direito Virtual)","server":"fa7437b1.7faae8","version":1,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"switch.pe_direito_virtual_sala_de_jantar","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"","halt_if_type":"str","halt_if_compare":"is","outputs":1,"output_only_on_state_change":true,"for":0,"forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"x":200,"y":380,"wires":[["3430af56.c093c"]]},{"id":"3430af56.c093c","type":"switch","z":"b42cb65a.143ae8","g":"87b64b8c.7dcac8","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"on","vt":"str"},{"t":"eq","v":"off","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":430,"y":380,"wires":[["28c4d8d8.6ee7a8","1a939dfc.fc09c2"],["609a7918.89c338","1342c00a.2fe0a"]]},{"id":"cd1db466.b29a18","type":"api-call-service","z":"b42cb65a.143ae8","g":"87b64b8c.7dcac8","name":"Corredor (Pé Direito Virtual) On","server":"fa7437b1.7faae8","version":1,"debugenabled":false,"service_domain":"homeassistant","service":"turn_on","entityId":"switch.pe_direito_virtual_corredor","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":970,"y":280,"wires":[[]]},{"id":"52718d57.6763f4","type":"api-call-service","z":"b42cb65a.143ae8","g":"87b64b8c.7dcac8","name":"Escada (Pé Direito) Off","server":"fa7437b1.7faae8","version":1,"debugenabled":false,"service_domain":"homeassistant","service":"turn_off","entityId":"switch.pe_direito","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":990,"y":420,"wires":[[]]},{"id":"d94e528c.6af9e","type":"api-call-service","z":"b42cb65a.143ae8","g":"87b64b8c.7dcac8","name":"Escada (Pé Direito) On","server":"fa7437b1.7faae8","version":1,"debugenabled":false,"service_domain":"homeassistant","service":"turn_on","entityId":"switch.pe_direito","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":990,"y":320,"wires":[[]]},{"id":"995dc225.2b52e","type":"api-call-service","z":"b42cb65a.143ae8","g":"87b64b8c.7dcac8","name":"Corredor (Pé Direito Virtual) Off","server":"fa7437b1.7faae8","version":1,"debugenabled":false,"service_domain":"homeassistant","service":"turn_off","entityId":"switch.pe_direito_virtual_corredor","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":970,"y":380,"wires":[[]]},{"id":"e4e0154a.026b78","type":"server-state-changed","z":"b42cb65a.143ae8","g":"87b64b8c.7dcac8","name":"Corredor (Pé Direito Virtual)","server":"fa7437b1.7faae8","version":1,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"switch.pe_direito_virtual_corredor","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"","halt_if_type":"str","halt_if_compare":"is","outputs":1,"output_only_on_state_change":true,"for":0,"forType":"num","forUnits":"minutes","ignorePrevStateNull":false,"ignorePrevStateUnknown":false,"ignorePrevStateUnavailable":false,"ignoreCurrentStateUnknown":false,"ignoreCurrentStateUnavailable":false,"x":200,"y":540,"wires":[["7d14f401.d5261c"]]},{"id":"7d14f401.d5261c","type":"switch","z":"b42cb65a.143ae8","g":"87b64b8c.7dcac8","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"on","vt":"str"},{"t":"eq","v":"off","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":430,"y":540,"wires":[["4497b6ee.3d3e18","4b1cd62a.e68778"],["79a7da15.850de4","f1f38336.3b65"]]},{"id":"994b6001.e64ff","type":"api-call-service","z":"b42cb65a.143ae8","g":"87b64b8c.7dcac8","name":"Sala Jantar (Pé Direito Virtual) On","server":"fa7437b1.7faae8","version":1,"debugenabled":false,"service_domain":"homeassistant","service":"turn_on","entityId":"switch.pe_direito_virtual_sala_de_jantar","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":960,"y":480,"wires":[[]]},{"id":"c2b3984e.1648e8","type":"api-call-service","z":"b42cb65a.143ae8","g":"87b64b8c.7dcac8","name":"Escada (Pé Direito) Off","server":"fa7437b1.7faae8","version":1,"debugenabled":false,"service_domain":"homeassistant","service":"turn_off","entityId":"switch.pe_direito","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":990,"y":620,"wires":[[]]},{"id":"e77b3579.2046b8","type":"api-call-service","z":"b42cb65a.143ae8","g":"87b64b8c.7dcac8","name":"Escada (Pé Direito) On","server":"fa7437b1.7faae8","version":1,"debugenabled":false,"service_domain":"homeassistant","service":"turn_on","entityId":"switch.pe_direito","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":990,"y":520,"wires":[[]]},{"id":"f3ae7dac.d9d6","type":"api-call-service","z":"b42cb65a.143ae8","g":"87b64b8c.7dcac8","name":"Sala Jantar (Pé Direito Virtual) Off","server":"fa7437b1.7faae8","version":1,"debugenabled":false,"service_domain":"homeassistant","service":"turn_off","entityId":"switch.pe_direito_virtual_sala_de_jantar","data":"","dataType":"json","mergecontext":"","output_location":"","output_location_type":"none","mustacheAltTags":false,"x":960,"y":580,"wires":[[]]},{"id":"8f5356f9.148878","type":"api-current-state","z":"b42cb65a.143ae8","g":"87b64b8c.7dcac8","name":"Checa Off","server":"fa7437b1.7faae8","version":1,"outputs":2,"halt_if":"off","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"entity_id":"switch.pe_direito_virtual_sala_de_jantar","state_type":"str","state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","blockInputOverrides":false,"x":680,"y":80,"wires":[["1e43db5b.ff1095"],[]]},{"id":"cc5c79df.ff4458","type":"api-current-state","z":"b42cb65a.143ae8","g":"87b64b8c.7dcac8","name":"Checa Off","server":"fa7437b1.7faae8","version":1,"outputs":2,"halt_if":"off","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"entity_id":"switch.pe_direito_virtual_corredor","state_type":"str","state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","blockInputOverrides":false,"x":680,"y":120,"wires":[["7f21d96b.ee4dd8"],[]]},{"id":"28c4d8d8.6ee7a8","type":"api-current-state","z":"b42cb65a.143ae8","g":"87b64b8c.7dcac8","name":"Checa Off","server":"fa7437b1.7faae8","version":1,"outputs":2,"halt_if":"off","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"entity_id":"switch.pe_direito_virtual_corredor","state_type":"str","state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","blockInputOverrides":false,"x":680,"y":280,"wires":[["cd1db466.b29a18"],[]]},{"id":"1a939dfc.fc09c2","type":"api-current-state","z":"b42cb65a.143ae8","g":"87b64b8c.7dcac8","name":"Checa Off","server":"fa7437b1.7faae8","version":1,"outputs":2,"halt_if":"off","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"entity_id":"switch.pe_direito","state_type":"str","state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","blockInputOverrides":false,"x":680,"y":320,"wires":[["d94e528c.6af9e"],[]]},{"id":"4497b6ee.3d3e18","type":"api-current-state","z":"b42cb65a.143ae8","g":"87b64b8c.7dcac8","name":"Checa Off","server":"fa7437b1.7faae8","version":1,"outputs":2,"halt_if":"off","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"entity_id":"switch.pe_direito_virtual_sala_de_jantar","state_type":"str","state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","blockInputOverrides":false,"x":680,"y":480,"wires":[["994b6001.e64ff"],[]]},{"id":"4b1cd62a.e68778","type":"api-current-state","z":"b42cb65a.143ae8","g":"87b64b8c.7dcac8","name":"Checa Off","server":"fa7437b1.7faae8","version":1,"outputs":2,"halt_if":"off","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"entity_id":"switch.pe_direito","state_type":"str","state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","blockInputOverrides":false,"x":680,"y":520,"wires":[["e77b3579.2046b8"],[]]},{"id":"9c160127.9eb66","type":"api-current-state","z":"b42cb65a.143ae8","g":"87b64b8c.7dcac8","name":"Checa On","server":"fa7437b1.7faae8","version":1,"outputs":2,"halt_if":"on","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"entity_id":"switch.pe_direito_virtual_sala_de_jantar","state_type":"str","state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","blockInputOverrides":false,"x":680,"y":180,"wires":[["54d83dff.05eb84"],[]]},{"id":"77792341.6fc6ac","type":"api-current-state","z":"b42cb65a.143ae8","g":"87b64b8c.7dcac8","name":"Checa On","server":"fa7437b1.7faae8","version":1,"outputs":2,"halt_if":"on","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"entity_id":"switch.pe_direito_virtual_corredor","state_type":"str","state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","blockInputOverrides":false,"x":680,"y":220,"wires":[["d4d4d093.3a7fd"],[]]},{"id":"609a7918.89c338","type":"api-current-state","z":"b42cb65a.143ae8","g":"87b64b8c.7dcac8","name":"Checa On","server":"fa7437b1.7faae8","version":1,"outputs":2,"halt_if":"on","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"entity_id":"switch.pe_direito_virtual_corredor","state_type":"str","state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","blockInputOverrides":false,"x":680,"y":380,"wires":[["995dc225.2b52e"],[]]},{"id":"1342c00a.2fe0a","type":"api-current-state","z":"b42cb65a.143ae8","g":"87b64b8c.7dcac8","name":"Checa On","server":"fa7437b1.7faae8","version":1,"outputs":2,"halt_if":"on","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"entity_id":"switch.pe_direito","state_type":"str","state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","blockInputOverrides":false,"x":680,"y":420,"wires":[["52718d57.6763f4"],[]]},{"id":"79a7da15.850de4","type":"api-current-state","z":"b42cb65a.143ae8","g":"87b64b8c.7dcac8","name":"Checa On","server":"fa7437b1.7faae8","version":1,"outputs":2,"halt_if":"on","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"entity_id":"switch.pe_direito","state_type":"str","state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","blockInputOverrides":false,"x":680,"y":620,"wires":[["c2b3984e.1648e8"],[]]},{"id":"f1f38336.3b65","type":"api-current-state","z":"b42cb65a.143ae8","g":"87b64b8c.7dcac8","name":"Checa On","server":"fa7437b1.7faae8","version":1,"outputs":2,"halt_if":"on","halt_if_type":"str","halt_if_compare":"is","override_topic":false,"entity_id":"switch.pe_direito_virtual_sala_de_jantar","state_type":"str","state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","blockInputOverrides":false,"x":680,"y":580,"wires":[["f3ae7dac.d9d6"],[]]},{"id":"fa7437b1.7faae8","type":"server","name":"Home Assistant","addon":true}]
guimatheus92 commented 2 months ago

Olá, obrigado pela sugestão. Neste caso, qual a diferença para o 4-Way?

Eu vi que você checa se a Escada (Pé Direito) está on, se estiver switch.pe_direito_virtual_sala_de_jantar estiver off, liga ele. E o mesmo acontece para o switch.pe_direito_virtual_corredor. Neste caso, não seria o mesmo que criar essa mesma checagem no 3-way duas vezes, um para cada dispositivo?

Eu tenho um dispositivo aqui por exemplo, que liga outros dois, a unica coisa que eu fiz foi fazer esse link na malha na aplicação. Daria certo dessa forma pra você também?

juslex commented 2 months ago

"Eu tenho um dispositivo aqui por exemplo, que liga outros dois, a unica coisa que eu fiz foi fazer esse link na malha na aplicação. Daria certo dessa forma pra você também?"

Como seria feito isso?