HA Integracja z własnym urządzeniem poprzez MQTT + podział na osobne Include

Cześć,

Od niedawna zacząłem przygodę z HA, wcześniej bazowałem na gotowych platformach “chmurowych” pracujących na MQTT, ale nie o tym. Otóż wykonałem swój własny sterownik, który komunikuje się z lokalnym MQTT Brokerem postawionym na HA i próbuję go zintegrować z home assistant. W celu przetestowania komunikacji, nawiązałem połączenie w NodeRED na konkretnym temacie, który akurat służy na wystawianie sygnałów o stanie przełączników, czyli mamy coś takiego:

jest grupa przełączników (switch) a w niej kolejno sw1, sw2 itd., które przyjmują wartość on albo off w zależności od stanu. Teraz chciał bym tą informację odebrać i przedstawić za pomocą encji switch w HA

W tym celu skorzystałem z poradnika Home Assistant - MQTT - Sterujemy przełącznikiem - YouTube ale problem w tym, że nie korzystam ani z sonoff ani z innych gotowych rozwiązań i pytanie do Was, czy jest jakaś możliwość wklepania ręcznie encji i wskazania jej “ścieżki” tzn tematu oraz wartości payload, na które ma patrzeć w celu wizualizowania swojego stanu na dashboard ?

Edit:

Jeszcze jedna sprawa, 10 minuta filmu, Artur pokazuje jak dodać grupe przełączników w celu lepszego porządku w plikach, w moim przypadku, kiedy próbuję coś takiego zrobić, mam następujący błąd:

Film pokazuje starą metodę definicji encji MQTT
Po nowemu jest

, więc “includowanie” encji MQTT powinno zaczynać się od

mqtt: !include mqtt_include.yaml

a w dołączanym pliku (plikach)

#mqtt:
   switch: 
    - unique_id: sprinkler_1
      name: "Strefa 1"
      state_topic: "/Sprinkler_1/zone1/State"
      command_topic: "/Sprinkler_1/cmd/gpio/12"
      payload_on: "1"
      payload_off: "0"
      state_on: "1"
      state_off: "0"
      availability_topic: "/Sprinkler_1/status"
      payload_available: "Online"
      payload_not_available: "Offline"
      icon: mdi:sprinkler-variant
      optimistic: false
      qos: 0
      retain: true

 #    ...itd


    - unique_id: sprinkler_2
      name: "Strefa 2"

A gdzie masz wpis w pierwszej linijce homeassistant:

1 polubienie

@RobinI30 - Dziękuję Ci bardzo za link, dodałem przykłady z dokumentacji i mój HA “widzi” encje włączników oraz lamp, działa to cudownie, aż sam jestem pod wrażeniem jak łatwo można zrobić integrację poprzez plik.

@artpc - szczerze mówić nie wiem, a czy jest tam coś istotnego co pomniałem ? Mógłbyś mi pokazać jak masz u siebie, albo jak powinno być ?

Nadal pozostaje kwestia podziału na pliki włączników, lamp itd. z czym nie umiem sobie poradzić, co tu jest nie tak ? o jaką platformę chodzi ?

Zrzut ekranu 2023-01-16 o 17.17.36

Nie wytłumaczę Ci jak działa każdy rodzaj include dokładnie, ale użycie !include powoduje, że ten ciąg zamieniany jest literalnie co do znaczka na zawartość określoną po nim.
W twoim przypadku gdy to wszystko się połączy otrzymasz

switch:
mgtt:
  switch:
      - name ..........................

czyli dokładnie co innego niż oczekujesz. A oczekujesz

mgtt:
  sensor:
      - name ..........................
  ..........
## itd ,,koleine  sensor
      -name  
........................
.......................   
      -name
  switch:
      - name
 .....................
      -name

Robisz więc jak napisałem wcześniej

Wtedy plik nazwa_pliku.yaml

zawiera wyszko bez ciągu “mqtt:”, który - jak include złoży to wszystko do kupy - może wystąpić tylko raz w całym config.

  sensor:
      - name ..........................
  ..........
## itd ,,koleine  sensor
      -name  
........................
.......................   
      -name
  switch:
      - name
 .....................
      -name

Ostatni raz odpowiadam na obrazkowe załączniki - dadaj coś co daje się poprawić.

Drugie podejście, tym razem postaram się załączyć pliki, tak by można było je edytować.
Cel modyfikacji- podział pliku configuration.yaml osobno na switch, sensor, light w tym celu poczyniłem:

  • dla lepszego porządku utworzyłem katalog w folderze CONFIG o nazwie “mymqtt” a w nim kolejno pliki “switches.yaml”; “lights.yaml” oraz “sensors.yaml”
  • w pliku configuration.yaml pozostawiłem następujący wpis
# Loads default set of integrations. Do not remove.
default_config:
automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml


#dodaje mqtt i buduje struktore wlacznikow, sensorów oraz swiateł
mqtt: 
  switch:
    !include mymqtt/switches.yaml
  sensor:
    !include mymqtt/sensors.yaml
  
  light: 
    !include mymqtt/lights.yaml

następnie w pliku “switches.yaml” umieszczam włączniki:


  switch:
    - unique_id: switch001
      name: bathroom
      state_topic: "home/bathroom/gpio/13"
      command_topic: "home/bathroom/gpio/13"
      payload_on: "on"
      payload_off: "off"

    - unique_id: switch002
      name: wlacznik8
      state_topic: "home/bathroom/gpio/12"
      command_topic: "home/bathroom/gpio/12"
      payload_on: "on"
      payload_off: "off"

sensory:


  sensor:
    - unique_id: sens001
      name: "Temperature"
      state_topic: "office/sensor1"
      unit_of_measurement: "°C"
      value_template: "{{ value_json.temperatura }}"
    - unique_id: sens002
      name: "Humidity"
      state_topic: "office/sensor1"
      unit_of_measurement: "%"
      value_template: "{{ value_json.humidity }}"

I lampy:

  light:
    - unique_id: light001
      name: "Office light"
      state_topic: "office/light/status"
      command_topic: "office/light/switch"
      brightness_state_topic: 'office/light/brightness'
      brightness_command_topic: 'office/light/brightness/set'
      qos: 0
      payload_on: "ON"
      payload_off: "OFF"
      optimistic: false

    - unique_id: light002
      name: "Lampa239"
      state_topic: "office/light/status"
      command_topic: "office/light/switch"
      brightness_state_topic: 'office/light/brightness'
      brightness_command_topic: 'office/light/brightness/set'
      qos: 0
      payload_on: "ON"
      payload_off: "OFF"
      optimistic: false

Będę bardzo wdzięczny za pomoc w podziale plików yaml :slight_smile:

pozostałe pliki dla poszczególnych klas urządzeń podobnie

To może prostsze będzie dla Ciebie Package w Home Assistant .

@RobinI30 - próbowałem bez przedrostków “switch”; “sensor” itd ale popełniłem literówkę w nazwie jednego z plików i dlatego mi nie działało, myślałem, że problem jest w braku wspomnianych nazw więc dodałem je z powrotem. Tak czy inaczej najważniejsze, że działa. Może ktoś skorzysta w przyszłości.

@macek - fajna sprawa z tym package, ale include zrobione w strukturze jak powyżej są dla mnie bardziej czytelne i na ten moment zostanę przy nich.