mirror of
https://github.com/home-assistant/core.git
synced 2025-07-28 07:37:34 +00:00
Add support for HmIP-RGBW and HmIP-LSC in homematicip_cloud integration (#148639)
This commit is contained in:
parent
1cb278966c
commit
ab187f39c2
@ -2,13 +2,20 @@
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import logging
|
||||
from typing import Any
|
||||
|
||||
from homematicip.base.enums import DeviceType, OpticalSignalBehaviour, RGBColorState
|
||||
from homematicip.base.enums import (
|
||||
DeviceType,
|
||||
FunctionalChannelType,
|
||||
OpticalSignalBehaviour,
|
||||
RGBColorState,
|
||||
)
|
||||
from homematicip.base.functionalChannels import NotificationLightChannel
|
||||
from homematicip.device import (
|
||||
BrandDimmer,
|
||||
BrandSwitchNotificationLight,
|
||||
Device,
|
||||
Dimmer,
|
||||
DinRailDimmer3,
|
||||
FullFlushDimmer,
|
||||
@ -34,6 +41,8 @@ from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
|
||||
from .entity import HomematicipGenericEntity
|
||||
from .hap import HomematicIPConfigEntry, HomematicipHAP
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
async def async_setup_entry(
|
||||
hass: HomeAssistant,
|
||||
@ -43,6 +52,14 @@ async def async_setup_entry(
|
||||
"""Set up the HomematicIP Cloud lights from a config entry."""
|
||||
hap = config_entry.runtime_data
|
||||
entities: list[HomematicipGenericEntity] = []
|
||||
|
||||
entities.extend(
|
||||
HomematicipLightHS(hap, d, ch.index)
|
||||
for d in hap.home.devices
|
||||
for ch in d.functionalChannels
|
||||
if ch.functionalChannelType == FunctionalChannelType.UNIVERSAL_LIGHT_CHANNEL
|
||||
)
|
||||
|
||||
for device in hap.home.devices:
|
||||
if (
|
||||
isinstance(device, SwitchMeasuring)
|
||||
@ -104,6 +121,64 @@ class HomematicipLight(HomematicipGenericEntity, LightEntity):
|
||||
await self._device.turn_off_async()
|
||||
|
||||
|
||||
class HomematicipLightHS(HomematicipGenericEntity, LightEntity):
|
||||
"""Representation of the HomematicIP light with HS color mode."""
|
||||
|
||||
_attr_color_mode = ColorMode.HS
|
||||
_attr_supported_color_modes = {ColorMode.HS}
|
||||
|
||||
def __init__(self, hap: HomematicipHAP, device: Device, channel_index: int) -> None:
|
||||
"""Initialize the light entity."""
|
||||
super().__init__(hap, device, channel=channel_index, is_multi_channel=True)
|
||||
|
||||
@property
|
||||
def is_on(self) -> bool:
|
||||
"""Return true if light is on."""
|
||||
return self.functional_channel.on
|
||||
|
||||
@property
|
||||
def brightness(self) -> int | None:
|
||||
"""Return the current brightness."""
|
||||
return int(self.functional_channel.dimLevel * 255.0)
|
||||
|
||||
@property
|
||||
def hs_color(self) -> tuple[float, float] | None:
|
||||
"""Return the hue and saturation color value [float, float]."""
|
||||
if (
|
||||
self.functional_channel.hue is None
|
||||
or self.functional_channel.saturationLevel is None
|
||||
):
|
||||
return None
|
||||
return (
|
||||
self.functional_channel.hue,
|
||||
self.functional_channel.saturationLevel * 100.0,
|
||||
)
|
||||
|
||||
async def async_turn_on(self, **kwargs: Any) -> None:
|
||||
"""Turn the light on."""
|
||||
|
||||
hs_color = kwargs.get(ATTR_HS_COLOR, (0.0, 0.0))
|
||||
hue = hs_color[0] % 360.0
|
||||
saturation = hs_color[1] / 100.0
|
||||
dim_level = round(kwargs.get(ATTR_BRIGHTNESS, 255) / 255.0, 2)
|
||||
|
||||
if ATTR_HS_COLOR not in kwargs:
|
||||
hue = self.functional_channel.hue
|
||||
saturation = self.functional_channel.saturationLevel
|
||||
|
||||
if ATTR_BRIGHTNESS not in kwargs:
|
||||
# If no brightness is set, use the current brightness
|
||||
dim_level = self.functional_channel.dimLevel or 1.0
|
||||
|
||||
await self.functional_channel.set_hue_saturation_dim_level_async(
|
||||
hue=hue, saturation_level=saturation, dim_level=dim_level
|
||||
)
|
||||
|
||||
async def async_turn_off(self, **kwargs: Any) -> None:
|
||||
"""Turn the light off."""
|
||||
await self.functional_channel.set_switch_state_async(on=False)
|
||||
|
||||
|
||||
class HomematicipLightMeasuring(HomematicipLight):
|
||||
"""Representation of the HomematicIP measuring light."""
|
||||
|
||||
|
@ -8566,6 +8566,376 @@
|
||||
"serializedGlobalTradeItemNumber": "3014F71100000000000SVCTH",
|
||||
"type": "TEMPERATURE_HUMIDITY_SENSOR_COMPACT",
|
||||
"updateState": "UP_TO_DATE"
|
||||
},
|
||||
"3014F71100000000000RGBW2": {
|
||||
"availableFirmwareVersion": "1.0.62",
|
||||
"connectionType": "HMIP_RF",
|
||||
"deviceArchetype": "HMIP",
|
||||
"fastColorChangeSupported": true,
|
||||
"firmwareVersion": "1.0.62",
|
||||
"firmwareVersionInteger": 65598,
|
||||
"functionalChannels": {
|
||||
"0": {
|
||||
"altitude": null,
|
||||
"busConfigMismatch": null,
|
||||
"coProFaulty": false,
|
||||
"coProRestartNeeded": false,
|
||||
"coProUpdateFailure": false,
|
||||
"configPending": false,
|
||||
"controlsMountingOrientation": null,
|
||||
"daliBusState": null,
|
||||
"dataDecodingFailedError": null,
|
||||
"defaultLinkedGroup": [],
|
||||
"deviceAliveSignalEnabled": null,
|
||||
"deviceCommunicationError": null,
|
||||
"deviceDriveError": null,
|
||||
"deviceDriveModeError": null,
|
||||
"deviceId": "3014F71100000000000RGBW2",
|
||||
"deviceOperationMode": "UNIVERSAL_LIGHT_1_RGB",
|
||||
"deviceOverheated": false,
|
||||
"deviceOverloaded": false,
|
||||
"devicePowerFailureDetected": false,
|
||||
"deviceUndervoltage": false,
|
||||
"displayContrast": null,
|
||||
"displayMode": null,
|
||||
"displayMountingOrientation": null,
|
||||
"dutyCycle": false,
|
||||
"frostProtectionError": null,
|
||||
"frostProtectionErrorAcknowledged": null,
|
||||
"functionalChannelType": "DEVICE_BASE",
|
||||
"groupIndex": 0,
|
||||
"groups": ["00000000-0000-0000-0000-000000000056"],
|
||||
"index": 0,
|
||||
"inputLayoutMode": null,
|
||||
"invertedDisplayColors": null,
|
||||
"label": "",
|
||||
"lockJammed": null,
|
||||
"lowBat": null,
|
||||
"mountingModuleError": null,
|
||||
"mountingOrientation": null,
|
||||
"multicastRoutingEnabled": false,
|
||||
"noDataFromLinkyError": null,
|
||||
"operationDays": null,
|
||||
"particulateMatterSensorCommunicationError": null,
|
||||
"particulateMatterSensorError": null,
|
||||
"powerShortCircuit": null,
|
||||
"profilePeriodLimitReached": null,
|
||||
"routerModuleEnabled": false,
|
||||
"routerModuleSupported": false,
|
||||
"rssiDeviceValue": -50,
|
||||
"rssiPeerValue": null,
|
||||
"sensorCommunicationError": null,
|
||||
"sensorError": null,
|
||||
"shortCircuitDataLine": null,
|
||||
"supportedOptionalFeatures": {
|
||||
"IFeatureBusConfigMismatch": false,
|
||||
"IFeatureDataDecodingFailedError": false,
|
||||
"IFeatureDeviceCoProError": false,
|
||||
"IFeatureDeviceCoProRestart": false,
|
||||
"IFeatureDeviceCoProUpdate": false,
|
||||
"IFeatureDeviceCommunicationError": false,
|
||||
"IFeatureDeviceDaliBusError": false,
|
||||
"IFeatureDeviceDriveError": false,
|
||||
"IFeatureDeviceDriveModeError": false,
|
||||
"IFeatureDeviceIdentify": false,
|
||||
"IFeatureDeviceMountingModuleError": false,
|
||||
"IFeatureDeviceOverheated": true,
|
||||
"IFeatureDeviceOverloaded": false,
|
||||
"IFeatureDeviceParticulateMatterSensorCommunicationError": false,
|
||||
"IFeatureDeviceParticulateMatterSensorError": false,
|
||||
"IFeatureDevicePowerFailure": false,
|
||||
"IFeatureDeviceSensorCommunicationError": false,
|
||||
"IFeatureDeviceSensorError": false,
|
||||
"IFeatureDeviceTempSensorError": false,
|
||||
"IFeatureDeviceTemperatureHumiditySensorCommunicationError": false,
|
||||
"IFeatureDeviceTemperatureHumiditySensorError": false,
|
||||
"IFeatureDeviceTemperatureOutOfRange": false,
|
||||
"IFeatureDeviceUndervoltage": false,
|
||||
"IFeatureMulticastRouter": false,
|
||||
"IFeatureNoDataFromLinkyError": false,
|
||||
"IFeaturePowerShortCircuit": false,
|
||||
"IFeatureProfilePeriodLimit": false,
|
||||
"IFeatureRssiValue": true,
|
||||
"IFeatureShortCircuitDataLine": false,
|
||||
"IFeatureTicVersionError": false,
|
||||
"IOptionalFeatureAltitude": false,
|
||||
"IOptionalFeatureColorTemperature": false,
|
||||
"IOptionalFeatureColorTemperatureDim2Warm": false,
|
||||
"IOptionalFeatureColorTemperatureDynamicDaylight": false,
|
||||
"IOptionalFeatureDefaultLinkedGroup": false,
|
||||
"IOptionalFeatureDeviceAliveSignalEnabled": false,
|
||||
"IOptionalFeatureDeviceErrorLockJammed": false,
|
||||
"IOptionalFeatureDeviceFrostProtectionError": false,
|
||||
"IOptionalFeatureDeviceInputLayoutMode": false,
|
||||
"IOptionalFeatureDeviceOperationMode": true,
|
||||
"IOptionalFeatureDeviceSwitchChannelMode": false,
|
||||
"IOptionalFeatureDeviceValveError": false,
|
||||
"IOptionalFeatureDeviceWaterError": false,
|
||||
"IOptionalFeatureDimmerState": false,
|
||||
"IOptionalFeatureDisplayContrast": false,
|
||||
"IOptionalFeatureDisplayMode": false,
|
||||
"IOptionalFeatureDutyCycle": true,
|
||||
"IOptionalFeatureHardwareColorTemperature": false,
|
||||
"IOptionalFeatureHueSaturationValue": false,
|
||||
"IOptionalFeatureInvertedDisplayColors": false,
|
||||
"IOptionalFeatureLightScene": false,
|
||||
"IOptionalFeatureLightSceneWithShortTimes": false,
|
||||
"IOptionalFeatureLowBat": false,
|
||||
"IOptionalFeatureMountingOrientation": false,
|
||||
"IOptionalFeatureOperationDays": false,
|
||||
"IOptionalFeaturePowerUpColorTemperature": false,
|
||||
"IOptionalFeaturePowerUpDimmerState": false,
|
||||
"IOptionalFeaturePowerUpHueSaturationValue": false,
|
||||
"IOptionalFeaturePowerUpSwitchState": false
|
||||
},
|
||||
"switchChannelMode": null,
|
||||
"temperatureHumiditySensorCommunicationError": null,
|
||||
"temperatureHumiditySensorError": null,
|
||||
"temperatureOutOfRange": false,
|
||||
"temperatureSensorError": null,
|
||||
"ticVersionError": null,
|
||||
"unreach": false,
|
||||
"valveFlowError": null,
|
||||
"valveWaterError": null
|
||||
},
|
||||
"1": {
|
||||
"channelActive": true,
|
||||
"channelRole": "UNIVERSAL_LIGHT_ACTUATOR",
|
||||
"colorTemperature": null,
|
||||
"connectedDeviceUnreach": null,
|
||||
"controlGearFailure": null,
|
||||
"deviceId": "3014F71100000000000RGBW2",
|
||||
"dim2WarmActive": false,
|
||||
"dimLevel": 0.68,
|
||||
"functionalChannelType": "UNIVERSAL_LIGHT_CHANNEL",
|
||||
"groupIndex": 1,
|
||||
"groups": ["00000000-0000-0000-0000-000000000061"],
|
||||
"hardwareColorTemperatureColdWhite": 6500,
|
||||
"hardwareColorTemperatureWarmWhite": 2000,
|
||||
"hue": 120,
|
||||
"humanCentricLightActive": false,
|
||||
"index": 1,
|
||||
"label": "",
|
||||
"lampFailure": null,
|
||||
"lightSceneId": 1,
|
||||
"limitFailure": null,
|
||||
"maximumColorTemperature": 6500,
|
||||
"minimalColorTemperature": 2000,
|
||||
"on": true,
|
||||
"onMinLevel": 0.05,
|
||||
"powerUpColorTemperature": 10100,
|
||||
"powerUpDimLevel": 1.0,
|
||||
"powerUpHue": 361,
|
||||
"powerUpSaturationLevel": 1.01,
|
||||
"powerUpSwitchState": "PERMANENT_OFF",
|
||||
"profileMode": "AUTOMATIC",
|
||||
"rampTime": 0.5,
|
||||
"saturationLevel": 0.8,
|
||||
"supportedOptionalFeatures": {
|
||||
"IFeatureConnectedDeviceUnreach": false,
|
||||
"IFeatureControlGearFailure": false,
|
||||
"IFeatureLampFailure": false,
|
||||
"IFeatureLightGroupActuatorChannel": true,
|
||||
"IFeatureLightProfileActuatorChannel": true,
|
||||
"IFeatureLimitFailure": false,
|
||||
"IOptionalFeatureChannelActive": false,
|
||||
"IOptionalFeatureColorTemperature": false,
|
||||
"IOptionalFeatureColorTemperatureDim2Warm": false,
|
||||
"IOptionalFeatureColorTemperatureDynamicDaylight": false,
|
||||
"IOptionalFeatureDimmerState": true,
|
||||
"IOptionalFeatureHardwareColorTemperature": false,
|
||||
"IOptionalFeatureHueSaturationValue": true,
|
||||
"IOptionalFeatureLightScene": true,
|
||||
"IOptionalFeatureLightSceneWithShortTimes": true,
|
||||
"IOptionalFeatureOnMinLevel": true,
|
||||
"IOptionalFeaturePowerUpColorTemperature": false,
|
||||
"IOptionalFeaturePowerUpDimmerState": true,
|
||||
"IOptionalFeaturePowerUpHueSaturationValue": true,
|
||||
"IOptionalFeaturePowerUpSwitchState": true
|
||||
},
|
||||
"userDesiredProfileMode": "AUTOMATIC"
|
||||
},
|
||||
"2": {
|
||||
"channelActive": false,
|
||||
"channelRole": null,
|
||||
"colorTemperature": null,
|
||||
"connectedDeviceUnreach": null,
|
||||
"controlGearFailure": null,
|
||||
"deviceId": "3014F71100000000000RGBW2",
|
||||
"dim2WarmActive": null,
|
||||
"dimLevel": null,
|
||||
"functionalChannelType": "UNIVERSAL_LIGHT_CHANNEL",
|
||||
"groupIndex": 0,
|
||||
"groups": [],
|
||||
"hardwareColorTemperatureColdWhite": 6500,
|
||||
"hardwareColorTemperatureWarmWhite": 2000,
|
||||
"hue": null,
|
||||
"humanCentricLightActive": null,
|
||||
"index": 2,
|
||||
"label": "",
|
||||
"lampFailure": null,
|
||||
"lightSceneId": null,
|
||||
"limitFailure": null,
|
||||
"maximumColorTemperature": 6500,
|
||||
"minimalColorTemperature": 2000,
|
||||
"on": null,
|
||||
"onMinLevel": 0.05,
|
||||
"powerUpColorTemperature": 10100,
|
||||
"powerUpDimLevel": 1.0,
|
||||
"powerUpHue": 361,
|
||||
"powerUpSaturationLevel": 1.01,
|
||||
"powerUpSwitchState": "PERMANENT_OFF",
|
||||
"profileMode": "AUTOMATIC",
|
||||
"rampTime": 0.5,
|
||||
"saturationLevel": null,
|
||||
"supportedOptionalFeatures": {
|
||||
"IFeatureConnectedDeviceUnreach": false,
|
||||
"IFeatureControlGearFailure": false,
|
||||
"IFeatureLampFailure": false,
|
||||
"IFeatureLimitFailure": false,
|
||||
"IOptionalFeatureChannelActive": false,
|
||||
"IOptionalFeatureColorTemperature": false,
|
||||
"IOptionalFeatureColorTemperatureDim2Warm": false,
|
||||
"IOptionalFeatureColorTemperatureDynamicDaylight": false,
|
||||
"IOptionalFeatureDimmerState": false,
|
||||
"IOptionalFeatureHardwareColorTemperature": false,
|
||||
"IOptionalFeatureHueSaturationValue": false,
|
||||
"IOptionalFeatureLightScene": false,
|
||||
"IOptionalFeatureLightSceneWithShortTimes": false,
|
||||
"IOptionalFeatureOnMinLevel": true,
|
||||
"IOptionalFeaturePowerUpColorTemperature": false,
|
||||
"IOptionalFeaturePowerUpDimmerState": false,
|
||||
"IOptionalFeaturePowerUpHueSaturationValue": false,
|
||||
"IOptionalFeaturePowerUpSwitchState": true
|
||||
},
|
||||
"userDesiredProfileMode": "AUTOMATIC"
|
||||
},
|
||||
"3": {
|
||||
"channelActive": false,
|
||||
"channelRole": null,
|
||||
"colorTemperature": null,
|
||||
"connectedDeviceUnreach": null,
|
||||
"controlGearFailure": null,
|
||||
"deviceId": "3014F71100000000000RGBW2",
|
||||
"dim2WarmActive": null,
|
||||
"dimLevel": null,
|
||||
"functionalChannelType": "UNIVERSAL_LIGHT_CHANNEL",
|
||||
"groupIndex": 0,
|
||||
"groups": [],
|
||||
"hardwareColorTemperatureColdWhite": 6500,
|
||||
"hardwareColorTemperatureWarmWhite": 2000,
|
||||
"hue": null,
|
||||
"humanCentricLightActive": null,
|
||||
"index": 3,
|
||||
"label": "",
|
||||
"lampFailure": null,
|
||||
"lightSceneId": null,
|
||||
"limitFailure": null,
|
||||
"maximumColorTemperature": 6500,
|
||||
"minimalColorTemperature": 2000,
|
||||
"on": null,
|
||||
"onMinLevel": 0.05,
|
||||
"powerUpColorTemperature": 10100,
|
||||
"powerUpDimLevel": 1.0,
|
||||
"powerUpHue": 361,
|
||||
"powerUpSaturationLevel": 1.01,
|
||||
"powerUpSwitchState": "PERMANENT_OFF",
|
||||
"profileMode": "AUTOMATIC",
|
||||
"rampTime": 0.5,
|
||||
"saturationLevel": null,
|
||||
"supportedOptionalFeatures": {
|
||||
"IFeatureConnectedDeviceUnreach": false,
|
||||
"IFeatureControlGearFailure": false,
|
||||
"IFeatureLampFailure": false,
|
||||
"IFeatureLimitFailure": false,
|
||||
"IOptionalFeatureChannelActive": false,
|
||||
"IOptionalFeatureColorTemperature": false,
|
||||
"IOptionalFeatureColorTemperatureDim2Warm": false,
|
||||
"IOptionalFeatureColorTemperatureDynamicDaylight": false,
|
||||
"IOptionalFeatureDimmerState": false,
|
||||
"IOptionalFeatureHardwareColorTemperature": false,
|
||||
"IOptionalFeatureHueSaturationValue": false,
|
||||
"IOptionalFeatureLightScene": false,
|
||||
"IOptionalFeatureLightSceneWithShortTimes": false,
|
||||
"IOptionalFeatureOnMinLevel": true,
|
||||
"IOptionalFeaturePowerUpColorTemperature": false,
|
||||
"IOptionalFeaturePowerUpDimmerState": false,
|
||||
"IOptionalFeaturePowerUpHueSaturationValue": false,
|
||||
"IOptionalFeaturePowerUpSwitchState": true
|
||||
},
|
||||
"userDesiredProfileMode": "AUTOMATIC"
|
||||
},
|
||||
"4": {
|
||||
"channelActive": false,
|
||||
"channelRole": null,
|
||||
"colorTemperature": null,
|
||||
"connectedDeviceUnreach": null,
|
||||
"controlGearFailure": null,
|
||||
"deviceId": "3014F71100000000000RGBW2",
|
||||
"dim2WarmActive": null,
|
||||
"dimLevel": null,
|
||||
"functionalChannelType": "UNIVERSAL_LIGHT_CHANNEL",
|
||||
"groupIndex": 0,
|
||||
"groups": [],
|
||||
"hardwareColorTemperatureColdWhite": 6500,
|
||||
"hardwareColorTemperatureWarmWhite": 2000,
|
||||
"hue": null,
|
||||
"humanCentricLightActive": null,
|
||||
"index": 4,
|
||||
"label": "",
|
||||
"lampFailure": null,
|
||||
"lightSceneId": null,
|
||||
"limitFailure": null,
|
||||
"maximumColorTemperature": 6500,
|
||||
"minimalColorTemperature": 2000,
|
||||
"on": null,
|
||||
"onMinLevel": 0.05,
|
||||
"powerUpColorTemperature": 10100,
|
||||
"powerUpDimLevel": 1.0,
|
||||
"powerUpHue": 361,
|
||||
"powerUpSaturationLevel": 1.01,
|
||||
"powerUpSwitchState": "PERMANENT_OFF",
|
||||
"profileMode": "AUTOMATIC",
|
||||
"rampTime": 0.5,
|
||||
"saturationLevel": null,
|
||||
"supportedOptionalFeatures": {
|
||||
"IFeatureConnectedDeviceUnreach": false,
|
||||
"IFeatureControlGearFailure": false,
|
||||
"IFeatureLampFailure": false,
|
||||
"IFeatureLimitFailure": false,
|
||||
"IOptionalFeatureChannelActive": false,
|
||||
"IOptionalFeatureColorTemperature": false,
|
||||
"IOptionalFeatureColorTemperatureDim2Warm": false,
|
||||
"IOptionalFeatureColorTemperatureDynamicDaylight": false,
|
||||
"IOptionalFeatureDimmerState": false,
|
||||
"IOptionalFeatureHardwareColorTemperature": false,
|
||||
"IOptionalFeatureHueSaturationValue": false,
|
||||
"IOptionalFeatureLightScene": false,
|
||||
"IOptionalFeatureLightSceneWithShortTimes": false,
|
||||
"IOptionalFeatureOnMinLevel": true,
|
||||
"IOptionalFeaturePowerUpColorTemperature": false,
|
||||
"IOptionalFeaturePowerUpDimmerState": false,
|
||||
"IOptionalFeaturePowerUpHueSaturationValue": false,
|
||||
"IOptionalFeaturePowerUpSwitchState": true
|
||||
},
|
||||
"userDesiredProfileMode": "AUTOMATIC"
|
||||
}
|
||||
},
|
||||
"homeId": "00000000-0000-0000-0000-000000000001",
|
||||
"id": "3014F71100000000000RGBW2",
|
||||
"label": "RGBW Controller",
|
||||
"lastStatusUpdate": 1749973334235,
|
||||
"liveUpdateState": "LIVE_UPDATE_NOT_SUPPORTED",
|
||||
"manuallyUpdateForced": false,
|
||||
"manufacturerCode": 1,
|
||||
"measuredAttributes": {},
|
||||
"modelId": 462,
|
||||
"modelType": "HmIP-RGBW",
|
||||
"oem": "eQ-3",
|
||||
"permanentlyReachable": true,
|
||||
"serializedGlobalTradeItemNumber": "3014F71100000000000RGBW2",
|
||||
"type": "RGBW_DIMMER",
|
||||
"updateState": "UP_TO_DATE"
|
||||
}
|
||||
},
|
||||
"groups": {
|
||||
|
@ -22,7 +22,7 @@ async def test_hmip_load_all_supported_devices(
|
||||
test_devices=None, test_groups=None
|
||||
)
|
||||
|
||||
assert len(mock_hap.hmip_device_by_entity_id) == 331
|
||||
assert len(mock_hap.hmip_device_by_entity_id) == 335
|
||||
|
||||
|
||||
async def test_hmip_remove_device(
|
||||
|
@ -600,3 +600,79 @@ async def test_hmip_din_rail_dimmer_3_channel3(
|
||||
ha_state = hass.states.get(entity_id)
|
||||
assert ha_state.state == STATE_OFF
|
||||
assert not ha_state.attributes.get(ATTR_BRIGHTNESS)
|
||||
|
||||
|
||||
async def test_hmip_light_hs(
|
||||
hass: HomeAssistant, default_mock_hap_factory: HomeFactory
|
||||
) -> None:
|
||||
"""Test HomematicipLight with HS color mode."""
|
||||
entity_id = "light.rgbw_controller_channel1"
|
||||
entity_name = "RGBW Controller Channel1"
|
||||
device_model = "HmIP-RGBW"
|
||||
mock_hap = await default_mock_hap_factory.async_get_mock_hap(
|
||||
test_devices=["RGBW Controller"]
|
||||
)
|
||||
|
||||
ha_state, hmip_device = get_and_check_entity_basics(
|
||||
hass, mock_hap, entity_id, entity_name, device_model
|
||||
)
|
||||
|
||||
assert ha_state.state == STATE_ON
|
||||
assert ha_state.attributes[ATTR_COLOR_MODE] == ColorMode.HS
|
||||
assert ha_state.attributes[ATTR_SUPPORTED_COLOR_MODES] == [ColorMode.HS]
|
||||
|
||||
service_call_counter = len(hmip_device.functionalChannels[1].mock_calls)
|
||||
|
||||
# Test turning on with HS color
|
||||
await hass.services.async_call(
|
||||
"light",
|
||||
"turn_on",
|
||||
{"entity_id": entity_id, ATTR_HS_COLOR: [240.0, 100.0]},
|
||||
blocking=True,
|
||||
)
|
||||
assert len(hmip_device.functionalChannels[1].mock_calls) == service_call_counter + 1
|
||||
assert (
|
||||
hmip_device.functionalChannels[1].mock_calls[-1][0]
|
||||
== "set_hue_saturation_dim_level_async"
|
||||
)
|
||||
assert hmip_device.functionalChannels[1].mock_calls[-1][2] == {
|
||||
"hue": 240.0,
|
||||
"saturation_level": 1.0,
|
||||
"dim_level": 0.68,
|
||||
}
|
||||
|
||||
# Test turning on with HS color
|
||||
await hass.services.async_call(
|
||||
"light",
|
||||
"turn_on",
|
||||
{"entity_id": entity_id, ATTR_HS_COLOR: [220.0, 80.0], ATTR_BRIGHTNESS: 123},
|
||||
blocking=True,
|
||||
)
|
||||
assert len(hmip_device.functionalChannels[1].mock_calls) == service_call_counter + 2
|
||||
assert (
|
||||
hmip_device.functionalChannels[1].mock_calls[-1][0]
|
||||
== "set_hue_saturation_dim_level_async"
|
||||
)
|
||||
assert hmip_device.functionalChannels[1].mock_calls[-1][2] == {
|
||||
"hue": 220.0,
|
||||
"saturation_level": 0.8,
|
||||
"dim_level": 0.48,
|
||||
}
|
||||
|
||||
# Test turning on with HS color
|
||||
await hass.services.async_call(
|
||||
"light",
|
||||
"turn_on",
|
||||
{"entity_id": entity_id, ATTR_BRIGHTNESS: 40},
|
||||
blocking=True,
|
||||
)
|
||||
assert len(hmip_device.functionalChannels[1].mock_calls) == service_call_counter + 3
|
||||
assert (
|
||||
hmip_device.functionalChannels[1].mock_calls[-1][0]
|
||||
== "set_hue_saturation_dim_level_async"
|
||||
)
|
||||
assert hmip_device.functionalChannels[1].mock_calls[-1][2] == {
|
||||
"hue": hmip_device.functionalChannels[1].hue,
|
||||
"saturation_level": hmip_device.functionalChannels[1].saturationLevel,
|
||||
"dim_level": 0.16,
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user