Wie MQTT_GENERIC_BRIDGE für subscribe nutzen?

Begonnen von Tobias, 15 Dezember 2023, 17:16:20

Vorheriges Thema - Nächstes Thema

Tobias

Hi,
ich versuche über MQTT ein gerät anzubinden, habe dazu MQTT_GENERIC_BRIDGE definiert.
Das publishen von Readings funktioniert wunderbar, aber ich bekomme es auch mit der Doku (https://wiki.fhem.de/wiki/MQTT_GENERIC_BRIDGE) das subscriben nicht hin. Ich mächte via MQTT das Gerät schalten.

define mqtt MQTT2_CLIENT 192.168.10.10:1883
attr mqtt clientOrder MQTT_GENERIC_BRIDGE MQTT2_DEVICE
attr mqtt room 99_Devices
attr mqtt subscriptions setByTheProgram
#   BUF       
#   CFGFN     
#   Clients    :MQTT_GENERIC_BRIDGE:MQTT2_DEVICE:
#   ClientsKeepOrder 1
#   DEF        192.168.10.10:1883
#   DeviceName 192.168.10.10:1883
#   FD         9
#   FUUID      657c6ff0-f33f-cbbd-e4b2-365251f12b9f5a2c
#   NAME       mqtt
#   NR         302
#   PARTIAL   
#   STATE      opened
#   TYPE       MQTT2_CLIENT
#   WBCallback
#   clientId   mqtt2
#   eventCount 27
#   lastMsgTime 1702656643.37439
#   nextOpenDelay 5
#   MatchList:
#     1:MQTT_GENERIC_BRIDGE ^.
#     2:MQTT2_DEVICE ^.
#   READINGS:
#     2023-12-15 16:48:47   state           opened
#
setstate mqtt opened
setstate mqtt 2023-12-15 16:48:47 state opened

define mqttGenericBridge MQTT_GENERIC_BRIDGE
attr mqttGenericBridge IODev mqtt
attr mqttGenericBridge debug 1
attr mqttGenericBridge globalDefaults sub:base=TulpeMD/Home/set pub:base=TulpeMD/Home
attr mqttGenericBridge room 99_Devices
attr mqttGenericBridge stateFormat dev: device-count in: incoming-count out: outgoing-count
attr mqttGenericBridge verbose 4
#   CFGFN     
#   FUUID      657c6a6b-f33f-cbbd-214d-a19a461740db19c1
#   IODev      mqtt
#   NAME       mqttGenericBridge
#   NR         213
#   NTFY_ORDER 70-mqttGenericBridge
#   STATE      dev: 11 in: 0 out: 24
#   TYPE       MQTT_GENERIC_BRIDGE
#   devspec    .*
#   eventCount 58
#   prefix     mqtt
#   READINGS:
#     2023-12-15 16:56:01   IODev           mqtt
#     2023-12-15 16:33:15   attrTemplateVersion 20211208_MGB_M2D
#     2023-12-15 16:48:44   device-count    11
#     2023-12-15 16:02:03   incoming-count  0
#     2023-12-15 17:10:36   outgoing-count  24
#     2023-12-15 17:10:36   transmission-state outgoing publish sent
#     2023-12-15 16:02:03   updated-reading-count 0
#     2023-12-15 16:02:03   updated-set-count 0
#   devices:
#     :global:
#       :alias:
#       :defaults:
#         pub:base   TulpeMD/Home
#         sub:base   TulpeMD/Home/set
#       :publish:
#     Fenster_KG_Bad:
#       :alias:
#       :publish:
#         status:
#           mode       R
#           topic      {"$base/$device/$name"}
#       :subscribe:
#     Fenster_KG_GZ:
#       :alias:
#       :publish:
#         status:
#           mode       R
#           topic      {"$base/$device/$name"}
#       :subscribe:
#     Fenster_KG_Garage_L:
#       :alias:
#       :publish:
#         status:
#           mode       R
#           topic      {"$base/$device/$name"}
#       :subscribe:
#     Fenster_KG_Garage_R:
#       :alias:
#       :publish:
#         status:
#           mode       R
#           topic      {"$base/$device/$name"}
#       :subscribe:
#     Fenster_KG_HZ:
#       :alias:
#       :publish:
#         status:
#           mode       R
#           topic      {"$base/$device/$name"}
#       :subscribe:
#     Fenster_KG_NZ:
#       :alias:
#       :publish:
#         status:
#           mode       R
#           topic      {"$base/$device/$name"}
#       :subscribe:
#     Fenster_KG_Oel:
#       :alias:
#       :publish:
#         status:
#           mode       R
#           topic      {"$base/$device/$name"}
#       :subscribe:
#     Fenster_KG_WK:
#       :alias:
#       :publish:
#         status:
#           mode       R
#           topic      {"$base/$device/$name"}
#       :subscribe:
#     LED_AA_Garage:
#       :publish:
#       :subscribe:
#         HASH(0x1a4c528)
#     T_GT_Terrasse:
#       :alias:
#       :publish:
#         humidity:
#           last       1702656636.55823
#           mode       R
#           topic      {"$base/$device/$name"}
#         temperature:
#           last       1702656636.56532
#           mode       R
#           topic      {"$base/$device/$name"}
#       :subscribe:
#     Wasserzaehler:
#       :alias:
#       :publish:
#         PortA:
#           mode       R
#           topic      {"$base/$device/$name"}
#         PortA_rate:
#           mode       R
#           topic      {"$base/$device/$name"}
#       :subscribe:
#   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     *
#   message_ids:
#   subscribe:
#     TulpeMD/Home/LED_AA_Garage/+
#   subscribeExpr:
#     ^TulpeMD\/Home\/LED_AA_Garage\/([^/]+)$
#   subscribeQos:
#     TulpeMD/Home/LED_AA_Garage/+ 0
#
setstate mqttGenericBridge dev: 11 in: 0 out: 24
setstate mqttGenericBridge 2023-12-15 16:56:01 IODev mqtt
setstate mqttGenericBridge 2023-12-15 16:33:15 attrTemplateVersion 20211208_MGB_M2D
setstate mqttGenericBridge 2023-12-15 16:48:44 device-count 11
setstate mqttGenericBridge 2023-12-15 16:02:03 incoming-count 0
setstate mqttGenericBridge 2023-12-15 17:10:36 outgoing-count 24
setstate mqttGenericBridge 2023-12-15 17:10:36 transmission-state outgoing publish sent
setstate mqttGenericBridge 2023-12-15 16:02:03 updated-reading-count 0
setstate mqttGenericBridge 2023-12-15 16:02:03 updated-set-count 0

define LED_AA_Garage OWSWITCH DS2408 045413000000
attr LED_AA_Garage IODev 1wireBus
attr LED_AA_Garage group StatusAnzeige Außen
attr LED_AA_Garage model DS2408
attr LED_AA_Garage mqttSubscribe gpio:stopic={"TulpeMD/Home/$device/$name"}
attr LED_AA_Garage room Alarmanlage
attr LED_AA_Garage stateFormat {(ReadingsVal($name,"A","") eq "ON")?"Grün":(ReadingsVal($name,"D","") eq "ON")?"Gelb":(ReadingsVal($name,"G","") eq "ON")?"Rot":"Aus"}
#   DEF        DS2408 045413000000
#   ERRCOUNT   0
#   FUUID      5d22282b-f33f-1fff-395b-0051dc3ed8d33489
#   INTERVAL   300
#   IODev      1wireBus
#   NAME       LED_AA_Garage
#   NOTIFYDEV  global
#   NR         170
#   NTFY_ORDER 50-LED_AA_Garage
#   OW_FAMILY  29
#   OW_ID      045413000000
#   PRESENT    1
#   ROM_ID     29.045413000000.c5
#   STATE      Rot
#   TYPE       OWSWITCH
#   eventCount 22
#   READINGS:
#     2023-12-15 17:10:33   A               OFF
#     2023-12-15 17:10:33   B               OFF
#     2023-12-15 17:10:33   C               OFF
#     2023-12-15 17:10:33   D               OFF
#     2023-12-15 17:10:33   E               OFF
#     2023-12-15 17:10:33   F               OFF
#     2023-12-15 17:10:33   G               ON
#     2023-12-15 17:10:33   H               OFF
#     2023-12-15 15:50:13   IODev           1wireBus
#     2023-12-15 17:10:33   gpio            191
#     2023-12-15 17:10:33   state           A: OFF B: OFF C: OFF D: OFF E: OFF F: OFF G: ON H: OFF
#   owg_val:
#     1
#     1
#     1
#     1
#     1
#     1
#     0
#     1
#   owg_vax:
#     1
#     1
#     1
#     1
#     1
#     1
#     0
#     1
#
setstate LED_AA_Garage Rot
setstate LED_AA_Garage 2023-12-15 17:10:33 A OFF
setstate LED_AA_Garage 2023-12-15 17:10:33 B OFF
setstate LED_AA_Garage 2023-12-15 17:10:33 C OFF
setstate LED_AA_Garage 2023-12-15 17:10:33 D OFF
setstate LED_AA_Garage 2023-12-15 17:10:33 E OFF
setstate LED_AA_Garage 2023-12-15 17:10:33 F OFF
setstate LED_AA_Garage 2023-12-15 17:10:33 G ON
setstate LED_AA_Garage 2023-12-15 17:10:33 H OFF
setstate LED_AA_Garage 2023-12-15 15:50:13 IODev 1wireBus
setstate LED_AA_Garage 2023-12-15 17:10:33 gpio 191
setstate LED_AA_Garage 2023-12-15 17:10:33 state A: OFF B: OFF C: OFF D: OFF E: OFF F: OFF G: ON H: OFF


Wenn ich nun mittels MQTT.fx folgendes absetze kommt nix an, die GENERIC_BRIDGE zeigt keinen Eingang, auch im Log mit Verbose 4 ist nichts zu sehen.
TulpeMD/Home/LED_AA_Garage/set 1
TulpeMD/Home/set/LED_AA_Garage 1

Am MQTT Server kommt es an, mit Verbose 5 an der GENERIC_BRIDGE sieht man das es mit den vielen anderen durchrauscht.
Jemand eine zündende Idee wo mein Problem liegt?
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

betateilchen

attr LED_AA_Garage mqttSubscribe gpio:stopic={"TulpeMD/Home/$device/$name"}
Lass doch erstmal die Variablen weg und schreibe das topic, auf das Du reagieren möchtest, vollständig da hin.

Und schau Dir auf dem MQTT Server mal die aktiven subscriptions an, ob da Dein device überhaupt dabei ist.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Beta-User

Andere Alternative: an der MGB gibt es ein "get ... devinfo". Da sieht man (u.A. auch) im Klartext, welche subscriptions effektiv aus den Variablen gebastelt werden.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Tobias

die devinfo hatte ich mir auch schon angesehen, gebracht hat es aber nix :(
LED_AA_Garage
  publish:
  subscribe:
    gpio             <= TulpeMD/Home/LED_AA_Garage/+ (mode: S)
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

Beta-User

Es ist wie betateilchen schon geschrieben hat: Du verwirrst dich mit den Variablen und hast jedenfalls nicht geschrieben, dass du was an den Topic gesendet hast, der sich aus devinfo ergibt:

TulpeMD/Home/LED_AA_Garage/gpio 1
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Tobias

puh, jetzt kommt was an. Es lag daran das ich nach dem anpassen der GENERICBRidge das ganze FHEM nochmal neustarten musste....

mosquitto_pub -h 192.168.10.10 -i fhem-test -t TulpeMD/Home/set/LED_AA_Garage/gpio -m 1912023.12.15 18:30:50 1: MQTT_GENERIC_BRIDGE: [mqttGenericBridge] setUpdate: error in set command: gpio init interval output
ist zwar ein Fehler, aber zumindest kommt es an ;)
damit kann ich erstmal weiter forschen
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter