MongoImporter started
This commit is contained in:
100
MongoImporter.py
Normal file
100
MongoImporter.py
Normal 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")
|
Reference in New Issue
Block a user