diff --git a/README.md b/README.md
index 035df94c..d75890c9 100644
--- a/README.md
+++ b/README.md
@@ -198,7 +198,7 @@ teslamate/cars/$car_id/state
teslamate/cars/$car_id/battery_level
teslamate/cars/$car_id/ideal_battery_range_km
teslamate/cars/$car_id/est_battery_range_km
-teslamate/cars/$car_id/battery_range_km
+teslamate/cars/$car_id/rated_battery_range_km
teslamate/cars/$car_id/charge_energy_added
teslamate/cars/$car_id/charger_power
teslamate/cars/$car_id/plugged_in
diff --git a/lib/teslamate/log.ex b/lib/teslamate/log.ex
index a5651ca8..007a9a75 100644
--- a/lib/teslamate/log.ex
+++ b/lib/teslamate/log.ex
@@ -161,7 +161,7 @@ defmodule TeslaMate.Log do
longitude: p.longitude,
odometer: p.odometer,
ideal_battery_range_km: p.ideal_battery_range_km,
- rated_battery_range_km: p.battery_range_km,
+ rated_battery_range_km: p.rated_battery_range_km,
power_avg: avg(p.power) |> over(),
outside_temp_avg: avg(p.outside_temp) |> over(),
inside_temp_avg: avg(p.inside_temp) |> over(),
@@ -269,10 +269,10 @@ defmodule TeslaMate.Log do
|> ChargingProcess.changeset(%{
end_date: nil,
charge_energy_added: nil,
- end_range_km: nil,
+ end_ideal_range_km: nil,
+ end_rated_range_km: nil,
end_battery_level: nil,
- duration_min: nil,
- calculated_max_range: nil
+ duration_min: nil
})
|> Repo.update()
end
@@ -288,8 +288,10 @@ defmodule TeslaMate.Log do
|> where(charging_process_id: ^process_id)
|> select([c], %{
charge_energy_added: max(c.charge_energy_added) - min(c.charge_energy_added),
- start_range_km: min(c.ideal_battery_range_km),
- end_range_km: max(c.ideal_battery_range_km),
+ start_ideal_range_km: min(c.ideal_battery_range_km),
+ end_ideal_range_km: max(c.ideal_battery_range_km),
+ start_rated_range_km: min(c.rated_battery_range_km),
+ end_rated_range_km: max(c.rated_battery_range_km),
start_battery_level: min(c.battery_level),
end_battery_level: max(c.battery_level),
outside_temp_avg: avg(c.outside_temp),
@@ -298,17 +300,11 @@ defmodule TeslaMate.Log do
|> Repo.one()
|> Map.put(:end_date, Keyword.get_lazy(opts, :date, &DateTime.utc_now/0))
- stats = Map.put(stats, :calculated_max_range, max_range(stats))
-
charging_process
|> ChargingProcess.changeset(stats)
|> Repo.update()
end
- defp max_range(%{end_range_km: nil}), do: nil
- defp max_range(%{end_battery_level: nil}), do: nil
- defp max_range(%{end_range_km: range, end_battery_level: lvl}), do: round(range / lvl * 100)
-
alias TeslaMate.Log.Update
def start_update(car_id) do
diff --git a/lib/teslamate/log/charge.ex b/lib/teslamate/log/charge.ex
index 2cfaa9bd..36491be7 100644
--- a/lib/teslamate/log/charge.ex
+++ b/lib/teslamate/log/charge.ex
@@ -21,6 +21,7 @@ defmodule TeslaMate.Log.Charge do
field :fast_charger_brand, :string
field :fast_charger_type, :string
field :ideal_battery_range_km, :float
+ field :rated_battery_range_km, :float
field :not_enough_power_to_heat, :boolean
field :outside_temp, :float
@@ -47,6 +48,7 @@ defmodule TeslaMate.Log.Charge do
:fast_charger_brand,
:fast_charger_type,
:ideal_battery_range_km,
+ :rated_battery_range_km,
:not_enough_power_to_heat,
:outside_temp
])
diff --git a/lib/teslamate/log/charging_process.ex b/lib/teslamate/log/charging_process.ex
index 1ee2d67a..6be97ab3 100644
--- a/lib/teslamate/log/charging_process.ex
+++ b/lib/teslamate/log/charging_process.ex
@@ -9,11 +9,12 @@ defmodule TeslaMate.Log.ChargingProcess do
field :start_date, :utc_datetime
field :end_date, :utc_datetime
field :charge_energy_added, :float
- field :start_range_km, :float
- field :end_range_km, :float
+ field :start_ideal_range_km, :float
+ field :end_ideal_range_km, :float
+ field :start_rated_range_km, :float
+ field :end_rated_range_km, :float
field :start_battery_level, :integer
field :end_battery_level, :integer
- field :calculated_max_range, :integer
field :duration_min, :integer
field :outside_temp_avg, :float
@@ -31,11 +32,12 @@ defmodule TeslaMate.Log.ChargingProcess do
:start_date,
:end_date,
:charge_energy_added,
- :start_range_km,
- :end_range_km,
+ :start_ideal_range_km,
+ :end_ideal_range_km,
+ :start_rated_range_km,
+ :end_rated_range_km,
:start_battery_level,
:end_battery_level,
- :calculated_max_range,
:duration_min,
:outside_temp_avg
])
diff --git a/lib/teslamate/log/position.ex b/lib/teslamate/log/position.ex
index 09077020..5cafa444 100644
--- a/lib/teslamate/log/position.ex
+++ b/lib/teslamate/log/position.ex
@@ -15,7 +15,7 @@ defmodule TeslaMate.Log.Position do
field :odometer, :float
field :ideal_battery_range_km, :float
field :est_battery_range_km, :float
- field :battery_range_km, :float
+ field :rated_battery_range_km, :float
field :battery_level, :integer
field :battery_heater, :boolean
field :battery_heater_on, :boolean
@@ -47,7 +47,7 @@ defmodule TeslaMate.Log.Position do
:odometer,
:ideal_battery_range_km,
:est_battery_range_km,
- :battery_range_km,
+ :rated_battery_range_km,
:battery_level,
:battery_heater_no_power,
:battery_heater_on,
diff --git a/lib/teslamate/vehicles/vehicle/summary.ex b/lib/teslamate/vehicles/vehicle/summary.ex
index 616cc025..17306fca 100644
--- a/lib/teslamate/vehicles/vehicle/summary.ex
+++ b/lib/teslamate/vehicles/vehicle/summary.ex
@@ -11,7 +11,7 @@ defmodule TeslaMate.Vehicles.Vehicle.Summary do
:battery_level,
:ideal_battery_range_km,
:est_battery_range_km,
- :battery_range_km,
+ :rated_battery_range_km,
:charge_energy_added,
:speed,
:outside_temp,
@@ -47,7 +47,8 @@ defmodule TeslaMate.Vehicles.Vehicle.Summary do
get_in_struct(vehicle, [:charge_state, :ideal_battery_range]) |> miles_to_km(1),
est_battery_range_km:
get_in_struct(vehicle, [:charge_state, :est_battery_range]) |> miles_to_km(1),
- battery_range_km: get_in_struct(vehicle, [:charge_state, :battery_range]) |> miles_to_km(1),
+ rated_battery_range_km:
+ get_in_struct(vehicle, [:charge_state, :battery_range]) |> miles_to_km(1),
battery_level: get_in_struct(vehicle, [:charge_state, :battery_level]),
charge_energy_added: get_in_struct(vehicle, [:charge_state, :charge_energy_added]),
charger_power: get_in_struct(vehicle, [:charge_state, :charger_power]),
diff --git a/lib/teslamate/vehicles/vehicle/vehicle.ex b/lib/teslamate/vehicles/vehicle/vehicle.ex
index 02314f76..5983c421 100644
--- a/lib/teslamate/vehicles/vehicle/vehicle.ex
+++ b/lib/teslamate/vehicles/vehicle/vehicle.ex
@@ -95,7 +95,7 @@ defmodule TeslaMate.Vehicles.Vehicle do
charge = %Charge{
ideal_battery_range: position.ideal_battery_range_km |> Convert.km_to_miles(1),
est_battery_range: position.est_battery_range_km |> Convert.km_to_miles(1),
- battery_range: position.battery_range_km |> Convert.km_to_miles(1),
+ battery_range: position.rated_battery_range_km |> Convert.km_to_miles(1),
battery_level: position.battery_level
}
@@ -635,7 +635,7 @@ defmodule TeslaMate.Vehicles.Vehicle do
odometer: Convert.miles_to_km(vehicle.vehicle_state.odometer, 6),
ideal_battery_range_km: Convert.miles_to_km(vehicle.charge_state.ideal_battery_range, 1),
est_battery_range_km: Convert.miles_to_km(vehicle.charge_state.est_battery_range, 1),
- battery_range_km: Convert.miles_to_km(vehicle.charge_state.battery_range, 1),
+ rated_battery_range_km: Convert.miles_to_km(vehicle.charge_state.battery_range, 1),
altitude: nil,
fan_status: vehicle.climate_state.fan_status,
is_climate_on: vehicle.climate_state.is_climate_on,
diff --git a/lib/teslamate_web/templates/car/summary.html.leex b/lib/teslamate_web/templates/car/summary.html.leex
index 362afd97..c8310640 100644
--- a/lib/teslamate_web/templates/car/summary.html.leex
+++ b/lib/teslamate_web/templates/car/summary.html.leex
@@ -55,14 +55,14 @@
<% end %>
- <%= if not is_nil(@summary.battery_range_km) and @summary.battery_range_km != @summary.ideal_battery_range_km do %>
+ <%= if not is_nil(@summary.rated_battery_range_km) and @summary.rated_battery_range_km != @summary.ideal_battery_range_km do %>
| <%= gettext "Range (rated)" %> |
<%= if @settings.unit_of_length == :mi do %>
- <%= Float.round(@summary.battery_range_km / 1.60934, 1)%> mi
+ <%= Float.round(@summary.rated_battery_range_km / 1.60934, 1)%> mi
<% else %>
- <%= @summary.battery_range_km %> km
+ <%= @summary.rated_battery_range_km %> km
<% end %>
|
diff --git a/priv/repo/migrations/20190913175011_add_rated_range_to_drives.exs b/priv/repo/migrations/20190913175011_add_rated_range_to_drives.exs
index 2f755d1f..f95af1d9 100644
--- a/priv/repo/migrations/20190913175011_add_rated_range_to_drives.exs
+++ b/priv/repo/migrations/20190913175011_add_rated_range_to_drives.exs
@@ -2,6 +2,8 @@ defmodule TeslaMate.Repo.Migrations.AddRatedRangeToDrives do
use Ecto.Migration
def change do
+ rename(table(:positions), :battery_range_km, to: :rated_battery_range_km)
+
rename(table(:drives), :start_range_km, to: :start_ideal_range_km)
rename(table(:drives), :end_range_km, to: :end_ideal_range_km)
@@ -10,5 +12,18 @@ defmodule TeslaMate.Repo.Migrations.AddRatedRangeToDrives do
add(:end_rated_range_km, :float)
remove(:efficiency, :float)
end
+
+ alter table(:charges) do
+ add(:rated_battery_range_km, :float)
+ end
+
+ rename(table(:charging_processes), :start_range_km, to: :start_ideal_range_km)
+ rename(table(:charging_processes), :end_range_km, to: :end_ideal_range_km)
+
+ alter table(:charging_processes) do
+ add(:start_rated_range_km, :float)
+ add(:end_rated_range_km, :float)
+ remove(:calculated_max_range, :float)
+ end
end
end
diff --git a/priv/repo/migrations/20190913175543_set_start_and_end_rated_range_km.exs b/priv/repo/migrations/20190913175543_set_start_and_end_rated_range_km.exs
index dda499ab..a67ad452 100644
--- a/priv/repo/migrations/20190913175543_set_start_and_end_rated_range_km.exs
+++ b/priv/repo/migrations/20190913175543_set_start_and_end_rated_range_km.exs
@@ -30,7 +30,7 @@ defmodule Position do
schema "positions" do
field :date, :utc_datetime
field :ideal_battery_range_km, :float
- field :battery_range_km, :float
+ field :rated_battery_range_km, :float
belongs_to(:drive, Drive)
end
@@ -38,7 +38,7 @@ defmodule Position do
@doc false
def changeset(position, attrs) do
position
- |> cast(attrs, [:date, :ideal_battery_range_km, :battery_range_km])
+ |> cast(attrs, [:date, :ideal_battery_range_km, :rated_battery_range_km])
|> validate_required([:date])
|> foreign_key_constraint(:drive_id)
end
@@ -56,7 +56,7 @@ defmodule TeslaMate.Repo.Migrations.SetStartAndEndRatedRangeKm do
query =
Position
|> select([p], %{
- rated_battery_range_km: p.battery_range_km,
+ rated_battery_range_km: p.rated_battery_range_km,
first_row: row_number() |> over(order_by: [asc: p.date]),
last_row: row_number() |> over(order_by: [desc: p.date])
})
diff --git a/test/teslamate/log/log_charging_test.exs b/test/teslamate/log/log_charging_test.exs
index a34d3d62..a8d7264d 100644
--- a/test/teslamate/log/log_charging_test.exs
+++ b/test/teslamate/log/log_charging_test.exs
@@ -143,6 +143,7 @@ defmodule TeslaMate.LogChargingTest do
charger_power: 4,
charger_voltage: 234,
ideal_battery_range_km: 266.6,
+ rated_battery_range_km: 206.6,
outside_temp: 16
},
%{
@@ -155,6 +156,7 @@ defmodule TeslaMate.LogChargingTest do
charger_power: 4,
charger_voltage: 234,
ideal_battery_range_km: 267.3,
+ rated_battery_range_km: 207.6,
outside_temp: 15.5
},
%{
@@ -167,6 +169,7 @@ defmodule TeslaMate.LogChargingTest do
charger_power: 4,
charger_voltage: 234,
ideal_battery_range_km: 268.6,
+ rated_battery_range_km: 208.6,
outside_temp: 15
},
%{
@@ -179,6 +182,7 @@ defmodule TeslaMate.LogChargingTest do
charger_power: 4,
charger_voltage: 234,
ideal_battery_range_km: 268.6,
+ rated_battery_range_km: 208.6,
outside_temp: 14.5
}
]
@@ -192,13 +196,14 @@ defmodule TeslaMate.LogChargingTest do
assert %DateTime{} = cproc.start_date
assert %DateTime{} = cproc.end_date
- assert cproc.calculated_max_range == 497
assert cproc.charge_energy_added == 0.31
assert cproc.duration_min == 4
assert cproc.end_battery_level == 54
assert cproc.start_battery_level == 50
- assert cproc.start_range_km == 266.6
- assert cproc.end_range_km == 268.6
+ assert cproc.start_ideal_range_km == 266.6
+ assert cproc.end_ideal_range_km == 268.6
+ assert cproc.start_rated_range_km == 206.6
+ assert cproc.end_rated_range_km == 208.6
assert cproc.outside_temp_avg == 15.25
end
@@ -241,6 +246,7 @@ defmodule TeslaMate.LogChargingTest do
charger_power: 4,
charger_voltage: 234,
ideal_battery_range_km: 266.6,
+ rated_battery_range_km: 206.6,
outside_temp: 16
},
%{
@@ -253,6 +259,7 @@ defmodule TeslaMate.LogChargingTest do
charger_power: 4,
charger_voltage: 234,
ideal_battery_range_km: 268.6,
+ rated_battery_range_km: 208.6,
outside_temp: 14.5
}
]
@@ -266,13 +273,14 @@ defmodule TeslaMate.LogChargingTest do
assert %DateTime{} = start_date = cproc.start_date
assert %DateTime{} = cproc.end_date
- assert cproc.calculated_max_range == 497
assert cproc.charge_energy_added == 0.31
assert cproc.duration_min == 4
assert cproc.end_battery_level == 54
assert cproc.start_battery_level == 50
- assert cproc.start_range_km == 266.6
- assert cproc.end_range_km == 268.6
+ assert cproc.start_ideal_range_km == 266.6
+ assert cproc.end_ideal_range_km == 268.6
+ assert cproc.start_rated_range_km == 206.6
+ assert cproc.end_rated_range_km == 208.6
assert cproc.outside_temp_avg == 15.25
# RESUME
@@ -281,15 +289,15 @@ defmodule TeslaMate.LogChargingTest do
assert ^start_date = cproc.start_date
assert cproc.start_battery_level == 50
- assert cproc.start_range_km == 266.6
+ assert cproc.start_ideal_range_km == 266.6
assert cproc.outside_temp_avg == 15.25
assert cproc.end_date == nil
- assert cproc.calculated_max_range == nil
assert cproc.charge_energy_added == nil
assert cproc.duration_min == nil
assert cproc.end_battery_level == nil
- assert cproc.end_range_km == nil
+ assert cproc.end_ideal_range_km == nil
+ assert cproc.end_rated_range_km == nil
charges = [
%{
@@ -302,6 +310,7 @@ defmodule TeslaMate.LogChargingTest do
charger_power: 4,
charger_voltage: 234,
ideal_battery_range_km: 278.6,
+ rated_battery_range_km: 218.6,
outside_temp: 15.01
}
]
@@ -315,13 +324,14 @@ defmodule TeslaMate.LogChargingTest do
assert ^start_date = cproc.start_date
assert %DateTime{} = cproc.end_date
- assert cproc.calculated_max_range == 507
assert cproc.charge_energy_added == 0.73
assert cproc.duration_min == 14
assert cproc.end_battery_level == 55
assert cproc.start_battery_level == 50
- assert cproc.start_range_km == 266.6
- assert cproc.end_range_km == 278.6
+ assert cproc.start_ideal_range_km == 266.6
+ assert cproc.end_ideal_range_km == 278.6
+ assert cproc.start_rated_range_km == 206.6
+ assert cproc.end_rated_range_km == 218.6
assert cproc.outside_temp_avg == 15.17
end
end
diff --git a/test/teslamate/log/log_drive_test.exs b/test/teslamate/log/log_drive_test.exs
index 1aeb8a3b..d185e2fc 100644
--- a/test/teslamate/log/log_drive_test.exs
+++ b/test/teslamate/log/log_drive_test.exs
@@ -66,7 +66,7 @@ defmodule TeslaMate.LogDriveTest do
power: 15,
odometer: 284.85156,
ideal_battery_range_km: 338.8,
- battery_range_km: 308.8,
+ rated_battery_range_km: 308.8,
battery_level: 68,
outside_temp: 19.2,
inside_temp: 21.0
@@ -79,7 +79,7 @@ defmodule TeslaMate.LogDriveTest do
power: -4,
odometer: 285.90556,
ideal_battery_range_km: 337.8,
- battery_range_km: 307.8,
+ rated_battery_range_km: 307.8,
battery_level: 68,
outside_temp: 19.0,
inside_temp: 21.1
@@ -92,7 +92,7 @@ defmodule TeslaMate.LogDriveTest do
power: -7,
odometer: 286.969561,
ideal_battery_range_km: 336.8,
- battery_range_km: 306.8,
+ rated_battery_range_km: 306.8,
battery_level: 68,
outside_temp: 21.0,
inside_temp: 21.2
@@ -105,7 +105,7 @@ defmodule TeslaMate.LogDriveTest do
power: 1,
odometer: 287.00556,
ideal_battery_range_km: 335.8,
- battery_range_km: 305.8,
+ rated_battery_range_km: 305.8,
battery_level: 68,
outside_temp: 18,
inside_temp: 20.9
@@ -118,7 +118,7 @@ defmodule TeslaMate.LogDriveTest do
power: 36,
odometer: 288.045561,
ideal_battery_range_km: 334.8,
- battery_range_km: 304.8,
+ rated_battery_range_km: 304.8,
battery_level: 68,
outside_temp: 18.0,
inside_temp: 21.0
diff --git a/test/teslamate/mqtt/pubsub/vehicle_subscriber_test.exs b/test/teslamate/mqtt/pubsub/vehicle_subscriber_test.exs
index a6223513..e8f64120 100644
--- a/test/teslamate/mqtt/pubsub/vehicle_subscriber_test.exs
+++ b/test/teslamate/mqtt/pubsub/vehicle_subscriber_test.exs
@@ -34,7 +34,7 @@ defmodule TeslaMate.Mqtt.PubSub.VehicleSubscriberTest do
battery_level: 60.0,
ideal_battery_range_km: 230.5,
est_battery_range_km: 220.0,
- battery_range_km: 230.5,
+ rated_battery_range_km: 230.5,
charge_energy_added: 25,
speed: 40,
outside_temp: 15,
@@ -86,7 +86,7 @@ defmodule TeslaMate.Mqtt.PubSub.VehicleSubscriberTest do
{:publish, "teslamate/cars/0/battery_level", "60.0", [retain: true, qos: 1]}}
assert_receive {MqttPublisherMock,
- {:publish, "teslamate/cars/0/battery_range_km", "230.5",
+ {:publish, "teslamate/cars/0/rated_battery_range_km", "230.5",
[retain: true, qos: 1]}}
assert_receive {MqttPublisherMock,
diff --git a/test/teslamate_web/controllers/car_controller_test.exs b/test/teslamate_web/controllers/car_controller_test.exs
index 2fea1edb..14fba70e 100644
--- a/test/teslamate_web/controllers/car_controller_test.exs
+++ b/test/teslamate_web/controllers/car_controller_test.exs
@@ -36,7 +36,7 @@ defmodule TeslaMateWeb.CarControllerTest do
latitude: 0,
ideal_battery_range_km: 380.1,
est_battery_range_km: 401.5,
- battery_range_km: 175.1,
+ rated_battery_range_km: 175.1,
battery_level: 80,
outside_temp: 20.1,
inside_temp: 21.0