~craig.magina/junk/pandakit

« back to all changes in this revision

Viewing changes to relay-kmtronic

  • Committer: Robie Basak
  • Date: 2012-01-29 15:38:42 UTC
  • Revision ID: robie.basak@canonical.com-20120129153842-um6rsrhcz8vbvwho
Initial revision

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/usr/bin/python
 
2
 
 
3
import argparse
 
4
import serial
 
5
import struct
 
6
import sys
 
7
 
 
8
def main():
 
9
    parser = argparse.ArgumentParser()
 
10
    parser.add_argument('device')
 
11
    parser.add_argument('index')
 
12
    parser.add_argument('state')
 
13
    args = parser.parse_args()
 
14
 
 
15
    if isinstance(args.state, str):
 
16
        args.state = args.state.lower()
 
17
        
 
18
    if args.state in [ 0, 'false', 'f', 'off' ]:
 
19
        state = False
 
20
    elif args.state in [ 1, 'true', 't', 'on' ]:
 
21
        state = True
 
22
    else:
 
23
        raise RuntimeError('Cannot parse state %r' % args.state)
 
24
 
 
25
    state = not state  # XXX: I use NC. This should be configurable.
 
26
 
 
27
    if args.index == 'all':
 
28
        index_list = range(1, 9)
 
29
    else:
 
30
        index_list = [int(args.index) + 1]
 
31
 
 
32
    relay = serial.Serial(args.device, 9600)
 
33
    for index in index_list:
 
34
        relay.write(struct.pack('BBB', 255, index, int(state)))
 
35
    relay.close()
 
36
 
 
37
if __name__ == '__main__':
 
38
    main()