Czujnik smogu SDS011 wraz z ESPHome oraz Home Assistant

Dzień dobry ponownie.

Zostałem trochę na FB 'zjechany’ za to, że się obijam w temacie Smart Home, ale akurat niewiele się w tym kontekście u mnie dzieje. Działa, rozbudowywać mi się nie chce, rozleniwiłem się. Fakt niepodważalny. Pech jednak chciał, że zepsuł mi się ESP8266, który 'siedzi’ obok czujnika smogu SDS011. Kupować nowego nie miałem zamiaru (dopełniłbym pewnie do Smart’a Allegro bzdetami, których nigdy nie użyję), a chciałem żeby działał, bo mierzi mnie, jeżeli jakiś element nie funkcjonuje. Szczęśliwie leżał w pudełku z elektroniczymi gratami Wemos D1 Mini. I to wymusiło pewne zmiany, które tygrysy lubią najbardziej 😀

Historia potoczyła się następująco:

1. LoLin ESP8266 przestał działać, niby dioda świeciła się przy podłączeniu do USB, ale zaprogramować już nie mogłem.

2. Znalazłem Wemos D1 Mini, fajnie.

3. Tutaj jednak problem – w czasach kiedy montowałem czujnik smogu (bagatela – już prawie cztery lata – autentycznie szokuje mnie coraz bardziej upływ czasu) nie było jeszcze funkcji usypiania czujnika przez oprogramowanie.

4. Zrobiłem to za radą jednego blogera na przełączniku Songle.

5. Okazało się, że potrzebowałem 2xGround na płytce Wemos Mini.

6. Jest tylko jeden, nie chciało mi się łączyć kabli 'na krótko’, bo to mało estetyczne

7. Odpiąłem więc przełącznik, podłączyłem Wemos bezpośrednio z czujnikiem SDS011

8. Okazało się, że najnowsza wersja ESP Easy nie ma możliwości uśpienia go na określony czas :/ Nie znalazłem i tyle 🙁

9. Tasmota na mój stan wiedzy również tego nie wspiera

10. Skończyło się na ESPHome, które ma wszystko co potrzeba, działa świetnie i jest banalne w konfiguracji. Sukces!

Wszystko jest praktycznie do wyklikania, Najpierw tworzymy nową konfigurację w ESPHome (oczywiście pod warunkiem, że zainstalowaliście ten dodatek) – Supervisor->ESPHome->Open Web UI->Plus->Create configuration.

Wpisujemy:

esphome:

  name: smog

  platform: ESP8266

  board: d1_mini

 

# Enable logging

logger:

 

# Enable Home Assistant API

api:

 

ota:

  password: „password”

 

wifi:

  ssid: „SSID”

  password: „Hasło”

 

  # Enable fallback hotspot (captive portal) in case wifi connection fails

  ap:

    ssid: „Smog Fallback Hotspot”

    password: „BlaBla”

 

uart:

  tx_pin: D1

  rx_pin: D6

  baud_rate: 9600

 

sensor:

  – platform: sds011

    pm_2_5:

      name: „Particulate Matter <2.5µm Concentration”

    pm_10_0:

      name: „Particulate Matter <10.0µm Concentration”

    update_interval: 30min 

I kompilujemy.

Aktualizacja z ESP Easy do ESPHome to również fraszka – wybieramy Update firmware, wskazujemy skompilowany plik .bin z ESPHome i ładujemy.
Jak widać poniżej – od razu dostępny.

W tx_pin i rx_pin podajecie swoje porty w ESP8266, nazwę jaka Wam się podoba i update_interval. Ostatni parametr jest domyślnie ustawiony na zero (0), co oznacza ciągłą pracę. Jeżeli nie podłączycie nic pod rx_pin to czujnik nie dostanie informacji o zmianie i tak właśnie zostanie zainicjowany. Jednak nie jest to najlepsze podejście, bo raz, że zużywa laser, dwa – tak ciągłe odczyty nie są potrzebne. Ja ustawiłem na 30 minut, przed upływem tego czasu wiatraczek w czujniku włączy się 30 sekund aby się rozgrzać, zrobi pomiar i wyłączy się na kolejne 30 minut. Bajka.

Pomiar jest, wszystko działa. Pora zapakować go znowu przed domu, korzystać i przerażać się jak bardzo ciągle sąsiedzi robią syf za oknem…

Bardzo fajnie opisane wszystko jest na stronie: https://cyan-automation.medium.com/creating-an-air-quality-sensor-using-an-sds011-and-esphome-7305f764f6f5, wraz z template do wrzucenia jako sensor do HA.

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.

