Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python3
- import socket, redis, time
- from flask import Flask, render_template
- from flask_socketio import SocketIO, emit
- from threading import Thread, Event
- numShelves = 2
- updateFreq = 0.01
- listenHost = "10.0.10.100"
- listenPort = 10000
- head = "10.0.1.2"
- shelfIP = [""] * numShelves
- for i in range(numShelves):
- shelfIP[i] = "10.0.10." + str(i)
- app = Flask(__name__)
- app.config['DEBUG'] = False
- socketio = SocketIO(app, message_queue="redis://")
- displayData = redis.Redis(host="localhost", port=6379, db=0)
- 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")
- displayData.set("cpu_temps","0 0 0 0 0 0 0 0")
- displayData.set("cpu_fans","Fans 100% @ 1500 RPM;0")
- for i in range(numShelves):
- displayData.set("shelf" + str(i),"Fans 100% @ 3000 RPM;00")
- def getNewData(socket, displayData):
- MAX_LENGTH = 4096
- while 1:
- rcvBuffer = socket.recv(MAX_LENGTH).decode("utf-8")
- peerIP = socket.getpeername()[0]
- if rcvBuffer == '':
- if peerIP == head:
- 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")
- for i in range(numShelves):
- if peerIP == shelfIP[i]: displayData.set("shelf" + str(i),"DISCONNECTED!;0")
- return
- if peerIP == head:
- dataType = rcvBuffer.split(";",1)[0]
- data = rcvBuffer.split(";",1)[1]
- if dataType == "hdd":
- displayData.set("hdd_temps",data)
- elif dataType == "cpu":
- displayData.set("cpu_temps",data)
- elif dataType == "cpu_fans":
- displayData.set("cpu_fans",data)
- for i in range(numShelves):
- if peerIP == shelfIP[i]: displayData.set("shelf" + str(i),rcvBuffer)
- def listen(displayData):
- serverSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- connected = False
- while connected == False:
- try:
- serverSocket.bind((listenHost, listenPort))
- serverSocket.listen(10)
- connected = True
- except:
- sleep(5)
- pass
- while 1:
- (clientSocket, address) = serverSocket.accept()
- getData = Thread(target=getNewData, args=(clientSocket,displayData,))
- getData.start()
- def sendNewData(displayData):
- shelf = [""] * numShelves
- hdd_temps = ""
- cpu_temps = ""
- while 1:
- time.sleep(updateFreq)
- cpu_temps = displayData.get("cpu_temps").decode("utf-8")
- socketio.emit("cpuTempUpdate", {"cpu_temps": cpu_temps})
- cpu_fans = displayData.get("cpu_fans").decode("utf-8")
- socketio.emit("cpuFans", {"cpu_fans": cpu_fans})
- hdd_temps = displayData.get("hdd_temps").decode("utf-8")
- socketio.emit("hddTempUpdate", {"hdd_temps": hdd_temps})
- for i in range(numShelves):
- shelf[i] = displayData.get("shelf" + str(i)).decode("utf-8")
- socketio.emit("shelf", {"shelfData": str(i) + ";" + shelf[i]})
- sock = Thread(target=listen, args=(displayData,))
- sock.start()
- updateDisplay = Thread(target=sendNewData, args=(displayData,))
- updateDisplay.start()
- @app.route('/')
- def index():
- return render_template('index.html')
- if __name__ == '__main__':
- socketio.run(app, host='0.0.0.0', debug=False)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement