FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: tfriedrich85 am 26 Januar 2020, 13:16:02

Titel: Toogle Button Syntax Fehler
Beitrag von: tfriedrich85 am 26 Januar 2020, 13:16:02
Hallo zusammen,

ich habe einen Syntax Fehler in einem Notify und brauche mal eure Hilfe:

HM_566F2E:HM_566F2E_Btn_03.Short set prxPort3e.2 on - funktionier und nun wollte ich beim wiederholten Tastendruck wieder den prxPort wieder ausschalten und meinte das sollte so funktionieren:


HM_566F2E:HM_566F2E_Btn_03.Short IF ([prxPort3e.2] eq "on") (set prxPort3e.2 off) ELSE (set prxPort3e.2 on)

macht es aber nicht. Seht ihr den Fehler?
Titel: Antw:Toogle Button Syntax Fehler
Beitrag von: MKeY am 26 Januar 2020, 13:41:15
zeig mal ein list von prxPort3e.2
Titel: Antw:Toogle Button Syntax Fehler
Beitrag von: tfriedrich85 am 26 Januar 2020, 17:06:54
Internals:
   DEF        PCF3e:Port2
   DEVICE     PCF3e
   FUUID      5cd59b78-f33f-aed9-9cdc-0bf1fd23a4a888f6
   NAME       prxPort3e.2
   NOTIFYDEV  PCF3e,global
   NR         359
   NTFY_ORDER 50-prxPort3e.2
   READING    Port2
   STATE      on
   TYPE       readingsProxy
   CONTENT:
     PCF3e      1
   READINGS:
     2020-01-26 14:01:55   lastCmd         off
     2020-01-26 13:17:55   state           on
Attributes:
   alias      Fussbodenheizung
   devStateIcon on:off:off off:on:on
   event-on-change-reading .*
   group      OutputPorts
   room       Bad,i2c
   setFn      {($CMD eq "on")?"Port2 off":"Port2 on"}
   setList    on off
Titel: Antw:Toogle Button Syntax Fehler
Beitrag von: MKeY am 26 Januar 2020, 19:44:37
hast du noch ein list vom PCF3e das geschalten werden soll :)
Titel: Antw:Toogle Button Syntax Fehler
Beitrag von: tfriedrich85 am 26 Januar 2020, 21:24:11
Ja klar,

Internals:
   DEF        PCF23:Port4
   DEVICE     PCF23
   FUUID      5cd9c199-f33f-aed9-9e32-79e476c2b9ac4a01
   NAME       prxPort23.4
   NOTIFYDEV  PCF23,global
   NR         305
   NTFY_ORDER 50-prxPort23.4
   READING    Port4
   STATE      on
   TYPE       readingsProxy
   CONTENT:
     PCF23      1
   READINGS:
     2020-01-26 20:17:38   lastCmd         off
     2020-01-26 13:33:44   state           on
Attributes:
   alias      Lüfter Bad
   devStateIcon on:off:off off:on:on
   group      OutputPorts
   icon       Ventilator_wind
   room       Bad,i2c
   setFn      {($CMD eq "on")?"Port4 off":"Port4 on"}
   setList    on off
   userattr   lightSceneParamsToSave lightSceneRestoreOnlyIfChanged:1,0


es handelt sich um Portextender des Moduls PCF23, damit schalte ich Relais on/off.

Danke für eure Hilfe
Titel: Antw:Toogle Button Syntax Fehler
Beitrag von: MKeY am 27 Januar 2020, 09:36:04
sehe bis jetzt keine Fehler, demzufolge hast du noch ein list von HM_566F2E_Btn_03 und dem notify?
Titel: Antw:Toogle Button Syntax Fehler
Beitrag von: amenomade am 27 Januar 2020, 15:45:43
Zitat von: MKeY am 26 Januar 2020, 19:44:37
hast du noch ein list vom PCF3e das geschalten werden soll :)
Zitat von: tfriedrich85 am 26 Januar 2020, 21:24:11
Ja klar,

Internals:
  DEF        PCF23:Port4
   DEVICE     PCF23
   NAME       prxPort23.4

Habe etwas nicht verstanden.
Titel: Antw:Toogle Button Syntax Fehler
Beitrag von: tfriedrich85 am 27 Januar 2020, 22:00:10
Jetzt das List von Button:

Internals:
   DEF        566F2E03
   FUUID      5cd59b7d-f33f-aed9-8158-8c0f552f42f6a71e
   NAME       HM_566F2E_Btn_03
   NOTIFYDEV  global
   NR         609
   NTFY_ORDER 50-HM_566F2E_Btn_03
   STATE      LongRelease 0_13 (to CUL_0)
   TYPE       CUL_HM
   chanNo     03
   device     HM_566F2E
   READINGS:
     2020-01-27 08:15:13   state           LongRelease 0_13 (to CUL_0)
     2020-01-27 08:15:13   trigDst_F11034  noConfig
     2020-01-27 08:15:13   trigger         Long_13
     2020-01-27 08:15:13   trigger_cnt     13
   helper:
     BNO        13
     BNOCNT     0
     peerFriend peerAct,peerVirt
     peerOpt    4:remote
     regLst     1,4p
     expert:
       def        1
       det        0
       raw        1
       tpl        0
     role:
       chn        1
     tmpl:
Attributes:
   model      HM-PB-6-WM55

Und das Notify

Internals:
   DEF        HM_566F2E:HM_566F2E_Btn_03.Short IF ([prxPort3e.2] eq "on") (set prxPort3e.2 off) ELSE (set prxPort3e.2 on)
   FUUID      5d874c01-f33f-aed9-92a6-188f1ac7b0dd877e
   NAME       HM_Button3
   NOTIFYDEV  HM_566F2E
   NR         1293
   NTFY_ORDER 50-HM_Button3
   REGEXP     HM_566F2E:HM_566F2E_Btn_03.Short
   STATE      active
   TRIGGERTIME 1580041026.95717
   TYPE       notify
   READINGS:
     2020-01-27 21:58:20   state           active
Attributes:
   room       Bad

Ich hoffe ihr findet was oder habt eine andere Idee wie man mit einem Notify eine ON/OFF Funktion für einen HM Button baut?
Titel: Antw:Toogle Button Syntax Fehler
Beitrag von: MKeY am 27 Januar 2020, 22:20:14
probier mal HM_566F2E_Btn_03:trigger:.*Short.* IF ([prxPort3e.2] eq "on") (set prxPort3e.2 off) ELSE (set prxPort3e.2 on)
Titel: Antw:Toogle Button Syntax Fehler
Beitrag von: tfriedrich85 am 27 Januar 2020, 22:32:55
Leider nicht erfolgreich.
Ich nutze die Schalter bisher jeden mit einer einzelenen funktion, das funktioniert ohne Probleme. z.B.

HM_566F2E:HM_566F2E_Btn_03.Short set Sonos_Bad Speak 20 de Fußbodenheizung aktiviert!; set prxPort3e.2 on
Titel: Antw:Toogle Button Syntax Fehler
Beitrag von: amenomade am 28 Januar 2020, 00:18:47
Nochmal meine Frage von oben: was hat prxPort23.4 mit der Geschichte (insb. mit prxPort3e.2 oder PCF3e) zu tun?

Dann etwas komisches:
    2020-01-26 14:01:55   lastCmd         off
     2020-01-26 13:17:55   state           on
Warum haben lastCmd und state nicht das gleiche Timestamp?

Und letztens:
{($CMD eq "on")?"Port2 off":"Port2 on"}
Ist es wirklich so gewünscht? Wenn Du "set prxPort3e.2 off" machst, soll Port2 von PCF3e auf "on" gehen, und umgekehrt?
Anders gesagt: das Kommando "set prxPort3e.2 off" schaltet prxPort3e.2 auf on?

Wenn ja, dann verstehe ich dein IF nicht
IF ([prxPort3e.2] eq "on") (set prxPort3e.2 off) ELSE (set prxPort3e.2 on)
Wenn Port2 auf on ist, soll dein Button das Kommando "set prxPort3e.2 off" ausführen, sprich Port2 auf on schalten... war aber schon auf on.
Titel: Antw:Toogle Button Syntax Fehler
Beitrag von: tfriedrich85 am 28 Januar 2020, 08:36:17
Hey,

Zitat
{($CMD eq "on")?"Port2 off":"Port2 on"}
Ist es wirklich so gewünscht? Wenn Du "set prxPort3e.2 off" machst, soll Port2 von PCF3e auf "on" gehen, und umgekehrt?
Anders gesagt: das Kommando "set prxPort3e.2 off" schaltet prxPort3e.2 auf on?
Da habe ich wohl bei der Implementierung ausversehen "on" und "off" vertauscht.

{($CMD eq "on")?"Port2 on":"Port2 off"}
Dann sollte es so richtig sein? Das werde ich gleich mal probieren.
Danke für den Hinweis

Zum Problem mit dem Schalter und dem on/off toogle:
iIh habe mehrere prxPort device für verschiedne Relais die ich so schalten kann. Aus Verzeiflung hab ich verschiede prxPorts versucht, aber der Port prxPort3e.2 existiert und soll geschalten werden. Ob "on" oder "off" sollte ja eigentlich egal sein. Denn letztlich soll das IF ein "toogle" ersetzten. Wenn "on" dann schalte "off" und umgekehrt.
Titel: Antw:Toogle Button Syntax Fehler
Beitrag von: amenomade am 28 Januar 2020, 09:58:35
Zitat von: tfriedrich85 am 28 Januar 2020, 08:36:17


{($CMD eq "on")?"Port2 on":"Port2 off"}
Dann sollte es so richtig sein? Das werde ich gleich mal probieren.

Ich vermute, es wird ja besser funktionieren
Titel: Antw:Toogle Button Syntax Fehler
Beitrag von: MKeY am 28 Januar 2020, 11:00:28
Zitat von: tfriedrich85 am 27 Januar 2020, 22:32:55
Ich nutze die Schalter bisher jeden mit einer einzelenen funktion, das funktioniert ohne Probleme. z.B.

ich auch, aber ich habe meine notifys auf die einzelnen knöpfe gelegt. meine Testumgebung funktioniert mit dem Notify so. dann kann ich dir nicht helfen