Skip to content
Snippets Groups Projects
Select Git revision
  • 4daf9820da39c06b34d082928131f00e7a4a8818
  • master default protected
2 results

WorkerNetwork.py

Blame
  • 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()