import socket import sys import struct import time sys.stdout.write("\x1b]2;Nodescan\x07") print(socket.AF_INET) try: sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.bind(('', 6454)) sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) except socket.error as e: print("Socket 6454 ", "ERR: {0} ".format(e.args)) sys.exit() def ArtNet_poll(ip,port=6454): print("POLL",[ip,port],end="") sock.sendto(b'Art-Net\x00\x00 \x00\x0e\x06\x00',(ip,port)) # ArtPol / ping print(" OK ;",end="") print() def ArtNet_decode_pollreplay(data): debug = 1 node = {} if len(data) >= 10: #min opcode opcode = data[8:9+1] #print([opcode]) #if opcode != struct.pack("<H",0x5000): #OpPollReplay if opcode == struct.pack("<H",0x2100): #OpPollReplay if len(data) >= 207: #Mal print("decode",data[:13]) if debug:print("-----------------------------------------") print("===================================================================-") if debug:print([opcode] ,"OpPollReplay") _ip = [] print(data[10]) _ip.append( data[10] ) _ip.append( data[11] ) _ip.append( data[12] ) _ip.append( data[13] ) node["IP"] = str(_ip) if debug:print([_ip]) _port = struct.unpack("<H",data[14:15+1] ) #Versinfo = struct.unpack("<H",data[16:17+1] ) Versinfo = data[16:17+1] node["port"] = _port if debug:print("_port :", [_port ]) node["version"] = Versinfo if debug:print("Version:",[Versinfo]) NetSwitch = data[18] node["NetSwitch"] = NetSwitch if debug:print("NetSwitch:",[NetSwitch]) SubSwitch = data[19] node["SubSwitch"] = SubSwitch if debug:print("SubSwitch:",[SubSwitch]) #oem = struct.unpack("<H",data[19:20+1] ) oem = data[20:21+1] node["oem"] = oem if debug:print("oem",[oem]) ubea = data[22] node["ubea"] = ubea if debug:print("ubea ver.",[ubea]) stat = data[23] node["status"] = stat if debug:print("Status1 ",[stat]) esta = data[24:25+1] node["esta"] = esta if debug:print("esta Manuf",[esta]) sname = data[26:26+17] #if debug:print(len(sname) #17+1) sname = sname.strip(b"\x00") node["sname"] = sname lname = data[44:44+43] #if debug:print(len(lname) #43+1) lname = lname.strip(b"\x00") node["lname"] = lname NodeReport = data[108:108+20] NodeReport = NodeReport.strip(b"\x00") #if debug:print("Node",node_nr,addr) if debug:print([sname,lname,NodeReport]) NumPort = data[173] node["NumPort"] = NumPort if debug:print("NumPort",[NumPort]) PortTypes = data[174:174+4] node["PortTypes"] = PortTypes if debug:print("PortTypes",[PortTypes]) GoodInput = data[178:178+4] node["GoodInput"] = GoodInput if debug:print("GoodInput",[GoodInput]) GoodOutput = data[182:182+4] node["GoodOutput"] = GoodOutput if debug:print("GoodOutput",[GoodOutput]) SwIn = data[186:186+4] node["SwIn"] = SwIn if debug:print("SwIn",[SwIn]) SwOut = data[190:190+4] node["SwOut"] = SwOut if debug:print("SwOut",[SwOut]) msg = data[108:108+40] node["MSG"] = msg.replace(b"\x00",b"") if debug:print("MSG",[msg]) MAC = data[201:201+6] _MAC = [] for x in MAC: #x = hex(ord(x))[2:] x = hex(x)#[2:] x = x.rjust(2,"0") _MAC.append(x) #hex(ord("\xf9"))[2:] if debug:print("MAC",[":".join(_MAC)]) node["MAC"] = ":".join(_MAC) #node_nr += 1 #if debug:print([addr,data]) #print() else: print(opcode, len(data)) return node def loop(): print("-- NODE SCAN START ---") print() while 1: data, addr = sock.recvfrom(500) new_node = ArtNet_decode_pollreplay( data ) print("rvc loop",addr) if new_node: print("rcv",new_node) #self.add(new_node) time.sleep(0.001) print("-- NODE SCAN STOP ---") print() #loop() import _thread as thread thread.start_new_thread(loop, () ) time.sleep(2) if __name__ == "__main__": print() print() ArtNet_poll("2.0.0.255") time.sleep(0.5) print() print() ArtNet_poll("2.0.0.255") time.sleep(0.5) print() print() ArtNet_poll("2.0.0.255") time.sleep(0.5) print() print() ArtNet_poll("2.0.0.255") time.sleep(0.5) print() print() ArtNet_poll("2.0.0.255") time.sleep(0.5) print() print() ArtNet_poll("2.0.0.255") time.sleep(0.5) print() print() ArtNet_poll("2.0.0.255") time.sleep(0.5) print() print() ArtNet_poll("2.0.0.255") time.sleep(0.5) print() print() ArtNet_poll("2.0.0.255") time.sleep(0.5) print() print() ArtNet_poll("10.0.0.255") time.sleep(0.5) print() print() ArtNet_poll("2.255.255.255") time.sleep(0.5) print() print() ArtNet_poll("192.168.2.255") time.sleep(0.5) print() print() ArtNet_poll("192.168.1.255") time.sleep(0.5) print() print() ArtNet_poll("192.168.0.255") time.sleep(0.5) print() print() while 1: time.sleep(1) ArtNet_poll("10.0.0.255") time.sleep(0.5) ArtNet_poll("2.255.255.255") time.sleep(0.5) ArtNet_poll("192.168.2.255") time.sleep(0.5) ArtNet_poll("192.168.1.255") time.sleep(0.5) ArtNet_poll("192.168.0.255") time.sleep(0.5) while 1: time.sleep(1) ArtNet_poll("10.0.0.255") time.sleep(0.5) ArtNet_poll("2.255.255.255") time.sleep(0.5) ArtNet_poll("192.168.2.255") time.sleep(0.5) ArtNet_poll("192.168.1.255") time.sleep(0.5) ArtNet_poll("192.168.0.255") time.sleep(0.5) while 1: time.sleep(1) ArtNet_poll("10.0.0.255") time.sleep(0.5) ArtNet_poll("2.255.255.255") time.sleep(0.5) ArtNet_poll("192.168.2.255") time.sleep(0.5) ArtNet_poll("192.168.1.255") time.sleep(0.5) ArtNet_poll("192.168.0.255") time.sleep(0.5) while 1: time.sleep(1) ArtNet_poll("10.0.0.255") time.sleep(0.5) ArtNet_poll("2.255.255.255") time.sleep(0.5) ArtNet_poll("192.168.2.255") time.sleep(0.5) ArtNet_poll("192.168.1.255") time.sleep(0.5) ArtNet_poll("192.168.0.255") time.sleep(0.5) while 1: time.sleep(1) ArtNet_poll("10.0.0.255") time.sleep(0.5) ArtNet_poll("2.255.255.255") time.sleep(0.5) ArtNet_poll("192.168.2.255") time.sleep(0.5) ArtNet_poll("192.168.1.255") time.sleep(0.5) ArtNet_poll("192.168.0.255") time.sleep(0.5) while 1: time.sleep(1) ArtNet_poll("10.0.0.255") time.sleep(0.5) ArtNet_poll("2.255.255.255") time.sleep(0.5) ArtNet_poll("192.168.2.255") time.sleep(0.5) ArtNet_poll("192.168.1.255") time.sleep(0.5) ArtNet_poll("192.168.0.255") time.sleep(0.5) while 1: time.sleep(1) ArtNet_poll("10.0.0.255") time.sleep(0.5) ArtNet_poll("2.255.255.255") time.sleep(0.5) ArtNet_poll("192.168.2.255") time.sleep(0.5) ArtNet_poll("192.168.1.255") time.sleep(0.5) ArtNet_poll("192.168.0.255") time.sleep(0.5) while 1: time.sleep(1) ArtNet_poll("10.0.0.255") time.sleep(0.5) ArtNet_poll("2.255.255.255") time.sleep(0.5) ArtNet_poll("192.168.2.255") time.sleep(0.5) ArtNet_poll("192.168.1.255") time.sleep(0.5) ArtNet_poll("192.168.0.255") time.sleep(0.5) while 1: time.sleep(1) ArtNet_poll("10.0.0.255") time.sleep(0.5) ArtNet_poll("2.255.255.255") time.sleep(0.5) ArtNet_poll("192.168.2.255") time.sleep(0.5) ArtNet_poll("192.168.1.255") time.sleep(0.5) ArtNet_poll("192.168.0.255") time.sleep(0.5) while 1: time.sleep(1) ArtNet_poll("10.0.0.255") time.sleep(0.5) ArtNet_poll("2.255.255.255") time.sleep(0.5) ArtNet_poll("192.168.2.255") time.sleep(0.5) ArtNet_poll("192.168.1.255") time.sleep(0.5) ArtNet_poll("192.168.0.255") time.sleep(0.5) while 1: time.sleep(1) ArtNet_poll("10.0.0.255") time.sleep(0.5) ArtNet_poll("2.255.255.255") time.sleep(0.5) ArtNet_poll("192.168.2.255") time.sleep(0.5) ArtNet_poll("192.168.1.255") time.sleep(0.5) ArtNet_poll("192.168.0.255") time.sleep(0.5) while 1: time.sleep(1) ArtNet_poll("10.0.0.255") time.sleep(0.5) ArtNet_poll("2.255.255.255") time.sleep(0.5) ArtNet_poll("192.168.2.255") time.sleep(0.5) ArtNet_poll("192.168.1.255") time.sleep(0.5) ArtNet_poll("192.168.0.255") time.sleep(0.5) while 1: time.sleep(1) ArtNet_poll("10.0.0.255") time.sleep(0.5) ArtNet_poll("2.255.255.255") time.sleep(0.5) ArtNet_poll("192.168.2.255") time.sleep(0.5) ArtNet_poll("192.168.1.255") time.sleep(0.5) ArtNet_poll("192.168.0.255") time.sleep(0.5) while 1: time.sleep(1) ArtNet_poll("10.0.0.255") time.sleep(0.5) ArtNet_poll("2.255.255.255") time.sleep(0.5) ArtNet_poll("192.168.2.255") time.sleep(0.5) ArtNet_poll("192.168.1.255") time.sleep(0.5) ArtNet_poll("192.168.0.255") time.sleep(0.5) while 1: time.sleep(1) ArtNet_poll("10.0.0.255") time.sleep(0.5) ArtNet_poll("2.255.255.255") time.sleep(0.5) ArtNet_poll("192.168.2.255") time.sleep(0.5) ArtNet_poll("192.168.1.255") time.sleep(0.5) ArtNet_poll("192.168.0.255") time.sleep(0.5) while 1: time.sleep(1) ArtNet_poll("10.0.0.255") time.sleep(0.5) ArtNet_poll("2.255.255.255") time.sleep(0.5) ArtNet_poll("192.168.2.255") time.sleep(0.5) ArtNet_poll("192.168.1.255") time.sleep(0.5) ArtNet_poll("192.168.0.255") time.sleep(0.5) while 1: time.sleep(1) ArtNet_poll("10.0.0.255") time.sleep(0.5) ArtNet_poll("2.255.255.255") time.sleep(0.5) ArtNet_poll("192.168.2.255") time.sleep(0.5) ArtNet_poll("192.168.1.255") time.sleep(0.5) ArtNet_poll("192.168.0.255") time.sleep(0.5) while 1: time.sleep(1) ArtNet_poll("10.0.0.255") time.sleep(0.5) ArtNet_poll("2.255.255.255") time.sleep(0.5) ArtNet_poll("192.168.2.255") time.sleep(0.5) ArtNet_poll("192.168.1.255") time.sleep(0.5) ArtNet_poll("192.168.0.255") time.sleep(0.5) while 1: time.sleep(1)