Dziś chciałem Wam pokazać jak można uzyskać komunikację dwustronną urządzeń opartych o popularnym mikroprocesorze ESP8266 z centralą Homematic. Tak, tak, komunikację dwustronną to znaczy, że każde polecenie zlecone w CCU zostanie wykonane na urządzeniu, zaś każde zmiana stanu urządzenia (nawet odręczna, na przykład przyciskiem na obudowie urządzenia) zostanie odnotowana w CCU.
Wpis będzie dość poglądowy, raczej dla nieco zorientowanych czym jest flashowanie ESP. bardziej skupię się na tym czego jest mało w internecie czyli na HomeMatic. Dla osób mniej obeznanych z tematem flashowania na końcu jest link do niemieckojęzycznej strony bardzo, bardzo, bardzo dokładnie opisującej krok za krokiem całą złożoność procesu.
Co nam będzie potrzebne?
- centrala CCU (w wersji 2 lub 3)
- dodatek CUx-Daemon ( https://homematic-forum.de/forum/viewtopic.php?f=37&t=15298)
- dostęp po SSH do centrali CCU
- klient SFTP do wgrania skryptu (ja używam WinSCP)
- skrypt (sonoff.sh), którego autorem jest Dmitri Kuklin ( https://github.com/FrodoVDR/tasmota-ccu )
- sieć WiFi (2,4GHz) z możliwością poprawnego przypisania stałego adresu IP
- oprogramowanie Tasmota ( https://github.com/arendst/Tasmota/releases ) – ja oczywiście używam wersji PL
- oprogramowanie do flashowania
- jedno z urządzeń z listy ( https://templates.blakadder.com/eu.html w swoim przykładzie posłużę się modułem Sonoff Basic)
- narzędzia
- lutownica (nie zawsze)
- adapter FDTI
- dodatkowo trochę kabelków (do podłączenia adaptera)
- listwa kołkowa o ile zamierzamy lutować ją do naszego urządzenia
- narzędzia do rozbiórki urządzenia (w zależności od potrzeb śrubokręty, noże, etc)
Zaczynamy.
Najpierw musimy zainstalować dodatek CUx-Daemon. Pobieramy go z linku powyżej, wybierając odpowiednią wersję dla swojego CCU. Następnie logujemy się do WebUI CCU i wchodzimy do menu ‚Settings->Control Panel” jak na rysunku poniżej.
Następnie wchodzimy do „Additional software”
Po otworzeniu okna z oprogramowaniem dodatkowym, na dole okna klikamy „Przeglądaj” i wskazujemy przed chwilą pobrany plik z CUx-D, klikamy „Install”.
Po poprawnej instalacji nastąpi restart CCU. Po ponownym uruchomieniu w menu „Settings->Control Panel” zobaczymy nowy przycisk „CUx-Daemon” (na rysunku poniżej).
Na razie nie musimy go wciskać, jeszcze tam wrócimy.
Czas na SSH.
W WebUI wchodzimy do menu ‚Settings->Control Panel” i wciskamy „Security”.
Po otworzeniu nowego okna z „Security” nisko na dole zobaczymy sekcję „SSH” na rysunku poniżej zaznaczoną na czerwono
Wypełniamy zaznaczony na czerwono formularz (podając oczywiście hasło), wciskamy „SAVE” a następnie „OK”. Od tego czasu SSH mamy aktywne.
Czas na wgranie pliku „sonoff.sh”.
Plik „sonoff.sh” pobieramy z Github (wystarczy tylko ten jeden plik).
Pobieramy i instalujemy WinSCP ze strony https://winscp.net/eng/download.php. Po zainstalowaniu uruchamiamy WinSCP. Po uruchomieniu w panelu klikamy „nowe połączenie” jak na rysunku poniżej.
Formularz połączenia wypełniamy odpowiednio:
- protokół: SFTP
- nazwa hosta: IP naszego CCU
- numer portu: 22 (automatycznie po wybraniu SFTP)
- nazwa użytkownika: root
- hasło: hasło wcześniej wpisane w WebUI naszego CCU
Po wypełnieniu danych możemy wcisnąć przycisk „zapisz” aby następnym razem nie wypełniać formularza.
W formularzu zapisu sesji możemy użyć „zapisz hasło” co nie jest zalecane! Po wciśnięciu OK sesja zapiszę się w lewym oknie (tam gdzie ja mam pełno zapisanych sesji). Teraz możemy już się zalogować.
Po zalogowaniu zobaczymy panel trochę podobny do TotalCMD (jeśli ktoś używał).
Na lewym panelu odszukujemy folder z naszym plikiem „sonoff.sh” a na prawym panelu wchodzimy do katalogu „/usr/local/addons/cuxd/user”. Program można obsługiwać zarówno klawiaturą jak i myszką dlatego nie będę nikomu narzucał metody. Proszę sobie samemu przećwiczyć. Przestrzegam jednak, że jesteśmy zalogowani do CCU jako „root” a to oznacza, że wszelkie kasowania plików czy katalogów jest nieodwracalne, zalecam więc ostrożność.
Po odnalezieniu właściwych miejsc, stajemy kursorem myszy na pliku „sonoff.sh” i wciskamy klawisz F5 (a miałem nie narzucać 😉 ). Pojawi się nam okno z prośbą o potwierdzenie transferu. Klikamy „OK”.
Po zakończeniu transferu nasz panel WinSCP przynajmniej po prawej stronie powinien wyglądać tak jak u mnie.
Jeśli wszystko jest OK, możemy zamykać WinSCP i przechodzimy do następnego kroku to jest do Tasmoty. Tego kroku nie będę jednak opisywał. Jak wgrać to oprogramowanie znajdziecie pełno poradników również w postaci filmów na YouTube tym bardziej, że każde urządzenie flashuje się nieco inaczej (inaczej wprowadza w tryb flashowania).
Po wgraniu Tasmoty i wpisaniu nazwy SID oraz hasła do naszego WiFi, należy zadbać o dwie rzeczy.
1) Zadbać o to aby urządzenie otrzymywało zawsze ten sam adres IP. Można to zrobić na dwie metody:
- ustawić na routerze stałe IP dla tego urządzenia rozpoznając je po mac-addresie
- ustawić w urządzeniu (w Tasmocie) statyczny adres IP pochodzący z klasy, którą obsługuje DHCP serwera ale poza zakresem DHCP.
W każdym z tych działań chodzi o dwie sprawy:
- aby można było urządzenie odnaleźć zawsze pod tym samym adresem IP
- aby nie doszło do konfliktu adresów IP
Oczywiście problem można rozwiązać jeszcze poprzez DNS (lokalny) ale…. w sieciach domowych trzeba wiedzieć co się robi aby Windows i jego system rozgłoszeniowy nie spłatał nam figla, dlatego tej metody nie polecam, no chyba, że komuś bardzo zależy na tym by uzyskać dostęp do urządzenia 15 minut po uruchomieniu (albo wcale) bo tak działa system rozgłoszeniowy Windows.
2) ustawić hasło dostępowe do Tasmoty.
poprzez przeglądarkę internetową logujemy się do panelu Tasmoty na ustalonym wcześniej adresie IP. Wchodzimy do menu ‚Konfiguracja->Inne konfiguracje” i wypełniamy formularz danymi.
Wypełniamy pole hasło (na rysunku powyżej zaznaczone na czerwono). Dodatkowo (zaznaczone na zielono) o ile nie używamy, wyłączamy MQTT , następnie nadajemy nazwę naszemu urządzeniu (u mnie „Lampka nocna”). Zmieniona nazwa będzie zawsze widoczna w panelu Tasmoty w górnej części ekranu.
Po wypełnieniu danych naciskamy ‚Zapisz”. nastąpi ponowne uruchomienie urządzenia a my zostaniemy poproszeni o podanie nazwy użytkownika oraz hasła.
Zakładam, że wszystko przebiegło poprawnie. Pozostały nam dwa kroki:
- konfiguracja w CCU (to pozwoli nam zarządzać urządzeniem)
- konfiguracja Tasmoty (to pozwoli nam przekazywać stany urządzenia do CCU)
Tak więc czas na konfigurację w CCU. Logujemy się do WebUI, wchodzimy do ‚Settings->Control Panel” i wchodzimy do „CUx-Daemon”. Otworzy nam się nowa zakładka jak na rysunku poniżej.
Za chwilę utworzymy w CCU nowe, wirtualne urządzenie. Po prawej stronie wciskamy „Gerate” (zaznaczone na czerwono). Otworzy nam się panel konfiguracyjny jak na rysunku poniżej.
Nas interesuje formularz zaznaczony na czerwono. Wypełniamy odpowiednio tak jak na rysunku:
- CUxD Gerätetyp: (28) System – dostępne gdzieś nisko na liście wyboru
- Funktion: exec
- Seriennummer: (to pole wypełni się automatycznie, u mnie jest 7 a u Was powinno być 1 o ile to pierwsze urządzenie CUx tego typu)
- Name: (proszę wypełnić nazwą urządzenia. Nazwę będzie można zmienić w CCU. Nazwa musi być unikalna.)
- Geräte-Icon: (ja wybrałem „gniazdko”)
- Control: Schalter (przełącznik)
Po poprawnym wypełnieniu formularza wciskamy na dole formularza:
Po zakończeniu procesu nasze nowe urządzenie powinno być podświetlone na żółto w prawym panelu.
Jeśli podobnie wygląda to u Was to gratuluję. Właśnie dodaliście nowe wirtualne urządzenie do CCU. Teraz można zamknąć okno z CUx-D i powrócić do CCU. W CCU proszę wejść do menu „Settings->Device inbox” czyli tam gdzie trafiają nowo dodane urządzenia. jeśli wszystko się powidło powinniśmy zobaczyć taki ekran.
W tym miejscu nie będziemy nić więcej konfigurowali, wciskamy „Done” a następnie idziemy do „Settings-Devices” i tam odnajdujemy nasze urządzenie najlepiej po numerze seryjnym. u mnie jest to „CUX2801007”. Powinno to wyglądać tak jak poniżej.
Teraz przystępujemy do właściwej konfiguracji urządzenia. Wciskamy „SET” i wypełnimy pola jak poniżej. Dla ułatwienia pod rysunkiem przygotowałem dane do skopiowania.
CHANNELS : 1
PARAM1 :
/usr/local/addons/cuxd/user/sonoff.sh
SWITCH|CMD_SHORT :
$_P1$ -f power -c $CHANNEL$ -i $_C1$ -u $_C2$ -p $_C3$ -o 0
SWITCH|CMD_LONG :
$_P1$ -f power -c $CHANNEL$ -i $_C1$ -u $_C2$ -p $_C3$ -o 1
SWITCH|CH_PARAM1: IP urządzenia Tasmota
SWITCH|CH_PARAM2 : nazwa użytkownika ( u mnie admin)
SWITCH|CH_PARAM3 : hasło (u mnie nie podam 😉 )
Będziemy jeszcze potrzebowali „adresu” naszego urządzenia w CCU. W tym celu należy zapamiętać dane, które zaznaczyłem na zielono. U mnie to jest:
Interface: CUxD
Serial number: CUX2801007
Channel: 1
Po zapisaniu tego w nomenklaturze adresu urządzenia CCU, uzyskamy ciąg:
CUxD.CUX2801007:1
Do tego adresu musi odwoływać się nasz Sonoff aby przekazać stan do CCU.
Po wprowadzeniu zmian wciskamy „OK”. Po tych ustawieniach powinniśmy już mieć możliwość włączania i wyłączania Sonoffa. Pozostał nam etap konfiguracji Tasmoty aby powiadamiała CCU o zmianie statusu. W tym celu ponownie logujemy się do panelu Tasmoty i przechodzimy do zakładki „Konsola”. Tu musimy wykonać pięć „magicznych” wpisów, bez większego zagłębiania się w szczegóły. Każde z poleceń zamknięte w ramkę należy osobno skopiować i wkleić do pola pod konsolą a następnie za każdym razem wcisnąć enter.
Jedyne co należy zmienić to w dwóch miejscach (okienko 2 i 4) ciąg „IP_CCU” zastąpić adresem IP własnej centrali CCU oraz w dwóch okienkach (1 i 4) podać właściwy numer seryjny wirtualnego urządzenia w CCU ( u Was prawdopodobnie „CUX2801001”).
1.
mem2 CUX2801007:1
2.
var4 [IP_CCU:8181] /Test.exe?
3.
var5 Status=dom.GetObject
4.
rule1
on power1#state=1 do WebSend %var4%%var5%('CUxD.%mem2%.STATE').State(true) endon
on power1#state=0 do WebSend %var4%%var5%('CUxD.%mem2%.STATE').State(false) endon
on System#Boot do backlog mem2 CUX2801007:1; var4 [IP_CCU:8181] /Test.exe?; var5 Status=dom.GetObject endon
5.
rule1 on
Na rysunku poniżej kolorem czerwonym pokazałem efekt pierwszego wpisu. Pierwsza linia to nasze pierwsze polecenie zatwierdzone Enterem, druga to potwierdzenie wykonania polecenia. Kolorem zielonym pokazałem drugie polecenie oczekujące na wciśnięcie Enter.
Po wprowadzeniu wszystkich pięciu poleceń nasz Sonoff będzie powiadamia CCU o zmianie swojego stanu.
Na koniec dodam, że istnieje nieco prostsza metoda na komunikację dwustronną z ESP8266 (bez skryptu sonoff.sh) ale ta daje większe możliwości. Dzięki tej metodzie w moim dorobku podłączonych urządzeń znalazły się między innymi:
- Sonoff 4ch
- Sonoff Basic
- Sonoff POW
- Sonoff POW R2
- 2 * Sonoff S20 (gniazdo)
- 3 * DGM PP-W162 (gniazdo z funkcją pomiaru)
- listwa zasilająca
- Sonoff SC (monitor środowiska)
- Sonoff S55 (gniazdo zewnętrzne)
Po bardziej szczegółową instrukcję (bardzo szczegółową) odsyłam do autor skryptu „sonoff.sh” pod adres https://smarthome.kuklin.de/2019/02/15/sonoff-pow-homematic/ gdzie Dmitri opisuje podłączenie Sonoff POW.
Nie wierzę, że już skończyłem 😉