Refactor mqtt sender script #299

This commit is contained in:
Kendrick Chan 2020-01-24 03:17:42 +08:00
parent 68a92b2daf
commit fb52b59ad9

View file

@ -1,7 +1,6 @@
import paho.mqtt.client as mqtt import paho.mqtt.client as mqtt
import yaml
import ssl import ssl
from threading import Thread
from daemonize import Daemonize
import redis import redis
import time import time
import signal import signal
@ -10,24 +9,18 @@ import os
import logging import logging
# TODO: yaml configuration file for redis and mqtt settings
def sigint_handler(signal, frame):
#logging.warning('Interrupted')
sys.exit(0)
os._exit(0)
def on_connect(client, userdata, flags, rc): def on_connect(client, userdata, flags, rc):
#logging.info("Connected with result code "+str(rc)) logging.info("Connected with result code "+str(rc))
client.subscribe("$SYS/#") #client.subscribe("$SYS/#")
def on_publish(client, userdata, mid): def on_publish(client, userdata, mid):
pass pass
def getRedis(i, client, logger): def redis_listen(client, logger):
logger.info("Listening in redis events") logger.info("Listening in redis events")
r = redis.StrictRedis(host='localhost', port=6379, db=0) r = redis.StrictRedis(host='localhost', port=6379, db=0)
while 1: while 1:
@ -40,9 +33,6 @@ def getRedis(i, client, logger):
def sigint_handler(signal, frame):
sys.exit(0)
def get_logger(): def get_logger():
logger = logging.getLogger("mqtt_logger") logger = logging.getLogger("mqtt_logger")
logger.setLevel(logging.INFO) logger.setLevel(logging.INFO)
@ -64,25 +54,14 @@ def main():
client.on_connect = on_connect client.on_connect = on_connect
client.on_publish = on_publish client.on_publish = on_publish
client.tls_set( # configure mqtt broker to accept localhost
"/etc/letsencrypt/live/resqaws.jankstudio.com/fullchain.pem", cert_reqs=ssl.CERT_NONE, client.connect("localhost", 1883, 60)
tls_version=ssl.PROTOCOL_TLSv1)
client.connect("resqaws.jankstudio.com", 8883, 60) client.loop_start()
redis_listen(client, logger)
client.loop_end()
logger.info("Starting redis thread") #client.loop_forever()
t = Thread(target=getRedis, args=(1, client, logger))
t.start()
signal.signal(signal.SIGINT, sigint_handler)
client.loop_forever()
#logging.basicConfig(filename='/tmp/mqtt_sender.log', level=logging.INFO)
#logging.info('Started mqtt_sender')
#pid = "/tmp/mqtt_sender.pid"
#daemon = Daemonize(app="mqtt_sender", pid=pid, action=main)
#daemon.start()
main() main()