Zoals je in een vorige blog hebt kunnen lezen gebruik ik Xiaomi Aqara sensoren. Nu heb ik recent ook de Aqara Motion Sensor gekocht en deze bevalt me erg goed.
De motion sensor is lekker klein en detecteert beweging erg goed. De sensor heeft echter 1 nadeel. Zodra deze beweging heeft gedetecteerd, zal deze op “On” staan voor ongeveer 2 minuten en in de tussentijd geen beweging detecteren. Dat kan een issue zijn als je deze gebruikt om een lamp voor een bepaalde tijd aan te zetten met de voorwaarde dat deze lamp aanblijft zolang er nog beweging is.
Dit kan ik het beste uitleggen met onderstaande tijdsdiagram:
Lamp +-------------+ Motion +--(1)--+ +--(2)--+
In bovenstaande situatie kun je de lamp voor een bepaalde tijd aanschakelen zodra er beweging wordt gedetecteerd (Motion (1) hier). Als er echter beweging (Motion (2)) wordt gedetecteerd voordat de lamp automatisch uitgaat heb je een probleem. Immers als de lamp uitgaat en je bent nog steeds in de ruimte, dan wil je dat de lamp aanblijft. De motion sensor zal echter als de lamp uitgaat even geen extra beweging kunnen detecteren daar hij al eerder is getriggerd.
Dit valt in Domoticz eenvoudig op te lossen door een user-variabele aan te maken die je gebruikt om beweging vast te leggen. Deze user-variabele kun je dan vervolgens weer gebruiken als de lamp uitgaat. In dat geval controleer je of er in de tussentijd beweging is gedetecteerd en afhankelijk hiervan zet je de lamp dan meteen weer aan.
In Domoticz kun je eenvoudig een gebruikersvariabele aanmaken bij ‘Instellingen > Meer opties > gebruikersvariabelen’.
Vervolgens maak je een LUA ‘Device’ Script. Een LUA ‘Device’ script wordt altijd aangeroepen bij een verandering van een device.
-------------------------------------------------------------------------------- -- Motion -------------------------------------------------------------------------------- -- Script to check all motion sensors and act accordingly. -------------------------------------------------------------------------------- commandArray = {} -- loop through all the changed devices for deviceName,deviceValue in pairs(devicechanged) do if (deviceName == 'Motion Bijkeuken 1') then if (deviceValue == "On") then print("Beweging (1) in Bijkeuken gedetecteerd") -- Set 'Motion_Bijkeuken_1' toggle commandArray['Variable:Motion_Bijkeuken_1'] = tostring(1); -- Check if 'Lamp Bijkeuken' is not already on if (otherdevices['Lamp Bijkeuken'] == 'Off') then -- Turn 'Lamp Bijkeuken' on for 'x' minutes commandArray['Lamp Bijkeuken'] = 'On FOR 3' end elseif (deviceValue == "Off") then -- Reset 'Motion_Bijkeuken_1' toggle commandArray['Variable:Motion_Bijkeuken_1'] = tostring(0); end -- Lamp Bijkeuken switches Off but motion detected in the meantime? elseif ( (deviceName == 'Lamp Bijkeuken') and (deviceValue == "Off") ) then -- In the meantime motion detected if (uservariables["Motion_Bijkeuken_1"] == 1) then -- Check if 'Lamp Bijkeuken' is not already on if (otherdevices['Lamp Bijkeuken'] == 'Off') then -- Turn 'Lamp Bijkeuken' on for 'x' minutes commandArray['Lamp Bijkeuken'] = 'On FOR 3' end end end end return commandArray
Op deze manier onthoud je dus dat er een extra beweging is gedetecteerd in de tussentijd dat de lamp nog aan was. Dit werkt erg goed bij mij.
Komt goed van pas! 🙂
Ik neem aan dat dit script een aanvulling is op een script om de lamp aan te zetten?
Ik zie dat je in minuten schakelt: “on for ‘x’ minutes” kan ik daar seconds van maken en zo ja wat wordt dan: “On FOR 3”?
Bedankt voor het script Henri!
Dit is een aanvulling op het script dat ik eerder met je gedeeld heb Frans. De clausule “On for ‘getal'” is gedefinieerd door LUA en is in minuten. Zover ik weet is de tegenhanger “Off after ‘getal” weer in seconden met een minimum van 3. Zie ook de documentatie van Domoticz over LUA commando’s.
Ben weer even verder gegaan met dit script en draait nu goed in een muurkast/lamp met een bewegingsmelder.
In de hal heb ik een lamp met 2 (hue) lampen er in. Deze zijn als scene te benaderen maar natuurlijk ook als afzonderlijke lamp. Hoe wordt het script als er 2 lampen gecontroleerd moeten worden?
— Check if ‘Lamp1’ is not already on
if (otherdevices[‘Lamp1’] == ‘Off’) then
— Turn ‘Lamp1 and Lamp2’ on for ‘x’ minutes
commandArray[‘Lamp1’] = ‘On FOR 1’
commandArray[‘Lamp2’] = ‘On FOR 1’
Zoiets?
Je kunt met Hue ook in 1 keer een groep aan/uitzetten. Je kunt nl. in de HUE app lampen groeperen. Zo heb ik zelf een ‘Groep Woonkamer’ voor de HUE lampen. Voordeel is dat ze gelijk aangaan en niet 1 voor 1 in dat geval. Wil je het toch apart doen dan gaat dit als volgt:
-- Check if 'Lamp1' is not already on
if (otherdevices['Lamp1'] == 'Off') then
-- Turn 'Lamp1 on for 'x' minutes
commandArray['Lamp1'] = 'On FOR 1'
end
-- Check if 'Lamp2' is not already on
if (otherdevices['Lamp2'] == 'Off') then
-- Turn 'Lamp2 on for 'x' minutes
commandArray['Lamp2'] = 'On FOR 1'
end
Dank je Henri. Ik begrijp dat ik met Hue een groep in één keer aan kan zetten maar de bewegingsmelder is niet van Hue en zal het dus in een script in Domoticz moeten doen.
Ik hoef de 2e lamp niet te “checken” wanthij gaat altijd gelijk aan/uit met lamp 1. Kan ik daarom de commandArray van lamp2 gelijk onder de commandArray van lamp1 plaatsen en alles na jouw 1e “end” weglaten? Zal het eens gaan proberen. Bedankt voor de info!
Je kunt in Domoticz script ook een groep in 1 keer aanzetten:
commandArray['Groep Woonkamer'] = 'On FOR 1'
Dat is denk ik wat je wilt doen. Ik heb begrepen dat vanuit Domoticz altijd wordt aanbevolen om de check uit te voeren of iets off/on staat voordat je deze on/off zet.
Top! Dank je.
Hallo, Weet niet of ik hier goed zit. Maar kun je deze censor ook koppelen aan de ICS-2000? of moet ik eerst de gateway koppelen aan de ICS-2000.
Of werkt dit geen van alle.
Alvast bedankt.
ICS-2000 is voor KlikAanKlikUit (KAKU). Deze gebruikt een heel ander protocol en dat gaat dus niet gaat werken met elkaar volgens mij. Een overweging zou kunnen zijn om naar Zigbee2mqtt te kijken om meerdere type apparaten met Zigbee te laten communiceren. Je hebt dan zelfs je ICS-2000 niet meer nodig.
Ik weet niet of je een aparte App voor ICS-2000 gebruikt. Voor de Xiaomi heb je een aparte Gateway en App. Je kunt ze wel gewoon naast elkaar gebruiken maar dat is niet handig. Met Domoticz houd je alles in 1 systeem en App.
ICS-2000 kan wel met Zigbee apparaten communiceren. Heb mijn Hue lampen gekoppeld aan de ICS-2000. Ik weet alleen niet of ie deze sensor ook kan zien. Daar was ik naar op zoek. Ga het wel gewoon uitproberen.
En? Werkt het op de ICS-2000?