Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - Tag/Nacht-Logik

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

    [Codebeispiel] - √ - Tag/Nacht-Logik

    Hat jemand schon eine fertige Logik für Tag und Nacht anhand sh.sun.rise und sh.sun.set ?
    Ich steh da gerade auf dem Schlauch was die Berechnung angeht und würde ungern das Ras zum zweiten mal erfinden.

    Belohnung:
    Ich trage diese unter Nennung des Autors im Wiki ein -> https://github.com/mknx/smarthome/wi...ken-und-Howtos
    Umgezogen? Ja! ... Fertig? Nein!
    Baustelle 2.0 !

    #2
    Hi,

    Du kannst die fertigen Items sh.env.location.day() und sh.env.location.night() nehmen.

    Code:
    # lib/env/location.py
    
    if sh.sun:
        sh.env.location.sunrise(sh.sun.rise().astimezone(sh.tzinfo()))
        sh.env.location.sunset(sh.sun.set().astimezone(sh.tzinfo()))
    
        sh.env.location.moonrise(sh.moon.rise().astimezone(sh.tzinfo()))
        sh.env.location.moonset(sh.moon.set().astimezone(sh.tzinfo()))
        sh.env.location.moonphase(sh.moon.phase())
    
        # setting day and night
        day = sh.sun.rise(-6).day != sh.sun.set(-6).day
        sh.env.location.day(day)
        sh.env.location.night(not day)
    Bis bald

    Marcus

    Kommentar


      #3
      Tag / Nacht

      Hallo,
      irgendwie habe ich einen Knoten im Hirn; Wie stelle ich es nun an, dass SH mir den Tag / Nacht - Status auf eine GA schreibt? Tag = 1, Nacht = 0.

      Dafür brauch ich doch keine Logic, oder?
      Hintergrund. Meine MDT - Glastaster haben ja ein Tag/Nacht-Objekt zur Schaltung der Hintergrundbeleuchtung mit Tag = 1, Nacht = 0. Dies wollte ich damit antriggern.

      Update:
      Gerade die Beispiele unter http://smartvisu.de/kurzanleitung/in...home_schaltuhr angeschaut; Im Prinzip müsste es ja genauso sein, oder? Hab´s mal eingebaut und warte nun auf dein Sonnenaufgang :-)
      Viele Grüße
      Dieter

      Kommentar


        #4
        Ich schiebe es die Tage noch ins Wiki:

        Code:
        [tag]
            type = num
            knx_dpt = 1
            knx_send = 0/0/103
            knx_reply = 0/0/103
            enforce_updates = true
            eval = sh.env.location.day()
            eval_trigger = env.location.day
            cycle = 300
        
        [nacht]
            type = num
            knx_dpt = 1
            knx_send = 0/0/104
            knx_reply = 0/0/104
            enforce_updates = true
            eval = sh.env.location.night()
            eval_trigger = env.location.night
            cycle = 300
        Edit:
        Tag ist während des Tages true und Nachts false, Nacht dann reziprok.
        Umgezogen? Ja! ... Fertig? Nein!
        Baustelle 2.0 !

        Kommentar


          #5
          Hi,

          schöne Hilfe Mirko!

          Zwei Anmerkungen dazu:
          1. cycle funktioniert bei Items nur mit Wertzuweisung
          2. man kann auch die env Items überlagern.

          Dazu kann man in z.B. items/meineenv.conf folgendes schreiben:

          Code:
          [env]
              [[location]]
                  [[[day]]]
                      name  = Tag
                      knx_dpt = 1
                      knx_send = 0/0/103
                      knx_reply = 0/0/103
          Bis bald

          Marcus

          Kommentar


            #6
            Done!

            https://github.com/mknx/smarthome/wi...ken-und-Howtos
            Umgezogen? Ja! ... Fertig? Nein!
            Baustelle 2.0 !

            Kommentar


              #7
              so wie es da oben steht, wird bei Tag eine 1 auf die GA 0/0/133 geschickt und bei Nacht eine 1 auf die GA 0/0/133.

              Wie muss man den Code drehen, damit bei Tag eine 1 und bei Nacht eine 0 an nur eine GA geschickt wird?

              Kommentar


                #8
                Garnicht drehen:

                env.location.day -> Tag=1 Nacht=0
                env.location.night -> Tag=0 Nacht=1

                Da du zweimal die gleiche GA referenzierst ist Deine Frage nicht eindeutig .
                Umgezogen? Ja! ... Fertig? Nein!
                Baustelle 2.0 !

                Kommentar


                  #9
                  Sorry JuMi2006, mir ist deine Antwort nicht einleuchtend genug.

                  Wie muss man den Code verändern, damit bei Nacht eine "0" und bei Tag eine "1" an die selbe GA Bsp. 1/0/133 geschickt wird?

                  Danke

                  Kommentar


                    #10
                    So wie hier beschrieben: https://github.com/mknx/smarthome/wiki/Tag-Nacht

                    Überschreiben von env.location.day:
                    Code:
                    [env]
                        [[location]]
                            [[[day]]]
                                name  = Tag
                                knx_dpt = 1
                                knx_send = 1/0/133
                                knx_reply = 1/0/133
                    Oder als eigenes item:
                    Code:
                    [tag]
                        type = num
                        knx_dpt = 1
                        knx_send = 1/0/133
                        knx_reply = 1/0/133
                        eval = sh.env.location.day()
                        eval_trigger = env.location.day
                    Umgezogen? Ja! ... Fertig? Nein!
                    Baustelle 2.0 !

                    Kommentar


                      #11
                      Achso,

                      also bei Tag wird eine 1 geschickt und nach Sonnenuntergang automatisch dann eine 0 an die selbe GA.

                      Es muss also nur ein Tag Item angelegt werden und nicht beides.

                      Danke

                      Kommentar


                        #12
                        Genau ... und weil ich es mir nicht verkneifen kann: Steht aus so im Wiki

                        Tag Nacht

                        Ein Tag- oder Nachtobjekt kann zur ansteuerung von Status-LEDs, Präsenzmeldern oder ähnlichem genutzt werden.

                        Tag-item: Ist "true" (also 1) von Sonnenaufgang bis Sonnenuntergang, danach ist es "false" (also 0)

                        Nacht-item: Ist "true" (also 1) von Sonnenuntergang bis Sonnenaufgang, danach ist es "false" (also 0)


                        Welches der beiden man nutzen will bleibt jedem selbst überlassen schließlich ist der Status bereits eines items eindeutig. Um Tag/Nacht-Items zu erstellen bringt smarthome.py bereits alles mit. Man kann einfach auf die smarthome.py internen items env.location.day und env.location.night aufsetzen
                        Grüße
                        Umgezogen? Ja! ... Fertig? Nein!
                        Baustelle 2.0 !

                        Kommentar


                          #13
                          Wer lesen kann.... :-D

                          Kommentar


                            #14
                            Tag/Nacht teils falsch..

                            Hallo zusammen!

                            Ich hänge mich hier kurz dran, da es thematisch gut dazu passt. Ich habe beim Neustarten von Smarthome immer wieder mal das Problem, dass env.location.night falsch gesetzt wird. Heißt, so alle 3, 4 Mal beim Neustart passiert es, dass Nacht true ist, obwohl es Tag ist. Hier das Debug Log:
                            Code:
                            2014-07-26 10:59:23,527 DEBUG    env_loc      Item env.location.sunrise = 2014-07-27 05:53:34.770399+02:00 via Logic None None -- item.py:__update:363
                            2014-07-26 10:59:23,580 DEBUG    Sonne        Item Sonne.aufgang = 05:53 via Logic None None -- item.py:__update:363
                            2014-07-26 10:59:23,617 INFO     Sonne        Sonnenaufgang: 05:53 -- sonne.py:<module>:10
                            2014-07-26 10:59:23,665 DEBUG    env_loc      Item env.location.sunset = 2014-07-26 21:03:17.252046+02:00 via Logic None None -- item.py:__update:363
                            2014-07-26 10:59:23,861 DEBUG    env_loc      Item env.location.day = False via Logic None None -- item.py:__update:363
                            Wenn ich jetzt Smarthome restarte, kommt exakt das gleiche Log, außer halt, dass diesmal der Tagwert wahrheitsgetreu auf true ist.

                            Irgendeine Idee, woran die falsche Kalkulation liegen kann? Wie gesagt, passiert nur ab und an und nach einem direkten Neustart stimmt es auch wieder. Installiert habe ich die aktuellsten Versionen von pyephem und ephem sowie von Smarthome.py

                            Kommentar


                              #15
                              Hallo,

                              irgendwas ist da komisch. Bei mir klappt das zuverlässig und ich konnte es auch nicht reproduzieren.

                              Was mich stutzig macht, ist die folgende Logzeile:
                              Code:
                               DEBUG    env_loc      Item env.location.day = False via Logic None None -- item.py:__update:363
                              Mit einer Standard-Config kann es die Logzeile direkt nach dem Systemstart nicht geben. (Es gibt nur einen Logeintrag bei Änderung => Es muss vorher True gewesen sein.) Woher kommt das?

                              Poste bitte mal ein komplettes Log, item.conf und Logiken.

                              Bis bald

                              Marcus

                              Kommentar

                              Lädt...
                              X