ZWave-Zwischenstecker auf manuelles Schalten mit DOIF reagieren und state setzen

Begonnen von smn_fx, 25 Oktober 2017, 22:43:43

Vorheriges Thema - Nächstes Thema

smn_fx

Hallo zusammen,

ich habe ein Problem mit meinen Aotec Multi Switch Gen 5 Zwischensteckern. STATE/state funktioniert nicht bidirektional. Wenn ich manuell am Zwischenstecker schalte kommen zwar die Leistungswerte an, also "power" aktualisiert sich, STATE/state bleiben aber auf off.

Ich habe jetzt versucht das über ein DOIF zu lösen, also falls Power>0.5 und state off -> set on, bzw. Power=0 und state on -> set off.
Das DOIF klappt auch beim manuellen Schalten und state wechselt wie gewünscht auf on bzw. off, aber das Schalten aus FHEM funktioniert damit nicht mehr. Der Zwischenstecker schaltet sich z.B. direkt wieder ein.

Mein Problem ist, dass ich absoluter FHEM-Anfänger bin :) Ich versuche zwar mit Wiki usw. weiterzukommen, aber hier habe ich keine Idee. Ich habe es nur mal mit wait versucht, aber dann kamen die "Fehlschaltungen" einfach nur verzögert.

Bin für jeden Tipp dankbar! :)

Hier noch ein bisschen "Code":

Event Monitor beim Schalten über FHEM (Anschalten war ok, nach dem Ausschalten ging die Lampe direkt wieder an, da Power noch nicht 0 war):
2017-10-25 22:31:30 ZWave bu_FSD_Sideboardlampe on
2017-10-25 22:31:30 ZWave bu_FSD_Sideboardlampe Power: 0
2017-10-25 22:31:31 ZWave bu_FSD_Sideboardlampe hail: 01
2017-10-25 22:31:31 ZWave bu_FSD_Sideboardlampe Power: 0
2017-10-25 22:31:34 ZWave bu_FSD_Sideboardlampe energy:  18.62 kWh previous: 18.619 delta_time: 600 s
2017-10-25 22:31:34 ZWave bu_FSD_Sideboardlampe Power: 0
2017-10-25 22:31:34 ZWave bu_FSD_Sideboardlampe power:  39.057 W
2017-10-25 22:31:34 ZWave bu_FSD_Sideboardlampe Power: 39.057
2017-10-25 22:31:40 DOIF bu_FSD_Sideboardlampe_DOIF cmd_nr: 1
2017-10-25 22:31:40 DOIF bu_FSD_Sideboardlampe_DOIF cmd: 1
2017-10-25 22:31:40 DOIF bu_FSD_Sideboardlampe_DOIF cmd_event: bu_FSD_Sideboardlampe
2017-10-25 22:31:40 DOIF bu_FSD_Sideboardlampe_DOIF cmd_1
2017-10-25 22:31:40 ZWave bu_FSD_Sideboardlampe off
2017-10-25 22:31:40 ZWave bu_FSD_Sideboardlampe Power: 39.057
2017-10-25 22:31:40 ZWave bu_FSD_Sideboardlampe on
2017-10-25 22:31:40 ZWave bu_FSD_Sideboardlampe Power: 39.057
2017-10-25 22:31:40 ZWave bu_FSD_Sideboardlampe hail: 01
2017-10-25 22:31:40 ZWave bu_FSD_Sideboardlampe Power: 39.057
2017-10-25 22:31:40 ZWave bu_FSD_Sideboardlampe hail: 01
2017-10-25 22:31:40 ZWave bu_FSD_Sideboardlampe Power: 39.057
2017-10-25 22:31:51 ZWave bu_FSD_Sideboardlampe off
2017-10-25 22:31:51 ZWave bu_FSD_Sideboardlampe Power: 39.057
2017-10-25 22:31:51 ZWave bu_FSD_Sideboardlampe hail: 01
2017-10-25 22:31:51 ZWave bu_FSD_Sideboardlampe Power: 39.057
2017-10-25 22:31:56 ZWave bu_FSD_Sideboardlampe power:  0 W
2017-10-25 22:31:56 ZWave bu_FSD_Sideboardlampe Power: 0
2017-10-25 22:31:57 ZWave bu_FSD_Sideboardlampe power:  0 W
2017-10-25 22:31:57 ZWave bu_FSD_Sideboardlampe Power: 0


