Grafana – tworzymy Dashboardy

Jakiś czas temu (jak sprawdziłem to ponad rok…) opisywałem sposób instalacji InfluxDB i Grafana – http://blog.asobczak.pl/2017/08/14/influx-grafana/. Dopiero ostatnio się zorientowałem, że nie dopisałem kontynuacji tego artykułu – o tworzeniu wykresów. Niniejszym nadrabiam!
Najpierw musimy się dostać do samego serwisu. Jeżeli instalowaliście standardowo, to Grafana jest na porcie 3000, użytkownik to admin, hasło admin. Czyli na przykład http://192.168.1.200:3000.
Po zalogowaniu pierwszym miejscem do którego musicie się udać jest sekcja Configuration -> Data sources -> Add data source. Źródeł jest wiele, między innymi MySQL, Microsoft SQL oraz interesujący nas tutaj InfluxDB. 

Śmiało wybieramy (do odważnych świat należy) i konfigurujemy jak poniżej. Oczywiście, jeżeli zainstalowaliście InfluxDB na innym serwerze, odpowiednio wypełniacie pole URL. Nie zapomnijcie o polu Database, User oraz Password. Jeżeli robiliście to tak jak poprzednio opisałem, jest to domoticz/domoticz/domoticz. Szczyt bezpieczeństwa, którego oczywiście powinniście unikać 😉

Dobra, dążymy do czegoś, co jest przestawione poniżej. Wykresy, wskaźniki, itp. Grafana jest bardzo przyjemnym w pracy narzędziem. Obsługuje Drag and Drop, skalowanie wykresów, układanie ich w sekcje, ustalanie wartości progowych, alarmowanie. Kwestia poświęconego czasu i zaangażowania.
Nadmieniam, że jestem samoukiem w tym temacie, mogę się mylić, pewne rzeczy robić w sposób bardziej skomplikowany niż nakazuje sztuka, ale… Działa 😀
Jedziemy.
Po pierwsze – Create -> Dashboard -> Graph.
I tutaj się na początku zatrzymałem na dłuższą chwilę, bo jakoś nie mogłem zaskoczyć co i jak mam zrobić.
Klikamy Panel Title -> Edit.
I powoli temat zaczyna się rozjaśniać, Grafana automatycznie przenosi nas na zakładkę Metrics, gdzie będziemy budować proste (lub bardziej zaawansowane) kwerendy (czyli zapytania) do bazy danych. Mój konik, więc mogę się trochę rozpędzić i używać niezrozumiałych słów 😉
Aby sobie zbyt życia nie komplikować na początku, wybieramy 'select measurement'. Zawartość tego pola jest oczywiście zależna od miar (czyli na przykład Ciśnienia, Temperatury, Wilgotności) jakie przesyłacie do InfluxDB z Domoticz.
Następnie (po 'where') wybieracie jakiego identyfikatora chcecie użyć. Idx lub nazwa. Ja osobiście wybieram nazwę, ponieważ czujniki 433MHz mają tendencję do zmiany idx po wymianie baterii, co zmusiłoby mnie do zmiany zapytań za każdym razem. W tym przypadku wystarczy podmienić czujnik w Domoticz i sprawa załatwiona. No i oczywiście kiepsko będzie się wybierało, jeżeli 10 czujników nazwiecie Temperatura, ale to raczej mało logiczne.
Po podjęciu decyzji wybieramy wartości czujnika jaki nas interesuje. Powiedzmy, że u mnie jest to Temperatura-Salon. 
Jest możliwe, że jakieś dane już zobaczycie, ale bardziej prawdopodobne jest to, że będziecie musieli wybrać zakładkę Display. Wybieracie typ wykresu (Bars, Lines, Points) i teraz kolejny temat, który sprawiał mi na początku problemy. W salonie mam czujnik Xiaomi Mi Flora, który jest ustawiony tak, aby raportował dane co godzinę. Czyli nie ciągle. Na początku pojawiały mi się kropki i nie wiedziałem co z tym zrobić. A wystarczy wybrać opcję Null value -> Connected. Jeżeli macie na przykład termometry 433MHz, czy inne, raportujące dane ciągle – powinniście zobaczyć wykres od razu.
Jeżeli chcecie widzieć wartości średnie, minimalne oraz maksymalne w którymś z miejsc obok wykresu – operujcie check-boxami w sekcji Options oraz Values, jak poniżej. Nazwę zmienimy na zakładce General.
Fajnie. Pierwszy wykres gotowy, wracamy na Dashboard ikoną w prawym górnym rogu.
Jak zdefiniować wykres, na którym będzie więcej niż jedna wartość? Na przykład tak jak poniżej – wilgotność i temperatura.
Trzeba na zakładce Metrics dodać kolejną kwerendę – w kolejności A, B, itd. W ten sposób możecie dać porównania temperatury w kilku pomieszczeniach w domu, aby wiedzieć, gdzie w jakimś momencie drastycznie się różni.
Kolejna funkcjonalność dodana. Teraz zegary, z angielskiego Gauges. W tym przypadku musimy ponownie założyć kolejny Panel, tym razem Singlestat.

Powiedzmy, że chcę zobaczyć aktualną temperaturę w salonie i ustawić sobie przedziały, gdy jest zimno, komfortowo i ciepło. Również błyskawiczne do wyklikania, chociaż finalnie z mnóstwem opcji.

Zaczynamy oczywiście od kwerendy na zakładce Metrics. Wybrałem wartości jednego z czujników temperatury.

Skoro się pojawiła, to teraz możemy zacząć ubarwiać. Wybór należy do Was, ja zmieniłem:
1. Value
– Stat na Current, czyli aktualną. Można wybrać minimum, maksimum, średnią w danym przedziale czasowym
– Unit – stopnie Celsjusza
2. Coloring – wybór, że tak powiem, sposobu kolorowania na podstawie wartości, czyli:
– Background – jeżeli tło ma się zmieniać wraz z wartościami
– Value – kolor wartości zmienia się wraz z nią
– Thresholds – brzegowe wartości
– Colors – kolory, jakie mają reprezentować nasze przedziały
3. Gauge
– Show – czy pokazywać w ogóle zegar?
– Min – wartość minimalna
– Max – wartość maksymalna
– Thresholds labels – czy pokazywać brzegowe wartości?
– Thresholds markers – czy pokazywać znaczniki wartości brzegowych?

W moim przypadku, w pokoju zegar pokazuje wartości od 10 do 40 stopni Celsjusza, pierwszy zakres zaczyna się od 10 stopni, kończy na 18 (niebieski), kolejny od 18 do 23 (zielony), ostatni od 23 do 40 (czerwony).

Ciekawa jest zakładka Value Mappings, gdzie możecie zamiast wartości pokazać tekst – przykładowo od 10 do 17 – 'Jest chłodno', itd.

Kolejna funkcjonalność – w prawym górnym rogu widzicie ikonę zegara. To tam można zmienić zakres pokazywanych danych. A wybór jest duży, bo oprócz własnego zakresu, są między innymi:
– Wczoraj
– Ten dzień w zeszłym tygodniu
– Poprzedni tydzień
– Poprzedni miesiąc
– Poprzedni rok
– Ten tydzień (wartości z dni przyszłych puste)
– Ten tydzień do dnia dzisiejszego
– Ten miesiąc
– Ten rok
– Ostatnie 15 minut
– Ostatnie pół godziny
– Ostatnie 24 godziny
– itp., itd.

Jest co analizować 😀

Wykresy miesięczne wyglądają na przykład tak:
Zwróćcie uwagę na pewną rzecz – zdefiniowałem wiersze, w które możecie przesunąć Wasze wykresy i zwijać je w razie potrzeby:
– Energia
– Powietrze
– Systemowe
Można to zrobić poprzez dodanie Rows, dostępnego z Add New Panel.

Systemowe u mnie wyglądają tak:

Porada: Dla ułatwienia sobie życia, nie musimy każdego wykresu tworzyć od nowa, wystarczy wybrać Panel title -> More -> Duplicate i zmień jedynie zawartość zapytania w nowo powstałym wykresie.

W sumie na ten moment to tyle, wiele teraz zależy od Waszych potrzeb, zaangażowania, pomysłowości i zmysłu estetycznego. U mnie ten zmysł często przysłania pragmatyzm, także wybaczcie, jeżeli któryś z elementów wydaje się brzydki.

Raspberry Pi oficjalnie wspierane przez Grafana!

Ha! Zawsze dobrze czasem odwiedzić strony zainstalowanych narzędzi i dowiedzieć się czegoś nowego. W tym przypadku nie aż tak świeżego (tu już kilka tygodni), ale umknęła mi ta wiadomość.

Grafana oficjalnie wspiera Raspberry Pi! Dotychczas paczka była robiona przez pasjonatów, dostępna na GitHub pod adresem https://github.com/fg2it/grafana-on-raspberry. Od wersji 5.2.0, na razie Beta, ARMv7 jest już oficjalnie wspierany!

Można ją pobrać pod adresem https://grafana.com/grafana/download/5.2.0-beta1?platform=arm

Świetna wiadomość, ponieważ można się spodziewać lepszego wsparcia od producentów Grafana.

Jak to mówią, 'krótka piłka':

wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana_5.2.0-beta1_armhf.deb 

sudo dpkg -i grafana_5.2.0-beta1_armhf.deb 

Wygląda na to, że poszło bez problemów 😉
I do tego jeszcze działa! Super. Pozdrawiam

Smart home, Domoticz, Raspberry – z czym się to je

Czytając swojego bloga (serio – czytam czasem co naskrobałem dwa lata temu, aby poprawiać 'warsztat') doszedłem do wniosku, że nie zrobiłem nawet małego wstępu dla amatorów tematów Smart house i Raspberry Pi. Odgórnie przyjąłem, że wszyscy już wiedzą o co chodzi i od razu, 'z grubej rury' przystąpiłem do opisywania tematów. Czasem dość trudnych.

Przy okazji rozpoczęcia strony na Facebook, dotarło do mnie, że nie mam co wrzucić jako początek, jak zainteresować ludzi, wytłumaczyć podstawy. Temu właśnie posłuży ten wpis.

Zaczynamy!

Designed by Freepik

Smart home, smart home, IoT, IoT. Bardzo głośne ostatnio tematy. Czyli tak zwane 'Inteligentne domy'. Osobiście wolę termin 'Sterowane', 'Odpowiednio sterowane' lub 'Automatyczne'. Inteligencję rezerwuję dla tworów żywych.

Dom taki na podstawie czujników czy też informacji z zewnątrz (na przykład pogodowych) potrafi odpowiednio się 'dostosować' do naszych potrzeb.

Dość często wymienia się tutaj przykłady:
– uruchomienia podlewania gdy prognozowany jest brak opadów przez kilka dni,
– automatyczne otwieranie rolet/markiz o poranku
– czy też domykanie ich, gdy słońce świeci akurat w konkretne okno,
– sterowanie ogrzewaniem w domu gdy nas nie ma
– lub ustawianie zadanej temperatury, bo akurat wcześniej wracamy z pracy/wyjazdu,
– inteligentne monitorowanie posesji – jeżeli kurier dzwoni wideofonem przy bramie – wyślij zdjęcie i jeżeli potrzeba – otwórz mu furtkę aby nie bawił się w ogrodową koszykówkę przesyłką,
– ustawianie natężenia świateł w zależności od potrzeb – czytanie/oglądanie filmu/pełna jasność
– łączenie powyższych elementów w sceny – jeżeli wybieram tryb Kino – rozwiń ekran, włącz amplituner, wyłącz światła
– sterowanie głosowe
– powiadamianie głosowe/sms/e-mail

Wszystkie te elementy można zrealizować 'na bogato' zlecając je wyspecjalizowanej firmie, lub hobbystycznie. Temu drugiemu podejściu dedykowany jest blog. Niestety, podczas budowy domu popełniłem kilka błędów, jednym z nich było pociągnięcie zbyt małej ilości kabli do przesyłania danych, 'bo przecież teraz wszystko po WiFi'. Wymusiło to (na ponowne kucie ścian i remonty nie mam ochoty) ustawienie zainteresowania na transmisję bezprzewodową.

Nie jestem profesjonalistą w tym temacie. Cały czas mnóstwo się uczę i wiele tematów jeszcze przede mną. Jeżeli coś jednak zaczynam i mnie wciągnie – 'nie ma zmiłuj' – nie będę spał, ale temat muszę rozgryźć a problemy usunąć. Kropka.

Dlatego zainteresowały mnie platformy Raspberry Pi, Wemos, Arduino. Stąd już krok do komunikacji 433MHz, WiFi, ZigBee, Z-Wave. Czujniki temperatury, wilgotności, zalania, dymu, monitorowanie zużycia energii. Internetowe prognozy pogody, dane w formacie JSON. Temat jest niesamowicie rozległy i ciężko powiedzieć: 'To jest jedyne dobre rozwiązanie'.

