diff --git a/homeassistant/components/homematicip_cloud/sensor.py b/homeassistant/components/homematicip_cloud/sensor.py index d1c3b987a73..d6a226a83dc 100644 --- a/homeassistant/components/homematicip_cloud/sensor.py +++ b/homeassistant/components/homematicip_cloud/sensor.py @@ -14,6 +14,7 @@ from homematicip.aio.device import ( AsyncPassageDetector, AsyncPlugableSwitchMeasuring, AsyncPresenceDetectorIndoor, + AsyncRoomControlDeviceAnalog, AsyncTemperatureHumiditySensorDisplay, AsyncTemperatureHumiditySensorOutdoor, AsyncTemperatureHumiditySensorWithoutDisplay, @@ -79,6 +80,8 @@ async def async_setup_entry( ): entities.append(HomematicipTemperatureSensor(hap, device)) entities.append(HomematicipHumiditySensor(hap, device)) + elif isinstance(device, (AsyncRoomControlDeviceAnalog,)): + entities.append(HomematicipTemperatureSensor(hap, device)) if isinstance( device, ( diff --git a/tests/components/homematicip_cloud/test_device.py b/tests/components/homematicip_cloud/test_device.py index 4334a049564..dc66fc6da34 100644 --- a/tests/components/homematicip_cloud/test_device.py +++ b/tests/components/homematicip_cloud/test_device.py @@ -15,6 +15,15 @@ from .helper import ( ) +async def test_hmip_load_all_supported_devices(hass, default_mock_hap_factory): + """Ensure that all supported devices could be loaded.""" + mock_hap = await default_mock_hap_factory.async_get_mock_hap( + test_devices=None, test_groups=None + ) + + assert len(mock_hap.hmip_device_by_entity_id) == 182 + + async def test_hmip_remove_device(hass, default_mock_hap_factory): """Test Remove of hmip device.""" entity_id = "light.treppe" diff --git a/tests/components/homematicip_cloud/test_sensor.py b/tests/components/homematicip_cloud/test_sensor.py index be5a7423463..2ca36e228cc 100644 --- a/tests/components/homematicip_cloud/test_sensor.py +++ b/tests/components/homematicip_cloud/test_sensor.py @@ -165,6 +165,31 @@ async def test_hmip_temperature_sensor2(hass, default_mock_hap_factory): assert ha_state.attributes[ATTR_TEMPERATURE_OFFSET] == 10 +async def test_hmip_temperature_sensor3(hass, default_mock_hap_factory): + """Test HomematicipTemperatureSensor.""" + entity_id = "sensor.raumbediengerat_analog_temperature" + entity_name = "Raumbediengerät Analog Temperature" + device_model = "ALPHA-IP-RBGa" + mock_hap = await default_mock_hap_factory.async_get_mock_hap( + test_devices=["Raumbediengerät Analog"] + ) + + ha_state, hmip_device = get_and_check_entity_basics( + hass, mock_hap, entity_id, entity_name, device_model + ) + + assert ha_state.state == "23.3" + assert ha_state.attributes[ATTR_UNIT_OF_MEASUREMENT] == TEMP_CELSIUS + await async_manipulate_test_data(hass, hmip_device, "actualTemperature", 23.5) + ha_state = hass.states.get(entity_id) + assert ha_state.state == "23.5" + + assert not ha_state.attributes.get(ATTR_TEMPERATURE_OFFSET) + await async_manipulate_test_data(hass, hmip_device, "temperatureOffset", 10) + ha_state = hass.states.get(entity_id) + assert ha_state.attributes[ATTR_TEMPERATURE_OFFSET] == 10 + + async def test_hmip_power_sensor(hass, default_mock_hap_factory): """Test HomematicipPowerSensor.""" entity_id = "sensor.flur_oben_power" diff --git a/tests/fixtures/homematicip_cloud.json b/tests/fixtures/homematicip_cloud.json index 068470313fc..a97b1247e2c 100644 --- a/tests/fixtures/homematicip_cloud.json +++ b/tests/fixtures/homematicip_cloud.json @@ -14,6 +14,203 @@ } }, "devices": { + "3014F711000BBBB000000000": { + "availableFirmwareVersion": "2.0.2", + "firmwareVersion": "2.0.2", + "firmwareVersionInteger": 131074, + "functionalChannels": { + "0": { + "coProFaulty": false, + "coProRestartNeeded": false, + "coProUpdateFailure": false, + "configPending": false, + "deviceId": "3014F711000BBBB000000000", + "deviceOverheated": false, + "deviceOverloaded": false, + "deviceUndervoltage": false, + "dutyCycle": false, + "functionalChannelType": "DEVICE_OPERATIONLOCK", + "groupIndex": 0, + "groups": [], + "index": 0, + "label": "", + "lowBat": false, + "operationLockActive": false, + "routerModuleEnabled": false, + "routerModuleSupported": false, + "rssiDeviceValue": -45, + "rssiPeerValue": -54, + "supportedOptionalFeatures": { + "IFeatureDeviceCoProError": false, + "IFeatureDeviceCoProRestart": false, + "IFeatureDeviceCoProUpdate": false, + "IFeatureDeviceOverheated": false, + "IFeatureDeviceOverloaded": false, + "IFeatureDeviceTemperatureOutOfRange": false, + "IFeatureDeviceUndervoltage": false + }, + "temperatureOutOfRange": false, + "unreach": false + }, + "1": { + "actualTemperature": 23.0, + "deviceId": "3014F711000BBBB000000000", + "display": "ACTUAL", + "functionalChannelType": "WALL_MOUNTED_THERMOSTAT_PRO_CHANNEL", + "groupIndex": 1, + "groups": [], + "humidity": 52, + "index": 1, + "label": "", + "setPointTemperature": 20.0, + "temperatureOffset": 0.0, + "vaporAmount": 10.662700840292974 + } + }, + "homeId": "00000000-0000-0000-0000-000000000001", + "id": "3014F711000BBBB000000000", + "label": "Raumbedienger\u00e4t", + "lastStatusUpdate": 1579383507353, + "liveUpdateState": "LIVE_UPDATE_NOT_SUPPORTED", + "manufacturerCode": 1, + "modelId": 282, + "modelType": "ALPHA-IP-RBG", + "oem": "M\u00f6hlenhoff", + "permanentlyReachable": true, + "serializedGlobalTradeItemNumber": "3014F711000BBBB000000000", + "type": "ROOM_CONTROL_DEVICE", + "updateState": "UP_TO_DATE" + }, + "3014F711000000BBBB000005": { + "availableFirmwareVersion": "1.0.16", + "firmwareVersion": "1.0.12", + "firmwareVersionInteger": 65548, + "functionalChannels": { + "0": { + "coProFaulty": false, + "coProRestartNeeded": false, + "coProUpdateFailure": false, + "configPending": false, + "deviceId": "3014F711000000BBBB000005", + "deviceOverheated": false, + "deviceOverloaded": false, + "deviceUndervoltage": false, + "dutyCycle": false, + "functionalChannelType": "DEVICE_BASE", + "groupIndex": 0, + "groups": [], + "index": 0, + "label": "", + "lowBat": false, + "routerModuleEnabled": false, + "routerModuleSupported": false, + "rssiDeviceValue": -41, + "rssiPeerValue": -29, + "supportedOptionalFeatures": { + "IFeatureDeviceCoProError": false, + "IFeatureDeviceCoProRestart": false, + "IFeatureDeviceCoProUpdate": false, + "IFeatureDeviceOverheated": false, + "IFeatureDeviceOverloaded": false, + "IFeatureDeviceTemperatureOutOfRange": false, + "IFeatureDeviceUndervoltage": false + }, + "temperatureOutOfRange": false, + "unreach": false + }, + "1": { + "actualTemperature": 23.3, + "deviceId": "3014F711000000BBBB000005", + "functionalChannelType": "ANALOG_ROOM_CONTROL_CHANNEL", + "groupIndex": 1, + "groups": [], + "index": 1, + "label": "", + "setPointTemperature": 23.0, + "temperatureOffset": 0.0 + } + }, + "homeId": "00000000-0000-0000-0000-000000000001", + "id": "3014F711000000BBBB000005", + "label": "Raumbedienger\u00e4t Analog", + "lastStatusUpdate": 1579384126279, + "liveUpdateState": "LIVE_UPDATE_NOT_SUPPORTED", + "manufacturerCode": 1, + "modelId": 281, + "modelType": "ALPHA-IP-RBGa", + "oem": "M\u00f6hlenhoff", + "permanentlyReachable": true, + "serializedGlobalTradeItemNumber": "3014F711000000BBBB000005", + "type": "ROOM_CONTROL_DEVICE_ANALOG", + "updateState": "TRANSFERING_UPDATE" + }, + "3014F711000000000000AAA5": { + "availableFirmwareVersion": "0.0.0", + "firmwareVersion": "1.0.12", + "firmwareVersionInteger": 65548, + "functionalChannels": { + "0": { + "coProFaulty": false, + "coProRestartNeeded": false, + "coProUpdateFailure": false, + "configPending": false, + "deviceId": "3014F711000000000000AAA5", + "deviceOverheated": false, + "deviceOverloaded": false, + "deviceUndervoltage": false, + "dutyCycle": false, + "functionalChannelType": "DEVICE_OPERATIONLOCK", + "groupIndex": 0, + "groups": [], + "index": 0, + "label": "", + "lowBat": false, + "operationLockActive": false, + "routerModuleEnabled": false, + "routerModuleSupported": false, + "rssiDeviceValue": -58, + "rssiPeerValue": -59, + "supportedOptionalFeatures": { + "IFeatureDeviceCoProError": false, + "IFeatureDeviceCoProRestart": false, + "IFeatureDeviceCoProUpdate": false, + "IFeatureDeviceOverheated": false, + "IFeatureDeviceOverloaded": false, + "IFeatureDeviceTemperatureOutOfRange": false, + "IFeatureDeviceUndervoltage": false + }, + "temperatureOutOfRange": false, + "unreach": false + }, + "1": { + "actualTemperature": 16.0, + "deviceId": "3014F711000000000000AAA5", + "display": "ACTUAL", + "functionalChannelType": "WALL_MOUNTED_THERMOSTAT_PRO_CHANNEL", + "groupIndex": 1, + "groups": [], + "humidity": 42, + "index": 1, + "label": "", + "setPointTemperature": 12.0, + "temperatureOffset": 0.0, + "vaporAmount": 5.710127947243264 + } + }, + "homeId": "00000000-0000-0000-0000-000000000001", + "id": "3014F711000000000000AAA5", + "label": "Thermostat Schlafen Tal", + "lastStatusUpdate": 1578954498192, + "liveUpdateState": "UP_TO_DATE", + "manufacturerCode": 1, + "modelId": 408, + "modelType": "HmIP-WTH-B", + "oem": "eQ-3", + "permanentlyReachable": true, + "serializedGlobalTradeItemNumber": "3014F711000000000000AAA5", + "type": "WALL_MOUNTED_THERMOSTAT_BASIC_HUMIDITY", + "updateState": "BACKGROUND_UPDATE_NOT_SUPPORTED" + }, "3014F7110000000000ABCD50": { "availableFirmwareVersion": "1.0.12", "firmwareVersion": "1.0.12",