Skip to content

Commit

Permalink
Merge branch 'master' into NET8
Browse files Browse the repository at this point in the history
  • Loading branch information
bassmaster187 committed Dec 12, 2024
2 parents c82913b + 0956624 commit 4944bb2
Show file tree
Hide file tree
Showing 26 changed files with 1,230 additions and 108 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -96,3 +96,4 @@ TeslaLogger/copyto.net8docker.cmd
/TeslaLogger/bin/data
/TeslaLogger/data
TeslaLogger/bin/encryption.txt
/TeslaLogger/bin/tesla_invoices
19 changes: 11 additions & 8 deletions TeslaLogger/Car.cs
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,7 @@ internal enum HFLMode

private string taskerHash = "";
private string vin = "";
private string car_name = "";

private string aBRP_token = "";
private int aBRP_mode; // defaults to 0;
Expand All @@ -111,7 +112,7 @@ internal enum HFLMode

private DBHelper dbHelper;

private readonly TeslaAPIState teslaAPIState;
internal readonly TeslaAPIState teslaAPIState;

private bool useTaskerToken = true;
internal string wheel_type = "";
Expand Down Expand Up @@ -141,6 +142,7 @@ public double WhTR
public string DisplayName { get => display_name; set => display_name = value; }
public string TaskerHash { get => taskerHash; set => taskerHash = value; }
public string Vin { get => vin; set => vin = value; }
public string CarName { get => car_name; set => car_name = value; }
public string ABRPToken { get => aBRP_token; set => aBRP_token = value; }
public int ABRPMode { get => aBRP_mode; set => aBRP_mode = value; }
public string SuCBingoUser { get => sucBingo_user; set => sucBingo_user = value; }
Expand Down Expand Up @@ -454,7 +456,8 @@ private void InitStage3()
if (!DbHelper.GetRegion())
webhelper.GetRegion();

webhelper.CheckVirtualKey();
if (!dbHelper.CheckVirtualKey())
webhelper.CheckVirtualKey();

if (webhelper.GetVehicles() == "NULL")
{
Expand Down Expand Up @@ -627,9 +630,7 @@ private Address HandleState_Drive(Address lastRacingPoint)
int SleepPosition = ApplicationSettings.Default.SleepPosition;
if (FleetAPI)
{
SleepPosition = Tools.CalculateSleepSeconds(300, webhelper.commandCounter, DateTime.UtcNow) * 1000;
SleepPosition = Math.Max(30000, SleepPosition);
Log("Drive Sleep " + SleepPosition);
SleepPosition = 5000;
}
else
SleepPosition = Math.Max(20000, SleepPosition);
Expand Down Expand Up @@ -897,15 +898,15 @@ private void HandleState_Online()
lastCarUsed = DateTime.Now;
doSleep = false;
}

/* Bug switch between sleep and online all the time
var srt = webhelper.startRequestTimeout;
if (srt != null && srt.Value.AddMinutes(15) < DateTime.UtcNow)
{
Log("Car is sleeping because of 408");
SetCurrentState(TeslaState.Sleep);
lastCarUsed = DateTime.Now;
DbHelper.StartState("asleep");
}
}*/
}
else
{
Expand Down Expand Up @@ -1602,7 +1603,9 @@ private void HandleStateChange(TeslaState _oldState, TeslaState _newState)
if (_oldState == TeslaState.Start && _newState == TeslaState.Online)
{
telemetry?.StartConnection();
_ = webhelper.GetOdometerAsync();
if (!FleetAPI)
_ = webhelper.GetOdometerAsync();

Tools.DebugLog($"#{CarInDB}:Start -> Online SendDataToAbetterrouteplannerAsync(utc:{Tools.ToUnixTime(DateTime.UtcNow) * 1000}, soc:{CurrentJSON.current_battery_level}, speed:0, charging:false, power:0, lat:{CurrentJSON.GetLatitude()}, lon:{CurrentJSON.GetLongitude()})");
_ = webhelper.SendDataToAbetterrouteplannerAsync(Tools.ToUnixTime(DateTime.UtcNow) * 1000, CurrentJSON.current_battery_level, 0, false, 0, CurrentJSON.GetLatitude(), CurrentJSON.GetLongitude());
}
Expand Down
14 changes: 7 additions & 7 deletions TeslaLogger/CurrentJSON.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public class CurrentJSON
public double current_ideal_battery_range_km; // defaults to 0
public double current_battery_range_km; // defaults to 0
public double current_outside_temperature; // defaults to 0
public int current_battery_level; // defaults to 0
public double current_battery_level; // defaults to 0

public int current_charger_voltage; // defaults to 0
public int current_charger_phases; // defaults to 0
Expand All @@ -34,13 +34,13 @@ public class CurrentJSON
public int current_charger_actual_current_calc; // defaults to 0
public int current_charge_current_request; // defaults to 0
public double current_charge_energy_added; // defaults to 0
public int current_charger_power; // defaults to 0
public double current_charger_power; // defaults to 0
public int current_charger_power_calc_w; // defaults to 0
public double current_charge_rate_km; // defaults to 0
public double current_time_to_full_charge; // defaults to 0
public bool current_charge_port_door_open; // defaults to false
public string current_charger_brand = "";
public bool current_charger_present; // defaults to false
public bool current_fast_charger_present; // defaults to false

public string current_car_version = "";

Expand Down Expand Up @@ -217,16 +217,16 @@ public void CreateCurrentJSON()
{ "charge_port_door_open", current_charge_port_door_open },
{ "time_to_full_charge", current_time_to_full_charge},
{ "fast_charger_brand", current_charger_brand},
{ "fast_charger_present", current_charger_present},
{ "fast_charger_present", current_fast_charger_present},
{ "car_version", current_car_version },
{ "trip_start", current_trip_start.ToString("t",Tools.ciDeDE) },
{ "trip_start_dt", current_trip_start.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ", Tools.ciEnUS) },
{ "trip_max_speed", current_trip_max_speed },
{ "trip_max_power", current_trip_max_power },
{ "trip_duration_sec", duration },
{ "trip_kwh", trip_kwh },
{ "trip_avg_kwh", trip_avg_wh },
{ "trip_distance", distance },
{ "trip_kwh", Math.Round(trip_kwh, 1) },
{ "trip_avg_kwh", Math.Round(trip_avg_wh, 1) },
{ "trip_distance", Math.Round(distance, 1) },
{ "ts", DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:ssZ", Tools.ciEnUS)},
{ "latitude", latitude },
{ "longitude", longitude },
Expand Down
114 changes: 107 additions & 7 deletions TeslaLogger/DBHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
using Newtonsoft.Json;
using System.Diagnostics;
using System.Data.Common;
using ZstdSharp.Unsafe;

namespace TeslaLogger
{
Expand Down Expand Up @@ -458,6 +459,37 @@ public static string GetRefreshTokenFromAccessToken(string access_token)
return "";
}

internal bool SetCarName(string car_name)
{
car.CarName = car_name;

try
{
using (MySqlConnection con = new MySqlConnection(DBConnectionstring))
{
con.Open();
using (MySqlCommand cmd = new MySqlCommand(@"
UPDATE
cars
SET
display_name = @carname
WHERE
id = @CarID", con))
{
cmd.Parameters.AddWithValue("@CarID", car.CarInDB);
cmd.Parameters.AddWithValue("@carname", car_name);
_ = SQLTracer.TraceNQ(cmd, out _);
}
}
}
catch (Exception ex)
{
car.CreateExceptionlessClient(ex).Submit();
Logfile.Log(ex.ToString());
}
return true;
}

internal bool SetABRP(string abrp_token, int abrp_mode)
{
car.ABRPToken = abrp_token;
Expand Down Expand Up @@ -1006,6 +1038,37 @@ internal static double GetChargeEnergyAddedFromCharging(int ChargingID)
return double.NaN;
}

internal bool GetCarName(out string car_name)
{
car_name = "";

try
{
using (MySqlConnection con = new MySqlConnection(DBConnectionstring))
{
con.Open();
using (MySqlCommand cmd = new MySqlCommand("SELECT display_name FROM cars where id = @CarID", con))
{
cmd.Parameters.AddWithValue("@CarID", car.CarInDB);

MySqlDataReader dr = SQLTracer.TraceDR(cmd);
if (dr.Read())
{
car_name = dr[0].ToString();
return true;
}
}
}
}
catch (Exception ex)
{
ex.ToExceptionless().FirstCarUserID().Submit();
Logfile.Log(ex.ToString());
}

return false;
}

internal bool GetABRP(out string ABRP_token, out int ABRP_mode)
{
ABRP_token = "";
Expand Down Expand Up @@ -1560,7 +1623,7 @@ internal void UpdateTeslaToken()
{
cmd.Parameters.AddWithValue("@id", car.CarInDB);
cmd.Parameters.AddWithValue("@tesla_token", token);
cmd.Parameters.AddWithValue("@tesla_token_expire", DateTime.Now);
cmd.Parameters.AddWithValue("@tesla_token_expire", car.webhelper.nextTeslaTokenFromRefreshToken);
int done = SQLTracer.TraceNQ(cmd, out _);

car.Log("update tesla_token OK: " + done + " - " + car.webhelper.Tesla_token.Substring(0,20) + "xxxxxx");
Expand Down Expand Up @@ -3253,7 +3316,7 @@ id DESC

if (dr["battery_level"] != DBNull.Value)
{
car.CurrentJSON.current_battery_level = Convert.ToInt32(dr["battery_level"], Tools.ciEnUS);
car.CurrentJSON.current_battery_level = Convert.ToDouble(dr["battery_level"], Tools.ciEnUS);
}

if (dr["lat"] != DBNull.Value)
Expand Down Expand Up @@ -3315,6 +3378,9 @@ public void StartChargingState(WebHelper wh)
UpdatePosFromCurrentJSON(posid);
}

bool fast_charger_present = wh.fast_charger_present;
if (car.telemetry?.dcCharging == true)
fast_charger_present = true;

int chargeID = GetMaxChargeid(out DateTime chargeStart);
long chargingstateid = 0;
Expand Down Expand Up @@ -3359,7 +3425,7 @@ public void StartChargingState(WebHelper wh)
cmd.Parameters.AddWithValue("@fast_charger_brand", wh.fast_charger_brand);
cmd.Parameters.AddWithValue("@fast_charger_type", wh.fast_charger_type);
cmd.Parameters.AddWithValue("@conn_charge_cable", wh.conn_charge_cable);
cmd.Parameters.AddWithValue("@fast_charger_present", wh.fast_charger_present);
cmd.Parameters.AddWithValue("@fast_charger_present",fast_charger_present);
cmd.Parameters.AddWithValue("@meter_vehicle_kwh_start", meter_vehicle_kwh_start);
cmd.Parameters.AddWithValue("@meter_utility_kwh_start", meter_utility_kwh_start);
cmd.Parameters.AddWithValue("@wheel_type", wh.car.wheel_type);
Expand Down Expand Up @@ -4561,7 +4627,7 @@ private void UpdatePosFromCurrentJSON(int posID)

int last_active_route_energy_at_arrival = int.MinValue;

public int InsertPos(string timestamp, double latitude, double longitude, int speed, decimal? power, double? odometer, double idealBatteryRangeKm, double batteryRangeKm, int batteryLevel, double? outsideTemp, string altitude)
public int InsertPos(string timestamp, double latitude, double longitude, int speed, decimal? power, double? odometer, double idealBatteryRangeKm, double batteryRangeKm, double batteryLevel, double? outsideTemp, string altitude)
{
int posid = 0;
double? inside_temp = car.CurrentJSON.current_inside_temperature;
Expand Down Expand Up @@ -4838,8 +4904,8 @@ internal void InsertCharging(string timestamp, string battery_level, string char
charger_phases = "1";
}

double kmIdeal_Battery_Range = ideal_battery_range / (double)0.62137;
double kmBattery_Range = battery_range / (double)0.62137;
double kmIdeal_Battery_Range = Tools.MlToKm(ideal_battery_range, 1);
double kmBattery_Range = Tools.MlToKm(battery_range, 1);

double powerkW = Convert.ToDouble(charger_power, Tools.ciEnUS);

Expand Down Expand Up @@ -4981,7 +5047,7 @@ internal void InsertCharging(string timestamp, string battery_level, string char
{
if (Convert.ToInt32(battery_level, Tools.ciEnUS) >= 0)
{
car.CurrentJSON.current_battery_level = Convert.ToInt32(battery_level, Tools.ciEnUS);
car.CurrentJSON.current_battery_level = Convert.ToDouble(battery_level, Tools.ciEnUS);
}

car.CurrentJSON.current_charge_energy_added = Convert.ToDouble(charge_energy_added, Tools.ciEnUS);
Expand Down Expand Up @@ -7091,6 +7157,40 @@ id ASC
}
}

internal bool CheckVirtualKey()
{
try
{
using (MySqlConnection con = new MySqlConnection(DBConnectionstring))
{
con.Open();
using (MySqlCommand cmd = new MySqlCommand("SELECT needVirtualKey, virtualkey FROM cars where id = @CarID", con))
{
cmd.Parameters.AddWithValue("@CarID", car.CarInDB);

MySqlDataReader dr = SQLTracer.TraceDR(cmd);
if (dr.Read())
{
if (dr[0] == DBNull.Value)
return false;

if (dr["needVirtualKey"].ToString() == "0" && dr["virtualKey"].ToString() == "1")
{
return true;
}
}
}
}
}
catch (Exception ex)
{
ex.ToExceptionless().FirstCarUserID().Submit();
Logfile.Log(ex.ToString());
}

return false;
}

internal bool GetRegion()
{
try
Expand Down
2 changes: 2 additions & 0 deletions TeslaLogger/NearbySuCService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@ private void Work()
|| car.GetCurrentState() == Car.TeslaState.Online)
&& car.CurrentJSON.current_falling_asleep == false)
{
/* nearby charging sites is a paid pricing category: https://developer.tesla.com/docs/fleet-api/endpoints/vehicle-endpoints#nearby-charging-sites
string result = string.Empty;
try
{
Expand All @@ -97,6 +98,7 @@ private void Work()
Tools.DebugLog($"NearbySuCService.Work: result {new Tools.JsonFormatter(result).Format()}");
Tools.DebugLog("NearbySuCService.Work: Exception", ex);
}
*/
}
continue;
}
Expand Down
4 changes: 2 additions & 2 deletions TeslaLogger/Properties/AssemblyInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@
// Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden,
// übernehmen, indem Sie "*" eingeben:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.59.8.0")]
[assembly: AssemblyFileVersion("1.59.8.0")]
[assembly: AssemblyVersion("1.61.0.0")]
[assembly: AssemblyFileVersion("1.61.0.0")]

[assembly: InternalsVisibleTo("UnitTestsTeslaloggerNET8")]
[assembly: InternalsVisibleTo("UnitTestsTeslalogger")]
Loading

0 comments on commit 4944bb2

Please sign in to comment.