Seite 2 von 6
Re: Laufende Wochenzahl errechnen
Verfasst: 9. Sep 2021 09:33
von PJH
Hallo @udo1toni, danke für den Hinweis.
Ich bin mir nicht sicher, ob das Runden für meine Berechnung der Wochennummer hilfreich ist, aber ich möchte es ausprobieren.
Mein Berechnungscode lautet
"lfdWoche.postUpdate((lfdTag.state as DecimalType) / (7))"
wo muss denn da "Math::round()" hin?
Danke und schöne Grüße. PJH
Re: Laufende Wochenzahl errechnen
Verfasst: 9. Sep 2021 13:16
von ibot1989
PJH hat geschrieben: ↑7. Sep 2021 14:12
Hallo @peter-pan, danke für die Mühe.
Da bei mir die Wochennummernberechnung mit meiner Division Tageszahl/7 bisher stimmt, lasse ich es dabei bis es nicht mehr stimmt, beschäftige mich aber mit den anderen Vorschlägen, weil sich daraus 'was lernen lässt.
Meine Sitemap sieht jetzt mal erstSitemap.jpg so aus.
Bekommst du die ganzen Werte aus einem Binding oder ermittelst du die selbst?
Sind interessante Dinge bei, die halt nicht nur Wochennummer sind um die es in diesem Thread geht.
Kannst du dazu (wenn es kein Binding ist) ein extra Thread erstellen und uns die einzelnen Punkte mal vorstellen?
Gruß iBot
Re: Laufende Wochenzahl errechnen
Verfasst: 9. Sep 2021 13:40
von PJH
Hallo @iBot, letztendlich kommen alle Werte irgendwie aus einem Binding (Astro, NTP, OpenWeatherMap), und werden dann entsprechend extrahiert oder umgerechnet.
Da es doch ein bisschen umfangreich ist frage ich mal so: was genau möchtest Du wissen?
Schöne Grüße. PJH
Re: Laufende Wochenzahl errechnen
Verfasst: 9. Sep 2021 15:48
von peter-pan
...eine einfache Variante könnte so aussehen:
Code: Alles auswählen
rule "Week of the Year calculated and rounded"
when
Item Dummy_4 changed to ON
then
var vDayOfYear = now.getDayOfYear
logInfo("datumtest1", "day of the year is {}", vDayOfYear)
var vWeekYear = Math::round(vDayOfYear/7+0.5)
logInfo("datumtest1", "aktuelle Woche {} ", vWeekYear)
var vWeekYear1 = Math::round(vDayOfYear/7-0.5)
logInfo("datumtest1", "aktuelle Woche {} ", vWeekYear1)
// lfdWoche.postUpdate(vWeekYear1)
// lfdWoche.postUpdate(Math::round(vDayOfYear/7-0.5))
end
Aber wie Udo schon schrieb, dass ist suboptimal (beim Aufrunden bist du da schon in Woche 37).
Logger:
Code: Alles auswählen
2021-09-09 15:33:04.665 [INFO ] [se.smarthome.model.script.datumtest1] - day of the year is 252
2021-09-09 15:33:04.668 [INFO ] [se.smarthome.model.script.datumtest1] - aktuelle Woche 37
2021-09-09 15:33:04.671 [INFO ] [se.smarthome.model.script.datumtest1] - aktuelle Woche 36
Re: Laufende Wochenzahl errechnen
Verfasst: 9. Sep 2021 18:58
von PJH
Hallo Peter, ja das ist so, deshalb beobachte ich erst einmal, wieweit meine einfache Division stimmt.
Ich habe aber die letzte Zeile ausprobiert (ohne "-0.5") und das funktioniert, zumindest derzeit auch. Ich werde beobachten.
Heute gibt's ja nichts zu überprüfen, heute kommt ohnehin glatt 36 raus.
Vielen Dank. PJH
Re: Laufende Wochenzahl errechnen
Verfasst: 9. Sep 2021 22:22
von peter-pan
Aber am Montag hast du das Problem so wieder:
Logger:
Code: Alles auswählen
2021-09-09 22:17:27.054 [INFO ] [se.smarthome.model.script.datumtest1] - day of the year is 256
2021-09-09 22:17:27.058 [INFO ] [se.smarthome.model.script.datumtest1] - aktuelle Woche 37
2021-09-09 22:17:27.062 [INFO ] [se.smarthome.model.script.datumtest1] - aktuelle Woche1 36
2021-09-09 22:17:27.065 [INFO ] [se.smarthome.model.script.datumtest1] - aktuelle Woche2 36
2021-09-09 22:17:27.067 [INFO ] [se.smarthome.model.script.datumtest1] - aktuelle Woche3 36
Regel:
Code: Alles auswählen
rule "Week of the Year calculated "
when
Item Dummy_4 changed to ON
then
var vDayOfYear = 256
logInfo("datumtest1", "day of the year is {}", vDayOfYear)
var vWeekYear = Math::round(vDayOfYear/7+0.5) // aufgerundet
logInfo("datumtest1", "aktuelle Woche {} ", vWeekYear)
var vWeekYear1 = Math::round(vDayOfYear/7-0.5) // abgerundet
logInfo("datumtest1", "aktuelle Woche1 {} ", vWeekYear1)
var vWeekYear2 = Math::round(vDayOfYear/7) // ungerundet
logInfo("datumtest1", "aktuelle Woche2 {} ", vWeekYear2)
var vWeekYear3 =vDayOfYear/7 // ungerundet ohne Funktion "Math"
logInfo("datumtest1", "aktuelle Woche3 {} ", vWeekYear3)
// lfdWoche.postUpdate(vWeekYear1)
// lfdWoche.postUpdate(Math::round(vDayOfYear/7-0.5))
end
Ich denke so wird das nichts.
Leider habe ich im Moment keine andere Idee als die weiter vorne beschriebene.
Re: Laufende Wochenzahl errechnen
Verfasst: 9. Sep 2021 23:18
von PJH
Hallo Peter, ja das ist richtig, aber was ist wenn man bei der Division durch 7 nur die Stellen vor dem Komma auswertet?
Schöne Grüße. Paul
Re: Laufende Wochenzahl errechnen
Verfasst: 10. Sep 2021 23:12
von ibot1989
PJH hat geschrieben: ↑9. Sep 2021 13:40
Hallo @iBot, letztendlich kommen alle Werte irgendwie aus einem Binding (Astro, NTP, OpenWeatherMap), und werden dann entsprechend extrahiert oder umgerechnet.
Da es doch ein bisschen umfangreich ist frage ich mal so: was genau möchtest Du wissen?
Schöne Grüße. PJH
Hallo PJH,
folgendes würde mich interessieren:
Aktuelle Jahreszeit
Nächste Jahreszeit
Tages Nummer
Aktuelles Sternzeichen
Mond und Sonnenphasen hast du alle aus dem Astro Binding oder noch von woanders?
Welches Wetter Binding nutzt du für die Vorhersage?
Aber vllt. wirklich in einem extra Thread wird sonst so Off Topic.
Gruß iBot
Re: Laufende Wochenzahl errechnen
Verfasst: 11. Sep 2021 14:36
von PJH
@iBot Wo meinst Du, in welche Rubrik soll ich meine Antwort einstellen, ich kenne mich hier im Forum nicht wirklich aus.
Gruß. Paul-Joachim Haucke
Re: Laufende Wochenzahl errechnen
Verfasst: 12. Sep 2021 11:32
von PJH
Hallo @uodo1toni, @peter-pan, noch eine Versuch.
Wenn man eine Regel erstellt, die nur abrundet, wenn der Nachkommaanteil >.5 ist.
Das müsste doch funktionieren. Nur, ich weiß nicht wie man den Nachkommaanteil ausformatieren kann.
Ihr wisst das sicherlich.
Schöne Grüße. PJH