Sonoff bridge - nie mogę zdefiniować przycisku do automatyzacji

Witam, może ktoś pomoże, bo się zapętliłem i nie wiem gdzie szukać
Mam Sonoff RF Bridge i przyciski RF, które mają sterować otwieraniem bramy garażowej. skonfigurowałem sensor binarny w pliku:
image
na podstawie odczytanych w konsoli RF Bridge parametrów:


(nota bene, przyciski dodane i rozpoznane przez bramkę, na RF jest tasmota 9.4 w wersji AIS Dom - payload w tym wypadku jakiś dla mnie nietypowy, kiedyś miałem krótsze - bodaj 6-7 cyfr/liter).
W logach na bramce mam:

  • Error parsing value: ‘dict object’ has no attribute ‘RfReceived’ (value: {“Time”:“2021-05-12T10:07:15”,“RfRaw”:{“Data”:“AAA4272E015E03DE152B6155”}}, template: ‘{{value_json.RfReceived.Data}}’)
    Wydaje mi się, że błąd będzie w definicji sensora, ale nie przychodzi mi nic do głowy.
    Oczywiście automatyzacja z udziałem przycisku nie działa.

Pozdrawiam
Tomek

Już znalazłem błąd :slight_smile:
Po pierwsze - po restarcie bramka wróciła do podawania kodów we właściwym formacie
Po drugie - znak pojedynczego cudzysłowu trzeba było zmienić na apostrof (albo jak się tam nazywa te pojedyncze znaczki przypominające cudzysłów).
Generalnie zadziałało, temat do zamknięcia.

Pozdrawiam

Czy oprócz apostrofów i restarcie bramki coś jeszcze zmieniałeś ?

U mnie mam podobny problem. O ile uczenie kodów z pilotów działa mi z GUI AIS, o tyle kontraktony na RF na otwarcie okien - może i GUI AIS odczytuje, ale nie tworzy z tego encji.
Próbowałem zatem zrobić to ręcznie analogicznie jak wkleiłeś binary_sensor.

Ale dostaje różne błędy:

Logger: homeassistant.helpers.template
Source: helpers/template.py:561
First occurred: 14:15:57 (37 occurrences)
Last logged: 14:53:02

Error parsing value: 'dict object' has no attribute 'RfRaw' (value: {"Time":"2021-09-05T13:48:03","RfReceived":{"Sync":9910,"Low":330,"High":970,"Data":"7CD047","RfKey":"None"}}, template: {{value_json.RfRaw.Data}})
Error parsing value: 'dict object' has no attribute 'RfReceived' (value: {"Time":"2021-09-05T13:48:14","RfRaw":{"Data":"AAA055"}}, template: {{value_json.RfReceived.Data}})
Error parsing value: 'dict object' has no attribute 'RfReceived' (value: {"Time":"2021-09-05T13:52:32","RfRaw":{"Data":"AAA433F4017C04E221756955"}}, template: {{value_json.RfReceived.Data}})
Error parsing value: 'dict object' has no attribute 'RfReceived' (value: {"Time":"2021-09-05T13:52:45","RfRaw":{"Data":"AAA426A2014A03D47CD04E55"}}, template: {{value_json.RfReceived.Data}})
Error parsing value: 'dict object' has no attribute 'RfReceived' (value: {"Time":"2021-09-05T13:53:03","RfRaw":{"Data":"AAA426AC014A03D47CD04755"}}, template: {{value_json.RfReceived.Data}})

Mój yaml:

- platform: mqtt
  state_topic: "tele/RFBridge/RESULT"
  unique_id: sensor.okno3
  name: "Okno dzieciecy"
  value_template: "{{value_json.RfReceived.Data}}"
  payload_on: "AAA426A2014A03D47CD04755"
  payload_off: "AAA426C0014003CA7CD04E55"
  device_class: window
  qos: 1

Zauważyłem, że po wgraniu najnowszego wersji AIS Tasmoty : [AIS dom, na bazie Tasmota 9.5.0 przez Theo Arends] - te kody są dłuższe i niejednoznaczne - ten sam czujnik wysyłający zdarzenie otwarcia - to Rf Bridge odbiera czasami różne kody .

Otwarcie: AAA4343001AE053C21756955
Otwarcie: AAA42698014A03CA7CD04E55
Otwarcie: AAA433F4017C04E221756955

  • to może tłumaczyć, dlaczego nie działa zmiana stanu encji.

Dodam, że RF Bridge jak odbierał te krótkie kody, to zawsze był jeden i ten sam stały kod na otwarcie.

Miałem coś podobnego - różne kody z tego samego przycisku pilota i w rezultacie niemożność złapania tego właściwego.

Rozwiązanie jest proste.
Sonoff Brodge → terminal, a następnie komendy:
RFKey1 2 - uczenie kodu
RFKey1 5 - odczytanie
Zaprogramuj po prostu kod danego fizycznego przycisku z pilota pod przycisk ekranowy na Bridge, użyj go kilka razy aby sprawdzić czy działa, a następnie odczytaj i to będzie TEN kod.

Zestaw kodów:

RfKey<x> Send learned or default RF data for RfKey<x> (x = `1 – 16` )
`1` = send default RF data for RfKey<x> using RfSync, RfLow, RfHigh and RfHost parameters
`2` = learn RF data for RfKey<x>
`3` = unlearn RF data for RfKey<x>
`4` = save RF data using RfSync, RfLow, RfHigh and last RfCode parameters
`5` = show default or learned RF data
`6` = send learned RF data

Powinno zadziałać :slight_smile:
Mam nadzieję, że zrozumiale napisałem…

Dzięki za podpowiedź, ale to nie z pilotem jest problem, bym mógł go nadawać, tylko z kontaktronami w oknach i drzwiach. One nie odbierają kodów, tylko same nadają kod otwarcia.
Ktoś wie z czego wynika że przy tym trybie dłuższych kodów kontraktron odbierany jest jako różne kody ?
Przypomnę, że przy krótszych zawsze zwracał jeden kod.

Nadal podtrzymam to co napisałem…
Użyj jednego kontraktonu aby kod otwarcia zapisać na np. 3-4 przyciskach w Sonoffie.
Potem użyj RFKeyX 5 - odczytaj zapisane kody na każdym przycisku i porównaj - tak jak napisałem wcześniej - konsola pokazywała mi różne kody, a to co się zapisało działa po dzień dzisiejszy…
Być może na tych 3-4 przyciskach będzie ten sam kod…a wtedy jesteś w domu… w smart domu :wink:

1 polubienie

Z tym uczeniem, to nie działa jednak.

20:29:48.467 CMD: RFKey1 2
20:29:48.475 MQT: stat/RFBridge/RESULT = {“RfKey1”:“Start learning”}
20:29:48.557 MQT: tele/RFBridge/RESULT = {“Time”:“2021-09-21T20:29:48”,“RfRaw”:{“Data”:“AAA055”}}
20:29:51.367 MQT: tele/RFBridge/RESULT = {“Time”:“2021-09-21T20:29:51”,“RfRaw”:{“Data”:“AAA32698013603C07CD04E55”}}
20:30:23.865 CMD: RFKey1 5
20:30:23.872 MQT: stat/RFBridge/RESULT = {“RfKey1”:“Learning active”}

  • komenda 5 nie pokazuje żadnego kodu tylko “Learning active”.
    Wyświetlony kod podczas uczenia - zmienia się dla tego samego zdarzenia. A ten krótki : AAA055 jest stały, dla każdego zdarzenia.

Bramka powinna zapiszczeć chyba po odebraniu kodu… nie pamiętam jak to było, musiałby znowu pobawić się Sonoff Bridge…

Przychodzi mi jeszcze do głowy jedna rzecz - czy u Ciebie kody FR nie są czasem zmienne lub w jakiś sposób kodowane?
Bo wtedy rzeczywiście może być problem… ale nie wiem aż tyle aby być autorytetem w tym temacie…

Jeżeli mas coś jeszcze innego na RF to spróbuj pobawić się zapisem kodu z jakiegoś całkiem innego urządzenia… zobacz jakie daje to efekty - może w ten sposób… bo nic innego nie przychodzi mi już do głowy.

1 polubienie

Mi też 9d prawnego czasu nie działają kontraktony podpięte pod brodge. Ale na razie chroniczny brak czasu i nie ma kiedy sprawdzić. A mam najzwyklejsze kontraktony że stałym kodem. Jak byś znalazł rozwiązanie to daj znać

Ja jeszcze zmieniałem kody z długich na krótkie, aby za dużo nie wpisywać w automatyzacje:
Nie pamiętam na 100% ale bodaj to były komendy:

SetOption28 RF received data format
0 = hex (default)
1 = decimal
SetOption29 IR received data format
0 = hex (default)
1 = decimal

09:36:38.397 MQT: tele/RFBridge/STATE = {"Time":"2021-10-25T09:36:38","Uptime":"49T19:50:07","UptimeSec":4305007,"Heap":27,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":20,"MqttCount":7,"Wifi":{"AP":1,"SSId":"ToPeRWIFI_IoT","BSSId":"E8:D2:FF:55:87:84","Channel":1,"Mode":"11n","RSSI":100,"Signal":-32,"LinkCount":4,"Downtime":"0T00:00:11"}}
09:36:42.436 MQT: tele/RFBridge/HASS_STATE = {"Version":"9.5.0(tasmota)","BuildDateTime":"2021-06-20T17:51:36","Module or Template":"Sonoff Bridge","RestartReason":"Software/System restart","Uptime":"49T19:50:11","Hostname":"RFBridge-6235","IPAddress":"192.168.1.140","RSSI":"100","Signal (dBm)":"-34","WiFi LinkCount":4,"WiFi Downtime":"0T00:00:11","MqttCount":7,"LoadAvg":19}
09:37:10.262 MQT: tele/RFBridge/RESULT = {"Time":"2021-10-25T09:37:10","RfReceived":{"Sync":9800,"Low":280,"High":920,"Data":"BEC60A","RfKey":"None"}}
09:37:52.230 MQT: stat/RFBridge/RESULT = {"RfRaw":"ON"}
09:37:52.480 MQT: stat/RFBridge/RESULT = {"RfRaw":"OFF"}
09:37:52.731 MQT: stat/RFBridge/RESULT = {"RfRaw":"ON"}
09:37:52.772 MQT: tele/RFBridge/RESULT = {"Time":"2021-10-25T09:37:52","RfRaw":{"Data":"AAA055"}}
09:37:52.793 MQT: tele/RFBridge/RESULT = {"Time":"2021-10-25T09:37:52","RfRaw":{"Data":"AAA055"}}
09:41:00.937 MQT: tele/RFBridge/RESULT = {"Time":"2021-10-25T09:41:00","RfRaw":{"Data":"AAA433AE017C04C421756955"}}

Widać, że to AiS po wysłaniu komendy do urządzenia odbierającego komendy z pilota, przełącza RfRaw na 1 - a to on wprowadza te dziwne dłuższe kody, które nie są stałe.

Jak przestawię RfRaw 0 w konsoli - to wszystko wraca do działania.