Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Emulate Advantech ADAM-6050 for Synology Surveillance Station
from twisted.internet.protocol import DatagramProtocol
from twisted.internet import reactor
import time
class Echo(DatagramProtocol):
def datagramReceived(self, data, (host, port)):
print "received %r from %s:%d" % (data, host, port)
# Login
if data.startswith('$01PW'):
self.transport.write(">01\r", (host, port))
return
# Request IO status
if data.startswith('$01C'):
self.transport.write("!01" + "000000000000" + "000000000000" + "000000000000" + "\r", (host, port))
return
# Request IO input status
if data.startswith('$016'):
seconds = int(time.time()) % 60
print seconds
if seconds > 20 and seconds < 24:
print "trigger!"
self.transport.write("!01"+"00"+"FFFF\r", (host, port))
else:
self.transport.write("!01"+"01"+"FFFF\r", (host, port))
return
# Request set IO output
if data.startswith('#011'):
print "Channel[0x" + data[4:6]+ "] = " + data[6:7]
self.transport.write(">\r", (host, port))
return
print "unknow command!"
#self.transport.write(data, (host, port))
print "starting ..."
reactor.listenUDP(1025, Echo())
reactor.run()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.