Zustand einer Enigma2 Box

Hi,
ich suche einen Weg den zustand meiner Vu+ Duo2 mit einem VD und LUA abzufragen.

Das Auslesen von Kanal und Sendung habe ich im Fibaro Forum schon gefunden und soweit angepasst, dass es läuft.

Zum Abfragen vom Zustand müsste das LUA Script xml auslesen können.

Abfrage:
http://ip_der_box/web/powerstate

Ausgabe

<?xml version="1.0" encoding="UTF-8"?>
<e2powerstate>
	<e2instandby>false</e2instandby>
</e2powerstate>

Versuche:

local Vu = Net.FHttp("192.168.178.50",80);

response ,status, errorCode = Vu:GET("/web/powerstate");
jsonTable = json.encode(errorCode);

if status == 0
  then
  fibaro:debug("on")
  --fibaro:setGlobal("Vu", "0")
  fibaro:log("Vu ist an");
  else
  fibaro:debug("off")
  --fibaro:setGlobal("Vu", "1")
  fibaro:log("Vu ist aus");
end 

Leider kommt bei debug immer off
wenn jemand ne Idee hat wäre ich dankbar.

ulti

Hi,
ich habe das ganze nochmal angepasst, im Debug wird mir auch der richtige zustand angezeigt. Wenn die Box an ist kommt false, wenn aus dann eben true.
Aber meine if Anwendung geht nicht wirklich. Könnte sich das jemand mal bitte anschauen.
Danke.

Vu = Net.FHttp("192.168.178.50");
dane, status, errorcode = Vu:GET("/web/powerstate");
data = string.find(dane,"<e2instandby>");
datatxt = string.sub(dane ,data+14);

if not (datatxt == false) 
  then
	fibaro:debug("on")
	fibaro:debug(datatxt)
else
  	fibaro:debug("off")
	fibaro:debug(datatxt)
end

ulti

Hi ulti,

du schreibst wenn die box an ist dann false, in deiner Bedingung schreibst du aber:
Wenn nicht (datatxt == false) dann on, eigentlich müsste es doch, wenn (datatxt == false) dann on heißen.

If ( datatxt == false)
then

Gruß Alex

Hallo AlexM,

danke das du dir das mal angeschaut hast.
Ja ich habe mit dem “not” auch getestet, dort kommt wenn die Box an ist im Debug (on und false) so wie es sein sollte.
Wenn ich die Box dann aus mache kommt im Debug (on und true) das ist dann aber nicht richtig es sollte (off und true) kommen.
Wenn ich das “not” entferne und die Box ist an, kommt im Debug (off und false) das wäre ja nicht richtig, denn im Standby sollte (off und true) kommen.

Scheint ein Fehler in der Bedingung zu sein.
Der Wert wird an datatxt übergeben aber in beiden Fällen not…

Versuch mal bitte

if datatxt == false
then

Bei if datatxt == false then
kommt wenn die Box an ist
[DEBUG] 20:50:22: off
[DEBUG] 20:50:22: false

wenn die Box aus ist
[DEBUG] 20:50:41: off
[DEBUG] 20:50:41: true

die erste Ausgabe ist ja falsch,
die zweite ist richtig.

Das es an der Bedingung liegt vermute ich auch.
Die Abfrage wird ja laut Debug richtig ausgewertet.
Es passt nur mit dem wenn das ist - DANN MACHE DAS - sonst das, er macht ja immer das sonst.

Kann es sein das er das “false” nicht richtig auswertet was er abfragt?

Das komische ist das im Debug ja true und false ausgegeben wird.

Habe schon überlegt, wenn man die datatxt an eine Variable übergibt ob das dann funktioniert?

local Power = datatxt

if (Power == false)
then

Weiß nicht ob das funktionieren würde???

Nein leider Funktioniert das auch nicht, es kommt das gleiche Ergebnis wie oben.

Ich habe mal ein wenig weiter getestet und habe mir mal nur einen Teil der Abfrage ausgeben lassen. “false-> fa”, das funktioniert jetzt.

Vu = Net.FHttp("192.168.178.50");
dane = Vu:GET("/web/powerstate");
data = string.find(dane,"<e2instandby>");
datatxt = string.sub(dane ,data+14, data+15);

if datatxt == "fa"
  then
	fibaro:debug("on")
	fibaro:debug(datatxt)
	fibaro:log("Vu+ Duo2 ist an")
  else
	fibaro:debug("off")
	fibaro:debug(datatxt)
	fibaro:log("Vu+ Duo2 ist aus")
end

Debug:
[DEBUG] 18:40:40: on
[DEBUG] 18:40:40: fa
[DEBUG] 18:41:20: off
[DEBUG] 18:41:20: tr

Hi ulti,

Did you manage to make this script work. I’m really interested.

Thanks