MQTT Client in DOIF - Syntax?

Begonnen von tplus, 18 September 2022, 12:53:16

Vorheriges Thema - Nächstes Thema

tplus

Hallo, sorry für die Anfängerfrage:

Auf einem M5Paper läuft ein Python-Programm welches im Topic "m5paper/buttonone" "on" oder "off" posted. Das Reading in FHEM sieht dann so aus:

2022-09-18 12:47:27 MQTT2_DEVICE MQTT2_M5Paper buttonone: on

Mein DOIF sieht so aus:


Internals:
   CFGFN     
   DEF        ([MQTT2_M5Paper.buttonone: "off"]) (set testdummy off) DOELSE ([MQTT2_M5Paper.buttonone: "on"]) (set testdummy on)
   FUUID      6326e872-f33f-96e9-d2cb-2057e2a6ca0c2bb2
   MODEL      FHEM
   NAME       testmq
   NOTIFYDEV  MQTT2_M5Paper.buttonone,global
   NR         553
   NTFY_ORDER 50-testmq
   STATE      initialized
   TYPE       DOIF
   VERSION    26182 2022-06-29 18:57:26
   eventCount 15
   READINGS:
     2022-09-18 12:44:34   cmd             0
     2022-09-18 12:44:34   mode            enabled
     2022-09-18 12:44:34   state           initialized
   Regex:
     accu:
     collect:
     cond:
       MQTT2_M5Paper.buttonone:
         0:
            "off"     ^MQTT2_M5Paper.buttonone$:^ "off":
   condition:
     0          ::ReadingValDoIf($hash,'MQTT2_M5Paper.buttonone',' "off"')
   do:
     0:
       0          set testdummy off
     1:
       0          [MQTT2_M5Paper.buttonone: "on"]
       1          set testdummy on
   helper:
     NOTIFYDEV  MQTT2_M5Paper.buttonone,global
     globalinit 1
     last_timer 0
     sleeptimer -1
   readings:
     all         MQTT2_M5Paper.buttonone: "off"
   uiState:
   uiTable:
Attributes:


Leider reagiert es nicht.

Die Definition des Devices:

Internals:
   CFGFN     
   CID        M5Paper
   DEF        M5Paper
   FUUID      6325f30f-f33f-96e9-7c57-10f51df5c03bf5f0
   IODev      MQTT2_FHEM_Server
   LASTInputDev MQTT2_FHEM_Server
   MQTT2_FHEM_Server_CONN MQTT2_FHEM_Server_192.168.1.156_61670
   MQTT2_FHEM_Server_MSGCNT 61
   MQTT2_FHEM_Server_TIME 2022-09-18 12:47:27
   MSGCNT     61
   NAME       MQTT2_M5Paper
   NR         469
   STATE      ???
   TYPE       MQTT2_DEVICE
   eventCount 63
   READINGS:
     2022-09-17 18:17:19   IODev           MQTT2_FHEM_Server
     2022-09-18 12:47:27   buttonone       on
Attributes:
   devStateIcon ON:rc_GREEN:OFF OFF:rc_RED:ON
   readingList M5Paper:m5paper/buttonone:.* buttonone
   room       MQTT2_DEVICE



Wie kann ich mit DOIF den testdummy schalten?

Besten Dank für Tipps...





Damian

Das Leerzeichen ist zu viel, es muss heißen:

([MQTT2_M5Paper.buttonone:"off"])
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

tplus

Danke, das DOIF reagiert tatsächlich bei


([MQTT2_M5Paper:"off"])


aber eben nicht mit dem Topic zusammen. Und es gibt ja noch mehr buttons...

betateilchen

Vermutlich werde ich in diesem Leben nicht mehr begreifen, warum man solche simplen Dinge nicht einfach in einem notify erledigt.

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

tplus

Es handelt sich ja nur um einen Test, hinterher wird die Sache komplizierter.

Aber wie wäre denn der Syntax für das notify?

betateilchen

Zitat von: tplus am 18 September 2022, 15:10:10
Es handelt sich ja nur um einen Test, hinterher wird die Sache komplizierter.

Na und? Du glaubst wohl, mit einem notify kann man keine komplizierten Sachen umsetzen? Dann glaubst Du wohl auch, dass ein Zitronenfalter Zitronen faltet?

defmod testnotify notify MQTT2_M5Paper:buttonone.*(on|off) set testdummy $EVTPART1
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!