Merge branch 'craftbeerpi:master' into master

This commit is contained in:
Alexander Vollkopf 2022-04-25 07:17:37 +02:00 committed by GitHub
commit f36b6d31ab
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 15 additions and 11 deletions

View file

@ -1,3 +1,3 @@
__version__ = "4.0.5.a10" __version__ = "4.0.5.a11"
__codename__ = "Spring Break" __codename__ = "Spring Break"

View file

@ -7,6 +7,7 @@ class ActorController(BasicController):
def __init__(self, cbpi): def __init__(self, cbpi):
super(ActorController, self).__init__(cbpi, Actor,"actor.json") super(ActorController, self).__init__(cbpi, Actor,"actor.json")
self.update_key = "actorupdate" self.update_key = "actorupdate"
self.sorting=True
async def on(self, id, power=None): async def on(self, id, power=None):
try: try:
@ -20,7 +21,7 @@ class ActorController(BasicController):
if item.instance.state is False: if item.instance.state is False:
await item.instance.on(power) await item.instance.on(power)
#await self.push_udpate() #await self.push_udpate()
self.cbpi.ws.send(dict(topic=self.update_key, data=list(map(lambda item: item.to_dict(), self.data)))) self.cbpi.ws.send(dict(topic=self.update_key, data=list(map(lambda item: item.to_dict(), self.data))),self.sorting)
self.cbpi.push_update("cbpi/actorupdate/{}".format(id), item.to_dict(), True) self.cbpi.push_update("cbpi/actorupdate/{}".format(id), item.to_dict(), True)
else: else:
await self.set_power(id, power) await self.set_power(id, power)
@ -34,7 +35,7 @@ class ActorController(BasicController):
if item.instance.state is True: if item.instance.state is True:
await item.instance.off() await item.instance.off()
#await self.push_udpate() #await self.push_udpate()
self.cbpi.ws.send(dict(topic=self.update_key, data=list(map(lambda item: item.to_dict(), self.data)))) self.cbpi.ws.send(dict(topic=self.update_key, data=list(map(lambda item: item.to_dict(), self.data))),self.sorting)
self.cbpi.push_update("cbpi/actorupdate/{}".format(id), item.to_dict()) self.cbpi.push_update("cbpi/actorupdate/{}".format(id), item.to_dict())
except Exception as e: except Exception as e:
logging.error("Failed to switch on Actor {} {}".format(id, e), True) logging.error("Failed to switch on Actor {} {}".format(id, e), True)
@ -44,7 +45,7 @@ class ActorController(BasicController):
item = self.find_by_id(id) item = self.find_by_id(id)
instance = item.get("instance") instance = item.get("instance")
await instance.toggle() await instance.toggle()
self.cbpi.ws.send(dict(topic=self.update_key, data=list(map(lambda item: item.to_dict(), self.data)))) self.cbpi.ws.send(dict(topic=self.update_key, data=list(map(lambda item: item.to_dict(), self.data))),self.sorting)
self.cbpi.push_update("cbpi/actorupdate/{}".format(id), item.to_dict()) self.cbpi.push_update("cbpi/actorupdate/{}".format(id), item.to_dict())
except Exception as e: except Exception as e:
logging.error("Failed to toggle Actor {} {}".format(id, e)) logging.error("Failed to toggle Actor {} {}".format(id, e))
@ -61,7 +62,7 @@ class ActorController(BasicController):
item = self.find_by_id(id) item = self.find_by_id(id)
item.power = round(power) item.power = round(power)
#await self.push_udpate() #await self.push_udpate()
self.cbpi.ws.send(dict(topic=self.update_key, data=list(map(lambda item: item.to_dict(), self.data)))) self.cbpi.ws.send(dict(topic=self.update_key, data=list(map(lambda item: item.to_dict(), self.data))),self.sorting)
self.cbpi.push_update("cbpi/actorupdate/{}".format(id), item.to_dict()) self.cbpi.push_update("cbpi/actorupdate/{}".format(id), item.to_dict())
except Exception as e: except Exception as e:
logging.error("Failed to update Actor {} {}".format(id, e)) logging.error("Failed to update Actor {} {}".format(id, e))

View file

@ -14,6 +14,7 @@ class BasicController:
def __init__(self, cbpi, resource, file): def __init__(self, cbpi, resource, file):
self.resource = resource self.resource = resource
self.update_key = "" self.update_key = ""
self.sorting = False
self.name = self.__class__.__name__ self.name = self.__class__.__name__
self.cbpi = cbpi self.cbpi = cbpi
self.cbpi.register(self) self.cbpi.register(self)
@ -55,7 +56,7 @@ class BasicController:
await self.push_udpate() await self.push_udpate()
async def push_udpate(self): async def push_udpate(self):
self.cbpi.ws.send(dict(topic=self.update_key, data=list(map(lambda item: item.to_dict(), self.data)))) self.cbpi.ws.send(dict(topic=self.update_key, data=list(map(lambda item: item.to_dict(), self.data))),self.sorting)
#self.cbpi.push_update("cbpi/{}".format(self.update_key), list(map(lambda item: item.to_dict(), self.data))) #self.cbpi.push_update("cbpi/{}".format(self.update_key), list(map(lambda item: item.to_dict(), self.data)))
for item in self.data: for item in self.data:
self.cbpi.push_update("cbpi/{}/{}".format(self.update_key,item.id), item.to_dict()) self.cbpi.push_update("cbpi/{}/{}".format(self.update_key,item.id), item.to_dict())

View file

@ -6,6 +6,7 @@ class SensorController(BasicController):
def __init__(self, cbpi): def __init__(self, cbpi):
super(SensorController, self).__init__(cbpi, Sensor, "sensor.json") super(SensorController, self).__init__(cbpi, Sensor, "sensor.json")
self.update_key = "sensorupdate" self.update_key = "sensorupdate"
self.sorting = True
def create_dict(self, data): def create_dict(self, data):
try: try:

View file

@ -28,11 +28,12 @@ class CBPiWebSocket:
self.send(data) self.send(data)
def send(self, data): def send(self, data, sorting=False):
self.logger.debug("broadcast to ws clients. Data: %s" % data) self.logger.debug("broadcast to ws clients. Data: %s" % data)
for ws in self._clients: for ws in self._clients:
async def send_data(ws, data): async def send_data(ws, data):
try: try:
if sorting:
try: try:
data['data'].sort(key=lambda x: x.get('name').upper()) data['data'].sort(key=lambda x: x.get('name').upper())
except: except: