Anwesenheitssimulation – zufälliges Schalten von Licht

Gerade in der dunkel Jahreszeit kommt es immer häufiger zu Einbrüchen. Licht ist dabei ein gute Abschreckung für Einbrecher. Aber was ist, wenn man nicht zuhause ist? Das Licht einfach an lassen? Eher nicht. Einbrecherbanden sind immer besser organisiert und beginnen damit potentielle Objekte zu beobachten. Ein Dauerlicht wird dabei schnell als „ungefährlich“ enttarnt.

Eine weitere Möglichkeit ist der Einsatz einfacher Zeitschaltuhren. Doch auch ein immer gleicher Zyklus kann relativ einfach durch Beobachtung erkannt werden und daraus geschlossen werden, dass die Bewohner nicht zuhause sind.

Anstatt sich eine teure Alarmanlage zuzulegen oder einen Wachhund anzuschaffen, ist eine zufällige Lichtsteuerung eine Alternative.

Mit FHEM und schaltbarem Licht, wie zum Beispiel die MiLight-LED-Lampen oder jede andere Lichtquelle, welche über eine Funksteckdose gesteuert werden kann, geht dies relativ einfach und ist kostengünstig.

In diesem Beitrag erkläre ich euch, wie ihr eine zufällige Lichtsteuerung am einfachsten realisieren könnt.

zufällige Schaltvorgänge innerhalb eines Zeitraumes

Die beste Möglichkeit ist das zufällige Schalten innerhalb eines Zeitfensters.

Möglich macht dies das Hilfsmodul „RandomTimer“. Es besitzt folgende Syntax:

define <name> RandomTimer <timespec_start> <device> <timespec_stop> [<timeToSwitch>]

Um zum Beispiel die Papierlampe im Wohnzimmer ab Sonnenuntergang bis sechs Stunden nach Sonnenuntergang zufällig zu schalten, ergibt sich folgender Befehl:

define ZufallsTimerWZ RandomTimer *{sunset_abs()} WZ_Papierlampe *{sunset_abs(6*3600)} 600

randomtimer FHEM

Der Zufall steckt hier zum Einen in der 600 und zum Anderen im automatisch hinzugefügtem Attribut „switchmode“. Die 600 bestimmt den Zeitpunkt in Sekunden in der geschaltet werden soll. In diesem Fall wird also alle 600 Sekunden geschaltet.

Dies klingt zunächst nicht sehr zufällig. Der Schaltvorgang wird deswegen mit einer Toleranz von +-10% ausgeführt. Ein Beobachter von Außen wird dies jedoch nicht groß feststellen, weshalb man hier noch nicht groß von „zufällig“ reden kann. Deshalb das Attribut „switchmode“. Dieses Attribut legt den Zufall fest, mit der der Schaltbefehl wirklich gesendet wird. Standardmäßig ist dieser auf 800/200 festgesetzt.

Die erste Ziffer (800) beschreibt hier die Wahrscheinlichkeit, dass das Gerät angeschaltet wird, wenn es ausgeschaltet ist. Der zweite Wert die Wahrscheinlichkeit, dass das Gerät ausgeschaltet wird, wenn angeschaltet ist.

In diesem Fall, wird das Gerät also alle 600 Sekunden mit einer Wahrscheinlichkeit von 80% (800/1000) eingeschaltet, wenn es ausgeschaltet war und mit einer Wahrscheinlichkeit von 20% (200/1000) aus, wenn es eingeschaltet war.

Und keine Angst, das Licht wird auch nicht immer zum eingestellten Zeitpunkt ausgeschaltet. Im oben genannten Beispiel ist als Zeitfenster Ende der Sonnenuntergang + 6 Stunden eingestellt. Bei einem Sonnenuntergang um 17 Uhr endet das Zeitfenster also um 23 Uhr. Um hier das Erkennen eines Musters zu unterbinden, ist eine Zeitverzögerung in der Höhe bis zur eingestellten „timeToSwitch“-Zeit (600 Sekunden) eingebaut, die wiederum die +-10%-Toleranz besitzt.

Durch diese Toleranz und der Wahrscheinlichkeit, lässt sich perfekt eine zufällige Lichtschaltung realisieren.

0 0 vote
Article Rating
Subscribe
Benachrichtige mich zu:
guest
13 Comments
älteste
neuste beste Bewertung
Inline Feedbacks
View all comments
Alex
Alex
3 Jahre her

Hallo
Erstmal einen Grossen Lob für dein Block, es hat mir schon geholfen paar meiner Ideen zu verwiklichen.
Versuche Grade ein „Urlaub Modus“ einzurichten den ich ein mal programmieren muss und dann einschalten kann wen ich weg fahre. Kannst du mir einen Tipp geben wie ich es schaffe?

Alex
Alex
3 Jahre her
Reply to  Daniel

Hallo Daniel
Ich habe dein Beispiel ausprobiert und es hat funktioniert, jezt versuche ein „Urlaubs Modus“ zu defenieren den ich manuel ein- bzw. ausschalten kann worüber meine Wohnungs Beleuchtung über RandomTimer gesteuert wird. Also nur dann wen ich weg fahre und sonst aus ist. Ich probiere grade :
attr   ZufallsTimerTisch      disableCond  (Urlaub()) Werde heute Abend sehen ob es klappt
MfG Alex

Alex
Alex
3 Jahre her
Reply to  Alex

Hallo Daniel
Leider hat es nicht funktioniert
Auch wen ich den Urlaub Modus auf off schalte arbeitet RandomTimer weiter
Vielleicht hast du eine Idee wiie ich den RandomTimer ausschalten kann?

Mike
Mike
2 Jahre her

Hallo

Das ist eine Super Seite hat mir schon viel weitergeholen. Vielen Dank für die Mühe

Aber bei der Anwesenheitssimulation bin ich auf ein Problem gestoßen und finde dazu nix auf anderen Seiten. Vieleicht kannst du mir da weiter helfen.

Ganz simpel gesagt er schaltet mir das Licht nur ein aber nicht aus.

im Log kommt immer

2018.02.15 19:32:51 3: [Zufall_Wohnzimmer_1] result of function Value(Licht_Wohnzimmer_1) must be ‚on‘ or ‚off‘

geschaltet wird ein Sonoff Basic mit Tasmota und MQTT

define Anwesenheit dummy
attr Anwesenheit eventMap on:Heim off:Auswärts
attr Anwesenheit webCmd Heim:Auswärts

define Zufall_Wohnzimmer_1 RandomTimer *{sunset_abs()} Licht_Wohnzimmer_1 *{sunset_abs(5*3600)} 600
attr Zufall_Wohnzimmer_1 disableCond (Value(„Anwesenheit“) eq „Heim“)
attr Zufall_Wohnzimmer_1 switchmode 800/200

define Licht_Wohnzimmer_1 MQTT_DEVICE
attr Licht_Wohnzimmer_1 IODev Mosquitto
attr Licht_Wohnzimmer_1 autoSubscribeReadings +/Licht_Wohnzimmer_1/+
attr Licht_Wohnzimmer_1 event-on-change-reading .*
attr Licht_Wohnzimmer_1 eventMap on:An off:Aus
attr Licht_Wohnzimmer_1 publishSet ON OFF cmnd/Licht_Wohnzimmer_1/power
attr Licht_Wohnzimmer_1 stateFormat POWER
attr Licht_Wohnzimmer_1 subscribeReading_INFO1 tele/Licht_Wohnzimmer_1/INFO1
attr Licht_Wohnzimmer_1 subscribeReading_INFO2 tele/Licht_Wohnzimmer_1/INFO2
attr Licht_Wohnzimmer_1 subscribeReading_INFO3 tele/Licht_Wohnzimmer_1/INFO3
attr Licht_Wohnzimmer_1 subscribeReading_LWT tele/Licht_Wohnzimmer_1/LWT
attr Licht_Wohnzimmer_1 subscribeReading_POWER stat/Licht_Wohnzimmer_1/POWER
attr Licht_Wohnzimmer_1 subscribeReading_RESULT stat/Licht_Wohnzimmer_1/RESULT
attr Licht_Wohnzimmer_1 subscribeReading_SENSOR tele/Licht_Wohnzimmer_1/SENSOR
attr Licht_Wohnzimmer_1 subscribeReading_STATE tele/Licht_Wohnzimmer_1/STATE
attr Licht_Wohnzimmer_1 subscribeReading_UPTIME tele/Licht_Wohnzimmer_1/UPTIME
attr Licht_Wohnzimmer_1 subscribeReading_power cmnd/Licht_Wohnzimmer_1/power
attr Licht_Wohnzimmer_1 webCmd An:Aus

Vielen Dank für deine Mühe

Gruß Mike

Mike
Mike
2 Jahre her
Reply to  Daniel

Hmm… liegt wohl am Kommentar
Sieht richtig aus bei mir.

Aus wenn ich disableCond lösche geht das Licht bei mir nur an und nicht aus.

Und im Log [Zufall_Wohnzimmer_1] result of function Value(Licht_Wohnzimmer_1) must be ‚on‘ or ‚off‘

Danke für die schnellle Antwort

Mike
Mike
2 Jahre her
Reply to  Mike

Hi und ich hab noch was das gehört jetzt zwar nicht zu diesem Thema. Doch da komm ich gerade auch nicht weiter.
Seit dem ich die Sonoff drin habe habe ich ständig
Safe Config anstehen ?.
Die Modifikation vom Timer ist klar aber die readings ?

Mike
Mike
2 Jahre her
Reply to  Daniel

So jetzt läuft es. Es liegt an Mosquitto der braucht stateFormat Power und damit kann der RandomTimer nicht arbeiten.
Also jetzt ein Umweg über einen Dummy und DOIF…
Abermeine Save Config steht immer noch an ?

Mike
Mike
2 Jahre her
Reply to  Daniel

Hi

Auf das Rote Fragezeichen hatte ich schon gedrückt. jedoch sagt es mir nicht viel.
Denke das sich dort der Status der Sonoff Schalter geändert hat. Aber warum er es mir da anzeigt wird bzw. wie ich es abschalten/ändern kann ist mir nicht klar.

gruß Mike

Max
Max
1 Jahr her
Reply to  Mike

Hi Mike,
könntest Du mir bitte deine Lösung via Dummy / Doif senden oder hier posten?
Vielen Dank und Grüße
Max