esphome:
  name: device-id-state-test
  # Define areas
  areas:
    - id: living_room
      name: Living Room
    - id: bedroom
      name: Bedroom
  # Define devices
  devices:
    - id: temperature_monitor
      name: Temperature Monitor
      area_id: living_room
    - id: humidity_monitor
      name: Humidity Monitor
      area_id: bedroom
    - id: motion_sensor
      name: Motion Sensor
      area_id: living_room

host:
api:
logger:

# Test different entity types with device assignments
sensor:
  - platform: template
    name: Temperature
    device_id: temperature_monitor
    lambda: return 25.5;
    update_interval: 0.1s
    unit_of_measurement: "°C"

  - platform: template
    name: Humidity
    device_id: humidity_monitor
    lambda: return 65.0;
    update_interval: 0.1s
    unit_of_measurement: "%"

  # Test entity without device_id (should have device_id 0)
  - platform: template
    name: No Device Sensor
    lambda: return 100.0;
    update_interval: 0.1s

binary_sensor:
  - platform: template
    id: motion_detected
    name: Motion Detected
    device_id: motion_sensor
    lambda: return true;

switch:
  - platform: template
    name: Temperature Monitor Power
    device_id: temperature_monitor
    lambda: return true;
    turn_on_action:
      - lambda: |-
          ESP_LOGD("test", "Turning on");
    turn_off_action:
      - lambda: |-
          ESP_LOGD("test", "Turning off");

text_sensor:
  - platform: template
    name: Temperature Status
    device_id: temperature_monitor
    lambda: return {"Normal"};
    update_interval: 0.1s

light:
  - platform: binary
    name: Motion Light
    device_id: motion_sensor
    output: motion_light_output

output:
  - platform: template
    id: motion_light_output
    type: binary
    write_action:
      - lambda: |-
          ESP_LOGD("test", "Light output: %d", state);

cover:
  - platform: template
    name: Garage Door
    device_id: motion_sensor
    optimistic: true

fan:
  - platform: template
    name: Ceiling Fan
    device_id: humidity_monitor
    speed_count: 3
    has_oscillating: false
    has_direction: false

lock:
  - platform: template
    name: Front Door Lock
    device_id: motion_sensor
    optimistic: true

number:
  - platform: template
    name: Target Temperature
    device_id: temperature_monitor
    optimistic: true
    min_value: 0
    max_value: 100
    step: 1

select:
  - platform: template
    name: Mode Select
    device_id: humidity_monitor
    optimistic: true
    options:
      - "Auto"
      - "Manual"

text:
  - platform: template
    name: Device Label
    device_id: temperature_monitor
    optimistic: true
    mode: text

valve:
  - platform: template
    name: Water Valve
    device_id: humidity_monitor
    optimistic: true

globals:
  - id: global_away
    type: bool
    initial_value: "false"
  - id: global_is_on
    type: bool
    initial_value: "true"

water_heater:
  - platform: template
    name: Test Boiler
    device_id: temperature_monitor
    optimistic: true
    current_temperature: !lambda "return 45.0f;"
    target_temperature: !lambda "return 60.0f;"
    away: !lambda "return id(global_away);"
    is_on: !lambda "return id(global_is_on);"
    supported_modes:
      - "off"
      - electric
    visual:
      min_temperature: 30.0
      max_temperature: 85.0
      target_temperature_step: 0.5
    set_action:
      - lambda: |-
          ESP_LOGD("test", "Water heater set");

alarm_control_panel:
  - platform: template
    name: House Alarm
    device_id: motion_sensor
    codes:
      - "1234"
    restore_mode: ALWAYS_DISARMED
    binary_sensors:
      - input: motion_detected

datetime:
  - platform: template
    name: Schedule Date
    device_id: temperature_monitor
    type: date
    optimistic: true
  - platform: template
    name: Schedule Time
    device_id: humidity_monitor
    type: time
    optimistic: true
  - platform: template
    name: Schedule DateTime
    device_id: motion_sensor
    type: datetime
    optimistic: true

event:
  - platform: template
    name: Doorbell
    device_id: motion_sensor
    event_types:
      - "press"
      - "double_press"
