Skip to content

Commit 5840473

Browse files
committed
meters: Add debug report parser
1 parent 2184518 commit 5840473

File tree

2 files changed

+67
-3
lines changed

2 files changed

+67
-3
lines changed
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
#!/usr/bin/python -u
2+
3+
import json
4+
import argparse
5+
import tinkerforge_util as tfutil
6+
7+
tfutil.create_parent_module(__file__, 'software')
8+
9+
from software.src.modules.meters.meter_value_id import MeterValueID
10+
11+
12+
def main():
13+
parser = argparse.ArgumentParser()
14+
parser.add_argument('filename')
15+
16+
args = parser.parse_args()
17+
18+
with open(args.filename, 'r') as f:
19+
skip = True
20+
lines = []
21+
22+
for line in f.readlines():
23+
if skip:
24+
if len(line.strip()) == 0:
25+
skip = False
26+
27+
continue
28+
elif len(line.strip()) == 0:
29+
break
30+
else:
31+
lines.append(line)
32+
33+
report = json.loads(''.join(lines))
34+
35+
for slot in range(7):
36+
config_key = f'meters/{slot}/config'
37+
value_ids_key = f'meters/{slot}/value_ids'
38+
values_key = f'meters/{slot}/values'
39+
40+
config = report.get(config_key)
41+
value_ids = report.get(value_ids_key)
42+
values = report.get(values_key)
43+
44+
if config == None:
45+
continue
46+
47+
display_name = ''
48+
49+
if config[1] != None:
50+
display_name = config[1].get('display_name')
51+
52+
max_length = max([len(MeterValueID(value_id).name) for value_id in value_ids])
53+
54+
print(f'\nMeter {slot}: {display_name}')
55+
56+
for i, value_id in enumerate(value_ids):
57+
value_name = MeterValueID(value_id).name
58+
59+
print(f' {value_name}:{" " * (max_length - len(value_name))} {values[i]}')
60+
61+
62+
if __name__ == '__main__':
63+
main()
64+

software/src/modules/meters/prepare.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -184,10 +184,10 @@ def sanitize(s):
184184

185185
with open('meter_value_id.py', 'w', encoding='utf-8') as f:
186186
f.write('# WARNING: This file is generated by esp32-firmware/software/src/modules/meters/prepare.py\n\n')
187-
f.write('from enum import Enum\n\n\n')
188-
f.write('class MVID(Enum):\n')
189-
187+
f.write('from enum import Enum\n\n')
188+
f.write('class MeterValueID(Enum):\n')
190189
f.write(''.join(x.replace(",", "").replace("//", " #") for x in value_id_enum))
190+
f.write('\nMVID = MeterValueID\n')
191191

192192
with open('meter_value_id.h', 'w', encoding='utf-8') as f:
193193
f.write('// WARNING: This file is generated by esp32-firmware/software/src/modules/meters/prepare.py\n\n')

0 commit comments

Comments
 (0)