Modul-Diskussion/Hilfe: MQTT_GENERIC_BRIDGE

Begonnen von Master_Nick, 11 Oktober 2018, 17:23:24

Vorheriges Thema - Nächstes Thema

Phantomato

#270
Hallo,
ich habe das Problem, dass der retain Flag nicht zu funktionieren scheint. Wenn ich zu einer Topic subscribe bekomme ich keine Werte obwohl der retain Flag gesetzt war.

MQTT Generic Bridge:

version 1.1.7 by hexenmeister
$Id: 10_MQTT_GENERIC_BRIDGE.pm 18821 2019-03-07 20:18:23Z hexenmeister $


Broker:

mosquitto version 1.4.10 (build date Wed, 13 Feb 2019 00:45:38 +0000)
mosquitto is an MQTT v3.1 broker.


FHEM:

define MqttGenericBridge MQTT_GENERIC_BRIDGE
setuuid MqttGenericBridge 5c7a8d2d-f33f-990b-7e21-e3e9036eb0063a17
attr MqttGenericBridge IODev MQTTBroker
attr MqttGenericBridge room System



define WzEnableMotionDetection dummy
setuuid WzEnableMotionDetection 5c7a8d2d-f33f-990b-73ac-a1a05a2d1064a4d9
attr WzEnableMotionDetection alias Bewegungsmelder Wohnzimmer
attr WzEnableMotionDetection devStateIcon on:on:off off:off:on
attr WzEnableMotionDetection genericDeviceType switch
attr WzEnableMotionDetection homebridgeMapping on=state,cmdOn=on,cmdOff=off
attr WzEnableMotionDetection mqttForward all
attr WzEnableMotionDetection mqttPublish state:topic={"stat/$device/$reading"}  *:retain=1
attr WzEnableMotionDetection mqttSubscribe state:stopic={"cmnd/$device/$reading"}
attr WzEnableMotionDetection room Alexa,Wohnzimmer
attr WzEnableMotionDetection setList on off
attr WzEnableMotionDetection webCmd on:off


Edit:
Funktioniert nicht: attr WzEnableMotionDetection mqttPublish state:topic={"stat/$device/$reading"}  *:retain=1
das funktioniert aber attr WzEnableMotionDetection mqttPublish state:topic={"stat/$device/$reading"}  state:retain=1

Server: RaspberryPi4 4GB @Raspbian GNU/Linux 10 (buster), Docker, FHEM Docker | Homematic nanoCUL868 (VCCU) | Tasmota Switch & Sensors | Tasmota Zigbee | Zigbee2mqtt | SIGNALduino | Alexa & GoogleHome

hexenmeister

Funktioniert tatsächlicht nicht. Muss ich schauen.
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

hexenmeister

Probiere mal bitte die angehängte Version aus.
Ist eine Testversion mit dieser und paar anderen Fehlerkorrekturen und einer Feature-Erweiterung (einfachere Möglichkeit, zu einem Reading mehrere Nachrichten gleichzeitig zu versenden). Läuft bei mir bereits stabil.
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

Phantomato

#273
vielen Dank für den schnellen Bugfix. Retain funktioniert wieder. Super  :D

Edit: Viel Spaß mit dem Bier heute Abend  ;) 
Server: RaspberryPi4 4GB @Raspbian GNU/Linux 10 (buster), Docker, FHEM Docker | Homematic nanoCUL868 (VCCU) | Tasmota Switch & Sensors | Tasmota Zigbee | Zigbee2mqtt | SIGNALduino | Alexa & GoogleHome

hexenmeister

Die neue Version ist jetzt ins Repo eingecheckt (ab Morgen per Update).
Danke für den Fehlerbericht und das Testen! (Prost! ;D)

Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

Dersch

#275
Ich habe nach dem letzten Update das Problem mit der Bridge keine Werte mehr published zu bekommen. Ich kann aber ohne Problem die Geräte hinter der Bridge steuern.

version 1.2.1 by hexenmeister
$Id: 10_MQTT_GENERIC_BRIDGE.pm 19477 2019-05-28 16:27:14Z hexenmeister $



