Autor Thema: MQTT2 Device published topic von client node in state Device  (Gelesen 792 mal)

Offline holle75

  • Sr. Member
  • ****
  • Beiträge: 956
Oh, diese Begrifflichkeiten  ???

Ich versuche es zu umschreiben ...

Ich habe ein MQTT2-Device

Internals:
   CFGFN     
   CID        nodemcuArduino
   DEF        nodemcuArduino
   DEVICETOPIC MQTT2_nodemcuArduino
   FUUID      5e317605-f33f-6bb4-4573-520295d665bdbfa6
   IODev      MQTT2_FHEM_Server
   LASTInputDev MQTT2_FHEM_Server
   MQTT2_FHEM_Server_MSGCNT 186
   MQTT2_FHEM_Server_TIME 2020-01-31 16:56:58
   MSGCNT     186
   NAME       MQTT2_nodemcuArduino
   NR         22421
   STATE      off
   TYPE       MQTT2_DEVICE
   OLDREADINGS:
   READINGS:
     2020-01-31 16:56:58   RichtungFhem    0
     2020-01-31 16:56:54   state           off
Attributes:
   IODev      MQTT2_FHEM_Server
   readingList nodemcuArduino:nodemcuArduino/RichtungFhem:.* RichtungFhem
   room       MQTT2_DEVICE
   setList    on nodemcuArduino/Richtungnodemcu 1
off nodemcuArduino/Richtungnodemcu 0

welches über den MQTT2 Server in fhem mit einer nodemcu kommuniziert.

Über on/off in fhem kann ich die LED mit dem im List aufgeführen "attr setList" auf der nodemcu schalten. Wenn ich über den Taster auf der nodemcu die selbe LED schalte, erhält das MQTT2 Device im Reading "RichtungFhem" eine 1, resp. 0. Das ist auch ganz schön so.

Jetzt hätte ich aber natürlich gerne, dass state und Icon im fhem MQTT2 Device mit dem Zustand auf der nodemcu korrespondieren.

Wie bekomme ich das von der nodecmu gepublishte topic "nodemcuArduino/RichtungFhem" was gleichzusetzen ist mit dem Zustand der LED  ins state (on/off) vom MQTT2 Device?

Ich hoffe, man kann verstehen worauf ich hinaus will  ..

Danke und Grüße
H.




Offline TomLee

  • Hero Member
  • *****
  • Beiträge: 4148
  • ... wer sät, der erntet ...
Antw:MQTT2 Device published topic von client node in state Device
« Antwort #1 am: 31 Januar 2020, 17:32:59 »
Attribut jsonMap setzen

RichtungFhem:state
Gruß

Thomas

Offline holle75

  • Sr. Member
  • ****
  • Beiträge: 956
Antw:MQTT2 Device published topic von client node in state Device
« Antwort #2 am: 31 Januar 2020, 20:57:48 »
Hallo Thomas und Danke.

attr nodemcuArduino jsonMap RichtungFhem:state
Hört sich logisch an, verändert aber leider nichts. Weiterhin bekomme ich brav mein "RichtungFhem" Reading 1 und 0, aber im state bleibt es beim on/off von der in fhem ausgeführten Schaltung davor.

Offline TomLee

  • Hero Member
  • *****
  • Beiträge: 4148
  • ... wer sät, der erntet ...
Antw:MQTT2 Device published topic von client node in state Device
« Antwort #3 am: 31 Januar 2020, 21:45:18 »
Schon mit dem Attribut eventMap versucht das on/off aus setlist zu mappen, wenn 1/0 im state stehen soll ?

edit:

oder die setlist anpassen auf 0=off/1=on
« Letzte Änderung: 31 Januar 2020, 21:49:05 von TomLee »

Offline holle75

  • Sr. Member
  • ****
  • Beiträge: 956
Antw:MQTT2 Device published topic von client node in state Device
« Antwort #4 am: 31 Januar 2020, 22:36:08 »
eben probiert, .... und auch allerlei andere möglichen Kombinationen mit setlist, eventmap, jsonmap, aber weiterhin bleibt state und "Richtungfhem" völlig unabhängig voneinander. Was mich wundert ist, dass ich noch andere MQTT2-Devices eingebunden habe, wo das Zusammenspiel zwischen dem von den nodes gepublishten Reading und state in fhem funktioniert. ohne Jsonmap, etc .

Habe eben mal das ganze Device gelöscht und über autocreate neu anlegen lassen, keine Änderung. Wüßte auch nicht, was im arduino code falsch sein müßte, weil das Problem ja auf fhem Seite liegt.

Edit: ein Beispiel für ein MQTT2-Device wo Reading und state zusammenspielen. Ich seh da nicht viel anderes (außer das dieses Device unter ESPeasy läuft und das Problem Device unter arduino)

Internals:
   CID        ESPClient_5C_CF_7F_1B_DD_3A
   DEF        ESPClient_5C_CF_7F_1B_DD_3A
   DEVICETOPIC ESPClient_1_Relais_2
   FUUID      5e2df9b2-f33f-6bb4-d623-93a76f43a0a39cf8
   IODev      MQTT2_FHEM_Server
   LASTInputDev MQTT2_FHEM_Server
   MQTT2_FHEM_Server_MSGCNT 19
   MQTT2_FHEM_Server_TIME 2020-01-31 22:36:39
   MSGCNT     19
   NAME       ESPClient_1_Relais_2
   NR         1221
   STATE      on
   TYPE       MQTT2_DEVICE
   READINGS:
     2020-01-31 22:36:39   RelaisAnAus_2   1
     2020-01-31 22:36:38   state           on
Attributes:
   IODev      MQTT2_FHEM_Server
   autocreate 0
   event-on-change-reading .*
   readingList ESPClient_5C_CF_7F_1B_DD_3A:ESP-Easy-1/Test_GPIO/RelaisAnAus_2:.* RelaisAnAus_2
   room       MQTT2_DEVICE
   setList    on:noArg ESP-Easy-1/cmd GPIO,14,1
off:noArg ESP-Easy-1/cmd GPIO,14,0
« Letzte Änderung: 31 Januar 2020, 22:40:11 von holle75 »

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 25399
Antw:MQTT2 Device published topic von client node in state Device
« Antwort #5 am: 31 Januar 2020, 22:51:13 »
jsonMap wirkt (wie der Name es auch suggeriert) nur bei JSON Daten, wenn man diese mit json2nameValue nach Readings konvertiert.

attr nodemcuArduino eventMap RichtungFhem.*0:off RichtungFhem.*1:onDas konvertiert zwar die Events nach on/off, STATE (was fuer die Anzeige verwendet wird) bleibt aber unveraendert.
 
Ich wuerde stattdessen die folgende Methode nutzen:
attr nodemcuArduino userReadings state:RichtungFhem.* {$eventValue eq "1" ? "on" : "off"}

Offline holle75

  • Sr. Member
  • ****
  • Beiträge: 956
Antw:MQTT2 Device published topic von client node in state Device
« Antwort #6 am: 31 Januar 2020, 23:03:23 »
Danke Rudolf, das funktioniert.

Aber wieso brauchen die anderen MQTT2 Devices, die mehr oder weniger identisch aussehen, das userReadings nicht? Wo liegt da fhem intern die entscheidende Info?

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 25399
Antw:MQTT2 Device published topic von client node in state Device
« Antwort #7 am: 31 Januar 2020, 23:23:16 »
Sorry, keine Idee.

Offline holle75

  • Sr. Member
  • ****
  • Beiträge: 956
Antw:MQTT2 Device published topic von client node in state Device
« Antwort #8 am: 02 Februar 2020, 10:26:19 »
ESPEasy publisht Json state bei jedem Schaltvorgang (was man nur im Hautptdevice sieht), mein ArduinoCode (noch) nicht.
Deswegen funktioniert Rudolfs Vorgang, und TomLees hier nicht.
« Letzte Änderung: 02 Februar 2020, 10:31:33 von holle75 »