Dobry wieczór! Coś za często ostatnio witam się wieczorem. Cóż, skoro sezon biegowy jeszcze trwa, dzieci jeszcze przez paręnaście lat samodzielne nie będą, dom się sam nie posprząta – pozostają noce 😀
Dość marudzenia, do sedna. Jakiś czas temu (jak widzę – dokładnie dwa lata temu) opisywałem InfluxDB i Grafan spięte z Domoticz – http://blog.asobczak.pl/2018/10/05/grafana-tworzymy-dashboardy/. Czasy się zmieniły, teraz wszystko jest spięte z Home Assistant, więc i to trzeba było doszlifować. Kolejny raz okazało się, że niepotrzebnie podchodziłem do tego jak 'pies do jeża’, bo konfiguracja okazała się prosta, przyjemna i bezproblemowa. Jak to bywa z Home Assistant 😀
Krótkie wyjaśnienie: InfluxDB to relatywnie nowy system baz danych służących to szybkiego zapisu/odczytu ciągów danych uporządkowanych w szeregach czasowych. Brzmi enigmatycznie, ale jest bardzo przydatne do monitorowania parametrów, system IoT (Internet of Things). Czyli dokładnie tego co robimy tutaj 😀 Grafana z kolei jest systemem wizualizacji tych danych. Co prawda InfluxDB ma podobny system już zawarty – Chronograf, ale nie jest on tak potężny i konfigurowalny jak Grafana. Te dwa elementy spięte ze sobą dają prawdziwe 'killer-combo’ (jak ktoś grał w Mortal Kombat to może to przyrównać do Fatality, które robił Johnny Cage waląc po jajkach oponentów). Szybkie, efektywne i efektowne. I to wszystko dostępne za kliknięciem w Supervisor Home Assistant. Repozytorium jednego i drugiego dostępne jest na github: https://github.com/hassio-addons/addon-influxdb, https://github.com/hassio-addons/addon-grafana. W Hass.io instalacja jest bardziej niż prosta, podstawowa konfiguracja w sumie zawiera to, co potrzebujemy do pracy.
Po włączeniu obu dodatków wyciągnąłem je sobie na boczny pasek, aby na razie łatwiej się pracowało.
Dobra, to co już mamy? Mamy dane źródłowe, czyli czujniki (sensors) Home Assistant -> przekazywane do InfluxDB -> z których to później danych skorzysta Grafana.
Co przekazuje InfluxDB dalej? Tak zwane miary (measurement), termin spotykany również w bazach OLAP.
Kolejna sprawa, aby uzmysłowić Home Assistant, że powinien zacząć przekazywać dane czujników, musimy w configuration.yaml dodać wpis jak poniżej:
influxdb:
username: homeassistant
password: !secret my_password
max_retries: 3
default_measurement: state
# include:
# entities:
# – sensor.temperature_158d0001b95f89
# – sensor.temperature_158d0002239fbb
Opatrzona komentarzem sekcja (#) mówi o wyborze czujników, których wartości powinny być przekazane do InfluxDB. Ja zdecydowałem na ten moment na wysłanie wszystkiego, dla testów, zabaw i konfiguracji.
Zaczynamy z 'mięsem’, czyli konkretami.
Jak widać InfluxDB działa, połączył się.
Pora stworzyć bazę danych w zakładce InfluxDB Admin, gdzie będą zapisywane dane z naszego Home Assistant.
Zakładamy bazę home_assistant, jako domyślną dla HA. Jeżeli chcecie nadać inną, musicie to również uwzględnić w configuration.yaml.
Dalej użytkownik i uprawnienia do bazy. Albo standardowy homeassistant, albo taki jak uważacie – i tak musicie później podać go w configuration.yaml.
Co zrobiliśmy? Uruchomiliśmy dodatek InfluxDB w Home Assistant, stworzyliśmy bazę danych, użytkownika który będzie z niej korzystał oraz przyznaliśmy mu uprawnienia dostępu.
Jeżeli wszystko jest skonfigurowane, dla pewności restart Home Assistant i powinniśmy już widzieć dane w zakładce Explore. Na dole, po lewej, macie nazwę naszej bazy danych – home_assistant.autogen. Ja na początku wybrałem sobie dwa czujniki temperatury, które w powyższym wycinku konfiguracji zostały później wykluczone. Jak widać, pojawiła się jedna miara – stopnie Celsjusza. Gdy je rozwiniemy, pod entity_id widzimy dwa czujniki. Po prawej ujawni nam się lista pól – możemy wybrać 'value’. Coś jest – kropka. No, to już dobry znak!
Z tego co wyczytałem, powinienem się pozbyć miar w stylu °C, co jest całkiem logiczne, bo konia z rzędem temu, kto potrafi znak ° znaleźć na klawiaturze przy pisaniu kwerendy. To będzie następny krok, są na to sposoby.
Na ten moment to tyle. InfluxDB działa, możemy pobrać dane. O tym w następnej części arykułu.