Workshop: Maak je eigen alarmsysteem met Domoticz

21 reacties
Inhoudsopgave
  1. 1. Inleiding
  2. 2. Sensors
  3. 3. Virtuele schakelaars
  4. 4. Alarm-situatie
  5. 5. Gebruiksvriendelijk in- en uitschakelen
  6. 6. Geknoei voorkomen
  7. 7. Besproken producten
  8. 8. Reacties

Inleiding

Als je je huis al vol hebt gehangen met (beweging)sensors voor een domotica-systeem, kun je die natuurlijk ook voor een alarmsysteem gebruiken. In deze workshop laten we je zien hoe je je op Domoticz gebaseerde huisautomatisering kunt opwaarderen naar een heus, volwaardig alarmsysteem.

Een tijdje terug publiceerden we het tweede deel lezen van onze workshop home automation met Domoticz. Deze van oorsprong Nederlandse open source software kan je gebruiken als kloppend hart van je huisautomatisering. Met Domoticz kun je allerhande sensors en schakelaars besturen en met behulp van simpele of juist complexere regels regelen hoe alle onderdelen in je slimme huis met elkaar moeten samenwerken. Het mooie van Domoticz is dat je het eenvoudig kunt installeren op je NAS-apparaat of bijvoorbeeld op een goedkope Raspberry Pi. Dat maakt Domoticz een zeer interessant, (bijna) gratis alternatief voor de kant-en-klare home automation controllerkastjes van diverse fabrikanten.

In de vorige editie van onze Domoticz handleiding toonden we onder meer hoe je Domoticz kunt combineren met domoticaproducten die gebruik maken van de Z-Wave standaard, een draadloos protocol met tweewegcommunicatie. In die workshop gingen we onder meer aan de slag met Z-Wave bewegingssensors, die voor een paar tientjes te koop zijn. Ter illustratie bespraken we het gebruiksmodel om op basis van beweging lampen automatisch in te schakelen. Echter, met Domoticz in combinatie met (Z-Wave) sensors en schakelaars is het ook prima mogelijk om een volledig toegerust alarmsysteem te maken, waarbij die sensors direct een dubbelrol kunnen spelen. Met dit nieuwe deel van onze Domoticz instructies laten we zien hoe je dat doet.

Disclaimer

Direct een belangrijke disclaimer: professionele (en dure) alarmsystemen hebben allerhande beveiligingsmechanismes en wij durven zeker niet te beweren dat je met behulp van Domoticz een alarmsysteem kunt ontwikkelen dat net zo betrouwbaar en robuust is als een officieel alarmsysteem van een paar duizend euro. Je kunt echter zeker wel een heel eind komen.

Alarmsysteem vereisten

Wat zijn de basisvereisten van een goed alarmsysteem? Allereerst moet je er natuurlijk voldoende bewegings-, deur- en andere sensoren op kunnen aansluiten. Bij een eventueel alarm moet het systeem via sms of op andere manieren jou of andere mensen op de hoogte kunnen stellen dat er iets loos is. Een alarmsysteem moet verder eenvoudig in en uit te schakelen zijn. Ten slotte moet er niet mee te knoeien zijn; dat is een extra uitdaging met Domoticz, aangezien Z-Wave sensors en schakelaars draadloos communiceren. Al deze zaken pakken we met ons DIY systeem op.

Lees ook:
Workshop Home Automation met Domoticz - deel 1
Workshop Home Automation met Domoticz - deel 2 (slimme meter, Z-wave, notificaties)

Sensors

Een alarmsysteem begint natuurlijk met sensors. In onze vorige Domoticz workshop lieten we al zien hoe je eenvoudig Z-Wave bewegingssensors kunt toevoegen. Voor een alarmsysteem zijn deur/raam-contactsensors echter minstens net zo belangrijk. Deze bestaan uit twee gedeeltes en monteer je op het kozijn en op je deur/raam. Ze geven een signaal af zodra de deur of het raam geopend wordt. Voor deze workshop gingen we opnieuw aan de slag met Z-Wave sensors van het merk Fibaro, aangezien deze goed werken. De Fibaro Door/Window Sensor kost zo’n vijf tientjes, is lekker klein en verkrijgbaar in uiteenlopende kleuren (waaronder wit, zwart, grijs en bruin), waardoor je deze doorgaans onopvallend kunt implementeren.

