Stacja pogody i termostat Netatmo w Domoticzu i Homeassistant

I kolejny sezon jesienno-zimowy przed nami. Na blogach i forach wysyp pytań, wątków i artykułów związanych z ogrzewaniem. Postanowiłem i ja dorzucić coś od siebie.

images

Od jakiegoś czasu gości u mnie zestaw 2 termostatów pokojowych  i stacja pogody od Netatmo.

Zestaw ten zwrócił moja uwagę już dawno, ale barierą była cena. Udało mi się jednak chytrze problem obejść o czym na końcu wpisu. Mam w domu ogrzewanie elektryczne, więc termostaty pokojowe są oczywistym wyborem. Rozważałem jeszcze NEST, ale w sierpniu Google zamknęło API i nie przyjmuje nowych kont developerskich. Stare podobno jeszcze działają, ale nie chcę ryzykować niemałych pieniędzy i nie mieć możliwości pobawienia się urządzeniem w Domoticzu i HA.

Cały proces dodawania urządzeń do aplikacji jest intuicyjny i nie wymaga rozpisywania się. W Domoticzu  sprawa jest banalna. Jak już założymy konto w aplikacji NETATMO i sparujemy urządzenia nie pozostaje nam nic innego niż dodać obsługę urządzeń w systemie.

FireShot Capture 085 - Domoticz - 192.168.2.101.png

I tyle. Mamy wszystkie nasze urządzenia w Domoticzu.

FireShot Capture 090 - Domoticz - 192.168.2.101

Na pulpicie wygląda tak.

FireShot Capture 091 - Domoticz - 192.168.2.101.png

W Homeassistant sprawa jest bardziej skomplikowana, ale też satysfakcja większa. Instalację Homeassistant opisywałem już dość dawno w w wpisie Home Assistant – instalacja i pierwsze uruchomienie na Raspberry Pi. Od tego czasu sprawa się bardzo uprościła. Dodałem krótki update, ale na oficjalnej stronie jest prosta instrukcja. Ściągamy obraz odpowiedni dla naszej wersji Raspberry Pi, wypalamy kartę i tyle. Ruszy samo. Gdy już oczom naszym ukaże się Hass.io pozostaje nam tylko wyedytować plik configuration.yaml. Tu jednak jest trochę zabawy.

Po pierwsze musimy zdobyć oprócz nazwy użytkownika i hasła api_key oraz
secret_key Natatmo. Zrobimy to w Netatmo Connect. Musimy założyć własną apkę. Wchodzimy w CREATE YOUR APP i uzupełniamy wymagane pola.

FireShot Capture 087 - Netatmo Connect - dev.netatmo.com.png

Formularz nie jest zbytnio czepliwy. Przyjmuje co mu podamy. Po zatwierdzeniu na dole dostajemy nasze klucze.

FireShot Capture 088 - Netatmo Connect - dev.netatmo.com.png

Znajdujemy plik configuration.yaml w HA i dodajemy wpis.

netatmo:
..api_key: 435dr45xxxxxxxxx
..secret_key: 0NRJxxxxxxxxxxxxxx
..username: mxxxxx@xxxxxx.com
..password: Hxxxxxxxxx3

Aby dodać obsługę termostatu musimy dodać go w sekcji climate. Ciekawostka, bez stacji pogody termostat nie będzie widoczny w Domoticzu i HA. Stacja jest bramką na zewnątrz.

climate:
..- platform: netatmo

To jest Python więc należy uważać na wcięcia. Kropki z lewej strony oznaczają spacje. Restartujemy system i gotowe. Konfigurujemy karty Lovelace w typie entities.

FireShot Capture 089 - Home Assistant - 192.168.2.119

Jedyny minus jaki widzę to niestety cena. Stacja pogody to 750 zł, termostat 800 zł. Drogo. Na rynku są jednak urządzenia używane lub powystawowe. Należy jednak bardzo z nimi uważać. Bardzo często mają uszkodzone zasilanie. Potrafią rozładować baterię w 30 min. Problem wielokrotnie zgłaszany na forach. Netatmo wysyłało na gwarancji nowe urządzenia a stare poszły na portale aukcyjne. U mnie w stacji pogody moduł zewnętrzny pracuje ok. 1 mies. na komplecie baterii ( powinien 2 lata ), jeden termostat jest OK, drugi niestety był całkowicie padnięty. Nowe baterię kładł po kwadransie. Poradziłem sobie kupując adapter do zasilania bateryjnego i jakoś działa. Zainteresowanym podeślę linka.

Miłego testowania.

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 ?

Docker i Domoticz – pierwsze kroki.

Na Raspberry Pi przerobiłem już kilka systemów: Domoticza, Homeassistant, OpenHub, Volumio i pewnie jeszcze kilka innych pomniejszych. Pomimo tego, iż mam 5 malinek, do różnych testów jest to zdecydowanie za mało. Jako, iż Domoticz jest moim tzw. systemem produkcyjnym i zależy mi na jego stabilności,  pokusa ciągłej zmiany i ulepszania systemu jest tak wielka, że szukałem rozwiązania, które zapewni mi możliwość eksperymentowania i  jeżeli się sprawdzi uwolni mnie od nieszczęścia padniętej karty SD. Oczywiście jest możliwość ograniczenia strat ( o regularnych kopiach nawet nie wspominam ) poprzez instalacje systemu na pamięci USB, o czym pisałem w poście Instalacaja DOMOTICZ – na USB . Z Raspberry Pi 3 B+ sprawa jest jeszcze łatwiejsza ponieważ ma juz możliwość bootowania bezpośrednio z USB, jednakże z przyczyn przytoczonych powyżej szukałem innego rozwiązania i znalazłem DOCKER.

Próbowałem iść w instalację maszyn wirtualnych na VirtualBox, ale nie mam tak mocnego sprzętu aby pociągnął kilkanaście na raz, a takie aktualnie mam potrzeby. Docker rozwiązuje ten problem. Pozwala umieścić program oraz jego zależności w lekkim, przenośnym, wirtualnym kontenerze, który można uruchomić na prawie każdym serwerze z systemem Linux. Nie będę rozpisywał się o specyfikacji i filozofii konteneryzacji ponieważ są ludzie którzy na pewno mają wiekszą wiedzę na ten temat i w razie potrzeby sprostują moje amatorskie instrukcje. Łopatologicznie rzecz biorąc Doker to takie wirtualne środowisko w systemie Linux, w którym instalujemy inne programy i systemy trochę jak aplikacje. Możemy postawić sobie kilka Domoticzów jednocześnie, na każdym z nich mieć inne urządzenia, co innego testować i z czym innym walczyć i po udanych testach przenieść to do głównego systemu.

Czego będziemy potrzebować. Oczywiście jakiejś maszyny na serwer. Ja mam stary, pasywny nettop ( takie coś jak poniżej ). Ważne aby procesor miał 64bit architekturę ponieważ Docker nie obsługuje 32bit.

Dell OptiPlex FX160 Intel 1.6GHz Flash 2GB RAM 1GB

Na takim czymś ( do wyboru do koloru – od 150 zł ) instalujemy najlepiej Ubuntu Server ( u mnie wersja 16.04 ), chociaż dystrybucja typu Desktop będzie równie dobra. Po wszystkim przechodzimy do instalacji Dockera.

Aktualizujemy oczywiście bazę pakietów.

sudo apt-get update

Dodajemy klucz do repozytorium.

sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D

Następnie dodajemy repozytorium.

echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" | sudo tee /etc/apt/sources.list.d/docker.list

Ponownie aktualizujemy bazę pakietów

sudo apt-get update

Sprawdzamy, czy instalujemy Dockera z oficjalnego repozytorium.

apt-cache policy docker-engine

Jeżeli zobaczymy nr wersji kandydującej do instalacji np.

 Kandydująca:   17.05.0~ce-0~ubuntu-xenial

instalujemy Dockera.

sudo apt-get install -y docker-engine

I tyle. Mamy postawionego Dockera. I teraz najfajniejsze. Zarządzanie nim z poziomu wiersza poleceń jest jednak niewygodne, więc bez zbędnego wdawania się w magię poleceń w konsoli od razu instalujemy program do zarządzania kontenerami. Jest ich kilka. Ja wybrałem Portainer. Instalujemy go jako klasyczny kontener. Wydajemy  2 polecenia:

 
sudo docker volume create portainer_data
sudo docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer

Trochę potrwa zanim zostaną poprane i rozpakowane wymagane pakiety. Po zakończonej operacji wpisujemy w przeglądarkę adres IP naszego serwera i port: 9000. Tworzymy użytkownika, login i hasło.

FireShot Capture 38 - Portainer - http___192.168.2.167_9000_#_init_admin.png

FireShot Capture 36 - Portainer - http___192.168.2.101_9000_#_auth.png

I mamy pogląd naszych zainstalowanych systemów. Łączymy się lokalnie

fireshot capture 40 - portainer - http___192.168.2.167_9000_#_init_endpoint

I widzimy, że zainstalował się jeden kontener ( to oczywiście Portainer )

fireshot capture 41 - portainer - http___192.168.2.167_9000_#_home

Przechodzimy dalej i możemy już zarządzać naszym kontenerem.

fireshot capture 42 - portainer - http___192.168.2.167_9000_#_containers

Ale nie ma na co czekać. Instalujemy DOMOTICZA. Nic prostrzego. W konsoli wklejamy:

docker pull joshuacox/mkdomoticz

I teraz jako jedno polecenie

docker run --name=domoticz \
        --privileged \
        -d \
        -p 8080:8080 \
        -t joshuacox/mkdomoticz

I to wszystko. Zainstaluje nam się gotowy kontener Domoticza i wystawi usługę na porcie 8080. Jeżeli chcemy możemy zmienić port modyfikując linię na np:

-p 8009:8009 \

oraz strefę czasową na Warszawę

-e TZ=Europe/Warsaw \

Linijka –privileged \ odpowiada za prawidłowe wykrywanie urządzeń np. RFLink do portów USB. Po wszystkim w Portinerze widzimy naszego kontenerowego Domoticza.

FireShot Capture 43 - Portainer - http___192.168.2.167_9000_#_containers.png

I po wpisaniu adresu i portu w przeglądarkę możemy już zaczynać zabawę.

fireshot capture 44 - domoticz - http___192.168.2.167_8080_#_dashboard

Po naciśnięciu ikony dokumentu ( na poprzednim zdjęciu ) możemy zobaczyć logi Domoticza.

FireShot Capture 46 - Portainer_ - http___192.168.2.167_9000_#_contai.png

Kłopotliwe może być znalezienie ścieżki instalacji jeżeli byśmy chcieli np ręcznie dodawać własne pluginy czy skrypy. Ja po prostu wyszukuje plik domoticz.sh na serwerze i zapisuje sobie ścieżkę. U mnie wygląda tak:

/var/lib/docker/overlay2/01202460d31e7587f06edf80ed293633c25849f9e26dd94d6a8b0eda81c9c8a6/merge/src/domoticz

Następnie w mc ( Midnight Commander ) robię dowiązanie symboliczne do dowolnego katalogu i nie muszę dalej grzebać.

Jeżeli ktoś chciałby pobawić się Docker-em na Raspberry Pi sprawę załatwi jedno polecenie, uważam to jednak za „masło maślane”

curl -fsSL get.docker.com -o get-docker.sh && sh get-docker.sh

Nieprzebrana bazę kontenerów znajdziemy w oficjalnym repozytorium – DockerHub .

Zdaję sobie sprawę, że tylko liznąłem temat, ale miało być praktycznie. U mnie działa. W kolejnych wpisach pokaże jak bawić się Homeasstantem, OpenHub, monitorować systemy, robić kopię czy postawić Logitech Media Server. I to oczywiście wszystko w Dockerze.

Kamera UniFi Video Camera G3 w Domoticzu

