Anwesenheitssimulation durch zufälliges Schalten der Lichter

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

mad-mike
Beiträge: 491
Registriert: 6. Jan 2021 18:05
Answers: 3

Re: Anwesenheitssimulation durch zufälliges Schalten der Lichter

Beitrag von mad-mike »

Du schreibst das immer alles so leicht. :D
Ich verzweifel da immer halb dran...


Ich habe das nun mal etwas umgebaut (mit sehr vielen Versuchen :D )

Aktuell sieht es so aus:

Code: Alles auswählen

var Timer RandomLightsTimer = null
val java.util.concurrent.ThreadLocalRandom random = (new java.util.concurrent.ThreadLocalRandom)

rule "Urlaubsmodus / Licht zufällig einschalten"
when
    Time cron "0 */1 0-23 * * ?"
then
      if((Abwesend.state != ON))                                                                        
      return;                                                                                             
      if((new java.util.Random()).nextInt(2) == 1)                                                  
      return;                                                                                            
      var randomLights = random.nextInt(zufall.allMembers.size)                                            
      zufall.allMembers.get(randomLights).sendCommand(ON)                                                 
      var Integer randomTime = random.nextInt(5,15)                                                        
      logInfo("randomLight","Timer: {} Sekunden.", randomTime)
      RandomLightsTimer = createTimer(now.plusSeconds(randomTime), [ |                                     
      zufall.allMembers.filter[i|i.getStateAs(OnOffType)!=OFF].forEach[j|j.sendCommand(OFF)]        
    ])
end
Also es wird zufällig eine Lampe eingeschaltet, oder auch nicht.
Und dann wird das ganze nach zufälliger Zeit wieder ausgeschaltet...

Mit dem Ursprünglichen Script hatte ich immer ""zufällig"" :mrgreen: viele Lampen an, und zum Schluss wurden sie auch nicht ausgeschaltet...

Time cron und ""5,15"" wird noch angepasst, nur so kann ich das besser begutachten, Läuft noch im Testmodus...

Grundsätzlich ist es nun eigentlich wie ich es mir vorgestellt habe...

Wenn du da Verbesserungsvorschläge hast, Ich versuche sie zu verstehn ;) und umzusetzen...
Gruss mad-mike

openHABian 4.3.5 auf Raspberry Pi 4 Mod. b (8GB) ;)

mad-mike
Beiträge: 491
Registriert: 6. Jan 2021 18:05
Answers: 3

Re: Anwesenheitssimulation durch zufälliges Schalten der Lichter

Beitrag von mad-mike »

Moin, eine Frage:

Wenn ich diese Rule bei meinem Bekannten einpflege, der hat im Haus alles Dimmer über LCN.
Werden die Lampen dann mit der Rule eingeschaltet, oder bedarf es da einer Änderung??

Falls es eine Lösung zur frage beiträgt:

Ich habe bei der Openhab app im Bad mal einen Schalter anstatt eines Dimmers gesetzt... Lampe geht direkt auf 100% an. Also müsste doch die Rule das auch auf100% setzen??

Danke und Gruss ;)
Gruss mad-mike

openHABian 4.3.5 auf Raspberry Pi 4 Mod. b (8GB) ;)

int5749
Beiträge: 1173
Registriert: 4. Nov 2019 22:08
Answers: 9

Re: Anwesenheitssimulation durch zufälliges Schalten der Lichter

Beitrag von int5749 »

Ich kenne zwar LCN nicht, aber meine Dimmer vertragen auch ein ON/OFF und sind dann eben bei 100%/0%, somit sage ich mal: Ja, die Rule sollte laufen.

Sofern Du natürlich die Items der zu schaltenden Lampen auch in die abgefragte Gruppe packst ;)

Viele Grüße
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3

int5749
Beiträge: 1173
Registriert: 4. Nov 2019 22:08
Answers: 9

Re: Anwesenheitssimulation durch zufälliges Schalten der Lichter

Beitrag von int5749 »

udo1toni hat geschrieben: 18. Mär 2019 11:24 Allgemein halte ich das zufällige Schalten für ungeeignet, vor allem wenn man die Möglichkeiten bedenkt, die openHAB bietet. Sinnvoller erscheint mir da, die Schaltzeiten ausgewählter Leuchten mitzuschreiben (Persistence) und dann im Ferienfall auf alte Schaltzeiten zurückzugreifen. Damit ist dann sichergestellt, dass Lichter nicht untypisch lang oder kurz geschaltet werden. In openHAB1 gab es dazu sogar extra die gcal Persistence, die direkt Schaltbefehle in den Google Calendar eingetragen hat. Man musste dann nur dem System sagen, dass es die Schaltereignisse von vor 3 Wochen abspielen soll.
Google Calendar hat dann eine andere Art der Authentifizierung eingeführt, womit das Binding lange Zeit nicht zurecht kam. Soweit ich weiß, funktioniert das ganze aber inzwischen wieder. Schau mal unter https://www.openhab.org/addons/integrat ... simulation
Lese gerade mal diesen Threat durch und möchte den interessierten dieser Lösung gerne einen Ansatz mit persistierten Daten als Alternative zeigen, wie ich diesen im Einsatz habe. OH3 - Anwesendheitssimulation mit Präsenzerkennung Evtl ist dies ja noch ein weiterer Denkanstoß.
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3

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

Re: Anwesenheitssimulation durch zufälliges Schalten der Lichter

Beitrag von udo1toni »

Es ist egal, was Du an Hardware nutzt. openHAB bildet ein eigenes Layer, mit dem alle angebundenen Geräte gleich angesteuert werden können. (natürlich immer im Rahmen der Möglichkeiten, die die Hardware bietet) Es spielt also keine Rolle, ob der Dimmer per knx, LCN, HUE oder mqtt angebunden ist. Jedes Dimmer Item versteht die Befehle ON, OFF und 0 - 100. Je nach Konfiguration wird ein ON dann in 100 umgesetzt oder ein OFF in 0. Es kann aber auch sein, dass ON direkt gesendet wird, wenn es dafür eine eigene Konfiguration gibt. z.B. knx Dimmer kann man auch so konfigurieren, dass sie mir einer bestimmten Helligkeit starten (also eine andere als 100%), dann ist es eben ein Unterschied, ob man eine 100 oder ein ON sendet...
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

mad-mike
Beiträge: 491
Registriert: 6. Jan 2021 18:05
Answers: 3

Re: Anwesenheitssimulation durch zufälliges Schalten der Lichter

Beitrag von mad-mike »

Noch eine Frage. :oops:

In der Rule wird eine Info gesetzt...:

Code: Alles auswählen

logInfo("randomLight","Aus in: {} Sekunden.", randomTime)
Ist es möglich diesen Wert welcher dann da in der Klammer zu lesen ist, in ein Item zu schreiben??

Ich stelle mir das so vor: Ich erstelle ein Item "Aus in" und dort soll eine Zeit stehen. Richtig cool wäre auch als Rückwärts zählende zahl...


Danke und Gruss.
Gruss mad-mike

openHABian 4.3.5 auf Raspberry Pi 4 Mod. b (8GB) ;)

Benutzeravatar
peter-pan
Beiträge: 2758
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: Anwesenheitssimulation durch zufälliges Schalten der Lichter

Beitrag von peter-pan »

Klar geht das:

Code: Alles auswählen

my_item.postUpdate(randomTime)
Näheres dazu, findest du auch hier

Ich habe mir die Regel zwar nicht genau angeschaut, aber so ein Countdown lässt sich bestimmt auch realisieren. Das ist aber vermutlich etwas aufwändiger.
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

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

Re: Anwesenheitssimulation durch zufälliges Schalten der Lichter

Beitrag von udo1toni »

Ja, so Countdown Funktionen werden immer wieder gewünscht.
Dazu ist zu sagen, dass sie das System außerordentlich stark belasten, insbesondere, wenn die Anzeige vielleicht sekündlich gewechselt werden soll.

openHAB hat zwar eine UI, und natürlich kann man die auch verwenden, um alles mögliche an einem Platz zu integrieren, die eigentliche Idee hinter openHAB ist aber, dass man auf diese UI so weit wie möglich verzichten kann - das Haus tut schlichtweg alles automatisch, ohne dass man extra ein Browserfenster öffnen oder meinetwegen ein Panel an der Wand aktivieren muss.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

mad-mike
Beiträge: 491
Registriert: 6. Jan 2021 18:05
Answers: 3

Re: Anwesenheitssimulation durch zufälliges Schalten der Lichter

Beitrag von mad-mike »

Code: Alles auswählen

my_item.postUpdate(randomTime)
Das hat hat schon mal gut geklappt.
Danke dafür. ;)

zum Countdown:

Code: Alles auswählen

rule "aus in"
when
    Item zoff changed
then
val Integer TIMER_TIME = (zoff.state as DecimalType).intValue
var count = TIMER_TIME
while(count >= 0) {
zoff.postUpdate(count)
count = count - 1
Thread::sleep(1000)
}
end
Funktioniert, habe aber öffters gelesen das es mit dem:

Code: Alles auswählen

Thread::sleep(1000)
eher suboptimal gelöst ist... :?

So Smart ist mein Haus nun nicht, das ich es als selbstläufer einstellen kann... :mrgreen: da fehlen gefühlte 2000 sensoren und Aktoren... :mrgreen:
Gruss mad-mike

openHABian 4.3.5 auf Raspberry Pi 4 Mod. b (8GB) ;)

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

Re: Anwesenheitssimulation durch zufälliges Schalten der Lichter

Beitrag von udo1toni »

Wie gesagt, kann man machen, ist dann halt K.cke...

Unter openHAB3 ist Thread::sleep() nicht mehr so kritisch, weil ohnehin jede Rule ihren eigenen Thread hat. Dennoch belastet diese Rule das System über den gesamten aktiven Zeitraum jede Sekunde. Solange es nur um ein oder zwei dieser Anzeigen geht, ist das nicht problematisch, wenn Du aber mehrere Dutzend solcher Items hast, die vielleicht gar zeitgleich laufen, wird die Automation keinen Spaß mehr machen.

Gegenfrage: Wie oft schaust Du Dir diese Anzeige tatsächlich an? Und ich meine jetzt nicht, wenn Du Dich drüber freust, dass die Anzeige funktioniert...
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Antworten