FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: misux am 25 Februar 2018, 22:59:42

Titel: (GELÖST)DOIF Licht on NUR wenn es noch vor 22.15uhr ist?
Beitrag von: misux am 25 Februar 2018, 22:59:42
HI!

ich habe einen gut funktionierenden Code den ich per dummy schalten kann...

([TVTime:"on"]) (set WZEZ_WZFLed off) (set WZBodenLed off) (set TvLicht on) DOELSEIF ([TVTime:"off"]) (set WZEZ_WZFLed on) (set WZBodenLed on) (set TvLicht off)

Problem ist das das WZEZ_WZFLed und WZBodenLed um 22.15 eigentlich mit einem Timer aus gehen und auch aus bleiben sollen. Wenn ich jetzt aber um  z.B. 23Uhr meinen TVTime auf off setze schaltet er mir natürlich wie im Code angegeben die beiden Lichter wieder an.

Wie bringe ich es ihm bei das er das nicht machen soll wenn es nach 22.15Uhr ist? Denn dann soll er nur das TVLicht ausschalten und nix mehr an.

Vielen Dank!
Titel: Antw:DOIF Licht on NUR wenn es noch vor 22.15uhr ist?
Beitrag von: rabehd am 25 Februar 2018, 23:34:16
Suchfunktion mal probiert?

https://fhem.de/commandref_DE.html#DOIF_Zeitintervalle_Readings_und_Status_ohne_Trigger (https://fhem.de/commandref_DE.html#DOIF_Zeitintervalle_Readings_und_Status_ohne_Trigger)
Titel: Antw:DOIF Licht on NUR wenn es noch vor 22.15uhr ist?
Beitrag von: misux am 26 Februar 2018, 23:20:38
 :-\

oh mann... ich kriegs nicht gebacken...Versuche es mit Ereignis- und Zeitsteuerung mit logischen Abfragen, Status ohne Trigger.... egal was ich versuche es ändert sich nix...

ich bekomme es nicht hin das die beiden Lampen WZEZ_WZFLed und WZBodenLed NICHT an gehen wenn es nach 22:15Uhr ist und ich den TVTime Schalter auf OFF setze.

Das ist der zuletzt versuchte Code... aber ob ich das mit der Zeitangabe d rein setze oder in China fällt ein Sack Reis um... ::)
([TVTime:"on"]) (set WZEZ_WZFLed off) (set WZBodenLed off) (set TvLicht on) DOELSEIF ([TVTime:"off"]) (set TvLicht off) ([?06:00-22:15] and [TVTime:"off"]) (set WZEZ_WZFLed on) (set WZBodenLed on)

Ich habe mir auch die DOIF Wiki fast komplett durchgelesen aber ich finde nichts was auf meinen Fall passen würde... Es ist dieses "Führe es NICHT aus wenn es NACH 22:15 Uhr ist" UNd wenn ich das gerade so lese frage ich mich ob das überhaupt möglich ist...ich meine: morgen und übermorgen ist es ja auch nach 22:15 :-X
Titel: Antw:DOIF Licht on NUR wenn es noch vor 22.15uhr ist?
Beitrag von: KernSani am 26 Februar 2018, 23:29:25
Nahe dran...

DOELSEIF ([?06:00-22:15] and [TVTime:"off"])
          (set WZEZ_WZFLed on, set WZBodenLed on,set TvLicht off)


sollte eigentlich funktionieren...

Hinweis:
Du musst nicht jeden einzelnen set Befehl in Klammern setzen
Wenn du den Code etwas strukturierst (Zeilenumbrüche etc...) erkennst du leichter, wenn was nicht passt

Grüße,

Oli
Titel: Antw:DOIF Licht on NUR wenn es noch vor 22.15uhr ist?
Beitrag von: Frank_Huber am 26 Februar 2018, 23:31:29
(Bedingung) (aktion1) (aktion2) (aktion3)
DOELSEIF (Bedingung) (aktion1) (aktion2) (aktion3)

Jetzt überlege, ist dein 22:15 eine Bedingung oder Aktion?
Jetzt schau deinen Code an, patch dir auf die Stirn und korrigiere es. ;-)

Mit dem Handy online, daher kurz gefasst...

Titel: Antw:DOIF Licht on NUR wenn es noch vor 22.15uhr ist?
Beitrag von: misux am 26 Februar 2018, 23:48:25
 :o hmmm... ja wenn da nicht der eine TVLicht off Befehl am ende wäre... DER soll nämlich immer ausgeführt werden sobald TVTime auf off geschaltet wird...

Ich denke eine dritte Bedingung nach dem DOELSEIF geht nicht oder doch?

@KernSani

Das funktioniert! Aber wie gesagt, der letzte Befehl (set TVLicht off) MUSS durchgeführt werden wenn TVTime off ist  :-\

Vielen Dank für eure Hilfe!
Titel: Antw:DOIF Licht on NUR wenn es noch vor 22.15uhr ist?
Beitrag von: misux am 26 Februar 2018, 23:59:31
HA! Hab jetzt auf gut Glück gebastelt...

([TVTime:"on"]) (set WZEZ_WZFLed off) (set WZBodenLed off) (set TvLicht on)
DOELSEIF ([TVTime:"off"]) (set TvLicht off) DOELSE ([?22:15] and [TVTime:"off"])(set WZEZ_WZFLed on, set WZBodenLed on)


So scheint es zu funktionieren! Ich habe zwar überhaupt keine Ahnung wieso aber es geht! Bin gespannt ob es morgen gegen 20Uhr dann immernoch geht :-X ::)

NEIN es funktioniert nicht... Das mit der Zeit klappt nicht  :-X es ist auch egal was da für eine Zeit drin steht... es werden die beiden Lampen einfach nicht zurück geschaltet wenn es noch vor 22:15 ist.

Vielen Dank für die Tipps!
Titel: Antw:DOIF Licht on NUR wenn es noch vor 22.15uhr ist?
Beitrag von: kumue am 27 Februar 2018, 00:19:19
Kann ein DOELSE Bedingungen auswerten?
Denke, ein DOELSE fünrt nur Aktionen aus...
Titel: Antw:DOIF Licht on NUR wenn es noch vor 22.15uhr ist?
Beitrag von: Frank_Huber am 27 Februar 2018, 06:44:55
DOELSE (aktion1) (aktion2)... Keine Bedingung!

Mit dem Handy online, daher kurz gefasst...

Titel: Antw:DOIF Licht on NUR wenn es noch vor 22.15uhr ist?
Beitrag von: rabehd am 27 Februar 2018, 07:02:22
Ich würde mal ganz von vorn anfangen, am besten mit Papier und Bleistift.
Mal Aufschreiben, was löst aus und welche Bedingungen gelten dabei zusätzlich. Natürlich welche Schaltaktionen die Bedungung dann auslösen soll.
Im nächsten Schritt würde ich das Stück für Stück umsetzen und die Lösungen dafür mit Wiki... zusammensuchen.

Manchmal hilft ein Neuanfang ;)
Titel: Antw:DOIF Licht on NUR wenn es noch vor 22.15uhr ist?
Beitrag von: misux am 01 März 2018, 12:32:44
 :-X

Ich habe es inzwischen anders gelöst weil es offensichtlich komplizierter ist als gedacht.

Damit funktioniert es wie gewollt:

Habe 2 DOIF erstellt.

Das erste DOIF ([TVTime:"on"]) and [05:00-22:15])(set FensterLicht off) DOELSE (set FensterLicht on)

Das zweite DOIF ([TVTime:"on"]) (set FernseherLicht on) DOELSE (set FernseherLicht off)

Somit wird das FernseherLicht IMMER ON und OFF geschaltet sobald ich TVTime betätige, aber das FensterLicht wird nach 22:15 nicht mehr EINgeschaltet! Und das war der Plan! 

Vielen Dank für eure Mühe!
Titel: Antw:DOIF Licht on NUR wenn es noch vor 22.15uhr ist?
Beitrag von: Damian am 01 März 2018, 14:52:28
Zitat von: misux am 01 März 2018, 12:32:44
:-X

Ich habe es inzwischen anders gelöst weil es offensichtlich komplizierter ist als gedacht.

Damit funktioniert es wie gewollt:

Habe 2 DOIF erstellt.

Das erste DOIF ([TVTime:"on"]) and [05:00-22:15])(set FensterLicht off) DOELSE (set FensterLicht on)

Das zweite DOIF ([TVTime:"on"]) (set FernseherLicht on) DOELSE (set FernseherLicht off)

Somit wird das FernseherLicht IMMER ON und OFF geschaltet sobald ich TVTime betätige, aber das FensterLicht wird nach 22:15 nicht mehr EINgeschaltet! Und das war der Plan! 

Vielen Dank für eure Mühe!

neuerdings kann man beliebig viele DOIFs in ein DOIF packen, hier z. B.


DOIF  {if ([TVTime:"on"]) and [05:00-22:15]) {fhem"set FensterLicht off"} else {fhem"set FensterLicht on"}}
      {if ([TVTime:"on"]) {fhem"set FernseherLicht on"} else {fhem"set FernseherLicht off"}}


siehe: https://forum.fhem.de/index.php/topic,84969.0.html
Titel: Antw:(GELÖST)DOIF Licht on NUR wenn es noch vor 22.15uhr ist?
Beitrag von: misux am 01 März 2018, 19:14:22
hmmm.... leider lässt er das nicht zu... gibt ne fette Fehlermeldung...

code:

{if ([TVTime:"on"]) and ([05:00-22:15]) {fhem"set WZEZ_WZFLed off, set WZBodenLed off"} else {fhem"set WZEZ_WZFLed off, set WZBodenLed on"}}
{if ([TVTime:"on"]) {fhem"set TvLicht on"} else {fhem"set TvLicht off"}}


Fehlermeldung...

ZitatDOIFTvTime DOIF: no left bracket of condition: {if ([TVTime:"on"]) and ([05:00-22:15]) {fhem"set WZEZ_WZFLed off, set WZBodenLed off"} else {fhem"set WZEZ_WZFLed off, set WZBodenLed on"}} {if ([TVTime:"on"]) {fhem"set TvLicht on"} else {fhem"set TvLicht off"}}

Ich finde den Fehler leider nicht... :-X :-\ :-\
Titel: Antw:(GELÖST)DOIF Licht on NUR wenn es noch vor 22.15uhr ist?
Beitrag von: Frank_Huber am 01 März 2018, 19:17:49
Fhem updaten.;-)

Doif perl ist neu.

Mit dem Handy online, daher kurz gefasst...

Titel: Antw:(GELÖST)DOIF Licht on NUR wenn es noch vor 22.15uhr ist?
Beitrag von: misux am 01 März 2018, 19:50:06
 :-\

Trotzdem die gleiche Fehlermeldung...
Titel: Antw:(GELÖST)DOIF Licht on NUR wenn es noch vor 22.15uhr ist?
Beitrag von: Frank_Huber am 01 März 2018, 19:55:17
Shutdown restart gemacht?

Die Fehlermeldung klingt nach klassischem doif. So als ob er den perl nicht erkennt weil er ihn nicht kennt.

Mit dem Handy online, daher kurz gefasst...

Titel: Antw:(GELÖST)DOIF Licht on NUR wenn es noch vor 22.15uhr ist?
Beitrag von: misux am 01 März 2018, 20:01:57
Jap, hab ich...

Muss ich die 98_PM irgendwie instellieren?? Oder ist diese automatisch drin?
Titel: Antw:(GELÖST)DOIF Licht on NUR wenn es noch vor 22.15uhr ist?
Beitrag von: Frank_Huber am 01 März 2018, 20:03:38
Poste mal bitte die ganze raw config.
Musst nix extra installieren.
Mit dem Update solltest du ales auf aktuellem Stand haben.

