Seite 1 von 3

RAWS RandomAnWesenheitsSimulation

Verfasst: 04.09.2013, 09:36
von starfish
RAWS - random Anwesenheits-Simulation

Da ich im Forum nichts passendes gefunden habe, baute ich mir diese Simulation zusammen. Sie verwendet CUxD system.exec Zufallsgeneratoren und CUxD - Timer und setzt deshalb die Installation von CUxD und Installation von CUxD System.Exec und CUxD System.Timer voraus (CUx Hardware wird aber nicht benötigt).
Achtung, ab CUxD version 0.58g ist die Random-Funktion im System.Timer eingebaut, System.Exec und die Scripte werden nicht mehr benötigt. Ich empfehle deshalb die Verwendung des Programms Version 2. Post 1 bleibt nur als Funktionsbeschreibung stehen.
Version 2: http://homematic-forum.de/forum/viewtop ... 27#p111460
Fix Trigger:http://homematic-forum.de/forum/viewtop ... 27#p252218


Der CUxD-Timer beinhaltet 16 Kanäle, man kann deshalb mit einem Timer 8 unabhängige Simulationen programmieren.
Pro Kanal (Leuchte) triggern sich 2 Timer gegenseitig über Kreuz, einer für die Einschaltzeit, einer für die Ausschaltzeit. Bei jedem Durchgang werden die Timer mit einer neuen Zufallszahl geladen, und zwar solange, wie die Nacht dauert (im einfachsten Fall kann die Astrofunktion dafür verwendet werden - mindestens ebensogut geht das Tageszeiten - Skript).

Bei Sonnenuntergang wird die Simulation gestartet (über den ODER-Abschnitt -Zeitsteuerung-Auslösen zu Zeitpunkten des HM-Programms), das Licht wird gelöscht, anschliessend wird im Script eine Zufallszahl generiert und in den Timer geladen, dabei wird dieser gestartet. Der Ablauf dieses Timers startet dann das 2. HM-Programm, welches die Abbruchbedingung testet, das Licht einschaltet, die Zufallszeit für die Einschaltdauer generiert und den 2. Timer startet. Der Ablauf dieses Timers startet dann wieder den 1. Timer usw.
Das Schöne dabei ist die Flexibilität, Intervalle, Minimumzeit und Zeitmultiplikator lassen sich für Ein- und Ausschaltzeit getrennt einstellen.
Damit nicht alle Leuchten gleichzeitig einschalten, beginne ich die Simulation mit der Ausschaltzeit.

In der vorgestellten Ausführung kann es vorkommen, dass die Einschaltzeit über den Zeitpunkt des Sonnenaufgangs hinaus besteht. In meinem Fall ist dies unerheblich, wenn dies stört, kann der Aktor bei Sonnenaufgang zusätzlich konventionell über Geräteauswahl sofort Schaltzustand:Aus ausgeschaltet werden.

Programm Off_Timer (1. Start über den ODER-Abschnitt -Zeitsteuerung Auslösen zu Zeitpunkten mit Astrofunktion nachts)

Bild

Code: Alles auswählen

string tmpRand;      ! Hilfsvariable für Zufallszahl 
integer RAND;         ! Zufallszahl 
dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("hexdump -d -n 2  /dev/urandom");
dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
string tmpRand = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
RAND = (tmpRand.Substr(10)).ToInteger();
var rand20=((RAND%11)+1)*600; ! 10-120 Min

dom.GetObject("CUxD.CUX2800001:1.TIMER_SET").State(rand20);

Programm On_Timer (Loop solange Bedingung: wenn Zeitsteuerung Astrofunktion nachts)

Bild

Code: Alles auswählen

string tmpRand;      
integer RAND;         
dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("hexdump -d -n 2  /dev/urandom");
dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
string tmpRand = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
RAND = (tmpRand.Substr(10)).ToInteger();
var rand20=((RAND%11)+1)*600; ! 10-120 Min


dom.GetObject("CUxD.CUX2800001:2.TIMER_SET").State(rand20);
Beispiel Zufallssteuerung

Bild

Es lässt sich natürlich darüber diskutieren, welche Simulationsart abschreckender wirkt, die rein zufallsgesteuerte oder diejenige, die sich fix am Benutzerverhalten orientiert. Vermutlich ist eine Kombination optimal. Dazu könnte man z.B. die Zufallssimulation gezielt erst nach Mitternacht einsetzen, vorher feste Ein- und Auszeiten.

Korrektur 04.09.13 23:50 kleiner Fehler im Skript, richtig: var rand20=((RAND%11)+1)*600; ! 10-120 Min

Vereinfachung RAWS v.2 RandomAnWesenheitsSimulation

Verfasst: 09.09.2013, 23:17
von starfish
uwe111 hat in verdankenswerter Weise die timer-funktion des cuxd addons um eine random-Funktion erweitert. Dadurch ergibt sich eine wesentliche Vereinfachung bei Anwesenheitssimulationen wie RAWS. (cuxd ab Version 0.58g)

Die Skripte entfallen gänzlich, die Simulation kann allein mit der Web-UI Programmierung erfolgen. Das Prinzip mit den 2 Timern pro Kanal und der Astrofunktion entspricht dem obigen Beitrag, deshalb hier nur die Bilder.

Die Randomfunktion wird durch die 3 Parameter nach TIMER_SET gesteuert. Die erste Zahl ergibt das Minimum des Bereiches, die zweite Zahl rXX ergibt die eigentliche Random - Zahl (Bereich 0-XX), welche mit der dritten Zahl multipliziert wird. Das Ergebnis wird dann zur ersten Zahl dazugezählt. Die dritte Zahl bestimmt demnach die Schrittgrösse. In meinem Beispiel beginnt der Bereich bei 600 s (10 Minuten), dazugezählt werden dann maximal 9*600 s (9 * 10 Minuten). Das ergibt eine Zufallszahl im Bereich von 10, 20, etc ... bis 100 Minuten. Im übrigen verweise ich auf die CUxD - Beschreibung.

Bild

Bild

Bild

Beispiel RAWS RandomAnWesenheitsSimulation

Verfasst: 10.09.2013, 08:33
von starfish
bei dieser Aufzeichnung von 5 RAWS-Aktoren kann man sehr gut die Random-funktion sehen.

Bild

Re: RAWS RandomAnWesenheitsSimulation

Verfasst: 02.12.2015, 22:35
von torsteng
Hallo,
diese Art der Anwesenheitssimulation ist wunderbar simpel. Leider scheint diese nicht mehr so zu funktionieren.
Ich habe die Programme exakt wie in Post 2 aufgebaut und es sieht so aus als ob das "raws off" wunderbar den timer setzt, am timestamp vom "raws on" kann ich sehen das es getriggert wurde, allerdings sind die aktionen nicht ausgeführt. Triggere ich es manuell, funktionieren die schaltzustände. Habe auch schon die Bedingungen auf den Timer_event reduziert, aber keine Besserung.

irgendwelche Ideen?

Re: RAWS RandomAnWesenheitsSimulation

Verfasst: 10.12.2015, 10:22
von starfish
welche Version von cuxd verwendest Du?

Re: RAWS RandomAnWesenheitsSimulation

Verfasst: 19.12.2015, 06:10
von starfish
]
torsteng hat geschrieben:diese Art der Anwesenheitssimulation ist wunderbar simpel. Leider scheint diese nicht mehr so zu funktionieren.
Ich habe die Programme exakt wie in Post 2 aufgebaut und es sieht so aus als ob das "raws off" wunderbar den timer setzt, am timestamp vom "raws on" kann ich sehen das es getriggert wurde, allerdings sind die aktionen nicht ausgeführt. Triggere ich es manuell, funktionieren die schaltzustände. Habe auch schon die Bedingungen auf den Timer_event reduziert, aber keine Besserung.

irgendwelche Ideen?
so, ich hab mirs unter aktuellen Bedingungen angeschaut, es scheint tatsächlich so, dass der CUxD - Trigger "TIMER_EVENT" nicht mehr läuft. Uwe111 empfiehlt in der Anleitung den Ersatz durch STATE=TRUE bei Aktualisierung oder TIMER_GET kleiner oder gleich 0 bei Aktualisierung.
Ich hab ersteres mal erfolgreich angetestet. Also die Trigger-Bedingung TIMER_GET ersetzen durch:
Timer1: bei STATE=TRUE bei Aktualisierung auslösen
Timer2: bei STATE=TRUE bei Aktualisierung auslösen

Nachtrag 5.11.2017 soeben nach CUXD - update festgestellt:
Timer1: bei STATE=TRUE bei Aktualisierung auslösen
Timer2: bei STATE=TRUE bei Aktualisierung auslösen
heisst neu bei CUXD > v. 1.11a :
Timer1: bei Schaltzustand: Ein bei Aktualisierung auslösen
Timer2: bei Schaltzustand: Ein bei Aktualisierung auslösen

Re: RAWS RandomAnWesenheitsSimulation

Verfasst: 03.01.2016, 02:12
von torsteng
Hallo, endlich mal Zeit gehabt es zu testen, scheint zu funktionieren, allerdings lag ein cuxd Upgrade dazwischen. Vielen Dank für die schnelle Hilfe.

Re: RAWS RandomAnWesenheitsSimulation

Verfasst: 27.01.2016, 16:34
von 9franz9
Leider bring ich diese Zeitsteuerung nicht hin.....
Liegt mit Sicherheit an meiner Unerfahrenheit mit Homematic bzw. CuxD .
Kann mal wer meine Einstellungen überprüfen? Irgendwas stimmt nicht...
Die Zeitsteuerung habe ich auf 12-17:30 geändert, die Steuerungszeiten verkürzt und die Änderung lt. Vorschlag:
Also die Trigger-Bedingung TIMER_GET ersetzen durch:
Timer1: bei STATE=TRUE bei Aktualisierung auslösen
Timer2: bei STATE=TRUE bei Aktualisierung auslösen


Muss ich bei den Timern noch irgendwas einstellen?
Hab das Hinzufügen lt. dieser Anleitung gemacht:
http://homematic-forum.de/forum/viewtop ... er#p249588

Hier die Screenshots:

Re: RAWS RandomAnWesenheitsSimulation

Verfasst: 28.01.2016, 14:27
von 9franz9
....hab den Fehler gefunden, bei Bedingung und Aktivität war der gleiche Timer gesetzt....sorry!
Jetzt funktionierts!
@starfish: wie erstellt man solche Schalt Aufzeichnungen?

Re: RAWS RandomAnWesenheitsSimulation

Verfasst: 02.03.2016, 11:30
von Spaeni
9franz9 hat geschrieben:....hab den Fehler gefunden, bei Bedingung und Aktivität war der gleiche Timer gesetzt....sorry!
Jetzt funktionierts!
@starfish: wie erstellt man solche Schalt Aufzeichnungen?
Wird wohl mit dem Programm erstellt welches in den Bildern erwähnt ist.

Sieht vielleicht nicht so schön aus. Aber ich mache das mit historian (http://www.ccu-historian.de/)
Welches bei mir nicht auf der CCU läuft sondern auf einem raspberry pi.