FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: Master_Nick am 11 März 2018, 17:56:48

Titel: [gelöst] DOIF soll nach reading absent für 8 Minuten etwas tun.
Beitrag von: Master_Nick am 11 März 2018, 17:56:48
Moin  :)

Ich habe gerade irgendwie ein Problem, die folgende Anleitung umzusetzen:

ZitatAnwendungsbeispiel: Benachrichtigung "Waschmaschine fertig", wenn Verbrauch mindestens 5 Minuten unter 2 Watt (Perl-Code wird in geschweifte Klammern gesetzt):

define di_washer DOIF ([power:watt]<2) ({system("wmail washer finished")})
attr di_washer wait 300




Ich habe es in meinem DOIF so eingebaut umgesetzt - doch leider schaltet es immer sofort meine Hauptanwesenheitsinstanz auf absent statt 8 Minuten zu warten (ich fange damit Gänge zur Waschmaschine etc ab):

   CFGFN     
   DEF        ([Anwesenheit_Zwischenstufe] eq "present") (set Anwesenheit present)

DOELSEIF
([Anwesenheit_Zwischenstufe] eq "absent")
(set Anwesenheit absent)
   NAME       AnwesenheitZwischenstufe_DOIF
   NR         139
   NTFY_ORDER 50-AnwesenheitZwischenstufe_DOIF
   STATE      cmd_2
   TYPE       DOIF
   READINGS:
     2018-03-11 17:54:22   Device          Anwesenheit_Zwischenstufe
     2018-03-11 17:54:23   cmd             2
     2018-03-11 17:54:23   cmd_event       Anwesenheit_Zwischenstufe
     2018-03-11 17:54:23   cmd_nr          2
     2018-03-11 17:54:22   e_Anwesenheit_Zwischenstufe_STATE absent
     2018-03-11 17:53:15   mode            enabled
     2018-03-11 17:54:23   state           cmd_2
     2018-03-11 17:28:53   wait_timer      no timer
   Regex:
   condition:
     0          InternalDoIf($hash,'Anwesenheit_Zwischenstufe','STATE') eq "present"
     1          InternalDoIf($hash,'Anwesenheit_Zwischenstufe','STATE') eq "absent"
   devices:
     0           Anwesenheit_Zwischenstufe
     1           Anwesenheit_Zwischenstufe
     all         Anwesenheit_Zwischenstufe
   do:
     0:
       0          set Anwesenheit present
     1:
       0          set Anwesenheit absent
     2:
   helper:
     DOIF_Readings_events
     DOIF_eventas
     event      absent
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   Anwesenheit_Zwischenstufe
     timerevent absent
     triggerDev Anwesenheit_Zwischenstufe
     timerevents:
       absent
     timereventsState:
       state: absent
     triggerEvents:
       absent
     triggerEventsState:
       state: absent
   internals:
     0           Anwesenheit_Zwischenstufe:STATE
     1           Anwesenheit_Zwischenstufe:STATE
     all         Anwesenheit_Zwischenstufe:STATE
   itimer:
   readings:
   trigger:
   uiState:
   uiTable:
Attributes:
   room       Technikraum
   wait       0,480


Titel: Antw:DOIF soll nach reading absent für 8 Minuten etwas tun.
Beitrag von: CoolTux am 11 März 2018, 18:08:01
wait       0:480
Titel: Antw:DOIF soll nach reading absent für 8 Minuten etwas tun.
Beitrag von: Master_Nick am 11 März 2018, 18:11:16
Verdammt... wie kam ich denn auf ein Komma.

:-D Ich danke wieder mal!
Titel: Antw:[gelöst] DOIF soll nach reading absent für 8 Minuten etwas tun.
Beitrag von: Otto123 am 11 März 2018, 18:15:48
Wenn Du die Zweige tauschst sparts Du 0: und die Fehlerquelle.

So hab ich das nämlich, ich war am überlegen was bei Dir anders ist - Leon war schneller :)

Gruß Otto
Titel: Antw:[gelöst] DOIF soll nach reading absent für 8 Minuten etwas tun.
Beitrag von: CoolTux am 11 März 2018, 18:16:10
Wenn du mehrere Befehle im Befehlsteil hast dann machst du das ja mit mehreren ( )
Und um zwischen diesen Befehlen eine Verzögerung zu bekommen machst du das mit Komma zwischen den Zahlwerten.
Titel: Antw:[gelöst] DOIF soll nach reading absent für 8 Minuten etwas tun.
Beitrag von: Master_Nick am 11 März 2018, 18:17:38
Ahh da hatte ich das her.. :-D
Stimt.

@Otto ja stimmt :-) aber lernen tut man ja erst durch Fehler  ;D

Sauber nun fluppt es wundervoll durch. :-) THX
Titel: Antw:[gelöst] DOIF soll nach reading absent für 8 Minuten etwas tun.
Beitrag von: Otto123 am 11 März 2018, 18:50:37
Und ich fand eine Weile den Übergang von der Waschmaschine zur Anwesenheit schwierig.  ;D
Titel: Antw:[gelöst] DOIF soll nach reading absent für 8 Minuten etwas tun.
Beitrag von: Master_Nick am 11 März 2018, 21:20:42
 ;) Hehe okay nächste Mal ein par Worte mehr zur Erklärung.