Home Assistant – moje repozytorium dostępne na GitHub

Dzień dobry.

Coś sobie w końcu wydłubałem w Home Assistant w taki sposób, że jestem z tego zadowolony. A że moje korzenie programowania zasadzają się w demoscenie komputerowej, która nauczyła mnie cieszyć się z tego co zrobiłem i dzielić tym – teraz również się dzielę. 

Oto kod YAML mojej konfiguracji Home Assistant:

https://github.com/CaesarPL/Home-Assistant-Cezar

Interface podzielony na karty, z automatyzacjami, itp., itd. Kod podzielony na osobne pliki dla włączników, kamer, czujników, świateł, skryptów, ręczna konfiguracja wyglądu.

Dodatkowym plusem takiego rozwiązania (poddając się krytyce internautów) jest to, że przeglądałem ten kod kilkukrotnie aby uniknąć powtórzeń, starych bloków, oczyścić go, uczynić bardziej logicznym. Na pewno jest jeszcze dużo do zrobienia, na pewno będę go aktualizował. Nienawidzę stać w jednym miejscu zbyt długo 😀

Zapraszam do sprawdzenia, z chęcią dowiem się, że coś można zrobić coś lepiej, łatwiej, szybciej, ładniej.

Home Assistant – wersja 0.115 – Media browser

Usssss… Nie nadążam ze zmianami w konfiguracji a pojawia się coraz więcej ciekawych rzeczy!

W wersji 0.115 najbardziej zainteresował mnie Media browser. Cóż to? Mała ikona, folder w tle, ale jakże wiele dająca.

Po pierwsze, po dodaniu wpisu media_source: w configuration.yaml dostaliśmy możliwość podejrzenia tego, co mamy w folderze media, który może być zamapowany na przykład do naszego NAS. Nie ogarniam jeszcze Dockera tak jakbym chciał (ale staram się nauczyć 😉 ), dlatego nie wiedziałem jak zamapować folder z mojej sieci tak aby Home Assistant go zobaczył. A instalację mam w Docker.

Znalazłem jednak folder pod Ubuntu, gdzie okazało się, że jest ten folder widoczny pod HA. Widocznie tak to zrobili i tyle. Na razie nie wnikam.

/usr/share/hassio/media

A skoro go znalazłem to już sobie go potrafię zmapować na mój NAS.

sudo -s

mount -t cifs //192.168.1.124/Sobczaki/Muzyka /usr/share/hassio/media

Restart Home Assistant i voila! Mam dostęp do całej swojej biblioteki z poziomu Home Assistant.

A dokładniej z poziomu Mi Box. Widzicie ten folder w prawym dolnym rogu? Super, to dzięki niemu teraz mogę z poziomu Home Assistant puścić co chcę na Mi Box. Automatyzacje przyjdą z czasem…

Kolejny temat – Spotify. Tam też można sterować swoimi Playlistami, Ulubionymi, Ostatnio odtwarzanymi, itp.

Najpierw zakładamy nową aplikację na koncie deweloperskim Spotify (tak, pełna wersja Spotify jest konieczna)

https://developer.spotify.com/dashboard/applications

I pozyskane klucze wpisujemy w configuguration.yaml
spotify:
  client_id: !secret spotify_client_id
  client_secret: !secret spotify_client_secret
Dopiero teraz instalujemy Integrację Spotify i dodajemy na stronę:
      – type: media-control
        entity: media_player.spotify_sobczaki
Niby od przybytku głowa nie boli, ale ostatnio nie ma kiedy nawet z nowościami się zapoznać 😀

To jedna z nowości a kiedy sprawdzić zmiany w automatyzacjach, sekcje More info, ładowanie zdjęć użytkowników (to akurat co prawda sam sobie już zrobiłem), zmiany w kalendarzu? 

Home Assistant i ZeroTier – Zdalny dostęp bez zewnętrznego IP, bez Nabu Casa

Dzień dobry. Jak zapewne prawie każdy – mam w domu internet 🙂 Cały problem w tym, że nie mam zewnętrznego adresu IP, nie chcę za niego dodatkowo płacić, a przydałoby się mieć dostęp do swojej infrastruktury będąc na wczasach, wyjeździe, w pracy.

