HA działa jako kontener na dockerze. Nie jest to najprostsza konfiguracja, ale jedna z najbardziej elastycznych. Z jednej strony mamy możliwość aktualizacji HA, a z drugiej możliwość uruchomienia dodatkowego oprogramowania – w moim przypadku: Ebusd oraz Samba.
Dodatki
Dodatek
Cel
DuckDNS + Ngnix
Konfiguracja SSL plus wystawienie HA do internetu
ESPHome Device Builder
ESPHome – oprogramowanie dla chipów i czujników
File editor
Edycja plików
Frigate HailoRT
Podgląd kamer, analiza ruchu, serwer NVR
Home Assistant Google Drive Backup
Automatyczne backupy w chmurze
Mosquitto broker
Serwer MQTT
SQLite Web
Klient SQL dla SQLLite
TasmoAdmin
Zarządzanie urządzeniami Tasmota
TasmoBackup
Backup urządzeń Tasmota
Uptime Kuma
Monitoring urządzeń
Zigbee2MQTT
Obsługa urządzeń Zigbee
HACS
Niestandardowe integracje
Integracja
Cel
HACS
Moduł do pobierania dodatkowych komponentów i integracji
Antistorm
Prognoza burz i opadów
Disk Space
Sensor wielkości dysku
Frigate
Integracja z frigate
Media player template
Dedykowany player dla niestandardowych urządzeń multimedialnych
Uptime Kuma
Integracja z Uptime Kuma
Viomise
Integracja dla odkurzacza Viomi SE and Xiaomi STY02YM, STYJ02YM
Duża ilość urządzeń w domowej sieci wifi powoduje zawsze problemy z dostępnością wszystkich urządzeń. Do monitoringu działania urządzeń wykorzystuje oprogramowanie „Uptime Kuma” jak dodatek zainstalowany w HA
Konfiguracja
Ustawienia pojedynczego monitora dla urządzenia
Powiadomienia wysyłam bezpośrednio poprzez HA na komórkę. Większość urządzeń monitoruje na odpowiednim temacie MQTT – przykład powyżej.
Aby pominąć błędne powiadomienia:
dla MQTT – heartbeat: 60 sek oraz ilość prób: 5,
dla ping – heartbeat: 300 sek oraz ilość prób: 5,
Konfiguracja HA
Za pomocą dodatkowej integracji HACS: „Uptime Kuma HACS integration: dodane są sensory do HA, dodatkowo wykorzystany Dashboard HACS: button-card.
Prosty projekt odczytujący z analogowego licznika dane i przekazujący informację do HomeAssistant przez MQTT. Projekt wykorzystuje bibliotekę uczenia maszynowego Tensorflow Lite do analizy obrazu.
Hardware
ESP32 + OV2640 2.0MP camera module + antena (koszt ok 10$)
Integracja z kotłem Valliant VC 186 oraz sterownikiem pogodowym VC400 korzysta z protokołu eBUS. Jako adapter eBUS wykorzystywana jest płytka w wersji 2.2 zbudowana na podstawie strony eBus Adapter 3. Od czasu jego zlutowania (2020) pojawiło się kilka nowszych wersji adaptera, ale nie zamierzam zmieniać, bo działa bardzo skutecznie. Komunikacja z HA jest za pomocą serwera MQTT.
Schemat blokowy
Wygląd płytki adaptera eBus z UART
Oprogramowanie
Korzystam z ebusd uruchomionego na Linuxie (Debian) jako serwis.
Oczywiście wartości mqtthost, mqttport, mqttuser, mqttpass należy ustawić na poprawne.
Aby zmieniać niektóre wartości (krzywa grzewcza, stany liczników gazu) ebusd musi działać w trybie instalatora. Weryfikację, czy dany parametr jest modyfikowalny można sprawdzić w projekcie GIT https://github.com/john30/ebusd-configuration wyszukując odpowieni plik dla instalacji.
Weryfikacja działania ebusd
ebusctl info
dla mojej instalacji komenda zwraca
version: ebusd 24.1.24.1
update check: OK
device: /dev/ttyUSB0, serial
access: install
signal: acquired
symbol rate: 22
max symbol rate: 1441
min arbitration micros: 0
max arbitration micros: 3168
min symbol latency: 0
max symbol latency: 15
scan: finished
reconnects: 0
masters: 3
messages: 432
conditional: 7
poll: 110
update: 16
address 03: master #11
address 08: slave #11, scanned "MF=Vaillant;ID=BAI00;SW=0516;HW=7401", loaded "vaillant/bai.308523.inc" ([id_hw=7401]), "vaillant/08.bai.csv"
address 10: master #2
address 15: slave #2, scanned "MF=Vaillant;ID=40000;SW=0139;HW=7301", loaded "vaillant/15.400.csv"
address 31: master #8, ebusd
address 36: slave #8, ebusd
Problemy
Ponieważ rozwiązanie działało już przez kilka lat nastąpiło przepełnienie liczników (ebusd/bai/PrEnergyXXX) odpowiedzialnych za zliczanie zużycia gazu.
Poniżej komendy do zresetowania odpowiednich liczników:
#odczyt
ebusctl read -V -c bai PrEnergyCountHwc1
#zapis
ebusctl write -c bai PrEnergySumHc1 0
ebusctl write -c bai PrEnergySumHwc1 0
ebusctl write -c bai PrEnergyCountHc1 0
ebusctl write -c bai PrEnergyCountHwc1 0
Jeżeli przy zapisie są błędy „ERR: element not found” powyższe komendy należy wykonać w trybie instalatora (parametr „–accesslevel=install”).
Home Assistant
Karta ogrzewania w HA
Rozwiązanie bazuje na cyklicznym odczycie danych przez MQTT. Aby oczytać jakąś wartość należy najpierw wysłać wiadomość odpowiedni topic MQTT. Do testowania najlepiej użyć klienta umożliwiającego podłączenie się bezpośrednio do serwera MQTT, np. MQTT Explorer
Zużycie gazu można wyliczyć na podstawie liczników PrEnergySumHwc1 oraz PrEnergySumHw1. Na podstawie pomiarów należy wyliczyć stosunek zużycia gazu do sumy PrEnergySumHwc1 i PrEnergySumHw1.
Komponent do wprowadzenia poprzednich wartości odczytanych
Kiedyś wymyśliłem, że przydałaby się informacja, czy w garażu jest zaparkowany samochód. Wyszło całkiem proste urządzenie, które poza identyfikacją samochodu, jednocześnie weryfikuje – czy jest otwarta, czy zamknięta brama garażowa oraz mierzy temperaturę i wilgotność w garażu. Koszt ok 40 PLN (bez obudowy i zasilacza na microUSB).
Czujnik temperatury jest opcjonalny.
Ważne jest umiejscowienie całego urządzenia – na suficie, czujnik odległości skierowany w dół, nad końcem otwartej bramy garażowej, dzięki temu można wyłapać stany (otwarty garaż, auto/zamknięty garaż, brak auta/zamknięty garaż) dodatkowo czujnik musi być umieszczony nad zaparkowanym autem.
Wykorzystane komponenty:
Czujnik odległości HC-SR04
Czujnik SI7021 (ja wykorzystałem wolny czujnik od Sonoff TH10, TH16, itd.)
Wemos D1 mini
Poniżej schemat:
plus podłączenie SI7021 na D5 (pin 12). Na schemacie nie zaznaczono masy i podłączenie zasilania do Wemos D1 mini.
Oprogramowanie
Należy wcześniej zainstalować dodatek ESPHome w HomeAssistant.
Poniżej konfiguracja Wemos D1 mini w ESPHome. Należy dodatkowo utworzyć plik secrets.yaml w EspHome.
Istnieje oczywiście możliwość integracji przez moduł eth, ale ponieważ jest on kosztowny zaprojektowałem proste rozwiązanie wykorzystując wolne wyjścia w domowej centrali Satel Integra. Nie jest to dwukierunkowa integracja, a jedynie przekazywanie informacji od alarmu do HomeAssistant. Dzięki temu można stworzyć fajne automatyzacje na podstawie wykrytego ruchu. Koszt integracji ok 50 PLN
W tym rozwiązaniu akumulator w centrali alarmowej jest wykorzystywany jako UPS dla RaspberryPI, co oczywiście skraca czas działania alarmu przy długich wyłączeniach prądu.
NodeMCU (alternatywnie Wemos D1 mini – tańsze rozwiązanie, ja miałem pod ręką akurat wolny chipset NodeMCU)
Schemat blokowy
Zastosowałem 25W przetwornicę napięcia, aby z alarmu zasilić od razu RaspberryPI na którym jest uruchomiony HomeAssistant. Dzięki temu w przypadku braku zasilania RPi działa aż do wyczerpania baterii w alarmie.
Ważne jest użycie i skonfigurowanie odpowiednich wyjść w na płycie Integra – nie wszystkie wyjścia są wyjściami wysokoprądowymi.
Uwaga na schemacie nie zaznaczono masy.
Widok płytki od strony elementów
Software
Alarm
Konfiguracja w systemie alarmowym jest wykonana w oprogramowaniu DLOADX.
Wyjścia typu Out są wysterowane przez 3 sekundy przez wejścia z czujek PIR
Jedno z moich pierwszych urządzeń to pilot na podczerwień (odbiornik i nadajnik) oraz pomiar temperatury, wilgotności i ciśnienia (szacunkowy koszt ok 40 PLN, bez zasilacza). Jest też gotowy shield IR do Wemos D1 mini – co jest prostszym rozwiązaniem niż lutowanie całości.
Wykorzystane komponenty:
Wemos D1 mini
BME280
nadajnik i odbiornik podczerwieni
Poniżej schemat logiczny:
Układ połączeń
Uwaga – należy jak najdalej odsunąć czujnik BME280 od Wemos D1
Oprogramowanie
Do układu Wemos D1 mini zostało wgrane oprogramowanie Tasmota Sensor. Wcześniej używałem ESPHome, ale w tym przypadku trudniej obsługiwać sterowanie różnymi pilotami na podczerwień. Tasmota Sensor rozpoznaje kody pilotów różnych dostawców., dzięki czemu skrypty w HomeAssistant są prostsze. Opcjonalnie można by też użyć wersji tasmota-ir, aby obsłużyć więcej różnych dostawców urządzeń IR.
Konfiguracja
Tasmota Sensor
Dodatkowo w Tasmocie jest ustawiona konfiguracja połączenia do serwera MQTT.
Odczyt kodów IR z pilota najlepiej przeprowadzić z poziomu konsoli Tasmota.
HomeAssistant
Czujnik BME280 wykrywany jest automatycznie przez HA.
Przykładowy skrypt wysyłający kod IR do urządzenia:
Poniżej tania integracja (ok. 50PLN) odczytu bieżącego zużycia wody z licznika Multical 21. Aby uruchomić tą integracja trzeba:
spore umiejętności przy lutowaniu oraz
kontakt z firmą, która obsługuje rozliczenie wody i trochę cierpliwości, aby otrzymać kod deszyfrujący AES dla licznika
Licznik Multial 21 może wysyłać dane bezprzewodowo przy użyciu protokołu Wireless M-Bus. Multical21 zapewnia następujące dane:
licznik całkowity – całkowite zużycie wody w m³
licznik docelowy – zużycie wody do 1. dnia bieżącego miesiąca
temperatura średnia – w °C
temperatura otoczenia – w °C
kody informacyjne – BURST, LEAK, DRY, REVERSE, TAMPER, RADIO OFF
Kod informacyjny wyświetlany na wyświetlaczu
Znaczenie
LEAK
W ciągu ostatniej doby nie zanotowano zatrzymania przepływu przez wodomierz przez minimum jedną godzinę. Może to świadczyć o nieszczelności kranu lub zbiornika toalety.
BURST
Stałe wysokie zużycie wody w ciągu pół godziny, co oznacza pęknięcie rury.
TAMPER
Próba oszustwa. Wodomierz nie nadaje się do celów rozliczeniowych.
DRY
Brak wody w wodomierzu. Pomiar nie jest prowadzony.
REVERSE
Woda przepływa przez wodomierz w nieprawidłowym kierunku.
RADIO OFF
RADIO OFF wyświetlany ciągle. Nadajnik radiowy jest permanentnie wyłączony.
Hardware
Wemos D1 mini (lub ESP32) – koszt ok 12 PLN
moduł radiowy CC1101 868 MHz z anteną (ja zamówiłem tu) – koszt ok 30 PLN
Trzeba sporo wprawy, aby zlutować połączenia do CC1101 – raster jest mniejszy niż standardowy goldpin.
CC1101
ESP8266
VCC
3V3
GND
GND
CSN
D8
MOSI
D7
MISO
D6
SCK
D5
GDO0
D2
Poniżej jak mi to wyszło:
Uruchomienie
Polecam najpierw złożyć, uruchomić bez kodu deszyfrującego – zweryfikować, czy działa komunikacja . A następnie ponowne programowanie Wemos D1 mini już z kluczem AES. W moim przypadku odczyt następuje z ok 10 metrów przez kilka ścian.
Aby uzyskać klucz deszyfrujący AES należy skontaktować się ze spółką rozliczającą wodę. W moim przypadku wystarczyło pismo ogólne zgłoszone przez platformę EPUAP (w tym wypadku nie musiałem poświadczać swojej tożsamości) i plik z kluczem oraz hasłem dostałem bezpośrednio na emaila. (podziękowania dla pana Piotra ze Spółki Komunalnej Żukowo).
Na ekranie oraz w pliku etc\wmbusmeters.d\<numer_Licznika> będzie klucz który przepisujemy do pliku config.h, ponownie kompilujemy i wgrywamy oprogramowanie do Wemos D1 mini.
Konfiguracja HA
W moim przypadku Wemos przesyła informacje do serwera MQTT uruchomionego jako dodatek w HA.