2023-06-03 08:15:00 +02:00
|
|
|
import Foundation
|
|
|
|
|
2023-06-05 13:05:57 +02:00
|
|
|
struct TemperatureMeasurement: Identifiable {
|
2023-06-03 08:15:00 +02:00
|
|
|
|
|
|
|
var sensor0: TemperatureValue
|
|
|
|
|
|
|
|
var sensor1: TemperatureValue
|
|
|
|
|
|
|
|
var date: Date
|
2023-06-05 13:05:57 +02:00
|
|
|
|
|
|
|
var id: Int {
|
|
|
|
Int(date.timeIntervalSince1970.rounded())
|
|
|
|
}
|
|
|
|
|
|
|
|
var secondsAgo: Int {
|
|
|
|
Int(date.timeIntervalSinceNow.rounded())
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
private extension TemperatureValue {
|
|
|
|
|
|
|
|
init(value: Double?) {
|
|
|
|
if let value {
|
|
|
|
self = .value(value)
|
|
|
|
} else {
|
|
|
|
self = .notFound
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
private extension TemperatureMeasurement {
|
|
|
|
|
|
|
|
init(t0: Double?, t1: Double?, secs: Int) {
|
|
|
|
self.sensor0 = .init(value: t0)
|
|
|
|
self.sensor1 = .init(value: t1)
|
|
|
|
self.date = Date().addingTimeInterval(TimeInterval(secs-3600))
|
|
|
|
}
|
|
|
|
|
|
|
|
init(t0: Double?, t1: Double?, min: Int) {
|
|
|
|
self.init(t0: t0, t1: t1, secs: min * 60)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
extension TemperatureMeasurement {
|
|
|
|
|
|
|
|
static let mockData: [TemperatureMeasurement] = {
|
|
|
|
let temps: [(Double?, Double?)] = [
|
|
|
|
(20, 14),
|
|
|
|
(20, 13.5),
|
|
|
|
(20.5, 13.5),
|
|
|
|
(20.5, 13.5),
|
|
|
|
(21, 14),
|
|
|
|
(21, 14),
|
|
|
|
(nil, 14.5),
|
|
|
|
(nil, 14),
|
|
|
|
(nil, 14.5),
|
|
|
|
(nil, 14),
|
|
|
|
(nil, 14),
|
|
|
|
(nil, 14.5),
|
|
|
|
(nil, 15),
|
|
|
|
(5.0, 15),
|
|
|
|
(4.5, 15.5),
|
|
|
|
(4.5, 16),
|
|
|
|
(4.0, 16.5),
|
|
|
|
(3.0, 17),
|
|
|
|
(3.0, 19),
|
|
|
|
(2.5, 20),
|
|
|
|
(2.5, 20.5),
|
|
|
|
(2.0, 20.5),
|
|
|
|
(1.0, 20.5),
|
|
|
|
(0.5, 20.5),
|
|
|
|
(0.0, 20),
|
|
|
|
(0.0, 20),
|
|
|
|
(-1.0, 21.0),
|
|
|
|
(-0.5, 21.0),
|
|
|
|
(-3.0, 21.0),
|
|
|
|
(-3.5, 20.5),
|
|
|
|
(-4.0, 20.5),
|
|
|
|
(-5.0, 20.0),
|
|
|
|
(-5.0, nil),
|
|
|
|
(-5.5, nil),
|
|
|
|
(-5.0, nil),
|
|
|
|
(-5.5, nil),
|
|
|
|
(-6.0, nil),
|
|
|
|
(-5.0, nil),
|
|
|
|
(nil, nil),
|
|
|
|
(nil, nil),
|
|
|
|
(nil, nil),
|
|
|
|
(-5.0, nil),
|
|
|
|
(-4.5, nil),
|
|
|
|
(-4.0, 23.0),
|
|
|
|
(5.0, 24.0),
|
|
|
|
(7.0, 25.0),
|
|
|
|
(8.0, 25.5),
|
|
|
|
(8.5, 25.5),
|
|
|
|
(10.0, 25.5),
|
|
|
|
(10.5, 24.0),
|
|
|
|
(10.5, 24.0),
|
|
|
|
(10.5, 24.5),
|
|
|
|
(12.0, 23.5),
|
|
|
|
(12.5, 24.0),
|
|
|
|
(12.0, 23.5),
|
|
|
|
(14.0, 24.0),
|
|
|
|
(15.0, 25.0),
|
|
|
|
(15.0, 25.0),
|
|
|
|
(15.5, 25.0),
|
|
|
|
(15.0, 25.0),
|
|
|
|
]
|
|
|
|
return temps.enumerated().map {
|
|
|
|
TemperatureMeasurement(t0: $0.element.0, t1: $0.element.1, min: $0.offset)
|
|
|
|
}
|
|
|
|
}()
|
2023-06-03 08:15:00 +02:00
|
|
|
}
|