(GELÖST)DOIF Licht on NUR wenn es noch vor 22.15uhr ist?

Begonnen von misux, 25 Februar 2018, 22:59:42

Vorheriges Thema - Nächstes Thema

misux

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!

rabehd

Auch funktionierende Lösungen kann man hinterfragen.

misux

 :-\

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

KernSani

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
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Frank_Huber

(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...


misux

 :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!

misux

#6
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!

kumue

Kann ein DOELSE Bedingungen auswerten?
Denke, ein DOELSE fünrt nur Aktionen aus...

Frank_Huber

DOELSE (aktion1) (aktion2)... Keine Bedingung!

Mit dem Handy online, daher kurz gefasst...


rabehd

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 ;)
Auch funktionierende Lösungen kann man hinterfragen.

misux

 :-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!

Damian

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
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

misux

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 :-\ :-\

Frank_Huber

Fhem updaten.;-)

Doif perl ist neu.

Mit dem Handy online, daher kurz gefasst...


misux