Skip to content

MiniMed 715 history parsing fails #18

Open
@sulkaharo

Description

@sulkaharo

I'm trying to get a 715 working with OpenAPS and it's clear the decocare history page parsing doesn't actually support this pump. Some of the events do parse correctly but not all. The two stack traces I've seen so far are:

settings/pumphistory-24h.json  raised  month must be in 1..12
Traceback (most recent call last):
  File "/usr/local/bin/openaps-report", line 6, in <module>
    exec(compile(open(__file__).read(), __file__, 'exec'))
  File "/home/edison/src/openaps/bin/openaps-report", line 82, in <module>
    app( )
  File "/home/edison/src/openaps/openaps/cli/__init__.py", line 51, in __call__
    self.run(self.args)
  File "/home/edison/src/openaps/bin/openaps-report", line 75, in run
    output = app(args, self)
  File "/home/edison/src/openaps/openaps/cli/subcommand.py", line 52, in __call__
    return self.method.main(args, app)
  File "/home/edison/src/openaps/openaps/reports/invoke.py", line 40, in main
    output = task.method(args, app)
  File "/home/edison/src/openaps/openaps/uses/use.py", line 45, in __call__
    output = self.main(args, app)
  File "/home/edison/src/openaps/openaps/vendors/medtronic.py", line 639, in main
    for rec in self.range( ):
  File "/usr/local/lib/python2.7/dist-packages/decocare/models/__init__.py", line 67, in __call__
    for record in page:
  File "/usr/local/lib/python2.7/dist-packages/decocare/models/__init__.py", line 46, in download_page
    for record in self.find_records(page):
  File "/usr/local/lib/python2.7/dist-packages/decocare/models/__init__.py", line 158, in find_records
    records = decoder.decode( )
  File "/usr/local/lib/python2.7/dist-packages/decocare/history.py", line 851, in decode
    record = parse_record(self.stream, B, larger=larger, model=self.model)
  File "/usr/local/lib/python2.7/dist-packages/decocare/history.py", line 782, in parse_record
    record.parse( head + date + body )
  File "/usr/local/lib/python2.7/dist-packages/decocare/records/base.py", line 66, in parse
    return self.decode( )
  File "/usr/local/lib/python2.7/dist-packages/decocare/history.py", line 73, in decode
    return (dict(valid_date=date(*mid).isoformat()))
ValueError: month must be in 1..12

and

Traceback (most recent call last):
  File "/usr/local/bin/openaps-report", line 6, in <module>
    exec(compile(open(__file__).read(), __file__, 'exec'))
  File "/home/edison/src/openaps/bin/openaps-report", line 82, in <module>
    app( )
  File "/home/edison/src/openaps/openaps/cli/__init__.py", line 51, in __call__
    self.run(self.args)
  File "/home/edison/src/openaps/bin/openaps-report", line 75, in run
    output = app(args, self)
  File "/home/edison/src/openaps/openaps/cli/subcommand.py", line 52, in __call__
    return self.method.main(args, app)
  File "/home/edison/src/openaps/openaps/reports/invoke.py", line 40, in main
    output = task.method(args, app)
  File "/home/edison/src/openaps/openaps/uses/use.py", line 45, in __call__
    output = self.main(args, app)
  File "/home/edison/src/openaps/openaps/vendors/medtronic.py", line 639, in main
    for rec in self.range( ):
  File "/home/edison/src/decocare/decocare/models/__init__.py", line 67, in __call__
    for record in page:
  File "/home/edison/src/decocare/decocare/models/__init__.py", line 46, in download_page
    for record in self.find_records(page):
  File "/home/edison/src/decocare/decocare/models/__init__.py", line 158, in find_records
    records = decoder.decode( )
  File "/home/edison/src/decocare/decocare/history.py", line 855, in decode
    record = parse_record(self.stream, B, larger=larger, model=self.model)
  File "/home/edison/src/decocare/decocare/history.py", line 786, in parse_record
    record.parse( head + date + body )
  File "/home/edison/src/decocare/decocare/records/base.py", line 66, in parse
    return self.decode( )
  File "/home/edison/src/decocare/decocare/history.py", line 598, in decode
    temp = { 0: 'absolute', 1: 'percent' }[self.head[1]]
KeyError: 81

I logged some of the packets and the date error seems to be caused by the date parser being handled bytes that cannot possibly be a date, resulting in the parsing completely failing or the date being bogus (year deciphered anywhere between 1970 to 2056).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions