Zufallsgenerator Skript für Anwesenheitssimulation, Lampen..

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

tz04
Beiträge: 46
Registriert: 27.08.2013, 21:09
Hat sich bedankt: 10 Mal
Danksagung erhalten: 1 Mal

Re: Zufallsgenerator Skript für Anwesenheitssimulation, Lamp

Beitrag von tz04 » 10.08.2015, 17:01

Hallo Eugen, danke für die prompt Rückmeldung! Meinen ersten Fehler habe ich schon gefunden, wenn das Program dass die Variablen auswertet manuell ausgeführt wird, wird die "Wenn" Bedingung ignoriert :roll: -> Immer eingeschaltet.
Da muss man erst mal drauf kommen. Das Programme sich anders verhalten je nachdem ob manuell oder automatisch aufgerufen, halte ich für ein "interessantes" Konzept aber das ist ja anderweitig hier schon diskutiert worden :D

Habe ich deine Antwort richtig verstanden dass die Zahlen nur dann wirklich zufällig sind wenn das Script auch ständig (alle 3-5 Minuten) läuft? Zumindest nähern sich meine Werte langsam dem erwarteten Bereich an. Random_tp ist seit einiger Zeit positiv und momentan auf 0.53

Dass es da nicht einfacheres gibt? Eine Random Funktion hat doch jeder 30 Jahre alte C-Compiler mit an Bord, könnte man da nicht einfach was aus den O/S Bibliotheken aufrufen? Aber wahrscheinlich hast Du Dir das schon genau angeschaut bevor Du dir die Arbeit mit dem aufwendigen Script gemacht hast :D

Danke nochmal für deine Hilfe!
Gruss
Thomas
RaspberryMatic

Benutzeravatar
funkleuchtturm
Beiträge: 2370
Registriert: 13.06.2011, 16:42
Hat sich bedankt: 23 Mal
Danksagung erhalten: 358 Mal
Kontaktdaten:

Re: Zufallsgenerator Skript für Anwesenheitssimulation, Lamp

Beitrag von funkleuchtturm » 10.08.2015, 22:31

tz04 hat geschrieben:Habe ich deine Antwort richtig verstanden dass die Zahlen nur dann wirklich zufällig sind wenn das Script auch ständig (alle 3-5 Minuten) läuft?
Wie ich vorne erläutert habe erzeugt das Programm mit jedem Lauf , also hier alle 3 bis 4 Minuten, eine neue Zufallszahl. In der Zeitdarstellung der Zufallswerte entsteht ein Rauschen mit dem Mittelwert 0,5. Nimmst Du als Schaltschwelle für Deine Lampe diesen Wert, dann ist sie für 50% der Gesamtzeit eingeschaltet. Größere Schwellwerte verkleinern die prozentuale Einschaltzeit und umgekehrt.
tz04 hat geschrieben:Zumindest nähern sich meine Werte langsam dem erwarteten Bereich an. Random_tp ist seit einiger Zeit positiv und momentan auf 0.53
Was erwartest Du denn ??? :o
tz04 hat geschrieben:Habe ich deine Antwort richtig verstanden dass die Zahlen nur dann wirklich zufällig sind wenn das Script auch ständig (alle 3-5 Minuten) läuft?
Das Verfahren funktioniert als Zufallsschalter nur so.
tz04 hat geschrieben: Dass es da nicht einfacheres gibt? Eine Random Funktion hat doch jeder 30 Jahre alte C-Compiler mit an Bord, könnte man da nicht einfach was aus den O/S Bibliotheken aufrufen? Aber wahrscheinlich hast Du Dir das schon genau angeschaut bevor Du dir die Arbeit mit dem aufwendigen Script gemacht hast :D
Schreib das mal an ELV , EQ3 oder ...
Viele Gruesse
Eugen
________________________________________________
SmartHome-Eintopf mit feinem Homeduino-Gemüse
... und für Feinschmecker gibt´s den WIFFI, den WEATHERMAN-2, den PULSECOUNTER und den AIRSNIFFER
mit vielen Kochrezepten für den ambitionierten Homematiker

tz04
Beiträge: 46
Registriert: 27.08.2013, 21:09
Hat sich bedankt: 10 Mal
Danksagung erhalten: 1 Mal

Re: Zufallsgenerator Skript für Anwesenheitssimulation, Lamp

Beitrag von tz04 » 11.08.2015, 08:48

