Fragen MQTT_Broker und MQTT_GENERIC_BRIDGE

Begonnen von choetzu, 07 April 2019, 14:22:15

Vorheriges Thema - Nächstes Thema

choetzu

Guten Nachmittag

ich nutze seit ein paar Monaten MQTT eigentlich nur zur Verbindung und Kommunikation meiner 3 FHEM Installationen (auf 3 Raspis). Dazu nutze ich folgende Konfiguration:

1. Mosquitto läuft auf einem Raspi
2. MQTT_Broker auf allen 3 Raspi mit Verbindung zum einen Mosquitto
3. Auf allen 3 Raspis läuft auch MQTT_GENERIC_BRIDGE zum übermitteln

Es läuft eigentlich alles auch soweit gut. Ich frage mich nun, nachdem es neue MQTT-Module gibt, ob der Einsatz von MQTT_Broker und MQTT_GENERIC_BRIDGE immer noch die beste und schlankeste Variante ist. Mittlerweile gibt es ja auch MQTT2 .. Was meint ihr?

Dann habe ich noch konkret eine Frage zu MQTT_GENERIC_BRIDGE.

Ich habe meine Lüftung in der FHEM Instanz #1 integriert. Diese kommuniziert mit der FHEM Instanz #2. Irgendwas an der Konfiguration stimmt noch nicht.

Denn wenn ich auf #2 den Befehl "FanSpeed 8" eingebe, kommt das zwar bei #1 an, aber es generiert dann auf #2 wiederum 3 verschiedene Readings. Nämlich:

- "FanSpeed" mit Wert "8"
- "FanSpeed 8" mit keinem Wert
- "set" mit dem Wert "8"

Ich möchte aber eigentlich nur, dass es mir das Reading "FanSpeed" mit dem Wert "8" füllt. Die anderen 2 Werte will ich nicht in meinen Readings. Wie gehe ich das an?

Hier noch die Listings:

Devis Lüftung auf #1
Internals:
   BusVersion 2
   CFGFN     
   CHANGED   
   DEF        /dev/ttyUSB0
   DeviceName /dev/ttyUSB0@9600
   FD         18
   FUUID      5c9bcd52-f33f-97bd-eedc-3163d597355c0f19
   MR_Flags6  00000000
   MR_Select  00001001
   NAME       Ventilation
   NR         4451
   PARTIAL   
   STATE      6
   TYPE       Vallox
   READINGS:
     2019-03-27 20:21:59   CO2AdjustState  0
     2019-03-27 20:22:00   CO2High         0
     2019-03-27 20:22:00   CO2Low          0
     2019-03-27 20:21:55   EfficiencyAverage 0
     2019-03-27 20:21:55   EfficiencyIn    0
     2019-03-27 20:21:55   EfficiencyOut   0
     2019-04-07 14:00:36   FanSpeed        6
     2019-03-27 20:21:59   FaultIndicator  0
     2019-03-27 20:21:59   FilterGuardIndicator 0
     2019-03-27 20:21:59   FireplaceBoosterStatus 0
     2019-03-27 20:21:59   FireplaceSwitchActivation 0
     2019-03-27 20:21:59   HeatingIndicator 0
     2019-03-27 20:21:59   HeatingState    1
     2019-03-27 20:21:59   PowerState      1
     2019-03-27 20:21:59   RHAdjustState   0
     2019-03-27 20:21:59   RemoteMonitoringControl 0
     2019-03-27 20:21:59   ServiceReminderIndicator 0
     2019-03-31 00:09:40   ServiceReminderMonths 12
     2019-04-07 14:03:15   TempExhaust     11
     2019-04-05 20:19:32   TempIncoming    19
     2019-04-04 05:30:19   TempInside      22
     2019-04-06 20:54:03   TempOutside     9
     2019-03-27 20:21:55   state           opened
Attributes:
   event-on-change-reading .*
   mqttPublish *:topic={"home/Waschkueche/Lueftung/$reading"}
   mqttSubscribe FanSpeed|HeatingState|PowerState:stopic=home/Waschkueche/Lueftung/set
   room       Lueftung
   stateFormat FanSpeed
   timestamp-on-change-reading .*


Und hier der Lüftungs-dummy auf #2
Internals:
   FUUID      5c954c73-f33f-8001-0a95-98ae900618acd360
   NAME       Lueftung
   NR         647
   STATE      6
   TYPE       dummy
   Helper:
     DBLOG:
       FanSpeed:
         Logging:
           TIME       1554638436.24975
           VALUE      6
       TempExhaust:
         Logging:
           TIME       1554638595.67844
           VALUE      11
       TempOutside:
         Logging:
           TIME       1554576843.92981
           VALUE      9
       set:
         Logging:
           TIME       1554638341.69541
           VALUE      8
   READINGS:
     2019-04-07 14:00:36   FanSpeed        6
     2019-04-07 14:00:36   FanSpeed 6     
     2019-04-07 13:59:01   FanSpeed 8     
     2019-03-31 00:09:40   ServiceReminderMonths 12
     2019-04-07 14:03:15   TempExhaust     11
     2019-04-05 20:19:32   TempIncoming    19
     2019-03-30 23:51:43   TempInside      23
     2019-04-06 20:54:03   TempOutside     9
     2019-04-07 13:59:01   set             8
Attributes:
   event-on-change-reading .*
   mqttPublish FanSpeed|HeatingState|PowerState:topic={"home/Waschkueche/Lueftung/set"}
   mqttSubscribe *:topic={"home/Waschkueche/Lueftung/$reading"}
   readingList FanSpeed PowerState HeatingState
   room       06_Remote
   setList    FanSpeed PowerState HeatingState


Kann mir hier jemand helfen? Herzlichen Dank.

lg c
Raspi3, EnOcean, Zwave, Homematic

Beta-User

Moin,

da das setup grundsätzlich funktioniert, würde ich das hier lassen, wie es ist. Die MQTT2-Sachen sind vor allem dann einfacher zu handhaben, wenn man in das Thema einsteigt und MQTT "nebenbei" macht. Aber über diese Einstiegs-Phase scheinst du raus zu sein, und in einem verteilten FHEM-Setup ist auch der zusätzliche externe Dienst eher "verschmerzbar", wie wenn man nur schnell mal ein paar tasmota-Devices einbinden will.

Was die konkreten Probleme mit GenericBridge angeht, würde ich tippen, dass du das ganze Event versendest, aber in der Payload eigentlich nur sowas wie "$value" stehen sollte. Wenn du in der cref bzw. den Beispielen nichts passendes findest, bitte den MQTT-Verkehr mal mitlesen, wenn du da was schaltest und das hier auch posten.
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

Billy

#2
@choetzu

mir fällt auf dass bei dir ( Device Lüftung auf #1) keine Trennung zwischen Readings und state beim publishen erfolgt.
In den Beispielen von Hexenmeister sieht man schön diese trennung.
https://forum.fhem.de/index.php/topic,91642.msg841371.html#msg841371
defmod <actor-device-name> CUL_HM xxxxxx
attr <actor-device-name> model HM-LC-Dim1TPBU-FM
...
attr <actor-device-name> mqttPublish pct:topic=haus/wohnzimmer/licht/level state:topi=haus/wohnzimmer/licht/state
attr <actor-device-name> mqttSubscribe pct:stopic=haus/wohnzimmer/licht/set


dann brauchst du bei Lüftungs-dummy auf #2 auch den state nicht in der readingList.
Wenn FanSpeed wie es aussieht state ist, dann müsste die readingList  nur PowerState HeatingState beinhalten.

In den Beispielen von Hexenmeister sind eigentlich alle Zusammenhänge ersichtlich.

Und zur Info, bei mir läuft Mosquitto auf der Synology, 3 BBB's mit der Generic-Bridge kommunizieren in allen Richtungen miteinender
und ca. 10 Sonoff-Tasmota Devices + Home Status Display.

Billy


FHEM immer akt. auf 3 BeagleBoneBlack: 2xHMLAN 2xJeelink ;10x HM-CC-TC, 13x HM-CC-VD, 1x HM-ES-PMSw1-Pl, 3x HM-LC-SW1-PL2, viele ESP8266, Tasmota Scripting, Mqtt*