Event Monitor bei manuellem Schalten:
2017-10-25 22:29:21 ZWave bu_FSD_Sideboardlampe CMD: ZW_APPLICATION_UPDATE
2017-10-25 22:29:21 ZWave bu_FSD_Sideboardlampe Power: 0
2017-10-25 22:29:22 ZWave bu_FSD_Sideboardlampe hail: 01
2017-10-25 22:29:22 ZWave bu_FSD_Sideboardlampe Power: 0
2017-10-25 22:29:25 DOIF bu_FSD_Sideboardlampe_DOIF cmd_nr: 1
2017-10-25 22:29:25 DOIF bu_FSD_Sideboardlampe_DOIF cmd: 1
2017-10-25 22:29:25 DOIF bu_FSD_Sideboardlampe_DOIF cmd_event: bu_FSD_Sideboardlampe
2017-10-25 22:29:25 DOIF bu_FSD_Sideboardlampe_DOIF cmd_1
2017-10-25 22:29:25 ZWave bu_FSD_Sideboardlampe power:  39.002 W
2017-10-25 22:29:25 ZWave bu_FSD_Sideboardlampe Power: 39.002
2017-10-25 22:29:25 ZWave bu_FSD_Sideboardlampe on
2017-10-25 22:29:25 ZWave bu_FSD_Sideboardlampe Power: 39.002
2017-10-25 22:29:25 ZWave bu_FSD_Sideboardlampe hail: 01
2017-10-25 22:29:25 ZWave bu_FSD_Sideboardlampe Power: 39.002
2017-10-25 22:29:29 ZWave bu_FSD_Sideboardlampe CMD: ZW_APPLICATION_UPDATE
2017-10-25 22:29:29 ZWave bu_FSD_Sideboardlampe Power: 39.002
2017-10-25 22:29:30 ZWave bu_FSD_Sideboardlampe hail: 01
2017-10-25 22:29:30 ZWave bu_FSD_Sideboardlampe Power: 39.002
2017-10-25 22:29:33 DOIF bu_FSD_Sideboardlampe_DOIF cmd_nr: 2
2017-10-25 22:29:33 DOIF bu_FSD_Sideboardlampe_DOIF cmd: 2
2017-10-25 22:29:33 DOIF bu_FSD_Sideboardlampe_DOIF cmd_event: bu_FSD_Sideboardlampe
2017-10-25 22:29:33 DOIF bu_FSD_Sideboardlampe_DOIF cmd_2
2017-10-25 22:29:33 ZWave bu_FSD_Sideboardlampe power:  0 W
2017-10-25 22:29:33 ZWave bu_FSD_Sideboardlampe Power: 0
2017-10-25 22:29:33 ZWave bu_FSD_Sideboardlampe off
2017-10-25 22:29:33 ZWave bu_FSD_Sideboardlampe Power: 0
2017-10-25 22:29:34 ZWave bu_FSD_Sideboardlampe power:  0 W
2017-10-25 22:29:34 ZWave bu_FSD_Sideboardlampe Power: 0
2017-10-25 22:29:34 ZWave bu_FSD_Sideboardlampe power:  0 W
2017-10-25 22:29:34 ZWave bu_FSD_Sideboardlampe Power: 0
2017-10-25 22:29:34 ZWave bu_FSD_Sideboardlampe hail: 01
2017-10-25 22:29:34 ZWave bu_FSD_Sideboardlampe Power: 0


list DOIF:
Internals:
   DEF        ([bu_FSD_Sideboardlampe:Power] > 0.5 and [bu_FSD_Sideboardlampe:state] eq "off")
(set bu_FSD_Sideboardlampe on)
DOELSEIF
([bu_FSD_Sideboardlampe:Power] == 0 and [bu_FSD_Sideboardlampe:state] eq "on")
(set bu_FSD_Sideboardlampe off)
   NAME       bu_FSD_Sideboardlampe_DOIF
   NR         245
   NTFY_ORDER 50-bu_FSD_Sideboardlampe_DOIF
   STATE      initialized
   TYPE       DOIF
   READINGS:
     2017-10-25 22:22:40   cmd             0
     2017-10-25 22:22:40   state           initialized
   condition:
     0          ReadingValDoIf($hash,'bu_FSD_Sideboardlampe','Power') > 0.5 and ReadingValDoIf($hash,'bu_FSD_Sideboardlampe','state') eq "off"
     1          ReadingValDoIf($hash,'bu_FSD_Sideboardlampe','Power') == 0 and ReadingValDoIf($hash,'bu_FSD_Sideboardlampe','state') eq "on"
   devices:
     0           bu_FSD_Sideboardlampe
     1           bu_FSD_Sideboardlampe
     all         bu_FSD_Sideboardlampe
   do:
     0:
       0          set bu_FSD_Sideboardlampe on
     1:
       0          set bu_FSD_Sideboardlampe off
     2:
   helper:
     globalinit 1
     last_timer 0
     sleeptimer -1
   itimer:
   readings:
     0           bu_FSD_Sideboardlampe:Power bu_FSD_Sideboardlampe:state
     1           bu_FSD_Sideboardlampe:Power bu_FSD_Sideboardlampe:state
     all         bu_FSD_Sideboardlampe:Power bu_FSD_Sideboardlampe:state
   regexp:
     all:
   state:
     STATE:
Attributes:


list device:
Internals:
   DEF        ef1f4c55 4
   IODev      ZWAVE_USB_02
   LASTInputDev ZWAVE_USB_02
   MSGCNT     174
   NAME       bu_FSD_Sideboardlampe
   NR         69
   STATE      off
   TYPE       ZWave
   ZWAVE_USB_02_MSGCNT 174
   ZWAVE_USB_02_RAWMSG 000400040e32022164000048bb0258000048bb
   ZWAVE_USB_02_TIME 2017-10-25 22:11:34
   ZWaveSubDevice no
   cmdsPending 0
   homeId     ef1f4c55
   isWakeUp
   lastMsgSent 1508879450.37342
   nodeIdHex  04
   READINGS:
     2017-10-24 22:12:50   CMD             ZW_APPLICATION_UPDATE
     2017-10-25 22:11:34   Power           0
     2017-10-05 20:54:08   SEND_DATA       failed:00
     2017-08-05 08:04:55   UNPARSED        METER 0e32422174000007a8000000000000
     2017-10-17 22:26:36   basicReport     255
     2017-10-17 22:27:46   configMinimumChangeToSendReport 5
     2017-10-17 22:27:51   configMinimumChangeToSendReportWatt 25
     2017-10-17 23:05:08   configNotificationStatus Hail
     2017-10-25 22:11:34   energy           18.619 kWh previous: 18.619 delta_time: 600 s
     2017-10-24 23:10:50   hail            01
     2017-07-14 17:12:42   model           Aeotec ZW075 Smart Switch Gen5
     2017-07-14 17:12:42   modelConfig     aeotec/zw075.xml
     2017-07-14 17:12:42   modelId         0086-0003-004b
     2017-10-24 22:27:54   power            0 W
     2017-10-24 23:10:50   state           off
     2017-10-24 23:10:50   timeToAck       0.187
     2017-10-24 23:10:50   transmit        OK
     2017-08-05 08:52:07   undef           2.254 undef
Attributes:
   IODev      ZWAVE_USB_02
   Lampen     Lampen
   classes    ZWAVEPLUS_INFO SWITCH_BINARY METER SWITCH_ALL SCENE_ACTUATOR_CONF SCENE_ACTIVATION CONFIGURATION ASSOCIATION ASSOCIATION_GRP_INFO CRC_16_ENCAP MANUFACTURER_SPECIFIC VERSION FIRMWARE_UPDATE_MD POWERLEVEL SECURITY MARK DEVICE_RESET_LOCALLY HAIL
   genericDeviceType light
   lights     Lampen
   room       1.8_Büro,16_ZWave,2.3_Funksteckdosen,41_Homekit
   userReadings Power { ReadingsNum("bu_FSD_Sideboardlampe","power",0)}
   userattr   Lampen Lampen_map lights lights_map structexclude
   vclasses   ASSOCIATION:2 ASSOCIATION_GRP_INFO:1 CONFIGURATION:1 CRC_16_ENCAP:1 DEVICE_RESET_LOCALLY:1 FIRMWARE_UPDATE_MD:2 HAIL:1 MANUFACTURER_SPECIFIC:2 METER:3 POWERLEVEL:1 SCENE_ACTIVATION:1 SCENE_ACTUATOR_CONF:1 SECURITY:1 SWITCH_ALL:1 SWITCH_BINARY:1 VERSION:2 ZWAVEPLUS_INFO:2

Ellert

Ich kenne Zwave nicht, aber wenn das ZWave-Gerät den Status nicht aktualisiert, würde ich dort ein Problem vermuten.  Da solltest Du zuerst ansetzen und nicht versuchen das Problem durch Tricks zu kaschieren.

Um das DOIF-Problem zu losen sollte [bu_FSD_Sideboardlampe:state] nicht triggern lassen, wie das geht, steht in der deutschsprachigen Commandref zum DOIF im Inhaltsverzeichnis  "... ohne Trigger".

smn_fx

Zitat von: Ellert am 25 Oktober 2017, 23:17:29
Ich kenne Zwave nicht, aber wenn das ZWave-Gerät den Status nicht aktualisiert, würde ich dort ein Problem vermuten.  Da solltest Du zuerst ansetzen und nicht versuchen das Problem durch Tricks zu kaschieren.
Das habe ich auch versucht bevor ich mit dem DOIF angefangen habe. Bei diesem Zwischenstecker kann ich allerdings nur einstellen, ob mir die Leistungsdaten gesendet werden und ab welchen Schwellenwerten.  Zum Status gibt es scheinbar keine Meldung.

Zitat von: Ellert am 25 Oktober 2017, 23:17:29
"... ohne Trigger".
Danke für den Hinweis, schaue ich mir an!

krikan

Es kommt keine Aenderung des state/STATE, da das Geraet so konfiguriert ist, dass manuelle Schaltvorgaenge mit der Class HAIL gemeldet werden. HAIL kennt kein on/off, sondern nur "geschaltet"=hail:01.
    2017-10-17 23:05:08   configNotificationStatus Hail
Aender bitte configNotificationStatus (=Konfigurationsparamter 80) auf Meldung mit Class BASIC ab. Das sollte Dein Problem mMn lösen.

Gruß, Christian

smn_fx

Ich habe jetzt configNotificationStatus auf Basic geändert, aber leider sendet der Zwischenstecker kein on und off sondern basicReport 255 und 0.
Beim manuellen Schalten ändert sich state somit nicht :(
(Bei jedem Schalten wird außerdem noch CMD: ZW_APPLICATION_UPDATE mitgesendet.)
Gibt es irgendeine Möglichkeit das basicReport 255/0 in state on/off zu wandeln ohne den Zwischenstecker wieder zu triggern?

Der andere Vorschlag das DOIF bei state nicht zu triggern mit jeweils [?bu_FSD_Sideboardlampe:state] hat auch nicht zum Ziel geführt. Das Problem ist denke ich, dass Power nicht schnell genug auf 0 ist und daher ungewollt triggert.

Event Monitor bei manuellem Ein und Aus-:schalten
2017-10-26 18:48:02 ZWave bu_FSD_Sideboardlampe CMD: ZW_APPLICATION_UPDATE
2017-10-26 18:48:02 ZWave bu_FSD_Sideboardlampe Power: 0
2017-10-26 18:48:02 ZWave bu_FSD_Sideboardlampe basicReport: 255
2017-10-26 18:48:02 ZWave bu_FSD_Sideboardlampe Power: 0
2017-10-26 18:48:04 ZWave bu_FSD_Sideboardlampe power:  38.64 W
2017-10-26 18:48:04 ZWave bu_FSD_Sideboardlampe Power: 38.64
2017-10-26 18:48:12 ZWave bu_FSD_Sideboardlampe CMD: ZW_APPLICATION_UPDATE
2017-10-26 18:48:12 ZWave bu_FSD_Sideboardlampe Power: 38.64
2017-10-26 18:48:13 ZWave bu_FSD_Sideboardlampe basicReport: 0
2017-10-26 18:48:13 ZWave bu_FSD_Sideboardlampe Power: 38.64
2017-10-26 18:48:13 ZWave bu_FSD_Sideboardlampe power:  15.03 W
2017-10-26 18:48:13 ZWave bu_FSD_Sideboardlampe Power: 15.03
2017-10-26 18:48:16 ZWave bu_FSD_Sideboardlampe power:  0 W
2017-10-26 18:48:16 ZWave bu_FSD_Sideboardlampe Power: 0

krikan

ZitatGibt es irgendeine Möglichkeit das basicReport 255/0 in state on/off zu wandeln ohne den Zwischenstecker wieder zu triggern?
https://fhem.de/commandref.html#stateFormat
attr stateFormat bu_FSD_Sideboardlampe  {ReadingsVal("ZWave bu_FSD_Sideboardlampe","basicReport","") eq "255"  ? "on" : "off" }
So etwas in der Art (ungetestet)




smn_fx

Super danke!

attr stateFormat bu_FSD_Sideboardlampe {ReadingsVal("bu_FSD_Sideboardlampe","basicReport","") eq "255"  ? "on" : "off" }
...funktioniert und immerhin STATE wird jetzt aktualisiert, so dass ich in FTUI und FHEMWEB den Status richtig angezeigt bekomme.

krikan


smn_fx

Hm evtl.? Dafür bin ich noch zu neu in FHEM um das zu überblicken. Könnte mir vorstellen, dass es mit structure Probleme geben könnte wenn ich mehrere Lampen verbinde. Oder generell bei notifys und Doifs nimmt man ja häufig state als Ereigniss/Event.

Ellert

Zitat von: smn_fx am 26 Oktober 2017, 20:25:13
Hm evtl.? Dafür bin ich noch zu neu in FHEM um das zu überblicken. Könnte mir vorstellen, dass es mit structure Probleme geben könnte wenn ich mehrere Lampen verbinde. Oder generell bei notifys und Doifs nimmt man ja häufig state als Ereigniss/Event.
Im DOIF:
[<Devicename>] fragt STATE ab
[<Devicename>:state] fragt state ab

AlterMann

Hi, ich weiß das ist lange her aber ich habe es nachvollzogen und bin über die Leerzeichen (Space) gestolpert, richtiger wäre so was:


{ReadingsVal("Stube_Steckdose_oben","basicReport","")eq"255"?"on":"off"}

das attr stateFormat xxxx spare ich mir weil das beim Gerät auswählbar ist.
So funktionierts mit meiner Steckdose -Hank HKZW-SO05 Smart Plug - WebCmd habe ich noch auf ":" gesetzt um nur das Icon darzustellen.

Tschuldigung aber eventuell guckt jemand so wie ich (ohne Ahnung von Programmierung)

Liebe Grüße AM
Ich bin Techniker und Anwender, kein Programmierer und genau deshalb will ich in FHEM einsteigen. Bald hab ich viel Zeit und Unkraut jäten is nich mein Ding.....