FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: budda85 am 15 November 2013, 12:39:11

Titel: Aktor nach Zeit schalten, Zeitschaltuhr
Beitrag von: budda85 am 15 November 2013, 12:39:11
Hallo zusammen,

ich probiere im Moment eine Steckdose zu bestimmten Zeiten zu schalten.
Morgens um 5 Uhr an und dann zum Sonnenaufgang wieder aus.
Abends zum Sonnenuntergang an und um 23 Uhr wieder aus.

Das schalten am Morgen ist keine Probleme aber am Abend klappt es nicht.
Hier mein Code:
#########################
#          Zeitschaltuhr
#########################

define at_Lampe_morgens at *05:00 {fhem "set KU_Lampe on-till ".sunrise()}
define at_Lampe_abends at *{sunset("REAL",0,"16:00","22:00")} set KU_Lampe on-till 23:00


Im Logfile steht dann:
2013.11.14 16:38:48 3: at_Lampe_abends: please enter time informat hh:mm:ss

Also habe ich nochmal die Beispiele hier im Forum angesehen und die commandref studiert
Da steht aber das gleiche drin und das ich die Zeit in hh:mm:[ss] angeben soll. Sekunden sind ja optional so wie ich das verstehe.
Aber selbst mit Sekunden hat es nicht funktioniert.
Zitat# More elegant version, works for sunset > 23:00 too
    define a11 at +*{sunset_rel()} set lamp on-till 23:00

Also dachte ich, liegt es an dem sunset Teil. Dafür hab ich dann mal ein paar Dummys angelegt.
Zwei zeigen mir den Sonnenauf- und untergang und bei dem anderen will ich die Dummy-Lampe einfach nach Uhr-Zeit schalten.

#########################
#         Sonnenauf-/untergang
#########################

define Sonnenaufgang dummy
define Sonnenuntergang dummy
define Sun_RiseSet_Timer at *02:20:15 { my $s = sunrise();; fhem("set Sonnenaufgang $s");; $s = sunset();; fhem("set Sonnenuntergang $s");; }



#########################
#         TEST
#########################

define Lampen_Dummy dummy

#define Lampen_Dummy_an at *20:17:00 set Lampen_Dummy on-till 20:20:00

define Lampen_Dummy_an at *20:38:00 set Lampen_Dummy on
define Lampen_Dummy_aus at *20:42:00 set Lampen_Dummy off


Bei dem auskommentierten Teil geht die Lampe an, aber nicht mehr aus.
Der untere Teil klappt, aber laut commandref sollten beide das gleiche machen.

Was mir das dann noch aufgefallen ist, ist (siehe Bild)
Das at_Lampe_abend um 16:37Uhr schalten will,
aber mein Sonnenuntergang-Dummy eine Zeit von 17:18 drin stehen hat.

Was mache ich flasch?
Bin für jeden Hinweis dankbar.
Die PDF-Anleitung habe ich auch schon durchforstet.

Gruß
Jan
Titel: Antw:Aktor nach Zeit schalten, Zeitschaltuhr
Beitrag von: budda85 am 17 November 2013, 13:42:48
Ich habe den Fehler gefunden denk ich.
Ich denke das "REAL" darf nicht geschrieben werden.
Bis jetzt läuft es und im Log gibt es auch keine Fehler!

Hier meine Zeile:
define at_Lampe_abends at *{sunset(-900,"16:00","21:30")} set KU_Lampe on-till 23:30:00
Titel: Antw:Aktor nach Zeit schalten, Zeitschaltuhr
Beitrag von: Zrrronggg! am 22 November 2013, 00:18:29
ZitatIch denke das "REAL" darf nicht geschrieben werden.

Komisch, laut Commandref doch und deine Zeile

define at_Lampe_abends at *{sunset("REAL",0,"16:00","22:00")} set KU_Lampe on-till 23:00

sah auch korrekt aus. Ich selber verwende aber auch lieber einen offset wie -900.
Titel: Antw:Aktor nach Zeit schalten, Zeitschaltuhr
Beitrag von: ph1959de am 22 November 2013, 09:00:31
Hallo Jan,

ich würde sagen, dass die Fehlermeldung zum Zeitformat sich mit ziemlicher Sicherheit auf das "on-till ..." bezieht. Zumindest das Beispiel in der commandref ist auch inklusive Sekunden (leider ist <time> für HomeMatic nicht genauer spezifiziert; bei FS20 heißt es ausdrücklich HH:MM:SS, HH:MM or { <perl code> }).

Die Form eines "sunset" mit "REAL" funktioniert bei mir definitiv.

Gruß, Peter
Titel: Antw:Aktor nach Zeit schalten, Zeitschaltuhr
Beitrag von: budda85 am 22 November 2013, 12:51:26
Hallo zusammen,

danke für die Antworten.
Ich werde das mit "REAL" & Co nochmals heute Abend, mit meinen Dummys testen.

Kleine Frage am Rande:
Warum ist es zwischendurch so, dass die Zeit plus 24 Stunden angezeigt wird?
zum Beispiel Sonnenaufgang ist um 7:51 aber angezeigt wird es mit 31:51
Ich hatte das hier irgendwo mal gelesen aber finde es nicht mehr wieder.
Titel: Antw:Aktor nach Zeit schalten, Zeitschaltuhr
Beitrag von: Crush85 am 13 Oktober 2017, 10:03:38
Hallo zusammen,

ich möchte gerne demnächst meine Weihnachtsbeleuchtung nach dem Sonnenauf und Untergang schalten, kann das so funktionieren?

Morgens soll es um 5:50 angehen und zum Sonnenaufgang untergehen, wie kann ich zum Aufgang noch 10 Minuten hinzufügen?
define XmasMorgens at +05:40:00 set Mumbi1 on-till *{sunrise_rel()}

Abends soll sie um zum Sonnenuntergang angehen und um 22:15 ausgehen, wie kann ich zum Untergang noch 10 Minuten früher starten?
define XmasAbends at +*{sunset_rel()} set Mumbi1 on-till 22:15:00

Kann ich mehrere Geräte in einer Abfrage starten, oder brauche ich jeweils einen eigenen Befehl? (ELRO ähnliche Steckdosen)
Titel: Antw:Aktor nach Zeit schalten, Zeitschaltuhr
Beitrag von: Beta-User am 13 Oktober 2017, 10:11:27
Hallo Crush85,

schon mal in die wichtigste Anlaufstelle zu solchen Fragen gesehen? Die heißt commandref, da findet sich unter https://fhem.de/commandref.html#SUNRISE_EL (die sun...rel() bereitstellt):
Zitat
All functions take up to three arguments:

       
  • The first specifies an offset (in seconds), which will be added to the event.
Zur Ausführung mehrere Kommandos in einem at oder notify findet sich was im Einsteiger-pdf (will heißen: geht).

Gruß, Beta-User
Titel: Antw:Aktor nach Zeit schalten, Zeitschaltuhr
Beitrag von: Otto123 am 13 Oktober 2017, 11:31:01
Hi,

nach meinem Verständnis sind da Fehler:define XmasMorgens at +05:40:00 set Mumbi1 on-till *{sunrise_rel()}
Ich würde es so denken:
define XmasMorgens at *05:50:00 set Mumbi1 on-till {sunrise(600)}
Sollte jeden Morgen 5:50 einschalten und 10 min nach Sonnaufgang ausschalten.
So hatte ich die Aufgabe verstanden und habe das jetzt anhand der commandref korrigiert. Ich will damit sagen: nicht getestet!

Auch die zweite ist aus meiner Sicht fast grundlegend falsch etwas eigentümlich define XmasAbends at +*{sunset_rel()} set Mumbi1 on-till 22:15:00Das würde den Zeitpunkt der Definition + die Zeit bis zum nächsten Sonnuntergang addieren als Startzeit definieren.
Oder liege ich falsch?
Aber sollte anhand meines Beispieles und der Doku leicht korrigierbar sein  ;D
Gruß Otto
Titel: Antw:Aktor nach Zeit schalten, Zeitschaltuhr
Beitrag von: rabehd am 13 Oktober 2017, 12:43:19
Mal eine Anmerkung zum UseCase.
Die Idee für eine Dauer zu schalten hat schon was. Ich schalte da lieber on und off, wenn ein Zustand (Zeitpunkt) eintritt. Aber den Grundgedanken werde ich mal mitnehmen.
Für mich am besten ist es das mit DOIF zu lösen, so habe ich pro Aktor-Fall nur ein Device, was ich für übersichtlicher halte.
Beim Fensterlicht haben bei mir z.B. noch Wochentag und "party" einen Einfluss.
Titel: Antw:Aktor nach Zeit schalten, Zeitschaltuhr
Beitrag von: Beta-User am 13 Oktober 2017, 13:01:58
Wenn wir bei Alternativen zu at für komplexere Zeitschaltuhren sind: In der Regel tut es auch ein simpler weekdaytimer, dem man ggf. im Ausführungsteil noch eine perl-Abfrage mitgeben kann (if/unless uä.).

Ist mit den ganzen Optionen leichter zu durchschauen.

Just my2ct ;) .

Beta-User
Titel: Antw:Aktor nach Zeit schalten, Zeitschaltuhr
Beitrag von: Crush85 am 13 Oktober 2017, 14:01:41
Mit 5:40 und 5:50 hab ich mich vertan das mit dem + und * habe ich auch schon rausgefunden was was bedeutet.
Ohne + sollte das Abends funktionieren oder?
Hab das mal so gebaut, für mehrere Geräte, das on-till funktioniert doch wie ein einfach off oder? Habe ja die einfachen ELRO ähnlichen Dosen. Hatte gesehen bei FS20 ist das noch anders möglich..
Das mit dem on-till hab ich in dem Anfänger Guide gefunden oder auch in der command ref
define XmasAbends at *{sunset_rel(-600)} Mumbi[1-10] on-till 22:15:00

Titel: Antw:Aktor nach Zeit schalten, Zeitschaltuhr
Beitrag von: Otto123 am 13 Oktober 2017, 22:00:53
ich habe mich oben etwas korrigiert.
+*{sunset_rel()} ist aus meiner Sicht "etwas von hinten durch die Brust ...."
+*{sunset_rel()} dürfte das Gleiche wie {sunset_abs()} bzw. {sunset()} am Tage sein.
Aber egal, ja das wird gehen.

Du kannst all diese Ausdrücke in den {} direkt in der FHEM Kommandozeile reinwerfen und siehst welche Zeitlichen Werte dabei zurückkommen. Immer wenn der nächste sun.* erst morgen ist, liefert Dir die Funktion (außer _abs) die Zeit plus 24h
(ich hoffe ich bin jetzt nicht selbst völlig durcheinander) :'(

Gruß Otto
Titel: Antw:Aktor nach Zeit schalten, Zeitschaltuhr
Beitrag von: Crush85 am 16 Oktober 2017, 20:36:20
Zitat von: rabehd am 13 Oktober 2017, 12:43:19
Beim Fensterlicht haben bei mir z.B. noch Wochentag und "party" einen Einfluss.

Wie hast du den "Party Modus" eingerichtet/definiert
Titel: Antw:Aktor nach Zeit schalten, Zeitschaltuhr
Beitrag von: rabehd am 16 Oktober 2017, 21:49:12
Der Party-Modus ist bei mir ein Dummy.
Heute würde ich es sicher etwas schöner machen, aber vor 1,5 Jahren konnte ich es nicht besser  8).

Party kennt 2 Zustände: "keine" und "läuft". der Zustand "läuft" wird über einen Button geschaltet.
Diese Zustände frage ich beim DOIF fürs Fensterlicht (ebenso bei der Heizung) mit ab.

Um 04:20 wird die Party per at "beendet". Das at wird per Zustandsänderung de/aktiviert.
Titel: Antw:Aktor nach Zeit schalten, Zeitschaltuhr
Beitrag von: Crush85 am 16 Oktober 2017, 21:52:35
Ah ok klingt ganz gut, mit der Party.
Ich will das mit dem Tagesplan jetzt mal testen

define XmasMorgens at *05:40:00 {\
if ($wday == 1) {\
  fhem ("Mumbi[1-10] on");;\
  fhem ("define XmasMorgensaus at {sunrise_rel() set Mumbi[1-10] off ")\
}\
}

Meint ihr ich kann bei wday == 1-5 oder so eintragen? Hab dazu nix gefunden
https://wiki.fhem.de/wiki/AT_an_einem_bestimmten_Wochentag_ausf%C3%BChren
Titel: Antw:Aktor nach Zeit schalten, Zeitschaltuhr
Beitrag von: Otto123 am 16 Oktober 2017, 22:12:44
Nochmal der gut gemeinte Hinweis: Ich mache solche Dinge wie rabehd lieber mit DOIF  :D

Gruß Otto
Titel: Antw:Aktor nach Zeit schalten, Zeitschaltuhr
Beitrag von: rabehd am 17 Oktober 2017, 08:59:03
Klar geht es mit at, ich (meine persönliche Meinung) mache es lieber mit DOIF.
Warum?
Im DOIF kann ich alles für einen Sachverhalt eines Device zusammenfassen.
Mir scheint es somit übersichtlich. Das Fensterlicht ist da ein gutes Beispiel. Alles was dieses Licht ein- und ausschalten soll ist zusammengefasst.
Sonnenaufgang, Sonnenuntergang, Uhrzeiten, Anwesenheiten, Wochentage, Party....