Ankündigung

Einklappen
Keine Ankündigung bisher.

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