Zufällige Lichtsteuerung bei Abwesenheit (Einbruchschutz)

Hallo, hat jemand ein Skript mit dem man zufällig die Lichter ein- und ausschalten kann … im Sinne eines Einbruchschutzes? Dieses Skript möchte ich einfach durch einen Schalter triggern beim Verlassen des Hauses. Ich habe ein EnOcean Funkbussystem. Könnte das Skript aber sicherlich von einem System adaptieren. Jede Hilfe ist willkommen.

Hallo Unbekannter!

Erst einmal >> Willkommen im IPS Forum :slight_smile:

Und bevor dir gar keiner etwas antwortet, will ich dir wenigstens mal einen Denkansatz liefern :wink:

Ich würde es wie folgt machen:
> Zeiten definieren, zwischen welchen die Lampen, per Zufall, geschaltet werden (z.B. zwischen 6 Uhr bis 23 Uhr)
> Definieren, wie lange die Lampen maximal eingeschaltet sein sollen (z.B. zwischen 3 und 30 Minuten)
> Die Lampen selbst definieren, welche per Zufall eingeschaltet werden sollen

Dann im Script ein paar Zufallszahlen in den gewünschten Bereichen generieren lassen und schalten :slight_smile:
Natürlich sollen die Lampen nur geschaltet werden, wenn es dunkel ist (dazu habe ich eine Hell/Dunkel-Variable, welche durch die Lux-Messung eines Sensores geschaltet wird).

Das nur mal so als Denkanstoß, kann natürlich noch beliebig erweitert und verfeinert werden :wink:

>>> Kleiner Tipp für die Zukunft > Hier im Forum wird Usern sehr gerne geholfen. Aber einfach nach einem kompletten Script fragen, dass kommt bei so einfachen Sachen meistens eher ungünstig rüber :wink: Also lieber mal ein wenig basteln und wenn man dann ein konkretes Problem hat, wie z.B. „wie generiere ich eine Zufallszahl“, dann wird einem sehr schnell geholfen :slight_smile: Zu deinem Anwendungsfall findest du aber auch alles bereits im Forum, einfach die Infos aus den vielen Beispiel-Scripten hier im Forum heraussuchen :slight_smile:
Auch das PHP Manuel ist IMMER eine super Anlaufstelle > PHP: rand - Manual

Viel Erfolg und Grüße,
Chris

Hallo Chris, vielen Dank für die Antwort! Die funktionale Anforderung wie Du die geschrieben hast macht absolut Sinn und ist auch so ungefähr wie ich das haben möchte.

Mein Problem ist nur, dass ich absolut keinerlei Erfahrung mit PHP habe. Das war mir vor dem Erwerb der IPSymcon Software so nicht klar, dass man selbst Programmierkenntnisse haben muss wenn man etwas Ausgereifteres machen möchte.

Da ich in einem anderen Teil des Forum bereits gesehen habe, dass andere User freundlicherweise auch ganze Skripte bereitstellen, habe ich einfach mal danach gefragt.

WIe gesagt, vielen Dank nochmal für die Geburtshilfe. Evtl. buche ich mir einfach mal ne Zeitlang den Premiumsupport von Symcon.

Viele Grüße, Christian

Hallo Christian!

Ja, das ist so ein Thema mit IPS > Was bekommt man vor dem Kauf für einen Eindruck und was braucht man dann wirklich an PHP Kenntnissen :smiley: Wird an anderer Stelle im Forum auch diskutiert :slight_smile:

Es geht zwar mittlerweile vieles mit wenig bis kein PHP. Aber sobald man etwas mehr möchte als „Lampe an/aus“ oder „Lampe an/aus zu Uhrzeit XY“, dann kommt man um PHP nicht herum.

ABER ehrlicherweise muss man auch sagen > man braucht für IPS nur minimale PHP Kenntnisse! Fast alle Scripte bestehen aus wenigen Grund-Befehlen wie „if, for, else“ und die jeweiligen Schaltbefehle für seine Geräte. Schau dir einfach mal ein paar Beispiele hier im Forum an, oder in der Doku von IPS „Wie kann ich…?“. Und wenn du dich dann damit ein wenig befasst, dann siehst du, dass das eigentlich gar nicht so schwer ist :slight_smile:

Grüße,
Chris

ODER du kannst dich auch an einen der Integratoren wenden, diese können dir auch Scripte erstellen, dich beraten, usw.
>> Integratoren in Deutschland — IP-Symcon :: Automatisierungssoftware

Grüße,
Chris

Hallo cseider,

wenn du keine Ahnung von PHP hast ist das kein großes Problem. Auch ohne Programmierkenntnisse ist mit IP-Symcon sehr vieles möglich.

Du kannst z.B. dein Problem mit Wochenplänen lösen. Rechts-Klicke in der Console auf deine jeweiligen Lampen und wähle:
Objekt hinzufügen -> Ereignis -> Wochenplan Ereignis -> Eine Gruppe: Gesamte Woche

