Ejemplo n.º 1
0
def get_weather():
    weather_df = Yr(location_name='Norge/Trøndelag/Trondheim/Trondheim')
    now_df = weather_df.now() # henter værdata fra Yr
    temp_val = int(pd.DataFrame(now_df)['temperature']['@value']) # finner luft temeperaturen
    wind_val = float(pd.DataFrame(now_df)['windSpeed']['@mps']) # finner vindfart
#    wind_dir = float(pd.DataFrame(now_df)['windDirection']['@deg'])
    precipitation_val = float(pd.DataFrame(now_df)['precipitation']['@value']) # finner regn
#Sends temp, windspeed and precipitation to CoT

    token = 'eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiI1NzUxIn0.DeRcDo1IRe0fFV_IEw8WyUbEd02hwzWikjARXvc2oEE'
    
    temp_key = '12583'
    temp_data = {'Key': temp_key, 'Value': temp_val, 'Token': token} # sender lufttemp til CoT
    t_put = requests.put('https://circusofthings.com/WriteValue', 
             data = json.dumps(temp_data), 
             headers={'Content-Type': 'application/json'})
    
    wind_key = '8760'
    wind_data = {'Key': wind_key, 'Value': wind_val, 'Token': token} # sender vindfart til CoT
    w_put = requests.put('https://circusofthings.com/WriteValue', 
             data = json.dumps(wind_data), 
             headers={'Content-Type': 'application/json'})
    
    precipitation_key = '6464'
    precipitation_data = {'Key': precipitation_key, 'Value': precipitation_val, 'Token': token} # sender regn til CoT
    p_put = requests.put('https://circusofthings.com/WriteValue', 
             data = json.dumps(precipitation_data), 
             headers={'Content-Type': 'application/json'})
#sende data til cot
Ejemplo n.º 2
0
def weather_data():
    # Henter temperaturen og værtypen fra yr for videre bruk for å finne værfaktor og modul effektivitet
    weather_json = Yr(location_name="Norge/Trøndelag/Trondheim/Trondheim"
                      )  # henter vær data fra Yr
    now_json = weather_json.now()
    temp_now = int(
        pd.DataFrame(now_json)["temperature"]["@value"])  # temperatur
    cloud_typ = (pd.DataFrame(now_json)["symbol"]["@name"])  # skydekke

    return [temp_now, cloud_typ]
Ejemplo n.º 3
0
 def __init__(self, codigo):
     site       = locationSite(codigo)
     weather    = Yr(site)
     main       = weather.now()
     if (main):
         self.wdb.setMeasure('pressure'        , main['pressure']     ['@value']    )
         self.wdb.setMeasure('temperature'     , main['temperature']  ['@value']    )
         self.wdb.setMeasure('weatherMain'     , main['symbol']       ['@name']     )
         self.wdb.setMeasure('windSpeed'       , float(main['windSpeed']    ['@mps']) * 3.6)
         self.wdb.setMeasure('windMain'        , main['windSpeed']     ['@name']     )
         self.wdb.setMeasure('windDegrees'     , main['windDirection']['@deg']      )
         self.wdb.setMeasure('rainProbability' , main['precipitation']['@value']    )
         self.wdb.setMeasureClean()
Ejemplo n.º 4
0
class YrNow(object):
    def __init__(self, city):
        self.weather = Yr(location_name=city)
        self.now = self.weather.now()
        self.symbol = self.now['symbol']['@var']
        self.precipitation = self.now['precipitation']['@value']
        self.windDirection = self.now['windDirection']['@code']
        self.windSpeed = self.now['windSpeed']['@mps']
        self.temperature = self.now['temperature']['@value']
        self.pressure = self.now['pressure']['@value']
        if self.windDirection in wind_direction_arrow.keys():
            self.wind_direction_arrow_icon = wind_direction_arrow[
                self.windDirection]
        else:
            self.wind_direction_arrow_icon = ''

    def __str__(self):
        return f"Сейчас 🌡 {self.temperature}°C, Давление {self.pressure}, ☂️ {self.precipitation}мм, "\
               f"🌬 {self.wind_direction_arrow_icon} {self.windSpeed}м/с\n\n"
Ejemplo n.º 5
0
    def importForcastTodayFromYrInJson(self, place_string):
        """Import 8todays forcast from Yr.no in json file.

        Parameters:
        place_string (string): 
        The place to get the forecast from. 
        Format: "Land/Fylke/Kommune/Stedsnavn/"
        Example: "Norge/Trøndelag/Trondheim/Trondheim/"

        Returns:
        genarator:forecast 

        """

        weather_import = Yr(location_name=place_string)
        weather_now_json = weather_import.now(as_json=True)
        weather_now = json.loads(weather_now_json)
        print(weather_now)
        return weather_now
Ejemplo n.º 6
0
def heating_house():  #assume 2 panel ovens (Living room and hallway)
    weather_df = Yr(location_name='Norge/Trøndelag/Trondheim/Trondheim')
    now_df = weather_df.now()
    date = dt.datetime.now().strftime('%d-%m-%y')  # henter vær og dato
    temp_df = pd.read_csv('temp_csv/Heating_Room.csv',
                          index_col='Date').at[date,
                                               'Temp']  # henter temperatur
    temp_val = sum(temp_df) / len(temp_df)
    temp_val = int(pd.DataFrame(now_df)['temperature']
                   ['@value'])  # finner lufttemperatur som heltall

    if temp_val < 22:  # finner ut hvor mye energi som brukes til oppvarming
        energy_house = (room_heating * (22 - temp_val)) * 2
    else:
        energy_house = 0
    if temp_val < 28:
        energy_bath = (room_heating * (28 - temp_val))
    else:
        energy_bath = 0
    return [energy_house, energy_bath]
Ejemplo n.º 7
0
def yr(what, county, municipality, name):
    """ Downloads data from yr.no
    @todo: Should fix units
    @todo: Should be based on locations and/or clubs default location in clubs '/yr/wind/375-F'
    """

    yrpath = ("Norge/%s/%s/%s" % (county, municipality, name))
    weather = Yr(location_name=yrpath)

    if what == 'now':

        return weather.now(as_json=True)

    elif what == 'forecast':
        return jsonify(**weather.dictionary['weatherdata']['forecast'])

    elif what == 'wind':
        wind_speed = dict()
        wind_speed['wind_forecast'] = [{'from': forecast['@from'], 'to': forecast['@to'], '@unit': 'knots', 'speed': round(float(forecast['windSpeed']['@mps']) * 1.943844, 2)} for forecast in
                                       weather.forecast()]
        return jsonify(**wind_speed)
Ejemplo n.º 8
0
def yr(what, county, municipality, name):
    """ Downloads data from yr.no
    @todo: Should fix units
    @todo: Should be based on locations and/or clubs default location in clubs '/yr/wind/375-F'
    """

    yrpath = ("Norge/%s/%s/%s" % (county, municipality, name))
    weather = Yr(location_name=yrpath)

    if what == 'now':

        return weather.now(as_json=True)

    elif what == 'forecast':
        return jsonify(**weather.dictionary['weatherdata']['forecast'])

    elif what == 'wind':
        wind_speed = dict()
        wind_speed['wind_forecast'] = [{'from': forecast['@from'], 'to': forecast['@to'], 'unit': 'knots',
                                        'speed': round(float(forecast['windSpeed']['@mps']) * 1.943844, 2)} for forecast
                                       in
                                       weather.forecast()]
        return jsonify(**wind_speed)
Ejemplo n.º 9
0
#!/usr/bin/python3

# pip3 install python-yr

from yr.libyr import Yr

weather = Yr(location_name='Germany/Berlin/Berlin')
data = weather.now()

weather = data['symbol']['@name']
temperature = data['temperature']['@value']

