Integracja LCN/Domiq w NodeRed + MQTT

W miarę szybko się uczę więc i Ctrl+E jakoś ogarnę :smiley:

Czytaj dokumentację HA - na elementarz zbytnio czasu nie mam i większości nie pamiętam :wink:

Muszę się pochwalić że dodałem już wszystkie switche/światła z modułów LCN, oraz sensory temperatury i wszystko działa. Jeszcze raz podziękowania dla Robinl30.
Z temperaturą mam na razie taki problem że LCN wysyła wartość temperatury w postaci ciągu 4 cyfr, przy czym pierwsza cyfra jest to zawsze “1”. Np. 1237 to wynikowo 23,7 stopnia. Jeszcze nie doszedłem do tego jak usunąć tą jedynkę więc temperatury na razie wyświetlają mi się tropikalne (123,7) :slight_smile:

 sensor:
    - unique_id: temperatura_hall
      name: "Temperatura Hall"
      state_topic: "LCN/value/0/31/r1"
      icon: mdi:thermometer
      unit_of_measurement: °C
      value_template: "{{ value_json  * 0.1 }}"

Kolejnym etapem były rolety. Zabrałem się do tego pełen nadzieji na sukces, ale szybko się okazało że sprawa nie jest taka prosta. LCN do sterowania roletami używa zawsze 2 wyjść na przekaźniku. Dlatego ruch w górę, ruch w dół i pauza to zawsze 2 komendy do przesłania", np…

  • góra: przekaźnik wyjście 3=1 i wyjście 4=1
  • dół: przekaźnik wyjście 3=1 i wyjście 4=0
  • pauza/stop: przekaźnik wyjście 3=0 i wyjście 4=0

Metodą prób i błędów rozwiązałem to w ten sposób że dodałem dla każdej rolety po 4 encje typu “button”

button:
    - unique_id: roleta_kuchnia_taras_p3_1
      name: "Roleta kuchnia taras p3 1"
      command_topic: "LCN/relay/0/14/3/set"
      payload_press: "1"
      icon: mdi:window-shutter
      qos: 0
      retain: false

    - unique_id: roleta_kuchnia_taras_p3_0
      name: "Roleta kuchnia taras p3 0"
      command_topic: "LCN/relay/0/14/3/set"
      payload_press: "0"
      icon: mdi:window-shutter
      qos: 0
      retain: false

    - unique_id: roleta_kuchnia_taras_p4_1
      name: "Roleta kuchnia taras p4 1"
      command_topic: "LCN/relay/0/14/4/set"
      payload_press: "1"
      icon: mdi:window-shutter
      qos: 0
      retain: false

    - unique_id: roleta_kuchnia_taras_p4_0
      name: "Roleta kuchnia taras p4 0"
      command_topic: "LCN/relay/0/14/4/set"
      payload_press: "0"
      icon: mdi:window-shutter
      qos: 0
      retain: false

a następnie łączyłem te encje w karcie button:

  • GÓRA
show_name: true
show_icon: true
type: button
tap_action:
  action: call-service
  service: button.press
  target:
    entity_id:
      - button.roleta_kuchnia_taras_p3_1
      - button.roleta_kuchnia_taras_p4_1
show_state: false
icon: mdi:arrow-up-bold
  • DÓŁ
show_name: true
show_icon: true
type: button
tap_action:
  action: call-service
  service: button.press
  target:
    entity_id:
      - button.roleta_kuchnia_taras_p3_1
      - button.roleta_kuchnia_taras_p4_0
icon: mdi:arrow-down-bold
show_state: false
  • STOP
show_name: true
show_icon: true
type: button
tap_action:
  action: call-service
  service: button.press
  target:
    entity_id:
      - button.roleta_kuchnia_taras_p4_0
      - button.roleta_kuchnia_taras_p3_0
icon: mdi:pause
show_state: false

Pewnie można to zrobić inaczej i lepiej, ale z moim poziomem wiedzy byłem w stanie tylko takie rozwiązanie znaleźć i chyba działa dobrze.
Teraz chciałbym zrobić jakąś ładną kartę do tego, ale o tym za chwilę.

Przed pomnożeniem *0.1 odejmij 1000, kolejność działań określisz nawiasami.

Spróbuj może w ten sposób …

sensor:
  - platform: mqtt
    unique_id: temperatura_hall
    name: "Temperatura Hall"
    state_topic: "LCN/value/0/31/r1"
    icon: mdi:thermometer
    unit_of_measurement: °C
    value_template: "{{ (value_json | int - 100) * 0.1 }}"


