Verbindung zu HomeAssistant mit MQTT_GENERIC_BRIDGE

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

Vorheriges Thema - Nächstes Thema

davedeluxe

Guten Morgen,
danke für die tolle Anleitung @gadget!
Kann mir jemand ein Codebeispiel für einen Homematic Fenstersensor geben?
Ich habe aktuell folgendes:
  - binary_sensor:
      name: "Optisch_Dachfenster"
      unique_id: "optisch_dachfenster"
      state_topic: "fhem/Optisch_Dachfenster/state"
      payload_on: "open"
      payload_off: "closed"
      availability_topic: "fhem/connection/status"
      payload_available: "connected"
      payload_not_available: "disconnected"

Ich verstehe leider nicht wie ich z.B. den Batteriestatus hinzufügen kann.
Hat jemand solch einen Sensor (HM-SEC-SCO) per MQTT in HASS eingebunden?

Grüße, Dave

Burt_Gummer

Moin!
Klinke mich hier mal ein:

Habe FHEM und Mosquitto seit Ewigkeiten bei mir auf einem Ubuntu Server installiert. (natürlich immer wieder upgedated)
Tasmota Devices sind via MQTT (nicht 2) angebunden.

Kann es sein, dass aufgrund der Installation von Home Assistant (u. a. mit der Tasmota Integration und MQTT) FHEM bzw. FTUI "stört" ?

Seit einiger Zeit friert meine Übersichtsseite in der Tablet UI regelmäßig ein. FullyKiosk startet die dann zwar immer wieder neu, aber das passiert so ca. alle paar Minuten und nervt.

Hatte da bisher Home Assistant nicht für verantwortlich gemacht, weil ich eigentlich der Meinung bin, dass doch HA sowie FHEM nur Clients sind und dem Mosquitto Server nur zuhören.

Können die sich gegenseitig stören und die Tablet UI sogar zum einfrieren bringen? (aktualisieren der Seite geht sofort und liefert aktuelle Daten der MQTT Devices)

War der Meinung, dass dieses Phänomen nach einem FHEM Update eingetreten ist.
Fehler im Protokoll von FHEM sieht man diesbezüglich auch nicht wirklich...

 

jazzor

Republishen eines Attributes:
Hi zusammen, ich muss hier nochmal nach all den Jahren, die mein System doch halbwegs passabel läuft, mal eine Frage stellen:

Kann ich erzwingen, dass ein Attribut, neu gepublished wird, wenn ich es von außerhalb per mqtt setze?

Folgende Situation: Ich muss aus... Gründen... zwischen Homeassistant und Fhem eine Zahl in einem Fhem Dummy aktuell halten.
Der Fhem-Dummy heißt RolloDummy und hat ein Reading "AktuellerKanal".
Auf der Homeassistant-Seite ist die Entity folgendermaßen definiert:
    - name: "Rollo-Kanal"
      unique_id: "rollokanal"
      state_topic: "fhem/RolloDummy/AktuellerKanal"
      command_topic: "fhem/set/RolloDummy/AktuellerKanal"
      min: 1
      max: 15
auf der Fhem-Seite ist der Dummy folgendermaßen definiert:
defmod RolloDummy dummy
attr RolloDummy userattr mqttAlias:textField-long mqttDefaults:textField-long mqttDisable:both,incoming,outgoing mqttForward:all,none mqttPublish:textField-long mqttSubscribe:textField-long
attr RolloDummy alexaName Rollokanal
attr RolloDummy genericDeviceType thermostat
attr RolloDummy group Hilfsgeräte
attr RolloDummy homebridgeMapping TargetTemperature=AktuellerKanal::AktuellerKanal,minValue=1.0,maxValue=15.0,minStep=1.0\
CurrentTemperature=RolloDummy:AktuellerKanal, nocache=1
attr RolloDummy mqttPublish AktuellerKanal:topic={"$base/$name"}
attr RolloDummy mqttSubscribe AktuellerKanal:stopic={"$base/AktuellerKanal"}
attr RolloDummy readingList AktuellerKanal
attr RolloDummy room Interfaces->homekit,MQTT_HA,fhem,fhem->Alexa
attr RolloDummy setList AktuellerKanal:1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
attr RolloDummy siriName Rollo Kanal
attr RolloDummy stateFormat {ReadingsVal("RolloDummy","AktuellerKanal",0)}
attr RolloDummy webCmd AktuellerKanal

Wenn ich nun von Homeassistant die Nummer ändere, kann ich sehen, dass fhem/set/RolloDummy mit der Nummer gesendet wird und Fhem diese Nummer auch ünernimmt.
Fhem sendet dann aber kein Update der Nummer raus, weshalb bspw der Slider der Nummer in Homeassistant auf der neuen Nummer steht, das Entity aber kein Update bekommt, weil es auf FHem wartet.
Hat jemand eine Idee, was ich da bei FHem noch einstellen muss?
Vielen Dank! :)

jazzor

Zitat von: jazzor am 24 April 2024, 21:49:32Republishen eines Attributes:
Hi zusammen, ich muss hier nochmal nach all den Jahren, die mein System doch halbwegs passabel läuft, mal eine Frage stellen:...

Da ich nun meinen Fehler gefunden habe, möchte ich zukünftige Generationen vor dem gleichen Schicksal wie mich bewahren:
Das Standardverhalten von mqttForward ist für Dummy-Geräte nicht "all" sondern "none". Im Gegensatz zu allen anderen Geräten. Damit wird bei Dummy-Geräten nixhts weitergeleitet!
Wer lesen kann ist klar im Vorteil :D
P.S.: Ich will gar nicht anfangen, was ich alles versucht habe, weil ich mir sicher war, dass mqqForward immer gilt... ;)

obelix221

Hallo in die Runde,

ich stehe vor folgender Fragestellung:
Ich habe einen Homematicdimmer (HM-LC-DIM1L-PL-3) und möchte diesen über HA ansteuern.
Dazu habe ich in HA in der einer mqqt.yaml folgendes angelegt:
- light:
      - name: "Deckenfluter2"
        unique_id: light.Wohnzimmer.Deckenfluter.2
        state_topic: "fhem/HM_41E8A6_Dim/state"
        brightness_command_topic: "fhem/HM_41E8A6_Dim/brightness"
        brightness_scale: "100"
        brightness_state_topic: "fhem/HM_41E8A6_Dim/level"
        command_topic: "fhem/HM_41E8A6_Dim/set"
        payload_on: "on"
        payload_off: "off"
        qos: 1
        optimistic: false

und in fhem:
internals:
   DEF        41E8A601
   FUUID      5c521477-f33f-f80f-2e74-69eda06aa42fa1e0
   LASTInputDev ha_MQTT2
   MSGCNT     5
   NAME       HM_41E8A6_Dim
   ...
   ...
   ...
Attributes:
   alexaName  Deckenfluter
   alias      Deckenfluter
   genericDeviceType light
   homebridgeMapping Brightness=dim::dim,minValue=0,maxValue=100, cmd=dim, minStep=1
   model      HM-LC-DIM1L-PL-3
   mqttSubscribe state:stopic={"$base/set"} pct:stopic={"$base/brightness"}
   peerIDs    00000000
   room       AlexaControl,HASS,Homekit,Wohnzimmer
   siriName   Deckenfluter
   userattr   lightSceneParamsToSave lightSceneRestoreOnlyIfChanged:1,0 mqttAlias:textField-long mqttDefaults:textField-long mqttDisable:both,incoming,outgoing mqttForward:all,none mqttPublish:textField-long mqttSubscribe:textField-long
   webCmd     statusRequest:toggle:on:off:up:down

Nun stelle ich folgendes Verhalten fest:
1) Wenn ich in fhem den Dimmer bediene werden die Werte auch nach HA übermittelt --> OK
2) Wenn ich in HA den Dimmer bediene kann ich den Dimmer ein-/ausschalten, aber nicht dimmen --> NOK
3) Tausche ich hingegen die Reihenfolge der Parameter im Attribut mqqtSubscribe von
mqttSubscribe state:stopic={"$base/set"} pct:stopic={"$base/brightness"}
auf
mqttSubscribe pct:stopic={"$base/brightness"} state:stopic={"$base/set"} kann ich dimmen, aber nicht mehr ein-/ausschalten über HA --> NOK.

Fazit: Es scheint so zu sein, als ob fhem den zweiten stopic-Parameter nicht parsen kann.
Habt Ihr Tipps für mich?


Grüße
obelix
RPi3 als FHEM-Server, 868 MHz CUL, 433 MHz Transmitter, Homematic Aktoren und Sensoren, Yamaha AVR, Logitech Harmony, Fritzbox, Logitech SB, 433 MHz Steckdosen, HUE, EnOcean

mkraus81

Hi,

ich stelle vermutlich eine saudoofe Frage.
Ich habe auch eine größere Fhem Umgebung laufen
und baue gerade nebenbei auch Homeassitent auf...
Da ich noch viele FHT80 Thermostate und Antriebe besitze und es für HASS da nichts gibt.
Möchte ich eigentlich meine ganze FHEM Umgebung weiter betreiben und alles über MQTT Generic Bridge laufen lassen.
Die Thermostate laufen nun schon über die Bridge und funktioniert auch in HASS

Nun habe ich gesehen, dass es für HASS eine Tasmota Integration gibt, welche mit Hilfe der Tasmota Discocery Nachricht die  Geräte anlegt.
Ich frage mich gerade was ich tun muss um die "tasmota/discovery" Nachrichten über die Bridge weiterzuleiten?
Geht das? oder ist mein Gedanke falsch?

beckerheinz

Hallo,
erstmal vielen Dank für die tolle Anleitung in Post #2. Dank der konnte ich meine Lacrosse Temperatur- und Luftfeuchtigkeitssensoren, meine max! Fensterkontakte und meine PCA301 in beide Richtungen sowohl FHEM als auch HA betrieben.
Die max! Heizkörperthermostate habe ich nur in eine Richtung hinbekommen - ich kann die Readings in HA auslesen.

Ich kann sogar die gewünschte Temperatur mit HA hier platzieren:

mosquitto_sub -h ip -u hamqtt -P passwd -t 'fhem/heizungXY/desiredTemperature'
6.0
6.0
10.0
9.0

Aber im Gegensatz zu den Schaltern will max! in FHEM den Wert von HA nicht im Gerät setzen / annehmen?

Was fehlt mir auf der FHEM Seite, dass hier ein set desiredTemperature 9.0 passiert?

Habe diese drei Kombinationen bereits erfolglos probiert:
attr heizungXY mqttSubscribe state:stopic={"$base/set"}
attr heizungXY mqttSubscribe desiredTemperature:stopic={"$base/desiredTemperature"}
attr heizungXY mqttSubscribe state:stopic={"$base/desiredTemperature"}
RPi mit FHEM 5.7, Jeelink +  9 LaCrosse TX29DTH, Jeelink +  10 PCA301 Funksteckdosen, CUL868 mit 9 MAX! Heizkörperthermostaten und Fensterkontakten, 3 Somfy RTS Rollos, Tahoma, CUL + Homematic  mit 2 HM-WDS30-OT2-SM-2

beckerheinz

Zitat von: beckerheinz am 22 Juli 2024, 16:23:13Hallo,
erstmal vielen Dank für die tolle Anleitung in Post #2. Dank der konnte ich meine Lacrosse Temperatur- und Luftfeuchtigkeitssensoren, meine max! Fensterkontakte und meine PCA301 in beide Richtungen sowohl FHEM als auch HA betrieben.
Die max! Heizkörperthermostate habe ich nur in eine Richtung hinbekommen - ich kann die Readings in HA auslesen.

Ich kann sogar die gewünschte Temperatur mit HA hier platzieren:

mosquitto_sub -h ip -u hamqtt -P passwd -t 'fhem/heizungXY/desiredTemperature'
6.0
6.0
10.0
9.0

Aber im Gegensatz zu den Schaltern will max! in FHEM den Wert von HA nicht im Gerät setzen / annehmen?

Was fehlt mir auf der FHEM Seite, dass hier ein set desiredTemperature 9.0 passiert?

Habe diese drei Kombinationen bereits erfolglos probiert:
attr heizungXY mqttSubscribe state:stopic={"$base/set"}
attr heizungXY mqttSubscribe desiredTemperature:stopic={"$base/desiredTemperature"}
attr heizungXY mqttSubscribe state:stopic={"$base/desiredTemperature"}
Ich habe es selbst gelöst.
attr heizungXY mqttSubscribe state:stopic={"$base/set"}
ist richtig - man muss allerdings bei HA mittels Template beim set ein desiredTemperature davorsetzen (da der Befehl in fhem bei max set desiredTemperature 20.5 und nicht nur set 20.5 lautet)
RPi mit FHEM 5.7, Jeelink +  9 LaCrosse TX29DTH, Jeelink +  10 PCA301 Funksteckdosen, CUL868 mit 9 MAX! Heizkörperthermostaten und Fensterkontakten, 3 Somfy RTS Rollos, Tahoma, CUL + Homematic  mit 2 HM-WDS30-OT2-SM-2

Knallfrosch

Hallo zusammen,

ich habe diesen informativen Thread der zu meinem Anliegen passt erst jetzt gefunden.

Mein Ziel ist es eine Klimaanlage, die ich in Home Assitant eingebunden habe von FHEM aus zu steuern.

Ich wollte jetzt das ganze mit einem Licht testen um so die Verbindung zwischen HA und FHEM herzustellen.

Eine Frage zur MQTT-Verbindung zwischen HA und FHEM:

Ich habe auf FHEM schon einen MQTT2-Server über den ich einige Tasmota-Device bediene.
Brauche ich dann für die Verbindung trotzdem zusätzlich den MQTT2_CLIENT wie im 2. Post in diesem Thread als Bsp. angegeben oder ist dann der Weg ein anderer?

Vielen Dank.


Grüße



Beta-User

MGB akzeptiert auch einen internen Server als IO. Es ist also kein M2C erforderlich, auf der HASS-Seite ist dann der M2S als Server zu konfigurieren.
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

Knallfrosch

Danke dir für die schnelle Antwort.

Das muss ich mir mal anschauen, ob ich das hinbekomme.

Wenn ich beim Versuch scheitere und lieber dem Bsp. aus dem 2. Post hier folgen will, funktioniert das dann problemlos mit dem MQTT2-Server und Client gleichzeitig auf der FHEM-Instanz?

Grüße

Beta-User

Zitat von: Knallfrosch am 22 August 2024, 10:56:17Wenn ich beim Versuch scheitere und lieber dem Bsp. aus dem 2. Post hier folgen will, funktioniert das dann problemlos mit dem MQTT2-Server und Client gleichzeitig auf der FHEM-Instanz?
Warum sollte das scheitern? Einen MQTT2_CLIENT auf einen MQTT2_SERVER in derselben (!) FHEM-Instanz hören zu lassen, geht zwar, erzeugt aber schlicht unnötig Last...

Die Anleitung aus dem 2. Post dürfte "veraltet" sein, mAn. einfacher sollte es mit dem attrTemplate-Feature gehen, siehe Wiki.
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

Knallfrosch

Zitat von: Beta-User am 23 August 2024, 08:35:57Warum sollte das scheitern?

Weil ich nur sehr begrenzt Ahnung habe.  O:-)
Ich habe schon einige Zeit nach einer Anleitung gesucht, aber bisher habe ich es nicht auf die Reihe bekommen FHEM mit HA bekannt zu machen.

Knallfrosch

#238
Hallo,

also ich habe etwas Zeit gefunden und versucht das auf die Reihe zu bekommen.

Ich habe es zumindest, mit dem Beispiel auf Seite 2 geschafft.

Die yaml.configuration musste ich aber anpassen. Was wohl an einem Update von HA liegt.

Mit folgender Yaml-Config habe ich es geschafft:

# Loads default set of integrations. Do not remove.
default_config:

# Load frontend themes from the themes folder
frontend:
  themes: !include_dir_merge_named themes

automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml

mqtt:
  switch:
    - unique_id: DemoSwitch
      name: "demoswitch"
      state_topic: "fhem/demoswitch/state"
      command_topic: "fhem/demoswitch/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: Haengeschrank_1
      name: "Haengeschrank_1"
      state_topic: "fhem/Haengeschrank_1/state"
      command_topic: "fhem/Haengeschrank_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

Einen MQTT-Broker hatte ich schon länger in Betrieb um Tasmota-Device steuern zu können.

Um die Verbindung zum HA herzustellen habe ich dort den MQTT-Broker aktiviert und einen Nutzer "mqtt" angelegt.
In Fhem dann einen MQTT-Client und die MQTT-Bridge.

Nun funktioniert es, dass die (bisher) beiden Switch sich sowohl in FHEM als auch in HA bedienen lassen und der Status übertragen wird.


Soweit so gut.


@Beta-User: Entsprechend deinem Hinweis zur Last in FHEM, wenn ein Server und ein Client gleichzeitig auf der FHEM-Instanz laufen, würde ich gerne die direkte Kommunikation ohne den Client umsetzen.
Kannst du mir da bitte ein paar Tipps geben wie ich das umsetzen kann?

Du schreibst:
Zitatauf der HASS-Seite ist dann der M2S als Server zu konfigurieren.

Muss ich dann in der MQTT-Config in HA unter Server den FHEM-MQTT-Server (IP/Port/Nutzer/PW) eintragen oder muss ich noch mehr machen?


Und damit nicht genug der Fragen:

Wie kann ich Daten die nur in HA verfügbar sind an FEHM übertragen?
Es geht mir also nicht nur um die Schalterstellung eines Switch, sondern um Readings die sich tatsächlich nur mit HA von einer API abrufen lassen.


Vielen Dank für die Hilfe.

Grüße

Beta-User

Zitat von: Knallfrosch am 24 August 2024, 12:12:31Kannst du mir da bitte ein paar Tipps geben wie ich das umsetzen kann?
Mir ist ehrlich gesagt nicht mehr klar, ob du einen oder 2 MQTT-Server (früher: Broker) im Einsatz hast.
Es reicht eigentlich einer, das kann (!) auch ein MQTT2_SERVER sein, du mußt den dann halt in HA entsprechend konfigurieren (vermutlich ist die Terminologie "exterrner Broker" oder so). Wie es genau geht, kann ich dir nicht sagen, ich nutze HA nicht...

UND: Ich würde eine ANDERE Anleitung/Vorgehensweise wählen, nämlich via attrTemplate (da wären die Topic-Strukturen geringfügig anders). Aber das hatte ich eigentlich ja schon erwähnt, dass m.E. die Anleitung "von Seite 2" veraltet ist...

Zitat von: Knallfrosch am 24 August 2024, 12:12:31Wie kann ich Daten die nur in HA verfügbar sind an FEHM übertragen?
Es geht mir also nicht nur um die Schalterstellung eines Switch, sondern um Readings die sich tatsächlich nur mit HA von einer API abrufen lassen.
Vermutlich (!) wird es dort was ähnliches geben wie die MQTT_GENERIC_BRIDGE in FHEM, evtl. reicht es, in der yaml schlicht die Topics zu nennen, auf die gepublisht werden soll...
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