Risk att sänka HC2 med script?

Post Reply
storskogen
Medlem
Posts: 28
Joined: 05 Apr 2014, 20:57
10

Jag har gjort ett script som kollar värde på ett par downlights och om dom har annat värde än 80% på dimmern ändras det till 80%. Hittade inget annat sätt att alltid tvinga den att vara på 80%?
Finns det risk att jag sänker HC2:an om jag har flera script igång? bör jag sätta någon timer så det inte kör hela tiden?

Code: Select all

--[[ 
%% autostart
%% properties 
36 value
%% globals 
--]] 

--[[
A scene to check what percentage the dimmer module 
is set to and if not as specified in "percent" then change to "percent"
--]]

--kill any extra instances of the same scene 
if (fibaro:countScenes() > 1) then fibaro:abort() end;

----- Change to to your choice -----

local ID = 36; -- set to your dimmer´s device ID, dont forget to change line 4 also!
local percent = 80; -- set to dimmer percentage

----- RUN CODE - do not alter -----

fibaro:debug("Checking dimmer level of unit " ..ID );

local val = (fibaro:getValue(ID, "value"));
fibaro:debug("Level = " ..val );

if tonumber(val) == percent then
  	fibaro:debug("Level OK, nothing to do...");

else
	fibaro:call(ID, "setValue", percent);
  	fibaro:debug("Dimmer changed to 80%");

end
User avatar
Bamsefar
Z-Wave Kung
Posts: 1232
Joined: 25 Nov 2013, 15:06
10
Location: Stockholm

I grund och botten kan du såklart ha hur många scritp som helst som körs, men det kommer bli seeeeegt i något läge - men Linux kärnan kommer säkert fixa det rent teoretiskt.

Rent praktiskt så skulle jag minimera kontinuerligt körda script till ett absolut minimum. Ett script som körs hela tiden vore nog bäst. Själv har jag två script - ett som enbart är aktivt när någon lampa tänds och skall släckas automagiskt efter en viss tid, och ett annat som körs varje minut för att kolla vilken tid på dygnet det är (TimeOfDay hantering).

Om man tar ditt script ovan så skulle jag lägga in allt i en while loop, något i denna stil:

Code: Select all

LExecuteSecond = 60; -- Execute Every N-th second
--Loop
while true do

fibaro:debug("Checking dimmer level of unit " ..ID );

local val = (fibaro:getValue(ID, "value"));
fibaro:debug("Level = " ..val );

if tonumber(val) == percent then
     fibaro:debug("Level OK, nothing to do...");

else
   fibaro:call(ID, "setValue", percent);
     fibaro:debug("Dimmer changed to 80%");

end

--Sleep <LExecuteSecond> seconds
fibaro:sleep(LExecuteSecond*1000);
 
end 
Men jag skulle nog rensa din debug kod också ;-)
Testar Home Assistant på Raspberry Pi4B - nice :mrgreen:
storskogen
Medlem
Posts: 28
Joined: 05 Apr 2014, 20:57
10

Jag upptäckte att det där inte var någon bra kod för när jag skulle gå och lägga mig kunde jag inte släcka, den kollar ju hela tiden om dimmern ligger på 80% annars ändrar den... *slår huvudet i väggen*

Du menar att jag borde köra alla mina script i ett enda script som istället övervakar alla funktioner?

Sparas alla fibaro:debug trots att jag inte kollar på det fönstret? :o
User avatar
Bamsefar
Z-Wave Kung
Posts: 1232
Joined: 25 Nov 2013, 15:06
10
Location: Stockholm

Ja jag var lite undrande till varför du tvingar den till 80% dygnet runt - men vad vet jag ;)

Jag ser det som så att man bör vara försiktig med för många script som hela tiden skall snurra. Normalt sett klarar man sig med ett till två script som är välskrivna. Men det finns nog ingen patentlösning...

fibaro:debug - vet inte men jag ser det ju bara i samma fönster som du gör. Men jag misstänker att det finns en central debug log som kan fyllas kanske.... Om Fibaro inte tänkte sig för....
Testar Home Assistant på Raspberry Pi4B - nice :mrgreen:
storskogen
Medlem
Posts: 28
Joined: 05 Apr 2014, 20:57
10

Anledningen till att jag skrev det från början var att jag vill att dimmern alltid ska stå på 80% och att man inte skall kunna ändra den (den enkla lösningen istället för att byta glödlampor 4m upp och köra en vanlig switch istället för dimmer...) men jag tror jag skiter i det och ställer max värde till 80% och min till 79% (står att max måste vara lägre än min så för att vara säker kör jag så).

Anledningen till flera script är att det är enklare för en som inte är så insatt i programmeringen (mindre risk för buggar och enklare att felsöka. :D ) Får väl ta mig i kragen sen och försöka lägga in allt i ett script men det får bli när alla byggnationer är klara.

Kanske går att köra ett script som snurrar hela tiden och kallar på andra script när vissa kriterier är uppfyllda så att kollen körs i huvudscriptet och om t.ex solen går ner så kör den på script nr 2 som tänder lamporna.

Det verkar gå att göra mycket med HC2:an även om vissa saker som jag kan tycka är självklara inte går att lösa, t.ex "sceneActivation" från S2 på en gammal dimmer, gissar att dimmern ändå skickar en signal till HC2:an som man borde kunna använda men den kanske går direkt till associerad S2 utan att passera HC2:an?
User avatar
Bamsefar
Z-Wave Kung
Posts: 1232
Joined: 25 Nov 2013, 15:06
10
Location: Stockholm

storskogen wrote:Kanske går att köra ett script som snurrar hela tiden och kallar på andra script när vissa kriterier är uppfyllda så att kollen körs i huvudscriptet och om t.ex solen går ner så kör den på script nr 2 som tänder lamporna.
Det är exakt så jag har det - ett huvudscript som körs varje minut dygnet runt (sover 60 sekunder mellan varje varv), och en virtuell enhet med flera LUA script som är aktiv när någon av dess timers är aktiva (och sover över tid). Alltså totalt ett eller två script som körs samtidigt - enkel last, rapp HC2 i alla lägen.
Testar Home Assistant på Raspberry Pi4B - nice :mrgreen:
Post Reply