Seite 3 von 6
Re: HTTP Umstellung V1 => V3
Verfasst: 10. Feb 2021 22:22
von udo1toni
Das Problem ist hier vermutlich, dass Du Number:Temperature als Itemtyp verwendest, aber keine Einheit mit angibst.
Das eine wäre (einfach um sicherzustellen, dass es wie geplant funktioniert), ein bisschen Logging einzubauen, das andere wäre, die Einheit zu ergänzen. So:
Code: Alles auswählen
rule "Komma zu Punkt"
when
Member of gIN changed
then
logInfo("kommapunkt","Triggerndes Item: {}",triggeringItem.name)
val myOut = gOUT.members.filter[i|i.name == triggeringItem.name.split("_").get(1)+"_OUT"].head
logInfo("kommapunkt","Item Out: {}",myOut.name)
myOut.postUpdate(Float::parseFloat(String::format("%s",triggeringItem.state).replace(',','.'))|°C)
end
Natürlich funktioniert das dann nur mit Number:Temperature Items als Output.
Re: HTTP Umstellung V1 => V3
Verfasst: 11. Feb 2021 09:16
von wosch
Ich hatte in der rule für ein Item auch schon Number:Temperature und da auch keine Einheit angegeben:
Code: Alles auswählen
rule "Istwert HK1"
when
Item HTTPLWZAnlage_IstwertHK1 changed
then
LWZ_Istwert_HK1.postUpdate(Float::parseFloat(String::format("%s",HTTPLWZAnlage_IstwertHK1.state).replace(',','.')))
end
Da hat es funktioniert.
Ich habe für die neue all-in-one-rule den Itemtyp für _OUT trotzdem jetzt auf Number geändert. Da die Items Temperaturen, Druck, Volumenstrom und Dimensionless sind, klappt es sonst nicht mit der Einheit. Leider funktioniert es trotzdem noch nicht. Logging ist auch eingebaut und es kommt folgende Meldung:
Code: Alles auswählen
2021-02-11 09:03:11.125 [INFO ] [nhab.core.model.script.LWZKommaPunkt] - Triggerndes Item: LWZAnlageIstwertHK1_IN
2021-02-11 09:03:11.125 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'LWZ-1' failed: cannot invoke method public abstract java.lang.String org.openhab.core.items.Item.getName() on null in LWZ
Re: HTTP Umstellung V1 => V3
Verfasst: 11. Feb 2021 14:28
von udo1toni
Und die beiden Items heißen LWZAnlageIstwertHK1_IN und LWZAnlageIstwertHK1_OUT?
Re: HTTP Umstellung V1 => V3
Verfasst: 11. Feb 2021 15:38
von wosch
LWZAnlageIstwertHK1_IN
LWZAnlageIstwertHK1_OUT
beides gerade nochmal per copy&paste aus der UI gezogen. Das _IN Item wird im log als triggerndes Item auch mit dem korrekten Namen ausgegeben: LWZAnlageIstwertHK1_IN
Re: HTTP Umstellung V1 => V3
Verfasst: 11. Feb 2021 16:26
von udo1toni
Strange.
Irgendwie geht was beim filtern auf das richtige Item schief.
Re: HTTP Umstellung V1 => V3
Verfasst: 11. Feb 2021 16:31
von udo1toni
Etwas Debugging, um zu verstehen, was da schief geht:
Code: Alles auswählen
rule "Komma zu Punkt"
when
Member of gIN changed
then
logInfo("kommapunkt","Triggerndes Item: {}",triggeringItem.name)
val myOut = gOUT.members.forEach[i|
logInfo("kommapunkt","Schleife: aktuelles Item Out: {}",i.name)
if(i.name == triggeringItem.name.split("_").get(1)+"_OUT")
logInfo("kommapunkt","Treffer: Item Out: {}",i.name)
]
// logInfo("kommapunkt","Item Out: {}",myOut.name)
// myOut.postUpdate(Float::parseFloat(String::format("%s",triggeringItem.state).replace(',','.'))|°C)
end
Die Rule muss jetzt bei jedem Aufruf eine Liste aller Items in gOut ausspucken und beim richtigen Item den Treffer melden...
Re: HTTP Umstellung V1 => V3
Verfasst: 11. Feb 2021 17:11
von wosch
Erstmal Danke, dass du mir so geduldig hilfst!
Bei der neuen rule werden im VSC 2 Fehler angezeigt:
Code: Alles auswählen
The value of the local variable myOut is not used(org.eclipse.xtext.xbase.validation.IssueCodes.unused_local_variable)
Type mismatch: type void is not applicable at this location(org.eclipse.xtext.xbase.validation.IssueCodes.incompatible_types)
myOut ist gelb unterstrichen, alles danach bis zum ] ist rot unterstrichen
Re: HTTP Umstellung V1 => V3
Verfasst: 11. Feb 2021 17:14
von wosch
es wird aber trotzdem geloggt, die rule läuft also scheinbar trotzdem:
Code: Alles auswählen
2021-02-11 17:10:46.191 [INFO ] [openhab.core.model.script.kommapunkt] - Triggerndes Item: LWZAnlageIstwertHK1_IN
2021-02-11 17:10:46.193 [INFO ] [openhab.core.model.script.kommapunkt] - Schleife: aktuelles Item Out: LWZAnlageIstwertHK1_OUT
2021-02-11 17:10:46.195 [INFO ] [openhab.core.model.script.kommapunkt] - Schleife: aktuelles Item Out: LWZAnlageSollwertHK1_OUT
Aktuell habe ich nur die beiden Paare Istwert und Sollwert angelegt.
Wenn ich die logs und die rule richtig verstehe, geht er die Items durch, erzielt aber keinen Treffer, obwohl er das sollte?!
Re: HTTP Umstellung V1 => V3
Verfasst: 11. Feb 2021 18:02
von udo1toni
Genau, das ist der Punkt...
Die erste Meldung stammt von der Val Definition... Die Schleife wurde dennoch durchlaufen, das ist ja gut. Wir probieren weiter...
Code: Alles auswählen
rule "Komma zu Punkt"
when
Member of gIN changed
then
logInfo("kommapunkt","Triggerndes Item: {}",triggeringItem.name)
logInfo("kommapunkt","Teilstring: {}",triggeringItem.name.split("_").get(1))
// val myOut = gOUT.members.filter[i|i.name.startsWith(triggeringItem.name.split("_").get(1))].head
// logInfo("kommapunkt","Item Out: {}",myOut.name)
// myOut.postUpdate(Float::parseFloat(String::format("%s",triggeringItem.state).replace(',','.'))|°C)
end
Re: HTTP Umstellung V1 => V3
Verfasst: 11. Feb 2021 18:40
von wosch
Code: Alles auswählen
2021-02-11 18:36:47.014 [INFO ] [openhab.core.model.script.kommapunkt] - Triggerndes Item: LWZAnlageIstwertHK1_IN
2021-02-11 18:36:47.015 [INFO ] [openhab.core.model.script.kommapunkt] - Teilstring: IN
Er nimmt den falschen Teil des Item-Names, oder? D.h in der rule get(0) statt get(1)?
EDIT: Yes, damit geht's!!
Danke Udo!!