200 678 läst · 1 109 svar
201k läst
1,1k svar
Fibaro Home Center 2
Medlem
· Stockholm
· 207 inlägg
Jag är ännu för feg för att gå över till lua. Står ju att man inte kan gå tillbaka om man valt lua.
15 min innan solnedgång finns ju.
Ska titta på fibaro uk och se om jag blir klokare. Just nu är det väldigt stor förvirring :s
15 min innan solnedgång finns ju.
Ska titta på fibaro uk och se om jag blir klokare. Just nu är det väldigt stor förvirring :s
Just den scenen kan inte bli grafisk igen, men det är ju bara att ta bort och göra omTobiasfranzen77 skrev:
Nej 15 min innan finns inte.. där emot 15 minuter efter..
Jag har en fruktansvärt irriterande bugg som jag inte vet hur jag ska felsöka.
Jag har en slider i en virtuell enhet där jag ställer in väckningstid. När den är uppnådd (kollas varje minut) så startas en loop som dimmar upp (Fibarodimmer) ljuset i taklampan från 0 till 100 under 20 minuter.
Nu till buggen. Någonting hakar upp sig någonstans och taklampan tänds med ett ryck från 0 till 50% typ. Den struntar alltså i alla dimmningar 0..1..2.. ..48..49.. osv tills den "vaknar" och hoppar in där den borde vara. Scriptet fungerar felfritt när jag testar jag testar på dagen.
Hur felsöker jag det här på bästa sätt?
Jag har en slider i en virtuell enhet där jag ställer in väckningstid. När den är uppnådd (kollas varje minut) så startas en loop som dimmar upp (Fibarodimmer) ljuset i taklampan från 0 till 100 under 20 minuter.
Nu till buggen. Någonting hakar upp sig någonstans och taklampan tänds med ett ryck från 0 till 50% typ. Den struntar alltså i alla dimmningar 0..1..2.. ..48..49.. osv tills den "vaknar" och hoppar in där den borde vara. Scriptet fungerar felfritt när jag testar jag testar på dagen.
Hur felsöker jag det här på bästa sätt?
Ja nu minns inte jag om du kör vera eller hc2 - men jag skulle vilja se scriptet ;-)
Och är du SÄKER på att lampan verkligen klarar av dim nivå under 50? Jag menar, det är inte så att den kanske inte tänder på för låg nivå - dvs är det en vanlig glödlampa, LED eller lågenergi - eller vad är det för typ av lampa?
Om du kör fibaro HC2 kan du ju alltid skriva ut debug information:
fibaro:debug("Lite text: "..variabelnamn)
Och är du SÄKER på att lampan verkligen klarar av dim nivå under 50? Jag menar, det är inte så att den kanske inte tänder på för låg nivå - dvs är det en vanlig glödlampa, LED eller lågenergi - eller vad är det för typ av lampa?
Om du kör fibaro HC2 kan du ju alltid skriva ut debug information:
fibaro:debug("Lite text: "..variabelnamn)
Direkt när du skrev det där så kom jag på vad som är fel.Bamsefar skrev:
Jag nollställer aldrig "aktuellt värde". Andra gången den går så startar den på 100. På måndag ska jag testa igen. Visst får du se scriptet. Jag har kommenterat det hej villt för din skull
--[[
%% autostart
%% properties
%% globals
--]]
fibaro:debug('Startar scen');
-- Dimmern till taklampan
local device = 9;
-- Den virtuella device som har väckningstiden
local virtualDevice = 34;
local virtualDeviceLabel = 'ui.ParentsAlarmTime.value';
-- Tid från start till stopp för väckning, startnivå och slutnivå
local dimDurationMinutes = "20";
local startLevel = 1;
local endLevel = 100;
-- Väckningstid (i minuter från 00:00)
local startTime;
-- Aktuell tidsstämpel
local now;
-- Aktuell tid (i minuter från 00:00)
local time;
-- Senast satta ljusstyrka
local level;
-- Dimmningssteg (i praktiken 1 eller -1)
local step = (endLevel - startLevel) / math.abs(endLevel - startLevel);
-- Tid i ms mellan dimmningssteg
local stepTimeMs = math.floor(1000 * 60 * dimDurationMinutes / math.abs(endLevel - startLevel));
-- Evig loop
while true do
-- Hämta aktuell tid
now = os.date("*t");
-- Konvertera till minut-format
time = tonumber(string.format("%02d", now.hour) * 60 + string.format("%02d", now.min));
-- Hämta väckningsdtid
startTime = fibaro:getValue(virtualDevice, virtualDeviceLabel)
-- Om starttiden är annan än "Av", konvertera till minut-format
if (startTime ~= "Av") then
startTime = string.sub(startTime,1,2) * 60 + string.sub(startTime,4,5)
end
fibaro:debug('Aktuell tid: '..time..', väckarklocka: '..startTime);
-- Om det är vardag och väckningstiden infallit, starta väckning
if ((startTime == time) and (now.wday >= 2) and (now.wday <= 6) and (startTime ~= "Av")) then
fibaro:debug('Startar väckarklocka');
-- Sätt startnivå
level = startLevel;
fibaro:call(device, "setValue", level);
fibaro:sleep(stepTimeMs);
-- Loopa dimmning
repeat
level = level + step;
fibaro:debug('Sätter nivå: '..level);
fibaro:call(device, "setValue", level);
fibaro:sleep(stepTimeMs);
-- Kontrollera om ljusstyrkan ändrats manuellt, om så, avbryt väckarklockan
if (tonumber(fibaro:getValue(device, "value")) ~= level) then
fibaro:debug(tonumber(fibaro:getValue(device, "value")).." vs ".. level ..', Avbryter väckarklocka');
break;
end;
until (level == endLevel)
-- Släck taklampan efter 80 minuter om den lämnats tänd
fibaro:debug('Väntar på släckning');
fibaro:sleep(80*60*1000);
fibaro:call(device, "turnOff");
end
-- Sleep 55 sekunder mellan kontroll av tid
fibaro:sleep(55*1000);
end
%% autostart
%% properties
%% globals
--]]
fibaro:debug('Startar scen');
-- Dimmern till taklampan
local device = 9;
-- Den virtuella device som har väckningstiden
local virtualDevice = 34;
local virtualDeviceLabel = 'ui.ParentsAlarmTime.value';
-- Tid från start till stopp för väckning, startnivå och slutnivå
local dimDurationMinutes = "20";
local startLevel = 1;
local endLevel = 100;
-- Väckningstid (i minuter från 00:00)
local startTime;
-- Aktuell tidsstämpel
local now;
-- Aktuell tid (i minuter från 00:00)
local time;
-- Senast satta ljusstyrka
local level;
-- Dimmningssteg (i praktiken 1 eller -1)
local step = (endLevel - startLevel) / math.abs(endLevel - startLevel);
-- Tid i ms mellan dimmningssteg
local stepTimeMs = math.floor(1000 * 60 * dimDurationMinutes / math.abs(endLevel - startLevel));
-- Evig loop
while true do
-- Hämta aktuell tid
now = os.date("*t");
-- Konvertera till minut-format
time = tonumber(string.format("%02d", now.hour) * 60 + string.format("%02d", now.min));
-- Hämta väckningsdtid
startTime = fibaro:getValue(virtualDevice, virtualDeviceLabel)
-- Om starttiden är annan än "Av", konvertera till minut-format
if (startTime ~= "Av") then
startTime = string.sub(startTime,1,2) * 60 + string.sub(startTime,4,5)
end
fibaro:debug('Aktuell tid: '..time..', väckarklocka: '..startTime);
-- Om det är vardag och väckningstiden infallit, starta väckning
if ((startTime == time) and (now.wday >= 2) and (now.wday <= 6) and (startTime ~= "Av")) then
fibaro:debug('Startar väckarklocka');
-- Sätt startnivå
level = startLevel;
fibaro:call(device, "setValue", level);
fibaro:sleep(stepTimeMs);
-- Loopa dimmning
repeat
level = level + step;
fibaro:debug('Sätter nivå: '..level);
fibaro:call(device, "setValue", level);
fibaro:sleep(stepTimeMs);
-- Kontrollera om ljusstyrkan ändrats manuellt, om så, avbryt väckarklockan
if (tonumber(fibaro:getValue(device, "value")) ~= level) then
fibaro:debug(tonumber(fibaro:getValue(device, "value")).." vs ".. level ..', Avbryter väckarklocka');
break;
end;
until (level == endLevel)
-- Släck taklampan efter 80 minuter om den lämnats tänd
fibaro:debug('Väntar på släckning');
fibaro:sleep(80*60*1000);
fibaro:call(device, "turnOff");
end
-- Sleep 55 sekunder mellan kontroll av tid
fibaro:sleep(55*1000);
end
Hur gör man egentligen för att bygga om Mesh-nätverket? Jag har idag bytt plats på två dimmrar. Det borde finnas ett kommando för att få controllern uppdatera routing-tabellerna på bästa sätt.
Medlem
· Stockholm
· 207 inlägg
Om det är lua som du skriver i ovan så har du avskräckt mig för all framtid!
Finns det nån tråd här som visar hur man lägger enkla scener?
För jag känner att jag skulle behöva en tråd typ fibaro for dummies
Finns det nån tråd här som visar hur man lägger enkla scener?
För jag känner att jag skulle behöva en tråd typ fibaro for dummies
Det är LUA. Men jag har programmerat en del genom åren och tycker det är kul att göra det... "smart"...Tobiasfranzen77 skrev:
Den här raden till exempel:
local stepTimeMs = math.floor(1000 * 60 * dimDurationMinutes / math.abs(endLevel - startLevel));
räknar ut att om man ska dimma från 1 till 100 på 20 minuter så ska det vara 12,121 sekunder mellan varje steg.
Jag hade ju lika gärna kunnat skriva:
local stepTimeMs = 12121
men då blir det ju krångligare om man vill ändra till max 50% dimmning eller 30 minuter och man har glömt bort hur man tänkte när man programmerade.
Säg vad du vill göra i stället. Man ska börja i rätt ände.
Redigerat:
Medlem
· Stockholm
· 207 inlägg
Jag antar att det blir enklare när man väl förstår vad allt betyder och innebär.
Först vill jag bara skapa enkla scener såsom att starta lampor alla dagar från solnedgång till kl 23.
Vill kunna nyttja min motionsensor att tända två lampor om den märker rörelse mitt i natten. Typ dimmer på 15% om man ska ta ett glas vatten eller gå på toa.
När jag fattat dem så kan jag börja bygga vidare
Först vill jag bara skapa enkla scener såsom att starta lampor alla dagar från solnedgång till kl 23.
Vill kunna nyttja min motionsensor att tända två lampor om den märker rörelse mitt i natten. Typ dimmer på 15% om man ska ta ett glas vatten eller gå på toa.
När jag fattat dem så kan jag börja bygga vidare
Medlem
· Stockholm
· 207 inlägg
Medlem
· Stockholm
· 207 inlägg
Men varför funkar den inte?
Tänder när jag klickar KÖR
Tänder när jag klickar KÖR