Example #1
0
    def testCreateAlertCondtion(self):
        dev_id = 1
        dev = accessdb.get_device_from_pk(1)
        dev_name = "dev%s" % dev_id
        if dev is None:
            dev = accessdb.create_device(dev_name, "")
        self.assertEqual(dev.dev_name, dev_name)

        # Create AlertCondition
        alertCon = accessdb.create_alarm_by_temp(dev, "on", "gt", 37.5)
        ret = alertCon is None
        self.assertEqual(ret, False)

        # Get condition
        alertCon = accessdb.get_alarm_by_temp(dev_id)
        ret = alertCon is None
        self.assertEqual(ret, False)

        # Disable condtion alert
        ret = accessdb.disable_alarm_by_temp(dev_id)
        self.assertEqual(ret, True)

        # check disable alertContion
        alertCon = accessdb.get_alarm_by_temp(dev_id)
        ret = alertCon is None
        self.assertEqual(ret, False)
        self.assertEqual(alertCon.active, False)

        # Enable condtion
        condition = "gte"
        action = "on"
        value = 40

        ret = accessdb.enable_alarm_by_temp(dev_id, condition, action, value)
        self.assertEqual(ret, True)
        alertCon = accessdb.get_alarm_by_temp(dev_id)
        ret = alertCon is None
        self.assertEqual(ret, False)
        self.assertEqual(alertCon.active, True)
        self.assertEqual(alertCon.action, action)
        self.assertEqual(alertCon.value, value)
        self.assertEqual(alertCon.condition, condition)

        dev2 = accessdb.create_device("dev2", "")
        self.assertEqual(dev2.dev_name, "dev2")
        alertCon = accessdb.create_alarm_by_temp(dev2, action, condition, value)

        alertList = accessdb.get_alarm_by_temp_list()
        self.assertEqual(len(alertList), 2)

        ret = alertCon is None
        self.assertEqual(ret, False)
        self.assertEqual(alertCon.condition, condition)

        alertList = accessdb.get_true_alarm_by_temp_list(50)
        self.assertEqual(len(alertList), 2)

        # self.assertEqual(ret, True)

        alarm_object = accessdb.get_enabled_alarm_by_temp_for_device(1)
        self.assertEqual(alarm_object.active, True)
        ret = accessdb.is_true_alarm_by_temp(alarm_object, 50)
        self.assertEqual(ret, True)
        ret = accessdb.is_true_alarm_by_temp(alarm_object, 20)
        self.assertEqual(ret, False)

        ret = accessdb.disable_alarm_by_temp(alarm_object.dev.id)
        self.assertEqual(ret, True)
        alarm_object = accessdb.get_enabled_alarm_by_temp_for_device(1)
        self.assertEqual(alarm_object is None, True)
        ret = accessdb.enable_alarm_by_temp(1, action, condition, value)
        self.assertEqual(ret, True)
        alarm_object = accessdb.get_enabled_alarm_by_temp_for_device(1)
        self.assertEqual(alarm_object is None, False)

        old_value = alarm_object.true_count
        ret = accessdb.change_value_true_count_alarm_by_temp(alarm_object, 0)
        self.assertEqual(ret, False)
        alarm_object = accessdb.get_alarm_by_temp(1)
        self.assertEqual(alarm_object is None, False)
        self.assertEqual(alarm_object.true_count, 0)

        old_value = alarm_object.true_count
        ret = accessdb.change_value_true_count_alarm_by_temp(alarm_object, 1)
        self.assertEqual(ret, True)
        self.assertEqual(alarm_object.true_count, old_value + 1)

        ret = accessdb.reset_count_alarm_by_temp_object(alarm_object)
        self.assertEqual(ret, True)

        self.assertEqual(alarm_object.true_count, 0)
        self.assertEqual(alarm_object.false_count, 0)

        old_value = alarm_object.false_count
        ret = accessdb.change_value_false_count_alarm_by_temp(alarm_object, 0)
        self.assertEqual(ret, False)

        old_value - alarm_object.false_count
        ret = accessdb.change_value_false_count_alarm_by_temp(alarm_object, 1)
        self.assertEqual(ret, True)
        self.assertEqual(alarm_object.false_count, old_value + 1)

        ret = accessdb.is_true_alarm_by_temp(alarm_object, 20)
        self.assertEqual(ret, False)

        ret = accessdb.is_true_condition(alarm_object)
        self.assertEqual(ret, False)

        accessdb.change_value_true_count_alarm_by_temp(alarm_object, 1)
        ret = accessdb.reset_true_count_alarm_by_temp_object(alarm_object)
        self.assertEqual(ret, True)
        self.assertEqual(alarm_object.true_count, 0)

        accessdb.change_value_false_count_alarm_by_temp(alarm_object, 1)
        ret = accessdb.reset_false_count_alarm_by_temp_object(alarm_object)
        self.assertEqual(ret, True)
        self.assertEqual(alarm_object.false_count, 0)

        accessdb.check_alarm_by_temp()

# Thread run video
def threaded_function(cmd):
    commands.getoutput(cmd)

# Update status of device when raspi was booted
dev_list = accessdb.get_device_list()
for dev in dev_list:
    status = controldev.get_device_status(dev.id)

    # Update status of device
    controldev.update_status_device(dev.id, status)

    # Reset alarm by tem when raspi was booted.
    accessdb.reset_count_alarm_by_temp_object(dev)

isOn = False
thread = None
while True:


    # Check cam to write to file
    ret = controldev.check_exist_raspivid_process()
    if ret is False:
        command = controldev.get_command_run_raspivid_process_without_streaming()
        thread = Thread(target=threaded_function, args=(command,))
        thread.start()

    now_time = apitimer.get_full_unit_now_time()
    logger.debug(now_time)