[gelöst] Jalosien bei späterem Schulstart spontan schalten?

Begonnen von Thoffi1978, 04 Dezember 2015, 07:22:12

Vorheriges Thema - Nächstes Thema

Muschelpuster

#15
Ellert hat es etwas eleganter gelöst wie ich. Du setzt den Dummy zweite_stunde = 1, wenn die Verzögerung gewünscht ist, ansonsten ist zweite_stunde= 0.
Und 0*60=0 sowie 1*60=60. Das zu der Zeit dazu und...

mathematische Grüße
Niels
fhem @ ZBOX mit 1,6MHz Celeron, 4GB RAM & 120GB SSD mit Debian Bullseye # MiLight # Homematic via CCU3 # W&T WebIO # Rademacher DuoFern # ESPeasy # logdb@mysql # configdb@mysql # Shelly @ MQTT2 # go-eCharger mit PV-Überschussladung via DOIF

CoolTux

Ich habe da einen anderen Ansatz gewählt. Ich weiß nicht wie alt Dein Kind ist. Meine ist 13, Kids in dem alter haben Handy und/oder Tablet. Da ich Technikrat bin hat meine beides. Sie hat ihre eigene TabletUI womit sie in ihrem Zimmer alles steuern kann. Dazu gehört auch ein Wecker. Und da kommt die Jalosie ins Spiel. Ich verwende Residents, Roomate mit dem entsprechenden Wakup Skripten. Hier lasse ich 2 Minuten nach der Weckzeit die Jalosie hoch fahren. Meine Tochter muß sich nur den Wecker stellen den sie ja eh brauch und gut ist.
Nur so als alternative.



Grüße
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

Ellert

Zitat von: Thoffi1978 am 16 Dezember 2015, 20:50:49
Vielen Dank

der Fehler blieb noch weiterhin, die Klammern im vorderen Teil mußten noch angepasst werden. Jetzt ging es ohne Probleme.

Was bedeutet
[zweite_Stunde]*60
zweite Stunde ist klar. was bedeutet  *60 ?

Hoffi

Du kannst "zweite_stunde" auf einen Wert in Minuten setzen. Die Zeitangabe im DOIF benötigt Sekunden.

Minuten x 60 = Sekunden

In Deinem Fall setzt Du den Dummy auf 45, wenn Du um 1 Schulstunde verzögern möchtest, deshalb
Zitatsponti dummy
setList state:0,45
webCmd state

Du solltest in dem Zweig, wo Du die Zeitverschiebung einbaust auch "zweite_stunde" wieder auf 0 setzen, sonst müsstest Du es jedesmal per Hand zurücksetzen, wie hier schon beschrieben
Zitat(set dein Kram, set sponti 0)

Thoffi1978

Hallo
@CoolTux. Das mit dem Wecker ist auch eine gute Idee, dazu muss ich mich aber neu einlesen. Wird dann ein schlechtWetterProjekt.

@Ellert. Vielen Dank für die Beschreibung der Funktion. Mir war nur das *60 nicht ganz klar. Nun ist aber alles nachvollziehbar.

Kann ich *00:01:00 anstatt *60 nutzen bei folgendem Code:
([06:50|1235] and [SH_Ferientag] eq "0" and [?Jalousie_Automatik] eq "Auto") (set Jalo_WZ_Seite 50)
DOELSEIF
([07:35|4] and [SH_Ferientag] eq "0" and [?Jalousie_Automatik] eq "Auto") (set Jalo_WZ_Seite 50)

Da wird *60 nicht mit wrong timespect nicht erkannt.

Hoffi

Ellert

ZitatKann ich *00:01:00 anstatt *60 nutzen bei folgendem Code:
Code: [Auswählen]

([06:50|1235] and [SH_Ferientag] eq "0" and [?Jalousie_Automatik] eq "Auto") (set Jalo_WZ_Seite 50)
DOELSEIF
([07:35|4] and [SH_Ferientag] eq "0" and [?Jalousie_Automatik] eq "Auto") (set Jalo_WZ_Seite 50)

