Files
aman-sys/aman/com/Weather.py
2021-10-13 12:52:29 +02:00

56 lines
1.6 KiB
Python

#!/usr/bin/env python
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())).replace(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
print('Received new wind data')