def test_light_scenario_g1(self): d = Door() p = Photocell() p.light() l = Light(address='xx.xx.xx', devices=(d, p), mapped={ Attribute.COMMAND: (Command.CLOSE), Attribute.MAPPED: Command.OFF, Attribute.SECS: 2, }, ignore=({Attribute.COMMAND: Command.DARK}), name="Hallway Lights",) l.on() self.assertEqual(l.state, State.ON) d.close() self.assertEqual(l.state, State.ON) time.sleep(3) self.assertEqual(l.state, State.OFF) d.open() self.assertEqual(l.state, State.OFF)
def test_door_light_delgate_caseinsensitive(self): d = Door(address='23.d2.bE', devices=self.insteon) d.close() self.ms.put_read_data(Conversions.hex_to_ascii('025023D2BE000001CB1100')) time.sleep(3) self.ms.put_read_data(Conversions.hex_to_ascii('025023D2BE22FF5B411101')) time.sleep(3) self.assertEqual(d.state, State.OPEN)
def test_door_light_delgate_caseinsensitive(self): d = Door(address='23.d2.bE', devices=self.insteon) d.close() self.ms.put_read_data( Conversions.hex_to_ascii('025023D2BE000001CB1100')) time.sleep(3) self.ms.put_read_data( Conversions.hex_to_ascii('025023D2BE22FF5B411101')) time.sleep(3) self.assertEqual(d.state, State.OPEN)
def test_delay_normal(self): # Door Open events retrigger delay # Instead of turning off in 2 secs should be 4 door = Door() self.assertIsNotNone(door) light = Light(address='D1', devices=(self.interface, door), delay={ Attribute.COMMAND: Command.OFF, Attribute.SECS: 3, Attribute.SOURCE: door }) door.open() self.assertEqual(light.state, State.ON) door.close() self.assertEqual(light.state, State.ON) time.sleep(2) self.assertEqual(light.state, State.ON) time.sleep(2) self.assertEqual(light.state, State.OFF) # Check to see if we can immediately and directly still turn off light.off() door.open() self.assertEqual(light.state, State.ON) light.off() self.assertEqual(light.state, State.OFF)
def test_door_closed(self): door = Door('D1', devices=(self.interface)) # self.device._on_command('D1', State.ON, self.interface) self.device.command(Command.ON) self.assertEqual(self.device.state, State.OPEN) # self.device._on_command('D1', State.OFF, self.interface) self.device.command(Command.OFF) self.assertEqual(self.device.state, State.CLOSED)
def test_delay_normal(self): # Door Open events retrigger delay # Instead of turning off in 2 secs should be 4 door = Door() self.assertIsNotNone(door) light = Light(address='D1', devices=(self.interface, door), delay={ 'command': Command.OFF, 'secs': 3, 'source': door} ) door.open() self.assertEqual(light.state, State.ON) door.close() self.assertEqual(light.state, State.ON) time.sleep(2) self.assertEqual(light.state, State.ON) time.sleep(2) self.assertEqual(light.state, State.OFF) # Check to see if we can immediately and directly still turn off light.off() door.open() self.assertEqual(light.state, State.ON) light.off() self.assertEqual(light.state, State.OFF)
def test_door_closed(self): door = Door() self.assertIsNotNone(door) door.open() self.device = Light('D1', devices=(self.interface, door)) # self.assertTrue(self.interface.initial.called) self.assertFalse(self.interface.off.called) door.close() self.assertTrue(self.interface.off.called) # self.interface.on.assert_called_once_with('') door.open() self.assertTrue(self.interface.on.called)
def test_light_scenario_g1(self): d = Door() p = Photocell() p.light() l = Light( address='xx.xx.xx', devices=(d, p), mapped={ Attribute.COMMAND: (Command.CLOSE), Attribute.MAPPED: Command.OFF, Attribute.SECS: 2, }, ignore=({ Attribute.COMMAND: Command.DARK }), name="Hallway Lights", ) l.on() self.assertEqual(l.state, State.ON) d.close() self.assertEqual(l.state, State.ON) time.sleep(3) self.assertEqual(l.state, State.OFF) d.open() self.assertEqual(l.state, State.OFF)
class DoorTests(TestCase): def setUp(self): self.interface = Mock() self.interface.state = State.UNKNOWN self.device = Door('D1', self.interface) def test_instantiation(self): self.assertIsNotNone(self.device, 'Door Device could not be instantiated') def test_door_open(self): self.assertEqual(self.device.state, State.UNKNOWN) self.device._on_command('D1', State.ON) self.assertEqual(self.device.state, State.OPEN) def test_door_closed(self): door = Door('D1', devices=(self.interface)) self.device._on_command('D1', State.ON, self.interface) self.assertEqual(self.device.state, State.OPEN) self.device._on_command('D1', State.OFF, self.interface) self.assertEqual(self.device.state, State.CLOSED)
class DoorTests(TestCase): def setUp(self): self.interface = Mock() self.interface.state = State.UNKNOWN self.device = Door('D1', self.interface) def test_instantiation(self): self.assertIsNotNone(self.device, 'Door Device could not be instantiated') def test_door_open(self): self.assertEqual(self.device.state, State.UNKNOWN) self.device.command(Command.ON) self.assertEqual(self.device.state, State.OPEN) def test_door_closed(self): door = Door('D1', devices=(self.interface)) # self.device._on_command('D1', State.ON, self.interface) self.device.command(Command.ON) self.assertEqual(self.device.state, State.OPEN) # self.device._on_command('D1', State.OFF, self.interface) self.device.command(Command.OFF) self.assertEqual(self.device.state, State.CLOSED)
sl_outside2 = Light(address='14.E6.A8', devices=(insteon, ph_standard), initial=ph_standard, time={ Attribute.COMMAND: Command.OFF, Attribute.TIME: '1:00am' }, name="Outside Garage Lights") ol_outside1 = Light(address='13.FE.5D', devices=(insteon), name="Outside Outlet") #Raspberry PI inputs pi_laundry = StateInterface(RPIInput(3)) #BCM 2 cs_laundry = Door(address=None, devices=(pi_laundry), name="Laundry Window") pi_basementbed = StateInterface(RPIInput(5)) #BCM 3 cs_basementbed = Door(address=None, devices=(pi_basementbed), name="Basement Bedroom Window") pi_masterbed = StateInterface(RPIInput(7)) #BCM 4 cs_masterbed = Door(address=None, devices=(pi_masterbed), name="Master Bedroom") pi_boysbed = StateInterface(RPIInput(8)) #BCM 14 cs_boysbed = Door(address=None, devices=(pi_boysbed), name="Boys Bedroom Window")
def test_door_triggered(self): door = Door() self.assertIsNotNone(door) self.device = Light('D1', devices=(self.interface, door)) door.open() self.assertTrue(self.interface.on.called)
def setUp(self): self.interface = Mock() self.interface.state = State.UNKNOWN self.device = Door('D1', self.interface)
name="Thermostat", devices=VenstarThermostat( HTTP(host='HallThermostat'), type='commercial')) #Sensors ph_calculated = Location('38.576492', '-121.493375', tz='America/Los_Angeles', mode=Location.MODE.STANDARD, is_dst=True, name='Calculated Photocell') #Front Door sensor, remove non functional status command d_front_door = Door(address='2AF9B7', devices=(insteon), name="Front Door Sensor", commands=[Command.OPEN, Command.CLOSE]) #Front Door Deadbolt (key set in config.xml, in config_path) lk_front_door = Lock(address='4', devices=(ozw, d_front_door), name="Front Door Deadbolt", mapped={ Attribute.COMMAND: Command.CLOSE, Attribute.MAPPED: Command.LOCK }) #Lights l_office = Light(address='5', devices=ozw, name='Office Light') l_livingroom = Light(address="7", devices=ozw, name="Living Room Light")
m_laundry = Motion(address='AD', devices=wtdio, name='Laundry Room Motion') m_hallway = Motion(address='AE', devices=wtdio, name='Hallway Motion') # Don't allow this to trigger ON again for 20 seconds m_stairs = Motion(address='H1', devices=w800, retrigger_delay = { Attribute.SECS: 20 }, name='Stair Motion') m_recroom = Motion(address='I1', devices=w800, name='Recroom Motion') m_backdoor = Motion(address='J1', devices=w800, name='Backdoor Motion') # ______ DOOR CONTACTS ______________________________________________ d_back = Door(address='AG', devices=wtdio, name='Backdoor Contact') # ______ LOCATION ___________________________________________________ # ph_standard = Location('48.9008', '-119.8463', #moved this east a bit tz='America/Vancouver', mode=Location.MODE.STANDARD, is_dst=True, name='Standard Photocell') # ______ GENERICS ___________________________________________________ #
name='Thermostat Upstairs', automatic_delta=2, time=({ Attribute.TIME: (0, 30, 5, '*', '*', (1, 2, 3, 4, 5)), Attribute.COMMAND: (Command.LEVEL, 72), }, )) thermostat_downstairs = Thermostat(devices=HW_Thermostat( HTTP(host='192.168.13.210'), poll=60), name='Thermostat Downstairs', automatic_delta=2) ###################### DEVICE CONFIG ######################### #doors d_foyer = Door('D1', sg, name='Foyer Door') d_laundry = Door('D2', sg, name='Laundry Door') d_garage = Door('D3', sg, name='Garage Door') #d_garage_overhead = Door((49, 38, 'L'), upb, name='Garage Overhead') #d_garage_overhead = Door("19.bc.06", insteon, name='Garage Overhead') d_garage_overhead = Door("23.d2.be", insteon, name='Garage Overhead') d_porch = Door('D5', sg, name='Porch Door') d_basement = Door('D6', sg, name='Basement') d_master = Door('D4', sg, name='Master') d_crawlspace = Door('D10', sg, name='Crawlspace Door') d_pool = Door('D11', sg, name='Pool Door') relay_garage_overhead = Generic(address="23.d2.be", devices=insteon, name='Garage Overhead Relay')