Vu+ steuert das Home Center

Hey,

erstmal muss ich sagen das das virtual Device Klasse ist und auch 1a mit der Gigablue funktioniert.

Was habe ich vor?

Wenn die Gigablue eingeschaltet wird und die Rollos offen sind bzw weniger als 60% geschlossen sind soll der von mir erstellte Button gedrückt werden welcher so aussieht:

local selfId = fibaro:getSelfId()
local ip = fibaro:get(selfId, "IPAddress")
local counter = 0
local answer = 0

local url = "/web/message?text=Rollo%20oben!%20Soll%20das%20Rollo%20geschlossen%20werden?&type=0&timeout=15"

local ws = Net.FHttp(ip, 80)
local resp = ws:GET(url)

while (counter <= 15 and answer == 0) do
  		fibaro:sleep(1*1000)
  		fibaro:debug(counter);
  		counter = counter + 1
  		local url2 = "/web/messageanswer?getanswer=now"
		local ws2 = Net.FHttp(ip, 80)
		local resp2 = ws2:GET(url2)
  		--KEINE ANTWORT GEKOMMEN
  		a, b = string.find(resp2,"Keine rechtzeitige Antwort")
  			if (a == nil and b == nil) then
    			fibaro:debug('a & b == NIL')
    		else
    			response_false = string.sub(resp2, a, b)
    			fibaro:debug(response_false)
    		end
  		-- ANTWORT:JA
  		c, d = string.find(resp2,"Antwort lautet JA!")
  			if (c == nil and d == nil) then
    			fibaro:debug('c & d == NIL')
    		else
    			response_true_yes = string.sub(resp2, c, d)
    			fibaro:call(66, "setValue", "60");
    			fibaro:call(68, "setValue", "60");
    			fibaro:debug(response_true_yes)
    			answer = 1
    		end
  		-- ANTWORT: NEIN
  		e, f = string.find(resp2,"Antwort lautet NEIN!")
  			if (e == nil and f == nil) then
    			fibaro:debug('e & f == NIL')
    		else
    			response_true_no = string.sub(resp2, e, f)
    			fibaro:debug(response_true_no);
    			answer = 1
    		end
  	end
-- COUNTER ABGELAUFEN oder ANTWORT ERFOLGT
	if (answer == 1) then
  	-- ANTWORT ERFOLGT
  		fibaro:debug('Antwort erfolgt')
  	else
  		-- COUNTER IST ABGELAUFEN. ALTERNATIVE?
  		fibaro:debug('COUNTER OFF');
  end

Er fragt so dann im TV ob die Rollos auf 60% geschlossen werden sollen.

Kann mir jemand sagen wie ich die Scene erstelle. Ich hab es mal verucht aber geht natürlich nicht. Habe auch nicht so viel Ahnung mit LUA.

--[[
%% properties
value 66
value 68
value 193
%% events
%% globals
--]]

local scene = 46
local VD_ID = 193
local roller = 66
local roller1 = 68
-- Lösche doppelte Szene(n)
if (fibaro:countScenes()>1) then 
 fibaro:abort(); 
end
-- Drücke Button
if tonumber(fibaro:call(VD_ID, "pressButton", "button15")  and (tonumber(fibaro:getValue(roller, "value"))) < 1 and (tonumber(fibaro:getValue(roller1, "value")))) < 1 then
    fibaro:call(VD_ID, "pressButton", "button121")
   end

Hi,

versuch mal eine Bockszene zuammenzuklicken und diese dann in LUA umzuwandeln. Dann wirst du deine gemachten Fehler (Trigger, if-Abfrage) aufgezeigt bekommen.

Gruß

Hey Boomx,

gerade erst Zeit gehabt danach zu schauen. Hatte das via Blockszene schon einmal versucht. Auch jetzt nochmal, aber
ich kann das drücken des Powerbuttons nicht als trigger verwenden. Wie kann ich das verwirklichen das wenn der Powerbutton gedrückt wird und die Rollos geöffnet sind mein erstellter Button gedrückt wird… kannst du mir nen tip oder lösung nennen?

Das Drücken einer Taste eines VDs kannst du nicht als Trigger nutzen. Du kannst aber im LUA-Code des Buttons zusätzlichen LUA-Code hinzufügen oder alternativ startest du darüber eine weitere Szene.

Gruß

ok werde mich mal da durch kämpfen.
Habe allerdings noch eine frage.
Wenn ich den Button so nutze schaltet er mir bei “Keiner Antwort trotzdem das Licht an”
Ist etwas falsch im Code? Oder muss ich Fibaro sagen “Mach nichts”? Wenn ja wi gebe ich diesen Befehl?

Danke schonmal

local selfId = fibaro:getSelfId()
local ip = fibaro:get(selfId, "IPAddress")
local counter = 0
local answer = 0

local url = "/web/message?text=Es%20ist%20schon%20sehr%20dunkel!%20Soll%20das%20Ambientelicht%20eingeschaltet%20werden?&type=0&timeout=15"

local ws = Net.FHttp(ip, 80)
local resp = ws:GET(url)

while (counter <= 15 and answer == 0) do
  		fibaro:sleep(1*1000)
  		fibaro:debug(counter);
  		counter = counter + 1
  		local url2 = "/web/messageanswer?getanswer=now"
		local ws2 = Net.FHttp(ip, 80)
		local resp2 = ws2:GET(url2)
  		--KEINE ANTWORT GEKOMMEN
  		a, b = string.find(resp2,"Keine rechtzeitige Antwort")
  			if (a == nil and b == nil) then
    			fibaro:debug('a & b == NIL')
    		else
    			response_false = string.sub(resp2, a, b)
    			fibaro:debug(response_false)
    		end
  		-- ANTWORT:JA
  		c, d = string.find(resp2,"Antwort lautet JA!")
  			if (c == nil and d == nil) then
    			fibaro:debug('c & d == NIL')
    		else
    			response_true_yes = string.sub(resp2, c, d)
    			fibaro:call(161, "turnOn");
    			fibaro:call(71, "setValue", "20");
    			fibaro:call(202, "setValue", "20");
    			fibaro:debug(response_true_yes)
    			answer = 1
    		end
  		-- ANTWORT: NEIN
  		e, f = string.find(resp2,"Antwort lautet NEIN!")
  			if (e == nil and f == nil) then
    			fibaro:debug('e & f == NIL')
    		else
    			response_true_no = string.sub(resp2, e, f)
    			fibaro:debug(response_true_no);
    			answer = 1
    		end
  	end
-- COUNTER ABGELAUFEN oder ANTWORT ERFOLGT
	if (answer == 1) then
  	-- ANTWORT ERFOLGT
  		fibaro:debug('Antwort erfolgt')
  	else
  		-- COUNTER IST ABGELAUFEN. ALTERNATIVE?
  		fibaro:debug('COUNTER OFF');
  end

Hi,

das kann eigentlich nicht sein. Der Button macht in keinem Fall das Licht an. Poste doch mal bitte den Debug des Buttons, wo die Zeilen dargestellt werden.

Gruß

Hey,

ja er sagt nach ablauf der zeit ja.

[DEBUG] 08:47:39: 0
[DEBUG] 08:47:39: Keine rechtzeitige Antwort
[DEBUG] 08:47:39: c & d == NIL
[DEBUG] 08:47:39: e & f == NIL
[DEBUG] 08:47:40: 1
[DEBUG] 08:47:40: Keine rechtzeitige Antwort
[DEBUG] 08:47:40: c & d == NIL
[DEBUG] 08:47:40: e & f == NIL
[DEBUG] 08:47:41: 2
[DEBUG] 08:47:41: Keine rechtzeitige Antwort
[DEBUG] 08:47:41: c & d == NIL
[DEBUG] 08:47:41: e & f == NIL
[DEBUG] 08:47:42: 3
[DEBUG] 08:47:42: Keine rechtzeitige Antwort
[DEBUG] 08:47:42: c & d == NIL
[DEBUG] 08:47:42: e & f == NIL
[DEBUG] 08:47:43: 4
[DEBUG] 08:47:43: Keine rechtzeitige Antwort
[DEBUG] 08:47:43: c & d == NIL
[DEBUG] 08:47:43: e & f == NIL
[DEBUG] 08:47:44: 5
[DEBUG] 08:47:44: Keine rechtzeitige Antwort
[DEBUG] 08:47:44: c & d == NIL
[DEBUG] 08:47:44: e & f == NIL
[DEBUG] 08:47:45: 6
[DEBUG] 08:47:45: Keine rechtzeitige Antwort
[DEBUG] 08:47:45: c & d == NIL
[DEBUG] 08:47:45: e & f == NIL
[DEBUG] 08:47:46: 7
[DEBUG] 08:47:46: Keine rechtzeitige Antwort
[DEBUG] 08:47:46: c & d == NIL
[DEBUG] 08:47:46: e & f == NIL
[DEBUG] 08:47:47: 8
[DEBUG] 08:47:47: Keine rechtzeitige Antwort
[DEBUG] 08:47:47: c & d == NIL
[DEBUG] 08:47:47: e & f == NIL
[DEBUG] 08:47:48: 9
[DEBUG] 08:47:48: Keine rechtzeitige Antwort
[DEBUG] 08:47:48: c & d == NIL
[DEBUG] 08:47:48: e & f == NIL
[DEBUG] 08:47:49: 10
[DEBUG] 08:47:49: Keine rechtzeitige Antwort
[DEBUG] 08:47:49: c & d == NIL
[DEBUG] 08:47:49: e & f == NIL
[DEBUG] 08:47:50: 11
[DEBUG] 08:47:50: Keine rechtzeitige Antwort
[DEBUG] 08:47:50: c & d == NIL
[DEBUG] 08:47:50: e & f == NIL
[DEBUG] 08:47:51: 12
[DEBUG] 08:47:51: Keine rechtzeitige Antwort
[DEBUG] 08:47:51: c & d == NIL
[DEBUG] 08:47:51: e & f == NIL
[DEBUG] 08:47:52: 13
[DEBUG] 08:47:52: a & b == NIL
[DEBUG] 08:47:52: Antwort lautet JA!
[DEBUG] 08:47:52: e & f == NIL
[DEBUG] 08:47:52: Antwort erfolgt

Hey Boomx, Kannst du sehen warum das Licht an geht?

Sent from my SM-G950F using siio.de - Forum mobile app powered by Tapatalk

Hey,

es scheint so als würde die box selbst ja drücken nach Ablauf der Zeit. Kann das sein.
Habe eine gigablue quad Hd. Kann es damit zusammen hangen?
Habe einen 2. Button für Rollos erstellt, hier passiert das gleiche. Keine Antwort gleich ja.

Irgendjemand eine Idee?

Grüße

Hi,

dann wird es so sein, dass am Ende der Zeit immer eine Entscheidung zwischen JA/NEIN fällt. Müsste ich mal testen, ob das wirklich so ist.

Gruß

Hallo,
ich habe eine DM8000 und verwende dieses plugin.
Habe aber ein problem, wenn ich über den Browser den status der dreambox abfrage mit /web/messageanswer?getanswer=now funktioniert das script mit Licht ein/aus.
Sobald ich den Browser geschlossen habe funktioniert das script nicht mehr.

Weis einer woran es liegen kann?

local selfId = fibaro:getSelfId() local ip = fibaro:get(selfId, "IPAddress") local counter = 0 local answer = 0

local url = “/web/message?text=Balkon%20Licht%20ist%20AN!%20Soll%20das%20Licht%20anbleiben?&type=0&timeout=30”

local ws = Net.FHttp(ip, 80)
local resp = ws:GET(url)

while (counter <= 20 and answer == 0) do
fibaro:sleep(1*1000)
fibaro:debug(counter);
counter = counter + 1
local url2 = “/web/messageanswer?getanswer=now”
local ws2 = Net.FHttp(ip, 80)
local resp2 = ws2:GET(url2)
–KEINE ANTWORT GEKOMMEN
a, b = string.find(resp2,“No answer in time”)
if (a == nil and b == nil) then
fibaro:debug(‘a & b == NIL’)
else
response_false = string.sub(resp2, a, b)
fibaro:debug(response_false)
end
– ANTWORT:JA
c, d = string.find(resp2,“Answer is YES!”)
if (c == nil and d == nil) then
fibaro:debug(‘c & d == NIL’)
else
response_true_yes = string.sub(resp2, c, d)
fibaro:call(184, “turnOn”);fibaro:debug(response_true_yes)
answer = 1
end
– ANTWORT: NEIN
e, f = string.find(resp2,“Answer is NO!”)
if (e == nil and f == nil) then
fibaro:debug(‘e & f == NIL’)
else
response_true_no = string.sub(resp2, e, f)
fibaro:call(184, “turnOff”);fibaro:debug(response_true_no);
answer = 1
end
end
– COUNTER ABGELAUFEN oder ANTWORT ERFOLGT
if (answer == 1) then
– ANTWORT ERFOLGT
fibaro:debug(‘Response is’)
else
– COUNTER IST ABGELAUFEN. ALTERNATIVE?
fibaro:call(184, “turnOn”);fibaro:debug(‘COUNTER OFF’);
end