Wir verwirklichen Ihre Ideen!Raum Heilbronn · info@appproject.de
AppProjectApp-Entwicklung · Smart Home · 3D-Druck
Programmvorlage · Sicherheit & Alarm

Anwesenheitssimulation im Urlaub: Licht und Rollläden zufällig

Kurz erklärt: Eine Anwesenheitssimulation lässt das Haus im Urlaub bewohnt wirken. Ist die Systemvariable „Urlaub“ gesetzt, würfelt ein HomeMatic-Script täglich Zeiten rund um den Sonnenuntergang aus. Zwei Programme schalten danach Lampen und Rollläden an CCU3, RaspberryMatic oder OpenCCU – jeden Abend etwas anders.Stand: November 2026

Auf einen Blick

HmIP-PS-2
Ziel
Im Urlaub Licht und Rollläden zu zufälligen Zeiten rund um den Sonnenuntergang schalten, damit das Haus bewohnt wirkt.
Benötigt
Homematic-Zentrale, Schaltsteckdose HmIP-PS-2 und/oder Schaltaktor HmIP-BSM, Rollladenaktor HmIP-BROLL, vier Systemvariablen, ein HomeMatic-Script · Komponenten ansehen
Aufwand
ca. 45–60 Minuten (ohne Elektroinstallation)
Niveau
Niveau 2 von 3: Fortgeschritten
Läuft mit
CCU3RaspberryMaticOpenCCU

Programmvorlage Diese Anleitung ist eine Programmvorlage. Programme zuerst mit unkritischen Geräten testen, etwa einer Stehlampe an der Schaltsteckdose, und das Verhalten einige Tage vor dem Urlaub beobachten. Namen von Geräten und Systemvariablen an die eigene Installation anpassen.

Wichtig Unterputzaktoren wie der HmIP-BSM und der Rollladenaktor HmIP-BROLL werden in die 230-V-Installation eingebaut. Das darf nur eine Elektrofachkraft. Eine Anwesenheitssimulation ist zudem nur eine Abschreckung und kein Einbruchschutz mit Garantie.

Aktueller Stand eQ-3 hat angekündigt, neue Geräte nur noch bis Ende 2026 in die CCU3-Firmware zu integrieren; danach übernimmt die Community die Weiterentwicklung als OpenCCU. Die hier genutzten Funktionen (Systemvariablen, Zeitmodul, HomeMatic-Script) sind davon nicht betroffen.

Inhalt dieser Anleitung
  1. Ziel und Idee
  2. Geräte und Systemvariablen einrichten
  3. Takt-Programm mit HomeMatic-Script
  4. Programme für Licht und Rollläden
  5. Testen und Urlaub beenden
  6. Benötigte Komponenten
  7. Tipps aus der Praxis
  8. Häufige Fragen
  9. Passende Anleitungen

01Ziel und Idee

Eine klassische Zeitschaltuhr schaltet jeden Abend zur selben Minute. Wer ein Haus einige Tage beobachtet, erkennt das Muster schnell. Besser ist ein Ablauf, der sich am Sonnenuntergang orientiert und jeden Tag ein wenig anders aussieht.

Die Vorlage arbeitet in drei Schritten:

  1. Eine Systemvariable „Urlaub“ schaltet die Simulation ein und aus.
  2. Ein HomeMatic-Script würfelt einmal täglich neue Zeiten aus: Licht an 10–45 Minuten nach Sonnenuntergang, 60–150 Minuten Brenndauer, Rollläden zu 0–30 Minuten nach Sonnenuntergang und am nächsten Morgen zwischen 7:00 und 8:15 Uhr wieder auf. Das Script läuft alle 5 Minuten und setzt zwei Logikwerte, „Sim_Licht“ und „Sim_Rollladen“.
  3. Zwei einfache WebUI-Programme reagieren auf diese Logikwerte und schalten die eigentlichen Geräte.

Die Trennung hat einen Vorteil: Welche Lampen und Rollläden beteiligt sind, legt man bequem in der WebUI fest. Das Script muss dafür nicht angepasst werden.

02Geräte und Systemvariablen einrichten

Für das Licht eignet sich eine Schaltsteckdose HmIP-PS-2 mit einer Steh- oder Tischlampe. Deckenleuchten lassen sich mit einem Schalt-Mess-Aktor für Markenschalter HmIP-BSM einbinden, Rollläden mit einem Rollladenaktor HmIP-BROLL. Alle Geräte werden wie gewohnt über „Geräte anlernen“ → „HmIP Gerät anlernen“ an der Zentrale angelernt und mit sprechenden Namen versehen, etwa „Stehlampe Wohnzimmer“.

Damit die Astrozeiten stimmen, muss der Standort der Zentrale korrekt hinterlegt sein (Einstellungen → Systemsteuerung → Zeit-/Positionseinstellungen).

Unter Einstellungen → Systemvariablen legt man vier Variablen an:

Name Typ Zweck
Urlaub Logikwert wahr = Simulation aktiv
Sim_Plan Zeichenkette Tagesplan des Scripts, nur zur Kontrolle
Sim_Licht Logikwert wahr = Licht soll an sein
Sim_Rollladen Logikwert wahr = Rollläden sollen zu sein

Die Namen müssen exakt so geschrieben werden wie im Script, sonst findet dom.GetObject() die Variablen nicht.

Eine Systemvariable vom Typ Zeichenkette kann beliebigen Text aufnehmen. Das Script schreibt dort beim ersten Lauf des Tages den Plan hinein; ein Startwert ist nicht nötig. Die beiden Logikwerte bleiben zunächst auf falsch, bis das Script sie erstmals setzt.

03Takt-Programm mit HomeMatic-Script

Unter Programme und Verknüpfungen → Programme & Zentralenverknüpfung wird ein neues Programm „Anwesenheitssimulation Takt“ angelegt. Als Bedingung dient ein Zeitmodul, das täglich ganztägig alle 5 Minuten auslöst, kombiniert mit der Prüfung der Variable „Urlaub“:

Programme & ZentralenverknüpfungAnwesenheitssimulation Takt
Bedingung: Wenn …
  1. Zeitsteuerung (Zeitmodul): täglich, ganztägig, alle 5 Minuten
  2. UNDSystemvariable „Urlaub“ ist wahr – nur prüfen
Aktivität: Dann …
  1. Skript ausführen (siehe HomeMatic-Script unten) – sofort
Das Zeitmodul startet das Programm alle 5 Minuten. Nur wenn „Urlaub“ wahr ist, läuft das Script, würfelt einmal täglich ab 12 Uhr neue Zeiten aus und setzt „Sim_Licht“ und „Sim_Rollladen“. Die eigentlichen Geräte schalten zwei separate Programme, die auf diese Variablen reagieren.

In die Dann-Aktion kommt das folgende Script. Es nutzt system.Random() für die Zufallszahlen und system.SunsetTime() für den Sonnenuntergang. Der Tagesplan wird in „Sim_Plan“ gespeichert, zum Beispiel 2026-11-02;1046;1167;1031;458. So lässt sich unter „Status und Bedienung → Systemvariablen“ jederzeit nachsehen, was für den Abend geplant ist.

HM-SkriptHomeMatic-Script: Zufallszeiten würfeln und Sollzustand setzen
! Anwesenheitssimulation – HomeMatic-Script
! Wird alle 5 Minuten vom Programm "Anwesenheitssimulation Takt" gestartet,
! solange die Systemvariable "Urlaub" wahr ist.
! Benötigte Systemvariablen:
!   Sim_Plan      (Zeichenkette)  – Tagesplan: Datum;LichtAn;LichtAus;RolloZu;RolloAuf
!   Sim_Licht     (Logikwert)     – wahr = Licht soll an sein
!   Sim_Rollladen (Logikwert)     – wahr = Rollläden sollen zu sein
! Alle Zeiten werden als Minuten seit Mitternacht gespeichert (z. B. 1110 = 18:30 Uhr).

string heute = system.Date("%Y-%m-%d");

! Stunden und Minuten ohne führende Null umwandeln (z. B. "08" -> "8")
string sH = system.Date("%H");
string sM = system.Date("%M");
if (sH.Substr(0, 1) == "0") { sH = sH.Substr(1, 1); }
if (sM.Substr(0, 1) == "0") { sM = sM.Substr(1, 1); }
integer jetzt = (sH.ToInteger() * 60) + sM.ToInteger();

string uH = system.SunsetTime("%H");
string uM = system.SunsetTime("%M");
if (uH.Substr(0, 1) == "0") { uH = uH.Substr(1, 1); }
if (uM.Substr(0, 1) == "0") { uM = uM.Substr(1, 1); }
integer sunset = (uH.ToInteger() * 60) + uM.ToInteger();

integer lichtAn = 0;
integer lichtAus = 0;
integer rolloZu = 0;
integer rolloAuf = 0;
boolean licht = false;
boolean rollo = false;

var svPlan = dom.GetObject("Sim_Plan");
var svLicht = dom.GetObject("Sim_Licht");
var svRollo = dom.GetObject("Sim_Rollladen");
string plan = svPlan.Value();

! Einmal am Tag ab 12:00 Uhr neue Zufallszeiten würfeln
if ((plan.StrValueByIndex(";", 0) != heute) && (jetzt >= 720)) {
  ! Licht 10 bis 45 Minuten nach Sonnenuntergang einschalten
  lichtAn = sunset + system.Random(10, 45);
  ! Licht 60 bis 150 Minuten brennen lassen, spätestens 23:55 Uhr aus
  lichtAus = lichtAn + system.Random(60, 150);
  if (lichtAus > 1435) { lichtAus = 1435; }
  ! Rollläden 0 bis 30 Minuten nach Sonnenuntergang schließen
  rolloZu = sunset + system.Random(0, 30);
  ! Am nächsten Morgen zwischen 7:00 und 8:15 Uhr öffnen
  rolloAuf = 420 + system.Random(0, 75);
  plan = heute # ";" # lichtAn # ";" # lichtAus # ";" # rolloZu # ";" # rolloAuf;
  svPlan.State(plan);
}

! Aktuellen Plan lesen
lichtAn = plan.StrValueByIndex(";", 1).ToInteger();
lichtAus = plan.StrValueByIndex(";", 2).ToInteger();
rolloZu = plan.StrValueByIndex(";", 3).ToInteger();
rolloAuf = plan.StrValueByIndex(";", 4).ToInteger();

! Soll-Zustände berechnen
if ((jetzt >= lichtAn) && (jetzt < lichtAus)) { licht = true; }
if ((jetzt >= rolloZu) || (jetzt < rolloAuf)) { rollo = true; }
! Noch kein Plan vorhanden: nichts schalten
if (rolloZu == 0) { rollo = false; }

! Systemvariablen nur bei Änderung schreiben
if (svLicht.Value() != licht) { svLicht.State(licht); }
if (svRollo.Value() != rollo) { svRollo.State(rollo); }

Das Script rechnet alle Uhrzeiten in Minuten seit Mitternacht um. Einmal am Tag ab 12 Uhr entsteht ein neuer Plan aus Sonnenuntergang und Zufallszahlen von system.Random(min, max). Danach vergleicht es die aktuelle Uhrzeit mit dem Plan und schreibt die Logikwerte nur, wenn sich etwas ändert. Dadurch lösen die Programme „Sim Licht“ und „Sim Rollladen“ nicht alle 5 Minuten erneut aus.

system.Random() steht seit der CCU-Firmware 2.29.18 zur Verfügung. Auf aktuellen CCU3-, RaspberryMatic- und OpenCCU-Versionen ist die Funktion vorhanden; ein Add-on wie CUxD wird dafür nicht benötigt.

04Programme für Licht und Rollläden

Jetzt fehlen noch die beiden Programme, die die Geräte tatsächlich schalten.

Programm „Sim Licht“

  • WENN: Systemvariable „Sim_Licht“ ist wahr – bei Änderung auslösen
  • DANN: Stehlampe Wohnzimmer (HmIP-PS-2) Schaltzustand ein, Deckenlicht (HmIP-BSM) ein – sofort
  • SONST: beide Geräte aus – sofort

Programm „Sim Rollladen“

  • WENN: Systemvariable „Sim_Rollladen“ ist wahr – bei Änderung auslösen
  • DANN: Rollladenaktor Behanghöhe 0 % (geschlossen) – sofort
  • SONST: Rollladenaktor Behanghöhe 100 % (offen) – sofort

Mehrere Räume wirken glaubwürdiger, wenn sie nicht gleichzeitig schalten. Dafür lässt sich die zweite Lampe in der Dann-Zeile mit „Verzögerung um“ einige Minuten später einschalten. Wer mehr Abwechslung möchte, kopiert das Script, benennt die Variablen um (etwa „Sim_Licht2“) und erhält so eine zweite, unabhängig gewürfelte Lichtgruppe.

05Testen und Urlaub beenden