Dort erstellst du „An“ und „Aus“ und wählst unter Aktion die Funktion zum Ein/Ausschalten deiner Lampe (oft SwitchMode) und dann bei „An“ true und „Aus“ false als Parameter. Du kannst dabei auch Zeit sparen in dem du einen Wochenplan so erstellst und dann mit „strg + c“ / „strg + v“ unter die anderen Lampen kopierst. (bei strg + c den Wochenplan ausgewählt haben udn bei strg + v die Lampe)

Im WebFront kannst du nun für die Wochenpläne (an jeder Lampe erstellst du einen) setzen wann sie an und wann aus sein sollen.

Eine kleine Programmieraufgabe erleichtert dir dann das weitere Arbeiten: Erstelle dir zwei Skripte (Im Objektbaum: Objekt hinzufügen -> Skript), in dem einen schreibst du für jeden gerade erstellten Wochenplan ein SetValue(ID, true) und im anderen jeweils ein „SetValue(ID, false)“ wobei ID die jeweilige Wochenplan ID ist.

Du hast dann zwei Skripte die z.B. so aussehen:

Skript: Aurlaubsmodus starten


IPS_SetEventActive(21435 /* Licht1/Wochenplan */, true);
IPS_SetEventActive(21124 /* Licht2/Wochenplan */, true);
IPS_SetEventActive(23563 /* Licht3/Wochenplan */, true);
IPS_SetEventActive(78563 /* Licht4/Wochenplan */, true);

Skript: Aurlaubsmodus beenden


IPS_SetEventActive(21435 /* Licht1/Wochenplan */, false);
IPS_SetEventActive(21124 /* Licht2/Wochenplan */, false);
IPS_SetEventActive(23563 /* Licht3/Wochenplan */, false);
IPS_SetEventActive(78563 /* Licht4/Wochenplan */, false);

Mit den Skripten aktivierst und deaktivierst du deinen Urlaubsmodus, damit deine Lichter nicht verrückt spielen wenn du gerade zu Hause bist.

Gruß,
gucky

Noch als Idee…

es gibt hier im Forum ein Script zur Sonnenauf- und Untergangsberechnung (Astro…). Dieses wird jede Nacht neu gestartet und führt die Berechnung durch. Es ist auch gut beschrieben und ich habe, mit den gleichen Problemen wie Du, damit eine Rolladen und Lichtsteuerung realisiert. Durch die Täglichen neuen Zeiten, und bei mir für jeden Wochentag anderen weiterführenden Skripten, müsste schon jemand eine Woche lang das Haus beobachten um gleichheiten zu bemerken.
Aber bedenke, das die Leute heutzutage nicht nur nach Licht usw. schauen, sondern auch klingeln, anrufen, Briefkastefüllstand, auch nachts kein Auto im CarPort, Rasen nicht gemäht, gesammelte Post auf dem Küchentisch liegt,…

Jan

Hallo zusammen, das sind wirklich fantastische Tips und konkrete Ansatzpunkte für mich. Wow! Freut mich sehr. Das muss ich gleich mal ausprobieren. Melde mich über den Fortschritt. Viele Grüße, Christian

@ gucky: soweit habe ich das alles gemacht. Teste gerade die Wochenpläne am Esszimmerlicht. Scheint zu funktionieren.

Die Skripte habe ich auch angelegt und die Objekt IDs eingetragen.

Nun hätte ich gerne noch einen Button / Schalter im Front-End, mit dem ich das jeweilige Skript starten kann. Wie geht das denn?

Vielen Dank schon mal im Voraus und Grüße, Christian

Ich habe mit dem Schalter einer Variable gesetzt und das Lichtskript macht nur etwas wenn die Variable gesetzt ist.

Schalter macht Variable ja oder nein
Skript schaut erst ob ja, dann Licht steuern

Hallo Christian,

du kannst die SKripte entweder direkt ins WebFront ziehen und hast dann zwei Schalter „Urlaubsmodus starten“ und „Urlaubsmodus beenden“. Alternativ kannst du eine neue Bool-Variable mit dem Profil „~Switch“ erstellen. Dann erstellst du ein Aktions Skript mit folgendem Inhalt:


if ($_IPS['VALUE'] == true){
IPS_RunScript( HIER_ID_DES_URLAUB_STARTEN_SKRIPTS );
} else {
IPS_RunScript( HIER_ID_DES_URLAUB_BEENDEN_SKRIPTS );
}

und wähle das erstellte Skript als Aktions Skript für deine neue Boolsche Variable. Wenn dein Schalter jetzt an geschaltet wird wird dein Urlaub starten Skript ausgeführt, wenn er ausgeschaltet wird, wird das Urlaub beenden Skript ausgeführt.

Du siehst, fast ohne Programmieraufwand ist viel möglich. :wink: Zur Erklärung für das Skript:

AktionsSkripte werden aufgerufen wenn eine Variable im WebFront verändert wird. $_IPS[‚VALUE‘] ist eine Spezial-Variable die den neuen Wert beinhaltet. Und mit IPS_RunScript( SKRIPTID ) kannst du aus einem Skript ein anderes Skript aufrufen.

Gruß,
gucky

Hi zusammen, ich bin jetzt mal soweit gekommen:

  1. Wochenpläne hinterlegt (funktionieren - hab ich getestet):

Bildschirmfoto 2015-05-06 um 15.40.59.png

  1. Skripte angelegt

2.1 Abwesenheitsmodus starten

2.2 Abwesenheitsmodus beenden

Die Skripte liegen hier im Objektbaum:

Und im Frontend tauchen die Skripte dann so auf:

Wenn ich die Skripte allerdings starte bekomme ich die folgende Fehlermeldung:

Bildschirmfoto 2015-05-06 um 15.36.47.png

bzw.

Bildschirmfoto 2015-05-06 um 15.49.03.png

Jemand vielleicht ne Idee woran das liegt? Was mache ich falsch? :confused:

Danke für eure Hilfe! :slight_smile:

Viele Grüße, Christian

Gibt es die im Fehler genannten Variablen überhaupt?

Klapp doch mal dein Objektbaum im 1 UG / 2 OG . usw. auf.

Gibt es dort die Status-Variablen mit der ID 16037 / 32540 usw… - wie im Screenshot.
Die möchtest du ja ein / ausschalten.

Moin… es wäre Hilfreich wenn du immer die ID’s im Baum mit im Screenshot hast.

Im Grunde sagt die Fehlermeldung schon alles.
Die Variable #16037 etc. existiert nicht!

Ich weiß nicht was Du da auf true und false setzt, jedenfalls keine Variablen!

Peter

Hallo Christian,

ich bitte um Entschuldigung, mein Skript war in der Eile nicht korrekt. Richtig müsste es heißen:

IPS_SetEventActive(21435 /* Licht1/Wochenplan */, true);
IPS_SetEventActive(21124 /* Licht2/Wochenplan */, true);
IPS_SetEventActive(23563 /* Licht3/Wochenplan */, true);
IPS_SetEventActive(78563 /* Licht4/Wochenplan */, true);  
IPS_SetEventActive(21435 /* Licht1/Wochenplan */, false);
IPS_SetEventActive(21124 /* Licht2/Wochenplan */, false);
IPS_SetEventActive(23563 /* Licht3/Wochenplan */, false);
IPS_SetEventActive(78563 /* Licht4/Wochenplan */, false);  

Nur als Information zum Verständnis:

Die Fehlermeldung kam, da „SetValue“ nur mit Objekten vom Typ „Variable“ funktioniert, wir verwenden aber Objekte vom Typ „Ereignis“.

Ich hoffe jetzt funktioniert es,
gucky

Siehe hier den Objektbaum. Ich möchte mit dem Wochenplan das Esszimmer-Licht (Lampenschirm) steuern:

Bildschirmfoto 2015-05-06 um 16.33.40.png

Als IDs habe ich die entsprechenden Wochenpläne verknüpft. Gemäß dem Post von gucky habe ich das so verstanden.

Hallo Christian,

ich hoffe du hast meinen letzten Post gelesen?

Ansonsten noch eine Anmerkung:

Für Übersichtlichkeit und Einfachheit würde ich jeweils einen Wochenplan unter eine Lampe ziehen. So, dass jede Lampe ihren eigenen Wochenplan hat. Es empfiehlt sich dabei einen Wochenplan komplett mit zwei Aktionen (Lampe an, Lampe aus) zu erstellen und über das WebFront zu konfigurieren. Danach kannst du ihn kopieren, dann ist schon mal jede Lampe identisch konfiguriert. Um etwas Abwechslung in deine Lichter zu bringen kannst du danach noch individuelle Anpassungen für die jeweiligen Wochenpläne vornehmen.

Gruß,
gucky

Hi alle und gucky, der Fehler ist jetzt beseitigt durch die Korrekt auf IPS_SetEventActive. Die Wochenpläne werden nun im Objektbaum entsprechend grau (inaktiv) bzw. weiss (aktiv) hinterlegt.

Wow - damit habe ich schon super viel geschafft und von euch gelernt. Daher vielen Dank an alle hier. So ein konstruktives und kompetetentes Forum habe ich noch nie erlebt.

Einen Wunsch habe ich noch. Im Frontend hätte ich nun gerne eine Visualisierung ob der Abwesenheitsmodus aktiv (grüne) oder inaktiv (rot) ist. Wie kann ich das denn am besten erreichen?

Hm, irgendwie kriege ich das nicht hin. Jetzt habe ich es so: ein einziger Wochenplan schaltet zu einer einzigen bestimmten Zeit die Lampe an. Ein andere schaltet die Lampe wieder aus. Und das wiederhole ich ein paar Mal am Abend (so dass etwas Leben in der Bude ist). Kann ich das mehrfache An- und Abschalten auch in einem einzigen Wochenplan integrieren?

Hallo Christian,

damit machst du es dir zu umständlich. In einem Wochenplan kannst du beliebig viele Schaltpunkte erstellen. Öffne dazu den Wochenplan im WebFront und ziehe mit der Maus über den Bereich, indem die Lampe an sein soll und wiederhole den Vorgang bis dein An / Aus wechsel zufriedenstellend ist.

Gruß,
gucky