Sonoff RF Bridge z oprogramowaniem Tasmota jest mostkiem między radiem 433MHz a MQTT, które jest bardzo wygodne do integracji z innymi systemami. W tym opisie pokażę jak wgrać Tasmote i zmienić firmware w samym radiu 433MHz zwiększając możliwości urządzenia.
Inny pilot działający dokładnie w ten sam sposób, kupiony na Aliexpress:
Chip RF to EFM8BB1, który domyślnie obsługuje tylko protokół 24-bitowy. Jest on wystarczający do większości pilotów ze stałym kodem, ale są np piloty, które nie działają z domyślnym firmware radia.
Wgranie Tasmoty
Wszystkie prezentowane kroki są skrótowe i oparte o oficjalną dokumentację.
- Rozkręć urządzenie i podłącz programator do pinów RX, TX, 3,3V i GND.
- Przestaw przełącznik w pozycję OFF odłączając moduł radia.
- Pobierz najnowszą wersję Tasmoty, konkretnie plik tasmota.bin
- Włącz zasilanie podawane z programatora przytrzymując przycisk 'Pairing'.
- Zainstaluj esptool python setup.py install
- Wybierz odpowiedni port.
- Wyczyść pamięć esptool.py --port /dev/ttyUSB0 erase_flash
- Wgraj Tasmote esptool.py --port /dev/ttyUSB0 write_flash -fs 1MB -fm dout 0x0 tasmota.bin
- Odłącz programator i przestaw przełącznik w pozycję ON
- Po włączeniu zasilania podłącz się do sieci WiFi rozgłaszanej przez urządzenie
- Skonfiguruj moduł jako RF Bridge wybierając Sonoff Bridge (25)
- Skonfiguruj sieć wifi oraz MQTT
Połowa drogi za nami, w tej chwili mamy wgraną Tasmote z oryginalnym firmware samego modułu radia.
Nietypowe piloty
Jakiś czas temu kupiłem fajny pilot do obsługi rolet i jakie było moje zdziwienie kiedy Sonoff nie wykrywał żadnego przycisku.
Jest to pilot posiadający 16 kanałów, a każdy z nich ma trzy przyciski, no bajka do obsługi wielu rolet. Zacząłem szukać informacji czy czasem nie trzeba go jakoś zaprogramować, myślałem, że może trzeba go nauczyć kodów. Posiadam jeszcze Broadlink RM Pro, więc uruchomiłem tryb uczenia i sprawdziłem, że ten pilot wysyła jakieś kody. Niestety Broadlinka nie można wykorzystać do nasłuchiwania pilotów, można je tylko symulować.
Wróciłem do Sonoffa i postanowiłem zmienić firmware w samym radiu EFM8BB1. Opierałem się o tą instrukcję.
W tym celu trzeba dokonać małej ingerencji w płytkę jeśli chcemy zasilić urządzenie z USB podczas wgrywania nowego firmware.
Przejdź do konsoli i wprowadź
Przykładowa integracja odbioru może wyglądać tak:
Jest to pilot posiadający 16 kanałów, a każdy z nich ma trzy przyciski, no bajka do obsługi wielu rolet. Zacząłem szukać informacji czy czasem nie trzeba go jakoś zaprogramować, myślałem, że może trzeba go nauczyć kodów. Posiadam jeszcze Broadlink RM Pro, więc uruchomiłem tryb uczenia i sprawdziłem, że ten pilot wysyła jakieś kody. Niestety Broadlinka nie można wykorzystać do nasłuchiwania pilotów, można je tylko symulować.
Wróciłem do Sonoffa i postanowiłem zmienić firmware w samym radiu EFM8BB1. Opierałem się o tą instrukcję.
W tym celu trzeba dokonać małej ingerencji w płytkę jeśli chcemy zasilić urządzenie z USB podczas wgrywania nowego firmware.
Wgranie Portisch firmware
Na początku trzeba przeciąć dwie ścieżki zaznaczone czerwonym prostokątem na powyższym zdjęciu. Jest to GPIO4 i GPIO5, które podłączone są do wyjścia USB jakoś D+ i D-.
Nie musisz przecinać ścieżek jeśli:
- Zasilasz urządzenie z programatora używając napięcia 3,3V
- Zasilasz z USB, a zasilacz nie zwiera środkowych pinów do masy
- Zasilasz z USB i używasz kabelka bez przewodów D+ i D-, tylko VCC i GND
- Połącz ze sobą GPIO4 z C2D oraz GPIO5 z C2CK.
- Przełącz suwak w pozycję OFF i włącz Sonoffa.
- Pobierz najnowszy firmware Portisch,
- Uruchom Web UI SonOffa i przejdź do 'Firmware Upgrade/Upgrade by File' Upload
- Wybierz plik z pobranym hex-em dla radia i kliknij Start Upgrade. Musisz chwilę poczekać, aż Sonoff się zrestartuje.
- Jeśli otrzymasz błąd "Magic byte is not 0xE9" sprawdź wszystkie połączenia.
- Rozłącz dwa mostki GPIO4 i GPIO5, oraz przełącz suwak w pozycję ON.
- Przeciętych ścieżek nie trzeba naprawiać.
Teraz możesz już złożyć urządzenie.
Obsługa RAW Data
Po zaktualizowaniu radia w pierwszej chwili może się wydawać, że nic się nie zmieniło i wszystko działa po staremu. Dzieje się tak, ponieważ musisz ręcznie aktywować funkcję odbierania rozszerzonych kodów.
Przechodzimy do Console, wpisujemy rfraw 166 i enter, a w odpowiedzi powinniśmy dostać potwierdzenie.
Dlaczego 166? Opis poszczególnych kodów można sprawdzić tutaj: Sonoff RF Bridge Commands.
Od teraz możesz już wyłapywać surowe ramki, interesuje nas pozycja RfRaw.Data
RFRAW 166 autostart
Po restarcie Sonoffa domyślna wartość rfraw to 0, czyli urządzenie działa w trybie dekodowania protokołu 24-bitowego, tak jak przed zmianą firmware. Ręczne ustawianie wartości rfraw 166 po każdym restarcie raczej mija się z celem, możemy poradzić sobie automatyzując ten proces, poprzez ustawienie reguły.Przejdź do konsoli i wprowadź
Rule1 ON SYSTEM#BOOT D0 rfraw 166 ENDON
Wysyłanie kodu
Niestety z oprogramowanie Portisch nie jest możliwe zdefiniowanie przycisków w WebUI tak aby wysyłały nauczony kod. Należy to zrobić poprzez konsole lub MQTT.
Kod który przechwyciliśmy nie nadaje się wprost do wysyłania. Należy dokonać konwersji.
Pomijając szczegółowe kwestie to w przypadku pokazanych tutaj pilotów wystarczy zamienić drugi bajt z A6 na A8.
Przykładowo odebraliśmy kod AAA60601BF3486111E55, to musimy wysłać AAA80601BF3486111E55
Jeśli chcemy użyć konsoli w WebUI to wystarczy wprowadzić
rfraw AAA80601BF3486111E55
Drugim sposobem jest użycie MQTT. Trzeba sprawdzić pod jaką nazwą Sonoff RF Bridge nasłuchuje. Informacja ta znajduje się w 'Information -> MQTT Full Topic', u mnie jest to 'cmnd/tasmota_E4BA92/'
Wysłanie sprowadza się do polecenia w terminalu:
mosquitto_pub -h 192.168.X.X -t 'cmnd/tasmota_E4BA92/Backlog' -m 'RfRaw AAA80601BF3486111E55'
Struktura kodów
Pilot jest tak skonstruowany, że na szczęście nie musimy odczytywać kodów wszystkich przycisków czyli 16*3=48. Jest pewna zależność
Prefix Channel CMD Example
AAA60602BF34861 X 1E55(up) AAA606013E3534AX1E55
3355(down) AAA606013E3534AX3355
5555(stop) AAA606013E3534AX5555
example channel 8 down receive: AAA606013E3534A83355
example channel 9 up send: AAA806013E3534A91E55
Home Assistant integracja
# COVER 4
- alias: "[DOOYA] Button 4 OPEN"
trigger:
platform: mqtt
topic: rfbridge/RESULT
condition:
condition: template
value_template: '{{ trigger.payload_json.RfRaw.Data == "AAA60602BF3486141E55" }}'
action:
service: cover.open_cover
entity_id: cover.blind_4
mam taki pilot:
OdpowiedzUsuńhttps://sukcesgroup.pl/sklep/pl/yooda/piloty-przenosne-seria-artistic/100-pilot-artistic-15-kanalowy.html
Idzie gdzieś kupić: Sonoff RF Bridge z oprogramowaniem Tasmota gotowca aby
zaprogramować taki pilot?
Pilota nie programujesz, możesz przechwytywać jego kody i podejmować jakieś akcje. Napisz do mnie na maila to postaram się coś zaproponować. dkradke@gmail.com
UsuńDzień dobry, chciałem się zapytać czy posiadając pilot firmy INEL model PIL-05PM (https://www.napedy.net/inel-pil-05pm-pilot-natynkowy-pieciokanalowy-p-1707.html) jest możliwość przechwytywać jego kody?
OdpowiedzUsuńZ tego co się dowiedziałem to piloty tej że firmy za każdym razem wysyłają inny kod do rolety.
Czy jest Pan w stanie pomóc z moim problemem? Ponieważ zależy mi aby mieć możliwość sterowania pilotem jak i za pomocą np. domoticz.
Tego systemu nie znam więc nie odpowiem, ale producent podaje, że kody są zmienne więc raczej nie da się przechwycić sygnału.
UsuńCześć,
OdpowiedzUsuńMam problem z wygraniem Portischa. Za każdym razem zwraca mi błąd "failed to erase rf chip". Przeszukałem już cały internet w poszukiwaniu rozwiązania problemu. Kilka razy sprawdzałem połączenie przewodów, ustawienia przełącznik Off/on, próbowałem w różnych konfiguracjach tj. poprzez zasilanie podawane przez programator oraz poprzez usb i nic. Dodam że mam wersję R2.
Czy będziesz w stanie pomóc mi w rozwiązaniu tego problemu lub w jakiś sposób nakierować jak sobie z tym poradzić?
Podeślij mi na maila (dkradke@gmail.com) fotkę jak to masz podłączone, bo jedyne co mi przychodzi do głowy to, że masz zamienione RX/TX między ESP a RF.
Usuńmam to samo...
OdpowiedzUsuńWyglada na uwalony chip RF. Może jakiś ładunek elektrostatyczny ?
Wcześniej działał..
O ile dobrze pamiętam to piterek2707 rozwiązał swój problem.
UsuńJak ?????? Nie znalazlem takiej informacji w poście...
OdpowiedzUsuńKontynuowaliśmy wątek mailowo, okazało się, że były problemy z połączeniem, zwarcie na jednej linii. Sprawdź jeszcze raz połączenia i spróbuj wgrać pusty obraz do ESP, a później jeszcze raz Tasmote.
Usuńrozumiem że dla Portischa te luty żółty i fiolotowy zostają na stałe ? czy tylko przy wgrywaniu softa ?
OdpowiedzUsuńTylko na czas wgrywania softu.
UsuńA co z przerywanymi sciezkami ? Nie trzeba ich po wgraniu softu naprawić ?
UsuńNie trzeba, dodałem tą informację do opisu.
UsuńJak udało ci się zczytać ten drugi pilot. Mam taki sam ale on ma chyba zmienne kody. Przy wysyłaniu sygnału mój bridge nic nie wyłapuje. Dioda czerwona nie mruga. Inne piloty łapie bez problemu.
OdpowiedzUsuńudało sie Wam rozwiązać ten problem? mam pilota jak ten ze zdjęcia z aliexpress tylko moj to starcus multi, firmware portisch odbiera kody ale pod rfraw 177 a nie pod 166, kody konwertuje za posrednictwem bitbucket coverter ale nic sie zupelnie z roleta nie dzieje po wysyłce
Usuńczyżbym robił cos nie tak czy tez to kody zmienne ?
Ktoś może mi podpowiedzieć dlaczego na nowej Tasmota 10.1.0 nie działa komenda Rule1 ON SYSTEM#BOOT D0 rfraw 166 ENDON nie dopisuje do boot rfraw 166?
OdpowiedzUsuń