Anfängerfrage zu subscribeSet

Begonnen von Torsten_MG, 01 September 2018, 23:16:07

Vorheriges Thema - Nächstes Thema

Torsten_MG

Hallo,

ich wollte mich ein bisschen mit MQTT auseinandersetzen und habe auch schon im Forum gesucht, aber leider nicht das richtige gefunden.

Ich habe Mosquitto installiert und läuft auch, ich habe zigbee2mqtt bei mir erfolgreich laufen.

Nun habe ich mir spaßeshalber mal MQTT Dash auf meinem Handy installiert und wollte mit einem Button einem Dummy die Signale on und off schicken. Und genau da hänge ich fest. Überall wo ich suche stoße ich auf subscribeSet. Doch das finde ich nicht im Pulldown-Menü von meinem Dummy. Nur publishSet und subscribeReading. Wenn ich oben attr <device> subscribeSet /Smarthome/Testschalter/Status eingebe kommt nur die Fehlermeldung, dass subscribeSet unbekannt ist

ergerd

#1
Hallo Torsten_MG,

subscribeSet gibt es nur bei MQTT_BRIDGE. Setzt du das Modul ein?

Grüße
Rainer
FHEM auf RasPi 4, CUNO, ZigBee, 1Wire2WLAN, DS2423, C-Control II, Buderus KM200, LaCrosseGateway, PCA301, ConBee II, LuftdatenInfo, OneWireGW, Div. ESPs u. Shellys

Torsten_MG

Zitat von: ergerd am 02 September 2018, 09:14:42
Hallo Torsten_MG,

subscribeSet gibt es nur bei MQTT_BRIDGE. Setzt du das Modul ein?

Grüße
Rainer
Nein noch nicht. Wie gesagt, bisher null erfahrung mit MQTT. Bisher nur soweit das zigbee2mqtt läuft  :-[

ergerd

Ohne deine FHEM-Konfiguration zu kennen wird es schwierig.

Daher gebe ich mal meine an, vielleicht hilft dir das weiter.

Ich setze MQTT_GENERIC_BRIDGE ein, hier eine List des Devices:

Internals:
   DEF        192.168.48.228:1883
   DeviceName 192.168.48.228:1883
   FD         28
   NAME       myMQTT
   NOTIFYDEV  global
   NR         235
   NTFY_ORDER 50-myMQTT
   PARTIAL   
   STATE      opened
   TYPE       MQTT
   buf       
   msgid      24
   ping_received 1
   timeout    60
   READINGS:
     2018-09-02 09:46:15   connection      active
     2018-09-02 00:01:12   state           opened
   messages:
Attributes:
   DbLogExclude .*
   room       hidden


So ist ein Schalter definiert:

Internals:
   BTN        05
   DEF        af5f 05
   IODev      CUNO
   NAME       wz_schrank
   NR         188
   STATE      off
   TYPE       FS20
   XMIT       af5f
   CODE:
     1          af5f 05
   READINGS:
     2018-09-02 09:43:07   state           off
Attributes:
   DbLogExclude .*
   IODev      CUNO
   alexaName  schrank
   alexaRoom  alexa
   alias      schrank
   genericDeviceType switch
   group      _Steckdose_
   model      fs20st
   mqttPublish *:topic={"/SmartHome/$device/$reading"}
   mqttSubscribe state:stopic={"/SmartHome/$device/set"}
   room       01_wohnzimmer,alexa
   userattr   lightSceneParamsToSave lightSceneRestoreOnlyIfChanged:1,0


Ich habe mir auf meinem Handy auch MQTT-Dash installiert und mit dem Topic /SmartHome/wz_schrank/state
war es problemlos möglich den Schalter zu bedienen.

Grüße
Rainer
FHEM auf RasPi 4, CUNO, ZigBee, 1Wire2WLAN, DS2423, C-Control II, Buderus KM200, LaCrosseGateway, PCA301, ConBee II, LuftdatenInfo, OneWireGW, Div. ESPs u. Shellys

Torsten_MG

#4
ich habe mir gerade mqtt_Generic_Bridge installiert, komme da aber nicht ganz klar mit.

Meine List sieht so aus

Internals:
   NAME       mqttGeneric
   NR         204
   NTFY_ORDER 50-mqttGeneric
   STATE      ???
   TYPE       MQTT_GENERIC_BRIDGE
   devspec    .*
   prefix     mqtt
   READINGS:
     2018-09-02 10:01:58   device-count    0
     2018-09-02 10:01:45   incoming-count  0
     2018-09-02 10:01:45   outgoing-count  0
     2018-09-02 10:01:45   updated-reading-count 0
     2018-09-02 10:01:45   updated-set-count 0
   devices:
   globalDeviceExcludes:
   globalReadingExcludes:
   globalTypeExcludes:
     FHEMWEB    *
     Global     *
     MQTT       transmission-state
     MQTT_BRIDGE transmission-state
     MQTT_DEVICE transmission-state
     MQTT_GENERIC_BRIDGE *
     telnet     *
   subscribe:
   subscribeExpr:
   subscribeQos:
Attributes:
   room       MQTT


Edit: anscheinend habe ich ein anderes Modul als du ausgewählt, da bei Type bei mir was anderes steht

ergerd

#5
Das passt, mein List war nur falsch, hier das richtige:


Internals:
   DEF        fhem wz_schrank
   IODev      myMQTT
   NAME       mqttGeneric
   NR         314
   NTFY_ORDER 50-mqttGeneric
   STATE      ???
   TYPE       MQTT_GENERIC_BRIDGE
   devspec    .*
   prefix     mqtt
   READINGS:
     2018-09-02 00:01:08   device-count    1
     2018-09-02 00:00:58   incoming-count  0
     2018-09-02 10:26:28   outgoing-count  3082
     2018-09-02 10:26:28   transmission-state outgoing publish sent
     2018-09-02 00:00:58   updated-reading-count 0
     2018-09-02 00:00:58   updated-set-count 0
   devices:
     wz_schrank:
       :publish:
         *:
           topic      {"/SmartHome/$device/$reading"}
       :subscribe:
         HASH(0x3b336a0)
   globalDeviceExcludes:
   globalReadingExcludes:
   globalTypeExcludes:
     FHEMWEB    *
     Global     *
     MQTT       transmission-state
     MQTT_BRIDGE transmission-state
     MQTT_DEVICE transmission-state
     MQTT_GENERIC_BRIDGE *
     telnet     *
   message_ids:
   subscribe:
     /SmartHome/wz_schrank/set
   subscribeExpr:
     ^\/SmartHome\/wz_schrank\/set$
   subscribeQos:
     /SmartHome/wz_schrank/set 0
Attributes:
   DbLogExclude .*
   IODev      myMQTT


Jetzt für deine Schalter bzw. Dummy die  Atribute setzen, da sollte dir mein List vom Device helfen.

Grüße
Rainer

[Edit] Du brauchst auch das Modul MQTT (Natürlich mit deiner IP vom Mosqitto):


define myMQTT MQTT 192.168.48.228:1883
FHEM auf RasPi 4, CUNO, ZigBee, 1Wire2WLAN, DS2423, C-Control II, Buderus KM200, LaCrosseGateway, PCA301, ConBee II, LuftdatenInfo, OneWireGW, Div. ESPs u. Shellys

Torsten_MG

ich blicke da nicht ganz durch, was ich da genau eintragen muß. Kannst du mir die RAW schicken? Vielleicht blicke ich dann besser durch. Danke!

ergerd

#7
Sicher.

Modul MQTT (Statt 192.168.48.228 deine IP zum Mosqitto eintragen!):

defmod myMQTT MQTT 192.168.48.228:1883


Modul MQTT_GENERIC_BRIDGE (Hier statt wz_schrank dein Dummy eintragen):

defmod mqttGeneric MQTT_GENERIC_BRIDGE fhem wz_schrank
attr mqttGeneric IODev myMQTT


Schalter (Wichtig sind nur die Atribute genericDeviceType, mqttPublish und mqttSubscribe. Diese sollten dein Dummy haben ):

defmod wz_schrank FS20 af5f 05
attr wz_schrank userattr lightSceneParamsToSave lightSceneRestoreOnlyIfChanged:1,0
attr wz_schrank DbLogExclude .*
attr wz_schrank IODev CUNO
attr wz_schrank alexaName schrank
attr wz_schrank alexaRoom alexa
attr wz_schrank alias schrank
attr wz_schrank genericDeviceType switch
attr wz_schrank group _Steckdose_
attr wz_schrank model fs20st
attr wz_schrank mqttPublish *:topic={"/SmartHome/$device/$reading"}
attr wz_schrank mqttSubscribe state:stopic={"/SmartHome/$device/set"}
attr wz_schrank room 01_wohnzimmer,alexa


Grüße
Rainer
FHEM auf RasPi 4, CUNO, ZigBee, 1Wire2WLAN, DS2423, C-Control II, Buderus KM200, LaCrosseGateway, PCA301, ConBee II, LuftdatenInfo, OneWireGW, Div. ESPs u. Shellys

Torsten_MG

Danke, funktioniert jetzt so wie ich es wollte!

Gesendet von meinem SM-J730F mit Tapatalk


ergerd

Freut mich das ich helfen konnte.

Grüße
Rainer
FHEM auf RasPi 4, CUNO, ZigBee, 1Wire2WLAN, DS2423, C-Control II, Buderus KM200, LaCrosseGateway, PCA301, ConBee II, LuftdatenInfo, OneWireGW, Div. ESPs u. Shellys

hexenmeister

Zitat von: ergerd am 02 September 2018, 12:41:07
Modul MQTT_GENERIC_BRIDGE (Hier statt wz_schrank dein Dummy eintragen):

defmod mqttGeneric MQTT_GENERIC_BRIDGE fhem wz_schrank
attr mqttGeneric IODev myMQTT

Da war ein Bug in dem GenericBridge-Modul. der erste Parameter sollte eigentlich der Prefix fpr die Zusatzattribute in den zu überwachenden Geräten sein. Wurde jedoch ignoriert. Ändere Bitte in Deiner Definition (vor dem Update) 'fhem' auf 'mqtt', sonst fliegen nach dem Update (Morgen) aus em 'wz_schrank' alle mqtt* Attribute raus. Du kannst ggf. auch beide letzten Parameter weglassen.
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

Torsten_MG

Ist zwar jetzt offtopic aber ich habe noch eine Frage:

Ich habe meinen Temperaturfühler erfolgreich eingebunden und kann mir die Temperatur auch auf dem Handy in mqtt dash anzeigen lassen. Nur habe ich das Problem, wenn ich die App schließe und die Temperatur ändert sich, dann wird bei neustart der App noch die alte Temperatur angezeigt und erst wenn die Temperatur sich wieder ändert, wird die aktuelle Temperatur angezeigt. Kann ich da was anpassen oder muß ich damit leben?

hexenmeister

Beendest Du die App, dann wird es auch nichts mehr empfangen. Es wird jedoch offensichtlich der alte Wert gemerkt. Nach dem ein neuer gesendet wird, wird dieser auch angezeigt. Du kannst natürlich auch Temperatur mit retain-Flag senden (s. Commandref), dann wird der letzte Wer gespeichert und allen Client bei der Anmeldung gleich mitgeteilt. Der Nachteil dabei ist, dass dieser Wert auch veraltet sein kann. Fällt z.B. dein Sensor aus, wird dieser gespeicherte Wert trotzden weiterhin gesendet.
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

Billy

@hexenmeister

Was ist eigentlich der Unterschied zwischen

defmod mqttGeneric MQTT_GENERIC_BRIDGE
und
define mqttGeneric MQTT_GENERIC_BRIDGE

interessiert mich eigentlich schon lange. Danke im voraus! ;)
Gruß 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*

Torsten_MG

#14
Das mit dem Retain versteh ich nicht. Oder es funktioniert bei meinem Modul nicht.
Ich habe attr retain 1 und attr retain 0. Bei beiden Varianten werden die Daten im Mqtt Dash im Handy nicht aktualisiert wenn ich es starte.

Gesendet von meinem SM-J730F mit Tapatalk