Home Assistant, InfluxDB i Grafana. A jak mam wrzucić wykres do HA?

Dzień dobry. 

Kontynuując temat Grafana (Grafany? Nigdy nie wiem czy to powinienem odmieniać, raczej tak…) – prosty sposób na dorzucenie wykresu, zegara, itp. na interface Lovelace.

Po pierwsze primo, trzeba na Panelu wybrać Share:

Po drugie primo, przejść na zakładkę Embed i skopiować tekst 'w ciapkach':

Po trzecie primo, w ui-lovelace.yaml dodać:

      – type: iframe

        id: graf1

        url: http://192.168.1.133:8123/api/hassio_ingress/fp2s44paqPGdZR2V3M7Sr1vI5K0TQu9jH10omYz4w38/d-solo/AHwE-k5Gz/cezar_ha?orgId=1&from=1602835941663&to=1602922341663&panelId=9

        aspect_ratio: 65%

Po czwarte primo, efekt widoczny od razu!

Aktualizacja: najpierw trzeba przejść na zakładkę Grafan, inaczej będziemy mieli błąd autoryzacji :/ Pracuję nad tym.

Kod lada chwila będzie dostępny również na GitHub: http://blog.asobczak.pl/2020/09/29/home-assistant-moje-repozytorium-dostepne-na-github/. Tylko muszę sobie to wszystko poustawiać.

Home Assistant, InfluxDB i Grafana. Ponownie na tapecie. Cześć druga.

Tekst jest kontynuacją artykułu: http://blog.asobczak.pl/2020/10/12/home-assistant-influxdb-i-grafana-ponownie-na-tapecie-czesc-pierwsza/.

Dobra, dane już mamy. Pora je jakoś gdzieś pokazać. Do tego posłuży nam właśnie Grafana. Instalacja podobnie bezproblemowa jak w przypadku innych dodatków.

Pora dodać źródło danych, w naszym przypadku będzie to wcześniej skonfigurowana baza InfluxDB.

W konfiguracji BARDZO ważna sprawa – wszystkie te dodatki są osobnymi kontenerami Dockera, dlatego musimy się posłużyć specjalnym adresem URL aby skierować Grafana na nasz InfluxDB.
Ten adres to: http://a0d7b954-influxdb:8086

Później już standard, który skonfigurowaliśmy: 
– Database: home_assistant
– User: homeassistant
– Password: jak podawaliśmy przy konfiguracji bazy InfluxDB

WAŻNE po raz kolejny. Najpierw ustawiłem HTTP Method na GET, co jest raczej logiczne – w końcu pobieramy dane. Jednak po jednej z aktualizacji nie udało mi się pobrać danych. Zmieniłem za zaleceniem znalezionych sugestii w internecie na POST i zadziałało. Magia…

Skoro źródło mamy, to możemy dodać pierwszy Dashboard. Czyli pulpit na którym umieścimy nasze wykresy, dane, itp. 

Zwróćcie uwagę na opcję Convert to row – przyda nam się później.

Od razu pojawia nam się panel z możliwością wpisania kwerendy (Query – w języku SQL zapytanie do bazy danych, które ma zwrócić pożądane przez nas wyniki). W naszym przykładzie dodaliśmy dwa czujniki temperatury, nie jest więc niczym wielce niezwykłym, że na razie w miarach (czyli typie danych które chcemy pozyskać) jest wyłącznie stopień Celsjusza. Jeżeli dodacie kolejne, pojawi się ich więcej (wilgotność, %, Mbit/s, Watt, cm, kwh) – wszystko zależy od tego co mierzycie.

Świetnie, coś się pojawia. W prawym górnym rogu macie zasięg czasowy jaki nas interesuje (godzina, 24 godziny, dzień, miesiąc, miesiąc do teraz, poprzedni miesiąc, itp.), w prawym dolnym dość ważny parametr. Dane z czujników czasem są podawane w sposób ciągły (na przykład co kilka sekund), ale niektóre robią to przy zmianie ich wartości. Tak jest na przykład z czujnikami temperatury Xiaomi – jeżeli nie ma zmiany w odczycie, to aktualizują się bodajże co 15 minut. To by powodowało na wykresie 'dziury' – dlatego zaznaczcie 'connected'. Stworzy nam to sensowny wykres. 
Rozwińcie później strzałkę przy Legend i sprawdźcie sekcję Values – tam możecie wstawić na wykres pewne informacje dotyczące minimalnej, maksymalnej, średniej i aktualnej temperatury. Ja sobie lubię ją zrobić w formie tabeli, jak poniżej.
Takie panele można duplikować (najedźcie na panel, rozwińcie strzałką w dół -> More… -> Duplicate), dzięki temu możemy później w nie szybko wejść, zmodyfikować kwerendę o nazwę czujnika i wyklikać jak poniżej kilka z nich. Teraz czujecie moc? Nie zapomnijcie zapisywać Dashboardu.

