Verbindung HA und FHEM

Servus Zusammen,

Mein Name ist Markus und bin neu Hier. Auch was das Thema HA angeht arbeite ich erst seit ein paar Tagen damit. Ich habe eine Laufende FHEM installation mit einigen 433 MHZ komponenten. Da ich Diese weiterhin nutzen will würde ich gerne eine Verbindung von FHEM zu HA aufbauen und die Geräte von FHEM in HA Anzeigen und auch steuern. Kann ir hier jemand helfen?

Danke und Gruß Markus

2 „Gefällt mir“

Moin Markus,

du kannst dazu den MQTT Broker verwenden. Auf HA Seite ist dieser sicherlich schon konfiguriert. Auf FHEM Seite kommt es darauf an, ob du den verwendest.
Ich habe dazu das Modul MQTT2_CLIENT genutzt, um mich mit dem HA MQTT Broker zu verbinden. Dann nutze ich noch das Modul MQTT_GENERIC_BRIDGE, damit ich alle Status von meinen FHEM Geräten zu HA publishen kann.
Anschließend habe ich noch alle Geräte in HA in den configuration.yaml händisch angelegt.

Vielleicht hilft dir das ja ein wenig. Ansonsten kann ich auch mal einen Teil meiner Konfiguration posten.

Grüße
Tobi

Würe Super wenn Du mir ein Beispiel eines Gerätes und die Config von MQTT2_CLIENT und der MQTT_GENERIC_BRIDGE als Screensot schicken könntest… Danke schon mal

Das sollten wir hinbekommen. Also zuerst legst du eine Verbindung zu deinem vorhandenen MQTT Broker an. Kennwort und Benutzername vorher raussuchen und notieren.
Dann gehst du in FHEM und erstellst einen MQTT2_CLIENT. Ich kopiere mal die Raw definition. Hier sind auf jeden Fall die IP Adresse zu deinem HA MQTT Broker und der Benutzername anzupassen.

defmod ha_MQTT2 MQTT2_CLIENT 192.168.yy.xx:1883
attr ha_MQTT2 clientId fhem
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 username BENUTZER_HA_MQTT

Anschließend noch mit “set ha_MQTT2 password PASSWORD” noch das Passwort für die Verbindung eingeben. Danach sollte sich FHEM zum HA MQTT Broker verbinden.

Nun wird die Bridge angelegt:

defmod mqttGeneric MQTT_GENERIC_BRIDGE mqtt room=HASS
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 stateFormat in: incoming-count out: outgoing-count devices: device-count
attr mqttGeneric verbose 0

Ich habe als Raum HASS gewählt. Hier müssen später alle Geräte rein, die ihren Status mit HA austauschen sollen.

Jetzt kommen wir zu einem Beispielgerät in FHEM (hier ein Lichtschalter mit dem Name Kueche_Lampe). Da das Gerät bei dir ja schon vorhanden sein sollte, musste du nur ein paar (zusätzliche) Attribute hinzufügen.

attr Kueche_Lampe userattr mqttAlias:textField-long mqttDefaults:textField-long mqttDisable:both,incoming,outgoing mqttForward:all,none mqttPublish:textField-long mqttSubscribe:textField-long
attr Kueche_Lampe mqttSubscribe state:stopic={"$base/set"}
attr Kueche_Lampe room HASS

Das war der Teil in FHEM. Damit HA nun auch etwas damit anfangen kann, musst du in der configuration.yaml ein mqtt Objekt anlegen. Pro Gerät eins. Damit abonnierst du quasi das, was FHEM in den MQTT Broker schiebt.

Für das Licht oben also z.B.:

mqtt:
  switch:
    - unique_id: Kueche_Lampe
      name: "Kueche_Lampe"
      state_topic: "fhem/Kueche_Lampe/state"
      command_topic: "fhem/Kueche_Lampe/set"
      availability_topic: "fhem/connection/status"
      payload_available: "connected"
      payload_not_available: "disconnected"
      payload_on: "on"
      payload_off: "off"
      state_on: "on"
      state_off: "off"
      optimistic: false
      qos: 0
      retain: false

Das Licht ist hier als Switch angelegt. Würde sicherlich auch als Light gehen.
Einmal die configuration.yaml neu laden und dann solltest du es sowohl in HA als auch in FHEM steuern können.

So, ich hoffe, ich habe nichts vergessen.

Viel Erfolg!

3 „Gefällt mir“

Das hat Supe funktioniert. Vielen Dank dafür!

Das freut mich zu lesen. Sehr gern.

