mirror of
https://github.com/meshtastic/Meshtastic-Apple.git
synced 2026-04-20 22:13:56 +00:00
Clean up local stats code
This commit is contained in:
parent
b7dda995c2
commit
7d94dc4264
3 changed files with 37 additions and 11 deletions
|
|
@ -176,3 +176,30 @@ enum Iaq: Int, CaseIterable, Identifiable {
|
|||
return iaq
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Default of 0 is Client
|
||||
enum MetricsTypes: Int, CaseIterable, Identifiable {
|
||||
|
||||
case device = 0
|
||||
case environment = 1
|
||||
case power = 2
|
||||
case airQuality = 3
|
||||
case stats = 4
|
||||
|
||||
var id: Int { self.rawValue }
|
||||
var name: String {
|
||||
switch self {
|
||||
case .device:
|
||||
return "Device Metrics"
|
||||
case .environment:
|
||||
return "Environment Metrics"
|
||||
case .power:
|
||||
return "Power Metrics"
|
||||
case .airQuality:
|
||||
return "Air Quality Metrics"
|
||||
case .stats:
|
||||
return "Stats"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -675,7 +675,7 @@ func routingPacket (packet: MeshPacket, connectedNodeNum: Int64, context: NSMana
|
|||
|
||||
func telemetryPacket(packet: MeshPacket, connectedNode: Int64, context: NSManagedObjectContext) {
|
||||
|
||||
if let telemetryMessage = try? Telemetry(serializedData: packet.decoded.payload) {
|
||||
if let telemetryMessage = try? Telemetry(serializedBytes: packet.decoded.payload) {
|
||||
|
||||
let logString = String.localizedStringWithFormat("mesh.log.telemetry.received %@".localized, String(packet.from))
|
||||
MeshLogger.log("📈 \(logString)")
|
||||
|
|
@ -729,7 +729,7 @@ func telemetryPacket(packet: MeshPacket, connectedNode: Int64, context: NSManage
|
|||
telemetry.numPacketsRxBad = Int32(truncatingIfNeeded: telemetryMessage.localStats.numPacketsRxBad)
|
||||
telemetry.numOnlineNodes = Int32(truncatingIfNeeded: telemetryMessage.localStats.numOnlineNodes)
|
||||
telemetry.numTotalNodes = Int32(truncatingIfNeeded: telemetryMessage.localStats.numTotalNodes)
|
||||
telemetry.metricsType = 6
|
||||
telemetry.metricsType = 4
|
||||
Logger.statistics.info("📈 [Mesh Statistics] Channel Utilization: \(telemetryMessage.localStats.channelUtilization, privacy: .public) Airtime: \(telemetryMessage.localStats.airUtilTx, privacy: .public) Packets Sent: \(telemetryMessage.localStats.numPacketsTx, privacy: .public) Packets Received: \(telemetryMessage.localStats.numPacketsRx, privacy: .public) Bad Packets Received: \(telemetryMessage.localStats.numPacketsRxBad, privacy: .public) Nodes Online: \(telemetryMessage.localStats.numOnlineNodes, privacy: .public) of \(telemetryMessage.localStats.numTotalNodes, privacy: .public) nodes for Node: \(packet.from.toHex(), privacy: .public)")
|
||||
}
|
||||
telemetry.snr = packet.rxSnr
|
||||
|
|
@ -748,7 +748,7 @@ func telemetryPacket(packet: MeshPacket, connectedNode: Int64, context: NSManage
|
|||
}
|
||||
try context.save()
|
||||
|
||||
Logger.data.info("💾 [TelemetryEntity] Saved for Node: \(packet.from.toHex())")
|
||||
Logger.data.info("💾 [TelemetryEntity] of type \(MetricsTypes(rawValue: Int(telemetry.metricsType))?.name ?? "Unknown Metrics Type") Saved for Node: \(packet.from.toHex())")
|
||||
if telemetry.metricsType == 0 {
|
||||
// Connected Device Metrics
|
||||
// ------------------------
|
||||
|
|
@ -769,9 +769,9 @@ func telemetryPacket(packet: MeshPacket, connectedNode: Int64, context: NSManage
|
|||
manager.schedule()
|
||||
}
|
||||
}
|
||||
} else if telemetry.metricsType == 6 {
|
||||
} else if telemetry.metricsType == 4 {
|
||||
// Update our live activity if there is one running, not available on mac iOS >= 16.2
|
||||
#if !targetEnvironment(macCatalyst)
|
||||
#if canImport(ActivityKit)
|
||||
|
||||
let fifteenMinutesLater = Calendar.current.date(byAdding: .minute, value: (Int(15) ), to: Date())!
|
||||
let date = Date.now...fifteenMinutesLater
|
||||
|
|
@ -843,13 +843,10 @@ func textMessageAppPacket(
|
|||
|
||||
if messageText?.count ?? 0 > 0 {
|
||||
MeshLogger.log("💬 \("mesh.log.textmessage.received".localized)")
|
||||
|
||||
let messageUsers = UserEntity.fetchRequest()
|
||||
messageUsers.predicate = NSPredicate(format: "num IN %@", [packet.to, packet.from])
|
||||
|
||||
do {
|
||||
let fetchedUsers = try context.fetch(messageUsers)
|
||||
|
||||
let newMessage = MessageEntity(context: context)
|
||||
newMessage.messageId = Int64(packet.id)
|
||||
if packet.rxTime > 0 {
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@ struct Connect: View {
|
|||
@State var invalidFirmwareVersion = false
|
||||
@State var liveActivityStarted = false
|
||||
@State var selectedPeripherialId = ""
|
||||
@State var localStats: TelemetryEntity?
|
||||
|
||||
init () {
|
||||
let notificationCenter = UNUserNotificationCenter.current()
|
||||
|
|
@ -91,8 +92,6 @@ struct Connect: View {
|
|||
}
|
||||
}
|
||||
VStack {
|
||||
let localStats = node?.telemetries?.filtered(using: NSPredicate(format: "metricsType == 6")).lastObject as? TelemetryEntity
|
||||
|
||||
if localStats != nil {
|
||||
Divider()
|
||||
if localStats?.numTotalNodes ?? 0 >= 100 {
|
||||
|
|
@ -351,6 +350,9 @@ struct Connect: View {
|
|||
.onChange(of: (self.bleManager.invalidVersion)) { _ in
|
||||
invalidFirmwareVersion = self.bleManager.invalidVersion
|
||||
}
|
||||
.onChange(of: [node?.telemetries]) { _ in
|
||||
localStats = node?.telemetries?.filtered(using: NSPredicate(format: "metricsType == 4")).lastObject as? TelemetryEntity
|
||||
}
|
||||
.onChange(of: (self.bleManager.isSubscribed)) { sub in
|
||||
|
||||
if UserDefaults.preferredPeripheralId.count > 0 && sub {
|
||||
|
|
@ -376,7 +378,7 @@ struct Connect: View {
|
|||
liveActivityStarted = true
|
||||
// 15 Minutes Local Stats Interval
|
||||
let timerSeconds = 900
|
||||
let localStats = node?.telemetries?.filtered(using: NSPredicate(format: "metricsType == 6"))
|
||||
let localStats = node?.telemetries?.filtered(using: NSPredicate(format: "metricsType == 4"))
|
||||
let mostRecent = localStats?.lastObject as? TelemetryEntity
|
||||
|
||||
let activityAttributes = MeshActivityAttributes(nodeNum: Int(node?.num ?? 0), name: node?.user?.longName ?? "unknown")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue