Seite 1 von 2

Rule für Item zu aktualisieren

Verfasst: 4. Mai 2020 12:36
von stargazer
Hallo,
sorry für die Anfängerfrage.
Ich möchte meinen Receiver in OH einbinden. Dazu hab ich ein Item und eine Rule erstellt
vu.items

Code: Alles auswählen

Switch	VuPower			"Power"				<switch>			(gVu)
String	VuPowerstatus		"Powerstatus [%s]"		<screen>			(gVu)		{http="<[http://root:Passwort@10.10.10.10:80/web/powerstate:3000:REGEX(.*?<e2instandby>(.*?)</e2instandby>.*)]"}
vu.rules

Code: Alles auswählen

rule "VuPower"
    when
        Item VuPower received command
    then
        if(receivedCommand == ON)
            sendHttpGetRequest ("http://root:Passwort@10.10.10.10:80/web/remotecontrol?command=116")
        if(receivedCommand == OFF)
            sendHttpGetRequest ("http://root:Passwort@10.10.10.10:80/web/remotecontrol?command=116")
end
Damit kann ich im BasicUI den Reciver Ein- und Ausschalten. Ebenfalls sehe ich den Powerstatus (false,true).
Mit einer weiteren Rule möchte ich den Status vom Switch "VuPower" ändern auch wenn ich mit der Receiver Fernbedienung schalte.

Code: Alles auswählen

rule "VuPowerstatus"
    when
        Item VuPowerstatus received update
    then
    logInfo("Test", "Test")
        if (VuPowerstatus == "false")
            logInfo("Status Update", "false")
            VuPower.postUpdate(ON)
        if (VuPowerstatus == "true")
            logInfo("Status Update", "true")
            VuPower.postUpdate(OFF)
end
Das Test Log wird geschrieben. Leider funktioniert die "if" Abfrage nicht wie gewünscht um den VuPower.postUpdate abzusetzen.
Im Log erscheint der VuPowerstatus auch versetzt. Liegt es eventuell auch daran das der Wert neu formatiert werden muss, oder ist einfach meine Rule falsch ?

Code: Alles auswählen

2020-05-04 11:15:27.561 [ome.event.ItemCommandEvent] - Item 'VuPower' received command ON
2020-05-04 11:15:27.593 [vent.ItemStateChangedEvent] - VuPower changed from OFF to ON
2020-05-04 11:15:28.432 [vent.ItemStateChangedEvent] - VuPowerstatus changed from 
false	 to 
true	

2020-05-04 11:15:28.432 [INFO ] [.eclipse.smarthome.model.script.Test] - Test

Re: Rule für Item zu aktualisieren

Verfasst: 4. Mai 2020 12:41
von Darkwin101
Grundsätzlich muss ein Befehl auch der If Anweisung zugeordnet werden, dies geschieht mit den Doppel Klammern:

Code: Alles auswählen

rule "VuPowerstatus"
    when
        Item VuPowerstatus received update
    then
    logInfo("Test", "Test")
        if (VuPowerstatus == "false"){
            logInfo("Status Update", "false")
            VuPower.postUpdate(ON)}
        if (VuPowerstatus == "true"){
            logInfo("Status Update", "true")
            VuPower.postUpdate(OFF)}
end
Sonst werden alle Befehle einfach nacheinander abgearbeitet.
Das gleiche gilt auch für die erste Regel die du gepostet hast.

Re: Rule für Item zu aktualisieren

Verfasst: 4. Mai 2020 12:59
von stargazer
vielen Dank.
Im Log sehe ich aber nach wie vor nur den Test.
Kann ich die Abfrage

Code: Alles auswählen

if (VuPowerstatus == "false"){
logInfo("Status Update", "false")
VuPower.postUpdate(ON)}
überhaupt so formulieren?
Wie kann ich mir im Log den Wert von VuPowerstatus anzeigen lassen?

Code: Alles auswählen

logInfo(VuPowerstatus, "Test")
liefert mir die Fehlermeldung im Visual Studio Code "Type mismatch:Cannot convert StringItem to String"

Re: Rule für Item zu aktualisieren

Verfasst: 4. Mai 2020 13:10
von Darkwin101
Ah Ja sorry das ganze ist Ja ein Switch also muss es auch VuPowerstatus.state sein

Code: Alles auswählen

rule "VuPowerstatus"
    when
        Item VuPowerstatus received update
    then
    logInfo("Test", "Test")
        if (VuPowerstatus.state == "false"){
            logInfo("Status Update", "false")
            VuPower.postUpdate(ON)}
        if (VuPowerstatus.state == "true"){
            logInfo("Status Update", "true")
            VuPower.postUpdate(OFF)}
end
Bei den Logs kann ich dir nicht Helfen damit kenne ich mich nicht aus das habe ich auch noch nicht so ganz Verstanden

Re: Rule für Item zu aktualisieren

Verfasst: 4. Mai 2020 13:39
von stargazer
Hab mir zusätzlich zum testen noch eine Kanalabfrage eingebaut.
Hier stimmt auch die Formatierung im Log.

Code: Alles auswählen

2020-05-04 13:20:50.703 [vent.ItemStateChangedEvent] - VuKanal changed from  to Das Erste HD
Wenn ich diese in meiner Rule abfrage funktioniert das ganze auch.

D.h. meine "VuPowerstatus" Abfrage welche diese Einträge ins Log schreibt

Code: Alles auswählen

2020-05-04 13:20:50.648 [vent.ItemStateChangedEvent] - VuPowerstatus changed from 
true	 to 
false	
müsste neu Formatiert werden weil wahrscheinlich Leerzeichen enthalten sind.

Wie kann man das erreichen?

Re: Rule für Item zu aktualisieren

Verfasst: 4. Mai 2020 13:59
von stargazer
ok, konnte mir jetzt damit behelfen das ich die Sendung Abfrage ob der Reicver an oder aus ist.

Code: Alles auswählen

rule "VuPowerstatus"
    when
        Item VuSendung received update
    then
         if (VuSendung.state != "N/A"){
            VuPower.postUpdate(ON)}
        if (VuSendung.state == "N/A"){
            VuPower.postUpdate(OFF)}
end
Trotzdem wäre der Code interessant der den VuPowerstatus Wert entsprechend zuschneiden kann, bzw. wie ich mir den Item Wert direkt im Log anzeigen lassen kann.

Danke nochmals

Re: Rule für Item zu aktualisieren

Verfasst: 4. Mai 2020 14:04
von Darkwin101
Formatierung benötigst du ja nicht wirklich du musst nur Wissen wie viele Leerzeichen enthalten sind und dann abfragen "false ..."
mit den entsprechenden Leerzeichen
Die Punkte habe ich gemacht damit der Editor Hier die Leerzeichen nicht entfernt

Re: Rule für Item zu aktualisieren

Verfasst: 4. Mai 2020 14:24
von stargazer
ahh, dachte es gibts so eine Art Befehl "StringStripWS" welcher alle Leerzeichen putzt.

Re: Rule für Item zu aktualisieren

Verfasst: 4. Mai 2020 14:33
von Darkwin101
Das ist denke ich auch möglich da kann ich dir als Anfänger leider keine Antwort drauf geben da werden sich bestimmt erfahrenere User zu Wort melden

Re: Rule für Item zu aktualisieren

Verfasst: 4. Mai 2020 18:32
von udo1toni
Ich bin etwas irritiert von Deiner ersten Rule. Vielleicht ist das aber nur ein Tippfehler... ON und OFF mit identischem Befehl?

Wenn Du http://root:Passwort@10.10.10.10:80/web/powerstate im Browser eingibst, wie sieht denn die komplette Antwort aus? Vielleicht kannst Du komplett auf Rules verzichten...