예제 #1
1
 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)
예제 #2
0
파일: insteon.py 프로젝트: E3Dev/pytomation
 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)
예제 #3
0
 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)
예제 #4
0
파일: light.py 프로젝트: ver007/pytomation
    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)
예제 #5
0
    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)
예제 #6
0
    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)
예제 #7
0
파일: light.py 프로젝트: ver007/pytomation
 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)
예제 #8
0
파일: light.py 프로젝트: ver007/pytomation
 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)
예제 #9
0
    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)
예제 #10
0
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)
예제 #11
0
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)
예제 #12
0
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")
예제 #13
0
파일: light.py 프로젝트: ver007/pytomation
 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)
예제 #14
0
 def setUp(self):
     self.interface = Mock()
     self.interface.state = State.UNKNOWN
     self.device = Door('D1', self.interface)
예제 #15
0
 def setUp(self):
     self.interface = Mock()
     self.interface.state = State.UNKNOWN
     self.device = Door('D1', self.interface)
예제 #16
0
 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)
예제 #17
0
                             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")
예제 #18
0
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 ___________________________________________________
#
예제 #19
0
    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')