Skip to content

Commit d6192e5

Browse files
authored
Merge pull request #10 from JSkimming/correct-charge-state
Use the correct properties for the charge state
2 parents f28d83c + 2efe351 commit d6192e5

File tree

5 files changed

+53
-22
lines changed

5 files changed

+53
-22
lines changed

src/Tesla.NET/Models/ChargeState.cs

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
namespace Tesla.NET.Models
55
{
66
using System;
7-
using System.ComponentModel;
87
using System.Diagnostics;
98
using System.Globalization;
109
using Newtonsoft.Json;
@@ -87,17 +86,17 @@ public ChargeState(
8786
long? chargeRate = null,
8887
bool? chargePortDoorOpen = null,
8988
string connChargeCable = null,
90-
string scheduledChargingStartTime = null,
89+
long? scheduledChargingStartTime = null,
9190
bool? scheduledChargingPending = null,
92-
string userChargeEnableRequest = null,
91+
bool? userChargeEnableRequest = null,
9392
bool? chargeEnableRequest = null,
9493
int? chargerPhases = null,
9594
string chargePortLatch = null,
9695
long? chargeCurrentRequest = null,
9796
long? chargeCurrentRequestMax = null,
9897
bool? managedChargingActive = null,
9998
bool? managedChargingUserCanceled = null,
100-
string managedChargingStartTime = null,
99+
long? managedChargingStartTime = null,
101100
bool? batteryHeaterOn = null,
102101
bool? notEnoughPowerToHeat = null,
103102
long timestamp = 0)
@@ -311,7 +310,13 @@ public ChargeState(
311310
/// Gets the schedule charging start time of a <see cref="Vehicle"/>.
312311
/// </summary>
313312
[JsonProperty("scheduled_charging_start_time")]
314-
public string ScheduledChargingStartTime { get; }
313+
public long? ScheduledChargingStartTime { get; }
314+
315+
/// <summary>
316+
/// Gets the UTC <see cref="DateTime"/> of the schedule charging start time of a <see cref="Vehicle"/>.
317+
/// </summary>
318+
[JsonIgnore]
319+
public DateTime? ScheduledChargingStartTimeUtc => EpochConversion.FromSeconds(ScheduledChargingStartTime);
315320

316321
/// <summary>
317322
/// Gets a value indicating whether scheduled charging is pending for a <see cref="Vehicle"/>.
@@ -323,7 +328,7 @@ public ChargeState(
323328
/// Gets a value indicating whether a user charge enable request has been made for a <see cref="Vehicle"/>.
324329
/// </summary>
325330
[JsonProperty("user_charge_enable_request")]
326-
public string UserChargeEnableRequest { get; }
331+
public bool? UserChargeEnableRequest { get; }
327332

328333
/// <summary>
329334
/// Gets a value indicating whether a charge enable request has been made for a <see cref="Vehicle"/>.
@@ -371,7 +376,13 @@ public ChargeState(
371376
/// Gets the managed charging start time of a <see cref="Vehicle"/>.
372377
/// </summary>
373378
[JsonProperty("managed_charging_start_time")]
374-
public string ManagedChargingStartTime { get; }
379+
public long? ManagedChargingStartTime { get; }
380+
381+
/// <summary>
382+
/// Gets the UTC <see cref="DateTime"/> of the managed charging start time of a <see cref="Vehicle"/>.
383+
/// </summary>
384+
[JsonIgnore]
385+
public DateTime? ManagedChargingStartTimeUtc => EpochConversion.FromSeconds(ManagedChargingStartTime);
375386

376387
/// <summary>
377388
/// Gets a value indicating whether battery heating is on for a <see cref="Vehicle"/>.

src/Tesla.NET/Models/EpochConversion.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,16 @@ internal static class EpochConversion
2222
/// <returns>The UTC <see cref="DateTime"/> of the <paramref name="epoch"/> seconds.</returns>
2323
public static DateTime FromSeconds(long epoch) => Epoch + TimeSpan.FromSeconds(epoch);
2424

25+
/// <summary>
26+
/// Returns the UTC <see cref="DateTime"/> of the <paramref name="epoch"/> seconds.
27+
/// </summary>
28+
/// <param name="epoch">The number of seconds since the <see cref="Epoch"/>.</param>
29+
/// <returns>The UTC <see cref="DateTime"/> of the <paramref name="epoch"/> seconds.</returns>
30+
public static DateTime? FromSeconds(long? epoch)
31+
{
32+
return epoch.HasValue ? FromSeconds(epoch.Value) : default(DateTime?);
33+
}
34+
2535
/// <summary>
2636
/// Returns the UTC <see cref="DateTime"/> of the <paramref name="epoch"/> milliseconds.
2737
/// </summary>

test/Tesla.NET.Tests/Models/ChargeStateTests.cs

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -140,15 +140,15 @@ public void conn_charge_cable() =>
140140

141141
[Fact]
142142
public void scheduled_charging_start_time() =>
143-
_json["scheduled_charging_start_time"].Value<string>().Should().Be(_sut.ScheduledChargingStartTime);
143+
_json["scheduled_charging_start_time"].Value<long?>().Should().Be(_sut.ScheduledChargingStartTime);
144144

145145
[Fact]
146146
public void scheduled_charging_pending() =>
147147
_json["scheduled_charging_pending"].Value<bool?>().Should().Be(_sut.ScheduledChargingPending);
148148

149149
[Fact]
150150
public void user_charge_enable_request() =>
151-
_json["user_charge_enable_request"].Value<string>().Should().Be(_sut.UserChargeEnableRequest);
151+
_json["user_charge_enable_request"].Value<bool?>().Should().Be(_sut.UserChargeEnableRequest);
152152

153153
[Fact]
154154
public void charge_enable_request() =>
@@ -180,7 +180,7 @@ public void managed_charging_user_canceled() =>
180180

181181
[Fact]
182182
public void managed_charging_start_time() =>
183-
_json["managed_charging_start_time"].Value<string>().Should().Be(_sut.ManagedChargingStartTime);
183+
_json["managed_charging_start_time"].Value<long?>().Should().Be(_sut.ManagedChargingStartTime);
184184

185185
[Fact]
186186
public void battery_heater_on() =>
@@ -339,15 +339,15 @@ public void conn_charge_cable() =>
339339

340340
[Fact]
341341
public void scheduled_charging_start_time() =>
342-
_sut.ScheduledChargingStartTime.Should().Be(_json["scheduled_charging_start_time"].Value<string>());
342+
_sut.ScheduledChargingStartTime.Should().Be(_json["scheduled_charging_start_time"].Value<long?>());
343343

344344
[Fact]
345345
public void scheduled_charging_pending() =>
346346
_sut.ScheduledChargingPending.Should().Be(_json["scheduled_charging_pending"].Value<bool?>());
347347

348348
[Fact]
349349
public void user_charge_enable_request() =>
350-
_sut.UserChargeEnableRequest.Should().Be(_json["user_charge_enable_request"].Value<string>());
350+
_sut.UserChargeEnableRequest.Should().Be(_json["user_charge_enable_request"].Value<bool?>());
351351

352352
[Fact]
353353
public void charge_enable_request() =>
@@ -379,7 +379,7 @@ public void managed_charging_user_canceled() =>
379379

380380
[Fact]
381381
public void managed_charging_start_time() =>
382-
_sut.ManagedChargingStartTime.Should().Be(_json["managed_charging_start_time"].Value<string>());
382+
_sut.ManagedChargingStartTime.Should().Be(_json["managed_charging_start_time"].Value<long?>());
383383

384384
[Fact]
385385
public void battery_heater_on() =>
@@ -576,6 +576,16 @@ public ChargeState_Should_calculate(ITestOutputHelper output)
576576
output.WriteLine("Serialized JSON:" + Environment.NewLine + json);
577577
}
578578

579+
[Fact]
580+
public void ScheduledChargingStartTimeUtc() =>
581+
_sut.ScheduledChargingStartTimeUtc.Should().Be(Epoch.AddSeconds(
582+
_sut.ScheduledChargingStartTime.GetValueOrDefault()));
583+
584+
[Fact]
585+
public void ManagedChargingStartTimeUtc() =>
586+
_sut.ManagedChargingStartTimeUtc.Should().Be(Epoch.AddSeconds(
587+
_sut.ManagedChargingStartTime.GetValueOrDefault()));
588+
579589
[Fact]
580590
public void TimestampUtc() => _sut.TimestampUtc.Should().Be(Epoch.AddMilliseconds(_sut.Timestamp));
581591
}

test/Tesla.NET.Tests/Models/GetChargeStateResponse.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,17 +27,17 @@
2727
"charge_rate": 19.7,
2828
"charge_port_door_open": true,
2929
"conn_charge_cable": "IEC",
30-
"scheduled_charging_start_time": "unknown scheduled_charging_start_time",
31-
"scheduled_charging_pending": false,
32-
"user_charge_enable_request": "unknown user_charge_enable_request",
33-
"charge_enable_request": true,
30+
"scheduled_charging_start_time": 1516597200,
31+
"scheduled_charging_pending": true,
32+
"user_charge_enable_request": false,
33+
"charge_enable_request": false,
3434
"charger_phases": 3,
3535
"charge_port_latch": "Engaged",
3636
"charge_current_request": 9,
3737
"charge_current_request_max": 16,
3838
"managed_charging_active": false,
3939
"managed_charging_user_canceled": false,
40-
"managed_charging_start_time": "unknown managed_charging_start_time",
40+
"managed_charging_start_time": 1516571646,
4141
"battery_heater_on": false,
4242
"not_enough_power_to_heat": false,
4343
"timestamp": 1515396974152

test/Tesla.NET.Tests/Tesla.NET.Tests.csproj

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,14 @@
88
</PropertyGroup>
99

1010
<ItemGroup>
11-
<PackageReference Include="AutoFixture.AutoMoq" Version="4.0.0-rc1" />
12-
<PackageReference Include="AutoFixture.SeedExtensions" Version="4.0.0-rc1" />
13-
<PackageReference Include="AutoFixture.Xunit2" Version="4.0.0-rc1" />
11+
<PackageReference Include="AutoFixture.AutoMoq" Version="4.0.0" />
12+
<PackageReference Include="AutoFixture.SeedExtensions" Version="4.0.0" />
13+
<PackageReference Include="AutoFixture.Xunit2" Version="4.0.0" />
1414
<PackageReference Include="AutoTest.ArgumentNullException.Xunit" Version="0.9.0" />
1515
<PackageReference Include="FluentAssertions" Version="4.19.4" />
1616
<PackageReference Include="Microsoft.AspNetCore.WebUtilities" Version="2.0.1" />
1717
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.5.0" />
18-
<PackageReference Include="Moq" Version="4.7.145" />
18+
<PackageReference Include="Moq" Version="4.8.1" />
1919
<PackageReference Include="xunit" Version="2.3.1" />
2020
<PackageReference Include="xunit.runner.visualstudio" Version="2.3.1" />
2121
<DotNetCliToolReference Include="dotnet-xunit" Version="2.3.1" />

0 commit comments

Comments
 (0)