esphome: name: multi-device-preferences-test # Define multiple devices for testing preference storage devices: - id: device_a name: Device A - id: device_b name: Device B host: api: # Port will be automatically injected logger: level: DEBUG # Test entities with restore modes to verify preference storage # Switches with same name on different devices - test restore mode switch: - platform: template name: Light id: light_device_a device_id: device_a restore_mode: RESTORE_DEFAULT_OFF turn_on_action: - lambda: |- ESP_LOGI("test", "Device A Light turned ON"); turn_off_action: - lambda: |- ESP_LOGI("test", "Device A Light turned OFF"); - platform: template name: Light id: light_device_b device_id: device_b restore_mode: RESTORE_DEFAULT_ON # Different default to test uniqueness turn_on_action: - lambda: |- ESP_LOGI("test", "Device B Light turned ON"); turn_off_action: - lambda: |- ESP_LOGI("test", "Device B Light turned OFF"); - platform: template name: Light id: light_main restore_mode: RESTORE_DEFAULT_OFF turn_on_action: - lambda: |- ESP_LOGI("test", "Main Light turned ON"); turn_off_action: - lambda: |- ESP_LOGI("test", "Main Light turned OFF"); # Numbers with restore to test preference storage number: - platform: template name: Setpoint id: setpoint_device_a device_id: device_a min_value: 10.0 max_value: 30.0 step: 0.5 restore_value: true initial_value: 20.0 set_action: - lambda: |- ESP_LOGI("test", "Device A Setpoint set to %.1f", x); id(setpoint_device_a).state = x; - platform: template name: Setpoint id: setpoint_device_b device_id: device_b min_value: 10.0 max_value: 30.0 step: 0.5 restore_value: true initial_value: 25.0 # Different initial to test uniqueness set_action: - lambda: |- ESP_LOGI("test", "Device B Setpoint set to %.1f", x); id(setpoint_device_b).state = x; - platform: template name: Setpoint id: setpoint_main min_value: 10.0 max_value: 30.0 step: 0.5 restore_value: true initial_value: 22.0 set_action: - lambda: |- ESP_LOGI("test", "Main Setpoint set to %.1f", x); id(setpoint_main).state = x; # Selects with restore to test preference storage select: - platform: template name: Mode id: mode_device_a device_id: device_a options: - "Auto" - "Manual" - "Off" restore_value: true initial_option: "Auto" set_action: - lambda: |- ESP_LOGI("test", "Device A Mode set to %s", x.c_str()); id(mode_device_a).state = x; - platform: template name: Mode id: mode_device_b device_id: device_b options: - "Auto" - "Manual" - "Off" restore_value: true initial_option: "Manual" # Different initial to test uniqueness set_action: - lambda: |- ESP_LOGI("test", "Device B Mode set to %s", x.c_str()); id(mode_device_b).state = x; - platform: template name: Mode id: mode_main options: - "Auto" - "Manual" - "Off" restore_value: true initial_option: "Off" set_action: - lambda: |- ESP_LOGI("test", "Main Mode set to %s", x.c_str()); id(mode_main).state = x; # Button to trigger preference logging test button: - platform: template name: Test Preferences on_press: - lambda: |- ESP_LOGI("test", "Testing preference storage uniqueness:"); ESP_LOGI("test", "Device A Light state: %s", id(light_device_a).state ? "ON" : "OFF"); ESP_LOGI("test", "Device B Light state: %s", id(light_device_b).state ? "ON" : "OFF"); ESP_LOGI("test", "Main Light state: %s", id(light_main).state ? "ON" : "OFF"); ESP_LOGI("test", "Device A Setpoint: %.1f", id(setpoint_device_a).state); ESP_LOGI("test", "Device B Setpoint: %.1f", id(setpoint_device_b).state); ESP_LOGI("test", "Main Setpoint: %.1f", id(setpoint_main).state); ESP_LOGI("test", "Device A Mode: %s", id(mode_device_a).state.c_str()); ESP_LOGI("test", "Device B Mode: %s", id(mode_device_b).state.c_str()); ESP_LOGI("test", "Main Mode: %s", id(mode_main).state.c_str()); // Log preference hashes for entities that actually store preferences ESP_LOGI("test", "Device A Switch Pref Hash: %u", id(light_device_a).get_preference_hash()); ESP_LOGI("test", "Device B Switch Pref Hash: %u", id(light_device_b).get_preference_hash()); ESP_LOGI("test", "Main Switch Pref Hash: %u", id(light_main).get_preference_hash()); ESP_LOGI("test", "Device A Number Pref Hash: %u", id(setpoint_device_a).get_preference_hash()); ESP_LOGI("test", "Device B Number Pref Hash: %u", id(setpoint_device_b).get_preference_hash()); ESP_LOGI("test", "Main Number Pref Hash: %u", id(setpoint_main).get_preference_hash());