nixos/hosts/architect/homeassistant.nix

1150 lines
40 KiB
Nix
Raw Permalink Normal View History

{ config, pkgs, ... }:
let
domain = "home.giugl.io";
teslamateURL = "https://tesla.giugl.io";
teslaModel = "Model 3 Long Range";
teslaName = "Lady Giovanna";
piperPort = 10200;
whisperPort = 10300;
in
{
services.go2rtc = {
enable = true;
settings.api.listen = "127.0.0.1:1984";
};
# 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;
# };
# };
# };
services.home-assistant = {
enable = true;
package = pkgs.unstablePkgs.home-assistant;
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 = { };
automation = "!include automations.yaml";
frontend.themes = "!include_dir_merge_named themes";
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";
};
}
];
};
extraComponents = [
"otbr"
"litterrobot"
"apple_tv"
"homekit"
"homekit_controller"
"spotify"
"hue"
"sonos"
"tplink"
"ollama"
"wyoming"
"whisper"
"piper"
"isal"
"radarr"
"sonarr"
"mqtt"
"mqtt_eventstream"
"mqtt_json"
"mqtt_room"
"mqtt_statestream"
"github"
"webostv"
"reolink"
"onvif"
];
# extraPackages = python3Packages: with python3Packages; [
# pkgs.openai-whisper
# openai-whisper
# pkgs.piper-tts
# pkgs.wyoming-piper
# ];
};
services.mosquitto = {
enable = true;
listeners = [
{
address = "127.0.0.1";
acl = [ "pattern readwrite #" ];
omitPasswordAuth = true;
settings.allow_anonymous = true;
}
];
};
architect.vhost.${domain} = with config.architect.networks; {
dnsInterfaces = [ "tailscale" "lan" ];
locations."/" = {
port = config.services.home-assistant.config.http.server_port;
allowWAN = true;
allowLan = true;
proxyWebsockets = true;
allow = [
tailscale.net
];
};
};
}