{
  "i18n": true,
  "type": "panel",
  "items": {
    "entity": {
      "newLine": true,
      "type": "select",
      "label": "Entity type",
      "options": [
        {
          "value": "sensor",
          "label": "sensor"
        },
        {
          "value": "binary_sensor",
          "label": "binary_sensor"
        },
        {
          "value": "light",
          "label": "light"
        },
        {
          "value": "input_boolean",
          "label": "input_boolean"
        },
        {
          "value": "input_select",
          "label": "input_select"
        },
        {
          "value": "input_number",
          "label": "input_number"
        },
        {
          "value": "input_text",
          "label": "input_text"
        },
        {
          "value": "input_datetime",
          "label": "input_datetime"
        },
        {
          "value": "switch",
          "label": "switch"
        },
        {
          "value": "camera",
          "label": "camera"
        },
        {
          "value": "history_graph",
          "label": "history_graph"
        },
        {
          "value": "calendar",
          "label": "calendar"
        },
        {
          "value": "climate",
          "label": "climate"
        },
        {
          "value": "alarm_control_panel",
          "label": "alarm"
        },
        {
          "value": "fan",
          "label": "fan"
        },
        {
          "value": "cover",
          "label": "cover"
        },
        {
          "value": "lock",
          "label": "lock"
        },
        {
          "value": "media_player",
          "label": "media_player"
        },
        {
          "value": "vacuum",
          "label": "vacuum"
        },
        {
          "value": "weather",
          "label": "weather"
        },
        {
          "value": "water_heater",
          "label": "water_heater"
        },
        {
          "value": "plant",
          "label": "plant"
        },
        {
          "value": "group",
          "label": "group"
        },
        {
          "value": "automation",
          "label": "automation"
        },
        {
          "value": "scene",
          "label": "scene"
        },
        {
          "value": "script",
          "label": "script"
        },
        {
          "value": "timer",
          "label": "timer"
        },
        {
          "value": "weblink",
          "label": "weblink"
        },
        {
          "value": "sun",
          "label": "sun"
        },
        {
          "value": "todo",
          "label": "todolist"
        },
        {
          "value": "datetime",
          "label": "datetime"
        }
      ],
      "defaultFunc": "!customObj.common ? 'sensor' : customObj.common.write ? (customObj.common.states ? 'input_select' : customObj.common.role === 'date' ? 'input_datetime' : customObj.common.type === 'boolean' ? 'input_boolean' : customObj.common.type === 'number' ? 'input_number' : 'input_text') : (customObj.common.type === 'boolean' ? 'binary_sensor' : 'sensor');",
      "xs": 12,
      "sm": 6,
      "md": 4,
      "lg": 3
    },
    "name": {
      "type": "text",
      "label": "Entity name",
      "help": "(unique for one entity type)",
      "defaultFunc": "(customObj && customObj._id) ? customObj._id.split('.').slice(2).join('_').replace(/Ü/g, 'UE').replace(/Ä/g, 'AE').replace(/Ö/g, 'OE').replace(/ü/g, 'ue').replace(/ä/g, 'ae').replace(/ö/g, 'oe').replace(/ß/g, 'ss').replace(/[^a-zA-Z0-9А-Яа-я_]/g, '_') : ''",
      "xs": 12,
      "sm": 12,
      "md": 8,
      "lg": 9
    },
    "_entityId": {
      "newLine": true,
      "type": "pattern",
      "pattern": "${data.entity}.${data.name}",
      "copyToClipboard": true,
      "disabled": "true",
      "label": "labelCompleteEntity",
      "xs": 12,
      "sm": 12,
      "md": 12,
      "lg": 12
    },
    "_entityIdError": {
      "newLine": true,
      "type": "staticText",
      "text": "errorLabelEntityChars",
      "style": {
        "color": "red"
      },
      "hidden": "!/[^a-zA-Z0-9А-Яа-я_]/.test(data.name)",
      "sm": 12
    },
    "_entityIdEmptyError": {
      "newLine": true,
      "type": "staticText",
      "text": "errorLabelEntityEmpty",
      "style": {
        "color": "red"
      },
      "hidden": "data.name",
      "sm": 12
    },
    "_entityDuplicateError": {
      "newLine": true,
      "container": "div",
      "type": "textSendTo",
      "alsoDependsOn": ["entity", "name"],
      "command": "checkIdForDuplicates",
      "style": {
        "color": "red"
      },
      "jsonData": "{\"entity\": \"${data.entity}\", \"name\": \"${data.name}\", \"objectId\": \"${customObj._id}\"}",
      "hidden": "data._entityDuplicateError"
    },
    "_attribtes": {
      "newLine": true,
      "type": "panel",
      "hidden": "!['binary_sensor', 'climate', 'cover', 'fan', 'group', 'humidifier', 'input_datetime', 'input_number', 'input_text', 'light', 'sensor', 'switch', 'water_heater'].includes(data.entity)",
      "items": {
        "_heading": {
          "type": "header",
          "size": 1,
          "text": "Additional Attributes",
          "help": "define additional attributes for certain entity types"
        },
        "attr_assumed_state": {
          "type": "checkbox",
          "label": "Assumed state (creates two buttons instead of slider)",
          "defaultFunc": "['switch', 'light', 'cover', 'climate', 'fan', 'humidifier', 'group', 'water_heater'].includes(data.entity) ? (customObj.common ? !customObj.common.read : undefined) : undefined",
          "onChange": {
            "alsoDependsOn": ["entity"],
            "calculateFunc": "['switch', 'light', 'cover', 'climate', 'fan', 'humidifier', 'group', 'water_heater'].includes(data.entity) ? (customObj.common ? !customObj.common.read : undefined) : undefined",
            "ignoreOwnChanges": false
          },
          "hidden": "!['switch', 'light', 'cover', 'climate', 'fan', 'humidifier', 'group', 'water_heater'].includes(data.entity)"
        },
        "attr_device_class": {
          "newLine": true,
          "type": "select",
          "label": "Device class",
          "options": [
            {
              "value": "battery",
              "label": "Battery warning",
              "hidden": "data.entity !== 'binary_sensor'"
            },
            {
              "value": "battery_charging",
              "label": "Battery charging",
              "hidden": "data.entity !== 'binary_sensor'"
            },
            {
              "value": "cold",
              "label": "Cold",
              "hidden": "data.entity !== 'binary_sensor'"
            },
            {
              "value": "connectivity",
              "label": "Connectivity",
              "hidden": "data.entity !== 'binary_sensor'"
            },
            {
              "value": "door",
              "label": "Door",
              "hidden": "data.entity !== 'binary_sensor'"
            },
            {
              "value": "garage_door",
              "label": "Garage door",
              "hidden": "data.entity !== 'binary_sensor'"
            },
            {
              "value": "gas",
              "label": "Gas",
              "hidden": "data.entity !== 'binary_sensor'"
            },
            {
              "value": "heat",
              "label": "Heat",
              "hidden": "data.entity !== 'binary_sensor'"
            },
            {
              "value": "light",
              "label": "Light",
              "hidden": "data.entity !== 'binary_sensor'"
            },
            {
              "value": "lock",
              "label": "Lock",
              "hidden": "data.entity !== 'binary_sensor'"
            },
            {
              "value": "moisture",
              "label": "Moisture",
              "hidden": "data.entity !== 'binary_sensor'"
            },
            {
              "value": "motion",
              "label": "Motion detector",
              "hidden": "data.entity !== 'binary_sensor'"
            },
            {
              "value": "moving",
              "label": "Moving",
              "hidden": "data.entity !== 'binary_sensor'"
            },
            {
              "value": "occupancy",
              "label": "Occupancy",
              "hidden": "data.entity !== 'binary_sensor'"
            },
            {
              "value": "opening",
              "label": "Opening",
              "hidden": "data.entity !== 'binary_sensor'"
            },
            {
              "value": "plug",
              "label": "Plug",
              "hidden": "data.entity !== 'binary_sensor'"
            },
            {
              "value": "power",
              "label": "Powered",
              "hidden": "data.entity !== 'binary_sensor'"
            },
            {
              "value": "presence",
              "label": "Presence",
              "hidden": "data.entity !== 'binary_sensor'"
            },
            {
              "value": "problem",
              "label": "Problem",
              "hidden": "data.entity !== 'binary_sensor'"
            },
            {
              "value": "running",
              "label": "Running",
              "hidden": "data.entity !== 'binary_sensor'"
            },
            {
              "value": "safety",
              "label": "Safety",
              "hidden": "data.entity !== 'binary_sensor'"
            },
            {
              "value": "smoke",
              "label": "Smoke",
              "hidden": "data.entity !== 'binary_sensor'"
            },
            {
              "value": "sound",
              "label": "Sound",
              "hidden": "data.entity !== 'binary_sensor'"
            },
            {
              "value": "tamper",
              "label": "Tampering",
              "hidden": "data.entity !== 'binary_sensor'"
            },
            {
              "value": "update",
              "label": "Update",
              "hidden": "data.entity !== 'binary_sensor'"
            },
            {
              "value": "vibration",
              "label": "Vibration",
              "hidden": "data.entity !== 'binary_sensor'"
            },
            {
              "value": "window",
              "label": "Window",
              "hidden": "data.entity !== 'binary_sensor'"
            },
            {
              "value": "aqi",
              "label": "Air Quality Index",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "battery",
              "label": "Battery percent",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "carbon_dioxide",
              "label": "Carbon dioxide",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "carbon_monoxide",
              "label": "Carbon monoxide",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "current",
              "label": "Current",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "date",
              "label": "Date",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "energy",
              "label": "Energy",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "frequency",
              "label": "Frequency",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "gas",
              "label": "Volume of Gas",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "humidity",
              "label": "Humidity",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "illuminance",
              "label": "Illuminance",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "monetary",
              "label": "Monetary value",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "nitrogen_dioxide",
              "label": "Nitrogen Dioxide",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "nitrogen_monoxide",
              "label": "Nitrogen Monoxide",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "nitrous_oxide",
              "label": "Nitrous Oxide",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "ozone",
              "label": "Ozone",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "precipitation_intensity",
              "label": "Precipitation Intensity",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "pm1",
              "label": "Particular matter less than 1 micrometer",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "pm25",
              "label": "Particular matter less than 2.5 micrometer",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "pm10",
              "label": "Particular matter less than 10 micrometer",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "power",
              "label": "Power",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "power_factor",
              "label": "Power Factor",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "pressure",
              "label": "Pressure",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "signal_strength",
              "label": "Signal Strength",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "speed",
              "label": "Speed",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "sulphur_dioxide",
              "label": "Sulphur Dioxide",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "temperature",
              "label": "Temperature",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "timestamp",
              "label": "Timestamp",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "volatile_organic_compounds",
              "label": "Volatile organic compounds",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "volatile_organic_compounds_parts,",
              "label": "Volatile organic compounds parts",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "voltage",
              "label": "Voltage",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "volume",
              "label": "Volume",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "water",
              "label": "Water",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "weight",
              "label": "Weight",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "wind_speed",
              "label": "Wind speed",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "window",
              "label": "Window",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "awning",
              "label": "Awning",
              "hidden": "data.entity !== 'cover'"
            },
            {
              "value": "blind",
              "label": "Blind",
              "hidden": "data.entity !== 'cover'"
            },
            {
              "value": "curtain",
              "label": "Curtain",
              "hidden": "data.entity !== 'cover'"
            },
            {
              "value": "damper",
              "label": "Damper",
              "hidden": "data.entity !== 'cover'"
            },
            {
              "value": "door",
              "label": "Door",
              "hidden": "data.entity !== 'cover'"
            },
            {
              "value": "garage",
              "label": "Garage",
              "hidden": "data.entity !== 'cover'"
            },
            {
              "value": "gate",
              "label": "Gate",
              "hidden": "data.entity !== 'cover'"
            },
            {
              "value": "shade",
              "label": "Shade",
              "hidden": "data.entity !== 'cover'"
            },
            {
              "value": "shutter",
              "label": "Shutter",
              "hidden": "data.entity !== 'cover'"
            },
            {
              "value": "window",
              "label": "Window",
              "hidden": "data.entity !== 'cover'"
            },
            {
              "value": "outlet",
              "label": "Outlet",
              "hidden": "data.entity !== 'switch'"
            },
            {
              "value": "switch",
              "label": "Switch",
              "hidden": "data.entity !== 'switch'"
            }
          ],
          "hidden": "!['sensor', 'binary_sensor', 'cover', 'switch'].includes(data.entity)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 3
        },
        "attr_unit_of_measurement": {
          "type": "text",
          "label": "Unit of measurement",
          "defaultFunc": "data.entity === 'sensor' ? (customObj.common && customObj.common.unit) ? customObj.common.unit : {'battery': '%', 'carbon_dioxide':'ppm', 'carbon_monoxide':'ppm', 'humidity': '%', 'illuminance': 'lux', 'signal_strength': 'db', 'temperature': '°C', 'timestamp':'', 'power':'W', 'pressure':'hPa', 'current':'A', 'energy':'Wh', 'power_factor':'%', 'voltage':'V' }[data.attr_device_class] : undefined",
          "onChange": {
            "alsoDependsOn": ["attr_device_class"],
            "calculateFunc": "data.entity === 'sensor' ? (customObj.common && customObj.common.unit) ? customObj.common.unit : {'battery': '%', 'carbon_dioxide':'ppm', 'carbon_monoxide':'ppm', 'humidity': '%', 'illuminance': 'lux', 'signal_strength': 'db', 'temperature': '°C', 'timestamp':'', 'power':'W', 'pressure':'hPa', 'current':'A', 'energy':'Wh', 'power_factor':'%', 'voltage':'V' }[data.attr_device_class] : undefined",
            "ignoreOwnChanges": false
          },
          "hidden": "data.entity !== 'sensor'",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 3
        },
        "attr_mode": {
          "type": "select",
          "label": "labelModeAttribute",
          "options": [
            {
              "value": "box",
              "label": "labelModeBox",
              "hidden": "data.entity !== 'input_number'"
            },
            {
              "value": "slider",
              "label": "Slider",
              "hidden": "data.entity !== 'input_number'"
            },
            {
              "value": "text",
              "label": "Text",
              "hidden": "data.entity !== 'input_text'"
            },
            {
              "value": "password",
              "label": "Password",
              "hidden": "data.entity !== 'input_text'"
            }
          ],
          "defaultFunc": "data.entity === 'input_number' ? (customObj.common ? ((customObj.common.min || customObj.common.max) ? 'slider' : 'box') : undefined) : data.entity === 'input_text' ? 'text' : undefined",
          "onChange": {
            "alsoDependsOn": ["entity"],
            "calculateFunc": "data.entity === 'input_number' ? (customObj.common ? ((customObj.common.min || customObj.common.max) ? 'slider' : 'box') : undefined) : data.entity === 'input_text' ? 'text' : undefined",
            "ignoreOwnChanges": false
          },
          "hidden": "!['input_number', 'input_text'].includes(data.entity)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 3
        },
        "attr_has_time": {
          "type": "checkbox",
          "label": "labelHasTime",
          "hidden": "data.entity !== 'input_datetime'",
          "default": false,
          "onChange": {
            "alsoDependsOn": ["entity"],
            "calculateFunc": "data.entity === 'input_datetime' ? false : undefined",
            "ignoreOwnChanges": false
          },
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 3
        },
        "attr_has_date": {
          "type": "checkbox",
          "label": "labelHasDate",
          "hidden": "data.entity !== 'input_datetime'",
          "default": true,
          "onChange": {
            "alsoDependsOn": ["entity"],
            "calculateFunc": "data.entity === 'input_datetime' ? true : undefined",
            "ignoreOwnChanges": false
          },
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 3
        }
      }
    }
  }
}