Są systemy płatne, kompleksowo zamykające temat przez autoryzowanych instalatorów – Fibaro, Grenton to tylko przykłady polskich rozwiązań, na rynku jest ich mnóstwo. Oferują sterowanie światłem, ogrzewaniem, bezpieczeństwem, czujnikami. Są jednak relatywnie drogie (oczywiście punkt widzenia każdej osoby będzie się różnił) oraz zamknięte, jeżeli chodzi o sposób zaimplementowanych rozwiązań.

Osobiście szukałem systemu darmowego aby sprawdzić, czy Smart home się w ogóle u mnie przyjmie, czy jest sensowny. Patrząc z perspektywy czasu – jak najbardziej tak! Do tego przydałoby się oprogramowanie, które to wszystko zepnie, odczyta dane z czujników, prześle do przekaźników, zapisze do bazy danych, umożliwi analizy, reakcję.

Mój wybór padł na Domoticz. Trzy lata temu 'próg wejścia' w jego przypadku był niższy niż w Home assistant. Aktualnie coraz częściej rozważam opuszczenie Domoticz, albo chociaż na pewien czas równoległe sprawdzenie Home assistant. Wydaje się platformą stabilniejszą, bardziej rozwojową ze względu na sposób jego budowy. Aktualnie jednak – Domoticz!

Dla osób początkujących ważna jest również kolejna informacja – oba systemy są darmowe, możliwe do zainstalowania na Raspberry Pi, komputerach/serwerach obsługujących Linux, Windows, MacOS. Nie nie ryzykujecie zaczynając przygodę ze Smart home.

Dlaczego akurat on?
– po zainstalowaniu na Raspberry Pi (i nie tylko) można go od razu używać, bez dodatkowych skryptów
– dla początkujących praktycznie wszystko da się wyklikać
– bogaty zbiór urządzeń, które są obsługiwane
– na tamten czas dość ładny interface użytkownika

Porównując koszty, są od 5 do 10 razy mniejsze niż przy rozwiązaniach dedykowanych, nadmieniam jednak, że spędziłem mnóstwo czasu ucząc się, dostrajając elementy do swoich potrzeb, instalując, testując. Nie każdy ma ochotę na takie hobby. Mnie akurat wciągnęło.

Kilka przykładów:

Dashboard (czyli główny pulpit). Z tego miejsca mogę sprawdzić status tego co się dzieje w domu – kamery, gniazdka, włączone urządzenia.

Przełączniki – światła, sterowanie IR (TV, wzmacniacz), gniazdka zdalnie włączane, LEDy, system audio multi room

Sceny – połączenie kilku elementów w łańcuch zdarzeń. Jeżeli oglądamy film, to wyłącz światła, włącz amplituner, subwoofer…

Temperatura – dane z każdego z czujników. Łącznie z wilgotnością.

Elementy użytkowe – status użycia Raspberry Pi, szybkość łącza internetowego, nawodnienie kwiatów, pobór prądu w domu

Domoticz umożliwia również robienie raportów w formie graficznej. Tutaj – wykres temperatury na zewnątrz

Ustawianie warunków włączenia/wyłączenia. Tutaj – Włącz światła przed domem godzinę po zachodzie słońca i wyłącz zawsze o 22:00.

Warunki powiadamiania. Tutaj – Jeżeli włączy się światło przed domem – wyślij e-mail na żądany adres

Jeżeli prezentacja danych w Domoticz nam nie odpowiada, zawsze można doinstalować dodatkowe systemy zbierające i prezentujące dane. Na przykład InfluxDB i Grafana.

Zachęcam do przeczytania poprzednich wpisów, postarałem się ułożyć opisane już tematy w pewne pakiety tematyczne:

– Przede wszystkim – Domoticz
– Systemy audio multi-room – Logitech media server, Max2Play
– Zdalny dostęp do Raspberry i Domoticz – Dataplicity
– Czujniki otwarcia/zamknięcia drzwi – Kerui
– Centralki obsługujące różne transmisje: RFLink, Xiaomi Mijia Smart Home
– Prezentacja danych/sterowania elementami domu: Dashticz, aplikacja Pilot, aplikacja MiHome
– Monitorowania zużycia energii: Owl Micro +
– Sterowanie głosem – Amazon Alexa – Echo Dot, Skille, Kalendarze
– Chipy ESP8266 – Wemos D1 Mini
– Instalacja, konfiguracja: Raspberry, Domoticz
– BLE – Bluetooth Low Energy – Mi flora
– Przełączniki Sonoff – Basic, POW, S20
– Sterowanie oświetleniem – włączniki Xiaomi, Milight
– Piloty uniwersalne IR – Broadlink
czujnik smogu
– Zdarzenia, powiadamianie – bezpośrednio w interface Domoticz, skrypty
pourlopowe wnioski

