diff --git a/tconnectsync/parser/nightscout.py b/tconnectsync/parser/nightscout.py index 574837d..781321e 100644 --- a/tconnectsync/parser/nightscout.py +++ b/tconnectsync/parser/nightscout.py @@ -251,30 +251,33 @@ class NightscoutEntry: return { # insulin duration in hours; Nightscout JS bug requires all top-level fields to be strings "dia": "%s" % (profile.insulinDuration / 60), - "carbratio": [ + "carbratio": list(sorted([ { "time": minutes_to_ns_time(segment.startTime), "timeAsSeconds": segment.startTime * 60, "value": segment.carbRatio / 1000 # milliunits->units - } for segment in profile.tDependentSegs - ], + } for segment in profile.tDependentSegs if not segment.skip + ], key=lambda x: x["timeAsSeconds"])), "carbs_hr": NIGHTSCOUT_PROFILE_CARBS_HR_VALUE, "delay": NIGHTSCOUT_PROFILE_DELAY_VALUE, - "sens": [ # Correction factor / isf + + "sens": list(sorted([ # Correction factor / isf { "time": minutes_to_ns_time(segment.startTime), "timeAsSeconds": segment.startTime * 60, "value": segment.isf - } for segment in profile.tDependentSegs - ], - "basal": [ + } for segment in profile.tDependentSegs if not segment.skip + ], key=lambda x: x["timeAsSeconds"])), + + "basal": list(sorted([ { "time": minutes_to_ns_time(segment.startTime), "timeAsSeconds": segment.startTime * 60, "value": segment.basalRate / 1000 # milliunits->units } for segment in profile.tDependentSegs - ], + ], key=lambda x: x["timeAsSeconds"])), + "target_low": [ { "time": "00:00", diff --git a/tconnectsync/sync/tandemsource/update_profiles.py b/tconnectsync/sync/tandemsource/update_profiles.py index 95c3cef..32f47cd 100644 --- a/tconnectsync/sync/tandemsource/update_profiles.py +++ b/tconnectsync/sync/tandemsource/update_profiles.py @@ -8,7 +8,7 @@ from ...features import DEFAULT_FEATURES from ... import features from ...domain.tandemsource.pump_settings import PumpSettings from ...parser.nightscout import ( - NightscoutEntry + NightscoutEntry, ENTERED_BY ) from ...secret import NIGHTSCOUT_PROFILE_UPLOAD_MODE @@ -53,6 +53,8 @@ class UpdateProfiles: if ns_profile_obj is None: ns_profile_obj = {} + logger.info("Current Nightscout profile was authored by: %s" % (ns_profile_obj.get('enteredBy'))) + diff, ns_profile_new = self.compare_profiles(pump_settings, ns_profile_obj) if not diff: logger.info("Pump and Nightscout profiles up to date") @@ -145,6 +147,7 @@ class UpdateProfiles: return False, ns_profile_obj logger.info("New Nightscout profile object: %s", new_ns_profile) + new_ns_profile['enteredBy'] = ENTERED_BY return True, new_ns_profile def nightscout_profiles_identical(self, configured: dict, translated: dict) -> bool: