MqttDispatcherPy/MqttDispatcher.py
2017-11-14 20:02:36 +01:00

112 lines
2.3 KiB
Python

#!/usr/bin/python
import os
import sys
import time
from logger import Logger
from MqttReceiver import MqttReceiver
from MBusParser import MBusParser
from ModbusParser import ModbusParser
from PersistentQueue import PersistentQueue
from DatabaseEngine import DatabaseEngine
DEBUG = True
DEBUG_TO_STDOUT = True
BACKGROUND = False
PID_FILE = "/tmp/MqttDispatcher.pid"
LOG_FILE = "/tmp/MqttDispatcher.log"
MQTT_CONFIG = {
'host':'eupenstrasse20.dynamic.hottis.de',
'port':8883,
'tls':True,
'ca':'ca.crt',
'user':'tron',
'password':'geheim123'
}
DATABASE_CONFIG = {
'period':3600,
'host':'localhost',
'user':'smarthome',
'password':'smarthome123',
'db':'smarthome'
}
#MQTT_CONFIG = {
# 'host':'localhost',
# 'port':1883,
# 'tls':False,
# 'ca':'ca.crt',
# 'user':'tron',
# 'password':'geheim123'
#}
#DATABASE_CONFIG = {
# 'period':300,
# 'host':'172.16.2.17',
# 'user':'smarthome',
# 'password':'smarthome123',
# 'db':'smarthome'
#}
QUEUE_CONFIG = {
'file':'/tmp/mqttDispatcherQueue',
'maxsize':0
}
if BACKGROUND:
pid = os.fork()
else:
pid = 0
if pid:
pidFile = file(PID_FILE , mode='w')
pidFile.write("%i\n" % pid)
pidFile.close()
sys.exit(0)
Logger.openlog(LOG_FILE)
if DEBUG:
Logger.debugEnable()
if DEBUG_TO_STDOUT:
Logger.debugToStdoutEnable()
Logger.log("MqttDispatcher starting")
try:
mqttReader = MqttReceiver.create(MQTT_CONFIG)
mqttReader.start()
Logger.log("MqttReader started ...")
mbusParser = MBusParser()
mqttReader.registerParser(mbusParser)
Logger.log("MBusParser started ...")
modbusParser = ModbusParser()
mqttReader.registerParser(modbusParser)
Logger.log("ModbusParser started ...")
persistentQueue = PersistentQueue(QUEUE_CONFIG)
mbusParser.setNextStage(persistentQueue)
modbusParser.setNextStage(persistentQueue)
Logger.log("PersistentQueue instantiated ...")
databaseEngine = DatabaseEngine(persistentQueue, DATABASE_CONFIG)
databaseEngine.start()
Logger.log("DatabaseEngine started ...")
Logger.log("MqttDispatcher running")
while (True):
time.sleep(10)
except Exception, e:
Logger.log("MqttDispatcher dying from %s" % (str(e)))
finally:
Logger.log("MqttDispatcher terminating ...")