Mercurial > code > home > repos > mqtt_metrics
view convert.py @ 2:579df3a4e62d
rewrite converters as register'able functions
author | drewp@bigasterisk.com |
---|---|
date | Fri, 09 Aug 2024 17:37:00 -0700 |
parents | |
children | cd1b8d7bda78 |
line wrap: on
line source
converters = [] def topic(topic_pattern: str): def decorator(func): func.topic_pattern = topic_pattern converters.append(func) return func return decorator @topic(r'([^-]+)-air-quality/sensor/particulate_matter__10_0__m_concentration/state') def pm(message, topicGroups: tuple[str]): return { 'name': 'air_quality_pm', 'labels': [{ 'labelName': 'location', 'labelValue': topicGroups[0], }, { 'labelName': 'size', 'labelValue': '10', }], 'value': message['payload'], } @topic(r'([^-]+)-air-quality/sensor/air_temperature_c/state') def air_temp(message, topicGroups: tuple[str]): return { 'name': 'air_temperature_f', 'labels': [{ 'labelName': 'location', 'labelValue': topicGroups[0], }], 'value': (float(message['payload']) * 9 / 5) + 32, }