Einfache Regel mit Dummy Schalter (Abwesenheit Licht Simulation)

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

calimero
Beiträge: 27
Registriert: 20. Dez 2019 07:17
Answers: 0

Einfache Regel mit Dummy Schalter (Abwesenheit Licht Simulation)

Beitrag von calimero »

Hallo zusammen,

ich probiere seit Tagen eine Abwesenheit mit Openhab zu realisieren aber es funktioniert einfach nicht.
Kann mir hierzu bitte jemand weiterhelfen.

Sitemap: (Abwesenheitssimulation.sitemap)

Code: Alles auswählen

sitemap Abwesenheitssimulation label="Abwesenheitssimulationtttt"
{
  Frame label="Licht"{
	Switch item=Test_Switch	
        }
}
Rule: (Abwesenheitssimulation.rules)

Code: Alles auswählen

rule     "zufall licht"
when
        Time cron "0 0 13 * *  ?"
then
        var Number rand1 = (Math::random) * 10
      
        if (Test_Switch.state == ON)
        {
        
            createTimer(now.plusMinutes(rand1.intValue)) [|
            {
                var Number rand2 = ((Math::random) * 10) + 15  // 15= mindest Leuchtdauer             
               
                sendCommand(Licht_EG_Flur,ON)
                
            
                createTimer(now.plusMinutes(rand2.intValue)) [|
                    {
                        sendCommand(Licht_EG_Flur,OFF)                       
                     }
                ]        
                                
            }
            ]     
        }
end
Items: (Haus.items) Die ganzen Lichter und Rollladen kann ich Problemlos steuern.

Code: Alles auswählen

// Gruppen
Group gEG 	// Gruppe Erdgeschoss
Group gOG 	// Gruppe Obergeschoss
Group tEG 	// Gruppe Terrasse
Group allerollos

//Group:Switch:OR(ON, OFF) 	Hauslichter2 		"Alle Hauslichter [(%d)]"
//Switch Licht1                        "Licht buero2"	       (Hauslichter2)     			[ "Lighting" ]	{bticino="if=webserver;who=1;what=0;where=30"}

Switch Test_Switch // Dummy Schalter für Rule


Group OG_Schlafzimmer	"Schlafzimmer"	<bedroom>		(gOG)
Group OG_Ankleide		"Ankleide"		<bedroom>		(gOG)
Group OG_buero			"buero"			<office>		(gOG)
Group OG_Kinderzimmer	"Kinderzimmer"	<baby_1>		(gOG)
Group OG_WC				"WC"			<toilet>		(gOG)
Group OG_Bad			"Bad"			<Bath>			(gOG)
Group OG_Flur			"Flur OG"		<corridor>		(gOG)

Group EG_Kueche			"Kueche" 		<kitchen>		(gEG)
Group EG_Esszimmer		"Esszimmer" 	<kitchen> 		(gEG)
Group EG_WC				"WC"			<bath>			(gEG)
Group EG_Wohnzimmer		"Wohnzimmer"	<sofa>			(gEG)
Group EG_Technik		"Technik"		<washingmachine>(gEG)
Group EG_Windfang		"Windfang"		<frontdoor>		(gEG)
Group EG_Flur			"Flur EG"		<corridor>		(gEG)

//Group EG_Terasse		"Terasse"		<corridor>		(tEG)

/*Licht*/
Switch Licht_OG_Schlafzimmer	"Licht Schlafzimmer"	(OG_Schlafzimmer) 	[ "Lighting" ]	{bticino="if=webserver;who=1;what=0;where=23"}
Switch Licht_OG_Ankleide		"Licht Ankleide"		(OG_Ankleide) 		[ "Lighting" ]	{bticino="if=webserver;who=1;what=0;where=24"}
Switch Licht_OG_buero			"Licht buero"			(OG_buero)			[ "Lighting" ]	{bticino="if=webserver;who=1;what=0;where=30"}
Switch Licht_OG_Kinderzimmer	"Licht Kinderzimmer"	(OG_Kinderzimmer) 	[ "Lighting" ]	{bticino="if=webserver;who=1;what=0;where=25"}
Switch Licht_OG_WC				"Licht WC"				(OG_WC)				[ "Lighting" ]	{bticino="if=webserver;who=1;what=0;where=26"}
Switch Licht_OG_Bad				"Licht Bad"				(OG_Bad)			[ "Lighting" ]	{bticino="if=webserver;who=1;what=0;where=32"}
Switch Licht_OG_Bad_Spiegel		"Licht Spiegelschrank"	(OG_Bad)			[ "Lighting" ]	{bticino="if=webserver;who=1;what=0;where=33"}
Switch Licht_OG_Flur			"Licht Flur"			(OG_Flur)			[ "Lighting" ]	{bticino="if=webserver;who=1;what=0;where=29"}
Switch Licht_OG_Stiege			"Licht Stiege"			(OG_Flur)			[ "Lighting" ]	{bticino="if=webserver;who=1;what=0;where=13"}


Switch Licht_EG_Kueche			"Licht Kueche"			(EG_Kueche)			[ "Lighting" ]	{bticino="if=webserver;who=1;what=0;where=17"}
Switch Licht_EG_Esszimmer		"Licht Esszimmer"		(EG_Esszimmer)		[ "Lighting" ]	{bticino="if=webserver;who=1;what=0;where=16"}
Switch Licht_EG_WC				"Licht WC"				(EG_WC)				[ "Lighting" ]	{bticino="if=webserver;who=1;what=0;where=12"}
Switch Licht_EG_Abstellraum		"Licht Abstellraum"		(EG_Abstellraum)	[ "Lighting" ]	{bticino="if=webserver;who=1;what=0;where=11"}
Switch Licht_EG_Flur			"Licht Flur"			(EG_Flur)			[ "Lighting" ]	{bticino="if=webserver;who=1;what=0;where=31"}
Switch Licht_EG_Technik			"Licht Technik"			(EG_Technik)		[ "Lighting" ]	{bticino="if=webserver;who=1;what=0;where=11"}
Switch Licht_EG_Windfang		"Licht Windfang"		(EG_Windfang)		[ "Lighting" ]	{bticino="if=webserver;who=1;what=0;where=28"}
Switch Licht_EG_Stiege			"Licht Stiege"			(EG_Flur)			[ "Lighting" ]	{bticino="if=webserver;who=1;what=0;where=77"}


Switch Licht_LED_Terasse		"Licht LED Terasse"		(tEG)				[ "Lighting" ]	{bticino="if=webserver;who=1;what=0;where=86"}
Switch Licht_Terasse			"Licht Terasse"			(tEG)				[ "Lighting" ]	{bticino="if=webserver;who=1;what=0;where=37"}
Switch Licht_Pool				"Licht Pool"			(tEG)				[ "Lighting" ]	{bticino="if=webserver;who=1;what=0;where=36"}

/*Dimmer*/
Dimmer Licht_EG_Wohnzimmer		"Licht Wohnzimmer"		(EG_Wohnzimmer)		[ "Lighting" ]	{bticino="if=webserver;who=1;what=0;where=14"}

/*Rollos*/

Group:Rollershutter gAlleRollos

Rollershutter Rollo_EG_Wohnzimmer 	"Rollo Wohnzimmer"		(gAlleRollos,EG_Wohnzimmer) 	["Switchable"]	{bticino="if=webserver;who=2;what=0;where=85"}
Rollershutter Rollo_EG_Terrasentuer	"Rollo Terrassentuer"	(gAlleRollos,EG_Wohnzimmer) 	["Switchable"]	{bticino="if=webserver;who=2;what=0;where=84"}
Rollershutter Rollo_EG_Essen 		"Rollo Essen_Fenster"	(gAlleRollos,EG_Esszimmer)	 	["Switchable"]	{bticino="if=webserver;who=2;what=0;where=86"}
Rollershutter Rollo_EG_Essen_tuer	"Rollo Essen_tuere"		(gAlleRollos,EG_Esszimmer) 		["Switchable"]	{bticino="if=webserver;who=2;what=0;where=87"}
Rollershutter Rollo_EG_Kueche	 	"Rollo Kueche"			(gAlleRollos,EG_Kueche) 		["Switchable"]	{bticino="if=webserver;who=2;what=0;where=89"}
Rollershutter Rollo_EG_Technik		"Rollo Technik"			(gAlleRollos,EG_Technik) 		["Switchable"]	{bticino="if=webserver;who=2;what=0;where=81"}
Rollershutter Rollo_EG_WC			"Rollo WC"				(gAlleRollos,EG_WC)		 		["Switchable"]	{bticino="if=webserver;who=2;what=0;where=83"}
Rollershutter Rollo_EG_Stiege_Links	"Rollo Stiege_Links"	(gAlleRollos,EG_Flur)		 	["Switchable"]	{bticino="if=webserver;who=2;what=0;where=97"}
Rollershutter Rollo_EG_Stige_Rechts	"Rollo Stiege_Rechts"	(gAlleRollos,EG_Flur)		 	["Switchable"]	{bticino="if=webserver;who=2;what=0;where=96"}


Rollershutter Rollo_OG_Schlafzimmer	"Rollo Schlafzimmer"	(gAlleRollos,OG_Schlafzimmer) 	["Switchable"]	{bticino="if=webserver;who=2;what=0;where=90"}
Rollershutter Rollo_OG_Ankleide		"Rollo Ankleide"		(gAlleRollos,OG_Ankleide)	 	["Switchable"]	{bticino="if=webserver;who=2;what=0;where=93"}
Rollershutter Rollo_OG_buero		"Rollo buero"			(gAlleRollos,OG_buero) 			["Switchable"]	{bticino="if=webserver;who=2;what=0;where=91"}
Rollershutter Rollo_OG_Kinderzimmer	"Rollo Kinderzimmer"	(gAlleRollos,OG_Kinderzimmer) 	["Switchable"]	{bticino="if=webserver;who=2;what=0;where=92"}
Rollershutter Rollo_OG_WC			"Rollo WC"				(gAlleRollos,OG_WC)			 	["Switchable"]	{bticino="if=webserver;who=2;what=0;where=94"}
Rollershutter Rollo_OG_Bad			"Rollo Bad"				(gAlleRollos,OG_Bad)		 	["Switchable"]	{bticino="if=webserver;who=2;what=0;where=95"}
Rollershutter Rollo_OG_Stiege_Links	"Rollo Stiege_Links"	(gAlleRollos,OG_Flur) 			["Switchable"]	{bticino="if=webserver;who=2;what=0;where=97"}
Rollershutter Rollo_OG_Stiege_Rechts"Rollo Stiege_Rechts"	(gAlleRollos,OG_Flur) 			["Switchable"]	{bticino="if=webserver;who=2;what=0;where=96"}

//Rollershutter Allerollo				"Alle Rollo"			(allerollos) 		{bticino="if=webserver;who=2;what=0;where=0"}

Rollershutter Rollo_Terrasse_gross	"Rollo Terrasse gross"	(tEG) 							["Switchable"]	{bticino="if=webserver;who=2;what=0;where=99"}
Rollershutter Rollo_Terrasse_klein	"Rollo Terrasse klein"	(tEG) 							["Switchable"]	{bticino="if=webserver;who=2;what=0;where=66"}
Danke.

mfg Pascal

Benutzeravatar
udo1toni
Beiträge: 15265
Registriert: 11. Apr 2018 18:05
Answers: 245
Wohnort: Darmstadt

Re: Einfache Regel mit Dummy Schalter (Abwesenheit Licht Simulation)

Beitrag von udo1toni »

Die Frage ist ja, was Du erreichen willst...

Ich habe die Rule mal von unnötigen Leerzeichen und Klammern befreit sowie typische Design Fehlentscheidungen umgebaut. Und mal dazu geschrieben, was wann wo passiert.

Code: Alles auswählen

rule "zufall licht"
when
    Time cron "0 0 13 * * ?"                                 // täglich 13:00:00 Uhr
then
    val rand1 = Math::random * 10                            // generiere eine zufällige Zahl zwischen 0 und 10
    if(Test_Switch.state == ON)                              // falls Schalter Test_Switch ON ist
        createTimer(now.plusMinutes(rand1.intValue), [|      // erzeuge Timer in rand1 Minuten
            val rand2 = Math::random * 10 + 15               // generiere eine zufällige Zahl zwischen 15 und 25
            Licht_EG_Flur.sendCommand(ON)                    // Schalte Licht ein
            createTimer(now.plusMinutes(rand2.intValue), [|  // erzeuge Timer in rand2 Minuten
                Licht_EG_Flur.sendCommand(OFF)               // Schalte Licht aus
            ])
        ])
end
Was meine ich mit "Design Fehlentscheidungen"? Grundsätzlich kann man schreiben

Code: Alles auswählen

