本文整理汇总了Python中domogik.common.database.DbHelper.get_all_sensor方法的典型用法代码示例。如果您正苦于以下问题:Python DbHelper.get_all_sensor方法的具体用法?Python DbHelper.get_all_sensor怎么用?Python DbHelper.get_all_sensor使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类domogik.common.database.DbHelper
的用法示例。
在下文中一共展示了DbHelper.get_all_sensor方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: XplManager
# 需要导入模块: from domogik.common.database import DbHelper [as 别名]
# 或者: from domogik.common.database.DbHelper import get_all_sensor [as 别名]
#.........这里部分代码省略.........
self.log.debug(u"mq reply".format(reply_msg.get()))
self.reply(reply_msg.get())
else:
failed = "xplStat {0} does not exists".format(xplcmd.stat_id)
else:
failed = "Command {0} has no associated xplcommand".format(cmd.id)
else:
failed = "Command {0} does not exists".format(request['cmdid'])
if failed:
self.log.error(failed)
reply_msg = MQMessage()
reply_msg.set_action('cmd.send.result')
reply_msg.add_data('status', False)
reply_msg.add_data('reason', failed)
self.log.debug(u"mq reply".format(reply_msg.get()))
self.reply(reply_msg.get())
def load(self):
""" (re)load all xml files to (re)create _Stats objects
"""
self.log.info(u"Rest Stat Manager loading.... ")
self._db.open_session()
try:
# not the first load : clean
if self.stats != None:
self.log.info(u"reloading")
for stat in self.stats:
self.myxpl.del_listener(stat.get_listener())
### Load stats
# key1, key2 = device_type_id, schema
self.stats = []
for sen in self._db.get_all_sensor():
self.log.debug(sen)
statparam = self._db.get_xpl_stat_param_by_sensor(sen.id)
if statparam is None:
self.log.error( \
'Corresponding xpl-stat param can not be found for sensor {0}' \
.format(sen))
continue
stat = self._db.get_xpl_stat(statparam.xplstat_id)
if stat is None:
self.log.error( \
'Corresponding xpl-stat can not be found for xplstatparam {0}' \
.format(statparam))
continue
dev = self._db.get_device(stat.device_id)
if dev is None:
self.log.error(\
'Corresponding device can not be found for xpl-stat {0}' \
.format(stat))
continue
# xpl-trig
self.stats.append(self._Stat(self.myxpl, dev, stat, sen, \
"xpl-trig", self.log, self._db, self.pub, self.client_conversion_map))
# xpl-stat
self.stats.append(self._Stat(self.myxpl, dev, stat, sen, \
"xpl-stat", self.log, self._db, self.pub, self.client_conversion_map))
except:
self.log.error(u"%s" % traceback.format_exc())
self._db.close_session()
self.log.info(u"Loading finished")
class _Stat:
""" This class define a statistic parser and logger instance
示例2: __init__
# 需要导入模块: from domogik.common.database import DbHelper [as 别名]
# 或者: from domogik.common.database.DbHelper import get_all_sensor [as 别名]
class StatsManager:
"""
Listen on the xPL network and keep stats of device and system state
"""
def __init__(self, handler_params, xpl):
"""
@param handler_params : The server params
@param xpl : A xPL Manager instance
"""
try:
self.myxpl = xpl
# logging initialization
log = logger.Logger('rest-stat')
self._log_stats = log.get_logger('rest-stat')
self._log_stats.info("Rest Stat Manager initialisation...")
# create the dbHelper
self._db = DbHelper()
### Rest data
self.handler_params = handler_params
self.handler_params.append(self._log_stats)
self.handler_params.append(self._db)
self._event_requests = self.handler_params[0]._event_requests
self.get_exception = self.handler_params[0].get_exception
self.stats = None
except :
self._log_stats.error("%s" % traceback.format_exc())
def load(self):
""" (re)load all xml files to (re)create _Stats objects
"""
self._log_stats.info("Rest Stat Manager loading.... ")
try:
# not the first load : clean
if self.stats != None:
for x in self.stats:
self.myxpl.del_listener(x.get_listener())
### Load stats
# key1, key2 = device_type_id, schema
self.stats = []
for sen in self._db.get_all_sensor():
self._log_stats.debug(sen)
statparam = self._db.get_xpl_stat_param_by_sensor(sen.id)
if statparam is None:
self._log_stats.error('Corresponding xpl-stat param can not be found for sensor %s' % (sen))
continue
stat = self._db.get_xpl_stat(statparam.xplstat_id)
if stat is None:
self._log_stats.error('Corresponding xpl-stat can not be found for xplstatparam %s' % (statparam))
continue
dev = self._db.get_device(stat.device_id)
if dev is None:
self._log_stats.error('Corresponding device can not be found for xpl-stat %s' % (stat))
continue
# xpl-trig
self.stats.append(self._Stat(self.myxpl, dev, stat, sen, \
"xpl-trig", self._log_stats, \
self._log_stats, self._db, \
self._event_requests))
# xpl-stat
self.stats.append(self._Stat(self.myxpl, dev, stat, sen, \
"xpl-stat", self._log_stats, \
self._log_stats, self._db, \
self._event_requests))
except:
self._log_stats.error("%s" % traceback.format_exc())
class _Stat:
""" This class define a statistic parser and logger instance
Each instance create a Listener and the associated callbacks
"""
def __init__(self, xpl, dev, stat, sensor, xpl_type, log_stats, log_stats_unknown, db, event_requests):
""" Initialize a stat instance
@param xpl : A xpl manager instance
@param dev : A Device reference
@param stat : A XplStat reference
@param sensor: A Sensor reference
@param xpl-type: what xpl-type to listen for
"""
### Rest data
self._event_requests = event_requests
self._db = db
self._log_stats = log_stats
#self._log_stats_unknown = log_stats_unknown
self._dev = dev
self._stat = stat
self._sen = sensor
### build the filter
params = {'schema': stat.schema, 'xpltype': xpl_type}
for p in stat.params:
if p.static:
params[p.key] = p.value
#.........这里部分代码省略.........
示例3: _SensorStoreThread
# 需要导入模块: from domogik.common.database import DbHelper [as 别名]
# 或者: from domogik.common.database.DbHelper import get_all_sensor [as 别名]
class _SensorStoreThread(threading.Thread):
""" SensorStoreThread class
Thread that will handle the sensorStore queue
every item in this queue should be stored in the db
- conversion will happend
- formula applying
- rounding
- and eventually storing it in the db
Its a thread to make sure it does not block anything else
"""
def __init__(self, queue, log, get_conversion_map, pub):
threading.Thread.__init__(self)
self._log = log
self._db = DbHelper()
self._conv = get_conversion_map
self._queue = queue
self._pub = pub
# on startup, load the device parameters
self.on_device_changed()
def on_device_changed(self):
""" Function called when a device have been changed to reload the devices parameters
"""
self._log.info("Event : one device changed. Reloading data for _SensorStoreThread")
self.all_sensors = {}
self.all_devices = {}
with self._db.session_scope():
for sen in self._db.get_all_sensor():
#print(sen)
#<Sensor: conversion='', value_min='None', history_round='0.0', reference='adco', data_type='DT_String', history_duplicate='False', last_received='1474968431', incremental='False', id='29', history_expire='0', timeout='180', history_store='True', history_max='0', formula='None', device_id='2', last_value='030928084432', value_max='3.09036843008e+11', name='Electric meter address'>
self.all_sensors[str(sen.id)] = { 'id' : sen.id,
'conversion' : sen.conversion,
'value_min' : sen.value_min,
'history_round' : sen.history_round,
'reference' : sen.reference,
'data_type' : sen.data_type,
'history_duplicate' : sen.history_duplicate,
'last_received' : sen.last_received,
'incremental' : sen.incremental,
'history_expire' : sen.history_expire,
'timeout' : sen.timeout,
'history_store' : sen.history_store,
'history_max' : sen.history_max,
'formula' : sen.formula,
'device_id' : sen.device_id,
'last_value' : sen.last_value,
'value_max' : sen.value_max,
'name' : sen.name}
#print(self.all_sensors)
for dev in self._db.list_devices():
#print(dev)
#{'xpl_stats': {u'get_total_space': {'json_id': u'get_total_space', 'schema': u'sensor.basic', 'id': 3, 'parameters': {'dynamic': [{'ignore_values': u'', 'sensor_name': u'get_total_space', 'key': u'current'}], 'static': [{'type': u'string', 'value': u'/', 'key': u'device'}, {'type': None, 'value': u'total_space', 'key': u'type'}]}, 'name': u'Total space'}, u'get_free_space': {'json_id': u'get_free_space', 'schema': u'sensor.basic', 'id': 4, 'parameters': {'dynamic': [{'ignore_values': u'', 'sensor_name': u'get_free_space', 'key': u'current'}], 'static': [{'type': u'string', 'value': u'/', 'key': u'device'}, {'type': None, 'value': u'free_space', 'key': u'type'}]}, 'name': u'Free space'}, u'get_used_space': {'json_id': u'get_used_space', 'schema': u'sensor.basic', 'id': 5, 'parameters': {'dynamic': [{'ignore_values': u'', 'sensor_name': u'get_used_space', 'key': u'current'}], 'static': [{'type': u'string', 'value': u'/', 'key': u'device'}, {'type': None, 'value': u'used_space', 'key': u'type'}]}, 'name': u'Used space'}, u'get_percent_used': {'json_id': u'get_percent_used', 'schema': u'sensor.basic', 'id': 6, 'parameters': {'dynamic': [{'ignore_values': u'', 'sensor_name': u'get_percent_used', 'key': u'current'}], 'static': [{'type': u'string', 'value': u'/', 'key': u'device'}, {'type': None, 'value': u'percent_used', 'key': u'type'}]}, 'name': u'Percent used'}}, 'commands': {}, 'description': u'', 'reference': u'', 'sensors': {u'get_total_space': {'value_min': None, 'data_type': u'DT_Byte', 'incremental': False, 'id': 57, 'reference': u'get_total_space', 'conversion': u'', 'name': u'Total Space', 'last_received': 1459192737, 'timeout': 0, 'formula': None, 'last_value': u'14763409408', 'value_max': 14763409408.0}, u'get_free_space': {'value_min': None, 'data_type': u'DT_Byte', 'incremental': False, 'id': 59, 'reference': u'get_free_space', 'conversion': u'', 'name':u'Free Space', 'last_received': 1459192737, 'timeout': 0, 'formula': None, 'last_value': u'1319346176', 'value_max': 8220349952.0}, u'get_used_space': {'value_min': None, 'data_type': u'DT_Byte', 'incremental': False, 'id': 60, 'reference': u'get_used_space', 'conversion': u'', 'name': u'Used Space', 'last_received': 1459192737, 'timeout': 0, 'formula': None, 'last_value': u'13444063232', 'value_max': 14763409408.0}, u'get_percent_used': {'value_min': None, 'data_type':u'DT_Scaling', 'incremental': False, 'id': 58, 'reference': u'get_percent_used', 'conversion': u'', 'name': u'Percent used', 'last_received': 1459192737, 'timeout': 0, 'formula': None, 'last_value': u'91', 'value_max': 100.0}}, 'xpl_commands': {}, 'client_id': u'plugin-diskfree.ambre', 'device_type_id': u'diskfree.disk_usage', 'client_version': u'1.0', 'parameters': {u'interval': {'value': u'5', 'type': u'integer', 'id': 5, 'key': u'interval'}}, 'id': 3, 'name': u'Ambre /'}
self.all_devices[str(dev['id'])] = {
'client_id': dev['client_id'],
'id': dev['id'],
'name': dev['name'],
}
#print(self.all_devices)
self._log.info("Event : one device changed. Reloading data for _SensorStoreThread -- finished")
def run(self):
while True:
try:
store = True
item = self._queue.get()
#self._log.debug(u"Getting item from the store queue, current length = {0}".format(self._queue.qsize()))
self._log.debug(u"Getting item from the store queue, current length = {0}, item = '{1}'".format(self._queue.qsize(), item))
# handle ignore
value = item['value']
senid = item['sensor_id']
current_date = item['time']
# get the sensor and dev
# TODO : DEBUG - LOG TO REMOVE
#self._log.debug(u"DEBUG - BEFORE THE with self._db.session_scope()")
with self._db.session_scope():
#self._log.debug(u"DEBUG - BEGINNING OF THE with self._db.session_scope()")
#sen = self._db.get_sensor(senid)
#dev = self._db.get_device(sen.device_id)
sen = self.all_sensors[str(senid)]
dev = self.all_devices[str(sen['device_id'])]
# check if we need a conversion
if sen['conversion'] is not None and sen['conversion'] != '':
if dev['client_id'] in self._conv() and sen['conversion'] in self._conv()[dev['client_id']]:
self._log.debug( \
u"Calling conversion {0}".format(sen['conversion']))
exec(self._conv()[dev['client_id']][sen['conversion']])
value = locals()[sen['conversion']](value)
self._log.info( \
u"Storing stat for device '{0}' ({1}) and sensor '{2}' ({3}) with value '{4}' after conversion." \
.format(dev['name'], dev['id'], sen['name'], sen['id'], value))
try:
# do the store
value = self._db.add_sensor_history(\
senid, \
sen, \
value, \
current_date)
#.........这里部分代码省略.........