An cloud-push alternative to existing FordPass Integration

currently accessing the charge history is not planed to be implemented… [at least not in 2025]

well I was wrong - just implemented a ‘last charging session’ Sensor… See details here : Release Another day - another enhancement for EV's (all years) · marq24/ha-fordpass · GitHub

1 Like

Thank you so much. That’s just what I was looking for!

Hey Matthias, absolutely love this integration and thank you for putting the work in to make it happen! I’m getting disconnected roughly every 24 hours and requiring re-authentication. Any chance you might have an idea what could be causing this? When the authentication key is valid the integration works beautifully! My wife loves having a warm car in the morning :slight_smile:

to be honest - I am clueless what could cause the re-auth…

In the latest release 2026.1.4 I have included additional debugging log, that would help me (or you the users) to find a possible root cause… [I guess this is mainly cause of instable internet connection / firewall stuff] - but I don’t know…

So please if you want, you can enable the debug log and then provide me the details as it’s described in the main readme.TIA

2026-01-30 12:40:26.961 WARNING (MainThread) [custom_components.fordpass.fordpass_bridge] [Escape] _read_token_from_storage: 'ValueError' invalidate TOKEN FILE -> mark_re_auth_required()
2026-01-30 12:40:26.961 DEBUG (MainThread) [custom_components.fordpass.fordpass_bridge] [Escape] _read_token_from_storage: 'JSONDecodeError' details -> Extra data: line 1 column 3791 (char 3790) - file location /config/.storage/fordpass/<REDACTED_EMAIL>@[email protected]
2026-01-30 12:40:26.963 INFO (MainThread) [custom_components.fordpass.fordpass_bridge] [Escape] mark_re_auth_required() called
This is not an error/issue - it will just help me (marq24, the integration developer) to understand the method sequence - Please do not report this occurrence itself as issue - TIA - so here is the stack trace:
  File "<frozen runpy>", line 198, in _run_module_as_main
  File "<frozen runpy>", line 88, in _run_code
  File "/usr/src/homeassistant/homeassistant/__main__.py", line 223, in <module>
    sys.exit(main())
  File "/usr/src/homeassistant/homeassistant/__main__.py", line 209, in main
    exit_code = runner.run(runtime_conf)
  File "/usr/src/homeassistant/homeassistant/runner.py", line 154, in run
    return loop.run_until_complete(setup_and_run_hass(runtime_config))
  File "/usr/local/lib/python3.13/asyncio/base_events.py", line 706, in run_until_complete
    self.run_forever()
  File "/usr/local/lib/python3.13/asyncio/base_events.py", line 677, in run_forever
    self._run_once()
  File "/usr/local/lib/python3.13/asyncio/base_events.py", line 2034, in _run_once
    handle._run()
  File "/usr/local/lib/python3.13/asyncio/events.py", line 89, in _run
    self._context.run(self._callback, *self._args)
  File "/config/custom_components/fordpass/fordpass_bridge.py", line 933, in ws_connect
    await self.ws_check_for_message_update_required()
  File "/config/custom_components/fordpass/fordpass_bridge.py", line 1203, in ws_check_for_message_update_required
    msg_data = await self.req_messages()
  File "/config/custom_components/fordpass/fordpass_bridge.py", line 1599, in req_messages
    await self.__ensure_valid_tokens()
  File "/config/custom_components/fordpass/fordpass_bridge.py", line 422, in __ensure_valid_tokens
    prev_token_data = await self._read_token_from_storage()
  File "/config/custom_components/fordpass/fordpass_bridge.py", line 776, in _read_token_from_storage
    self.mark_re_auth_required()
2026-01-30 12:40:26.963 INFO (MainThread) [custom_components.fordpass.fordpass_bridge] [Escape] __ensure_valid_tokens: Tokens are INVALID!!! - mark_re_auth_required() should have occurred?

I think of note, we have 2 vehicles in our driveway. an f150 and an escape so there are 2 VINs that are being validated.

This is not an error/issue - it will just help me (marq24, the integration developer) to understand the method sequence - Please do not report this occurrence itself as issue - TIA

I noticed the latest package in hacs addresses an issue in 2026.2 - is it fully running in 2026.1 (it upgrade the integration, then Ha, or should we do the inverse, upgrade, then upgrade the package.

Also a question on the integration itself
I’m working on setting up a whack of template sensors to track charging status, and one thing I’m hoping to do is to split AC (home garage) from “on the go ac” and dc fast charging
I’m thinking the chargerType attribute in combination with location could work, but is there a list of possible values for this?

Thinking like:

name: “Mach-E Last Session Charger Type”
state: “{{ state_attr(‘sensor.fordpass_vin_energytransferlogentry’, ‘chargerType’) }}”

first update the integration - then update HA

1 Like

You might can find it here? https://api.vehicle.ford.com/docs/v1/api-catalog/apis/fordconnect-query/specification

well here you go:

"enum": [
  "UNKNOWN",
  "AC_BASIC",
  "AC_SMART",
  "DC_FAST",
  "WIRELESS",
  "UNRECOGNIZED"
]
1 Like

Thanks so much! Hoping to work out some nice stats and sensors that I can share here and on your GitHub to track stats about the vehicle. going to try to dump trip data and charging data for now to a database for parsing

I lost a bunch of sensors after upgrading HA this morning. Most of these I don’t care about but the tire pressure was useful.

Sensors

Acceleration				-0.540
Accelerator Pedal Position	Unavailable
Alarm Status				DISARMED
Battery (12V)				57.0%
Belt Status					UNBUCKLED
Brake Torque				Unavailable
EV Last Charging Session	Unavailable
Fuel						27%
GPS JSON					{redacted}
Odometer					50,072.00 km
Oil Life					100.0%
Revolution					Unavailable
Sleep Mode					Unavailable
Speed						0.00 m/s
State Locks					LOCKED
State of Charge				0.0%
Status Brake Pedal			Unavailable
Status Door					Unavailable
Status Ignition				Unavailable
Status Parking Brake		Unavailable
Status Wheel Torque			Unavailable
Temperature Coolant			Unavailable
Temperature Outdoors		Unavailable
Tire Pressure				Unavailable
Torque at Transmission		Unavailable
Window Position				Unavailable
Yaw Rate					Unavailable

Any ideas how to get them back?

Update to the latest version of the integration

It says I’m up to date and the update button is greyed out.

edit - looks like its stuck on 2026.1.6. How can I “un-stick” it? Now I see that the latest version is 2026-2-3, but HACS is reporting the latest version as 2026-1-6 and won’t let me update.

I guess you fixed HACS because the update became available. Thanks for the quick turnaround! :+1:

Also, everything works. :+1:

Hi. I made a dashboard with useful information that is almost a simple drop in place kind of deal. If this is the wrong place to post this, then just let me know and I’ll delete it and repost it somewhere else.

Here is the dashboard viewed on mobile.

The reason its almost drop in place is that I’m using a variable to plug the VIN in using a trick I sorted out on AI. An example:

{{ states('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_doorlock') }}

The trick is to create an input_text helper and calling it “Ford VIN” (input_text.ford_vin) and putting the VIN into the text box. This allows the dashboard to repeatedly call the VIN for use without having to type/find/replace anything. It also makes updates a lot easier too.

The other requirement is the Mushroom cards from HACS.

Instructions:

  1. Create input_text.ford_vin helper and input your VIN
  2. Install Mushroom if you don’t already have it
  3. Create a new dashboard, go to edit in YAML, delete everything and paste in the code below.
views:
  - title: FordPass
    type: sections
    max_columns: 4
    sections:
      - type: grid
        cards:
          - type: heading
            heading_style: title
            heading: Trouble Indicators
            icon: mdi:alert-outline
          - type: markdown
            content: >
              {%- set sensor ='sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_indicators' -%} {%- set faults = [] -%}
              {%- if state_attr(sensor, 'adaptivecruisecontrol_600E14') == true -%}{%- set faults = faults + ['Adaptive Cruise Control'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'airfilterminder_600E02') == true -%}{%- set faults = faults + ['Air Filter Minder'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'airsuspensionridecontrolfault_600E22') == true -%}{%- set faults = faults + ['Air Suspension Control Fault'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'allwheeldrivedisabled_600E03') == true -%}{%- set faults = faults + ['All-Wheel Drive Disabled'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'antitheft_600E21') == true -%}{%- set faults = faults + ['Antitheft Device'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'antilockbrake_600E29') == true -%}{%- set faults = faults + ['Antilock Brakes'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'blindspotdetection_600F30') == true -%}{%- set faults = faults + ['Blind Spot Detection System'] -%}{%- endif -%}
              {%- if state_attr(sensor, 'brakewarning_600E28') == true -%}{%- set faults = faults + ['Brake Warning'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'chargesystemfault_600E25') == true -%}{%- set faults = faults + ['Charge System Fault'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'checkfuelcap_600E13') == true -%}{%- set faults = faults + ['Check Fuel Cap'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'checkfuelfillinlet_600E12') == true -%}{%- set faults = faults + ['Check Fuel Inlet'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'dieselengineidleshutdown_600E05') == true -%}{%- set faults = faults + ['Diesel Engine Idle Shutdown'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'dieselenginewarning_600E06') == true -%}{%- set faults = faults + ['Diesel Engine Warning'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'dieselexhaustfluidlow_600F27') == true -%}{%- set faults = faults + ['Diesel Exhaust Fluid Low'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'dieselexhaustfluidsystemfault_600F26') == true -%}{%- set faults = faults + ['Diesel Exhaust Fluid System'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'dieselexhaustovertemp_600E08') == true -%}{%- set faults = faults + ['Diesel Exhaust Over Temperature'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'dieselparticulatefilter_600E07') == true -%}{%- set faults = faults + ['Diesel Particulate Filter'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'dieselpreheat_600E09') == true -%}{%- set faults = faults + ['Diesel Pre-Heat'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'electrictrailerbrakeconnection_600E18') == true -%}{%- set faults = faults + ['Electric Trailer Brake Connection'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'electronicparkingbrakewarning_600F15') == true -%}{%- set faults = faults + ['Electronic Parking Brake Warning'] -%}{%- endif -%}
              {%- if state_attr(sensor, 'enginecoolantovertemp_600E16') == true -%}{%- set faults = faults + ['Engine Coolant Over Temperature'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'fastenseatbeltwarning_600E31') == true -%}{%- set faults = faults + ['Fasten Seat Belt Warning'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'forwardcollisionwarning_600E00') == true -%}{%- set faults = faults + ['Forward Collision Warning System'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'fueldooropen_600E11') == true -%}{%- set faults = faults + ['Fuel Door Open'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'gasparticulatefilterwarning_600F18') == true -%}{%- set faults = faults + ['Gas Particulate Filter Warning'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'genericabsfaultwarning_600F17') == true -%}{%- set faults = faults + ['Generic ABS Failure Warning'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'hevhazard_600F19') == true -%}{%- set faults = faults + ['HEV Hazard'] -%}{%- endif -%}
              {%- if state_attr(sensor, 'hilldescentcontrolfault_600F25') == true -%}{%- set faults = faults + ['Hill Descent Control System'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'hillstartassistwarning_600F22') == true -%}{%- set faults = faults + ['Hill Start Assist Warning'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'lanekeepingaid_600F24') == true -%}{%- set faults = faults + ['Lane Keeping Aid'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'lightingsystemfailure_600F21') == true -%}{%- set faults = faults + ['Lighting System Failure'] -%}{%- endif -%}
              {%- if state_attr(sensor, 'lowbrakefluid_600F16') == true -%}{%- set faults = faults + ['Low Brake Fluid'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'lowengineoilpressure_600E17') == true -%}{%- set faults = faults + ['Low Engine Oil Pressure'] -%}{%- endif -%}
              {%- if state_attr(sensor, 'lowfuel_600E20') == true -%}{%- set faults = faults + ['Low Fuel'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'lowwasherfluid_600E19') == true -%}{%- set faults = faults + ['Low Washer Fluid'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'malfunctionindicator_600E26') == true -%}{%- set faults = faults + ['Malfunction Indicator'] -%}{%- endif -%}
              {%- if state_attr(sensor, 'parkaidmalfunction_600E01') == true -%}{%- set faults = faults + ['Paring Aid Malfunction'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'passiveentrypassivestart_600E04') == true -%}{%- set faults = faults + ['Passive Entry Passive Start'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'powertrainmalfunction_600E15') == true -%}{%- set faults = faults + ['Powertrain Malfunction'] -%}{%- endif -%}
              {%- if state_attr(sensor, 'restraintsindicatorwarning_600E30') == true -%}{%- set faults = faults + ['Restraint Indicator Warning']-%}{%- endif -%} 
              {%- if state_attr(sensor, 'servicesteering_600F29') == true -%}{%- set faults = faults + ['Service Steering'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'startstopenginewarning_600F20') == true -%}{%- set faults = faults + ['Start-Stop Engine Warning'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'tractioncontroldisabled_600E23') == true -%}{%- set faults = faults + ['Traction Control Disabled'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'tractioncontrolevent_600E24') == true -%}{%- set faults = faults + ['Traction Control Event'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'tirepressuremonistersystemwarning_600E27') == true -%}{%- set faults = faults + ['Tire Pressure Monitoring System'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'waterinfuel_600E10') == true -%}{%- set faults = faults + ['Water In Fuel'] -%}{%- endif -%}
              {% if faults | length > 0 %}
                {% for fault in faults %}
              * <font color="red">**FAULT**</font> - {{ fault }}
                {% endfor %}
              {% else %}
                **No faults indicated at this time**
              {% endif %}
          - type: heading
            heading_style: title
            heading: Sensor Data
            icon: mdi:access-point
          - type: custom:mushroom-template-card
            primary: Doors Locked
            secondary: >-
              {{ states('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_doorlock') }}
            icon: mdi:car-door-lock
            color: >
              {{ 'green' if states('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_doorlock') == 'LOCKED' else 'red' }}
          - type: custom:mushroom-template-card
            primary: Parking Brake
            secondary: >-
              {{ states('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_parkingbrakestatus') }}
            icon: mdi:car-brake-parking
            color: >
              {{ 'green' if states('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_parkingbrakestatus') == 'ON' else 'red' }}
          - type: custom:mushroom-template-card
            primary: Battery Voltage
            secondary: >-
              {{ state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_battery', 'batteryVoltage') }} V
            icon: mdi:lightning-bolt-circle
            color: >
              {{ 'green' if state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_battery', 'batteryVoltage') > 12 else 'orange' }}
          - type: custom:mushroom-template-card
            primary: Battery Percentage
            secondary: >-
              {{ states('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_battery') }} %
            icon: mdi:car-battery
            color: >
              {%- if (states('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_battery') | int) > 70 -%}
                green
              {%- elif (states('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_battery') | int) <= 70 and (states('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_battery') | int) >= 30 -%}
                orange
              {%- else -%}
                red
              {%- endif -%}
          - type: custom:mushroom-template-card
            primary: Fuel Level
            secondary: >-
              {{ states('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_fuel') }}%
            icon: mdi:gas-station
            color: >
              {%- if (states('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_fuel') | int) > 50 -%}
                green
              {%- elif (states('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_fuel') | int) <= 50 and (states('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_fuel') | int) >= 10 -%}
                orange
              {%- else -%}
                red
              {%- endif -%}
          - type: custom:mushroom-template-card
            primary: Fuel Range
            secondary: >-
              {{ "{:,.0f}".format(state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_fuel', 'fuelRange') | int) }} {{ state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_odometer', 'unit_of_measurement') }}
            icon: mdi:flag-checkered
            color: >
              {%- if (states('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_fuel') | int) > 50 -%}
                green
              {%- elif (states('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_fuel') | int) <= 50 and (states('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_fuel') | int) >= 10 -%}
                orange
              {%- else -%}
                red
              {%- endif -%}
          - type: custom:mushroom-template-card
            primary: Odometer
            secondary: >-
              {{ "{:,.0f}".format(states('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_odometer') | int) }} {{ state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_odometer', 'unit_of_measurement') }}
            icon: mdi:counter
          - type: custom:mushroom-template-card
            primary: Oil Life
            secondary: >-
              {{ states('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_oil') }} %
            icon: mdi:oil
            color: >
              {%- if (states('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_oil') | int) > 50 -%}
                green
              {%- elif (states('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_oil') | int) <= 50 and (states('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_oil') | int) >= 10 -%}
                orange
              {%- else -%}
                red
              {%- endif -%}
      - type: grid
        cards:
          - type: heading
            heading: Tire Pressure
            heading_style: title
            icon: mdi:gauge
          - type: custom:mushroom-template-card
            primary: Front Left
            secondary: >
              {{ state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_tirepressure', 'frontLeft') }}
            icon: mdi:car-tire-alert
            color: >
              {{ 'green' if state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_tirepressure', 'frontLeft_state') == 'NORMAL' else 'red' }}
          - type: custom:mushroom-template-card
            primary: Front Right
            secondary: >
              {{ state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_tirepressure', 'frontRight') }}
            icon: mdi:car-tire-alert
            icon_color: >
              {{ 'green' if state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_tirepressure', 'frontRight_state') == 'NORMAL' else 'red' }}
          - type: custom:mushroom-template-card
            primary: Rear Left
            secondary: >
              {{ state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_tirepressure', 'rearLeft') }}
            icon: mdi:car-tire-alert
            icon_color: >
              {{ 'green' if state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_tirepressure', 'rearLeft_state') == 'NORMAL' else 'red' }}
          - type: custom:mushroom-template-card
            primary: Rear Right
            secondary: >
              {{ state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_tirepressure', 'rearRight') }}
            icon: mdi:car-tire-alert
            icon_color: >
              {{ 'green' if state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_tirepressure', 'rearRight_state') == 'NORMAL' else 'red' }}
          - type: heading
            heading: Door Status
            heading_style: title
            icon: mdi:car-door
          - type: custom:mushroom-template-card
            primary: Front Left
            secondary: >
              {{ state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_doorstatus', 'driverFront') }}
            icon: mdi:car-door
            color: >
              {{ 'green' if state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_doorstatus', 'driverFront') == 'CLOSED' else 'red' }}
          - type: custom:mushroom-template-card
            primary: Front Right
            secondary: >
              {{ state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_doorstatus', 'passengerFront') }}
            icon: mdi:car-door
            color: >
              {{ 'green' if state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_doorstatus', 'passengerFront') == 'CLOSED' else 'red' }}
          - type: custom:mushroom-template-card
            primary: Rear Left
            secondary: >
              {{ state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_doorstatus', 'rearLeft') }}
            icon: mdi:car-door
            color: >
              {{ 'green' if state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_doorstatus', 'rearLeft') == 'CLOSED' else 'red' }}
          - type: custom:mushroom-template-card
            primary: Rear Right
            secondary: >
              {{ state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_doorstatus', 'rearRight') }}
            icon: mdi:car-door
            color: >
              {{ 'green' if state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_doorstatus', 'rearRight') == 'CLOSED' else 'red' }}
          - type: custom:mushroom-template-card
            primary: Hood
            secondary: >
              {{ state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_doorstatus', 'hood') }}
            icon: mdi:car
            color: >
              {{ 'green' if state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_doorstatus', 'hood') == 'CLOSED' else 'red' }}
          - type: custom:mushroom-template-card
            primary: Tailgate
            secondary: >
              {{ state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_doorstatus', 'tailgate') }}
            icon: mdi:car-back
            color: >
              {{ 'green' if state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_doorstatus', 'tailgate') == 'CLOSED' else 'red' }}
          - type: heading
            heading: Window Status
            heading_style: title
            icon: mdi:car-door
          - type: custom:mushroom-template-card
            primary: Driver
            secondary: >
              {{ 'Open' if (state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_windowposition', 'driver').doubleRange.lowerBound != 0.0 or state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_windowposition', 'driver').doubleRange.lowerBound != 0.0) else 'Closed' }}
            icon: mdi:car-door
            icon_color: >
              {{ 'orange' if (state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_windowposition', 'driver').doubleRange.lowerBound != 0.0 or state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_windowposition', 'driver').doubleRange.lowerBound != 0.0) else 'green' }}
          - type: custom:mushroom-template-card
            primary: Passenger
            secondary: >
              {{ 'Open' if (state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_windowposition', 'passenger').doubleRange.lowerBound != 0.0 or state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_windowposition', 'passenger').doubleRange.lowerBound != 0.0) else 'Closed' }}
            icon: mdi:car-door
            icon_color: >
              {{ 'orange' if (state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_windowposition', 'passenger').doubleRange.lowerBound != 0.0 or state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_windowposition', 'passenger').doubleRange.lowerBound != 0.0) else 'green' }}
          - type: custom:mushroom-template-card
            primary: Rear Left
            secondary: >
              {{ 'Open' if (state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_windowposition', 'rearDriver').doubleRange.lowerBound != 0.0 or state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_windowposition', 'rearDriver').doubleRange.lowerBound != 0.0) else 'Closed' }}
            icon: mdi:car-door
            icon_color: >
              {{ 'orange' if (state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_windowposition', 'rearDriver').doubleRange.lowerBound != 0.0 or state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_windowposition', 'rearDriver').doubleRange.lowerBound != 0.0) else 'green' }}
          - type: custom:mushroom-template-card
            primary: Rear Right
            secondary: >
              {{ 'Open' if (state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_windowposition', 'rearPassenger').doubleRange.lowerBound != 0.0 or state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_windowposition', 'rearPassenger').doubleRange.lowerBound != 0.0) else 'Closed' }}
            icon: mdi:car-door
            icon_color: >
              {{ 'Orange' if (state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_windowposition', 'rearPassenger').doubleRange.lowerBound != 0.0 or state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_windowposition', 'rearPassenger').doubleRange.lowerBound != 0.0) else 'Green' }}
    cards: []
    header: {}

I hope this is useful. I think it is. Right now its geared toward gas cars because that’s what I have. Also, it only works with 1 car right now. I do plan to change the input_text.ford_vin to an array when I get a chance, which could allow any number of cars.

1 Like

Hey there!

Thanks for all the effort put into this.
I’m trying to add a Ford on what I think is a .PT Ford account.
As I don’t have that country option on the addon, I’ve just selected other european countries. But, when I get to the point to collect the token, the code appears on network tab, but it says canceled in front. So If I try to copy it to the integration it doesn’t works.

Am I doing anything wrong?

Thanks in advance,

Just found the issue.
Our accounts here in Portugal are linked to Ford.com

Small update - added lock entity and washer fluid level, as well as a header.

To make the lock work, go to line 73 and change entity: lock.fordpass_YOURVINHERE_doorlock to your vin. Or you can change it in the visual editor where it will show as unavailable until you replace it. It displays the state perfectly fine without doing anything, but if you fix the entity, you can click on it to take action on the lock (Lock/Unlock).

The washer fluid does not report a percentage or anything meaningful. Its simply the inverse of the lowwasherfluid_600E19 indicator. False = OK, True = low fluid level. If true, it will also appear in the indicators card.

Instructions as before:

  1. create input_text.ford_vin and input your VIN
  2. install Mushroom cards
  3. create a new dashboard, go to YAML, delete everything and paste in the below code.
    3a) if you already installed it, just delete the YAML and paste in the below.
views:
  - title: FordPass
    type: sections
    max_columns: 4
    sections:
      - type: grid
        cards:
          - type: heading
            heading_style: title
            heading: Trouble Indicators
            icon: mdi:alert-outline
          - type: markdown
            content: >
              {%- set sensor ='sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_indicators' -%} {%- set faults = [] -%}
              {%- if state_attr(sensor, 'adaptivecruisecontrol_600E14') == true -%}{%- set faults = faults + ['Adaptive Cruise Control'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'airfilterminder_600E02') == true -%}{%- set faults = faults + ['Air Filter Minder'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'airsuspensionridecontrolfault_600E22') == true -%}{%- set faults = faults + ['Air Suspension Control Fault'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'allwheeldrivedisabled_600E03') == true -%}{%- set faults = faults + ['All-Wheel Drive Disabled'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'antitheft_600E21') == true -%}{%- set faults = faults + ['Antitheft Device'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'antilockbrake_600E29') == true -%}{%- set faults = faults + ['Antilock Brakes'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'blindspotdetection_600F30') == true -%}{%- set faults = faults + ['Blind Spot Detection System'] -%}{%- endif -%}
              {%- if state_attr(sensor, 'brakewarning_600E28') == true -%}{%- set faults = faults + ['Brake Warning'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'chargesystemfault_600E25') == true -%}{%- set faults = faults + ['Charge System Fault'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'checkfuelcap_600E13') == true -%}{%- set faults = faults + ['Check Fuel Cap'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'checkfuelfillinlet_600E12') == true -%}{%- set faults = faults + ['Check Fuel Inlet'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'dieselengineidleshutdown_600E05') == true -%}{%- set faults = faults + ['Diesel Engine Idle Shutdown'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'dieselenginewarning_600E06') == true -%}{%- set faults = faults + ['Diesel Engine Warning'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'dieselexhaustfluidlow_600F27') == true -%}{%- set faults = faults + ['Diesel Exhaust Fluid Low'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'dieselexhaustfluidsystemfault_600F26') == true -%}{%- set faults = faults + ['Diesel Exhaust Fluid System'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'dieselexhaustovertemp_600E08') == true -%}{%- set faults = faults + ['Diesel Exhaust Over Temperature'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'dieselparticulatefilter_600E07') == true -%}{%- set faults = faults + ['Diesel Particulate Filter'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'dieselpreheat_600E09') == true -%}{%- set faults = faults + ['Diesel Pre-Heat'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'electrictrailerbrakeconnection_600E18') == true -%}{%- set faults = faults + ['Electric Trailer Brake Connection'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'electronicparkingbrakewarning_600F15') == true -%}{%- set faults = faults + ['Electronic Parking Brake Warning'] -%}{%- endif -%}
              {%- if state_attr(sensor, 'enginecoolantovertemp_600E16') == true -%}{%- set faults = faults + ['Engine Coolant Over Temperature'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'fastenseatbeltwarning_600E31') == true -%}{%- set faults = faults + ['Fasten Seat Belt Warning'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'forwardcollisionwarning_600E00') == true -%}{%- set faults = faults + ['Forward Collision Warning System'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'fueldooropen_600E11') == true -%}{%- set faults = faults + ['Fuel Door Open'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'gasparticulatefilterwarning_600F18') == true -%}{%- set faults = faults + ['Gas Particulate Filter Warning'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'genericabsfaultwarning_600F17') == true -%}{%- set faults = faults + ['Generic ABS Failure Warning'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'hevhazard_600F19') == true -%}{%- set faults = faults + ['HEV Hazard'] -%}{%- endif -%}
              {%- if state_attr(sensor, 'hilldescentcontrolfault_600F25') == true -%}{%- set faults = faults + ['Hill Descent Control System'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'hillstartassistwarning_600F22') == true -%}{%- set faults = faults + ['Hill Start Assist Warning'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'lanekeepingaid_600F24') == true -%}{%- set faults = faults + ['Lane Keeping Aid'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'lightingsystemfailure_600F21') == true -%}{%- set faults = faults + ['Lighting System Failure'] -%}{%- endif -%}
              {%- if state_attr(sensor, 'lowbrakefluid_600F16') == true -%}{%- set faults = faults + ['Low Brake Fluid'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'lowengineoilpressure_600E17') == true -%}{%- set faults = faults + ['Low Engine Oil Pressure'] -%}{%- endif -%}
              {%- if state_attr(sensor, 'lowfuel_600E20') == true -%}{%- set faults = faults + ['Low Fuel'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'lowwasherfluid_600E19') == true -%}{%- set faults = faults + ['Low Washer Fluid'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'malfunctionindicator_600E26') == true -%}{%- set faults = faults + ['Malfunction Indicator'] -%}{%- endif -%}
              {%- if state_attr(sensor, 'parkaidmalfunction_600E01') == true -%}{%- set faults = faults + ['Paring Aid Malfunction'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'passiveentrypassivestart_600E04') == true -%}{%- set faults = faults + ['Passive Entry Passive Start'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'powertrainmalfunction_600E15') == true -%}{%- set faults = faults + ['Powertrain Malfunction'] -%}{%- endif -%}
              {%- if state_attr(sensor, 'restraintsindicatorwarning_600E30') == true -%}{%- set faults = faults + ['Restraint Indicator Warning']-%}{%- endif -%} 
              {%- if state_attr(sensor, 'servicesteering_600F29') == true -%}{%- set faults = faults + ['Service Steering'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'startstopenginewarning_600F20') == true -%}{%- set faults = faults + ['Start-Stop Engine Warning'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'tractioncontroldisabled_600E23') == true -%}{%- set faults = faults + ['Traction Control Disabled'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'tractioncontrolevent_600E24') == true -%}{%- set faults = faults + ['Traction Control Event'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'tirepressuremonistersystemwarning_600E27') == true -%}{%- set faults = faults + ['Tire Pressure Monitoring System'] -%}{%- endif -%} 
              {%- if state_attr(sensor, 'waterinfuel_600E10') == true -%}{%- set faults = faults + ['Water In Fuel'] -%}{%- endif -%}
              {% if faults | length > 0 %}
                {% for fault in faults %}
              * <font color="red">**FAULT**</font> - {{ fault }}
                {% endfor %}
              {% else %}
                <font color="green">**OK**</font> &nbsp;&nbsp;&nbsp;&nbsp; No faults indicated at this time
              {% endif %}
          - type: heading
            heading_style: title
            heading: Sensor Data
            icon: mdi:access-point
          - type: custom:mushroom-template-card
            entity: lock.fordpass_YOURVINHERE_doorlock
            primary: Door Locks
            secondary: >-
              {{ states('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_doorlock') }}
            icon: mdi:car-door-lock
            color: >
              {{ 'green' if states('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_doorlock') == 'LOCKED' else 'red' }}
          - type: custom:mushroom-template-card
            primary: Parking Brake
            secondary: >-
              {{ states('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_parkingbrakestatus') }}
            icon: mdi:car-brake-parking
            color: >
              {{ 'green' if states('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_parkingbrakestatus') == 'ON' else 'red' }}
          - type: custom:mushroom-template-card
            primary: Fuel Level
            secondary: >-
              {{ states('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_fuel') }}%
            icon: mdi:gas-station
            color: >
              {%- if (states('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_fuel') | int) > 50 -%}
                green
              {%- elif (states('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_fuel') | int) <= 50 and (states('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_fuel') | int) >= 10 -%}
                orange
              {%- else -%}
                red
              {%- endif -%}
          - type: custom:mushroom-template-card
            primary: Fuel Range
            secondary: >-
              {{ "{:,.0f}".format(state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_fuel', 'fuelRange') | int) }} {{ state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_odometer', 'unit_of_measurement') }}
            icon: mdi:flag-checkered
            color: >
              {%- if (states('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_fuel') | int) > 50 -%}
                green
              {%- elif (states('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_fuel') | int) <= 50 and (states('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_fuel') | int) >= 10 -%}
                orange
              {%- else -%}
                red
              {%- endif -%}
          - type: custom:mushroom-template-card
            primary: Battery Voltage
            secondary: >-
              {{ state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_battery', 'batteryVoltage') }} V
            icon: mdi:lightning-bolt-circle
            color: >
              {{ 'green' if state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_battery', 'batteryVoltage') > 12 else 'orange' }}
          - type: custom:mushroom-template-card
            primary: Battery Percentage
            secondary: >-
              {{ states('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_battery') }} %
            icon: mdi:car-battery
            color: >
              {%- if (states('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_battery') | int) > 70 -%}
                green
              {%- elif (states('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_battery') | int) <= 70 and (states('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_battery') | int) >= 30 -%}
                orange
              {%- else -%}
                red
              {%- endif -%}
          - type: custom:mushroom-template-card
            primary: Odometer
            secondary: >-
              {{ "{:,.0f}".format(states('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_odometer') | int) }} {{ state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_odometer', 'unit_of_measurement') }}
            icon: mdi:counter
          - type: custom:mushroom-template-card
            primary: Oil Life
            secondary: >-
              {{ states('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_oil') }} %
            icon: mdi:oil
            color: >
              {%- if (states('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_oil') | int) > 50 -%}
                green
              {%- elif (states('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_oil') | int) <= 50 and (states('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_oil') | int) >= 10 -%}
                orange
              {%- else -%}
                red
              {%- endif -%}
          - type: custom:mushroom-template-card
            primary: Washer Fluid
            secondary: >-
              {%- if state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_indicators', 'lowwasherfluid_600E19') == false -%}
                Level OK
              {%- else -%}
                Low Fluid Level
              {%- endif -%}
            icon: mdi:spray-bottle
            color: >
              {%- if state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_indicators', 'lowwasherfluid_600E19') == false -%}
                green
              {%- else -%}
                orange
              {%- endif -%}
      - type: grid
        cards:
          - type: heading
            heading: Tire Pressure
            heading_style: title
            icon: mdi:gauge
          - type: custom:mushroom-template-card
            primary: Front Left
            secondary: >
              {{ state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_tirepressure', 'frontLeft') }}
            icon: mdi:car-tire-alert
            color: >
              {{ 'green' if state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_tirepressure', 'frontLeft_state') == 'NORMAL' else 'red' }}
          - type: custom:mushroom-template-card
            primary: Front Right
            secondary: >
              {{ state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_tirepressure', 'frontRight') }}
            icon: mdi:car-tire-alert
            icon_color: >
              {{ 'green' if state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_tirepressure', 'frontRight_state') == 'NORMAL' else 'red' }}
          - type: custom:mushroom-template-card
            primary: Rear Left
            secondary: >
              {{ state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_tirepressure', 'rearLeft') }}
            icon: mdi:car-tire-alert
            icon_color: >
              {{ 'green' if state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_tirepressure', 'rearLeft_state') == 'NORMAL' else 'red' }}
          - type: custom:mushroom-template-card
            primary: Rear Right
            secondary: >
              {{ state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_tirepressure', 'rearRight') }}
            icon: mdi:car-tire-alert
            icon_color: >
              {{ 'green' if state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_tirepressure', 'rearRight_state') == 'NORMAL' else 'red' }}
          - type: heading
            heading: Door Status
            heading_style: title
            icon: mdi:car-door
          - type: custom:mushroom-template-card
            primary: Front Left
            secondary: >
              {{ state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_doorstatus', 'driverFront') }}
            icon: mdi:car-door
            color: >
              {{ 'green' if state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_doorstatus', 'driverFront') == 'CLOSED' else 'red' }}
          - type: custom:mushroom-template-card
            primary: Front Right
            secondary: >
              {{ state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_doorstatus', 'passengerFront') }}
            icon: mdi:car-door
            color: >
              {{ 'green' if state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_doorstatus', 'passengerFront') == 'CLOSED' else 'red' }}
          - type: custom:mushroom-template-card
            primary: Rear Left
            secondary: >
              {{ state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_doorstatus', 'rearLeft') }}
            icon: mdi:car-door
            color: >
              {{ 'green' if state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_doorstatus', 'rearLeft') == 'CLOSED' else 'red' }}
          - type: custom:mushroom-template-card
            primary: Rear Right
            secondary: >
              {{ state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_doorstatus', 'rearRight') }}
            icon: mdi:car-door
            color: >
              {{ 'green' if state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_doorstatus', 'rearRight') == 'CLOSED' else 'red' }}
          - type: custom:mushroom-template-card
            primary: Hood
            secondary: >
              {{ state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_doorstatus', 'hood') }}
            icon: mdi:car
            color: >
              {{ 'green' if state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_doorstatus', 'hood') == 'CLOSED' else 'red' }}
          - type: custom:mushroom-template-card
            primary: Tailgate
            secondary: >
              {{ state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_doorstatus', 'tailgate') }}
            icon: mdi:car-back
            color: >
              {{ 'green' if state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_doorstatus', 'tailgate') == 'CLOSED' else 'red' }}
          - type: heading
            heading: Window Status
            heading_style: title
            icon: mdi:car-door
          - type: custom:mushroom-template-card
            primary: Driver
            secondary: >
              {{ 'Open' if (state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_windowposition', 'driver').doubleRange.lowerBound != 0.0 or state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_windowposition', 'driver').doubleRange.lowerBound != 0.0) else 'Closed' }}
            icon: mdi:car-door
            icon_color: >
              {{ 'orange' if (state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_windowposition', 'driver').doubleRange.lowerBound != 0.0 or state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_windowposition', 'driver').doubleRange.lowerBound != 0.0) else 'green' }}
          - type: custom:mushroom-template-card
            primary: Passenger
            secondary: >
              {{ 'Open' if (state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_windowposition', 'passenger').doubleRange.lowerBound != 0.0 or state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_windowposition', 'passenger').doubleRange.lowerBound != 0.0) else 'Closed' }}
            icon: mdi:car-door
            icon_color: >
              {{ 'orange' if (state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_windowposition', 'passenger').doubleRange.lowerBound != 0.0 or state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_windowposition', 'passenger').doubleRange.lowerBound != 0.0) else 'green' }}
          - type: custom:mushroom-template-card
            primary: Rear Left
            secondary: >
              {{ 'Open' if (state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_windowposition', 'rearDriver').doubleRange.lowerBound != 0.0 or state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_windowposition', 'rearDriver').doubleRange.lowerBound != 0.0) else 'Closed' }}
            icon: mdi:car-door
            icon_color: >
              {{ 'orange' if (state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_windowposition', 'rearDriver').doubleRange.lowerBound != 0.0 or state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_windowposition', 'rearDriver').doubleRange.lowerBound != 0.0) else 'green' }}
          - type: custom:mushroom-template-card
            primary: Rear Right
            secondary: >
              {{ 'Open' if (state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_windowposition', 'rearPassenger').doubleRange.lowerBound != 0.0 or state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_windowposition', 'rearPassenger').doubleRange.lowerBound != 0.0) else 'Closed' }}
            icon: mdi:car-door
            icon_color: >
              {{ 'Orange' if (state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_windowposition', 'rearPassenger').doubleRange.lowerBound != 0.0 or state_attr('sensor.fordpass_' ~ states('input_text.ford_vin') ~ '_windowposition', 'rearPassenger').doubleRange.lowerBound != 0.0) else 'Green' }}
    cards: []
    header:
      card:
        type: markdown
        text_only: true
        content: |
          # Ford Car
          VIN: {{ states('input_text.ford_vin') | upper }}

edit - There probably won’t be any further updates, but just in case, I put it here: GitHub - palinkas-jo-reggelt/FordPass-Dashboard: A Home Assistant dashboard for the marq24/ha-fordpass FordPass integration

1 Like