W niniejszej instrukcji zaprezentowana jest integracja systemu Smart Home Grenton z bazą danych Influx w celu zbierania danych oraz aplikacją Grafana do wizualizacji zebranych informacji.
Wymagania
- CLU Z-Wave 2.0 - nazwane dalej (Name) CLU_ZWAVE_2
- Moduł Gate Http - nazwany dalej (Name) CLU_GATE_HTTP
- Serwer z instancją InfluxDB oraz aplikacją Grafana
- Smart Panel lub inne sensory dostarczające dane
Przygotowanie serwera na Raspberry Pi
- Instalacja Rasbian na Rasberry Pi
- Pobierać installer https://www.raspberrypi.org/downloads/
- Wgrać system na kartę SD
- Uruchomić i skonfigurować połączenie sieciowe, użytkowników
- Instalacja InfluxDB ( polecenia wykonujemy z poziomu linii poleceń ) 3. wget -qO- https://repos.influxdata.com/influxdb.key | sudo apt-key add - 2. echo "deb https://repos.influxdata.com/debian buster stable" | sudo tee /etc/apt/sources.list.d/influxdb.list 3. sudo apt-get update 4. sudo apt-get install influxdb
- Konfiguracja InfluxDB jako usługa włączająca się automatycznie
- sudo systemctl unmask influxdb
- sudo systemctl enable influxdb
- sudo systemctl start influxdb ( Uruchomienie serwera InfluxDB)
- wpisujemy w CLI influx
- następnie tworzymy bazę danych CREATE DATABASE grenton
- CLI Influx opuszczamy przez wpisanie polecenia exit
- Instalacja Grafana
- sudo apt-get install -y adduser libfontconfig1
- wget https://dl.grafana.com/oss/release/grafana_7.2.0_armhf.deb
- sudo dpkg -i grafana_7.2.0_armhf.deb
- Konfiguracja i uruchomienie Grafany
- sudo systemctl enable grafana-server
- sudo systemctl start grafana-server
Przydatne polecenia przy obsłudze Influx
SHOW DATABASES - pokazuje utworzone bazy danych
USE grenton - wybiera bazę o nazwie grenton do wykorzystania
SHOW MEASUREMENTS - pokazuje jakie pomiary są przechowywane w wybranej bazie danych
SHOW FIELD KEYS - pokazuje jakie pola kluczowe są przechowywane w wybranej bazie danych
SELECT COUNT(*) FROM temp - zlicza wszystkie rekordy z wszystkich pól w pomiarze o nazwie temp
SELECT * FROM temp - wyświetla wszystkie dane dla pomiaru temp
Więcej informacji w oficjalnej dokumentacji
Integracja systemu Grenton
W celu przekazywania danych sensoryczny, zdarzeń z systemu Grenton do bazy danych Influx wykorzystane jest web API W tym celu potrzeba utworzyć obiekty wirtualne HttpRequest Modułu Gate HTTP.
- Utwórz obiekt wirtualny HttpRequest. W przykładzie nazwiemy go 'influxDB'.
- Skonfiguruj cechy wbudowane następująco:
- Host - http://adres_ip_serwera:8086
- Path - /write
- QueryStringParams - db=nazwa_bazy_danych (w przykładzie grenton)
- Method - POST
- RequestType - Other
- ResponseType - JSON
- Reszta cech zostaje z wartościami domyślnymi
Obiekt wirtualny HttpRequest dla Influx
Następnie tworzymy skrypt który będzie w bazie InfluxDB - grenton zapisywał odczyty temperatury z czujnika Smart Panelu
local body = "temp,host=SmartPanel value=" .. CLU_ZWAVE_2->PANELSENSTEMP1->Value
local qs = "db=grenton"
CLU_GATE_HTTP->influxDB->SetRequestBody(body)
CLU_GATE_HTTP->influxDB->SetQueryStringParams(qs)
CLU_GATE_HTTP->influxDB->SetMethod("POST")
CLU_GATE_HTTP->influxDB->SendRequest()
Przechodzimy do obiektu PANELSENSTEMP1 reprezentującego czujnik temperatury i zdarzeniu OnValueChange . W efekcie każda zmiana temperatury zostanie zapisana w bazie InfluxDB grenton. Należy zwrócić uwagę na cechę wbudowaną Threshold sensorów Smart Panelu. Im mniejsza wartość tym częściej będą zapisywane dane w bazie Influx.
Jeśli chcemy mieć regularne odczyty zapisane w bazie, to należy zastąpić wywoływanie skryptów przez zdarzenie OnValueChange użyciem obiektu wirtualnego Timer, w który konfigurujemy:
- Cechę wbudowaną Mode ustawiamy na Interval
- Cechę wbudowaną Time używamy do określenia jak często ma być zapisana. Dla przykładu co 10 000 milisekund
Do zdarzenia OnInit CLU_GATE_HTTP (Tam gdzie obiekt Timer-a) należy dodać wywołanie metody Start obiektu Timer-a aby co zadany Time baza była aktualizowana.
Uwaga
Należy zwrócić uwagę na częstość zapisów. Raspberry Pi korzysta z karty SD i zbyt częste zapisywanie danych może prowadzić do szybszego zużycia karty.
Jest to przykład bez uwierzytelniania. Jeśli w Grafana włączymy uwierzytelnianie to należy zmodyfikować linijkę w skrypcie
local qs = "db=grenton&u=nazwaUzytkownika&p=haslo"
Konfiguracja aplikacji Grafana
Z Grafana łączymy się za pomocą przeglądarki internetowej http://adres_serwera:3000 . Domyślnie logujemy się kontem admin i hasłem admin. Przez pierwszym logowaniu aplikacja wymusi na nas zmianę hasła.
Następnie należy skonfigurować połączenie z bazą danych Influx
Configuration > Data Sources > Add data source
URL: http://localhost:8086 (w przykładzie Grafana jest na tym samym serwerze co InfluxDB)
Database: grenton (nazwa naszej bazy danych)
Http Method: POST
Konfiguracja połączenia Grafany z Influx
W kolejnym kroku trzeba utworzyć Dashboard. W menu po lewej stronie, klikamy plusa, utworzy to nowy Dashboard. Następnie dodajemy panel i przechodzimy do jego konfiguracji. Wybieramy bazę Influx i wskazujemy który pomiar nas interesuje (w przykładzie temp).
Grafana oferuje szeroki wachlarz możliwości konfigurowania wykresów.