..das muss doch irgendwie zu kriegen sein. Ich hab mir jetzt extra noch ein zweites Item angelegt (Wdmycloudtemperatur), allerdings ohne Channel, da ich das Binding nicht im Einsatz habe und befülle es mit einem String, der dann wieder weiter verarbeitet wird und das klappt ganz hervorragend.
Hier noch mal meine Test-Rule:
Code: Alles auswählen
rule "snmp String nach number"
when
Item Dummy_4 changed to ON
then
// ----- nur für Testszenario ----
val snmpString ="Centigrade:30 Fahrenheit:86" // Hilfsvariable, da kein Channel für Wdmycloudtemperatur
Wdmycloudtemperatur.postUpdate(snmpString) // hier wird das String Item erzeugt, aus der Variablen
logInfo("snmpstring","snmpString - str: {}",Wdmycloudtemperatur.state.toString) // für das erzeugte Item wird ein Log ausgegeben
// ----- Ende Testszenario
val str = Wdmycloudtemperatur.state.toString // String-Item in einer Variablen zwischenspeichern
logInfo("snmpstring","String - str: {}",str) // Log str
val str2 = transform("REGEX",".*:(.*) .*",str) // Filtern der Variablen mit REGEX und überführen in ein zweite Variable
logInfo("snmpstring","Celsius (String str2): {}",str2) // Log str2
val num = Float::parseFloat(str2) // Umwandlung in Fliesskommazahl
logInfo("snmpstring","Celsius (Number - num): {}",num) // Log der Fliesskommazahl
WdmycloudtemperaturCelsius.postUpdate(num) // zurückschreiben des Wertes in ein neues Item
logInfo("snmpstring","Celsius (Celsius): {}",WdmycloudtemperaturCelsius) // Log des Wertes, des neuen Items
end
Die 3 Zeilen des Testszenarios brauchst du ja nicht, die kannst du auskommentieren.
Das
muss dabei im Log rauskommen:
Code: Alles auswählen
2020-12-21 21:39:20.304 [INFO ] [se.smarthome.model.script.snmpstring] - String - str: Centigrade:30 Fahrenheit:86
2020-12-21 21:39:20.306 [INFO ] [se.smarthome.model.script.snmpstring] - Celsius (String str2): 30
2020-12-21 21:39:20.308 [INFO ] [se.smarthome.model.script.snmpstring] - Celsius (Number - num): 30.0
2020-12-21 21:39:20.310 [INFO ] [se.smarthome.model.script.snmpstring] - Celsius (Celsius): WdmycloudtemperaturCelsius (Type=NumberItem, State=30.0, Label=System Temperatur Celsius, Category=null)
Stelle sicher, dass es die Regel (den Namen) nicht mehrfach gibt und auch keine andere Regel gleichzeitig auf die Items zugreift. REGEX-Transformation muss natürlich installiert sein (sonst fällt mir grad nichts mehr ein

)
Edit:
Grad ist mir doch noch was eingefallen: Du kannst auch mal probieren, den Channel in deinem Item "abzuhängen" und dann die Test-Regel komplett laufen zu lassen.
