@mdietinger, danke für die Antwort, allerdings scheint in Zeile 10 noch ein Fehler zu sein, habe mal hin und her probiert und mit dieser lief es dann.
if (tonumber(fibaro:getValue(54, “value”)) > 0) then
Aber man muss der Fibaro trotzdem etwas Zeit lassen zum umschalten. Wenn ich den Testschalter an der Türe schnell aufmache und wieder zu, dann rafft er es manchmal nicht und schaltet nicht scharf. Lasse ich die Türe aber ca. 10 sec zu und mache dann auf, dann schaltet er scharf. Es ist ein Unterschied, ob man in der Webgui dort die jeweilligen Skripte für scharf/unscharf auf start anklickt, wo es sofort und ohne Fehler umgesetzt wird, als mit dem Türkontakt. Kann es hier sein, das die Fiabro hier bei den Türkontakten so manchmal nicht schnell genug hinterherkommt um die Skripte abzuarbeiten? Nur eine Vermutung.
Muss ich das gleiche auch bei dem entschärfen machen?
Trixxon,
Werde ich schnell korrigieren. (Falls noch wer kopiert)
Dieses Script ersetzt die beiden Scharf Unscharf Scripte und funktioniert nur richtig mit einem Schalter.
Das Script benötigt Tür ständig offen um den Alarm Scharf zuschalten. (Kann 1-2 Sekunden dauern)
Wenn Du die Tür geschlossen hast ist alles wieder entschärft. (Wie mit einem Schalter)
Ein Schaltvorgang passiert immer wenn sich der Status des Sensors ändert.
Also Tür auf, ein paar Sekunden warten das Fenster sollte geschärft sein.
Nach einiger Zeit Tür zu und das Fenster sollte entschärft werden.
Wenn Du genug gespielt hast am Besten den Trigger aus Zeile 3 entfernen und erst wieder befüllen wenn du den Schalter hast.
Ansonsten kannst das Fenster nur bei geöffneter Tür offen haben
Fehler korrigiert
–[[
%% properties
54 value
%% events
%% globals
–]]
local doorID = {27} — ID Fenster
local countID = 100 — Anzahl eurer devices (Muss nicht zwangsläufig geändert werden)
if tonumber(fibaro:getValue(54 'value') > 0 then
-- SCHÄRFEN
for j=1, countID do
if doorID[j] ~= nil then
if (tonumber(fibaro:getValue(doorID[j], 'value')) == 0) then
fibaro:call(doorID[j], 'setArmed', '1')
else
end
end
end
else
-- ENTSCHÄRFEN
for j=1, countID do
if doorID[j] ~= nil then
if (tonumber(fibaro:getValue(doorID[j], 'value')) == 0) then
fibaro:call(doorID[j], 'setArmed', '0')
else
end
end
end
end
@mdietinger, ok habe verstanden, hatte ich überlesen, das ja jetzt in einem Skript schärfen und entschärfen steht, sorry.
So, jetzt funktioniert es.
Aber ich kann bei dem letzten reingestellten Skript keine Veränderung zu dem vorhergehenden feststellen, Zeile 10 sieht immer noch genauso aus, brauche ich eine Brille?
Für eine LED Zustandsanzeige brauche ich doch dieses RBG Modul von Fibaro, oder? Dann würde ich dies gleich mitbestellen.
Darf ich mich dann wieder an Dich wenden, wenn ich hier die Zustandsanzeige realisieren möchte?
Zeile 10 hat jetzt ’ anstatt "
RGB Modul und Led Strip ist eine Möglichkeit.
Dazu brauchst auch ein 12V Netzteil.
Ich habe mir das in eine Deckenleuchte eingebaut. (Zusammen mit weissen Strahlern)
Ich habe aber auch gesehen dass es ein virtuelles Device (Farbwechsel) für den Fibaro Powerplug gibt. (Musst im Siio Forum danach suchen)
Dafür würdest Du nur eine Steckdose brauchen.
Ein Signalgeber ist auch nicht von Nachteil, sonsten hast immer nur stillen Alarm über die Fiabaro App.
@mdietinger, ok, Du hast mich überzeugt, ich brauche eine Brille.
Noch was anderes, was ich hier gefunden habe und sehr gut finde ist dies.
Kann man hier in der Pushnachricht noch einbauen an welchem Melder der Alarm ausgelöst wurde oder ist das Programmtechnisch nicht möglich?
–[[
%% properties
%% globals
–]]
fibaro:call(9, “startProgram”, “5”);
fibaro:call(74, “turnOn”);
fibaro:call(68, “sendPush”, “Status: Alarmanlage ausgelöst”, “breached”);
while tonumber(fibaro:getValue(16, "armed")) > 0 do
fibaro:debug('Alarm is breached...');
fibaro:sleep(1*1000);
end
fibaro:call(9, “setColor”, “255”, “0”, “0”, “0”);
fibaro:call(72, “turnOff”);
Das könnte so aussehen.
–[[
%% properties
%% globals
–]]
local doorID = {27} — ID Fenster
local countID = 100 — Anzahl eurer devices (Muss nicht zwangsläufig geändert werden)
local YourMobile = 68
fibaro:call(9, 'startProgram', '5');
fibaro:call(74, 'turnOn');
for j=1, countID do
if doorID[j] ~= nil then
if (tonumber(fibaro:getValue(doorID[j], 'value')) == 0) then
if (tonumber(fibaro:getValue(doorID[j], 'value')) > 0 and ()tonumber(fibaro:getValue(doorID[j], 'armed')) > 0)) then
fibaro:call(YourMobile, 'sendPush', 'Einbruchsalarm Sensor:'.. fibaro:getName(startSource['deviceID']));
end
else
end
end
end
while tonumber(fibaro:getValue(16, 'armed')) > 0 do
fibaro:debug('Alarm is breached…');
fibaro:sleep(1*1000);
end
fibaro:call(9, 'setColor', '255', '0', '0', '0');
fibaro:call(72, 'turnOff');
fibaro:call(YourMobile, 'sendPush', 'Einbruchsalarm gelöscht:');
@mdietinger, habe es rein kopiert und es kommt in Zeile 15 der Fehler im debug line15:unexpected symbol near ‘)’
Oops da hat sich ) nach > 0 and ( geschummelt
@mdietinger, ok das haben wir nun auch.
Jetzt kommt noch das mit dem Wallplug und dem Farbring
Ich habe mal Testweise den von meinem Fernseher abgezogen ( Bis ich einen weiteren bestelle) und habe dieses VM Wallplug Color runtergeladen und in die HC2 reingeladen. Funtkioniert einwandfrei, sobald man dort z.B. den Knopf Rot drückt wird auch der Wallplug Rot.
Aber wie bekomme ich dies nun in unserem Skript, das bei Scharfstellung der Wallplug Rot leuchtet und bei Entschärfung Grün leuchtet.
–[[
%% properties
54 value
%% events
%% globals
–]]
local doorID = {27} – IDs der Sensoren
local countID = 100 – Anzahl eurer devices (Muss nicht zwangsläufig geändert werden)
–local startSource = fibaro:getSourceTrigger();
if tonumber(fibaro:getValue(54 ‘value’) > 0 then
fibaro:debug('Nacht unscharf')
-- ENTSCHÄRFEN
for j=1, countID do
if doorID[j] ~= nil then
if (tonumber(fibaro:getValue(doorID[j], 'value')) == 0) then
fibaro:call(doorID[j], 'setArmed', '0')
fibaro:debug('Nacht unscharf')
else
end
end
end
Du legst ein Tempo hin?
Verwende das virtuelle Device nicht, aber bei den Kommentaren zum Script liefert Boomx eine Erklärung wie das geht.
Musst dann nur z.b for der Schleife (for j=…) die Farbe setzen.
http://www.siio.de/connected-home/kleine-lua-scripte-teil-3-farbe-des-fibaro-wallplug-aendern/
LG, Markus
@mdietinger, das funktioniert jetzt auch, Alarm scharf Wallplug leuchtet rot, entschärfen leuchtet er Grün.
Langsam macht die sache spaß.
Aber eines bekomme ich nicht hin, der Wallplug soll Gelb leuchten, wenn ich schärfe, aber noch ein Fenster offen ist.
Das ist ganz einfach.
Setzte Deinen Code für Button GELB einfach an die Stelle die ich im unterem Beispiel aufgführt habe.
Wichtig ist dass ROT vor der Schleife (For j) eingesetzt ist.
Wenn Du ein Fenster beim schärfen offen hast, musst Du entschärfen, Fenster schliessen und neu schärfen. (Anders würde es kompliziert werden)
Beim entschärfen nur Grün und kein Gelb verwenden, ansonsten wird es auch kompliziert.
— SCHÄRFEN
for j=1, countID do
if doorID[j] ~= nil then
if (tonumber(fibaro:getValue(doorID[j], ‚value‘)) == 0) then
fibaro:call(doorID[j], ’setArmed‘, ‚1‘)
fibaro:debug(‚Nacht scharf‘)
else
HIER MUSS DEIN CODE REIN FÜR FARBE GELB
end
end
end
@mdietinger, danke noch mal für Deine Geduld. Habe es so eingetragen wie Du vorgeschlagen hast. Das seltsame ist, das der LED Ring mal korrekt umspringt, dann von Grün auf Rot und sofort wieder zurück auf Grün. Wenn man oben im HC2 im Ereignissfenster nachschaut, sieht man auch, das er z.B. von Grün auf Rot kurz umspringt um dann lgeich wieder Gün zu werden, da er zwei Befehle gleichzeit erhält, Farbe für Grün und Farbe für Rot. Aber seltsamerweise nicht immer. 10 x klappst nicht, und beim 11 mal kanns dann wieder korrekt klappen. Was ist das?
Hier noch mal das komplette Skript.
–[[
%% properties
54 value
%% events
%% globals
–]]
local doorID = {27} – ID Fenster
local countID = 100 – Anzahl eurer devices (Muss nicht zwangsläufig geändert werden)
if (tonumber(fibaro:getValue(54, “value”)) > 0) then
-- SCHÄRFEN
fibaro:call(124, "pressButton", "3"); --Farbe Wallplug Rot
for j=1, countID do
if doorID[j] ~= nil then
if (tonumber(fibaro:getValue(doorID[j], 'value')) == 0) then
fibaro:call(doorID[j], 'setArmed', '1')
fibaro:debug( "Nacht scharf")
else
fibaro:call(124, "pressButton", "6"); --Farbe Wallplug Gelb
end
end
end
else
-- ENTSCHÄRFEN
for j=1, countID do
if doorID[j] ~= nil then
if (tonumber(fibaro:getValue(doorID[j], 'value')) == 0) then
fibaro:call(doorID[j], 'setArmed', '0')
fibaro:call(124, "pressButton", "4"); -- Farbe Wallplug Grün
else
end
end
end
end
Habe mal noch den Screenshot von dem HC2 Ereignissfeld mitgeschickt.
Schaut korrekt aus.
Würde nur das Wallplug auf Grün ändern aus der Schleife nehmen, ansonsten drückst in kurzer Zeit für jedes Fenster/Tür den virtuellen Button.
Am Besten nach --Entschärfen setzen (Wie ROT)
Keine Ahnung wie zuverlässlich das virtuelle Device ist.
Testweise kannst ein Sleep mit z.B. 500ms einbauen und die gleiche Farbe nochmals drücken.
Weiters würde ich im Eventfenster kontrollieren ob der Türsensor nicht in kurzer Zeit auf und Zu gemacht hat. (Falls zu empfindlich, sollte mit einem Schalter nicht passieren)
Kleiner Tipp am Rande:
Bevor du einen Code einfügst code in der Liste über dem Eingabefenster drücken.
Einfügen und nochmals Code drücken, ist schöner und besser lesbar.
@mdietinger, hurra, es funktioniert. Ich habe das VD gelöscht und nochmal reingeladen, irgendwas scheint sich dort verhaspelt zu haben.
Jetzt gehts so wie ich es wollte.
Danke noch mal für Deine Geduld.
Gern geschehen.
Viel Spass noch.