Hauptmenü

Kleine DOIF Hilfe :)

Begonnen von ChrisW, 16 September 2017, 13:39:32

Vorheriges Thema - Nächstes Thema

ChrisW

Hallo,
brauche mal hilfe bei meinem DOIF :
define di_fhemtabletscreen DOIF ([Winconnect.FHEMTABLET:motion_detect] eq "True" or [Winconnect.FHEMTABLET:microphone_detect] eq "True") (set Winconnect.FHEMTABLET  screenOn)

Ich möchte bei winconnect.FHEMTABLET:motion_detect und Winconnect.FHEMTABLET:microphone_detect True "set Winconnect.FHEMTABLET  screenOn" setzen. Das funktioniert auch.

Jedoch suche ich nu nach eine Lösung das wenn inconnect.FHEMTABLET:motion_detectWinconnect.FHEMTABLET:microphone_detect False ist für sagen wir 30 Minuten dann set Winconnect.FHEMTABLET  screenOn


Lässt sich so etwas mit einem DOIF bauen ? Oder muss ich da mit einem Watchdog arbeiten?
Raspberry PI3 mit allem möglichen.

Ellert

Das kann mit DOIF gelöst werden. Ergänze das DOIF um einen DOELSEIF Zweig mit der False-Bedingung und nutze das Attribut wait um den Befehl zu verzögern. Falls der erste Zweig innerhalb der Wartezeit True wird, dann wird der Zweite Zweig abgebrochen und der Befehl nicht ausgeführt.

ChrisW

Hast du mal ein kleines Beispiel? Muss ja nicht für mich sein aber wo ich mir den Aufbau angucken aknn? Im Wiki steht leider so vieles :D
Raspberry PI3 mit allem möglichen.

amenomade

ZitatIm Wiki steht leider so vieles

In CommandRef aber viel mehr https://fhem.de/commandref_DE.html#DOIF
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

ChrisW

Danke ich setze nun alle X minuten per at das screenoff.
Das doif von mir macht das Display dann an :)
Ist einfacher für mich *g*
Raspberry PI3 mit allem möglichen.

ChrisW

Okay diese Lösung ist doch nicht so gut. Wenn ich alle 30 min Display ausmachen lasse und bei 29 gerade daor bin ist es aus obwohl True ist ;)
Man müsste den watchdog dann umbauen aber das scheint mir auch nicht einfacher zu sein :D
Raspberry PI3 mit allem möglichen.

Rolfg

Setz doch in deinem doif ein DOELSEIF mit dem gleichen Code nur true durch false ersetzen und das atribut wait. Schau in die commanref doif atribut wait. Das ist sehr gut erklärt.
Gruß Rolf

ChrisW

hmm okay hab es so verstanden
([Winconnect.FHEMTABLET:motion_detect] eq "True" or [Winconnect.FHEMTABLET:microphone_detect] eq "True") (set Winconnect.FHEMTABLET  screenOn) DOELSE ([Winconnect.FHEMTABLET:motion_detect] eq "False" or [Winconnect.FHEMTABLET:microphone_detect] eq "False") wait 1800

im log ist aber ein fehler

017.09.18 10:41:28 2: di_fhemtabletscreen: False eq "False" or False eq "False": Unknown command False, try help.
2017.09.18 10:41:31 3: WINCONNECT set Winconnect.FHEMTABLET screenOn
2017.09.18 10:41:42 2: di_fhemtabletscreen: False eq "False" or False eq "False": Unknown command False, try help.
2017.09.18 10:41:43 3: WINCONNECT set Winconnect.FHEMTABLET screenOn


Raspberry PI3 mit allem möglichen.

CoolTux

DOELSEIF


([Winconnect.FHEMTABLET:motion_detect] eq "True" or [Winconnect.FHEMTABLET:microphone_detect] eq "True") (set Winconnect.FHEMTABLET  screenOn) DOELSEIF ([Winconnect.FHEMTABLET:motion_detect] eq "False" or [Winconnect.FHEMTABLET:microphone_detect] eq "False") (set Winconnect.FHEMTABLET  screenOn)

und das wait als Attribut

attr wait 0:1800
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

ChrisW

Danke aber nun funktioniert das screenOn nicht mehr wenn etwas True wird.
Sicher das wait in das attribut ??
Fehlermeldungen habe ich keine. screenoff funktioniert.
Raspberry PI3 mit allem möglichen.

CoolTux

Im ganzen Code sehe ich nicht ein screenoff. Keine Ahnung was du aus meinem Code machst
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

ChrisW

hab es nun angepasst. Geht aber irendwie nicht.
Hab ein True ausgelöst. Bildschirm geht aber nicht an.
define di_tabletscreen DOIF ([Winconnect.TABLET:motion_detect] eq "True" or [Winconnect.TABLET:microphone_detect] eq "True") (set Winconnect.TABLET screenOn) DOELSEIF ([Winconnect.TABLET:motion_detect] eq "False" or [Winconnect.TABLET:microphone_detect] eq "False") (set Winconnect.TABLET screenOff)\

attr di_tabletscreen wait 0:1800

Ein fehler noch ? oder muss man noch was hinzufügen?
Da energiesparen den Bildschirm auch ausmachen kkann will ich immer ein screenon schicken bei true
Raspberry PI3 mit allem möglichen.

CoolTux

Ein list vom DOIF wurde hier mehr Aufschluss bringen.
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

ChrisW

Internals:
   DEF        ([Winconnect.TABLET:motion_detect] eq "True" or [Winconnect.TABLET:microphone_detect] eq "True") (set Winconnect.TABLET screenOn) DOELSEIF ([Winconnect.TABLET:motion_detect] eq "False" or [Winconnect.TABLET:microphone_detect] eq "False") (set Winconnect.TABLET screenOff)

   NAME       di_tabletscreen
   NR         434
   NTFY_ORDER 50-di_tabletscreen
   STATE      cmd_1
   TYPE       DOIF
   READINGS:
     2017-09-22 19:58:05   Device          Winconnect.TABLET
     2017-09-22 18:24:38   cmd             1
     2017-09-22 18:24:38   cmd_event       Winconnect.TABLET
     2017-09-22 18:24:38   cmd_nr          1
     2017-09-22 19:58:05   e_Winconnect.TABLET_microphone_detect True
     2017-09-22 19:58:05   e_Winconnect.TABLET_motion_detect False
     2017-09-22 18:24:38   state           cmd_1
     2017-09-22 19:58:05   wait_timer      no timer
   condition:
     0          ReadingValDoIf($hash,'Winconnect.TABLET','motion_detect') eq "True" or ReadingValDoIf($hash,'Winconnect.TABLET','microphone_detect') eq "True"
     1          ReadingValDoIf($hash,'Winconnect.TABLET','motion_detect') eq "False" or ReadingValDoIf($hash,'Winconnect.TABLET','microphone_detect') eq "False"
   devices:
     0           Winconnect.TABLET
     1           Winconnect.TABLET
     all         Winconnect.TABLET
   do:
     0:
       0          set Winconnect.TABLET screenOn
     1:
       0          set Winconnect.TABLET screenOff
     2:
   helper:
     event      microphone_detect: True
     globalinit 1
     last_timer 0
     sleepdevice Winconnect.TABLET
     sleepsubtimer 0
     sleeptimer -1
     timerdev   Winconnect.TABLET
     timerevent microphone_detect: True
     triggerDev Winconnect.TABLET
     timerevents:
       microphone_detect: True
     timereventsState:
       microphone_detect: True
     triggerEvents:
       microphone_detect: True
     triggerEventsState:
       microphone_detect: True
   internals:
   itimer:
   readings:
     0           Winconnect.TABLET:motion_detect Winconnect.TABLET:microphone_detect
     1           Winconnect.TABLET:motion_detect Winconnect.TABLET:microphone_detect
     all         Winconnect.TABLET:motion_detect Winconnect.TABLET:microphone_detect
   regexp:
     0:
     1:
     all:
   state:
     STATE:
   trigger:
Attributes:
   wait       0:1800
Raspberry PI3 mit allem möglichen.

CoolTux

Und der Befehl
set Winconnect.TABLET screenOn
einfach in der Kommandozeile von FHEMWEB eingegeben klappt?
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