Zugriff auf Einheit aus Label

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Tokamak
Beiträge: 169
Registriert: 20. Aug 2019 08:37
Answers: 4
Wohnort: Aachen

Zugriff auf Einheit aus Label

Beitrag von Tokamak »

Hallo,

wenn man in das Label eines Items die Statusdarstellung einträgt, also sowas wie

Code: Alles auswählen

Number Leistung "Leistung [%d W]"
steht in item.label nur "Leistung" ohne "[%d W]".

Wie kann ich in einer Rule auch an den Part "[%d W]" herankommen? Irgendwo muss es ja stehen...

Danke
Produktiv: Proxmox mit OH 3.4 und HABApp im LXC-Container
Entwicklung: Proxmox mit OH 4.1 und HABApp im LXC-Container

Benutzeravatar
peter-pan
Beiträge: 2573
Registriert: 28. Nov 2018 12:03
Answers: 25
Wohnort: Schwäbisch Gmünd

Re: Zugriff auf Einheit aus Label

Beitrag von peter-pan »

Das ist ein Suffix(Pattern) für die Aufbereitung des Wertes und dient der Darstellung in BasicUI, etc. Ich glaube nicht, dass man das so einfach ändern kann.
Wenn du ein Item hast, dass per UoM gesteuert ist steht dieser Suffix auf jeden Fall auch im Status (Wert) des Items (item.state). Was möchtest du denn genau machen?
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.2 openhabian

Tokamak
Beiträge: 169
Registriert: 20. Aug 2019 08:37
Answers: 4
Wohnort: Aachen

Re: Zugriff auf Einheit aus Label

Beitrag von Tokamak »

Ändern möchte ich es auch gar nicht, zumal ich komplett textbasiert arbeite.

Ich protokolliere für die Außenwelt Items in CSV-Dateien, unabhängig von irgendwelchen OH-Persistenzlösungen.

Das baue ich generisch. Alle Member in einer Gruppe werden protokolliert, ohne dass ich die Rule anpacken muss, wenn sich die Gruppenmember ändern.

Um die Spaltennamen in der CSV zu generieren, würde ich das Label des Items nutzen, sofern vorhanden. Gut gefallen würde mir, wenn ich wüsste, ob es sich bei einem NumberItem um ein Integer oder ein Float handelt und welche Einheit es hat. Beides steht im Pattern.
Die Einheit würde ich dann in den Spaltennamen mit aufnehmen.

Das geht natürlich auch anders, etwa mit einem Tag. Es wäre eben nur praktisch.
Produktiv: Proxmox mit OH 3.4 und HABApp im LXC-Container
Entwicklung: Proxmox mit OH 4.1 und HABApp im LXC-Container

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

Re: Zugriff auf Einheit aus Label

Beitrag von udo1toni »

Das Label selbst habe ich noch nie ausgewertet, ich befürtchte aber, dass es nicht so einfach ist, das auszuwerten, weil Steuerzeichen enthalten sind. Wie die Konfiguration genau gespeichert wird, müsste man im Zweifel über den Source Code raus suchen oder einen der Entwickler fragen.

Wenn es sich um UoM Items handelt, könnte man versuchen, über Item.unit die Einheit herauszubekommen. Zumindest zeigt mir VSCode diese Methode an. Ob das funktioniert, habe ich aber nicht ausprobiert.
Im Pattern steht nur, wie der Wert in der UI dargestellt werden soll, aber nicht, welcher Wert sich wirklich dahinter verbirgt.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Benutzeravatar
peter-pan
Beiträge: 2573
Registriert: 28. Nov 2018 12:03
Answers: 25
Wohnort: Schwäbisch Gmünd

Re: Zugriff auf Einheit aus Label

Beitrag von peter-pan »

Ich weiss zwar nicht ob das Sinn macht oder generisch funktioniert, aber evtl. bietet des Rest-Api hier eine Möglichkeit ?!
Beispiel eines Items:

Code: Alles auswählen

String OutValue "Value: " { http="<[http://192.xxx.yyy.zz:8080/rest/items/localDayTempAVG_0:60000:JSONPATH($.stateDescription.pattern)]"}
Das Ergebnis im Item sieht dann so aus:

Code: Alles auswählen

openhab> smarthome:items list | grep  -i OutValue
OutValue (Type=StringItem, State=%.1f %unit%, Label=Value: , Category=null)
openhab>
Der JSON sieht hier so aus:

Code: Alles auswählen

{
  "link": "http://192.xxx.yyy.zz:8080/rest/items/localDayTempAVG_0",
  "state": "18.65 °C",
  "stateDescription": {
    "pattern": "%.1f %unit%",
    "readOnly": false,
    "options": []
  },
  "editable": false,
  "type": "Number:Temperature",
  "name": "localDayTempAVG_0",
  "label": "Temperatur Ø Heute",
  "category": "temperature",
  "tags": [],
  "groupNames": [
    "gOWM1"
  ]
}
Evtl. lässt sich das in einer Rule auswerten und die einzelnen Felder dann entsprechend in einer Variablen konkatenieren.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.1.2 openhabian

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

Re: Zugriff auf Einheit aus Label

Beitrag von udo1toni »

Merke: Wenn etwas sehr kompliziert zu programmieren ist, denkst Du verkehrt ;)

Gut, es kann auch sein, dass der Erfinder/Entwickler schlicht etwas vergessen hat, und das mag in diesem Fall sogar so sein, auf der anderen Seite ist aber schon das Ansinnen, den Event Bus über CSV dateien zu sichern, ziemlich am Konzept von openHAB vorbei.
Es gab mal die logging persistence, die hätte man für so etwas verwenden können, oder man erledigt das über MySQL oder eine andere SQL Datenbank (die haben dann meist auch Exportfilter nach CSV).
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Tokamak
Beiträge: 169
Registriert: 20. Aug 2019 08:37
Answers: 4
Wohnort: Aachen

Re: Zugriff auf Einheit aus Label

Beitrag von Tokamak »

Wie ich an anderer Stelle schon schrieb, habe ich KNX und einen HS 3. Der kann (nur) CSV-Dateien schreiben, in denen ich Zählerstände, Tagessummen und Maximalwerte protokolliere, um sie auswerten zu können. Die Auswertungsinfrastruktur besteht seit Jahren.
Das Schreiben der Archive in OH übernehmen bei mir keine 100 Zeilen Code. Das ist ein zu geringer Preis, um das alles "auf neu" umzustellen.

Die item.unit schaue ich mir an, auch das JSON. Habt vielen Dank für die Ideen.

An den Gedanken, dass das REST-Interface mehr Informationen ausspuckt, als mir in den Rules direkt über die Objekte zur Verfügung stehen, muss ich mich noch gewöhnen. Es widerspricht all meiner Erfahrung.
Produktiv: Proxmox mit OH 3.4 und HABApp im LXC-Container
Entwicklung: Proxmox mit OH 4.1 und HABApp im LXC-Container

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

Re: Zugriff auf Einheit aus Label

Beitrag von udo1toni »

Das REST Interface ist im Gegenteil die einzige Stelle, an der alle Informationen bereitstehen :)

Natürlich steht es Dir frei, die Daten in welcher Form auch immer weiter zu verarbeiten ;) allerdings fehlt Dir ja immer noch die Einheit und das Format (und wie ich erwähnt habe, ist das Format nur eine Festlegung der Darstellung, wenn die Zahl nur mit einer Nachkommastelle dargestellt wird, muss der Status noch lange nicht nur eine Nachkommastelle haben. Nur weil als Format Wh angegeben ist, heißt das noch lange nicht, dass diese Einheit auch korrekt ist (es sei denn, es handelt sich um UoM Items, da sollte das schon so sein).
In diesem Fall kann man natürlich davon ausgehen, dass Du die korrekten Einheiten angegeben hast ;)

Es ging mir mehr darum,festzustellen, dass es wesentlich einfachere Wege gibt.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Tokamak
Beiträge: 169
Registriert: 20. Aug 2019 08:37
Answers: 4
Wohnort: Aachen

Re: Zugriff auf Einheit aus Label

Beitrag von Tokamak »

Tatsächlich steht in item.unit die Einheit. Zuvor hatte ich nur im Interface von GenerlcItem nachgesehen und war nicht auf die Idee kommen, dass die speziellen Item-Klassen eigene Attrinbute haben könnten :roll:

Für das Format habe ich es mit einfach gemacht. Als String umgewandelt schaue ich mir an, ob ein . drin ist. Wenn nein, protokolliere ich den String, ansonsten reichen mir 3 Nachkommastellen.
Produktiv: Proxmox mit OH 3.4 und HABApp im LXC-Container
Entwicklung: Proxmox mit OH 4.1 und HABApp im LXC-Container

Antworten