rrd4j zeiteinteilung

Allgemeine Fragen rund um die "Smart Home" Hardware/Komponenten

Moderatoren: seppy, udo1toni

Antworten
steinadler
Beiträge: 65
Registriert: 29. Apr 2020 19:15
Answers: 0

rrd4j zeiteinteilung

Beitrag von steinadler »

hi
gibt es bei rrd4j möglichkei(ten) die zeit selber zu definieren ?
also das jetzige jahr und das jahr davor ? (habe da irgendwas gelesen, das sogar 10 jahre vordefiniert sind, in der .cfg)
habe derzeit-- stunde, tag, monat, jahr-- zur anzeige, möchte gerne noch das vorjahr bringen

frage zwei
kann man zwei items zusammenaddieren?
items-a +items-b =items-ab
habe derzeit 2 solarpanele, möchte gerne die watt beider panele (summe) in der grafik(zusammenaddiert) angezeigt haben
also, panel-1 hat 100 watt, das zweite 100 watt--zusammen 200 watt in einem chart als eine linie angezeigt

hoffe konnte das einigermaßen zum ausdruck bringen
ansonsten laufen die charts schon ohne probleme

danke schonmal im vorraus

Benutzeravatar
PeterA
Beiträge: 1052
Registriert: 8. Feb 2019 12:12
Answers: 13

Re: rrd4j zeiteinteilung

Beitrag von PeterA »

Zu Deiner Frage zwei würde mir eine Gruppe mit Summen Funktion einfallen...
- OpenHab 2.4
#PWRUP

Benutzeravatar
udo1toni
Beiträge: 13983
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: rrd4j zeiteinteilung

Beitrag von udo1toni »

Zu Punkt 1: in https://www.openhab.org/addons/persistence/rrd4j/ ist erläutert, wie man selbst die verschiedenen Archivstufen konfigurieren kann. Dabei ist default auch eine Stufe für 10 Jahre vorhanden.
Dein Problem ist allerdings nicht die Datenbank, sondern die Darstellung über ein Chart Widget, das Chart Widget unterstützt nur einen Darstellungszeitraum von maximal einem Jahr. Allerdings kannst Du auch den Zeitraum über Anfangszeitpunkt und Endezeitpunkt definieren, darüber sollte auch mehr als ein Jahr möglich sein.

Zu Punkt 2: Du kannst ein drittes persistiertes Item anlegen, welches keine Bindung zu einem Datenpunkt hat. Dann braucht es noch eine kleine Rule:

Code: Alles auswählen

rule "set virtual item"
when
    Item ItemA changed or
    Item ItemB changed
then
    val Number nA = if(ItemA.state instanceof Number) (ItemA.state as Number) else 0
    val Number nB = if(ItemB.state instanceof Number) (ItemB.state as Number) else 0
    ItemAB.postUpdate(nA+nB)
end
Sobald eines der beiden Items seinen Wert ändert, wird es (mit dem aufaddierten Wert des anderen Items) in das dritte Item geschrieben.
Dabei ist es wesentlich, den Umweg über die Konstanten zu gehen, da beide Items eventuell auch keine gültige Zahl enthalten könnten, dann würde ein

Code: Alles auswählen

ItemAB.postUpdate((ItemA.state as Number)+(ItemB.state as Number))
zu einer NullPointerException führen.

Es ist klar, dass Dein items-a usw. nur ein Pseudo-Itemname ist, allerdings möchte ich sicherheitshalber trotzdem erwähnen, dass - kein zulässiges Zeichen im Itemnamen ist. Itemnamen dürfen alle Buchstaben des englischen Alphabets, die Ziffern 0-9 und den Unterstrich enthalten. Groß/Kleinschreibung wird streng beachtet. ItemA ist also ein anderes Item als itemA. Es gilt als guter stil, CamelCase für die Namen zu verwenden (also bei Namen aus mehreren Worten jeden Wortanfang mit einem Großbuchstaben zu kennzeichnen, also z.B. MeinTollesItem.

Eine Gruppe funktioniert ebenfalls, allserdings nur solange beide Items einen gültigen Zahlenwert liefern. Die Definition wäre dann

Code: Alles auswählen

Group:Number:SUM Gruppenitem
Eventuell gäbe es noch eine andere Variante :) die mit etwas mehr Arbeit verbunden ist. Schau Dir mal Grafana an, das kann die Summe zusätzlich in die Grafik hinein malen und bietet wesentlich mehr Möglichkeiten bei der Darstellung.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

steinadler
Beiträge: 65
Registriert: 29. Apr 2020 19:15
Answers: 0

Re: rrd4j zeiteinteilung

Beitrag von steinadler »

Danke deinen ausführlichen Zeilen
Mit grafana wollte ich mich später sowieso noch auseinander setzen(will die Sache langsam angehen, verstehen und nicht nur abschreiben)
Ich Versuch ersteinmal dein geschriebenes umzusetzen
Dann ist grafana und influxDB dran

Aber ersteinmal ein Backup vom raspi und openhab

Antworten