Exemplo n.º 1
0
Arquivo: views.py Projeto: nqd/wsn-man
def browser_page(request):
    """
    return list of offlink node that cover by a border router
    """
    lists_offlink_nodes = get_list_of_nodes()
    lists_offlink_nodes_json = json.dumps(lists_offlink_nodes, cls=DjangoJSONEncoder)

    if request.method == "POST":
        gatewayaddress = str(request.POST["gatewayaddress"])
        nodes = None
        if gatewayaddress:
            management = sensornetwork.management()
            nodes = management.offlink_nodes(gatewayaddress)

        if nodes:
            offlink_nodes = OfflinkNodes(border_router_address=gatewayaddress, node_list=nodes)
            offlink_nodes.save()
            for node in nodes:
                node_object, created = Node.objects.get_or_create(ip_address=node)
                if created:
                    node_object.save()

        return render_to_response(
            'browser/browser_page.html',
            {'gatewayaddress': gatewayaddress,
             'lastlistsofnodes': lists_offlink_nodes_json,
             'nodes': nodes,},
            RequestContext(request),
            )
    else:
        return render_to_response(
            'browser/browser_page.html',
            {'lastlistsofnodes': lists_offlink_nodes_json,},
            RequestContext(request))
Exemplo n.º 2
0
Arquivo: views.py Projeto: nqd/wsn-man
def nodes_page(request):
    """
    return json data of list of nodes in the network
    """
    nodes = get_list_of_nodes()
    nodes = json.dumps(nodes, cls=DjangoJSONEncoder)
    return HttpResponse(nodes, content_type="application/json")
Exemplo n.º 3
0
Arquivo: views.py Projeto: nqd/wsn-man
def _network_val(metric):
    """
    this function return network related data overtime
    a helper for network maintainace
    """
    available_val = ['parent_etx', 'rtmetric', 'beacon_interval']
    if not metric in available_val:
        return None

    nodes = get_list_of_nodes().get('nodes')
    network_val = []
    for node in nodes:
        try:
            node_object = Node.objects.filter(ip_address=node).latest('id')
        except:
            node_object = None
        if node_object:
            node_char_objects = NodeChar.objects.filter(node=node_object)
            date = []
            value = []
            for node_char_object in node_char_objects:
                date.append(calendar.timegm(node_char_object.date.utctimetuple())* 1000) #timestamp in js is in ms
                value_name = 'node_char_object'+'.'+metric
                value.append(eval(value_name))
            node_val = {'node':node,
                        'val':[date, value]}
            network_val.append(node_val)

    return network_val
Exemplo n.º 4
0
Arquivo: views.py Projeto: nqd/wsn-man
def sensor_all_page(request):
    """
    return sensors of nodes in the offlink_node
    """
    nodes = get_list_of_nodes().get('nodes')
    nodes_sensors = []
    for node in nodes:
        nodes_sensors.append(_get_sensor_value(node))

    return HttpResponse(json.dumps(nodes_sensors, cls=DjangoJSONEncoder),
                        content_type="application/json")
Exemplo n.º 5
0
Arquivo: views.py Projeto: nqd/wsn-man
def _collect_all(command):
    """
    request to start/stop the collectd from all nodes
    which is manage by the gateway
    command = START/STOP
    """
    offlink_nodes = get_list_of_nodes()
    nodes = offlink_nodes.get('nodes')
    if nodes != None:
        management = sensornetwork.management()
        management.collect_all(nodes, command)    #command = START/STOP
    #TODO: check the reply for status
    status = {}
    status['status'] = 'success'
    return json.dumps(status, cls=DjangoJSONEncoder)
Exemplo n.º 6
0
Arquivo: views.py Projeto: nqd/wsn-man
def network_map(request):
    """
    the function return json file for network map
    """
    nodes = get_list_of_nodes().get('nodes')
    nodes_infor = []
    for node in nodes:
        try:
            node_object = Node.objects.filter(ip_address=node).order_by('-date')[:1][0]
        except:
            node_object = None
        #if the node is not in the Node, then just ignore it
        if node_object:
            try:
                node_infor_object = Infor.objects.filter(node=node_object).order_by('-date')[:1][0]
                node_id = node_infor_object.if_phys_addr
            except:
                node_id = None
            try:
                node_char_object = NodeChar.objects.filter(node=node_object).order_by('-date')[:1][0]
                parent = node_char_object.parent
                etx = node_char_object.parent_etx
            except:
                parent = None
                etx = None
            node_infor = {'node': node_id,
                          'parent': parent,
                          'etx': etx}
            nodes_infor.append(node_infor)

    #convert from border router IP address to its' MAC address
    try:
        offlink_object = OfflinkNodes.objects.all().order_by('-date')[:1][0]
        border_router_ip = offlink_object.border_router_address
        #border_router_mac = Node.objects.filter(ip_address=border_router_ip).order_by('-date')[:1][0]
        #TODO: gateway would be the MAC address, not ip
    except:
        border_router_mac = None
        border_router_ip = None

    network_data = {'gateway':border_router_ip,
                    'nodes':nodes_infor}

    return HttpResponse(json.dumps(network_data, cls=DjangoJSONEncoder),
                        content_type="application/json")