Wanneer je veel sensors aan Domoticz toevoegt, is het extra belangrijk om ze duidelijke namen te geven, anders raak je het overzicht kwijt. Een goed idee is wellicht alle namen een prefix te geven, bijvoorbeeld DWS (door window sensor), zodat je ze dus namen als “DWS – Keukenraam” geeft. Hoeveel sensors heb je nodig voor een goed alarmsysteem? Op z’n minst moeten alle eenvoudig van buiten te benaderen deuren en ramen voor openingssensor hebben. Heb je je Domoticz-basisstation in de meterkast staan, dan is het slim ook daar ook een sensor voor te kopen (waarover later meer). Daarnaast kun je voor extra beveiliging natuurlijk één of meerdere bewegingssensors in huis plaatsen. Gelukkig is het systeem eenvoudig uitbreidbaar en kun je natuurlijk prima testen met slechts een beperkt aantal sensors.

Sensors zijn niet het enige wat je zal moeten aanschaffen. In het geval van een daadwerkelijke alarmsituatie wil je natuurlijk dat het systeem je door middel van een sms-bericht, pushnotificatie of andere manier op de hoogte brengt. Daarnaast is het handig als er daadwerkelijk een alarm gaat, om in elk geval minder gemotiveerde inbrekers weg te jagen. Op Z-Wave gebaseerde sirenes zijn volop de koop, van merken als Aeon en Vision Security, vanaf zo’n vijf tientjes.  Een mooie, maar wel duurdere optie is misschien de POPP buitensirene met ingebouwde zonnecellen. Die kun je eenmalig ophangen zonder extra stroomvoorziening, waardoor je niet hoeft te denken aan het tijdig verwisselen van batterijen.


Verschillende fabrikanten hebben Z-Wave raam/deur-sensors. De producten van Fibaro zijn een betaalbare en betrouwbare optie.


POPP heeft een Z-Wave buitensirene met ingebouwd zonnepaneel.

Domoticz Security Panel

Heb je een aantal bewegings- en/of deursensors aan Domoticz gekoppeld, dan kunnen we aan de slag met het alarmsysteem. Domoticz is in de basis al voorbereid om gebruikt te worden als alarmsysteem, wat je kunt zien aan het ingebouwde security panel. Met dit geïntegreerde alarmpaneel kan je het systeem in drie standen zetten: Unarmed (uitgeschakeld), Arm home (alarmsysteem aan, gebruiker thuis) en Arm away (alarmsysteem aan, gebruiker niet aanwezig). Het virtuele paneel is zo ontworpen dat je het via een tablet die je bijvoorbeeld in de gang ophangt kunt bedienen. Dat is in de praktijk echter niet bepaald gebruiksvriendelijk en gaan we dan ook niet doen, maar onderliggend gaan we het in Domoticz ingebouwde systeem wel gebruiken om de staat van het alarm bij te houden.

Om het security panel te activeren ga je in Domoticz naar Instellingen, Systeem en voer je daarna onder Beveiligingspaneel een gewenste pincode en inschakelvertraging in. Ga daarna naar Instellingen, Meer opties, Beveiligingspaneel en schakel met de zojuist ingevoerde pincode het alarm één keer in en uit. Vanaf dat moment is de status van het alarm ook te vinden als virtuele schakelaar in het Schakelaars overzicht van Domoticz. We kunnen nu beginnen met het configureren van het alarmsysteem.


Het in Domoticz geïntegreerde beveiligingspaneel

Virtuele schakelaars

Voor de werking van het alarmsysteem gaan we gebruik maken van virtuele schakelaars. De naam zegt het al, dit zijn niet-fysieke schakelaars, die we puur in Domoticz aanmaken om de status van het systeem op te slaan. We maken er in eerste instantie één aan, getiteld Alarmsituatie. Deze virtuele schakelaar gebruiken we om te bepalen of er een alarmsituatie is of niet. De achterliggende gedachte is dat wanneer het Domoticz beveiligingspaneel is ingeschakeld en één of meer sensors een geopend raam/deur en/of beweging detecteren, deze virtuele schakelaar wordt ingeschakeld. Op basis daarvan zullen notificaties worden gestuurd en/of sirenes worden gestart.

