mirror of
https://github.com/home-assistant/core.git
synced 2025-07-19 19:27:45 +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,
|
||||
AsyncShutterContactMagnetic,
|
||||
AsyncSmokeDetector,
|
||||
AsyncTiltVibrationSensor,
|
||||
AsyncWaterSensor,
|
||||
AsyncWeatherSensor,
|
||||
AsyncWeatherSensorPlus,
|
||||
@ -85,6 +86,8 @@ async def async_setup_entry(
|
||||
for device in hap.home.devices:
|
||||
if isinstance(device, AsyncAccelerationSensor):
|
||||
entities.append(HomematicipAccelerationSensor(hap, device))
|
||||
if isinstance(device, AsyncTiltVibrationSensor):
|
||||
entities.append(HomematicipTiltVibrationSensor(hap, device))
|
||||
if isinstance(device, (AsyncContactInterface, AsyncFullFlushContactInterface)):
|
||||
entities.append(HomematicipContactInterface(hap, device))
|
||||
if isinstance(
|
||||
@ -133,8 +136,8 @@ async def async_setup_entry(
|
||||
async_add_entities(entities)
|
||||
|
||||
|
||||
class HomematicipAccelerationSensor(HomematicipGenericEntity, BinarySensorEntity):
|
||||
"""Representation of the HomematicIP acceleration sensor."""
|
||||
class HomematicipBaseActionSensor(HomematicipGenericEntity, BinarySensorEntity):
|
||||
"""Representation of the HomematicIP base action sensor."""
|
||||
|
||||
@property
|
||||
def device_class(self) -> str:
|
||||
@ -159,6 +162,14 @@ class HomematicipAccelerationSensor(HomematicipGenericEntity, BinarySensorEntity
|
||||
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):
|
||||
"""Representation of the HomematicIP contact interface."""
|
||||
|
||||
|
@ -17,6 +17,7 @@ _LOGGER = logging.getLogger(__name__)
|
||||
ATTR_MODEL_TYPE = "model_type"
|
||||
ATTR_LOW_BATTERY = "low_battery"
|
||||
ATTR_CONFIG_PENDING = "config_pending"
|
||||
ATTR_CONNECTION_TYPE = "connection_type"
|
||||
ATTR_DUTY_CYCLE_REACHED = "duty_cycle_reached"
|
||||
ATTR_ID = "id"
|
||||
ATTR_IS_GROUP = "is_group"
|
||||
@ -43,6 +44,7 @@ DEVICE_ATTRIBUTE_ICONS = {
|
||||
|
||||
DEVICE_ATTRIBUTES = {
|
||||
"modelType": ATTR_MODEL_TYPE,
|
||||
"connectionType": ATTR_CONNECTION_TYPE,
|
||||
"sabotage": ATTR_SABOTAGE,
|
||||
"dutyCycle": ATTR_DUTY_CYCLE_REACHED,
|
||||
"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
|
||||
|
||||
|
||||
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):
|
||||
"""Test HomematicipContactInterface."""
|
||||
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
|
||||
)
|
||||
|
||||
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):
|
||||
|
Loading…
x
Reference in New Issue
Block a user