Za czasów Domoticz postawiłem na dostęp przez Dataplicity i byłem z tego bardzo zadowolony: http://blog.asobczak.pl/2017/03/14/dataplicity-zdalny-dostep-do-raspberry-pi-i-przy-okazji-do-domoticz/. Jednak Dataplicity potrafi wyłącznie wyeksponować port 80, a na nim akurat teraz mam HABridge, który służy do obsługi Alexy.

Skoro można to było osiągnąć na Raspberry Pi i Domoticz, to czemu nie zrobić czegoś podobnego z Home Assistant?

W tym celu tym razem udałem się do ZeroTier – https://zerotier.com/. Tak, wiem, zewnętrzna firma, której pozwalam na przesyłanie mojego ruchu. Nie jest jednak mała, miliony podłączonych urządzeń – Wasza decyzja. Niektórzy się zdecydują, niektórzy wzdrygną z obrzydzeniem.

Procedura jest taka: 

– klient ZeroTier tworzy połączenie VPN (na przykład na naszym telefonie)

– po jego włączeniu klient pośredniczy (tworzy wirtualny kanał) w komunikacji z naszym Home Assistant

– na telefonie możemy korzystać ze strony www lub aplikacji HA na podanym przez ZeroTier adresie

Pierwsza i podstawowa sprawa – musicie założyć konto na ZeroTier. 

Tam wybrać plan, który Wam odpowiada – dla mnie jest wystarczający Basic, darmowy, dla jednego urządzenia. Poniżej dostępne jest generowanie Waszego prywatnego tokena, który będzie służył przy komunikacji z dodatkiem ZeroTier One po stronie Home Assistant. Zapisać, skopiować, za chwilę będzie użyty. Drugi raz nie będzie można go zobaczyć (ale oczywiście będzie można go skasować i założyć nowy).

Później przechodzimy do zakładki Networks. Założenie jest takie, że token określa kto się loguje, nazwa sieci – do jakiej sieci. As simple as that. Zapisać, zapamiętać.

Wszystko to dostępne pod adresem https://my.zerotier.com/network.
W środku strony mamy możliwość wyboru puli adresów, których można będzie użyć. To ważne, bo przecież różnie możecie mieć skonfigurowane Wasze sieci domowe. Ja wybrałem domyślną.

Poniżej bardzo ważny element – lista adresów klientów, którzy chcą się dostać do naszej sieci. I to my decydujemy o tym, czy mogą się zalogować do naszego kanału, czy nie. Robimy to check-boxem po lewej stronie. I to na na adres podany pod Managed IPs będziemy się logować czy to przez przeglądarkę, czy przez aplikację Home Assistant. Jednorazowo, później już autoryzacja będzie przeprowadzana automatycznie.
Skoro to gotowe – przechodzimy do Home Assistant i instalujemy z poziomu Supervisor -> Add-on store ZeroTier One.

W konfiguracji podajemy kod naszej sieci oraz kod naszego tokena.

Sprawdzamy konfigurację, zapisujemy, startujemy Add-on.

Teraz pora zająć się telefonem. U mnie jest to iPhone, także z AppStore ściągnąłem odpowiednią aplikację ZeroTier One.

W niej muszę podać moje Network ID, zapisać.

Później wystarczy włączyć dostęp VPN, poczekać na autoryzację…

I korzystać z dostępu! Czy to przez stronę, czy przez aplikację na iPhone.

Coraz lepiej to wszystko wygląda 😀

Gniazdka Blitzwolf – tworzymy automatyzacje w oparciu o stan poboru prądu.

Dzień dobry. Ostatnia, trzecia, część konfiguracji gniazdek Blitzwolf.

Poprzednie tutaj:

http://blog.asobczak.pl/2020/08/20/pierwsze-efekty-buy-my-a-coffee-gniazdka-blitzwolf-bw-shp6/

http://blog.asobczak.pl/2020/08/26/gniazdka-blitzwolf-wgrywamy-tasmota-za-pomoca-tuya-convert/

Na jakiej zasadzie się oparłem? Odczytuję stan pobory mocy w gniazdku. Jeżeli pobór jest większy niż 2 Watt, zmieniam status czujnika na 'pranie’. Jeżeli spada do zera, zmienia się na 'wyłączona’. W Automations HA sprawdza na bieżąco stan czujnika, jeżeli zmieni się z 'pranie’ na 'wyłączona’ na trzy minuty, powiadamia mnie e-mailem oraz Alexą, że pranie się skończyło. Trzy minuty to, na podstawie testów, czas w którym już wiem, że grzałka nie działa, silnik nie kręci bębnem, pompa nie odsącza wody.

