annotate 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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2
579df3a4e62d rewrite converters as register'able functions
drewp@bigasterisk.com
parents:
diff changeset
1 converters = []
579df3a4e62d rewrite converters as register'able functions
drewp@bigasterisk.com
parents:
diff changeset
2
579df3a4e62d rewrite converters as register'able functions
drewp@bigasterisk.com
parents:
diff changeset
3
579df3a4e62d rewrite converters as register'able functions
drewp@bigasterisk.com
parents:
diff changeset
4 def topic(topic_pattern: str):
579df3a4e62d rewrite converters as register'able functions
drewp@bigasterisk.com
parents:
diff changeset
5
579df3a4e62d rewrite converters as register'able functions
drewp@bigasterisk.com
parents:
diff changeset
6 def decorator(func):
579df3a4e62d rewrite converters as register'able functions
drewp@bigasterisk.com
parents:
diff changeset
7 func.topic_pattern = topic_pattern
579df3a4e62d rewrite converters as register'able functions
drewp@bigasterisk.com
parents:
diff changeset
8 converters.append(func)
579df3a4e62d rewrite converters as register'able functions
drewp@bigasterisk.com
parents:
diff changeset
9 return func
579df3a4e62d rewrite converters as register'able functions
drewp@bigasterisk.com
parents:
diff changeset
10
579df3a4e62d rewrite converters as register'able functions
drewp@bigasterisk.com
parents:
diff changeset
11 return decorator
579df3a4e62d rewrite converters as register'able functions
drewp@bigasterisk.com
parents:
diff changeset
12
579df3a4e62d rewrite converters as register'able functions
drewp@bigasterisk.com
parents:
diff changeset
13
579df3a4e62d rewrite converters as register'able functions
drewp@bigasterisk.com
parents:
diff changeset
14 @topic(r'([^-]+)-air-quality/sensor/particulate_matter__10_0__m_concentration/state')
579df3a4e62d rewrite converters as register'able functions
drewp@bigasterisk.com
parents:
diff changeset
15 def pm(message, topicGroups: tuple[str]):
579df3a4e62d rewrite converters as register'able functions
drewp@bigasterisk.com
parents:
diff changeset
16 return {
579df3a4e62d rewrite converters as register'able functions
drewp@bigasterisk.com
parents:
diff changeset
17 'name': 'air_quality_pm',
579df3a4e62d rewrite converters as register'able functions
drewp@bigasterisk.com
parents:
diff changeset
18 'labels': [{
579df3a4e62d rewrite converters as register'able functions
drewp@bigasterisk.com
parents:
diff changeset
19 'labelName': 'location',
579df3a4e62d rewrite converters as register'able functions
drewp@bigasterisk.com
parents:
diff changeset
20 'labelValue': topicGroups[0],
579df3a4e62d rewrite converters as register'able functions
drewp@bigasterisk.com
parents:
diff changeset
21 }, {
579df3a4e62d rewrite converters as register'able functions
drewp@bigasterisk.com
parents:
diff changeset
22 'labelName': 'size',
579df3a4e62d rewrite converters as register'able functions
drewp@bigasterisk.com
parents:
diff changeset
23 'labelValue': '10',
579df3a4e62d rewrite converters as register'able functions
drewp@bigasterisk.com
parents:
diff changeset
24 }],
579df3a4e62d rewrite converters as register'able functions
drewp@bigasterisk.com
parents:
diff changeset
25 'value': message['payload'],
579df3a4e62d rewrite converters as register'able functions
drewp@bigasterisk.com
parents:
diff changeset
26 }
579df3a4e62d rewrite converters as register'able functions
drewp@bigasterisk.com
parents:
diff changeset
27
579df3a4e62d rewrite converters as register'able functions
drewp@bigasterisk.com
parents:
diff changeset
28
579df3a4e62d rewrite converters as register'able functions
drewp@bigasterisk.com
parents:
diff changeset
29 @topic(r'([^-]+)-air-quality/sensor/air_temperature_c/state')
579df3a4e62d rewrite converters as register'able functions
drewp@bigasterisk.com
parents:
diff changeset
30 def air_temp(message, topicGroups: tuple[str]):
579df3a4e62d rewrite converters as register'able functions
drewp@bigasterisk.com
parents:
diff changeset
31 return {
579df3a4e62d rewrite converters as register'able functions
drewp@bigasterisk.com
parents:
diff changeset
32 'name': 'air_temperature_f',
579df3a4e62d rewrite converters as register'able functions
drewp@bigasterisk.com
parents:
diff changeset
33 'labels': [{
579df3a4e62d rewrite converters as register'able functions
drewp@bigasterisk.com
parents:
diff changeset
34 'labelName': 'location',
579df3a4e62d rewrite converters as register'able functions
drewp@bigasterisk.com
parents:
diff changeset
35 'labelValue': topicGroups[0],
579df3a4e62d rewrite converters as register'able functions
drewp@bigasterisk.com
parents:
diff changeset
36 }],
579df3a4e62d rewrite converters as register'able functions
drewp@bigasterisk.com
parents:
diff changeset
37 'value': (float(message['payload']) * 9 / 5) + 32,
579df3a4e62d rewrite converters as register'able functions
drewp@bigasterisk.com
parents:
diff changeset
38 }