Przejdź do głównej zawartości

Sonoff RF Bridge - Tasmota + Portisch

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. 
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ę.
  1. Rozkręć urządzenie i podłącz programator do pinów RX, TX, 3,3V i GND
  2. Przestaw przełącznik w pozycję OFF odłączając moduł radia.
  3. Pobierz najnowszą wersję Tasmoty, konkretnie plik tasmota.bin
  4. Włącz zasilanie podawane z programatora przytrzymując przycisk 'Pairing'.
  5. Zainstaluj esptool python setup.py install
  6. Wybierz odpowiedni port.
  7. Wyczyść pamięć esptool.py --port /dev/ttyUSB0 erase_flash
  8. Wgraj Tasmote esptool.py --port /dev/ttyUSB0 write_flash -fs 1MB -fm dout 0x0 tasmota.bin
  9. Odłącz programator i przestaw przełącznik w pozycję ON
  10. Po włączeniu zasilania podłącz się do sieci WiFi rozgłaszanej przez urządzenie
  11. Skonfiguruj moduł jako RF Bridge wybierając Sonoff Bridge (25)
  12. 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. 

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
Następnie wykonaj kroki:
  1. Połącz ze sobą GPIO4 z C2D oraz GPIO5 z C2CK
  2. Przełącz suwak w pozycję OFF i włącz Sonoffa. 
  3. Pobierz najnowszy firmware Portisch
  4. Uruchom Web UI SonOffa i przejdź do 'Firmware Upgrade/Upgrade by File' Upload
  5. Wybierz plik z pobranym hex-em dla radia i kliknij Start Upgrade. Musisz chwilę poczekać, aż Sonoff się zrestartuje.
  6. Jeśli otrzymasz błąd "Magic byte is not 0xE9" sprawdź wszystkie połączenia.
  7. Rozłącz dwa mostki GPIO4 i GPIO5, oraz przełącz suwak w pozycję ON
  8. 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

Przykładowa integracja odbioru może wyglądać tak:
# 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

Inny pilot działający dokładnie w ten sam sposób, kupiony na Aliexpress:

Komentarze

  1. mam taki pilot:
    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?

    OdpowiedzUsuń
    Odpowiedzi
    1. 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ń
  2. 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?
    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.

    OdpowiedzUsuń
    Odpowiedzi
    1. 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ń
  3. Cześć,

    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ć?

    OdpowiedzUsuń
    Odpowiedzi
    1. 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ń
  4. mam to samo...
    Wyglada na uwalony chip RF. Może jakiś ładunek elektrostatyczny ?
    Wcześniej działał..

    OdpowiedzUsuń
    Odpowiedzi
    1. O ile dobrze pamiętam to piterek2707 rozwiązał swój problem.

      Usuń
  5. Jak ?????? Nie znalazlem takiej informacji w poście...

    OdpowiedzUsuń
    Odpowiedzi
    1. 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ń
  6. rozumiem że dla Portischa te luty żółty i fiolotowy zostają na stałe ? czy tylko przy wgrywaniu softa ?

    OdpowiedzUsuń
    Odpowiedzi
    1. Tylko na czas wgrywania softu.

      Usuń
    2. A co z przerywanymi sciezkami ? Nie trzeba ich po wgraniu softu naprawić ?

      Usuń
    3. Nie trzeba, dodałem tą informację do opisu.

      Usuń
  7. 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ń
    Odpowiedzi
    1. 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

      czyżbym robił cos nie tak czy tez to kody zmienne ?

      Usuń
  8. 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ń

Prześlij komentarz

Popularne posty z tego bloga

Smart Domofon

W tym artykule chciałem pokazać możliwość przerobienia zwykłego i praktycznie dowolnego domofonu na "smart" . Nie ma znaczenia jaki producent oraz czy jest on cyfrowy czy może analogowy. Odpowiednie przerobienie to kwestia analizy płytki PCB posiadanej słuchawki. Jedne słuchawki są bardzo wygodne do przeróbek, a niektóre wymagają więcej pracy.

Tablica Manipulacyjna

W przeróżnych pudełkach zawsze walają się u mnie jakieś przełączniki, pokrętła i innego rodzaju elementy. Córka (3 lata) od zawsze lubiła pstrykać wszelkimi guzikami. Wychodząc z mieszkania to ona zawsze przywołuje windę i wybiera piętro.

Kontroler czujników obecności - EspHome

Prezentowany moduł powstał z potrzeby obsługi wszystkich przewodowych czujników ruchu oraz czujników otwarcia. Sterownik jest zbudowany w oparciu o ESP32 LoLin. Dodatkowo obsługuje on domofon oraz dzwonek do drzwi. Całość jest oprogramowans z wykorzystaniem EspHome z pełną integracją z Home Assistant.