Re: 2 Number item Verbinden zu einem (neg pos Werte)
Verfasst: 16. Jun 2025 00:53
Ja, das kommt davon...
Probiere es bitte mal so:
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:
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 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.
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"]}
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"]}


Der Ausdruck
Code: Alles auswählen
Float::parseFloat(input.substring(0,input.length -2))