Verbindung zu HomeAssistant mit MQTT_GENERIC_BRIDGE

Begonnen von edy_80, 25 Oktober 2020, 19:06:36

Vorheriges Thema - Nächstes Thema

Beta-User

MQTT2_SERVER hat zwei Clients mit identischen Namen an localhost und "extern". Ist das derselbe? (Wenn ja: wofür dann Oberhaupt ein CLIENT-Device?!?).
Wenn nein: unterschiedliche ClientID's?
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

coolice

Dir IP xxx.xxx.xxx.242 ist mein Home Assistant auf der ext. NAS ansonsten gibt es nur den 127.0.0.1 ist vom Sonos Bridge localhost. Internals:
   CONNECTS   2
   Clients    :MQTT2_DEVICE:MQTT_GENERIC_BRIDGE:
   ClientsKeepOrder 1
   DEF        1883 global
   FD         16
   FUUID      62650a0a-f33f-6642-587c-9884ee46095d1d93
   NAME       mqtt2s
   NR         470
   PORT       1883
   STATE      Initialized
   TYPE       MQTT2_SERVER
   eventCount 2
   MatchList:
     1:MQTT2_DEVICE ^.
     2:MQTT_GENERIC_BRIDGE ^.
   READINGS:
     2023-06-26 06:31:08   nrclients       2
     2023-06-26 06:30:53   state           Initialized
   clients:
     mqtt2s_127.0.0.1_53548 1
     mqtt2s_192.168.143.242_53975 1
   hmccu:
   retain:
Attributes:
   autocreate simple
   respectRetain 0
   room       System->Gateways,test

Beta-User

Das mit der .142 verstehe ich nicht.

Wenn das HA ist, dann ist der gleichzeitig Client (von mqtt2s) und Server für den eigentlich hier beschriebenen Weg MQTT2_CLIENT und MGB? Alles auf Port 1883?!? Klingt für mich nach extremer Schleifengefahr...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

davidwohnthier

Falls jemand genau so wie ich darüber "stolpert" - steht natürlich auch hier: https://forum.fhem.de/index.php?topic=90735.0

Damit die states nach einem HA neustart nach wie vor vorhanden sind müssen die von fhem gepublishten messages "retain"-en.

attr testLicht mqttPublish *:topic={"$base/$device/$name"} *:retain=1

Adolar

Hallo @all,
beschäftige mich auch eben mit dem Thema. Erstmal danke für die Erklärungen.

Bin jetzt soweit, daß ich alle Werte, die ich im HASS in FHEM habe auch in HA empfange. Die Gegenrichtung benötige ich nicht.

In HA bin ich noch nicht so firm, könnte mir jemand die Einbundung der verschiedenen Lacrosse Sensoren verdeutlichen? Ich habe sowohl die Temp/Humidity, als auch die Temp/Temp Sensoren. Zweitere mit dem externen Fühler. Wie binde ich die jeweils ein?
bisher habe ich das so:
sensor:
    - name: LaCrosse06_2D_Gefrier
      state_topic: "fhem/LaCrosse06_2D_Gefrier/state"
      payload_not_available: 'off'
    - name: LaCrosse07_AußenNord
      state_topic: "fhem/LaCrosse07/state"
      payload_not_available: 'off'
in der mqtt.yaml stehen. Von den Temp/Temp Sensoren (hier LaCrosse06_2D_Gefrier) bekomme ich jedoch nur einen Temperaturwert. wie muß ich das ändern?

Danke im Voraus,
Gruß,
Adolar

sunrise

Hallo gadget und alle zusammen!

Herzlichen Dank für diesen und weitere sehr hilfreiche Beiträge! 👍

Ja, ich weiß, dass der erste Beitrag schon sehr alt ist. Da es aber noch weitere Beiträge in 2023 gab, nehme ich an, dass auch Neu-Einsteiger (wie ich 😉) hieran immer noch Interesse haben.

Falls jemand in Home Assistant ein Problem mit der mqtt Definition in configuration.yaml hat...
ZitatEs ist nicht möglich mqtt switch durch Hinzufügen von platform: mqtt zur switch-Konfiguration zu konfigurieren. Weitere Informationen zum Einrichten dieser Integration findest du in der Dokumentation.

