Skip to content

Instantly share code, notes, and snippets.

@royvandam
Last active April 30, 2017 21:09
Show Gist options
  • Save royvandam/d6267ff7a6475e1e30a53d48489a887d to your computer and use it in GitHub Desktop.
Save royvandam/d6267ff7a6475e1e30a53d48489a887d to your computer and use it in GitHub Desktop.
Antratek ETH8020 python relay control script
import socket
import struct
class eth8020:
def __init__(self, hostname, port=17494):
self.s = socket.create_connection((hostname, int(port)))
def execute(self, request):
self.s.send(request)
response = self.s.recv(10)
return struct.unpack('B', response)[0]
def set(self, index, value):
if value:
return self.activate(index)
return self.deactivate(index)
def activate(self, index, duration=0):
request = struct.pack('BBB', 0x20, index, duration)
return self.execute(request)
def deactivate(self, index, duration=0):
request = struct.pack('BBB', 0x21, index, duration)
return self.execute(request)
if __name__ == '__main__':
import argparse, sys
p = argparse.ArgumentParser(description="Command-line utility for controlling the Antratek ETH8020.")
p.add_argument('ip_address')
p.add_argument('relay', type=int, help="relay index 1..20")
p.add_argument('action', type=int, help="1=activate, 0=deactivate.")
p.add_argument('-q', dest='quiet', action='store_true', help="Do not print to stdout.")
args = p.parse_args()
try:
e = eth8020(args.ip_address)
r = e.set(args.relay, args.action)
except Exception as error:
print(error)
sys.exit(-1)
if not args.quiet:
print('success' if not r else 'failed')
sys.exit(r)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment