From d9009c2b5bcd413db487594f15b55f8c5dc0f3d3 Mon Sep 17 00:00:00 2001 From: Martin Hjelmare Date: Mon, 28 Sep 2026 15:29:41 +0200 Subject: [PATCH] Refactor Z-Wave multi endpoint device benchmark snapshot (#183442) --- .../snapshots/test_endpoint_benchmarks.ambr | 2212 +++-------------- .../zwave_js/test_endpoint_benchmarks.py | 86 +- 2 files changed, 434 insertions(+), 1864 deletions(-) diff --git a/tests/components/zwave_js/snapshots/test_endpoint_benchmarks.ambr b/tests/components/zwave_js/snapshots/test_endpoint_benchmarks.ambr index f33f7f5eeed7..4c10d00c4d32 100644 --- a/tests/components/zwave_js/snapshots/test_endpoint_benchmarks.ambr +++ b/tests/components/zwave_js/snapshots/test_endpoint_benchmarks.ambr @@ -1,1870 +1,438 @@ # serializer version: 1 # name: test_device_tree[fibaro_fgr223] dict({ - 'child_devices': list([ - ]), - 'node_device': dict({ - 'entities': list([ - dict({ - 'disabled_by': 'None', - 'entity_id': 'binary_sensor.test_location_fgr_223_test_cover_over_current_detected', - 'original_name': 'Over-current detected', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'binary_sensor.test_location_fgr_223_test_cover_system_hardware_failure_with_failure_code', - 'original_name': 'System hardware failure (with failure code)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'button.test_location_fgr_223_test_cover_idle_power_management_over_current_status', - 'original_name': 'Idle Power Management Over-current status', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'button.test_location_fgr_223_test_cover_idle_system_hardware_status', - 'original_name': 'Idle System Hardware status', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'button.test_location_fgr_223_test_cover_ping', - 'original_name': 'Ping', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'button.test_location_fgr_223_test_cover_reset_accumulated_values', - 'original_name': 'Reset accumulated values', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'cover.test_location_fgr_223_test_cover', - 'original_name': '', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'cover.test_location_fgr_223_test_cover_2', - 'original_name': '(2)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.test_location_fgr_223_test_cover_alarm_1_event_state_parameters', - 'original_name': 'Alarm #1: Event/State Parameters', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.test_location_fgr_223_test_cover_alarm_1_notification_status', - 'original_name': 'Alarm #1: Notification Status', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.test_location_fgr_223_test_cover_alarm_1_notification_type', - 'original_name': 'Alarm #1: Notification Type', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.test_location_fgr_223_test_cover_alarm_2_event_state_parameters', - 'original_name': 'Alarm #2: Event/State Parameters', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.test_location_fgr_223_test_cover_alarm_2_notification_status', - 'original_name': 'Alarm #2: Notification Status', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.test_location_fgr_223_test_cover_alarm_2_notification_type', - 'original_name': 'Alarm #2: Notification Type', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.test_location_fgr_223_test_cover_alarm_3_event_state_parameters', - 'original_name': 'Alarm #3: Event/State Parameters', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.test_location_fgr_223_test_cover_alarm_3_notification_status', - 'original_name': 'Alarm #3: Notification Status', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.test_location_fgr_223_test_cover_alarm_3_notification_type', - 'original_name': 'Alarm #3: Notification Type', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.test_location_fgr_223_test_cover_alarm_4_event_state_parameters', - 'original_name': 'Alarm #4: Event/State Parameters', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.test_location_fgr_223_test_cover_alarm_4_notification_status', - 'original_name': 'Alarm #4: Notification Status', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.test_location_fgr_223_test_cover_alarm_4_notification_type', - 'original_name': 'Alarm #4: Notification Type', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.test_location_fgr_223_test_cover_alarm_5_event_state_parameters', - 'original_name': 'Alarm #5: Event/State Parameters', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.test_location_fgr_223_test_cover_alarm_5_notification_status', - 'original_name': 'Alarm #5: Notification Status', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.test_location_fgr_223_test_cover_alarm_5_notification_type', - 'original_name': 'Alarm #5: Notification Type', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.test_location_fgr_223_test_cover_delay_motor_stop', - 'original_name': 'Delay motor stop', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.test_location_fgr_223_test_cover_energy_reports_on_change', - 'original_name': 'Energy reports - on change', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.test_location_fgr_223_test_cover_energy_reports_periodic', - 'original_name': 'Energy reports - periodic', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.test_location_fgr_223_test_cover_motor_operation_detection', - 'original_name': 'Motor operation detection', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.test_location_fgr_223_test_cover_power_reports_on_change', - 'original_name': 'Power reports - on change', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.test_location_fgr_223_test_cover_power_reports_periodic', - 'original_name': 'Power reports - periodic', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.test_location_fgr_223_test_cover_time_of_down_movement', - 'original_name': 'Time of down movement', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.test_location_fgr_223_test_cover_time_of_up_movement', - 'original_name': 'Time of up movement', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.test_location_fgr_223_test_cover_venetian_blind_time_of_full_turn_of_the_slats', - 'original_name': 'Venetian blind - time of full turn of the slats', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'select.test_location_fgr_223_test_cover_alarm_1_action', - 'original_name': 'Alarm #1: Action', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'select.test_location_fgr_223_test_cover_alarm_2_action', - 'original_name': 'Alarm #2: Action', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'select.test_location_fgr_223_test_cover_alarm_3_action', - 'original_name': 'Alarm #3: Action', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'select.test_location_fgr_223_test_cover_alarm_4_action', - 'original_name': 'Alarm #4: Action', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'select.test_location_fgr_223_test_cover_alarm_5_action', - 'original_name': 'Alarm #5: Action', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'select.test_location_fgr_223_test_cover_force_calibration', - 'original_name': 'Force calibration', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'select.test_location_fgr_223_test_cover_inputs_orientation', - 'original_name': 'Inputs orientation', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'select.test_location_fgr_223_test_cover_local_protection_state', - 'original_name': 'Local protection state', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'select.test_location_fgr_223_test_cover_measuring_power_consumed_by_the_device_itself', - 'original_name': 'Measuring power consumed by the device itself', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'select.test_location_fgr_223_test_cover_operating_mode', - 'original_name': 'Operating mode', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'select.test_location_fgr_223_test_cover_outputs_orientation', - 'original_name': 'Outputs orientation', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'select.test_location_fgr_223_test_cover_rf_protection_state', - 'original_name': 'RF protection state', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'select.test_location_fgr_223_test_cover_set_slats_back_to_previous_position', - 'original_name': 'Set slats back to previous position', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'select.test_location_fgr_223_test_cover_switch_type', - 'original_name': 'Switch type', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.test_location_fgr_223_test_cover_alarm_level', - 'original_name': 'Alarm Level', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.test_location_fgr_223_test_cover_alarm_type', - 'original_name': 'Alarm Type', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.test_location_fgr_223_test_cover_commands_dropped_rx', - 'original_name': 'Commands dropped (RX)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.test_location_fgr_223_test_cover_commands_dropped_tx', - 'original_name': 'Commands dropped (TX)', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'sensor.test_location_fgr_223_test_cover_electric_consumption_kwh', - 'original_name': 'Electric Consumption [kWh]', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'sensor.test_location_fgr_223_test_cover_electric_consumption_w', - 'original_name': 'Electric Consumption [W]', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.test_location_fgr_223_test_cover_last_seen', - 'original_name': 'Last seen', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'sensor.test_location_fgr_223_test_cover_node_status', - 'original_name': 'Node status', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.test_location_fgr_223_test_cover_round_trip_time', - 'original_name': 'Round trip time', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.test_location_fgr_223_test_cover_signal_strength', - 'original_name': 'Signal strength', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.test_location_fgr_223_test_cover_successful_commands_rx', - 'original_name': 'Successful commands (RX)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.test_location_fgr_223_test_cover_successful_commands_tx', - 'original_name': 'Successful commands (TX)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.test_location_fgr_223_test_cover_timed_out_responses', - 'original_name': 'Timed out responses', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'switch.test_location_fgr_223_test_cover_s1_scenes_hold_down_release', - 'original_name': 'S1 scenes: Hold down / Release', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'switch.test_location_fgr_223_test_cover_s1_scenes_pressed_1_time', - 'original_name': 'S1 scenes: Pressed 1 time', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'switch.test_location_fgr_223_test_cover_s1_scenes_pressed_2_times', - 'original_name': 'S1 scenes: Pressed 2 times', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'switch.test_location_fgr_223_test_cover_s1_scenes_pressed_3_time', - 'original_name': 'S1 scenes: Pressed 3 time', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'switch.test_location_fgr_223_test_cover_s2_scenes_hold_down_release', - 'original_name': 'S2 scenes: Hold down / Release', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'switch.test_location_fgr_223_test_cover_s2_scenes_pressed_1_time', - 'original_name': 'S2 scenes: Pressed 1 time', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'switch.test_location_fgr_223_test_cover_s2_scenes_pressed_2_times', - 'original_name': 'S2 scenes: Pressed 2 times', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'switch.test_location_fgr_223_test_cover_s2_scenes_pressed_3_time', - 'original_name': 'S2 scenes: Pressed 3 time', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'update.test_location_fgr_223_test_cover_firmware', - 'original_name': 'Firmware', - }), - ]), - 'identifiers': list([ - 'zwave_js:3245146787-10', - 'zwave_js:3245146787-10-271:771:4096', - ]), + '3245146787-10': dict({ + 'children': dict({ + }), + 'entities': dict({ + 'binary_sensor.test_location_fgr_223_test_cover_over_current_detected': 'Over-current detected', + 'binary_sensor.test_location_fgr_223_test_cover_system_hardware_failure_with_failure_code': 'System hardware failure (with failure code)', + 'button.test_location_fgr_223_test_cover_idle_power_management_over_current_status': 'Idle Power Management Over-current status', + 'button.test_location_fgr_223_test_cover_idle_system_hardware_status': 'Idle System Hardware status', + 'button.test_location_fgr_223_test_cover_ping': 'Ping', + 'button.test_location_fgr_223_test_cover_reset_accumulated_values': 'Reset accumulated values', + 'cover.test_location_fgr_223_test_cover': '', + 'cover.test_location_fgr_223_test_cover_2': '(2)', + 'number.test_location_fgr_223_test_cover_alarm_1_event_state_parameters': 'Alarm #1: Event/State Parameters', + 'number.test_location_fgr_223_test_cover_alarm_1_notification_status': 'Alarm #1: Notification Status', + 'number.test_location_fgr_223_test_cover_alarm_1_notification_type': 'Alarm #1: Notification Type', + 'number.test_location_fgr_223_test_cover_alarm_2_event_state_parameters': 'Alarm #2: Event/State Parameters', + 'number.test_location_fgr_223_test_cover_alarm_2_notification_status': 'Alarm #2: Notification Status', + 'number.test_location_fgr_223_test_cover_alarm_2_notification_type': 'Alarm #2: Notification Type', + 'number.test_location_fgr_223_test_cover_alarm_3_event_state_parameters': 'Alarm #3: Event/State Parameters', + 'number.test_location_fgr_223_test_cover_alarm_3_notification_status': 'Alarm #3: Notification Status', + 'number.test_location_fgr_223_test_cover_alarm_3_notification_type': 'Alarm #3: Notification Type', + 'number.test_location_fgr_223_test_cover_alarm_4_event_state_parameters': 'Alarm #4: Event/State Parameters', + 'number.test_location_fgr_223_test_cover_alarm_4_notification_status': 'Alarm #4: Notification Status', + 'number.test_location_fgr_223_test_cover_alarm_4_notification_type': 'Alarm #4: Notification Type', + 'number.test_location_fgr_223_test_cover_alarm_5_event_state_parameters': 'Alarm #5: Event/State Parameters', + 'number.test_location_fgr_223_test_cover_alarm_5_notification_status': 'Alarm #5: Notification Status', + 'number.test_location_fgr_223_test_cover_alarm_5_notification_type': 'Alarm #5: Notification Type', + 'number.test_location_fgr_223_test_cover_delay_motor_stop': 'Delay motor stop', + 'number.test_location_fgr_223_test_cover_energy_reports_on_change': 'Energy reports - on change', + 'number.test_location_fgr_223_test_cover_energy_reports_periodic': 'Energy reports - periodic', + 'number.test_location_fgr_223_test_cover_motor_operation_detection': 'Motor operation detection', + 'number.test_location_fgr_223_test_cover_power_reports_on_change': 'Power reports - on change', + 'number.test_location_fgr_223_test_cover_power_reports_periodic': 'Power reports - periodic', + 'number.test_location_fgr_223_test_cover_time_of_down_movement': 'Time of down movement', + 'number.test_location_fgr_223_test_cover_time_of_up_movement': 'Time of up movement', + 'number.test_location_fgr_223_test_cover_venetian_blind_time_of_full_turn_of_the_slats': 'Venetian blind - time of full turn of the slats', + 'select.test_location_fgr_223_test_cover_alarm_1_action': 'Alarm #1: Action', + 'select.test_location_fgr_223_test_cover_alarm_2_action': 'Alarm #2: Action', + 'select.test_location_fgr_223_test_cover_alarm_3_action': 'Alarm #3: Action', + 'select.test_location_fgr_223_test_cover_alarm_4_action': 'Alarm #4: Action', + 'select.test_location_fgr_223_test_cover_alarm_5_action': 'Alarm #5: Action', + 'select.test_location_fgr_223_test_cover_force_calibration': 'Force calibration', + 'select.test_location_fgr_223_test_cover_inputs_orientation': 'Inputs orientation', + 'select.test_location_fgr_223_test_cover_local_protection_state': 'Local protection state', + 'select.test_location_fgr_223_test_cover_measuring_power_consumed_by_the_device_itself': 'Measuring power consumed by the device itself', + 'select.test_location_fgr_223_test_cover_operating_mode': 'Operating mode', + 'select.test_location_fgr_223_test_cover_outputs_orientation': 'Outputs orientation', + 'select.test_location_fgr_223_test_cover_rf_protection_state': 'RF protection state', + 'select.test_location_fgr_223_test_cover_set_slats_back_to_previous_position': 'Set slats back to previous position', + 'select.test_location_fgr_223_test_cover_switch_type': 'Switch type', + 'sensor.test_location_fgr_223_test_cover_alarm_level': 'Alarm Level', + 'sensor.test_location_fgr_223_test_cover_alarm_type': 'Alarm Type', + 'sensor.test_location_fgr_223_test_cover_commands_dropped_rx': 'Commands dropped (RX)', + 'sensor.test_location_fgr_223_test_cover_commands_dropped_tx': 'Commands dropped (TX)', + 'sensor.test_location_fgr_223_test_cover_electric_consumption_kwh': 'Electric Consumption [kWh]', + 'sensor.test_location_fgr_223_test_cover_electric_consumption_w': 'Electric Consumption [W]', + 'sensor.test_location_fgr_223_test_cover_last_seen': 'Last seen', + 'sensor.test_location_fgr_223_test_cover_node_status': 'Node status', + 'sensor.test_location_fgr_223_test_cover_round_trip_time': 'Round trip time', + 'sensor.test_location_fgr_223_test_cover_signal_strength': 'Signal strength', + 'sensor.test_location_fgr_223_test_cover_successful_commands_rx': 'Successful commands (RX)', + 'sensor.test_location_fgr_223_test_cover_successful_commands_tx': 'Successful commands (TX)', + 'sensor.test_location_fgr_223_test_cover_timed_out_responses': 'Timed out responses', + 'switch.test_location_fgr_223_test_cover_s1_scenes_hold_down_release': 'S1 scenes: Hold down / Release', + 'switch.test_location_fgr_223_test_cover_s1_scenes_pressed_1_time': 'S1 scenes: Pressed 1 time', + 'switch.test_location_fgr_223_test_cover_s1_scenes_pressed_2_times': 'S1 scenes: Pressed 2 times', + 'switch.test_location_fgr_223_test_cover_s1_scenes_pressed_3_time': 'S1 scenes: Pressed 3 time', + 'switch.test_location_fgr_223_test_cover_s2_scenes_hold_down_release': 'S2 scenes: Hold down / Release', + 'switch.test_location_fgr_223_test_cover_s2_scenes_pressed_1_time': 'S2 scenes: Pressed 1 time', + 'switch.test_location_fgr_223_test_cover_s2_scenes_pressed_2_times': 'S2 scenes: Pressed 2 times', + 'switch.test_location_fgr_223_test_cover_s2_scenes_pressed_3_time': 'S2 scenes: Pressed 3 time', + 'update.test_location_fgr_223_test_cover_firmware': 'Firmware', + }), 'name': 'fgr 223 test cover', }), }) # --- # name: test_device_tree[heatit_z_trm2fx] dict({ - 'child_devices': list([ - ]), - 'node_device': dict({ - 'entities': list([ - dict({ - 'disabled_by': 'None', - 'entity_id': 'button.floor_thermostat_ping', - 'original_name': 'Ping', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'climate.floor_thermostat', - 'original_name': '', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'light.floor_thermostat_basic', - 'original_name': 'Basic', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'light.floor_thermostat_basic_3', - 'original_name': 'Basic (3)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.floor_thermostat_air_a2_maximum_temperature_limit_ahi', - 'original_name': 'Air (A2) maximum temperature limit (AHi)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.floor_thermostat_air_a2_minimum_temperature_limit_alo', - 'original_name': 'Air (A2) minimum temperature limit (ALo)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.floor_thermostat_button_brightness_active_state', - 'original_name': 'Button brightness - active state', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.floor_thermostat_button_brightness_dimmed_state', - 'original_name': 'Button brightness - dimmed state', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.floor_thermostat_cooling_setpoint_cool', - 'original_name': 'Cooling setpoint (COOL)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.floor_thermostat_display_brightness_active_state', - 'original_name': 'Display brightness - active state', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.floor_thermostat_display_brightness_dimmed_state', - 'original_name': 'Display brightness - dimmed state', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.floor_thermostat_energy_saving_mode_setpoint_eco', - 'original_name': 'Energy saving mode setpoint (ECO)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.floor_thermostat_external_sensor_calibration', - 'original_name': 'External sensor calibration', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.floor_thermostat_floor_maximum_temperature_fhi', - 'original_name': 'Floor maximum temperature (FHi)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.floor_thermostat_floor_minimum_temperature_limit_flo', - 'original_name': 'Floor minimum temperature limit (FLo)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.floor_thermostat_floor_sensor_calibration', - 'original_name': 'Floor sensor calibration', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.floor_thermostat_heating_mode_setpoint_co', - 'original_name': 'Heating mode setpoint (CO)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.floor_thermostat_meter_report_delta_value', - 'original_name': 'Meter report delta value', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.floor_thermostat_meter_report_interval', - 'original_name': 'Meter report interval', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.floor_thermostat_temperature_control_hysteresis_diff_i', - 'original_name': 'Temperature control hysteresis (DIFF I)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.floor_thermostat_temperature_report_hysteresis', - 'original_name': 'Temperature report hysteresis', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.floor_thermostat_temperature_report_interval', - 'original_name': 'Temperature report interval', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'select.floor_thermostat_floor_sensor_type', - 'original_name': 'Floor sensor type', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'select.floor_thermostat_operation_mode', - 'original_name': 'Operation mode', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'select.floor_thermostat_sensor_mode', - 'original_name': 'Sensor mode', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'select.floor_thermostat_temperature_display', - 'original_name': 'Temperature display', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'sensor.floor_thermostat_air_temperature', - 'original_name': 'Air temperature', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'sensor.floor_thermostat_air_temperature_3', - 'original_name': 'Air temperature (3)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.floor_thermostat_commands_dropped_rx', - 'original_name': 'Commands dropped (RX)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.floor_thermostat_commands_dropped_tx', - 'original_name': 'Commands dropped (TX)', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'sensor.floor_thermostat_electric_consumed_kwh', - 'original_name': 'Electric Consumed [kWh]', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'sensor.floor_thermostat_electric_consumed_v', - 'original_name': 'Electric Consumed [V]', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'sensor.floor_thermostat_electric_consumed_w', - 'original_name': 'Electric Consumed [W]', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.floor_thermostat_last_seen', - 'original_name': 'Last seen', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'sensor.floor_thermostat_node_status', - 'original_name': 'Node status', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.floor_thermostat_round_trip_time', - 'original_name': 'Round trip time', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.floor_thermostat_signal_strength', - 'original_name': 'Signal strength', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.floor_thermostat_successful_commands_rx', - 'original_name': 'Successful commands (RX)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.floor_thermostat_successful_commands_tx', - 'original_name': 'Successful commands (TX)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.floor_thermostat_timed_out_responses', - 'original_name': 'Timed out responses', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'switch.floor_thermostat', - 'original_name': '', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'update.floor_thermostat_firmware', - 'original_name': 'Firmware', - }), - ]), - 'identifiers': list([ - 'zwave_js:3245146787-26', - 'zwave_js:3245146787-26-411:3:514', - ]), + '3245146787-26': dict({ + 'children': dict({ + }), + 'entities': dict({ + 'button.floor_thermostat_ping': 'Ping', + 'climate.floor_thermostat': '', + 'light.floor_thermostat_basic': 'Basic', + 'light.floor_thermostat_basic_3': 'Basic (3)', + 'number.floor_thermostat_air_a2_maximum_temperature_limit_ahi': 'Air (A2) maximum temperature limit (AHi)', + 'number.floor_thermostat_air_a2_minimum_temperature_limit_alo': 'Air (A2) minimum temperature limit (ALo)', + 'number.floor_thermostat_button_brightness_active_state': 'Button brightness - active state', + 'number.floor_thermostat_button_brightness_dimmed_state': 'Button brightness - dimmed state', + 'number.floor_thermostat_cooling_setpoint_cool': 'Cooling setpoint (COOL)', + 'number.floor_thermostat_display_brightness_active_state': 'Display brightness - active state', + 'number.floor_thermostat_display_brightness_dimmed_state': 'Display brightness - dimmed state', + 'number.floor_thermostat_energy_saving_mode_setpoint_eco': 'Energy saving mode setpoint (ECO)', + 'number.floor_thermostat_external_sensor_calibration': 'External sensor calibration', + 'number.floor_thermostat_floor_maximum_temperature_fhi': 'Floor maximum temperature (FHi)', + 'number.floor_thermostat_floor_minimum_temperature_limit_flo': 'Floor minimum temperature limit (FLo)', + 'number.floor_thermostat_floor_sensor_calibration': 'Floor sensor calibration', + 'number.floor_thermostat_heating_mode_setpoint_co': 'Heating mode setpoint (CO)', + 'number.floor_thermostat_meter_report_delta_value': 'Meter report delta value', + 'number.floor_thermostat_meter_report_interval': 'Meter report interval', + 'number.floor_thermostat_temperature_control_hysteresis_diff_i': 'Temperature control hysteresis (DIFF I)', + 'number.floor_thermostat_temperature_report_hysteresis': 'Temperature report hysteresis', + 'number.floor_thermostat_temperature_report_interval': 'Temperature report interval', + 'select.floor_thermostat_floor_sensor_type': 'Floor sensor type', + 'select.floor_thermostat_operation_mode': 'Operation mode', + 'select.floor_thermostat_sensor_mode': 'Sensor mode', + 'select.floor_thermostat_temperature_display': 'Temperature display', + 'sensor.floor_thermostat_air_temperature': 'Air temperature', + 'sensor.floor_thermostat_air_temperature_3': 'Air temperature (3)', + 'sensor.floor_thermostat_commands_dropped_rx': 'Commands dropped (RX)', + 'sensor.floor_thermostat_commands_dropped_tx': 'Commands dropped (TX)', + 'sensor.floor_thermostat_electric_consumed_kwh': 'Electric Consumed [kWh]', + 'sensor.floor_thermostat_electric_consumed_v': 'Electric Consumed [V]', + 'sensor.floor_thermostat_electric_consumed_w': 'Electric Consumed [W]', + 'sensor.floor_thermostat_last_seen': 'Last seen', + 'sensor.floor_thermostat_node_status': 'Node status', + 'sensor.floor_thermostat_round_trip_time': 'Round trip time', + 'sensor.floor_thermostat_signal_strength': 'Signal strength', + 'sensor.floor_thermostat_successful_commands_rx': 'Successful commands (RX)', + 'sensor.floor_thermostat_successful_commands_tx': 'Successful commands (TX)', + 'sensor.floor_thermostat_timed_out_responses': 'Timed out responses', + 'switch.floor_thermostat': '', + 'update.floor_thermostat_firmware': 'Firmware', + }), 'name': 'Floor thermostat', }), }) # --- # name: test_device_tree[heatit_z_trm3] dict({ - 'child_devices': list([ - ]), - 'node_device': dict({ - 'entities': list([ - dict({ - 'disabled_by': 'None', - 'entity_id': 'button.floor_thermostat_ping', - 'original_name': 'Ping', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'climate.floor_thermostat', - 'original_name': '', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.floor_thermostat_air_maximum_temperature_limit_ahi', - 'original_name': 'Air maximum temperature limit (AHi)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.floor_thermostat_air_minimum_temperature_limit_alo', - 'original_name': 'Air minimum temperature limit (ALo)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.floor_thermostat_button_brightness_active_state', - 'original_name': 'Button brightness - active state', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.floor_thermostat_button_brightness_dimmed_state', - 'original_name': 'Button brightness - dimmed state', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.floor_thermostat_display_brightness_active_state', - 'original_name': 'Display brightness - active state', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.floor_thermostat_display_brightness_dimmed_state', - 'original_name': 'Display brightness - dimmed state', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.floor_thermostat_external_sensor_calibration', - 'original_name': 'External sensor calibration', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.floor_thermostat_floor_maximum_temperature_fhi', - 'original_name': 'Floor maximum temperature (FHi)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.floor_thermostat_floor_minimum_temperature_limit_flo', - 'original_name': 'Floor minimum temperature limit (FLo)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.floor_thermostat_floor_sensor_calibration', - 'original_name': 'Floor sensor calibration', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.floor_thermostat_meter_report_delta_value', - 'original_name': 'Meter report delta value', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.floor_thermostat_meter_report_interval', - 'original_name': 'Meter report interval', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.floor_thermostat_room_sensor_calibration', - 'original_name': 'Room sensor calibration', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.floor_thermostat_temperature_control_hysteresis_diff_i', - 'original_name': 'Temperature control hysteresis (DIFF I)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.floor_thermostat_temperature_report_hysteresis', - 'original_name': 'Temperature report hysteresis', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.floor_thermostat_temperature_report_interval', - 'original_name': 'Temperature report interval', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'select.floor_thermostat_floor_sensor_type', - 'original_name': 'Floor sensor type', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'select.floor_thermostat_sensor_mode', - 'original_name': 'Sensor mode', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'select.floor_thermostat_temperature_display', - 'original_name': 'Temperature display', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'sensor.floor_thermostat_air_temperature', - 'original_name': 'Air temperature', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'sensor.floor_thermostat_air_temperature_3', - 'original_name': 'Air temperature (3)', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'sensor.floor_thermostat_air_temperature_4', - 'original_name': 'Air temperature (4)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.floor_thermostat_commands_dropped_rx', - 'original_name': 'Commands dropped (RX)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.floor_thermostat_commands_dropped_tx', - 'original_name': 'Commands dropped (TX)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.floor_thermostat_last_seen', - 'original_name': 'Last seen', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'sensor.floor_thermostat_node_status', - 'original_name': 'Node status', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.floor_thermostat_round_trip_time', - 'original_name': 'Round trip time', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.floor_thermostat_signal_strength', - 'original_name': 'Signal strength', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.floor_thermostat_successful_commands_rx', - 'original_name': 'Successful commands (RX)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.floor_thermostat_successful_commands_tx', - 'original_name': 'Successful commands (TX)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.floor_thermostat_timed_out_responses', - 'original_name': 'Timed out responses', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'sensor.floor_thermostat_value_electric_consumed', - 'original_name': 'Value (Electric, Consumed)', - }), - ]), - 'identifiers': list([ - 'zwave_js:3245146787-24', - 'zwave_js:3245146787-24-411:3:515', - ]), + '3245146787-24': dict({ + 'children': dict({ + }), + 'entities': dict({ + 'button.floor_thermostat_ping': 'Ping', + 'climate.floor_thermostat': '', + 'number.floor_thermostat_air_maximum_temperature_limit_ahi': 'Air maximum temperature limit (AHi)', + 'number.floor_thermostat_air_minimum_temperature_limit_alo': 'Air minimum temperature limit (ALo)', + 'number.floor_thermostat_button_brightness_active_state': 'Button brightness - active state', + 'number.floor_thermostat_button_brightness_dimmed_state': 'Button brightness - dimmed state', + 'number.floor_thermostat_display_brightness_active_state': 'Display brightness - active state', + 'number.floor_thermostat_display_brightness_dimmed_state': 'Display brightness - dimmed state', + 'number.floor_thermostat_external_sensor_calibration': 'External sensor calibration', + 'number.floor_thermostat_floor_maximum_temperature_fhi': 'Floor maximum temperature (FHi)', + 'number.floor_thermostat_floor_minimum_temperature_limit_flo': 'Floor minimum temperature limit (FLo)', + 'number.floor_thermostat_floor_sensor_calibration': 'Floor sensor calibration', + 'number.floor_thermostat_meter_report_delta_value': 'Meter report delta value', + 'number.floor_thermostat_meter_report_interval': 'Meter report interval', + 'number.floor_thermostat_room_sensor_calibration': 'Room sensor calibration', + 'number.floor_thermostat_temperature_control_hysteresis_diff_i': 'Temperature control hysteresis (DIFF I)', + 'number.floor_thermostat_temperature_report_hysteresis': 'Temperature report hysteresis', + 'number.floor_thermostat_temperature_report_interval': 'Temperature report interval', + 'select.floor_thermostat_floor_sensor_type': 'Floor sensor type', + 'select.floor_thermostat_sensor_mode': 'Sensor mode', + 'select.floor_thermostat_temperature_display': 'Temperature display', + 'sensor.floor_thermostat_air_temperature': 'Air temperature', + 'sensor.floor_thermostat_air_temperature_3': 'Air temperature (3)', + 'sensor.floor_thermostat_air_temperature_4': 'Air temperature (4)', + 'sensor.floor_thermostat_commands_dropped_rx': 'Commands dropped (RX)', + 'sensor.floor_thermostat_commands_dropped_tx': 'Commands dropped (TX)', + 'sensor.floor_thermostat_last_seen': 'Last seen', + 'sensor.floor_thermostat_node_status': 'Node status', + 'sensor.floor_thermostat_round_trip_time': 'Round trip time', + 'sensor.floor_thermostat_signal_strength': 'Signal strength', + 'sensor.floor_thermostat_successful_commands_rx': 'Successful commands (RX)', + 'sensor.floor_thermostat_successful_commands_tx': 'Successful commands (TX)', + 'sensor.floor_thermostat_timed_out_responses': 'Timed out responses', + 'sensor.floor_thermostat_value_electric_consumed': 'Value (Electric, Consumed)', + }), 'name': 'Floor thermostat', }), }) # --- # name: test_device_tree[heatit_z_trm6] dict({ - 'child_devices': list([ - ]), - 'node_device': dict({ - 'entities': list([ - dict({ - 'disabled_by': 'None', - 'entity_id': 'binary_sensor.floor_thermostat_over_load_detected', - 'original_name': 'Over-load detected', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'binary_sensor.floor_thermostat_overheat_detected', - 'original_name': 'Overheat detected', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'button.floor_thermostat_identify', - 'original_name': 'Identify', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'button.floor_thermostat_idle_heat_alarm_heat_sensor_status', - 'original_name': 'Idle Heat Alarm Heat sensor status', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'button.floor_thermostat_idle_power_management_over_load_status', - 'original_name': 'Idle Power Management Over-load status', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'button.floor_thermostat_ping', - 'original_name': 'Ping', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'button.floor_thermostat_reset_accumulated_values', - 'original_name': 'Reset accumulated values', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'climate.floor_thermostat', - 'original_name': '', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.floor_thermostat_active_display_brightness', - 'original_name': 'Active Display Brightness', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.floor_thermostat_cooling_setpoint', - 'original_name': 'Cooling Setpoint', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.floor_thermostat_eco_setpoint', - 'original_name': 'Eco Setpoint', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.floor_thermostat_external_sensor_calibration', - 'original_name': 'External Sensor Calibration', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.floor_thermostat_external_sensor_max_temp_limit', - 'original_name': 'External Sensor Max Temp Limit', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.floor_thermostat_external_sensor_min_temp_limit', - 'original_name': 'External Sensor Min Temp Limit', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.floor_thermostat_floor_sensor_calibration', - 'original_name': 'Floor Sensor Calibration', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.floor_thermostat_floor_sensor_max_temp_limit', - 'original_name': 'Floor Sensor Max Temp Limit', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.floor_thermostat_floor_sensor_min_temp_limit', - 'original_name': 'Floor Sensor Min Temp Limit', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.floor_thermostat_heating_setpoint', - 'original_name': 'Heating Setpoint', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.floor_thermostat_indicator_value', - 'original_name': 'Indicator value', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.floor_thermostat_internal_sensor_calibration', - 'original_name': 'Internal Sensor Calibration', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.floor_thermostat_internal_sensor_max_temp_limit', - 'original_name': 'Internal Sensor Max Temp Limit', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.floor_thermostat_internal_sensor_min_temp_limit', - 'original_name': 'Internal Sensor Min Temp Limit', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.floor_thermostat_load_power', - 'original_name': 'Load Power', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.floor_thermostat_meter_report_interval', - 'original_name': 'Meter Report Interval', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.floor_thermostat_power_regulator_active_time', - 'original_name': 'Power Regulator Active Time', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.floor_thermostat_standby_display_brightness', - 'original_name': 'Standby Display Brightness', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.floor_thermostat_temperature_control_hysteresis', - 'original_name': 'Temperature Control Hysteresis', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.floor_thermostat_temperature_report_hysteresis', - 'original_name': 'Temperature Report Hysteresis', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.floor_thermostat_temperature_report_interval', - 'original_name': 'Temperature Report Interval', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.floor_thermostat_thermostat_state_report_interval', - 'original_name': 'Thermostat State Report Interval', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.floor_thermostat_turn_on_delay_after_error', - 'original_name': 'Turn On Delay After Error', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'select.floor_thermostat_external_sensor_resistance', - 'original_name': 'External Sensor Resistance', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'select.floor_thermostat_local_control', - 'original_name': 'Local Control', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'select.floor_thermostat_local_protection_state', - 'original_name': 'Local protection state', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'select.floor_thermostat_open_window_detection', - 'original_name': 'Open Window Detection', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'select.floor_thermostat_operating_mode', - 'original_name': 'Operating Mode', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'select.floor_thermostat_regulation_mode', - 'original_name': 'Regulation Mode', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'select.floor_thermostat_sensor_mode', - 'original_name': 'Sensor Mode', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'select.floor_thermostat_temperature_display', - 'original_name': 'Temperature Display', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'sensor.floor_thermostat_air_temperature', - 'original_name': 'Air temperature', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'sensor.floor_thermostat_air_temperature_3', - 'original_name': 'Air temperature (3)', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'sensor.floor_thermostat_air_temperature_4', - 'original_name': 'Air temperature (4)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.floor_thermostat_alarm_level', - 'original_name': 'Alarm Level', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.floor_thermostat_alarm_type', - 'original_name': 'Alarm Type', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.floor_thermostat_commands_dropped_rx', - 'original_name': 'Commands dropped (RX)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.floor_thermostat_commands_dropped_tx', - 'original_name': 'Commands dropped (TX)', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'sensor.floor_thermostat_electric_consumption_kwh', - 'original_name': 'Electric Consumption [kWh]', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'sensor.floor_thermostat_electric_consumption_w', - 'original_name': 'Electric Consumption [W]', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.floor_thermostat_last_seen', - 'original_name': 'Last seen', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'sensor.floor_thermostat_node_status', - 'original_name': 'Node status', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.floor_thermostat_round_trip_time', - 'original_name': 'Round trip time', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.floor_thermostat_signal_strength', - 'original_name': 'Signal strength', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.floor_thermostat_successful_commands_rx', - 'original_name': 'Successful commands (RX)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.floor_thermostat_successful_commands_tx', - 'original_name': 'Successful commands (TX)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.floor_thermostat_timed_out_responses', - 'original_name': 'Timed out responses', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'update.floor_thermostat_firmware', - 'original_name': 'Firmware', - }), - ]), - 'identifiers': list([ - 'zwave_js:3245146787-101', - 'zwave_js:3245146787-101-411:48:12289', - ]), + '3245146787-101': dict({ + 'children': dict({ + }), + 'entities': dict({ + 'binary_sensor.floor_thermostat_over_load_detected': 'Over-load detected', + 'binary_sensor.floor_thermostat_overheat_detected': 'Overheat detected', + 'button.floor_thermostat_identify': 'Identify', + 'button.floor_thermostat_idle_heat_alarm_heat_sensor_status': 'Idle Heat Alarm Heat sensor status', + 'button.floor_thermostat_idle_power_management_over_load_status': 'Idle Power Management Over-load status', + 'button.floor_thermostat_ping': 'Ping', + 'button.floor_thermostat_reset_accumulated_values': 'Reset accumulated values', + 'climate.floor_thermostat': '', + 'number.floor_thermostat_active_display_brightness': 'Active Display Brightness', + 'number.floor_thermostat_cooling_setpoint': 'Cooling Setpoint', + 'number.floor_thermostat_eco_setpoint': 'Eco Setpoint', + 'number.floor_thermostat_external_sensor_calibration': 'External Sensor Calibration', + 'number.floor_thermostat_external_sensor_max_temp_limit': 'External Sensor Max Temp Limit', + 'number.floor_thermostat_external_sensor_min_temp_limit': 'External Sensor Min Temp Limit', + 'number.floor_thermostat_floor_sensor_calibration': 'Floor Sensor Calibration', + 'number.floor_thermostat_floor_sensor_max_temp_limit': 'Floor Sensor Max Temp Limit', + 'number.floor_thermostat_floor_sensor_min_temp_limit': 'Floor Sensor Min Temp Limit', + 'number.floor_thermostat_heating_setpoint': 'Heating Setpoint', + 'number.floor_thermostat_indicator_value': 'Indicator value', + 'number.floor_thermostat_internal_sensor_calibration': 'Internal Sensor Calibration', + 'number.floor_thermostat_internal_sensor_max_temp_limit': 'Internal Sensor Max Temp Limit', + 'number.floor_thermostat_internal_sensor_min_temp_limit': 'Internal Sensor Min Temp Limit', + 'number.floor_thermostat_load_power': 'Load Power', + 'number.floor_thermostat_meter_report_interval': 'Meter Report Interval', + 'number.floor_thermostat_power_regulator_active_time': 'Power Regulator Active Time', + 'number.floor_thermostat_standby_display_brightness': 'Standby Display Brightness', + 'number.floor_thermostat_temperature_control_hysteresis': 'Temperature Control Hysteresis', + 'number.floor_thermostat_temperature_report_hysteresis': 'Temperature Report Hysteresis', + 'number.floor_thermostat_temperature_report_interval': 'Temperature Report Interval', + 'number.floor_thermostat_thermostat_state_report_interval': 'Thermostat State Report Interval', + 'number.floor_thermostat_turn_on_delay_after_error': 'Turn On Delay After Error', + 'select.floor_thermostat_external_sensor_resistance': 'External Sensor Resistance', + 'select.floor_thermostat_local_control': 'Local Control', + 'select.floor_thermostat_local_protection_state': 'Local protection state', + 'select.floor_thermostat_open_window_detection': 'Open Window Detection', + 'select.floor_thermostat_operating_mode': 'Operating Mode', + 'select.floor_thermostat_regulation_mode': 'Regulation Mode', + 'select.floor_thermostat_sensor_mode': 'Sensor Mode', + 'select.floor_thermostat_temperature_display': 'Temperature Display', + 'sensor.floor_thermostat_air_temperature': 'Air temperature', + 'sensor.floor_thermostat_air_temperature_3': 'Air temperature (3)', + 'sensor.floor_thermostat_air_temperature_4': 'Air temperature (4)', + 'sensor.floor_thermostat_alarm_level': 'Alarm Level', + 'sensor.floor_thermostat_alarm_type': 'Alarm Type', + 'sensor.floor_thermostat_commands_dropped_rx': 'Commands dropped (RX)', + 'sensor.floor_thermostat_commands_dropped_tx': 'Commands dropped (TX)', + 'sensor.floor_thermostat_electric_consumption_kwh': 'Electric Consumption [kWh]', + 'sensor.floor_thermostat_electric_consumption_w': 'Electric Consumption [W]', + 'sensor.floor_thermostat_last_seen': 'Last seen', + 'sensor.floor_thermostat_node_status': 'Node status', + 'sensor.floor_thermostat_round_trip_time': 'Round trip time', + 'sensor.floor_thermostat_signal_strength': 'Signal strength', + 'sensor.floor_thermostat_successful_commands_rx': 'Successful commands (RX)', + 'sensor.floor_thermostat_successful_commands_tx': 'Successful commands (TX)', + 'sensor.floor_thermostat_timed_out_responses': 'Timed out responses', + 'update.floor_thermostat_firmware': 'Firmware', + }), 'name': 'Floor Thermostat', }), }) # --- # name: test_device_tree[inovelli_lzw36] dict({ - 'child_devices': list([ - ]), - 'node_device': dict({ - 'entities': list([ - dict({ - 'disabled_by': 'None', - 'entity_id': 'button.family_room_combo_ping', - 'original_name': 'Ping', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'button.family_room_combo_reset_accumulated_values', - 'original_name': 'Reset accumulated values', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'fan.family_room_combo_2', - 'original_name': '(2)', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'light.family_room_combo', - 'original_name': '', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.family_room_combo_active_power_reports', - 'original_name': 'Active Power Reports', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.family_room_combo_auto_off_fan_timer', - 'original_name': 'Auto Off Fan Timer', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.family_room_combo_auto_off_light_timer', - 'original_name': 'Auto Off Light Timer', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.family_room_combo_default_light_level_local', - 'original_name': 'Default Light Level (Local)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.family_room_combo_default_light_level_z_wave', - 'original_name': 'Default Light Level (Z-Wave)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.family_room_combo_energy_reports', - 'original_name': 'Energy Reports', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.family_room_combo_fan_led_indicator_color', - 'original_name': 'Fan LED Indicator Color', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.family_room_combo_fan_led_strip_effect_color', - 'original_name': 'Fan LED Strip Effect Color', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.family_room_combo_fan_led_strip_effect_duration', - 'original_name': 'Fan LED Strip Effect Duration', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.family_room_combo_fan_led_strip_effect_intensity', - 'original_name': 'Fan LED Strip Effect Intensity', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.family_room_combo_fan_led_strip_intensity', - 'original_name': 'Fan LED Strip Intensity', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.family_room_combo_fan_led_strip_intensity_when_off', - 'original_name': 'Fan LED Strip Intensity (When OFF)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.family_room_combo_fan_led_strip_timeout', - 'original_name': 'Fan LED Strip Timeout', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.family_room_combo_fan_state_after_power_restored', - 'original_name': 'Fan State After Power Restored', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.family_room_combo_light_dimming_speed', - 'original_name': 'Light Dimming Speed', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.family_room_combo_light_dimming_speed_from_switch', - 'original_name': 'Light Dimming Speed (From Switch)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.family_room_combo_light_led_indicator_color', - 'original_name': 'Light LED Indicator Color', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.family_room_combo_light_led_strip_effect_color', - 'original_name': 'Light LED Strip Effect Color', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.family_room_combo_light_led_strip_effect_duration', - 'original_name': 'Light LED Strip Effect Duration', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.family_room_combo_light_led_strip_effect_intensity', - 'original_name': 'Light LED Strip Effect Intensity', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.family_room_combo_light_led_strip_intensity', - 'original_name': 'Light LED Strip Intensity', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.family_room_combo_light_led_strip_intensity_when_off', - 'original_name': 'Light LED Strip Intensity (When OFF)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.family_room_combo_light_led_strip_timeout', - 'original_name': 'Light LED Strip Timeout', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.family_room_combo_light_ramp_rate', - 'original_name': 'Light Ramp Rate', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.family_room_combo_light_ramp_rate_from_switch', - 'original_name': 'Light Ramp Rate (From Switch)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.family_room_combo_light_state_after_power_restored', - 'original_name': 'Light State After Power Restored', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.family_room_combo_maximum_fan_level', - 'original_name': 'Maximum Fan Level', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.family_room_combo_maximum_light_level', - 'original_name': 'Maximum Light Level', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.family_room_combo_minimum_fan_level', - 'original_name': 'Minimum Fan Level', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.family_room_combo_minimum_light_level', - 'original_name': 'Minimum Light Level', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.family_room_combo_periodic_power_energy_reports', - 'original_name': 'Periodic Power & Energy Reports', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'select.family_room_combo_default_fan_level_local', - 'original_name': 'Default Fan Level (Local)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'select.family_room_combo_default_fan_level_z_wave', - 'original_name': 'Default Fan Level (Z-Wave)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'select.family_room_combo_fan_led_strip_effect', - 'original_name': 'Fan LED Strip Effect', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'select.family_room_combo_instant_on', - 'original_name': 'Instant On', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'select.family_room_combo_light_led_strip_effect', - 'original_name': 'Light LED Strip Effect', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'select.family_room_combo_local_protection', - 'original_name': 'Local Protection', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'select.family_room_combo_local_protection_state', - 'original_name': 'Local protection state', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'select.family_room_combo_rf_protection_state', - 'original_name': 'RF protection state', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.family_room_combo_commands_dropped_rx', - 'original_name': 'Commands dropped (RX)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.family_room_combo_commands_dropped_tx', - 'original_name': 'Commands dropped (TX)', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'sensor.family_room_combo_electric_consumed_kwh', - 'original_name': 'Electric Consumed [kWh]', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'sensor.family_room_combo_electric_consumed_w', - 'original_name': 'Electric Consumed [W]', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.family_room_combo_last_seen', - 'original_name': 'Last seen', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'sensor.family_room_combo_node_status', - 'original_name': 'Node status', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.family_room_combo_round_trip_time', - 'original_name': 'Round trip time', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.family_room_combo_signal_strength', - 'original_name': 'Signal strength', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.family_room_combo_successful_commands_rx', - 'original_name': 'Successful commands (RX)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.family_room_combo_successful_commands_tx', - 'original_name': 'Successful commands (TX)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.family_room_combo_timed_out_responses', - 'original_name': 'Timed out responses', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'update.family_room_combo_firmware', - 'original_name': 'Firmware', - }), - ]), - 'identifiers': list([ - 'zwave_js:3245146787-19', - 'zwave_js:3245146787-19-798:14:1', - ]), + '3245146787-19': dict({ + 'children': dict({ + }), + 'entities': dict({ + 'button.family_room_combo_ping': 'Ping', + 'button.family_room_combo_reset_accumulated_values': 'Reset accumulated values', + 'fan.family_room_combo_2': '(2)', + 'light.family_room_combo': '', + 'number.family_room_combo_active_power_reports': 'Active Power Reports', + 'number.family_room_combo_auto_off_fan_timer': 'Auto Off Fan Timer', + 'number.family_room_combo_auto_off_light_timer': 'Auto Off Light Timer', + 'number.family_room_combo_default_light_level_local': 'Default Light Level (Local)', + 'number.family_room_combo_default_light_level_z_wave': 'Default Light Level (Z-Wave)', + 'number.family_room_combo_energy_reports': 'Energy Reports', + 'number.family_room_combo_fan_led_indicator_color': 'Fan LED Indicator Color', + 'number.family_room_combo_fan_led_strip_effect_color': 'Fan LED Strip Effect Color', + 'number.family_room_combo_fan_led_strip_effect_duration': 'Fan LED Strip Effect Duration', + 'number.family_room_combo_fan_led_strip_effect_intensity': 'Fan LED Strip Effect Intensity', + 'number.family_room_combo_fan_led_strip_intensity': 'Fan LED Strip Intensity', + 'number.family_room_combo_fan_led_strip_intensity_when_off': 'Fan LED Strip Intensity (When OFF)', + 'number.family_room_combo_fan_led_strip_timeout': 'Fan LED Strip Timeout', + 'number.family_room_combo_fan_state_after_power_restored': 'Fan State After Power Restored', + 'number.family_room_combo_light_dimming_speed': 'Light Dimming Speed', + 'number.family_room_combo_light_dimming_speed_from_switch': 'Light Dimming Speed (From Switch)', + 'number.family_room_combo_light_led_indicator_color': 'Light LED Indicator Color', + 'number.family_room_combo_light_led_strip_effect_color': 'Light LED Strip Effect Color', + 'number.family_room_combo_light_led_strip_effect_duration': 'Light LED Strip Effect Duration', + 'number.family_room_combo_light_led_strip_effect_intensity': 'Light LED Strip Effect Intensity', + 'number.family_room_combo_light_led_strip_intensity': 'Light LED Strip Intensity', + 'number.family_room_combo_light_led_strip_intensity_when_off': 'Light LED Strip Intensity (When OFF)', + 'number.family_room_combo_light_led_strip_timeout': 'Light LED Strip Timeout', + 'number.family_room_combo_light_ramp_rate': 'Light Ramp Rate', + 'number.family_room_combo_light_ramp_rate_from_switch': 'Light Ramp Rate (From Switch)', + 'number.family_room_combo_light_state_after_power_restored': 'Light State After Power Restored', + 'number.family_room_combo_maximum_fan_level': 'Maximum Fan Level', + 'number.family_room_combo_maximum_light_level': 'Maximum Light Level', + 'number.family_room_combo_minimum_fan_level': 'Minimum Fan Level', + 'number.family_room_combo_minimum_light_level': 'Minimum Light Level', + 'number.family_room_combo_periodic_power_energy_reports': 'Periodic Power & Energy Reports', + 'select.family_room_combo_default_fan_level_local': 'Default Fan Level (Local)', + 'select.family_room_combo_default_fan_level_z_wave': 'Default Fan Level (Z-Wave)', + 'select.family_room_combo_fan_led_strip_effect': 'Fan LED Strip Effect', + 'select.family_room_combo_instant_on': 'Instant On', + 'select.family_room_combo_light_led_strip_effect': 'Light LED Strip Effect', + 'select.family_room_combo_local_protection': 'Local Protection', + 'select.family_room_combo_local_protection_state': 'Local protection state', + 'select.family_room_combo_rf_protection_state': 'RF protection state', + 'sensor.family_room_combo_commands_dropped_rx': 'Commands dropped (RX)', + 'sensor.family_room_combo_commands_dropped_tx': 'Commands dropped (TX)', + 'sensor.family_room_combo_electric_consumed_kwh': 'Electric Consumed [kWh]', + 'sensor.family_room_combo_electric_consumed_w': 'Electric Consumed [W]', + 'sensor.family_room_combo_last_seen': 'Last seen', + 'sensor.family_room_combo_node_status': 'Node status', + 'sensor.family_room_combo_round_trip_time': 'Round trip time', + 'sensor.family_room_combo_signal_strength': 'Signal strength', + 'sensor.family_room_combo_successful_commands_rx': 'Successful commands (RX)', + 'sensor.family_room_combo_successful_commands_tx': 'Successful commands (TX)', + 'sensor.family_room_combo_timed_out_responses': 'Timed out responses', + 'update.family_room_combo_firmware': 'Firmware', + }), 'name': 'family_room_combo', }), }) # --- # name: test_device_tree[merten_507801] dict({ - 'child_devices': list([ - ]), - 'node_device': dict({ - 'entities': list([ - dict({ - 'disabled_by': 'None', - 'entity_id': 'button.connect_roller_shutter_ping', - 'original_name': 'Ping', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'cover.connect_roller_shutter', - 'original_name': '', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'cover.connect_roller_shutter_2', - 'original_name': '(2)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.connect_roller_shutter_changeover_delay', - 'original_name': 'Changeover Delay', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.connect_roller_shutter_travel_time_down_byte_1', - 'original_name': 'Travel Time Down, Byte 1', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.connect_roller_shutter_travel_time_down_byte_2', - 'original_name': 'Travel Time Down, Byte 2', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.connect_roller_shutter_travel_time_up_byte_1', - 'original_name': 'Travel Time Up, Byte 1', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.connect_roller_shutter_travel_time_up_byte_2', - 'original_name': 'Travel Time Up, Byte 2', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'select.connect_roller_shutter_local_protection_state', - 'original_name': 'Local protection state', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'select.connect_roller_shutter_local_protection_state_2', - 'original_name': 'Local protection state (2)', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'select.connect_roller_shutter_rf_protection_state', - 'original_name': 'RF protection state', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'select.connect_roller_shutter_rf_protection_state_2', - 'original_name': 'RF protection state (2)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.connect_roller_shutter_commands_dropped_rx', - 'original_name': 'Commands dropped (RX)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.connect_roller_shutter_commands_dropped_tx', - 'original_name': 'Commands dropped (TX)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.connect_roller_shutter_last_seen', - 'original_name': 'Last seen', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'sensor.connect_roller_shutter_node_status', - 'original_name': 'Node status', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.connect_roller_shutter_round_trip_time', - 'original_name': 'Round trip time', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.connect_roller_shutter_signal_strength', - 'original_name': 'Signal strength', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.connect_roller_shutter_successful_commands_rx', - 'original_name': 'Successful commands (RX)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.connect_roller_shutter_successful_commands_tx', - 'original_name': 'Successful commands (TX)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.connect_roller_shutter_timed_out_responses', - 'original_name': 'Timed out responses', - }), - ]), - 'identifiers': list([ - 'zwave_js:3245146787-41', - 'zwave_js:3245146787-41-122:32771:1', - ]), + '3245146787-41': dict({ + 'children': dict({ + }), + 'entities': dict({ + 'button.connect_roller_shutter_ping': 'Ping', + 'cover.connect_roller_shutter': '', + 'cover.connect_roller_shutter_2': '(2)', + 'number.connect_roller_shutter_changeover_delay': 'Changeover Delay', + 'number.connect_roller_shutter_travel_time_down_byte_1': 'Travel Time Down, Byte 1', + 'number.connect_roller_shutter_travel_time_down_byte_2': 'Travel Time Down, Byte 2', + 'number.connect_roller_shutter_travel_time_up_byte_1': 'Travel Time Up, Byte 1', + 'number.connect_roller_shutter_travel_time_up_byte_2': 'Travel Time Up, Byte 2', + 'select.connect_roller_shutter_local_protection_state': 'Local protection state', + 'select.connect_roller_shutter_local_protection_state_2': 'Local protection state (2)', + 'select.connect_roller_shutter_rf_protection_state': 'RF protection state', + 'select.connect_roller_shutter_rf_protection_state_2': 'RF protection state (2)', + 'sensor.connect_roller_shutter_commands_dropped_rx': 'Commands dropped (RX)', + 'sensor.connect_roller_shutter_commands_dropped_tx': 'Commands dropped (TX)', + 'sensor.connect_roller_shutter_last_seen': 'Last seen', + 'sensor.connect_roller_shutter_node_status': 'Node status', + 'sensor.connect_roller_shutter_round_trip_time': 'Round trip time', + 'sensor.connect_roller_shutter_signal_strength': 'Signal strength', + 'sensor.connect_roller_shutter_successful_commands_rx': 'Successful commands (RX)', + 'sensor.connect_roller_shutter_successful_commands_tx': 'Successful commands (TX)', + 'sensor.connect_roller_shutter_timed_out_responses': 'Timed out responses', + }), 'name': 'Connect Roller Shutter', }), }) # --- # name: test_device_tree[shelly_qnsh_001p10] dict({ - 'child_devices': list([ - ]), - 'node_device': dict({ - 'entities': list([ - dict({ - 'disabled_by': 'None', - 'entity_id': 'binary_sensor.wave_shutter_over_current_detected', - 'original_name': 'Over-current detected', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'binary_sensor.wave_shutter_over_current_detected_2', - 'original_name': 'Over-current detected (2)', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'binary_sensor.wave_shutter_overheat_detected', - 'original_name': 'Overheat detected', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'binary_sensor.wave_shutter_overheat_detected_2', - 'original_name': 'Overheat detected (2)', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'binary_sensor.wave_shutter_system_hardware_failure', - 'original_name': 'System hardware failure', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'binary_sensor.wave_shutter_system_hardware_failure_2', - 'original_name': 'System hardware failure (2)', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'button.wave_shutter_identify', - 'original_name': 'Identify', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'button.wave_shutter_idle_heat_alarm_heat_sensor_status', - 'original_name': 'Idle Heat Alarm Heat sensor status', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'button.wave_shutter_idle_heat_alarm_heat_sensor_status_2', - 'original_name': 'Idle Heat Alarm Heat sensor status (2)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'button.wave_shutter_idle_power_management_over_current_status', - 'original_name': 'Idle Power Management Over-current status', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'button.wave_shutter_idle_power_management_over_current_status_2', - 'original_name': 'Idle Power Management Over-current status (2)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'button.wave_shutter_idle_system_hardware_status', - 'original_name': 'Idle System Hardware status', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'button.wave_shutter_idle_system_hardware_status_2', - 'original_name': 'Idle System Hardware status (2)', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'button.wave_shutter_ping', - 'original_name': 'Ping', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'button.wave_shutter_reset_accumulated_values', - 'original_name': 'Reset accumulated values', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'button.wave_shutter_reset_accumulated_values_2', - 'original_name': 'Reset accumulated values (2)', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'button.wave_shutter_reset_electric', - 'original_name': 'Reset (Electric)', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'button.wave_shutter_reset_electric_2', - 'original_name': 'Reset (Electric) (2)', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'cover.wave_shutter', - 'original_name': '', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'cover.wave_shutter_2', - 'original_name': '(2)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.wave_shutter_alarm_conf_co', - 'original_name': 'Alarm conf. - CO', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.wave_shutter_alarm_conf_heat', - 'original_name': 'Alarm conf. - Heat', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.wave_shutter_alarm_conf_smoke', - 'original_name': 'Alarm conf. - Smoke', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.wave_shutter_alarm_conf_water', - 'original_name': 'Alarm conf. - Water', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.wave_shutter_delay_motor_stop', - 'original_name': 'Delay Motor Stop', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.wave_shutter_down_time', - 'original_name': 'Down time', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.wave_shutter_factory_reset', - 'original_name': 'Factory reset', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.wave_shutter_indicator_value', - 'original_name': 'Indicator value', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.wave_shutter_motor_moving_time', - 'original_name': 'Motor Moving Time', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.wave_shutter_motor_operation_detection', - 'original_name': 'Motor Operation Detection', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.wave_shutter_next_move_delay', - 'original_name': 'Next move delay', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.wave_shutter_power_change_report_threshold', - 'original_name': 'Power Change Report Threshold', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.wave_shutter_power_consumption_measurement_delay', - 'original_name': 'Power Consumption Measurement Delay', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.wave_shutter_slats_turning_time_offset', - 'original_name': 'Slats turning time offset', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.wave_shutter_up_time', - 'original_name': 'Up time', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'number.wave_shutter_venetian_mode_turning_time', - 'original_name': 'Venetian Mode: Turning Time', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'select.wave_shutter_operating_mode', - 'original_name': 'Operating Mode', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'select.wave_shutter_shutter_calibration', - 'original_name': 'Shutter Calibration', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'select.wave_shutter_sw1_switch_type', - 'original_name': 'SW1 Switch Type', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'select.wave_shutter_swap_inputs', - 'original_name': 'Swap Inputs', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'select.wave_shutter_swap_outputs', - 'original_name': 'Swap Outputs', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'select.wave_shutter_venetian_mode_restore_slats_position_after_moving', - 'original_name': 'Venetian Mode: Restore Slats Position After Moving', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.wave_shutter_alarm_level', - 'original_name': 'Alarm Level', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.wave_shutter_alarm_level_2', - 'original_name': 'Alarm Level (2)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.wave_shutter_alarm_type', - 'original_name': 'Alarm Type', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.wave_shutter_alarm_type_2', - 'original_name': 'Alarm Type (2)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.wave_shutter_commands_dropped_rx', - 'original_name': 'Commands dropped (RX)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.wave_shutter_commands_dropped_tx', - 'original_name': 'Commands dropped (TX)', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'sensor.wave_shutter_electric_consumption_kwh', - 'original_name': 'Electric Consumption [kWh]', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'sensor.wave_shutter_electric_consumption_kwh_2', - 'original_name': 'Electric Consumption [kWh] (2)', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'sensor.wave_shutter_electric_consumption_w', - 'original_name': 'Electric Consumption [W]', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'sensor.wave_shutter_electric_consumption_w_2', - 'original_name': 'Electric Consumption [W] (2)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.wave_shutter_last_seen', - 'original_name': 'Last seen', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'sensor.wave_shutter_node_status', - 'original_name': 'Node status', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.wave_shutter_round_trip_time', - 'original_name': 'Round trip time', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.wave_shutter_signal_strength', - 'original_name': 'Signal strength', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.wave_shutter_successful_commands_rx', - 'original_name': 'Successful commands (RX)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.wave_shutter_successful_commands_tx', - 'original_name': 'Successful commands (TX)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.wave_shutter_timed_out_responses', - 'original_name': 'Timed out responses', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'update.wave_shutter_firmware', - 'original_name': 'Firmware', - }), - ]), - 'identifiers': list([ - 'zwave_js:3245146787-5', - 'zwave_js:3245146787-5-1120:3:130', - ]), + '3245146787-5': dict({ + 'children': dict({ + }), + 'entities': dict({ + 'binary_sensor.wave_shutter_over_current_detected': 'Over-current detected', + 'binary_sensor.wave_shutter_over_current_detected_2': 'Over-current detected (2)', + 'binary_sensor.wave_shutter_overheat_detected': 'Overheat detected', + 'binary_sensor.wave_shutter_overheat_detected_2': 'Overheat detected (2)', + 'binary_sensor.wave_shutter_system_hardware_failure': 'System hardware failure', + 'binary_sensor.wave_shutter_system_hardware_failure_2': 'System hardware failure (2)', + 'button.wave_shutter_identify': 'Identify', + 'button.wave_shutter_idle_heat_alarm_heat_sensor_status': 'Idle Heat Alarm Heat sensor status', + 'button.wave_shutter_idle_heat_alarm_heat_sensor_status_2': 'Idle Heat Alarm Heat sensor status (2)', + 'button.wave_shutter_idle_power_management_over_current_status': 'Idle Power Management Over-current status', + 'button.wave_shutter_idle_power_management_over_current_status_2': 'Idle Power Management Over-current status (2)', + 'button.wave_shutter_idle_system_hardware_status': 'Idle System Hardware status', + 'button.wave_shutter_idle_system_hardware_status_2': 'Idle System Hardware status (2)', + 'button.wave_shutter_ping': 'Ping', + 'button.wave_shutter_reset_accumulated_values': 'Reset accumulated values', + 'button.wave_shutter_reset_accumulated_values_2': 'Reset accumulated values (2)', + 'button.wave_shutter_reset_electric': 'Reset (Electric)', + 'button.wave_shutter_reset_electric_2': 'Reset (Electric) (2)', + 'cover.wave_shutter': '', + 'cover.wave_shutter_2': '(2)', + 'number.wave_shutter_alarm_conf_co': 'Alarm conf. - CO', + 'number.wave_shutter_alarm_conf_heat': 'Alarm conf. - Heat', + 'number.wave_shutter_alarm_conf_smoke': 'Alarm conf. - Smoke', + 'number.wave_shutter_alarm_conf_water': 'Alarm conf. - Water', + 'number.wave_shutter_delay_motor_stop': 'Delay Motor Stop', + 'number.wave_shutter_down_time': 'Down time', + 'number.wave_shutter_factory_reset': 'Factory reset', + 'number.wave_shutter_indicator_value': 'Indicator value', + 'number.wave_shutter_motor_moving_time': 'Motor Moving Time', + 'number.wave_shutter_motor_operation_detection': 'Motor Operation Detection', + 'number.wave_shutter_next_move_delay': 'Next move delay', + 'number.wave_shutter_power_change_report_threshold': 'Power Change Report Threshold', + 'number.wave_shutter_power_consumption_measurement_delay': 'Power Consumption Measurement Delay', + 'number.wave_shutter_slats_turning_time_offset': 'Slats turning time offset', + 'number.wave_shutter_up_time': 'Up time', + 'number.wave_shutter_venetian_mode_turning_time': 'Venetian Mode: Turning Time', + 'select.wave_shutter_operating_mode': 'Operating Mode', + 'select.wave_shutter_shutter_calibration': 'Shutter Calibration', + 'select.wave_shutter_sw1_switch_type': 'SW1 Switch Type', + 'select.wave_shutter_swap_inputs': 'Swap Inputs', + 'select.wave_shutter_swap_outputs': 'Swap Outputs', + 'select.wave_shutter_venetian_mode_restore_slats_position_after_moving': 'Venetian Mode: Restore Slats Position After Moving', + 'sensor.wave_shutter_alarm_level': 'Alarm Level', + 'sensor.wave_shutter_alarm_level_2': 'Alarm Level (2)', + 'sensor.wave_shutter_alarm_type': 'Alarm Type', + 'sensor.wave_shutter_alarm_type_2': 'Alarm Type (2)', + 'sensor.wave_shutter_commands_dropped_rx': 'Commands dropped (RX)', + 'sensor.wave_shutter_commands_dropped_tx': 'Commands dropped (TX)', + 'sensor.wave_shutter_electric_consumption_kwh': 'Electric Consumption [kWh]', + 'sensor.wave_shutter_electric_consumption_kwh_2': 'Electric Consumption [kWh] (2)', + 'sensor.wave_shutter_electric_consumption_w': 'Electric Consumption [W]', + 'sensor.wave_shutter_electric_consumption_w_2': 'Electric Consumption [W] (2)', + 'sensor.wave_shutter_last_seen': 'Last seen', + 'sensor.wave_shutter_node_status': 'Node status', + 'sensor.wave_shutter_round_trip_time': 'Round trip time', + 'sensor.wave_shutter_signal_strength': 'Signal strength', + 'sensor.wave_shutter_successful_commands_rx': 'Successful commands (RX)', + 'sensor.wave_shutter_successful_commands_tx': 'Successful commands (TX)', + 'sensor.wave_shutter_timed_out_responses': 'Timed out responses', + 'update.wave_shutter_firmware': 'Firmware', + }), 'name': 'Wave Shutter', }), }) # --- # name: test_device_tree[vision_zl7432] dict({ - 'child_devices': list([ - ]), - 'node_device': dict({ - 'entities': list([ - dict({ - 'disabled_by': 'None', - 'entity_id': 'button.in_wall_dual_relay_switch_ping', - 'original_name': 'Ping', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'light.in_wall_dual_relay_switch_basic', - 'original_name': 'Basic', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'light.in_wall_dual_relay_switch_basic_2', - 'original_name': 'Basic (2)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.in_wall_dual_relay_switch_commands_dropped_rx', - 'original_name': 'Commands dropped (RX)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.in_wall_dual_relay_switch_commands_dropped_tx', - 'original_name': 'Commands dropped (TX)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.in_wall_dual_relay_switch_last_seen', - 'original_name': 'Last seen', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'sensor.in_wall_dual_relay_switch_node_status', - 'original_name': 'Node status', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.in_wall_dual_relay_switch_round_trip_time', - 'original_name': 'Round trip time', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.in_wall_dual_relay_switch_signal_strength', - 'original_name': 'Signal strength', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.in_wall_dual_relay_switch_successful_commands_rx', - 'original_name': 'Successful commands (RX)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.in_wall_dual_relay_switch_successful_commands_tx', - 'original_name': 'Successful commands (TX)', - }), - dict({ - 'disabled_by': 'integration', - 'entity_id': 'sensor.in_wall_dual_relay_switch_timed_out_responses', - 'original_name': 'Timed out responses', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'switch.in_wall_dual_relay_switch', - 'original_name': '', - }), - dict({ - 'disabled_by': 'None', - 'entity_id': 'switch.in_wall_dual_relay_switch_2', - 'original_name': '(2)', - }), - ]), - 'identifiers': list([ - 'zwave_js:3245146787-7', - 'zwave_js:3245146787-7-265:8215:5911', - ]), + '3245146787-7': dict({ + 'children': dict({ + }), + 'entities': dict({ + 'button.in_wall_dual_relay_switch_ping': 'Ping', + 'light.in_wall_dual_relay_switch_basic': 'Basic', + 'light.in_wall_dual_relay_switch_basic_2': 'Basic (2)', + 'sensor.in_wall_dual_relay_switch_commands_dropped_rx': 'Commands dropped (RX)', + 'sensor.in_wall_dual_relay_switch_commands_dropped_tx': 'Commands dropped (TX)', + 'sensor.in_wall_dual_relay_switch_last_seen': 'Last seen', + 'sensor.in_wall_dual_relay_switch_node_status': 'Node status', + 'sensor.in_wall_dual_relay_switch_round_trip_time': 'Round trip time', + 'sensor.in_wall_dual_relay_switch_signal_strength': 'Signal strength', + 'sensor.in_wall_dual_relay_switch_successful_commands_rx': 'Successful commands (RX)', + 'sensor.in_wall_dual_relay_switch_successful_commands_tx': 'Successful commands (TX)', + 'sensor.in_wall_dual_relay_switch_timed_out_responses': 'Timed out responses', + 'switch.in_wall_dual_relay_switch': '', + 'switch.in_wall_dual_relay_switch_2': '(2)', + }), 'name': 'In Wall Dual Relay Switch', }), }) diff --git a/tests/components/zwave_js/test_endpoint_benchmarks.py b/tests/components/zwave_js/test_endpoint_benchmarks.py index d5bb2aaeb0f7..5e0416e8a7d5 100644 --- a/tests/components/zwave_js/test_endpoint_benchmarks.py +++ b/tests/components/zwave_js/test_endpoint_benchmarks.py @@ -11,6 +11,7 @@ import pytest from syrupy.assertion import SnapshotAssertion from zwave_js_server.model.node import Node +from homeassistant.components.zwave_js.const import DOMAIN from homeassistant.components.zwave_js.helpers import get_device_id from homeassistant.helpers import device_registry as dr, entity_registry as er @@ -24,52 +25,53 @@ def _snapshot_device_tree( ) -> dict: """Build a stable, snapshot-friendly representation of a node's device tree. - Returns a dict with the node device name, its identifier suffixes, all - entities on the node device, and a list of child devices (if any), each - with their name, identifiers, and entities. The snapshot is stable across - runs because raw device UUIDs are not included. + Returns a nested dict keyed by the stable Z-Wave device id, where the node + device maps to its name, its entities (an ``entity_id -> original_name`` + mapping) and its child devices (a dict keyed by child device id, each with + the same name and entities). The snapshot is stable across runs because raw + device UUIDs are not included. """ - def _stable_identifiers(device: dr.DeviceEntry) -> list[str]: - return sorted( - f"{domain}:{identifier}" for domain, identifier in device.identifiers + def _zwave_device_id(device: dr.AnyDeviceEntry) -> str: + """Return the stable Z-Wave base device id from a device's identifiers. + + A node device can carry both the base ``{home_id}-{node_id}`` identifier + and a longer extended ``{home_id}-{node_id}-{mfr}:{type}:{id}`` one; the + base is always the shortest, so pick the shortest by length. + """ + return min( + ( + identifier + for domain, identifier in device.identifiers + if domain == DOMAIN + ), + key=len, ) - def _entities_for_device(device_id: str) -> list[dict]: - entries = er.async_entries_for_device( - entity_registry, device_id, include_disabled_entities=True - ) - return sorted( - [ - { - "entity_id": entry.entity_id, - "original_name": entry.original_name, - "disabled_by": str(entry.disabled_by), - } - for entry in entries - ], - key=lambda e: e["entity_id"], - ) - - child_devices = sorted( - dr.async_entries_for_parent_device(device_registry, node_device.id), - key=_stable_identifiers, - ) + def _device_entity_names(device_id: str) -> dict[str, str | None]: + # Syrupy sorts mapping keys on output, so the entity_id keys end up + # ordered in the snapshot regardless of insertion order here. + return { + entry.entity_id: entry.original_name + for entry in er.async_entries_for_device( + entity_registry, device_id, include_disabled_entities=True + ) + } return { - "node_device": { + _zwave_device_id(node_device): { "name": node_device.name, - "identifiers": _stable_identifiers(node_device), - "entities": _entities_for_device(node_device.id), - }, - "child_devices": [ - { - "name": child.name, - "identifiers": _stable_identifiers(child), - "entities": _entities_for_device(child.id), - } - for child in child_devices - ], + "entities": _device_entity_names(node_device.id), + "children": { + _zwave_device_id(child): { + "name": child.name, + "entities": _device_entity_names(child.id), + } + for child in dr.async_entries_for_parent_device( + device_registry, node_device.id + ) + }, + } } @@ -90,9 +92,9 @@ def node(request: pytest.FixtureRequest) -> Node: # Fibaro FGR-223 Roller Shutter 3: single motor output controlling a roller # or venetian shutter. Endpoint 1 is the primary shutter control # (SWITCH_MULTILEVEL for position). Endpoint 2 exposes slat/tilt control for - # venetian mode; it produces a secondary cover entity disabled by the - # integration by default (disabled_by: integration), so a registry entry - # exists but the entity is off unless the user enables it. + # venetian mode; it produces a secondary cover entity that the integration + # disables by default, so a registry entry exists (and is included in the + # snapshot) but the entity is off unless the user enables it. pytest.param("fibaro_fgr223_shutter", id="fibaro_fgr223"), # Shelly/Qubino QNSH-001P10 Wave Shutter: one bi-directional motor (O1 up, # O2 down), same topology as the FGR-223. Endpoint 1 is shutter position;