Ankündigung

Einklappen
Keine Ankündigung bisher.

Dezimalzeiten Addieren

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

    HS/FS Dezimalzeiten Addieren

    Hallo zusammen,

    hat den jemand einen fertigen Baustein in der Tasche mit dem ich Dezimalzeit einfach Addieren kann ohne abzufargen größer gleich oder kleiner gleich?

    Hintergund:

    Ich verwene Mac Naroskas Rolladensteuereung V1.6
    Ich denke 10 Stunden schlaf sind Werktags genug.
    Ich schalte wenn wir ins Bett gehen vom Schlafzimmer aus "Alles Aus" (Kompfortbetrieb 0)
    Das erkenne ich und habe einen Trigger der mir bei alles aus (0 auf Zentales objekt) für ein paar sekunden eine 1 sendet.
    Nun möchte ich bei Alles aus und Nachtbetrieb die "Rollo hoch Zeit" auf Dezimalzeit + 10 setzen.
    Mache ich das vor 24:00 kann ich einfach 14 abziehen, mache ich das aber nach 0:00 muss ich dazu addieren.
    Nun suche ich einen fertigen Baustein der mir das abnimmt und immer eine Gültige Dezimalzeit ausspuck (eventuell mit Überlauf +1 -1).

    Hat jemand sowas in der Schublade?

    DanieSane

    #2
    Hallo DaniSane!

    Was du suchst, ist ein Baustein mit Modulo-Funktion.
    Vielleicht hilft dir das hier ja weiter:
    http://www.knx-user-forum.de/showthr...ghlight=modulo

    Ich verstehe zwar noch nicht, wieso du unbedingt nach 10 Stunden dir Rollos hochfahren möchtest, aber egal.
    Bei mir habe ich das so gelöst, dass die Rollos in den Schlafräumen mit der Komfortfunktion versehen sind, d.h. die fahren morgens nicht automatisch hoch sondern nur manuell. Alles andere geht um 07:00 Uhr oder später hoch (je nachdem, wann es hell ist).
    Gruß, Marc

    Kommentar


      #3
      häää

      Zitat von MarcNaroska Beitrag anzeigen
      Was du suchst, ist ein Baustein mit Modulo-Funktion.
      Vielleicht hilft dir das hier ja weiter:
      http://www.knx-user-forum.de/showthr...ghlight=modulo
      nix verstehn.....

      Kommentar


        #4
        ich fahre meine Rolladen auch in Abhängigkeit von Außenhelligkeit, Uhrzeit Sonnenaufgang + Sperrzeit (je nach Raum unterschiedlich) aber spätestens um 8 Uhr hoch. Klappt bis jetzt Prima
        Grüße Manuel

        Kommentar


          #5
          Mit dem Modulo-Baustein hättest du die Möglichkeit, immer 10 auf die Dezimalzeit aufzuaddieren (z.B.: 22 Uhr + 10 = 32). Die 32 wird dann über einen (noch zu schreibenden) Modulo-Baustein modulo 24 gerechnet. Das ergibt als Ergebnis 1 (wie öft passt 24 in 32) und als Rest 8 (32-(1*24)). Die 8 ist dann die Uhrzeit, an der du die Rollos hochfahren möchtest.

          Nimm dir doch mal einen kleinen Baustein (z.B. "LeftRightSting", ID 19870 von Matthias S. http://www.knx-user-forum.de/downloa...?do=file&id=52) aus dem Downloadbereich als Grundlage. Den dann entsprechend des angegebenen Beitrags abzuändern sollte nicht allzu schwierig sein.
          Gruß, Marc

          Kommentar


            #6
            SZ Rollos sind Heilig

            ich nix programmiren..... (pyton?)

            Das mit den Schlafzimmer Rollos ist bei uns eine spezielle sache und die sind heilig (ich hole aus):

            Ich kenne meine Frau nun 11 Jahre, in diesen 11 Jahren war sie immer im Wechselschichtedienst bei denen mit den Blauen Lampen und der Lustigen Kleidung. D.h. die Rollos sind bei uns im Schlafzimmer eigedlich immer auf 85% (WAF Wunsch).
            Durch den Wechselschichtdienst, egal ob Wochende, Feiertag, was auch immer, wurde (und wird vileicht auch wieder) bei uns eigeldlich zu jeder Zeit Geschlafen. Was Routine ist - Alles Aus.
            Nun habe ich die möglichkeit anhand der uhrzeit zu erkennen wann wir schlafen. (Ist Frau im Nachdienst wird eher später Alles Aus (nach 0:00)gedrück, hat Sie Mittagsdienst, heher bis 23:00, schläft SIe zwischen Frühdienst und Nachdienst (tagsüber) so um 8:00.

            Grund: Die im neuerdings von WAf im Schlafzimmer aufgestellen Pflanzen sollen auch Licht bekommen :-)

            aber ich bin da gestern über das Bluetooth Projekt gestolpert und die Katzenmatte könnte man auch unter die Matrzte im Bett Legen...... dann eine Verzögerung Klogang...... hmmmmm Das währe vieleicht auch was Fürs Babybett... Mittagsschlaf ?


            DaniSane

            Kommentar


              #7
              Die Modulo-Funktion bezieht sich auf ganze Zahlen, ist für die Dezimalzeit also nur bedingt geeignet. Ließe sich natürlich abwandeln - aber mal ehrlich - das ist wirklich mit Kanonen auf Spatzen geschossen.

              Du benötigst vielleicht gerade eine Handvoll Bausteine (Vergleicher "< 14", Addition (0/1 -> 1/2), Auswahlschalter 1/2 -> +10/-14, Addition, T-Verzögerung) - fertig.
              Gruß, Rainer

              Kommentar


                #8
                Stimmt, daran hatte ich jetzt nicht gedacht.
                Also: Modulo vergessen wir für diesen Fall...

                Aber DaniSane, genau für deine Anwendung gibt es den Eingang E35 (Komfortschwelle). Wenn du Komfort eingeschaltet hast, Komfortschwelle z.B. auf 80&#37; stellst und das Rollo dann z.B. auf 85% steht, so wird weder beschattet noch morgens hochgefahren, da Position Rollo > Komfortschwelle. Durch manuelles Fahren werden dann die Automatiken wieder aktiviert, falls eine Position < 80% angefahren wird. Das sollte bei dir auch funktionieren...

                Ansonsten ist natürlich die "Bettenbelegungserkennung" noch ein wenig smarter...
                Gruß, Marc

                Kommentar


                  #9
                  Zitat von Taxus Beitrag anzeigen
                  Die Modulo-Funktion bezieht sich auf ganze Zahlen, ist für die Dezimalzeit also nur bedingt geeignet. Ließe sich natürlich abwandeln - aber mal ehrlich - das ist wirklich mit Kanonen auf Spatzen geschossen.
                  Dies ist ein weitverbreiter Irrtum der wohl daher rührt dass die meisten Programiersprachen den Modulo nur auf Integer Zahlen anwenden.

                  Modulo auf reale Zahlen ist mathematisch durchaus zulässig und auch Python kann dies verareiiten. Somit wird z.B 27.5 % 24 = 3.5 (3:30) und somit sit modulo die gesuchte einfahce Lösung des Problems.

                  Gruss,
                  Gaston

                  Kommentar


                    #10
                    Na, da war meine erste "intuitive" Antwort ja doch die Richtige...

                    Aber mit dem Statement
                    "ich nix programmiren..... (pyton?)"

                    wird das trotzdem nicht funktionieren, es sei denn jemand wäre so freundlich und erledigt das kurz für DaniSane...
                    Gruß, Marc

                    Kommentar


                      #11
                      Zitat von MarcNaroska Beitrag anzeigen
                      es sei denn jemand wäre so freundlich und erledigt das kurz für DaniSane...
                      Na gut Nachdem ich was ähnliches (zwar für ganz was anderes, aber egal) eh brauche hab ich mal was gemacht, anbei..
                      Wenn der BS ausreichend getestet ist, stelle ich ihn in die Downloads..

                      @Danisane:
                      E1 Deine aufaddierten Stunden
                      E2 "24"

                      -> A1 uninteressant
                      -> A2 gibt dann "Stunde mod 24" aus..

                      Makki
                      Angehängte Dateien
                      EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
                      -> Bitte KEINE PNs!

                      Kommentar


                        #12
                        Zitat von Gaston Beitrag anzeigen
                        Dies ist ein weitverbreiter Irrtum der wohl daher rührt dass die meisten Programiersprachen den Modulo nur auf Integer Zahlen anwenden.
                        In dieser Angelegenheit ist die Henne-Ei-Frage einmal einfach zu beantworten: erst die Mathematik, dann die Programmiersprachen. Viele lernen es umgekehrt . Gauß hat den Begriff für ganze Zahlen eingeführt, und der reine Begriff bezieht sich darauf - kann aber anders definiert werden. Dass dies in Programmiersprachen auch auf nicht-ganze Zahlen ausgedehnt und zweckmäßigerweise auch so benannt wird, ist eine Folgeerscheinung. Da es aber wie Du schon schreibst nicht durchgängig umgesetzt ist (warum wohl), darf dieses Feature nicht vorausgesetzt werden.

                        Zitat von Gaston Beitrag anzeigen
                        Modulo auf reale Zahlen ... auch Python kann dies verareiiten.
                        Danke für den Hinweis. Das hatte ich bisher nicht getestet.
                        Gruß, Rainer

                        Kommentar


                          #13
                          Zitat von Taxus Beitrag anzeigen
                          Gauß hat den Begriff für ganze Zahlen eingeführt, und der reine Begriff bezieht sich darauf
                          Gauss hat eigentlich die Modulare Arithmetik eingeführt nicht die modulo operation. Bei der hier besprochenen modulo operation handelt es sich um den Rest einer Division was nicht teil der modularen Arithmetik ist sondern ein mittel zum Zweck.

                          Die modulo operation an sich ist alles andere als Eindeutig. Wieviel wird z.B. (-230 mod 50) ? Hier ändert je nach Definition das Vorzeichen und/oder der Wert des Resultas.

                          Aber die Diskussion hierrüber ist hier absolut unnütz da hier eine ganz spezifische Frage in einem ganz spzifischen Kontext gestellt wurde, Antworten die sich auf andere Kontexte beziehen sind somit irrelevant.

                          Nun zum Baustein: Ich hoffe ich habe keinen Fehler gemacht denn ich hab den Baustein unten nicht getestet. Einfach eine Textdatei namens <xxx>_Modulo.hsl (wo xxx eindeutig und im reservierten Bereich 11000-11254 leiegn sollet) im Ordner "logik" an un kopiert den Baustein unten da rein. Nach einem neustart des Experten sollte er verfügbar sein.

                          Gruss,
                          Gaston


                          Code:
                          5000|"Gaston\Modulo"|0|2|"E1"|"E2"|1|"Modulo"
                          
                          5001|2|1|0|0|0
                          
                          # EN[x]
                          5002|1|0|0   
                          5002|2|0|0  
                          
                          # AN[x]
                          5004|1|0|0|1|0 # Ausgang
                          
                          5012|0|""|"EN[1] % EN[2]"|""|1|0|0|0

                          Kommentar

                          Lädt...
                          X