102 lines
4.1 KiB
Python
102 lines
4.1 KiB
Python
#!/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':1,
|
|
'host':'172.16.2.17',
|
|
'user':'smarthome',
|
|
'password':'smarthome123',
|
|
'db':'testhome'
|
|
}
|
|
QUEUE_CONFIG = {
|
|
'file':'/tmp/mqttDispatcherQueue',
|
|
'maxsize':1000
|
|
}
|
|
|
|
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")
|