Ankündigung

Einklappen

Serverwartung 21.2.



Am 21.2. im Laufe des späten Abends wird eine Serverwartung durchgeführt. Das Forum ist dadurch für gut zwei Stunden nicht erreichbar.
Es wird eine Wartungsseite geschaltet.

Mehr anzeigen
Weniger anzeigen

wunderground Logik

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

    #16
    Hehe, die Begrifflichkeiten In Wunderground stehen ja auch Wetterstationen rum.. drum hat mich das verwirrt. Web ist also Wunderground, Wetterstation ist eigene KNX-Station?

    Und ja, das mit den nicht vorhandenen Items hab ich bei der von mir genutzten Wunderground-Station gecheckt.. klappt inzwischen so gut wie gut

    Mit Vorschau meinte ich Wettervorhersage

    Kommentar


      #17
      Hallo,

      ich bekomme seit neustem bei der wunderground Logic gelegentlich folgenden Fehler:

      Code:
      2014-10-15 09:02:24 ERROR    wetter       Logic: wetter, File: /usr/lib/python3.2/socket.py, Line: 287, Method: readinto, Exception: timed out
      Traceback (most recent call last):
        File "/usr/smarthome/lib/scheduler.py", line 327, in _task
          exec(obj.bytecode)
        File "/usr/smarthome/logics/wunderground.py", line 20, in <module>
          xml = sh.tools.fetch_url(url)
        File "/usr/smarthome/lib/tools.py", line 78, in fetch_url
          resp = conn.getresponse()
        File "/usr/lib/python3.2/http/client.py", line 1052, in getresponse
          response.begin()
        File "/usr/lib/python3.2/http/client.py", line 346, in begin
          version, status, reason = self._read_status()
        File "/usr/lib/python3.2/http/client.py", line 308, in _read_status
          line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
        File "/usr/lib/python3.2/socket.py", line 287, in readinto
          return self._sock.recv_into(b)
      socket.timeout: timed out
      hat jemand eine Idee woran das liegen könnte?

      Hier noch meine Logic:

      Code:
      #!/usr/bin/python3.2
      
      import xml.etree.ElementTree as ET
      from urllib.request import urlopen
      
      weatheritems=sh.Wetter
      url=weatheritems.wunderground_url()
      
      def clean(v):
        import re
        try: 
         non_decimal = re.compile(r'[^\d.]+')
         w=non_decimal.sub('', v)
         if v.find('%')>0:
               w=w/100
         return w
        except:
         w=-99999
      
      xml = sh.tools.fetch_url(url)
      tree=ET.fromstring(xml)
      
      for item in weatheritems:
       try:
        s=item.conf['xmlstring']
        if len(s)>0:
         logger.debug('[Wunderground] Behandle jetzt Item ' +str(item)+' mit xmlstring '+s)
         val=tree.findall('*/'+s)
         if len(val)==0:
           val=tree.findall(s)
         if len(val)>0:
           val=val[0].text
           logger.debug('[Wunderground] Wert '+val+ ' in xml gefunden')
           val=clean(val)
           if val!=-99999:
             item(val)
             logger.debug(val)
         else:
          logger.warning('Wunderground returned empty value for' + s)    
       except KeyError:
         logger.debug('[Wunderground] xmlstring is empty or not existent')
         pass

      Kommentar


        #18
        Steht doch da:

        Timed out.
        Beim Laden der wunderground url

        Kommentar


          #19
          Muss die Logik noch getriggert werden?
          Wie ist die Aufrufbeziehung, hab es leider nicht kapiert?

          vielen Dank

          Kommentar


            #20
            1) ja
            2) verstehe ich nicht

            Kommentar


              #21
              OK.

              Dann werde ich mal einen zeitlichen Trigger konfigurieren und dann hat sich auch Frage 2 geklärt. Hatte vermutet, dass es eine Aufrufbeziehung aus dem Items auf die Logik gibt (die ich jedoch nicht gefunden hatte).

              vielen Dank und super Idee mit wunderground

              Kommentar


                #22
                Ich bekomme mit dem letzten Skript leider immer folgende Meldung:

                [Wunderground] xmlstring is empty or not existent -- wetter.py:<module>:52

                Habe Testweise folgende Items konfiguriert:

                [Wetter]
                [[wunderground_url]]
                type = str
                value = Weather Underground
                [[Temperatur]]
                [[[Web]]]
                type = num
                visu_acl = yes
                xmlstring = temp_c
                knx_send = 7/7/16
                knx_dpt = 9
                sqlite = true

                Kommentar


                  #23
                  Hallo,

                  hast du diese Version von der Logik verwendet?

                  Gruß,
                  Hendrik
                  Angehängte Dateien

                  Kommentar


                    #24
                    Hallo Hendrik,

                    mit dieser Version klappt es. Tausend Dank, echt super.

                    viele Grüße

                    Kommentar


                      #25
                      plugin

                      Hi,

                      wo packe ich den Code denn hin ?
                      in logics ? und wie aktiviere ich es ? in logic.conf mittels cycle ?

                      Gruß Wil

                      Kommentar


                        #26
                        Ja ich hab es als regelmäßige logic mit cycle konfiguriert. Kann mein Beispiel heute Abend gerne posten.

                        Kommentar


                          #27
                          Die Debug-Ausgabe müsste man noch sauber formulieren..
                          Statt zB logger.debug('[Wunderground] Behandle jetzt Item ' +str(item)+' mit xmlstring '+s)

                          sollte es wohl heißen:
                          logger.debug('[Wunderground] Behandle jetzt Item {0} mit xmlstring {1}'.format(item,s))

                          Das Einbinden in die conf zB so:
                          Code:
                          [Wunderground]
                          filename = wunderground.py
                          visu_acl = yes
                          crontab = init
                          cycle = 600

                          Kommentar


                            #28
                            Hi, wollte die logik integrieren und bekomme aber folgenden fehler:
                            Code:
                            2014-12-15 13:17:10,941 ERROR    Wunderground Logic: Wunderground, File: /usr/smarthome/logics/wunderground.py, Line: 45, Method: <module>, Exception: Can't convert 'NoneType' object to str implicitly -- 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/logics/wunderground.py", line 45, in <module>
                                logger.debug('[Wunderground] Wert '+val+ ' in xml gefunden')
                            kann mir da jemand helfen?

                            Danke

                            Kommentar


                              #29
                              Das hier sollte klappen..
                              Code:
                              #!/usr/bin/python3.2
                              
                              import xml.etree.ElementTree as ET
                              from urllib.request import urlopen
                              
                              weatheritems=sh.Wetter
                              url=weatheritems.wunderground_url()
                              
                              
                              
                              def clean(v):
                                import re
                                try: 
                                 non_decimal = re.compile(r'[^\d.]+')
                                 w=non_decimal.sub('', v)
                                 if v.find('%')>0:
                                       w=w/100
                                 return w
                                except:
                                 w=-99999
                              
                              xml = sh.tools.fetch_url(url)
                              tree=ET.fromstring(xml)
                              
                              
                              
                              for item in weatheritems:
                               try:
                                s=item.conf['xmlstring']
                                if len(s)>0:
                                 logger.debug('[Wunderground] Behandle jetzt Item {0} mit xmlstring {1}'.format(item,s))
                                 val=tree.findall('*/'+s)
                                 if len(val)==0:
                                   val=tree.findall(s)
                                 if len(val)>0:
                                   val=val[0].text
                                   logger.debug('[Wunderground] Wert {0} in xml gefunden'.format(val))
                                   val=clean(val)
                                   if val.isdigit():
                                      val=int(val)
                                   if val!=-99999:
                                     item(val)
                                     logger.debug(val)
                                 else:
                                  logger.warning('Wunderground returned empty value for {0}'.format(s))    
                               except KeyError:
                                 logger.debug('[Wunderground] xmlstring is empty or not existent')
                                 pass

                              Kommentar


                                #30
                                leider nein, diesmal ein anderer fehler.

                                Ich habe nur im Ordner logics das Programm rein kompiert, in der etc/logics.conf diese hinzugefügt und die items laut vorlage reinkopiert.
                                Habe ich was übersehen?

                                Code:
                                2014-12-16 14:09:04,932 DEBUG    Wunderground [Wunderground] Behandle jetzt Item Wetter.Windchill mit xmlstring windchill_c -- wunderground.py:<module>:31
                                2014-12-16 14:09:04,940 DEBUG    Wunderground [Wunderground] Wert None in xml gefunden -- wunderground.py:<module>:37
                                2014-12-16 14:09:04,953 ERROR    Wunderground Logic: Wunderground, File: /usr/smarthome/logics/wunderground.py, Line: 39, Method: <module>, Exception: 'NoneType' object has no attribute 'isdigit' -- 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/logics/wunderground.py", line 39, in <module>
                                    if val.isdigit():
                                AttributeError: 'NoneType' object has no attribute 'isdigit'

                                Kommentar

                                Lädt...
                                X