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 }