Hallo @TOBl ,

ich hoffe, ich “hijacke” den Threat hier jetzt nicht, aber ich habe eine “Folgefrage”, die m.E.n. thematisch hier am Besten passt:

Für fhem gibt es Support für den “Duofern Stick”, mit dem man Geräte der Firma Rademacher ansteuern kann. Konkret geht es mir um “Rollotrons”, das sind elektrische Gurtwickler.

Grundsätzlich ist das im Openhab Forum beschrieben, allerdings mit “MQTT1”, was nicht mehr zu funktionieren scheint.

Daher bin ich dankbar für Deine Anleitung, mit der ich fhem endlich im MQTT Explorer sehen kann, und auch die Position der Rollläden ansteuern kann.

In fhem werden jedoch noch weitere Attribute angezeigt, die ich auch gerne steuern können würde. Ich habe verstanden, dass ich dazu das “mqttSubscribe” anpassen muss, komme aber als absoluter fhem Neuling damit - trotz Doku und Google - nicht so recht weiter. Ich vermute, es ist eine Kleinigkeit, aber ich bin am Verzweifeln…

Hier mal der aktuelle Stand:

Mit dieser Einstellung und der Erweiterung des mqttSubscribe habe ich auf dem Topic fhem/DUOFERN_610AC8/set/manualMode ein ‘on’ geschrieben, aber keine Reaktion in fhem oder MQTT erhalten.

Hast Du / hat jemand vielleicht einen Tip für mich?

Vielen Dank im Voraus!

Update:
@Tom: never mind :upside_down_face:

Dieser Thread hat mir weitergeholfen.

Es ist einfacher, als ich gedacht hatte.

mqttSubscribe des Shutter_Bedroom muss einfach nur auf *:stopic={"$base/set/$reading"} gesetzt werden…

:crayon:by HarryP: Zusammenführung Doppelpost (bitte “bearbeiten” Funktion nutzen)

1 „Gefällt mir“

Hallo,
funktioniert prima, allerdings hat sich ein Tippfehler eingeschlichen:
attr Kueche_Lampe mqttSubscribe state:topic={"$base/set"}

1 „Gefällt mir“

Hallo zusammen, auch ich möchte von FHEM zu HA “wechseln”. Ich hab jede Menge EnOcean Geräte von Eltako. Viele werden von EnOcean_MQTT nicht unterstützt und das was ich bisher mit den FSR und FUD probiert hab, lief nicht wirklich stabil. Jetzt hab ich diese Variante hier mit der MQTT-Bridge versucht. Testweise mit einem FUD61NPN und einem FSR61. Das lustige ist, dass ich Stati von HA schalten kann, aber die eigentlichen Aktoren nur von FHEM aus schalten kann. Also ich schalte den FSR von HA ein und er wird in FHEM als eingeschaltet gekennzeichnet, aber der Aktor bleibt aus. Gleiches beim FUD.
Hier die Gerätedefinitionen in FHEM und HA:

defmod FUD61_1 EnOcean 019024A4
attr FUD61_1 userattr mqttAlias:textField-long mqttDefaults:textField-long mqttDisable:both,incoming,outgoing mqttForward:all,none mqttPublish:textField-long mqttSubscribe:textField-long
attr FUD61_1 IODev TCM_ESP3_0
attr FUD61_1 cmdIcon on:general_an off:general_aus
attr FUD61_1 eep A5-38-08
attr FUD61_1 gwCmd dimming
attr FUD61_1 manufID 00D
attr FUD61_1 mqttSubscribe state:topic={"$base/set"}
attr FUD61_1 room EnOcean
attr FUD61_1 subDef FFA81A84
attr FUD61_1 subType gateway
attr FUD61_1 webCmd on:off:dim
defmod FSR61_1 EnOcean 0595922F
attr FSR61_1 userattr mqttAlias:textField-long mqttDefaults:textField-long mqttDisable:both,incoming,outgoing mqttForward:all,none mqttPublish:textField-long mqttSubscribe:textField-long
attr FSR61_1 IODev TCM_ESP3_0
attr FSR61_1 eventMap B0:off BI:on
attr FSR61_1 manufID 00D
attr FSR61_1 mqttSubscribe state:topic={"$base/set"}
attr FSR61_1 room EnOcean
attr FSR61_1 subDef FFA81A85
attr FSR61_1 subType switch