... probiert es bitte so (dann klappt es wieder) - liegt wohl an einem Home Assistant Update?
mqtt:
  - switch:
      name: demoswitch
      command_topic: "fhem/demoswitch/set"
      state_topic: "fhem/demoswitch/state"
      payload_on: "on"
      payload_off: "off"
      state_on: "on"
      state_off: "off"
      availability_topic: "fhem/connection/status"
      payload_available: "connected"
      payload_not_available: "disconnected"


Zitat von: gadget am 26 Oktober 2020, 10:41:19in der configuration.yaml:

switch:
  - platform: mqtt
    name: demoswitch
    command_topic: "fhem/demoswitch/set"
    state_topic: "fhem/demoswitch/state"
    payload_on: "on"
    payload_off: "off"
    state_on: "on"
    state_off: "off"
    #availability_topic: "fhem/connection/status"
    #payload_available: "connected"
    #payload_not_available: "disconnected"
Viele Grüße/kind regards
sunrise
_________________
Tecalor THZ 303 (SOL, 2006/09-2008/08), FW 2.16 | FHEM THZ module testing with FW 2.06 (INTEGRAL, 2006/12-2008/08) & FW 2.14 (SOL, 2002/10-2004/08) on Raspberry Pi 2

sunrise

Hallo zusammen!

Den demoswitch konnte ich anlegen, und auch die Status-Änderung klappte in alle Richtungen. Allerdings habe ich immer noch Verständnisschwierigkeiten, wie ich nun einen Sensor (bzw. die Readings eines Device) aus FHEM nach Home Assistant bringe (zunächst möchte ich von HA aus nichts schalten) und hoffe, Ihr könnt mir ein paar hilfreiche Hinweise geben.


Aus HA configuration.yaml (ich würde gerne zunächst mit nur einem Reading - outside_temp - testen):

mqtt:
  - sensor:
      name: fhem_Mythz_outside_temp
      state_topic: "fhem/sensor/Mythz/outside_temp"
      availability_topic: "fhem/connection/status"


Das Device (Mythz) ist eine Wärmepumpe und liefert eine Vielzahl von (user)Readings an FHEM, u.a. auch outside_temp:

defmod Mythz THZ /dev/serial/by-id/usb-Prolific_Technology_Inc._USB-Serial_Controller-if00-port0@14400
attr Mythz devStateIcon opened:10px-kreis-gruen disconnected:10px-kreis-rot
attr Mythz event-min-interval .*:120
attr Mythz event-on-change-reading .*
attr Mythz firmware 2.06
attr Mythz icon sani_heating
attr Mythz interval_sDisplay 15
attr Mythz interval_sFan 60
attr Mythz interval_sGlobal 300
attr Mythz interval_sHC1 300
attr Mythz interval_sHistory 300
attr Mythz interval_sLast10errors 3600
attr Mythz nonblocking 0
attr Mythz room Heizung
attr Mythz showtime 1
attr Mythz simpleReadTimeout 6
attr Mythz userReadings flow_temp:sGlobal.* {(split ' ', ReadingsVal ("Mythz","sGlobal",0))[3]}, \
return_temp:sGlobal.* {(split ' ', ReadingsVal ("Mythz","sGlobal",0))[5]}, \
outside_temp:sGlobal.* {(split ' ', ReadingsVal ("Mythz","sGlobal",0))[1]}, \
dhw_temp:sGlobal.* {(split ' ', ReadingsVal ("Mythz","sGlobal",0))[9]}, \
dhw_hours:sGlobal.* {(split ' ', ReadingsVal ("Mythz","sHistory",0))[7]},\
dhw_heating:sGlobal.* {(split ' ', ReadingsVal ("Mythz","sHistory",0))[5]}

Es gibt noch viel mehr Parameter (nicht als userReadings, sondern direkt vom Device), aber ich wollte es hier nicht überfrachten.


MQTT2_CLIENT:

defmod HA_MQTT2 MQTT2_CLIENT homeassistant.fritz.box:1883
attr HA_MQTT2 clientId fhem
attr HA_MQTT2 clientOrder MQTT_GENERIC_BRIDGE
attr HA_MQTT2 keepaliveTimeout 60
attr HA_MQTT2 msgAfterConnect -r fhem/connection/status connected
attr HA_MQTT2 msgBeforeDisconnect -r fhem/connection/status disconnected
attr HA_MQTT2 qosMaxQueueLength 100
attr HA_MQTT2 room MQTT
attr HA_MQTT2 username mqttuser

Die Domäne zu Hause lautet ".fritz.box". FHEM läuft auf einem Raspberry Pi 2 und Home Assistant auf einem Raspberry Pi 4 (ich kann FHEM und HA nicht auf ein Gerät bringen).


MQTT_GENERIC_BRIDGE:

defmod mqttGeneric MQTT_GENERIC_BRIDGE mqtt room=HomeAssistant
attr mqttGeneric IODev HA_MQTT2
attr mqttGeneric globalDefaults sub:qos=2 pub:qos=0 retain=1 base={"fhem/$device"}
attr mqttGeneric globalPublish *:topic={"fhem/$device/$reading"}
attr mqttGeneric icon mqtt_bridge_2
attr mqttGeneric room MQTT
attr mqttGeneric verbose 0

Ich weiß, dass globalPublish nicht empfohlen ist, aber ich hatte es trotz der vielen Hinweise nicht verstanden, wie ich es machen muss beim demoswitch, damit es auch ohne globalPublish funktioniert. Daher würde ich es gerne zunächst belassen, bis ich mit outside_temp Erfolg habe.


Was mir jetzt konkret völlig unklar ist: Wie lege ich in FHEM nun einen Sensor an, damit er outside_temp liest und per MQTT an HA durchreicht? Also wie wird aus einem UserReading ein Sensor für MQTT? Ich hoffe, das ist die korrekte Frage, und dass Ihr mir weiterhelfen könnt.

Vielen Dank vorab für Eure Zeit! 👍
Viele Grüße/kind regards
sunrise
_________________
Tecalor THZ 303 (SOL, 2006/09-2008/08), FW 2.16 | FHEM THZ module testing with FW 2.06 (INTEGRAL, 2006/12-2008/08) & FW 2.14 (SOL, 2002/10-2004/08) on Raspberry Pi 2

sunrise

Bin ich der Einzige, den das Thema noch interessiert und der nicht weiß, wie man da ran geht? 🫢
Viele Grüße/kind regards
sunrise
_________________
Tecalor THZ 303 (SOL, 2006/09-2008/08), FW 2.16 | FHEM THZ module testing with FW 2.06 (INTEGRAL, 2006/12-2008/08) & FW 2.14 (SOL, 2002/10-2004/08) on Raspberry Pi 2

CaptainSlow

ich quäle mich gerade auch mit dem Thema, hier evtl eine Hilfestellung wie es bei mir funktioniert -
für den Fall dass du MQTT eingerichtet hast und der Dummy Switch wie von dir beschrieben funktioniert:
- FHEM: Mythz in den HASS Room in FHEM, d.h. alle Readings sind damit auch im mqtt
- HA: in der configuration.yaml:

sensor:
    - name: MythzTempVorlauf
      unique_id: fhem_mythz_temp_vorlauf
      state_topic: "fhem/Mythz/TempVorlauf"
      unit_of_measurement: "°C"

Damit sollte die Entität auch schon verfügbar sein!

sunrise

#204
Das ist ja supereinfach! 😀 Ganz lieben Dank für Deinen hilfreichen Tipp! ❤️ Ich hatte schlicht vergessen, Mythz in den "HASS" Raum zu packen (obwohl das so ganz am Anfang vom Thread erklärt wurde. 🫢)

Schon trudeln die ersten Werte durch den MQTT Explorer (lauscht auf Home Assistant). Den nutze ich unter Windows, um mal eben einen schnellen Check machen zu können.

In HA stimmt dennoch etwas noch nicht, denn dort erscheinen die Parameter als "nicht verfügbar" - obwohl sie im MQTT Explorer (auf HA verbunden) erscheinen.

Aber das Ziel ist wohl nicht mehr weit. Ich bin mir nicht sicher, wie die Sensoren konkret in HA zu benennen sind. Bei mir sieht der Abschnitt in configuration.yaml nun so aus:

  - sensor:
      name: fhem_Mythz_outside_temp
      unique_id: fhem_Mythz_outside_temp
      state_topic: "fhem/sensor/Mythz/outside_temp"
      unit_of_measurement: "°C"
      availability_topic: "fhem/connection/status"

Gerne können wir uns hier weiter austauschen, wenn Du magst. Nochmals vielen Dank! 👍

