Stunden seid einen bestimmten Zeitpunkt in Dummy setzen

Begonnen von jailbreaker07, 18 Februar 2020, 10:59:13

Vorheriges Thema - Nächstes Thema

jailbreaker07

Hallo,
Ich möchte in einen Dummy die Zeit in Stunden setzen, die seid einen bestimmten Zeitpunkt vergangen sind. Zb ab dem 01.05.2019 das benötige um zu wissen wieviel Grundgebür für einen Zeitraum angefallen sind. Wie mache ich das am besten?

Gruß

Thorsten

rabehd

Du schreibst Dir eine Funktion, die die Stunden seit einer als Parameter übergebenen Zeit berechnet.
Was löst das Berechnen aus?
Auch funktionierende Lösungen kann man hinterfragen.

jailbreaker07

Einmal die Stunde über ein DOIF


Gesendet von iPhone mit Tapatalk

rudolfkoenig

fhem> { time_str2num("2019-05-01 01:00:00") }
1556665200
fhem> defmod dummy_at at +*01:00 setreading dummy stundenSeit20190501 {(int((time()-1556665200)/3600))}

jailbreaker07

Hey, danke wie packe ich das am besten in einen doif welches dann den Wert in ein dummy setzt?
Will nicht so klappen.

Gruß

Thorsten

jailbreaker07


rabehd

ZitatHey, danke wie packe ich das am besten in einen doif welches dann den Wert in ein dummy setzt?
Wie ist den Deine nicht beste Varinte?
Auch funktionierende Lösungen kann man hinterfragen.

jailbreaker07

#7
Hey,
ein doif mit diesen inhalt funktioniert nicht

([+01:00])(set Muster2 { time_str2num("2019-05-01 01:00:00") } )

Im Dummy Muster2 steht unter state dann dies: { time_str2num("2019-05-01 01:00:00") }


Wenn ich das mit den vorgeschlagenen at mache: +*01:00 setreading Muster2 Stunden {(int((time()-1556665200)/3600))}

Dann steht im Dummy Muster2 unter den reading Stunden: { int((time-1556665200)/3600))}

vielen dank


rabehd

Abgesehen davon, dass die {} sich nicht auflösen.
Weißt Du was time_str2num macht?

Zitat([+01:00])(set Muster2 { time_str2num("2019-05-01 01:00:00") } )
Setze den Dummy Muster2 auf die Unix-Zeit von "2019-05-01 01:00:00".

Auch funktionierende Lösungen kann man hinterfragen.

Damian

#9
Zitat von: jailbreaker07 am 18 Februar 2020, 16:35:38
Hey,
ein doif mit diesen inhalt funktioniert nicht

([+01:00])(set Muster2 { time_str2num("2019-05-01 01:00:00") } )

Im Dummy Muster2 steht unter state dann dies: { time_str2num("2019-05-01 01:00:00") }


Wenn ich das mit den vorgeschlagenen at mache: +*01:00 setreading Muster2 Stunden {(int((time()-1556665200)/3600))}

Dann steht im Dummy Muster2 unter den reading Stunden: { int((time-1556665200)/3600))}

vielen dank


define zeit DOIF {[+01:00]; set_Reading ("stunden",int((time()-1556665200)/3600))}

Wenn du es über die Kommandozeile eingibst, musst du das Semikolon verdoppeln.

Auf die Stunden kannst du über [zeit:stunden] zugreifen, einen Dummy brauchst du dafür nicht.

Edit:
Alternativ kannst du die Stunden im Status des DOIFs darstellen:

define stunden DOIF {[+01:00]; set_State (int((time()-1556665200)/3600))}
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

rudolfkoenig

ZitatDann steht im Dummy Muster2 unter den reading Stunden:
Wann wurde FHEM zuletzt aktualisiert (Stichwort FHEM update Befehl)?
Auf was steht "attr global featurelevel"?

Damian

Zitat{ int((time-1556665200)/3600))}

das passt nicht zu seiner at-Definition, er hat vermutlich bei der at-Definition die Klammer auf vergessen:

{(int...
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

rudolfkoenig


herrmannj


jailbreaker07

Hallo zusammen,

jetzt funktionieren beide Varianten:

DOIF

{[+00:01]; set_Reading ("stunden",int((time()-[$SELF:Stunden_unix])/3600))}


at
+*01:00 setreading Muster2 Stunden {(int((time-1556665200)/3600))}

Schon übel wenn man von der Materie fast keine Ahnung hat und sich alles irgendwie zusammen bastelt..... da fallen solche Sachen wie ein fehlende klammer nicht auf....

Vielen dank für eure Unterstützung   8)