Retransmisja z HA do bramki My Sensor w przypadku braku potwierdzenia

Witam. Przesiadam się z Domoticza na HA i przepisuję większość skryptów. Używam właściwie do wszystkiego Node Red. Niestety wraz z zwiększoną ilością procesów pojawiają się błędy z obsługą przez kontroler MySensor bramek.
W systemie działają aktualnie 2 bramki po RS485. Bramki mam zrobione na Arduino Mega. Każda bramka ma około 40 nodów. A teraz do sendna problemu:

  • bramka 1 wysyła do HA informację o naruszeniu czujki ruchu
  • w odpowiedzi na zdarzenie HA wysyła komendę do bramki 2 aby otworzyła roletę oraz do bramki 1 aby zapaliła światło.
  • transmisja jest z potwierdzeniem więc obie bramki jak tylko odbiorą dane wysyłają swoje ACK. Niestety w tym momencie pojawia się kolizja i dane docierające do HA są błędne.

Domoticz radził sobie robiąc w tym momencie automatyczną retransmisję komendy jeśli nie otrzymał ACK. Niestety HA po prostu nic nie robi tj. procedura się kończy, a lampa jest zgaszona i roleta zamknięta.
Jeśli realizuję wiele wysterowań w ramach jednej procedury to dodaję 200ms delay i w tym czasie spokojnie wracają ACK (nie próbowałem krótszych ale pewnie dało by radę). Problem się pojawia kiedy na naruszenie czujki ruchu są realizowane dwie zupełnie inne procedury w Node Red. Czy w HA jest jakaś opcja na próbę retransmisji jeśli po wysłaniu komendy nie dotarło ACK?

Używasz automatyzacji HA czy automatyzacji NR ?

Automatyzacja z NR. Jakoś łatwiej mi tam pisać funkcje a do sterowania podłogówką mam napisany swój regulator PID. A tu poległem na zwykłym wysyłaniu ramek :slight_smile:

Jeżeli to Node Red to nie pisz o HA bo to dwie różne platformy .
W twoim przypadku do sprawdzania stan twoich czujników… użyj node wait until

Screenshot - 29.12.2021 , 22_17_19

[quote=“ohnsorge, post:1, topic:4098”]
Czy w HA jest jakaś opcja na próbę retransmisji jeśli po wysłaniu komendy nie dotarło ACK?
[/quote] Takie funkcje może mieć jedynie nod RS485 w NR .
Zrób jakiś screenshot twojego flow NR

To są dwa procesy które rano się nakłądają

[{"id":"d49a68c12189cbb9","type":"server-state-changed","z":"21746918c7b25156","name":"Wszystkie rolety","server":"bc92adb9.84e85","version":3,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"cover.rolety_wszystkie_czas","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,"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":340,"wires":[["c449981ab4b95bf9"]]},{"id":"a0d5a012eb834960","type":"switch","z":"21746918c7b25156","name":"Czy zmienić stan","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"closing","vt":"str"},{"t":"eq","v":"opening","vt":"str"},{"t":"eq","v":"open","vt":"str"},{"t":"eq","v":"close","vt":"str"}],"checkall":"true","repair":false,"outputs":4,"x":470,"y":340,"wires":[["8700fe6f34a7f5bb"],["876afbfba5e7d6fa"],["15e9debae457fa0c"],[]]},{"id":"8700fe6f34a7f5bb","type":"api-call-service","z":"21746918c7b25156","name":"","server":"bc92adb9.84e85","version":3,"debugenabled":false,"service_domain":"cover","service":"close_cover","entityId":"cover.roleta_jadalnia_wykusz_lewa_czas","data":"","dataType":"jsonata","mergecontext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":740,"y":220,"wires":[["085959fcc46ae8b3"]]},{"id":"085959fcc46ae8b3","type":"delay","z":"21746918c7b25156","name":"","pauseType":"delay","timeout":"200","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":930,"y":220,"wires":[["8d1bb8508cc4bbea"]]},{"id":"8d1bb8508cc4bbea","type":"api-call-service","z":"21746918c7b25156","name":"","server":"bc92adb9.84e85","version":3,"debugenabled":false,"service_domain":"cover","service":"close_cover","entityId":"cover.roleta_jadalnia_wykusz_prawa_czas","data":"","dataType":"jsonata","mergecontext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":1120,"y":220,"wires":[["f9440da9c28c794e"]]},{"id":"f9440da9c28c794e","type":"delay","z":"21746918c7b25156","name":"","pauseType":"delay","timeout":"200","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":1310,"y":220,"wires":[["af4967a3da0cdc7a"]]},{"id":"af4967a3da0cdc7a","type":"api-call-service","z":"21746918c7b25156","name":"","server":"bc92adb9.84e85","version":3,"debugenabled":false,"service_domain":"cover","service":"close_cover","entityId":"cover.roleta_jadalnia_wykusz_srodkowa_czas","data":"","dataType":"jsonata","mergecontext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":740,"y":280,"wires":[["105d0ebac9a6163f"]]},{"id":"105d0ebac9a6163f","type":"delay","z":"21746918c7b25156","name":"","pauseType":"delay","timeout":"200","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":930,"y":280,"wires":[["e2ba74a0fe429453"]]},{"id":"e2ba74a0fe429453","type":"api-call-service","z":"21746918c7b25156","name":"","server":"bc92adb9.84e85","version":3,"debugenabled":false,"service_domain":"cover","service":"close_cover","entityId":"cover.roleta_jadalnia_taras_czas","data":"","dataType":"jsonata","mergecontext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":1120,"y":280,"wires":[["3f7f4715d64b5865"]]},{"id":"3f7f4715d64b5865","type":"delay","z":"21746918c7b25156","name":"","pauseType":"delay","timeout":"200","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":1310,"y":280,"wires":[["8119f3c288cdcf86"]]},{"id":"8119f3c288cdcf86","type":"api-call-service","z":"21746918c7b25156","name":"","server":"bc92adb9.84e85","version":3,"debugenabled":false,"service_domain":"cover","service":"close_cover","entityId":"cover.roleta_kuchnia_czas","data":"","dataType":"jsonata","mergecontext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":740,"y":340,"wires":[["b03f8605bd3cebd7"]]},{"id":"ba9b2134a3f88170","type":"api-call-service","z":"21746918c7b25156","name":"","server":"bc92adb9.84e85","version":3,"debugenabled":false,"service_domain":"cover","service":"close_cover","entityId":"cover.roleta_wiatrolap_czas","data":"","dataType":"jsonata","mergecontext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":1120,"y":340,"wires":[["8e8bd602c5ad6a80"]]},{"id":"bbc11483d39dc5bc","type":"api-call-service","z":"21746918c7b25156","name":"","server":"bc92adb9.84e85","version":3,"debugenabled":false,"service_domain":"cover","service":"close_cover","entityId":"cover.roleta_pokoj_goscinny_czas","data":"","dataType":"jsonata","mergecontext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":740,"y":400,"wires":[["bf95857affbe7ceb"]]},{"id":"b03f8605bd3cebd7","type":"delay","z":"21746918c7b25156","name":"","pauseType":"delay","timeout":"200","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":930,"y":340,"wires":[["ba9b2134a3f88170"]]},{"id":"8e8bd602c5ad6a80","type":"delay","z":"21746918c7b25156","name":"","pauseType":"delay","timeout":"200","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":1310,"y":340,"wires":[["bbc11483d39dc5bc"]]},{"id":"bf95857affbe7ceb","type":"delay","z":"21746918c7b25156","name":"","pauseType":"delay","timeout":"200","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":930,"y":400,"wires":[["bced49e3c6353d5e"]]},{"id":"bced49e3c6353d5e","type":"api-call-service","z":"21746918c7b25156","name":"","server":"bc92adb9.84e85","version":3,"debugenabled":false,"service_domain":"cover","service":"close_cover","entityId":"cover.roleta_salon_lewa_czas","data":"","dataType":"jsonata","mergecontext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":1120,"y":400,"wires":[["ae152ee94b39348e"]]},{"id":"80e91d4ca0900103","type":"api-call-service","z":"21746918c7b25156","name":"","server":"bc92adb9.84e85","version":3,"debugenabled":false,"service_domain":"cover","service":"close_cover","entityId":"cover.roleta_salon_prawa_czas","data":"","dataType":"jsonata","mergecontext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":740,"y":460,"wires":[["426e9e9f91a0dbff"]]},{"id":"5582f110911bbe87","type":"api-call-service","z":"21746918c7b25156","name":"","server":"bc92adb9.84e85","version":3,"debugenabled":false,"service_domain":"cover","service":"close_cover","entityId":"cover.roleta_salon_taras_czas","data":"","dataType":"jsonata","mergecontext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":1120,"y":460,"wires":[[]]},{"id":"ae152ee94b39348e","type":"delay","z":"21746918c7b25156","name":"","pauseType":"delay","timeout":"200","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":1310,"y":400,"wires":[["80e91d4ca0900103"]]},{"id":"426e9e9f91a0dbff","type":"delay","z":"21746918c7b25156","name":"","pauseType":"delay","timeout":"200","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":930,"y":460,"wires":[["5582f110911bbe87"]]},{"id":"0bce79a98c7fea60","type":"comment","z":"21746918c7b25156","name":"Sterowanie wszystkimi roletami","info":"","x":170,"y":300,"wires":[]},{"id":"c449981ab4b95bf9","type":"delay","z":"21746918c7b25156","name":"","pauseType":"delay","timeout":"200","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":290,"y":340,"wires":[["a0d5a012eb834960"]]},{"id":"bd15f8f675feee17","type":"server-state-changed","z":"21746918c7b25156","name":"PIR Salon","server":"bc92adb9.84e85","version":3,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"binary_sensor.pir_salon","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,"outputProperties":[{"property":"PIR","propertyType":"msg","value":"","valueType":"entityState"}],"x":100,"y":160,"wires":[["de06e4c77cc95843"]]},{"id":"de06e4c77cc95843","type":"api-current-state","z":"21746918c7b25156","name":"Czy rolety spuszczone","server":"bc92adb9.84e85","version":2,"outputs":2,"halt_if":"closed","halt_if_type":"str","halt_if_compare":"is","entity_id":"group.wszystkie_rolety","state_type":"str","blockInputOverrides":false,"outputProperties":[{"property":"rolety","propertyType":"msg","value":"","valueType":"entityState"}],"override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":280,"y":160,"wires":[["6da5fdd946e750a6"],[]]},{"id":"6da5fdd946e750a6","type":"time-range-switch","z":"21746918c7b25156","name":"","lat":"52","lon":"17","startTime":"sunrise","endTime":"10:00","startOffset":0,"endOffset":"","x":480,"y":160,"wires":[["f2552512a665a95a"],[]]},{"id":"e368ed1b54aca00f","type":"comment","z":"21746918c7b25156","name":"Otwarcie rolet o wschodzie po ruchu w salonie","info":"","x":210,"y":120,"wires":[]},{"id":"f2552512a665a95a","type":"api-call-service","z":"21746918c7b25156","name":"Otwórz rolety wszystkie czas","server":"bc92adb9.84e85","version":3,"debugenabled":false,"service_domain":"cover","service":"open_cover","entityId":"cover.rolety_wszystkie_czas","data":"","dataType":"jsonata","mergecontext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":720,"y":160,"wires":[[]]},{"id":"bc92adb9.84e85","type":"server","name":"Home Assistant","version":2,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true,"heartbeat":false,"heartbeatInterval":30}]
[{"id":"69fd0f3c6b8369df","type":"time-range-switch","z":"6b92f6c210f2cae2","name":"Czy 1h przed i 1h po wschodzie/zachodzie","lat":"52","lon":"17","startTime":"sunset","endTime":"sunrise","startOffset":"-60","endOffset":"60","x":470,"y":120,"wires":[["34a1770243fc3b8f"],[]]},{"id":"92c735b528f26eb4","type":"server-state-changed","z":"6b92f6c210f2cae2","name":"Ruch w salonie","server":"bc92adb9.84e85","version":3,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"binary_sensor.pir_salon","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"on","halt_if_type":"str","halt_if_compare":"is","outputs":2,"output_only_on_state_change":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":140,"y":120,"wires":[["69fd0f3c6b8369df"],[]]},{"id":"c31f5fefaeba8928","type":"server-state-changed","z":"6b92f6c210f2cae2","name":"Ruch w korytarzu parter","server":"bc92adb9.84e85","version":3,"exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityidfilter":"binary_sensor.pir_korytarz_parter","entityidfiltertype":"exact","outputinitially":false,"state_type":"str","haltifstate":"on","halt_if_type":"str","halt_if_compare":"is","outputs":2,"output_only_on_state_change":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":160,"y":160,"wires":[["69fd0f3c6b8369df"],[]]},{"id":"34a1770243fc3b8f","type":"api-current-state","z":"6b92f6c210f2cae2","name":"Czy lampa wyłączona","server":"bc92adb9.84e85","version":2,"outputs":2,"halt_if":"off","halt_if_type":"str","halt_if_compare":"is","entity_id":"switch.swiatlo_korytarz_parter","state_type":"str","blockInputOverrides":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"}],"override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":780,"y":120,"wires":[["7ebdea6297be90eb"],[]]},{"id":"7ebdea6297be90eb","type":"api-call-service","z":"6b92f6c210f2cae2","name":"Włącz lampę","server":"bc92adb9.84e85","version":3,"debugenabled":false,"service_domain":"switch","service":"turn_on","entityId":"switch.swiatlo_korytarz_parter","data":"","dataType":"jsonata","mergecontext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":990,"y":120,"wires":[[]]},{"id":"c004199b07af89d4","type":"comment","z":"6b92f6c210f2cae2","name":"Zapalenie lampy korytarz przy ruchu","info":"","x":200,"y":80,"wires":[]},{"id":"bc92adb9.84e85","type":"server","name":"Home Assistant","version":2,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true,"heartbeat":false,"heartbeatInterval":30}]

A można do wait until dodać wyjście że jeśli timeout to wiadomość wyjdzie innym wyjściem, które ponowi komendę? W tym momencie zamiast delay mogę dać taki bloczek. Jeśli nie to musiałbym jeszcze po delayu zrobić sprawdzenie stanu noda.

Pogrupuj rolety w grupy po 2 -3 ( Nie rób węża :slight_smile: ) wtedy użyj delay / wait until .
Możesz tez użyć atrybutów w wait until (Pozycja rolet jeżeli zwracają ci taki stan ) i wtedy na podstawie pozycji podnosić kolejne grupy rolet .
Screenshot - 30.12.2021 , 01_26_48

Dzięki za podpowiedzi. Aktualnie dołożyłem po każdej operacji delaya 1 s. Po tym czasie sprawdzam czy przyszło potwierdzenie Jak nie to ponawiam transmisję i tak 3 razy. Potem uznaję że urządzenie nie odpowiada. Niestety grupowanie każdorazowo kończyło się błędem więc zrobiłem węża :smile: z delayami 100ms pomiędzy wywołaniami serwisów. Aktualnie działa super