mqtt:
switch:
  - unique_id: Testlampename
    name: "Testlampe"
    state_topic: "fhem/FUD61_1/state"
    command_topic: "fhem/FUD61_1/set"
    availability_topic: "fhem/connection/status"
    payload_available: "connected"
    payload_not_available: "disconnected"
    payload_on: "on"
    payload_off: "off"
    state_on: "on"
    state_off: "off"
    optimistic: false
    qos: 0
    retain: false
  - unique_id: Testlampe2
    name: "Testlampe2"
    state_topic: "fhem/FSR61_1/state"
    command_topic: "fhem/FSR61_1/set"
    availability_topic: "fhem/connection/status"
    payload_available: "connected"
    payload_not_available: "disconnected"
    payload_on: "BI"
    payload_off: "B0"
    state_on: "BI"
    state_off: "B0"
    optimistic: false
    qos: 0
    retain: false

Was auch nicht funktioniert, ist der Typ light statt switch. Da meckert HA.

Achja… Dimmen würde ich natürlich auch gern…

Ich hoffe ihr könnt mir helfen….

Hallo zebbi: das Problem hatte ich auch:
attr FUD61_1 mqttSubscribe state:topic={“$base/set”} Probiere mal das aus:

attr FUD61_1 mqttSubscribe state:stopic={“$base/set”}

Danke, läuft inzwischen…

Zum Dimmen dann einfach noch ein Topic abonieren:

state:stopic={“$base/set”} dim:stopic={“$base/setdim”}

Vielleicht hilfts ja noch anderen…

Ich “hijacke” auch mal diesen Thread. :wink:

Ich bin neu mit HA (und deswegen auch hier neu) unterwegs und nutze seit Jahren eine stabil laufende FHEM-Installation. Nun habe ich, teilweise mit der Anleitung von hier, versucht ein paar meiner FHEM-Devices per MQTT nach HA zu holen. Es ist erst mal nur ein Dummy-Switch. Dieser taucht auch in HA als Entität switch.Hausnummer auf. Ich kann mit diesem Schalter die Lampe auch aus HA heraus schalten, aber ich sehe in HA nicht den Zustand (ist immer unbekannt). Die MQTT-Verbindung steht also.

Edit: Im MQTT-Explorer von HA sehe ich auch, dass sich der state des devices von on nach off oder zurück ändert, wenn der Schaltvorgang in FHEM ausgelöst wird.

Und hier noch meine Konfiguration in der configurations.yaml:

mqtt:
 -switch:
  unique_id: Hausnummer
  name: "Hausnummer"
  state_topic: "fhem/Hausnummer"
  command_topic: "fhem/Hausnummer/set"
  availability_topic: "fhem/connection/status"
  payload_available: "connected"
  payload_not_available: "disconnected"
  payload_on: "on"
  payload_off: "off"
  state_on: "on"
  state_off: "off"
  optimistic: false
  qos: 0
  retain: false

Im MQTT Explorer sieht das so aus:

Hausnummer
 state = off

bzw. nach dem Klick auf den Blitz im HA-Dashboard

Hausnummer
 state = on
 set = on

Danach brennt die Lampe, weil FHEM sie eingeschaltet hat.
Schalte ich die Lampe über FHEM wieder aus, steht im MQTT-Explorer:

Hausnummer
 state = off
 set = on

wobei das set = on noch vom vorherigen Schaltvorgang aus HA heraus ist.
Wo kann ich das Problem suchen?

Ich weiß nicht, was ich getan habe, aber jetzt funktioniert die Anzeige in HA.

Möglicherweise war es das Aktivieren der “will”-Nachricht in den MQTT-Optionen bei HA. Denn nun gibt es im MQTT-Explorer einen weiteren Eintrag:

homeassistent
 status = online

Der war vorher nicht da.
Danke für euer geduldiges mitlesen :laughing:

Hi everyone! :waving_hand:

ich habe am Wochenende ein HA Implementierung für den Duofern Stick erstellt. Das mit dem Matter war mir viel zu viel geprickelt. Jetzt kann ich mein FHEM nach vielen Jahren abbauen:

:crayon:by HarryP: Crosspost entfernt

Hallo ich hänge mich hier mal ran. Da ich irgenwie mit meiner Verbindung von Fhem zu HA nicht weiter komme. Folgendes möchte ich übertragen einen Fenstersensor und einen Stromzähler.
Vielleicht könnte mir einer weiter helfen die richtigen Einstellungen zu finden.
Beim Sensor recht mir ein on/off beim Stromzähler Bezug und Einspeise
Wie bzw was muss in HA definieren.

Hier meine Datten aus Fhem.
MQTT Client

