Select Git revision
WorkerNetwork.py
-
Caughlin Bohn authoredCaughlin Bohn authored
WorkerNetwork.py 4.36 KiB
import time
import sys
from neopixel import *
import argparse
from random import randint
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': ['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],
'BC' : [19,18,17,16,15,14,13,12],
'CA' : [12,11,10,9,8,7,6,5,4,3,2,1,0],
'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],
'GD' :[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")
import random
iter = 0
HOST = '' # Symbolic name meaning all available interfaces
PORT = 50007 # Arbitrary non-privileged port
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#sock = socket()
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind((HOST, PORT))
s.listen(1)
#conn, addr = s.accept()
lastItem = 0
while 1:
conn, addr = s.accept()
data = conn.recv(1024)
conn.close()
tempData = data.split(" ")
iter = 0
if tempData[3] != lastItem:
print("I am lying about loops" , data)
for i in range(int(tempData[2])):
print(data,iter)
start = NodePath[tempData[0]]
end = NodePath[tempData[1]]
### 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:
for a in path:
for i in NetLights.get(a):
r,g,b = 255,0,0
strip.setPixelColor(i,Color(r,g,b))
strip.show()
time.sleep(0.005)
for i in range(0,100):
strip.setPixelColor(i, Color(0,0,0))
strip.show()
time.sleep(0.05)
iter += 1
except Exception as e:
print(str(e))
x=0
print("ERROR")
lastItem = tempData[3]
#conn.close()