No dobra, wykresy mamy. Do wielu zastosowań jednak przydają się zegary. W poprzednich wersjach Grafana robiło się to trochę inaczej, teraz po dodaniu panelu wybieramy Visualization i zmieniamy jak chcemy, na przykład na Gauge.

Podstawowo wygląda to jak poniżej. Jest pewna wartość, którą system interpretuje w formie 'prędkościomierza'. 

Aby ją trochę ubarwić i zrobić mniej monotonną, więcej znaczącą musicie przejść na zakładkę Fields i zdefiniować Thresholds, czyli zakresy w których mają się zmieniać kolory na podstawie danych.

Od -20 (w sumie to od -max) do 5 stopni – niebieski kolor, bo zimno, później zielony aż do 25, 25 w górę – czerwony. 
Jest tu mnóstwo opcji, możliwości – pokazałem Wam zaledwie mały zarys, można spędzić nad tym wiele godzin. Co jest fantastyczne – można te wykresy osadzić bezpośrednio w HA, ale o tym później. Wcześniej kilka dodatkowych sugestii.
Aby po wejściu w zakładkę Grafana od razu pojawił się Wasz piękny, stworzony w pocie czoła pulpit wejdźcie w Configuration -> Preferences i tam wybierzcie go z listy.

Kolejna sugestia – aby rozdzielić logicznie wykresy, zegary, dane o temperaturze, systemie, itp. – przy dodawaniu panelu wybierzcie Convert to row, o którym pisałem wcześniej. Dodacie sekcję, którą później możecie zwijać, rozwijać – jak Wam wygodnie. Bardzo ułatwia nawigację, gdy będziecie mieli kilkadziesiąt paneli.
Na wykres można oczywiście wrzucić więcej niż jedną serię danych (Download/Upload, Temperatura/Wilgotność), odpowiednią ją sformatować, itp. itd. Ale to już innym razem.

Powodzenia!

Home Assistant, InfluxDB i Grafana. Ponownie na tapecie. Cześć pierwsza.

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-influxdbhttps://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.

’Fajny plugin wczoraj znalazłem', 'A momenty były?', 'No maaaasz' – parafrazując klasyków

Dzień dobry. Ogromną siłą społeczności Home Assistant są dodatki – czy to karty dotyczące integracji z nowym sprzętem, czy też takie, które dotyczą wizualizacji.

Mamy w domu oczyszczacz powietrza Xiaomi, a w Home Assistant akurat brakuje takiej fajnej karty, która by to ładnie pokazywała. Ale ludzie ze społeczności dali radę, jak zwykle zresztą 🙂 

Polecam https://github.com/denysdovhan/purifier-card, jedną z ostatnio dodanych. Bardzo mi przypasowała.

Po pełen kod mojego Home Assistant zapraszam na stronę: https://github.com/CaesarPL/Home-Assistant-Cezar.

Konfiguracja całej karty wygląda następująco:

          – type: entities

            no_card: true

            title: „Powietrze w domu”

            show_header_toggle: false

            state_color: true

            entities:

              – fan.xiaomi_miio_device

              – sensor.mi_aqi

              – sensor.mi_humidity

              – sensor.mi_temperature

          – type: „custom:purifier-card”

            entity: fan.xiaomi_miio_device

            stats:

              – attribute: filter_life_remaining

                unit: '%'

                subtitle: Filter Remaining

              – attribute: motor_speed

                unit: RPS

                subtitle: Motor Speed

            actions:

              – name: Silent

                icon: 'mdi:weather-night'

                speed: Silent

              – name: 25%

                icon: 'mdi:circle-slice-2′

                speed: Favorite

                xiaomi_miio_favorite_level: 3

              – name: 50%

                icon: 'mdi:circle-slice-4′

                speed: Favorite

                xiaomi_miio_favorite_level: 7

              – name: 75%

                icon: 'mdi:circle-slice-6′

                speed: Favorite

                xiaomi_miio_favorite_level: 10

              – name: 100%

                icon: 'mdi:circle-slice-8′

                speed: Favorite

                xiaomi_miio_favorite_level: 14

              – name: Auto

                icon: 'mdi:brightness-auto'

                speed: Auto

            show_name: true

            show_state: true

            show_toolbar: true

            compact_view: false          

