diff --git a/homeassistant/components/mopeka/manifest.json b/homeassistant/components/mopeka/manifest.json index f4b82be0ace..71104192153 100644 --- a/homeassistant/components/mopeka/manifest.json +++ b/homeassistant/components/mopeka/manifest.json @@ -21,5 +21,5 @@ "documentation": "https://www.home-assistant.io/integrations/mopeka", "integration_type": "device", "iot_class": "local_push", - "requirements": ["mopeka_iot_ble==0.4.0"] + "requirements": ["mopeka_iot_ble==0.4.1"] } diff --git a/requirements_all.txt b/requirements_all.txt index 25b58cad484..b9106e5f3ea 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -1144,7 +1144,7 @@ moat-ble==0.1.1 moehlenhoff-alpha2==1.3.0 # homeassistant.components.mopeka -mopeka_iot_ble==0.4.0 +mopeka_iot_ble==0.4.1 # homeassistant.components.motion_blinds motionblinds==0.6.17 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index d2de02e3df5..5dc78de2796 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -849,7 +849,7 @@ moat-ble==0.1.1 moehlenhoff-alpha2==1.3.0 # homeassistant.components.mopeka -mopeka_iot_ble==0.4.0 +mopeka_iot_ble==0.4.1 # homeassistant.components.motion_blinds motionblinds==0.6.17 diff --git a/tests/components/mopeka/__init__.py b/tests/components/mopeka/__init__.py index 389400cc511..3446b1dc66b 100644 --- a/tests/components/mopeka/__init__.py +++ b/tests/components/mopeka/__init__.py @@ -23,6 +23,16 @@ PRO_SERVICE_INFO = BluetoothServiceInfo( source="local", ) +PRO_UNUSABLE_SIGNAL_SERVICE_INFO = BluetoothServiceInfo( + name="", + address="aa:bb:cc:dd:ee:ff", + rssi=-60, + manufacturer_data={89: b"\x08rF\x00\x00\xe0\xf5\t\xf0\xd8"}, + service_data={}, + service_uuids=["0000fee5-0000-1000-8000-00805f9b34fb"], + source="local", +) + PRO_GOOD_SIGNAL_SERVICE_INFO = BluetoothServiceInfo( name="", diff --git a/tests/components/mopeka/test_sensor.py b/tests/components/mopeka/test_sensor.py index 7e2a81d3100..626aa44efd4 100644 --- a/tests/components/mopeka/test_sensor.py +++ b/tests/components/mopeka/test_sensor.py @@ -10,14 +10,52 @@ from homeassistant.const import ( ) from homeassistant.core import HomeAssistant -from . import PRO_GOOD_SIGNAL_SERVICE_INFO, PRO_SERVICE_INFO +from . import ( + PRO_GOOD_SIGNAL_SERVICE_INFO, + PRO_SERVICE_INFO, + PRO_UNUSABLE_SIGNAL_SERVICE_INFO, +) from tests.common import MockConfigEntry from tests.components.bluetooth import inject_bluetooth_service_info -async def test_sensors_bad_signal(hass: HomeAssistant) -> None: - """Test setting up creates the sensors when there is bad signal.""" +async def test_sensors_unusable_signal(hass: HomeAssistant) -> None: + """Test setting up creates the sensors when there is unusable signal.""" + entry = MockConfigEntry( + domain=DOMAIN, + unique_id="aa:bb:cc:dd:ee:ff", + ) + entry.add_to_hass(hass) + + assert await hass.config_entries.async_setup(entry.entry_id) + await hass.async_block_till_done() + + assert len(hass.states.async_all("sensor")) == 0 + inject_bluetooth_service_info(hass, PRO_UNUSABLE_SIGNAL_SERVICE_INFO) + await hass.async_block_till_done() + assert len(hass.states.async_all("sensor")) == 4 + + temp_sensor = hass.states.get("sensor.pro_plus_eeff_temperature") + temp_sensor_attrs = temp_sensor.attributes + assert temp_sensor.state == "30" + assert temp_sensor_attrs[ATTR_FRIENDLY_NAME] == "Pro Plus EEFF Temperature" + assert temp_sensor_attrs[ATTR_UNIT_OF_MEASUREMENT] == UnitOfTemperature.CELSIUS + assert temp_sensor_attrs[ATTR_STATE_CLASS] == "measurement" + + tank_sensor = hass.states.get("sensor.pro_plus_eeff_tank_level") + tank_sensor_attrs = tank_sensor.attributes + assert tank_sensor.state == STATE_UNKNOWN + assert tank_sensor_attrs[ATTR_FRIENDLY_NAME] == "Pro Plus EEFF Tank Level" + assert tank_sensor_attrs[ATTR_UNIT_OF_MEASUREMENT] == UnitOfLength.MILLIMETERS + assert tank_sensor_attrs[ATTR_STATE_CLASS] == "measurement" + + assert await hass.config_entries.async_unload(entry.entry_id) + await hass.async_block_till_done() + + +async def test_sensors_poor_signal(hass: HomeAssistant) -> None: + """Test setting up creates the sensors when there is poor signal.""" entry = MockConfigEntry( domain=DOMAIN, unique_id="aa:bb:cc:dd:ee:ff", @@ -41,7 +79,7 @@ async def test_sensors_bad_signal(hass: HomeAssistant) -> None: tank_sensor = hass.states.get("sensor.pro_plus_eeff_tank_level") tank_sensor_attrs = tank_sensor.attributes - assert tank_sensor.state == STATE_UNKNOWN + assert tank_sensor.state == "0" assert tank_sensor_attrs[ATTR_FRIENDLY_NAME] == "Pro Plus EEFF Tank Level" assert tank_sensor_attrs[ATTR_UNIT_OF_MEASUREMENT] == UnitOfLength.MILLIMETERS assert tank_sensor_attrs[ATTR_STATE_CLASS] == "measurement"