Ankündigung

Einklappen
Keine Ankündigung bisher.

Wetterdaten auslesen

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

    Wetterdaten auslesen

    Hallo
    In unserem Dorf steht eine Wetterstation von der Agrarmetereologie Bayern. Dazu gibt es einen Link mit einigen interessanten Details. Leider gibt es dazu aber keine Api, lediglich einen Link zum Einbau in die Homepage.
    Kann ich mittels sh.py die Werte aus dem Link in Items speichern?

    Infos gibt es hier: http://www.wetter-by.de/Internet/AM/...&p3=3Q21XMCF1Z

    Danke für die Unterstützung.

    Grüße
    Martin
    ---
    Martin

    #2
    Hi,

    du müsstest ein Plugin erstellen, welches die HTML Seite mit Python parsed. Das geht zB. mit dem Python Modul:

    https://docs.python.org/3.4/library/...=html%20parser

    Kommentar


      #3
      Oh je, ob das was wird. Naja, ich versuch mal meiner ruhigen Minute, was ich da zusammenbringe. ;-)
      ---
      Martin

      Kommentar


        #4
        https://github.com/smarthomeNG/smart...ugin-5-minutes

        Und schau Dir die bestehenden an, bspw. mein tankerkoenig Plugin, da greife ich nur URLs ab die JSON Code liefern.. In Deinem Fall wirst Du aber HTML parsen müssen.

        Im Developermode vom Firefox sieht man, dass er per JS mehrere URLs zieht:
        http://217.5.174.45/cgi-bin/wetterhp...7&css=1&lid=18
        http://217.5.174.45/cgi-bin/wetterhp...=2&ppid=63&d=1
        http://217.5.174.45/cgi-bin/wetterhp...=3&ppid=63&d=2

        Die musste jetzt halt zerlegen.
        Zuletzt geändert von psilo; 27.06.2016, 17:54.

        Kommentar


          #5
          martinb07 hast du dich da schon ran gewagt?

          Kommentar


            #6
            Hi Onkelandy
            Leider gab es noch keine ruhige Minute, in der ich mich an das Thema wagen konnte. :-(
            Sorry.
            ---
            Martin

            Kommentar


              #7
              ich schaue mir das auch mal an, habe eine station direkt bei mir im ort.. wäre also praktisch

              Kommentar


                #8
                wobei ich gerade sehe, dass bei meiner station bspw bei den letzten 2h immer "k.A." steht.. ist das nur bei mir so?

                Kommentar


                  #9
                  anbei eine kleine Logik zum Aufbauen

                  Items:
                  Code:
                  [wetter_by]
                     [[temperatur]]
                        type = num
                        visu_acl = ro
                     [[niederschlag]]
                        type = num
                        visu_acl = ro
                     [[wind]]
                        type = num
                        visu_acl = ro
                     [[luftfeuchte]]
                        type = num
                        visu_acl = ro
                  Logik (crontab = 30 * * * , also immer um "halb", da stündliches Update)
                  Code:
                  import requests
                  import re
                  from xml.dom import minidom
                  
                  page = requests.get('http://dlr45.aspdienste.de/cgi-bin/sinfoam.pl?c=07&nid=01&lid=106')
                  #rex = re.compile(r'<table.*?>(.*?)</table>',re.S|re.M)#
                  match = re.findall(r'<tr.*?>(.*?)</tr>', page.text)
                  
                  if match:
                      i = 0
                      for line in match:
                          if i == 0:
                              pass
                              #date = re.findall(r"\d\d\.\d\d\.\d\d\d\d", match[0])[0].split('.') #11.11.2016, 06:00 - 07:00 Uhr
                              #time = re.findall(r"\d\d\:\d\d", match[0])[1].split(':')
                              #date = "{}-{}-{} {}:{}".format(date[2], date[1], date[0], time[0], time[1])
                              #logger.debug("Date: "+date)
                          if i == 1:
                              td_match = re.findall(r'<td.*?>(.*?)</td>', line)
                              temperature = td_match[1]
                              sh.wetter_by.temperatur(re.findall("\d+\.\d+", temperature)[0])
                              logger.debug("Temperature: "+re.findall("\d+\.\d+", temperature)[0]+"°C")
                          if i == 2:
                              td_match = re.findall(r'<td.*?>(.*?)</td>', line)
                              niederschlag = td_match[1]
                              sh.wetter_by.niederschlag(re.findall("\d+\.\d+", niederschlag)[0])
                              logger.debug("Niederschlag: "+re.findall("\d+\.\d+", niederschlag)[0]+"mm")
                          if i == 3:
                              td_match = re.findall(r'<td.*?>(.*?)</td>', line)
                              wind = td_match[1]
                              sh.wetter_by.wind(re.findall("\d+\.\d+", wind)[0])
                              logger.debug("Wind: "+re.findall("\d+\.\d+", wind)[0]+"m/s")
                          if i == 4:
                              td_match = re.findall(r'<td.*?>(.*?)</td>', line)
                              luftfeuchte = td_match[1]
                              sh.wetter_by.luftfeuchte(re.findall("\d\d", luftfeuchte)[0])
                              logger.debug("Luftfeuchte: "+re.findall("\d\d", luftfeuchte)[0]+"%")
                          i = i+1
                  Zuletzt geändert von psilo; 11.11.2016, 12:44.

                  Kommentar

                  Lädt...
                  X