Habe vorher bei meinem Mac in eine Textdatei und zurück kopiert, war kein Problem, der Fehler muss beim Hochladen passiert sein und zwar reproduzierbar, denn ich habe ja das Script zweimal hochgeladen. Beim zweiten Mal habe ich das Script dann von der siio Seite in meine HC2 kopiert und erhielt dann selber die beschriebene Fehlermeldung.
Jedenfalls haben wir es nicht nur einmal geschafft, dass nachts die Haustür offen geblieben ist, unsere Kinder haben da nur ein geringes Verständnis für solche Sachen. Das war dann das Motiv für dieses Script ? Gruss, Norbert
--[[
%% autostart
%% properties
%% events
%% globals
--]]
local phoneID = {1022, 1023, 1199} -- Handy-IDs
local maxID = 1000
local timeCheck = "22:00"
local warning = 0
Debug = function ( color, message )
fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span"))
end
local sourceTrigger = fibaro:getSourceTrigger();
function tempFunc()
local currentDate = os.date("*t");
local startSource = fibaro:getSourceTrigger();
if (
( ((currentDate.wday == 1 or currentDate.wday == 2 or currentDate.wday == 3 or currentDate.wday == 4 or currentDate.wday == 5 or currentDate.wday == 6 or currentDate.wday == 7)
and string.format("%02d:%02d", currentDate.hour, currentDate.min) == timeCheck ))
)
then
Debug('white', "Prüfe offene Fenster")
for id = 1, maxID do
local deviceType = fibaro:getType(id)
if (deviceType == 'com.fibaro.windowSensor' or deviceType == 'com.fibaro.doorSensor') then
if (tonumber(fibaro:getValue(id, 'value')) == 1) then
local name = fibaro:getName(id)
local room = fibaro:getRoomNameByDeviceID(id)
Debug('red', "ACHTUNG! " ..name.. " im Raum " ..room.. " ist offen!")
warning = warning + 1
for k=1, maxID do
if phoneID[k] ~= nil then
fibaro:call(phoneID[k], 'sendPush', 'ACHTUNG: ' ..name.. ' im Raum ' ..room.. ' ist offen!')
end
end
end
end
end
if warning == 0 then
for k=1, maxID do
if phoneID[k] ~= nil then
fibaro:call(phoneID[k], 'sendPush', 'alle Fenster und Türen geschlossen')
end
end
Debug('green', "alle Fenster und Türen geschlossen!")
end
end
setTimeout(tempFunc, 60*1000)
end
if (sourceTrigger["type"] == "autostart") then
tempFunc()
else
local currentDate = os.date("*t");
local startSource = fibaro:getSourceTrigger();
if (
startSource["type"] == "other"
)
then
fibaro:call(195, "turnOff");
end
end
Hallo
danke für die Rückmeldung.
Bei mir steht schon drin, dass die entsprechenden Fenster geschlossen sind.
Wenn ich direkt im hc2 die Szene auslöse, dann erscheint im Debug Fenster die richtige Meldung und ich erhalte eine Push aufs Handy.
Wenn ich aber von unterwegs prüfe und die Szene starte, kommt keine Push.
Hallo
ich habe auch das Problem, das ich die Szene nicht manuell starten kann, dann passiert im Debug Modus auch nichts?
Habe die Zeile 9 durch “local timeCheck = os.date(”%H:%M")" ersetzt. Verstehe nicht was ich falsch mache, wenn ich im HC 2 die Szene auf off und anschhließend auf on stellen
funktioniert alles, aber auf dem Handy nicht???
Habe das Script von hier auch im Einsatz. Läuft seit 1 Jahr tadellos. Habe jetzt nur geringfügige Änderungen in der Abfrage der Sensoren gemacht, die “for” Schleife optimiert (dass das Script nicht immer bis maxID 1000 zählen muss) und ein wenig entschlackt.
--[[
%% autostart
%% properties
--]]
-- check if doors or windows are open at a given time
-- altered by Jeep
local sourceTrigger = fibaro:getSourceTrigger();
local phoneID = {8, 20} -- mobile IDs
local timeCheck = "21:50" -- perform check at this time
local warning = 0
local version = "0.1.1"
Debug = function ( color, message )
fibaro:debug(string.format('<%s style="color:%s;">%s', "span", color, message, "span") )
end
local function checkDoors()
local dwSensors = fibaro:getDevicesId({ enabled = true, visible = true, baseType = "com.fibaro.doorWindowSensor" })
Debug('white', "Prüfe offene Fenster und Türen ".. os.date('%c'))
for id = 1, #dwSensors do
if (tonumber(fibaro:getValue(dwSensors[id], 'value')) == 1) then
local name = fibaro:getName(dwSensors[id])
local room = fibaro:getRoomNameByDeviceID(dwSensors[id])
Debug('red', "ACHTUNG! " ..name.. " im Raum " ..room.. " ist offen!")
warning = warning + 1
for k=1, #dwSensors do
if phoneID[k] ~= nil then
fibaro:call(phoneID[k], 'sendPush', 'ACHTUNG: ' ..name.. ' im Raum ' ..room.. ' ist offen!')
end
end
end
end --for
if warning == 0 then
for k=1, #phoneID do
if phoneID[k] ~= nil then
fibaro:call(phoneID[k], 'sendPush', 'alle Fenster und Türen geschlossen')
end
end
Debug('green', "alle Fenster und Türen geschlossen! ".. os.date('%c') )
end
end --function
function main()
local currentDate = os.date("*t");
local startSource = fibaro:getSourceTrigger();
if ( (string.format("%02d:%02d", currentDate.hour, currentDate.min) == timeCheck )) then
checkDoors()
end
setTimeout(main, 60*1000)
end
if (sourceTrigger["type"] == "autostart") then
main()
else
local currentDate = os.date("*t");
local startSource = fibaro:getSourceTrigger();
if ( startSource["type"] == "other" ) then
checkDoors()
end
end
@Martin
dieses script ist zu einfach gestrickt und prüft nur zu einer bestimmten Uhrzeit. Aber ich denke das Du dieses : Script
für solche Zwecke gut nutzen kannst, da man sehr viele Parameter einstellen kann. Schau Dir auch das beiliegende PDF an, da sind die Parameter ausführlich beschrieben.
Viel Erfolg.
Hallo
ich habe versucht die Scene von Jeep so umbauen, damit ich die Push Nachricht bekommen kann wenn die Lichter AN sind… Leider ohne Erfolg
Kann mir jemand helfen
verstehe ich das richtig, das ich das Skript nur rüber kopieren muss und alles andere (Sensoren, Mitteilung) selbst eingetragen wird?
Handy ID´s muss ich noch selbst eintragen und die gewünschte Uhrzeit abändern.