Seite 4 von 6

Re: Anwesenheitssimulation durch zufälliges Schalten der Lichter

Verfasst: 28. Aug 2021 23:19
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...

Re: Anwesenheitssimulation durch zufälliges Schalten der Lichter

Verfasst: 19. Okt 2021 19:49
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 ;)

Re: Anwesenheitssimulation durch zufälliges Schalten der Lichter

Verfasst: 19. Okt 2021 23:08
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

Re: Anwesenheitssimulation durch zufälliges Schalten der Lichter

Verfasst: 19. Okt 2021 23:24
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ß.

Re: Anwesenheitssimulation durch zufälliges Schalten der Lichter

Verfasst: 20. Okt 2021 00:09
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...

Re: Anwesenheitssimulation durch zufälliges Schalten der Lichter

Verfasst: 23. Okt 2021 16:45
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.

Re: Anwesenheitssimulation durch zufälliges Schalten der Lichter

Verfasst: 24. Okt 2021 01:36
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.

Re: Anwesenheitssimulation durch zufälliges Schalten der Lichter

Verfasst: 24. Okt 2021 13:28
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.

Re: Anwesenheitssimulation durch zufälliges Schalten der Lichter

Verfasst: 24. Okt 2021 19:07
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:

Re: Anwesenheitssimulation durch zufälliges Schalten der Lichter

Verfasst: 24. Okt 2021 20:28
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...