Nie twierdzę, że moja ścieżka jest jedyną dobrą. Ile osób, tyle możliwych rozwiązań, pomysłów, różnorakich podejść. Eksperymentujcie, sprawdzajcie!

Pozdrawiam, życząc miłej i przyjemnej lektury
Cezar

P.S. Życzę również dużo myślenia, potu, zastanawiania się czemu nie działa, szukania rozwiązań problemów.

Influx, Grafana

Tym razem mała aktualizacja konfiguracji InfluxDB i Grafana w stosunku do pisanych na blogach http://malinowepi.pl/ oraz https://blog.jokielowie.com/

Słowem wstępu: na początku standardowe raportowanie w Domoticz wydaje się wystarczać, ale z czasem przekonujemy się, że ich sposób przechowywania nie jest zbyt szczęśliwy do dokładniejszych analiz: dane po dniu są uśredniane i pozostają na przykład z temperatury trzy informacje: średnia, minimum w danym dniu i maksimum. Aby mieć dostęp do ciekawszych analiz trzeba albo tworzyć osobne skrypty które będą kopiowały dane do osobnych tabel, albo posiłkować się właśnie InfluxDB i wbudowanymi w Domoticz mechanizmami.

Próbując odzwierciedlić opis na wspomnianych blogach 1:1 napotkałem u siebie problemy oraz różnice, dlatego pozwoliłem sobie stworzyć wpis aktualny na sierpień 2017 🙂

Zaczynamy od instalacji InfluxDB. Ostatnia wersja do sprawdzenia zawsze na https://portal.influxdata.com/downloads

wget https://dl.influxdata.com/influxdb/releases/influxdb_1.3.2_armhf.deb
sudo dpkg -i influxdb_1.3.2_armhf.deb

sudo service influxdb start

I już działa.

Teraz wystarczy wpisać

influx

i później mamy albo opcję bardziej czasochłonną (instalacja Chronograf do obsługi baz), albo łatwiejszą, w zupełności wystarczającą. Poprzedni portal dostępny na porcie 8083 nie jest już wspierany.

CREATE DATABASE domoticz
CREATE USER domoticz WITH PASSWORD 'domoticz'

Następnie warto skonfigurować dla sprawdzenia chociaż jeden parametr do przesłania w Domoticz. Szczęśliwie, od oficjalnej wersji 3.8153, InfluxDB jest już wspierany wprost z menu, nie przez wysyłanie po http.

Aby upewnić się, że baza odbiera dane:

use domoticz
SHOW MEASUREMENTS

I tutaj już powinny się pokazać nasze miary: temperatura, status czy wilgotność.

Wychodzimy przez quit

Następnie Grafana. Niestety, na Raspberry Pi nie jest oficjalnie wspierana, dlatego trzeba się posiłkować https://github.com/fg2it/grafana-on-raspberry

Edit: Miałem problemy z pobraniem poprawnej wersji, dlatego dopisuję komentarz.

Pobrać możemy dwie wersje: dla Pi1 i Pi2,3.

Dla Pi1 znajdują się pod linkiem:
https://dl.bintray.com/fg2it/deb-rpi-1b/main/g/

Dla Pi2,3 tutaj:
https://dl.bintray.com/fg2it/deb/main/g/

Musicie pobrać link, który tam jest dostępny wraz z ostatnią wersją i odpowiednio wkleić poniżej:

wget https://dl.bintray.com/fg2it/deb-rpi-1b/main/g/grafana_4.6.2_armhf.deb

sudo apt-get install -y adduser libfontconfig

sudo dpkg -i grafana_4.6.2_armhf.deb

Zgodnie z sugestią instalatora dopisujemy:

sudo /bin/systemctl daemon-reload
sudo /bin/systemctl enable grafana-server

sudo /bin/systemctl start grafana-server

Na koniec podajemy parametry w Grafana, użytkownik admin, admin i możemy korzystać z Dashboardów. Grafana domyślnie instaluje się na porcie 3000!