Da wird *60 nicht mit wrong timespect nicht erkannt.
Ich wüsste nicht, wo Du das in dem DOIF eintragen möchtest.

Zitatwrong timespect
Da gibt es wohl noch ein Klammerproblem. Aber die Klammern kosten ja nichts.

Versuch mal
[([{sunrise("CIVIL",0,"07:00","07:40")}] + [zweite_Stunde]*60)|1235]

Ellert

Also, ich habe mal in die Commandref gesehen, da gibt es ein Beispiel unter http://fhem.de/commandref_DE.html#DOIF_Zeitsteuerung_mit_Zeitberechnung

define di_light DOIF ([({sunset()}+900+int(rand(600)))])
    (set lamp on)
DOELSEIF ([([23:00]+int(rand(600)))])
    (set lamp off)


dieser Teil
Zitat([({sunset()}+900+int(rand(600)))])
zeigt die richtige Syntax

danach sollte das hier richtig sein
[({sunrise("CIVIL",0,"07:00","07:40")} + [zweite_Stunde] * 60)|1235]

Mit den Klammern habe ich öfter Probleme, wenn probieren nicht hilft, dann schaue ich auch schon mal in die Commandref, das hat bisher geholfen ;)

Thoffi1978

Hallo,
in diesem Code habe ich kein Sunset
([06:50|1235] and [SH_Ferientag] eq "0" and [?Jalousie_Automatik] eq "Auto") (set Jalo_WZ_Seite 50)
DOELSEIF
([07:35|4] and [SH_Ferientag] eq "0" and [?Jalousie_Automatik] eq "Auto") (set Jalo_WZ_Seite 50)

hier muss das Zeitformat
*60
wohl anders eingetragen werden.?

Hoffi

Ellert

sunset wird in dem Beispielcode verwendet. Du verwendest sunrise. Ich beziehe mich immer noch auf diese Frage:
Zitat von: Thoffi1978 am 16 Dezember 2015, 19:31:12
Hallo,
Beim Einfügen von
[[({sunrise("CIVIL",0,"07:00","07:40")} + [zweite_Stunde]*60)]|1235]

gibt es folgende Fehlermeldung:
di_vorne DOIF: no right bracket: ([SH_Ferientag] eq "0" and [Jalousie_Automatik] eq "Auto" and [Helligkeit:state] < 200 and [[({sunrise("CIVIL",0,"07:00","07:40")} + [zweite_Stunde]*60)]|1235] (set Jalo_WZ_TV_vorne 50)DOELSEIF([SH_Ferientag] eq "0" and [Jalousie_Automatik] eq "Auto" and [Helligkeit:state] > 200 and [{sunrise("CIVIL",0,"07:00","07:40")}|1235]) (set Jalo_WZ_TV_vorne on)DOELSEIF([SH_Ferientag] eq "0" and [Jalousie_Automatik] eq "Auto" and [Helligkeit:state] < 200 and [{sunrise("CIVIL",0,"07:40","08:15")}|4]) (set Jalo_WZ_TV_vorne 50)DOELSEIF([SH_Ferientag] eq "0" and [Jalousie_Automatik] eq "Auto" and [Helligkeit:state] > 200 and [{sunrise("CIVIL",0,"07:40","08:15")}|4]) (set Jalo_WZ_TV_vorne on)DOELSEIF([15:00-22:00] and [Helligkeit:state] < 0.5) (set Jalo_WZ_TV_vorne off)DOELSE()

Könnt Ihr mir beim Syntax helfen.

Danke
Hoffi

und das, was dort einzufügen ist.

Der letzte Versuch etwas Fehlerfreies ist dieser Vorschlag:
[({sunrise("CIVIL",0,"07:00","07:40")} + [zweite_Stunde] * 60)|1235]

Hast Du das gemacht und funktioniert alles?

Das hier
ZitatKann ich *00:01:00 anstatt *60 nutzen bei folgendem Code:
Code: [Auswählen]

([06:50|1235] and [SH_Ferientag] eq "0" and [?Jalousie_Automatik] eq "Auto") (set Jalo_WZ_Seite 50)
DOELSEIF
([07:35|4] and [SH_Ferientag] eq "0" and [?Jalousie_Automatik] eq "Auto") (set Jalo_WZ_Seite 50)

Da wird *60 nicht mit wrong timespect nicht erkannt.
habe ich nicht verstanden, das hat mich so sehr irritiert, dass ich dachte es gibt noch einen Fehler in dem DOIF, das wir vorher zusammen entwickelt haben.

Gibt es dort noch Fehler? Wenn ja, dann sollten wir diese beseitigen und erst etwas Neues anfangen, wenn der Fehler beseitigt ist.




Thoffi1978

Hallo Ellert,
ich habe heute nun die Funktion getestet. Der Sonnenaufgang war um 7:43Uhr. Die Jalousie blieb unten, scheint also zu funktionieren.
Leider ging die Jalousie nicht hoch... Kann ja auch nicht, da die Jalousie ja nur zwischen 7 und 7:45Uhr hochgehen soll.
Somit konnte ich leider nicht alles testen.

Vielleicht können wir den DOIF der zweiten Jalousie soweit "umbauen" das es mit der Funktioniert.
Das wäre dann dieser Code:
([06:50|1235] and [SH_Ferientag] eq "0" and [?Jalousie_Automatik] eq "Auto") (set Jalo_WZ_Seite 50)
DOELSEIF
([07:35|4] and [SH_Ferientag] eq "0" and [?Jalousie_Automatik] eq "Auto") (set Jalo_WZ_Seite 50)

Das ist die Zeit fest definiert und man sollte schnell den Erfolg sehen ohne auf die Sonne zu warten :)

Hoffi

Ellert

ZitatVielleicht können wir den DOIF der zweiten Jalousie soweit "umbauen" das es mit der Funktioniert.

Ich nehme wieder das Beispiel aus der Commandref
define di_light DOIF ([({sunset()}+900+int(rand(600)))])
    (set lamp on)
DOELSEIF ([([23:00]+int(rand(600)))])
    (set lamp off)

da ist das ([([23:00]+int(rand(600)))]) so ähnlich, wie Dein Problem. Es gibt eine feste Zeit [23:00] und es wird etwas dazu gezählt, dies hier +int(rand(600))

Nach dem Beispiel könntest Du Deins umbauen, etwa so:
Zitat([([06:50] + [zweite_Stunde] * 60)|1235] and [SH_Ferientag] eq "0" and [?Jalousie_Automatik] eq "Auto") (set Jalo_WZ_Seite 50)

Thoffi1978

Hallo,
jett, nach den Ferien habe ich wieder Zeit für meine Steuerung.
Bei dem Code:
[([{sunrise("CIVIL",0,"07:00","07:40")}+[zweite_Stunde]*60])|1235]
bekomme ich folgende Fehlermeldung:
PERL WARNING: Argument "*main::60" isn't numeric in addition (+) at (eval 16369) line 1.
und die Jalousie öffnete sich um
Zitat00:00:00 3: CUL_HM set Jalo_WZ_TV_vorne 50

Bei dem 2 Code
[07:35] + [zweite_Stunde] *60)|4]
reagiert die Jalousie gar nicht auf die zweite Stunde

Habr Ihr ein Tipp für mich?

Vielen Dank schon mal
Hoffi

Ellert

Zitat[([{sunrise("CIVIL",0,"07:00","07:40")}+[zweite_Stunde]*60])|1235]
Bitte beachten: http://fhem.de/commandref_DE.html#DOIF_Zeitsteuerung_mit_Zeitberechnung
Zitat[07:35] + [zweite_Stunde] *60)|4]
Wie ist das durch die Klammerprüfung des DEF-Editors gerutscht ??? s. http://forum.fhem.de/index.php/topic,45373.msg371668.html#msg371668

Thoffi1978

Beim zweiten Code ist mir wohl was beim Kopieren runtergefallen.
der ganze Code lautet wie folgt:


([([06:50] + [zweite_Stunde]*60)|1235] and [SH_Ferientag] eq "0" and [?Jalousie_Automatik] eq "Auto") (set Jalo_WZ_Seite 50, set zweite_Stunde 0)
DOELSEIF
([([07:35] + [zweite_Stunde]*60)|4] and [SH_Ferientag] eq "0" and [?Jalousie_Automatik] eq "Auto") (set Jalo_WZ_Seite 50, set zweite_Stunde 0)

Ellert

Zitat von: Thoffi1978 am 17 Januar 2016, 19:50:15
Beim zweiten Code ist mir wohl was beim Kopieren runtergefallen.
der ganze Code lautet wie folgt:


([([06:50] + [zweite_Stunde]*60)|1235] and [SH_Ferientag] eq "0" and [?Jalousie_Automatik] eq "Auto") (set Jalo_WZ_Seite 50, set zweite_Stunde 0)
DOELSEIF
([([07:35] + [zweite_Stunde]*60)|4] and [SH_Ferientag] eq "0" and [?Jalousie_Automatik] eq "Auto") (set Jalo_WZ_Seite 50, set zweite_Stunde 0)

Sieht aus, als müsste es funktionieren. Wie sehen die Timer aus? Poste mal ein Listing des DOIF.

Thoffi1978

Hallo Ellert,
anbei die List:
Internals:
   DEF        ([([06:50] + [zweite_Stunde]*60)|1235] and [SH_Ferientag] eq "0" and [?Jalousie_Automatik] eq "Auto") (set Jalo_WZ_Seite 50, set zweite_Stunde 0)
DOELSEIF
([([07:35] + [zweite_Stunde]*60)|4] and [SH_Ferientag] eq "0" and [?Jalousie_Automatik] eq "Auto") (set Jalo_WZ_Seite 50, set zweite_Stunde 0)
   NAME       WZ_Seite_hoch1
   NR         195
   NTFY_ORDER 50-WZ_Seite_hoch1
   STATE      initialize
   TYPE       DOIF
   Readings:
     2016-01-18 03:45:00   Device          SH_Ferientag
     2016-01-18 06:50:00   cmd_event       timer_1
     2016-01-18 06:50:00   cmd_nr          1
     2016-01-18 03:45:00   e_SH_Ferientag_STATE 0
     2016-01-18 06:50:00   state           initialize
     2016-01-18 07:39:48   timer_1_c1      19.01.2016 06:50:00|1235
     2016-01-18 07:39:48   timer_2_c2      19.01.2016 07:35:00|4
   Condition:
     0          DOIF_time_once($hash,$hash->{timer}{0},$wday,"1235") and InternalDoIf('SH_Ferientag','STATE','') eq "0" and InternalDoIf('Jalousie_Automatik','STATE','') eq "Auto"
     1          DOIF_time_once($hash,$hash->{timer}{1},$wday,"4") and InternalDoIf('SH_Ferientag','STATE','') eq "0" and InternalDoIf('Jalousie_Automatik','STATE','') eq "Auto"
   Days:
     0          1235
     1          4
   Devices:
     0           SH_Ferientag
     1           SH_Ferientag
     all         SH_Ferientag
   Do:
     0:
       0          set Jalo_WZ_Seite 50, set zweite_Stunde 0
     1:
       0          set Jalo_WZ_Seite 50, set zweite_Stunde 0
     2:
   Helper:
     globalinit 1
     last_timer 2
     sleeptimer -1
   Internals:
     0           SH_Ferientag:STATE
     1           SH_Ferientag:STATE
     all         SH_Ferientag:STATE
   Itimer:
     all         zweite_Stunde
   Readings:
   Realtime:
     0          06:50:00
     1          07:35:00
   State:
   Time:
     0          ([06:50]+[zweite_Stunde]*60)
     1          ([07:35]+[zweite_Stunde]*60)
   Timecond:
     0          0
     1          1
   Timer:
     0          0
     1          0
   Timerfunc:
   Timers:
     0           0
     1           1
   Trigger:
Attributes:
   do         always
   eventMap   off:Runter on:Hoch
   group      Jalousien_seite
   room       Jalousien,Wohnzimmer
   set        Rollo_Gruppe
   state      initialize
   userattr   room_map set set_map structexclude
   verbose    5


Hoffi