-1000 … chyba, że w dalszym ciągu nie rozumiem tych czarów w yamlu.

1 Like

Oczywiście, że 1000 , @RobinI30 masz rację , mój błąd zasugerowałem się tą tropikalną temperaturą

minus 1000 i pokazuje prawidłowo
Dziękuję

Tak do końca to pewien nie byłem… bo to co odwala się w tych wąsach!! :stuck_out_tongue_winking_eye:
Dawnymi czasy były zawody, kto napisze program C w jednej linii kodu.

…P.S. jeśli ta jedynka to zamiennik znaku, to formuła posypie się przy ujemnych temperaturach.

1 Like

Postaram się utrzymywać dodatnie temperatury w domu :slight_smile:

Wcześniej się nie odzywałem, bo zależało mi abyś poćwiczył.

Skoro już wdepnąłeś w NR i mqtt,to do rolet zastosuj

od strony HA będziesz miał standardową uniwersalną integrację - a całą konwersję do twojego fizycznego sprzętu przenieś do NR po mqtt. Nie będziesz nawet potrzebował tworzyć encji przekaźników rolet.
…przykład ogólny

# Example configuration.yaml entry
mqtt:
  - cover:
      name: "MQTT Cover"
      command_topic: "home-assistant/cover/set"
      state_topic: "home-assistant/cover/state"
      position_topic: "home-assistant/cover/position"
      availability:
        - topic: "home-assistant/cover/availability"
      qos: 0
      retain: true
      payload_open: "OPEN"
      payload_close: "CLOSE"
      payload_stop: "STOP"
      state_opening: "opening"
      state_closed: "closed"
      state_stopped: "stopped"
      payload_available: "online"
      payload_not_available: "offline"
      optimistic: false
      value_template: "{{ value.x }}"
      position_template: "{{ value.y }}"

Przy takiej konfiguracji słuchając tematu command_topic: “home-assistant/cover/set” z zależności od wpisanej wartości OPEN/CLOSE/STOP w NR mógłbyś bezpośrednio ustawić kombinację przekaźników. Daje to też możliwość rozszerzenia sterowania o % otwarcia (np.porzez czas wysterowania przekaźników)
Czy z Twoich rolet dostajesz info o rzeczywistym położeniu?

@RobinI30
Hej
Powiedz proszę czy robienie tego przez mqtt > ha jest w czymkolwiek lepsze od zrobienia tego w NR przez nody entity z companion component?
Szukam zalet i żadnych nie widzę, byle aktualizacja ze zmianą składni itp powoduje dodatkową robotę, ewentualna aktualizacja ustawień też jest łatwiejsza i szybsza przez nody.
Chyba że chodzi o “łatwiejsze” do zrobienia dla początkującego.

@bartik22 Pytasz o ten przypadek czy ogólnie?
Jakbyś ty miał to zrobić to jak? Zaczynając od początku to już poległbym na uruchomienia w HA serwera, który utrzymuje połączenie i słucha na jakimś porcie, później na parsowaniu odebranych wiadomości i aktualizacji stanów.

Spójrz więc całościowo - raz się wdepnęło w mqtt to nie ma już co mnożyć bytów ponad potrzebę.
Autor miał trzy możliwości: nie mieć nic, przez integrację z github (przez mqtt) lub to co zrobiłem w godzinę bez dostępu do sprzętu.

Jeśli pytasz dlaczego cover robię przez mgtt… bo tak dla mnie prościej, mgtt ma tą zaletę, że posiada retain to często się przydaje i nie muszę się martwić o aktualizację stanów - broker dba o to.

Przez ostanie parę lat znam jeden taki przypadek. Za to dużo czytam co przynoszą kolejne aktualizacje HA.

W tym przypadku nie ma takiej potrzeby aby tymi przekaźnikami sterować via HA.
Zupełnie ogólnie… to tak jakbyś zapytał cyrkowego konia - dlaczego orze pole w kółko? :slight_smile:

… a Wielkanoc jest ważniejsza!!

@RobinI30

Zaproszenie Pana @sucharek do NR to strzał w dziesiątkę :slight_smile:


Idąc dalej widzę jak to będzie wyglądać,
przykładowa abstrakcyjna automatyzacja:

Jak w salonie temp przekroczy 23stopnie
ma sie zasłonić roleta oraz zapalić światlo

