2024-12-09 10:35:38 +00:00
|
|
|
{ config, pkgs, ... }:
|
|
|
|
|
|
|
|
let
|
|
|
|
domain = "home.giugl.io";
|
2024-12-09 14:17:06 +00:00
|
|
|
teslamateURL = "https://tesla.giugl.io";
|
|
|
|
teslaModel = "Model 3 Long Range";
|
|
|
|
teslaName = "Lady Giovanna";
|
2024-12-09 17:05:06 +00:00
|
|
|
piperPort = 10200;
|
|
|
|
whisperPort = 10300;
|
2024-12-09 10:35:38 +00:00
|
|
|
in
|
|
|
|
{
|
2024-12-16 10:29:40 +00:00
|
|
|
services.go2rtc = {
|
|
|
|
enable = true;
|
|
|
|
settings.api.listen = "127.0.0.1:1984";
|
|
|
|
};
|
|
|
|
|
2024-12-16 10:31:17 +00:00
|
|
|
# services.wyoming = {
|
|
|
|
# faster-whisper = {
|
|
|
|
# servers."home" = {
|
|
|
|
# enable = true;
|
|
|
|
# uri = "tcp://127.0.0.1:${toString whisperPort}";
|
|
|
|
# model = "large-v3";
|
|
|
|
# device = "cuda";
|
|
|
|
# language = "en";
|
|
|
|
# };
|
|
|
|
# };
|
|
|
|
# piper = {
|
|
|
|
# servers."home" = {
|
|
|
|
# enable = true;
|
|
|
|
# uri = "tcp://127.0.0.1:${toString piperPort}";
|
|
|
|
# voice = "en-us-ryan-medium";
|
|
|
|
# lengthScale = 0.63;
|
|
|
|
# };
|
|
|
|
# };
|
|
|
|
# };
|
2024-12-09 17:05:06 +00:00
|
|
|
|
2024-12-09 10:35:38 +00:00
|
|
|
services.home-assistant = {
|
|
|
|
enable = true;
|
2024-12-09 17:05:06 +00:00
|
|
|
package = pkgs.unstablePkgs.home-assistant;
|
2024-12-09 10:35:38 +00:00
|
|
|
config = {
|
|
|
|
http = {
|
|
|
|
server_host = "127.0.0.1";
|
|
|
|
server_port = 8123;
|
|
|
|
use_x_forwarded_for = true;
|
|
|
|
trusted_proxies = [ "127.0.0.1" ];
|
|
|
|
};
|
|
|
|
homeassistant = {
|
|
|
|
name = "Underwood House";
|
|
|
|
unit_system = "metric";
|
|
|
|
};
|
|
|
|
default_config = { };
|
2024-12-10 11:54:19 +00:00
|
|
|
automation = "!include automations.yaml";
|
2024-12-11 00:11:48 +00:00
|
|
|
frontend.themes = "!include_dir_merge_named themes";
|
2024-12-09 14:17:06 +00:00
|
|
|
binary_sensor = [{
|
|
|
|
platform = "template";
|
|
|
|
sensors = {
|
|
|
|
tesla_park_brake = {
|
|
|
|
friendly_name = "Parking Brake";
|
|
|
|
icon_template = "mdi:car-brake-parking";
|
|
|
|
value_template = "{% if is_state('sensor.tesla_shift_state', 'P') %}\n ON\n{% else %}\n OFF\n{% endif %}";
|
|
|
|
};
|
|
|
|
};
|
|
|
|
}];
|
|
|
|
|
|
|
|
sensor = [{
|
|
|
|
platform = "template";
|
|
|
|
sensors = {
|
|
|
|
tesla_est_battery_range_mi = {
|
|
|
|
friendly_name = "Estimated Range (mi)";
|
|
|
|
unit_of_measurement = "mi";
|
|
|
|
icon_template = "mdi:gauge";
|
|
|
|
availability_template = "{{ has_value('sensor.tesla_est_battery_range_km') }}";
|
|
|
|
value_template = "{% if has_value('sensor.tesla_est_battery_range_km') %}\n {{ (states('sensor.tesla_est_battery_range_km') | float / 1.609344) | round(2) }}\n{% endif %}\n";
|
|
|
|
};
|
|
|
|
tesla_rated_battery_range_mi = {
|
|
|
|
friendly_name = "Rated Range (mi)";
|
|
|
|
unit_of_measurement = "mi";
|
|
|
|
icon_template = "mdi:gauge";
|
|
|
|
availability_template = "{{ has_value('sensor.tesla_rated_battery_range_km') }}";
|
|
|
|
value_template = "{% if has_value('sensor.tesla_rated_battery_range_km') %}\n {{ (states('sensor.tesla_rated_battery_range_km') | float / 1.609344) | round(2) }}\n{% endif %}\n";
|
|
|
|
};
|
|
|
|
tesla_ideal_battery_range_mi = {
|
|
|
|
friendly_name = "Ideal Range (mi)";
|
|
|
|
unit_of_measurement = "mi";
|
|
|
|
icon_template = "mdi:gauge";
|
|
|
|
availability_template = "{{ has_value('sensor.tesla_ideal_battery_range_km') }}";
|
|
|
|
value_template = "{% if has_value('sensor.tesla_ideal_battery_range_km') %}\n {{ (states('sensor.tesla_ideal_battery_range_km') | float / 1.609344) | round(2) }}\n{% endif %}\n";
|
|
|
|
};
|
|
|
|
tesla_odometer_mi = {
|
|
|
|
friendly_name = "Odometer (mi)";
|
|
|
|
unit_of_measurement = "mi";
|
|
|
|
icon_template = "mdi:counter";
|
|
|
|
availability_template = "{{ has_value('sensor.tesla_odometer') }}";
|
|
|
|
value_template = "{% if has_value('sensor.tesla_odometer') %}\n {{ (states('sensor.tesla_odometer') | float / 1.609344) | round(2) }}\n{% endif %}\n";
|
|
|
|
};
|
|
|
|
tesla_speed_mph = {
|
|
|
|
friendly_name = "Speed (MPH)";
|
|
|
|
unit_of_measurement = "mph";
|
|
|
|
icon_template = "mdi:speedometer";
|
|
|
|
availability_template = "{{ has_value('sensor.tesla_speed') }}";
|
|
|
|
value_template = "{% if has_value('sensor.tesla_speed') %}\n {{ (states('sensor.tesla_speed') | float / 1.609344) | round(2) }}\n{% endif %}\n";
|
|
|
|
};
|
|
|
|
tesla_elevation_ft = {
|
|
|
|
friendly_name = "Elevation (ft)";
|
|
|
|
unit_of_measurement = "ft";
|
|
|
|
icon_template = "mdi:image-filter-hdr";
|
|
|
|
availability_template = "{{ has_value('sensor.tesla_elevation') }}";
|
|
|
|
value_template = "{% if has_value('sensor.tesla_elevation') %}\n {{ (states('sensor.tesla_elevation') | float * 3.2808) | round(2) }}\n{% endif %}\n";
|
|
|
|
};
|
|
|
|
tesla_tpms_pressure_fl_psi = {
|
|
|
|
friendly_name = "Front Left Tire Pressure (psi)";
|
|
|
|
unit_of_measurement = "psi";
|
|
|
|
icon_template = "mdi:car-tire-alert";
|
|
|
|
availability_template = "{{ has_value('sensor.tesla_tpms_fl') }}";
|
|
|
|
value_template = "{% if has_value('sensor.tesla_tpms_fl') %}\n {{ (states('sensor.tesla_tpms_fl') | float * 14.50377) | round(2) }}\n{% endif %}\n";
|
|
|
|
};
|
|
|
|
tesla_tpms_pressure_fr_psi = {
|
|
|
|
friendly_name = "Front Right Tire Pressure (psi)";
|
|
|
|
unit_of_measurement = "psi";
|
|
|
|
icon_template = "mdi:car-tire-alert";
|
|
|
|
availability_template = "{{ has_value('sensor.tesla_tpms_fr') }}";
|
|
|
|
value_template = "{% if has_value('sensor.tesla_tpms_fr') %}\n {{ (states('sensor.tesla_tpms_fr') | float * 14.50377) | round(2) }}\n{% endif %}\n";
|
|
|
|
};
|
|
|
|
tesla_tpms_pressure_rl_psi = {
|
|
|
|
friendly_name = "Rear Left Tire Pressure (psi)";
|
|
|
|
unit_of_measurement = "psi";
|
|
|
|
icon_template = "mdi:car-tire-alert";
|
|
|
|
availability_template = "{{ has_value('sensor.tesla_tpms_rl') }}";
|
|
|
|
value_template = "{% if has_value('sensor.tesla_tpms_rl') %}\n {{ (states('sensor.tesla_tpms_rl') | float * 14.50377) | round(2) }}\n{% endif %}\n";
|
|
|
|
};
|
|
|
|
tesla_tpms_pressure_rr_psi = {
|
|
|
|
friendly_name = "Rear Right Tire Pressure (psi)";
|
|
|
|
unit_of_measurement = "psi";
|
|
|
|
icon_template = "mdi:car-tire-alert";
|
|
|
|
availability_template = "{{ has_value('sensor.tesla_tpms_rr') }}";
|
|
|
|
value_template = "{% if has_value('sensor.tesla_tpms_rr') %}\n {{ (states('sensor.tesla_tpms_rr') | float * 14.50377) | round(2) }}\n{% endif %}\n";
|
|
|
|
};
|
|
|
|
tesla_active_route_distance_to_arrival_km = {
|
|
|
|
friendly_name = "Active route distance to arrival (km)";
|
|
|
|
unit_of_measurement = "km";
|
|
|
|
icon_template = "mdi:map-marker-distance";
|
|
|
|
availability_template = "{{ has_value('sensor.tesla_active_route_distance_to_arrival_mi') }}";
|
|
|
|
value_template = "{% if has_value('sensor.tesla_active_route_distance_to_arrival_mi') %}\n {{ (states('sensor.tesla_active_route_distance_to_arrival_mi') | float * 1.609344) | round(2) }}\n{% endif %}";
|
|
|
|
};
|
|
|
|
};
|
|
|
|
}];
|
|
|
|
|
|
|
|
mqtt = [
|
|
|
|
{
|
|
|
|
sensor = {
|
|
|
|
name = "Display Name";
|
|
|
|
object_id = "tesla_display_name";
|
|
|
|
unique_id = "teslamate_1_display_name";
|
|
|
|
device = {
|
|
|
|
identifiers = [ "teslamate_car_1" ];
|
|
|
|
configuration_url = teslamateURL;
|
|
|
|
manufacturer = "Tesla";
|
|
|
|
model = teslaModel;
|
|
|
|
name = teslaName;
|
|
|
|
};
|
|
|
|
state_topic = "teslamate/cars/1/display_name";
|
|
|
|
icon = "mdi:car";
|
|
|
|
};
|
|
|
|
}
|
|
|
|
{
|
|
|
|
device_tracker = {
|
|
|
|
name = "Location";
|
|
|
|
object_id = "tesla_location";
|
|
|
|
unique_id = "teslamate_1_location";
|
|
|
|
device = {
|
|
|
|
identifiers = [ "teslamate_car_1" ];
|
|
|
|
configuration_url = teslamateURL;
|
|
|
|
manufacturer = "Tesla";
|
|
|
|
model = teslaModel;
|
|
|
|
};
|
|
|
|
json_attributes_topic = "teslamate/cars/1/location";
|
|
|
|
icon = "mdi:crosshairs-gps";
|
|
|
|
};
|
|
|
|
}
|
|
|
|
{
|
|
|
|
device_tracker = {
|
|
|
|
name = "Active route location";
|
|
|
|
object_id = "tesla_active_route_location";
|
|
|
|
unique_id = "teslamate_1_active_route_location";
|
|
|
|
availability = [{
|
|
|
|
topic = "teslamate/cars/1/active_route";
|
|
|
|
value_template = "{{ 'offline' if value_json.error else 'online' }}";
|
|
|
|
}];
|
|
|
|
device = {
|
|
|
|
identifiers = [ "teslamate_car_1" ];
|
|
|
|
configuration_url = teslamateURL;
|
|
|
|
manufacturer = "Tesla";
|
|
|
|
model = teslaModel;
|
|
|
|
};
|
|
|
|
json_attributes_topic = "teslamate/cars/1/active_route";
|
|
|
|
json_attributes_template = "{% if not value_json.error and value_json.location %}\n {{ value_json.location | tojson }}\n{% else %}\n {}\n{% endif %}\n";
|
|
|
|
icon = "mdi:crosshairs-gps";
|
|
|
|
};
|
|
|
|
}
|
|
|
|
{
|
|
|
|
sensor = {
|
|
|
|
name = "State";
|
|
|
|
object_id = "tesla_state";
|
|
|
|
unique_id = "teslamate_1_state";
|
|
|
|
device = {
|
|
|
|
identifiers = [ "teslamate_car_1" ];
|
|
|
|
configuration_url = teslamateURL;
|
|
|
|
manufacturer = "Tesla";
|
|
|
|
model = teslaModel;
|
|
|
|
};
|
|
|
|
state_topic = "teslamate/cars/1/state";
|
|
|
|
icon = "mdi:car-connected";
|
|
|
|
};
|
|
|
|
}
|
|
|
|
{
|
|
|
|
sensor = {
|
|
|
|
name = "Since";
|
|
|
|
object_id = "tesla_since";
|
|
|
|
unique_id = "teslamate_1_since";
|
|
|
|
device = {
|
|
|
|
identifiers = [ "teslamate_car_1" ];
|
|
|
|
configuration_url = teslamateURL;
|
|
|
|
manufacturer = "Tesla";
|
|
|
|
model = teslaModel;
|
|
|
|
};
|
|
|
|
state_topic = "teslamate/cars/1/since";
|
|
|
|
device_class = "timestamp";
|
|
|
|
icon = "mdi:clock-outline";
|
|
|
|
};
|
|
|
|
}
|
|
|
|
{
|
|
|
|
sensor = {
|
|
|
|
name = "Version";
|
|
|
|
object_id = "tesla_version";
|
|
|
|
unique_id = "teslamate_1_version";
|
|
|
|
device = {
|
|
|
|
identifiers = [ "teslamate_car_1" ];
|
|
|
|
configuration_url = teslamateURL;
|
|
|
|
manufacturer = "Tesla";
|
|
|
|
model = teslaModel;
|
|
|
|
};
|
|
|
|
state_topic = "teslamate/cars/1/version";
|
|
|
|
icon = "mdi:alphabetical";
|
|
|
|
};
|
|
|
|
}
|
|
|
|
{
|
|
|
|
sensor = {
|
|
|
|
name = "Update Version";
|
|
|
|
object_id = "tesla_update_version";
|
|
|
|
unique_id = "teslamate_1_update_version";
|
|
|
|
device = {
|
|
|
|
identifiers = [ "teslamate_car_1" ];
|
|
|
|
configuration_url = teslamateURL;
|
|
|
|
manufacturer = "Tesla";
|
|
|
|
model = teslaModel;
|
|
|
|
};
|
|
|
|
state_topic = "teslamate/cars/1/update_version";
|
|
|
|
icon = "mdi:alphabetical";
|
|
|
|
};
|
|
|
|
}
|
|
|
|
{
|
|
|
|
sensor = {
|
|
|
|
name = "Model";
|
|
|
|
object_id = "tesla_model";
|
|
|
|
unique_id = "teslamate_1_model";
|
|
|
|
device = {
|
|
|
|
identifiers = [ "teslamate_car_1" ];
|
|
|
|
configuration_url = teslamateURL;
|
|
|
|
manufacturer = "Tesla";
|
|
|
|
model = teslaModel;
|
|
|
|
};
|
|
|
|
state_topic = "teslamate/cars/1/model";
|
|
|
|
};
|
|
|
|
}
|
|
|
|
{
|
|
|
|
sensor = {
|
|
|
|
name = "Trim Badging";
|
|
|
|
object_id = "tesla_trim_badging";
|
|
|
|
unique_id = "teslamate_1_trim_badging";
|
|
|
|
device = {
|
|
|
|
identifiers = [ "teslamate_car_1" ];
|
|
|
|
configuration_url = teslamateURL;
|
|
|
|
manufacturer = "Tesla";
|
|
|
|
model = teslaModel;
|
|
|
|
};
|
|
|
|
state_topic = "teslamate/cars/1/trim_badging";
|
|
|
|
icon = "mdi:shield-star-outline";
|
|
|
|
};
|
|
|
|
}
|
|
|
|
{
|
|
|
|
sensor = {
|
|
|
|
name = "Exterior Color";
|
|
|
|
object_id = "tesla_exterior_color";
|
|
|
|
unique_id = "teslamate_1_exterior_color";
|
|
|
|
device = {
|
|
|
|
identifiers = [ "teslamate_car_1" ];
|
|
|
|
configuration_url = teslamateURL;
|
|
|
|
manufacturer = "Tesla";
|
|
|
|
model = teslaModel;
|
|
|
|
};
|
|
|
|
state_topic = "teslamate/cars/1/exterior_color";
|
|
|
|
icon = "mdi:palette";
|
|
|
|
};
|
|
|
|
}
|
|
|
|
{
|
|
|
|
sensor = {
|
|
|
|
name = "Wheel Type";
|
|
|
|
object_id = "tesla_wheel_type";
|
|
|
|
unique_id = "teslamate_1_wheel_type";
|
|
|
|
device = {
|
|
|
|
identifiers = [ "teslamate_car_1" ];
|
|
|
|
configuration_url = teslamateURL;
|
|
|
|
manufacturer = "Tesla";
|
|
|
|
model = teslaModel;
|
|
|
|
};
|
|
|
|
state_topic = "teslamate/cars/1/wheel_type";
|
|
|
|
};
|
|
|
|
}
|
|
|
|
{
|
|
|
|
sensor = {
|
|
|
|
name = "Spoiler Type";
|
|
|
|
object_id = "tesla_spoiler_type";
|
|
|
|
unique_id = "teslamate_1_spoiler_type";
|
|
|
|
device = {
|
|
|
|
identifiers = [ "teslamate_car_1" ];
|
|
|
|
configuration_url = teslamateURL;
|
|
|
|
manufacturer = "Tesla";
|
|
|
|
model = teslaModel;
|
|
|
|
};
|
|
|
|
state_topic = "teslamate/cars/1/spoiler_type";
|
|
|
|
icon = "mdi:car-sports";
|
|
|
|
};
|
|
|
|
}
|
|
|
|
{
|
|
|
|
sensor = {
|
|
|
|
name = "Geofence";
|
|
|
|
object_id = "tesla_geofence";
|
|
|
|
unique_id = "teslamate_1_geofence";
|
|
|
|
device = {
|
|
|
|
identifiers = [ "teslamate_car_1" ];
|
|
|
|
configuration_url = teslamateURL;
|
|
|
|
manufacturer = "Tesla";
|
|
|
|
model = teslaModel;
|
|
|
|
};
|
|
|
|
state_topic = "teslamate/cars/1/geofence";
|
|
|
|
icon = "mdi:earth";
|
|
|
|
};
|
|
|
|
}
|
|
|
|
{
|
|
|
|
sensor = {
|
|
|
|
name = "Shift State";
|
|
|
|
object_id = "tesla_shift_state";
|
|
|
|
unique_id = "teslamate_1_shift_state";
|
|
|
|
device = {
|
|
|
|
identifiers = [ "teslamate_car_1" ];
|
|
|
|
configuration_url = teslamateURL;
|
|
|
|
manufacturer = "Tesla";
|
|
|
|
model = teslaModel;
|
|
|
|
};
|
|
|
|
state_topic = "teslamate/cars/1/shift_state";
|
|
|
|
icon = "mdi:car-shift-pattern";
|
|
|
|
};
|
|
|
|
}
|
|
|
|
{
|
|
|
|
sensor = {
|
|
|
|
name = "Power";
|
|
|
|
object_id = "tesla_power";
|
|
|
|
unique_id = "teslamate_1_power";
|
|
|
|
device = {
|
|
|
|
identifiers = [ "teslamate_car_1" ];
|
|
|
|
configuration_url = teslamateURL;
|
|
|
|
manufacturer = "Tesla";
|
|
|
|
model = teslaModel;
|
|
|
|
};
|
|
|
|
state_topic = "teslamate/cars/1/power";
|
|
|
|
device_class = "power";
|
|
|
|
unit_of_measurement = "kW";
|
|
|
|
icon = "mdi:flash";
|
|
|
|
};
|
|
|
|
}
|
|
|
|
{
|
|
|
|
sensor = {
|
|
|
|
name = "Speed";
|
|
|
|
object_id = "tesla_speed";
|
|
|
|
unique_id = "teslamate_1_speed";
|
|
|
|
device = {
|
|
|
|
identifiers = [ "teslamate_car_1" ];
|
|
|
|
configuration_url = teslamateURL;
|
|
|
|
manufacturer = "Tesla";
|
|
|
|
model = teslaModel;
|
|
|
|
};
|
|
|
|
state_topic = "teslamate/cars/1/speed";
|
|
|
|
unit_of_measurement = "km/h";
|
|
|
|
icon = "mdi:speedometer";
|
|
|
|
};
|
|
|
|
}
|
|
|
|
{
|
|
|
|
sensor = {
|
|
|
|
name = "Heading";
|
|
|
|
object_id = "tesla_heading";
|
|
|
|
unique_id = "teslamate_1_heading";
|
|
|
|
device = {
|
|
|
|
identifiers = [ "teslamate_car_1" ];
|
|
|
|
configuration_url = teslamateURL;
|
|
|
|
manufacturer = "Tesla";
|
|
|
|
model = teslaModel;
|
|
|
|
};
|
|
|
|
state_topic = "teslamate/cars/1/heading";
|
|
|
|
unit_of_measurement = "°";
|
|
|
|
icon = "mdi:compass";
|
|
|
|
};
|
|
|
|
}
|
|
|
|
{
|
|
|
|
sensor = {
|
|
|
|
name = "Elevation";
|
|
|
|
object_id = "tesla_elevation";
|
|
|
|
unique_id = "teslamate_1_elevation";
|
|
|
|
device = {
|
|
|
|
identifiers = [ "teslamate_car_1" ];
|
|
|
|
configuration_url = teslamateURL;
|
|
|
|
manufacturer = "Tesla";
|
|
|
|
model = teslaModel;
|
|
|
|
};
|
|
|
|
state_topic = "teslamate/cars/1/elevation";
|
|
|
|
unit_of_measurement = "m";
|
|
|
|
icon = "mdi:image-filter-hdr";
|
|
|
|
};
|
|
|
|
}
|
|
|
|
{
|
|
|
|
sensor = {
|
|
|
|
name = "Inside Temp";
|
|
|
|
object_id = "tesla_inside_temp";
|
|
|
|
unique_id = "teslamate_1_inside_temp";
|
|
|
|
device = {
|
|
|
|
identifiers = [ "teslamate_car_1" ];
|
|
|
|
configuration_url = teslamateURL;
|
|
|
|
manufacturer = "Tesla";
|
|
|
|
model = teslaModel;
|
|
|
|
};
|
|
|
|
state_topic = "teslamate/cars/1/inside_temp";
|
|
|
|
device_class = "temperature";
|
|
|
|
unit_of_measurement = "°C";
|
|
|
|
icon = "mdi:thermometer-lines";
|
|
|
|
};
|
|
|
|
}
|
|
|
|
{
|
|
|
|
sensor = {
|
|
|
|
name = "Outside Temp";
|
|
|
|
object_id = "tesla_outside_temp";
|
|
|
|
unique_id = "teslamate_1_outside_temp";
|
|
|
|
device = {
|
|
|
|
identifiers = [ "teslamate_car_1" ];
|
|
|
|
configuration_url = teslamateURL;
|
|
|
|
manufacturer = "Tesla";
|
|
|
|
model = teslaModel;
|
|
|
|
};
|
|
|
|
state_topic = "teslamate/cars/1/outside_temp";
|
|
|
|
device_class = "temperature";
|
|
|
|
unit_of_measurement = "°C";
|
|
|
|
icon = "mdi:thermometer-lines";
|
|
|
|
};
|
|
|
|
}
|
|
|
|
{
|
|
|
|
sensor = {
|
|
|
|
name = "Odometer";
|
|
|
|
object_id = "tesla_odometer";
|
|
|
|
unique_id = "teslamate_1_odometer";
|
|
|
|
device = {
|
|
|
|
identifiers = [ "teslamate_car_1" ];
|
|
|
|
configuration_url = teslamateURL;
|
|
|
|
manufacturer = "Tesla";
|
|
|
|
model = teslaModel;
|
|
|
|
};
|
|
|
|
state_topic = "teslamate/cars/1/odometer";
|
|
|
|
unit_of_measurement = "km";
|
|
|
|
icon = "mdi:counter";
|
|
|
|
};
|
|
|
|
}
|
|
|
|
{
|
|
|
|
sensor = {
|
|
|
|
name = "Est Battery Range";
|
|
|
|
object_id = "tesla_est_battery_range_km";
|
|
|
|
unique_id = "teslamate_1_est_battery_range_km";
|
|
|
|
device = {
|
|
|
|
identifiers = [ "teslamate_car_1" ];
|
|
|
|
configuration_url = teslamateURL;
|
|
|
|
manufacturer = "Tesla";
|
|
|
|
model = teslaModel;
|
|
|
|
};
|
|
|
|
state_topic = "teslamate/cars/1/est_battery_range_km";
|
|
|
|
unit_of_measurement = "km";
|
|
|
|
icon = "mdi:gauge";
|
|
|
|
};
|
|
|
|
}
|
|
|
|
{
|
|
|
|
sensor = {
|
|
|
|
name = "Rated Battery Range";
|
|
|
|
object_id = "tesla_rated_battery_range_km";
|
|
|
|
unique_id = "teslamate_1_rated_battery_range_km";
|
|
|
|
device = {
|
|
|
|
identifiers = [ "teslamate_car_1" ];
|
|
|
|
configuration_url = teslamateURL;
|
|
|
|
manufacturer = "Tesla";
|
|
|
|
model = teslaModel;
|
|
|
|
};
|
|
|
|
state_topic = "teslamate/cars/1/rated_battery_range_km";
|
|
|
|
unit_of_measurement = "km";
|
|
|
|
icon = "mdi:gauge";
|
|
|
|
};
|
|
|
|
}
|
|
|
|
{
|
|
|
|
sensor = {
|
|
|
|
name = "Ideal Battery Range";
|
|
|
|
object_id = "tesla_ideal_battery_range_km";
|
|
|
|
unique_id = "teslamate_1_ideal_battery_range_km";
|
|
|
|
device = {
|
|
|
|
identifiers = [ "teslamate_car_1" ];
|
|
|
|
configuration_url = teslamateURL;
|
|
|
|
manufacturer = "Tesla";
|
|
|
|
model = teslaModel;
|
|
|
|
};
|
|
|
|
state_topic = "teslamate/cars/1/ideal_battery_range_km";
|
|
|
|
unit_of_measurement = "km";
|
|
|
|
icon = "mdi:gauge";
|
|
|
|
};
|
|
|
|
}
|
|
|
|
{
|
|
|
|
sensor = {
|
|
|
|
name = "Battery Level";
|
|
|
|
object_id = "tesla_battery_level";
|
|
|
|
unique_id = "teslamate_1_battery_level";
|
|
|
|
device = {
|
|
|
|
identifiers = [ "teslamate_car_1" ];
|
|
|
|
configuration_url = teslamateURL;
|
|
|
|
manufacturer = "Tesla";
|
|
|
|
model = teslaModel;
|
|
|
|
};
|
|
|
|
state_topic = "teslamate/cars/1/battery_level";
|
|
|
|
device_class = "battery";
|
|
|
|
unit_of_measurement = "%";
|
|
|
|
icon = "mdi:battery-80";
|
|
|
|
};
|
|
|
|
}
|
|
|
|
{
|
|
|
|
sensor = {
|
|
|
|
name = "Usable Battery Level";
|
|
|
|
object_id = "tesla_usable_battery_level";
|
|
|
|
unique_id = "teslamate_1_usable_battery_level";
|
|
|
|
device = {
|
|
|
|
identifiers = [ "teslamate_car_1" ];
|
|
|
|
configuration_url = teslamateURL;
|
|
|
|
manufacturer = "Tesla";
|
|
|
|
model = teslaModel;
|
|
|
|
};
|
|
|
|
state_topic = "teslamate/cars/1/usable_battery_level";
|
|
|
|
unit_of_measurement = "%";
|
|
|
|
icon = "mdi:battery-80";
|
|
|
|
};
|
|
|
|
}
|
|
|
|
{
|
|
|
|
sensor = {
|
|
|
|
name = "Charge Energy Added";
|
|
|
|
object_id = "tesla_charge_energy_added";
|
|
|
|
unique_id = "teslamate_1_charge_energy_added";
|
|
|
|
device = {
|
|
|
|
identifiers = [ "teslamate_car_1" ];
|
|
|
|
configuration_url = teslamateURL;
|
|
|
|
manufacturer = "Tesla";
|
|
|
|
model = teslaModel;
|
|
|
|
};
|
|
|
|
state_topic = "teslamate/cars/1/charge_energy_added";
|
|
|
|
device_class = "energy";
|
|
|
|
unit_of_measurement = "kWh";
|
|
|
|
icon = "mdi:battery-charging";
|
|
|
|
};
|
|
|
|
}
|
|
|
|
{
|
|
|
|
sensor = {
|
|
|
|
name = "Charge Limit Soc";
|
|
|
|
object_id = "tesla_charge_limit_soc";
|
|
|
|
unique_id = "teslamate_1_charge_limit_soc";
|
|
|
|
device = {
|
|
|
|
identifiers = [ "teslamate_car_1" ];
|
|
|
|
configuration_url = teslamateURL;
|
|
|
|
manufacturer = "Tesla";
|
|
|
|
model = teslaModel;
|
|
|
|
};
|
|
|
|
state_topic = "teslamate/cars/1/charge_limit_soc";
|
|
|
|
unit_of_measurement = "%";
|
|
|
|
icon = "mdi:battery-charging-100";
|
|
|
|
};
|
|
|
|
}
|
|
|
|
{
|
|
|
|
sensor = {
|
|
|
|
name = "Charger Actual Current";
|
|
|
|
object_id = "tesla_charger_actual_current";
|
|
|
|
unique_id = "teslamate_1_charger_actual_current";
|
|
|
|
device = {
|
|
|
|
identifiers = [ "teslamate_car_1" ];
|
|
|
|
configuration_url = teslamateURL;
|
|
|
|
manufacturer = "Tesla";
|
|
|
|
model = teslaModel;
|
|
|
|
};
|
|
|
|
state_topic = "teslamate/cars/1/charger_actual_current";
|
|
|
|
device_class = "current";
|
|
|
|
unit_of_measurement = "A";
|
|
|
|
icon = "mdi:lightning-bolt";
|
|
|
|
};
|
|
|
|
}
|
|
|
|
{
|
|
|
|
sensor = {
|
|
|
|
name = "Charger Phases";
|
|
|
|
object_id = "tesla_charger_phases";
|
|
|
|
unique_id = "teslamate_1_charger_phases";
|
|
|
|
device = {
|
|
|
|
identifiers = [ "teslamate_car_1" ];
|
|
|
|
configuration_url = teslamateURL;
|
|
|
|
manufacturer = "Tesla";
|
|
|
|
model = teslaModel;
|
|
|
|
};
|
|
|
|
state_topic = "teslamate/cars/1/charger_phases";
|
|
|
|
icon = "mdi:sine-wave";
|
|
|
|
};
|
|
|
|
}
|
|
|
|
{
|
|
|
|
sensor = {
|
|
|
|
name = "Charger Power";
|
|
|
|
object_id = "tesla_charger_power";
|
|
|
|
unique_id = "teslamate_1_charger_power";
|
|
|
|
device = {
|
|
|
|
identifiers = [ "teslamate_car_1" ];
|
|
|
|
configuration_url = teslamateURL;
|
|
|
|
manufacturer = "Tesla";
|
|
|
|
model = teslaModel;
|
|
|
|
};
|
|
|
|
state_topic = "teslamate/cars/1/charger_power";
|
|
|
|
device_class = "power";
|
|
|
|
unit_of_measurement = "kW";
|
|
|
|
icon = "mdi:lightning-bolt";
|
|
|
|
};
|
|
|
|
}
|
|
|
|
{
|
|
|
|
sensor = {
|
|
|
|
name = "Charger Voltage";
|
|
|
|
object_id = "tesla_charger_voltage";
|
|
|
|
unique_id = "teslamate_1_charger_voltage";
|
|
|
|
device = {
|
|
|
|
identifiers = [ "teslamate_car_1" ];
|
|
|
|
configuration_url = teslamateURL;
|
|
|
|
manufacturer = "Tesla";
|
|
|
|
model = teslaModel;
|
|
|
|
};
|
|
|
|
state_topic = "teslamate/cars/1/charger_voltage";
|
|
|
|
device_class = "voltage";
|
|
|
|
unit_of_measurement = "V";
|
|
|
|
icon = "mdi:lightning-bolt";
|
|
|
|
};
|
|
|
|
}
|
|
|
|
{
|
|
|
|
sensor = {
|
|
|
|
name = "Scheduled Charging Start Time";
|
|
|
|
object_id = "tesla_scheduled_charging_start_time";
|
|
|
|
unique_id = "teslamate_1_scheduled_charging_start_time";
|
|
|
|
device = {
|
|
|
|
identifiers = [ "teslamate_car_1" ];
|
|
|
|
configuration_url = teslamateURL;
|
|
|
|
manufacturer = "Tesla";
|
|
|
|
model = teslaModel;
|
|
|
|
};
|
|
|
|
state_topic = "teslamate/cars/1/scheduled_charging_start_time";
|
|
|
|
device_class = "timestamp";
|
|
|
|
icon = "mdi:clock-outline";
|
|
|
|
};
|
|
|
|
}
|
|
|
|
{
|
|
|
|
sensor = {
|
|
|
|
name = "Time To Full Charge";
|
|
|
|
object_id = "tesla_time_to_full_charge";
|
|
|
|
unique_id = "teslamate_1_time_to_full_charge";
|
|
|
|
device = {
|
|
|
|
identifiers = [ "teslamate_car_1" ];
|
|
|
|
configuration_url = teslamateURL;
|
|
|
|
manufacturer = "Tesla";
|
|
|
|
model = teslaModel;
|
|
|
|
};
|
|
|
|
state_topic = "teslamate/cars/1/time_to_full_charge";
|
|
|
|
unit_of_measurement = "h";
|
|
|
|
icon = "mdi:clock-outline";
|
|
|
|
};
|
|
|
|
}
|
|
|
|
{
|
|
|
|
sensor = {
|
|
|
|
name = "TPMS Pressure Front Left";
|
|
|
|
object_id = "tesla_tpms_pressure_fl";
|
|
|
|
unique_id = "teslamate_1_tpms_pressure_fl";
|
|
|
|
device = {
|
|
|
|
identifiers = [ "teslamate_car_1" ];
|
|
|
|
configuration_url = teslamateURL;
|
|
|
|
manufacturer = "Tesla";
|
|
|
|
model = teslaModel;
|
|
|
|
};
|
|
|
|
state_topic = "teslamate/cars/1/tpms_pressure_fl";
|
|
|
|
unit_of_measurement = "bar";
|
|
|
|
icon = "mdi:car-tire-alert";
|
|
|
|
};
|
|
|
|
}
|
|
|
|
{
|
|
|
|
sensor = {
|
|
|
|
name = "TPMS Pressure Front Right";
|
|
|
|
object_id = "tesla_tpms_pressure_fr";
|
|
|
|
unique_id = "teslamate_1_tpms_pressure_fr";
|
|
|
|
device = {
|
|
|
|
identifiers = [ "teslamate_car_1" ];
|
|
|
|
configuration_url = teslamateURL;
|
|
|
|
manufacturer = "Tesla";
|
|
|
|
model = teslaModel;
|
|
|
|
};
|
|
|
|
state_topic = "teslamate/cars/1/tpms_pressure_fr";
|
|
|
|
unit_of_measurement = "bar";
|
|
|
|
icon = "mdi:car-tire-alert";
|
|
|
|
};
|
|
|
|
}
|
|
|
|
{
|
|
|
|
sensor = {
|
|
|
|
name = "TPMS Pressure Rear Left";
|
|
|
|
object_id = "tesla_tpms_pressure_rl";
|
|
|
|
unique_id = "teslamate_1_tpms_pressure_rl";
|
|
|
|
device = {
|
|
|
|
identifiers = [ "teslamate_car_1" ];
|
|
|
|
configuration_url = teslamateURL;
|
|
|
|
manufacturer = "Tesla";
|
|
|
|
model = teslaModel;
|
|
|
|
};
|
|
|
|
state_topic = "teslamate/cars/1/tpms_pressure_rl";
|
|
|
|
unit_of_measurement = "bar";
|
|
|
|
icon = "mdi:car-tire-alert";
|
|
|
|
};
|
|
|
|
}
|
|
|
|
{
|
|
|
|
sensor = {
|
|
|
|
name = "TPMS Pressure Rear Right";
|
|
|
|
object_id = "tesla_tpms_pressure_rr";
|
|
|
|
unique_id = "teslamate_1_tpms_pressure_rr";
|
|
|
|
device = {
|
|
|
|
identifiers = [ "teslamate_car_1" ];
|
|
|
|
configuration_url = teslamateURL;
|
|
|
|
manufacturer = "Tesla";
|
|
|
|
model = teslaModel;
|
|
|
|
};
|
|
|
|
state_topic = "teslamate/cars/1/tpms_pressure_rr";
|
|
|
|
unit_of_measurement = "bar";
|
|
|
|
icon = "mdi:car-tire-alert";
|
|
|
|
};
|
|
|
|
}
|
|
|
|
{
|
|
|
|
sensor = {
|
|
|
|
name = "Active route destination";
|
|
|
|
object_id = "tesla_active_route_destination";
|
|
|
|
unique_id = "teslamate_1_active_route_destination";
|
|
|
|
availability = [{
|
|
|
|
topic = "teslamate/cars/1/active_route";
|
|
|
|
value_template = "{{ 'offline' if value_json.error else 'online' }}";
|
|
|
|
}];
|
|
|
|
device = {
|
|
|
|
identifiers = [ "teslamate_car_1" ];
|
|
|
|
configuration_url = teslamateURL;
|
|
|
|
manufacturer = "Tesla";
|
|
|
|
model = teslaModel;
|
|
|
|
};
|
|
|
|
state_topic = "teslamate/cars/1/active_route";
|
|
|
|
value_template = "{% if not value_json.error and value_json.destination %}\n {{ value_json.destination }}\n{% endif %}\n";
|
|
|
|
icon = "mdi:map-marker";
|
|
|
|
};
|
|
|
|
}
|
|
|
|
{
|
|
|
|
sensor = {
|
|
|
|
name = "Active route energy at arrival";
|
|
|
|
object_id = "tesla_active_route_energy_at_arrival";
|
|
|
|
unique_id = "teslamate_1_active_route_energy_at_arrival";
|
|
|
|
availability = [{
|
|
|
|
topic = "teslamate/cars/1/active_route";
|
|
|
|
value_template = "{{ 'offline' if value_json.error else 'online' }}";
|
|
|
|
}];
|
|
|
|
device = {
|
|
|
|
identifiers = [ "teslamate_car_1" ];
|
|
|
|
configuration_url = teslamateURL;
|
|
|
|
manufacturer = "Tesla";
|
|
|
|
model = teslaModel;
|
|
|
|
};
|
|
|
|
state_topic = "teslamate/cars/1/active_route";
|
|
|
|
value_template = "{% if not value_json.error and value_json.energy_at_arrival %}\n {{ value_json.energy_at_arrival }}\n{% endif %}\n";
|
|
|
|
unit_of_measurement = "%";
|
|
|
|
icon = "mdi:battery-80";
|
|
|
|
};
|
|
|
|
}
|
|
|
|
{
|
|
|
|
sensor = {
|
|
|
|
name = "Active route distance to arrival (mi)";
|
|
|
|
object_id = "tesla_active_route_distance_to_arrival_mi";
|
|
|
|
unique_id = "teslamate_1_active_route_distance_to_arrival_mi";
|
|
|
|
availability = [{
|
|
|
|
topic = "teslamate/cars/1/active_route";
|
|
|
|
value_template = "{{ 'offline' if value_json.error else 'online' }}";
|
|
|
|
}];
|
|
|
|
device = {
|
|
|
|
identifiers = [ "teslamate_car_1" ];
|
|
|
|
configuration_url = teslamateURL;
|
|
|
|
manufacturer = "Tesla";
|
|
|
|
model = teslaModel;
|
|
|
|
};
|
|
|
|
state_topic = "teslamate/cars/1/active_route";
|
|
|
|
value_template = "{% if not value_json.error and value_json.miles_to_arrival %}\n {{ value_json.miles_to_arrival }}\n{% endif %}\n";
|
|
|
|
unit_of_measurement = "mi";
|
|
|
|
icon = "mdi:map-marker-distance";
|
|
|
|
};
|
|
|
|
}
|
|
|
|
{
|
|
|
|
sensor = {
|
|
|
|
name = "Active route minutes to arrival";
|
|
|
|
object_id = "tesla_active_route_minutes_to_arrival";
|
|
|
|
unique_id = "teslamate_1_active_route_minutes_to_arrival";
|
|
|
|
availability = [{
|
|
|
|
topic = "teslamate/cars/1/active_route";
|
|
|
|
value_template = "{{ 'offline' if value_json.error else 'online' }}";
|
|
|
|
}];
|
|
|
|
device = {
|
|
|
|
identifiers = [ "teslamate_car_1" ];
|
|
|
|
configuration_url = teslamateURL;
|
|
|
|
manufacturer = "Tesla";
|
|
|
|
model = teslaModel;
|
|
|
|
};
|
|
|
|
state_topic = "teslamate/cars/1/active_route";
|
|
|
|
value_template = "{% if not value_json.error and value_json.minutes_to_arrival %}\n {{ value_json.minutes_to_arrival }}\n{% endif %}\n";
|
|
|
|
unit_of_measurement = "min";
|
|
|
|
icon = "mdi:clock-outline";
|
|
|
|
};
|
|
|
|
}
|
|
|
|
{
|
|
|
|
sensor = {
|
|
|
|
name = "Active route traffic minutes delay";
|
|
|
|
object_id = "tesla_active_route_traffic_minutes_delay";
|
|
|
|
unique_id = "teslamate_1_active_route_traffic_minutes_delay";
|
|
|
|
availability = [{
|
|
|
|
topic = "teslamate/cars/1/active_route";
|
|
|
|
value_template = "{{ 'offline' if value_json.error else 'online' }}";
|
|
|
|
}];
|
|
|
|
device = {
|
|
|
|
identifiers = [ "teslamate_car_1" ];
|
|
|
|
configuration_url = teslamateURL;
|
|
|
|
manufacturer = "Tesla";
|
|
|
|
model = teslaModel;
|
|
|
|
};
|
|
|
|
state_topic = "teslamate/cars/1/active_route";
|
|
|
|
value_template = "{% if not value_json.error and value_json.traffic_minutes_delay %}\n {{ value_json.traffic_minutes_delay }}\n{% endif %}\n";
|
|
|
|
unit_of_measurement = "min";
|
|
|
|
icon = "mdi:clock-alert-outline";
|
|
|
|
};
|
|
|
|
}
|
|
|
|
{
|
|
|
|
binary_sensor = {
|
|
|
|
name = "Healthy";
|
|
|
|
object_id = "tesla_healthy";
|
|
|
|
unique_id = "teslamate_1_healthy";
|
|
|
|
device = {
|
|
|
|
identifiers = [ "teslamate_car_1" ];
|
|
|
|
configuration_url = teslamateURL;
|
|
|
|
manufacturer = "Tesla";
|
|
|
|
model = teslaModel;
|
|
|
|
};
|
|
|
|
state_topic = "teslamate/cars/1/healthy";
|
|
|
|
payload_on = "true";
|
|
|
|
payload_off = "false";
|
|
|
|
icon = "mdi:heart-pulse";
|
|
|
|
};
|
|
|
|
}
|
|
|
|
{
|
|
|
|
binary_sensor = {
|
|
|
|
name = "Update Available";
|
|
|
|
object_id = "tesla_update_available";
|
|
|
|
unique_id = "teslamate_1_update_available";
|
|
|
|
device = {
|
|
|
|
identifiers = [ "teslamate_car_1" ];
|
|
|
|
configuration_url = teslamateURL;
|
|
|
|
manufacturer = "Tesla";
|
|
|
|
model = teslaModel;
|
|
|
|
};
|
|
|
|
state_topic = "teslamate/cars/1/update_available";
|
|
|
|
payload_on = "true";
|
|
|
|
payload_off = "false";
|
|
|
|
icon = "mdi:alarm";
|
|
|
|
};
|
|
|
|
}
|
|
|
|
{
|
|
|
|
binary_sensor = {
|
|
|
|
name = "Locked";
|
|
|
|
object_id = "tesla_locked";
|
|
|
|
unique_id = "teslamate_1_locked";
|
|
|
|
device = {
|
|
|
|
identifiers = [ "teslamate_car_1" ];
|
|
|
|
configuration_url = teslamateURL;
|
|
|
|
manufacturer = "Tesla";
|
|
|
|
model = teslaModel;
|
|
|
|
};
|
|
|
|
device_class = "lock";
|
|
|
|
state_topic = "teslamate/cars/1/locked";
|
|
|
|
payload_on = "false";
|
|
|
|
payload_off = "true";
|
|
|
|
};
|
|
|
|
}
|
|
|
|
{
|
|
|
|
binary_sensor = {
|
|
|
|
name = "Sentry Mode";
|
|
|
|
object_id = "tesla_sentry_mode";
|
|
|
|
unique_id = "teslamate_1_sentry_mode";
|
|
|
|
device = {
|
|
|
|
identifiers = [ "teslamate_car_1" ];
|
|
|
|
configuration_url = teslamateURL;
|
|
|
|
manufacturer = "Tesla";
|
|
|
|
model = teslaModel;
|
|
|
|
};
|
|
|
|
state_topic = "teslamate/cars/1/sentry_mode";
|
|
|
|
payload_on = "true";
|
|
|
|
payload_off = "false";
|
|
|
|
icon = "mdi:cctv";
|
|
|
|
};
|
|
|
|
}
|
|
|
|
{
|
|
|
|
binary_sensor = {
|
|
|
|
name = "Windows Open";
|
|
|
|
object_id = "tesla_windows_open";
|
|
|
|
unique_id = "teslamate_1_windows_open";
|
|
|
|
device = {
|
|
|
|
identifiers = [ "teslamate_car_1" ];
|
|
|
|
configuration_url = teslamateURL;
|
|
|
|
manufacturer = "Tesla";
|
|
|
|
model = teslaModel;
|
|
|
|
};
|
|
|
|
device_class = "window";
|
|
|
|
state_topic = "teslamate/cars/1/windows_open";
|
|
|
|
payload_on = "true";
|
|
|
|
payload_off = "false";
|
|
|
|
icon = "mdi:car-door";
|
|
|
|
};
|
|
|
|
}
|
|
|
|
{
|
|
|
|
binary_sensor = {
|
|
|
|
name = "Doors Open";
|
|
|
|
object_id = "tesla_doors_open";
|
|
|
|
unique_id = "teslamate_1_doors_open";
|
|
|
|
device = {
|
|
|
|
identifiers = [ "teslamate_car_1" ];
|
|
|
|
configuration_url = teslamateURL;
|
|
|
|
manufacturer = "Tesla";
|
|
|
|
model = teslaModel;
|
|
|
|
};
|
|
|
|
device_class = "door";
|
|
|
|
state_topic = "teslamate/cars/1/doors_open";
|
|
|
|
payload_on = "true";
|
|
|
|
payload_off = "false";
|
|
|
|
icon = "mdi:car-door";
|
|
|
|
};
|
|
|
|
}
|
|
|
|
{
|
|
|
|
binary_sensor = {
|
|
|
|
name = "Trunk Open";
|
|
|
|
object_id = "tesla_trunk_open";
|
|
|
|
unique_id = "teslamate_1_trunk_open";
|
|
|
|
device = {
|
|
|
|
identifiers = [ "teslamate_car_1" ];
|
|
|
|
configuration_url = teslamateURL;
|
|
|
|
manufacturer = "Tesla";
|
|
|
|
model = teslaModel;
|
|
|
|
};
|
|
|
|
device_class = "opening";
|
|
|
|
state_topic = "teslamate/cars/1/trunk_open";
|
|
|
|
payload_on = "true";
|
|
|
|
payload_off = "false";
|
|
|
|
icon = "mdi:car-side";
|
|
|
|
};
|
|
|
|
}
|
|
|
|
{
|
|
|
|
binary_sensor = {
|
|
|
|
name = "Frunk Open";
|
|
|
|
object_id = "tesla_frunk_open";
|
|
|
|
unique_id = "teslamate_1_frunk_open";
|
|
|
|
device = {
|
|
|
|
identifiers = [ "teslamate_car_1" ];
|
|
|
|
configuration_url = teslamateURL;
|
|
|
|
manufacturer = "Tesla";
|
|
|
|
model = teslaModel;
|
|
|
|
};
|
|
|
|
device_class = "opening";
|
|
|
|
state_topic = "teslamate/cars/1/frunk_open";
|
|
|
|
payload_on = "true";
|
|
|
|
payload_off = "false";
|
|
|
|
icon = "mdi:car-side";
|
|
|
|
};
|
|
|
|
}
|
|
|
|
{
|
|
|
|
binary_sensor = {
|
|
|
|
name = "Is User Present";
|
|
|
|
object_id = "tesla_is_user_present";
|
|
|
|
unique_id = "teslamate_1_is_user_present";
|
|
|
|
device = {
|
|
|
|
identifiers = [ "teslamate_car_1" ];
|
|
|
|
configuration_url = teslamateURL;
|
|
|
|
manufacturer = "Tesla";
|
|
|
|
model = teslaModel;
|
|
|
|
};
|
|
|
|
device_class = "presence";
|
|
|
|
state_topic = "teslamate/cars/1/is_user_present";
|
|
|
|
payload_on = "true";
|
|
|
|
payload_off = "false";
|
|
|
|
icon = "mdi:human-greeting";
|
|
|
|
};
|
|
|
|
}
|
|
|
|
{
|
|
|
|
binary_sensor = {
|
|
|
|
name = "Is Climate On";
|
|
|
|
object_id = "tesla_is_climate_on";
|
|
|
|
unique_id = "teslamate_1_is_climate_on";
|
|
|
|
device = {
|
|
|
|
identifiers = [ "teslamate_car_1" ];
|
|
|
|
configuration_url = teslamateURL;
|
|
|
|
manufacturer = "Tesla";
|
|
|
|
model = teslaModel;
|
|
|
|
};
|
|
|
|
state_topic = "teslamate/cars/1/is_climate_on";
|
|
|
|
payload_on = "true";
|
|
|
|
payload_off = "false";
|
|
|
|
icon = "mdi:fan";
|
|
|
|
};
|
|
|
|
}
|
|
|
|
{
|
|
|
|
binary_sensor = {
|
|
|
|
name = "Is Preconditioning";
|
|
|
|
object_id = "tesla_is_preconditioning";
|
|
|
|
unique_id = "teslamate_1_is_preconditioning";
|
|
|
|
device = {
|
|
|
|
identifiers = [ "teslamate_car_1" ];
|
|
|
|
configuration_url = teslamateURL;
|
|
|
|
manufacturer = "Tesla";
|
|
|
|
model = teslaModel;
|
|
|
|
};
|
|
|
|
state_topic = "teslamate/cars/1/is_preconditioning";
|
|
|
|
payload_on = "true";
|
|
|
|
payload_off = "false";
|
|
|
|
icon = "mdi:fan";
|
|
|
|
};
|
|
|
|
}
|
|
|
|
{
|
|
|
|
binary_sensor = {
|
|
|
|
name = "Plugged In";
|
|
|
|
object_id = "tesla_plugged_in";
|
|
|
|
unique_id = "teslamate_1_plugged_in";
|
|
|
|
device = {
|
|
|
|
identifiers = [ "teslamate_car_1" ];
|
|
|
|
configuration_url = teslamateURL;
|
|
|
|
manufacturer = "Tesla";
|
|
|
|
model = teslaModel;
|
|
|
|
};
|
|
|
|
device_class = "plug";
|
|
|
|
state_topic = "teslamate/cars/1/plugged_in";
|
|
|
|
payload_on = "true";
|
|
|
|
payload_off = "false";
|
|
|
|
icon = "mdi:ev-station";
|
|
|
|
};
|
|
|
|
}
|
|
|
|
{
|
|
|
|
binary_sensor = {
|
|
|
|
name = "Charge Port Door OPEN";
|
|
|
|
object_id = "tesla_charge_port_door_open";
|
|
|
|
unique_id = "teslamate_1_charge_port_door_open";
|
|
|
|
device = {
|
|
|
|
identifiers = [ "teslamate_car_1" ];
|
|
|
|
configuration_url = teslamateURL;
|
|
|
|
manufacturer = "Tesla";
|
|
|
|
model = teslaModel;
|
|
|
|
};
|
|
|
|
device_class = "opening";
|
|
|
|
state_topic = "teslamate/cars/1/charge_port_door_open";
|
|
|
|
payload_on = "true";
|
|
|
|
payload_off = "false";
|
|
|
|
icon = "mdi:ev-plug-tesla";
|
|
|
|
};
|
|
|
|
}
|
|
|
|
];
|
2024-12-09 10:35:38 +00:00
|
|
|
};
|
|
|
|
extraComponents = [
|
|
|
|
"otbr"
|
|
|
|
"litterrobot"
|
|
|
|
"apple_tv"
|
|
|
|
"homekit"
|
|
|
|
"homekit_controller"
|
|
|
|
"spotify"
|
|
|
|
"hue"
|
|
|
|
"sonos"
|
|
|
|
"tplink"
|
|
|
|
"ollama"
|
|
|
|
"wyoming"
|
|
|
|
"whisper"
|
|
|
|
"piper"
|
|
|
|
"isal"
|
|
|
|
"radarr"
|
|
|
|
"sonarr"
|
2024-12-09 14:17:06 +00:00
|
|
|
"mqtt"
|
|
|
|
"mqtt_eventstream"
|
|
|
|
"mqtt_json"
|
|
|
|
"mqtt_room"
|
|
|
|
"mqtt_statestream"
|
2024-12-10 21:37:02 +00:00
|
|
|
"github"
|
|
|
|
"webostv"
|
2024-12-16 10:29:40 +00:00
|
|
|
"reolink"
|
|
|
|
"onvif"
|
2024-12-09 10:35:38 +00:00
|
|
|
];
|
2024-12-27 22:31:41 +00:00
|
|
|
# extraPackages = python3Packages: with python3Packages; [
|
|
|
|
# pkgs.openai-whisper
|
|
|
|
# openai-whisper
|
|
|
|
# pkgs.piper-tts
|
|
|
|
# pkgs.wyoming-piper
|
|
|
|
# ];
|
2024-12-09 10:35:38 +00:00
|
|
|
};
|
|
|
|
|
2024-12-09 14:17:06 +00:00
|
|
|
services.mosquitto = {
|
|
|
|
enable = true;
|
|
|
|
listeners = [
|
|
|
|
{
|
2024-12-09 17:05:06 +00:00
|
|
|
address = "127.0.0.1";
|
2024-12-09 14:17:06 +00:00
|
|
|
acl = [ "pattern readwrite #" ];
|
|
|
|
omitPasswordAuth = true;
|
|
|
|
settings.allow_anonymous = true;
|
|
|
|
}
|
|
|
|
];
|
|
|
|
};
|
|
|
|
|
2024-12-09 10:35:38 +00:00
|
|
|
architect.vhost.${domain} = with config.architect.networks; {
|
|
|
|
dnsInterfaces = [ "tailscale" "lan" ];
|
|
|
|
|
|
|
|
locations."/" = {
|
|
|
|
port = config.services.home-assistant.config.http.server_port;
|
2024-12-20 12:45:50 +00:00
|
|
|
allowWAN = true;
|
2024-12-09 10:35:38 +00:00
|
|
|
allowLan = true;
|
|
|
|
proxyWebsockets = true;
|
|
|
|
allow = [
|
|
|
|
tailscale.net
|
|
|
|
];
|
|
|
|
};
|
|
|
|
};
|
|
|
|
}
|