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_occupied(self): m = Motion() r = Room(devices=m) r.vacate() self.assertEqual(r.state, State.VACANT) m.motion() self.assertEqual(r.state, State.OCCUPIED)
l_hallway = Light(address='2AB8F8', devices=(insteon), name="Hallway Light") l_hallway_switch = Light(address='2AEB30', devices=(insteon), name="Hallway Light Switch") l_master_bathroom = Light(address='2AB2AF', devices=(insteon), name="Master Bathroom Light") l_master_faucet = Light(address='2A9CD9', devices=(insteon), name="Master Faucet Light") #Rooms (Device Grouping shouldn't add default command mappings, but does. Ignoring devices works-around. Fix under construction) r_backporch = Room(name='Back Porch', devices=l_backporch) r_frontporch = Room(name='Front Porch', devices=l_frontporch) r_kitchen = Room(name='Kitchen', ignore={ Attribute.COMMAND: Command.LEVEL, Attribute.SOURCE: hall_thermostat }, source=l_kitchen_back, devices=(l_kitchen_recessed, l_kitchen_back, l_kitchen_faucet, hall_thermostat)) r_bathroom = Room(name='Bathroom', ignore={ Attribute.COMMAND: Command.LEVEL, Attribute.SOURCE: hall_thermostat }, source=l_bathroom,
#photocell ph_standard = Location('35.2269', '-80.8433', tz='US/Eastern', mode=Location.MODE.STANDARD, is_dst=True, name='Standard Photocell') ph_civil = Location('35.2269', '-80.8433', tz='US/Eastern', 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))
def test_init(self): r = Room() self.assertIsNotNone(r)