Einbruchschutz mit einer Anwesenheitssimulation.
Wohl der Klassiker für KNX-Zentralen ist die Anwesenheitssimulation. Mit ihr soll simuliert werden, dass sich jemand im Haus aufhält, um Einbrecher abzuschrecken. Natürlich macht das auch KNiXuino bei Bedarf.
Bei der Anwesenheitssimulation werden Lichter in zufälliger Abfolge ein- und ausgeschaltet. Such dir also Lichter aus, die einerseits von aussen gut sichtbar sind, andererseits vielleicht nicht allzu viel Strom verbrauchen. Es reichen 2-3 gut gewählte Lichter, man kann aber auch deutlich mehr nehmen. Zusätzlich muss man für jedes Licht festlegen wie lange die Phase des Einschaltens mindestens und höchstens dauern soll. Danach folgt die ausgeschaltete Phase, die man ebenfalls durch eine Mindest- und eine Höchstzeit festlegt.
Man kann die Anwesenheitssimulation im Sketch direkt anlegen, ich bevorzuge aber eine Definition im Definionfile, das wir im letzten Tutorial angelegt haben. Hier gehören folgende Zeilen eingefügt. (Im Definitionfile, das den Libraries beiliegt sind die meisten Teile schon enthalten, gehören also vor allem angepasst.)
Es gibt in der Library eine Anwesenheitssimulation, die man inkludieren muss. Dann legt man ein Objekt der Klasse an.
#include "KNXPresenceSimulation.h" KNXPresenceSimulation* presenceSim = new KNXPresenceSimulation();
Die Anwesenheitssimulation ist genauso wie ein Schalter auch ein KNXObjekt, das von KNXBit abegeleitet ist, somit kann man sie wie ein Licht ein- und ausschalten. Gibt man ihm eine Gruppenadresse, dann geht das auch über externe KNX Taster.
Mann muss der Anwesneheitssimulation jetzt Objekte einfügen, das sind Lichter, die beteiligt werden sollen und die oben erwähnten Mindest- und Maximalzeiten. Es macht z.B. Sinn ein Licht in einem Aufenthaltsraum viel brennen zu lassen und Toilette, Gang etc. immer nur kurz zu aktivieren. So kommt Leben in die Bude.
Eingefügt werden neue KNXPresenceSimulationObj Objekte. Bei der Erzeugung wird das betroffene Licht, sowie die minimale On Zeit, die maximale On Zeit, die minimale Off Zeit und die maximale Off Zeit in Sekunden übergeben. Dies geschieht im Definitionfile in der Funktion ObjectSettings.
presenceSim->setInternalBit(1); presenceSim->addObject(new KNXPresenceSimulationObj(eg_aquarium, 60*15, 60*60, 20, 60*5)); presenceSim->addObject(new KNXPresenceSimulationObj(eg_wc, 40, 180, 60*20, 60*60));
Warum das internal Bit gesetzt wird erfährst du genauer im Theorietutorial über das internal Bit. Während ich das WC nur immer recht kurz einschalte (zwischen 40 und 180 Sekunden) und danach lange ausschalte (zwischen 20 und 60 Minuten), brennt das Aquarienlicht fast immer.
Im Setup des Sektches wird dann noch die Funktion objectSettings ausgeführt. Hier werden verschiedene Einstellungen an den Objekten vorgenommen. Später werden hier noch allerlei Dinge eingefügt. Du kannst einstweilen die Funktion völlig leer machen.
Adaptiere nun deinen Sketch aus dem letzten Tutorial (switch) so, dass deine Lichter (auch dein "Testlicht") im Definitionenfile festgelegt wird. Dann baust du den Sketch so um, dass die Definitionen aus diesem File eingelesen werden. In den Sketches direkt brauchst du damit ab sofort keine KNXObjekte mehr anzulegen.
#include "KNXConnection_SIMKNX_raw.h" #include "KNXBasicObjectTypes.h" #include "KNXObjectDefinitions.h" #include "KNXPresenceSimulation.h" void setup() { Serial.begin(9600); Serial.println("Ready ! "); objectSettings(); presenceSim->on(); } void loop() { knx->doIt(); } void serialEvent() { char ch = Serial.read(); if (ch == 'p') presenceSim->toggle(); if (ch == 's') presenceSim->print(); }
Solltest du die Anwesenheitssimulation produktiv einsetzen wollen musst du sie noch aktivieren (einschalten) oder deaktivieren (ausschalten). Je nach Möglichkiet bietet sich dafür ein KNX Taster an, eine selber programmierte Logik oder was auch immer.