Integracja gniazdka współpracującego z Tuya Smart z Domoticzem

Swego czasu, za pośrednictwem sklepu houseiq.pl wpadła mi w ręce fajna wtyczka WIFI. Aż wstyd byłoby nie spróbować dodać jej do systemu. Sprawa na pierwszy rzut oka wydawała się prosta. Na forum Domoticza znalazłem skrypt, który obiecywał bezproblemowe podłączenie. U mnie jednak nie było tak różowo. Po wielu bojach udało mi się dodać gniazdko do Domoticza, jednakże skrypt nie obsługiwał monitoringu zużycia prądu, a o to głównie chodziło. Ponadto są duże problemy z biblotekami Pythona i ścieżkami ( jeżeli ktoś, tak ja, ma system nie na Raspberry Pi tylko np. w dockerze ). Dla chcących spróbować link do skryptu jest tutaj. Po konsultacji z programistą ze sklepu otrzymałem skrypt wyciągający dane o zużyciu prądu. Dało się to złożyć do kupy ale pracy było przy tym dość sporo.

Próbowałem dalej. Jako, że gniazdko zbudowane jest w oparciu o esp8266, kolejnym pomysłem była Tasmota. Instrukcja flashowania jest tu.  Rozkręciłem wtyczkę, namierzyłem piny, ale próba dostania się do nich skończyła się tak.

IMG-20190205-WA0001.jpg

Niestety piny są zalutowane, wyjęcie gniazdka z obudowy to koszmar a podejście z lutownicą jest bardzo słabe. Czyli na razie 2:0 dla gniazdka. Ale nie ma co się poddawać.

Kolejne odkrycie to TuyOTA czyli wgranie Tasmoty do urządzeń pracujących pod kontrola Tuya  bezpośrednio poprzez WIFI. Nie trzeba rozbierać gniazdka, lutować, pisać karkołomnych pluginów i skryptów. I tu, uprzedzając fakty, pełen sukces. Działa jak złoto, ale po kolei.

Testowe podłączenie zrobiłem na Rasberry Pi  z najnowszym Raspbianem. Na Ubuntu brakowało zależności, ale po aktualizacji też poszło jak należy.

Na początku dodajemy gniazdko do aplikacji np. SmartLife i sprawdzamy jakie ma IP. Następnie instalujemy pakiet hostapad

sudo apt install hostapd

I dalej. Na końcu pliku dhcpcd.conf wstawiamy denyinterfaces wlan0. Możemy użyć komendy jak poniżej.

sudo sed -i '3idenyinterfaces wlan0' /etc/dhcpcd.conf

Sprawdzamy.

head -3 /etc/dhcpcd.conf

I powinno być jak poniżej.

pi@raspberrypi:~ $ head -3 /etc/dhcpcd.conf
# A sample configuration for dhcpcd.
# See dhcpcd.conf(5) for details.
denyinterfaces wlan0

Teraz zatrzymujemy wpa_supplicant, restartujemy dhcpcd i ponownie zatrzymujemy wpa_supplicant. Jest to niezbędne do nadpisania ustawień.

ps -fu root | grep wpa_supplicant
sudo systemctl restart dhcpcd
ps -fu root | grep wpa_supplicant

I teraz już z górki. Dodajemy repozytorium.

git clone https://github.com/SynAckFin/TuyOTA

Przechodzimy do katalogu /TuyOTA i wydajemy polecenie, gdzie podajemy IP naszego gniazdka, MyHomeNet to nasza sieć WIFI a MySecret to hasło do niej.

sudo ./tuyota.pl -ip 192.168.xx.xx -s MyHomeNet -p MySecret

I tyle. Trochę to potrwa, czasami proces zatrzyma się na dłużej lub wyrzuci ostrzeżenia. Skrypt sam pobierze niezbędne pliki, ustawi Access Pointa i wgra Tasmotę. Jeżeli coś pójdzie nie tak, proponuje się nie zrażać, tylko puścić skrypt od nowa. Zacznie tam gdzie skończył i spróbuje dokończyć instalację. U mnie poszło za drugim razem. Na stronie projektu w szczegółach wyjaśniono co po kolei robi skrypt. Warto rzucić okiem w razie problemów.

Jeżeli wszystko poszło bez błędów dalej postępujemy tak jak we wpisie Sonoff POW R2 – Tasmota i Domoticz. Jedyna zmiana to wybór odpowiedniego urządzenia. Dla wtyczki TUYA najlepiej wybrać BlitzWolf SHP2 Module.

 

 

W Domoticzu efekt jest taki.

