def test_instantiation(self): with self.assertRaises(TypeError): OWM() with self.assertRaises(AssertionError): OWM(None) with self.assertRaises(AssertionError): OWM('fake-api-key', 123456) result = OWM('fake-api-key', dict()) self.assertIsInstance(result, OWM)
def send_info(message): config_dict = get_default_config() config_dict['language'] = 'ua' # your language here, eg. Ukrainian owm = OWM('KEY', config_dict) mgr = owm.weather_manager() observation = mgr.weather_at_place(message.text) w = observation.weather # Temp temp = w.temperature('celsius') temp_current = temp['temp'] temp_min = temp['temp_min'] temp_max = temp['temp_max'] feels_like = temp['feels_like'] # Wind wind_info = observation.weather.wind(unit='meters_sec') wind_speed = wind_info['speed'] wind_deg = wind_info['deg'] bot.reply_to( message, 'Температура зараз: ' + str(temp_current) + '\n \nМінімальна температура сьогодні: ' + str(temp_min) + ' градуси' '\n \nМаксимальна температура сьогодні: ' + str(temp_max) + ' градуси' + '\n \nВідчувається як: ' + str(feels_like) + ' градуси' + '\n \nШвидкість вітру' + 'сьогодні: ' + str(wind_speed) + ' метра за секунду' + '\n \n Напрям вітру у градусах від ' + 'північного ' + 'горизонту: ' + str(wind_deg))
def main(strip): print(f"Good morning! Waking up at {time.time()}") owm = OWM(WEATHER_API_KEY) mgr = owm.weather_manager() observation = mgr.weather_at_place( "Oxford,GB" ) # the observation object is a box containing a weather object weather = observation.weather.status print(f"The current weather is {weather}") start_time = time.time() strip.begin() dither_fade(strip, ws.Color(0, 1, 1), leds_to_switch=None, dither_time=RUNTIME * 0.5) WEATHER_ANIMATIONS[weather](strip, RUNTIME) time.sleep(10 * 60) WEATHER_ANIMATIONS[weather](strip, RUNTIME, reverse=True) dither_fade(strip, ws.Color(0, 0, 0), leds_to_switch=None, dither_time=RUNTIME * 0.5) end_time = time.time() print( f"I hope you're awake! Closing down at {time.time()}. We spent {(end_time - start_time) // 60} minutes." )
def get_api( api_key, subscription_type=SubscriptionTypeEnum.FREE, language: str = "en", connection: dict = { "use_ssl": True, "verify_ssl_certs": True, "use_proxy": False, "timeout_secs": 5 }, proxies: dict = { "http": "http://", "https": "https://", }) -> OWM: """ Retrieves the OWM API v3 object based on the supplied API key. Must supply an api_key that can be created at https://home.openweathermap.org/api_keys Other options are configurable based on https://pyowm.readthedocs.io/en/latest/v3/code-recipes.html#initialize-pyowm-with-configuration-loaded-from-an-external-json-file """ if len(str(api_key).strip()) == 0: raise ValueError("The API Key is blank or empty") owm = OWM(api_key, config={ "subscription_type": subscription_type, "language": language, "connection": connection, "proxies": proxies }) return owm
def get_weather(self): owm = OWM(self.api_key) weather_mgr = owm.weather_manager() city_id_registry = owm.city_id_registry() london = city_id_registry.ids_for('London', 'GB')[0][0] weather = weather_mgr.weather_at_id(london).weather temperature = weather.temperature('celsius') forecast = weather_mgr.forecast_at_id(london, '3h', 4).forecast forecasts = [] for hourly_forecast in forecast: forecasts.append( ForecastInfo( hourly_forecast.reference_time('date'), hourly_forecast.detailed_status, round(hourly_forecast.temperature('celsius')['temp'], 1), hourly_forecast.weather_code)) current_weather = WeatherInfo(london, weather.reference_time('date'), weather.detailed_status, round(temperature['temp'], 1), round(temperature['temp_max'], 1), round(temperature['temp_min'], 1), weather.sunrise_time('date'), weather.sunset_time('date'), weather.weather_code, forecasts) return current_weather
def __init__(self): # Meta stuff to use self.owm = OWM(secrets["API Key"]) # This is your API key for OWM self.cityID = secrets["City ID"] # This is your town's city ID self.mgr = self.owm.weather_manager() # This is the manager of the weather information frm OWM self.weather = self.mgr.weather_at_id(self.cityID).weather # This is the current weather of Ganado self.temp_list = self.weather.temperature(secrets["Temp System"]) # All temps including current and feels like
def main(say, widget): for i in trigger: if i == say: id = OWM('e45bc007f87a48d597d60091779f2d88', config_dict) # API ключ Open weather map mgr = id.weather_manager() try: city = location.geo.city observation = mgr.weather_at_place(city) w = observation.weather toSpeak = "В " + city + " сейчас " + str(int(w.temperature('celsius')['temp'])) +\ " градусов по цельсию, " + w.detailed_status + "." if float(w.temperature('celsius')['temp']) >= 20: toSpeak += "\nСейчас на улице жарко. Идите загорать." elif float(w.temperature('celsius')['temp']) <= 19 and float( w.temperature('celsius')['temp']) >= 10: toSpeak += "\nЗа окном прохладно. Оденьте куртку." elif float(w.temperature('celsius')['temp']) <= 9 and float( w.temperature('celsius')['temp']) >= 0: toSpeak += "\nНа улице холодно. Оденьтесь в осеннюю одежду." else: toSpeak += "\nНа улице очень холодно, лучше туда не ходить. Выпейте горячего чаю." except Exception: toSpeak = "Пожалуйста, укажите название города!" break else: toSpeak = "" if toSpeak != "": speak.speak(toSpeak, widget) return toSpeak
def get_weather(): key = '8f1b9a3225495a9c8a89cb7ff7848c08' owm = OWM(key) mgr = owm.weather_manager() observation = mgr.weather_at_place('Risod, IN') weather = observation.weather return f"The weather status is {weather.status}"
def main(owm_api_key, ifttt_api_key, temp_threshold, high_temp_event_name, normal_temp_event_name, city, force_high): """ If *either* the outside temperature is over a threshold, *or* some other temperature (currently motherboard temp, measured outside this script) is over a threshold, consider the temperature "high". Send an event to IFTTT so we can take action (like turning on a fan). """ owm = OWM(owm_api_key) weather_manager = owm.weather_manager() observation = weather_manager.weather_at_place(city) temp = observation.weather.temperature('celsius')['temp'] event_name = normal_temp_event_name if temp > temp_threshold or force_high: event_name = high_temp_event_name previous_event = get_last_event() if previous_event != event_name: ifttt_url = 'https://maker.ifttt.com/trigger/%s/with/key/%s' % (event_name, ifttt_api_key) ifttt_data = {'value1': temp, 'value2': 'forced: %s' % force_high} requests.post(ifttt_url, data=ifttt_data) write_event(event_name, ifttt_data)
def lambda_handler(event, context): #TODO implement logger.debug(event) city = event["currentIntent"]["slots"]["City"] owm = OWM('068b6ba70ba098c7ef600f077f63ce08') #API key mngr = owm.weather_manager() weather = mngr.weather_at_place(city).weather temp_dict_celsius = weather.temperature('celsius') sunrise_date = weather.sunrise_time(timeformat='date') sunrset_date = weather.sunset_time(timeformat='date') answer = "The weather of " + city + " is " + weather.detailed_status + " with " + str( temp_dict_celsius['temp'] ) + " C as average temperature. The sun rose at around " + str( sunrise_date) + " and is expected to set at around " + str( sunrset_date) return { "sessionAttributes": event["sessionAttributes"], "dialogAction": { "type": "Close", "fulfillmentState": "Fulfilled", "message": { "contentType": "PlainText", "content": answer } } }
def get_forecast(self): """Assembles an OpenWeatherMap API call using pyowm, gets the forecast temperature for the next eight hours.""" # Builds pyowm call to the OWM API for a location's hourly temps load_dotenv('owm_config.env') api_key = getenv('API_KEY') lat = float(getenv('LATITUDE')) lon = float(getenv('LONGITUDE')) print(f"{lat}, {lon}") owm = OWM(api_key) mgr = owm.weather_manager() one_call = mgr.one_call(lat=lat, lon=lon, exclude='minutely,daily', units='imperial') for hour in self.forecast_temps: self.forecast_temps[hour] = one_call.forecast_hourly[ hour].temperature().get('temp') print(self.forecast_temps) # Logs the forecast temps to a .csv file now = datetime.now().isoformat(' ') log_timestamp = {'Timestamp': now} coords = {'Lat': lat, 'Lon': lon} row_dict = {**log_timestamp, **coords, **self.forecast_temps} field_names = row_dict.keys() file_exists = path.exists('Forecast Log.csv') with open('Forecast Log.csv', 'a+', newline='') as forecast_log: dict_writer = DictWriter(forecast_log, fieldnames=field_names) if not file_exists: dict_writer.writeheader() dict_writer.writerow(row_dict)
def __init__(self, config): """Initialize inkycal_weather module""" super().__init__(config) config = config['config'] # Check if all required parameters are present for param in self.requires: if not param in config: raise Exception(f'config is missing {param}') # required parameters self.api_key = config['api_key'] self.location = config['location'] # optional parameters self.round_temperature = config['round_temperature'] self.round_windspeed = config['round_windspeed'] self.forecast_interval = config['forecast_interval'] self.units = config['units'] self.hour_format = int(config['hour_format']) self.use_beaufort = config['use_beaufort'] # additional configuration self.owm = OWM(self.api_key).weather_manager() self.timezone = get_system_tz() self.locale = config['language'] self.weatherfont = ImageFont.truetype( fonts['weathericons-regular-webfont'], size=self.fontsize) # give an OK message print(f"{filename} loaded")
def get_data(key, city): """ Получение данных на сегодняшний день. key - ключ от openweathermap.org city - город с уточнением страны """ get_err = False try: config_dict = get_default_config() config_dict['language'] = 'ru' owm = OWM(api_key=key, config=config_dict) mgr = owm.weather_manager() w = mgr.weather_at_place(city).weather except: get_err = "Сведения о погоде получить не удалось." data = ("%s. " "Сегодня %s, %s. " "Время %s. " % (get_greeting(), get_weekday(), get_date(), get_time())) if not get_err: data += ("Температура за окном %d ℃. " "Ветер %s, %d м в секунду. " "Атмосферное давление %d мм рт. ст. " "Относительная влажность воздуха %d %%. " "%s." % (w.temperature('celsius').get('temp'), get_wind_direction(w.wind().get('deg')), w.wind().get('speed'), w.pressure.get('press') * 0.75006375541921, w.humidity, w.detailed_status)) else: data += get_err return data
def run(self, wcd, wci): """ Displaying expected temperature """ # Get current forecast if self.weather_service == 'yahoo': current_weather_forecast = pywapi.get_weather_from_yahoo( self.location_id) elif self.weather_service == 'weather_dot_com': current_weather_forecast = pywapi.get_weather_from_weather_com( self.location_id) elif self.weather_service == 'openweathermap': owm = OWM(self.owm_key) owm.config['language'] = 'de' mgr = owm.weather_manager() observation = mgr.weather_at_place(self.location_id) w = observation.weather current_weather_forecast = [] print(w.temperature('Celsius')) current_weather_forecast['current_conditions'][ 'temperature'] = w.temperature('Celsius')['temp'] # current_weather_forecast['current_conditions']['temp_max'] = w.temperature('Celsius')['temp_max'] # current_weather_forecast['current_conditions']['temp_min'] = w.temperature('Celsius')['temp_min'] else: print('Warning: No valid weather_forecast found!') return outdoor_temp = current_weather_forecast['current_conditions'][ 'temperature'] if self.temp_sensor_registered: try: sensor = Adafruit_DHT.AM2302 pin = self.pin_temp_sensor #indoor_temp = str(int(round(am2302_ths.get_temperature(self.pin_temp_sensor)))) humidity, temperature = Adafruit_DHT.read_retry(sensor, pin) indoor_temp = str(int(round(temperature))) wcd.showText(outdoor_temp + '*', count=1, fps=8) wcd.showText(indoor_temp + '*', count=1, fg_color=wcc.GREEN, fps=8) wcd.showText(outdoor_temp + '*', count=1, fps=8) wcd.showText(indoor_temp + '*', count=1, fg_color=wcc.GREEN, fps=8) except: print(' Failed to read temperature sensor!') wcd.showText(outdoor_temp + '* ' + outdoor_temp + '* ' + outdoor_temp + '*', count=1, fps=8) else: wcd.showText(outdoor_temp + '* ' + outdoor_temp + '* ' + outdoor_temp + '*', count=1, fps=8) if wci.waitForExit(1.0): return
def get_temperature(): owm = OWM('8f1b9a3225495a9c8a89cb7ff7848c08') mgr = owm.weather_manager() weather = mgr.weather_at_place('Risod,IN').weather temp_dict_kelvin = weather.temperature() temp = temp_dict_kelvin['temp'] - 273.15 degree_sign = u'\N{DEGREE SIGN}' return f'The current temperature is {ceil(temp)}{degree_sign}C'
def __init__(self): self.owm = OWM('4526d487f12ef78b82b7a7d113faea64') self.mgr = self.owm.weather_manager() self.city_counter = 1 self.cities = { 1 : 'krakow', 2 : 'london', 3 : 'stockholm' }
def __init__(self): self._cords = [50.06860205597571, 19.906051141042095] self._config_dict = get_default_config() self._config_dict['language'] = 'en' self._owm = OWM('5107288b7cd05e5e4d3a167c10eb87e4', self._config_dict) self._manager = self._owm.weather_manager() self._one_call = self._manager.one_call(self._cords[0], self._cords[1]) self._current_conditions = self._one_call.current self._current_temperatures = self._read_temp_raw()
def weather(): #hava durumlarını api üzerinden çekip anlık olarak söyleyen method owm = OWM('bbe1108552e97a288646c8be7b776acf') weather_mngr = owm.weather_manager() observation = weather_mngr.weather_at_place('Izmir,TR') weather = observation.weather temperature = weather.temperature("celsius") speak("Sıcaklık " + str(temperature["temp"]) + "derece") speak("Hissedilen sıcaklık "+ str(temperature["feels_like"]) + "derece") speak("Hava durumu " + str(weather.detailed_status))
def getWeather(): """ Gets current weather from OWN data, i.e "Clouds" """ owm = OWM("TOKEN HERE") mgr = owm.weather_manager() observation = mgr.weather_at_place('Bergen,NO') weather = observation.weather return weather.status
def get_speed(): from pyowm.owm import OWM owm = OWM('8f1b9a3225495a9c8a89cb7ff7848c08') mgr = owm.weather_manager() observation = mgr.weather_at_place('New Delhi,IN') wind_dict_in_meters_per_sec = observation.weather.wind() # Default unit: 'meters_sec' speed = wind_dict_in_meters_per_sec['speed'] speed = float(speed) return speed
def get_openweathermap(): owm_config = None owm = None try: with open('/etc/sensors/openweathermap.json', 'r') as f: owm_config = json.loads(f.read()) owm = OWM(owm_config['key']) f.close() except Exception as ex: print('OpenWeatherMap API setup error: {ex}'.format(ex=ex)) return None if owm: weather = owm.weather_manager().weather_at_place( owm_config['place']).weather temp = weather.temperature('celsius') wind = weather.wind() wind_gust = 0 if 'gust' in wind.keys(): wind_gust = wind['gust'] precip_type = 'none' precip_intensity = 0 if weather.rain: precip_type = 'rain' precip_intensity = weather.rain['1h'] elif weather.snow: precip_type = 'snow' precip_intensity = weather.snow['1h'] return { 'sensor': owm_config['id'], 'ts': weather.reference_time(timeformat="unix"), 'dt': weather.reference_time(timeformat="date").astimezone(), 'units': 'si', 'summary': weather.detailed_status, 'icon': weather.weather_icon_name, 'weather_code': weather.weather_code, 'temp_c': temp['temp'], 'humidity': weather.humidity, 'pressure': weather.pressure['press'], 'dewpoint': magnus_dp(temp['temp'], weather.humidity), 'feels_like_c': temp['feels_like'], 'precip_type': precip_type, 'precip_intensity': precip_intensity, 'wind_speed': wind['speed'], 'wind_gust': wind_gust, 'wind_bearing': wind['deg'], 'cloud_cover': weather.clouds, 'uv_index': weather.uvi, 'visibility': weather.visibility_distance } return None
def getweather(city): owm = OWM(OWM_TOKEN, config_dict) mgr = owm.weather_manager() observation = mgr.weather_at_place(city) w = observation.weather curr_weather = [int(w.temperature('celsius')['temp_min']), int(w.temperature('celsius')['temp_max']), int(w.temperature('celsius')['temp']), w.detailed_status] return curr_weather
def mess(message): get_message_bot = message.text.strip().lower() owm = OWM('4d9b5e79bfddd0b1bee5d376bbc02561') x = get_message_bot mgr = owm.weather_manager() observation = mgr.weather_at_place(x) w = observation.weather temp = w.temperature('celsius')['temp'] col = (f'Температура: {temp} , {w.status} ') bot.send_message(message.chat.id, col)
def __init__(self, data, sleepEvent): self.data = data self.sleepEvent = sleepEvent self.weather_frequency = data.config.weather_update_freq self.time_format = data.config.time_format self.icons = get_icons("ecIcons_utf8.csv") self.apikey = data.config.weather_owm_apikey self.network_issues = False self.owm = OWM(self.apikey) self.owm_manager = self.owm.weather_manager()
def execute(self): city = self._match.group(1) config_dict = get_default_config() config_dict['language'] = 'en' owm = OWM('6d00d1d4e704068d70191bad2673e0cc', config_dict) reg = owm.city_id_registry() try: mgr = owm.weather_manager() observation = mgr.weather_at_place(city) #print(observation.location) w = re.findall('(\d+.\d+)', str(observation.location)) lon = float(w[1]) lat = float(w[2]) except: #проверка на частичное совпадение try: list_of_tuples = reg.ids_for(city, matching='like') city = list_of_tuples[0][1] except IndexError: print('No object with this name was found\n') return () #вывод списка с вариантами if len(list_of_tuples) > 1: for i in range(0, len(list_of_tuples)): print(i + 1, list_of_tuples[i][1:3]) #выбор пользователя и проверка try: select = int(input('\nSeveral matches were found. Enter a suitable number\n--> ')) city_finded = list_of_tuples[select - 1][1] list_of_locations = reg.locations_for(city_finded) city_finded = list_of_locations[0] lat = city_finded.lat lon = city_finded.lon if select < 1: print('Incorrected input\n') return () except: print('Incorrected input\n') return () print('Wait forecast for', city, '...\n') one_call = mgr.one_call(lat, lon) for i in range(3): print(datetime.now().date() + timedelta(days=1 + i)) print('Wind:', one_call.forecast_daily[i].wind().get('speed', 0), 'm/s\n' 'Cloudes:', one_call.forecast_daily[i].detailed_status, '\nDay temperature:', one_call.forecast_daily[i].temperature('celsius').get('feels_like_day', None), 'degrees Celsius', '\nNight temperature:', one_call.forecast_daily[i].temperature('celsius').get('feels_like_night', None), "degrees Celsius\n")
def __init__(self, language): # Language must be 2-char code 'en' or 'de' if language is None: language = translation.default_language cfg = config.load_configuration(config.HELHEIMR_CONFIG_FILE_FORECAST) owm_cfg = get_default_config_for_subscription_type('free') owm_cfg['language'] = language.lower() self._owm = OWM(cfg.openweathermap.api_token, owm_cfg) self._latitude = cfg.openweathermap.latitude self._longitude = cfg.openweathermap.longitude self._mgr = self._owm.weather_manager() self._language = language
def get_weather(lat, long, config): api_key = config.get("owm", {}).get("key", "") if api_key == "": return ("", "Missing OWM API key", 0) owm = OWM(api_key) weather_manager = owm.weather_manager() observation = weather_manager.weather_at_coords(lat, long) w = observation.weather icon_name = w.weather_icon_name status = w.status temp = w.temperature("celsius")["temp"] return (icon_name, status, temp)
def weather(city_from_discord): """ Принимает на вход название города и выводит прогноз погоды """ config_dict = get_default_config() config_dict['language'] = 'ru' # your language here owm = OWM(OWM_API_KEY, config_dict) mgr = owm.weather_manager() observation = mgr.weather_at_place(city_from_discord) weather = observation.weather temperature = weather.temperature('celsius')['temp'] full_message = f'{weather.detailed_status.capitalize()}, температура в городе {city_from_discord} {round(temperature)}°C' return full_message
def main(): from time import sleep from gpiozero import AngularServo, Button owm = OWM('api_key') reg = owm.city_id_registry() mgr = owm.weather_manager() krakow = reg.ids_for('Kraków', country='PL')[0] istanbul = reg.ids_for('Istanbul', country='TR')[0] stockholm = reg.ids_for('Stockholm', country='SE')[0] global btn_state btn_state = 0 CITIES = [krakow, istanbul, stockholm] CITY_COUNT = 3 WEATHER = { 'clear': -70, 'mist': -30, 'haze': -30, 'smoke': 10, 'dust': 10, 'sand': 10, 'clouds': 10, 'ash': 10, 'squall': 10, 'drizzle': 50, 'rain': 50, 'snow': 50, 'thunderstorm': 50, 'tornado': 50 } servo1 = AngularServo(17, min_angle=-90, max_angle=90) servo1.angle = -90 def button1_pressed(): global btn_state btn_state += 1 print("Change to " + str(CITIES[btn_state % CITY_COUNT])) button1 = Button(11) button1.when_pressed = button1_pressed while True: weather = mgr.weather_at_id(CITIES[btn_state % CITY_COUNT][0]).weather status = str(weather.status).lower() servo1.angle = WEATHER.get(status) print(str(CITIES[btn_state % CITY_COUNT]) + " : " + status) sleep(3)
def get_weather(): f = open("key.txt", "r") api_key = f.read().replace("\n", "") # your API Key here as string owm = OWM(api_key) # Use API key to get data mgr = owm.weather_manager() # one_call = mgr.one_call(lat=47.36667, lon=8.55) observation = mgr.weather_at_place('Zurich') w = observation.weather temperature = w.temperature('celsius').get('temp', None) feels_temperature = w.temperature('celsius').get('feels_like', None) data = w.detailed_status # temperature = one_call.forecast_daily[0].temperature('celsius').get('day', None) # feels_temperature = one_call.forecast_daily[0].temperature('celsius').get('feels_like_day', None) # data = one_call.forecast_daily[0].detailed_status return temperature, feels_temperature, data