# system_capabilities.yaml
#
# Copyright (C) 2020-2025 Kedron Holdings LLC, All Rights Reserved
# This file is part of Reactor.
#
# *** IMPORTANT ***
# This is a system file. DO NOT place overrides or make modifications here.
---
version: 25004
revision: 1
format: 1
copyright: Copyright (C) 2020-2025 Kedron Holdings LLC, All Rights Reserved

capabilities:
  power_switch:
    attributes:
      state:
        type: bool
        values:
          true: 'on'
          false: 'off'
    actions:
      'on': {}
      'off': {}
      'set':
        arguments:
          state:
            type: bool
            values:
              false: 'off'
              true: 'on'
  dimming:
    attributes:
      level:
        type: real
        min: 0
        max: 1
      step:
        type: real
        min: 0
        max: 1
        default: 0.1
        writable: true
      minimum:
        type: real
        min: 0
        max: 1
        default: 0
        writable: true
      maximum:
        type: real
        min: 0
        max: 1
        default: 1
        writable: true
    actions:
      set:
        arguments:
          level:
            type: real
            min: 0
            max: 1
      up: {}
      down: {}
      # ramp:
      #   arguments:
      #     level:
      #       type: real
      #       min: 0
      #       max: 1
      #       sort: 1
      #     period:
      #       type: int
      #       min: 1
      #       max: 3600
      #       default: 3
      #       sort: 2
      #     min:
      #       type: real
      #       description: >
      #         If the dimmer has a practical minimum below which the bulb is off or shows no change
      #         in brightness, set this value to that limit.
      #       min: 0
      #       max: 1
      #       default: 0
      #       sort: 3
      #     max:
      #       type: real
      #       description: >
      #         If the dimmer has a practical maximum above which there appears no change in
      #         brightness, set this value to that limit.
      #       min: 0
      #       max: 1
      #       default: 1
      #       sort: 4
  toggle:
    actions:
      toggle: {}
  rgb_color:
    attributes:
      red:
        type: ui1
        min: 0
        max: 255
      green:
        type: ui1
        min: 0
        max: 255
      blue:
        type: ui1
        min: 0
        max: 255
    actions:
      set:
        arguments:
          value:
            type: ui4
      set_rgb:
        arguments:
          red:
            sort: 1
            type: ui1
            min: 0
            max: 255
          green:
            sort: 2
            type: ui1
            min: 0
            max: 255
          blue:
            sort: 3
            type: ui1
            min: 0
            max: 255
  hs_color:
    attributes:
      hue:
        type: int
        min: 0
        max: 360
      saturation:
        type: real
        min: 0
        max: 1
    actions:
      set_hs:
        arguments:
          hue:
            sort: 1
            type: int
            min: 0
            max: 360
          saturation:
            sort: 2
            type: real
            min: 0
            max: 1
      set_hue:
        arguments:
          hue:
            type: int
            min: 0
            max: 360
      set_saturation:
        arguments:
          level:
            type: real
            min: 0
            max: 1
  xy_color:
    attributes:
      x:
        type: real
        min: 0
        max: 1
      y:
        type: real
        min: 0
        max: 1
    actions:
      set:
        arguments:
          x:
            sort: 1
            type: real
            min: 0
            max: 1
          y:
            sort: 2
            type: real
            min: 0
            max: 1
  color_temperature:
    attributes:
      value:
        type: ui4
        min: 1600
        max: 9000
    actions:
      set:
        arguments:
          value:
            type: ui4
            min: 1600
            max: 9000
  light_effect:
    attributes:
      current:
        type: string
      speed:
        type: real
        min: 0
        max: 1
    actions:
      start:
        arguments:
          effect:
            type: string
            sort: 1
          speed:
            type: real
            min: 0
            max: 1
            optional: true
            sort: 2
          duration:
            type: real
            min: 0
            optional: true
            sort: 3
            unit: seconds
      stop:
        arguments: {}
      set_speed:
        arguments:
          speed:
            type: real
            min: 0
            max: 1
      set_duration:
        arguments:
          duration:
            type: real
            unit: seconds
            min: 0
  step_level:
    actions:
      low: {}
      medium: {}
      high: {}
      up: {}
      down: {}
      set:
        attributes:
          value:
            type: real
            min: 0
            max: 1
          amount:
            type: real
            min: 0
            max: 1
            default: 0.1
            writable: true
  lock:
    attributes:
      state:
        type: bool
        values:
          'true': locked
          'false': unlocked
    actions:
      lock: {}
      unlock: {}
      set:
        arguments:
          state:
            type: bool
  passage:
    attributes:
      state:
        type: bool
        values:
          'true': open
          'false': closed
    actions:
      open: {}
      close: {}
      set:
        arguments:
          state:
            type: bool
  keypad:
    attributes:
      last_slot:
        type: int
      last_code:
        type: string
      last_function:
        type: string
        values:
          - 'lock'
          - 'unlock'
          - 'arm'
          - 'disarm'
          - 'away'
          - 'stay'
          - 'instant'
          - 'max'
          - 'panic'
          - 'fire'
          - 'medical'
      since:
        type: ui8
    actions:
      set_code:
        arguments:
          slot:
            type: int
            sort: 1
          code:
            type: string
            sort: 2
            password: true
          name:
            type: string
            sort: 3
      delete_code:
        arguments:
          slot:
            type: int
      enable_code:
        arguments:
          slot:
            type: int
      disable_code:
        arguments:
          slot:
            type: int
  valve:
    attributes:
      state:
        type: bool
    actions:
      open: {}
      close: {}
      set:
        arguments:
          state:
            type: bool
            values:
              true: open
              false: closed
  cover:
    attributes:
      state:
        type: bool
    actions:
      open: {}
      close: {}
      set:
        arguments:
          state:
            type: bool
            values:
              true: open
              false: closed
      stop: {}
  position:
    attributes:
      value:
        type: real
        min: 0
        max: 1
      step:
        type: real
        min: 0
        max: 1
        default: 0.1
        writable: true
    actions:
      increase:
        arguments:
          amount:
            type: real
            min: 0
            max: 1
            default: 0.1
      decrease:
        arguments:
          amount:
            type: real
            min: 0
            max: 1
            default: 0.1
      relative:
        arguments:
          amount:
            type: real
            min: -1
            max: 1
            default: 0.0
      set:
        arguments:
          value:
            type: real
            min: 0
            max: 1
  irrigation_zone:
    attributes:
      state:
        type: string
        values:
          true: running
          false: stopped
      duration:
        type: uint
      remaining:
        type: uint
      last_run:
        type: ui8
      next_run:
        type: ui8
      enabled:
        type: bool
        default: null
    actions:
      run: {}
      stop: {}
      enable: {}
      disable: {}
      set:
        arguments:
          state:
            type: string
            values:
              true: running
              false: stopped
          duration:
            type: int
  security_mode:
    attributes:
      mode:
        type: string
        values: [disarmed, away, stay, instant, max]
      ready:
        type: boolean
    actions:
      set_mode:
        arguments:
          mode:
            type: string
            sort: 1
            values: [disarmed, away, stay, instant, max]
          code:
            type: string
            sort: 2
            password: true
  security_zone:
    attributes:
      state:
        type: string
        values: [normal, faulted, bypassed]
    actions:
      bypass:
        arguments:
          code:
            type: string
            sort: 1
            password: true
      reset:
        arguments: {}
  av_transport:
    attributes:
      state:
        type: string
        values:
          - STOPPED
          - PAUSED
          - PLAYING
          - TRANSITIONING
          - WAITING
      current_track:
        type: int
      current_title:
        type: string
      current_artist:
        type: string
      current_album:
        type: string
      album_art:
        type: string
    actions:
      stop: {}
      pause: {}
      play: {}
      fast_forward: {}
      rewind: {}
  media_navigation:
    attributes: {}
    actions:
      next_track: {}
      previous_track: {}
      next_chapter: {}
      previous_chapter: {}
      next_media: {}
      previous_media: {}
  av_repeat:
    attributes:
      shuffle:
        type: bool
        values:
          'true': 'on'
          'false': 'off'
      repeat_mode:
        type: string
        values:
          'off': 'Off'
          one: One
          all: All
          other: Other
    actions:
      set_shuffle:
        arguments:
          state:
            type: bool
            values:
              'true': 'on'
              'false': 'off'
      shuffle_on: {}
      shuffle_off: {}
      set_repeat:
        arguments:
          mode:
            type: string
            values:
              - 'off'
              - one
              - all
      repeat_off: {}
      repeat_one: {}
      repeat_all: {}
  volume:
    attributes:
      level:
        type: real
        min: 0
        max: 1
      step:
        type: real
        min: 0
        max: 1
        default: 0.1
        writable: true
      minimum:
        type: real
        min: 0
        max: 1
        default: 0
        writable: true
      maximum:
        type: real
        min: 0
        max: 1
        default: 1
        writable: true
    actions:
      increase:
        arguments:
          amount:
            type: real
            min: 0
            max: 1
            optional: true
      decrease:
        arguments:
          amount:
            type: real
            min: 0
            max: 1
            optional: true
      relative:
        arguments:
          amount:
            type: real
            min: -1
            max: 1
            default: 0
      set:
        arguments:
          value:
            type: real
            min: 0
            max: 1
      set_db:
        arguments:
          db:
            type: real
            min: -120
            max: 180
  muting:
    attributes:
      state:
        type: bool
        values:
          'true': mute on
          'false': mute off
    actions:
      mute: {}
      unmute: {}
      toggle: {}
      set:
        arguments:
          muting:
            type: bool
            values:
              'true': mute on
              'false': mute off
  media_source:
    attributes:
      selected:
        type: string
        values:
          - tv
          - dvd
          - bd
          - hdmi1
          - hdmi2
          - hdmi3
          - hdmi4
          - fm
          - am
          - component
          - av1
          - av2
          - dp
          - dvi
          - vga
          - pc
          - usb
          - bluetooth
    actions:
      previous: {}
      next: {}
      set:
        arguments:
          input:
            type: string
      hdmi1: {}
      hdmi2: {}
      hdmi3: {}
      hdmi4: {}
      dp: {}
      dvi: {}
      vga: {}
      pc: {}
  media_output:
    attributes:
      selected:
        type: string
        values:
          - tv
          - hdmi1
          - hdmi2
          - hdmi3
          - hdmi4
          - component
          - av1
          - av2
          - dp
          - dvi
          - vga
          - pc
          - stream
    actions:
      previous: {}
      next: {}
      set:
        arguments:
          output:
            type: string
      tv: {}
      hdmi1: {}
      hdmi2: {}
      hdmi3: {}
      hdmi4: {}
      component: {}
      av1: {}
      av2: {}
      dp: {}
      dvi: {}
      vga: {}
      pc: {}
      stream: {}
  tuner:
    attributes:
      channel:
        type: string
    actions:
      up: {}
      down: {}
      set:
        arguments:
          channel:
            type: string
  binary_sensor:
    attributes:
      state:
        type: bool
  motion_sensor:
    alias: binary_sensor
  door_sensor:
    alias: binary_sensor
  tilt_sensor:
    alias: binary_sensor
  window_sensor:
    alias: binary_sensor
  smoke_detector:
    alias: binary_sensor
  co_detector:
    alias: binary_sensor
  co2_detector:
    alias: binary_sensor
  gas_detector:
    alias: binary_sensor
  leak_detector:
    alias: binary_sensor
  heat_detector:
    alias: binary_sensor
  freeze_detector:
    alias: binary_sensor
  glass_break_detector:
    alias: binary_sensor
  presence_sensor:
    alias: binary_sensor
  arming:
    attributes:
      state:
        type: bool
        values:
          'true': armed
          'false': disarmed
    actions:
      arm: {}
      disarm: {}
      set:
        arguments:
          state:
            type: bool
  tamper:
    attributes:
      state:
        type: bool
  value_sensor:
    attributes:
      value:
        type: real
      units:
        type: string
  temperature_sensor:
    alias: value_sensor
  humidity_sensor:
    alias: value_sensor
  light_sensor:
    alias: value_sensor
  uv_sensor:
    alias: value_sensor
  voltage_sensor:
    alias: value_sensor
  current_sensor:
    alias: value_sensor
  power_sensor:
    alias: value_sensor
  energy_sensor:
    alias: value_sensor
    actions:
      reset: {}
  power_factor_sensor:
    alias: value_sensor
  air_quality_sensor:
    alias: value_sensor
  velocity_sensor:
    alias: value_sensor
  direction_sensor:
    alias: value_sensor
  pressure_sensor:
    alias: value_sensor
  weight_sensor:
    alias: value_sensor
  string_sensor:
    attributes:
      value:
        type: string
  acceleration_sensor:
    attributes:
      x_axis:
        type: real
      x_units:
        type: string
      y_axis:
        type: real
      y_units:
        type: string
      z_axis:
        type: real
      z_units:
        type: string
  location:
    attributes:
      latitude:
        type: real
      longitude:
        type: real
      elevation:
        type: real
        default: null
    actions: {}
  tag:
    attributes:
      tag_id:
        type: string
      tag_type:
        type: string
      device_id:
        type: string
      last_scanned:
        type: ui8
      scan_count:
        type: ui8
        default: 0
    actions:
      reset_count:
        arguments: {}
  button:
    attributes:
      state:
        type: string
        values:
          - 'single'
          - 'double'
          - 'triple'
          - '4'
          - '5'
          - 'hold'
          - 'release'
          - 'long'
          - 'unknown'
      since:
        type: ui8
    actions:
      press:
        arguments:
          count:
            type: ui1
            default: 1
      single: {}
      double: {}
      hold: {}
      release: {}
      long: {}
  status_indicator:
    attributes:
      state:
        type: bool
        values:
          false: 'off'
          true: 'on'
      level:
        type: ui1
      color_name:
        type: string
        values: ['off', red, green, blue, magenta, yellow, cyan, white]
      color:
        type: ui8
      blink:
        type: ui1
    action:
      'on': {}
      'off': {}
      set_level:
        arguments:
          level:
            type: ui1
      set_color_name:
        arguments:
          color_name:
            type: string
            values: ['off', red, green, blue, magenta, yellow, cyan, white]
      set_color:
        arguments:
          red:
            type: ui1
          green:
            type: ui1
          blue:
            type: ui1
      'blink': {}
      'solid': {}
      set_blink:
        arguments:
          rate:
            type: ui1
  hvac_control:
    attributes:
      mode:
        type: string
        values:
          - 'off'
          - 'on'
          - heat
          - cool
          - auto
          - vent
          - dry
          - emergency
          - secondary
      state:
        type: string
        values:
          - 'off'
          - idle
          - heating
          - cooling
          - dehumidifying
          - humidifying
          - recirculating
          - delayed
    actions:
      set_mode:
        arguments:
          mode:
            type: string
            values:
              - 'off'
              - 'on'
              - heat
              - cool
              - auto
              - vent
              - dry
  hvac_heating_unit:
    attributes:
      state:
        type: bool
      setpoint:
        type: real
      units:
        type: string
    actions:
      set_setpoint:
        arguments:
          setpoint:
            type: real
  hvac_cooling_unit:
    attributes:
      state:
        type: bool
      setpoint:
        type: real
      units:
        type: string
    actions:
      set_setpoint:
        arguments:
          setpoint:
            type: real
  hvac_blower_unit:
    attributes:
      state:
        type: bool
      mode:
        type: string
        values:
          - 'off'
          - auto
          - continuous
          - periodic
          - low
          - medium
          - high
      filter_change:
        type: bool
    actions:
      set_mode:
        arguments:
          mode:
            type: string
            values:
              - 'off'
              - auto
              - continuous
              - periodic
              - low
              - medium
              - high
  hvac_blower_swing:
    attributes:
      mode:
        type: string
        values:
          - 'off'
          - vertical
          - horizontal
          - both
    actions:
      set_mode:
        arguments:
          mode:
            type: string
            values:
              - 'off'
              - vertical
              - horizontal
              - both
  hvac_humidifier:
    attributes:
      state:
        type: bool
      mode:
        type: string
        values:
          - 'off'
          - 'on'
          - auto
      setpoint:
        type: real
        min: 0
        max: 1
    actions:
      set_mode:
        arguments:
          mode:
            type: string
            values:
              - 'off'
              - 'on'
              - auto
      set_setpoint:
        arguments:
          setpoint:
            type: real
  hvac_dehumidifier:
    attributes:
      state:
        type: bool
      mode:
        type: string
        values:
          - 'off'
          - 'on'
          - auto
      setpoint:
        type: real
        min: 0
        max: 1
    actions:
      set_mode:
        arguments:
          mode:
            type: string
            values:
              - 'off'
              - 'on'
              - auto
      set_setpoint:
        arguments:
          setpoint:
            type: real

  chime:
    attributes:
      default_sound:
        type: string
      default_volume:
        type: real
        min: 0
        max: 1
      default_duration:
        type: real
        min: 0.001
    actions:
      play:
        arguments:
          sound:
            type: string
            sort: 1
            optional: true
          volume:
            type: real
            min: 0
            max: 1
            sort: 2
            optional: true
          duration:
            type: real
            min: 0.001
            sort: 3
            optional: true
      stop: {}
      sound: {}
      set_volume:
        arguments:
          volume:
            type: real
            min: 0
            max: 1
      set_default_sound:
        arguments:
          sound:
            type: string
      set_default_volume:
        arguments:
          volume:
            type: real
            min: 0
            max: 1
      set_default_duration:
        arguments:
          duration:
            type: real
            min: 0.001
  script:
    attributes:
      runnable:
        type: bool
        default: true
    actions:
      run:
        arguments: {}
  active:
    attributes:
      active:
        type: bool
  selector:
    attributes:
      value:
        type: string
      values:
        type: object
    actions:
      select:
        arguments:
          value:
            type: string
  vacuum:
    attributes:
      status:
        type: string
        values: [docked, cleaning, returning, paused, idle, error]
      position:
        type: any
      bin_loaded:
        type: bool
      bin_full:
        type: bool
      online:
        type: bool
      filter_change:
        type: bool
    actions:
      start: {}
      stop: {}
      pause: {}
      home: {}
      locate: {}
  lawn_mower:
    attributes:
      status:
        type: string
        values: [docked, mowing, returning, paused, error]
    actions:
      start: {}
      pause: {}
      home: {}

  wx:
    description: Generic capability to house weather information
    attributes:
      location:
        type: string
      asoftime:
        type: int
      description:
        type: string
      condition_code:
        type: string
      icon:
        type: string
      temperature:
        type: real
      temperature_unit:
        type: string
        values:
          - raw
          - C
          - F
          - K
      feels_like:
        type: real
      humidity:
        type: real
        min: 0
        max: 100
      humidity_unit:
        type: string
        values:
          - "%"
      precipitation_24hr:
        type: real
      precipitation_1hr:
        type: real
      precipitation_other:
        type: real
      precipitation_unit:
        type: string
        values:
          - raw
          - mm
          - in
          - m
          - ft
      precipitation_type:
        type: string
        values:
          - rain
          - snow
          - ash
          - other
      wind_speed:
        type: real
      wind_gust:
        type: real
      wind_speed_unit:
        type: string
        values:
          - raw
          - m/s
          - km/h
          - mph
          - fps
      wind_conditions:
        type: string
        values:
          - calm
          - light air
          - light breeze
          - gentle breeze
          - moderate breeze
          - fresh breeze
          - strong breeze
          - high
          - gale
          - severe gale
          - whole gale
          - violent storm
          - hurricane
      wind_compass:
        type: real
        min: 0
        max: 360
      wind_direction:
        type: string
        values:
          - N
          - NNE
          - NE
          - ENE
          - E
          - ESE
          - SE
          - SSE
          - S
          - SSW
          - SW
          - WSW
          - W
          - WNW
          - NW
          - NNW
      pressure:
        type: real
      pressure_unit:
        type: string
        values:
          - raw
          - bar
          - hPa
          - inHg
          - mmHg
      cloud_cover:
        type: real
      ceiling:
        type: real
      ceiling_unit:
        type: string
        values:
          - raw
          - m
          - mi
          - km
          - ft
      visibility:
        type: real
      visibility_unit:
        type: string
        values:
          - raw
          - m
          - mi
          - km
          - ft
    actions: {}
  battery_maintenance:
    attributes:
      rechargeable:
        type: bool
        default: false
      replace:
        type: bool
      charging:
        type: bool
      state:
        type: string
        values:
          - normal
          - disconnected
          - maintenance
  battery_power:
    attributes:
      level:
        type: real
        min: 0
        max: 1
      since:
        type: ui8
      alert_level:
        type: real
        min: 0
        max: 1
        default: 0.5
        writable: true
  power_source:
    attributes:
      source:
        type: string
        values: [ac, dc, utility, solar, battery, normal, emergency]
  wifi_status:
    attributes:
      ssid:
        type: string
      rssi:
        type: int
      station_ip:
        type: string
  ir_remote:
    attributes: {}
    actions:
      learn:
        arguments:
          command:
            type: string
      delete:
        arguments:
          command:
            type: string
      send:
        arguments:
          command:
            type: string
      send_codes:
        arguments:
          codes:
            type: string
            bigtext: true
            uiclass: code
  rf_remote:
    attributes: {}
    actions:
      learn:
        arguments:
          command:
            type: string
      delete:
        arguments:
          command:
            type: string
      send:
        arguments:
          command:
            type: string
      send_codes:
        arguments:
          codes:
            type: string
            bigtext: true
            uiclass: code
      detect:
        arguments:
          command:
            type: string
  scene_activation:
    attributes:
      scene_id: {}
      since:
        type: ui8
  suninfo:
    attributes:
      period:
        type: string
        values: ["day", "night"]
      sunrise:
        type: int
      sunset:
        type: int
      civil_dawn:
        type: int
      civil_dusk:
        type: int
      nautical_dawn:
        type: int
      nautical_dusk:
        type: int
      astronomical_dawn:
        type: int
      astronomical_dusk:
        type: int
      day_length:
        type: real
      transit:
        type: int
      elevation:
        type: real
      azimuth:
        type: real
  zwave_network:
    attributes:
      state:
        type: bool
    actions:
      send_data:
        arguments:
          node:
            type: ui1
            sort: 1
          data:
            type: string
            sort: 2
      start_include: {}
      stop_include: {}
      start_exclude: {}
      stop_exclude: {}
      start_heal: {}
      stop_heal: {}
      restart: {}
  zwave_device:
    attributes:
      failed:
        type: bool
      node_id:
        type: int
      capabilities:
        type: string
      manufacturer_info:
        type: string
      version_info:
        type: string
    actions:
      refresh: {}
      poll:
        deprecated: "zwave_device.refresh"  # 2021-09-16 poll deprecated; use refresh
      reconfigure: {}
      set_config:  # Command class 0x70 command 0x04 <parameter-number> <size> <data>
        arguments:
          parameter:
            type: string
            sort: 1
          size:
            type: ui1
            values: [1, 2, 4]
            sort: 2
          value:
            type: ui4
            sort: 3
          bitmask:
            type: ui4
            sort: 4
      reset_meters:  # Command class 0x32 command 0x05
        deprecated: "energy_sensor.reset"
      set_name:
        arguments:
          name:
            type: string
      set_location:
        arguments:
          location:
            type: string
      set_value:
        arguments:
          endpoint:
            type: number
            sort: 0
            default: 0
          commandClass:
            type: number
            sort: 1
          property:
            type: string
            sort: 2
          propertyKey:
            type: string
            sort: 3
          value:
            sort: 4
      remove_failed: {}
      replace_failed: {}
      heal: {}
      interview: {}
      debug: {}
      ping: {}
  zwave_scene_controller:
    deprecated: "scene_activation"
    attributes:
      scene_activated:
        type: int
      key_attribute:
        type: ui8
      scene_deactivated:
        type: int
      central_scene:
        type: int
  sys_group:
    attributes:
      members:
        type: array
        default: []
      empty:
        type: bool
        default: true
    actions: {}
  sys_system:
    attributes:
      state:
        type: bool
    actions:
      restart: {}
      purge_dead_entities:
        arguments:
          age:
            type: ui8
            min: 1
            default: 1440
      delete_entity:
        arguments:
          entity_id:
            type: string
      rename_entity:
        arguments:
          entity_id:
            type: string
            sort: 1
          new_name:
            type: string
            sort: 2
      set_log_level:
        arguments:
          level:
            type: int
            min: 0
            max: 9
            default: 4
  printer3d:
    attributes:
      reachable:
        type: bool
        default: false
      printing:
        type: bool
      paused:
        type: bool
      resuming:
        type: bool
      ready:
        type: bool
      operational:
        type: bool
      error:
        type: bool
      finishing:
        type: bool
      temperature_bed_actual:
        type: real
      temperature_bed_target:
        type: real
      temperature_hotend_actual:
        type: real
      temperature_hotend_target:
        type: real
      message:
        type: string
      sdcard_ready:
        type: bool

  ev_charger:
    attributes:
      state:
        type: string
        values:
          - not connected
          - initializing
          - self-test
          - ready
          - charging
          - limited charging
          - suspended
          - fault
      mode:
        type: int
      operating_state:
        type: string
        values:
          - charge
          - standby
      schedule:
        type: string
        values:
          - normal
          - solar
          - night
      error:
        type: string
      duration:
        type: int  # units are milliseconds; optional/if supported
      remaining:
        type: int  # units are milliseconds; optional/if supported
    actions:
      set_current:
        arguments:
          limit:
            type: real
      set_operating_mode:
        arguments:
          mode:
            type: string
            values:
              - charge
              - standby
      set_schedule:
        arguments:
          schedule:
            type: string
            values:
              - normal
              - solar
              - night

  reactor_entity:
    attributes: {}
    actions:
      set_attribute:
        arguments:
          attribute:
            type: string
            sort: 1
          value:
            type: string
            bigtext: true
            uiclass: code
            sort: 2
      rename:
        arguments:
          new_name:
            type: string

  reactor_system:
    attributes:
      system_memory_size:
        type: ui8
      system_memory_free:
        type: ui8
      system_load:
        type: array
        subtype: real
      system_uptime:
        type: real
      reactor_uptime:
        type: real
      reactor_memory_used:
        type: ui8
      internet_ok:
        type: bool
      docker:
        type: bool
        default: false
      platform:
        type: string
      arch:
        type: string
      hostname:
        type: string
      update_available:
        type: bool
      update_version:
        type: string
      update_branch:
        type: string
      update_commit:
        type: string
    actions:
      set_attribute:
        arguments:
          entity_id:
            type: string
            sort: 1
          attribute:
            type: string
            sort: 2
          value:
            type: string
            bigtext: true
            uiclass: code
            sort: 3

  reactor_alerts:
    attributes:
      alert_count:
        type: int
      alert_last:
        type: ui8
      alert_severity:
        type: int
      alerts:
        type: any
    actions:
      clear_alert:
        arguments:
          id:
            type: ui8
      clear_alerts:
        arguments: {}
