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
rrd4j zeiteinteilung
- PeterA
- Beiträge: 1052
- Registriert: 8. Feb 2019 12:12
Re: rrd4j zeiteinteilung
Zu Deiner Frage zwei würde mir eine Gruppe mit Summen Funktion einfallen...
- OpenHab 2.4
#PWRUP
#PWRUP
- udo1toni
- Beiträge: 13983
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: rrd4j zeiteinteilung
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:
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 einzu 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
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.
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
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))
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
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 65
- Registriert: 29. Apr 2020 19:15
Re: rrd4j zeiteinteilung
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
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