- set power from slider

This commit is contained in:
jens
2020-11-25 10:09:28 +01:00
parent 4cde362642
commit 337ed1e5cd
3 changed files with 21 additions and 12 deletions
+3
View File
@@ -157,6 +157,9 @@ class TaskManager:
return asyncio.gather(*funcs)
async def asleep(time):
await asyncio.sleep(time)
if __name__ == '__main__':
if 0:
taskmgr = PeriodicUpdaterThreaded()
+9 -10
View File
@@ -12,6 +12,7 @@ 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')
@@ -25,6 +26,7 @@ class Window(QtWidgets.QMainWindow, Ui_MainWindow):
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):
@@ -33,21 +35,18 @@ class Window(QtWidgets.QMainWindow, Ui_MainWindow):
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': 10*value})
def on_pot_changed(self, msg):
print("on_pot_changed")
print("on_pot_changed {}".format(msg))
def on_sensor_changed(self, msg):
print("on_sensor_changed")
print("on_sensor_changed {}".format(msg))
def on_heater_changed(self, msg):
print("on_heater_changed")
async def on_send(self):
try:
data = await asyncio.get_event_loop().run_in_executor(None, self.send_data.get, True, 1)
return data
except:
return None
print("on_heater_changed {}".format(msg))
def closeEvent(self, event):
print("Exitting gracefully!")
+9 -2
View File
@@ -4,9 +4,10 @@ import json
class MsgIo:
def __init__(self, key, send):
def __init__(self, key, send, send_from_thread):
self.key = key
self.sender = send
self.send_from_thread_cb = send_from_thread
self.receiver = None
def set_recv_handler(self, handler):
@@ -20,6 +21,9 @@ class MsgIo:
async def send(self, data):
return await self.sender({self.key: data})
def send_from_thread(self, data):
return self.send_from_thread_cb({self.key: data})
def can_key(self, key):
return self.key == key
@@ -50,9 +54,10 @@ class MessageDispatcher(IConnection):
self.state = None
self.state = asyncio.Queue(loop=loop)
self.auto_subscribe = auto_subscribe
self.loop = loop
def msgio_get(self, key):
obj = MsgIo(key, self.send)
obj = MsgIo(key, self.send, self.send_from_thread)
if key not in self.msg_handlers:
self.msg_handlers.append(obj)
return obj
@@ -81,3 +86,5 @@ class MessageDispatcher(IConnection):
async def send(self, data):
await self.state.put(data)
def send_from_thread(self, data):
asyncio.ensure_future(self.send(data), loop=self.loop)