SugarLife — объяснения

Почему приложение ведёт себя именно так и чем платят настройки

View the Project on GitHub iMironRU/sugarlife-wiki

Углеводы, которые вы внесли, уезжают в Nightscout

Приложение только читает приборы. Но еда — не команда прибору, а факт о вас: вы её съели, и знать об этом должны все, кто считает по вашим данным.

Поэтому внесённый приём пищи уходит в ваш Nightscout, если он подключён.

Что именно уезжает

что внесли что появится в Nightscout
еда без болюса Carb Correction с граммами
еда с болюсом Meal Bolus: граммы и единицы одной записью
болюс без еды Correction Bolus
замена сенсора, набора, резервуара Sensor Start, Site Change, Insulin Change

Углеводная запись уходит без поля инсулина. Ноль в нём читался бы как «болюс на ноль единиц» — то есть как факт подачи.

Каждая наша запись подписана: enteredBy: SugarLife. По подписи её отличают от чужих — и мы сами вправе трогать только свои.

Чего мы не пишем никогда

Длинного инсулина. У Nightscout нет для него своего типа. Положив его болюсом, мы добавили бы 24 единицы в чужой расчёт активного инсулина — и петля у того же человека начала бы считать дозы по неверному фону. Молчание тут безопаснее вранья.

Сырых показаний. Пометки «сырое» в Nightscout не существует, а читатели берут оттуда числа не глядя. Уедет только то, что посчитал алгоритм прибора.

Чужого. В базе рядом лежат записи других программ. Мы их не меняем и не удаляем.

Если вы исправили запись

Исправление уезжает и заменяет прежнее, а не ложится рядом. Приложение находит свою прошлую запись по вашему же ключу, убирает её и кладёт исправленную.

Убирает только свою — по совпадению ключа и подписи.

Порядок «сначала убрать, потом положить» выбран намеренно: оборвись связь между двумя шагами, вы недосчитаетесь еды, а не получите лишней. Недосчёт видно, и он правится; лишняя доза — нет.

Ограничение: двое суток. Правку записи старше двух суток приложение не заметит. Правят внесённое обычно в тот же день; дальше это уже не правка, а переписывание истории — молча делать такое приложение не должно.

Если связь пропала

Запись ложится в свою базу сразу и ждёт. Уедет, когда связь вернётся — хоть через час, хоть после перезапуска телефона: очередь переживает и то и другое.

Повтор после обрыва не задваивает приём. Перед отправкой приложение сверяется с тем, что уже лежит в вашей базе: у Nightscout нет ключа идемпотентности, поэтому спрашиваем сами.

Важное про петлю

Nightscout читают не только люди. Если ваша петля настроена забирать оттуда лечение, внесённые углеводы станут для неё активными — и она посчитает на них дозу.

Это не наше решение и не наша настройка: она живёт в вашей петле. Но знать об этом нужно до того, как вы внесёте еду задним числом «для истории».

Смотрите также: Nightscout: адрес и токен, активный инсулин.