Advertisement
Guest User

Untitled

a guest
Apr 30th, 2017
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.33 KB | None | 0 0
  1. import socket
  2. import struct
  3.  
  4. class eth8020:
  5. def __init__(self, hostname, port=17494):
  6. self.s = socket.create_connection((hostname, int(port)))
  7.  
  8. def execute(self, request):
  9. self.s.send(request)
  10. response = self.s.recv(10)
  11. return struct.unpack('B', response)[0]
  12.  
  13. def set(self, index, value):
  14. if value:
  15. return self.activate(index)
  16. return self.deactivate(index)
  17.  
  18. def activate(self, index, duration=0):
  19. request = struct.pack('BBB', 0x20, index, duration)
  20. return self.execute(request)
  21.  
  22. def deactivate(self, index, duration=0):
  23. request = struct.pack('BBB', 0x21, index, duration)
  24. return self.execute(request)
  25.  
  26. if __name__ == '__main__':
  27. import argparse, sys
  28. p = argparse.ArgumentParser(description="Command-line utility for controlling the Antratek ETH8020.")
  29. p.add_argument('ip_address')
  30. p.add_argument('relay', type=int, help="relay index 1..20")
  31. p.add_argument('action', type=int, help="1=activate, 0=deactivate.")
  32. p.add_argument('-q', dest='quiet', action='store_true', help="Do not print to stdout.")
  33. args = p.parse_args()
  34.  
  35. e = eth8020(args.ip_address)
  36. r = e.set(args.relay, args.action)
  37. if not args.quiet:
  38. print('success' if not r else 'failed')
  39. sys.exit(r)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement