Exemplo n.º 1
0
def virtualnode_cmdClasse_get_poll(node_ref, idPoll):
    manager = Manager()
    homeId = node_ref.split(".")[0]
    nodeId = int(node_ref.split(".")[1])
    node = manager.getNode(homeId, nodeId)
    if node is not None:
        poll = node.getPoll(int(idPoll))
        if poll is not None:
            params = {}
            clssId = manager.GetCommandClassId(poll['cmdclass'])
            for v in node.getCmdClassValues(int(clssId)):
                if (v.instance == poll['instance']):
                    params = {
                        "index": v.index,
                        "units": v.units,
                        "type": v.GetType,
                        "genre": v.GetGenre,
                        "listVal": v.getValuesCollection()
                    }
            return jsonify(result='success', vpoll=poll, valueparams=params)
        return json.dumps({
            "error":
            "poll with id {0} doesn't exist for Virtual Node {1}.".format(
                idPoll, node_ref)
        }), 500
    return json.dumps({"error":
                       "Virtual Node {0} not find.".format(node_ref)}), 500
Exemplo n.º 2
0
def virtualnode_cmdClasses(node_ref):
    manager = Manager()
    homeId = node_ref.split(".")[0]
    nodeId = int(node_ref.split(".")[1])
    node = manager.getNode(homeId, nodeId)
    if node is not None:
        if request.method == 'POST':
            #            clss = node.getCmdClass(int(request.form['clssId']))
            if 'manufacturerId' in request.form:
                try:
                    node.SetManufacturerId(
                        int(request.form['manufacturerId'], 16))
                    flash(
                        u"Manufactured id is changed to : {0}".format(
                            request.form['manufacturerId']), 'success')
                except:
                    flash(
                        u"ERROR: You must enter an hexadecimal format ({0})".
                        format(request.form['manufacturerId']), 'error')
            elif 'manufacturerName' in request.form:
                node.SetManufacturerName(request.form['manufacturerName'])
                flash(
                    u"Manufactured name is changed to : {0}".format(
                        request.form['manufacturerName']), 'success')
            else:
                flash(u"Requête inconnue : {0}".format(request.form), 'error')
        return render_template('virtualnode_cmd_classes.html',
                               mactive="virtualnodes",
                               active='cmd_classes',
                               node_ref=node_ref,
                               node=node)
    return json.dumps({"error":
                       "Virtual Node {0} not find.".format(node_ref)}), 500
Exemplo n.º 3
0
def virtualnode_set_state(node_ref, state):
    manager = Manager()
    homeId = node_ref.split(".")[0]
    nodeId = int(node_ref.split(".")[1])
    node = manager.getNode(homeId, nodeId)
    if node is not None:
        node.setFailed(state)
        return jsonify(result='success', state=state)
    return json.dumps({"error": "Virtual Node not find"}), 500
Exemplo n.º 4
0
def virtualnode_configs(node_ref):
    manager = Manager()
    homeId = node_ref.split(".")[0]
    nodeId = int(node_ref.split(".")[1])
    node = manager.getNode(homeId, nodeId)
    if node is not None:
        return render_template('virtualnode_config.html',
                               mactive="virtualnodes",
                               active='config',
                               node_ref=node_ref,
                               node=node)
    return json.dumps({"error": "Virtual Node not find"}), 500
Exemplo n.º 5
0
def virtualnode_cmdClasse_create_poll(node_ref, clssId):
    manager = Manager()
    homeId = node_ref.split(".")[0]
    nodeId = int(node_ref.split(".")[1])
    node = manager.getNode(homeId, nodeId)
    instance = int(request.args.get('instance', 0, type=str))
    label = request.args.get('label', 0, type=str)
    timing = int(request.args.get('timing', 0, type=str))
    status = request.args.get('status', 0, type=str)
    polltype = request.args.get('polltype', '', type=str)
    mode = request.args.get('mode')
    values = json.loads(request.args.get('values'))
    step = request.args.get('step', '')
    print request.args.items()
    print request.form
    print homeId, nodeId, instance, label, timing, status, polltype, mode, values, step
    #    labels =[]
    #    instances = []
    if node is not None:
        clss = node.getCmdClass(int(clssId))
        result, msg = node.addPollValue({
            'cmdclass':
            clss.GetCommandClassName,
            'instance':
            instance,
            'label':
            label,
            'timing':
            timing,
            'unable':
            True if status == 'unable' else False,
            'params': {
                'polltype': polltype,
                'mode': mode,
                'values': values,
                'step': step
            }
        })
        if result == 'error':
            return jsonify(result='error', msg=msg)
        return jsonify(result='success', msg='Poll value created')


#        return render_template('virtualnode_config.html',
#            mactive="virtualnodes",
#            active = 'config',
#            node_ref = node_ref,
#            node = node
#            )
#        return virtualnode_configs(node_ref)
#        return redirect(url_for("/virtualnodes//config",  node_ref = node_ref))
    return json.dumps({"error":
                       "Virtual Node {0} not find.".format(node_ref)}), 500
Exemplo n.º 6
0
def virtualnode_create_node_copy(node_ref):
    manager = Manager()
    homeId = node_ref.split(".")[0]
    nodeId = int(node_ref.split(".")[1])
    node = manager.getNode(homeId, nodeId)
    newNode = manager.copyNode(node)
    if newNode:
        result = 'success'
        msg = u"New Node created by copying {0}, reload virtual nodes list.".format(
            node_ref)
    else:
        msg = u"error on copying {0}".format(node_ref)
        result = 'error'
    return jsonify(result=result, msg=msg)
Exemplo n.º 7
0
def virtualnode_cmdClasse_delete_poll(node_ref, idPoll):
    manager = Manager()
    homeId = node_ref.split(".")[0]
    nodeId = int(node_ref.split(".")[1])
    node = manager.getNode(homeId, nodeId)
    if node is not None:
        if node.deletePoll(int(idPoll)):
            return virtualnode_configs(node_ref)
        else:
            return jsonify(result='error',
                           msg='poll {0} not find'.format(idPoll),
                           idPoll=idPoll)
    return json.dumps({"error":
                       "Virtual Node {0} not find.".format(node_ref)}), 500
Exemplo n.º 8
0
def virtualnode_cmdClasse_create_edit_poll(node_ref, idPoll):
    manager = Manager()
    homeId = node_ref.split(".")[0]
    nodeId = int(node_ref.split(".")[1])
    node = manager.getNode(homeId, nodeId)
    poll = node.getPoll(int(idPoll))
    if node is not None:
        return render_template('virtualnode_create_edit_poll.html',
                               mactive="virtualnodes",
                               active='config',
                               node_ref=node_ref,
                               node=node,
                               poll=poll)
    return json.dumps({"error":
                       "Virtual Node {0} not find.".format(node_ref)}), 500
Exemplo n.º 9
0
def virtualnode_exclude_node(homeId, nodeId):
    manager = Manager()
    nodeId = int(nodeId)
    node = manager.getNode(int(homeId), nodeId)
    if node:
        if manager.excludeNode(node):
            result = 'success'
            msg = u"Node exclude from {0}, reload virtual nodes list.".format(
                nodeId)
        else:
            msg = u"error on exclusion {0}. Check if Controller is in exclusion".format(
                nodeId)
            result = 'error'
    else:
        msg = u"error on exclusion node {0} node found.".format(nodeId)
        result = 'error'
    return jsonify(result=result, msg=msg)
Exemplo n.º 10
0
def virtualnode_cmdClss_update_extra_params(node_ref, clssId):
    extraP = json.loads(request.args.get('extraP'))
    instance = request.args.get('instance', 0, type=int)
    print " update_extra_params clss :", clssId, instance, extraP
    manager = Manager()
    homeId = node_ref.split(".")[0]
    nodeId = int(node_ref.split(".")[1])
    node = manager.getNode(homeId, nodeId)
    if node is not None:
        clss = node.getCmdClass(int(clssId))
        if clss.setInstanceExtraParams(instance, extraP):
            result = 'success'
            msg = u"Extra parameters {0} instance {1} are changed to : {2}".format(
                clss.GetCommandClassName, instance, extraP)
        else:
            msg = u"Extra parameters {0} instance {1} can't set to : {2}".format(
                clss.GetCommandClassName, instance, extraP)
            result = 'error'
        return jsonify(result=result, msg=msg)
    return json.dumps({"error":
                       "Virtual Node {0} not find.".format(node_ref)}), 500
Exemplo n.º 11
0
def virtualnode_cmdClasse_update_poll(node_ref, poll_id):
    manager = Manager()
    homeId = node_ref.split(".")[0]
    nodeId = int(node_ref.split(".")[1])
    node = manager.getNode(homeId, nodeId)
    clssId = int(request.args.get('clssid', 0, type=str))
    instance = int(request.args.get('instance', 0, type=str))
    label = request.args.get('label', 0, type=str)
    timing = int(request.args.get('timing', 0, type=str))
    status = request.args.get('status', 0, type=str)
    polltype = request.args.get('polltype', '', type=str)
    mode = request.args.get('mode')
    values = json.loads(request.args.get('values'))
    step = request.args.get('step', '')
    print request.args.items()
    print request.form
    print homeId, nodeId, instance, label, timing, status, polltype, mode, values, step
    if node is not None:
        clss = node.getCmdClass(int(clssId))
        if not node.updatePollParam(
                int(poll_id), {
                    'cmdclass': clss.GetCommandClassName,
                    'instance': instance,
                    'label': label,
                    'timing': timing,
                    'unable': True if status == 'unable' else False,
                    'params': {
                        'polltype': polltype,
                        'mode': mode,
                        'values': values,
                        'step': step
                    }
                }):
            return jsonify(
                result='error',
                msg="Poll {0} not exist for node {1}, parameters update fail.".
                format(poll_id, node_ref))
        return jsonify(result='success', msg='Parameters of poll updated')
    return json.dumps({"error":
                       "Virtual Node {0} not find.".format(node_ref)}), 500
Exemplo n.º 12
0
def virtualnode_include_node(homeId, nodeId):
    manager = Manager()
    nodeId = int(nodeId)
    node = manager.getNode(0, nodeId)
    homeId = int(homeId)
    driver = manager.GetDriver(homeId)
    if driver.IsInIncludeState:
        if node:
            if manager.includeNewNode(int(homeId), node):
                result = 'success'
                msg = u"New Node include in {0}, reload virtual nodes list.".format(
                    nodeId)
            else:
                msg = u"error on inclusion {0}. Check if Controller is in inclusion".format(
                    nodeId)
                result = 'error'
        else:
            msg = u"error on inclusion node {0} node found.".format(nodeId)
            result = 'error'
    elif driver.IsInReplaceNodeFailState:
        if node:
            if driver.replaceNode(node):
                result = 'success'
                msg = u"New Node include in {0} with replace fail node, reload virtual nodes list.".format(
                    nodeId)
            else:
                msg = u"error on inclusion {0} with replace fail node. Check if Controller is in inclusion".format(
                    nodeId)
                result = 'error'
        else:
            msg = u"error on inclusion node {0} node found.".format(nodeId)
            result = 'error'
    else:
        msg = u"error controller {0} not in inclusion or replace mode.".format(
            manager.matchHomeID(homeId))
        result = "error"
    return jsonify(result=result, msg=msg)
Exemplo n.º 13
0
def virtualnode_cmdClasse_get_label(node_ref, clssId):
    manager = Manager()
    homeId = node_ref.split(".")[0]
    nodeId = int(node_ref.split(".")[1])
    node = manager.getNode(homeId, nodeId)
    instance = int(request.args.get('instance', 0, type=str))
    label = request.args.get('label', 0, type=str)
    labels = []
    instances = []
    if node is not None:
        print type(clssId), clssId
        try:
            clssId = int(clssId)
        except:
            clssId = manager.GetCommandClassId(clssId)
        print type(clssId), clssId
        for v in node.getCmdClassValues(int(clssId)):
            if v.instance not in instances: instances.append(v.instance)
        if instance not in instances: instance = 0
        for v in node.getCmdClassValues(int(clssId)):
            if (instance == 0) or (v.instance == instance):
                labels.append({
                    "instance": v.instance,
                    "label": v.label,
                    "index": v.index,
                    "units": v.units,
                    "type": v.GetType,
                    "genre": v.GetGenre,
                    "listVal": v.getValuesCollection()
                })
        return jsonify(result='success',
                       labels=labels,
                       label=label,
                       instances=instances,
                       instance=instance)
    return json.dumps({"error":
                       "Virtual Node {0} not find.".format(node_ref)}), 500
