diff --git a/hosts/architect/homeassistant.nix b/hosts/architect/homeassistant.nix index 620996c..f68c6ca 100644 --- a/hosts/architect/homeassistant.nix +++ b/hosts/architect/homeassistant.nix @@ -2,9 +2,6 @@ let domain = "home.giugl.io"; - teslamateURL = "https://tesla.giugl.io"; - teslaModel = "Model 3 Long Range"; - teslaName = "Lady Giovanna"; piperPort = 10200; whisperPort = 10300; in @@ -45,1047 +42,16 @@ in trusted_proxies = [ "127.0.0.1" ]; }; homeassistant = { - name = "Underwood House"; + name = "Brigettine Square"; + latitude = 52.1958; + longitude = 0.180746; 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" @@ -1112,13 +78,12 @@ in "webostv" "reolink" "onvif" + "xiaomi_miio" + ]; + + extraPackages = python3Packages: with pkgs.unstablePkgs.python3Packages; [ + pyporscheconnectapi ]; - # extraPackages = python3Packages: with python3Packages; [ - # pkgs.openai-whisper - # openai-whisper - # pkgs.piper-tts - # pkgs.wyoming-piper - # ]; }; services.mosquitto = {