FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: pula am 01 Dezember 2015, 17:31:01

Titel: [GELÖST]DOIF: Verständnis-Frage
Beitrag von: pula am 01 Dezember 2015, 17:31:01
Hallo,

ich habe einen Taster per HM-wired angebunden und die Steckdose des TV per Arduino (firmata) und relais.
Funktioniert so weit auch alles gut.

Jetzt möchte ich aber, daß der Taster unterschiedlich reagiert, je nachdem, ob der TV an oder aus ist.
Ich habe dazu das ursprüngliche DOIF, das nur auf den Taster reagierte, erweitert und folgendes listing:

  DEF        (([eingang_taster_mitte_rechts eq "closed") and ([wz_tv eq "off"))
     ((set ez_led_balken off,set ez_led_nischen off,set kueche_led_insel off, set wz_led_wand off, set wz_panel_couch off, set wz_panel_ofen off, set kueche_sockel_abwasch off, set kueche_insel_sockel off, set wz_led_tv off, set ez_led_balken off,set ez_led_nischen off,set kueche_led_insel off, set wz_led_wand off, set wz_panel_couch off, set wz_panel_ofen off, set kueche_sockel_abwasch off, set kueche_insel_sockel off, set wz_led_tv off)) DOELSEIF (([eingang_taster_mitte_rechts eq "closed") and ([wz_tv eq "on"))
((set ez_led_balken off,set ez_led_nischen off,set kueche_led_insel off, set wz_panel_couch off, set wz_panel_ofen off, set kueche_sockel_abwasch off, set kueche_insel_sockel off, set wz_led_tv off, set ez_led_balken off,set ez_led_nischen off,set kueche_led_insel off, set wz_led_wand off, set wz_panel_couch off, set wz_panel_ofen off, set kueche_sockel_abwasch off, set kueche_insel_sockel off))
   NAME       di_eingang_taster_mitte_rechts
   NR         169
   NTFY_ORDER 50-di_eingang_taster_mitte_rechts
   STATE      cmd_1
   TYPE       DOIF
   Readings:
     2015-12-01 17   Device          eingang_taster_mitte_rechts
     2015-12-01 17   cmd_event       eingang_taster_mitte_rechts
     2015-12-01 17   cmd_nr          1
     2015-12-01 17   e_eingang_taster_mitte_rechts_sensor open
     2015-12-01 17   error           set ez_led_balken off,set ez_led_nischen off,set kueche_led_insel off, set wz_led_wand off, set wz_panel_couch off, set wz_panel_ofen off, set kueche_sockel_abwasch off, set kueche_insel_sockel off, set wz_led_tv off, set ez_led_balken off,set ez_led_nischen off,set kueche_led_insel off, set wz_led_wand off, set wz_panel_couch off, set wz_panel_ofen off, set kueche_sockel_abwasch off, set kueche_insel_sockel off, set wz_led_tv off: unknown command (off,set): choose one of on off dim dimup dimdown HSV RGB sync pair unpair
     2015-12-01 17   state           cmd_1
   Condition:
     0          (ReadingValDoIf('eingang_taster_mitte_rechts','sensor','') eq "closed") and (ReadingValDoIf('wz_tv','value','') eq "off")
     1          (ReadingValDoIf('eingang_taster_mitte_rechts','sensor','') eq "closed") and (ReadingValDoIf('wz_tv','value','') eq "on")
   Devices:
     0           eingang_taster_mitte_rechts wz_tv
     1           eingang_taster_mitte_rechts wz_tv
     all         eingang_taster_mitte_rechts wz_tv
   Do:
     0:
       0          (set ez_led_balken off,set ez_led_nischen off,set kueche_led_insel off, set wz_led_wand off, set wz_panel_couch off, set wz_panel_ofen off, set kueche_sockel_abwasch off, set kueche_insel_sockel off, set wz_led_tv off, set ez_led_balken off,set ez_led_nischen off,set kueche_led_insel off, set wz_led_wand off, set wz_panel_couch off, set wz_panel_ofen off, set kueche_sockel_abwasch off, set kueche_insel_sockel off, set wz_led_tv off)
     1:
       0          (set ez_led_balken off,set ez_led_nischen off,set kueche_led_insel off, set wz_panel_couch off, set wz_panel_ofen off, set kueche_sockel_abwasch off, set kueche_insel_sockel off, set wz_led_tv off, set ez_led_balken off,set ez_led_nischen off,set kueche_led_insel off, set wz_led_wand off, set wz_panel_couch off, set wz_panel_ofen off, set kueche_sockel_abwasch off, set kueche_insel_sockel off)
     2:
   Helper:
     globalinit 1
     last_timer 0
     sleeptimer -1
   Internals:
   Itimer:
   Readings:
     0           eingang_taster_mitte_rechts wz_tv
     1           eingang_taster_mitte_rechts wz_tv
     all         eingang_taster_mitte_rechts wz_tv
   State:
   Timerfunc:
   Trigger:
Attributes:
   loglevel   5
   room       Beleuchtung,Eingang,HM485,Taster


Listing des Tasters:
Internals:
   DEF        00011A53_02
   FW_VERSION 3.01
   IODev
   MODEL      HMW_Sen_SC_12_DR
   NAME       eingang_taster_mitte_rechts
   NR         186
   STATE      sensor_open
   TYPE       HM485
   chanNo     02
   device     hmwired_sensoren_1
   Readings:
     2015-12-01 17:22:17   sensor          open
     2015-12-01 17:22:17   state           sensor_open
Attributes:
   firmwareVersion 3.01
   model      HMW_Sen_SC_12_DR
   room       Eingang,HM485,Taster
   serialNr   MEQ0065496
   subType    sensor


und von wz_tv:
Internals:
   DEF        34
   IODev      mega1
   NAME       wz_tv
   NR         109
   PIN        34
   STATE      off
   TYPE       FRM_OUT
   Readings:
     2015-11-27 17:13:14   state           Initialized
     2015-11-30 22:03:07   value           off
Attributes:
   IODev      mega1
   activeLow  yes
   restoreOnReconnect on
   restoreOnStartup on
   room       Arduino,WZ
   stateFormat value


Allerdings reagiert der Taster nun gar nicht mehr, egal, ob der TV an oder aus ist und im Log finde ich trotz loglevel 5 für das DOIF auch nichts:

015.12.01 17:22:16 5: hmwired_sensoren_1: HM485_ProcessChannelState: hmwId = 00011A53 Channel = 02 msgData = 69010000 actionType = frame
2015.12.01 17:22:16 5: Triggering hmwired_sensoren_1 (1 changes)
2015.12.01 17:22:16 5: Notify loop for hmwired_sensoren_1 ACK
2015.12.01 17:22:16 4: eingang_taster_mitte_rechts: HM485_ChannelDoUpdate
2015.12.01 17:22:16 5: eingang_taster_mitte_rechts: HM485_ChannelDoUpdate: valueKey = sensor value = closed Alter Wert = open
2015.12.01 17:22:16 4: eingang_taster_mitte_rechts: sensor -> closed
2015.12.01 17:22:16 5: Triggering eingang_taster_mitte_rechts (2 changes)
2015.12.01 17:22:16 5: Notify loop for eingang_taster_mitte_rechts sensor: closed
2015.12.01 17:22:16 5: hmwired: HM485_LAN_parseIncommingCommand: MsgId: 33 Cmd: 101
2015.12.01 17:22:16 4: hmwired: Event:HASH(0x5cc1a48)
2015.12.01 17:22:16 5: hmwired dispatch �e�����▒SAMEQ0065496
2015.12.01 17:22:16 5: hmwired: HM485_Parse: MsgId: 33
2015.12.01 17:22:16 5: hmwired: HM485_Parse: ProcessEvent
2015.12.01 17:22:16 5: hmwired: HM485_ProcessEvent: hmwId = 00011A53 msgData = 4101190003014D455130303635343936
2015.12.01 17:22:16 5: hmwired_sensoren_1: HM485_ProcessChannelState: hmwId = 00011A53 No channel
2015.12.01 17:22:16 5: Triggering hmwired_sensoren_1 (1 changes)
2015.12.01 17:22:16 5: Notify loop for hmwired_sensoren_1 ACK
2015.12.01 17:22:17 5: hmwired: HM485_LAN_parseIncommingCommand: MsgId: 34 Cmd: 101
2015.12.01 17:22:17 4: hmwired: Event:HASH(0x648c600)
2015.12.01 17:22:17 5: hmwired dispatch �"e<▒Si�
2015.12.01 17:22:17 5: hmwired: HM485_Parse: MsgId: 34
2015.12.01 17:22:17 5: hmwired: HM485_Parse: ProcessEvent
2015.12.01 17:22:17 5: hmwired: HM485_ProcessEvent: hmwId = 00011A53 msgData = 6901C800
2015.12.01 17:22:17 5: hmwired_sensoren_1: Device:convertFrameDataToValue: deviceKey = HMW_SEN_SC_12_DR valId = state value1 = 200
2015.12.01 17:22:17 5: HM485: HM485:Device:dataConversion: retVal = 200
2015.12.01 17:22:17 5: hmwired_sensoren_1: Device:convertFrameDataToValue: value2 = 200
2015.12.01 17:22:17 5: HM485: Device:valueToControl: valName = sensor = 200
2015.12.01 17:22:17 5: hmwired_sensoren_1: HM485_ProcessChannelState: hmwId = 00011A53 Channel = 02 msgData = 6901C800 actionType = frame
2015.12.01 17:22:17 5: Triggering hmwired_sensoren_1 (1 changes)
2015.12.01 17:22:17 5: Notify loop for hmwired_sensoren_1 ACK
2015.12.01 17:22:17 4: eingang_taster_mitte_rechts: HM485_ChannelDoUpdate
2015.12.01 17:22:17 5: eingang_taster_mitte_rechts: HM485_ChannelDoUpdate: valueKey = sensor value = open Alter Wert = closed
2015.12.01 17:22:17 4: eingang_taster_mitte_rechts: sensor -> open
2015.12.01 17:22:17 5: Triggering eingang_taster_mitte_rechts (2 changes)
2015.12.01 17:22:17 5: Notify loop for eingang_taster_mitte_rechts sensor: open
2015.12.01 17:22:17 5: hmwired: HM485_LAN_parseIncommingCommand: MsgId: 35 Cmd: 101
2015.12.01 17:22:17 4: hmwired: Event:HASH(0x6bd6c00)
2015.12.01 17:22:17 5: hmwired dispatch ������▒SAMEQ0065496
2015.12.01 17:22:17 5: hmwired: HM485_Parse: MsgId: 35
2015.12.01 17:22:17 5: hmwired: HM485_Parse: ProcessEvent
2015.12.01 17:22:17 5: hmwired: HM485_ProcessEvent: hmwId = 00011A53 msgData = 4101190003014D455130303635343936
2015.12.01 17:22:17 5: hmwired_sensoren_1: HM485_ProcessChannelState: hmwId = 00011A53 No channel
2015.12.01 17:22:17 5: Triggering hmwired_sensoren_1 (1 changes)
2015.12.01 17:22:17 5: Notify loop for hmwired_sensoren_1 ACK


Irgendwie stehe ich ziemlich auf dem Schlauch. Habe auch schon einige Kombinationen bei den Klammern versucht, Ergebnis immer das gleiche: keine Reaktion.
Für zweckdienliche Hinweise wäre ich dankbar - ach ja, ich habe versucht, sowohl wiki als auch commandref heranzuziehen, leider ohne für mich hilfreiches Ergebnis.

Vielen Dank im voraus!

Cheers,

Pula
Titel: Antw:DOIF: Verständnis-Frage
Beitrag von: pula am 01 Dezember 2015, 17:35:08
Argh....
Wer lesen kann ist klar im vorteil...
Hab den error im Listing erst gesehen, als ich das Posting bereits abgeschickt habe.

So gehts, falls das mal jemanden interessieren sollte:

(([eingang_taster_mitte_rechts:sensor] eq "closed") and ([wz_tv:value] eq "off"))
     (set ez_led_balken off,set ez_led_nischen off,set kueche_led_insel off, set wz_led_wand off, set wz_panel_couch off, set wz_panel_ofen off, set kueche_sockel_abwasch off, set kueche_insel_sockel off, set wz_led_tv off, set ez_led_balken off,set ez_led_nischen off,set kueche_led_insel off, set wz_led_wand off, set wz_panel_couch off, set wz_panel_ofen off, set kueche_sockel_abwasch off, set kueche_insel_sockel off, set wz_led_tv off) DOELSEIF (([eingang_taster_mitte_rechts:sensor] eq "closed") and ([wz_tv:value] eq "on"))
(set ez_led_balken off,set ez_led_nischen off,set kueche_led_insel off, set wz_panel_couch off, set wz_panel_ofen off, set kueche_sockel_abwasch off, set kueche_insel_sockel off, set wz_led_tv off, set ez_led_balken off,set ez_led_nischen off,set kueche_led_insel off, set wz_led_wand off, set wz_panel_couch off, set wz_panel_ofen off, set kueche_sockel_abwasch off, set kueche_insel_sockel off)