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

Anbefalte innlegg

Skrevet (endret)

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
Skrevet
1 minutt siden, deve87 skrev:

Hvordan gripe en og en rad?

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

Skrevet (endret)
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
Skrevet

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.

Skrevet (endret)

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

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.