first save
This commit is contained in:
108
app/web/wlan.py
Normal file
108
app/web/wlan.py
Normal file
@@ -0,0 +1,108 @@
|
||||
import time
|
||||
import network
|
||||
import urequests
|
||||
from ..classes.location import Location
|
||||
from ..classes.weather import CurrentCondition, Weather
|
||||
|
||||
API_KEY = '3545ce42d0ba436e8dc164532250410'
|
||||
ACTUAL_WEATHER = 'https://api.weatherapi.com/v1/current.json?key={{key}}&q={{city}}&aqi=yes'
|
||||
|
||||
WEATHER_QUERY_MOCK = {
|
||||
'location': {
|
||||
'name': 'Grosshansdorf',
|
||||
'region': 'Schleswig-Holstein',
|
||||
'country': 'Germany',
|
||||
'lat': 53.6667,
|
||||
'lon': 10.2833,
|
||||
'tz_id': 'Europe/Berlin',
|
||||
'localtime_epoch': 1760779328,
|
||||
'localtime': '2025-10-18 11:22',
|
||||
},
|
||||
'current': {
|
||||
'last_updated_epoch': 1760778900,
|
||||
'last_updated': '2025-10-18 11:15',
|
||||
'temp_c': 8.3,
|
||||
'temp_f': 46.9,
|
||||
'is_day': 1,
|
||||
'condition': {
|
||||
'text': 'Sonnig',
|
||||
'icon': '//cdn.weatherapi.com/weather/64x64/day/113.png',
|
||||
'code': 1000,
|
||||
},
|
||||
'wind_mph': 2.5,
|
||||
'wind_kph': 4.0,
|
||||
'wind_degree': 31,
|
||||
'wind_dir': 'NNE',
|
||||
'pressure_mb': 1029.0,
|
||||
'pressure_in': 30.39,
|
||||
'precip_mm': 0.0,
|
||||
'precip_in': 0.0,
|
||||
'humidity': 76,
|
||||
'cloud': 0,
|
||||
'feelslike_c': 8.2,
|
||||
'feelslike_f': 46.8,
|
||||
'windchill_c': 10.0,
|
||||
'windchill_f': 50.0,
|
||||
'heatindex_c': 9.9,
|
||||
'heatindex_f': 49.8,
|
||||
'dewpoint_c': 2.2,
|
||||
'dewpoint_f': 35.9,
|
||||
'vis_km': 10.0,
|
||||
'vis_miles': 6.0,
|
||||
'uv': 0.9,
|
||||
'gust_mph': 2.8,
|
||||
'gust_kph': 4.6,
|
||||
'air_quality': {
|
||||
'co': 163.678,
|
||||
'no2': 7.278,
|
||||
'o3': 47.0,
|
||||
'so2': 1.178,
|
||||
'pm2_5': 5.778,
|
||||
'pm10': 7.178,
|
||||
'us-epa-index': 1,
|
||||
'gb-defra-index': 1,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
class Wlan:
|
||||
def __init__(self, ssid, password):
|
||||
self.ssid = ssid
|
||||
self.password = password
|
||||
|
||||
def connect(self):
|
||||
wlan = network.WLAN(network.STA_IF)
|
||||
wlan.active(True)
|
||||
wlan.connect(self.ssid, self.password)
|
||||
|
||||
while not wlan.isconnected:
|
||||
print('connecting, please wait ...')
|
||||
time.sleep(1)
|
||||
|
||||
print('connected! IP=', wlan.ifconfig()[0])
|
||||
|
||||
def actual_weather(self, city='grosshansdorf', lang='de', test_mode=False) -> Weather:
|
||||
weather_url = (
|
||||
f'https://api.weatherapi.com/v1/current.json?key={API_KEY}&q={city}&aqi=yes&lang={lang}'
|
||||
)
|
||||
print(f'query: {weather_url}')
|
||||
|
||||
if not test_mode:
|
||||
r = urequests.get(weather_url)
|
||||
|
||||
print('Status-Code:', r.status_code)
|
||||
json_resp = r.json()
|
||||
print(json_resp.keys())
|
||||
|
||||
r.close()
|
||||
else:
|
||||
print('Status-Code: test_mode')
|
||||
json_resp = WEATHER_QUERY_MOCK
|
||||
|
||||
loc = Location(**json_resp['location'])
|
||||
cc = CurrentCondition(**json_resp['current'])
|
||||
|
||||
weather = Weather(location=loc, current=cc)
|
||||
|
||||
return weather
|
||||
Reference in New Issue
Block a user