Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. Schleife Zufallszeit steuern

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Schleife Zufallszeit steuern

    This topic has been deleted. Only users with topic management privileges can see it.
    • AtomicIX
      AtomicIX last edited by AtomicIX

      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.
      spaß.PNG

      BananaJoe Asgothian 3 Replies Last reply Reply Quote 0
      • BananaJoe
        BananaJoe Most Active @AtomicIX last edited by

        @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:

        8d51e060-2acf-4a43-833b-f182732d37ee-image.png

        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:
        31f4b058-5e4f-4751-b4e9-d58a3f4b44e6-image.png

        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.

        1 Reply Last reply Reply Quote 0
        • BananaJoe
          BananaJoe Most Active @AtomicIX last edited by

          @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

          AtomicIX 1 Reply Last reply Reply Quote 0
          • AtomicIX
            AtomicIX @BananaJoe last edited by

            @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?

            BananaJoe 1 Reply Last reply Reply Quote 0
            • BananaJoe
              BananaJoe Most Active @AtomicIX last edited by BananaJoe

              @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 wie Falls 5 bis 8 machen, müsste ich aber eben googeln wie man das einträgt - oder du machst das 🙂 und schreibst es mir hier

              1 Reply Last reply Reply Quote 0
              • Asgothian
                Asgothian Developer @AtomicIX last edited by

                @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.
                spaß.PNG

                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:

                Screen Shot 2022-08-03 at 00.03.38 .png

                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.

                paul53 1 Reply Last reply Reply Quote 0
                • paul53
                  paul53 @Asgothian last edited by paul53

                  @asgothian sagte: Ich würde das so lösen:

                  Ähnliche Version:

                  Bild_2022-08-03_112512859.png

                  AtomicIX 1 Reply Last reply Reply Quote 0
                  • AtomicIX
                    AtomicIX @paul53 last edited by

                    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.

                    spaßv2.PNG

                    1 Reply Last reply Reply Quote 1
                    • First post
                      Last post

                    Support us

                    ioBroker
                    Community Adapters
                    Donate

                    653
                    Online

                    31.9k
                    Users

                    80.2k
                    Topics

                    1.3m
                    Posts

                    blockly javascript
                    4
                    8
                    447
                    Loading More Posts
                    • Oldest to Newest
                    • Newest to Oldest
                    • Most Votes
                    Reply
                    • Reply as topic
                    Log in to reply
                    Community
                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                    The ioBroker Community 2014-2023
                    logo