Solarwatt-Wert als String und Triggern einer Rule gut?

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
BeHoh
Beiträge: 3
Registriert: 8. Nov 2023 21:01
Answers: 0

Solarwatt-Wert als String und Triggern einer Rule gut?

Beitrag von BeHoh »

Hi,
bin Neuling in openHAB und ich versuche Werte von meiner Solarwatt-Anlage auszulesen und darzustellen.
Diese Werte sind etwa in der Form "1699473150000|1.0 W". Ich bekomme diese als String.
Damit ich eine verwertbare Zahl draus machen kann habe ich eine Rule gebaut, die bei jedem Update des Wertes ein Javascript aufruft, welches mir den String zerlegt und die eigentliche Wattzahl in ein weiteres item schreibt.
Das funktioniert so auch prima. Da ich aber neu bin: macht man das überhaupt so? Oder gibt es da eine einfachere Lösung? Immerhin habe ich ja für jedes der Solar-Items eine eigene Regel und dann noch jeweils ein Item, wo der Ausgabewert drin steht.

VG
Bernd

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

Re: Solarwatt-Wert als String und Triggern einer Rule gut?

Beitrag von udo1toni »

Herzlich willkommen im openHAB Forum!

Die klare Antwort: Das kommt darauf an... :)

Punkt 1: Welche Version von openHAB nutzt Du?
Punkt 2: wie fragst Du die Daten ab (welches Addon verwendest Du dazu)?
Punkt 3: wie sehen die Daten EXAKT aus?

Das angegebene Beispiel

Code: Alles auswählen

1699473150000|1.0 W
wäre ein heißer Kandidat für REGEX, was Du z.B. als Profile einbinden kannst:

Code: Alles auswählen

REGEX:.*|(\d+\.?\d*) W.*
liefert z.B. die Dezimalzahl nach dem senkrechten Strich, wobei die Zahl mindestens eine Stelle hat, eventuell folgt irgendwo innerhalb der Zahl ein Dezimalpunkt, gefolgt von beliebig vielen weiteren Ziffern. Nach der letzten Ziffer muss ein Leerzeichen folgen, welches nicht mehr mit übergeben wird.
Im Beispiel sollte der Ausdruck also 1.0 als Ergebnis liefern, was dann dank des Profiles direkt ins verknüpfte Number Item geschrieben werden kann.
Der Channel muss dazu ein String Channel sein, das Item sollte vom Typ Number sein.
Wenn Du openHAB4 verwendest, kannst Du auch noch versuchen das W mit zu übergeben:

Code: Alles auswählen

REGEX:.*|(\d+\.?\d* W).*
und das Item als Number:Power definieren. In den Metadaten des Items musst Du dann noch das Feld unit auf W setzen.
Falls Du die Daten über mqtt oder auch http einsammelst, kannst Du das REGEX auch direkt im Channel definieren und dort auch die unit definieren (aber im eigentlichen Wert abschneiden, also das erste REGEX verwenden)
REGEX gehört zu den Transformation Services und muss als Addon installiert werden.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

BeHoh
Beiträge: 3
Registriert: 8. Nov 2023 21:01
Answers: 0

Re: Solarwatt-Wert als String und Triggern einer Rule gut?

Beitrag von BeHoh »

Danke für den Tipp. Ich habe es gleich mal ausprobiert :-)
Habe openHAB 4.0.4 Mein Solarwatt Manager hat einen eigenen openhab-Server laufen und ich habe ein binding zu einem openhab-server gemacht.
Das RegEx-Addon hatte ich noch nicht, habe ich aber gleich mal installiert.

Aber irgendwie klappt es nicht. Habe Deine RegEx eingetragen, sowie selber welche probiert, erhalte aber immer NULL
in der Anzeige. Wahrscheinlich mache ich grundsätzlich was falsch (so als professioneller Neuling).

Ich klicke in Things auf mein Solar. Dort gehe ich auf Channels. Mein Wunschchannel ist schon mit 1 markiert, weil ich ein Item
dazugebaut habe.
Im Channel selber steht (string) dahinter. Im drunter angezeigten Item steht Number und Point.

Darunter bei Profile habe ich REGEX markiert und .*|(\d+\.?\d*) W.* bei regulärer Ausdruck
eingetragen.

Da kann man doch nicht viel verkehrt machen? Im Log steht nix schlimmes (außer ich vergurke den RegEx, dann schaffe ich es ins Log ;-) )

Mache ich noch was falsch?

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

Re: Solarwatt-Wert als String und Triggern einer Rule gut?

Beitrag von udo1toni »

My bad... |ist ein Steuererzeichen in Regex, das muss escaped werden:

Code: Alles auswählen

REGEX:.*\|(\d+\.?\d*) W.*
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

BeHoh
Beiträge: 3
Registriert: 8. Nov 2023 21:01
Answers: 0

Re: Solarwatt-Wert als String und Triggern einer Rule gut?

Beitrag von BeHoh »

Jawoll, nu gehts :-) Den Strich habe ich bei meinen ganze Versuchen irgendwie ignoriert ....

Dankesehr :-D

Antworten