Mit dem Handy online, daher kurz gefasst...
Titel: Antw:(GELÖST)DOIF Licht on NUR wenn es noch vor 22.15uhr ist?
Beitrag von: misux am 01 März 2018, 20:08:44
 ::) :-[ :-X :-\ ich trau mich gar nicht zu fragen wie das geht...
Titel: Antw:(GELÖST)DOIF Licht on NUR wenn es noch vor 22.15uhr ist?
Beitrag von: Frank_Huber am 01 März 2018, 20:09:42
Zitat von: misux am 01 März 2018, 20:08:44
::) :-[ :-X :-\ ich trau mich gar nicht zu fragen wie das geht...
Hehe. Auf der detail Seite vom doif gibt's unten nen link dafür. [emoji6]

Mit dem Handy online, daher kurz gefasst...

Titel: Antw:(GELÖST)DOIF Licht on NUR wenn es noch vor 22.15uhr ist?
Beitrag von: betateilchen am 01 März 2018, 20:11:25
22:15 Uhr ist 6300 Sekunden vor Mitternacht.

Suche mal hier im Forum nach secondsToMidnight und wenn der Rückgabewert dieser Funktion kleiner ist als 6300, bleibt das Licht aus. Analog dazu könnte man auch mit secondsSinceMidnight() arbeiten.
Titel: Antw:(GELÖST)DOIF Licht on NUR wenn es noch vor 22.15uhr ist?
Beitrag von: misux am 01 März 2018, 20:32:40
Zitat von: Frank_Huber am 01 März 2018, 20:09:42
Hehe. Auf der detail Seite vom doif gibt's unten nen link dafür. [emoji6]

Mit dem Handy online, daher kurz gefasst...

Da ist jetzt allerdings ein anderer Code weil sich deiner ja nicht einspielen lässt...

defmod DOIFTvTime DOIF ([TVTime:"on"]) (set WZEZ_WZFLed off) (set WZBodenLed off) (set TvLicht on) DOELSEIF ([TVTime:"off"]) (set WZEZ_WZFLed on) (set WZBodenLed on) (set TvLicht off)
attr DOIFTvTime devStateIcon cmd_1:general_an@green cmd_2:general_aus@grey
attr DOIFTvTime room 2 DOIF

defmod TVTime dummy
attr TVTime devStateIcon on:general_an@green off:general_aus@grey
attr TVTime room 2 at,Marker
attr TVTime webCmd on:off

defmod TvLicht IT FFFF00000F FF F0
attr TvLicht IODev CULHat2
attr TvLicht model itswitch
attr TvLicht room 1 Wohnzimmer,IT

defmod WZBodenLed IT 11001110001111000011110011 0 0000
attr WZBodenLed IODev CULHat2
attr WZBodenLed room 1 Wohnzimmer,IT

defmod WZEZ_WZFLed ZWave cedf06ff 514
attr WZEZ_WZFLed IODev ZWDongle
attr WZEZ_WZFLed classes ZWAVEPLUS_INFO VERSION SWITCH_BINARY ASSOCIATION ASSOCIATION_GRP_INFO MULTI_CHANNEL_ASSOCIATION METER MARK SWITCH_MULTILEVEL
attr WZEZ_WZFLed room 1 Wohnzimmer

setstate DOIFTvTime initialized
setstate DOIFTvTime 2018-03-01 19:49:29 cmd 0
setstate DOIFTvTime 2018-03-01 19:49:29 mode enabled
setstate DOIFTvTime 2018-03-01 19:49:29 state initialized

setstate TVTime off
setstate TVTime 2018-02-27 00:48:25 state off

setstate TvLicht off
setstate TvLicht 2018-02-19 18:54:08 protocol V1
setstate TvLicht 2018-02-27 00:48:29 state off

setstate WZBodenLed on
setstate WZBodenLed 2018-02-18 19:47:18 group 0
setstate WZBodenLed 2018-02-18 19:47:18 protocol V3
setstate WZBodenLed 2018-03-01 18:05:12 state on
setstate WZBodenLed 2018-02-18 19:47:18 unit 0000

setstate WZEZ_WZFLed on
setstate WZEZ_WZFLed 2018-03-01 20:03:14 energy  1.66 kWh
setstate WZEZ_WZFLed 2018-03-01 20:05:14 power  23.2 W
setstate WZEZ_WZFLed 2018-03-01 18:05:12 reportedState on
setstate WZEZ_WZFLed 2018-03-01 18:05:12 state on
Titel: Antw:(GELÖST)DOIF Licht on NUR wenn es noch vor 22.15uhr ist?
Beitrag von: Frank_Huber am 01 März 2018, 20:37:23
Ist nicht mein Code btw. Das war Damian.

Vielleicht kann ein doif nicht von normal zu perl geändert werden.
Versuch doch mal den mit anderem Namen neu anzulegen.

Mit dem Handy online, daher kurz gefasst...

Titel: Antw:(GELÖST)DOIF Licht on NUR wenn es noch vor 22.15uhr ist?
Beitrag von: misux am 01 März 2018, 20:44:24
keine chance... selbst beim neu angelegtem doif mit dem code kommt die gleiche Fehlermeldung...
Titel: Antw:(GELÖST)DOIF Licht on NUR wenn es noch vor 22.15uhr ist?
Beitrag von: misux am 01 März 2018, 21:25:16
Na super.... Seit dem Update lässt sich mein zweiter Code nicht mehr einspielen in der DEF... >:(

([TVTime:"on"]) and ([05:00-22:15])(set WZBodenLed off) DOELSE (set WZBodenLed on)

Kann man das doIf Update irgendwie rückgängig machen... Weil jetzt geht weder mein vorhin funktionierender Code noch der neu versuchte... ::)
Titel: Antw:(GELÖST)DOIF Licht on NUR wenn es noch vor 22.15uhr ist?
Beitrag von: Frank_Huber am 01 März 2018, 21:28:39


Zitat von: misux am 01 März 2018, 21:25:16
Na super.... Seit dem Update lässt sich mein zweiter Code nicht mehr einspielen in der DEF... >:(

([TVTime:"on"]) and ([05:00-22:15])(set WZBodenLed off) DOELSE (set WZBodenLed on)

Kann man das doIf Update irgendwie rückgängig machen... Weil jetzt geht weder mein vorhin funktionierender Code noch der neu versuchte... ::)

Die Bedienungsklammer sitzt falsch.


([TVTime:"on"] and [05:00-22:15])(set WZBodenLed off) DOELSE (set WZBodenLed on)

Oder

(([TVTime:"on"]) and ([05:00-22:15])) (set WZBodenLed off) DOELSE (set WZBodenLed on)

Mit dem Handy online, daher kurz gefasst...

Titel: Antw:(GELÖST)DOIF Licht on NUR wenn es noch vor 22.15uhr ist?
Beitrag von: misux am 01 März 2018, 21:34:02
 ::) puh ! Gottseidank! ich dachte schon ich bin doof... Danke!

Aber dein Tipp werde ich weiter verfolgen... Klingt interessant und dann brauch ich nicht so viele doifffsss.... muss nur herausfinden warum es bei mir nicht geht...
Titel: Antw:(GELÖST)DOIF Licht on NUR wenn es noch vor 22.15uhr ist?
Beitrag von: Frank_Huber am 01 März 2018, 21:37:37
Gerne.
Ist aber immer noch Damian sein Tipp. ;-)
Vielleicht meldet er sich ja auch noch.
Oder poste den Code der nicht geht im Doif perl thread.

https://forum.fhem.de/index.php?topic=84692.0

Mit dem Handy online, daher kurz gefasst...
Titel: Antw:(GELÖST)DOIF Licht on NUR wenn es noch vor 22.15uhr ist?
Beitrag von: Damian am 01 März 2018, 22:48:50
Zitat von: Frank_Huber am 01 März 2018, 21:37:37
Gerne.
Ist aber immer noch Damian sein Tipp. ;-)
Vielleicht meldet er sich ja auch noch.
Oder poste den Code der nicht geht im Doif perl thread.

https://forum.fhem.de/index.php?topic=84692.0

Mit dem Handy online, daher kurz gefasst...

DOIF-Perl ist ganz frisch aus der Entwicklungsabteilung - erst mal hier downloadbar: https://forum.fhem.de/index.php/topic,84969.0.html

Keine Angst, die Version ist abwärtskompatibel - alle bisherigen Definitionen funktionieren weiterhin.

Zu bedenken ist, dass man den Zustand (Status) des Moduls selber setzen muss, es gibt dann nicht mehr einen, sondern mehrere, wenn man mehrere DOIF-Definitionen in eine packt.
Titel: Antw:(GELÖST)DOIF Licht on NUR wenn es noch vor 22.15uhr ist?
Beitrag von: Frank_Huber am 01 März 2018, 22:52:46
Damn, dachte das ist schon eingecheckt.
Dann ist mir jetzt schlagartig klar warum der Code nicht angenommen wurde. [emoji23][emoji23][emoji23]
Danke Damian!

Mit dem Handy online, daher kurz gefasst...

Titel: Antw:(GELÖST)DOIF Licht on NUR wenn es noch vor 22.15uhr ist?
Beitrag von: Damian am 01 März 2018, 22:59:36
Zitat von: Frank_Huber am 01 März 2018, 22:52:46
Damn, dachte das ist schon eingecheckt.
Dann ist mir jetzt schlagartig klar warum der Code nicht angenommen wurde. [emoji23][emoji23][emoji23]
Danke Damian!

Mit dem Handy online, daher kurz gefasst...

Na ja, meine ursprüngliche Idee hier https://forum.fhem.de/index.php/topic,84692.msg770073.html#msg770073 ist erst gerade 9 Tage alt. Immerhin konnte ich sie in wenigen Stunden umsetzen, dennoch sollten wir der neuen Entwicklung etwas Zeit lassen, bis sie eingecheckt wird. Ich bin mir aber jetzt schon sicher, dass sich die Perl-Variante für komplexere Projekte durchsetzen wird.
Titel: Antw:(GELÖST)DOIF Licht on NUR wenn es noch vor 22.15uhr ist?
Beitrag von: Frank_Huber am 01 März 2018, 23:16:56
Damian, kein Vorwurf meinerseits!
Durch deinen Post im anderen thread sinngemäß : "habs ins normale doif eingebaut" und die Erwähnung hier, da dachte ich es wäre schon drin. ;-)
Jetzt ist aber gut für heute. Wünsch Dir noch nen schönen Abend und vielen Dank für deine Arbeit für FHEM!

Mit dem Handy online, daher kurz gefasst...