Meshtastic-Apple/Meshtastic/Model/TelemetryEntity.swift

75 lines
1.7 KiB
Swift
Raw Permalink Normal View History

2026-04-16 12:10:00 -07:00
//
// TelemetryEntity.swift
// Meshtastic
//
// SwiftData model for telemetry data.
// Replaces the manual Core Data TelemetryEntity+CoreDataClass/Properties files.
//
import Foundation
import SwiftData
@Model
final class TelemetryEntity {
// Non-optional scalars
var metricsType: Int32 = 0
var numOnlineNodes: Int32 = 0
var numPacketsRx: Int32 = 0
var numPacketsRxBad: Int32 = 0
var numPacketsTx: Int32 = 0
var numRxDupe: Int32 = 0
var numTotalNodes: Int32 = 0
var numTxRelay: Int32 = 0
var numTxRelayCanceled: Int32 = 0
var time: Date?
// Optional scalars (previously used @ManagedAttribute wrapper)
var airUtilTx: Float?
var barometricPressure: Float?
var batteryLevel: Int32?
var channelUtilization: Float?
var current: Float?
var distance: Float?
var gasResistance: Float?
var iaq: Int32?
var irLux: Float?
var lux: Float?
var powerCh1Current: Float?
var powerCh1Voltage: Float?
var powerCh2Current: Float?
var powerCh2Voltage: Float?
var powerCh3Current: Float?
var powerCh3Voltage: Float?
var radiation: Float?
var rainfall1H: Float?
var rainfall24H: Float?
var relativeHumidity: Float?
var rssi: Int32?
var snr: Float?
var soilMoisture: UInt32?
var soilTemperature: Float?
var temperature: Float?
var uptimeSeconds: Int32?
var uvLux: Float?
var voltage: Float?
var weight: Float?
var whiteLux: Float?
var windDirection: Int32?
var windGust: Float?
var windLull: Float?
var windSpeed: Float?
// Relationship
var nodeTelemetry: NodeInfoEntity?
// Computed property
var dewPoint: Float? {
guard let temp = self.temperature, let rh = self.relativeHumidity else {
return nil
}
return Float(calculateDewPoint(temp: temp, relativeHumidity: rh, convertToLocale: false))
}
init() {}
}