Seite 1 von 6
Laufende Wochenzahl errechnen
Verfasst: 6. Sep 2021 10:38
von PJH
Hallo sehr geehrte Forumsteilnehmer, ich habe 'mal wieder eine Frage.
Da wohl die Funktion "get.WeekOfYear" nicht (mehr) unterstützt wird, habe ich mir die Wochennummer errechnet und zwar
"lfdWoche.postUpdate((lfdTag.state as DecimalType) / (7))"
lfdTag habe ich mit "now.getDayOfYear" übernommen.
So, das klappte auch bis jetzt. Ab heute aber nicht mehr. Der laufende Tage ist heute 247 und geteilt durch 7 ergibt sich 35.28571429 und angezeigt wird 35. Die laufende Woche ist ab heute aber 36.
Wie kann ich das Ergebnis aufrunden, oder gibt es eine andere Funktion um die laufende Woche zu erhalten.
Vielen Dank für eure freundliche Hilfe und einen schönen Gruß. PJH
Re: Laufende Wochenzahl errechnen
Verfasst: 6. Sep 2021 20:51
von udo1toni
Die Berechnung ist grundsätzlich falsch
Die erste Kalenderwoche ist die mit dem ersten Donnerstag des Jahres. Die amerikanische Wochenberechnung nimmt immer die Woche, in der der 1.1. liegt als 1 Kalenderwoche (und damit zwangsläufig die Woche, welche den 31.12. enthält als 53 Woche des laufenden Jahres. Nach DIN gibt es die 53. Woche nur in den Jahren, die mit einem Donnerstag beginnen oder enden. Es ist also etwas tricky, die Kalenderwoche korrekt zu berechnen.
Soweit ich die Doku verstanden habe, musst Du Weekfields und weekOfWeekBasedYear() verwenden, um auf die Kalenderwoche zugreifen zu können.
Schau mal hier:
https://www.geeksforgeeks.org/weekfield ... -examples/
Ich liebe die Oracle Entwickler für ihre einfachen Lösungen...
Vielleicht kann jemand im englischen Forum noch eine elegantere Methode zeigen

Re: Laufende Wochenzahl errechnen
Verfasst: 7. Sep 2021 01:12
von ibot1989
Könnte ein Mod diesen Thread in die richtige Kategorie verschieben, dass hat doch nichts mit Bekanntmachungen zu tun

(Dieser Post kann aus Übersichtsgründen gerne anschließend gelöscht werden)
Danke
Re: Laufende Wochenzahl errechnen
Verfasst: 7. Sep 2021 02:36
von udo1toni
Danke für den Hinweis

Re: Laufende Wochenzahl errechnen
Verfasst: 7. Sep 2021 08:46
von PJH
Hallo @udo1toni, vielen Dank für die tolle und umfangreiche Erklärung und den Link.
Eigentlich möchte ich hauptsächlich wissen, wie man eine Zahl auf-/abrunden kann und ob das überhaupt in openHAB 3 möglich ist.
Übrigens funktioniert meine kleine Berechnung weiter, openHAB hat nur nicht aktualisiert. Nach einem Neustart des Systems klappt alles wieder.
Schöne Grüße. PJH
PS: Tut mir leid, dass ich meine Frage in der falschen Rubrik gestellt habe. Ich habe gesucht und dann bin ich wohl eben in der falschen Rubrik gelandet. Werde mir Mühe geben, dass das nicht wieder vorkommt.
Re: Laufende Wochenzahl errechnen
Verfasst: 7. Sep 2021 13:51
von peter-pan
Auf die Schnelle könnte ich evtl einen kleinen Workaround anbieten. Dazu brauchst du das Exec-Binding, ein kleines Bash-Script, ein Thing, ein Item und einen Eintrag in der whitelist. Die Konfiguration habe ich per Text-Files gemacht.
Bash-Script (ich habe es "weekyear.sh genannt) in /etc/openhab/scripts ($OPENHAB_CONF/scripts):
Ein Eintrag in deiner "exec.whitelist in /etc/openhab/misc ($OPENHAB_CONF/misc):
Ein Thing in der "exec.things":
Code: Alles auswählen
Thing exec:command:my_week "Woche des Jahres" @ "Buero"
[command="/bin/bash /etc/openhab/scripts/weekyear.sh", interval=600, timeout=30, transform="REGEX((.*?))"]
Ein Item in dein .items-Datei:
Code: Alles auswählen
String WeekYear "Kalenderwoche [%s] " <calendar> (gSystem) { channel="exec:command:my_week:output"}
Es gibt bestimmt bessere Möglichkeiten, aber für den Anfang ??!!
kw.jpg
Re: Laufende Wochenzahl errechnen
Verfasst: 7. Sep 2021 14:12
von PJH
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 erst
Sitemap.jpg
so aus.
Re: Laufende Wochenzahl errechnen
Verfasst: 7. Sep 2021 17:41
von int5749
Da fehlt ja nur noch ‚letzter

-gang‘
Sehr detaillierte Übersicht!!
Re: Laufende Wochenzahl errechnen
Verfasst: 7. Sep 2021 20:03
von udo1toni
Also, runden ist leicht, mit Math::round().
Gezielt aufrunden -> Math::round(Wert +.5)
Gezielt abrunden -> Math::round(Wert - .5).
Wobei es mit Sicherheit auch eine Funktion für die beiden Sonderfälle gibt.

Re: Laufende Wochenzahl errechnen
Verfasst: 7. Sep 2021 23:20
von peter-pan
PJH hat geschrieben: ↑7. Sep 2021 14:12
Meine Sitemap sieht jetzt mal erst ...so aus.
Gefällt mir.
Ich hab die Sitemap-GUI auch noch in OH3 mitlaufen und da OH2 immer noch mein Produktiv-System ist, sieht es bei mir auch ähnlich aus. (Mit vielen Unter-Fenstern

)
sitemap1.jpg
sitemap2.jpg
...und du wirst sehen, dass es noch sehr viel mehr zum messen, steuern und überwachen gibt.
Und das Aussehen der Oberfläche ist letztlich Geschmackssache, ob puristisch, wie die Sitemap oder verspielt mit semantischem Modell und Widgets.
Viel Spass weiterhin.
Gruss Peter