FireShot Capture 51 - Domoticz - http___192.168.2.101_9009_#_Dashboard.png

FireShot Capture 53 - Domoticz - http___192.168.2.101_9009_#_Dashboard.png

Podsumowując. Pomimo tego, że na pierwszy rzut oka sprawa wygląda na skomplikowaną to po wydaniu kilku komend mamy w pełni zintegrowana wtyczkę.  Powodzenia.

PS. Zauważyłem, że w ofercie jest też gniazdko podwójne, bez pomiaru prądu. Powinno dać się zintegrować tym sposobem, ale próby jeszcze przede mną. Ponadto do wyboru są gniazdka 10A i 16A , z tzw „bolcem” o bez. Może ktoś się zmierzy ?

Programowanie przełączników Sonoff POW

Z uwagi na to, iż coraz częściej dostaje pytania jak wgrać alternatywne oprogramowanie do Sonoff POW, postanowiłem opisać to w jednym miejscu jako przewodnik, oraz ściągę dla siebie na przyszłość. Sprawa jest bardzo łatwa, jednakże zawsze przychodzi chwila zawahania, który kolor kabelka, do którego podłączyć pinu. Oczywiście można zamówić gotowy produkt, z wgranym już wybranym oprogramowaniem np. w sklepie https://www.houseiq.pl , z którym od jakiegoś czasu współpracuje testując różne zabawki. Dla tych, którzy nie chcą iść na na łatwiznę powstał poniższy tekst.

Na początku powstaje problem wybory odpowiedniego programatora. Wersji i możliwości jest kilka. Ja przetestowałem dwa urządzenia:

Znalezione obrazy dla zapytania CP2102

Oba działają bez zarzutu. HW-417-V1.2 oprócz kabelków wymaga także przejściówki mini USB. Poza tym proces flashowania jest taki sam dla obu urządzeń. W instrukcji skupię się na tym pierwszym.

Podłączamy kabelki go odpowiednich pinów. Wykorzystujemy 4 z nich: 5V ( VCC), GND, RX, TX.

Znalezione obrazy dla zapytania hw-417 pin

Analogicznie podpinamy piny do Sonoff POW jak na obrazkach poniżej.

IMG_20181202_105734.jpg

 

W przypadku Sonoff POW nie ma konieczności lutowania. Piny są otwarte. Wystarczy włożyć do nich przewody i podczas wgrywania softu lekko pochylić na zewnątrz aby być pewnym, że dobrze przylegają do krawędzi.

Pobieramy i instalujemy oprogramowanie. Ja stosuje:

Obsługa SonoffPOW w ESPEasy jest jak na razie w wersji eksperymentalnej i sprawia trochę problemów, zwłaszcza z prawidłowym stworzeniem RULES.

Oprogramowanie wgrywam esptool.py.  Tak w Linuxie jak i w Windowsie powinniśmy mieć zainstalowanego Pythona w wersji Python 2.7 lub Python 3.4 lub nowszej. W aktualnych dystrybucjach Linuxa jest już Python w wymaganej wersji, dla Windowsa możemy ściągnąć go  z tej strony. U mnie w najnowszym Mincie:

$ python3 –version
Python 3.6.6

