def test_room_to_room_vacate(self): m1 = Motion(name="m1") m2 = Motion(name="m2") m3 = Motion(name="m3") r1 = Room(name="r1", devices=m1) r2 = Room(name="r2", devices=(m2, r1)) r3 = Room(name="r3", devices=(m3, r2)) r1.add_device(r2) r2.add_device(r3) m1.motion() self.assertEqual(r1.state, State.OCCUPIED) self.assertEqual(r2.state, State.VACANT) self.assertEqual(r3.state, State.UNKNOWN) m2.motion() self.assertEqual(r1.state, State.VACANT) self.assertEqual(r2.state, State.OCCUPIED) self.assertEqual(r3.state, State.VACANT) m3.motion() self.assertEqual(r1.state, State.VACANT) self.assertEqual(r2.state, State.VACANT) self.assertEqual(r3.state, State.OCCUPIED) m1.motion() self.assertEqual(r1.state, State.OCCUPIED) self.assertEqual(r2.state, State.VACANT) self.assertEqual(r3.state, State.OCCUPIED) m2.motion() self.assertEqual(r1.state, State.VACANT) self.assertEqual(r2.state, State.OCCUPIED) self.assertEqual(r3.state, State.VACANT)
def test_room_to_room_vacate(self): m1 = Motion(name='m1') m2 = Motion(name='m2') m3 = Motion(name='m3') r1 = Room(name='r1', devices=m1) r2 = Room(name='r2', devices=(m2, r1)) r3 = Room(name='r3', devices=(m3, r2)) r1.add_device(r2) r2.add_device(r3) m1.motion() self.assertEqual(r1.state, State.OCCUPIED) self.assertEqual(r2.state, State.VACANT) self.assertEqual(r3.state, State.UNKNOWN) m2.motion() self.assertEqual(r1.state, State.VACANT) self.assertEqual(r2.state, State.OCCUPIED) self.assertEqual(r3.state, State.VACANT) m3.motion() self.assertEqual(r1.state, State.VACANT) self.assertEqual(r2.state, State.VACANT) self.assertEqual(r3.state, State.OCCUPIED) m1.motion() self.assertEqual(r1.state, State.OCCUPIED) self.assertEqual(r2.state, State.VACANT) self.assertEqual(r3.state, State.OCCUPIED) m2.motion() self.assertEqual(r1.state, State.VACANT) self.assertEqual(r2.state, State.OCCUPIED) self.assertEqual(r3.state, State.VACANT)
mode=Location.MODE.CIVIL, is_dst=True, name='Civil Photocell') # Rooms r_foyer = Room(name='Foyer', devices=(m_foyer)) r_den = Room(name='Den', devices=(m_den, r_foyer)) r_family = Room(name='Family', devices=(m_family, r_foyer), trigger={ Attribute.COMMAND: Command.OCCUPY, Attribute.MAPPED: Command.VACATE, Attribute.SECS: 2*60*60, }, ) r_kitchen = Room(name='Kitchen', devices=(m_kitchen, r_foyer)) r_foyer.add_device(r_den) r_foyer.add_device(r_family) r_foyer.add_device(r_kitchen) r_breakfast = Room(name='Breakfast', devices=(m_breakfast, r_kitchen)) r_utility = Room(name='Utility', devices=(m_utility, r_kitchen, d_laundry)) r_kitchen.add_device(r_breakfast) r_kitchen.add_device(r_utility) r_garage = Room(name='Garage', devices=(m_garage, r_utility, d_laundry, d_garage, d_garage_overhead)) r_utility.add_device(r_garage) #lights # Turn on the foyer light at night when either the door is opened or family PIR is tripped. l_foyer = Light( address="24.a9.14", devices=(insteon, d_foyer, m_foyer,
name='Civil Photocell') # Rooms r_foyer = Room(name='Foyer', devices=(m_foyer)) r_den = Room(name='Den', devices=(m_den, r_foyer)) r_family = Room( name='Family', devices=(m_family, r_foyer), trigger={ Attribute.COMMAND: Command.OCCUPY, Attribute.MAPPED: Command.VACATE, Attribute.SECS: 2 * 60 * 60, }, ) r_kitchen = Room(name='Kitchen', devices=(m_kitchen, r_foyer)) r_foyer.add_device(r_den) r_foyer.add_device(r_family) r_foyer.add_device(r_kitchen) r_breakfast = Room(name='Breakfast', devices=(m_breakfast, r_kitchen)) r_utility = Room(name='Utility', devices=(m_utility, r_kitchen, d_laundry)) r_kitchen.add_device(r_breakfast) r_kitchen.add_device(r_utility) r_garage = Room(name='Garage', devices=(m_garage, r_utility, d_laundry, d_garage, d_garage_overhead)) r_utility.add_device(r_garage) #lights # Turn on the foyer light at night when either the door is opened or family PIR is tripped. l_foyer = Light( address="24.a9.14",