W artykule „Sterownik do piwnej lodówki, czyli grzanie i chłodzenie (brzeczki, piwa), na bazie ESPHome i Home Assistant, z integracją z Brewfather” wspomniałem, że w mojej – coraz mniej tylko testowej – migracji z BrewPiLess do ESPHome, m.in. celu lepszej integracji z Home Assistant, jest jeszcze jedna luka, a mianowicie urządzenie iSpindel, które w standardzie przesyłało informacje do BrewPiLess, a BrewPiLess dalej słał jej do Home Assistant (MQTT) i Brewfather (HTTP). Po zastąpieniu BrewPiLess przez ESPHome skonfigurowałem urządzenie iSpindel tak, by przekazywało informacje bezpośrednio to Brewfather, co jest dla mnie ważniejsze, niż to, by mieć je (tylko) w Home Assistant. W końcu jednak przyszła pora, by również tym tematem się zająć…
Spis treści w artykule
iSpindel nadaje do Home Assistant, a ten nadaje do Brewfather
Rozważałem kilka wariantów, jak to zrobić, by informacje z urządzenia iSpindel trafiały zarówno do Brewfather (ważniejsze), jak i do Home Asistant, by móc z nimi dalej pracować również w tym systemie. Ostatecznie – przynajmniej na razie, bo w przyszłości może to się zmieni – zdecydowałem się wykorzystać tutaj serwer MQTT, zamiast połączenia HTTP (API).
Głównie dlatego, że taki wariant umożliwia mi korzystanie z urządzenia iSpindel również poza siecią, gdzie mam serwer Home Assistant, a dopóki będzie dostęp do internetu, informacje z niego będą trafiać po MQTT do serwera Home Assistant, a stąd też i do Brewfather. Bo jak już być może niektórzy się domyślają, właśnie na taki wariant się zdecydowałem:
- iSpindel -> [MQTT] -> Home Assistant -> [HTTP] -> Brewfather
I na razie działa to całkiem sprawnie, dzięki czemu informacje z iSpindel mam zarówno w Home Assistant, jak i Brewfather. A dzięki temu, że jako „punkt wejścia” informacji z Home Assistant w Brewfather dałem adres dla urządzenia iSpindel, zamiast „niestandardowy strumień”, to Brewfather nawet nie wie, że to nie iSpindel jest dostawcą danych. Zdecydowałem się na taki krok nieprzypadkowo, a po analizie tego, jakie informacje „na jakim kanale” można do Brewfather przesłać.
Połączenie iSpindel do serwera MQTT
Samej konfiguracji MQTT w iSpindel nie będę podawał, bo jest dość klasyczna – adres serwera, port, nazwa użytkownika i hasło. Trzeba mieć tylko na uwadze, że iSpindel korzysta z tematu (kanału) „ispindel”, więc użytkownik musi mieć możliwość zapisywania wiadomości do tego tematu (ważne, jak korzysta się z ACL).
A wszystkie informacje z iSpindel do serwera MQTT są przesyłane „w temacie” (na kanale):
ispindel/nazwa_urządzenia/
Czyli dla urządzenia o nazwie „iSpindel01” będzie to:
ispindel/iSpindel01/temperature
ispindel/iSpindel01/battery
ispindel/iSpindel01/gravity
ispindel/iSpindel01/tilt
ispindel/iSpindel01/RSSI
ispindel/iSpindel01/interval
Można powiedzieć, że dość klasycznie i raczej jest to dość logicznie ułożone…
Sensory MQTT w Home Assistant
Zakładam, że w Home Assistant połączenie z serwerem MQTT jest skonfigurowane, a jak nie, to od tego trzeba zacząć. Obecnie robi się to z panelu sterowania Home Assistant, a konkretnie przez opcję „urządzenia i usługi”.
Więc zostaje tylko dodać odpowiednie sensory MQTT w Home Assistant, co można zrobić np. za pomocą takiego kodu:
mqtt:
sensor:
- state_topic: "ispindel/iSpindel01/temperature"
name: "iSpindel01-MQTT-Temp"
device_class: "temperature"
unit_of_measurement: '°C'
value_template: "{{ value | round(1) }}"
expire_after: 300
- state_topic: "ispindel/iSpindel01/battery"
name: "iSpindel01-MQTT-Voltage"
device_class: "voltage"
unit_of_measurement: 'V'
value_template: "{{ value | round(2) }}"
expire_after: 300
- state_topic: "ispindel/iSpindel01/gravity"
name: "iSpindel01-MQTT-Gravity"
device_class: "volume"
unit_of_measurement: '°P'
value_template: "{{ value | round(2) }}"
icon: mdi:beer
expire_after: 300
- state_topic: "ispindel/iSpindel01/tilt"
name: "iSpindel01-MQTT-Tilt"
value_template: "{{ value | round(2) }}"
icon: mdi:angle-acute
expire_after: 300
- state_topic: "ispindel/iSpindel01/RSSI"
name: "iSpindel01-MQTT-RSSI"
unit_of_measurement: "dBm"
device_class: signal_strength
expire_after: 300
- state_topic: "ispindel/iSpindel01/interval"
name: "iSpindel01-MQTT-Interval"
icon: mdi:timer-refresh-outline
unit_of_measurement: 's'
expire_after: 300
Oczywiście „tematy”, jak i ewentualnie nazwę czujników, należy dostosować do swoich potrzeb…
Wirtualny iSpindel i Brewfather
Gdy już dane mamy w Home Assistant, zostało jeszcze dostarczyć je do Brewfather. Oczywiście o ile ktoś korzysta. A, że ja korzystam, więc… I tak jak wcześniej już napisałem, zdecydowałem się przesłać te dane podszywając Home Assistant pod urządzenie iSpindel:
rest_command:
ispindel01_mqtt_to_brewfather:
url: !secret brewfather_stream_url_is
method: POST
verify_ssl: false
headers:
Content-Type: application/json
payload: '{"name": "iSpindel01_MQTT", "temperature": {{states(''sensor.ispindel01_mqtt_temp'')}}, "temp_unit": "C", "comment": "iSpindel01 MQTT", "gravity": {{states(''sensor.ispindel01_mqtt_gravity'')}}, "gravity_unit": "P", "battery": {{states(''sensor.ispindel01_mqtt_voltage'')}}, "angle": {{states(''sensor.ispindel01_mqtt_tilt'')}}, "interval": {{states(''sensor.ispindel01_mqtt_interval'')}}, "RSSI": {{states(''sensor.ispindel01_mqtt_rssi'')}} }'
Oczywiście parametr „brewfather_stream_url_is” został wcześniej zdefiniowany w pliku „secrets.yaml”:
brewfather_stream_url_is: "http://log.brewfather.net/ispindel?id=X77RC0zundTNfA
Zamiast „X77RC0zundTNfA” trzeba wstawić tutaj własny identyfikator, który jest dostępny w ustawieniach Brewfather.
A jak widać na grafice (zrzucie ekranu) powyżej, wszystko działa elegancko. Oczywiście jeszcze wcześniej trzeba dodać opcję odpowiedzialną za cykliczne wysyłanie informacji z Home Assistant do serwisu Brewfather.
Cykliczne przesyłanie danych do Brewfather
Natomiast to, czego brakuje w tym kodzie powyżej, to mechanizmu cyklicznie inicjującego wysyłanie danych do Brewfather. Co pewnie można to osiągnąć za pomocą kodu w stylu (strzelam, nie testowałem):
automation:
- alias: "iSpindel MQTT: Send to Brewfather"
trigger:
platform: time_pattern
seconds: '/900'
action:
service: rest_command.ispindel01_mqtt_to_brewfather
Natomiast ja celowo zdecydowałem się nie dodawać tego do pliku „configuration.yaml”, a zamiast tego skorzystałem z dodawania automatyzacji z poziomu panelu Home Assistant, choć musiałem się tutaj wspomagać edytorem kodu YAML:
alias: "iSpindel MQTT: Send to Brewfather"
description: ""
trigger:
- platform: time_pattern
minutes: /15
condition: []
action:
- service: rest_command.ispindel01_mqtt_to_brewfather
data: {}
mode: single
Kod ten, a właściwie wynikająca z niego automatyzacja, odpowiada za wysyłanie co 15 minut (900 sekund) informacji do Brewfather. Od razu też dodałem do ekranu przeznaczonego na „piwne IoT” przełącznik, pozwalający włączyć i wyłączyć tę automatyzację, zależnie od potrzeb:
A wybrałem automatyzację z poziomu panelu, bo nie tylko są tam identyczne opcje, ale też można ją rozbudowywać o dodatkowe elementy, już z poziomu graficznego interfejsu, co dla mnie jest wygodniejsze, bo YAML w takim wydaniu to cały czas jednak dla mnie pewnego rodzaju nowość, a do tego też widać, że kolejne opcje stopniowo są przenoszone „z kodu”, do interfejsu użytkownika (ostatnio System Monitor, wcześniej PING, wcześniej…).
A jakby tak ESPHome zastąpić oprogramowanie iSpindel?
I tak jak w temacie „Sterownik do piwnej lodówki, czyli grzanie i chłodzenie (brzeczki, piwa), na bazie ESPHome i Home Assistant, z integracją z Brewfather” na koniec zostawiłem wątek do rozwinięcia, czyli ten, o którym jest ten artykuł (poradnik), tak uznałem, że i tym razem podobny zabieg wykonam.
No bo skoro już tak migruję kolejne urządzenia na ESPHome, również te związane ze wspomaganiem warzenia piwa w domu, czy sterowaniem „piwną lodówką”, to może w ramach kolejnego „testu”, zamiast oprogramowania iSpindel, wykorzystać właśnie ESPHome i wtedy bezpośrednie połączenie po API z Home Assistant?
W końcu to „tylko” odczyt danych z MPU-6050 i DS18B20 podłączonych do ESP8266, do tego w ESPHome filtr dla danych (np. calibrate_linear lub calibrate_polynomial) oraz funkcja głębokiego uśpienia (Deep Sleep Component), dla ograniczenia poboru energii, bo w końcu jest to urządzenie bateryjne.
Nie powiem, kusi, choćby dla samego sprawdzenia, jak takie rozwiązanie będzie się sprawować. Więc kto wie, może niebawem będzie kolejny odcinek tej serii… ;-)
- Wakacje składkowe ZUS a zawieszenie działalności gospodarczej, czyli uważaj, bo być może nie będziesz mógł skorzystać (w 2024) - 1970-01-01
- Przykładowy kalkulator wyceny usługi druku 3D, czyli nie tylko materiał się liczy - 1970-01-01
- Home Assistant 2024.10, czyli nowa karta „nagłówek” i niedziałający TTS w ramach usługi Google Cloud - 1970-01-01