mirror of
https://github.com/home-assistant/core.git
synced 2025-07-19 11:17:21 +00:00
Add HmIP-STV to HomematicIP Cloud (#39518)
* add general attribute for connection type * Add HmIP-STV to HomematicIP Cloud
This commit is contained in:
parent
77c6a48553
commit
4dee2b599a
@ -16,6 +16,7 @@ from homematicip.aio.device import (
|
|||||||
AsyncShutterContact,
|
AsyncShutterContact,
|
||||||
AsyncShutterContactMagnetic,
|
AsyncShutterContactMagnetic,
|
||||||
AsyncSmokeDetector,
|
AsyncSmokeDetector,
|
||||||
|
AsyncTiltVibrationSensor,
|
||||||
AsyncWaterSensor,
|
AsyncWaterSensor,
|
||||||
AsyncWeatherSensor,
|
AsyncWeatherSensor,
|
||||||
AsyncWeatherSensorPlus,
|
AsyncWeatherSensorPlus,
|
||||||
@ -85,6 +86,8 @@ async def async_setup_entry(
|
|||||||
for device in hap.home.devices:
|
for device in hap.home.devices:
|
||||||
if isinstance(device, AsyncAccelerationSensor):
|
if isinstance(device, AsyncAccelerationSensor):
|
||||||
entities.append(HomematicipAccelerationSensor(hap, device))
|
entities.append(HomematicipAccelerationSensor(hap, device))
|
||||||
|
if isinstance(device, AsyncTiltVibrationSensor):
|
||||||
|
entities.append(HomematicipTiltVibrationSensor(hap, device))
|
||||||
if isinstance(device, (AsyncContactInterface, AsyncFullFlushContactInterface)):
|
if isinstance(device, (AsyncContactInterface, AsyncFullFlushContactInterface)):
|
||||||
entities.append(HomematicipContactInterface(hap, device))
|
entities.append(HomematicipContactInterface(hap, device))
|
||||||
if isinstance(
|
if isinstance(
|
||||||
@ -133,8 +136,8 @@ async def async_setup_entry(
|
|||||||
async_add_entities(entities)
|
async_add_entities(entities)
|
||||||
|
|
||||||
|
|
||||||
class HomematicipAccelerationSensor(HomematicipGenericEntity, BinarySensorEntity):
|
class HomematicipBaseActionSensor(HomematicipGenericEntity, BinarySensorEntity):
|
||||||
"""Representation of the HomematicIP acceleration sensor."""
|
"""Representation of the HomematicIP base action sensor."""
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def device_class(self) -> str:
|
def device_class(self) -> str:
|
||||||
@ -159,6 +162,14 @@ class HomematicipAccelerationSensor(HomematicipGenericEntity, BinarySensorEntity
|
|||||||
return state_attr
|
return state_attr
|
||||||
|
|
||||||
|
|
||||||
|
class HomematicipAccelerationSensor(HomematicipBaseActionSensor):
|
||||||
|
"""Representation of the HomematicIP acceleration sensor."""
|
||||||
|
|
||||||
|
|
||||||
|
class HomematicipTiltVibrationSensor(HomematicipBaseActionSensor):
|
||||||
|
"""Representation of the HomematicIP tilt vibration sensor."""
|
||||||
|
|
||||||
|
|
||||||
class HomematicipContactInterface(HomematicipGenericEntity, BinarySensorEntity):
|
class HomematicipContactInterface(HomematicipGenericEntity, BinarySensorEntity):
|
||||||
"""Representation of the HomematicIP contact interface."""
|
"""Representation of the HomematicIP contact interface."""
|
||||||
|
|
||||||
|
@ -17,6 +17,7 @@ _LOGGER = logging.getLogger(__name__)
|
|||||||
ATTR_MODEL_TYPE = "model_type"
|
ATTR_MODEL_TYPE = "model_type"
|
||||||
ATTR_LOW_BATTERY = "low_battery"
|
ATTR_LOW_BATTERY = "low_battery"
|
||||||
ATTR_CONFIG_PENDING = "config_pending"
|
ATTR_CONFIG_PENDING = "config_pending"
|
||||||
|
ATTR_CONNECTION_TYPE = "connection_type"
|
||||||
ATTR_DUTY_CYCLE_REACHED = "duty_cycle_reached"
|
ATTR_DUTY_CYCLE_REACHED = "duty_cycle_reached"
|
||||||
ATTR_ID = "id"
|
ATTR_ID = "id"
|
||||||
ATTR_IS_GROUP = "is_group"
|
ATTR_IS_GROUP = "is_group"
|
||||||
@ -43,6 +44,7 @@ DEVICE_ATTRIBUTE_ICONS = {
|
|||||||
|
|
||||||
DEVICE_ATTRIBUTES = {
|
DEVICE_ATTRIBUTES = {
|
||||||
"modelType": ATTR_MODEL_TYPE,
|
"modelType": ATTR_MODEL_TYPE,
|
||||||
|
"connectionType": ATTR_CONNECTION_TYPE,
|
||||||
"sabotage": ATTR_SABOTAGE,
|
"sabotage": ATTR_SABOTAGE,
|
||||||
"dutyCycle": ATTR_DUTY_CYCLE_REACHED,
|
"dutyCycle": ATTR_DUTY_CYCLE_REACHED,
|
||||||
"rssiDeviceValue": ATTR_RSSI_DEVICE,
|
"rssiDeviceValue": ATTR_RSSI_DEVICE,
|
||||||
|
@ -75,6 +75,42 @@ async def test_hmip_acceleration_sensor(hass, default_mock_hap_factory):
|
|||||||
assert len(hmip_device.mock_calls) == service_call_counter + 2
|
assert len(hmip_device.mock_calls) == service_call_counter + 2
|
||||||
|
|
||||||
|
|
||||||
|
async def test_hmip_tilt_vibration_sensor(hass, default_mock_hap_factory):
|
||||||
|
"""Test HomematicipTiltVibrationSensor."""
|
||||||
|
entity_id = "binary_sensor.garage_neigungs_und_erschutterungssensor"
|
||||||
|
entity_name = "Garage Neigungs- und Erschütterungssensor"
|
||||||
|
device_model = "HmIP-STV"
|
||||||
|
mock_hap = await default_mock_hap_factory.async_get_mock_hap(
|
||||||
|
test_devices=[entity_name]
|
||||||
|
)
|
||||||
|
|
||||||
|
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_ACCELERATION_SENSOR_MODE] == "FLAT_DECT"
|
||||||
|
assert (
|
||||||
|
ha_state.attributes[ATTR_ACCELERATION_SENSOR_SENSITIVITY] == "SENSOR_RANGE_2G"
|
||||||
|
)
|
||||||
|
assert ha_state.attributes[ATTR_ACCELERATION_SENSOR_TRIGGER_ANGLE] == 45
|
||||||
|
service_call_counter = len(hmip_device.mock_calls)
|
||||||
|
|
||||||
|
await async_manipulate_test_data(
|
||||||
|
hass, hmip_device, "accelerationSensorTriggered", False
|
||||||
|
)
|
||||||
|
ha_state = hass.states.get(entity_id)
|
||||||
|
assert ha_state.state == STATE_OFF
|
||||||
|
assert len(hmip_device.mock_calls) == service_call_counter + 1
|
||||||
|
|
||||||
|
await async_manipulate_test_data(
|
||||||
|
hass, hmip_device, "accelerationSensorTriggered", True
|
||||||
|
)
|
||||||
|
ha_state = hass.states.get(entity_id)
|
||||||
|
assert ha_state.state == STATE_ON
|
||||||
|
assert len(hmip_device.mock_calls) == service_call_counter + 2
|
||||||
|
|
||||||
|
|
||||||
async def test_hmip_contact_interface(hass, default_mock_hap_factory):
|
async def test_hmip_contact_interface(hass, default_mock_hap_factory):
|
||||||
"""Test HomematicipContactInterface."""
|
"""Test HomematicipContactInterface."""
|
||||||
entity_id = "binary_sensor.kontakt_schnittstelle_unterputz_1_fach"
|
entity_id = "binary_sensor.kontakt_schnittstelle_unterputz_1_fach"
|
||||||
|
@ -22,7 +22,7 @@ async def test_hmip_load_all_supported_devices(hass, default_mock_hap_factory):
|
|||||||
test_devices=None, test_groups=None
|
test_devices=None, test_groups=None
|
||||||
)
|
)
|
||||||
|
|
||||||
assert len(mock_hap.hmip_device_by_entity_id) == 190
|
assert len(mock_hap.hmip_device_by_entity_id) == 191
|
||||||
|
|
||||||
|
|
||||||
async def test_hmip_remove_device(hass, default_mock_hap_factory):
|
async def test_hmip_remove_device(hass, default_mock_hap_factory):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user