At jeden morgen ab fünf aber nur wenns dunkel ist

Begonnen von TomLee, 14 September 2022, 16:33:33

Vorheriges Thema - Nächstes Thema

TomLee

Sry, also ich bin aufgehalten worden.

@Damian

Schau ich mir auf jedenfall mal an, heute Abend am PC, weil das was du da alles in einem Wikiartikel zusammengefasst hast mein altes Tablet nicht mitmacht und der Browser abstürzt.

@Reinhard.M

Wäre es nicht im Interesse aller wenn du das Beispiel einfach hier zeigen würdest.

@DetlefR

Ich meine das hat was, ich muss aber noch weiter darüber grübeln, erst brauch ich was im Bauch.


TomLee

Ich werd das so umsetzen wie es mir schon beim schreiben des ersten Beitrags im Kopf rumgängelte.

Beta-Users Vorschlag ist mir too much, Wolken mit einbeziehen, für was ? Da müssten ja Sonnenfinsternis-Verhältnise vorkommen, so ein Unwetter um die Zeit kommt, sagen wir mal in 10 Jahren, genau wie oft vor ?
Grundsätzlich aber auch eine Variante es anzugehen.

DOIF hab ich immer noch nicht angesehen, mach ich aber rein aus Interesse noch.

Cool find ich die Variante von DetlefR, aber irgendwie kann ich mich nicht damit anfreunden das in der "Übergangszeit" (Mai/Juli) die Leuchten für nur wenige Minuten (bis halbe Stunde, OK) an sind.

So hör ich einfach mit etwa einer 1/2 Stunde Ende April auf und mit einer 1/2 Stunde im August wieder an:

defmod at_Deko_sunrise at *05:00:00 {\
my $x = sunrise();;\
my @dev = ('MQTT2_WLED_G1','MQTT2_WLED_G2','MQTT2_WLED_FR','MQTT2_WLED_TV','MQTT2_zigbee_rgbw_bulb_flur_privat','MQTT2_Mi_Wecklicht','MQTT2_Tasmota_Bulb1' );;\
my $pc = substr(Color::pahColor(0,15,30,ReadingsVal('HF_Aussensensor_Vorderhaus','temperature','0'),2,0),0,6);;\
return fhem("set $dev[0]|$dev[2]|$dev[3]|$dev[4]|$dev[5]|$dev[6]:FILTER=state!=on on-till $x;;set $dev[0]|$dev[2]|$dev[3]|$dev[4]|$dev[5]|$dev[6] rgb $pc;;") if $month < 5 || $month >7;;\
}
attr at_Deko_sunrise room Deko

setstate at_Deko_sunrise Next: 05:00:00
setstate at_Deko_sunrise 2022-09-15 15:33:06 state Next: 05:00:00



DetlefR

Ich habe die Hardcore Variante wiedergefunden. Das Thema hatte ich schon mal. Wurde dann aber verworfen.


Die Definition des at ändern
*{ReadingsVal('at_Deko_sunrise ','nextstart','05:00:00')}
Am Ende dann das einfügen
my @sra=split /:/ ,sunrise();
my $shr=$sra[0]>23?$sra[0]-24:$sra[0];
my $nextrun='05:00:00'; # Default Startwert
if ($shr<6){ #Mindestbrenndauer eine Stunde
my $nextstart=$shr*60+$sra[1];
$nextstart-=60; #Die Zeit des Sonnenaufgang in Minute-60 Mindestbrenndauer
my $nexthour=floor($nextstart / 60);
my $nextmin =$nextstart % 60;
$nextrun=sprintf('%02u:%02u:00',$nexthour,$nextmin) #Die naechste Startzeit zusammenbasteln
}
readingsSingleUpdate($defs{$SELF},'nextstart',$nextrun,0); #und in das Reading schreiben.
}


Das ganze sorgt dann dafür, dass im Sommer das Licht früher angeht als 5:00 Uhr.
Es war mal als "Sonnenaufgang" für eine Bettumrandung gedacht. Aber so früh wollte dann doch niemand Licht haben. ;)