Verbindung zu HomeAssistant mit MQTT_GENERIC_BRIDGE

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

Vorheriges Thema - Nächstes Thema

daim21

Hallo zusammen,

erst einmal vielen für die sehr ausführliche und gut strukturierte Anleitung bestehende Fhem Switche über MQTT mit Home Assistant verbinden.
Das hat wunderbar funktioniert.

Nun wollte ich noch meine Temperatur und Luftfeuchtigkeits Sensonsoren verbinden, jedoch bisher ohne Erfolg.
Die Sensoren zeigen 0°C bzw. 0% an.  :-[


Sensor in FHEM:
IODev
deCONZ

event-min-interval
30

group
Temperaturen

icon
temp_temperature

model
TS0201

mqttForward
all

mqttPublish
*:topic={"$base/$device/temperature"}

mqttSubscribe
state:stopic={"fhem/Balkon.Sensor.temp/temperature"} 

room
Balkon,HASS,Sensoren

stateFormat
temperature C°

userattr
mqttAlias:textField-long mqttDefaults:textField-long mqttDisable:both,incoming,outgoing mqttForward:all,none mqttPublish:textField-long mqttSubscribe:textField-long structexclude

Habe unter "mqttSubscribe" und "mqttPublish" verschiedene Varianten probiert (z.B. $base/$device). Alles ohne Erfolg. Ich vermute das hier mein Fehler liegt. :(

Sensor in HA:
- platform: mqtt
  name: "BalkonTemperature"
  state_topic: "fhem/Balkon.Sensor.temp/temperature"
  device_class: "temperature"
  unit_of_measurement: "°C"
  value_template: "{{ value_json.temperature }}"
  force_update: "true"

Hat vielleicht jemand einen wertvollen Tipp für mich?  :)


Vielen Dank und Grüße
Daim21

gadget

Hi,

verwende bitte code Tags (der "Gartenzaun" im Editor)  sonst ist das nicht leserlich und dann bitte bei deinem Sensor auf Raw definition gehen und alles von defmod bis zum Ende der attr Zeilen einfügen.

Was mir auffällt: Wieso state:stopic={"fhem/Balkon.Sensor.temp/temperature"} ? Du willst die Temperatur doch vermutlich nicht von Home Assistant aus senden ?

Wenn Du dem Beispiel gefolgt bist, müsstest Du den Sensor zudem noch in den HASS - Raum aufnehmen.

Kommt auf dem mqtt-Broker überhaupt was von dem Sensor an ? Bitte auf Kommandozeilenebene prüfen mit mosquitto_sub  oder bequem mit MQTT Explorer.

Beta-User

zusätzlich:
a) FHEM / MQTT_GENERIC_BRIDGE ist aktuell?
b) mqttForward und mqttSubscribe sind hier m.E. unnötig, du willst ja nur was publishen (das sieht mir nach einer Schleife aus!)
c) mqttPublish sollte entweder vollständig auf "wildcard" sein, oder nur auf Temperatur. Würde letzteres empfehlen:
temperature:topic={"$base/$device/temperature"}
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

gadget

#63
... und das value_template sieht auch komisch aus. Du sendest ja vermutlich nur einen numerischen Wert und kein json.

bei mir sieht ein von fhem versorgter Temperatur-Sensor in der configuration.yaml so aus:


sensor:
  - platform: mqtt
    name: "Temp Carport"
    state_topic: "fhem/LaCrosse_22/temperature"
    unit_of_measurement: "°C"
    icon: mdi:thermometer
    value_template: '{{ value | round(1) }}'
    expire_after: 4000
    availability_topic: "fhem/connection/status"
    payload_available: "connected"
    payload_not_available: "disconnected"


Und das event-min-interval passt auch nicht. Da muss das reading mit rein, also z.b. so:


attr Balkon.Sensor.temp event-min-interval temperature:30

daim21

Ok vielen Dank für euren input.

Habe jetzt in Fhem und HA entsprechend angepasst, jedoch erhalte ich nun zwar 0°C mehr sondern einen weiteren Fehlerhaften Wert. In diesem Fall wird mir angezeigt das 23°C auf dem Balkon sind. Was ja heute leider nicht stimmt. :)

Attributes
IODev
deCONZ

alexaName
Temperatur Balkon

event-min-interval
temperature:10

group
Temperaturen

icon
temp_temperature

model
TS0201

mqttPublish
temperature:topic={"$base/$device/temperature"}

room
Balkon,HASS,Sensoren,alexa

stateFormat
temperature C°

userattr
mqttAlias:textField-long mqttDefaults:textField-long mqttDisable:both,incoming,outgoing mqttForward:all,none mqttPublish:textField-long mqttSubscribe:textField-long structexclude


IN HA
- platform: mqtt
  name: "BalkonTemperature"
  state_topic: "fhem/Balkon.Sensor.temp/temperature"
  unit_of_measurement: "°C"
  icon: mdi:thermometer
  value_template: '{{ value | round(1) }}'
  expire_after: 4000
  availability_topic: "fhem/connection/status"
  payload_available: "connected"
  payload_not_available: "disconnected"


Zu der Frage "a) FHEM / MQTT_GENERIC_BRIDGE ist aktuell?"
Was meinst du damit genau?

Soll ich mal die Config von der Bridge und dem mqtt device hier posten?

Danke Euch

gadget

Zitat von: daim21 am 06 April 2021, 16:00:42

Zu der Frage "a) FHEM / MQTT_GENERIC_BRIDGE ist aktuell?"
Was meinst du damit genau?

Geh bitte zu deiner Bridge und mach da ein get version

Da sollte dann z.B. so was rauskommen:

version 1.3.3 by hexenmeister
$Id: 10_MQTT_GENERIC_BRIDGE.pm 23753 2021-02-16 22:03:34Z hexenmeister $


Ansonsten bitte bei deinem Temperatur Device in fhem ganz unten auf "raw definition" klicken. Da geht dann eine Box auf mit der Definition wie sie in der fhem.cfg steht. Und davon dann bitte alles bis zu den setstate-Zeilen kopieren und hier in einem code-Block einfügen.

Und schau bitte nach was auf dem mqtt Broker ankommt.


Beta-User

Es sollte was deutlich aktuelleres bei der Versionsanfrage rauskommen, es gab ein Problem, wenn man keine Attribute in der MGB selbst gesetzt hatte (dann sollte aber gar nichts ankommen).
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

daim21

Das ist der Output.

version 1.4.0 by hexenmeister
$Id: 10_MQTT_GENERIC_BRIDGE.pm 24029 2021-03-21 01:43:41Z hexenmeister $



Das sind die Attribute
Attributes
IODev
ha_MQTT2
deleteattr
event-aggregator
state
deleteattr
globalDefaults
sub:qos=2 pub:qos=0 retain=1 base={"fhem/$device"}
deleteattr
globalPublish
*:topic={"fhem/$device/$reading"}
deleteattr
icon
mqtt_bridge_2
deleteattr
room
MQTT
deleteattr
stateFormat
in: incoming-count out: outgoing-count devices: device-count
deleteattr
verbose
0
deleteattr




Beta-User

Bitte updaten.

Und möglichst gleich direkt in der MGB "$base" in Sende- und Empfangsrichtigung unterschiedlich setzen.

Dass globalPublish in der Kategorie "not recommended" ist, ist dir auch entgangen, nehme ich an? (Das ist dann auch doppelt zu den Einstellungen am Gerät! Würde empfehlen, es an der Bridge zu löschen.)
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

daim21

ZitatBitte updaten.
Habe ich

Das ist nun der output
version 1.4.1 by hexenmeister
$Id: 10_MQTT_GENERIC_BRIDGE.pm 24088 2021-03-25 20:53:02Z hexenmeister $




ZitatUnd möglichst gleich direkt in der MGB "$base" in Sende- und Empfangsrichtigung unterschiedlich setzen.
Hier bin ich nicht sicher was du genau meinst

[quoteDass globalPublish in der Kategorie "not recommended" ist, ist dir auch entgangen, nehme ich an? (Das ist dann auch doppelt zu den Einstellungen am Gerät! Würde empfehlen, es an der Bridge zu löschen.)][/quote]
Habe ich entfernt.


Das sind nun die MGB Attr bzw readings
Readings
device-count
26
2021-04-06 16:23:29
incoming-count
1
2021-04-06 16:23:44
outgoing-count
9
2021-04-06 16:35:18
transmission-state
outgoing publish sent
2021-04-06 16:35:18
updated-reading-count
0
2021-04-06 16:23:18
updated-set-count
1
2021-04-06 16:23:44
mqttGeneric
room
MQTT

IODev
ha_MQTT2

event-aggregator
state

globalDefaults
sub:qos=2 pub:qos=0 retain=1 base={"fhem/$device"}

icon
mqtt_bridge_2

room
MQTT

stateFormat
in: incoming-count out: outgoing-count devices: device-count

verbose
0


Beta-User

Zitat von: daim21 am 06 April 2021, 16:38:50
Hier bin ich nicht sicher was du genau meinst
Bei mir sieht das z.B. so aus:globalDefaults sub:base=MGB1/set pub:base=MGB1Damit ist "$base" in Sende- und Empfangsrichtung unterschiedlich vorbelegt.

"retain=1" ist auch zweischneidig, fällt nach meiner persönlichen Meinung auch in "not recommended", kommt aber darauf an, wie das Gesamtsystem aufgebaut ist.
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

daim21

globalDefaults sub:base=fhem/set pub:base=fhem

Habe das jetzt so bei mir eingegeben.

Erhalte weiterhin seltsame Werte.  :-\

Beta-User

Das glaube ich gerne. Du musst dann die Einstellungen an den zu versendenden Geräten auch entsprechend anpassen, da in $base dann $device nicht mehr enthalten ist. Das muss dann überall so sein wie an dem Sensor:
mqttPublish temperature:topic={"$base/$device/temperature"}
oder (falls aliasing im Spiel ist)
mqttPublish temperature:topic={"$base/$device/$name"}

Ansonsten ist "seltsame Werte" eine schwierig zu interpretierende Aussage. Würde empfehlen, einen "seltsamen Wert" rauszupicken und dann mal dessen "Pfaden" zu folgen.
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

gadget

Zitat von: daim21 am 06 April 2021, 16:59:23
Erhalte weiterhin seltsame Werte.  :-\

Ich bin raus, so lange Du nicht mal nachschaust was auf dem Broker ankommt und per "Raw Definition" die Definition deines Temperatur-Sensors mitteilst.

daim21

Du hast recht. Ich werde morgen mal "mosquitto_pub" und "mosquitto_sub" output von dem Balkon Temp Sensor posten. Ich hatte zwischenzeitlich sogar die korrekten Werte in HA stehen.  :)
Für heute reichts mir auch.