async def async_get_actions(hass: HomeAssistant, device_id: str) -> list[dict[str, Any]]:
    """List device actions for Homematic(IP) Local devices."""

    device_registry = dr.async_get(hass)
    if (device := device_registry.async_get(device_id)) is None:
        return []
    if (data := get_device_address_at_interface_from_identifiers(identifiers=device.identifiers)) is None:
        return []

    device_address, interface_id = data
    actions = []
    for entry_id in device.config_entries:
        if (entry := hass.config_entries.async_get_entry(entry_id=entry_id)) and entry.domain == DOMAIN:
            control_unit: ControlUnit = entry.runtime_data
            if control_unit.central.has_client(interface_id=interface_id) is False:
                continue
            if hm_device := control_unit.central.get_device(address=device_address):
                for dp in hm_device.generic_data_points:
                    if not isinstance(dp, DpAction | DpButton):
                        continue
                    if dp.parameter not in ACTION_PARAMS:
                        continue

                    action = {
                        CONF_DOMAIN: DOMAIN,
                        CONF_DEVICE_ID: device_id,
                        CONF_TYPE: dp.parameter.lower(),
                        CONF_SUBTYPE: dp.channel.no,
                    }
                    actions.append(action)

    return actions
List device actions for Homematic(IP) Local devices.
custom_components/homematicip_local/device_action.py