2 Number item Verbinden zu einem (neg pos Werte)

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

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

Re: 2 Number item Verbinden zu einem (neg pos Werte)

Beitrag von udo1toni »

Ja, das kommt davon...

Probiere es bitte mal so:

Code: Alles auswählen

Number:Power AkkuLoad "Akku Leistung" {channel="inChannel"[profile="transform:DSL",toItemScript="|if(Float::parseFloat(input)> 0 ) - Float::parseFloat(input)"],
                                       channel="outChannel"[profile="transform:DSL",toItemScript="|if(Float::parseFloat(input)> 0 )Float::parseFloat(input)"], 
                                       unit="W", stateDescription=""[pattern="%.3f kW"]} 
Falls der Channel eine Einheit mitliefert, wird auch das nicht korrekt funktionieren, falls aber keine Einheit geliefert wird, sollte es klappen.

Wenn die Einheit mit kommt, wäre dies hier möglich:

Code: Alles auswählen

Number:Power AkkuLoad "Akku Leistung" {channel="inChannel"[profile="transform:DSL",toItemScript="|if(Float::parseFloat(input.substring(0,input.length -2))> 0 ) - Float::parseFloat(input.substring(0,input.length -2))"],
                                       channel="outChannel"[profile="transform:DSL",toItemScript="|if(Float::parseFloat(input.substring(0,input.length -2))> 0 )Float::parseFloat(input.substring(0,input.length -2))"], 
                                       unit="W", stateDescription=""[pattern="%.3f kW"]} 
Zugegeben - das sieht nicht mehr so übersichtlich aus... ;) Es ginge auch in jeder anderen installierten Scriptsprache, wobei die unterschiedlichen Sprachen hier unterschiedliche Möglichkeiten bieten :)
Der Ausdruck

Code: Alles auswählen

Float::parseFloat(input.substring(0,input.length -2))
interpretiert den übergebenen String als Float Zahl, wobei die letzten zwei Zeichen des Strings abgeschnitten werden. Sollte als Einheit also mehr als (z.B.) kW übergeben werden (das müsste dann auch in die Unit des Items...), müsste man die Anzahl abgeschnittener Zeichen anpassen. Das Leerzeichen zwischen Zahl und Einheit sollte hingegen beim Parsen keine Probleme bereiten.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Antworten