Ankündigung

Einklappen
Keine Ankündigung bisher.

Wann wird ein random-Wert neu generiert?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Wann wird ein random-Wert neu generiert?

    Nach Handbuch Seite 218 habe ich folgenden Code im Programm eingesetzt:

    Zufall5 = convert(random(60u32),0u08)
    if Reise and htime(23,50,Zufall5) then {
    write ("Zentral Aus-0/0/1", AUS)
    } endif

    Im Debugger bleibt der Wert 53 auch am nächsten Tag noch bestehen.
    Ich hatte angenommen, daß der Wert Zufall5 irgendwann neu generiert wird.
    ?

    Danke
    Oisnix

    #2
    Nein, in deinem Fall musst du die erste Zeile in ein if einpacken, das täglich einmal ausgeführt wird.
    ....und versuchen Sie nicht erst anhand der Farbe der Stichflamme zu erkennen, was Sie falsch gemacht haben!

    Kommentar


      #3
      Vielen Dank, Uwe!,

      Ich versuch es mal so:

      Zufall5 = convert(random(59u32),0u08)
      if Reise and htime(23,50,Zufall5) then {
      Zufall5 = convert(random(60u32),0u08);
      write ("Zentral Aus-0/0/1", AUS);
      } endif

      Gruß
      Oisnix

      Kommentar


        #4
        Hmmm, meinst Du das Ernst, die Sekunde nach 23:50 Uhr per Zufall festzulegen? Für jemanden, der von außen Dein Haus beobachtet, ist das sicher immer noch sehr automatisch...
        Allerdings kann ich ja auch mit dem vermuteten Zweck arg danebenliegen.

        Und wenn Du ganz sichergehen willst, nimm chtime(hh,mm,ss). Den neuen Zufallswert würde ich aber täglich nach Mitternacht oder Systemstart bestimmen, sonst könnte es sein, dass Du erneut am selben Tag "Zentral Aus.." auslöst,wenn Dein erster Zufallswert sehr früh in der Minute ist und dein nächster Zufallswert größer ist (und der nächste, usw...)

        Kommentar


          #5
          Vielen Dank.
          - Ja, das ist richtig. Ein längerer Spielraum für die Abschaltung ist viel sinnvoller.
          - Ein mehrfaches Ausschalten schadet nicht und stört höchstens einen Unbefugten.
          - Der momentane Code ist eigentlich ein Test, um die Funktion random kennenzulernen.
          - Der Befehl vor dem if ist nötig zur Deklaration von "Zufall5"

          Gruß

          Kommentar


            #6
            Zitat von Uwe! Beitrag anzeigen
            Nein, in deinem Fall musst du die erste Zeile in ein if einpacken, das täglich einmal ausgeführt wird.
            Genau, sonst wir der Zufall nur einmal beim Initialisieren generiert.
            offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
            Enertex Produkte kaufen

            Kommentar


              #7
              Vielen Dank!

              Kommentar


                #8
                Hallo,

                habe mir auch vor zu kurzen die "radom" Funktion angeschaut und habe bei mir auch das Gefühl, das es nur nach dem Systemneustart neu berechnet wird.
                Habe das Ganze aber so aufgebaut....



                if (delay(event("Dämmerung-1/2/50"),convert(random(100000u32),0u64))) and ("Dämmerung-2/2/50"==EIN)then {
                write("Ro Bad-1/4/60",100%)
                } endif

                Kommentar


                  #9
                  Die Randomfunktion muss in einem then-Zweig stehen, wenn diese neu berechnet werden soll zB.
                  if htime(0,0,0) then MyRandom=random(...) endif
                  Ansonsten wird der "Zufall" nur einmalig berechnet und zugewiesen.
                  offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                  Enertex Produkte kaufen

                  Kommentar


                    #10
                    Okay...
                    Danke.

                    Kommentar

                    Lädt...
                    X