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))