print("<fc=#FFFFFF>%s %s °C</fc>" % (weather, temperature))
Ejemplo n.º 10
0
def heating_bedroom():
    # Henter værdata for tiden akkurat nå fra yr.
    weather_df = Yr(location_name='Norge/Trøndelag/Trondheim/Trondheim')
    now_df = weather_df.now()

    # Trekker ut utetemperaturen som skal brukes til å regne strømforbruk.
    temp_val = int(pd.DataFrame(now_df)['temperature']['@value'])

    # Definerer oppvarmingskoeffisient i kWh/(C*h).
    # Brukes for å finne strømforbruket for den gjellende timen basert på utetemp.
    room_heating = 0.0146  #kWh/(C*h)

    # Definerer den gjellenge dagen
    date = dt.datetime.now().strftime("%d-%m-%y")
    # Definerer den gjellende timen
    hour = int(dt.datetime.now().strftime("%H"))

    # Definerer signal key for termostat temperaturen og hjemme status som hentes fra CoT.
    temp_key = '6074'
    room_key = '15089'
    # Definerer token for å hente info fra CoT
    token = 'eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiI1NzUxIn0.DeRcDo1IRe0fFV_IEw8WyUbEd02hwzWikjARXvc2oEE'

    # Henter ut termostat verdien celsius til soverommet fra CoT
    # og lagrer verdien i en variabel som skal brukes for å finne strømforbruket.
    t = requests.get('https://circusofthings.com/ReadValue',
                     params={
                         'Key': temp_key,
                         'Token': token
                     })
    temp_room = round(json.loads(t.content)['Value'])

    # Henter ut hjemme status verdien til soverommet fra CoT
    # og lagrer verdien i en variabel som skal brukes for å finne strømforbruket. (1 = hjemme, 0 = borte)
    r = requests.get('https://circusofthings.com/ReadValue',
                     params={
                         'Key': room_key,
                         'Token': token
                     })
    ishome = json.loads(r.content)['Value']

    # Finner strømforbruket på dagen (kl. 07:00 til 23:00) når beboeren er hjemme
    if ishome == 1 and hour != 23 and hour not in range(0, 8):
        # Hvis termostaten har blitt satt til 0 betyr det at ovnen er skrudd av og bruker ikke strøm.
        if (temp_room == 0):
            energy_bedroom = 0
        # Når utetemp er lavere enn verdien til termostaten blir
        # differansen ganget med koeffisienten for å finne strømforbruket til panelovnen.
        elif (temp_val < temp_room):
            energy_bedroom = room_heating * (temp_room - temp_val)
        # Når utetemp er lik eller større enn verdien til termostaten bruker ikke panelovnen strøm.
        else:
            energy_bedroom = 0

    # Når beboeren er borte, bruker ikke panelovnen strøm.
    elif ishome == 0:
        energy_bedroom = 0

    # Finner strømforbruket når beboeren er hjemme på natta (kl 23:00 til 06:00).
    elif (hour == 23 or hour in range(0, 7)) and ishome == 1:
        # Hvis termostaten har blitt satt til 0 betyr det at ovnen er skrudd av og bruker ikke strøm.
        if (temp_room == 0):
            energy_bedroom = 0
        # Når utetemp er mindre enn termostat verdien minus 4 blir differansen
        # (termostat verdi – 4 – utetemp) ganget med koeffisienten for å finne strømforbruket til panelovnen.
        # Dette blir gjort for å simulere mindre strømforbruk om natta.
        elif (temp_val < temp_room - 4):
            energy_bedroom = room_heating * ((temp_room - 4) - temp_val)
        # Når utetemp er lik eller større enn verdien til termostaten minus 4 bruker ikke panelovnen strøm.
        else:
            energy_bedroom = 0

    # Runder av verdien for å bli kvitt unødvendige desimaltell.
    energy_bedroom = round(energy_bedroom, 3)

    # Skriver srtømdorbruket, temperaturen og datoen til en csv_fil.
    # Strømforbruksverdien blir brukt i el_forbruk til å regen ut totalt strømforbruk for rommet den gjellende dagen.
    # Tenperatur verdien blir brukt i el_forbruk for å finne gjennomsnittstemperaturen for dagen
    # som igjenn blir brukt for å finne strømforbruket til fellesarealene.
    with open('temp_csv/Heating_Room.csv', 'a') as p:
        prod_df = csv.writer(p)
        prod_df.writerow([date, energy_bedroom, temp_val])

    hr = pd.read_csv('temp_csv/Heating_Room.csv')
    return hr
