from brewpi_win import Ui_MainWindow from PyQt5 import QtWidgets 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) 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.")