Hallo zusammen,
erstmal großes Lob an das Forum hier da man hier sehr viel findet und auch viele Erklärungen hat.
Ich bin seit kurzem Besitzer eines HC2 und möchte damit einige Sachen in meinen neuem Haus steuern (Licht, Steckdosen und vielleicht Heizung).
Ich habe lange nach einem SmartHome System gesucht und auch viel gelesen bis ich zu dem Entschluss gekommen bin mir das HC2 zu kaufen.
Bis jetzt habe ich einen Wall Plug , Button , Motion Sensor und Philips Hue Bridge mit Led Strip.
Die Komponenten in das HC2 aufzunehmen war noch leicht und auch das ich mit dem Button den Wall Plug steuern kann auch.
Jetzt bin ich an den Punkt angekommen wo LUA ins Spiel kommt was für mich nur böhmische Dörfer sind :-(.
Mein derzeitiges Problem an dem ich schon seit Tagen sitze und viel lese ist den Led Strip mit den Motion Sensor zu schalten.
Das der MS die Led Strip Bewegung anschaltet und der Strip dann wenn keine Bewegung mehr ist ausschalten soll habe ich schon hinbekommen.
Hier mit:
–[[
%% properties
20 value
%% globals
–]]
local sensors = {20}
local phillips hue = {25}
local delay = 0
local debug = true
function actionsMotion ()
fibaro:call(25, “turnOn”);
fibaro:debug(‘Führe Aktionen bei Bewegungserkennung aus’)
end
function actionsNoMotion()
fibaro:call(25, “turnOff”)
fibaro:debug(‘Führe Aktionen nach Ende Bewegung aus’)
end
local instances = tonumber(fibaro:countScenes());
function getSensorStatus()
for i,n in ipairs(sensors) do
if (tonumber(fibaro:getValue(n, “value”)) > 0) then
return 1;
end
end
return 0;
end
function getLastBreach()
local breach = 0;
for i,n in ipairs(sensors) do
local nBreach = tonumber(fibaro:getValue(n, “lastBreached”));
if(nBreach > breach) then
breach = nBreach;
end
end
return breach;
end
function checkMotion()
lastBreached = getLastBreach();
time = os.time();
if (debug) then fibaro:debug(“Zuletzt ausgelöst: Vor “…(time-lastBreached)…” Sekunden”); end
if (getSensorStatus() == 1) then
return true;
end
if ((time-lastBreached)>=delay) then
return false;
end
return true;
end
local lastBreached = getLastBreach()
if (fibaro:getSourceTriggerType() == ‘property’ and getSensorStatus() == 1) then
if (instances > 1) then fibaro:abort(); end
fibaro:debug(‘Bewegung im Raum erkannt - Starte Timer’)
actionsMotion()
while (checkMotion()) do
fibaro:sleep(5000);
end
if (debug) then fibaro:debug(“Keine Bewegung mehr erkannt.”); end
actionsNoMotion()
end
Jetzt möchte ich einfach nur noch das dieses nur zu bestimmten Zeiten passiert und da sind wir schon bei dem eigentlichen Problem wo ich nur Bahnhof verstehe.
Ich habe auch schon Variablen angelegt TimeOfDay usw.
Ich habe auch schon eine Szene angelegt die die Tageszeit abfragt. ( glaub ich zumindest )
–[[
%% properties
20 value
%% globals
–]]
local day = {9, 00};
local night = {23, 59};
local SunSet = fibaro:getValue(1, “sunsetHour”)
fibaro:debug('Sonne geht unter: ’ …SunSet);
local Sunrise = fibaro:getValue(1, “sunriseHour”)
fibaro:debug('Sonne geht auf: ’ …Sunrise);
if fibaro:countScenes() > 1 then
fibaro:debug(“stop scene”);
fibaro:abort();
end
local day = os.date("%H:%M", -3600+ day[1]6060 + day[2]*60);
local night = os.date("%H:%M", -3600+ night[1]6060 + night[2]*60);
local ostime = os.date("%H:%M", os.time());
if (night > fibaro:getValue(1, “sunriseHour”) and (ostime >= night or ostime < fibaro:getValue(1, “sunriseHour”)))
or (night < fibaro:getValue(1, “sunriseHour”) and ostime >= night and ostime < fibaro:getValue(1, “sunriseHour”)) then
fibaro:debug(“Nacht”);
fibaro:setGlobal(“TimeOfDay”, “Night”);
–fibaro:abort();
end
if ((ostime >= fibaro:getValue(1, “sunsetHour”) or ostime < night) and night < fibaro:getValue(1, “sunriseHour”))
or (ostime >= fibaro:getValue(1, “sunsetHour”) and ostime < night) then
fibaro:debug(“Abend”);
fibaro:setGlobal(“TimeOfDay”, “Evening”);
–fibaro:abort();
end
if ostime >= day and ostime < fibaro:getValue(1, “sunsetHour”) then
fibaro:debug(“Tag”);
fibaro:setGlobal(“TimeOfDay”, “Day”);
–fibaro:abort();
end
if ostime >= fibaro:getValue(1, “sunriseHour”) and ostime < day then
fibaro:debug(“Sonnenaufgang”);
fibaro:setGlobal(“TimeOfDay”, “Morning”);
–fibaro:abort();
end
Es wäre Super wenn ihr mir vielleicht helfen könntet und ich vielleicht dann so einige Dinge verstehe.