PS: Mein langfristiges Ziel ist, die Daten in HA nach InfluxDB zu schreiben und über Grafana zu visualisieren. Aber eins nach dem anderen...
Viele Grüße/kind regards
sunrise
_________________
Tecalor THZ 303 (SOL, 2006/09-2008/08), FW 2.16 | FHEM THZ module testing with FW 2.06 (INTEGRAL, 2006/12-2008/08) & FW 2.14 (SOL, 2002/10-2004/08) on Raspberry Pi 2

sunrise

#205
Zitat von: CaptainSlow am 04 Dezember 2023, 16:29:20sensor:
    - name: MythzTempVorlauf
      unique_id: fhem_mythz_temp_vorlauf
      state_topic: "fhem/Mythz/TempVorlauf"
      unit_of_measurement: "°C"
Nach welchem Muster verwendest Du name, unique_id und state_topic?
Und wofür benötigst Du unique_id, wenn Du bereits name hast? Reicht nicht eins aus?


PS:

Ah, ich habe (glaube ich) verstanden, woran's liegt. In FHEM habe ich definiert:
*:topic={"fhem/$device/$reading"}
Entsprechend muss ich in HA das state_topic genauso definieren, also:
      state_topic: "fhem/Mythz/outside_temp"
Viele Grüße/kind regards
sunrise
_________________
Tecalor THZ 303 (SOL, 2006/09-2008/08), FW 2.16 | FHEM THZ module testing with FW 2.06 (INTEGRAL, 2006/12-2008/08) & FW 2.14 (SOL, 2002/10-2004/08) on Raspberry Pi 2

sunrise

@CaptainSlow

Bei mir sieht es auf FHEM-Seite so aus (der Raum bei mir heißt "HomeAssistant", nicht "HASS"):
Internals:
   DEF        mqtt room=HomeAssistant
   FUUID      xxxxx
   IODev      HA_MQTT2
   NAME       mqttGeneric
   NR         310
   NTFY_ORDER 70-mqttGeneric
   STATE      in: 0 out: 11 devices: 1
   TYPE       MQTT_GENERIC_BRIDGE
   devspec    room=HomeAssistant
   eventCount 371
   prefix     mqtt
   READINGS:
     2023-12-04 18:44:03   IODev           HA_MQTT2
     2023-11-29 09:17:04   attrTemplateVersion 20211208_MQTT
     2023-12-04 18:44:03   device-count    0
     2023-12-04 18:44:02   incoming-count  0
     2023-12-04 20:08:11   outgoing-count  367
     2023-12-04 20:08:11   transmission-state outgoing publish sent
     2023-12-04 18:44:02   updated-reading-count 0
     2023-12-04 18:44:02   updated-set-count 0
   devices:
     :global:
       :alias:
       :defaults:
         pub:base   {"fhem/$device"}
         pub:qos    0
         pub:retain 1
         sub:base   {"fhem/$device"}
         sub:qos    2
         sub:retain 1
       :publish:
         *:
           mode       R
           topic      {"fhem/$device/$reading"}
   globalDeviceExcludes:
   globalReadingExcludes:
   globalTypeExcludes:
     pub:
       FHEMWEB    *
       Global     *
       MQTT       transmission-state
       MQTT_BRIDGE transmission-state
       MQTT_DEVICE transmission-state
       MQTT_GENERIC_BRIDGE *
       telnet     *
     sub:
       FHEMWEB    *
       Global     *
       MQTT       transmission-state
       MQTT_BRIDGE transmission-state
       MQTT_DEVICE transmission-state
       MQTT_GENERIC_BRIDGE *
       telnet     *
Attributes:
   IODev      HA_MQTT2
   globalDefaults sub:qos=2 pub:qos=0 retain=1 base={"fhem/$device"}
   globalPublish *:topic={"fhem/$device/$reading"}
   icon       mqtt_bridge_2
   room       MQTT
   verbose    0

Und bei Dir?


Nach wie vor sehe ich im MQTT-Explorer (verbunden mit Home Assistant), alle Mythz Readings (wie von mir gewollt), aber trotz der einen Sensor-Definition in configuration.yaml steht unter Entwicklungswerkzeuge => Zustände => Entitäten:
sensor.mythz_outside_temp   unavailable
Interessanterweise werde ich diesen Sensor auch nicht mehr los, selbst nach Löschung der Sensor-Definition in configuration.yaml und HA-Neustart. Seltsam, oder?