funkleuchtturm hat geschrieben:
tz04 hat geschrieben:Zumindest nähern sich meine Werte langsam dem erwarteten Bereich an. Random_tp ist seit einiger Zeit positiv und momentan auf 0.53
Was erwartest Du denn ??? :o
Ich war halt überrascht dass das Script zuerst negative Werte ausgespuckt hat nachdem Du am Anfang geschrieben hast dass das Ergebniss immer zwischen 0 und 1 sein sollte.
Aber jetzt passt alles! Nochmal Vielen Dank :D

Gruss
Thomas
RaspberryMatic

Capone2000
Beiträge: 167
Registriert: 24.10.2013, 11:33
Danksagung erhalten: 1 Mal

Re: Zufallsgenerator Skript für Anwesenheitssimulation, Lamp

Beitrag von Capone2000 » 17.09.2015, 12:55

Hallo zusammen,

ich probiere seit gestern mal das Script von funkleuchturm aus. Wenn ich das Script von Seite 1 nehme, geht das Licht zur eingestellten Startzeit des zweiten Programms an und bleibt dann an bis die Endzeit erreicht ist. Wenn ich das Skript teste, bekomme ich auch keine Ergebnisse angezeigt.
Wenn ich eines der Skripte nehme die etwas weiter unten stehen, dann funktioniert es soweit. Das Licht schaltet unregelmäßig für unregelmäßige Zeiten. Aber die prozentuale Anzahl stimmt nicht. Wenn ich random_tp auf 0,5 stelle, dann sollte das Licht ja laut Aussage 50% der eingestellten Zeit leuchten.
Ich hatte testweise mal eine Zeit von einer und zwei Stunden eingestellt, aktivieren des Scripts alle 2 Minuten. Bei einer Stunde brannte das Licht ca 45 Minuten und bei dem 2 Stunden Test brannte es nur 30 Minuten.
Dafür aber immer schön unregelmäßig.

Da muss doch irgendwo noch ein Fehler stecken...

Grüße
Thomas

dondaik
Beiträge: 12945
Registriert: 16.01.2009, 18:48
Wohnort: Steingaden
Hat sich bedankt: 1623 Mal
Danksagung erhalten: 222 Mal

Re: Zufallsgenerator Skript für Anwesenheitssimulation, Lamp

Beitrag von dondaik » 17.09.2015, 12:57

wieso ?
-------
!!! der download der handbüchern auf den seiten von eq3 und das lesen der tips und tricks kann das hm-leben sehr erleichtern - das nutzen der suche nach schlagworten ebenso :mrgreen: !!!
wer schreibfehler findet darf sie behalten.

Capone2000
Beiträge: 167
Registriert: 24.10.2013, 11:33
Danksagung erhalten: 1 Mal

Re: Zufallsgenerator Skript für Anwesenheitssimulation, Lamp

Beitrag von Capone2000 » 17.09.2015, 15:58

Weil mir das erste Skript gar kein Ergebnis anzeigt und mit dem anderen Skript bekomme ich nicht die bei random_tp eingestellten 50% hin...

dondaik
Beiträge: 12945
Registriert: 16.01.2009, 18:48
Wohnort: Steingaden
Hat sich bedankt: 1623 Mal
Danksagung erhalten: 222 Mal

Re: Zufallsgenerator Skript für Anwesenheitssimulation, Lamp

Beitrag von dondaik » 17.09.2015, 17:05

denke das das mit 0,5 auch nicht geht - > ich habe da 0.5 gelesen, ansonsten wie immer : programme / skripte einstellen ;-)
-------
!!! der download der handbüchern auf den seiten von eq3 und das lesen der tips und tricks kann das hm-leben sehr erleichtern - das nutzen der suche nach schlagworten ebenso :mrgreen: !!!
wer schreibfehler findet darf sie behalten.

Capone2000
Beiträge: 167
Registriert: 24.10.2013, 11:33
Danksagung erhalten: 1 Mal

Re: Zufallsgenerator Skript für Anwesenheitssimulation, Lamp

Beitrag von Capone2000 » 17.09.2015, 19:09

Argh, natürlich ist 0.5 eingestellt. Ein Komma ist ist ja auch gar nicht machbar.
Aber gut, das erste Programm sieht so aus:
Bildschirmfoto 2015-09-17 um 18.59.36.png
Das darin enthaltene Skript ist das:

Code: Alles auswählen

