Browse Source

Rough implementation of fire/battery low events.

pyserial_fix
Scott Petersen 11 years ago
parent
commit
dfa0968d32
2 changed files with 29 additions and 7 deletions
  1. +12
    -0
      pyad2usb/ad2usb.py
  2. +17
    -7
      test.py

+ 12
- 0
pyad2usb/ad2usb.py View File

@@ -163,6 +163,7 @@ class AD2USB(object):
on_config_received = event.Event('Called when the device receives its configuration.')
on_zone_fault = event.Event('Called when the device detects a zone fault.')
on_zone_restore = event.Event('Called when the device detects that a fault is restored.')
on_low_battery = event.Event('Called when the device detects a low battery.')

# Mid-level Events
on_message = event.Event('Called when a message has been received from the device.')
@@ -191,6 +192,7 @@ class AD2USB(object):
self._bypass_status = None
self._armed_status = None
self._fire_status = None
self._battery_status = None

self.address = 18
self.configbits = 0xFF00
@@ -386,6 +388,15 @@ class AD2USB(object):
else:
self.on_disarm()

# TODO: This needs a timeout or something.. only set on the LO BAT messages
# instead of all messages after.
if message.battery_low != self._battery_status:
self._battery_status, old_status = message.battery_low, self._battery_status

if old_status is not None and self._battery_status == True:
self.on_low_battery(self._battery_status)

# TODO: Also needs a timeout.
if message.fire_alarm != self._fire_status:
self._fire_status, old_status = message.fire_alarm, self._fire_status

@@ -394,6 +405,7 @@ class AD2USB(object):

self._update_zone_tracker(message)


def _update_zone_tracker(self, message):
# Retrieve a list of faults.
# NOTE: This only happens on first boot or after exiting programming mode.


+ 17
- 7
test.py View File

@@ -90,6 +90,12 @@ def handle_fault(sender, args):
def handle_restore(sender, args):
print 'zone restored', args

def handle_battery(sender, args):
print 'low battery', args

def handle_fire(sender, args):
print 'FIRE!', args

def upload_usb():
dev = pyad2usb.ad2usb.devices.USBDevice()

@@ -227,7 +233,7 @@ def test_socket():
#a2u.on_read += handle_read
#a2u.on_write += handle_write

a2u.on_message += handle_message
#a2u.on_message += handle_message
a2u.on_power_changed += handle_power_changed
a2u.on_alarm += handle_alarm_bell
a2u.on_bypass += handle_bypass
@@ -237,6 +243,10 @@ def test_socket():
a2u.on_disarm += handle_disarm
a2u.on_zone_fault += handle_fault
a2u.on_zone_restore += handle_restore
#
a2u.on_fire += handle_fire
a2u.on_low_battery += handle_battery


a2u.open()
#a2u.save_config()
@@ -251,15 +261,15 @@ def test_socket():
#a2u.emulate_lrr = False
#a2u.deduplicate = False

#time.sleep(3)
#a2u.emulate_zone[1] = True
time.sleep(3)
#a2u.emulate_zone[1] = False
#a2u.save_config()

time.sleep(1)
a2u.fault_zone(17, True)
#time.sleep(1)
#a2u.fault_zone(17, True)

time.sleep(15)
a2u.clear_zone(17)
#time.sleep(15)
#a2u.clear_zone(17)

#time.sleep(1)
#a2u.fault_zone((2, 2), True)


Loading…
Cancel
Save