Home Assistant i czujnik smogu SDS011 wraz z ESPEasy po MQTT

Dobry wieczór.
Mam ja sobie czujnik smogu SDS011. Kiedyś był Ci on połączony z Domoticz i świetnie sobie działał http://blog.asobczak.pl/2017/12/18/czujnk-smogu-sds011-wemos-przelacznik-wszystko-w-dzialaniu/. Z chwilą przejścia na Home Assistant z czystego lenistwa (a może bardziej obawy) nie chciało mi się zmieniać konfiguracji z ESPEasy na Tasmota czy ESPHome. Jak jest, to niech działa. Ale miałem mały zgryz – nie wiedziałem jak wysłać dane do HA. W końcu jeden z kolegów na grupie FB podał przepis – MQTT! Gdzieś tam mi się w głowie kołatało, że próbowałem to zrobić w ten sposób, ale na czymś poległem. Dzięki niemu wiem już dokładnie na czym, co opiszę poniżej.
Nie przedłużając: głównym problemem u mnie była stara wersje ESPEasy – R147, jeszcze jakby 1.0. W niej po prostu nie była dostępna komunikacja przez MQTT. Niestety ESPEasy nie jest dla mnie dość jasne, Wiki nie jest aktualizowana na bieżąco, w sumie ich github jedynie odzwierciedla stan projektu: https://github.com/letscontrolit/ESPEasy/releases. Po pobraniu wersji 2.0 Mega (o wiele mówiącej nazwie ESP_Easy_mega_20200929_normal_alt_wifi_ESP8266_4M1M) i próbie zmiany wersji przez OTA (Over The Air) mój Wemos przestał się odzywać 😀 Ale pierwsze koty za płoty, podłączyłem konwerter UART (jak w cytowanym poście sprzed dwóch lat) i tym razem wszystko poszło bez problemu.
It’s alive! Wszystkie ustawienia i kod zostały zachowane po przejściu na nową wersję.

Kilka ważnych ustawień – zakładka Config i Append Unit Number to hostname.

Na zakładce Controllers dodajemy nowy Protocol – Home Assistant (openHAB) MQTT, podajemy IP brokera, port oraz dane do logowania (podane w konfiguracji Waszego MQTT). Do tego zaznaczamy Enabled.

Na zakładce Devices przy naszym czujniki musimy zaznaczyć wysyłanie danych do drugiego Controller’a – jak widać powyżej – aktualnie na raz do Domoticz oraz Home Assistant.

Tu już dane z zakładki Info.

Co do konfiguracji powyższego, to sensors.yaml wygląda tak:

  – platform: mqtt
    name: „Czujnik smogu PM25”
    state_topic: „CzujnikSmogu_1/CzujnikSmogu/PM25”
    unit_of_measurement: „ug/m3”

  – platform: mqtt
    name: „Czujnik smogu PM10”
    state_topic: „CzujnikSmogu_1/CzujnikSmogu/PM10”
    unit_of_measurement: „ug/m3”
Zwróćcie uwagę na CzujnikSmogu_1 – to jest efekt zaznaczenia Append Unit Number to hostname.
W ui-lovelace.yaml:
          – type: glance
            no_card: true
            title: „Powietrze na zewnątrz”
            show_name: false
            entities:
              – sensor.czujnik_smogu_pm25
              – sensor.czujnik_smogu_pm10
Po pełen kod mojego Home Assistant zapraszam na stronę: https://github.com/CaesarPL/Home-Assistant-Cezar.
Tylko tle i aż tyle 😀 Powodzenia!
P.S. Tak mi właśnie wpadło do głowy, że trzeba to oprogramować tak, aby pokazywał kiedy normy są przekroczone. Ciekawy temat.