Ostatnią wersję esptool.py można zainstalować poprzez pip ( dla Linuxa wydajemy polecenia w Terminalu dla Windowsa w Powershell-u, w katalogu gdzie zainstalowaliśmy esptools:

$ sudo pip install esptool

W razie trudności może pomóc:

$ sudo python -m pip install esptool 

$ sudo pip2 install esptool

Po zainstalowaniu esptool, przechodzimy do odpowiedniego katalogu ( u mnie linuxie ~/.local/bin ) i wydajemy polecenie, gdzie /dev/ttyUSB0  to port pod który podpięty jest programator a sonoff-PL.bin to ściągnięta binarka najnowszej Tasmoty.

$ sudo python esptool.py -p /dev/ttyUSB0 write_flash 0x000000 „sonoff-PL.bin”

Jeżeli prawidłowo podpięliśmy kabelki, pochylamy je na zewnątrz i wciskamy biały przycisk aby przestawić urządzenie w tryb flashowania. Wymaga to trochę wprawy ale da się zrobić jedna ręką. Następnie podłączamy programator do portu USB, wydajemy jedno z powyższych poleceń i już. Jeżeli widzimy tak jak poniżej to mamy wgrany wybrany soft.

Zrzut ekranu z 2018-12-02 12-54-23

Odpinamy urządzenie od komputera. Podłączamy do prądu i konfigurujemy Tasomotę. Jak to zrobić opisywałem tu.

Jak flashować, podłączyć i obsłużyć przełączniki Shelly1 w Domoticzu.

Od jakiegoś czasu przełączniki Shelly cieszą się coraz większą popularnością. Na pewno nie bez znaczenia jest ich atrakcyjna cena ( aktualnie 9,90 Euro za wersję 1 ) oraz obietnica i nadzieja, że będą działały w Domoticzu czy HomeAssistant. W portfolio firmy są również przełączniki w wersji 2 obsługujące dodatkowo pomiar zużycia energii ( wersja 1 nie ma tej funkcjonalności ), ale ich cena ( choć nadal atrakcyjna ) to 19.90 Euro plus niewielkie koszty przesyłki. Do testów kupiłem wersję 1 i na niej się skupię.

Od razu zaznaczam, iż nie testowałem oryginalnego oprogramowania Shelly. Staram, się mieć wszystko w jednym Domoticzu, więc przeszedłem od razu do sedna. Sam proces flashowania jest oficjalnie wspierany. Niezbędne informacje można znaleźć na oficjalnej stronie.

shelly1_pinout-800x433.jpg

Zgodnie z zawartą tam informacją wewnątrz urządzenia znajduje się  2 megabajtowy ESP8266. Do całej procedury potrzebujemy adapter USB-UART ( ja wykorzystałem standardowy CP2102 ), płytkę stykową i garść przewodów. Bardzo przydatną informacją jest, że do flashowania nie musimy rozbierać urządzenia. Niezbędne piny wyprowadzone są na zewnątrz obudowy. Aby nie mordować się z podłączeniem proponuje skorzystać ze schematu, który znalazłem w sieci.

shellyuart.jpg

W momencie podania zasilania na urządzenie ( podłączenia adaptera do portu USB ) pin GPIO 0 i GND musza być zwarte ( stąd pomarańczowy mostek ). Pozostałe wyjścia podłączamy zgodnie ze schematem. Pamiętajmy o krzyżowym podłączeniu TX i RX.

Jako soft alternatywny wybrałem Tasmotę. Nic nie stoi na przeszkodzie aby użyć ESPEasy. Działa również doskonale. Jeżeli będą pytania w komentarzach chętnie pomogę, lub uaktualnię posta. Mam na razie jedno urządzenie i jest już w puszcze pod włącznikiem światła, więc musiałem się na coś zdecydować. Ściągamy więc aktualna wersję Tasmota. Do falshowania użyłem esptool. Dla odmiany poszedłem w konsolę i był to strzał w dziesiątkę. Wszystko poszło od strzału. Na początku instalujemy narzędzie:

sudo pip install esptool

U mnie na Ubuntu zainstalowało się w katalogu domowym w loklalizacji /.local/bin. Przechodzimy do rzeczonego katalogu. Przenosimy tam plik z oprogramowaniem sonoff-PL.bin i wydajemy polecenie:

sudo python esptool.py -p /dev/ttyUSB0 write_flash 0x000000 „sonoff-PL.bin”

I tyle. Jeżeli urządzenie zostało rozpoznane na porcie /dev/ttyUSB0 ( a mnie dzieje się tak w 100 % ) proces flashowania przebiega bez zakłóceń. Z jednym małym zastrzeżeniem. Shelly1 nie zadziała prawidłowo. Nie będziemy mieli możliwości sterowania nim przy pomocy włącznika światła, jedynie poprzez Domoticza. Tak być nie może. Okazuje się, że przyczyną takiego stanu rzeczy jest nieprawidłowe ustawienie stanu wysokiego na wyjściu SW. Nie wdając się w szczegóły, aby uruchomić przełącznik, należy edytować plik sonoff.ino i  użyć „input” pinmode zamiast „input_pullup” i przeprogramować oprogramowanie układowe. Brzmi trochę trudno, ale autor bloga TheHookUp na szczęście udostępnił zaktualizowaną binarkę. Najnowsze ESPEasy_mega ma możliwość zmiany tych ustawień z poziomu interface, ale nie zostało to przeze mnie przetestowane. Pobieramy więc zaktualizowaną wersję. Wydajemy jeszcze raz komendę:

sudo python esptool.py -p /dev/ttyUSB0 write_flash 0x000000 „shelly1tasmota.bin”

i mamy wgrana odpowiednią wersję Tasmoty. Przełącznik podpinamy do włącznika zgodnie ze schematem z oryginalnej instrukcji lub dla takich elektryków jak ja z drugiego schematu. Jeszcze raz dziękuję autorowi przytoczonego wcześniej bloga.

 

Następnie konfigurujemy Tasmotę. Logujemy się standardowo do naszej sieci jak było opisane w poście o Sonoff POW2. Ustawiamy odpowiednie wartości. Najważniejsza jest konfiguracja modułu.

FireShot Capture 20 - Sonoff - Configure Module - http___192.168.2.74_md_.png

oraz ustawienia MQTT ( odsyłam jeszcze raz do posta ). W Domoticz konfigurujemy ( jeżeli jeszcze nie mamy)  broker Mosquitto i zakładamy standardowy przełącznik. Zapamietujemy jego idx. Po tym ustawiamy MQTT.

FireShot Capture 21 - Sonoff - Configure MQTT - http___192.168.2.74_mq_.png

oraz integracje z Domoticzem w Tasmocie.

FireShot Capture 22 - Sonoff - Configure Domoticz - http___192.168.2.74_dm_.png

I tyle. Mamy obsługę Shelly 1 poprzez klawisz na ścianie i przełącznik w Domoticzu.

FireShot Capture 23 - Domoticz - http___192.168.2.214_9009_#_LightSwitches

Z uwagi na małe rozmiary Shelly wciśnięcie go do puszki jest bardzo łatwe choć tak nie wygląda. Oczywiście instalacja elektryczna musi mieć przewód neutralny N.

IMG_20181031_170714.jpg

Reasumując, jestem bardzo zadowolony z Shelly. Na razie nie potrzebuje monitoringu prądu więc zostanę przy wersji 1. W drodze są już kolejne. Przy tej cenie dodanie ich pod wszystkie włączniki światła w domu nie jest już tak dramatycznym wydatkiem.

PS. Jako, że na boku, od jakiegoś czasu dłubię też w Home Assistant, w którymś z kolejnych postów piszę jak się Shelly 1 sprawuje ( włącznie z innymi sonoffami ) w HA.

 

Odczyt danych z licznika prądu Eastron SDM630 Modbus.

Sposobów na monitoring zużycia prądu w domu jest na prawdę wiele. Kilka z nich opisywałem już na blogu. Można to zrobić poprzez odczyt z migającej diody np. wykorzystując INODE lub przy użyciu klamer zapinanych na przewodach jak w systemie OWL Micro +. Cały czas jednak chciałem uzyskać wiarygodne dane prosto z licznika prądu. Jako, że ma w domu istalacje 3-fazową problem był bardziej skomplikowany, raz ze względu na koszty zakupu odpowiedniego podlicznika, dwa ciężko było mi znaleźć odpowiednie skrypty i biblioteki do obsługi tego typu liczników. Dla liczników jednofazowych np. SDM120 poradników, łącznie z filmami na youtube jest cała masa, słusznie jednak podejrzewałem, że mogą być nieprzydatne dla liczników trójfazowych. Przepisanie kodu jak dla mnie to za wysokie progi. Aktualnie pracuje nad tematem związanym z monitoringiem zużycia energii  i powyższy problem stał się elementem większego projektu, ale o tym pewnie będzie za jakiś czas. Stałem się więc posiadaczem owego licznika i zmuszony byłem do podjęcia walki z nim. Uprzedzając pytanie, dlaczego wybrałem protokół Modbus zamiast analizy z wyjścia impulsowego. Założenie jest takie, aby odczyty były jak najbardziej wiarygodne i cały projekt został oparty na tym protokole. Nie będę oczywiście rozpisywał się o charakterystyce protokołu komunikacji, jego wadach i zaletach, oraz wklejał linków do Wikipedii. Ma być praktycznie, czyli jak najszybciej do celu.

Przygotowanie środowiska pracy.

Co było potrzebne:

  1. Licznik prądu Eastron SDM630 Modbus
  2. Raspberry Pi B+
  3. Konwerter USB/RS485
  4. … trochę kabli i żarówka

Na Raspberry Pi zainstalowałem czystego, najnowszego Raspiana i wgrałem na nim Domoticza, klasyczna komendą:

 sudo curl -L install.domoticz.com | bash 

Podłączenie licznika do Rasberry Pi

Na początek podłączamy licznik zgodnie z instrukcją. U mnie do testów wykorzystywana jest jedna faza. Jako odbiornik prądu posłużyła żarówka. Przy podłączeniu trójfazowym, w rozdzielni skorzystam z pomocy elektryka i to wszystkim polecam.

FireShot Capture 11 - - https___cemm.nl_wp-content_uploads_2017_12_Eastron-SDM630D-Modbus.pdf

 

Podłączyłem tak.

1- Zasilanie, przewód fazowy – L1

4- Zasilanie, przewód neutralny – N

5- Wyjście na żarówkę, przewód fazowy – L1

8- Wyjście na żarówkę, przewód neutralny – N

Do portu USB Raspberry podłączamy konwerter USB/RS485 i łączymy go z wyjściem danych licznika.

  • A+ licznika z D+ konwertera
  • B- licznika z D- konwertera

IMG_20181028_111528.jpg

Instalacja oprogramowania.

Wychodzą z założenia, iż wszystko czego mi do szczęścia, w temacie elektroniki potrzeba zostało już dawno odkryte przekopałem fora i znalazłem kilka skryptów w pythonie, które powinny obsłużyć ten licznik. Okazało się, że jest też plugin do Domoticza, więc na nim się skupiłem. W najnowszy Raspbianie mamy już Pythona w wersji 3, lecz niezbędne jest doinstalowanie python3-dev.

sudo apt-get install -y python-dev 

Instalujemy plugin i restartujemy Domoticza

 cd ~/domoticz/plugins git clone https://github.com/MFxMF/SDM630-Modbus 

Po restarcie pojawił się nam nowy /Sprzęt

FireShot Capture 12 - Domoticz - http___192.168.2.130_8080_#_Hardware.png

I tu sprawa bardzo ważna. Należy ustawić prawidłową szybkości transmisji danych – Baud rate. Domyślnie jest 9600, natomiast mój licznik pracuje z prędkością 4800. W instrukcji licznik można znaleźć informację jak i gdzie ją ustawić.

W zakładce /Urządzenia pojawia nam się kilka – dokładnie 86 odczytów

FireShot Capture 13 - Domoticz - http___192.168.2.130_8080_#_Devices.png

a w logach ( jeżeli ustawimy szybkości Debug: True ). Nie polecam ustawiać na stałe debugowania. Po jakimś czasie zaczyna się dusić.

FireShot Capture 14 - Domoticz - http___192.168.2.130_8080_#_Log.png

Dla mnie praktycznie potrzebne są jest tylko dwa odczyty.

FireShot Capture 15 - Domoticz - http___192.168.2.130_8080_#_Utility.png

I to byłoby na tyle. Wygląda banalnie prosto, ale rozgryzienie tego zajęło kilka wieczorów. Jeżeli coś poszłoby nie tak warto doinstalować

sudo apt-get install python-pip
pip install pyserial 
pip install minimalmodbus

ponieważ skrypt korzysta z tych bibliotek.

Projekt w zamyśle ma być rozbudowany o odczyty z innych liczników więc zachęcam do śledzenia wątku. Będę starał się go na bieżąco aktualizować.

OWL Micro+. Kolejny sposób na monitoring energii przy pomocy Domoticza.

IMG_20171112_173855.jpg

Nie ukrywam, że jednym powodów zakupu RFLink Getaway była chęć wypróbowania kolejnego monitora zużycia energii w moim domu. Jeden ze sposobów, poprzez INODE opisywałem kilka miesięcy temu tutaj. System działa do tej pory, ale jakiś czas temu wpadł mi w okazyjnej cenie OWL Micro+. Jest to bezprzewodowy mikromonitor zużycia energii elektrycznej. Występuje on w wersji tak jedno jak i trójfazowej. Ja posiadam ten pierwszy. Urządzenie składa się z nadajnika z klamrą i odbiornika z wyświetlaczem. Elementy systemu komunikują się ze sobą przy pomocy pasma 433MHz, co jest kluczowe dla integracji poprzez RFLink Getaway.

Zanim podłączymy licznik do DOMOTICZA wpinany go do naszej sieci energetycznej.  Klamrę zapinamy na przewód fazowy w skrzynce licznikowej.

Po chwili powinniśmy otrzymać wynik pomiaru ma wyświetlaczu OWL Micro+.

Jeżeli mamy ustawione w DOMOTICZU automatyczne dodawanie urządzeń powinniśmy za chwilę zobaczyć  nasz miernik w zakładce /Urządzenia.

FireShot Capture 8 - Domoticz - http___192.168.2.81_9090_#_Setup

Screenshot_20171112_175231

Standardowo dodajmy go na pulpit i cieszymy się odczytami.

FireShot Capture 9 - Domoticz - http___192.168.2.81_9090_#_Dashboard.png

FireShot Capture 10 - Domoticz - http___192.168.2.81_9090_#_Dashboard.png

Możemy następnie przeliczyć zużycie na złotówki, jak to opisałem w tym poście.

PS. Polecam również zajrzeć na Cezara blog o Raspberry PI, Domoticz i gadżetach gdzie system ten jest bardzo dobrze opisany.

Życzę dużych oszczędności.