import time import sys from neopixel import * import argparse from random import randint,choice import socket # LED strip configuration: LED_COUNT = 100 # Number of LED pixels. LED_PIN = 18 # GPIO pin connected to the pixels (18 uses PWM!). #LED_PIN = 10 # GPIO pin connected to the pixels (10 uses SPI /dev/spidev0.0). LED_FREQ_HZ = 800000 # LED signal frequency in hertz (usually 800khz) LED_DMA = 10 # DMA channel to use for generating signal (try 10) LED_BRIGHTNESS = 255 # Set to 0 for darkest and 255 for brightest LED_INVERT = False # True to invert the signal (when using NPN transistor level shift) LED_CHANNEL = 0 # set to '1' for GPIOs 13, 19, 41, 45 or 53 strip = Adafruit_NeoPixel(LED_COUNT, LED_PIN, LED_FREQ_HZ, LED_DMA, LED_INVERT, LED_BRIGHTNESS, LED_CHANNEL) strip.begin() NetPath ={ 'A': ['C'], 'B': ['B','C'], 'C': ['A','B','D'], 'D': ['E','G','C'], 'E': ['D','M','N','F'], 'F': ['E','O','P'], 'G': ['D','L','K','H'], 'H': ['G','I','J'], 'I': ['H'], 'J': ['H'], 'K': ['G'], 'L': ['G'], 'M': ['E'], 'N': ['E'], 'O': ['F'], 'P': ['F'] } NodePath = {"head": 'A', "file": 'B', "worker1": 'O', "worker2": 'P', "worker3": 'M', "worker4": 'N', "worker5": 'L', "worker6": 'K', "worker7": 'I', "worker8": 'J' } NetLights ={ 'AC' :[0,1,2,3,4,5,6,7,8,9,10,11,12], 'CA' :[12,11,10,9,8,7,6,5,4,3,2,1,0], 'BC' :[19,18,17,16,15,14,13,12], 'CB' :[12,13,14,15,16,17,18,19], 'CD' :[22,23,24,25,26,27,28,29,30], 'DC' :[30,29,28,27,26,25,24,23,22], 'DE' :[31,50,51,52], 'ED' :[52,51,50,31], 'DG' :[31,32,33,34], 'GD' :[34,33,32,31], 'EM' :[52,53,54], 'ME' :[54,53,52], 'EN' :[52,55,56], 'NE' :[56,55,52], 'EF' :[57,58,59,60], 'FE' :[60,59,58,57], 'FO' :[61,62,63], 'OF' :[63,62,61], 'PF' :[65,64,61], 'FP' :[61,64,65], 'GH' :[39,40,41,42], 'HG' :[42,41,40,39], 'LG' :[36,35,34], 'GL' :[34,35,36], 'GK' :[34,37,38], 'KG' :[38,37,34], 'HI' :[43,44,45], 'IH' :[45,44,43], 'HJ' :[45,46,47], 'JH' :[47,46,45] } def find_path(graph, start, end, path=[]): if '81' in start or '81' in end: print("TEMPEST DETECTED") return None path = path + [start] if end == "192.168.1.1": end = "HeadRev" if end == "192.168.1.5": end = "FileRev" if start == end: return path if not graph.has_key(start): return None for node in graph[start]: if node not in path: newpath = find_path(graph, node, end, path) if newpath: return newpath return None #print("starting") iter = 0 while iter < int(sys.argv[3]): start = NodePath[sys.argv[1]] end = NodePath[sys.argv[2]] ### To do random start_path = find_path(NetPath,start,end) path = [] try: for i in range(0,len(start_path)-1): path.append(start_path[i]+start_path[i+1]) except: print("empty path") try: r,g,b = choice([0,255]),choice([0,255]),choice([0,255]) for a in path: data = 128 for i in NetLights.get(a): strip.setPixelColor(i,Color(r,g,b)) strip.show() time.sleep(0.001) for i in range(0,100): strip.setPixelColor(i, Color(0,0,0)) strip.show() time.sleep(0.02) iter += 1 except Exception as e: print(str(e)) x=0 print("ERROR")