Fix for new sock revision 5
### Fix * Bumping pyowletapi to 2023.9.1 to allow for revisions * New revision of sock, revision 5 doesn't report all vitals as before, this would cause the integration to fail to update. Have adjusted the integration to detect the revision and ignore the vitals that are no longer reported
This commit is contained in:
@@ -42,7 +42,6 @@ SENSORS: tuple[OwletBinarySensorEntityDescription, ...] = (
|
|||||||
key="high_oxygen_alert",
|
key="high_oxygen_alert",
|
||||||
translation_key="high_ox_alrt",
|
translation_key="high_ox_alrt",
|
||||||
device_class=BinarySensorDeviceClass.SOUND,
|
device_class=BinarySensorDeviceClass.SOUND,
|
||||||
entity_registry_enabled_default=False,
|
|
||||||
),
|
),
|
||||||
OwletBinarySensorEntityDescription(
|
OwletBinarySensorEntityDescription(
|
||||||
key="low_oxygen_alert",
|
key="low_oxygen_alert",
|
||||||
@@ -111,12 +110,9 @@ class OwletBinarySensor(OwletBaseEntity, BinarySensorEntity):
|
|||||||
"""Return true if the binary sensor is on."""
|
"""Return true if the binary sensor is on."""
|
||||||
state = self.sock.properties[self.entity_description.key]
|
state = self.sock.properties[self.entity_description.key]
|
||||||
|
|
||||||
entity = self.entity_description.key
|
if self.entity_description.key == "sleep_state":
|
||||||
|
if self.sock.properties["charging"]:
|
||||||
if self.sock.properties["charging"] and entity in ["sleep_state"]:
|
return None
|
||||||
return None
|
|
||||||
|
|
||||||
if entity == "sleep_state":
|
|
||||||
if state in [8, 15]:
|
if state in [8, 15]:
|
||||||
state = False
|
state = False
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -30,5 +30,5 @@ class OwletBaseEntity(CoordinatorEntity[OwletCoordinator], Entity):
|
|||||||
manufacturer=MANUFACTURER,
|
manufacturer=MANUFACTURER,
|
||||||
model=self.sock.model,
|
model=self.sock.model,
|
||||||
sw_version=self.sock.sw_version,
|
sw_version=self.sock.sw_version,
|
||||||
hw_version=self.sock.version,
|
hw_version=f"{self.sock.version}r{self.sock.revision}",
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1,11 +1,15 @@
|
|||||||
{
|
{
|
||||||
"domain": "owlet",
|
"domain": "owlet",
|
||||||
"name": "Owlet Smart Sock",
|
"name": "Owlet Smart Sock",
|
||||||
"codeowners": ["@ryanbdclark"],
|
"codeowners": [
|
||||||
|
"@ryanbdclark"
|
||||||
|
],
|
||||||
"config_flow": true,
|
"config_flow": true,
|
||||||
"documentation": "https://www.home-assistant.io/integrations/owlet",
|
"documentation": "https://www.home-assistant.io/integrations/owlet",
|
||||||
"iot_class": "cloud_polling",
|
"iot_class": "cloud_polling",
|
||||||
"issue_tracker": "https://github.com/ryanbdclark/owlet/issues",
|
"issue_tracker": "https://github.com/ryanbdclark/owlet/issues",
|
||||||
"requirements": ["pyowletapi==2023.7.2"],
|
"requirements": [
|
||||||
"version":"2023.8.1"
|
"pyowletapi==2023.9.1"
|
||||||
}
|
],
|
||||||
|
"version": "2023.9.1"
|
||||||
|
}
|
||||||
@@ -30,7 +30,7 @@ class OwletSensorEntityDescription(SensorEntityDescription):
|
|||||||
"""Represent the owlet sensor entity description."""
|
"""Represent the owlet sensor entity description."""
|
||||||
|
|
||||||
|
|
||||||
SENSORS: tuple[OwletSensorEntityDescription, ...] = (
|
SENSORS_ALL: tuple[OwletSensorEntityDescription, ...] = (
|
||||||
OwletSensorEntityDescription(
|
OwletSensorEntityDescription(
|
||||||
key="battery_percentage",
|
key="battery_percentage",
|
||||||
translation_key="batterypercent",
|
translation_key="batterypercent",
|
||||||
@@ -45,13 +45,6 @@ SENSORS: tuple[OwletSensorEntityDescription, ...] = (
|
|||||||
state_class=SensorStateClass.MEASUREMENT,
|
state_class=SensorStateClass.MEASUREMENT,
|
||||||
icon="mdi:leaf",
|
icon="mdi:leaf",
|
||||||
),
|
),
|
||||||
OwletSensorEntityDescription(
|
|
||||||
key="oxygen_10_av",
|
|
||||||
translation_key="o2saturation10a",
|
|
||||||
native_unit_of_measurement=PERCENTAGE,
|
|
||||||
state_class=SensorStateClass.MEASUREMENT,
|
|
||||||
icon="mdi:leaf",
|
|
||||||
),
|
|
||||||
OwletSensorEntityDescription(
|
OwletSensorEntityDescription(
|
||||||
key="heart_rate",
|
key="heart_rate",
|
||||||
translation_key="heartrate",
|
translation_key="heartrate",
|
||||||
@@ -92,6 +85,16 @@ SENSORS: tuple[OwletSensorEntityDescription, ...] = (
|
|||||||
icon="mdi:cursor-move",
|
icon="mdi:cursor-move",
|
||||||
entity_registry_enabled_default=False,
|
entity_registry_enabled_default=False,
|
||||||
),
|
),
|
||||||
|
)
|
||||||
|
|
||||||
|
SENSORS_OLD: tuple[OwletSensorEntityDescription, ...] = (
|
||||||
|
OwletSensorEntityDescription(
|
||||||
|
key="oxygen_10_av",
|
||||||
|
translation_key="o2saturation10a",
|
||||||
|
native_unit_of_measurement=PERCENTAGE,
|
||||||
|
state_class=SensorStateClass.MEASUREMENT,
|
||||||
|
icon="mdi:leaf",
|
||||||
|
),
|
||||||
OwletSensorEntityDescription(
|
OwletSensorEntityDescription(
|
||||||
key="movement_bucket",
|
key="movement_bucket",
|
||||||
translation_key="movementbucket",
|
translation_key="movementbucket",
|
||||||
@@ -113,11 +116,17 @@ async def async_setup_entry(
|
|||||||
hass.data[DOMAIN][config_entry.entry_id].values()
|
hass.data[DOMAIN][config_entry.entry_id].values()
|
||||||
)
|
)
|
||||||
|
|
||||||
async_add_entities(
|
sensors = []
|
||||||
OwletSensor(coordinator, sensor)
|
|
||||||
for coordinator in coordinators
|
sensor_list = SENSORS_ALL
|
||||||
for sensor in SENSORS
|
for coordinator in coordinators:
|
||||||
)
|
if coordinator.sock.revision < 5:
|
||||||
|
sensor_list += SENSORS_OLD
|
||||||
|
|
||||||
|
for sensor in sensor_list:
|
||||||
|
sensors.append(OwletSensor(coordinator, sensor))
|
||||||
|
|
||||||
|
async_add_entities(sensors)
|
||||||
|
|
||||||
|
|
||||||
class OwletSensor(OwletBaseEntity, SensorEntity):
|
class OwletSensor(OwletBaseEntity, SensorEntity):
|
||||||
|
|||||||
Reference in New Issue
Block a user