hilfegesuch bei geistigem dreher

Begonnen von the ratman, 07 April 2016, 07:43:38

Vorheriges Thema - Nächstes Thema

the ratman

da ich "doif" sehr liebe und langsam der meinung war, ich könnte dann doch mal ein wenig "anspruchsvolleres" mit fhem machen, hab ich mir ein doif für mein aussenrollo gebastelt.
scheinbar bin ich noch nicht wirklich so weit, oder hab wieder mal einen geistigen dreher in meinen verbliebenen 3 gehirnzellen.
auf jeden fall will folgendes doif in der früh so überhaupt gar nix tun obwohl die readings alle passen würden.

aussehen tut das ganze so:(
     [?06:30-10:30]
   and
     [Ping_FatBastard:state] eq "present"
   and
     ([FritzBox:mac_xx_xx_xx_xx_xx_xx] eq "Arbeits-PC" or [Ping_Mrs_Lock:state] eq "present")
)

(set WZ_Terrasse_Rollo off;)


DOELSEIF


(    [?21:00-24:00]
   and
     [MK_Fliegengitter:state] eq "closed"
   and
     [MK_Katzentuer:state] eq "closed"
)

(set WZ_Terrasse_Rollo on;)
zusätzliches:
do always <-- in der hoffnung, dass dann mal mehr passiert als nix
wait 14400 <-- in weiterer hoffnung, dass mein befehl nur 1 mal in den oben angegebenen zeitpsannen ausgeführt wird

erklärung:
(nur falls sich wer fragt, warum der Arbeits-PC nicht wie die anderen gepinged wird - der würde nichts zurück melden, aber in der fritzbox kann ich ihn sehen.)

was will ich eigentlich erreichen?
in der früh zw. 6:30 und 10:30 soll ein aussenrollo hochfahren wenn mein pc und einer der beiden anderen pc's laufen.
abends zw. 21 und 24 uhr soll das rollo runter fahren, wenn die beiden magnetkontakte geschlossen sind
beides soll innerhalb der angegebenen zeiten nur 1 mal geschehen. würde ich also nachträglich händisch die rollo bewegen, soll das dann auch so bleiben, bis die nächste zeitblase kommt.
→do↑p!dnʇs↓shit←

CoolTux

Gib mal bitte ein list damit man alle Readings und versteckten Helper sehen kann.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

the ratman

ach servus:

hier bitte:Internals:
   DEF        (
     [?06:30-10:30]
   and
     [Ping_FatBastard:state] eq "present"
   and
     [FritzBox:mac_xx_xx_xx_xx_xx_xx] eq "Arbeits_PC"
)

(set WZ_Terrasse_Rollo off;)


DOELSEIF


(    [?21:00-24:00]
   and
     [MK_Fliegengitter:state] eq "closed"
   and
     [MK_Katzentuer:state] eq "closed"
)

(set WZ_Terrasse_Rollo on;)

   NAME       Rollo_Terasse
   NR         329
   NTFY_ORDER 50-Rollo_Terasse
   STATE      cmd_1
   TYPE       DOIF
   Helper:
     Dblog:
       Cmd_event:
         Logdb:
           TIME       1460011253.1528
           VALUE      Ping_FatBastard
       Cmd_nr:
         Logdb:
           TIME       1460011253.1528
           VALUE      1
       State:
         Logdb:
           TIME       1460011253.1528
           VALUE      cmd_1
       Timer_1_c1:
         Logdb:
           TIME       1460008209.5745
           VALUE      08.04.2016 06:30:00
       Timer_2_c1:
         Logdb:
           TIME       1460008209.60604
           VALUE      07.04.2016 10:30:00
       Timer_3_c2:
         Logdb:
           TIME       1460008209.63747
           VALUE      07.04.2016 21:00:00
       Timer_4_c2:
         Logdb:
           TIME       1460008209.66792
           VALUE      08.04.2016 00:00:00
       Wait_timer:
         Logdb:
           TIME       1460011264.14422
           VALUE      no timer
   Readings:
     2016-04-07 08:40:53   Device          Ping_FatBastard
     2016-04-07 08:40:53   cmd_event       Ping_FatBastard
     2016-04-07 08:40:53   cmd_nr          1
     2016-04-07 08:40:24   e_FritzBox_mac_xx_xx_xx_xx_xx_xx Arbeits_PC
     2016-04-07 08:40:53   e_Ping_FatBastard_state present
     2016-04-07 07:45:09   e_Ping_Mrs_Lock_state absent
     2016-04-07 08:40:53   state           cmd_1
     2016-04-07 07:50:09   timer_1_c1      08.04.2016 06:30:00
     2016-04-07 07:50:09   timer_2_c1      07.04.2016 10:30:00
     2016-04-07 07:50:09   timer_3_c2      07.04.2016 21:00:00
     2016-04-07 07:50:09   timer_4_c2      08.04.2016 00:00:00
     2016-04-07 08:41:04   wait_timer      no timer
   Condition:
     0               DOIF_time($hash,$hash->{realtime}{0},$hash->{realtime}{1},$wday,$hms,"")   and     ReadingValDoIf($hash,'Ping_FatBastard','state','','',AttrVal($hash->{NAME},'notexist',undef)) eq "present"    and     ReadingValDoIf($hash,'FritzBox','mac_xx_xx_xx_xx_xx_xx','','',AttrVal($hash->{NAME},'notexist',undef)) eq "Arbeits_PC"
     1              DOIF_time($hash,$hash->{realtime}{2},$hash->{realtime}{3},$wday,$hms,"")   and     ReadingValDoIf($hash,'MK_Fliegengitter','state','','',AttrVal($hash->{NAME},'notexist',undef)) eq "closed"   and     ReadingValDoIf($hash,'MK_Katzentuer','state','','',AttrVal($hash->{NAME},'notexist',undef)) eq "closed"
   Days:
   Devices:
     0           Ping_FatBastard FritzBox
     1           MK_Fliegengitter MK_Katzentuer
     all         Ping_FatBastard FritzBox MK_Fliegengitter MK_Katzentuer
   Do:
     0:
       0          set WZ_Terrasse_Rollo off;
     1:
       0          set WZ_Terrasse_Rollo on;
   Helper:
     event      present,presence: present
     globalinit 1
     last_timer 4
     sleeptimer -1
     timerdev   Ping_FatBastard
     timerevent present,presence: present
     triggerDev Ping_FatBastard
     timerevents:
       present
       presence: present
     triggerEvents:
       present
       presence: present
   Internals:
   Interval:
     0          -1
     1          0
     2          -1
     3          2
   Itimer:
   Localtime:
     0          1460089800
     1          1460017800
     2          1460055600
     3          1460066400
   Readings:
     0           Ping_FatBastard:state FritzBox:mac_xx_xx_xx_xx_xx_xx
     1           MK_Fliegengitter:state MK_Katzentuer:state
     all         Ping_FatBastard:state FritzBox:mac_xx_xx_xx_xx_xx_xx MK_Fliegengitter:state MK_Katzentuer:state
   Realtime:
     0          06:30:00
     1          10:30:00
     2          21:00:00
     3          00:00:00
   Regexp:
     0:
     All:
   State:
   Time:
     0          06:30:00
     1          10:30:00
     2          21:00:00
     3          24:00:00
   Timecond:
     0          0
     1          0
     2          1
     3          1
   Timer:
     0          0
     1          0
     2          0
     3          0
   Trigger:
   Triggertime:
     1460017800:
       localtime  1460017800
       Hash:
     1460055600:
       localtime  1460055600
       Hash:
     1460066400:
       localtime  1460066400
       Hash:
     1460089800:
       localtime  1460089800
       Hash:
Attributes:
   DbLogExclude 1
   alias      Rollo Terrasse Automatik
   do         always
   icon       fts_shutter_updown
   room       Szenen
   wait       14400

ich merk übrigens, dass zumindest meine and's und or zu passen scheinen, da die rollo ohne dem "wait" alle 10 min. (entspräche der pause beim pingen) am hochfahren wäre. mein problem scheint dann wohl zu sein, dass "wait" wohl der falsche ansatz is um nur einmal im zeitfenster zu schalten?
→do↑p!dnʇs↓shit←

CoolTux

Das ständige kommt vom do always das muss raus.
Das wait bedeutet das er mit dem Befehl x sekunden warten soll bevor er ihn aus führt.

Also wait raus und do always raus und dann mal schauen

Der Rest sollte wohl passen
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

the ratman

o.k. - das währ ja super einfach und schon mal ein danke an dich dafür.

aber nur zum verständis für mich: wie verhindere ich, dass das rollo innerhalb der 2 zeitfenster mehrfach fährt, weil ich z.b. das ding selber betätigt hab und ein rechner neu gestartet wurde?
oder hab ich bis jetzt doif total mißverstanden, und ein befehl wird generell nur 1 mal in einem zeitfenster ausgeführt?
→do↑p!dnʇs↓shit←

CoolTux

Das sollte es nicht. Wenn Du das do always rausgenommen hast und 2 Bedingungen hast arbeitet das DOIF wie eine SState Machine. Also auf Basis einer Zustandsänderung.

Ist die erste Bedingung erfüllt und cmd1 abgesetzt kann so lange cmd1 nicht mehr abgesetzt werden bevor nicht ein anderer Zustand statt gefunden hat. Also ein cmd2 Was bei dir ja nur abends und unter bestimmten anderen bedingungen erfolgen kann
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

the ratman

jetzt kapier ichs - vielen dank cooltux!

hab ich (wieder mal) viel zu kompliziert und um die ecke gedacht ...
→do↑p!dnʇs↓shit←