Example #1
0
    def test_zone_timeout_restore(self):
        panel_messages = [
            '[0000000000000010----],001,[f707000600e5800c0c020000],"FAULT 1                         "',
            '[0000000000000010----],004,[f707000600e5800c0c020000],"FAULT 4                         "',
            '[0000000000000010----],002,[f707000600e5800c0c020000],"FAULT 2                         "',
            '[0000000000000010----],004,[f707000600e5800c0c020000],"FAULT 4                         "',
            '[0000000000000010----],004,[f707000600e5800c0c020000],"FAULT 4                         "',
        ]

        for m in panel_messages:
            msg = Message(m)

            self._zonetracker.update(msg)

        self.assertIn(4, self._zonetracker._zones_faulted)
        self._zonetracker._zones[
            4].timestamp -= 35  # forcefully expire the zone

        # generic message to force an update.
        msg = Message(
            '[0000000000000000----],000,[f707000600e5800c0c020000],"                                "'
        )
        self._zonetracker.update(msg)

        self.assertNotIn(4, self._zonetracker._zones_faulted)
    def test_message_ready(self):
        msg = Message('[0000000000000010----],001,[f707000600e5800c0c020000],"                                "')
        self._zonetracker.update(msg)

        self.assertEqual(len(self._zonetracker._zones_faulted), 1)

        msg = Message('[1000000000000000----],000,[f707000600e5800c0c020000],"                                "')
        self._zonetracker.update(msg)

        self.assertEqual(len(self._zonetracker._zones_faulted), 0)
Example #3
0
    def test_ECP_failure(self):
        msg = Message(
            '[0000000000000010----],0bf,[f707000600e5800c0c020000],"CHECK 1                         "'
        )
        self._zonetracker.update(msg)

        self.assertEquals(self._zonetracker._zones['1'].status, Zone.CHECK)
Example #4
0
    def test_message_fault_text(self):
        msg = Message(
            '[0000000000000000----],001,[f707000600e5800c0c020000],"FAULT 1                         "'
        )
        self._zonetracker.update(msg)

        self.assertEquals(len(self._zonetracker._zones_faulted), 1)
Example #5
0
    def test_message_parse(self):
        msg = Message(
            '[00000000000000000A--],001,[f707000600e5800c0c020000],"FAULT 1                         "'
        )

        self.assertFalse(msg.ready)
        self.assertFalse(msg.armed_away)
        self.assertFalse(msg.armed_home)
        self.assertFalse(msg.backlight_on)
        self.assertFalse(msg.programming_mode)
        self.assertEqual(msg.beeps, 0)
        self.assertFalse(msg.zone_bypassed)
        self.assertFalse(msg.ac_power)
        self.assertFalse(msg.chime_on)
        self.assertFalse(msg.alarm_event_occurred)
        self.assertFalse(msg.alarm_sounding)
        self.assertFalse(msg.battery_low)
        self.assertFalse(msg.entry_delay_off)
        self.assertFalse(msg.fire_alarm)
        self.assertFalse(msg.check_zone)
        self.assertFalse(msg.perimeter_only)
        self.assertFalse(msg.system_fault)
        self.assertFalse(msg.panel_type, ADEMCO)
        self.assertEqual(msg.numeric_code, '001')
        self.assertEqual(msg.mask, int('07000600', 16))
        self.assertEqual(msg.cursor_location, -1)
        self.assertEqual(msg.text, 'FAULT 1                         ')
Example #6
0
    def test_zone_restore_skip(self):
        panel_messages = [
            '[0000000000000000----],001,[f707000600e5800c0c020000],"FAULT 1                         "',
            '[0000000000000000----],002,[f707000600e5800c0c020000],"FAULT 2                         "',
            '[0000000000000000----],001,[f707000600e5800c0c020000],"FAULT 1                         "',
            '[0000000000000000----],001,[f707000600e5800c0c020000],"FAULT 1                         "'
        ]

        for m in panel_messages:
            msg = Message(m)

            self._zonetracker.update(msg)

        self.assertIn(1, self._zonetracker._zones_faulted)
        self.assertNotIn(2, self._zonetracker._zones_faulted)
Example #7
0
    def test_zone_out_of_order_fault(self):
        panel_messages = [
            '[0000000000000010----],001,[f707000600e5800c0c020000],"FAULT 1                         "',
            '[0000000000000010----],004,[f707000600e5800c0c020000],"FAULT 4                         "',
            '[0000000000000010----],003,[f707000600e5800c0c020000],"FAULT 3                         "',
            '[0000000000000010----],004,[f707000600e5800c0c020000],"FAULT 4                         "',
        ]

        for m in panel_messages:
            msg = Message(m)

            self._zonetracker.update(msg)

        self.assertIn(1, self._zonetracker._zones_faulted)
        self.assertIn(3, self._zonetracker._zones_faulted)
        self.assertIn(4, self._zonetracker._zones_faulted)
Example #8
0
 def test_message_parse_fail(self):
     with self.assertRaises(InvalidMessageError):
         msg = Message('')
Example #9
0
    def test_message_parse(self):
        msg = Message(
            '[0000000000000000----],001,[f707000600e5800c0c020000],"FAULT 1                         "'
        )

        self.assertEquals(msg.numeric_code, '001')