Zum Testen setzt man „Urlaub“ an einem normalen Tag auf wahr und prüft nach 12 Uhr, ob in „Sim_Plan“ ein Plan mit dem heutigen Datum steht. Die Minutenwerte lassen sich leicht umrechnen: 1110 Minuten sind 18:30 Uhr. Für einen schnellen Test kann man im Script die Grenzen vorübergehend anpassen, sodass das Licht schon wenige Minuten später schaltet.

Beim Zurückkommen wird „Urlaub“ auf falsch gesetzt. Das Takt-Programm läuft dann nicht mehr; die Logikwerte behalten aber ihren letzten Zustand. Damit kein Licht anbleibt, empfiehlt sich ein kleines drittes Programm: WENN „Urlaub“ ist falsch – bei Änderung auslösen, DANN „Sim_Licht“ auf falsch und „Sim_Rollladen“ auf falsch setzen. Über die beiden Programme oben gehen Licht aus und Rollläden auf – und zwar sofort, auch wenn es gerade Nacht ist. Wer das nicht möchte, setzt „Urlaub“ erst tagsüber zurück.

Die Variable „Urlaub“ kann zusätzlich von einer bestehenden Alarmanlage oder einem Wandtaster an der Haustür gesetzt werden, damit man vor der Abreise nur eine Taste drücken muss.

Benötigte Komponenten

4 Produkte

*Werbung / Affiliate-Link – Als Amazon-Partner verdiene ich an qualifizierten Verkäufen.

06Tipps aus der Praxis

  • Variablennamen im Script und in der WebUI müssen exakt übereinstimmen, inklusive Groß- und Kleinschreibung. Ein Tippfehler führt dazu, dass dom.GetObject() nichts findet und das Script abbricht.
  • Das Script lässt sich vorab unter „Programme und Verknüpfungen → Programme & Zentralenverknüpfung“ mit „Skript testen“ ausführen. So fallen Syntaxfehler auf, bevor der Urlaub beginnt.
  • Das Licht wird spätestens um 23:55 Uhr ausgeschaltet, damit der Plan nicht über Mitternacht reicht. Wer länger simulieren möchte, muss die Vergleichslogik im Script erweitern.
  • Nur Lampen nutzen, die von außen sichtbar sind. Ein Licht im fensterlosen Flur bringt für die Simulation nichts.
  • Rollläden nicht automatisch schließen, wenn draußen etwas im Weg sein kann (Blumenkästen, Fenster auf Kipp). Den Rollladenaktor vorab im Alltag beobachten.
  • Vor der Abreise prüfen, ob die Zentrale per Fernzugriff oder App erreichbar ist. So lässt sich im Notfall „Urlaub“ auch von unterwegs ausschalten.

07Häufige Fragen

Wie funktioniert eine Anwesenheitssimulation mit Homematic?

Eine Systemvariable „Urlaub“ aktiviert ein Programm, das alle 5 Minuten ein HomeMatic-Script startet. Das Script legt täglich zufällige Schaltzeiten rund um den Sonnenuntergang fest und setzt Logikwerte, auf die weitere Programme mit Licht und Rollläden reagieren.

Gibt es in HomeMatic-Script eine Zufallsfunktion?

Ja. Seit CCU-Firmware 2.29.18 gibt es system.Random(min, max), das eine ganze Zufallszahl im angegebenen Bereich liefert. Ältere Lösungen mit CUxD oder /dev/urandom sind auf aktuellen Zentralen nicht mehr nötig.

Warum nicht einfach eine Zeitschaltuhr mit festen Zeiten?

Feste Zeiten erzeugen jeden Tag dasselbe Muster, das von außen leicht zu erkennen ist. Zufällige Abweichungen und die Orientierung am Sonnenuntergang wirken natürlicher, weil sich auch Bewohner nicht minutengenau an einen Plan halten.

Ersetzt die Anwesenheitssimulation eine Alarmanlage?

Nein. Sie kann Gelegenheitstäter abschrecken, garantiert aber keinen Schutz. Sinnvoll ist die Kombination mit Tür- und Fensterkontakten und einer Alarmanlage, die bei Abwesenheit scharf geschaltet ist.

Welche Geräte braucht man für die Simulation?

Für Steh- und Tischlampen genügt eine Schaltsteckdose wie die HmIP-PS-2. Deckenlicht und Rollläden benötigen Unterputzaktoren wie HmIP-BSM und HmIP-BROLL, die von einer Elektrofachkraft eingebaut werden.

08Passende Anleitungen

Quellen und weiterführende Links (6)

Kommentare

Fragen oder Ergänzungen? Meldet Euch einfach in den Kommentaren.