Advertisement
Guest User

Untitled

a guest
Feb 22nd, 2019
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.04 KB | None | 0 0
  1. #!/usr/bin/python3
  2.  
  3. import socket, redis, time
  4. from flask import Flask, render_template
  5. from flask_socketio import SocketIO, emit
  6. from threading import Thread, Event
  7.  
  8. numShelves = 2
  9. updateFreq = 0.01
  10. listenHost = "10.0.10.100"
  11. listenPort = 10000
  12.  
  13. head = "10.0.1.2"
  14. shelfIP = [""] * numShelves
  15. for i in range(numShelves):
  16.     shelfIP[i] = "10.0.10." + str(i)
  17.  
  18. app = Flask(__name__)
  19. app.config['DEBUG'] = False
  20. socketio = SocketIO(app, message_queue="redis://")
  21.  
  22. displayData = redis.Redis(host="localhost", port=6379, db=0)
  23. displayData.set("hdd_temps","0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0")
  24. displayData.set("cpu_temps","0 0 0 0 0 0 0 0")
  25. displayData.set("cpu_fans","Fans 100% @ 1500 RPM;0")
  26.  
  27. for i in range(numShelves):
  28.     displayData.set("shelf" + str(i),"Fans 100% @ 3000 RPM;00")
  29.  
  30. def getNewData(socket, displayData):
  31.     MAX_LENGTH = 4096
  32.     while 1:
  33.         rcvBuffer = socket.recv(MAX_LENGTH).decode("utf-8")
  34.         peerIP = socket.getpeername()[0]
  35.  
  36.         if rcvBuffer == '':
  37.             if peerIP == head:
  38.                 displayData.set("hdd_temps","0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0")
  39.             for i in range(numShelves):
  40.                 if peerIP == shelfIP[i]: displayData.set("shelf" + str(i),"DISCONNECTED!;0")
  41.             return
  42.        
  43.         if peerIP == head:
  44.             dataType = rcvBuffer.split(";",1)[0]
  45.             data = rcvBuffer.split(";",1)[1]
  46.             if dataType == "hdd":
  47.                 displayData.set("hdd_temps",data)
  48.             elif dataType == "cpu":
  49.                 displayData.set("cpu_temps",data)
  50.             elif dataType == "cpu_fans":
  51.                 displayData.set("cpu_fans",data)
  52.  
  53.         for i in range(numShelves):
  54.             if peerIP == shelfIP[i]: displayData.set("shelf" + str(i),rcvBuffer)
  55.  
  56. def listen(displayData):
  57.     serverSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  58.     connected = False
  59.     while connected == False:
  60.         try:
  61.             serverSocket.bind((listenHost, listenPort))
  62.             serverSocket.listen(10)
  63.             connected = True
  64.         except:
  65.             sleep(5)
  66.             pass
  67.  
  68.     while 1:
  69.         (clientSocket, address) = serverSocket.accept()
  70.         getData = Thread(target=getNewData, args=(clientSocket,displayData,))
  71.         getData.start()
  72.  
  73. def sendNewData(displayData):
  74.     shelf = [""] * numShelves
  75.     hdd_temps = ""
  76.     cpu_temps = ""
  77.  
  78.     while 1:
  79.         time.sleep(updateFreq)
  80.  
  81.         cpu_temps = displayData.get("cpu_temps").decode("utf-8")
  82.         socketio.emit("cpuTempUpdate", {"cpu_temps": cpu_temps})
  83.  
  84.         cpu_fans = displayData.get("cpu_fans").decode("utf-8")
  85.         socketio.emit("cpuFans", {"cpu_fans": cpu_fans})
  86.  
  87.         hdd_temps = displayData.get("hdd_temps").decode("utf-8")
  88.         socketio.emit("hddTempUpdate", {"hdd_temps": hdd_temps})
  89.  
  90.         for i in range(numShelves):
  91.             shelf[i] = displayData.get("shelf" + str(i)).decode("utf-8")
  92.             socketio.emit("shelf", {"shelfData": str(i) + ";" + shelf[i]})
  93.  
  94. sock = Thread(target=listen, args=(displayData,))
  95. sock.start()
  96.  
  97. updateDisplay = Thread(target=sendNewData, args=(displayData,))
  98. updateDisplay.start()
  99.  
  100. @app.route('/')
  101. def index():
  102.     return render_template('index.html')
  103.  
  104. if __name__ == '__main__':
  105.     socketio.run(app, host='0.0.0.0', debug=False)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement