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.

Domoticz jako wirtualny termostat sterujący komfortem cieplnym w domu

Sezon grzewczy za pasem, więc coraz częściej myślę o rozbudowie Domoticza o jakiś kompletny system starowania ogrzewaniem. Jako, że głównym źródłem ciepła jest u mnie piec elektryczny sprawa wydaje się niezbyt skomplikowana.  Można pójść w rozwiązania wysoce komercyjne jak np. termostaty NEST czy ECOBBE albo głowice termostatyczne na z-wave, ale rozmawiamy tu o wydatku przetaczającym tysiące złotych. Od czego jest jednak społeczność Domoticza ? Skoro mam już czujniki temperatury w każdym pokoju, to wystarczy podpiąć piec do przełącznika i skonfigurować Domoticza aby czuwał nad włączeniem pieca w określonym zakresie temperatur. Można zrobić to na tzw. piechotę i zbudować zdarzenia w LUA ale fajnie byłoby mieć coś w miarę kompletnego. Okazuje się, że nie ma nic prostszego. Ameryka została już odkryta i powstał Smart Virtual Thermostat python plugin for Domoticz napisany przez użytkownika Logread.

Plugin możemy zainstalować poprzez Python Plugin Manager. Jak to zrobić pisałem tu, albo bezpośrednio z github.com.

cd plugins
mkdir SVT
sudo apt-get update 
sudo apt-get install git 
git clone https://github.com/999LV/SmartVirtualThermostat.git SVT 
cd SVT 
sudo chmod +x plugin.py 
sudo /etc/init.d/domoticz.sh restart

Przechodzimy do katalogu z pluginami, tworzymy katalog SVT, aktualizacja i instalujemy git ( jeżeli jeszcze go nie mamy ). Następnie ściągamy skrypt z githuba, przechodzimy do katalogu ze skryptem i nadajemy mu odpowiednie prawa do wykonywania. Restart Domoticza i mamy sprawę załatwioną.

W zakładce /Sprzęt możemy wybrać już Smart Virtual Thermostat.

FireShot Capture 1 - Domoticz - http___192.168.2.214_9009_#_Hardware.png

Konfiguracja jest banalnie prosta ( na początku ). Podajemy kolejno: adres IP Domoticza, port, użytkownika i hasło ( jeżeli mamy ustawione ), idx czujnika temperatury wewnętrznej, idx czujnika temperatury zewnętrznej oraz idx przełącznika uruchamiającego piec. Bardzo praktyczną rzeczą jest fakt, iż możemy dodać kilka czujników temperatury np. w salonie, sypialni, łazience itp. oddzielając je przecinkiem a ich wartości będą uśredniane. Tak samo z czujnikiem zewnętrznym. Uwaga, bez czujnika temperatury wewnętrznej skrypt nie zadziała, natomiast bez czujnika zewnętrznego będzie działał. Skrypt próbuje naśladować tzw. starowanie pogodowe, które jest dostępne w nowszych piecach centralnego ogrzewania.

Sprawa ustawień komplikuje się znacznie przy dwóch ostatnich parametrach.

Wartość Apply minimum heating per cycle określa zachowanie termostatu, gdy podano minimalny parametr ogrzewania na cykl.

  1. Jeśli jest ustawione na „only when heating required” (opcja domyślna), wówczas minimalne ogrzewanie zostanie zastosowane tylko wtedy, gdy nie zostanie osiągnięta żądana temperatura. Jest to przydatne na przykład podczas napełniania kotłów centralnego ogrzewania, które mają określoną bezwładność.
  2. Jeśli ustawione na „always„, to zawsze będzie stosowane minimalne ogrzewanie w każdym cyklu ogrzewania, niezależnie od tego, czy osiągnięta zostanie żądana temperatura. Jest to na przykład przydatne w systemach ogrzewania podłogowego o bardzo wysokiej bezwładności cieplnej, gdzie lepiej jest unikać zbytniego chłodzenia podłogi, nawet jeśli ogrzewanie nie jest faktycznie potrzeb

Linia Calculation cycle, Minimum Heating time per cycle, Pause On delay, Pause Off delay, Forced mode duration  zawiera zaawansowane parametry, które mogą mieć kluczowe znaczenie dla prawidłowego działania inteligentnego termostatu wirtualnego.

  1. Calculation cycle ( cykl obliczeniowy) – jest to czas w minutach między dwoma obliczeniami termostatu. Należy go ustawić w zależności od bezwładności cieplnej fizycznego pomieszczenia i systemu grzewczego. Domyślnie 30 min.
  2. Minimum Heating time per cycle ( minimalne ogrzewanie na cykl ) – jest to minimalny %, w którym grzejnik musi być włączony w danym okresie obliczeniowym. Wartość może wynosić od 0 do 100.
  3. Pause On delay ( opóźnienie włączenia pauzy ) – jest to liczba minut, przez którą musi być włączony przełącznik „Pauza”, zanim termostat rzeczywiście wyłączy ogrzewanie. Jest to bardzo przydatne, aby umożliwić krótkie otwarcie drzwi, a następnie ich ponowne zamknięcie bez żadnego wpływu na termostat, a pozostawienie otwartych drzwi przez dłuższy czas spowodowałoby wyłączenie ogrzewania przez termostat, aby uniknąć marnowanego ciepła.
  4. Pause Off delay ( opóźnienie wyłączenia pauzy ) – parametr odwrotny od poprzedniego, liczba minut, przez którą przełącznik „Pause” musi być wyłączony, zanim termostat powróci do normalnego działania.
  5. Forced mode duration ( czas trwania trybu wymuszonego) – to czas w minutach, w którym termostat wymusi ogrzewanie po wybraniu trybu „forced”. Po tym czasie aktywny będzie tryb „Auto”.

Na początku zostawiłem domyślne ustawienia.

Po uruchomieniu skryptu zostanie utworzonych 6 urządzeń:

  • Thermostat Control ( Kontrola termostatu ) – ustawia status termostatu (wyłączony, tryb automatyczny, tryb wymuszony)

FireShot Capture 2 - Domoticz - http___192.168.2.214_9009_#_Dashboard.png

  • Thermostat Mode ( Tryb termostatu ) – ustawia tryb sterowania temperaturą (normalny, oszczędny) za pomocą odpowiedniej wartości zadanej. Można to wykorzystać do przestawiania termostatu na tryb dzienny i nocny.

FireShot Capture 3 - Domoticz - http___192.168.2.214_9009_#_Dashboard.png

  • Thermostat Pause ( Pauza termostatu ) – jeśli jest ustawionyana” Wł. „, wymusi pracę termostatu w trybie pauzy po zadanym czasie  i odwrotnie, wznowi normalną pracę, jeśli jest ustawiona na” Wył.” Może to być przydatne, aby zatrzymać ogrzewanie, gdy okno lub drzwi są otwarte.

FireShot Capture 4 - Domoticz - http___192.168.2.214_9009_#_Dashboard.png

  • Setpoint Normal – ustawia temperaturę docelową dla trybu normalnego. Panel ustawień temperatury wyświetla się po naciśnięciu płomyka.

FireShot Capture 5 - Domoticz - http___192.168.2.214_9009_#_Dashboard.png

FireShot Capture 9 - Domoticz - http___192.168.2.214_9009_#_Dashboard.png

  • Setpoint Economy – ustawia temperaturę docelową dla trybu ekonomicznego.

FireShot Capture 6 - Domoticz - http___192.168.2.214_9009_#_Dashboard.png

FireShot Capture 8 - Domoticz - http___192.168.2.214_9009_#_Dashboard.png

  • Thermostat Temp – wyświetla bieżącą temperaturę otoczenia (średnia z wartości wewnętrznych czujników temperatury, podana w parametrach sprzętowych) To urządzenie jest domyślnie” ukryte ” i można je dodać do panelu Domoticza z menu /Urządzenia.

FireShot Capture 7 - Domoticz - http___192.168.2.214_9009_#_Dashboard.png

U mnie wygląda to tak.

FireShot Capture 10 - Domoticz - http___192.168.2.214_9009_#_Dashboard.png

Jak dla mnie genialna robota. Nic więcej mi nie potrzeba. Termostat przetestowany, robi co ma robić. Pobawię się i potestuje parametry pracy i myślę, że przeżyje zimę we względnym komforcie cieplnym.

Moduł WiFi z ESP8266 (NodeMCU) i ESP Easy. Bezprzewodowe czujniki i przekaźniki w Domoticzu.

W moim systemie od dłuższego czasu prym wiodą czujniki i przełączniki bezprzewodowe.  Na blogu testowałem kilka takich rozwiązań  jak np.  gniazdka Orvibo czy Xiaomi Smart Home Starter Kit. Do odczytu temperatury, wilgotności, natężenia światła czy przełączników stosuje moduły WiFi z ESP8266 (NodeMCU) z oprogramowaniem ESP Easy.  Ich niewątpliwą zaletą jest łatwość programowania, kompletny firmware i nie ukrywam niska cena. Nie do przecenienia jest stabilność odczytów. Pierwsza płytka pracuje u mnie w systemie ponad rok bez przerwy, monitorując pogodę na zewnątrz.

Poradników i przewodników jak zintegrować płytki NodeMCU z Domoticzem jest w sieci dużo, jednak i ja postanowiłem opisać swoje doświadczenia. Myślę, że właśnie to rozwiązanie stanie się u mnie wiodącym.

  • Wybór odpowiedniej płytki.

Nie wdając się w szczegóły na rynku mamy płytki ESP8266 NodeMCU dwóch generacji. Od razu polecam urządzenia drugiej generacji. Jednak i one różnią się między sobą. Na pierwszy rzut oka możemy je rozpoznać po tym, iż wersja V2 jest węższa od V3 i na płytce stykowej pozostawia po jednym rzędzie otworów. Jest jednak i poważniejsza różnica. Leży ona w konwerterze USB-UART. NodeMCU w wersji V3 został wyposażony w układ CH340, natomiast V2 w Silicon Labs CP2102. Ten drugi jest lepiej obsługiwany przez system Windows z uwagi na dostępność sterowników. Ja mam płytki w obu wersjach i nigdy nie miałem z nimi problemów, jednak na początek polecam wersję V2.

IMG_20180120_104432.jpg

  • Programowanie płytki w systemie Windows

W pierwszej kolejności pobieramy najnowsze oprogramowanie ESPEasy_v2.0. Jest to wersja rozwojowa, ale już bardzo stabilna. Wypakowujemy archiwum, podłączamy płytkę do portu USB i uruchamiamy plik ESPEasy_v2.0.

Screenshot_20180120_144640

 

Jeżeli płytka zostanie poprawnie wykryta ( u mnie na porcie COM4) wybieramy firmware ( w zależności od ilości pamięci ). Dla płytki  ESP8266 NodeMCU V2 i V3 tak jak na zdjęciu powyżej. Naciskamy Flash. Kropki świadczą o postępie programowania. Na koniec otrzymujemy komunikat Flash Complete. Jeżeli pojawią się problemy z wykryciem płytki polecam zainstalowanie Arduino IDE.

  • Podłączenie płytki do sieci Wifi

Odłączamy płytkę od komputera i podłączamy do zasilania. W tym momencie urządzenie powinno zostać wykryte  jako dodatkowa sieć ESP_Easy_0. Płytka w tym momencie pracuje w trybie AP. Logujemy się do sieci hasłem configesp. Po wpisaniu w przeglądarkę adresu 192.168.4.1 otrzymamy możliwość dodania urządzenia do naszej sieci.

Screenshot_20180120_144148

Po kilkunastu sekundach urządzenie dostanie adres IP w naszej sieci.

Screenshot_20180120_144306

  • Konfiguracja ESPEasy.

Wpisujemy powyższy adres w przeglądarkę i przechodzimy do podłączenia czujników.

Screenshot_20180120_141633.png

Aby przekazać dane do Domoticza przechodzimy do zakładki Controllers.

Screenshot_20180120_152907.png

Naciskamy EDIT i wprowadzamy dane ( adres IP i port ) Domoticza. Pamiętać należy o zaznaczeniu Enabled.

Screenshot_20180120_153059.png

  • Dodanie czujników do płytki

Jako przykład pokaże jak podłączyć popularny czujnik temperatury i wilgotności DHT11.

Znalezione obrazy dla zapytania nodemcu dht11

Następnie przechodzimy do zakładki Devices. Naciskamy EDIT i wprowadzamy dane.

Screenshot_20180120_153849.png

Pamiętać należy o zaznaczeniu Enabled. Podajemy Pin do którego podłączyliśmy czujnik i IDX czujnika w Domoticzu. Jak dodać wirtualny przełącznik pisałem we wpisie.

Sprawdzamy czy widzimy odczyty.

Screenshot_20180120_155041.png

Jeżeli prawidłowo podaliśmy adres IP, port i IDX Domoticza to musi działać.

Screenshot_20180120_155337

W następnych wpisach pokażę jak podłączyć czujnik odległości HC-SR04 i prosty przekaźnik.

Obsługa urządzeń 433,92MHz w Domoticzu poprzez RFLink Gateway.

IMG_20171106_145042-1.jpg

W ubiegłym tygodniu, po wielu tygodniach rozważań nad zasadnością tej inwestycji, zamówiłem RFLINK Geteway 433.920 MHZ w Nodo-Shop.nl. Nie ukrywam, że wdrożenie do mojego systemu obsługi urządzeń komunikujących się na częstotliwości 433 Mhz planowałem od dawna. Na początku próbowałem zmierzyć się z modułami do samodzielnego montażu np. RF Link Transmitter & Receiver Module Pair i programowaniem ich ( może jeszcze kiedyś do tego wrócę ) ale brak czasu bardzo opóźniał efekt finalny. W końcu zdecydowałem się na gotowe rozwiązanie i nie żałuje. Uważam, że koszt ok 40 Euro nie jest może mały, ale na pewno wydatek ten zaoszczędzi wiele czasu i nerwów. Idąc po najmniejszej linii oporu domówiłem również usługę lutowania ( koszt 5,5 Euro ) spodziewając się dostać gotowe urządzenie i nie zawiodłem się. 

Po tygodniu dotarła do mnie z Holandii paczka z gotowymi elementami. Pozostało tylko je złożyć, przykręcić antenę i podłączyć do Raspberry Pi.

Nie ukrywam, że spodziewałem się, że wszystko ruszy „od strzału” ale nie może być za łatwo.

Dodanie RFLINK Geteway do DOMOTICZA.

Nic prostszego. W /Ustawieniach dodajemy nowy sprzęt i w zakładce /Urządzenia powinniśmy zobaczyć nasze czujniki. U nie sprzęt został wykryty na porcie /dev/ttyACM0.  U Was może być inaczej.

Screenshot_20171112_164310.png

Ja do testów użyłem termometru do prostej stacji pogodowej AURIOL. Oczywiście coś jednak poszło nie tak. System znalazł i rozpoznał bramę RFLink ale to było na tyle. Urządzenia nie znalazł ( a powinien automatycznie je dodać ). W logach pojawiło się:

2017-11-12 11:17:33.237 RFLink: Using serial port: /dev/ttyACM0

Aktualizacja RFLink firmware (R48).

Po długich poszukiwaniach rozwiązania natknąłem się na informację, że przyczyną może być stary firmware RFLinka. Aktualizacja nie okazała się zbyt trudna.

  1. Ściągamy RFLink Loader. Program jest dla systemu Windows, ale nie bądźmy ortodoksyjni. W powyższym linku jest komplet plików.
  2. Podłączamy Arduino MEGA do komputera. Ja na co dzień nie korzystam z Windowsa, więc sprawa rozbiła się jeszcze o sterowniki. Dla pewności zainstalowałem  całe Arduino IDE ( a nuż się jeszcze przyda ). Po instalacji system wykrył i rozpoznał u mnie płytkę na porcie COM 08.
  3. Teraz w RFLink Loader wybieramy plik rflink.cpp.hex ( jest w paczce z linku powyżej razem zRFLink Loader) i aktualizujemy płytkę.
  4. Po zakończonym procesie podłączamy na nowo RFLinka do Raspberry Pi.

Ponowne dodanie RFLINK Geteway do DOMOTICZA.

Jeszcze raz dodajemy nowy sprzęt w Domoticzu. Teraz przy polu /TYPE powinniśmy zobaczyć numer wersji RFLINK Geteway USB Version: ( i tu numer aktualnej wersji systemu ). Świadczy to o tym że jesteśmy na dobrej drodze. 

Screenshot_20171112_171459.png

U mnie po jakimś czasie numer wersji zniknął ale urządzenie działa nadal.

W tej chwili RFLINK Geteway spróbuje wykryć uruchomione urządzenia komunikujące się w paśmie 433,92MHz. Na forach znalazłem informacje, że proces ten za pieszym razem może trwać nawet godzinę, ale u mnie termometr w zakładce / Urządzenia pojawił się w kilka sekund.

Screenshot_20171112_171901.png

Ciekawostką jest, że RFLINK Geteway sczytał jeszcze kilka innych urządzeń, ale wolałem nie drażnić sąsiada dodając jego gniazdka i stacje pogodową do swojego Domoticza.

Efekt końcowy.

Screenshot_20171112_172151.png

Screenshot_20171112_172218.png

Podsumowanie.

Uważam, że pomimo konieczności aktualizacji firmware ( przy takiej cenie jest to ewidentny minus ) urządzenie działa bardzo sprawnie i warte jest zakupu. Jest to na pewno alternatywa dla tańszych  rozwiązań do samodzielnego programowania. Wybór, na którą wersję się zdecydować, pozostawiam Wam.