Ich wäre Dir sehr dankbar, wenn Du mir nochmal etwas detaillierter aufzeigen könntest, wie Du einerseits MQTT2 und die MQTT Bridge auf FHEM und andererseits den Sensor in HA definiert hast. Die HA-Konfig hast Du schon geteilt - nochmals danke, aber musstest Du noch mehr für einen Sensor auf HA-Seite tun?
Viele Grüße/kind regards
sunrise
_________________
Tecalor THZ 303 (SOL, 2006/09-2008/08), FW 2.16 | FHEM THZ module testing with FW 2.06 (INTEGRAL, 2006/12-2008/08) & FW 2.14 (SOL, 2002/10-2004/08) on Raspberry Pi 2

sunrise

#207
Jetzt scheint es zu klappen, obwohl ich nur 2 weitere Sensoren/Werte in configuration.yaml hinzugefügt, unique_id sowie availability_topic und den Prefix "fhem" aus den Namen (name) entfernt habe:
mqtt:
  sensor:
    - name: Mythz_outside_temp
      state_topic: "fhem/Mythz/outside_temp"
      unit_of_measurement: "°C"

    - name: Mythz_flow_temp
      state_topic: "fhem/Mythz/flow_temp"
      unit_of_measurement: "°C"

    - name: Mythz_return_temp
      state_topic: "fhem/Mythz/return_temp"
      unit_of_measurement: "°C"

Dafür gibt es den alten "outside_temp" Sensor mit dem Wert "unavailable" zwar noch, aber es wurde ein neuer Sensor "outside_temp_2" angelegt mit korrektem Wert. Keine Ahnung, woher das kommt, aber ich untersuche das noch.

Du darfst diesen Dateianhang nicht ansehen.
Viele Grüße/kind regards
sunrise
_________________
Tecalor THZ 303 (SOL, 2006/09-2008/08), FW 2.16 | FHEM THZ module testing with FW 2.06 (INTEGRAL, 2006/12-2008/08) & FW 2.14 (SOL, 2002/10-2004/08) on Raspberry Pi 2

sunrise

Der "kaputte" Parameter ist von alleine verschwunden. Geht doch. 😊
Viele Grüße/kind regards
sunrise
_________________
Tecalor THZ 303 (SOL, 2006/09-2008/08), FW 2.16 | FHEM THZ module testing with FW 2.06 (INTEGRAL, 2006/12-2008/08) & FW 2.14 (SOL, 2002/10-2004/08) on Raspberry Pi 2

sunrise

Ich fragte mich, welcher Weg sinnvoller ist:
  • Auf FHEM-Seite sämtliche UserReadings anlegen und dann für jedes UR die Definition in HA (configuration.yaml) eintragen.
  • Auf HA-Seite die Definition für größere Readings wie sGlobal, sHC1 etc. in configuration.yaml eintragen, so dass sie komplett von FHEM via MQTT nach HA übertragen werden und dann auf HA-Seite die gewünschten Parameter-Werte aus den json Payloads extrahieren.

Dort plädierte immi (Author des THZ-Moduls) für die 1. Variante auf eine entsprechende Frage einen Beitrag zuvor. Leider gab's vom Fragesteller roliko seither keine Reaktion darauf. Ich nehme an, er hat es irgendwie für sich gelöst.

Ich verwende ebenfalls die 1. Variante und bleibe dabei, denn sie funktioniert, und man kann (wie hier im Thread von gadget bereits angesprochen) per Copy & Paste ziemlich schnell für sämtliche Sensoren entsprechende Definitionen festlegen.

An Schalter habe ich mich noch nicht gewagt. Aber das wäre der nächste Schritt, so dass ich von HA aus (bzw. der Android HA App) meine Heizung auch steuern kann. Und mit HA kenne ich mich zugegeben besser aus als mit FHEM. 😉
Viele Grüße/kind regards
sunrise
_________________
Tecalor THZ 303 (SOL, 2006/09-2008/08), FW 2.16 | FHEM THZ module testing with FW 2.06 (INTEGRAL, 2006/12-2008/08) & FW 2.14 (SOL, 2002/10-2004/08) on Raspberry Pi 2