Skip to content
Snippets Groups Projects
Commit 60e4e830 authored by istmxrein's avatar istmxrein
Browse files

add power consume manager & bump to 1.6.0

parent 0cf09590
Branches
No related tags found
No related merge requests found
import collections
import functools import functools
import json import json
import logging import logging
...@@ -319,3 +320,49 @@ class PowerConsumer(threading.Thread): ...@@ -319,3 +320,49 @@ class PowerConsumer(threading.Thread):
else: else:
self._connection.ioloop.stop() self._connection.ioloop.stop()
logger.info('Stopped') logger.info('Stopped')
state: Dict[str, State] = {}
custom_callback: Callable = None
pi_consumer: PowerConsumer = None
controller_consumer: PowerConsumer = None
switch_consumer: PowerConsumer = None
def event_callback(event: Event):
logger.info(f"Received Power event: {event}")
if custom_callback:
custom_callback(event)
state[event.mac] = event.state
def run_restart_consumer(macs: List[str], _type: Type, callback: Callable = None):
global custom_callback, pi_consumer, controller_consumer, switch_consumer
custom_callback = callback
def restart_consumer(consumer: PowerConsumer):
if not consumer:
consumer = PowerConsumer(queues=macs, callback=event_callback, type=_type)
consumer.start()
logger.info(f'Restart power consumer for type {_type.value}')
return consumer
elif collections.Counter(consumer.queues) != collections.Counter(macs):
consumer.stop()
consumer.join()
consumer = PowerConsumer(queues=macs, callback=event_callback, type=_type)
consumer.start()
logger.info(f'Restart power consumer for type {_type.value}')
return consumer
else:
return consumer
match _type:
case Type.pi:
pi_consumer = restart_consumer(pi_consumer)
case Type.controller:
controller_consumer = restart_consumer(controller_consumer)
case Type.switch:
switch_consumer = restart_consumer(switch_consumer)
case _:
raise ValueError("Type is not known")
...@@ -2,7 +2,7 @@ from setuptools import setup, find_packages ...@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
setup( setup(
name='pilab', name='pilab',
version='1.5.9', version='1.6.0',
description='Shared-Libs for the pi-lab microservices', description='Shared-Libs for the pi-lab microservices',
url='https://code.fbi.h-da.de/api/v4/projects/27896/packages/pypi/pilab', url='https://code.fbi.h-da.de/api/v4/projects/27896/packages/pypi/pilab',
author='Max Reinheimer', author='Max Reinheimer',
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment