Hallo,
ich habe ein generelles Problem mit der Uhrzeit, ich benutzt die sunrise und sunset Funktion.
Dazu ist wie beschrieben folgendes angelegt:
define Sonnenaufgang dummy
attr Sonnenaufgang room Zeit
define Sonnenuntergang dummy
attr Sonnenuntergang room Zeit
define sun_riseSet_timer at *00:07:00 { my $s = sunrise();; fhem("set Sonnenaufgang $s");; $s = sunset();; fhem("set Sonnenuntergang $s");; }
define sun_riseSet_timer at *00:07:00 { my $s = sunrise();; fhem("set Sonnenaufgang $s");; $s = sunset();; fhem("set Sonnenuntergang $s");; }
# COMMAND { my $s = sunrise(); fhem("set Sonnenaufgang $s"); $s = sunset(); fhem("set Sonnenuntergang $s"); }
# DEF *00:07:00 { my $s = sunrise(); fhem("set Sonnenaufgang $s"); $s = sunset(); fhem("set Sonnenuntergang $s"); }
# FUUID 5db5dd63-f33f-349b-5132-46de1c67a5562bb5
# NAME sun_riseSet_timer
# NR 61
# PERIODIC yes
# RELATIVE no
# REP -1
# STATE Next: 00:07:00
# TIMESPEC 00:07:00
# TRIGGERTIME 1752530820
# TRIGGERTIME_FMT 2025-07-15 00:07:00
# TYPE at
# READINGS:
# 2025-07-14 08:06:10 state Next: 00:07:00
#
setstate sun_riseSet_timer Next: 00:07:00
setstate sun_riseSet_timer 2025-07-14 08:06:10 state Next: 00:07:00
Wenn ich nun die Zeiten verwenden will dann bekomme ich bei folgenden Code
define my_check at +*00:00:10 {\
my ($rh, $rm, $rs) = split(':', ReadingsVal("Sonnenaufgang", "time", "00:00:00"));;\
my $sr_time = $rh*3600 + $rm*60 + $rs;;\
my ($uh, $um, $us) = split(':', ReadingsVal("Sonnenuntergang", "time", "00:00:00"));;\
my $ss_time = $uh*3600 + $um*60 + $us;;\
my $now = time() % 86400;;\
Log3("now", 3, "now: $now");;\
Log3("sr_time", 3, "sr_time: $sr_time ");;\
Log3("ss_time", 3, "ss_time: $ss_time ");;\
if ($now > ($ss_time - 60)) {\
Log3("Kontext", 3, "true");;\
} else {\
Log3("Kontext", 3, "false");;\
}\
}
setuuid my_check 6874e0b4-f33f-49a1-b738-c6ec458d9d5caa7a
immer im Logfile Werte welche nicht recht stimmen.
2025.07.14 12:58:04.683 3: now: 39484
2025.07.14 12:58:04.684 3: sr_time: 3628
2025.07.14 12:58:04.684 3: ss_time: 3622
2025.07.14 12:58:04.685 3: true
im Webinterface steht
dummy
Sonnenaufgang 04:24:16
Sonnenuntergang 22:07:36
an was leigt das?
Danke
Hi,
- time() liefert die Sekunden seit dem 1.1.1970 , was Du ausrechnest
könnten die Tage seit dem sein? (edit: falsch gedacht) - In Deinem ReadingsVal liest Du das Reading time, wo setzt Du das? Mit deinem anderen at setzt du ja den state - oder sehe ich es falsch?
Es gibt da im Wiki einen Artikel zum Rechnen mit Zeitangaben https://wiki.fhem.de/wiki/Zeitangaben,_rechnen_mit .
Gruß Otto
Hallo Otto,
Sonnenaufgang 04:24:16
dann liefert mir doch sozusagen
my ($rh, $rm, $rs) = split(':', ReadingsVal("Sonnenaufgang", "time", "00:00:00"));;\
my $sr_time = $rh*3600 + $rm*60 + $rs;;\
die Sekunden seit Mitternacht - 1h
das
my $now = time() % 86400;;
stimmt ja, 39484s nach Mitternacht
warum nun das Endergbnis ein anderes ist verstehe ich nicht.
dann zeig mal ein list Sonnenaufgang - ich sehe wie gesagt kein Reading time in deinem code.
Vermutung: Du hast das mal irgendwie gesetzt, sonst würde Deine Rechnung ja 0 zurück liefern.
Dürfte das sein
Internals:
FUUID 5db5dd63-f33f-349b-fd71-a3481e7b1ab8f646
NAME Sonnenaufgang
NR 58
STATE 04:24:16
TYPE dummy
READINGS:
2025-07-13 00:07:00 state 04:24:16
2025-07-14 07:38:48 time 01:00:28
Attributes:
room Zeit
kann es sein das ich state verwenden mus und nicht time um meinen richtigen Wert zu erhalten?
Dumme Frage, was ist der Unterschied zwischen state und time.
Eigentlich kannst nur Du Dir Deine Fragen beantworten. ;)
In Deinem at oben setzt Du state mit sunrise / sunset (du führst ein set aus, dies setzt das Reading state)
Der Wert in state sieht so sinnvoll aus, zumindest laut Deiner Erklärung oben.
Woher der Wert im Reading time kommt? Da habe ich keine Ahnung, da steht aber ein Wert drin, der Dein Rechenergebnis erklärt.
Zitat von: Maxl am 14 Juli 2025, 14:19:01kann es sein das ich state verwenden mus und nicht time um meinen richtigen Wert zu erhalten?
würde ich vorsichtig mit ja beantworten.
Zitat von: Maxl am 14 Juli 2025, 14:19:01Dumme Frage, was ist der Unterschied zwischen state und time.
wie gesagt, kannst nur Du erklären, wie Du siehst steht da aber ein (Zeit) Wert drin, der heute morgen geschrieben wurde.
Zitat von: Maxl am 14 Juli 2025, 13:00:29ich habe ein generelles Problem mit der Uhrzeit
Typisches Anfängerdenken, viel zu kompliziert...
1.Tipp: Modul Astro verwenden, statt eigene Dummy-Devices zu befüllen.
2.Tipp: Modul YAAHM verwenden, um Schaltvorgänge an solche Zeiten zu koppeln.
LG
pah