Licht um 06:30 Uhr einschalten außer die Sonne ging schon auf

Begonnen von Sedonion, 17 Januar 2017, 12:43:19

Vorheriges Thema - Nächstes Thema

Sedonion

Hallo Zusammen,
aktuell werkel ich mich langsam in fhem ein.
Ich möchte das Licht jeden Werktag um 06:30 Uhr einschalten. Das bekomme ich mit at hin.
Nun wird im Sommer aber die Sonne schon um 06:30 Uhr aufgegangen sein, sodaß kein Licht nötig ist.

Wie sage ich nun: Schalte um 06:30 Uhr Licht an, außer 06:30 Uhr < als sunset?
Sprich kann ich die sunset Uhrzeit mit der von mir definierten Uhrzeit vergleichen?
fhem auf HP Microserver Gen8 mit Openmedivault
- 4 Milight RGB Bulbs an Milight Wifi Controller
- MAX Cube mit 2 Heizkörperthermostaten und 2 Fenstersensoren
- VU+ Solo4k Enigma2
- Fritzbox mit Callmonitor

Wuppi68

ich hatte auch das Problem ...

dann kam der entscheidende Tipp von meinem Schatz ...

Prüfe doch einfach ab, ob die Rollläden - die gehen mit Sonnenaufgang - schon oben sind ...
FHEM unter Proxmox als VM

Brice

Es reicht

define <Name> at *06:30 set <Device> on-till {sunrise_abs}

Wenn der Zeitpunkt für den Sonnenaufgang bereits durch ist, wird nicht eingeschaltet.
FHEM auf RPi 4 4GB (Buster) | produktiv) CUL 868 für FS20 | S300TH | KS300 | Max!Cube als CUN 868 für TechemWZ | HM-MOD-RPI-PCB für HM | Z-Wave ZME_UZB1 | FRITZ!DECT 200 | HUE | Lightify | Echo Dot | WS3080

Sedonion

Zitat von: Wuppi68 am 17 Januar 2017, 12:47:18
Prüfe doch einfach ab, ob die Rollläden - die gehen mit Sonnenaufgang - schon oben sind ...

Danke, aber so weit bin ich noch nicht, bzw. Rolläden kommen erst im neuen Haus dazu (März 2018). Bis dahin nur kleine Spielereien in einer ETW mit Licht, Heizung und Unterhaltungselektronik.

Zitat von: Brice am 17 Januar 2017, 12:56:38
Es reicht

define <Name> at *06:30 set <Device> on-till {sunrise_abs}

Wenn der Zeitpunkt für den Sonnenaufgang bereits durch ist, wird nicht eingeschaltet.

Danke, das klingt gut. Werde es spätestens Donnerstag testen können.
fhem auf HP Microserver Gen8 mit Openmedivault
- 4 Milight RGB Bulbs an Milight Wifi Controller
- MAX Cube mit 2 Heizkörperthermostaten und 2 Fenstersensoren
- VU+ Solo4k Enigma2
- Fritzbox mit Callmonitor

betateilchen

Zitat von: Brice am 17 Januar 2017, 12:56:38
Es reicht

define <Name> at *06:30 set <Device> on-till {sunrise_abs}

Hast Du das mal getestet?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Brice

#5
Ja, das funktioniert bei mir seit über einem Jahr mit FS20-Aktoren und DECT!200. Die HUEs zicken manchmal mit dem Ausschalten, kann aber ein Empfangsproblem sein.

War mal ein Tipp von Rudolf, den Thread finde ich gerade nicht. Ich liebe die Funktion: einmal definiert und nie wieder anfassen (außer für die Adventszeit), läuft bei mir per Bewegungsmelder.

edit 1: gefunden https://forum.fhem.de/index.php/topic,32964.msg253438.html#msg253438
FHEM auf RPi 4 4GB (Buster) | produktiv) CUL 868 für FS20 | S300TH | KS300 | Max!Cube als CUN 868 für TechemWZ | HM-MOD-RPI-PCB für HM | Z-Wave ZME_UZB1 | FRITZ!DECT 200 | HUE | Lightify | Echo Dot | WS3080

Sedonion

Ich muss hier noch einmal nach haken.
Ja, es funktioniert mit *06:30:00 IF (!$we) (set WZ_Licht on-till {sunrise_abs("REAL")})

Problem: ich kann keine weiteren sets einbauen, da dort der on-till keine Gültigkeit hat, also kein "set WZ_licht brightness 100" mit einbauen.
Da bin ich wieder beim ursprünglichen Problem, wie bekomme ich raus ob eine feste Uhrzeit vor oder nach dem Sonnenaufgang liegt?
Ich hatte sowas mal versucht:
IF ( "08:00:00" lt "{sunrise_abs()}" ) ({ Log 1, "uhrzeit kleiner" })
Da bekomme ich aber egal welche Uhrzeit ich eingebe immer ein Logeintrag. Wenn ich das richtig verstehe sind das ja auch strings und keine Ziffern/Uhrzeiten, und wie ich die richtig vergleiche weiss ich nicht.
Ich hatte schon die Idee die Uhrzeiten in Sekunden umzurechnen und dann zu vergleichen.
Wäre das ein Ansatz? Oder gibt es eine elegantere Lösung?
fhem auf HP Microserver Gen8 mit Openmedivault
- 4 Milight RGB Bulbs an Milight Wifi Controller
- MAX Cube mit 2 Heizkörperthermostaten und 2 Fenstersensoren
- VU+ Solo4k Enigma2
- Fritzbox mit Callmonitor

betateilchen

define bla at *06:30 { unless isday() { fhem(befehl1); fhem(befehl2) } }

Damit kannst Du soviele Befehle ausführen wie Du möchtest, die alle nur dann ausgeführt werden, wenn die Sonne noch nicht aufgegangen ist.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Sedonion

#8
Zitat von: betateilchen am 21 Februar 2017, 14:55:28
define bla at *06:30 { unless isday() { fhem(befehl1); fhem(befehl2) } }

Damit kannst Du soviele Befehle ausführen wie Du möchtest, die alle nur dann ausgeführt werden, wenn die Sonne noch nicht aufgegangen ist.

unless, tolles Ding :)
Ich muss mir da immer einmal in menschliche Denke übersetzen:
Um 06:30 Uhr wird mit unless geprüft ob isday() 1 oder 0 ist. Bei 0 werden die fhem commandos ausgeführt, wenn isday() 1 dann eben nicht.
isday() hat abhängig vom CIVIL Sonnenaufgang, sprich wenn ich REAL Aufgang nutzen will, geht das so nicht.
Könnte ich die Idee von Per aus https://forum.fhem.de/index.php?topic=62108.0 zu Nutze machen:
define isdayreal DOIF (sunset_rel("real")) DOELSEIF (sunrise_rel("real"))
attr isdayreal cmdState 0|1


Und dann:

define bla at *06:30 { unless Readingsval("isdayreal", "state", "")   { fhem(befehl1); fhem(befehl2) } }


Könnte das passen?
fhem auf HP Microserver Gen8 mit Openmedivault
- 4 Milight RGB Bulbs an Milight Wifi Controller
- MAX Cube mit 2 Heizkörperthermostaten und 2 Fenstersensoren
- VU+ Solo4k Enigma2
- Fritzbox mit Callmonitor

betateilchen

Zitat von: Sedonion am 21 Februar 2017, 15:46:48
isday() hat abhängig vom CIVIL Sonnenaufgang, sprich wenn ich REAL Aufgang nutzen will, geht das so nicht.

Falsch.

isday() ist abhängig davon, welchen Parameter Du übergibst.


define bla at *06:30 { unless isday("REAL") { fhem(befehl1); fhem(befehl2) } }


Manchmal wäre es toll, wenn die Anwender nicht immer Probleme herbeidenken würden, wo es keine Problem gibt.
Noch besser wäre es, wenn die Leute irgendwann mal anfangen würden, Dokus zu lesen. Sowas steht nämlich alles in der commandref.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Sedonion

Noch besser wäre es, wenn in der commandref drin stehen würde.
Ich habe sie gelesen, und finde nur einen einzigen Eintrag zu isday:
Zitatsunset($offset, $min, $max)
    sunrise($offset, $min, $max)
    isday()

Der Wert von "offset" wird in Sekunden angegeben und das Format für min/max ist "HH:MM" oderr "HH:MM:SS". isday gibt 1 zurück, wenn die Sonne sichtbar ist und ansonsten den Wert 0.

Wo steht etwas davon das ich oder welche Parameter ich übergeben kann?
fhem auf HP Microserver Gen8 mit Openmedivault
- 4 Milight RGB Bulbs an Milight Wifi Controller
- MAX Cube mit 2 Heizkörperthermostaten und 2 Fenstersensoren
- VU+ Solo4k Enigma2
- Fritzbox mit Callmonitor

Beta-User

...kein Grund, sich hier so zu beharken.

Es steht tatsächlich in der commandref, allerdings "nur" in der einzigen verpflichtenden Fassung (=englisch): https://fhem.de/commandref.html#SUNRISE_EL
ZitatThis module is used to define the functions

sunrise, sunset,
sunrise_rel, sunset_rel
sunrise_abs, sunset_abs
isday
...
Optionally, for all functions you can set first argument which defines a horizon value which then is used instead of the $defaultaltit in SUNRISE_EL.pm.
Possible values are: "REAL", "CIVIL", "NAUTIC", "ASTRONOMIC" or a positive or negative number preceded by "HORIZON="
REAL is 0, CIVIL is -6, NATUIC is -12, ASTRONOMIC is -18 degrees above horizon.
Nix für ungut, aber vielleicht stolpert hier ja mal wieder jemand über diese einfachen Helferlein ;).

Gruß, Beta-User
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Brice

Zitat von: Sedonion am 21 Februar 2017, 14:18:36Problem: ich kann keine weiteren sets einbauen, da dort der on-till keine Gültigkeit hat, also kein "set WZ_licht brightness 100" mit einbauen.

Warum nicht? Folgendes funktioniert hier seit Monaten mit einem Bewegungsmelder:

{
if ((ReadingsVal("BOSE_507224BD4752","state","0") eq "online") && (ReadingsVal("MediaCenter","state","on") eq "off"))
{
  {fhem "set LED on-till {sunrise_abs(+3600)}"}
  {fhem "set HUEDevice1 on-till {sunrise_abs(+1800)}"}
  {fhem "set HUEDevice1 effect colorloop"}
  {fhem "set BOSE_507224BD4752 on"}
  {fhem "set BOSE_507224BD4752 channel 2"}
  {fhem "set BOSE_507224BD4752 volume 27"}
  #{fhem "set Advent_WZ on-till {sunrise_abs(+1600)}"}
  #{fhem "set LED_Balkon on-till {sunrise_abs(+1600)}"}
  {fhem "set LED_TV on-till {sunrise_abs(+1700)}"}
  {fhem "set HUEDevice6 on-till {sunrise_abs(+3200)}"}
  {fhem "set HUEDevice6 effect colorloop"}
}
}
FHEM auf RPi 4 4GB (Buster) | produktiv) CUL 868 für FS20 | S300TH | KS300 | Max!Cube als CUN 868 für TechemWZ | HM-MOD-RPI-PCB für HM | Z-Wave ZME_UZB1 | FRITZ!DECT 200 | HUE | Lightify | Echo Dot | WS3080

Sedonion

Zitat von: Beta-User am 21 Februar 2017, 17:02:28
...kein Grund, sich hier so zu beharken.
Gruß, Beta-User

OT:
Guten morgen,
da hast Du Recht. Ich muss aber mal etwas los werden:
In immer mehr Threads finde ich bissige Kommentare von Koryphäen (im positiven Sinne), teilweise sogar ohne wirkliche Hilfe.
Ich kenne es jahrelang gut aus Dreambox Foren, das immer wieder die gleichen Fragen gestellt werden, egal wie gut das Wiki oder die Dokumentation ist.
Das wird sich leider nicht verhindern lassen.
Dennoch finde ich, helfen sollte Spaß machen und nicht zum Frust werden. Es gibt sicher Neulinge die nur schnell eine fertige Zeile für ihr Problerm haben wollen. Aber auch andere, die vorher das Wiki, die Commandref, die Forumssuche und google bemühen um eine Lösung zu finden. Und dann noch einiges in Zeit investieren um gefundene Ansätze zu testen.
Da fühlte ich mir einfach auf den Schlips getreten mit einem bissigen Hinweis auf die Commandref, die sich ausgerechnet in dem Punkt massiv unterscheidet von der deutschen und englischen Version.

/OT:
Ich werde es hoffentlich heute testen können mit isday("Real") oder isday(0).
fhem auf HP Microserver Gen8 mit Openmedivault
- 4 Milight RGB Bulbs an Milight Wifi Controller
- MAX Cube mit 2 Heizkörperthermostaten und 2 Fenstersensoren
- VU+ Solo4k Enigma2
- Fritzbox mit Callmonitor

KölnSolar

Sorry, auch OT, aber
Zitatbissigen Hinweis
finde ich persönlich recht agressiv formuliert. Über
ZitatNoch besser wäre es, wenn die Leute irgendwann mal anfangen würden, Dokus zu lesen. Sowas steht nämlich alles in der commandref.
kann man doch auch mal in Ruhe drüber nachdenken, ohne sich eben auf den Schlips getreten zu fühlen  ::) Ist doch eigentlich nur ein gutgemeinter Hinweis gewesen  ;)
Und, dass hier die deutsche von der englischen commandref abweicht, machte ja erst die Verwirrung aus  :o
Grüße Markus  :-X
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt