예제 #1
0
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)

    """
예제 #2
0
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