Ejemplo n.º 11
0
def main():

    while True:
        if args.tanaman:

            def on_publish_plant(client, userdata, mid):
                print("mid: " + str(mid))

            client = mqtt.Client()
            client.on_publish = on_publish_plant

            client.username_pw_set("username", "password")
            client.connect("broker.hivemq.com", 1883, 60)
            client.loop_start()
            lokasi = input("Masukan Lokasi yang ingin di prediksi cuacanya: ")

            # perulangan untuk mengirimkan data (publish) ke mqtt broker setiap detik
            while True:
                weather = Yr(location_name=lokasi,
                             forecast_link='forecast_hour_by_hour')
                currentWeather = weather.now()
                minTemp = int(currentWeather['temperature']['@value'])
                maxTemp = int(currentWeather['temperature']['@value'])
                maxRain = float(currentWeather['precipitation']['@value'])

                tempMin = "Minimum Temperatur : " + str(minTemp)
                tempMax = "Maksimum Temperatur : " + str(maxTemp)
                rainMax = "Curah Hujan : " + str(maxRain)
                if maxRain < 0.5:
                    condition = "Siram Tanaman"
                if maxRain > 0.5:
                    condition = "Jangan Siram Tanaman"

                client.publish("/temperatur_minimum", tempMin, qos=1)
                time.sleep(1)
                client.publish("/temperatur_maksimum", tempMax, qos=1)
                time.sleep(1)
                client.publish("/curah_hujan", rainMax, qos=1)
                time.sleep(1)
                client.publish("/kondisi_alat_siram", condition, qos=1)
                time.sleep(2)

        if args.lampu:

            def on_publish_light(client, userdata, mid):
                print("mid: " + str(mid))

            client = mqtt.Client()
            client.on_publish = on_publish_light

            client.username_pw_set("username", "password")
            client.connect("broker.hivemq.com", 1883, 60)
            client.loop_start()
            lokasi = input("Masukan Lokasi yang ingin di prediksi cuacanya: ")

            # perulangan untuk mengirimkan data (publish) ke mqtt broker setiap detik
            while True:
                weather = Yr(location_name=lokasi,
                             forecast_link='forecast_hour_by_hour')
                currentWeather = weather.now()
                sunRise = extractTime(weather.dictionary['weatherdata']['sun']
                                      ['@rise']).strftime("%H:%M")
                sunSet = extractTime(weather.dictionary['weatherdata']['sun']
                                     ['@set']).strftime("%H:%M")
                today = datetime.now()
                timeToday = today.strftime("%H:%M")
                for forecast in weather.forecast():
                    condition = forecast['symbol']['@name']

                Risesun = "Matahari Terbit : " + str(sunRise)
                Setsun = "Matahari Terbenam : " + str(sunSet)
                timenow = "Waktu Sekarang : " + str(timeToday)
                conditionNow = "Kondisi Cuaca : " + str(condition)

                if Setsun > timeToday > sunRise and conditionNow != 'Cloudy' or conditionNow != 'Rain' or conditionNow != 'Heavy rain showers':
                    condition = "Lampu Dimatikan"
                if Setsun < timeToday < sunRise and conditionNow != 'Cloudy' or conditionNow != 'Rain' or conditionNow != 'Heavy rain showers':
                    condition = "Lampu Dihidupkan"
                if Setsun > timeToday > sunRise and conditionNow == 'Cloudy' or conditionNow == 'Rain' or conditionNow == 'Heavy rain showers':
                    condition = "Lampu Dimatikan"
                if Setsun < timeToday < sunRise and conditionNow == 'Cloudy' or conditionNow == 'Rain' or conditionNow == 'Heavy rain showers':
                    condition = "Lampu Dihidupkan"

                client.publish("/matahari_terbit", Risesun, qos=1)
                time.sleep(1)
                client.publish("/matahari_terbenam", Setsun, qos=1)
                time.sleep(1)
                client.publish("/waktu_sekarang", timenow, qos=1)
                time.sleep(1)
                client.publish("/kondisi_sekarang", conditionNow, qos=1)
                time.sleep(1)
                client.publish("/kondisi_alat_lampu", condition, qos=1)
                time.sleep(2)

        if args.pendingin:

            def on_publish_cooler(client, userdata, mid):
                print("mid: " + str(mid))

            client = mqtt.Client()
            client.on_publish = on_publish_cooler

            client.username_pw_set("username", "password")
            client.connect("broker.hivemq.com", 1883, 60)
            client.loop_start()
            lokasi = input("Masukan Lokasi yang ingin di prediksi cuacanya: ")

            # perulangan untuk mengirimkan data (publish) ke mqtt broker setiap detik
            while True:
                url = "http://api.openweathermap.org/data/2.5/weather?q=%s&appid=%s"
                request = requests.get(
                    url % (lokasi, '057928f69d86a90014a99e9b80269621'))
                response = json.loads(request.text)
                temp = round(response['main']['temp'] - 273)

                temperatur = "Suhu : " + str(temp)

                if temp >= 30:
                    condition = "Pendingin Dihidupkan"
                if 30 >= temp >= 21:
                    condition = "Pendingin Dihidupkan"
                if temp <= 21:
                    condition = "Pendingin Dimatikan"

                client.publish("/temperatur", temperatur, qos=1)
                time.sleep(1)
                client.publish("/kondisi_alat_pendingin", condition, qos=1)
                time.sleep(2)
Ejemplo n.º 12
0
#!/usr/bin/env python3

from yr.libyr import Yr

weather = Yr(location_name='Norge/Telemark/Skien/Skien')
now = weather.now(as_json=True)

print(now)
Ejemplo n.º 13
0
log = sys.argv[2]
requestType = int(sys.argv[3])
asJSON = bool("foo")
if sys.argv[4] == "F":
    asJSON = bool("")

weather = ""

#Get the weather forecast for the specified location
if requestType == 1:
    weather = Yr(location_name='Norway/Rogaland/Stavanger/Stavanger')
#Get the hourly weather forecast for the specified location
elif requestType == 2:
    weather = Yr(location_name='Norway/Rogaland/Stavanger/Stavanger',
                 forecast_link='forecast_hour_by_hour')
#Get the current forecast for the specified location
else:
    weather = Yr(location_name='Norway/Rogaland/Stavanger/Stavanger')

weatherResponse = ""
if requestType != 0:
    if (asJSON):
        for forecast in weather.forecast(as_json=asJSON):
            weatherResponse += forecast
    else:
        weatherResponse = weather
else:
    weatherResponse = weather.now(as_json=asJSON)

print(weatherResponse)
Ejemplo n.º 14
0
 def doRequest():
     weather = Yr(location_xyz=(longitude, latitude, 1))
     now = weather.now(as_json=False)
     Application().queue(self.sensor.updateValues, now)
Ejemplo n.º 15
0
log=sys.argv[2]
requestType=int(sys.argv[3])
asJSON=bool("foo")
if sys.argv[4]=="F":
  asJSON=bool("")

weather = ""

#Get the weather forecast for the specified location
if requestType==1:
  weather=Yr(location_name='Norway/Rogaland/Stavanger/Stavanger')
#Get the hourly weather forecast for the specified location
elif requestType==2:
  weather=Yr(location_name='Norway/Rogaland/Stavanger/Stavanger', forecast_link='forecast_hour_by_hour')
#Get the current forecast for the specified location
else:
  weather=Yr(location_name='Norway/Rogaland/Stavanger/Stavanger')

weatherResponse=""
if requestType!=0:
  if(asJSON):
    for forecast in weather.forecast(as_json=asJSON):
      weatherResponse+=forecast
  else:
    weatherResponse=weather
else:
  weatherResponse=weather.now(as_json=asJSON)

print(weatherResponse)

Ejemplo n.º 16
0
                    elif "where" in recog:
                        engine.say("Sure. What location do you want to know?")
                        engine.runAndWait()
                        speech2 = sr.Microphone(device_index=microphone_index)
                        with speech2 as source:
                            qaudio = r.listen(source, timeout=10.0)
                            r.adjust_for_ambient_noise(source)
                        query = r.recognize_google(qaudio, language='en-US')
                        search = query.replace(" ", "+")
                        webbrowser.open(
                            "https://www.google.co.za/maps/search/" + search)
                        break

                    elif "weather" in recog:
                        now = weather.now(as_json=False)

                        overtemp = now['temperature']
                        tempunit = overtemp['@unit']
                        tempvalue = overtemp['@value']

                        oversky = now['symbol']
                        skycon = oversky['@name']

                        overrain = now['precipitation']
                        rainvalue = overrain['@value']

                        overwind = now['windDirection']
                        overwind2 = now['windSpeed']
                        winddirection = overwind['@name']
                        windspeed = overwind2['@mps']
Ejemplo n.º 17
0
#!/usr/bin/env python3

from yr.libyr import Yr

weather = Yr(location_name='Norge/Telemark/Skien/Skien')
now = weather.now()

print(now)