77 lines
2.3 KiB
Python
77 lines
2.3 KiB
Python
from brewpi_win import Ui_MainWindow
|
|
from PyQt5 import QtWidgets, QtGui
|
|
import sys
|
|
from ws.client.ws_client import WsClient
|
|
from ws.message import MessageDispatcher
|
|
from queue import Queue
|
|
import asyncio
|
|
from ws.connection import IConnection
|
|
|
|
|
|
class Window(QtWidgets.QMainWindow, Ui_MainWindow):
|
|
def __init__(self):
|
|
QtWidgets.QMainWindow.__init__(self)
|
|
self.setWindowIcon(QtGui.QIcon('res/beer.png'))
|
|
|
|
loop = asyncio.new_event_loop()
|
|
asyncio.set_event_loop(loop)
|
|
self.msg_dispatch = MessageDispatcher(auto_subscribe=True, loop=loop)
|
|
self.ws_client = WsClient(listener=self.msg_dispatch, loop=loop)
|
|
self.msg_pot = self.msg_dispatch.msgio_get('Pot')
|
|
self.msg_sensor = self.msg_dispatch.msgio_get('Sensor')
|
|
self.msg_heater = self.msg_dispatch.msgio_get('Heater')
|
|
|
|
self.msg_pot.set_recv_handler(self.on_pot_changed)
|
|
self.msg_sensor.set_recv_handler(self.on_sensor_changed)
|
|
self.msg_heater.set_recv_handler(self.on_heater_changed)
|
|
|
|
self.setupUi(self)
|
|
self.actionStart.triggered.connect(self.connect)
|
|
self.actionStop.triggered.connect(self.disconnect)
|
|
self.Slider.valueChanged.connect(self.on_slider_changed)
|
|
self.send_data = Queue()
|
|
|
|
def connect(self):
|
|
self.ws_client.connect(uri="ws://localhost:8765")
|
|
|
|
def disconnect(self):
|
|
self.ws_client.disconnect()
|
|
|
|
def on_slider_changed(self, value):
|
|
print("on_slider_changed {}".format(value))
|
|
self.msg_heater.send_from_thread({'Activate': 1, 'Power': value})
|
|
|
|
async def on_pot_changed(self, msg):
|
|
print("on_pot_changed {}".format(msg))
|
|
if "Power" in msg:
|
|
self.lcdNumber_2.display(msg['Power'])
|
|
|
|
async def on_sensor_changed(self, msg):
|
|
print("on_sensor_changed {}".format(msg))
|
|
if "Temp" in msg:
|
|
self.lcdNumber_3.display(str(msg['Temp']))
|
|
|
|
async def on_heater_changed(self, msg):
|
|
print("on_heater_changed {}".format(msg))
|
|
for key in msg:
|
|
if "Power" in key:
|
|
self.lcdNumber.display(msg['Power'])
|
|
elif "Capabilities" in key:
|
|
submsg = msg['Capabilities']
|
|
if "Power" in submsg:
|
|
submsg = submsg['Power']
|
|
self.Slider.setLowerBound(submsg['Min'])
|
|
self.Slider.setUpperBound(submsg['Max'])
|
|
|
|
def closeEvent(self, event):
|
|
print("Exitting gracefully!")
|
|
self.ws_client.disconnect()
|
|
|
|
|
|
if __name__ == '__main__':
|
|
app = QtWidgets.QApplication(sys.argv)
|
|
win = Window()
|
|
win.show()
|
|
sys.exit(app.exec_())
|
|
|
|
print ("End of program.") |