Nie do końca chyba rozumiem działanie MQTT. W każdym razie to, co jest w tych nowym HA. Ale do brzegu.
Mam przykładowo 2-3 urządzenia, które wynikowo mają dać w HA jedno urzadzenie, jedną encję do zarządzania. Węc logicznie, jak dla mnie, najlepiej to połączyć w MQTT (pewnie w NR też się da). Tylko tworząc najpierw plik w HA, w zgodzie z najnowszą wersją, dostaję błąd. Wnioskuję, że powodem jest to, że w samym MQTT nie ma takich danych, do których odwołuje się moja tworzona encja. Czyli najpierw musiałby pojawić się dane w brokerze, by je podłączyć do HA?
W sumie chodzi mi o to by stworzyć wirtualny HVAC z danymi z różnych czujników temperatur i z różnych termostatów. By w jednej encji było wszystko. Da się to zrobić?
Błąd nie jest powodem braku danych w brokerze. W encji możesz wpisać dowolne tematy, nawet jeszcze nie istniejące. Szukaj błędu w samej konfiguracji HA.
HA nic sam nie odczytuje tylko czeka aż broker mu podeśle na subskrybowanym temacie.
@RobinI30 jakoś za bardzo tutaj nie widzę błędu:
mqtt:
climate:
- name: Pokoj1
modes:
- "auto"
- "cool"
- "dry"
- "fan_only"
- "heat"
- "off"
swing_modes:
- "off"
- "vertical"
- "horizontal"
- "both"
fan_modes:
- "auto"
- "low"
- "medium low"
- "medium"
- "medium high"
- "high"
preset_modes:
- "eco"
- "away"
- "boost"
- "none"
- "sleep"
power_command_topic: "pokoj1/ac/power/set"
preset_mode_command_topic: "pokoj1/ac/preset_mode/set"
mode_command_topic: "pokoj1/ac/mode/set"
temperature_command_topic: "pokoj1/ac/temperature/set"
current_temperature_topic: "pokoj1/ac/current_temperature/set"
fan_mode_command_topic: "pokoj1/ac/fan/set"
swing_mode_command_topic: "pokoj1/ac/swing/set"
precision: 0.5
Coś brakuje?
Ostatnio też się z tym pałowałem - okazało się, że ważna była kolejność definicji .
Teraz nie pamiętam o które chodziło.
Mój konfig:
- name: Zadana na Kotle
modes:
- "off"
- "heat"
current_temperature_topic: "VITOWIFI/ZExt"
temperature_state_topic: "VITOWIFI/ZExt"
temperature_command_topic: "VITOWIFI/SET/ZExt"
mode_state_topic: "VITOWIFI/Mode"
mode_state_template: >-
{% set values = { '0':'off', '1':'heat', '2':'heat'} %}
{{ values[value] if value in values.keys() else 'off' }}
min_temp: 0
max_temp: 30
precision: 1.0
Weź najbardziej rozbudowany przykład, dostosuj dla siebie tylko nie zmieniaj kolejności.
Dobrze byłoby abyś pokazał o co krzyczy.
To jest prawie żywcem skopiowane z manuala:
Konfig na samym dole. Dodałem tylko własne tryby w poszczególnych sekcjach oraz jedną linijkę:
current_temperature_topic: "pokoj1/ac/current_temperature/set"
U Ciebie widzę, że jest on wyżej. Zobaczymy czy to to.
–edit–
To nie to:
Invalid config for [mqtt]: not a valid value @ data[‘mqtt’][‘climate’][0]. Got OrderedDict([(‘name’, ‘Pokoj1’), (‘modes’, [‘auto’, ‘cool’, ‘dry’, ‘fan_only’, ‘heat’, ‘off’]), (‘swing_modes’, [‘off’, ‘vertical’, ‘horizontal’, ‘both’]), (‘fan_modes’, [‘auto’, ‘low’, ‘medium low’, ‘medium’, ‘medium high’, ‘high’]), (‘preset_modes’, [‘eco’, ‘away’, ‘boost’, ‘none’, ‘sleep’]), (‘current_temperature_topic’, ‘pokoj1/ac/current_temperature/set’), (‘power_command_topic’, ‘pokoj1/ac/power/set’), (‘preset_mode_command_topic’, ‘pokoj1/ac/preset_mode/set’), (‘mode_command_topic’, 'p… (See ?, line ?).
Miałem podobne komunikaty, że stosuje opcje z poza zakresu.
Po drugie, to mam dokładnie takie jak pokazałem wcięcia - twoje myślniki są głębiej ?
Robiłem “na macanego” więc recepty nie znam.
Jest źle skopiowane bo widać, że źle zaczyna kolorować składnie yaml. Skopiowalem z manuala i kolorowanie mam poprawne. Niestety nie widzę gdzie popełniłeś błąd.
Kopiowałem dokładnie z tego kawałka:
Pierwsza linijka bez spacji, każde kolejne wcięcie to wielokrotność dwóch spacji. I jak widać w modes a - są o dwie spacje więcej i u mnie też tak jest, a w wersji @RobinI30 jest na równo.
Też kopiowałem zgodnie z sugestią @macek, kolorowanie jest inne.
Nie masz gdzieś innego wpisu mqtt: ?
Wrzuć kopie z manuala na forum to sam się przekonasz.
Napisałem jeszcze raz, VS Code nic nie pokazuje błędnego. Kopiuje bezpośrednio z niego tutaj:
# Full example configuration.yaml entry
mqtt:
climate:
- name: PokojDuzy
modes:
- "auto"
- "cool"
- "dry"
- "fan_only"
- "heat"
- "off"
swing_modes:
- "off"
- "vertical"
- "horizontal"
- "both"
fan_modes:
- "auto"
- "low"
- "medium_low"
- "medium"
- "medium_high"
- "high"
preset_modes:
- "eco"
- "away"
- "boost"
- "none"
- "sleep"
current_temperature_topic: "pokojduzy/ac/current_temperature/set"
power_command_topic: "pokojduzy/ac/power/set"
preset_mode_command_topic: "pokojduzy/ac/preset_mode/set"
mode_command_topic: "pokojduzy/ac/mode/set"
temperature_command_topic: "pokojduzy/ac/temperature/set"
fan_mode_command_topic: "pokojduzy/ac/fan/set"
swing_mode_command_topic: "pokojduzy/ac/swing/set"
precision: 0.5
Chyba teraz wygląda ok, ale HA pokazuje nadal ten sam błąd co wyżej. Dołączam sam plik. To jedyny (mój pierwszy) gdzie korzystam z MQTT w HA w pliku.
mqtt.yaml (963 bajty)
Pokaż jak robisz include w config tego pliku.
Ja dodawalem poszczególne funkcje cząstkowo. Tak dlugo próbowale aż zadziałalo.
Nietety reguły nie odkryłem.
Piszę z tel, więc nie wkleję konfigu. Mam zrobiony osobny katalog i wszystko co do niego trafia jest wczytywane w config. Inne pliki działają. Tylko z tym mam problem. I to jedyny z mqtt.
–edit—
Ładuję pliki przez
packages: !include_dir_named packages
@gregusz tego się nie spodziewałem
Opcje muszą pochodzić ze zbioru dopuszczalnych.
mqtt:
climate:
- name: PokojDuzy
modes:
- "auto"
- "cool"
- "dry"
- "fan_only"
- "heat"
- "off"
swing_modes:
- "off"
- "vertical"
- "horizontal"
- "both"
fan_modes:
- "auto"
- "low"
- "medium_low"
- "medium"
- "medium_high"
- "high"
preset_modes:
- "eco"
- "away"
- "boost"
# - "none" ## eco, away, boost, comfort, home, sleep and activity.
- "sleep"
current_temperature_topic: "pokojduzy/ac/current_temperature/set"
power_command_topic: "pokojduzy/ac/power/set"
preset_mode_command_topic: "pokojduzy/ac/preset_mode/set"
mode_command_topic: "pokojduzy/ac/mode/set"
temperature_command_topic: "pokojduzy/ac/temperature/set"
fan_mode_command_topic: "pokojduzy/ac/fan/set"
swing_mode_command_topic: "pokojduzy/ac/swing/set"
precision: 0.5
Skopiowałem Twojego yaml, usunąłem tylko none i przeszło sprawdzenie kontroli poprawności.
Też nie. Choć mogło mnie trochę na to naprowadzić to, że samo “precision” też jest dostępne w ograniczonym zakresie (1, 0.5, 0.1), ale to wydawało mi się dość naturalne.
No ale po zmianie zadziałało i mam to co powinno być. Teraz tylko w NR wypchnąć dane, by zapełnić encje danymi.