Mercurial > code > home > repos > mqtt_metrics
comparison 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 |
comparison
equal
deleted
inserted
replaced
1:3d7f2dc9beec | 2:579df3a4e62d |
---|---|
1 converters = [] | |
2 | |
3 | |
4 def topic(topic_pattern: str): | |
5 | |
6 def decorator(func): | |
7 func.topic_pattern = topic_pattern | |
8 converters.append(func) | |
9 return func | |
10 | |
11 return decorator | |
12 | |
13 | |
14 @topic(r'([^-]+)-air-quality/sensor/particulate_matter__10_0__m_concentration/state') | |
15 def pm(message, topicGroups: tuple[str]): | |
16 return { | |
17 'name': 'air_quality_pm', | |
18 'labels': [{ | |
19 'labelName': 'location', | |
20 'labelValue': topicGroups[0], | |
21 }, { | |
22 'labelName': 'size', | |
23 'labelValue': '10', | |
24 }], | |
25 'value': message['payload'], | |
26 } | |
27 | |
28 | |
29 @topic(r'([^-]+)-air-quality/sensor/air_temperature_c/state') | |
30 def air_temp(message, topicGroups: tuple[str]): | |
31 return { | |
32 'name': 'air_temperature_f', | |
33 'labels': [{ | |
34 'labelName': 'location', | |
35 'labelValue': topicGroups[0], | |
36 }], | |
37 'value': (float(message['payload']) * 9 / 5) + 32, | |
38 } |