MQTT Device Parameter Übergabe

Begonnen von Maxl, 18 September 2023, 17:48:42

Vorheriges Thema - Nächstes Thema

Maxl

Hallo,

ich möchte meinem eigens definierten MQTT device (basierend auf Shelly 4fach) eine Wetterparameter weather "good" bzw. "bad" übergeben.
Das Reading funktioniert, nur wie kann ich auf das Reading nun von FHEM zugreifen. Muss im Device noch etwas definiert werden damit es in der setList erscheint?

define MQTT2_at_home_controllino_pool MQTT2_DEVICE at_home_controllino_pool
attr MQTT2_at_home_controllino_pool devStateIcon {my $onl = ReadingsVal($name,"online","false") eq "false" ? "rot" : ReadingsVal($name,"new_fw","false") eq "true" ? "gelb" : "gruen";;;; my $light = ReadingsVal($name,"state","off");;;; my $show = '<a href="';;;;$show .= $onl eq "gelb" ? "/fhem?cmd.dummy=set $name x_update&XHR=1\">" : "http://".ReadingsVal($name,"ip","none").' "target="_blank">';;;;$show .= FW_makeImage("10px-kreis-".$onl)."</a>";;;; "<div> $show <a href=\"/fhem?cmd.dummy=set $name toggle&XHR=1\">".FW_makeImage($light)."</a></div>" }
attr MQTT2_at_home_controllino_pool readingList at_home_controllino_pool:at_home/controllino_pool/relay/0:.* relay_0\
at_home_controllino_pool:at_home/controllino_pool/relay/1:.* relay_1\
at_home_controllino_pool:at_home/controllino_pool/relay/2:.* relay_2\
at_home_controllino_pool:at_home/controllino_pool/relay/3:.* relay_3\
at_home_controllino_pool:at_home/controllino_pool/relay/4:.* relay_4\
at_home_controllino_pool:at_home/controllino_pool/relay/5:.* relay_5\
at_home_controllino_pool:at_home/controllino_pool/relay/6:.* relay_6\
at_home_controllino_pool:at_home/controllino_pool/pumpspeed:.* pumpspeed\
at_home_controllino_pool:at_home/controllino_pool/weather:.* weather
attr MQTT2_at_home_controllino_pool room Pool
attr MQTT2_at_home_controllino_pool setList relay_0:iconSwitch,on,li_wht_off,off,li_wht_on at_home/controllino_pool/relay/0/command $EVTPART1\
  relay_1:iconSwitch,on,li_wht_off,off,li_wht_on at_home/controllino_pool/relay/1/command $EVTPART1\
  relay_2:iconSwitch,on,li_wht_off,off,li_wht_on at_home/controllino_pool/relay/2/command $EVTPART1\
  relay_3:iconSwitch,on,li_wht_off,off,li_wht_on at_home/controllino_pool/relay/3/command $EVTPART1\
  relay_4:iconSwitch,on,li_wht_off,off,li_wht_on at_home/controllino_pool/relay/4/command $EVTPART1\
  relay_5:iconSwitch,on,li_wht_off,off,li_wht_on at_home/controllino_pool/relay/5/command $EVTPART1\
  relay_6:iconSwitch,on,li_wht_off,off,li_wht_on at_home/controllino_pool/relay/6/command $EVTPART1\
  #x_update:noArg shellies/shelly4pro-4D114C/command update_fw\
  x_mqttcom at_home/controllino_pool/command $EVTPART1
attr MQTT2_at_home_controllino_pool stateFormat R0: relay_0 R1: relay_1 R2: relay_2 R3: relay_3 R4: relay_4 R5: relay_5 R6: relay_6
attr MQTT2_at_home_controllino_pool webCmd relay_0:relay_1:relay_2:relay_3:relay_4:relay_5:relay_6
#   CID        at_home_controllino_pool
#   DEF        at_home_controllino_pool
#   FUUID      64a06917-f33f-49a1-e152-86746b18b24cea70
#   IODev      MQTT2_FHEM_Server
#   LASTInputDev MQTT2_FHEM_Server
#   MQTT2_FHEM_Server_CONN MQTT2_FHEM_Server_192.168.1.123_49222
#   MQTT2_FHEM_Server_MSGCNT 168111
#   MQTT2_FHEM_Server_TIME 2023-09-18 17:43:16
#   MSGCNT     168111
#   NAME       MQTT2_at_home_controllino_pool
#   NR         716
#   STATE      R0: off R1: off R2: off R3: off R4: off R5: off R6: off
#   TYPE       MQTT2_DEVICE
#   eventCount 181992
#   READINGS:
#     2023-09-13 08:34:39   IODev           MQTT2_FHEM_Server
#     2023-09-18 17:36:09   pumpspeed       0
#     2023-09-18 17:43:15   relay_0         off
#     2023-09-18 17:43:15   relay_1         off
#     2023-09-18 17:43:15   relay_2         off
#     2023-09-18 17:43:15   relay_3         off
#     2023-09-18 17:43:15   relay_4         off
#     2023-09-18 17:43:16   relay_5         off
#     2023-09-18 17:43:16   relay_6         off
#     2023-09-18 17:43:09   state           relay_6
#     2023-09-18 17:43:16   weather         OK
#
setstate MQTT2_at_home_controllino_pool R0: off R1: off R2: off R3: off R4: off R5: off R6: off
setstate MQTT2_at_home_controllino_pool 2023-09-13 08:34:39 IODev MQTT2_FHEM_Server
setstate MQTT2_at_home_controllino_pool 2023-09-18 17:36:09 pumpspeed 0
setstate MQTT2_at_home_controllino_pool 2023-09-18 17:43:15 relay_0 off
setstate MQTT2_at_home_controllino_pool 2023-09-18 17:43:15 relay_1 off
setstate MQTT2_at_home_controllino_pool 2023-09-18 17:43:15 relay_2 off
setstate MQTT2_at_home_controllino_pool 2023-09-18 17:43:15 relay_3 off
setstate MQTT2_at_home_controllino_pool 2023-09-18 17:43:15 relay_4 off
setstate MQTT2_at_home_controllino_pool 2023-09-18 17:43:16 relay_5 off
setstate MQTT2_at_home_controllino_pool 2023-09-18 17:43:16 relay_6 off
setstate MQTT2_at_home_controllino_pool 2023-09-18 17:43:09 state relay_6
setstate MQTT2_at_home_controllino_pool 2023-09-18 17:43:16 weather OK

FHEM auf Raspberry mit HM, HMC und AVR Netios.

rudolfkoenig

ZitatMuss im Device noch etwas definiert werden damit es in der setList erscheint?
Da muss man tatsaechlich setList erweitern, z.Bsp. mit sowas wie:
weather:noArg { "at_home/controllino_pool/weather ".ReadingsVal("MQTT2_at_home_controllino_pool","weather","bad") }Ungetestet.

Maxl

Und wie bekomme ich noch den Ausdruck "GOOD" dazu?

weather:noArg { "at_home/controllino_pool/weather ".ReadingsVal("MQTT2_at_home_controllino_pool","weather","bad") }\
hätte es so probiert, aber das will nicht so recht

setList bad:noArg at_home/controllino_pool/weather/0/command BAD\  good:noArg at_home/controllino_pool/weather/0/command GOOD\
FHEM auf Raspberry mit HM, HMC und AVR Netios.

rudolfkoenig

Zitathätte es so probiert, aber das will nicht so recht
Laut commandref muss man die Eintraege per Newline trennen.

Maxl

Ich verstehe das Ganze wieder einmal nicht, hätte jetzt ein Auswhlmenü aber es wird kein Befehl abgesetzt.
Habe ich etwas wieder vergessen, als subscribe wird vom Arduino "at_home/controllino_pool/weather" gesendet.

define MQTT2_at_home_controllino_pool MQTT2_DEVICE at_home_controllino_pool
attr MQTT2_at_home_controllino_pool devStateIcon {my $onl = ReadingsVal($name,"online","false") eq "false" ? "rot" : ReadingsVal($name,"new_fw","false") eq "true" ? "gelb" : "gruen";;;; my $light = ReadingsVal($name,"state","off");;;; my $show = '<a href="';;;;$show .= $onl eq "gelb" ? "/fhem?cmd.dummy=set $name x_update&XHR=1\">" : "http://".ReadingsVal($name,"ip","none").' "target="_blank">';;;;$show .= FW_makeImage("10px-kreis-".$onl)."</a>";;;; "<div> $show <a href=\"/fhem?cmd.dummy=set $name toggle&XHR=1\">".FW_makeImage($light)."</a></div>" }
attr MQTT2_at_home_controllino_pool readingList at_home_controllino_pool:at_home/controllino_pool/relay/0:.* relay_0\
at_home_controllino_pool:at_home/controllino_pool/relay/1:.* relay_1\
at_home_controllino_pool:at_home/controllino_pool/relay/2:.* relay_2\
at_home_controllino_pool:at_home/controllino_pool/relay/3:.* relay_3\
at_home_controllino_pool:at_home/controllino_pool/relay/4:.* relay_4\
at_home_controllino_pool:at_home/controllino_pool/relay/5:.* relay_5\
at_home_controllino_pool:at_home/controllino_pool/relay/6:.* relay_6\
at_home_controllino_pool:at_home/controllino_pool/pumpspeed:.* pumpspeed\
at_home_controllino_pool:at_home/controllino_pool/weather:.* weather
attr MQTT2_at_home_controllino_pool room Pool
attr MQTT2_at_home_controllino_pool setList relay_0:iconSwitch,on,li_wht_off,off,li_wht_on at_home/controllino_pool/relay/0/command $EVTPART1\
relay_1:iconSwitch,on,li_wht_off,off,li_wht_on at_home/controllino_pool/relay/1/command $EVTPART1\
relay_2:iconSwitch,on,li_wht_off,off,li_wht_on at_home/controllino_pool/relay/2/command $EVTPART1\
relay_3:iconSwitch,on,li_wht_off,off,li_wht_on at_home/controllino_pool/relay/3/command $EVTPART1\
relay_4:iconSwitch,on,li_wht_off,off,li_wht_on at_home/controllino_pool/relay/4/command $EVTPART1\
relay_5:iconSwitch,on,li_wht_off,off,li_wht_on at_home/controllino_pool/relay/5/command $EVTPART1\
relay_6:iconSwitch,on,li_wht_off,off,li_wht_on at_home/controllino_pool/relay/6/command $EVTPART1\
weather:bad,good at_home/controllino_pool/weather/command $EVTPART1\
x_mqttcom at_home/controllino_pool/command $EVTPART1
attr MQTT2_at_home_controllino_pool stateFormat R0: relay_0 R1: relay_1 R2: relay_2 R3: relay_3 R4: relay_4 R5: relay_5 R6: relay_6
attr MQTT2_at_home_controllino_pool webCmd relay_0:relay_1:relay_2:relay_3:relay_4:relay_5:relay_6
#   CID        at_home_controllino_pool
#   DEF        at_home_controllino_pool
#   FUUID      64a06917-f33f-49a1-e152-86746b18b24cea70
#   IODev      MQTT2_FHEM_Server
#   LASTInputDev MQTT2_FHEM_Server
#   MQTT2_FHEM_Server_CONN MQTT2_FHEM_Server_192.168.1.123_55254
#   MQTT2_FHEM_Server_MSGCNT 8
#   MQTT2_FHEM_Server_TIME 2023-09-19 19:58:01
#   MSGCNT     8
#   NAME       MQTT2_at_home_controllino_pool
#   NR         716
#   STATE      R0: off R1: off R2: off R3: off R4: off R5: off R6: off
#   TYPE       MQTT2_DEVICE
#   eventCount 22
#   READINGS:
#     2023-09-19 19:57:10   IODev           MQTT2_FHEM_Server
#     2023-09-19 19:58:01   pumpspeed       0
#     2023-09-19 19:58:01   relay_0         off
#     2023-09-19 19:58:01   relay_1         off
#     2023-09-19 19:58:01   relay_2         off
#     2023-09-19 19:58:01   relay_3         off
#     2023-09-19 19:58:01   relay_4         off
#     2023-09-19 19:58:01   relay_5         off
#     2023-09-19 19:58:01   relay_6         off
#     2023-09-19 19:58:10   state           weather
#     2023-09-19 19:24:17   weather         OK
#
setstate MQTT2_at_home_controllino_pool R0: off R1: off R2: off R3: off R4: off R5: off R6: off
setstate MQTT2_at_home_controllino_pool 2023-09-19 19:57:10 IODev MQTT2_FHEM_Server
setstate MQTT2_at_home_controllino_pool 2023-09-19 19:58:01 pumpspeed 0
setstate MQTT2_at_home_controllino_pool 2023-09-19 19:58:01 relay_0 off
setstate MQTT2_at_home_controllino_pool 2023-09-19 19:58:01 relay_1 off
setstate MQTT2_at_home_controllino_pool 2023-09-19 19:58:01 relay_2 off
setstate MQTT2_at_home_controllino_pool 2023-09-19 19:58:01 relay_3 off
setstate MQTT2_at_home_controllino_pool 2023-09-19 19:58:01 relay_4 off
setstate MQTT2_at_home_controllino_pool 2023-09-19 19:58:01 relay_5 off
setstate MQTT2_at_home_controllino_pool 2023-09-19 19:58:01 relay_6 off
setstate MQTT2_at_home_controllino_pool 2023-09-19 19:58:10 state weather
setstate MQTT2_at_home_controllino_pool 2023-09-19 19:24:17 weather OK

FHEM auf Raspberry mit HM, HMC und AVR Netios.

rudolfkoenig

Gesendet wird nur dann, falls ein Topic die andere Seite auch interessiert, d.h. es existiert ein "subscription" dafuer.

Falls man MQTT2_SERVER verwendet und ein MQTT2_DEVICE mit der gleichen ClientID existiert, wie die Verbindung, dann wird auch ein subscriptions Reading hier angelegt.
Ansonsten muss man den subscription direkt bei der Verbindung nachschauen mit
list TYPE=MQTT2_SERVER subscriptions

Beta-User

Zitat von: Maxl am 19 September 2023, 19:58:42Habe ich etwas wieder vergessen, als subscribe wird vom Arduino "at_home/controllino_pool/weather" gesendet.
Wenn das wirklich so ist, solltest du das im Code ändern, denn anscheinend (jedenfalls nach der readingList, die aber veraltet sein könnte?) sendet der ESP die dortigen Daten selbst auch an diesen Topic => Schleifengefahr!

Anscheinend (?) baust du den Arduino-Code für den ESP selbst? Dann kannst du doch auch im Code nachsehen, was denn jetzt eigentlich "Sache" ist, und dann den topic für Senden und Empfangen (bzgl. weather) auch sauber trennen. Und dann in der setList so einpflegen, wie es im Code steht...
Server: HP-T620@Debian 11, 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