Ankündigung

Einklappen
Keine Ankündigung bisher.

Aufruf von sh.sun.rise wirft einen Fehler in ephem

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

    Aufruf von sh.sun.rise wirft einen Fehler in ephem

    Hi,

    ich hatte heute morgen einen Fehler in/aus einer neu implementierten Logik. Der Versuch heute morgen die Zeit der nächsten astronomischen Morgendämmerung zu ermitteln, warf folgenden Trace:

    Code:
    2015-02-09 07:52:04 ERROR    mysun        Logic: mysun, File: /usr/local/lib/python3.2/dist-packages/ephem/__init__.py, Line: 405, Method: visit_antitransit, Exception: 'Sun' is still above the horizon at 2015/2/9 23:33:59
    Traceback (most recent call last):
      File "/usr/local/smarthome/lib/scheduler.py", line 327, in _task
        exec(obj.bytecode)
      File "/usr/local/smarthome/logics/mysun.py", line 19, in <module>
        sh.mysun.dusk.astronomical(sh.sun.rise(-18).astimezone(sh.tzinfo()).strftime("%H:%M:%S"))
      File "/usr/local/smarthome/lib/orb.py", line 63, in rise
        next_rising = self._obs.next_rising(self._orb, use_center=center).datetime()
      File "/usr/local/lib/python3.2/dist-packages/ephem/__init__.py", line 478, in next_rising
        return self._riset_helper(body, start, use_center, True, False)
      File "/usr/local/lib/python3.2/dist-packages/ephem/__init__.py", line 449, in _riset_helper
        d0 = visit_antitransit()
      File "/usr/local/lib/python3.2/dist-packages/ephem/__init__.py", line 405, in visit_antitransit
        % (body.name, d))
    ephem.AlwaysUpError: 'Sun' is still above the horizon at 2015/2/9 23:33:59
    Auslöser war wohl sh.sun.rise(-18).

    Einen AlwaysUpError aus ephem hätte ich vieleicht im Sommer in den weissen Nächten erwartet, aber im Winter?

    Mache ich einen Denkfehler oder ist das ein Bug in ephem?
    Viele Grüße
    Martin

    There is no cloud. It's only someone else's computer.

    #2
    Hallo,

    bei mir taucht seit kurzem ein ähnlicher Fehler auf. Es scheint einen Fehler im ephem Modul zu geben.

    Code:
     [FONT=&quot]2015-02-09 20:15:30 ERROR    env_loc      Logic: env_loc, File: /usr/local/lib/python3.2/dist-packages/ephem/__init__.py, Line: 379, Method: visit_transit, Exception: 'Sun' transits below the horizon at 2015/2/10 11:32:02[/FONT]
      [FONT=&quot]Traceback (most recent call last):[/FONT]
      [FONT=&quot]  File "/usr/smarthome/lib/scheduler.py", line 341, in _task[/FONT]
      [FONT=&quot]    exec(obj.bytecode)[/FONT]
      [FONT=&quot]  File "/usr/smarthome/lib/env/location.py", line 13, in <module>[/FONT]
      [FONT=&quot]    day = sh.sun.rise(-4).day != sh.sun.set(-4).day[/FONT]
      [FONT=&quot]  File "/usr/smarthome/lib/orb.py", line 65, in rise[/FONT]
      [FONT=&quot]    next_rising = self._obs.next_rising(self._orb, use_center=center).datetime()[/FONT]
      [FONT=&quot]  File "/usr/local/lib/python3.2/dist-packages/ephem/__init__.py", line 457, in next_rising[/FONT]
      [FONT=&quot]    return self._riset_helper(body, start, use_center, True, False)[/FONT]
      [FONT=&quot]  File "/usr/local/lib/python3.2/dist-packages/ephem/__init__.py", line 435, in _riset_helper[/FONT]
      [FONT=&quot]    d1 = visit_transit()[/FONT]
      [FONT=&quot]  File "/usr/local/lib/python3.2/dist-packages/ephem/__init__.py", line 379, in visit_transit[/FONT]
      [FONT=&quot]    % (body.name, d))[/FONT]
      [FONT=&quot]ephem.NeverUpError: 'Sun' transits below the horizon at 2015/2/10 11:32:02[/FONT]
    Gruß
    Alex

    Kommentar


      #3
      Hi,

      welche Versionen kommen denn zum Einsatz?
      • OS
      • Python 3.2.?
      • ephem


      Bis bald

      Marcus

      Kommentar


        #4
        Hier sind die Versionen:

        • OS ==> Debian (wheezy) 7.8
        • Python 3.2.? ==> 3.2.3
        • ephem ==> 3.7.5.3
        Viele Grüße
        Martin

        There is no cloud. It's only someone else's computer.

        Kommentar


          #5
          Bei mir sind es folgende Versionen:
          OS ==> Debian 7.6
          Python ==> Python 3.2.3
          ephem ==> 3.7.5.1

          Gruß
          Alex

          Kommentar


            #6
            Hi,

            bis auf das Python 3.2 sieht das ja einigermaßen aktuell aus.

            Könnt Ihr bitte mal die logic.conf, Logik und oder item.conf posten, mit der es zu dem Problem kommt, dann probiere ich das mal nachzustellen.

            Bis bald

            Marcus

            Kommentar


              #7
              Hi Marcus,

              hier ist meine logic.conf ([mysun] ist der interessante Teil):
              Code:
              [heizung]
                  filename = heizung.py
                  watch_item = wohnung.*.heizung.komfort | wohnung.*.heizung.nacht
              
              [hueleuchten]
                  filename = hueleuchten.py
                  watch_item = wohnung.*.*.onoff | wohnung.terrasse.wuerfel_schalter
              
              [raffstores]
                  filename = raffstores.py
                  watch_item = wohnung.schlafen.logik_trigger_raffstores | mysun.day.nautical | mysun.night.nautical
                  crontab = init
                  
              [mysun]
                  filename = mysun.py
                  crontab = init | sunrise+1m | sunset+1m | sunrise-5 | sunset-7 | sunset-13
                  cycle = 1800
              und hier ist die Logik mysun.py dazu:
              Code:
              #!/usr/bin/env python3
              # logics/mysun.py
              
              if sh.sun:
                  sh.mysun.sunrise(sh.sun.rise().astimezone(sh.tzinfo()).strftime("%H:%M:%S"))
                  sh.mysun.sunset(sh.sun.set().astimezone(sh.tzinfo()).strftime("%H:%M:%S"))
              
                  sh.mymoon.moonrise(sh.moon.rise().astimezone(sh.tzinfo()).strftime("%H:%M:%S"))
                  sh.mymoon.moonset(sh.moon.set().astimezone(sh.tzinfo()).strftime("%H:%M:%S"))
                  sh.mymoon.moonphase(sh.moon.phase())
                  sh.mymoon.moonlight(sh.moon.light())
                  
                  sh.mysun.dusk(sh.sun.rise(-4).astimezone(sh.tzinfo()).strftime("%H:%M:%S"))
                  sh.mysun.dawn(sh.sun.set(-4).astimezone(sh.tzinfo()).strftime("%H:%M:%S"))
                  sh.mysun.dusk.civil(sh.sun.rise(-6).astimezone(sh.tzinfo()).strftime("%H:%M:%S"))
                  sh.mysun.dawn.civil(sh.sun.set(-6).astimezone(sh.tzinfo()).strftime("%H:%M:%S"))
                  sh.mysun.dusk.nautical(sh.sun.rise(-12).astimezone(sh.tzinfo()).strftime("%H:%M:%S"))
                  sh.mysun.dawn.nautical(sh.sun.set(-12).astimezone(sh.tzinfo()).strftime("%H:%M:%S"))
                  sh.mysun.dusk.astronomical(sh.sun.rise(-18).astimezone(sh.tzinfo()).strftime("%H:%M:%S"))
                  sh.mysun.dawn.astronomical(sh.sun.set(-18).astimezone(sh.tzinfo()).strftime("%H:%M:%S"))
              
                  # setting day and night
                  day = sh.sun.rise(-4).day != sh.sun.set(-4).day
                  sh.mysun.day(day)
                  sh.mysun.night(not day)
                  
                  # setting day and night (civil)
                  day = sh.sun.rise(-6).day != sh.sun.set(-6).day
                  sh.mysun.day.civil(day)
                  sh.mysun.night.civil(not day)
                  
                  # setting day and night (nautical)
                  day = sh.sun.rise(-12).day != sh.sun.set(-12).day
                  sh.mysun.day.nautical(day)
                  sh.mysun.night.nautical(not day)
              Danke für die Mühe!
              Viele Grüße
              Martin

              There is no cloud. It's only someone else's computer.

              Kommentar


                #8
                Hi Martin,

                ich brauche noch die item.conf für mysun/mymoon, sonst fliegt mir die Logik um die Ohren.

                Bis bald

                Marcus

                Kommentar


                  #9
                  Sorry,

                  hier isse:
                  Code:
                  [mysun]
                  
                      [[day]]
                          type = bool
                          visu_acl = ro
                          [[[civil]]]
                              type = bool
                              visu_acl = ro
                          [[[nautical]]]
                              type = bool
                              visu_acl = ro
                      
                      [[night]]
                          type = bool
                          visu_acl = ro
                          [[[civil]]]
                              type = bool
                              visu_acl = ro
                          [[[nautical]]]
                              type = bool
                              visu_acl = ro
                      
                      [[sunrise]]
                          type = str
                             visu_acl = ro
                  
                      [[dusk]]
                          type = str
                          visu_acl = ro
                          [[[civil]]]
                              type = str
                              visu_acl = ro
                          [[[nautical]]]
                              type = str
                              visu_acl = ro
                          [[[astronomical]]]
                              type = str
                              visu_acl = ro
                      
                      [[sunset]]
                          type = str
                             visu_acl = ro
                  
                      [[dawn]]
                          type = str
                          visu_acl = ro
                          [[[civil]]]
                              type = str
                              visu_acl = ro
                          [[[nautical]]]
                              type = str
                              visu_acl = ro
                          [[[astronomical]]]
                              type = str
                              visu_acl = ro
                      
                  
                  [mymoon]
                  
                         [[moonrise]]
                          type = str
                             visu_acl = ro
                          
                         [[moonset]]
                             type = str
                             visu_acl = ro
                          
                         [[moonphase]]
                             type = num
                             visu_acl = ro
                              
                         [[moonlight]]
                             type = num
                             visu_acl = ro
                  Viele Grüße
                  Martin

                  There is no cloud. It's only someone else's computer.

                  Kommentar


                    #10
                    Hi Martin,

                    danke, ich konnte schon einen Fehler finden.
                    Der hat aber nichts mit ephem zu tun. :-)
                    Dusk ist die Abenddämmerung und Dawn die Morgendämmerung.
                    "From Dusk till Dawn" => Vampire wollen tagsüber eher schlafen.

                    Aber auch sonst bekomme ich momentan keinen Fehler geworfen. Mal sehen, ich lasse das jetzt mal ein paar Tage laufen.

                    Bis bald

                    Marcus

                    Kommentar


                      #11
                      Hi Marcus,

                      ich nutze keine eigenen zusätzlichen Logiken sondern nur das standard
                      Code:
                      sh.env.location.night()
                      als Abfrage in einer Logik. Das Env-Problem konnte ich auch nur sporadisch beobachten. Momentan taucht es bei mir auch nicht auf.

                      Viele Grüße
                      Alex

                      Kommentar


                        #12
                        Hallo Alex,

                        stimmt, jetzt sehe ich es auch in der Exception.

                        Das ist aber interessant, das bedeutet ja, das alle davon betroffen sein müssten.
                        Ich habe es aber auch noch nicht gesehen.

                        Gibt es noch jemanden der das Problem hat(te)?

                        Bis bald

                        Marcus

                        Kommentar


                          #13
                          Ja, aber nur einmal in der Visu gesehen und dann das Log verbummelt... Hatte es auf die UZSU geschoben, später aber gemert dass keine mehr aktiv war.
                          Umgezogen? Ja! ... Fertig? Nein!
                          Baustelle 2.0 !

                          Kommentar


                            #14
                            Hallo zusammen,

                            ich hatte den Fehler auch schon im log, kann momentan aber leider keine Vorgehensweise nennen mit der man das Problem reproduzieren kann. Ich habe mir das Log vom damaligen Fehler aber gesichert:

                            Code:
                            2015-01-02 17:18:57,185 ERROR    env_loc      Logic: env_loc, File: /usr/local/lib/python3.2/dist-packages/ephem/__init__.py, Line: 387, Method: visit_antitransit, Exception: 'Sun' is still above the horizon at 2015/1/2 23:32:58 -- scheduler.py:_task:334
                              Traceback (most recent call last):
                                File "/usr/smarthome/lib/scheduler.py", line 327, in _task
                                  exec(obj.bytecode)
                                File "/usr/smarthome/lib/env/location.py", line 13, in <module>
                                  day = sh.sun.rise(-6).day != sh.sun.set(-6).day
                                File "/usr/smarthome/lib/orb.py", line 63, in rise
                                  next_rising = self._obs.next_rising(self._orb, use_center=center).datetime()
                                File "/usr/local/lib/python3.2/dist-packages/ephem/__init__.py", line 457, in next_rising
                                  return self._riset_helper(body, start, use_center, True, False)
                                File "/usr/local/lib/python3.2/dist-packages/ephem/__init__.py", line 431, in _riset_helper
                                  d0 = visit_antitransit()
                                File "/usr/local/lib/python3.2/dist-packages/ephem/__init__.py", line 387, in visit_antitransit
                                  % (body.name, d))
                              ephem.AlwaysUpError: 'Sun' is still above the horizon at 2015/1/2 23:32:58
                            Sieht dem Log von Alex ziemlich ähnlich.

                            Gruß,
                            Henning


                            Kommentar


                              #15
                              Zitat von mknx Beitrag anzeigen
                              "From Dusk till Dawn" => Vampire wollen tagsüber eher schlafen.
                              ok, ich oute mich als Vampir

                              Ich habe den Fehler gestern auch für den Mond bekommen:

                              Code:
                              2015-02-11 08:49:17 ERROR    env_loc      Logic: env_loc, File: /usr/local/lib/python3.2/dist-packages/ephem/__init__.py, Line: 405, Method: visit_antitransit, Exception: 'Moon' is still above the horizon at 2015/2/11 16:57:17
                              Traceback (most recent call last):
                                File "/usr/local/smarthome/lib/scheduler.py", line 327, in _task
                                  exec(obj.bytecode)
                                File "/usr/local/smarthome/lib/env/location.py", line 9, in <module>
                                  sh.env.location.moonset(sh.moon.set().astimezone(sh.tzinfo()))
                                File "/usr/local/smarthome/lib/orb.py", line 79, in set
                                  next_setting = self._obs.next_setting(self._orb).datetime()
                                File "/usr/local/lib/python3.2/dist-packages/ephem/__init__.py", line 483, in next_setting
                                  return self._riset_helper(body, start, use_center, False, False)
                                File "/usr/local/lib/python3.2/dist-packages/ephem/__init__.py", line 451, in _riset_helper
                                  d1 = visit_antitransit()
                                File "/usr/local/lib/python3.2/dist-packages/ephem/__init__.py", line 405, in visit_antitransit
                                  % (body.name, d))
                              ephem.AlwaysUpError: 'Moon' is still above the horizon at 2015/2/11 16:57:17
                              Viele Grüße
                              Martin

                              There is no cloud. It's only someone else's computer.

                              Kommentar

                              Lädt...
                              X