createTimer(time) [| //code to execute]
. Jedoch ist so nicht klar, dass das Lambda tatsächlich ein Parameter der Funktion createTimer ist. Deshalb ist die Form

Code: Alles auswählen

createTimer(time, [| //code to execute])
zu bevorzugen.
Weiterhin ist die Action

Code: Alles auswählen

sendCommand(String,String)
zwar zulässig, aber die Methode

Code: Alles auswählen

Item.sendCommand(Value)
ist flexibler und zuverlässiger.
Die beiden Werte rand1 und rand2 sind fix. Es sind also Konstanten, keine Variablen. Konstanten können im Speicher einfacher alloziert werden, weshalb sie zu bevorzugen sind. Allgemein ist es besser, es openHAB zu überlassen, wie das Objekt dimensioniert ist (also das Schlüsselwort Number weglassen), außer, man will gezielt Funktionen nutzen, die nur bei exakter Definition zur Verfügung stehen.

Besser:

Code: Alles auswählen

var Timer tZufall = null                                           // definiere Timervariable (vor der ersten Rule)

rule "zufall licht"
when
    Time cron "0 0 13 * * ?"                                       // täglich 13:00:00 Uhr
then
    val rand = Math::random * 10                                   // generiere eine zufällige Zahl zwischen 0 und 10
    if(Test_Switch.state == ON)                                    // falls Schalter Test_Switch ON ist
       tZufall =  createTimer(now.plusMinutes(rand.intValue),  [|  // erzeuge Timer in rand Minuten
            if(Licht_EG_Flur.state != ON) {                        // falls Licht nicht ON
                val rand = Math::random * 10 + 15                  // generiere eine zufällige Zahl zwischen 15 und 25
                Licht_EG_Flur.sendCommand(ON)                      // Schalte Licht ein
                tZufall.reschedule(now.plusMinutes(rand.intValue)) // plane den Timer erneut ein 
            } else {                                               // falls Licht ON
                Licht_EG_Flur.sendCommand(OFF)                     // Schalte Licht aus
                tZufall = null                                     // lösche Timer
            }
        ])
end
Der Unterschied: Es wird nur ein Timer verwendet, und der ist auch noch kontrollierbar. Wann immer Du einen Timer verwendest, solltest Du Dich darum bemühen, ihn unter Kontrolle zu halten, egal, ob Du das nun brauchst oder nicht. Es ist einfach guter Stil. Hier gibt es den Vorteil, dass Du nicht innerhalb eines laufenden Timers einen neuen Timer erzeugst, sondern den schon existierenden Timer einfach erneut aufrufst. Die Konstante rand ist eine lokale Konstante, weshalb sie hier zweimal verwendet werden kann.

Warum Deine Rule nicht funktioniert, kann ich nur raten, prinzipiell ist sie korrekt (wenn auch, wie oben erwähnt, an den Empfehlungen vorbei programmiert). Vielleicht spezifizierst Du die Aussage "funktioniert nicht" etwas?
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

calimero
Beiträge: 27
Registriert: 20. Dez 2019 07:17
Answers: 0

Re: Einfache Regel mit Dummy Schalter (Abwesenheit Licht Simulation)

Beitrag von calimero »

Hallo udo1toni,

wow - zuerst mal herzlichen Danke für dein bemühen mir so gut weiterzuhelfen.

Ich habe meinen Fehler gefunden -> ich dachte mir Time cron "0 0 13 * * ?" bedeutet das ab 13 Uhr die Rule immer wieder abgerufen wird, um mein Licht zu Simulieren.
Das eben zwischen 0-10 Minuten sich das Licht einschaltet und nach 15-25 Minuten Ausschaltet -> Danach wieder von vorne usw. bis ich den Schalter Test_Switch ausschalte.

Ich habe nun Time cron "0 0/10 17-23 * * ?" verwendet und somit funktioniert es.
Das bedeutet das zwischen 17-23 Uhr die Regel jede 10 Minuten ausgeführt wird oder?

Grundsätzlich funktioniert es aber ich bekomme einen Fehler:

Code: Alles auswählen

2020-10-31 09:14:00.863 [ERROR] [org.quartz.core.JobRunShell         ] - Job DEFAULT.Timer 71 2020-10-31T09:14:00.835+01:00: Proxy for org.eclipse.xtext.xbase.lib.Procedures$Procedure0: [ | {

  org.eclipse.xtext.xbase.impl.XIfExpressionImpl@19dd33d (conditionalExpression: false)

} ] threw an unhandled Exception: 

java.lang.reflect.UndeclaredThrowableException: null

	at com.sun.proxy.$Proxy188.apply(Unknown Source) ~[?:?]

	at org.eclipse.smarthome.model.script.internal.actions.TimerExecutionJob.execute(TimerExecutionJob.java:48) ~[?:?]

	at org.quartz.core.JobRunShell.run(JobRunShell.java:202) [bundleFile:?]

	at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573) [bundleFile:?]

Caused by: org.eclipse.smarthome.model.script.engine.ScriptExecutionException: 'reschdule' is not a member of 'org.eclipse.smarthome.model.script.actions.Timer'; line 18, column 17, length 49

	at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.invokeFeature(ScriptInterpreter.java:133) ~[?:?]

	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:861) ~[?:?]

	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:231) ~[?:?]

	at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]

	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:215) ~[?:?]

	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:458) ~[?:?]

	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:239) ~[?:?]

	at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]

	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:215) ~[?:?]

	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:471) ~[?:?]

	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:255) ~[?:?]

	at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]

	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:215) ~[?:?]

	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter._doEvaluate(XbaseInterpreter.java:458) ~[?:?]

	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.doEvaluate(XbaseInterpreter.java:239) ~[?:?]

	at org.eclipse.smarthome.model.script.interpreter.ScriptInterpreter.doEvaluate(ScriptInterpreter.java:226) ~[?:?]

	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.internalEvaluate(XbaseInterpreter.java:215) ~[?:?]

	at org.eclipse.xtext.xbase.interpreter.impl.XbaseInterpreter.evaluate(XbaseInterpreter.java:201) ~[?:?]

	at org.eclipse.xtext.xbase.interpreter.impl.ClosureInvocationHandler.doInvoke(ClosureInvocationHandler.java:46) ~[?:?]

	at org.eclipse.xtext.xbase.interpreter.impl.AbstractClosureInvocationHandler.invoke(AbstractClosureInvocationHandler.java:29) ~[?:?]

	... 4 more
Mit Astro Binding sieht das dan so aus oder ?

Code: Alles auswählen

Channel 'astro:sun:30b11a33:set#start' triggered START  and        // Sonnenuntergang Startzeit
Time cron "0 0/10 17-23 * * ?"                                     // jede 10 Minute zwischen 17-23 UHR

mfg
Pascal

Darkwin101
Beiträge: 424
Registriert: 6. Mär 2019 11:19
Answers: 14

Re: Einfache Regel mit Dummy Schalter (Abwesenheit Licht Simulation)

Beitrag von Darkwin101 »

Code: Alles auswählen

tZufall.reschdule(now.plusMinutes(rand.intValue))  // plane den Timer erneut ein 
Da ist ein Schreibfehler

Code: Alles auswählen

tZufall.reschedule(now.plusMinutes(rand.intValue))  // plane den Timer erneut ein 

calimero
Beiträge: 27
Registriert: 20. Dez 2019 07:17
Answers: 0

Re: Einfache Regel mit Dummy Schalter (Abwesenheit Licht Simulation)

Beitrag von calimero »

Hallo Darkwin101,

Super danke, nun läuft die Rule Prinzipiell.

Was mir mein VS Editor sagt ist das Rand doppelt vorkommt.

Das Licht schaltet nach dem ersten Timer ein aber das Ausschalten nimmt die Rule komischerweise von dem Time Cron?
Die zweite generierte Zahl wird "übersprungen"

Wie kann ich dem Licht sagen "schalte dich nach 5 Minuten aus"

Mfg
Pascal

Benutzeravatar
udo1toni
Beiträge: 15265
Registriert: 11. Apr 2018 18:05
Answers: 245
Wohnort: Darmstadt

Re: Einfache Regel mit Dummy Schalter (Abwesenheit Licht Simulation)

Beitrag von udo1toni »

Den Tippfehler hat Darkwin101 ja schon gefunden. Wenn Du VSCode benutzt, sollte Dich der Editor aber auf diesen Fehler hinweisen.

Der Hinweis, dass rand doppelt vorkommt, ist hingegen falsch. Das liegt daran, dass der Validator nicht erkennt, dass der Code im Lambda ein komplett unabhängiger Kontext ist.
Es stört natürlich nicht, verschiedene Bezeichner zu nehmen :) es ging mir mehr darum, dass die beiden Kontexte komplett unabhängig sind.
Du darfst nicht einfach diese Rule per Time cron mehrfach ausführen lassen :) Die Rule ist in der Form nicht dafür ausgelegt, konkurrierend zu laufen.

Vielleicht gehen wir das Ganze auch etwas falsch an. Was willst Du eigentlich genau erreichen?
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

calimero
Beiträge: 27
Registriert: 20. Dez 2019 07:17
Answers: 0

Re: Einfache Regel mit Dummy Schalter (Abwesenheit Licht Simulation)

Beitrag von calimero »

Hallo udo1toni,

ich möchte eine Anwesenheit Simulieren mit Lichtern.
Das Licht oder auch im Wechsel verschiedene Lichter sollen sich einschalten und nach einer gewissen Zeit ausschalten.
Danach soll eine zeit vergehen und die Rule soll wieder von vorne Starten.

Natürlich möchte ich wenn die Rule läuft diese "Ausbauen"
Am Anfang reicht ein Dummy Schalter, damit ich auch den Code verstehe.
Danach kann man ja mit Astro Binding oder auch mit dem Handy prüfen ob man im Wlan ist usw.

Danke nochmals für deine Unterstützung.

mfg
Pascal

Benutzeravatar
udo1toni
Beiträge: 15265
Registriert: 11. Apr 2018 18:05
Answers: 245
Wohnort: Darmstadt

Re: Einfache Regel mit Dummy Schalter (Abwesenheit Licht Simulation)

Beitrag von udo1toni »

Also, die bequemste Variante ist hierfür die gcal Persistence.

Die Idee: openHAB speichert alle Schaltvorgänge (für die man das so konfiguriert hat) in einem Google Kalender. Wenn die Anwesenheitssimulation eingeschaltet wird, holt openHAB die Daten von einem vergangen Zeitpunkt Deiner Wahl, also z.B. "vor 14 Tagen".
Der Vorteil: Die Schaltvorgänge sind eben nicht "zufällig", sondern folgen dem persönlichen Verhaltensmuster.
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

calimero
Beiträge: 27
Registriert: 20. Dez 2019 07:17
Answers: 0

Re: Einfache Regel mit Dummy Schalter (Abwesenheit Licht Simulation)

Beitrag von calimero »

Hallo udo1toni,

das hört sich grundsätzlich gut an, aber was ist wenn das Licht zb. nur 1mal an diesen Tag eingeschaltet war?
Wird das in der Simulation dann auch nur 1 mal eingeschaltet zu der Zeit von "vor 14 Tagen" ?

Könntest du mir hierzu unter die Arme greifen wie ich da am besten anfange?


mfg
Pascal

Benutzeravatar
OliverCJ
Beiträge: 405
Registriert: 29. Aug 2017 12:41
Answers: 3
Wohnort: Bergisch Gladbach

Re: Einfache Regel mit Dummy Schalter (Abwesenheit Licht Simulation)

Beitrag von OliverCJ »

Ich klinke mich mal ein, denn das Thema "Anwesenheitssimulation" interessiert mich auch...

So wie ich das verstehe, würde sich die Lichtschaltung tatsächlich in diesem Beispiel alle 14 Tage wiederholen. Das ist ja auch gar nicht schlimm, denn das Verhaltensmuster wenn man zu Hause ist, dürfte immer ähnlich ablaufen, aber eben doch jeden Tag ein bisschen anders. Lichter die im 10-Minuten-Takt an und aus gehen wirken da eher unnatürlich.

Im Grunde genommen musst Du nur dafür sorgen, nachdem die Rule aktiv ist, in den ersten 14 Tagen zu Hause zu sein und dich "normal" zu verhalten ;-). Wenn Du aber tatsächlich in dieser Zeit ein Licht nur 1x für 5 Minuten eingeschaltet hast (weil Du an diesem Tag einfach keinen Bock mehr hattest dich ins Büro zu setzen und das openhabforum zu lesen), dann wird es wohl auch 14 Tage später wieder nur für diese Zeit geschaltet...
Zuletzt geändert von OliverCJ am 2. Nov 2020 10:12, insgesamt 1-mal geändert.

_______________________________________________
Homematic IP Komponenten an CCU 3 (wächst stetig)
Innogy Smarthome System (verabschiedet sich langsam)
Philips Hue Beleuchtung
Fritz!Box
VU+ Solo SAT-Receiver
2 Squeezeboxen
Denon Heos System

Antworten