HUE Api und Leuchten blinken lassen (PUT Befehl)

Hallo,

ich möchte bei mir eine Funktion umsetzten, wo ich seit Tagen nicht weiter komme (habe die HC2 erst 2 Wochen und stecke mit LUA noch in den Kinderschuhen)

Ich habe mir bei Siio vermutlich (fast) alle Artikel zum Thema steuern der HUE Lampen durchgelesen. Finde aber nichts, wie man eine Gruppe zum blinken bekommt.
Ich möchte bei einem bestimmten Ereignis (z.B. Türklingel) die Leuchten in einer HUE Gruppe blinken lassen.

Dazu muß ich folgenden Befehl an die HUE Bridge senden:

URL: http://192.168.0.31/api/bf5oClZkdslLtvtFrkXAleiMN-XXXXXXXXXXXXXX/groups/10/action
Methode: PUT
Body: {„bri“:255,“sat“:255,“alert“:“lselect“}

Ich scheitere an dem (richtigen LUA) PUT Befehl.

GET Befehle an IFTTT habe ich erfolgreich hin bekommen.

Z.B.
HWS = Net.FHttp(„maker.ifttt.com“)
HWSReponse = HWS:GET(„/trigger/Zeitstempel_Eingangstuer_offen/with/key/onGOFzUCgmSs8ZSyg7_A8rDuozAfjXXXXXXXXXXXXXX“)

Der Befehl ist doch bestimmt ähnlich aufgebaut. Kann mir da jemand weiterhelfen?
Danke

Hi,

Mach es doch nicht so kompliziert.
Ich nutze dafür das PlugIn.
Sieh mal hier habe ich einen scriptteil gepostet:

https://www.siio.de/board/thema/hue-strips-wetter/#post-67720

Du musst die HueID zuvor nur als Variable Array definieren…

Viele Grüße Hoggle

Hallo @Hoggle,

vielen Dank für deine Antwort. Aber ich bin vermutlich (noch) zu blöd für LUA.

Ich habe absolut keine Ahnung wo und wie ich die HueID zuvor als Variable Array definieren kann.
Außerdem möchte ich eine komplette Gruppe von Leuchten blinken lassen. Setze ich dann alle einzelnen ID der Leuchtmittel hintereinander? Durch Komma getrennt?

Ich bin zwar am Lesen wie verrückt, aber das erschließt sich mir noch nicht ganz. Fange absolut bei 0 an.

Was ist denn an diesem PUT Befehl so schwierig oder kompliziert?
Wo ist denn da mein Denkfehler?

Einen PUT-Befehl kannst du folgendermaßen absetzen:

https://forum.fibaro.com/index.php?/topic/24349-http-put-command-from-hc2-to-hcl/#comment-110722

Gruß

Alternativ geht es natürlich auch so:

https://www.siio.de/kleine-lua-scripte-teil-8-parameter-von-modulen-per-szene-aendern/

Hi,

ich lasse mit folgendem Script meine Hues blinken, wenn bei Haustüröffnung ein Fenster offen ist:

--[[
%% properties
382 value
%% events
%% globals
--]]

if fibaro:countScenes() > 1 then
   fibaro:abort()
   --fibaro:debug("Szene abgebrochen")
end

local TuerID = 382 	-- Sensor Haustür als Auslöser der Prüfung
local FensterCheckID = {306, 358, 361, 50, 26}
local hueID  = {377, 420} 	-- Hue IDs
local Dimmer = 126 		--Dimmer vor WoZi

local room = fibaro:getRoomNameByDeviceID(TuerID)
local FensterStatus = 0
local DimmerStatus = tonumber(fibaro:getValue(Dimmer, "value")) 
local DimmerAutoOn = 0  --sofern der Bewegungsmelder AUS ist, um Blinken anzuzeigen

if tonumber(fibaro:getValue(TuerID, "value")) == 0 then
	--fibaro:debug(room.."-Haustür ist ZU")
elseif tonumber(fibaro:getValue(TuerID, "value")) == 1 then
	fibaro:debug(room.."-Haustür ist OFFEN")
end 
--print("DimmerStatus: "..DimmerStatus)

-------------------------------------------------------------------------
-- Prüfung auf offene Fenster
-------------------------------------------------------------------------
function FesnterChecker()
	FensterStatus = 0
  	for i=1, #FensterCheckID do
		if tonumber(fibaro:getValue(FensterCheckID[i], "value")) == 1 then
    	--ein Fenster ist offen
      	print("Fenster ist offen in: "..fibaro:getRoomNameByDeviceID(FensterCheckID[i]))
    	FensterStatus = FensterStatus + 1
      	end
	end
  	--print ("FensterStatus aus function: "..FensterStatus)
end  
-------------------------------------------------------------------------

-------------------------------------------------------------------------
-- Blinklicht Funktion für stillen  Alarm
-------------------------------------------------------------------------
function Blinklicht()

    for i=1, #hueID do
      fibaro:call(hueID[i], "changeSaturation", 255)
      fibaro:call(hueID[i], "changeBrightness", 255)
      fibaro:call(hueID[i], "turnOn")
      fibaro:call(hueID[i], "changeHue", 65535) -- rot
    end
	fibaro:sleep(300)
    for i=1, #hueID do
      fibaro:call(hueID[i], "changeSaturation", 255)
      fibaro:call(hueID[i], "changeBrightness", 255)
      fibaro:call(hueID[i], "turnOn")
      fibaro:call(hueID[i], "changeHue", 44309) -- blau
    end
    fibaro:sleep(300)
end

function Okay()
   	for i=1, #hueID do
      fibaro:call(hueID[i], "changeSaturation", 212)
      fibaro:call(hueID[i], "changeBrightness", 255)
      fibaro:call(hueID[i], "changeHue", 26241) -- grün
      fibaro:call(hueID[i], "turnOn")
    end
  	fibaro:sleep(300)
  	for i=1, #hueID do
      fibaro:call(hueID[i], "changeSaturation", 212)
      fibaro:call(hueID[i], "changeBrightness", 255)
      fibaro:call(hueID[i], "changeHue", 26241) -- grün
      fibaro:call(hueID[i], "turnOn")
    end
end

function NormalLicht()
   	for i=1, #hueID do
      fibaro:call(hueID[i], "changeSaturation", 140)
      fibaro:call(hueID[i], "changeBrightness", 255)
      fibaro:call(hueID[i], "changeHue", 8418) -- warmweiß - Normallicht nach EIN
      fibaro:call(hueID[i], "turnOn")
    end 
end
------------------------------------------------------------
--  Script
------------------------------------------------------------

FesnterChecker()
--print ("FensterStatus aus function im script: "..FensterStatus)

if FensterStatus >= 1 then --wenn mindestens ein Fenster offen ist, blinkende Lichter
	print("Blinklicht wegen offenem Fenster ausgelöst")
  	if DimmerStatus == 0 then
    	fibaro:call(Dimmer, "turnOn")
    	DimmerAutoOn = 1
    	fibaro:sleep(1000)
    	print("Dimmer/Bewegungsmelder war aus")	
    end
    while FensterStatus >= 0 do
	  Blinklicht()
      FesnterChecker()	
	  if FensterStatus == 0 then --alle Fenster wieer Zu
      	break
      end
	  if tonumber(fibaro:getValue(TuerID, "value")) == 0 then  -- Tür ist wieder Zu
      	break
      end
   	end  --von while
    print("Blinklicht Ende, da alle Fenster zu.")
    if DimmerAutoOn == 1 then
    	fibaro:call(Dimmer, "turnOff")
       	print("Dimmer am Ende wieder ausgeschaltet.")
      	DimmerAutoOn = 0 
    end
	Okay()  
    NormalLicht()
else
	--print ("Alle Fenster sind zu, kein Blinkhinweis.")  
end


Vielen lieben Dank. Das werde ich dann mal versuchen umzusetzten. Werde berichten ob es geklappt hat :slight_smile:

Ich kann es nicht glauben,

habe nur den Teil

–[[
%% properties
%% events
%% globals
–]]

local hueID = {52, 58} – Hue IDs

function Blinklicht()

for i=1, #hueID do
  fibaro:call(hueID[i], "changeSaturation", 255)
  fibaro:call(hueID[i], "changeBrightness", 255)
  fibaro:call(hueID[i], "turnOn")
  fibaro:call(hueID[i], "changeHue", 65535) -- rot
end
fibaro:sleep(300)
for i=1, #hueID do
  fibaro:call(hueID[i], "changeSaturation", 255)
  fibaro:call(hueID[i], "changeBrightness", 255)
  fibaro:call(hueID[i], "turnOn")
  fibaro:call(hueID[i], "changeHue", 44309) -- blau
end
fibaro:sleep(300)

end


und trotzdem funktioniert es nicht.

Wofür steht
for i=1, #hueID do
?

Eigentlich kann ja nur hier der Fehler bei mir liegen.

Du definierst eine Funktion, welche du aber nirgendwo im Skript wieder aufrufst. So kann es also nicht funktionieren.

Nutze doch bitte beim nächsten Mal die Code-Tags, damit es übersichtlicher bleibt.

Gruß

Hallo boomx,

bin noch so neu, daß ich noch nicht mal weiß, wie ich im Forum die Code-Tags nutzen kann.

Ich denke mal, daß die HC2 für mich ein Fehlkauf war, wenn ich es ohne Informatikstudium nicht schaffe, in fast 3 Wochen eine Leuchte blinken zu lassen, was ich eigentlich für eine Standartsituation eines SmartHome halte.
Hatte eigentlich gehofft, daß man das alles über Blockszenen hin bekommt. Bei meiner HC2 klappt es ja noch nicht mal, daß eine Leuchte nur unterhalb eines definierten LUX Wert leuchtet, wenn der Motion Sensor eine Bewegung erfasst.

Da ich über 12 bis 16 Std. am Tag arbeiten bin, habe ich auch nur begrenzt Zeit mich in LUA komplett rein zu lesen. Hätte nicht gedacht, daß das so kompliziert wird.
Ohne eure tollen Beiträge würde da wohl überhaupt nichts gehen.

Das war mit der Homee alles viel leichter. Werde ich mal wohl noch 1 bis 2 Jahre warten müssen bis die vernüftig läuft. :frowning:

Hallo tic3366,

so sollte es klappen:

–[[
 %% properties
 %% events
 %% globals
–]]

local hueID = {52, 58} — Hue IDs

function Blinklicht()
for i=1, #hueID do
 fibaro:call(hueID[i], „changeSaturation“, 255)
 fibaro:call(hueID[i], „changeBrightness“, 255)
 fibaro:call(hueID[i], „turnOn“)
fibaro:call(hueID[i], „changeHue“, 65535) — rot
 end
 fibaro:sleep(300)
 for i=1, #hueID do
 fibaro:call(hueID[i], „changeSaturation“, 255)
 fibaro:call(hueID[i], „changeBrightness“, 255)
 fibaro:call(hueID[i], „turnOn“)
fibaro:call(hueID[i], „changeHue“, 44309) — blau
 end
 fibaro:sleep(300)
 end

Blinklicht()

Bei dem HC2 hast du den absoluten Vorteil, dass du nicht nur auf Blockszenen beschränkt bist… ich gebe dir Recht, dass Blockszenen nur eingeschränkt nutzbar sind. Dafür hast du mit LUA ALLE Möglichleiten! Das HC2 ist aber kein Einsteiger-Smarthome wie das Homee-System.

Gruß

Ich kann boomx nur zustimmen… Das HC2 ist KEIN Einsteiger-Smarthome.
Auspacken, Einschalten, Fertig ist leider nicht, dass was euch erwartet.
Durch LUA sind die Möglichkeiten im Vergleich zu anderen Anbietern allerdings nahezu unbegrenzt.
Wenn man einmal das Grundverständnis vom Syntax und LUA/Fibaro-spezifischen Befehlen hat dann ist die Lern/Erfolgskurve relativ steil.

Ich kann allen usern denen ähnlich wie tic3366 geht nur raten dran zubleiben.
Auch ich habe mir alles Autodidaktisch beigebracht.

Die Dose kann zickig sein aber wenn man weiß wie man sie behandeln muss dann gibt sie dir alles zurück…

Hallo @nevv

was soll ich sagen…

Funktioniert bei meiner HC2 natürlich nicht…

Habe aber auch keinen Unterschied zu dem Code entdeckt, den ich vorher schon probiert habe (siehe oben)

Jetzt kommt sogar die Fehlermeldung:
line1: unexpected symbol near char(226)

(Wie kann man die debug Ausgabe in die Zwischenablage kopieren? Lässt sich nicht markieren!)

Wofür steht
for i=1, #hueID do
?

Hi,

Der Unterschied liegt in der letzten Zeile, ohne die Dein Script gar nicht läuft, wie Boomx schon sagte. Das Blinken wird bei nevvs Script auch nur einmal aufgerufen. Wie startest Du denn Dein Script? Konntest du die Lampen beim Scriptstart beobachten?

Mit Deiner beschriebenen Fehlermeldung läuft dein Script auch gar nicht, so das eh nichts passiert. Da müssen zwei Minzszeichen stehen. Ebenso in Zeile 5.

“for i=1, #hueID do” - das ist eine Schleife, in der Dein Array mit den HueIDs abgearbeitet wird.

Viele Grüße Hoggle

100% Hoggle’s Meinung :slight_smile:

Gruß

Hallo,
vielen Dank. Nun habe ich das hin bekommen, nachdem ich jetzt die Zusammenhänge in diesem Script verstanden habe. Nun blinkt es fleißig solange ich das will.

Das Problem ist folgendes: Manche Dinge erschließen sich einem dummen Newbie nicht sofort. Deshalb konnte ich natürlich mit der Aussage von boomx

"Du definierst eine Funktion, welche du aber nirgendwo im Skript wieder aufrufst. So kann es also nicht funktionieren."

nichts anfangen. Für euch ist das natürlich selbstverständlich und deshalb ist es euch klar, wie das funktioniert. Ein wink mit dem Zaunpfahl wäre da schon hilfreich gewesen :slight_smile:

Jetzt ist mir klar, was du damit meintest. Manchmal kommt man eben nicht auf die einfachsten Dinge von alleine.

Also nochmals: Vielen Dank euch allen! Problem gelöst!

@Hoggle: Ich klink mich kurz in diesen Thread ein. Ich habe meine HUE so eingerichtet dass sie abwechslungsweise rot/blau blinken. Passt eigentlich soweit, nur dass sie mit einem sleep(500) von blau zu rot rüberblenden. Gibt es da etwas um die Farbe “hart” zu wechseln ohne Übergang?

Danke und Gruss Mav

Was genau meinst du mit rüberblenden?

Es ist Rot und wird dann rosa-violett-blau.So wie wenn du an einem Farbregler laaaaangsam von Rot zu blau ziehst.
Schöner wäre es ROT und zack dann BLAU :wink: versteht man was ich meine?