Om virtuele schakelaars te maken ga je eenmalig naar Instellingen, Hardware en voeg je hier een device toe van het type Dummy. Als naam kun je ook gewoon “Dummy” gebruiken. Heb je dit device toegevoegd, dan verschijnt het in je lijst hardware, naast bijvoorbeeld je Z-Wave controller. Klik in de regel van je dummy device op de knop Maak virtuele sensoren om een virtuele schakelaar aan te maken. Geef hem daarna een naam (dus bijvoorbeeld “Alarmsituatie” en kies als type Schakelaar). De schakelaar verschijnt nu in het overzicht onder Schakelaars.

Nu we deze virtuele schakelaar hebben, kunnen we met behulp van events (gebeurtenissen) configureren dat deze wordt ingeschakeld indien de sensors iets oppikken. In deel 1 en 2 van onze Domoticz workshop hebben we al uitvoerig uitgelegd hoe je door middel van het ingebouwde Blockly-systeem eenvoudig op grafische manier scripts in elkaar kunt lego’en, zonder enige programmeerervaring. Ga naar Instellingen, Meer opties, Gebeurtenissen; hier maken we twee nieuwe Blockly events, getiteld Alarm trigger – Direct en Alarm trigger – Vertraagd. Bij sommige sensors, bijvoorbeeld bij je keukenraam, moet een alarm immers direct geactiveerd worden; bij andere sensors moet het pas afgaan na een bepaalde periode, zodat je de tijd hebt om het alarm uit te schakelen als je thuis komt. Dat geldt bijvoorbeeld voor de sensor op je voordeur of de bewegingssensor in de hal.

Het Blockly-script voor Alarm trigger – Direct zie je in figuur 1 en is redelijk eenduidig: ALS security status = armed away (oftewel, het beveiligingspaneel is ingeschakeld) EN DWS – Keukenraam = on (oftewel, de sensor op het keukenraam geeft aan dat deze is geopend) DAN zet Alarm situatie = on (oftewel, onze virtuele schakelaar Alarmsituatie gaat aan). Heb je meer sensors waarbij het alarm direct aan moet, dan kun je deze weer combineren: ALS security status = armed away EN (sensor 1 = on OF sensor 2 = on OF …).

Het script Alarm trigger – Vertraagd lijkt hier op, maar maakt gebruik van het blok Set … After … Seconds. Wat we hier doen is ALS security status = armed away EN (DWS Voordeur = on OR PIR Keuken = on OR …) DAN zet Alarm situatie = on na 30 seconden. Dat geeft genoeg tijd om het beveiligingspaneel uit te schakelen voordat het alarm af gaat. Dit Blockly-event zie je in figuur 2.


Figuur 1: Script “Alarm trigger – Direct”


Figuur 2: Script “Alarm trigger – Vertraagd”

Alarm-situatie

De voorgaande Blockly-scripts, die je natuurlijk moet uitbreiden zodra je meer sensors hebt, vormen de basis van het alarmsysteem. De volgende stap is dat je definieert wat er moet gebeuren in een alarmsituatie, dus als de virtuele schakelaar Alarmsituatie wordt aangezet. Daartoe maken we nog twee Blockly scripts.

Allereest een script genaamd Alarmsituatie, waarin we alle zaken definiëren die moeten gebeuren als er een alarm is. Je ziet het in figuur 3, zodat je het eenvoudig kunt namaken. De werking is simpel: ALS Alarmsituatie = on (oftewel, de virtuele alarmschakelaar staat aan) DAN verschillende zaken. In ons voorbeeld script doen we twee zaken: allereerst zetten we de gekoppelde Z-Wave sirene aan voor een minuut via SET Sirene = on For 1 minute. Daarnaast gebruiken we de Send notification optie. Notificaties hebben we in de Domoticz workshop in het vorige magazine al besproken. Via de Domoticz Android app kun je notificaties ontvangen, maar je kunt ook allerhande andere varianten installeren, zoals bijvoorbeeld de Pushover diensten voor push-notificaties op iOS en Android, de Clickatell sms-dienst en vele anderen. In Blockly kun je een prioriteit voor een notificatie instellen. Kies daar voor optie 2, wat betekent dat deze altijd direct wordt doorgestuurd en bijvoorbeeld in combinatie met Pushover actief als gelezen moet worden bevestigd. Onder het Messages gedeelte van Blockly vind je nog meer opties die je kunt instellen, zoals het versturen van sms-berichten naar andere nummers (bijvoorbeeld je buren).

Doordat het alarmsysteem onderdeel is van Domoticz en daarmee van je hele domotica set-up, kun je natuurlijk veel meer zaken bedenken en configureren. Het is bijvoorbeeld geen gek idee om bij een alarmsituatie alle lampen in je huis aan te laten gaan of misschien zelfs te laten knipperen. Als je een Hue-systeem hebt of andere gekleurde lampen, kun je die bijvoorbeeld laten knipperen tussen rood en blauw.

In het script Alarmsituatie uit configureren we wat moet gebeuren als de alarmsituatie voorbij is. Zie figuur 4. In ons voorbeeld is dat vrij simpel: ALS Alarm situatie = off DAN zet Sirene = off.


Figuur 3: Script “Alarm situatie”


Figuur 4: Script “Alarm situatie uit”

Gebruiksvriendelijk in- en uitschakelen

Het alarmsysteem is zo werkend; nu moet het nog gebruiksvriendelijk worden. Een tablet in de hal ophangen om het grafische beveiligingspaneel van Domoticz zelf te gebruiken is een mogelijkheid, maar niet ideaal. Het alarm kun je ook in- en uitschakelen via de Domoticz app op je smartphone, maar ook dat is wat omslachtig. De mooiste oplossing wat ons betreft is het aanschaffen van het zo’n 60 euro kostende Zipato Z-Wave RFID Keypad. Dit is een klein paneel met cijfertoetsen, waarmee je met behulp van een pincode het alarm kunt in- en uitschakelen. Het mooie is dat je ook RFID-‘druppels’ kunt koppelen, zodat je het alarm kunt in- en uitschakelen door zo’n druppel tegen het kastje te houden.

Het configureren van het kastje staat helder beschreven in de meegeleverde handleiding. Eenmaal toegevoegd aan Domoticz presenteert het kastje zich als meerdere schakelaars, waarvan één (in ons geval ID 00000632) degene is die daadwerkelijk aan- en uitgaat als je het alarm op het kastje in- en uitschakelt. Deze kan je toevoegen aan je overzicht van schakelaars, bijvoorbeeld onder de naam Alarm RFID Paneel. Wanneer je gaat naar Instellingen, Hardware, bij je Z-Wave controller klikt op Instellingen en dan klikt het RFID-paneel, kun je via de knop Node beheer kiezen voor User Code Management en Start User Code Enrollment. Bij de eerste optie kun je de inmiddels in het kastje aangemelde pincodes en/of RFID-codes beheren/verwijderen. Via de tweede optie kun je een nieuwe RFID-tag of pincode koppelen.

Heb je het kastje aan de praat, dan moet je er nog voor zorgen dat het in- of uitschakelen ervan ook resulteert in het in- en uitschakelen van het in Domoticz geïntegreerde beveiligingspaneel. Helaas is de status van het beveiligingspaneel niet te veranderen met een Blockly script, maar wél met een script in de in Domoticz geïntegreerde LUA programmeertaal. Maak bij Gebeurtenissen een nieuw evenement van het type LUA aan met de naam Alarm paneel. De code voor het script vind je in figuur 5 en ook online op WebID 1423. De werking is simpel: als het RFID paneel uitschakelt, gaat het Domoticz beveiligingspaneel ook uit, evenals de virtuele schakelaar Alarmsituatie. Als het RFID paneel inschakelt, schakelt het beveiligingspaneel ook in. Let er bij dit script wel op dat, wanneer je de (virtuele) schakelaars andere namen hebt gegeven, je die in het script ook goed vermeldt.


Dankzij het Zipato Z-Wave Keypad kun je je alarm in- en uitschakelen met RFID-tags.

Script "Alarm paneel"