Obsługa kamer nie jest priorytetem w rozwoju Domoticza, jednak w szczątkowy sposób da się z nich jako tako korzystać. Jak skonfigurować kamerę USB pisałem w  poście Obsługa kamer USB w Domoticzu. Przetestowałem już jedną z kamer, o której pisałem w artykule Obsługa kamery FOSCAM FI8918W w Domoticzu. Jest też coś dla prawdziwych majsterkowiczów, czyli jak wykorzystać stary telefon z Androidem jako kamerę. Szczegóły można znaleźć w poście Kamera z telefonu jako narzędzie do monitoringu mieszkania w Domoticzu.

Dzisiaj instrukcja dodania kolejnej kamery do Domoticza. UniFi Video Camera G3 jest bardzo dobrym urządzeniem w rozsądnej cenie. Warto było się jej bliżej przyjrzeć. Byłem posiadaczem jedynie kamery, bez rejestratora, ale nie było to problemem a jeżeli chodzi o koszty to nawet zaletą. Użytkowanie kamery w Domoticzu nie wymaga dodatkowego urządzenia lub oprogramowania aby mieć z niej podgląd.

Po podłączeniu do sieci i zasilania poprzez Poe możemy praktycznie już z niej korzystać. Pomocne będzie tu rozszerzenie do przeglądarki Chrome Ubiquiti Device Discovery Tool, dzięki któremu znajdziemy w sieci naszą kamerę i uzyskamy niezbędne informacje konfiguracyjne do dalszej pracy.

fireshot capture 3 - unifi video - http___192.168.2.152_login

Po zainstalowaniu rozszerzenia i zalogowaniu się ( domyslnie: ubnt/ubnt ) zobaczymy listę naszych kamer w sieci lokalnej.

unnamed-1.png

Po kliknięciu na adres kamery w nowym oknie zobaczymy podgląd obrazu.

FireShot Capture 5 - UniFi Video - http___192.168.2.152_camera_config.png

Ustawiamy Mode: Standalone

fireshot-capture-26-unifi-video-how-to-perform-rtsp-dire_-https___help.ubnt_.com_hc_en-us_art.png

I po prawej stronie widzimy RTSP URL, który potrzebny będzie nam do wstawienia w Domoticzu.

fireshot capture 28 - unifi video - how to perform rtsp dire_ - https___help.ubnt.com_hc_en-us_art

W konfiguracji kamery wstawiamy dane jak poniżej. Najważniejszy jest : Adres URL grafiki.

FireShot Capture 6 - Domoticz - http___192.168.2.101_9009_#_Cam.png

Przy testowaniu połączenia nie pojawia się obraz z kamery ale już w liście kamer mamy go widocznego.

FireShot Capture 8 - Domoticz - http___192.168.2.101_9009_#_Cam.png

I tyle. Klikamy na miniaturkę kamery i mamy podgląd na żywo  z kamery  UniFi Video Camera G3 w Domoticzu.

fireshot capture 9 - domoticz - http___192.168.2.101_9009_#_cam

Ps. Jak wysłać zdjęcie z kamery jako załącznik w mailu pisałem na końcu posta  Obsługa kamery FOSCAM FI8918W w Domoticzu.

Miłego podglądania.

Przełącznik Blue50 w Domoticzu.

Dzięki uprzejmości sklepu houseiq otrzymałem do przetestowania ciekawy przełącznik marki Blue50. Urządzenie to posiada wszystkie zalety sytemu Sonoff i jest z nim w 100 % kompatybilne, zapewniając kompaktowe gabaryty i równie łatwą integrację z Domoticzem. Wymiary urządzenia 7.6*5.2*2.4 cm. Do wyboru mamy różne wersje maksymalnego natężenia prądu – od 10A do nawet 30A. Możemy wybrać też model z dodatkowa obsługą  RF 433 MHz. Przełącznik wyposażony jest w skręcane śrubą złącza, diodę stanu oraz przycisk sterowania/resetowania/ustawiania. Podłączenie urządzenia jest banalnie proste.

 

Możemy tym przełącznikiem sterować przy pomocy dedykowanej do Sonoff aplikacji eWelink, jednak  można też wgrać inne oprogramowanie lecz nie jest to takie proste jak w przypadku SonoffPOW. Polecam zamówić urządzenie z wgraną np. Tasmotą aby dodać je do Domoticza. Usługą taka można zamówić od ręki w houseiq Jakby ktoś chciał spróbować samodzielnego falshowania, wygląda to mniej więcej tak.

image001

Tasmotę konfigurujemy w standardowy sposób ( jak tu ). Wybieramy Sonoff Basic i cieszymy kolejnym urządzeniem w systemie.

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

Sterowanie dekoderem NC+ z Domoticza

Jakiś czas temu postanowiłem dodać do mojego systemu telewizor Sony Bravia.  Po wielu próbach podałem się. Mój model ma już swoje lata i  niestety nie ogarnia „złożoności protokółów komunikacji” z Domoticzem. Wpadłem jednak na plan aby spróbować zmusić do współpracy dekoder nc+. I tu już poszło lepiej. Może nie idealnie, ponieważ mam świadomość, że jest to trochę prowizorka, ale moje umiejętności na razie nie pozwalają na nic więcej. Idea jest taka, aby zmapować przyciski pilota i poprzez skrypty w pythonie wysłać je z Domoticza do dekodera. Aby nawiązać komunikację pomiędzy urządzeniami potrzebujemy skryptu w pythonie, który znalazłem na GitHub. Skrypt nie jest oczywiście mojego autorstwa. Znalazłem go tu. Autorem jest HubertReX, dla którego dziękuję. W pliku mamy zmapowane przyciski pilota nc+. Uzupełniamy dane:

HOST = „ip dekodera nc+”
PORT = 8080
UUID = „12341234-1234-1234-1234-abcabcabc”

Zagadkowe wydawać się może UUID. Aby je znaleźć należy, po podłączeniu dekodera do sieci, w przeglądarce internetowej wpisać komendę:

http://<ip dekodera nc+>:8080/upnpdev

Otrzymamy taki mniej więcej log:

FireShot Capture 15 - UPnP devices list - http___192.168.2.77_8080_upnpdev_.png

Mając już wszystkie niezbędne dane możemy przejść do najważniejszego, czyli konfiguracji Domoticza. Ja dodałem sobie 2 kafelki. W pierwszym ustawiłem typ przełącznika na selektor i wybrałem opcje wyłączenia dekodera, wyciszania i zmiany głośności.

FireShot Capture 16 - Domoticz - http___91.245.83.80_9009_#_Devices_153_LightEdit

FireShot Capture 14 - Domoticz - http___91.245.83.80_9009_#_LightSwitches

Miałem duże problemy aby wpisać jako akcje wyborów polecenia pythona. Obszedłem to w taki sposób, że napisałem oddzielne skrypty w bashu dla każdej akcji i ich lokalizacje podałem w Domoticzu. Poniżej skrypt o nazwie mute.sh wyciszający dźwięk.

#! /bin/sh
/usr/bin/python /home/domoticz/domoticz/scripts/send_key2ncplus.py MUTE

Dobrze byłoby jeszcze dodać sterowanie programami. Robimy to analogicznie. Jako, że skrypt emuluje naciśnięcie przycisków pojawia się mały problem przy programach o wielocyfrowych numerach. Z tym poradziłem sobie modyfikując skrypt w bashu. Poniżej skrypt uruchamiający program DOMO+.

 
#! /bin/sh 
/usr/bin/python /home/domoticz/domoticz/scripts/send_key2ncplus.py 2
/usr/bin/python /home/domoticz/domoticz/scripts/send_key2ncplus.py 3

FireShot Capture 17 - Domoticz - http___91.245.83.80_9009_#_Devices_154_LightEditFireShot Capture 15 - Domoticz - http___91.245.83.80_9009_#_LightSwitches

Powyżej obraz selektora z dodanymi programami tvn24, HGTV i DOMO+.

Sterowanie działa bardzo fajnie. Cała jego siła tkwi w zbudowanych scenach i zdarzeniach.  Pomimo delikatnej prowizorki tego rozwiązania na razie ze mną zostaje. Jeżeli, ktoś ma pomysł jak wyeliminować skrypty w bash i dodać bezpośrednio polecenia pythona w selektorze proszę o radę w komentarzach.

Jeszcze tańsza wersja odtwarzacza sieciowego mediów na bazie Raspberry Pi.

Na moim blogu coraz rzadziej pojawiają się wpisy dotyczące bezpośrednio RasberryPi. Wynika to z tego, że dosyć mocno poszedłem w rozwój automatyki domowej i Domoticza i malinka jest dla mnie tylko bazą do dalszego rozwoju mojego systemu. Nadal zajmuje eksponowane miejsce i z ochotą wracam do zaniechanych z braku czas projektów. Jeden z nich, o roboczej nazwie „Muzyka w każdym pokoju” cały czas rozwijam. W poprzednich wpisach o Volumio i HiFiBerry już pisałem. Jak można w nich przeczytać wyjście dźwięku z mini jack w raspberry jest za słabe i potrzebne są aktywne głośniki, a dobry DAC kosztuje od 100 zł w górę. Dla kilku pokoi robią się nie małe pieniądze. Ceny raspberrypi nie liczę ponieważ przez poprzedni rok nazbierałem ich „kilka” i czekają na wykorzystanie. Po kilku nieudanych próbach znalezienia tańszego wzmacniacza znalazłem w końcu coś takiego.

htb1nwt1zkcwbunjy0faq6xulxxaj.jpg

Jest to dwukanałowy 6W wzmacniacz z wyjściem mini jack. Kupiłem go tu. Cena poraża. Nie wierzyłem szczerze powiedziawszy że zadziała. Podłączenie jest dziecinnie proste. Zasilanie 5V i GDN z RaspberryPi do gniazda obok czerwonej diody, głośniki do zacisków z lewej i wyjście dźwięku z malinki do wejścia w urządzeniu. Musi działać. Potencjometr reaguje bardzo płynnie, nie słychać trzasków i przeskoków. Miałem stare głośniki od wieży i doczekały się w końcu swojej drugiej szansy. Wersja na roboczo wygląda tak.

Do budowy mojego projektu wykorzystałem Logitech Media Server z odtwarzaczami  piCorePlayer. Jako że miałem już 2 odtwarzacze na bazie RaspberryPi Zero i HiFiBerry MiniAmp działające w oparciu o Volumio postanowiłem ten najnowszy wpiąć w sieć i stworzyć multi-room. Logitech Media Server zainstalowałem na tej samej maszynie na której chodzi Domoticz. Na razie nic się nie gryzie. Zobaczymy jak będzie dalej. Dla tych, którzy stawiają LMS na Raspbianie polecam wpis Cezara . Tam są wszystkie szczegóły. U mnie Domoticz chodzi na Ubuntu Server, więc instalacja Logitech Media Server sprowadzała się do pobrania i zainstalowania paczki ze strony http://downloadsorigin.slimdevices.com/LogitechMediaServer_v7.9.0/ . Po restarcie odpalamy server podając nasze IP i port 9000. Na malinkach, które będą odtwarzaczami wypalamy piCorePlayer. I tyle.

FireShot Capture 4 - Logitech Media Server - http___192.168.2.214_9000_

FireShot Capture 5 - Logitech Media Server - http___192.168.2.214_9000_

Oczywiście możemy użyć aplikacji Squeezer oraz obsłużyć wszystko z Domoticza.

Screenshot_20180909-142451.jpg

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

Audiofilski system to to nie jest, ale nie taki nie taki miał być. Myślę, że pomysł może się przydać dla tych, u których w szufladzie przewalają się zapomniane malinki a nie ma pomysłu a zwłaszcza funduszy na ich zagospodarowanie. Moim zdaniem zakup tego wzmacniacza to jeden z lepszych pomysłów na wydanie 2.5 $.

 

 

 

 

 

 

 

Obsługa zdarzeń w Domoticzu przez SMS

Możliwości komunikacyjnych Domoticz ma bardzo dużo, od maila, poprzez powiadomienia na telefon Pushbullet czy Pushover, kombajn IFTTT czy komunikator Telegram. W takiej ilości możliwości komunikacja SMS wydaje się już trochę archaiczna,  jednakże jak dla mnie warta zastosowania. Mam np. piec centralnego ogrzewania działający na GSM, który ma możliwość obsługi przy użyciu komend SMS. Dzięki temu mogę z głównego Domoticza uruchamiać i wyłączać urządzenie jednym przyciskiem, korzystając z planów czasowych i zdarzeń.

W Domoticzu domyślnie jest dodana usługa SMS Clickatell, która powinna odpowiadać za powyższą komunikację. Jednak jak to często bywa, nie jest tak łatwo. Po długich zmaganiach  i braku sukcesu w uruchomieniu doczytałem, że po zmianie API, od jakiegoś czasu usługa nie jest dostępna dla nowych użytkowników. Pozostawiono ją w systemie, iż podobno cały czas działa ze starymi kluczami. Tak łatwo nie można się jednak poddawać. Z pomocą oczywiście przychodzi LUA.

  1. Zakładanie konta w usłudze SMS Clickatell.

Bez tego się oczywiście nie obejdzie. Przechodzimy na https://www.clickatell.com/. Rejestrujemy się i logujemy.  Po zalogowaniu się w pierwszej kolejności musimy dostać się do API.

Screenshot_2018-07-23 https portal clickatell com.png

2. Uruchomienie usługi

Wchodzimy w zakładkę CONNECT.

Bez tytułu

Otrzymaliśmy API key. To jednak tylko początek. Usługa jest oczywiście płatna. Na szczęście jest też opcja testowa. Pozwala na wysłanie chyba 30 SMS dziennie i jak na razie nie zauważyłem, żeby była ograniczona czasowo. Mam ją już uruchomioną 2 miesiące i nadal działa. Ilość SMS jest dla mnie wystarczająca, więc nie planuję przejścia na wersję płatną. Dodajemy więc nasz telefon testowy.

Bez tytułu1.png

Bez tytułu2

Na podany numer telefonu dostaniemy kod SMS, który wpisujemy w kolejnym oknie, wpisujemy i mamy dodany nasz testowy numer telefonu. Następnie ustawiamy nową integracje.

Bez tytułu3

Przeklikujemy do końca, jeżeli domyślne ustawienia nam pasują. I już możemy przetestować czy wszystko działa.

Bez tytułu12.png

Testujemy naszą integracje.

Bez tytułu6.png

Wybieramy podaną wcześniej integracje, numer testowy telefonu ( doda nam się automatycznie ) i wpisujemy tekst wiadomości. Bez tytułu7.png

I pięknie. Przyszedł SMS o treści TEST, na podany wcześniej numer. Jesteśmy w domu. Teraz przechodzimy do Domoticza.

3. Konfiguracja Domoticza.

Pozostaje mam tylko napisać skrypt LUA, który wyślę nam SMS po zmianie stanu przełącznika. Tworzymy standardowy przełącznik w systemie.

Bez tytułu8

W Zdarzeniach tworzymy skrypt LUA.

 
commandArray = {}
if (devicechanged['SMS'] == 'On') then
os.execute ('curl "https://platform.clickatell.com/messages/http/send?apiKey=xxxxxxxxxxxxxxxxxxx==&to=48xxxxxxxx&content=Przełacznik włączony"')
end
return commandArray 

Pamiętajmy aby nazwa urządzenia była prawidłowa. A skąd wziąć „curl” ? Wygenerował nam się w okienku CURL podczas testowania integracji ( 3 obrazy wyżej ).

Teraz po naciśnięciu przełącznika, zmienia się jego stan na ON i wykonywana jest komenda curl wysyłająca SMS na testowy numer telefonu o treści podanej za &content=. Oczywiście możemy treść modyfikować już ze skrypcie. Nie ma konieczności testowania integracji za każdym razem.

Przełącznik możemy wykorzystać w bardziej złożonych zdarzeniach np. jeżeli temp. w salonie spadnie poniżej 18 st. to włącz przełącznik SMS. Ustawiamy tylko odpowiednią treść „Temperatura w salonie za niska” i mamy powiadomienie SMS o zmianie temperatury w salonie.

Dla mnie bomba.

Xiaomi Aqara Smart Light Switch Wireless. Włącznik światła w Domoticzu.

