Mercurial > code > home > repos > mqtt_metrics
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 |
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 } |