浏览代码

Add average of past 2 hours of TDD data (one entry each loop) to tdd_averages.json by request.

Jon Mårtensson 4 年之前
父节点
当前提交
b99550332e
共有 2 个文件被更改,包括 29 次插入2 次删除
  1. 25 2
      FreeAPS/Sources/APS/APSManager.swift
  2. 4 0
      FreeAPS/Sources/Models/TDD_averages.swift

+ 25 - 2
FreeAPS/Sources/APS/APSManager.swift

@@ -605,7 +605,7 @@ final class BaseAPSManager: APSManager, Injectable {
                 uniqEvents = storage.retrieve(file, as: [TDD].self)?
                     .filter { $0.timestamp.addingTimeInterval(7.days.timeInterval) > Date() }
                     .sorted { $0.timestamp > $1.timestamp } ?? []
-
+                
                 var total: Decimal = 0
                 var indeces: Decimal = 0
 
@@ -616,21 +616,44 @@ final class BaseAPSManager: APSManager, Injectable {
                     }
                 }
 
+                var entriesPast2hours = storage.retrieve(file, as: [TDD].self)?
+                    .filter { $0.timestamp.addingTimeInterval(2.hours.timeInterval) > Date() }
+                    .sorted { $0.timestamp > $1.timestamp } ?? []
+                    
+                var totalAmount: Decimal = 0
+                var nrOfIndeces: Decimal = 0
+
+                for entry in entriesPast2hours {
+                    if entry.TDD > 0 {
+                        totalAmount += entry.TDD
+                        nrOfIndeces += 1
+                    }
+                }
+                
                 if indeces == 0 {
                     indeces = 1
                 }
+                
+                if nrOfIndeces == 0 {
+                    nrOfIndeces = 1
+                }
+                    
                 let average7 = total / indeces
                 let weight = preferences.weightPercentage
                 let weighted_average = weight * currentTDD + (1 - weight) * average7
+                let average2hours = totalAmount / nrOfIndeces
+                    
                 let averages = TDD_averages(
                     average_7days: average7,
                     weightedAverage: weighted_average,
+                    past2hoursAverage: average2hours,
                     date: Date()
                 )
                 storage.save(averages, as: OpenAPS.Monitor.tdd_averages)
                 storage.save(Array(uniqEvents), as: file)
             }
-
+            // End of tdd.json
+            
             debug(.apsManager, "Suggestion enacted. Received: \(received)")
             DispatchQueue.main.async {
                 self.broadcaster.notify(EnactedSuggestionObserver.self, on: .main) {

+ 4 - 0
FreeAPS/Sources/Models/TDD_averages.swift

@@ -3,15 +3,18 @@ import Foundation
 struct TDD_averages: JSON, Equatable {
     var average_7days: Decimal
     var weightedAverage: Decimal
+    var past2hoursAverage: Decimal
     var date: Date
 
     init(
         average_7days: Decimal,
         weightedAverage: Decimal,
+        past2hoursAverage: Decimal,
         date: Date
     ) {
         self.average_7days = average_7days
         self.weightedAverage = weightedAverage
+        self.past2hoursAverage = past2hoursAverage
         self.date = date
     }
 }
@@ -20,6 +23,7 @@ extension TDD_averages {
     private enum CodingKeys: String, CodingKey {
         case average_7days
         case weightedAverage
+        case past2hoursAverage
         case date
     }
 }