Exemplo n.º 14
0
def virtualnode_cmdClasse_update_config_poll(node_ref):
    inputId = request.args.get('inputId', 0, type=str)
    #    clssId = request.args.get('clssId', 0, type=int)
    key = request.args.get('key', 0, type=str)
    value = request.args.get('value', 0, type=str)
    #    instance = int(request.args.get('instance', 0, type=str))
    #    label = request.args.get('label', 0, type=str)
    idPoll = int(request.args.get('idPoll', 0, type=str))
    manager = Manager()
    homeId = node_ref.split(".")[0]
    nodeId = int(node_ref.split(".")[1])
    node = manager.getNode(homeId, nodeId)
    poll = node.getPoll(idPoll)
    if node is not None:
        if poll is not None:
            print "Update config for polled clss :", poll[
                'cmdclass'], key, value, poll['instance']
            result = 'success'
            data = []
            if type(value) == str: value = u"{0}".format(value)
            if key[:6] == 'unable':
                value = 'start'
                if node.setPollParam(idPoll, 'unable', True):
                    msg = u"Start poll for cmdclass: {0}, instance: {1}".format(
                        poll['cmdclass'], poll['instance'])
                else:
                    msg = u"Poll doesn't exist : {0}, id : {1}".format(
                        poll['cmdclass'], idPoll)
                    result = 'error'
            elif key[:7] == 'disable':
                value = 'stop'
                if node.setPollParam(idPoll, 'unable', False):
                    msg = u"Stop poll for cmdclass: {0}, instance: {1}".format(
                        poll['cmdclass'], poll['instance'])
                else:
                    msg = u"Poll doesn't exist : {0}, id : {1}".format(
                        poll['cmdclass'], idPoll)
                    result = 'error'
    #        elif key[:7] == 'clss_P-':
    #            value = int(clssId)
    #            if node.setPollParam(idPoll, 'cmdclass', node.getCmdClass(value).GetCommandClassName):
    #                msg = u"Changed cmdclass for poll cmdclass: {0}, instance: {1}".format(clssId, instance)
    #                for v in node.getCmdClassValues(value) :
    #                    if  v.instance == instance : data.append({"instance": v.instance, "label": v.label, "index": v.index, "units": v.units})
    #                print "Set data", data
    #            else :
    #                msg = u"Poll doesn't exist : {0}, id : {1}".format(clssId,  idPoll)
    #                result = 'error'
    #        elif key[:11] == 'clss_lab_P-':
    #            value = label
    #            if node.setPollParam(idPoll, 'label', value):
    #                msg = u"Changed label for poll cmdclass: {0}, instance: {1}".format(clssId, instance)
    #            else :
    #                msg = u"Poll doesn't exist : {0}, id : {1}".format(clssId,  idPoll)
    #                result = 'error'
    #        elif key[:8] == 'instance':
    #            value = int(value)
    #            if node.setPollParam(idPoll, 'instance', value):
    #                msg = u"Changed instance for poll cmdclass: {0}, instance: {1}".format(clssId, instance)
    #            else :
    #                msg = u"Poll doesn't exist : {0}, id : {1}".format(clssId,  idPoll)
    #                result = 'error'
            elif key[:6] == 'timing':
                value = int(value)
                if node.setPollParam(idPoll, 'timing', value):
                    msg = u"Changed timing for poll cmdclass: {0}, instance: {1}".format(
                        poll['cmdclass'], poll['instance'])
                else:
                    msg = u"Poll doesn't exist : {0}, id : {1}".format(
                        poll['cmdclass'], idPoll)
                    result = 'error'
            elif key[:11] == 'params':
                #                params = request.args.get('params', 0, type=str)
                print "******************************************"
                print request.args.items()
                print request.form
                params = json.loads(request.args.get('params'))
                print "*********", params
                find = True
                if value == 'values':
                    poll['params']['values'] = params
                else:
                    find = False
                    msg = u"key value not handle : {0}, params : {1}".format(
                        value, params)
                    result = 'error'
                if find:
                    if node.setPollParam(idPoll, 'params', poll['params']):
                        msg = u"Changed parameters for poll: {0}".format(poll)
                    else:
                        msg = u"Error on setting paramaters '{0}': {1}".format(
                            value, poll['params'])
                        result = 'error'
            else:
                msg = u"Resquest not handled actually : {0}, value : {1}".format(
                    key, value)
                result = 'error'
        else:
            return json.dumps({
                "error":
                "poll with id {0} doesn't exist for Virtual Node {1}.".format(
                    idPoll, node_ref)
            }), 500
        return jsonify(inputId=inputId,
                       value=value,
                       result=result,
                       msg=msg,
                       idPoll=idPoll,
                       data=data)
    return json.dumps({"error":
                       "Virtual Node {0} not find.".format(node_ref)}), 500
Exemplo n.º 15
0
def virtualnode_cmdClss_update(node_ref):
    inputId = request.args.get('inputId', 0, type=str)
    clssId = request.args.get('clssId', 0, type=int)
    key = request.args.get('key', 0, type=str)
    value = request.args.get('value', 0, type=str)
    print "Update cms clss :", clssId, key, value
    manager = Manager()
    homeId = node_ref.split(".")[0]
    nodeId = int(node_ref.split(".")[1])
    node = manager.getNode(homeId, nodeId)
    if node is not None:
        clss = node.getCmdClass(int(clssId))
        result = 'success'
        if type(value) == str: value = u"{0}".format(value)
        if key == 'issupported':
            msg = u"Cmd clss supported is changed to : {0}".format(value)
            if value == 'true': clss.m_getSupported = True
            elif value == 'false': clss.m_getSupported = False
            else:
                msg = u"ERROR: Not true/false format ({0})".format(value)
                result = 'error'
                value = clss.m_getSupported
        elif key == 'version':
            clss.m_version = value
            msg = u"Cmd clss version is changed to : {0}".format(value)
        elif key == 'manufacturerId':
            try:
                node.SetManufacturerId(int(value, 16))
                msg = u"Manufactured id is changed to : {0}".format(value)
            except:
                msg = u"ERROR: You must enter an hexadecimal format ({0})".format(
                    value)
                result = 'error'
                value = node.GetManufacturerId
        elif key == 'manufacturerName':
            node.SetManufacturerName(value)
            msg = u"Manufactured name is changed to : {0}".format(value)
        elif key == 'productType':
            try:
                node.SetProductType(int(value, 16))
                msg = u"ProductType is changed to : {0}".format(value)
            except:
                msg = u"ERROR: You must enter an hexadecimal format ({0})".format(
                    value)
                result = 'error'
                value = node.GetProductType
        elif key == 'productId':
            try:
                node.SetProductId(int(value, 16))
                msg = u"Product id is changed to : {0}".format(value)
            except:
                msg = u"ERROR: You must enter an hexadecimal format ({0})".format(
                    value)
                result = 'error'
                value = node.GetProductId
        elif key[:4] == 'grp_':
            indexGrp = int(key[4:])
            result, error = clss.SetGroupKey(indexGrp, 'label', value)
            if result:
                msg = u"Label group {0} is changed to : {1}".format(
                    indexGrp, value)
            else:
                result = 'error'
                msg = u"Label group {0} can't set to : {1} - {2}".format(
                    indexGrp, value, error)
                value = clss.getGroup(indexGrp)['label']
        elif key[:4] == 'max_':
            indexGrp = int(key[4:])
            try:
                result, error = clss.SetGroupKey(indexGrp, 'max_associations',
                                                 int(value))
                if result:
                    msg = u"max_associations group {0} is changed to : {1}".format(
                        indexGrp, value)
                else:
                    result = 'error'
                    msg = u"max_associations group {0} can't set to : {1} - {2}".format(
                        indexGrp, value, error)
                    value = clss.groups(indexGrp)['max_associations']
            except:
                msg = u"ERROR: You must enter number ({0})".format(value)
                result = 'error'
                value = clss.getGroup(indexGrp)['max_associations']
        elif key[:9] == 'grpNodes_':
            indexGrp = int(key[9:])
            try:
                value = value.split(',')
                result, error = clss.SetGroupKey(indexGrp, 'nodes',
                                                 [int(i) for i in value])
                if result:
                    msg = u"nodes in group {0} are changed to : {1}".format(
                        indexGrp, value)
                else:
                    result = 'error'
                    msg = u"nodes in group {0} can't set to : {1} - {2}".format(
                        indexGrp, value, error)
                    value = clss.groups(indexGrp)['nodes']
            except:
                msg = u"ERROR: bad format of list of nodes ({0})".format(value)
                result = 'error'
                value = clss.getGroup(indexGrp)['nodes']
        elif key[:10] == 'endPindex_':
            id = int(key[10:])
            num = 1
            #            instance = {}
            for i, ep in clss._node.getAllInstance().iteritems():
                if num == id:
                    try:
                        result, error = clss._node.setInstanceIndex(
                            i, int(value))
                        if result:
                            msg = u"instance {0} index is changed to : {1}".format(
                                id, value)
                        else:
                            result = 'error'
                            msg = u"instance {0} index can't set to : {1} - {2}".format(
                                id, value, error)
                            value = i
                        break
                    except:
                        msg = u"ERROR: You must enter number ({0})".format(
                            value)
                        result = 'error'
                        value = i
                        break
                num += 1
        elif key[:5] == 'endP_':
            id = int(key[5:])
            num = 1
            #            instance = {}
            for i, ep in clss._node.getAllInstance().iteritems():
                if num == id:
                    try:
                        result, error = clss._node.setInstanceEndPoint(
                            i, int(value))
                        if result:
                            msg = u"instance {0} EndPoint is changed to : {1}".format(
                                id, value)
                        else:
                            result = 'error'
                            msg = u"instance {0} EndPoint can't set to : {1} - {2}".format(
                                id, value, error)
                            if i in clss._node.mapEndPoints:
                                value = clss._node.mapEndPoints[i].keys()[0]
                            else:
                                value = '255'
                        break
                    except:
                        msg = u"ERROR: You must enter number ({0})".format(
                            value)
                        result = 'error'
                        if i in clss._node.mapEndPoints:
                            value = clss._node.mapEndPoints[i].keys()[0]
                        else:
                            value = '255'
                        break
                num += 1
        elif key[:9] == 'clssEndP_':
            id = int(key[9:])
            num = 1
            #            instance = {}
            for i, ep in clss._node.getAllInstance().iteritems():
                if num == id:
                    endP = ep[ep.keys()[0]]
                    try:
                        value = value.split(',')
                        value = [int(v, 16) for v in value]
                    except:
                        value = []
                    result, error = clss._node.setInstanceClssEndPoint(
                        i,
                        ep.keys()[0], value)
                    if result:
                        msg = u"Class of instance {0} are changed to : {1}".format(
                            id, value)
                    else:
                        result = 'error'
                        msg = u"Class of instance {0} can't set to : {1} - {2}".format(
                            id, value, error)
                        if i in clss._node.mapEndPoints:
                            value = clss._node.mapEndPoints[i][endP]
                        else:
                            value = []
                    break
                num += 1
        else:
            msg = u"Resquest not handled actually : {0}, value : {1}".format(
                key, value)
            result = 'error'
        return jsonify(inputId=inputId, value=value, result=result, msg=msg)
    return json.dumps({"error":
                       "Virtual Node {0} not find.".format(node_ref)}), 500