FHEM Forum

FHEM => Automatisierung => Thema gestartet von: jailbreaker07 am 18 Februar 2020, 10:59:13

Titel: Stunden seid einen bestimmten Zeitpunkt in Dummy setzen
Beitrag von: jailbreaker07 am 18 Februar 2020, 10:59:13
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
Titel: Antw:Stunden seid einen bestimmten Zeitpunkt in Dummy setzen
Beitrag von: rabehd am 18 Februar 2020, 11:15:22
Du schreibst Dir eine Funktion, die die Stunden seit einer als Parameter übergebenen Zeit berechnet.
Was löst das Berechnen aus?
Titel: Antw:Stunden seid einen bestimmten Zeitpunkt in Dummy setzen
Beitrag von: jailbreaker07 am 18 Februar 2020, 11:18:32
Einmal die Stunde über ein DOIF


Gesendet von iPhone mit Tapatalk
Titel: Antw:Stunden seid einen bestimmten Zeitpunkt in Dummy setzen
Beitrag von: rudolfkoenig am 18 Februar 2020, 11:20:33
fhem> { time_str2num("2019-05-01 01:00:00") }
1556665200
fhem> defmod dummy_at at +*01:00 setreading dummy stundenSeit20190501 {(int((time()-1556665200)/3600))}
Titel: Antw:Stunden seid einen bestimmten Zeitpunkt in Dummy setzen
Beitrag von: jailbreaker07 am 18 Februar 2020, 14:14:55
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
Titel: Antw:Stunden seid einen bestimmten Zeitpunkt in Dummy setzen
Beitrag von: jailbreaker07 am 18 Februar 2020, 14:29:32
Damit dem at kappt leider nicht....
Titel: Antw:Stunden seid einen bestimmten Zeitpunkt in Dummy setzen
Beitrag von: rabehd am 18 Februar 2020, 15:05:51
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?
Titel: Antw:Stunden seid einen bestimmten Zeitpunkt in Dummy setzen
Beitrag 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

Titel: Antw:Stunden seid einen bestimmten Zeitpunkt in Dummy setzen
Beitrag von: rabehd am 18 Februar 2020, 17:13:22
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".

Titel: Antw:Stunden seid einen bestimmten Zeitpunkt in Dummy setzen
Beitrag von: Damian am 18 Februar 2020, 18:10:48
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))}
Titel: Antw:Stunden seid einen bestimmten Zeitpunkt in Dummy setzen
Beitrag von: rudolfkoenig am 18 Februar 2020, 18:25:59
ZitatDann steht im Dummy Muster2 unter den reading Stunden:
Wann wurde FHEM zuletzt aktualisiert (Stichwort FHEM update Befehl)?
Auf was steht "attr global featurelevel"?
Titel: Antw:Stunden seid einen bestimmten Zeitpunkt in Dummy setzen
Beitrag von: Damian am 18 Februar 2020, 18:33:20
Zitat{ int((time-1556665200)/3600))}

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

{(int...
Titel: Antw:Stunden seid einen bestimmten Zeitpunkt in Dummy setzen
Beitrag von: rudolfkoenig am 18 Februar 2020, 18:38:05
Klingt plausibel. Seufz.
Titel: Antw:Stunden seid einen bestimmten Zeitpunkt in Dummy setzen
Beitrag von: herrmannj am 18 Februar 2020, 19:32:55
da war wohl die control-c taste kaputt  :)
Titel: Antw:Stunden seid einen bestimmten Zeitpunkt in Dummy setzen
Beitrag von: jailbreaker07 am 18 Februar 2020, 19:50:10
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)