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
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]
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()
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"
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
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]
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)
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)
#!/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))
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
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)
#!/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)
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)
def doRequest(): weather = Yr(location_xyz=(longitude, latitude, 1)) now = weather.now(as_json=False) Application().queue(self.sensor.updateValues, now)
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)
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']
#!/usr/bin/env python3 from yr.libyr import Yr weather = Yr(location_name='Norge/Telemark/Skien/Skien') now = weather.now() print(now)