123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479 |
- 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)
|