From df999abf6cec1e1b56a22c7ad463d6b8d3c08ca8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Szak=C3=A1ts=20Alp=C3=A1r=20Zsolt?= Date: Thu, 21 Aug 2025 09:41:51 +0200 Subject: [PATCH] Improves parking state detection and logging Enhances parking state logic by setting the initial gear to "P" and adding more detailed logging for state changes and parking events. This provides better insight into vehicle states and parking behaviors. --- Source/ProofOfConcept/Models/TeslaState.cs | 2 +- Source/ProofOfConcept/Services/MessageProcessor.cs | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/Source/ProofOfConcept/Models/TeslaState.cs b/Source/ProofOfConcept/Models/TeslaState.cs index 0b2bd05..9a8b6cb 100644 --- a/Source/ProofOfConcept/Models/TeslaState.cs +++ b/Source/ProofOfConcept/Models/TeslaState.cs @@ -2,7 +2,7 @@ namespace ProofOfConcept.Models; public class TeslaState { - private string gear = ""; + private string gear = "P"; private bool locked; private bool driverSeatOccupied; private bool gpsState; diff --git a/Source/ProofOfConcept/Services/MessageProcessor.cs b/Source/ProofOfConcept/Services/MessageProcessor.cs index a8b199a..4d1797c 100644 --- a/Source/ProofOfConcept/Services/MessageProcessor.cs +++ b/Source/ProofOfConcept/Services/MessageProcessor.cs @@ -69,13 +69,19 @@ public class MessageProcessor : IMessageProcessor } } - this.logger.LogTrace("State updated"); + this.logger.LogTrace("State updated for {VIN}. Current state is Gear: {Gear}, Locked: {locked}, driver seat occupied: {DriverSeatOccupied}, Location: {Latitude},{Longitude}", vin, this.teslaState.Gear, this.teslaState.Locked, this.teslaState.DriverSeatOccupied, this.teslaState.Latitude, this.teslaState.Longitude); if (this.teslaState is { Gear: "P", Locked: true, DriverSeatOccupied: false }) + { this.parkingState.SetCarParked(); + this.logger.LogInformation("{vin} is in parked state", vin); + } else + { this.parkingState.SetCarMoved(); - + this.logger.LogInformation("{vin} moved (not parking anymore)", vin); + } + if (this.parkingState is { ParkingInProgress: false, CarParked: true }) await StartParkingAsync(vin); @@ -85,6 +91,8 @@ public class MessageProcessor : IMessageProcessor private async Task StartParkingAsync(string vin) { + this.logger.LogTrace("Start parking for {vin}...", vin); + //Get parking zone Result zoneLookupResult = await this.zoneDeterminatorService.DetermineZoneCodeAsync(this.teslaState.Latitude, this.teslaState.Longitude); bool sendNotification = this.configuration.VinNotifications.TryGetValue(vin, out string? pushoverToken); @@ -124,6 +132,8 @@ public class MessageProcessor : IMessageProcessor private async Task StopParkingAsync(string vin) { + this.logger.LogTrace("Stopping parking for {vin}...", vin); + // Push parking stopped this.parkingState.SetParkingStopped(); if (this.configuration.VinNotifications.TryGetValue(vin, out string? pushoverToken))