Files
aman-sys/aman/com/Weather.py
2021-10-10 08:27:10 +02:00

65 lines
1.8 KiB
Python

#!/usr/bin/env python
import datetime
import pytz
import sys
import time
from datetime import datetime as dt
from threading import Thread
from aman.com.DwdCrawler import DwdCrawler
import aman.config.Weather
class Weather(Thread):
def __init__(self):
Thread.__init__(self)
self.nextUpdate = None
self.lastUpdateTried = None
self.stopThread = False
self.provider = None
def acquire(self, config : aman.config.Weather.Weather):
self.nextUpdate = dt.utcfromtimestamp(int(time.time()))
self.lastUpdateTried = None
self.stopThread = False
self.provider = None
if 'DWD' == config.Provider.upper():
self.provider = DwdCrawler()
else:
sys.stderr.write('Invalid or unknown weather-provider defined')
sys.exit(-1)
self.start()
def release(self):
self.stopThread = True
self.join()
def currentClock():
clock = dt.utcfromtimestamp(int(time.time()))
clock = datetime.datetime(
year = clock.year,
month = clock.month,
day = clock.day,
hour = clock.hour,
minute = clock.minute,
second = clock.second,
tzinfo = pytz.UTC
)
return clock
def run(self):
while False == self.stopThread and None != self.provider:
now = Weather.currentClock()
# check if an update is required
if None != self.provider.updateTime and self.provider.updateTime > now:
time.sleep(1)
continue
if None == self.lastUpdateTried or self.lastUpdateTried <= now:
if True == self.provider.receiveWindData():
self.nextUpdate = self.provider.updateTime