Events Reference¶
This page documents all events that the Homematic(IP) Local for OpenCCU integration fires on the Home Assistant event bus, including the payload of each event.
Use Developer Tools → Events in Home Assistant to listen to any of these event types live.
Looking for the library event bus?
This page covers the events an automation can trigger on. For the internal aiohomematic EventBus used by developers, see Event Reference.
Overview¶
| Event type | Fired when |
|---|---|
homematic.keypress | A button on a device is pressed |
homematic.impulse | A device reports an impulse |
homematic.device_error | An ERROR* / SENSOR_ERROR* parameter changes |
homematic.device_availability | A device becomes reachable or unreachable |
homematicip_local.optimistic_rollback | An optimistic value was rolled back |
homematicip_local.central_state_changed | The central changes its health state |
homematicip_local.interface_connection_changed | An interface connects or disconnects |
Device parameters outside this list never produce an event. In particular, CCU service messages such as CONFIG_PENDING, UPDATE_PENDING, STICKY_UNREACH, LOW_BAT and SABOTAGE are not events — see Service messages are not events.
homematic.keypress¶
Fired when a device reports a button press. This is the event behind the remote control blueprints and the device triggers offered in the automation UI.
Triggering parameters: PRESS, PRESS_CONT, PRESS_LOCK, PRESS_LONG, PRESS_LONG_RELEASE, PRESS_LONG_START, PRESS_SHORT, PRESS_UNLOCK
| Field | Type | Description |
|---|---|---|
device_id | str | Home Assistant device registry ID |
name | str | Device name (a user-assigned name takes priority) |
address | str | Device address, e.g. 0001D8A9B12C34 |
model | str | Device model, e.g. HmIP-WRC2 |
interface_id | str | Interface, e.g. openccu-HmIP-RF |
type | str | Triggering parameter in lower case, e.g. press_short |
subtype | int | Channel number the press came from |
Note
The parameter name is delivered as type and the channel as subtype. This event has no separate parameter, channel_no or value field.
homematic.impulse¶
Fired when a device reports an impulse. The only triggering parameter is SEQUENCE_OK.
The payload is identical to homematic.keypress, with type set to sequence_ok.
homematic.device_error¶
Fired when a device reports an error condition.
Triggering parameters: every parameter whose name starts with ERROR or SENSOR_ERROR — for example ERROR_OVERHEAT, ERROR_OVERLOAD, ERROR_JAMMED, ERROR_NON_FLAT_POSITIONING, ERROR_SABOTAGE or SENSOR_ERROR.
ERROR_CODE is deliberately excluded: it is a raw numeric code whose meaning differs per device and carries no usable information in a notification.
The event fires on every change of the error state, so both the arrival and the clearing of an error produce an event. For boolean parameters an event is also fired when the value transitions from unknown to true; for numeric parameters, from unknown to a value greater than zero.
| Field | Type | Description |
|---|---|---|
device_id | str | Home Assistant device registry ID |
name | str | Device name (a user-assigned name takes priority) |
address | str | Device address |
channel_no | int | Channel number reporting the error |
model | str | Device model |
interface_id | str | Interface |
parameter | str | Error parameter name, e.g. ERROR_OVERHEAT |
value | bool \| int | Raw parameter value |
error_value | bool \| int | Same as value |
error | bool | true while the error is active, false once it clears |
identifier | str | Stable ID <address>_<parameter>, usable as notification ID |
title | str | Ready-made notification title |
message | str | Ready-made notification message |
Use error to decide whether to raise or dismiss a notification, and identifier to address the same notification in both cases. The Show device error blueprint does exactly this.
homematic.device_availability¶
Fired when a device changes between reachable and unreachable.
Reachability is derived from the UN_REACH parameter on channel 0. Only if a device has no UN_REACH parameter at all does STICKY_UNREACH act as a fallback. Since HmIP and BidCos devices provide both, UN_REACH is what decides in practice, and STICKY_UNREACH does not affect availability. The force_device_availability action overrides the result and also fires this event.
| Field | Type | Description |
|---|---|---|
device_id | str | Home Assistant device registry ID |
name | str | Device name (a user-assigned name takes priority) |
address | str | Device address |
channel_no | int | Always 0 — availability is per device, not per channel |
model | str | Device model |
interface_id | str | Interface |
parameter | str | Always the literal AVAILABILITY |
unavailable | bool | true when the device became unreachable |
identifier | str | Stable ID <address>_availability |
title | str | Ready-made notification title |
message | str | Ready-made notification message |
Note
parameter is a fixed placeholder set by the integration, not a CCU parameter — devices have no AVAILABILITY parameter.
homematicip_local.optimistic_rollback¶
Fired when a value that was optimistically applied in Home Assistant had to be reverted because the CCU did not confirm it. Requires system notifications to be enabled in the integration's advanced options. See Optimistic Updates for background.
| Field | Type | Description |
|---|---|---|
device_id | str | Home Assistant device registry ID (omitted if unknown) |
name | str | Device name (omitted if unknown) |
address | str | Device address |
interface_id | str | Interface |
parameter | str | Affected parameter |
reason | str | timeout, send_error or mismatch |
rolled_back_value | Any | The optimistic value that failed |
restored_value | Any | The previously confirmed value that was restored |
age_seconds | float | How long the optimistic value was held |
error | str | Error message, only present when reason is send_error |
The three reasons mean: the CCU did not respond within the optimistic update timeout (timeout), sending raised an exception (send_error), or the CCU confirmed a different value than the one sent (mismatch).
homematicip_local.central_state_changed¶
Fired when the central changes its overall health state.
| Field | Type | Description |
|---|---|---|
instance_name | str | Name of the central instance |
new_state | str | degraded, failed, recovering or running |
degraded means at least one interface is not connected, failed means manual intervention is required, recovering means a reconnect is in progress and running means all interfaces are connected. When a degraded or failed state is caused by an authentication problem, a reauthentication flow is started instead of firing this event.
homematicip_local.interface_connection_changed¶
Fired when a single interface connects or disconnects.
| Field | Type | Description |
|---|---|---|
instance_name | str | Name of the central instance |
interface_id | str | Affected interface, e.g. openccu-HmIP-RF |
connected | bool | true when the interface (re-)connected |
Service messages are not events¶
The CCU maintains its own list of service messages (Servicemeldungen) — the entries visible in the OpenCCU web UI. These are not delivered as events, and the parameters behind them (CONFIG_PENDING, UPDATE_PENDING, STICKY_UNREACH, UN_REACH) do not produce Home Assistant entities either.
Instead, the integration exposes the complete list through the hub sensor sensor.<instance>_hub_service_messages:
- State: the number of currently active service messages
- Attributes:
message_1,message_2, … — one per message, each containing the device name and the message text
The sensor is enabled by default and refreshes on the system variable scan interval (30 seconds by default), so automations should use a state trigger on this sensor rather than an event trigger.
Example — notify when a service message appears:
triggers:
- trigger: numeric_state
entity_id: sensor.openccu_hub_service_messages
above: 0
actions:
- action: persistent_notification.create
data:
title: CCU service messages
message: >
{{ state_attr('sensor.openccu_hub_service_messages', 'message_1') }}
A matching sensor sensor.<instance>_hub_alarm_messages exposes CCU alarm messages (Alarmmeldungen) the same way.
LOW_BAT and SABOTAGE
These two are a separate case: they are regular binary sensors on the device and should be used as entities, not looked for among the events.
See Also¶
- Actions Reference — all custom actions of the integration
- Optimistic Updates — background on optimistic values and rollbacks
- Event Reference — internal aiohomematic EventBus (developers)