i teraz mamy tak:
1 jestesmy w NR o odbieramy dane z LCN
2 wysyłamy do MQTT dane czujnika temperatury
3. w HA za pomocą template obliczmy temperaturę
4. w NR pobieramy obliczoną temperaturę z HA przez current state
5. jest powyżej 23 stopni więc robimy automatyzację przez call service opuszczenia rolety oraz włączenia światła w salonie
5. HA wysyła stan do MQTT
6. w NR odbieramy MQTT i wysyłamy do LCN

no istne w koło Macieju… :stuck_out_tongue:

Zobacz proszę o co mi chodzi tak na szybko:

flows (11).json (29,1 KB)
HA nam nie jest do niczego potrzebny

Skoro już jesteśmy w NR z LCN to nie rozumiem poco wychodzimy z niego żeby np. obliczyć temperaturę w HA?

W tym przypadku
1 jestesmy w NR o odbieramy dane z LCN, sprawdzamy temperaturę, opuszczamy rolete i zapalamy światło
2. stany wysyłamy do LCN i HA
Finito

Dlatego zapytałem, bo kto jak kto, ale Ty jesteś jedną z osób które doskonale znają możliwości i rozumie w ilu rzeczach NR jest lepsze. :sunglasses: Więc skoro widać że Pan @sucharek ogarnia temat, to warto go popchnąć w NR, a nie marnować czas na robienie template’ów.

Nie twierdzę, że mój sposób jest lepszy, może nawet ma jakieś błędy, po prostu spodziewałbym się akurat po Tobie bardziej propagowania NR :slight_smile:
W moim przypadku, nie mam żadnych template, nawet banalnie proste robie w NR, po prostu mam wszytsko w zasięgu wzroku i w jednym miejscu. np.

zaznaczasz to i masz też retain :slight_smile:

Panowie, chyba obydwoje mnie przeceniacie. Jestem dopiero na początku drogi, HA mam od dwóch tygodni a usłyszałem o nim jeszcze tydzień wcześniej :slight_smile:
Dopiero poznaję całe zagadnienie, głównie metodą prób i błędów. Dodatkową trudnością jest brak jakiejkolwiek wiedzy programistycznej, natomiast wydaje mi się że dosyć szybko pojmuję wszystko, szczególnie jeśli nauka poparta jest konkretnymi przykładami.

Niestety nie

Dokładnie tak o Tobie pomyślałem. Jak o sobie na początku. Na przykładach, metodą prób i błędów, bez wiedzy programistycznej, z pomocą życzliwych osób, ogarnąłem bez problemu NodeRed. Stąd moje zaciekawienie przedstawionego sposobu kolegi @RobinI30 , który nie zachęca do wdrażania w NR tylko używa go do samego “transportowania”, choć sam, ma tytuł masterNR :+1:

Sądziłem, że to o to zaznaczenie chodzi ? …

Podsumowanie…
Nie jestem apostołem NR aby przekonywać w jedną lub drugą stronę. Zgadam się z @bartik22 , że całość powinna być w NR, jednak zaczynając nikt nie określił celu i teraz tak się łata.
Po skończonej robocie przeważnie piszę wszystko od nowa.
Nawet Twoje już bym poprawił :wink: wydaje mi się, że każdy nod mqttin to osobny client dla brokera.
Załatwiłbym to jednym tematem “rtl_433/64/#”

Generalnie widzę że w NR pracuje się bardzo przyjemnie, ale jako że jestem na początku drogi muszę poznać znaczenie konkretnych nodów i sposoby ich użycia. Pewnie trochę czasu zajmie mi zanim zacznę się w tym sprawie poruszać.

Odnośnie rolet tylko potwierdziliście moje przypuszczenia że jest lepsza droga, a nawet kilka lepszych dróg do osiągnięcie zamierzonego celu. To co chciałbym osiągnąć docelowo to móc wykorzystać dedykowane karty do rolet na moim Dashboardzie, bo na razie jak widzicie klecę to z kilku elementów, grupuję przyciski itd… i zdaję sobie sprawę że jest to mało eleganckie rozwiązanie.

Powoli zaczynam rozumieć i nawet zadziałało (roleta w kuchni)


:slight_smile:
Problem tylko w tym że tych okien z roletami mam sporo i już sobie wyobrażam jak dużo miejsca zajmie tyle nodów. Chyba że organizacja tego w czytelny sposób to następny stopień wtajemniczenia ?