HTTP Umstellung V1 => V3

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

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

Re: HTTP Umstellung V1 => V3

Beitrag 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.
openHAB4.3.6 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

wosch
Beiträge: 53
Registriert: 30. Dez 2020 08:36
Answers: 0

Re: HTTP Umstellung V1 => V3

Beitrag 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

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

Re: HTTP Umstellung V1 => V3

Beitrag von udo1toni »

Und die beiden Items heißen LWZAnlageIstwertHK1_IN und LWZAnlageIstwertHK1_OUT?
openHAB4.3.6 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

wosch
Beiträge: 53
Registriert: 30. Dez 2020 08:36
Answers: 0

Re: HTTP Umstellung V1 => V3

Beitrag 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

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

Re: HTTP Umstellung V1 => V3

Beitrag von udo1toni »

Strange.

Irgendwie geht was beim filtern auf das richtige Item schief.
openHAB4.3.6 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

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

Re: HTTP Umstellung V1 => V3

Beitrag 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...
openHAB4.3.6 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

wosch
Beiträge: 53
Registriert: 30. Dez 2020 08:36
Answers: 0

Re: HTTP Umstellung V1 => V3

Beitrag 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

wosch
Beiträge: 53
Registriert: 30. Dez 2020 08:36
Answers: 0

Re: HTTP Umstellung V1 => V3

Beitrag 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?!

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

Re: HTTP Umstellung V1 => V3

Beitrag 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
openHAB4.3.6 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

wosch
Beiträge: 53
Registriert: 30. Dez 2020 08:36
Answers: 0

Re: HTTP Umstellung V1 => V3

Beitrag 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!! :mrgreen: 8-)
Danke Udo!!

Antworten