示例#1
0
 def test_down(self):
     ser = SerialStub()
     with SomfyRTS(ser, interval=0) as rts:
         rts.down([1, 3])
         self.assertEqual(2, len(ser.output))
         self.assertEqual(b'D1\r', ser.output[0])
         self.assertEqual(b'D3\r', ser.output[1])
示例#2
0
 def test_close(self):
     ser = SerialStub()
     rts = SomfyRTS(ser, interval=0)
     rts.up(1)
     self.assertEqual(1, len(ser.output))
     self.assertEqual(b'U1\r', ser.output[0])
     rts.close()
     with self.assertRaises(AssertionError):
         rts.up(2)
示例#3
0
 def test_stop(self):
     ser = SerialStub()
     with SomfyRTS(ser, interval=0) as rts:
         rts.stop(None)
         self.assertEqual(0, len(ser.output))
         rts.stop([2, 5])
         self.assertEqual(2, len(ser.output))
         self.assertEqual(b'S2\r', ser.output[0])
         self.assertEqual(b'S5\r', ser.output[1])
示例#4
0
 def test_default_interval(self):
     ser = SerialStub()
     with SomfyRTS(ser) as rts:
         timer = Timer()
         rts.up(2)
         rts.down([1, 3])
         self.assertAlmostEqual(timer.elapsed, 3.0, places=1)
         self.assertEqual(3, len(ser.output))
         self.assertEqual(b'U2\r', ser.output[0])
         self.assertEqual(b'D1\r', ser.output[1])
         self.assertEqual(b'D3\r', ser.output[2])
示例#5
0
 def test_version_2(self):
     ser = SerialStub()
     with SomfyRTS(ser, interval=0, version=2) as rts:
         rts.up(8)
         rts.down([12, 3])
         rts.stop([7, 16])
         self.assertEqual(5, len(ser.output))
         self.assertEqual(b'0108U', ser.output[0])
         self.assertEqual(b'0112D', ser.output[1])
         self.assertEqual(b'0103D', ser.output[2])
         self.assertEqual(b'0107S', ser.output[3])
         self.assertEqual(b'0116S', ser.output[4])
示例#6
0
 def test_multiple(self):
     ser = SerialStub()
     with SomfyRTS(ser, interval=0) as rts:
         rts.up(2)
         rts.down([1, 3])
         rts.stop(range(4, 6))
         self.assertEqual(5, len(ser.output))
         self.assertEqual(b'U2\r', ser.output[0])
         self.assertEqual(b'D1\r', ser.output[1])
         self.assertEqual(b'D3\r', ser.output[2])
         self.assertEqual(b'S4\r', ser.output[3])
         self.assertEqual(b'S5\r', ser.output[4])
示例#7
0
 def test_clear_command_queue(self):
     ser = SerialStub()
     with SomfyRTS(ser, interval=1.0, thread=True) as rts:
         timer = Timer()
         rts.up(2)
         rts.down([1, 3])
         rts.stop(range(4, 6))
         self.assertAlmostEqual(timer.elapsed, 0.0, places=1)
         sleep(1.5)  # Up 2 and Down 1 should make it but no more by now.
         rts.clear_command_queue()
         self.assertEqual(2, len(ser.output))
         self.assertEqual(b'U2\r', ser.output[0])
         self.assertEqual(b'D1\r', ser.output[1])
示例#8
0
 def test_interval(self):
     ser = SerialStub()
     with SomfyRTS(ser, interval=0.25) as rts:
         timer = Timer()
         rts.up(2)
         rts.down([1, 3])
         rts.stop(range(4, 6))
         self.assertAlmostEqual(timer.elapsed, 1.0, places=1)
         self.assertEqual(5, len(ser.output))
         self.assertEqual(b'U2\r', ser.output[0])
         self.assertEqual(b'D1\r', ser.output[1])
         self.assertEqual(b'D3\r', ser.output[2])
         self.assertEqual(b'S4\r', ser.output[3])
         self.assertEqual(b'S5\r', ser.output[4])
示例#9
0
 def test_close_threaded(self):
     ser = SerialStub()
     rts = SomfyRTS(ser, interval=1.0, thread=True)
     rts.up([1, 2, 3])
     sleep(0.5)
     self.assertEqual(1, len(ser.output))
     self.assertEqual(b'U1\r', ser.output[0])
     rts.close()
     sleep(3.0)
     self.assertEqual(1, len(ser.output))
示例#10
0
 def test_fast_close(self):
     ser = SerialStub()
     rts = SomfyRTS(ser, interval=20.0, thread=True)
     timer = Timer()
     rts.up([1, 2, 3])
     sleep(0.5)
     self.assertEqual(1, len(ser.output))
     self.assertEqual(b'U1\r', ser.output[0])
     rts.close()
     self.assertAlmostEqual(timer.elapsed, 0.5, places=1)
     self.assertEqual(1, len(ser.output))
示例#11
0
 def test_up(self):
     ser = SerialStub()
     with SomfyRTS(ser, interval=0) as rts:
         rts.up(1)
         self.assertEqual(1, len(ser.output))
         self.assertEqual(b'U1\r', ser.output[0])
示例#12
0
        default=1.5,
        help=
        "number of seconds to delay between sending commands (default is 1.5)")
    parser.add_argument(
        '-pause',
        action='store_true',
        help='pause [interval] seconds before sending first command')
    parser.add_argument('-verbose', action='store_true', help="verbose output")
    parser.add_argument(
        "port",
        type=str,
        help="url of serial port for rts controller communication")
    parser.epilog = "Valid channel numbers are 1 through 5 for a version one controller and 1 through 16 " + \
                    "for the version II controller.  For testing purposes the port name 'TEST' can be used."
    args = parser.parse_args()

    if args.verbose:
        logging.basicConfig(level=logging.DEBUG)

    if args.pause:
        logger.info("pausing {0} seconds before sending first command".format(
            args.interval))
        time.sleep(args.interval)

    port = args.port if args.port != "TEST" else SerialStub()

    with SomfyRTS(port, interval=args.interval, version=args.cmdver) as rts:
        rts.stop(args.stop)
        rts.up(args.up)
        rts.down(args.down)