Wstawiam ponownie konfigurację gniazdek po stronie Tasmota, bo trochę zmieniło się nazewnictwo. Parametry i nazwy wyglądają teraz następująco:

Jak widać, w MQTT Topic do komunikacji ma nazwę blitzwolf2:

To później wykorzystuję w konfiguracji w pliku sensors.yaml. Z jakiegoś powodu (mimo włączenia odpowiednich parametrów odpowiadających za auto discovery) nie działało mi automatyczne wykrywanie, aby więc nie stać w miejscu dodałem je ręcznie 😀 I tak postąpiłem z każdym, dla nauki.

Przy okazji – Tak, wolę nazwy angielskie w parametrach. Na pulpicie HA nazwy są polskie, ale wewnątrz konfiguracji wolę je mieć po angielsku. Taki odchył 😉
Jak widać poniżej z kanału blitzwolf2 w MQTT odczytuję poszczególne parametry i wstawiam je do zmiennych:

  – platform: mqtt

    name: „Pralka Energy Today”

    state_topic: „tele/blitzwolf2/SENSOR”

    value_template: '{{ value_json[„ENERGY”][„Today”] }}’

    unit_of_measurement: „kWh”

  – platform: mqtt

    name: „Pralka Energy Yesterday”

    state_topic: „tele/blitzwolf2/SENSOR”

    value_template: '{{ value_json[„ENERGY”][„Yesterday”] }}’

    unit_of_measurement: „kWh”

  – platform: mqtt

    name: „Pralka Energy Total”

    state_topic: „tele/blitzwolf2/SENSOR”

    value_template: '{{ value_json[„ENERGY”][„Total”] }}’

    unit_of_measurement: „kWh”

  – platform: mqtt

    name: „Pralka Power”

    state_topic: „tele/blitzwolf2/SENSOR”

    value_template: '{{ value_json[„ENERGY”][„Power”] }}’

    unit_of_measurement: „W”

  – platform: mqtt

    name: „Pralka Voltage”

    state_topic: „tele/blitzwolf2/SENSOR”

    value_template: '{{ value_json[„ENERGY”][„Voltage”] }}’

    unit_of_measurement: „V”

  – platform: mqtt

    name: „Pralka Power Factor”

    state_topic: „tele/blitzwolf2/SENSOR”

    value_template: '{{ value_json[„ENERGY”][„Factor”] }}’   

Kolejny wpis w pliku sensors.yaml. Tutaj właśnie realizowana jest zmiana statusu włączona/wyłączona na podstawie poboru mocy.

  – platform: template

    sensors:
      pralka:
        friendly_name: „Pralka”
        value_template: >-
          {% if states(’sensor.pralka_power’) != (’unavailable’ or 'unknown’) %}
            {% if states(’sensor.pralka_power’) | int > 2 %}
              pranie
            {% else %}
              wyłączona
            {% endif %}
          {% else %}
            {{ states(’sensor.pralka’) }}
          {% endif %}


Aby skonfigurować stronę jak powyżej dodałem wpis w ui-lovelace.yaml:
    – type: vertical-stack
      in_card: true
      cards:
        – type: glance
          no_card: true
          title: „Łazienka góra”
          show_name: false
          entities:
            – sensor.temperature_158d00022723b2
            – sensor.humidity_158d00022723b2  
            – sensor.pralka
            – sensor.pralka_power
A ikony zdefiniowałem sobie w customize.yaml:
sensor.pralka:
  icon: mdi:washing-machine  
sensor.pralka_power:
  icon: mdi:power
Automatyzacja wygląda następująco:

Tak jak pisałem na początku – jeżeli przez trzy minuty zostanie utrzymana zmiana statusu z 'pranie’ na 'wyłączona’ – powiadom mnie wybranymi kanałami.

– id: '1599813679318′
  alias: Pralka – koniec prania
  description: ”
  trigger:
  – entity_id: sensor.pralka
    for: 00:03:00
    from: pranie
    platform: state
    to: wyłączona
  condition: []
  action:
  – data:
      message: HA – pralka skończyła pranie
    service: notify.cezar
  – data:
      data:
        method: all
        type: announce
      message: Washing machine has finished job
      title: Washing machine off
    service: notify.alexa_media_adam_s_echo_dot
  mode: single
Dla porządku mam je również wstawione w innych miejscach:

Przy konfiguracji posiłkowałem się konfiguracją https://github.com/bieniu/home-assistant-config. Wpłata na jego konto wskazana 🙂