2 Commits

Author SHA1 Message Date
ryanbdclark
c0bf404f6a Update CHANGELOG.md 2023-09-20 15:05:45 +01:00
RyanClark123
0a7f703100 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
2023-09-20 15:03:10 +01:00
5 changed files with 48 additions and 33 deletions

View File

@@ -1,7 +1,13 @@
# Changelog # Changelog
<!--next-version-placeholder--> <!--next-version-placeholder-->
## 2023.08.1 (2023-08-21) ## 2023.9.1 (2023-09-20)
### Fix
* Bumping pyowletapi to 2023.9.1 to allow for revisions ([`0a7f703`](https://github.com/ryanbdclark/owlet/commit/0a7f70310080a129c988e9607331baa2f6c691e0))
* 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 ([`0a7f703`](https://github.com/ryanbdclark/owlet/commit/0a7f70310080a129c988e9607331baa2f6c691e0))
## 2023.8.1 (2023-08-21)
### Feature ### Feature
* 2 new sensors, movement and movement bucket disabled by default, thanks [`@seanford`](https://github.com/seanford) ([`575b213`](https://github.com/ryanbdclark/owlet/commit/575b213ddd732779cd7938e575fc87c8881a69b0)) * 2 new sensors, movement and movement bucket disabled by default, thanks [`@seanford`](https://github.com/seanford) ([`575b213`](https://github.com/ryanbdclark/owlet/commit/575b213ddd732779cd7938e575fc87c8881a69b0))
@@ -17,11 +23,11 @@
### Fix ### Fix
* Bumping pyowletapi to 2023.7.1 ([`c693fef`](https://github.com/ryanbdclark/owlet/commit/c693fefbf3dba8f35802b87d064401dadbb211b5)) * Bumping pyowletapi to 2023.7.1 ([`c693fef`](https://github.com/ryanbdclark/owlet/commit/c693fefbf3dba8f35802b87d064401dadbb211b5))
## 2023.05.7 (2023-05-30) ## 2023.5.7 (2023-05-30)
### Fix ### Fix
* Fixed issue with binary sensors not loading, caused by change to way the coordinators are stored ([`8d17317`](https://github.com/ryanbdclark/owlet/commit/8d173174e286b0451cbb2c0d4ae3087028d1ea23)) * Fixed issue with binary sensors not loading, caused by change to way the coordinators are stored ([`8d17317`](https://github.com/ryanbdclark/owlet/commit/8d173174e286b0451cbb2c0d4ae3087028d1ea23))
## 2023.05.6 (2023-05-30) ## 2023.5.6 (2023-05-30)
### Fix ### Fix
* In light of submitting this as a pull request to the core of HA there have been some refactoring changes to comply with HA's style requirements * In light of submitting this as a pull request to the core of HA there have been some refactoring changes to comply with HA's style requirements
* Sensor names now moved to strings file to allow for translations * Sensor names now moved to strings file to allow for translations
@@ -31,25 +37,25 @@
### Feature ### Feature
* Tests added * Tests added
## 2023.05.5 (2023-05-19) ## 2023.5.5 (2023-05-19)
#### Fix #### Fix
* Owlet refresh token becomes invalid after 24 hours. Meant that after 1 day the integration would stop working. Moved to pyowletapi v2023.5.28 which uses different refresh token, should no longer need reconfiguring after 24 hours ([`dc58b19`](https://github.com/ryanbdclark/owlet/commit/0141f7d01a9ac9b3e1dcc74cabb896e19bd4a821)) * Owlet refresh token becomes invalid after 24 hours. Meant that after 1 day the integration would stop working. Moved to pyowletapi v2023.5.28 which uses different refresh token, should no longer need reconfiguring after 24 hours ([`dc58b19`](https://github.com/ryanbdclark/owlet/commit/0141f7d01a9ac9b3e1dcc74cabb896e19bd4a821))
## 2023.05.4 (2023-05-17) ## 2023.5.4 (2023-05-17)
#### Fix #### Fix
* Bumping to pyowletapi 2023.5.25 * Bumping to pyowletapi 2023.5.25
## 2023.05.3 (2023-05-17) ## 2023.5.3 (2023-05-17)
#### Fix #### Fix
* Bumping to pyowletapi 2023.5.24 * Bumping to pyowletapi 2023.5.24
* Reauthing now no longer re adds users' password to config entry * Reauthing now no longer re adds users' password to config entry
## 2023.05.2 (2023-05-16) ## 2023.5.2 (2023-05-16)
#### Feature #### Feature
* Integration now makes use of refresh token from pyowletapi to reauthenticate, user password in no longer stored by integration ([`dc710a1`](https://github.com/ryanbdclark/owlet/commit/dc710a1783a4cad9d6cf355240fe12ac779a87ef)) * Integration now makes use of refresh token from pyowletapi to reauthenticate, user password in no longer stored by integration ([`dc710a1`](https://github.com/ryanbdclark/owlet/commit/dc710a1783a4cad9d6cf355240fe12ac779a87ef))
* New sensors create for baby sleep state ([`9b3392b`](https://github.com/ryanbdclark/owlet/commit/9b3392bdbcd82015ed31d3a50a517e4e22905684)) * New sensors create for baby sleep state ([`9b3392b`](https://github.com/ryanbdclark/owlet/commit/9b3392bdbcd82015ed31d3a50a517e4e22905684))
## 2023.05.1 (2023-05-15) ## 2023.5.1 (2023-05-15)
#### Feature #### Feature
* Changed versioning to date based * Changed versioning to date based
### Fix ### Fix

View File

@@ -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:

View File

@@ -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}",
) )

View File

@@ -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"
}

View File

@@ -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):