Set car sensors state appropriately if sensor registers with unit of measurement (#3764)

* Set car sensor state appropriately if sensor registers with unit of measurement

* Stick to unavailable for better consistency
This commit is contained in:
Daniel Shokouhi 2023-08-07 12:50:21 -07:00 committed by GitHub
parent 0425d7cf97
commit 2d439f11ea
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 38 additions and 20 deletions

View file

@ -173,7 +173,7 @@ class CarSensorManager :
onSensorUpdated(
context,
it,
context.getString(R.string.car_data_unavailable),
"unavailable",
it.statelessIcon,
mapOf()
)
@ -257,9 +257,12 @@ class CarSensorManager :
onSensorUpdated(
context,
fuelLevel,
fuelStatus ?: data.fuelPercent.value!!,
if (fuelStatus == "success") data.fuelPercent.value!! else "unknown",
fuelLevel.statelessIcon,
mapOf()
mapOf(
"status" to fuelStatus
),
forceUpdate = true
)
}
val batteryStatus = carValueStatus(data.batteryPercent.status)
@ -267,9 +270,12 @@ class CarSensorManager :
onSensorUpdated(
context,
batteryLevel,
batteryStatus ?: data.batteryPercent.value!!,
if (batteryStatus == "success") data.batteryPercent.value!! else "unknown",
batteryLevel.statelessIcon,
mapOf()
mapOf(
"status" to batteryStatus
),
forceUpdate = true
)
}
setListener(Listener.ENERGY, false)
@ -282,12 +288,14 @@ class CarSensorManager :
onSensorUpdated(
context,
carName,
status ?: data.name.value!!,
if (status == "success") data.name.value!! else "unknown",
carName.statelessIcon,
mapOf(
"car_manufacturer" to data.manufacturer.value,
"car_manufactured_year" to data.year.value
)
"car_manufactured_year" to data.year.value,
"status" to status
),
forceUpdate = true
)
}
setListener(Listener.MODEL, false)
@ -301,11 +309,13 @@ class CarSensorManager :
onSensorUpdated(
context,
carStatus,
status ?: (data.evChargePortConnected.value == true),
if (status == "success") (data.evChargePortConnected.value == true) else "unknown",
carStatus.statelessIcon,
mapOf(
"car_charge_port_open" to (data.evChargePortOpen.value == true)
)
"car_charge_port_open" to (data.evChargePortOpen.value == true),
"status" to status
),
forceUpdate = true
)
}
setListener(Listener.STATUS, false)
@ -319,9 +329,12 @@ class CarSensorManager :
onSensorUpdated(
context,
odometerValue,
status ?: data.odometerMeters.value!!,
if (status == "success") data.odometerMeters.value!! else "unknown",
odometerValue.statelessIcon,
mapOf()
mapOf(
"status" to status
),
forceUpdate = true
)
}
setListener(Listener.MILEAGE, false)
@ -335,29 +348,35 @@ class CarSensorManager :
onSensorUpdated(
context,
fuelType,
fuelTypeStatus ?: getFuelType(data.fuelTypes.value!!),
if (fuelTypeStatus == "success") getFuelType(data.fuelTypes.value!!) else "unknown",
fuelType.statelessIcon,
mapOf()
mapOf(
"status" to fuelTypeStatus
),
forceUpdate = true
)
}
if (isEnabled(context, evConnector)) {
onSensorUpdated(
context,
evConnector,
evConnectorTypeStatus ?: getEvConnectorType(data.evConnectorTypes.value!!),
if (evConnectorTypeStatus == "success") getEvConnectorType(data.evConnectorTypes.value!!) else "unknown",
evConnector.statelessIcon,
mapOf()
mapOf(
"status" to evConnectorTypeStatus
),
forceUpdate = true
)
}
}
private fun carValueStatus(value: Int): String? {
return when (value) {
CarValue.STATUS_SUCCESS -> null
CarValue.STATUS_SUCCESS -> "success"
CarValue.STATUS_UNAVAILABLE -> "unavailable"
CarValue.STATUS_UNKNOWN -> "unknown"
CarValue.STATUS_UNIMPLEMENTED -> "unimplemented"
else -> "unavailable"
else -> null
}
}

View file

@ -1125,7 +1125,6 @@
<string name="ha_assist">HA: Assist</string>
<string name="only_favorites">Only Show Favorites</string>
<string name="beacon_scanning">Beacon Monitor Scanning</string>
<string name="car_data_unavailable">Open Home Assistant app to activate the sensor</string>
<string name="basic_sensor_name_car_fuel_type">Car Fuel Type</string>
<string name="sensor_description_car_fuel_type">List of available fuel types for the connected car</string>
<string name="basic_sensor_name_car_ev_connector_type">Car EV Connector Type</string>