LW IT Solutions logo LW IT Solutions logo LW IT Solutions
« Przegląd bloga /Smart Home/Tutorials / Dodawanie czujników MQTT do Home Assistant: wyświetlanie...
Ten artykuł w innych językach:

Dodawanie czujników MQTT do Home Assistant: wyświetlanie pomiarów w panelu energii

Dodawanie czujników MQTT do Home Assistant: wyświetlanie pomiarów w panelu energiiDodawanie czujników MQTT do Home Assistant: wyświetlanie pomiarów w panelu energii

Management Summary

Panel energii Home Assistanta przekształca odczyty liczników w przegląd zużycia energii w domu. MQTT Discovery przedstawia licznik systemowi za pomocą komunikatu, aby wartości mogły zostać prawidłowo rozpoznane i zapisane. Pomaga to dodawać własne urządzenia do wspólnej analizy. Chwilowa moc i energia zgromadzona w czasie oznaczają jednak różne rzeczy, dlatego panel potrzebuje właściwego rodzaju danych. Licznik pokazujący wyłącznie bilans nie ujawni osobnych sum poboru i oddawania prądu.

Spis treści
  1. 1. Najpierw określenie mierzonej wielkości
  2. 2. Publikacja poprawnej konfiguracji czujnika
  3. 3. Dostępna konfiguracja i świeże odczyty
  4. 4. Osobna kontrola każdego etapu
  5. Pytania i odpowiedzi
  6. Źródła

MQTT Discovery opisuje czujnik w Home Assistant. Osobny temat, czyli nazwany kanał wiadomości, przenosi odczyty. Panel energii korzysta następnie z odpowiednich danych i statystyk. Każdy etap wymaga osobnej kontroli: poprawny JSON nie gwarantuje działającego wpisu czujnika w Home Assistant ani wykresu energii.

1. Najpierw określenie mierzonej wielkości

Przykład dotyczy skumulowanego poboru energii elektrycznej w kWh. Licznik zwykle rośnie, lecz może rozpocząć ponownie od zera, dlatego pasuje tu total_increasing. Licznik całkowitego zużycia bez resetów może korzystać z total bez last_reset. Licznik bilansujący, którego wartość rośnie i maleje, wymaga innego traktowania; total_increasing błędnie interpretowałoby rzeczywiste spadki.

Moc w W opisuje chwilowe tempo przepływu energii, a energia w kWh — zgromadzoną ilość. Aktualne wersje Home Assistant obsługują również odpowiednie czujniki mocy w polach mocy panelu: device_class: power z state_class: measurement. Zmiana etykiety W na kWh nie przelicza wartości.

Cztery kontrole od Discovery do panelu energii
Cztery kontrole od Discovery do panelu energii

2. Publikacja poprawnej konfiguracji czujnika

Broker to serwer przekazujący wiadomości MQTT odpowiednim subskrybentom. Warunki wstępne to dostępny broker, skonfigurowana integracja MQTT i włączone Discovery z właściwym prefiksem. Przykład dla pojedynczego komponentu używa homeassistant/sensor/example_meter_import/config. Identyfikatory w temacie Discovery dopuszczają litery, cyfry, podkreślenia i łączniki, a nie dowolny tekst.

Plik energy-discovery.json opisuje fikcyjny licznik. Stały identyfikator musi pozostać unikalny w instalacji. Nazwa wyświetlana może zmieniać się niezależnie.

{
  "name": "Imported energy",
  "state_topic": "example/meter/import_kwh",
  "unique_id": "example_meter_import",
  "device_class": "energy",
  "unit_of_measurement": "kWh",
  "state_class": "total_increasing",
  "expire_after": 900,
  "device": {
    "identifiers": [
      "example_meter"
    ],
    "name": "Example meter"
  }
}

state_topic jest wymagany dla czujnika MQTT. Pozostałe pola zależą od potrzebnej funkcji. Unikalny identyfikator umożliwia zarządzanie przez rejestr encji i pokazane powiązanie z urządzeniem; nie stanowi ogólnego wymogu panelu energii. Discovery urządzenia przez wspólny komunikat device używa innego formatu z dodatkowymi polami obowiązkowymi.

3. Dostępna konfiguracja i świeże odczyty

Przykład zachowuje konfigurację u brokera przez Retain. Alternatywą jest ponowne wysłanie Discovery po komunikacie startowym Home Assistant, zwykle online w temacie homeassistant/status. Po Discovery potrzebne są również aktualne stany. Retain jest sposobem dostarczania danych, a nie obowiązkowym polem ani gwarancją zapisu na dysku na wypadek awarii brokera.

Poniższe polecenia wymagają klientów Mosquitto w wersji co najmniej 2.1, ponieważ korzystają z -o. Plik mqtt-client.conf zawiera adres brokera, ustawienia TLS i dane logowania jako opcje, po jednej w wierszu. Ograniczone uprawnienia pliku chronią dane dostępowe; hasło nie trafia do wiersza poleceń. W starszych wersjach alternatywą jest domyślny plik konfiguracji klienta. Plik nie może zawierać opcji Retain dla publikacji stanów.

mosquitto_pub -o ./mqtt-client.conf -q 1 -r \
  -t homeassistant/sensor/example_meter_import/config \
  -f energy-discovery.json
