Połączenie kilku urządzeń w jedno w MQTT

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 :wink:
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.

1 polubienie

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.