NEWS
Schleife Zufallszeit steuern
-
Hallo,
ich möchte gern meine Bewässerung für die Kids missbrauchen.
Ich möchte gern 5 Rasensprenger / Sonoff Schalter in unterschiedlichen abständen für unterschiedliche Zeiten, Ein und Aus schalten.
Also einer von 5 Sprengern soll für eine Zeit von 3 bis 10 Sek An sein und dann wieder aus. Dafür soll der Nächste für eine Zeit X an und dann wieder aus sein.
Ich habe jetzt viel mit der Schleife und Zufallszahlen probiert, aber es läuft einfach nicht.
Hier mal ein Beispiel, habe aber schon endlich Varianten probiert. Auch CRON hatte ich schon. Aber ich glaube es hängt an den Zufallszahlen.
-
@atomicix ich habe bei mir in der VIS 4 Avatare. Zufallsgesteuert lasse ich die Blinzeln, einen Hut Aufsetzen, Lachen und so weiter. Das habe ich so gelöst:
Der Zufallsgenerator spuckt eine Zahl zwischen 1 und 60 aus, nur auf 1 bis 6 passiert etwas anderes, per Default ist die Wahrscheinlichkeit also sehr hoch das nur geblinzelt wird.
Die einzelnen Funktionen rufen dann unterschiedliche Sachen auf, am Ende wird aber immer wieder zu "Bernhard_normal" zurück gekehrt:
So konnte ich auch für jeden einzelnen "Effekt" eine andere Zeit angeben.
Bei mir läuft das in einer Endlosschleife (
solange whar
), aber eventuell hättest du es mit so einer Aufteilung leichter.
Ist bei mir auch erst so im 5 Anlauf so geworden, keine Ahnung ob ich selbst darauf gekommen bin oder mir das irgendwo abgeschaut habe. -
@atomicix Nachtrag:
Wert von Objekt ID Zufall
- du schreibst den Zufallswert in einen Datenpunkt und willst den gleich danach wieder auslesen. Schreib den in eine Variable, siehe mein Beispiel -
@bananajoe danke, klingt schon mal gut. Aber somit würde ja aus Wahrscheinlichkeit 9 von 10 Fällen, gar kein Sprenger laufen, oder? Entweder ist er an 1-5 , oder alle aus 6-50 ( zahlen nur als Beispiel. Verstehe ich das richtig?
-
@atomicix richtig, durch die Größe der Zahl habe ich die Wahrscheinlichkeit geändert. bei kleinerer Zahl würde er öfter etwas anderes machen, bei größerer Zahl seltener.
Bei sollte er halt die meiste zeit nur Blinzeln und nur ab und zu etwas anderes machen.
Wenn du die Wahrscheinlichkeit für einzelne Elemente erhöhen willst (Sprenger 2 soll doppelt so häufig wie die anderen angehen) könntest du den auch einfach 2mal in der Liste, also bei 2 Zahlen, auftauchen lassen. Man kann auch bestimmt so etwas wieFalls 5 bis 8
machen, müsste ich aber eben googeln wie man das einträgt - oder du machst dasund schreibst es mir hier
-
@atomicix sagte in Schleife Zufallszeit steuern:
Hallo,
ich möchte gern meine Bewässerung für die Kids missbrauchen.
Ich möchte gern 5 Rasensprenger / Sonoff Schalter in unterschiedlichen abständen für unterschiedliche Zeiten, Ein und Aus schalten.
Also einer von 5 Sprengern soll für eine Zeit von 3 bis 10 Sek An sein und dann wieder aus. Dafür soll der Nächste für eine Zeit X an und dann wieder aus sein.
Ich habe jetzt viel mit der Schleife und Zufallszahlen probiert, aber es läuft einfach nicht.
Hier mal ein Beispiel, habe aber schon endlich Varianten probiert. Auch CRON hatte ich schon. Aber ich glaube es hängt an den Zufallszahlen.
Du hast mehrere Probleme:
-
Bei jedem Durchlauf deiner Schleife wird ein Timeout angehalten und dann wieder gestartet. Problematisch ist das der Baustein "ausführen Timeout" sofort zurück kommt. Das bedeutet das du in schneller Folge solange dein DP auf Wahr ist die Folgenden Befehle absetzt:
-
Anhalten Timeout
-
Ausführen Timeout...
Das was im Timeout steht wird aber nie ausgeführt weil der angehalten wird bevor du da bist.
Ich würde das so lösen:
Zu beachten:
das "Object ID" im trigger sowie das "value of Objekt ID select ID muss auf deinen "spass Ein" Datenpunkt zeigen.
Die 5 Object ID default solltest du auf deine 5 zufällig auszuwählenden datenpuntek zum aktivieren der Funktionen einstellen.
Und wenn du mal mehr (oder weniger) als 5 brauchst kannst du einfach einen Eintrag in der Liste hinzufügen oder wegnehmen
Der Trigger auf "ist grösser als" sorgt dafür das eine neue Timeout-kette nur gestartet wird wenn der DP von falsch auf wahr wechselt.
Der Aufruf von FunFunc am Ende des Timeouts entfällt wenn der DP nicht wahr ist, somit läuft die Funktion dann aus. Ansonsten wird ein neuer Timeout gestatet.A.
-
-
-
Erst einmal danke an alle für mit Hilfe.
Ich hatte erst die Variante von @paul53 . Das hat leider nicht funktioniert.
Von @Asgothian habe ich die Version nicht getestet.
Dann habe ich die Version von @BananaJoe als Vorlage genommen und meine eigene Kreation damit umgesetzt.
Die nicht nicht hübsch und mit Sicherheit geht die auch einfacher, aber so funktioniert es.