Ver código fonte

Experimental OmniPod age upload to CAGE as Site Change event

(cherry picked from commit c9fb2eadf5437e1e77427392ea8faf8c99ef743c)
Jan Dittmer 4 anos atrás
pai
commit
99c7895401

+ 4 - 0
FreeAPS/Sources/APS/DeviceDataManager.swift

@@ -298,6 +298,10 @@ extension BaseDeviceDataManager: PumpManagerDelegate {
                 return
             }
             pumpExpiresAtDate.send(endTime)
+
+            if let startTime = omnipod.state.podState?.activatedAt {
+                storage.save(startTime, as: OpenAPS.Monitor.podAge)
+            }
         }
     }
 

+ 2 - 0
FreeAPS/Sources/APS/OpenAPS/Constants.swift

@@ -53,6 +53,7 @@ extension OpenAPS {
         static let glucose = "monitor/glucose.json"
         static let iob = "monitor/iob.json"
         static let cgmState = "monitor/cgm-state.json"
+        static let podAge = "monitor/pod-age.json"
     }
 
     enum Enact {
@@ -79,6 +80,7 @@ extension OpenAPS {
         static let uploadedTempTargets = "upload/uploaded-temptargets.json"
         static let uploadedGlucose = "upload/uploaded-glucose.json"
         static let uploadedCGMState = "upload/uploaded-cgm-state.json"
+        static let uploadedPodAge = "upload/uploaded-pod-age.json"
     }
 
     enum FreeAPS {

+ 27 - 1
FreeAPS/Sources/Services/Network/NightscoutManager.swift

@@ -196,6 +196,7 @@ final class BaseNightscoutManager: NightscoutManager, Injectable {
         )
 
         let battery = storage.retrieve(OpenAPS.Monitor.battery, as: Battery.self)
+
         var reservoir = Decimal(from: storage.retrieveRaw(OpenAPS.Monitor.reservoir) ?? "0")
         if reservoir == 0xDEAD_BEEF {
             reservoir = nil
@@ -211,7 +212,7 @@ final class BaseNightscoutManager: NightscoutManager, Injectable {
         let uploader = Uploader(batteryVoltage: nil, battery: Int(device.batteryLevel * 100))
 
         let status = NightscoutStatus(
-            device: "freeaps-x://" + device.name,
+            device: NigtscoutTreatment.local,
             openaps: openapsStatus,
             pump: pump,
             preferences: preferences,
@@ -236,6 +237,31 @@ final class BaseNightscoutManager: NightscoutManager, Injectable {
                 } receiveValue: {}
                 .store(in: &self.lifetime)
         }
+    
+        let uploadedPodAge = storage.retrieve(OpenAPS.Nightscout.uploadedPodAge, as: [NigtscoutTreatment].self) ?? []
+        let podAge = storage.retrieve(OpenAPS.Monitor.podAge, as: Date.self) ?? Date.distantPast
+
+        if uploadedPodAge.last?.createdAt == nil || podAge != uploadedPodAge.last!.createdAt!
+        {
+            let siteTreatment = NigtscoutTreatment(
+                duration: nil,
+                rawDuration: nil,
+                rawRate: nil,
+                absolute: nil,
+                rate: nil,
+                eventType: .nsSiteChange,
+                createdAt: podAge,
+                enteredBy: NigtscoutTreatment.local,
+                bolus: nil,
+                insulin: nil,
+                notes: nil,
+                carbs: nil,
+                targetTop: nil,
+                targetBottom: nil
+            )
+            uploadTreatments([siteTreatment], fileToSave: OpenAPS.Nightscout.uploadedPodAge)
+        }
+    
     }
 
     func uploadGlucose() {