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
Solarwatt-Wert als String und Triggern einer Rule gut?
-
- Beiträge: 3
- Registriert: 8. Nov 2023 21:01
- udo1toni
- Beiträge: 15246
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Solarwatt-Wert als String und Triggern einer Rule gut?
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
wäre ein heißer Kandidat für REGEX, was Du z.B. als Profile einbinden kannst:
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: 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.
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
Code: Alles auswählen
REGEX:.*|(\d+\.?\d*) W.*
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).*
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
-
- Beiträge: 3
- Registriert: 8. Nov 2023 21:01
Re: Solarwatt-Wert als String und Triggern einer Rule gut?
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?

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?
- udo1toni
- Beiträge: 15246
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Solarwatt-Wert als String und Triggern einer Rule gut?
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
-
- Beiträge: 3
- Registriert: 8. Nov 2023 21:01
Re: Solarwatt-Wert als String und Triggern einer Rule gut?
Jawoll, nu gehts
Den Strich habe ich bei meinen ganze Versuchen irgendwie ignoriert ....
Dankesehr

Dankesehr
