Gå til innhold
  • Bli medlem
Støtt hjemmeautomasjon.no!

Python-yr hjelp


Anbefalte innlegg

Hei.

Ikke vært borte i python før, men prøver altså å få noe verdier utifra python-yr

 

Følgende kode under gir meg trykk i hpa time for time.

 

from yr.libyr import Yr
import json

weather = Yr(location_name='Norway/Telemark/Skien/Skien', forecast_link='forecast_hour_by_hour')

for forecast in weather.forecast(str):
        data = json.loads(forecast)
        pressure = data['pressure']
        hele = pressure['@value']
        print(hele)

Det er sikkert bedre måter enn å blande inn JSON, men koden gir meg følgende:

 

1005.8
1006.4
1006.6
1006.8
1006.9
1007.2
1007.5
1007.8
1008.1
1008.4
1008.4
1008.6
1008.9
1009.0
1008.8
1008.6
1008.3
1008.4
1008.1
1007.8
1007.3
1006.5
1006.2
1005.3
1004.3
1003.2
1001.8
1000.5
998.8
997.4
995.2
993.1
991.5
989.9
989.3
989.4
989.6
990.3
991.1
991.8
992.6
993.4
994.1
995.0
995.4
995.3
995.3
995.3

 

Hvordan gripe en og en rad? split() gir meg samme "rad" visning.

Endret av deve87
Lenke til kommentar
Del på andre sider

10 minutter siden, Moskus skrev:

"hele" er vel en array med verdier. Du kan iterere det gjennom en rekke med en for-løkke. Hva skal du oppnå?

"hele" er verdier for 48 timer fram i tid med trykk ute hpa.

Håper er å gripe rad for rad slik at:

 

rad1 = trykk nå

rad2 = trykk om 1 time

rad3 = trykk om 2 timer

osv.

 

deretter sende det til domoticz via json (denne biten er OK)

 

Før jeg henter @value i pressure, kommer det opp 48 slike ved print av forecast

{
    "@from": "2020-01-14T21:00:00",
    "@to": "2020-01-14T22:00:00",
    "symbol": {
        "@number": "4",
        "@numberEx": "4",
        "@name": "Cloudy",
        "@var": "04"
    },
    "precipitation": {
        "@value": "0"
    },
    "windDirection": {
        "@deg": "173.4",
        "@code": "S",
        "@name": "South"
    },
    "windSpeed": {
        "@mps": "1.6",
        "@name": "Light breeze"
    },
    "temperature": {
        "@unit": "celsius",
        "@value": "2"
    },
    "pressure": {
        "@unit": "hPa",
        "@value": "995.3"
    }
}

 

Endret av deve87
Lenke til kommentar
Del på andre sider

Ved å se nærmere på libyr.py Så det ut som at data ble generert ved brukt av "yield"

 

Så ved å ha med    ' '.join(forecast)  var det mulig å benytte slice for stringen eks [45:-5500] før [pressure], [@value] blir hentet. Slik at en derifra kan hente riktig rad utifra den og den timen.

Lenke til kommentar
Del på andre sider

Etter litt tid, ble det ferdige oppsettet litt andelenes.

Var egentlig lurest å hente data utifra tiden for hver array fra json.

Ved neste time, plusses bare 1 time på den eksisterende timen osv..

def weather_data():
        #værdata denne timen starter her
        Yr(location_name='Norway/Telemark/Skien/Skien', forecast_link='forecast_hour_by_hour')
        for forecast in weather.forecast(hex):
                tn = time.strftime("%d""T""%H")
                jsondata = json.loads(forecast)
                data = jsondata["@from"]
                regn = jsondata["precipitation"]["@value"]
                trykk = jsondata["pressure"]["@value"]
                temp = jsondata["temperature"]["@value"]
                if tn in data:
                        print("Temp nå: " + temp,"°C")
                        print("Trykk nå: " + trykk,"hpa")
                        print("Regn nå: " + regn,"mm")
                        print('\n')
                        
                        return
weather_data()

 

Endret av deve87
  • Like 3
Lenke til kommentar
Del på andre sider

Bli med i samtalen

Du kan publisere innhold nå og registrere deg senere. Hvis du har en konto, logg inn nå for å poste med kontoen din.

Gjest
Skriv svar til emnet...

×   Du har limt inn tekst med formatering.   Lim inn uten formatering i stedet

  Du kan kun bruke opp til 75 smilefjes.

×   Lenken din har blitt bygget inn på siden automatisk.   Vis som en ordinær lenke i stedet

×   Tidligere tekst har blitt gjenopprettet.   Tøm tekstverktøy

×   Du kan ikke lime inn bilder direkte. Last opp eller legg inn bilder fra URL.

×
×
  • Opprett ny...

Viktig informasjon

Vi har plassert informasjonskapsler/cookies på din enhet for å gjøre denne siden bedre. Du kan justere dine innstillinger for informasjonskapsler, ellers vil vi anta at dette er ok for deg.