Żarówki Yeelight, które bardzo dobrze się u mnie sprawują ( konfiguracje i integracje z Domoticzem opisałem tu ) mają jedną, podstawową wadę. Muszą być cały czas zasilane. Jeżeli są umieszczone w żyrandolu w salonie, trzeba cały czas uważać aby nie wyłączyć światła włącznikiem ściennym. Rozwiązaniem jest zastosowanie bezprzewodowego włącznika ściennego typu dzwonkowego. Oczywiście Xiaomi właśnie takie ma w ofercie. Przypadek ?

1502825220112444678.JPG

Ja kupiłem przycisk podwójny, trzyfunkcyjny. ( 1 przycisk, 2 przycisk i naciśnięcie obu ) . Jest to wersja WIFI, zasilana bateryjnie ( podobno czas działania baterii to 2 lata ). Instalacja jest bardzo prosta. Parujemy urządzenie z MiHome zgodnie z podpowiedziami w aplikacji ( podczas parowania naciskamy dłużej jeden z przycisków ). Następnie w aplikacji przypisujemy odpowiednie zdarzenia.

Przechodzimy do urządzenia głównego Getaway i sekcji Automation.

 

Sprawdzamy czy wszystko działa i przechodzimy do Domoticza. Najpierw musimy jednak przygotować instalacje. Ja postanowiłem odkręcić włącznik i na jego miejsce przykleić Xiaomi Aqara Smart Light Switch Wireless.

 

Aby żarówki były cały czas zasilane musimy połączyć kable w puszce. U mnie są trzy więc możliwości nie jest za dużo. Po tej czynności żarówka powinna świecić w sposób ciągły. Ukryłem przewody w puszce i nakleiłem ( przy pomocy dołączonej taśmy ) przełącznik.

img_20171118_111458.jpg

Tak wygląda na ścianie.

Jeżeli mamy już inne urządzenia Xiaomi w Domoticzu system wykryje go automatycznie. Jeżeli to dopiero początek pracy z czujnikami Xiaomi zachęcam do zapoznania się z wpisem Xiaomi Smart Home Starter Kit w Raspberry Pi i Domoticzu.

FireShot Capture 11 - Domoticz - http___192.168.2.81_9090_#_Devices

W Domoticzu dodajemy zdarzenia /Konfiguracja/Więcej opcji/Zdarzenia. U mnie jest tak:

Switch On – naciśnięcie lewego klawisza

FireShot Capture 12 - Domoticz - http___192.168.2.81_9090_#_Events

Switch Off

fireshot-capture-13-domoticz-http___192-168-2-81_9090__events.png

Dodajemy do pulpitu nasz włącznik zmieniając domyślne opisy wedle uznania.

FireShot Capture 14 - Domoticz - http___192.168.2.81_9090_#_LightSwitches.png

Po aktualizacji Poziomów wyboru i Nazwy włącznika zdarzenia nie uaktualnią się automatycznie. Trzeba zaktualizować utworzone zdarzenia.

Efekt końcowy jest bardzo przyjemny.FireShot Capture 16 - Domoticz - http___192.168.2.81_9090_#_Dashboard.png

Można już wyłączyć oddzielne sterowanie dla każdej z żarówek Yeelight robiąc trochę miejsca na pulpicie.

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

Podsumowanie.

Tym sposobem możemy sterować oświetleniem na 3 sposoby: poprzez aplikacje MiHome, Domoticzem i bezpośrednio włącznikami na ścianie. Można kupić przyciski montowane bezpośrednio do puszki, ale chińskie puszki są kwadratowe i większe, więc trzeba przerabiać otwory. Plusem jednak takiego rozwiązania jest możliwość użycia normalnych żarówek. Sterowanie odbywa się wewnątrz modułu. Ja zdecydowałem się na mniej inwazyjną metodę bateryjną. Na Gearbest.com cena takiego włącznika to ok. 40 zł. Za białą żarówkę musimy dać ok 60 zł. Biorą pod uwagę, że jednym przyciskiem możemy obsłużyć 3 żarówki cena nie jest już tak zaporowa. Zamówiłem już dwa kolejne.