From cdd1ae56e2e49e31c0a1e9fdd77fbfb59bc5142a Mon Sep 17 00:00:00 2001 From: Wolfgang Hottgenroth Date: Tue, 14 Nov 2017 17:59:24 +0100 Subject: [PATCH] MongoImporter started --- MongoImporter.py | 100 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 MongoImporter.py diff --git a/MongoImporter.py b/MongoImporter.py new file mode 100644 index 0000000..362aa49 --- /dev/null +++ b/MongoImporter.py @@ -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") \ No newline at end of file