MongoImporter started

This commit is contained in:
Wolfgang Hottgenroth
2017-11-14 17:59:24 +01:00
parent f039c58bdb
commit cdd1ae56e2

100
MongoImporter.py Normal file
View File

@ -0,0 +1,100 @@
#!/usr/bin/python
import os
import sys
import time
from logger import Logger
from pymongo import MongoClient
from PersistentQueue import PersistentQueue
from DatabaseEngine import DatabaseEngine
from EnergyDatabasePreparer import EnergyDatabasePreparer
from TemperatureDatabasePreparer import TemperatureDatabasePreparer
LOG_FILE = "/tmp/MongoImporter.log"
DEBUG = True
DEBUG_TO_STDOUT = True
DATABASE_CONFIG = {
'period':60,
'host':'localhost',
'user':'smarthome',
'password':'smarthome123',
'db':'smarthome'
}
QUEUE_CONFIG = {
'file':'/tmp/mqttDispatcherQueue'
}
Logger.openlog(LOG_FILE)
if DEBUG:
Logger.debugEnable()
if DEBUG_TO_STDOUT:
Logger.debugToStdoutEnable()
Logger.log("MongoImporter starting")
persistentQueue = PersistentQueue(QUEUE_CONFIG)
Logger.log("PersistentQueue instantiated ...")
databaseEngine = DatabaseEngine(persistentQueue, DATABASE_CONFIG)
databaseEngine.start()
Logger.log("DatabaseEngine started ...")
client = MongoClient()
db = client.iot
coll = db.iot
for item in coll.find():
try:
v = None
if (item['metadata']['device'] == 'MeterbusHub') and ('name' in item['metadata']):
if item['metadata']['name'] in ('laundry', 'dryer', 'light', 'dishwasher', 'computer', 'freezer', 'electricity'):
if ('power' in item['data']) and ('energy' in item['data']):
#Logger.log("%s %s: %s %s" % (item['metadata']['name'], item['metadata']['timestamp'], item['data']['power'], item['data']['energy']))
v = EnergyDatabasePreparer(item['metadata']['name'].capitalize(),
item['metadata']['timestamp'],
{ 'power': item['data']['power'],
'energy': item['data']['energy']})
elif item['metadata']['name'] in ('thermom.'):
if ('temperature1' in item['data']):
#Logger.log("%s %s: %s %s %s %s" % (item['metadata']['name'], item['metadata']['timestamp'],
# item['data']['temperature1'], item['data']['temperature2'], item['data']['temperature3'], item['data']['temperature4']))
v = []
vv = TemperatureDatabasePreparer('Zero-Reference',
item['metadata']['timestamp'],
{'temperature': item['data']['temperature1']})
v.append(vv)
vv = TemperatureDatabasePreparer('Hedge',
item['metadata']['timestamp'],
{'temperature': item['data']['temperature2']})
v.append(vv)
vv = TemperatureDatabasePreparer('Indoor Basement',
item['metadata']['timestamp'],
{'temperature': item['data']['temperature3']})
v.append(vv)
vv = TemperatureDatabasePreparer('House',
item['metadata']['timestamp'],
{'temperature': item['data']['temperature4']})
v.append(vv)
elif item['metadata']['device'] == 'ModbusHub':
#Logger.log("%s %s: %s" % ('Freezer', item['metadata']['timestamp'], item['data']['t2']))
#Logger.log("%s %s: %s" % ('Fridge', item['metadata']['timestamp'], item['data']['t1']))
vv = []
v = TemperatureDatabasePreparer('Fridge', item['metadata']['timestamp'],
{'temperature':item['data']['t1']})
vv.append(v)
v = TemperatureDatabasePreparer('Freezer', item['metadata']['timestamp'],
{'temperature':item['data']['t2']})
vv.append(v)
if v:
persistentQueue.execute(v)
except KeyError:
raise Exception("KeyError in item %s" % (item))
Logger.log("Done")