mosquitto_pub -o ./mqtt-client.conf -q 1 \
  -t example/meter/import_kwh -m '1234.500'
mosquitto_pub -o ./mqtt-client.conf -q 1 \
  -t example/meter/import_kwh -m '1234.625'

Najpierw wykonywane jest tylko polecenie konfiguracji. Przed wysłaniem obu odczytów encja i subskrypcja stanu muszą być gotowe; udana publikacja nie dowodzi przetworzenia Discovery. Podczas migracji trzeba również usunąć istniejący zachowany odczyt z tematu stanu. Kolejne komunikaty bez Retain nie kasują starszej zachowanej wartości.

Różnica między przykładowymi odczytami wynosi 0,125 kWh. Przykład jest przeznaczony dla odizolowanego czujnika testowego; fikcyjne odczyty nie powinny trafić do historii rzeczywistego licznika. Publikacja powinna odbywać się regularnie, z zapasem wobec ustawionego czasu ważności 900 sekund.

Komunikaty stanu celowo pomijają -r. Przy expire_after stary zachowany odczyt mógłby wrócić po przeładowaniu i ponownie wyglądać na świeży. Komunikaty dostępności Birth i Will mogą dodatkowo sygnalizować utratę połączenia. Nie dowodzą aktualności fizycznego pomiaru.

4. Osobna kontrola każdego etapu

  • Discovery: Subskrypcja dokładnego tematu konfiguracji oraz kontrola błędów MQTT w Home Assistant. Poprawny składniowo JSON może naruszać schemat czujnika.
  • Odczyt: W example/meter/import_kwh powinna występować liczba z kropką dziesiętną, bez jednostki. Subskrypcja tej gałęzi nie obejmuje homeassistant/....
  • Statystyki: Kontrola klasy energii, jednostki kWh, właściwej klasy sumy oraz aktywnego Recorder. Błędy statystyk i niedostępne wartości wymagają wyjaśnienia przed interpretacją wykresu.
  • Panel: Wybór czujnika w polu energii pobranej. Statystyki krótkoterminowe powstają co pięć minut, długoterminowe co godzinę. Pierwszy odczyt ustala punkt odniesienia; nie oznacza zużycia od instalacji. Pełny wykres nie jest gwarantowany bezpośrednio po Discovery.

Niespodziewane spadki wymagają sprawdzenia licznika i klasy stanu. Reset oraz rzeczywisty ujemny przepływ energii są różnymi zdarzeniami. Sumowanie liczników resetujących się w różnych chwilach może tworzyć sztuczne wartości. Osobne źródła w panelu unikają tego konkretnego problemu sumowania.

Pytania i odpowiedzi

Jak usunąć wykryty czujnik?

Pusty komunikat Retain w dokładnie tym temacie Discovery usuwa konfigurację. Nie oznacza to automatycznego skasowania historycznych statystyk. Czyszczenie powinno dotyczyć wyłącznie zamierzonego tematu i encji.

mosquitto_pub -o ./mqtt-client.conf -q 1 -r \
  -t homeassistant/sensor/example_meter_import/config -n

Czy jeden licznik netto rozdziela pobór i oddawanie?

Same skumulowane odczyty netto nie pozwalają odtworzyć obu przepływów. Osobne rejestry poboru i oddawania zachowują tę informację, a bilansowanie ją traci. Dostępność rejestrów zależy od modelu licznika. Całkowanie odpowiednio częstych próbek mocy stanowi inną możliwość; dokładność zależy od próbkowania i metody obliczeniowej.

Jakie uprawnienia są potrzebne?

Przykładowy nadajnik potrzebuje zapisu w tematach konfiguracji i stanu, a Home Assistant odpowiednich subskrypcji. Discovery wyzwalane startem oraz dostępność wymagają dodatkowych tematów. Przykład czujnika nie jest kompletną polityką ACL dla elementów wykonawczych ani całej instalacji.

Źródła

Lukas Wójcik

Lukas Wójcik

Systems architect and technology enthusiast specializing in scalable tracking solutions, GMP Stack (GA4 & GTM), and robust backend architectures. Advocate for clean code and privacy-first design.

Kontakt

Masz pytanie lub pomysł na projekt internetowy? Napisz krótko, o co chodzi. Formularz korzysta z reCAPTCHA i formconfirmed do ochrony przed spamem.

Napisanie komentarza

Doświadczenia z innymi urządzeniami lub integracjami oraz pytania o konfigurację są tu mile widziane.

Adres e-mail nie jest publikowany. Pola obowiązkowe oznaczono gwiazdką.

LUKASWOJCIK.COM · NEWSLETTER

Nowe pomysły w skrzynce

Nowe artykuły, praktyczne narzędzia i informacje o projektach.

Wybierz tematy (opcjonalnie)
Bez wyboru: wszystkie tematy.

Zapis wymaga potwierdzenia e-mailem. · Prywatność

Prywatność · Newsletter

Adres e-mail, język, wybrane tematy oraz daty zapisu i potwierdzenia są przechowywane w celu wysyłki newslettera. Wymagane jest potwierdzenie zapisu. Każda wiadomość zawiera link do natychmiastowej rezygnacji. Formconfirmed chroni formularz przed spamem. Brak śledzenia otwarć i kliknięć.

Pełna polityka prywatności ↗