G-Two / homeassistant-subaru

Subaru STARLINK custom component for Home Assistant.
Apache License 2.0
54 stars 6 forks source link

Bring in vehicle health info (feature request) #117

Closed wz2b closed 2 months ago

wz2b commented 2 months ago

The subarulink library has some dicts for vehicle status and health. I'm not entirely sure what's in them (yet). I'm wondering if there's a way to bring this data in as well - can an entity's state be a dict, or can we convert that dict into just an object?

vehicle_status: dict[str, Any]
vehicle_health: dict[str, Any]

The main thing I'm trying to do is to use an automation to just re-emit these as MQTT messages.

G-Two commented 2 months ago

Example content of these dicts are below. The content will vary by vehicle model. Most of the fields (except for the individual MIL codes) are already used to update the states of the various integration sensors.

vehicle_status = {
        "ODOMETER": 12345,
        "TIMESTAMP": "2024-04-29T13:36:06+00:00",
        "AVG_FUEL_CONSUMPTION": 60.3,
        "DISTANCE_TO_EMPTY_FUEL": 190,
        "VEHICLE_STATE_TYPE": "IGNITION_OFF",
        "TYRE_PRESSURE_FRONT_LEFT": 32.6,
        "TYRE_PRESSURE_FRONT_RIGHT": 32.6,
        "TYRE_PRESSURE_REAR_LEFT": 33.4,
        "TYRE_PRESSURE_REAR_RIGHT": 32.6,
        "LOCATION_VALID": true,
        "LONGITUDE": "**REDACTED**",
        "LATITUDE": "**REDACTED**",
        "DOOR_BOOT_POSITION": "CLOSED",
        "DOOR_ENGINE_HOOD_POSITION": "CLOSED",
        "DOOR_FRONT_LEFT_POSITION": "CLOSED",
        "DOOR_FRONT_RIGHT_POSITION": "CLOSED",
        "DOOR_REAR_LEFT_POSITION": "CLOSED",
        "DOOR_REAR_RIGHT_POSITION": "CLOSED",
        "LAST_UPDATED_DATE": "2024-04-29T13:36:06.000+0000",
        "EV_DISTANCE_TO_EMPTY": null,
        "EV_STATE_OF_CHARGE_PERCENT": -1.0,
        "EV_IS_PLUGGED_IN": "NOT_CONNECTED",
        "EV_CHARGER_STATE_TYPE": "CHARGING_STOPPED",
        "EV_TIME_TO_FULLY_CHARGED": null,
        "EV_TIME_TO_FULLY_CHARGED_UTC": null
      }

vehicle_health = {
        "RECOMMENDED_TIRE_PRESSURE": {
          "FRONT_TIRES": 36,
          "REAR_TIRES": 35
        },
        "ISTROUBLE": false,
        "FEATURES": {
          "ABS_MIL": {
            "ISTROUBLE": false,
            "ONDATE": null
          },
          "ATF_MIL": {
            "ISTROUBLE": false,
            "ONDATE": null
          },
          "AWD_MIL": {
            "ISTROUBLE": false,
            "ONDATE": null
          },
          "BSDRCT_MIL": {
            "ISTROUBLE": false,
            "ONDATE": null
          },
          "CEL_MIL": {
            "ISTROUBLE": false,
            "ONDATE": null
          },
          "EBD_MIL": {
            "ISTROUBLE": false,
            "ONDATE": null
          },
          "EOL_MIL": {
            "ISTROUBLE": false,
            "ONDATE": null
          },
          "EPAS_MIL": {
            "ISTROUBLE": false,
            "ONDATE": null
          },
          "EPB_MIL": {
            "ISTROUBLE": false,
            "ONDATE": null
          },
          "ESS_MIL": {
            "ISTROUBLE": false,
            "ONDATE": null
          },
          "HEV_MIL": {
            "ISTROUBLE": false,
            "ONDATE": null
          },
          "HEVCM_MIL": {
            "ISTROUBLE": false,
            "ONDATE": null
          },
          "OPL_MIL": {
            "ISTROUBLE": false,
            "ONDATE": null
          },
          "RAB_MIL": {
            "ISTROUBLE": false,
            "ONDATE": null
          },
          "SRS_MIL": {
            "ISTROUBLE": false,
            "ONDATE": null
          },
          "TEL_MIL": {
            "ISTROUBLE": false,
            "ONDATE": null
          },
          "TPMS_MIL": {
            "ISTROUBLE": false,
            "ONDATE": null
          },
          "VDC_MIL": {
            "ISTROUBLE": false,
            "ONDATE": null
          },
          "WASH_MIL": {
            "ISTROUBLE": false,
            "ONDATE": null
          },
          "AHBL_MIL": {
            "ISTROUBLE": false,
            "ONDATE": null
          }
        }
wz2b commented 2 months ago

OK so the only thing that's missing are the individual MIL troubles and dates. Do those show up in the integration where I currently see just "OK" (if something were wrong)?

On Sun, May 5, 2024 at 8:14 PM G-Two @.***> wrote:

Example content of these dicts are below. The content will vary by vehicle model. Most of the fields (except for the individual MIL codes) are already used to update the states of the various integration sensors.

vehicle_status = { "ODOMETER": 12345, "TIMESTAMP": "2024-04-29T13:36:06+00:00", "AVG_FUEL_CONSUMPTION": 60.3, "DISTANCE_TO_EMPTY_FUEL": 190, "VEHICLE_STATE_TYPE": "IGNITION_OFF", "TYRE_PRESSURE_FRONT_LEFT": 32.6, "TYRE_PRESSURE_FRONT_RIGHT": 32.6, "TYRE_PRESSURE_REAR_LEFT": 33.4, "TYRE_PRESSURE_REAR_RIGHT": 32.6, "LOCATION_VALID": true, "LONGITUDE": "REDACTED", "LATITUDE": "REDACTED", "DOOR_BOOT_POSITION": "CLOSED", "DOOR_ENGINE_HOOD_POSITION": "CLOSED", "DOOR_FRONT_LEFT_POSITION": "CLOSED", "DOOR_FRONT_RIGHT_POSITION": "CLOSED", "DOOR_REAR_LEFT_POSITION": "CLOSED", "DOOR_REAR_RIGHT_POSITION": "CLOSED", "LAST_UPDATED_DATE": "2024-04-29T13:36:06.000+0000", "EV_DISTANCE_TO_EMPTY": null, "EV_STATE_OF_CHARGE_PERCENT": -1.0, "EV_IS_PLUGGED_IN": "NOT_CONNECTED", "EV_CHARGER_STATE_TYPE": "CHARGING_STOPPED", "EV_TIME_TO_FULLY_CHARGED": null, "EV_TIME_TO_FULLY_CHARGED_UTC": null } vehicle_health = { "RECOMMENDED_TIRE_PRESSURE": { "FRONT_TIRES": 36, "REAR_TIRES": 35 }, "ISTROUBLE": false, "FEATURES": { "ABS_MIL": { "ISTROUBLE": false, "ONDATE": null }, "ATF_MIL": { "ISTROUBLE": false, "ONDATE": null }, "AWD_MIL": { "ISTROUBLE": false, "ONDATE": null }, "BSDRCT_MIL": { "ISTROUBLE": false, "ONDATE": null }, "CEL_MIL": { "ISTROUBLE": false, "ONDATE": null }, "EBD_MIL": { "ISTROUBLE": false, "ONDATE": null }, "EOL_MIL": { "ISTROUBLE": false, "ONDATE": null }, "EPAS_MIL": { "ISTROUBLE": false, "ONDATE": null }, "EPB_MIL": { "ISTROUBLE": false, "ONDATE": null }, "ESS_MIL": { "ISTROUBLE": false, "ONDATE": null }, "HEV_MIL": { "ISTROUBLE": false, "ONDATE": null }, "HEVCM_MIL": { "ISTROUBLE": false, "ONDATE": null }, "OPL_MIL": { "ISTROUBLE": false, "ONDATE": null }, "RAB_MIL": { "ISTROUBLE": false, "ONDATE": null }, "SRS_MIL": { "ISTROUBLE": false, "ONDATE": null }, "TEL_MIL": { "ISTROUBLE": false, "ONDATE": null }, "TPMS_MIL": { "ISTROUBLE": false, "ONDATE": null }, "VDC_MIL": { "ISTROUBLE": false, "ONDATE": null }, "WASH_MIL": { "ISTROUBLE": false, "ONDATE": null }, "AHBL_MIL": { "ISTROUBLE": false, "ONDATE": null } }

— Reply to this email directly, view it on GitHub https://github.com/G-Two/homeassistant-subaru/issues/117#issuecomment-2095011866, or unsubscribe https://github.com/notifications/unsubscribe-auth/AALTMONAGAIMOHOWA44VJNDZA3DOPAVCNFSM6AAAAABG6EJGDGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDAOJVGAYTCOBWGY . You are receiving this because you authored the thread.Message ID: @.***>

G-Two commented 2 months ago

Yes, they should appear as extra attributes to the trouble binary sensor. https://github.com/G-Two/homeassistant-subaru/blob/f4bcf06e239eed6461fabbbc4832d6ce91924456/custom_components/subaru/binary_sensor.py#L260