Monitoring wilgotności roślin doniczkowych przy pomocy Xiaomi Mi Plant Flowers Tester i DOMOTICZA.

Original-for-Xiaomi-Mi-Flora-Monitor-Digital-Plants-Grass-Flowers-Soil-Water-Light-Smart-Tester-Sensor

Jakiś czas temu skutecznie udało mi się zintegrować Xiaomi Mi Smart Home Gateway 2 z DOMOTICZEM. Zapraszam do lektury wpisu pod linkiem. W zamówionej paczce przyszedł także czujnik wilgotności gleby, natężenia światła, temperatury i przewodności elektrycznej gleby – Xiaomi Mi Plant Flowers Tester. Długo nie miałem zacięcia, aby się do nie go zabrać. Wynikało to głównie z tego powodu, iż czujnik komunikuje się przez Bluetooth Low Energy a na moim Rassberry Pi 2 nie był skonfigurowany Bluetooth. W końcu jednak podjąłem wyzwanie i zadanie okazało się w miarę proste w realizacji.

Na początku kilka słów o samym urządzeniu. Jest to tani czujnik Bluetooth Low Energy mierzący jak napisałem powyżej poziom wilgotności gleby, natężenia światła, temperatury i przewodności elektrycznej gleby w doniczce. Zasilany jest standardową baterią zegarkową 2032, która powinna wystarczyć na rok pracy przy ustawieniu codziennych odczytów. Znalazłem informacje, że na Raspberry Pi 3 powinien działać bez problemu, dla wersji Raspberry Pi 2 wszystko zależy od użytego adaptera. Zanim się napracujemy proponuje ( ja tak zrobiłem ) przeprowadzić instalacje na czystym Raspbianie i w trybie graficznym sprawdzić czy działa adapter Bluetooth i czy prawidłowo wykrywany jest czujnik. Poniżej pokaże jednak jak przeprowadzić instalacje krok, po kroku. Warto nie iść na skróty. U mnie ten sposób zadziałał bez żadnych problemów. Są dwa sposoby integracji czujnika – poprzez skrypt w Pythonie oraz serwer MQTT. Ja skorzystałem z pierwszego sposobu.

Przygotowanie DOMOTICZA.

Na początku tworzymy w DOMOTICZU 4 wirtualne ( dummy ) sensory.

  1. typ procent (wilgotność)
  2. typ temperatura
  3. typ natężenie światła
  4. typ custom sensor (przewodności elektrycznej gleby ), jednostka µs/cm

Screenshot_20170726_093240

Instalacja Bluetooth

Do obsługi czujnik potrzebujemy Bluez przynajmniej w wersji 5.3. Najlepiej jednak skompilować Bluez w wersji 5.44, które ma poprawione błędy z obsługą Bluetooth Low Energy. Brzmi groźnie ale poszło bez problemów. Na początku instalujemy zależności:

sudo apt-get install libglib2.0-dev libdbus-1-dev libical-dev libreadline-dev libudev-dev

Kompilujemy Bluez-5.44

cd /home/pi
wget http://www.kernel.org/pub/linux/bluetooth/bluez-5.44.tar.gz
tar -xvf bluez-5.44.tar.gz
cd bluez-5.44
sudo ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --enable-tools --disable-test --disable-systemd --enable-deprecated
sudo make all
sudo apt-get install python-bluez python-requests

Następnie kopiujemy Gatttool do odpowiedniego katalogu.

sudo cp attrib/gatttool /usr/bin/

U mnie ( na najnowszym Raspbianie ) do katalogu /usr/bin. Podobno, w zależności od dystrybucji może być konieczność skopiowania Gatttools do

sudo cp attrib/gatttool /usr/bin/

Wykonujemy restart.

Integracja czujnika z DOMOTICZEM przy pomocy skryptu Pythona.

Na wszelki wypadek sprawdzamy, czy mamy zainstalowanego git-a.

sudo apt-get install -y git-core

Pobieramy skrypt obsługujący czujnik i kopiujemy go do odpowiedniej lokalizacji.

cd ~ && git clone https://github.com/Tristan79/miflora.git
cp -R ~/miflora/ ~/domoticz/scripts/python/miflora

Pobieramy Python3 i  instalujemy wymagane biblioteki do obsługi Bluetooth.
sudo aptitude install python3 python3-pip
sudo pip3 install pygatt
sudo pip3 install requests

Znajdujemy MAC adres czujnika.

Uruchamiamy  Bluetooth LE wykonując po kolei

sudo tools/btmgmt le on
sudo tools/btmgmt connectable on
sudo tools/btmgmt power on

i skanujemy w poszukiwaniu urządzeń

sudo hciconfig hci0 down 
sudo hciconfig hci0 up
hciconfig
sudo hcitool lescan

efekt poniżej:

Screenshot_20170802_162228.png

Zapisujemy adres, który wykorzystamy do edycji pliku domoticz.py

Edytujemy skrypt domotic.py

Otwieramy pobrany wcześniej skrypt.

~/domoticz/scripts/python/miflora $ sudo nano domoticz.py

Edytujemy w dwóch miejscach ( wstawiamy swój adres DOMOTICZA i port ):

Screenshot_20170802_162846.png

oraz na samym końcu pliku:

Screenshot_20170802_162915.png

adres urządzenia zwrócony przez komendę sudo hcitool lescan oraz numery wirtualnych czujników DOMOTICZA utworzonych na poczatku.

Testujemy czy wszystko działa:

~/domoticz/scripts/python/miflora $ sudo python3 domoticz.py

Screenshot_20170802_163552.png

Efekt końcowy

Screenshot_20170802_163823.png

Ustawienie odczytów co 12 godzin

Producent obiecuje, iż przy odczytach co 12 godzin bateria wytrzyma przynajmniej rok. Sprawdźmy. Otwieramy Crona : sudo crontab -e i na koncu dodajemy wpis.

0 0,12 * * * /usr/bin/python3 /home/pi/domoticz/scripts/python/miflora/domoticz.py

Po restarcie możemy spać spokojnie. Kwiatki zawsze będą miały mokro. Miłej zabawy.

Przesyłanie danych z Raspberry Pi do serwisu ThingSpeak

W przypadku , gdy zachodzi potrzeba, udostępnienia określonego, niewielkiego zakresu danych pobranych z czujników Raspberry Pi, stawianie całego Domoticza wydaje się bezzasadne. Z pomocą przychodzą serwisy gromadzące i analizujące dane takie jak np. popularny https://thingspeak.com/. Dzięki temu portalowi możemy w prosty sposób uruchomić np. termometr, wysłać dane na serwer, wizualizować i śledzić na bieżąco zmiany. Serwis ThingSpeak to także, albo głównie , narządzie służące do analizy przesłanych danych, ale o tym może innym razem.

Założenie konta w serwisie ThinkSpeak

Screenshot_20170130_131332.png

screenshot_20170130_131359

Po potwierdzeniu adresu email logujemy się na konto.

screenshot_20170130_131429

Dodanie kanału do gromadzenia danych

Następnie zakładamy nowy kanał, do którego będziemy wysyłać dane.

screenshot_20170130_131533

Na próbę postanowiłem przesłać dane o temperaturze wewnętrznej Raspberry Pi. Wypełniamy poniższe pola.

Screenshot_20170130_131728.png

Pamiętajmy o zapisaniu danych.

Pobranie klucza API

Przechodzimy do swojego kanału i wybieramy „API Keys”. Na początku będziemy potrzebowali  klucza „Write”

Screenshot_20170131_163842.png

Screenshot_20170131_163908.png

Skrypt przekazujący dane

Teraz możemy przejść do modyfikacji skryptu przesyłającego dane. Autorem kodu jest ‚skunda’.


#!/usr/bin/env python
import httplib, urllib
import time
sleep = 60 # ile sekund ma upłynąć pomiędzy odczytami
key = 'XXXXXXXXXXXXXXXXX'  # klucz API do kanału Thingspeak 

def thermometer():
    while True
        temp = int(open('/sys/class/thermal/thermal_zone0/temp').read()) / 1e3
        params = urllib.urlencode({'field1': temp, 'key': key})
        headers = {"Content-typZZe": "application/x-www-form-urlencoded","Accept": "text/plain"}
        conn = httplib.HTTPConnection("api.thingspeak.com:80")
        try:
            conn.request("POST", "/update", params, headers)
            response = conn.getresponse()
            print temp
            print response.status, response.reason
            data = response.read()
            conn.close()
        except:
            print "connection failed"
        break
if __name__ == "__main__":
        while True:
                thermometer()
                time.sleep(sleep)

Informacje jak ustawić uruchamianie skryptu przy starcie można znaleźć tu.

Wizualizacja danych

Po uruchomieniu skryptu powinniśmy otrzymać wykres z naszymi danymi.

Screenshot_20170130_131755.png

Aplikacje na Androida.

Jeżeli zależy nam na byciu na bieżąco z danymi proponuje użyć aplikacji na telefon. Polecam dwie z nich ThingView oraz IoT ThingSpeak Monitor Widget. Do tego drugiego programu potrzebowali będziemy klucza „Read” z zakładki „API Keys” kanału.

screenshot_20170131-175648

Prognoza pogody z serwisów internetowych w Raspberry Pi i systemie DOMOTICZ.

Jeżeli nie posiadamy jeszcze zestawu czujników a chcielibyśmy dodać do Domoticza odczyty temperatury, wilgotności, ciśnienia atmosferycznego i inne, z pomocą przychodzą nam serwisy pogodowe, dostarczające informacje dla konkretnych lokalizacji. W systemie jest zaimplementowana obsługa kilku z nich. Ja sprawdziłem:

  • Weather Underground
  • Dark Sky
  • Accuweather

                   Znaleziony obraz            Znaleziony obraz          Znalezione obrazy dla zapytania dark sky weather

Generalnie sposób integracji urządzeń ( w Domoticzu serwisy pogodowe funkcjonują jako urządzenia ) jest bardzo podobny dla każdego z nich. Sprowadza się do dodania urządzenia do systemu, podania klucza API i lokalizacji. Najtrudniejszą rzeczą jest zdobycie klucza API. W każdym z serwisów należy założyć konto i pobrać ciąg znaków odpowiadający za dostęp do danych. Poniżej opiszę gdzie szukać API dla powyższych serwisów.

Weather Underground

Jest to chyba najpopularniejszy z serwisów udostępniający najwięcej danych pogodowych. Aby zdobyć API wchodzimy na stronę https://www.wunderground.com/member/registration i zakładamy darmowe konto. Następnie wybieramy z menu górnego More/Weather API for Developers i w zakładce Key Settings odczytujemy nasze Key ID. Możemy jeszcze sprecyzować nazwę projektu, w którym będziemy wykorzystywali dane oraz jego stronę www. Zapisujemy dane celem wykorzystania w konfiguracji Domoticza. Potrzebujemy jeszcze lokalizację. Będzie to nazwa naszego miasta.

Dark Sky

Przechodzimy na stronę https://darksky.net/dev/ i zakładamy darmowe konto. Po zalogowaniu się pobieramy Your Secret Key. Jako lokalizacje podajemy współrzędne naszego miasta ( nie nazwę ).

AccuWeather

Przechodzimy na stronę http://developer.accuweather.com/ i zakładamy darmowe konto. Dodajemy aplikacje MY APPS. Dostajemy API Key. Lokalizacja będzie nazwą naszego miasta.

Integracja serwisów pogodowych z Domoticzem.

Wykonujemy analogicznie dla wszystkich serwisów. Poniżej przedstawiam dodanie serwisu na przykładzie Weather Underground.

zrzut ekranu130_1.png
Weather Underground

W zakładce Urządzenia otrzymamy odczyty UV, temperatury, wilgotności, ciśnienia atmosferycznego, siły i kierunku wiatru, widoczności, opadów, promieniowania słonecznego dla zadanej lokalizacji.

screenshot_20161218_155843

Ciekawostką jest zintegrowany serwis pogodowy znajdujący się w aplikacji. Po naciśnięciu przycisku Prognoza zostaniemy przeniesieni na  oddzielną stronę gdzie po podaniu lokalizacji możemy sprawdzić pogodę.

screenshot_20161218_160232Podsumowując polecam serwis Weather Underground. Dark Sky oferuje mniej odczytów, natomiast AccuWeather ma tylko wersje trial ( 180 dni ) i był dla mnie najtrudniejszy w konfiguracji.

Podłączenie czujnika temperatury i wilgotności DHT-11/DHT22 do Raspberry i DOMOTICZA

Znalezione obrazy dla zapytania dht11 dht22

Poniżej przedstawię sposób integracji jednego z bardziej popularnych ( i tanich ) czujników do pomiaru wilgotności powietrza i temperatury w pomieszczeniu ( DHT11 ) oraz na zewnątrz ( DHT22).

Porównanie parametrów czujnika DHT11 i DHT22:

  • Napięcie zasilania: 3 V do 5,5 V / 3,3 V do 6 V
  • Średni pobór prądu: 0,2 mA / 0,2 mA
  • Temperatura
    • Zakres pomiarowy: 0 – 50 °C / -40 do 80 °C
    • Rozdzielczość: 8-bitów (1 °C) / 8-bitów (0,1 °C)
    • Dokładność: 1 °C / ± 0,5 °C
    • Czas odpowiedzi: 6 – 15 s (typowo 10 s) / średnio 2 s
  • Wilgotność:
    • Zakres pomiarowy: 20 – 90 %RH / 0 – 100 % RH
    • Rozdzielczość: 8-bitów (±1 % RH*) / 8-bitów (±0,1 % RH)
    • Dokładność  ±4 RH* (przy 25 °C) / ±2 %RH*
    • Zakres pomiarowy: 6 – 30 s / średnio 2 s

Jak widać powyżej, czujnik DHT22 cechuje się większym zakresem pomiaru oraz dokładnością. Sposób podłączenia i oprogramowanie czujników właściwie się nie różni.

Podłączenie czujników do Raspberry Pi

Znalezione obrazy dla zapytania dht 11 raspberry pi

DHT11 Pinout

źródło : http://domoticx.com

Po zalogowaniu się do DOMOTICZA przez ssh wydajemy kolejno poniższe komendy:

sudo apt-get install git-core

sudo apt-get update
sudo apt-get install -y python3 python3-pip python-dev
sudo pip3 install rpi.gpio
sudo apt-get update
sudo apt-get install build-essential python-dev
sudo git clone git://github.com/adafruit/Adafruit_Python_DHT.git
cd Adafruit_Python_DHT

sudo python setup.py install
cd examples
sudo chmod +x AdafruitDHT.py

Po uruchomieniu skryptu poniższa komendą powinniśmy otrzymać wynik pomiaru.
sudo ./AdafruitDHT.py 22 4 ( gdzie 22 to typ czujnika a 4 to pin, do którego jest podłączony )

zrzut ekranu99.png

Jeżeli Raspberry Pi poprawnie odczytuje temperaturę i wilgotność przekazujemy dane do DOMOTICZA.

Dodanie odczytów z czujników DHT11 i DHT22 do DOMOTICZA.

Na początku tworzymy wirtualny czujnik wilgotności i temperatury ( analogicznie jak np. w poście Geolokalizacja w Domoticzu).

zrzut ekranu100.png

Następnie tworzymy skrypt o nazwie np. DHT22 komendą:

sudo nano DHT22.sh

Wklejamy następujący kod:

#!/bin/sh

# Domoticz server
SERVER="192.168.2.21:8080"
# DHT IDX
DHTIDX="21"

# DHTPIN
DHTPIN="4"

sleep 5

sudo nice -20 python /home/pi/Adafruit_Python_DHT/examples/AdafruitDHT.py 22 $DHTPIN > /var/tmp/temp.txt
#TEMP=$(cat /var/tmp/temp.txt | grep "Temp" | awk '{ print $3 }')
#TEMP=$(cat /var/tmp/temp.txt | grep "Temp")

TEMP=$(awk ' /Temp/ {print substr ($0,6,4)}' /var/tmp/temp.txt)
#HUM=$(awk ' /Hudmidity/ {print substr ($0,0)}' /var/tmp/temp.txt)
#HUM=$(awk ' /Humidity/ {print 1$}' /var/tmp/temp.txt)
HUM=$(awk ' /Humidity/ {print substr ($0,22,4)}' /var/tmp/temp.txt)
echo $TEMP
echo $HUM

# Send data
curl -s -i -H "Accept: application/json" "http://$SERVER/json.htm?type=command&c=getauth&param=udevice&idx=$DHTIDX&nvalue=0&svalue=$TEMP;$HUM;2"


TEMP=""
HUM=""

Nadajemy uprawnienia dla pliku:

sudo chmod +x DHT22.sh

i dodajemy wpis do crona, aby otrzymywać odczyty w zadanym interwale czasu ( analogicznie jak we wpisie Czujnik deszczu w Domoticzu ).

Efekt końcowy powinien być mniej więcej taki.

zrzut-ekranu101

Podsumowując. Bardzo polecam te czujniki. Ich cena na Aliexpress to tylko ok. $ 0,80. Są w miarę dokładne i stabilne. Przy tej cenie i wykorzystaniu Pi ZERO możemy stworzyć tani, bezprzewodowy czujnik o praktycznie nieograniczonych możliwościach zastosowania.

your code here