Skip to content

Commit

Permalink
meters: Add debug report parser
Browse files Browse the repository at this point in the history
  • Loading branch information
photron committed Mar 4, 2025
1 parent 2184518 commit 5840473
Show file tree
Hide file tree
Showing 2 changed files with 67 additions and 3 deletions.
64 changes: 64 additions & 0 deletions software/src/modules/meters/parse_debug_report.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
#!/usr/bin/python -u

import json
import argparse
import tinkerforge_util as tfutil

tfutil.create_parent_module(__file__, 'software')

from software.src.modules.meters.meter_value_id import MeterValueID


def main():
parser = argparse.ArgumentParser()
parser.add_argument('filename')

args = parser.parse_args()

with open(args.filename, 'r') as f:
skip = True
lines = []

for line in f.readlines():
if skip:
if len(line.strip()) == 0:
skip = False

continue
elif len(line.strip()) == 0:
break
else:
lines.append(line)

report = json.loads(''.join(lines))

for slot in range(7):
config_key = f'meters/{slot}/config'
value_ids_key = f'meters/{slot}/value_ids'
values_key = f'meters/{slot}/values'

config = report.get(config_key)
value_ids = report.get(value_ids_key)
values = report.get(values_key)

if config == None:
continue

display_name = ''

if config[1] != None:
display_name = config[1].get('display_name')

max_length = max([len(MeterValueID(value_id).name) for value_id in value_ids])

print(f'\nMeter {slot}: {display_name}')

for i, value_id in enumerate(value_ids):
value_name = MeterValueID(value_id).name

print(f' {value_name}:{" " * (max_length - len(value_name))} {values[i]}')


if __name__ == '__main__':
main()

6 changes: 3 additions & 3 deletions software/src/modules/meters/prepare.py
Original file line number Diff line number Diff line change
Expand Up @@ -184,10 +184,10 @@ def sanitize(s):

with open('meter_value_id.py', 'w', encoding='utf-8') as f:
f.write('# WARNING: This file is generated by esp32-firmware/software/src/modules/meters/prepare.py\n\n')
f.write('from enum import Enum\n\n\n')
f.write('class MVID(Enum):\n')

f.write('from enum import Enum\n\n')
f.write('class MeterValueID(Enum):\n')
f.write(''.join(x.replace(",", "").replace("//", " #") for x in value_id_enum))
f.write('\nMVID = MeterValueID\n')

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

0 comments on commit 5840473

Please sign in to comment.