commandArray = {}
 if (devicechanged['Alarm RFID Paneel'] == 'On') then
    commandArray['Domoticz Security Panel'] = 'Arm Away'
    print('### SecPanel: status changed to ' .. globalvariables['Security'])
 end
 if (devicechanged['Alarm RFID Paneel'] == 'Off') then
    commandArray['Domoticz Security Panel'] = 'Disarm'
    commandArray['Alarm situatie'] = 'Off'
    print('### SecPanel: status changed to ' .. globalvariables['Security'])
 end
return commandArray

Geknoei voorkomen

Met de stappen tot nu toe heb je een volledig werkend alarmsysteem met vrijwel alle mogelijkheden van een veel duurder professioneel systeem. Nu moet je er nog voor zorgen dat inbrekers je niet te slim af zijn. Wanneer inbrekers eenmaal binnen zijn, is doorgaans het eerste wat ze doen, je meterkast openen en de stroom deactiveren. Als dat gebeurt, ligt je internetverbinding er uit voordat Domoticz een notificatie kan sturen. Professionele alarmsystemen hebben om die reden vaak een noodstroomvoorziening en een gsm-verbinding. Hoewel dat met een UPS en 4G-dongle bij Domoticz ook te realiseren valt, opteren wij voor een simpelere oplossing.

Zet ook een deur/raam-sensor op de deur van je meterkast en voeg die toe aan het Alarm trigger – Direct script. Dat zorgt ervoor dat wanneer het beveiligingspaneel is geactiveerd en deze sensor activeert, er zonder enige vertraging notificaties worden uitgestuurd en je Z-Wave sirenes worden geactiveerd. Die sirenes hebben op hun beurt altijd weer een accu aan boord en blijven dan ook loeien als de stroom wordt uitgeschakeld. De notificatie is bovendien al lang en breed verstuurd voordat de dieven de stroomvoorziening van je internetverbinding en Domoticz systeem kunnen uitschakelen.

Iets anders om je bewust van te zijn is dat criminelen met zogenaamde jammers het draadloze signaal kunnen verstoren, zodat de draadloze deur/raam- en bewegingssensors niet meer kunnen communiceren met het basisstation. Professionele alarmsystemen communiceren om de zoveel seconden met de sensors om te bekijken of deze nog actief zijn – zo nee, dan slaan ze alarm. Dat is in Domoticz ook prima na te bootsen, door middel van scripts.

Voordat we die scripts gaan maken, maken we eerst nog een virtuele schakelaar, genaamd Jamming gedetecteerd. Deze virtuele schakelaar zullen we aanzetten als er geknoei is gedetecteerd en op basis van die schakelaar zullen we gewenste acties ondernemen. Daarnaast moet je even naar de configuratie van je Z-Wave apparaten via Instellingen, Hardware en dan de knop Instellingen bij je Z-Wave controller (bijvoorbeeld de in onze vorige workshop besproken Aeon Z-Stick Gen 5). Configureer nu voor alle Z-Wave apparaten die een vaste verbinding hebben met het stroomnet (bijvoorbeeld inbouwschakelaars of de Fibaro Wall Plug) dat Enable polling is ingeschakeld. Hiermee wordt de status van de apparaten om de zoveel tijd actief gecontroleerd. Klik daarna op de regel van je Z-Wave controller en configureer hier het Poll interval, bijvoorbeeld 30 seconden. Wat je ook nog even moet doen is bij Instelling, Hardware het Index (Idx) nummer van je Z-Wave controller noteren (in ons geval 8).

Het script om jamming te detecteren kan helaas niet met Blockly gemaakt worden, maar enkel met LUA. Ons script vind je hieronder. Conceptueel doet het script het volgende: het vraagt via de interne Domoticz API een lijst op van alle Z-Wave gekoppelde Z-Wave apparaten. Voor alle Z-Wave apparaten wordt bekeken of polling is ingeschakeld en zo ja, op welk tijdstip dit voor het laatst succesvol is gebeurd. Is dat langer dan 60 seconden geleden, dan wordt een interne variabele jammingdetected op true gezet en op basis daarvan wordt de virtuele schakelaar Jamming gedetecteerd in- of uitgeschakeld. In principe kun je het script één op één overnemen, maar let wel op regel 3: daar moet je het IP-adres en de poort van je eigen Domoticz-installatie invoeren en het Index-nummer van je Z-Wave controller juist configureren.

Ten slotte maken we nog een script Jamming gedetecteerd, waarin we configureren wat er moet gebeuren als er geknoei is gedetecteerd. Ons voorbeeld van figuur 7 is vrij basaal: als het beveiligingspaneel is ingeschakeld én de virtuele schakelaar Jamming gedetecteerd staat aan, dan wordt er een alarmnotificatie verstuurd. Je kunt er hier bijvoorbeeld ook voor kiezen om altijd een notificatie te versturen (ongeacht of het alarm is ingeschakeld) en bijvoorbeeld indien het geval dat het alarm is ingeschakeld ook de sirene af te laten gaan, door de virtuele schakelaar Alarm situatie aan te zetten.

Met deze voorzorgsmaatregelen heb je de basis gelegd voor een heel behoorlijk alarmsysteem, op basis van je bestaande domotica-installatie en Domoticz.

Script "Detecteer jamming"

commandArray = {}
json = (loadfile "/volume1/@appstore/domoticz/var/scripts/lua/JSON.lua")()
local url = string.format("http://192.168.1.100:8084/json.htm?type=openzwavenodes&idx=8")
url = string.format("%s %q", "curl", url)
local zwavenodes=assert(io.popen(url))
local nodes = zwavenodes:read('*all')
zwavenodes:close()
local jsonZwave = json:decode(nodes)
jammingdetected = false
for i, zwavedevice in ipairs(jsonZwave['result']) do
 if (jsonZwave['result'][i]['PollEnabled'] == 'true') then
    s = jsonZwave['result'][i]['LastUpdate']
    year = string.sub(s, 1, 4)
    month = string.sub(s, 6, 7)
    day = string.sub(s, 9, 10)
    hour = string.sub(s, 12, 13)
    minutes = string.sub(s, 15, 16)
    seconds = string.sub(s, 18, 19)
    t1 = os.time()
    t2 = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
    difference = (os.difftime (t1, t2))
    if (difference > 60) then
        print('Mogelijke jamming! Z-wave product niet bereikbaar: ' .. jsonZwave['result'][i]['Description'])
        jammingdetected = true
    end
 end
end
if (jammingdetected == true and otherdevices['Jamming gedetecteerd'] == 'Off') then
        commandArray['Jamming gedetecteerd']='On'
elseif (jammingdetected == false and otherdevices['Jamming gedetecteerd'] == 'On') then
        commandArray['Jamming gedetecteerd']='Off'
end    
return commandArray


Besproken producten

Vergelijk  

Product

Prijs

Fibaro Door/Window Sensor 2 Black

Fibaro Door/Window Sensor 2 Black

  • Deur-/Raamopening
  • Z-Wave

€ 29,79

16 winkels
Fibaro Door/Window Sensor 2 Brown

Fibaro Door/Window Sensor 2 Brown

  • Deur-/Raamopening
  • Z-Wave

€ 45,00

15 winkels
Fibaro Door/Window Sensor 2 Crème

Fibaro Door/Window Sensor 2 Crème

  • Deur-/Raamopening
  • Z-Wave

€ 49,94

15 winkels
Fibaro Door/Window Sensor 2 Dark Brown

Fibaro Door/Window Sensor 2 Dark Brown

  • Deur-/Raamopening
  • Z-Wave

€ 44,46

14 winkels
Fibaro Door/Window Sensor 2 Grey

Fibaro Door/Window Sensor 2 Grey

  • Deur-/Raamopening
  • Z-Wave

€ 48,15

14 winkels
Fibaro Door/Window Sensor 2 Light Brown

Fibaro Door/Window Sensor 2 Light Brown

  • Deur-/Raamopening
  • Z-Wave

€ 43,43

17 winkels
Fibaro Door/Window Sensor 2 White

Fibaro Door/Window Sensor 2 White

  • Deur-/Raamopening
  • Z-Wave

€ 35,63

23 winkels
Zipato Z-Wave RFID Keypad

Zipato Z-Wave RFID Keypad

  • Z-wave

€ 54,95

3 winkels
0
*