OpiMaza
Nyfniken skrev:
Här är kvälls scriptet:


Jag inser att jag har skrivit scripten lite olika. Det har ju att göra med problematiken som uppstår då man vill ha släcktiden på kvällen efter midnatt. Tittar man på mitt morgon-script så ser man att lamporna släcks oavsett hur de har tänts.
I kvälls-scriptet så släcks bara lamporna om scriptet kommit in i tänd-loopen först. I praktiken spelar det bara roll om HC2 startas om efter tänd-tid, men före släck-tid och lamporna dessutom tänds manuellt innan släck-tid.

~= betyder "inte lika med"
so far so good, det hoppade igång nu vid 17:40
 
Nyfniken skrev:
Vad sjutton. 22:20 och fönsterlamporna har inte slocknat...
Nope, de släcktes inte idag heller. Då har jag något att göra i helgen...
 
Får jag föreslå en två delad lösning: En som sätter tiden för dagen i en global variabel, TOD (Time Of Day), och tilldela den "morgon", "dag", "kväll" och "natt" eller något liknande. Sedan en scen som triggar på den globala variabeln. Det kommer garanterat fungera...!
 
Appropåsaker som inte fungerar...

Skärmklipp.JPG
Inloggade ser högupplösta bilder
Skapa konto
Gratis och tar endast 30 sekunder


Någon som kan förklara hur en Fibaro 3kW puck kan bli tre enheter?
 
Nyfniken skrev:
Nope, de släcktes inte idag heller. Då har jag något att göra i helgen...
Vänta nu, klockan är ju inte 22:15 än... DOH!
 
Bamsefar skrev:
Någon som kan förklara hur en Fibaro 3kW puck kan bli tre enheter?
S1, S2 och ut?
 
OpiMaza
Nyfniken skrev:
Vänta nu, klockan är ju inte 22:15 än... DOH!
Fungerade det sen?
 
OpiMaza skrev:
Fungerade det sen?
Näpp. Kollade igenom koden och hittade problemet:

I koden nedan uppdateras inte aktuell tid (time). Så testet blir aldrig sant.
while (time ~= lightsOut) do
fibaro:sleep(55*1000);
end
Koden ovan ska bytas ut mot den här:
repeat
now = os.date("*t");
time = tonumber(string.format("%02d", now.hour) .. string.format("%02d", now.min));
time = (time - time % 100) /100 * 60 + time % 100;
fibaro:sleep(55*1000);
until (time ~= lightsOut)
 
Hehe, det märks att man är ringrostig.
lightsOnWeekday = string.gsub(lightsOnWeekday,":","");
lightsOnWeekday = tonumber(lightsOnWeekday);
lightsOnWeekday = (lightsOnWeekday - lightsOnWeekday % 100) /100 * 60 + lightsOnWeekday % 100;
Kan ju lika gärna skrivas:
lightsOnWeekday = string.sub(lightsOnWeekday,1,2) * 60 + string.sub(lightsOnWeekday,4,5);
 
Min 3kW puck från Fibaro återtog sin normala konstruktion (se bilden i ett inlägg ovan) efter en forcerad omkomfiguration. Nu återstår bara att klura ut varför mina Everspring SP814 rörelse sensorer ibland inte uppfattas av HC2 - dvs HC2an missar rörelshändelser, vilket inte är speciellt bra....!
 
OpiMaza
Nyfniken skrev:
Hehe, det märks att man är ringrostig.

Kan ju lika gärna skrivas:
vet inte vad som hände i kväll men alla lampor tändes för att några sekunder senare släckas ?
 
OpiMaza
Nyfniken skrev:
Hehe, det märks att man är ringrostig.

Kan ju lika gärna skrivas:
Du har inte lust att posta hela scriptet med modifieringarna, för jag tror jag sabbade mitt.
 
OpiMaza skrev:
Du har inte lust att posta hela scriptet med modifieringarna, för jag tror jag sabbade mitt.
Absolut. Fixar det i morrn. Eller när jag testkört ett par dagar :)
 
Idag blev min dotter sakta väkt av väckarklockan klockan 06:00. Jag hade missat att veckodagar numreras 0-6, söndag till lördag i stället för 1-7 måndag till söndag. Va någon anledning så har den övriga familjen väldigt låg toleranströskel för barnsjukdomar i automatiken. :surprised:

Nedan kommer scripten.
 
--[[
%% properties
%% autostart
%% globals
--]]

local device = 8;

local startTime = "06:00";
local dimDurationMinutes = "20";
local startLevel = 0;
local endLevel = 100;

local now;
local time;
local level = startLevel;
local step = (endLevel - startLevel) / math.abs(endLevel - startLevel);
local stepTimeMs = math.floor(1000 * 60 * dimDurationMinutes / math.abs(endLevel - startLevel));

startTime = string.sub(startTime,1,2) * 60 + string.sub(startTime,4,5)

while true do
now = os.date("*t");
time = tonumber(string.format("%02d", now.hour) * 60 + string.format("%02d", now.min));

if ((startTime == time) and (now.wday >= 1) and (now.wday <= 5)) then
level = startLevel;
fibaro:call(device, "setValue", level);
fibaro:sleep(stepTimeMs);
repeat
level = level + step;
fibaro:call(device, "setValue", level);
fibaro:sleep(stepTimeMs);
until (level == endLevel)
fibaro:sleep(80*60*1000)
fibaro:call(device, "turnOff");
end
fibaro:sleep(55*1000);
end
 
Vi vill skicka notiser för ämnen du bevakar och händelser som berör dig.