def start(): r = redis.Redis(host="127.0.0.1", port=6379, db=0) # load the plugins for every device plugin_manager = PluginManager() plugin_manager.LoadAllPlugin() plugins = {} for device in r.lrange("devices", 0, -1): protocol = r.get("protocol:%s" % device) plugin = plugin_manager.GetPluginByName(protocol.title()) host = r.get("ip:%s" % device) port = r.get("port:%s" % device) plugin.init(host, port) plugins[device] = plugin while True: print 'in start' for device in r.lrange("devices", 0, -1): addr = r.get("addr:%s" % device) for spot in r.lrange("spots:%s" % device, 0, -1): command = r.get("device:%s:spot:%s:%s" % (device, spot[1:], 'command')) cmd_param = r.get("device:%s:spot:%s:%s" % (device, spot[1:], 'cmd_param')) cmd_length = r.get("device:%s:spot:%s:%s" % (device, spot[1:], 'cmd_length')) ratio = r.get("device:%s:spot:%s:%s" % (device, spot[1:], 'ratio')) value = plugins[device].get(addr, command, cmd_param, cmd_length) if value is None: print 'device:%s:spot:%s get error' % (device, spot) continue if spot[0] == 'A': value_type = r.get("device:%s:spot:%s:%s" % (device, spot[1:], 'value_type')) precision = r.get("device:%s:spot:%s:%s" % (device, spot[1:], 'precision')) min_value = r.get("device:%s:spot:%s:%s" % (device, spot[1:], 'min_value')) max_value = r.get("device:%s:spot:%s:%s" % (device, spot[1:], 'max_value')) value, status = plugins[device].transformAnalog(value, ratio, value_type, precision, min_value, max_value) elif spot[0] == 'D': mapper = r.get("device:%s:spot:%s:%s" % (device, spot[1:], 'mapper')) value, status = plugins[device].transformDigit(value, ratio, mapper) r.set("device:%s:spot:%s:value" % (device, spot[1:]), value) r.set("device:%s:spot:%s:status" % (device, spot[1:]), status) time.sleep(2) """
import sys from PluginManager import PluginManager from PluginManager import __ALLMODEL__ if __name__ == '__main__': PluginManager.LoadAllPlugin() for SingleModel in __ALLMODEL__: plugins = SingleModel.GetPluginObject() for item in plugins: item.Start() pluginName = 'plugin1.Plugin2' obj = PluginManager.GetPluginByName(pluginName) if obj: obj.Start() else: print 'plugin[%s] is not exists' % pluginName