Op werkdagen voor 11u besteld, 's avonds al in huis!
Op werkdagen voor 11:00 besteld, dezelfde avond al in huis!
Smart home installatieservice
Bereikbaar op +31 73 762 0 762

Scenes - Bezint eer u begint

Scenes

Bezint voor gij begint

Scénes zijn gegroepeerde acties die uitgevoerd worden op een bepaald tijdstip of wanneer er bijvoorbeeld een apparaat word in- of uitgeschakeld.
Het is dan ook zeer verleidelijk om snel veel scenes te maken. Om 'huh - waarom gebeurt dit nu' te voorkomen hebben we een aantal tips voor u verzameld.

Tip 1: Werk met variabele apparaat ID-s
In een Z-wave netwerk krijgt iedere module zijn eigen unieke nummer, het zogenaamde ID. Wanneer je scenes gaat maken, zul je ook gebruik gaan maken van apparaat ID's. Apparaten worden in- en uitgeschakeld worden met de ID's. Om problemen te voorkomen wanneer je bijvoorbeeld een module vervangt door een nieuwe module (met een nieuw ID) en je scenes niet meer werken, Kun je beter gebruik maken van virtuele ID's. Een virtueel ID's is een variabele met de waarde van het apparaat ID.

Dus niet:
fibaro:call(45, "turnOn");
--probleem met ID 45 onstaat als deze vervangen word, gebruik daarvoor een variabele


Wel :
IdKachel =tonumber(fibaro:getGlobalValue("IdKachel")) -- Haal het ID op vanuit een variabele
fibaro:call(IdKachel, "turnOn");


Tip 2: Houd het overzicht
De meeste Z-wave controllers kunnen je niet vertellen in welke scene(s) een bepaald apparaat-ID voorkomt. Terwijl je dat net nu wel wilt weten als er iets onverwachts gebeurt. Om het overzicht te behouden is het aan te raden om op de een of andere manier een document bij te houden. Of het nu een Excel of word document is, maar houdt bij welke scenes welke ID's bevatten. Zorg tevens voor een eenduidige en duidelijke naamgeving.


Tip 3: Gebruik scenes-in-scenes

Sommige acties wil je op verschillende plaatsen in je huisautomatisering gebruiken. Denk aan het uitschakelen van de lampen. Dat wil je wanneer je naar bed gaat, maar ook als je het huis verlaat en het alarm inschakelt.


Tip 4 : Maak een centrale scene

Nog een tip waarvan we denken dat hij waardevol is, is die van een centrale scene's die periodiek loopt en een aantal zaken controleert. Denk hierbij de volgende controlles;
- Automatisch het alarm inschakelen als er xx minuten geen beweging is gededecteerd;
- Doe automatisch de rolluiken dicht bij xx minuten na zonsondergang;
- Controleer adhv een slimme stekker met stroommeting of een apparaat klaar is
- Schakel ieder nacht om xx uur alle verlichting uit
- Automatische restart van je HC2 na xx uur.

Voorbeeldcode voor de HC2:

--[[
%% autostart
%% properties
%% globals
--]]
local sourceTrigger = fibaro:getSourceTrigger();
function tempFunc()
local currentDate = os.date("*t");
local startSource = fibaro:getSourceTrigger();
local check_interval =1
if (
( (math.floor(os.time()/60)-math.floor(1472556360/60))%check_interval == 0 )
)
then
< -- op deze plek komt de code om een aantal zaken in huis te testen (zie onder)-->
end


-- deze regels worden eerst gestart, de functie word pas hieronder uitgevoerd
setTimeout(tempFunc, 60*1000)
end
if (sourceTrigger["type"] == "autostart") then
tempFunc()
end

 

Nu volgen een aantal voorbeelden van zaken die wij in ons demohuis automatisch controlleren. De code dient dus boven geplaatst te worden tussen de < -- >

-- onderstaande code controleert hoe lang er geen beweging is in de schuur en schakelt na 3600sec het Satel alarm in.
-- Zoals te zien is hebben we hier nog niet met variabel ID's gewerkt.
local AlarmVertraging = 1
local a =tonumber(os.time())
local b=tonumber(fibaro:getValue(758, "lastBreached")) --Fibaro PIR
local b=tonumber(fibaro:getValue(58, "lastBreached")) --Satel PIR
local c=a-b
local alarmuitsince =tonumber(os.time())-tonumber(fibaro:getGlobalValue("TijdAlarmUit"))
if tonumber(c) >3600 and alarmuitsince>600 and AlarmVertraging == 1 then
fibaro:call(312, "pressButton", "5"); --schuuralarm aanzetten
fibaro:call(613, "pressButton", "9"); --Sonos schuur stop`
end

-- kijken of de HC2 gereset moet worden
local laatstetijdscene = tonumber(fibaro:getGlobalValue("StartsceneRun") )
local verschil =laatstetijdscene -tonumber(os.time())
if (tonumber(os.time()) - laatstetijdscene) > 16000 then
-- voor de if even de tijd opslaan anders blijft ie restarten
fibaro:setGlobal("StartsceneRun", os.time()) -- tijd instellen dat scene gelopen heeft
fibaro:sleep(35*1000)
f
ibaro:debug('restart HC2')
fibaro:call(652, "pressButton", "2"); -- reset HC2 via virtueel apparaat
end

-- Kijken of de rolluiken dicht of open moeten
local sunriseHour_full = fibaro:getValue(1,'sunriseHour') --Predefined string that contains sunrise HH:MM
local sunrisehour = string.format("%02d",string.sub (sunriseHour_full, 1 , 2)) --Get the first two characters from sunrice HH:MM
local sunrisemin = string.format("%02d",string.sub(sunriseHour_full,4)) --Get everything from char and forward from sunrice HH:MM
sunrisemin= sunrisemin+sunrisehour*60 -- aantal minuten na 00:00 dat zon opkomt
local sunsetHour_full = fibaro:getValue(1,'sunsetHour') --Repeate the above for sunset
local sunsethour = string.format("%02d",string.sub (sunsetHour_full, 1 , 2))
local sunsetmin = string.format("%02d",string.sub(sunsetHour_full,4))
sunsetmin=sunsetmin+60+sunsethour*60 -- aantal minuten na 00:00 dat zon ondergaat
local HuidigUur = tonumber(os.date("%H"));
local HuidigeMinuut = tonumber(os.date("%M"));
local minuutna00=HuidigUur*60+HuidigeMinuut
if ( minuutna00 > sunrisemin
and
minuutna00 < sunsetmin
)
then
fibaro:setGlobal("DagNacht", "1")
fibaro:startScene(659); --rolluiken open scene
else
fibaro:setGlobal("DagNacht", "0")
fibaro:startScene(658); -scene om de rolluiken dicht te
end

-- Rolgordijn apart opendoen om 08.15
if ( minuutna00 > 495 --495 minuten is 8.15
and
minuutna00 < 520
)
then
if ( tonumber(fibaro:getValue(466, "value")) == 0 ) then
fibaro:call(466, "setValue", "15");; --rolgordijn een stukje open
fibaro:startScene(659); --rolluiken open om uiterlijk 8.15
end
end

if ( minuutna00 > 600 --495 minuten is 8.15
and
minuutna00 < 650
)
then
if ( tonumber(fibaro:getValue(466, "value")) < 17 ) then
fibaro:call(466, "setValue", "100");; --rolgordijn opendoen
end
end

-- kijken of het toilet licht uit moet
local IdToilet =fibaro:getGlobalValue("IdToilet")
local ToiletLaatstGeopend= tonumber(fibaro:getModificationTime(IdToilet, "value"));
local ToiletVerlichtingAan =tonumber(fibaro:getValue(IdToilet, "value")); --geeft de dimwaarde van de verlichting aan
if os.time()- ToiletLaatstGeopend >900 and ToiletVerlichtingAan > 1 then
fibaro:call(IdToilet, "turnOff"); --toiletverlichting uit zetten.
end