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.