nternals:
   DEF        mqtt GarageBewegung,GarageTorReed,GaragePflanzenlampe,GarageHeizung,GarageKompressor,GarageLicht,TeBachWasserzufuhr,GarageDHT22,GarageHelligkeitInnen,GarageHelligkeitAussen,GarageTempFeuchteInnen,GarageTempFeuchteAussen,GarageLCD,GarageTempRohr,GarageTempVerteiler,GarageTempWasser,GarageTor
   FUUID      5c686efa-f33f-2c64-630f-1e1b7e1d0259a375
   IODev      FHEMmqtt
   NAME       mqttGeneric
   NR         74
   NTFY_ORDER 50-mqttGeneric
   STATE      ???
   TYPE       MQTT_GENERIC_BRIDGE
   devspec    GarageBewegung,GarageTorReed,GaragePflanzenlampe,GarageHeizung,GarageKompressor,GarageLicht,TeBachWasserzufuhr,GarageDHT22,GarageHelligkeitInnen,GarageHelligkeitAussen,GarageTempFeuchteInnen,GarageTempFeuchteAussen,GarageLCD,GarageTempRohr,GarageTempVerteiler,GarageTempWasser,GarageTor
   prefix     mqtt
   READINGS:
     2019-05-29 22:54:17   device-count    15
     2019-05-29 22:44:00   incoming-count  2
     2019-05-29 22:35:49   outgoing-count  0
     2019-05-29 22:44:00   transmission-state incoming publish received
     2019-05-29 22:35:49   updated-reading-count 0
     2019-05-29 22:44:01   updated-set-count 2
   devices:
     :global:
       :defaults:
         pub:qos    2
         pub:retain 0
         sub:qos    2
         sub:retain 0
     GarageBewegung:
       :publish:
         *:
           mode       R
           topic      {"garage/GarageBewegung/$reading"}
     GarageDHT22:
       :publish:
         *:
           mode       R
           topic      {"garage/GarageTempNetzwerk/$reading"}
     GarageHeizung:
       :publish:
         *:
           mode       R
           topic      {"garage/GarageHeizung/$reading"}
       :subscribe:
         HASH(0x36e3470)
     GarageHelligkeitAussen:
       :publish:
         *:
           mode       R
           topic      {"garage/GarageHelligkeitAussen/$reading"}
     GarageHelligkeitInnen:
       :publish:
         *:
           mode       R
           topic      {"garage/GarageHelligkeitInnen/$reading"}
     GarageKompressor:
       :publish:
         *:
           mode       R
           topic      {"garage/GarageKompressor/$reading"}
       :subscribe:
         HASH(0x36e2d08)
     GarageLicht:
       :publish:
         *:
           mode       R
           topic      garage/GarageLicht
       :subscribe:
         HASH(0x36e2c90)
     GaragePflanzenlampe:
       :publish:
         *:
           mode       R
           topic      {"garage/GaragePflanzenlampe/$reading"}
       :subscribe:
         HASH(0x36e0aa0)
     GarageTempFeuchteAussen:
       :publish:
         *:
           mode       R
           topic      {"garage/GarageTempFeuchteAussen/$reading"}
     GarageTempFeuchteInnen:
       :publish:
         *:
           mode       R
           topic      {"garage/GarageTempFeuchteInnen/$reading"}
     GarageTempRohr:
       :publish:
         *:
           mode       R
           topic      {"garage/GarageTempRohr/$reading"}
     GarageTempVerteiler:
       :publish:
         *:
           mode       R
           topic      {"garage/GarageTempVerteiler/$reading"}
     GarageTempWasser:
       :publish:
         *:
           mode       R
           topic      {"garage/GarageTempWasser/$reading"}
     GarageTorReed:
       :publish:
         *:
           mode       R
           topic      {"garage/GarageTorReed/$reading"}
     TeBachWasserzufuhr:
       :publish:
         *:
           mode       R
           topic      {"garage/TeBachWasserzufuhr/$reading"}
       :subscribe:
         HASH(0x36e52c8)
   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:
     garage/GaragePflanzenlampe/set
     garage/GarageKompressor/set
     garage/TeBachWasserzufuhr/set
     garage/GarageLicht/set
     garage/GarageHeizung/set
   subscribeExpr:
     ^garage\/GaragePflanzenlampe\/set$
     ^garage\/GarageKompressor\/set$
     ^garage\/TeBachWasserzufuhr\/set$
     ^garage\/GarageLicht\/set$
     ^garage\/GarageHeizung\/set$
   subscribeQos:
     garage/GarageHeizung/set 0
     garage/GarageKompressor/set 0
     garage/GarageLicht/set 0
     garage/GaragePflanzenlampe/set 0
     garage/TeBachWasserzufuhr/set 0
Attributes:
   IODev      FHEMmqtt
   globalDefaults pub:qos=2 sub:qos=2 retain=0
   room       MQTT,Zentral


Beispiel Sensor:

Auf dem MQTT Bridge FHEM
Internals:
   DEF        28.FFA99CA41604 60
   FUUID      5c686ef9-f33f-2c64-3c87-6523e66bb1b2e1c0
   IODev      OWServerGarage
   LAST_READ_FAILED 0
   NAME       GarageTempRohr
   NOTIFYDEV  global
   NR         71
   NTFY_ORDER 50b-GarageTempRohr
   STATE      temperature: 17.875  alarm: 0
   TYPE       OWDevice
   READINGS:
     2018-12-30 19:45:46   address         28FFA99CA4160434
     2019-05-29 23:01:13   alarm           0
     2019-05-29 23:01:13   state           temperature: 17.875  alarm: 0
     2019-05-29 23:01:13   temperature     17.875
     2018-12-30 19:45:43   temphigh        50
     2018-12-30 19:45:35   templow         5
     2018-12-30 19:46:46   type            DS18B20
   fhem:
     address    28.FFA99CA41604
     alerting   1
     bus        bus.0
     interfaces temperature
     interval   60
     getters:
       address
       crc8
       family
       fasttemp
       id
       locator
       r_address
       r_id
       r_locator
       temperature
       temperature10
       temperature11
       temperature12
       temperature9
       temphigh
       templow
       type
     polls:
       temperature
     setters:
       temphigh
       templow
     state:
       temperature
Attributes:
   IODev      OWServerGarage
   model      DS18B20
   mqttPublish *:topic={"garage/GarageTempRohr/$reading"}
   room       OWDevice
   userattr   mqttAlias:textField-long mqttDefaults:textField-long mqttDisable:both,incoming,outgoing mqttForward:all,none mqttPublish:textField-long mqttSubscribe:textField-long


Auf der anderen Seite:
Internals:
   FUUID      5c432079-f33f-c2c3-2cd6-be12dd45b1446527
   IODev      mqtt
   NAME       GarageTempRohr
   NR         336
   STATE      T: 16.1875 °C
   TYPE       MQTT_DEVICE
   qos        *:2
   READINGS:
     2019-05-29 08:18:47   alarm           0
     2019-05-29 08:18:47   temperature     16.1875
     2019-05-29 22:29:34   transmission-state subscription acknowledged
   message_ids:
   sets:
   subscribe:
     garage/GarageTempRohr/+
     garage/GarageTempRohr/alarm
     garage/GarageTempRohr/temperature
   subscribeExpr:
     ^garage\/GarageTempRohr\/([^/]+)$
     ^garage\/GarageTempRohr\/alarm$
     ^garage\/GarageTempRohr\/temperature$
   subscribeQos:
     garage/GarageTempRohr/+
     garage/GarageTempRohr/alarm 0
     garage/GarageTempRohr/temperature 0
   subscribeReadings:
     garage/GarageTempRohr/alarm:
       cmd       
       name       alarm
     garage/GarageTempRohr/temperature:
       cmd       
       name       temperature
Attributes:
   IODev      mqtt
   autoSubscribeReadings garage/GarageTempRohr/+
   group      Umweltsensoren
   icon       temp_temperature
   qos        2
   room       Garage
   stateFormat T: temperature °C
   subscribeReading_alarm garage/GarageTempRohr/alarm
   subscribeReading_temperature garage/GarageTempRohr/temperature

hexenmeister

Moin, ich bin paar Tage weg, sodass ich erst am Sonntag dazu kommen kann, nach dem Fehler zu suchen. Empfehle bis dahin die vorherige Version zu verwenden.
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

Dersch

Zitat von: hexenmeister am 30 Mai 2019, 02:27:48
Moin, ich bin paar Tage weg, sodass ich erst am Sonntag dazu kommen kann, nach dem Fehler zu suchen. Empfehle bis dahin die vorherige Version zu verwenden.

Ok, danke und schönes langes Wochenende.

Mit Version (welche ich im Backup vom letzten Stand vorfand)

version 1.1.7 by hexenmeister
$Id: 10_MQTT_GENERIC_BRIDGE.pm 18821 2019-03-07 20:18:23Z hexenmeister $


Werden auch wieder outgoing messages gesendet.

Internals:
   DEF        mqtt GarageBewegung,GarageTorReed,GaragePflanzenlampe,GarageHeizung,GarageKompressor,GarageLicht,TeBachWasserzufuhr,GarageDHT22,GarageHelligkeitInnen,GarageHelligkeitAussen,GarageTempFeuchteInnen,GarageTempFeuchteAussen,GarageLCD,GarageTempRohr,GarageTempVerteiler,GarageTempWasser,GarageTor
   FUUID      5c686efa-f33f-2c64-630f-1e1b7e1d0259a375
   IODev      FHEMmqtt
   NAME       mqttGeneric
   NR         74
   NTFY_ORDER 50-mqttGeneric
   STATE      ???
   TYPE       MQTT_GENERIC_BRIDGE
   devspec    GarageBewegung,GarageTorReed,GaragePflanzenlampe,GarageHeizung,GarageKompressor,GarageLicht,TeBachWasserzufuhr,GarageDHT22,GarageHelligkeitInnen,GarageHelligkeitAussen,GarageTempFeuchteInnen,GarageTempFeuchteAussen,GarageLCD,GarageTempRohr,GarageTempVerteiler,GarageTempWasser,GarageTor
   prefix     mqtt
   READINGS:
     2019-05-30 09:56:23   device-count    15
     2019-05-30 09:56:30   incoming-count  8
     2019-05-30 09:57:35   outgoing-count  14
     2019-05-30 09:57:35   transmission-state outgoing publish sent
     2019-05-30 09:56:12   updated-reading-count 0
     2019-05-30 09:56:30   updated-set-count 8


Grüße
Dirk

hexenmeister

Gesucht, gefunden, gelöst :)
War ein Fehler, habe bei der letzten Erweiterung etwas nicht bedacht. Danke für den Bug-Report!
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

Dersch

#279
Sehr gut, danke :) Ab wann ist es über Update verfügbar?

Ich habe da noch ein anderes Problem, aber das besteht seit dem ich MQTT_DEVICE und MQTT_BRIDGE nutze. Ich weiß nicht ob das an mir oder am Modul liegt.
Ich bekomme bei Devices welche ein Topic subscribed haben (zum steuern) und gleichzeitig ihre readings publishen sollen einfach keine Messages. Also steuern geht, ihren state publishen geht nicht.

Beispiel device (es sind einige)

Auf der MQTT_BRIDGE Seite:
Internals:
   DEF        MCP23017:PortB7
   DEVICE     MCP23017
   FUUID      5c686ef4-f33f-2c64-3dbd-fea08bc69dfaae8b
   NAME       GaragePflanzenlampe
   NOTIFYDEV  global,MCP23017
   NR         32
   NTFY_ORDER 50-GaragePflanzenlampe
   READING    PortB7
   STATE      off
   TYPE       readingsProxy
   CONTENT:
     MCP23017   1
   READINGS:
     2019-05-30 10:18:01   lastCmd         off
     2019-05-30 10:18:01   state           off
Attributes:
   group      MCP23017 Outputs
   mqttForward all
   mqttPublish state:topic={"garage/GaragePflanzenlampe/state"}
   mqttSubscribe state:stopic={"garage/GaragePflanzenlampe/set"}
   room       GPIO-Devices
   setFn      {($CMD eq "on")?"PortB7 off":"PortB7 on"}
   setList    on off
   userattr   mqttAlias:textField-long mqttDefaults:textField-long mqttDisable:both,incoming,outgoing mqttForward:all,none mqttPublish:textField-long mqttSubscribe:textField-long
   valueFn    {($VALUE eq "on")?"off":"on"}


Auf der MQTT_DEVICE Seite:


   Internals:
   FUUID      5c432079-f33f-c2c3-1d4d-8bb91305bd4bac31
   IODev      mqtt
   NAME       GaragePflanzenlampe
   NR         318
   STATE      off
   TYPE       MQTT_DEVICE
   qos        *:2
   READINGS:
     2019-06-02 10:55:07   state           off
     2019-06-02 11:14:54   transmission-state subscription acknowledged
   message_ids:
   publishSets:
     :
       topic      garage/GaragePflanzenlampe/set
       values:
         on
         off
         toggle
         on-for-timer
         off-for-timer
   sets:
     off       
     off-for-timer
     on         
     on-for-timer
     toggle     
   subscribe:
     garage/GaragePflanzenlampe/state
   subscribeExpr:
     ^garage\/GaragePflanzenlampe\/state$
   subscribeQos:
     garage/GaragePflanzenlampe/state 0
   subscribeReadings:
     garage/GaragePflanzenlampe/state:
       cmd       
       name       state
Attributes:
   IODev      mqtt
   cmdIcon    on:general_an off:general_aus
   group      Licht
   icon       light_led
   publishSet on off toggle on-for-timer off-for-timer garage/GaragePflanzenlampe/set
   qos        2
   room       Garage
   subscribeReading_state garage/GaragePflanzenlampe/state


In der Konstellation bekomme ich auf den Topic /garage/GaragePflanzenlampe/state nichts also generell bekomme ich kein Topic state von der MQTT_BRIDGE Seite.

Das einzeige was ich bekomme ist ein Topic /garage/GaragePflanzenlampe/set das bringt mir aber erstmal nichts. (was mich auch stark wundert da ich ja das Topic zum publishen auf state gesetzt habe) Ich möchte auf der MQTT_DEVICE Seite auch mitbekommen wenn sich der state auf der Bridge Seite ändert weil es dort lokal geschaltet wurde.

Also wie muss ich ein Device auf unter MQTT_BRIDGE konfiguieren damit es sein state published?

Grüße
Dirk

hexenmeister

Habe das Verhalten nachgestellt und hin und her ausprobiert. Das Problem scheint noch vor der Bridge zu liegen. Es werden in der Kombination (Dummy/ReadingsProxy) keine Events an die Bridge geliefert und ich verstehe gerade nicht warum :(
Mit nur enem Dummy funktioniert es dagegen ohne Probleme.
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

Dersch

Ah ok, was macht den ein readingsproxy anders als ein dummy? Da es bisher nicht aufgefallen ist bin ich wohl der  einzige der das so verwendet :(

hexenmeister

 Das weiß ich (noch) nicht. Werde versuchen rauszufinden. Generell sind ja Events da, nur an die Bridge kommt nichts an. Vermutlich sehe ich gerade den Wald vor lauter Bäumen nicht.
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

Dersch

Ok schonmal Danke für deine Hilfe. Wenn ich was für dich testen oder probieren kann oder so sag Bescheid.

Maui

Moin Alexander. Ich hab da grad ein Problem, bei dem ich nicht weiter weiß.
Ich habe mehrere FHEM Instanzen und bewusst nur eine mit Telegram Bot.
Ich schicke mir per MQTT GB die Nachrichten auf den Telegram Host und leite ihn dort an den Bot weiter.
Klappt auch problemlos mit einfachen Meldungen. Nun nutze ich aber auch Monitoring und wenn einige Fenster offen sind geht die Gesammelte Meldung nicht über die Bridge. Ich weiß nicht ob es an bestimmten Zeichen liegt oder der String zu lang ist.
Vielleicht hast du ja spontan eine Idee.


Internals:
   FUUID      5cdd0927-f33f-f22a-4809-081008701e8b6ef2
   NAME       telebot
   NR         47
   STATE      ???
   TYPE       dummy
   READINGS:
     2019-06-05 09:10:40   message         Die folgenden 5 Fenster sind schon länger geöffnet:
- fk_bad_oben
- fk_bad_unten
- fk_kueche
- fk_sz
- fk_terrasse

Im Raum "ts_beamer" ist es sehr feucht.

Attributes:
   mqttPublish message:topic=fhem/telebot/message
   readingList message
   room       9_Tech