-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp.py
More file actions
60 lines (42 loc) · 1.56 KB
/
app.py
File metadata and controls
60 lines (42 loc) · 1.56 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import json
import logging
import os
import sys
from time import sleep
import schedule
from dotenv import load_dotenv
from fast_com import get_stats, SpeedTestException
from mqtt import mqtt_publish, MQTTException
load_dotenv()
def config_logging():
import time
logging.getLogger().setLevel(logging.INFO)
logging.getLogger("requests").setLevel(logging.WARNING)
logging.basicConfig(format='{}: GMT: %(asctime)s %(levelname)s %(message)s'.format(os.path.split(sys.argv[0])[1]))
logging.Formatter.converter = time.gmtime
def main():
MQTT_HOSTNAME = os.getenv('MQTT_HOSTNAME')
MQTT_PORT = int(os.getenv('MQTT_PORT'))
MQTT_USER = os.getenv('MQTT_USER')
MQTT_PASSWORD = os.getenv('MQTT_PASSWORD')
MQTT_TOPIC = os.getenv('MQTT_TOPIC')
config_logging()
try:
stats = get_stats()
logging.info('[INFO] Stats: {}'.format(stats))
payload = json.dumps(stats)
mqtt_publish(MQTT_TOPIC, payload, MQTT_HOSTNAME, port=MQTT_PORT, username=MQTT_USER, password=MQTT_PASSWORD)
except SpeedTestException as e:
logging.error('[ERROR] SpeedTestException: {}'.format(e.message))
except MQTTException as e:
logging.error('[ERROR] MQTTException: {}'.format(e.message))
except Exception as e:
logging.error('[ERROR] UNKNOWN Exception: {}'.format(str(e)))
if __name__ == '__main__':
RUN_EVERY = int(os.getenv('RUN_EVERY', -1))
main()
if RUN_EVERY > 0:
schedule.every(RUN_EVERY).seconds.do(main)
while True:
schedule.run_pending()
sleep(1)