Ejemplo n.º 1
0
def device_detail(id):
    """
    get list of devices
    """
    # session variables required
    user_id = session.get('user_id', None)
    try:
        # Get devices
        device = DeviceSvc.get(user_id, id=id)
    except NoRecordError as error:
        return response_json_error({}, str(error))  # Usually username password mismatch

    try:
        # Get children devices
        device.children = DeviceSvc.get_list(user_id, mother_id=id)
    except NoRecordError:
        # There is a case of no children devices
        device.children = []

    resp = dict(device)

    return response_json_ok(resp, "Retrieve devices successful.")
Ejemplo n.º 2
0
def device_detail(id):
    """
    get list of devices
    """
    # session variables required
    user_id = session.get('user_id', None)
    try:
        # Get devices
        device = DeviceSvc.get(user_id, id=id)
    except NoRecordError as error:
        return response_json_error(
            {}, str(error))  # Usually username password mismatch

    try:
        # Get children devices
        device.children = DeviceSvc.get_list(user_id, mother_id=id)
    except NoRecordError:
        # There is a case of no children devices
        device.children = []

    resp = dict(device)

    return response_json_ok(resp, "Retrieve devices successful.")
Ejemplo n.º 3
0
def device_list():
    """
    get list of devices
    """
    # session variables required
    user_id = session.get('user_id', None)
    # verify from db
    try:
        devices = DeviceSvc.get_list(user_id)
    except NoRecordError as error:
        return response_json_error({}, str(error))  # Usually username password mismatch
    resp = dict()
    resp['devices'] = []
    for obj in devices:
        resp['devices'].append(dict(obj))

    return response_json_ok(resp, "Retrieve devices successful.")
Ejemplo n.º 4
0
def device_list():
    """
    get list of devices
    """
    # session variables required
    user_id = session.get('user_id', None)
    # verify from db
    try:
        devices = DeviceSvc.get_list(user_id)
    except NoRecordError as error:
        return response_json_error(
            {}, str(error))  # Usually username password mismatch
    resp = dict()
    resp['devices'] = []
    for obj in devices:
        resp['devices'].append(dict(obj))

    return response_json_ok(resp, "Retrieve devices successful.")
Ejemplo n.º 5
0
def on_message(client, userdata, msg):
    topic = msg.topic
    payload = msg.payload.decode('utf8')
    matched = record_insert_regex.match(topic)
    print(payload)
    json_payload = json.loads(payload)
    if matched:
        username = matched.group(1)
        location_name = matched.group(2)
        device_name = matched.group(3)
        print("MQTT received. Topic: " + username + " " + location_name + " " +
              device_name + " Payload: " + str(payload))
        # Get user id
        try:
            password = json_payload["password"]
            user = UserSvc.verify(username, password)
            user_id = user.id
            print("User ID: " + str(user_id))
        except NoRecordError as error:
            print(error)
            return  # Usually username password mismatch
        except Exception as error:
            print(error)
            return
        # Get location, deices ids
        try:
            location = LocationSvc.get(user_id, name=location_name)
            device = DeviceSvc.get(user_id, name=device_name)
            print("Location ID: " + str(location.id))
            print("Device ID: " + str(device.id))
        except NoRecordError as error:
            print(error)
            return  # No record

        # Not put data in there
        try:
            print("content: " + str(json_payload["content"]))
            PropertySvc.save_record_dict(device.id, location.id,
                                         json_payload["content"])
        except Exception as error:
            print(error)
            return
    return
Ejemplo n.º 6
0
def record_insert(content, username, location_name, device_name):
    """
    insert a record
    """
    # Get user id
    try:
        """
        Parameters requirements are here
        """
        user_id = session.get('user_id', None)
        if not user_id:
            password = content.get("password")
            user = UserSvc.verify(username, password)
            user_id = user.id
    except NoRecordError as error:
        return response_json_error(
            {}, str(error))  # Usually username password mismatch
    except Exception:
        return response_json_error({}, "Wrong parameter")

    # Get location, deices ids
    try:
        location = LocationSvc.get(user_id, name=location_name)
        device = DeviceSvc.get(user_id, name=device_name)
    except NoRecordError as error:
        return response_json_error({}, str(error))  # No record

    # Not put data in there
    try:
        PropertySvc.save_record_dict(device.id, location.id,
                                     content.get("content"))
    except Exception:
        return response_json_error({}, "Wrong parameter")

    # Publish MQTT data
    topic = "control/" + username + "/" + location_name + "/" + device_name
    mqtt_client.publish(topic=str(topic), payload=request.get_data(), qos=1)
    print("MQTT publish: " + topic + " payload: ")
    print(request.get_data())
    # return
    return response_json_ok({}, "Insertion good")
Ejemplo n.º 7
0
def record_insert(content, username, location_name, device_name):
    """
    insert a record
    """
    # Get user id
    try:
        """
        Parameters requirements are here
        """
        user_id = session.get('user_id', None)
        if not user_id:
            password = content.get("password")
            user = UserSvc.verify(username, password)
            user_id = user.id
    except NoRecordError as error:
        return response_json_error({}, str(error))  # Usually username password mismatch
    except Exception:
        return response_json_error({}, "Wrong parameter")

    # Get location, deices ids
    try:
        location = LocationSvc.get(user_id, name=location_name)
        device = DeviceSvc.get(user_id, name=device_name)
    except NoRecordError as error:
        return response_json_error({}, str(error))  # No record

    # Not put data in there
    try:
        PropertySvc.save_record_dict(device.id, location.id, content.get("content"))
    except Exception:
        return response_json_error({}, "Wrong parameter")

    # Publish MQTT data
    topic = "control/" + username + "/" + location_name + "/" + device_name
    mqtt_client.publish(topic=str(topic), payload=request.get_data(), qos=1)
    print("MQTT publish: " + topic + " payload: ")
    print(request.get_data())
    # return
    return response_json_ok({}, "Insertion good")
Ejemplo n.º 8
0
        "controllable": True,
        "description": "Default messages to device"
    }]
    value_dict = {
        "switch": True,
        "Green": 125,
        "temp": 30.23,
        "msg": "Default"
    }
    try:
        # Create device
        devices_tmp = [None for _ in range(3)]

        devices_tmp[0] = DeviceSvc.create(
            'RPi_1',
            user.id,
            Pi_property,
            location_id=house.id,
            description="This is default device in CEWIT")
        devices_tmp[1] = DeviceSvc.create(
            'RPi_2',
            user.id,
            Pi_property,
            location_id=house.id,
            description="This is default device in CEWIT")
        devices_tmp[2] = DeviceSvc.create(
            'Relay',
            user.id,
            Relay_property,
            location_id=house.id,
            mother_id=devices_tmp[0].id,
            description="This is a relay connected to RPi_1")
        {"type": "boolean", "name": "switch", "controllable": False, "description": "Default switch"},
        {"type": "integer", "name": "Green", "controllable": True, "description": "Default greed color value"},
        {"type": "number", "name": "temp", "controllable": False, "description": "Default temperature value"},
        {"type": "string", "name": "msg", "controllable": True, "description": "Default messages to device"}
    ]
    value_dict = {
        "switch": True,
        "Green": 125,
        "temp": 30.23,
        "msg": "Default"
    }
    try:
        # Create device
        devices_tmp = [None for _ in range(3)]

        devices_tmp[0] = DeviceSvc.create('RPi_1', user.id, Pi_property, location_id=house.id,
                                      description="This is default device in CEWIT")
        devices_tmp[1] = DeviceSvc.create('RPi_2', user.id, Pi_property, location_id=house.id,
                                       description="This is default device in CEWIT")
        devices_tmp[2] = DeviceSvc.create('Relay', user.id, Relay_property, location_id=house.id,
                                       mother_id=devices_tmp[0].id,
                                       description="This is a relay connected to RPi_1")
        # input data
        # RPI
        PropertySvc.save_record_dict(devices_tmp[0].id, devices_tmp[0].location_id, Pi_dict_1)
        PropertySvc.save_record_dict(devices_tmp[1].id, devices_tmp[1].location_id, Pi_dict_2)

        # Relay
        PropertySvc.save_record_dict(devices_tmp[2].id, devices_tmp[2].location_id, Relay_dict)

    except AlreadyExistsError as error:
        print(error)
        {"type": "boolean", "name": "switch", "controllable": False, "description": "Default switch"},
        {"type": "integer", "name": "Green", "controllable": True, "description": "Default greed color value"},
        {"type": "number", "name": "temp", "controllable": False, "description": "Default temperature value"},
        {"type": "string", "name": "msg", "controllable": True, "description": "Default messages to device"}
    ]
    value_dict = {
        "switch": True,
        "Green": 125,
        "temp": 30.23,
        "msg": "Default"
    }
    try:
        # Create device
        devices_tmp = [None for _ in range(9)]

        devices_tmp[0] = DeviceSvc.create('defaultDevice1', user.id, property_list,
                                      description="This is default device in nowhere")
        devices_tmp[1] = DeviceSvc.create('defaultDevice2', user.id, property_list, location_id=house.id,
                                       description="This is default device #1 in the house")
        devices_tmp[2] = DeviceSvc.create('defaultDevice3', user.id, property_list, location_id=house.id,
                                       mother_id=devices_tmp[1].id,
                                       description="This is default device #2 in the house")
        devices_tmp[3] = DeviceSvc.create('defaultDevice4', user.id, property_list, location_id=rooms[0].id,
                                       description="This is default device #1 in room 1")
        devices_tmp[4] = DeviceSvc.create('defaultDevice5', user.id, property_list, location_id=rooms[0].id,
                                       mother_id=devices_tmp[3].id,
                                       description="This is default device #2 in room 1")
        devices_tmp[5] = DeviceSvc.create('defaultDevice6', user.id, property_list, location_id=rooms[0].id,
                                       mother_id=devices_tmp[3].id,
                                       description="This is default device #3 in room 1")
        devices_tmp[6] = DeviceSvc.create('defaultDevice7', user.id, property_list, location_id=rooms[1].id,
                                       description="This is default device #1 in room 2")
Ejemplo n.º 11
0
        "controllable": True,
        "description": "Default messages to device"
    }]
    value_dict = {
        "switch": True,
        "Green": 125,
        "temp": 30.23,
        "msg": "Default"
    }
    try:
        # Create device
        devices_tmp = [None for _ in range(9)]

        devices_tmp[0] = DeviceSvc.create(
            'defaultDevice1',
            user.id,
            property_list,
            description="This is default device in nowhere")
        devices_tmp[1] = DeviceSvc.create(
            'defaultDevice2',
            user.id,
            property_list,
            location_id=house.id,
            description="This is default device #1 in the house")
        devices_tmp[2] = DeviceSvc.create(
            'defaultDevice3',
            user.id,
            property_list,
            location_id=house.id,
            mother_id=devices_tmp[1].id,
            description="This is default device #2 in the house")