Seite 3 von 3

Re: Itemwert spliten

Verfasst: 17. Dez 2020 09:28
von lenschith
Sorry ich dachte im frontail zeig es mir das auch an.

Code: Alles auswählen

/opt/openhab/userdata/logs# cat openhab.log | grep -i snmpstring

2020-12-17 08:15:58.349 [INFO ] [se.smarthome.model.script.snmpstring] - String: Centigrade:48  Fahrenheit:118
2020-12-17 08:15:58.352 [INFO ] [se.smarthome.model.script.snmpstring] - Celsius (String): Centigrade:48        Fahrenheit:118
2020-12-17 08:18:58.593 [INFO ] [se.smarthome.model.script.snmpstring] - String: Centigrade:49  Fahrenheit:120
2020-12-17 08:18:58.597 [INFO ] [se.smarthome.model.script.snmpstring] - Celsius (String): Centigrade:49        Fahrenheit:120
2020-12-17 08:27:58.951 [INFO ] [se.smarthome.model.script.snmpstring] - String: Null
2020-12-17 08:27:58.955 [INFO ] [se.smarthome.model.script.snmpstring] - Celsius (String): Null
2020-12-17 08:28:58.677 [INFO ] [se.smarthome.model.script.snmpstring] - String: Centigrade:49  Fahrenheit:120
2020-12-17 08:28:58.682 [INFO ] [se.smarthome.model.script.snmpstring] - Celsius (String): Centigrade:49        Fahrenheit:120
2020-12-17 08:58:58.657 [INFO ] [se.smarthome.model.script.snmpstring] - String: Centigrade:50  Fahrenheit:122
2020-12-17 08:58:58.665 [INFO ] [se.smarthome.model.script.snmpstring] - Celsius (String): Centigrade:50        Fahrenheit:122

Re: Itemwert spliten

Verfasst: 17. Dez 2020 09:32
von udo1toni
Es könnte noch sein, dass man den Doppelpunkt escapen muss. Ich schau mir das nachher mal in Ruhe an...


Gesendet von iPad mit Tapatalk

Re: Itemwert spliten

Verfasst: 21. Dez 2020 17:00
von lenschith
Ich habe am WE noch etwas rumgespielt aber irgendwie bin ich nicht weiter gekommen. Hast du noch mal eine Idee?

Re: Itemwert spliten

Verfasst: 21. Dez 2020 21:12
von peter-pan
Ich hatte dir doch weiter vorne beschrieben, wie ich das Testszenario aufgebaut habe und du hast auch das Item "Dummy_4" angelegt. Hast du auch einen Switch dafür in der Sitemap angelegt um diesen Schalter zu betätigen und damit die Rule auszulösen?

Code: Alles auswählen

Switch item=Dummy_4

Re: Itemwert spliten

Verfasst: 21. Dez 2020 21:31
von lenschith
Hatte ich gemacht. Habe das noch mal so nachgebaut. bekomme aber auch hier NULL.
Oder hab ich da was falsch gemacht?
Screenshot 2020-12-21 213037.png

Re: Itemwert spliten

Verfasst: 21. Dez 2020 22:00
von peter-pan
..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. :idea:

Re: Itemwert spliten

Verfasst: 21. Dez 2020 22:35
von lenschith
Danke für die super Unterstützung. Ich habe den Channel aus kommentiert und deine rule angelegt. die alte habe ich gelöscht damit hier nichts mehr stört. Leider erfolglos.

Ich habe dann vor lauter Frust die RegEx Transformation einmal deinstalliert und neu installiert und siehe da, es läuft. :?

Vielen Dank für Euren Support und für Eure Geduld. Verstehe zwar nicht ganz was da los war aber jetzt klappt es.

Grüße Lenschi