Skip to content

Commit 919feb6

Browse files
committed
percent of drive with Autopilot / TACC
1 parent fb18975 commit 919feb6

File tree

9 files changed

+352
-32
lines changed

9 files changed

+352
-32
lines changed

TeslaLogger/App.config

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,9 @@
8080
<setting name="TelemetryServerURL" serializeAs="String">
8181
<value>wss://teslalogger.de:4501/ws</value>
8282
</setting>
83+
<setting name="UseTelemetryServer" serializeAs="String">
84+
<value>True</value>
85+
</setting>
8386
</TeslaLogger.ApplicationSettings>
8487
</applicationSettings>
8588
<exceptionless apiKey="Fr6JebtLWFka4nFwGXSkZAYEXIKCXn6AYGJb1mzt" />

TeslaLogger/ApplicationSettings.Designer.cs

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

TeslaLogger/ApplicationSettings.settings

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,5 +68,8 @@
6868
<Setting Name="TelemetryServerURL" Type="System.String" Scope="Application">
6969
<Value Profile="(Default)">wss://teslalogger.de:4501/ws</Value>
7070
</Setting>
71+
<Setting Name="UseTelemetryServer" Type="System.Boolean" Scope="Application">
72+
<Value Profile="(Default)">True</Value>
73+
</Setting>
7174
</Settings>
7275
</SettingsFile>

TeslaLogger/Car.cs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -279,9 +279,15 @@ private void Loop()
279279
CheckNewCredentials();
280280

281281
InitStage3();
282-
283-
if (FleetAPI && !(CarType == "models" || CarType == "models2" || CarType == "modelx"))
284-
telemetry = new TelemetryConnection(this);
282+
if (ApplicationSettings.Default.UseTelemetryServer)
283+
{
284+
if (FleetAPI && !(CarType == "models" || CarType == "models2" || CarType == "modelx"))
285+
telemetry = new TelemetryConnection(this);
286+
}
287+
else
288+
{
289+
Log("Telemetry Connection turned off!");
290+
}
285291
}
286292
finally
287293
{
@@ -769,7 +775,7 @@ private void HandleState_Online()
769775
}
770776
else if (FleetAPI && (CarType == "model3" || CarType == "modely" || CarType == "lychee" || CarType == "tamarind"))
771777
{
772-
Log("API not suspended!");
778+
// Log("API not suspended!");
773779
Thread.Sleep(30000);
774780
string res = "";
775781
lock (WebHelper.isOnlineLock)

TeslaLogger/DBHelper.cs

Lines changed: 161 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
using Newtonsoft.Json;
1717
using System.Diagnostics;
1818
using System.Data.Common;
19+
using System.Security.Cryptography;
1920

2021
namespace TeslaLogger
2122
{
@@ -3981,6 +3982,25 @@ internal static void UpdateAddress(Car c, int posid)
39813982
}
39823983
}
39833984

3985+
DateTime? GetDatumFromPos(int PosId)
3986+
{
3987+
using (MySqlConnection con = new MySqlConnection(DBConnectionstring))
3988+
{
3989+
con.Open();
3990+
using (MySqlCommand cmd = new MySqlCommand("select Datum from pos where id = @id", con))
3991+
{
3992+
cmd.Parameters.AddWithValue("@id", PosId);
3993+
MySqlDataReader dr = SQLTracer.TraceDR(cmd);
3994+
if (dr.Read())
3995+
{
3996+
return (DateTime)dr[0];
3997+
}
3998+
}
3999+
}
4000+
4001+
return null;
4002+
}
4003+
39844004
private void UpdateDriveStatistics(int startPos, int endPos, bool logging = false)
39854005
{
39864006
try
@@ -3990,6 +4010,20 @@ private void UpdateDriveStatistics(int startPos, int endPos, bool logging = fals
39904010
car.Log("UpdateDriveStatistics");
39914011
}
39924012

4013+
DateTime? startDT = GetDatumFromPos(startPos);
4014+
DateTime? endDT = GetDatumFromPos(endPos);
4015+
int ap_sec_sum = -1;
4016+
int ap_sec_max = -1;
4017+
double TPMS_FL = -1;
4018+
double TPMS_FR = -1;
4019+
double TPMS_RL = -1;
4020+
double TPMS_RR = -1;
4021+
if (startDT != null && endDT != null)
4022+
{
4023+
GetAutopilotSeconds((DateTime)startDT, (DateTime)endDT, out ap_sec_sum, out ap_sec_max);
4024+
GetAVG_TPMS((DateTime)startDT, (DateTime)endDT, out TPMS_FL, out TPMS_FR, out TPMS_RL, out TPMS_RR);
4025+
}
4026+
39934027
using (MySqlConnection con = new MySqlConnection(DBConnectionstring))
39944028
{
39954029
con.Open();
@@ -4017,17 +4051,23 @@ id BETWEEN @startpos AND @endpos
40174051
{
40184052
con2.Open();
40194053
using (MySqlCommand cmd2 = new MySqlCommand(@"
4020-
UPDATE
4021-
drivestate
4022-
SET
4023-
outside_temp_avg = @outside_temp_avg,
4024-
speed_max = @speed_max,
4025-
power_max = @power_max,
4026-
power_min = @power_min,
4027-
power_avg = @power_avg
4028-
WHERE
4029-
StartPos = @StartPos
4030-
AND EndPos = @EndPos ", con2))
4054+
UPDATE
4055+
drivestate
4056+
SET
4057+
outside_temp_avg = @outside_temp_avg,
4058+
speed_max = @speed_max,
4059+
power_max = @power_max,
4060+
power_min = @power_min,
4061+
power_avg = @power_avg,
4062+
AP_sec_sum = @ap_sec_sum,
4063+
AP_sec_max = @AP_sec_max,
4064+
TPMS_FL = @TPMS_FL,
4065+
TPMS_FR = @TPMS_FR,
4066+
TPMS_RL = @TPMS_RL,
4067+
TPMS_RR = @TPMS_RR
4068+
WHERE
4069+
StartPos = @StartPos
4070+
AND EndPos = @EndPos ", con2))
40314071
{
40324072
cmd2.Parameters.AddWithValue("@StartPos", startPos);
40334073
cmd2.Parameters.AddWithValue("@EndPos", endPos);
@@ -4038,6 +4078,23 @@ id BETWEEN @startpos AND @endpos
40384078
cmd2.Parameters.AddWithValue("@power_min", dr["power_min"]);
40394079
cmd2.Parameters.AddWithValue("@power_avg", dr["power_avg"]);
40404080

4081+
if (ap_sec_sum != -1 && ap_sec_max != -1)
4082+
{
4083+
cmd2.Parameters.AddWithValue("@ap_sec_sum", ap_sec_sum);
4084+
cmd2.Parameters.AddWithValue("@AP_sec_max", ap_sec_max);
4085+
}
4086+
else
4087+
{
4088+
cmd2.Parameters.AddWithValue("@ap_sec_sum", DBNull.Value);
4089+
cmd2.Parameters.AddWithValue("@AP_sec_max", DBNull.Value);
4090+
}
4091+
4092+
cmd2.Parameters.AddWithValue("@TPMS_FL", TPMS_FL > 0 ? (object)TPMS_FL : (object)DBNull.Value);
4093+
cmd2.Parameters.AddWithValue("@TPMS_FR", TPMS_FR > 0 ? (object)TPMS_FR : (object)DBNull.Value);
4094+
cmd2.Parameters.AddWithValue("@TPMS_RL", TPMS_RL > 0 ? (object)TPMS_RL : (object)DBNull.Value);
4095+
cmd2.Parameters.AddWithValue("@TPMS_RR", TPMS_RR > 0 ? (object)TPMS_RR : (object)DBNull.Value);
4096+
4097+
40414098
_ = SQLTracer.TraceNQ(cmd2, out _);
40424099
}
40434100
}
@@ -4075,7 +4132,7 @@ id BETWEEN @startpos AND @endpos
40754132
WHERE
40764133
id > @startPos
40774134
AND ideal_battery_range_km IS NOT NULL
4078-
AND battery_level IS BOT NULL
4135+
AND battery_level IS NOT NULL
40794136
AND CarID = @CarID
40804137
ORDER BY
40814138
id ASC
@@ -4211,8 +4268,44 @@ id DESC
42114268
car.CreateExceptionlessClient(ex).Submit();
42124269
car.Log(ex.ToString());
42134270
}
4214-
}
4215-
4271+
}
4272+
4273+
private void GetAVG_TPMS(DateTime startDT, DateTime endDT, out double tPMS_FL, out double tPMS_FR, out double tPMS_RL, out double tPMS_RR)
4274+
{
4275+
tPMS_FL = -1;
4276+
tPMS_FR = -1;
4277+
tPMS_RL = -1;
4278+
tPMS_RR = -1;
4279+
4280+
if (startDT < new DateTime(2022, 11, 20)) // Feature was introduced later
4281+
return;
4282+
4283+
using (MySqlConnection con = new MySqlConnection(DBConnectionstring))
4284+
{
4285+
con.Open();
4286+
using (MySqlCommand cmd = new MySqlCommand(@"Select avg(Pressure) as p, Tireid from TPMS
4287+
where TPMS.Datum > @startdate and TPMS.Datum < @enddate and TPMS.CarId = @carid group by Tireid", con))
4288+
{
4289+
cmd.Parameters.AddWithValue("@startdate", startDT.AddHours(-1));
4290+
cmd.Parameters.AddWithValue("@enddate", startDT.AddHours(1));
4291+
cmd.Parameters.AddWithValue("@carid", car.CarInDB);
4292+
MySqlDataReader dr = SQLTracer.TraceDR(cmd);
4293+
while (dr.Read())
4294+
{
4295+
int Tireid = Convert.ToInt32(dr["Tireid"]);
4296+
double p = Convert.ToDouble(dr["p"]);
4297+
switch (Tireid)
4298+
{
4299+
case 1: tPMS_FL = p; break;
4300+
case 2: tPMS_FR = p; break;
4301+
case 3: tPMS_RL = p; break;
4302+
case 4: tPMS_RR = p; break;
4303+
}
4304+
}
4305+
}
4306+
}
4307+
}
4308+
42164309
public static bool UpdateIncompleteTrips()
42174310
{
42184311
try
@@ -6826,5 +6919,59 @@ internal bool GetRegion()
68266919

68276920
return false;
68286921
}
6922+
6923+
public bool GetAutopilotSeconds(DateTime start, DateTime end, out int sumsec, out int maxsec)
6924+
{
6925+
sumsec = -1;
6926+
maxsec = -1;
6927+
try
6928+
{
6929+
if (start < new DateTime(2024, 2, 20)) // feature introduced later
6930+
return false;
6931+
6932+
using (MySqlConnection con = new MySqlConnection(DBConnectionstring+ ";Allow User Variables=True"))
6933+
{
6934+
con.Open();
6935+
using (MySqlCommand cmd = new MySqlCommand(@"select sum(TIME_TO_SEC(TIMEDIFF(enddate, startdate))) as sumsec, max(TIME_TO_SEC(TIMEDIFF(enddate, startdate))) as maxsec from
6936+
(
6937+
select T1.CarID, T1.date as startdate, T1.state as startstate, T2.date as enddate, T2.state as endstate
6938+
from
6939+
(select (@rowid1:=@rowid1 + 1) T1rid, carid, date, state from cruisestate
6940+
where carid=@CarID and date between @start and @end order by date
6941+
) as T1
6942+
left outer join
6943+
(select (@rowid2:=@rowid2 + 1) T2rid, date, state from cruisestate
6944+
where carid=@CarID and date between @start and @end order by date
6945+
) as T2 on T1rid + 1 = T2rid
6946+
6947+
JOIN (SELECT @rowid1:=0) a
6948+
JOIN (SELECT @rowid2:=0) b
6949+
) T3
6950+
where startstate = 1 ", con))
6951+
{
6952+
cmd.Parameters.AddWithValue("@CarID", car.CarInDB);
6953+
cmd.Parameters.AddWithValue("@start", start);
6954+
cmd.Parameters.AddWithValue("@end", end);
6955+
6956+
var dr = cmd.ExecuteReader();
6957+
if (dr.Read())
6958+
{
6959+
if (dr["sumsec"] != DBNull.Value)
6960+
sumsec = Convert.ToInt32(dr["sumsec"]);
6961+
6962+
if (dr["maxsec"] != DBNull.Value)
6963+
maxsec = Convert.ToInt32(dr["maxsec"]);
6964+
return true;
6965+
}
6966+
}
6967+
}
6968+
} catch (Exception ex)
6969+
{
6970+
Logfile.Log(ex.ToString());
6971+
ex.ToExceptionless().Submit();
6972+
}
6973+
6974+
return false;
6975+
}
68296976
}
68306977
}

TeslaLogger/DBViews.cs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,14 @@ SQL SECURITY DEFINER
3434
`drivestate`.`power_min` AS `power_min`,
3535
`drivestate`.`power_avg` AS `power_avg`,
3636
`drivestate`.`CarID` AS `CarID`,
37-
`drivestate`.`wheel_type` AS `wheel_type`
37+
`drivestate`.`wheel_type` AS `wheel_type`,
38+
`AP_sec_sum`,
39+
`AP_sec_max`,
40+
`TPMS_FL`,
41+
`TPMS_FR`,
42+
`TPMS_RL`,
43+
`TPMS_RR`
44+
3845
FROM
3946
((`drivestate`
4047
JOIN `pos` `pos_start` ON ((`drivestate`.`StartPos` = `pos_start`.`id`)))

0 commit comments

Comments
 (0)