15 return "ACTIVATE_MODE";
19 return "PRIVATE_RESP";
23 return "PRIVATE2_RESP";
27 return "SET_SENSOR_ACK";
31 return "WRITE_PRIVATE";
33 return "WRITE_PRIVATE_ACK";
35 return "DISCOVER_REQ";
37 return "DISCOVER_RESP";
39 return "DISCOVER_SPE_REQ";
41 return "DISCOVER_SPE_RESP";
43 return "DISCOVER_CONFIRM";
45 return "DISCOVER_CONFIRM_ACK";
47 return "DISCOVER_ALT_REQ";
49 return "DISCOVER_ALT_RESP";
53 return "KEY_TRANSFER";
59 return "ADDRESS_RESP";
61 return "LAUNCH_KEY_TRANSFER";
63 return "UNKNOWN4A_REQ";
65 return "UNKNOWN4A_RESP";
67 return "CHALLENGE_REQ";
69 return "CHALLENGE_RESP";
73 return "GET_NAME_RESP";
77 return "SET_NAME_RESP";
81 return "GET_INFO1_RESP";
85 return "GET_INFO2_RESP";
87 return "GET_GENERAL_INFO3";
89 return "GET_GENERAL_INFO3_RESP";
93 return "SET_CONFIG1_RESP";
95 return "STATUS_UPDATE";
97 return "STATUS_UPDATE_RESP";
99 return "SEND_RAW_MESSAGE";
101 return "READ_GROUPS";
105 return "SERVICE_STATUS_ACK";
109 return "UNKNOWN_CMD";
128 return "WINDOW MASTER";
138 return "Atlantic Group";
162 return "always_alive";
171 switch (originator) {
175 return "user_remote";
177 return "rain_sensor";
185 return "smart_controller";
191 return "wind_sensor";
193 return "load_shedding";
195 return "local_light";
197 return "environment";
201 return "automatic_cycle";
212 return "protection_human";
214 return "protection_sensor";
218 return "user_default";
226 return "auto_default";
235 return "UNKNOWN_STATUS_REPLY";
237 return "COMMAND_COMPLETED_OK";
241 return "MANUALLY_OPERATED";
245 return "WRONG_SYSTEMKEY";
247 return "PRIORITY_LEVEL_LOCKED";
249 return "REACHED_WRONG_POSITION";
251 return "ERROR_DURING_EXECUTION";
253 return "NO_EXECUTION";
255 return "CALIBRATING";
257 return "POWER_CONSUMPTION_TOO_HIGH";
259 return "POWER_CONSUMPTION_TOO_LOW";
261 return "LOCK_POSITION_OPEN";
263 return "MOTION_TIME_TOO_LONG";
265 return "THERMAL_PROTECTION";
267 return "PRODUCT_NOT_OPERATIONAL";
269 return "FILTER_MAINTENANCE_NEEDED";
271 return "BATTERY_LEVEL";
273 return "TARGET_MODIFIED";
275 return "MODE_NOT_IMPLEMENTED";
277 return "COMMAND_INCOMPATIBLE_TO_MOVEMENT";
279 return "USER_ACTION";
281 return "DEAD_BOLT_ERROR";
283 return "AUTOMATIC_CYCLE_ENGAGED";
285 return "WRONG_LOAD_CONNECTED";
287 return "COLOUR_NOT_REACHABLE";
289 return "TARGET_NOT_REACHABLE";
291 return "BAD_INDEX_RECEIVED";
293 return "COMMAND_OVERRULED";
295 return "NODE_WAITING_FOR_POWER";
297 return "NODE_LOCKED";
299 return "WRONG_POSITION";
301 return "LIMITS_NOT_SET";
305 return "OUT_OF_RANGE";
307 return "PRIORITY_LOCKED";
309 return "INFORMATION_CODE";
311 return "PARAMETER_LIMITED";
313 return "LIMITATION_BY_LOCAL_USER";
315 return "LIMITATION_BY_USER";
317 return "LIMITATION_BY_RAIN";
319 return "LIMITATION_BY_TIMER";
321 return "LIMITATION_BY_SCD";
323 return "LIMITATION_BY_UPS";
325 return "LIMITATION_BY_UNKNOWN_DEVICE";
327 return "LIMITATION_BY_SAAC";
329 return "LIMITATION_BY_WIND";
331 return "LIMITATION_BY_MYSELF";
333 return "LIMITATION_BY_AUTOMATIC_CYCLE";
335 return "LIMITATION_BY_EMERGENCY";
337 return "UNKNOWN_RESULT_CODE";
344 return "unknown reply";
346 return "no errors detected";
348 return "no communication to node";
350 return "manually operated by a user";
352 return "node has been blocked by an object";
354 return "node contains the wrong system key";
356 return "node is locked on this priority level";
358 return "node stopped in another position than expected";
360 return "an error occurred during command execution";
362 return "no movement of the node parameter";
364 return "node is calibrating the parameters";
366 return "node power consumption is too high";
368 return "node power consumption is too low";
370 return "door open during lock command";
372 return "target was not reached in time";
374 return "node has gone into thermal protection mode";
376 return "node is not currently operational";
378 return "filter needs maintenance";
380 return "battery level is low";
382 return "node modified the requested target value";
384 return "node does not support the received mode";
386 return "node cannot move in the requested direction";
388 return "user action overrode the command";
390 return "dead bolt error";
392 return "node has gone into automatic cycle mode";
394 return "wrong load connected to node";
396 return "node cannot reach the requested colour";
398 return "node cannot reach the requested target position";
400 return "invalid index received";
402 return "command was overruled by a newer command";
404 return "node is waiting for power";
406 return "node is locked";
408 return "wrong position";
410 return "limits are not set";
412 return "intermediate position is not set";
414 return "requested value is out of range";
416 return "command priority too low, node rejected execution";
418 return "information-only result with unknown semantics";
420 return "parameter was limited by an unknown device";
422 return "parameter was limited by the local button";
424 return "parameter was limited by a remote control";
426 return "parameter was limited by a rain sensor";
428 return "parameter was limited by a timer";
430 return "parameter was limited by a security controlling actuator";
432 return "parameter was limited by a power supply";
434 return "parameter was limited by an unknown device";
436 return "parameter was limited by a standalone automatic controller";
438 return "parameter was limited by a wind sensor";
440 return "parameter was limited by the node itself";
442 return "parameter was limited by an automatic cycle";
444 return "parameter was limited by an emergency";
446 return "unknown result code";
static constexpr uint8_t ACEI_LEVEL_USER_HIGH
High-priority user controller.
const char * manufacturer_name(uint8_t id)
Get a human-readable manufacturer name from the protocol manufacturer byte.
static constexpr uint8_t RESULT_OUT_OF_RANGE
Requested value is out of range.
static constexpr uint8_t MANUFACTURER_HONEYWELL
Honeywell.
static constexpr uint8_t RESULT_CALIBRATING
Node is calibrating.
static constexpr uint8_t ACEI_LEVEL_COMFORT_1
Comfort automation level 1.
static constexpr uint8_t CMD_SET_SENSOR
Inject sensor value into a device.
static constexpr uint8_t CMD_DISCOVER_REQ
Broadcast discovery request.
static constexpr uint8_t CMD_SET_CONFIG1
Configure device to auto-send status updates.
static constexpr uint8_t RESULT_COLOUR_NOT_REACHABLE
Requested colour not reachable.
static constexpr uint8_t RESULT_LIMITATION_BY_AUTOMATIC_CYCLE
Parameter limited by an automatic cycle.
static constexpr uint8_t ORIGINATOR_UPS
Uninterruptible power supply action.
static constexpr uint8_t ORIGINATOR_LOCAL_LIGHT
Local light sensor.
static constexpr uint8_t CMD_KEY_TRANSFER
Send encrypted system key to device.
static constexpr uint8_t RESULT_TARGET_MODIFIED
Node modified the requested target value.
static constexpr uint8_t RESULT_REACHED_WRONG_POSITION
Node stopped in another position than expected.
static constexpr uint8_t RESULT_LIMITATION_BY_MYSELF
Parameter limited by the node itself.
static constexpr uint8_t CMD_SERVICE_STATUS_ACK
reference/iown-homecontrol lists this opcode with its body marked TBD — no description at all,...
static constexpr uint8_t CMD_ERROR_RESP
Error response to any command.
static constexpr uint8_t CMD_GET_NAME_RESP
Device name response.
static constexpr uint8_t RESULT_AUTOMATIC_CYCLE_ENGAGED
Node entered automatic cycle mode.
static constexpr uint8_t CMD_DISCOVER_CONFIRM_ACK
Device acknowledges confirmation.
static constexpr uint8_t CMD_ACTIVATE_MODE
Activate device mode (scene, ventilation) — requires auth.
static constexpr uint8_t MANUFACTURER_CIAT
CIAT (HVAC).
static constexpr uint8_t RESULT_MODE_NOT_IMPLEMENTED
Mode is not supported by the node.
static constexpr uint8_t ACEI_LEVEL_USER_DEFAULT
Default remote controller priority.
static constexpr uint8_t RESULT_COMMAND_OVERRULED
Command was overruled by a newer command.
const char * att_class_name(uint8_t att_class)
Get a human-readable turnaround time string for an ATT class value.
static constexpr uint8_t MANUFACTURER_VELUX
IO-Homecontrol manufacturer ID constants.
static constexpr uint8_t CMD_ADDRESS_RESP
Address assignment response: the device returns its own 3-byte backbone address, byte-identical to th...
static constexpr uint8_t RESULT_BAD_INDEX_RECEIVED
Invalid index received.
static constexpr uint8_t RESULT_MANUALLY_OPERATED
Manually operated by a user.
static constexpr uint8_t CMD_STATUS_UPDATE
Device-initiated status update (needs auth).
static constexpr uint8_t ACEI_LEVEL_AUTO_SAAC
Stand-alone automatic controller.
const char * power_save_mode_name(uint8_t mode)
Get a human-readable power save mode name.
static constexpr uint8_t CMD_UNKNOWN4A_REQ
Content undecoded.
static constexpr uint8_t ACEI_LEVEL_PROTECTION_SENSOR
Goods/environment protection via sensors.
static constexpr uint8_t RESULT_LIMITATION_BY_UNKNOWN_DEVICE
Parameter limited by an unknown device.
static constexpr uint8_t CMD_DISCOVER_ALT_REQ
Alternate discovery.
static constexpr uint8_t RESULT_LOCK_POSITION_OPEN
Lock command failed because the door is open.
static constexpr uint8_t CMD_PRIVATE2_RESP
Response to CMD_PRIVATE2. See CMD_PRIVATE2's comment.
static constexpr uint8_t RESULT_WRONG_SYSTEMKEY
Node contains the wrong system key.
static constexpr uint8_t CMD_GET_NAME
Request device name.
static constexpr uint8_t MANUFACTURER_RENSON
Renson (ventilation, sun protection).
static constexpr uint8_t POWER_SAVE_ALWAYS_ALIVE
Power save mode values from the Multi Information Byte.
const char * command_name(uint8_t cmd)
Get a human-readable name for any IO-Homecontrol command ID.
static constexpr uint8_t ORIGINATOR_LOAD_SHEDDING
Load-shedding manager.
static constexpr uint8_t ORIGINATOR_LIFESTYLE
Lifestyle scenario controller.
static constexpr uint8_t MANUFACTURER_NIKO
Niko (switches, home automation).
static constexpr uint8_t CMD_DISCOVER_SPE_RESP
Roll-call reply to CMD_DISCOVER_SPE_REQ, sent only by devices that already hold the requesting contro...
static constexpr uint8_t RESULT_LIMITATION_BY_EMERGENCY
Parameter limited by an emergency.
static constexpr uint8_t CMD_DISCOVER_ALT_RESP
Reply to an addressed (non-broadcast) CMD_DISCOVER_ALT_REQ, following a 0x3C/0x3D challenge-response.
static constexpr uint8_t RESULT_NODE_WAITING_FOR_POWER
Node is waiting for power.
static constexpr uint8_t ATT_CLASS_40S
Response within 40 seconds.
static constexpr uint8_t RESULT_BATTERY_LEVEL
Battery level is low.
static constexpr uint8_t CMD_WRITE_PRIVATE
Write private register (climate/heating devices).
static constexpr uint8_t RESULT_MOTION_TIME_TOO_LONG
Target was not reached in time.
static constexpr uint8_t RESULT_THERMAL_PROTECTION
Node entered thermal protection mode.
static constexpr uint8_t RESULT_POWER_CONSUMPTION_TOO_HIGH
Node power consumption is too high.
static constexpr uint8_t ORIGINATOR_MYSELF
Actuator decided to move by itself.
static constexpr uint8_t RESULT_ERROR_DURING_EXECUTION
Generic execution failure.
static constexpr uint8_t CMD_KEY_CONFIRM
Device confirms key was received.
static constexpr uint8_t CMD_WRITE_PRIVATE_ACK
Acknowledgment to CMD_WRITE_PRIVATE.
static constexpr uint8_t ACEI_LEVEL_PROTECTION_HUMAN
ACEI priority level values (0–7).
static constexpr uint8_t RESULT_PARAMETER_LIMITED
Parameter limited by an unknown device.
static constexpr uint8_t CMD_KEY_INIT
Initiate key transfer to device.
static constexpr uint8_t RESULT_LIMITATION_BY_RAIN
Parameter limited by a rain sensor.
static constexpr uint8_t RESULT_USER_ACTION
User action overrode the command.
static constexpr uint8_t CMD_GET_GENERAL_INFO3_RESP
Never captured on our own wire.
const char * command_result_description(uint8_t result)
Return a human-readable explanation for a CMD_ERROR_RESP result code.
static constexpr uint8_t CMD_GET_INFO1_RESP
Device general info 1 response (unimplemented; we only use 0x56/0x57).
static constexpr uint8_t ACEI_LEVEL_AUTO_DEFAULT
Default automatic level (lowest).
static constexpr uint8_t MANUFACTURER_OVERKIZ
OVERKIZ (Somfy connectivity platform).
const char * command_result_name(uint8_t result)
Return a stable symbolic name for a CMD_ERROR_RESP result code.
static constexpr uint8_t CMD_SET_NAME_RESP
Device-name write response.
static constexpr uint8_t RESULT_DEAD_BOLT_ERROR
Dead bolt error.
static constexpr uint8_t RESULT_NO_EXECUTION
Node did not move.
static constexpr uint8_t ATT_CLASS_20S
Response within 20 seconds.
static constexpr uint8_t ACEI_LEVEL_COMFORT_2
Comfort automation level 2.
static constexpr uint8_t ORIGINATOR_SECURITY
Security controlling device (SCD) action.
static constexpr uint8_t ORIGINATOR_EMERGENCY
Emergency command (never disabled).
static constexpr uint8_t RESULT_LIMITATION_BY_WIND
Parameter limited by a wind sensor.
static constexpr uint8_t RESULT_LIMITATION_BY_UPS
Parameter limited by a power supply.
static constexpr uint8_t CMD_DISCOVER_SPE_REQ
Broadcast roll-call answered by every device that already holds this controller's system key,...
static constexpr uint8_t CMD_EXECUTE
Set position/open/close/stop — requires authentication.
static constexpr uint8_t CMD_PRIVATE_RESP
Response to 0x00 and 0x03 (contains position data).
static constexpr uint8_t RESULT_LIMITATION_BY_USER
Parameter limited by a remote control.
static constexpr uint8_t RESULT_COMMAND_COMPLETED_OK
No errors detected.
static constexpr uint8_t ORIGINATOR_WIND_SENSOR
Wind sensor triggered the movement.
static constexpr uint8_t MANUFACTURER_ATLANTIC_GROUP
Atlantic Group (heating, hot water).
static constexpr uint8_t CMD_CHALLENGE_REQ
6-byte random challenge.
static constexpr uint8_t CMD_STATUS_UPDATE_RESP
Acknowledge status update.
static constexpr uint8_t RESULT_WRONG_POSITION
Node reports wrong position.
static constexpr uint8_t RESULT_COMMAND_INCOMPATIBLE_TO_MOVEMENT
Command cannot move the node that way.
static constexpr uint8_t RESULT_PRODUCT_NOT_OPERATIONAL
Node is not currently operational.
static constexpr uint8_t ATT_CLASS_5S
Actuator Turnaround Time (ATT) class values.
static constexpr uint8_t ATT_CLASS_10S
Response within 10 seconds.
const char * acei_level_name(uint8_t level)
Get a human-readable name for an ACEI priority level (0–7).
static constexpr uint8_t CMD_SET_NAME
Set device name (authenticated).
static constexpr uint8_t CMD_SET_CONFIG1_RESP
Config response.
static constexpr uint8_t CMD_LAUNCH_KEY_TRANSFER
Device-initiated ("pull") key transfer request.
static constexpr uint8_t CMD_DISCOVER_CONFIRM
Confirm discovery to device.
static constexpr uint8_t CMD_SEND_RAW_MESSAGE
reference/iown-homecontrol heads this "Send Raw Message / Find Hardware ("Service")" — its own...
static constexpr uint8_t CMD_DISCOVER_RESP
Device responds with its ID and type.
static constexpr uint8_t RESULT_POWER_CONSUMPTION_TOO_LOW
Node power consumption is too low.
static constexpr uint8_t RESULT_FILTER_MAINTENANCE_NEEDED
Filter needs maintenance.
static constexpr uint8_t MANUFACTURER_ASSA_ABLOY
ASSA ABLOY (locks, access).
static constexpr uint8_t RESULT_WRONG_LOAD_CONNECTED
Wrong load connected to node.
static constexpr uint8_t MANUFACTURER_HORMANN
Hörmann (garage doors, gates).
static constexpr uint8_t CMD_READ_GROUPS
reference/iown-homecontrol heads this "Actuator: Read Groups / "ActuatorAnyConfigIsLocal" (?...
static constexpr uint8_t POWER_SAVE_LOW_POWER
Device sleeps — needs long preamble to wake.
static constexpr uint8_t CMD_SET_SENSOR_ACK
Acknowledgment to CMD_SET_SENSOR.
static constexpr uint8_t CMD_GET_GENERAL_INFO3
Observed on the wire (tests/corpus/captures/issues/) with no payload.
static constexpr uint8_t ORIGINATOR_RAIN_SENSOR
Rain sensor triggered the movement.
static constexpr uint8_t CMD_IDENTIFY
Device physical identification / jog — requires authentication.
static constexpr uint8_t RESULT_LIMITATION_BY_SAAC
Parameter limited by a standalone automatic controller.
static constexpr uint8_t CMD_PRIVATE
Get device status — no authentication needed.
static constexpr uint8_t MANUFACTURER_WINDOW_MASTER
WINDOW MASTER (ventilation).
static constexpr uint8_t RESULT_LIMITATION_BY_TIMER
Parameter limited by a timer.
static constexpr uint8_t CMD_PRIVATE2
Content otherwise undecoded by the wire parser.
static constexpr uint8_t MANUFACTURER_SECUYOU
Secuyou (security).
static constexpr uint8_t CMD_GET_INFO2_RESP
Device type/model response.
static constexpr uint8_t RESULT_PRIORITY_LEVEL_LOCKED
Node is locked on this priority level.
static constexpr uint8_t ORIGINATOR_SAAC
Stand-alone automatic controller (SAAC).
static constexpr uint8_t ORIGINATOR_USER_REMOTE
User sent command from a remote control.
static constexpr uint8_t CMD_CHALLENGE_RESP
HMAC proof answering a 0x3C.
bool is_limitation_result(uint8_t result)
Check whether a result code represents an environmental or control limitation.
static constexpr uint8_t CMD_GET_INFO2
Request device type/model info.
const char * originator_name(uint8_t originator)
Get a human-readable name for a command originator byte.
static constexpr uint8_t RESULT_UNKNOWN_STATUS_REPLY
Device returned an unknown status reply.
static constexpr uint8_t CMD_GET_INFO1
Request device general info 1 (unimplemented; we only use 0x56/0x57).
static constexpr uint8_t MANUFACTURER_SOMFY
Somfy (shutters, awnings, blinds).
static constexpr uint8_t ORIGINATOR_ENVIRONMENT
Unspecified environment sensor.
static constexpr uint8_t RESULT_LIMITS_NOT_SET
Device limits are not set.
static constexpr uint8_t CMD_REBOOT
reference/iown-homecontrol heads this "Reboot / Service Status" — two candidate names,...
static constexpr uint8_t RESULT_NODE_LOCKED
Node is locked.
static constexpr uint8_t RESULT_PRIORITY_LOCKED_NON_EXEC
Priority locked, command not executed (ACEI priority too low).
static constexpr uint8_t ORIGINATOR_TIMER
Timer or schedule triggered the movement.
static constexpr uint8_t RESULT_NO_CONTACT
No communication to node.
static constexpr uint8_t ORIGINATOR_SMART_CONTROLLER
Smart function controller.
static constexpr uint8_t RESULT_BLOCKED
Node blocked by an object.
static constexpr uint8_t CMD_ADDRESS_REQ
Address assignment request.
static constexpr uint8_t RESULT_INFORMATION_CODE
Information-only code with unknown semantics.
static constexpr uint8_t ORIGINATOR_AUTOMATIC_CYCLE
Automatic cycle / external access.
static constexpr uint8_t RESULT_LIMITATION_BY_LOCAL_USER
Parameter limited by local button.
static constexpr uint8_t RESULT_TARGET_NOT_REACHABLE
Requested target not reachable.
static constexpr uint8_t RESULT_IP_NOT_SET
Intermediate position is not set.
static constexpr uint8_t CMD_UNKNOWN4A_RESP
Observed on the wire (tests/corpus/captures/issues/) answering an ON_OFF_SWITCH-type device's traffic...
static constexpr uint8_t ORIGINATOR_LOCAL_USER
Command originator codes indicating what or who triggered a command.
static constexpr uint8_t RESULT_LIMITATION_BY_SCD
Parameter limited by a security actuator.
IO-Homecontrol command IDs, result codes and protocol enumerations.