!Version  2014.06.02 ;  Verfasser :Eugen Stall
!zwei Systemvariablen "random_zahl"  und "random_tp" als Zahl mit Wertebereich -2.0 bis 2.0 anlegen
!Skript speichert  Zufallszahl zwischen 0.0 und 1.0 ungefiltert auf "random_zahl und gemittelt auf "random_tp"
!##############################################
real zahl = 65536.0 * dom.GetObject("random_zahl").State();
zahl = zahl.ToInteger();
if ((zahl <1) || (zahl > 65535)) {zahl= 3757;} !um saubere Startposition sicherzustellen
integer zahl_alt = zahl;
!##############################################
string dualzahl = "";
integer xor ;
integer x;
!hier wird ein 16bit-Schieberegister mit XOR-Rückkopplungen simuliert
if (zahl > 32767) {dualzahl = dualzahl + "1"; zahl = zahl - 32768; x = 1;} else    {dualzahl = dualzahl + "0";  x = 0;}
xor = x;
if (zahl > 16383) {dualzahl = dualzahl + "1"; zahl = zahl - 16384;} else    {dualzahl = dualzahl + "0";}
if (zahl > 8191) {dualzahl = dualzahl + "1";  zahl = zahl - 8192; x = 1;} else    {dualzahl = dualzahl + "0"; x = 0;}
if ((xor + x) ==1) {xor = 1;} else {xor = 0;}
if (zahl > 4095) {dualzahl = dualzahl + "1"; zahl = zahl - 4096; x = 1;} else    {dualzahl = dualzahl + "0"; x = 0;}
if ((xor + x) ==1) {xor = 1;} else {xor = 0;}
if (zahl > 2047) {dualzahl = dualzahl + "1"; zahl = zahl - 2048 ;} else    {dualzahl = dualzahl + "0";}
if (zahl > 1023) {dualzahl = dualzahl + "1"; zahl = zahl - 1024 ; x = 1;} else    {dualzahl = dualzahl + "0"; x = 0;}
if ((xor + x) ==1) {xor = 1;} else {xor = 0;}
!niedrigstes neues bit einschieben
zahl = zahl_alt * 2;
if (zahl > 65535) {zahl = zahl - 65536;}
zahl = zahl + xor;
!auf 1 normieren und auf Systemvariable random_zahl  speichern  ############
zahl = 0.0000152590219* zahl;  !zahl / 65536
dom.GetObject("random_zahl").State(zahl);
!Mittelwertbildung : der Faktor 0.2 bestimmt die Mittelungsstärke. ###########
!Je kleiner, desto "ruhiger" das Rauschsignal  ########################
real tp_random = dom.GetObject("random_tp").State();
tp_random =  tp_random + (0.2 * (zahl - tp_random));
dom.GetObject("random_tp").State(tp_random);
tp_random = dom.GetObject("random_tp").State();
!####################################################
Die Systemvariablen sind die:
Bildschirmfoto 2015-09-17 um 19.03.36.png
Bildschirmfoto 2015-09-17 um 19.03.36.png (21.91 KiB) 3187 mal betrachtet
Das zweite Programm ist das:
Bildschirmfoto 2015-09-17 um 19.05.09.png
Das Skript ist wie erwähnt copy/paste von Funkleuchtturm.
In dem Fall jetzt ist das Licht um 19:02 angegangen und bleibt bis zum Ende an.

Da ist leider nix mit Zufall.

Capone2000
Beiträge: 167
Registriert: 24.10.2013, 11:33
Danksagung erhalten: 1 Mal

Re: Zufallsgenerator Skript für Anwesenheitssimulation, Lamp

Beitrag von Capone2000 » 17.09.2015, 21:17

OK, scheint nun zu klappen.....fragt mich bitte nicht warum.... :?

dondaik
Beiträge: 12945
Registriert: 16.01.2009, 18:48
Wohnort: Steingaden
Hat sich bedankt: 1623 Mal
Danksagung erhalten: 222 Mal

Re: Zufallsgenerator Skript für Anwesenheitssimulation, Lamp

Beitrag von dondaik » 17.09.2015, 21:24

:-) na dann, viel spass damit
-------
!!! der download der handbüchern auf den seiten von eq3 und das lesen der tips und tricks kann das hm-leben sehr erleichtern - das nutzen der suche nach schlagworten ebenso :mrgreen: !!!
wer schreibfehler findet darf sie behalten.

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“