defmod ha_MQTT2 MQTT2_CLIENT 192.168.12.xx:1883
attr ha_MQTT2 clientId fhem
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 HASS
attr ha_MQTT2 username mqttuser

setstate ha_MQTT2 opened

MQTT_Generic_BRIDGE

defmod mqttGeneric MQTT_GENERIC_BRIDGE mqtt room=HASS
attr mqttGeneric IODev ha_MQTT2
attr mqttGeneric disable 1
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 HASS
attr mqttGeneric stateFormat in: incoming-count out: outgoing-count devices: device-count
attr mqttGeneric verbose 0

setstate mqttGeneric in: 0 out: 4346 devices: 2
setstate mqttGeneric 2026-04-05 18:31:37 IODev ha_MQTT2
setstate mqttGeneric 2026-04-05 18:37:08 device-count 2
setstate mqttGeneric 2026-04-05 18:31:36 incoming-count 0
setstate mqttGeneric 2026-04-06 22:52:33 outgoing-count 4346
setstate mqttGeneric 2026-04-06 22:52:33 transmission-state outgoing publish sent
setstate mqttGeneric 2026-04-05 18:31:36 updated-reading-count 0
setstate mqttGeneric 2026-04-05 18:31:36 updated-set-count 0

Garagensensor

defmod HM_5B3CC7 CUL_HM 5B3CC7
attr HM_5B3CC7 userattr mqttAlias:textField-long mqttDefaults:textField-long mqttDisable:both,incoming,outgoing mqttForward:all,none mqttPublish:textField-long mqttSubscribe:textField-long
attr HM_5B3CC7 .mId 00B1
attr HM_5B3CC7 actCycle 028:00
attr HM_5B3CC7 actStatus alive
attr HM_5B3CC7 alias Garagentor
attr HM_5B3CC7 autoReadReg 4_reqStatus
attr HM_5B3CC7 devStateIcon open:fts_garage@red closed:fts_garage_door_100@green
attr HM_5B3CC7 expert defReg,rawReg
attr HM_5B3CC7 firmware 2.4
attr HM_5B3CC7 icon fts_garage_door_50@blue
attr HM_5B3CC7 model HM-SEC-SC-2
attr HM_5B3CC7 mqttSubscribe state:stopic={"$base/set"}
attr HM_5B3CC7 peerIDs 00000000
attr HM_5B3CC7 room HASS
attr HM_5B3CC7 serialNr OEQ0682291
attr HM_5B3CC7 subType threeStateSensor

Stromzähler

defmod Strom OBIS /dev/serial/by-id/usb-Silicon_Labs_CP2104_USB_to_UART_Bridge_Controller_0061BD41-if00-port0@300,7,E,1 VSM102
attr Strom userattr mqttAlias:textField-long mqttDefaults:textField-long mqttDisable:both,incoming,outgoing mqttForward:all,none mqttPublish:textField-long mqttSubscribe:textField-long
attr Strom channels {"1.8.0"=>"Bezug","2.8.0"=>"Einspeise"}
attr Strom event-on-change-reading .*
attr Strom group Strom
attr Strom icon measure_power_meter@blue
attr Strom interval 60
attr Strom mqttSubscribe state:stopic={"$base/set"}
attr Strom pollingMode on
attr Strom readingsWatcher 3600,,Version
attr Strom room HASS
attr Strom sortby 1
attr Strom stateFormat { "Bezug: " . sprintf("%.1f". "kW" , ReadingsVal("Strom","myBezug",0) - ReadingsVal("Strom","myBezugVortag",0)) . " <br/>Einspeise: " . sprintf("%.1f". "kW" , ReadingsVal("Strom","myEinspeise",0) - ReadingsVal("Strom","myEinspeiseVortag",0)) }
attr Strom userReadings myBezug {if (ReadingsVal("Strom","Bezug",0) < ReadingsVal("Strom","myBezug",0))\
 {ReadingsVal("Strom","myBezug",0)} \
else \
 {ReadingsVal("Strom","Bezug",0)}}, \
myEinspeise {if (ReadingsVal("Strom","Einspeise",0) < ReadingsVal("Strom","myEinspeise",0))  {ReadingsVal("Strom","myEinspeise",0)} \
else \
{ReadingsVal("Strom","Einspeise",0)}},\
myBezugTag:Bezug.* monotonic { ReadingsVal("Strom","Bezug",0)},\
myEinspeiseTag:Einspeise.* monotonic { ReadingsVal("Strom","Einspeise",0)}\