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 🙂

Home Assistant i powiadamianie o statusie urządzeń w domu

 W Domoticz stworzyłem sobie w dzVents mały automat, który o wschodzie słońca informował mnie o 'statusie domu'. Jaka temperatura na dole, jaka w pokojach dzieciaków, itp. itd.

Aby zrealizować to samo w Home Assistant zrobiłem to na podstawie prostej automatyzacji i powiadamianiem na e-mail.

W Service data wstawiłem:

message: >-

  HA – temperatura w salonie: {{ states(’sensor.temperature_158d0001b95f89′) }}

  , w ogrodzie: {{ states(’sensor.temperatura_ogrod') }}, u Zosi: {{

  states(’sensor.temperature_158d00019c915b') }}, u Stasia {{

  states(’sensor.temperatura_staszek') }}. Prognoza mówi: {{

  states(’sensor.dark_sky_summary_1d') }} Moja kochana żona pojedzie do pracy {{

  states(’sensor.dorota') }} minut.

Mała aktualizacja. Aby skonfigurować wysyłanie e-maili trzeba uzupełnić sekcję 'notify' w configuration.yaml.

notify:

  – name: Cezar

    platform: smtp

    server: !secret email_server

    port: 587

    timeout: 15

    sender: !secret email_sender

    encryption: starttls

    username: !secret email_username

    password: !secret email_password

    recipient:

      – !secret email_cezar

    sender_name: My Home Assistant