{
  "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": "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": "group",
          "label": "group"
        },
        {
          "value": "automation",
          "label": "automation"
        },
        {
          "value": "scene",
          "label": "scene"
        },
        {
          "value": "script",
          "label": "script"
        },
        {
          "value": "timer",
          "label": "timer"
        },
        {
          "value": "sun",
          "label": "sun"
        },
        {
          "value": "todo",
          "label": "todolist"
        },
        {
          "value": "datetime",
          "label": "datetime"
        },
        {
          "value": "device_tracker",
          "label": "device_tracker"
        },
        {
          "value": "person",
          "label": "person"
        }
      ],
      "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"
    },
    "_trackerStates": {
      "newLine": true,
      "type": "panel",
      "hidden": "!['device_tracker', 'person'].includes(data.entity)",
      "items": {
        "_trackerHeading": {
          "type": "header",
          "size": 1,
          "text": "Location & presence states",
          "help": "Pick the ioBroker states that provide presence and location for this tracker / person."
        },
        "state_presence": {
          "type": "objectId",
          "label": "Presence state",
          "help": "Boolean (true = home) or a zone-name string. If empty, presence is derived from the coordinates vs zone.home.",
          "xs": 12,
          "sm": 12,
          "md": 6,
          "lg": 6
        },
        "state_gps": {
          "newLine": true,
          "type": "objectId",
          "label": "GPS state (\"lat;lon\")",
          "help": "A single state holding \"latitude;longitude\". Use this OR the separate latitude/longitude states.",
          "xs": 12,
          "sm": 12,
          "md": 6,
          "lg": 6
        },
        "state_latitude": {
          "newLine": true,
          "type": "objectId",
          "label": "Latitude state",
          "hidden": "!!data.state_gps",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_longitude": {
          "type": "objectId",
          "label": "Longitude state",
          "hidden": "!!data.state_gps",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_gps_accuracy": {
          "newLine": true,
          "type": "objectId",
          "label": "GPS accuracy state",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_battery": {
          "type": "objectId",
          "label": "Battery level state",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "source_type": {
          "type": "select",
          "label": "Source type",
          "help": "How the location is determined (device_tracker only).",
          "default": "gps",
          "hidden": "data.entity === 'person'",
          "options": [
            {
              "value": "gps",
              "label": "gps"
            },
            {
              "value": "router",
              "label": "router"
            },
            {
              "value": "bluetooth",
              "label": "bluetooth"
            },
            {
              "value": "bluetooth_le",
              "label": "bluetooth_le"
            }
          ],
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "attr_entity_picture": {
          "newLine": true,
          "type": "text",
          "label": "Picture URL",
          "help": "Fixed picture URL (entity_picture). Leave empty to use a state instead.",
          "xs": 12,
          "sm": 12,
          "md": 6,
          "lg": 6
        },
        "state_entity_picture": {
          "type": "objectId",
          "label": "Picture URL state",
          "help": "A state that holds the picture URL. Wins over the fixed URL above.",
          "xs": 12,
          "sm": 12,
          "md": 6,
          "lg": 6
        }
      }
    },
    "_coverStates": {
      "newLine": true,
      "type": "panel",
      "hidden": "data.entity !== 'cover'",
      "items": {
        "_coverHeading": {
          "type": "header",
          "size": 1,
          "text": "Cover states",
          "help": "Pick the ioBroker states that control this cover (e.g. an automatic window). Map a level state to SET (with ACTUAL for feedback), or use OPEN/CLOSE/STOP buttons."
        },
        "state_SET": {
          "type": "objectId",
          "label": "Level (SET)",
          "help": "Numeric level state to set the position (0-100).",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_ACTUAL": {
          "type": "objectId",
          "label": "Level feedback (ACTUAL)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_STOP": {
          "type": "objectId",
          "label": "Stop button (STOP)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_OPEN": {
          "newLine": true,
          "type": "objectId",
          "label": "Open button (OPEN)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_CLOSE": {
          "type": "objectId",
          "label": "Close button (CLOSE)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_TILT_SET": {
          "newLine": true,
          "type": "objectId",
          "label": "Tilt level (TILT_SET)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_TILT_ACTUAL": {
          "type": "objectId",
          "label": "Tilt feedback (TILT_ACTUAL)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_TILT_OPEN": {
          "newLine": true,
          "type": "objectId",
          "label": "Tilt open button (TILT_OPEN)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_TILT_CLOSE": {
          "type": "objectId",
          "label": "Tilt close button (TILT_CLOSE)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_TILT_STOP": {
          "type": "objectId",
          "label": "Tilt stop button (TILT_STOP)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        }
      }
    },
    "_lockStates": {
      "newLine": true,
      "type": "panel",
      "hidden": "data.entity !== 'lock'",
      "items": {
        "_lockHeading": {
          "type": "header",
          "size": 1,
          "text": "Lock states",
          "help": "Pick the ioBroker states for this lock."
        },
        "state_SET": {
          "type": "objectId",
          "label": "Lock / unlock (SET)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_ACTUAL": {
          "type": "objectId",
          "label": "State feedback (ACTUAL)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_OPEN": {
          "type": "objectId",
          "label": "Open / latch (OPEN)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        }
      }
    },
    "_mediaStates": {
      "newLine": true,
      "type": "panel",
      "hidden": "data.entity !== 'media_player'",
      "items": {
        "_mediaHeading": {
          "type": "header",
          "size": 1,
          "text": "Media player states",
          "help": "Pick the ioBroker states for this media player. Map only what your device provides."
        },
        "state_STATE": {
          "type": "objectId",
          "label": "Play state (STATE)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_POWER": {
          "type": "objectId",
          "label": "Power (POWER)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_PLAY": {
          "newLine": true,
          "type": "objectId",
          "label": "Play (PLAY)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_PAUSE": {
          "type": "objectId",
          "label": "Pause (PAUSE)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_STOP": {
          "type": "objectId",
          "label": "Stop (STOP)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_NEXT": {
          "newLine": true,
          "type": "objectId",
          "label": "Next (NEXT)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_PREV": {
          "type": "objectId",
          "label": "Previous (PREV)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_VOLUME": {
          "newLine": true,
          "type": "objectId",
          "label": "Volume (VOLUME)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_VOLUME_ACTUAL": {
          "type": "objectId",
          "label": "Volume feedback (VOLUME_ACTUAL)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_MUTE": {
          "type": "objectId",
          "label": "Mute (MUTE)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_SEEK": {
          "newLine": true,
          "type": "objectId",
          "label": "Seek / position (SEEK)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_REPEAT": {
          "type": "objectId",
          "label": "Repeat (REPEAT)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_SHUFFLE": {
          "type": "objectId",
          "label": "Shuffle (SHUFFLE)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_TITLE": {
          "newLine": true,
          "type": "objectId",
          "label": "Title (TITLE)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_ARTIST": {
          "type": "objectId",
          "label": "Artist (ARTIST)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_COVER": {
          "type": "objectId",
          "label": "Cover art (COVER)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_DURATION": {
          "newLine": true,
          "type": "objectId",
          "label": "Duration (DURATION)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_ELAPSED": {
          "type": "objectId",
          "label": "Elapsed (ELAPSED)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        }
      }
    },
    "_vacuumStates": {
      "newLine": true,
      "type": "panel",
      "hidden": "data.entity !== 'vacuum'",
      "items": {
        "_vacuumHeading": {
          "type": "header",
          "size": 1,
          "text": "Vacuum states",
          "help": "Pick the ioBroker states for this vacuum. STATE gives the status; POWER starts/stops; PAUSE pauses; WORK_MODE is the fan speed."
        },
        "state_STATE": {
          "type": "objectId",
          "label": "Status (STATE)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_POWER": {
          "type": "objectId",
          "label": "Start/stop (POWER)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_PAUSE": {
          "type": "objectId",
          "label": "Pause (PAUSE)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_BATTERY": {
          "newLine": true,
          "type": "objectId",
          "label": "Battery (BATTERY)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_WORK_MODE": {
          "type": "objectId",
          "label": "Fan speed (WORK_MODE)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_MAP": {
          "newLine": true,
          "type": "objectId",
          "label": "Map image (MAP)",
          "help": "A state with the map as a URL or base64 image; shown as the vacuum's picture.",
          "xs": 12,
          "sm": 12,
          "md": 6,
          "lg": 6
        }
      }
    },
    "_humidifierStates": {
      "newLine": true,
      "type": "panel",
      "hidden": "data.entity !== 'humidifier'",
      "items": {
        "_humidifierHeading": {
          "type": "header",
          "size": 1,
          "text": "Humidifier states",
          "help": "POWER turns it on/off; SET is the target humidity, ACTUAL the current humidity; MODE is the operation mode."
        },
        "state_POWER": {
          "type": "objectId",
          "label": "On/off (POWER)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_SET": {
          "type": "objectId",
          "label": "Target humidity (SET)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_ACTUAL": {
          "type": "objectId",
          "label": "Current humidity (ACTUAL)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_MODE": {
          "newLine": true,
          "type": "objectId",
          "label": "Mode (MODE)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        }
      }
    },
    "_waterHeaterStates": {
      "newLine": true,
      "type": "panel",
      "hidden": "data.entity !== 'water_heater'",
      "items": {
        "_waterHeaterHeading": {
          "type": "header",
          "size": 1,
          "text": "Water heater states",
          "help": "SET is the target temperature, ACTUAL the current temperature; POWER turns it on/off; MODE is the operation mode."
        },
        "state_SET": {
          "type": "objectId",
          "label": "Target temperature (SET)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_ACTUAL": {
          "type": "objectId",
          "label": "Current temperature (ACTUAL)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_POWER": {
          "type": "objectId",
          "label": "On/off (POWER)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_MODE": {
          "newLine": true,
          "type": "objectId",
          "label": "Operation mode (MODE)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        }
      }
    },
    "_climateStates": {
      "newLine": true,
      "type": "panel",
      "hidden": "data.entity !== 'climate'",
      "items": {
        "_climateHeading": {
          "type": "header",
          "size": 1,
          "text": "Thermostat states",
          "help": "SET is the target temperature, ACTUAL the current temperature; MODE is the HVAC mode, POWER on/off. The others are optional."
        },
        "state_SET": {
          "type": "objectId",
          "label": "Target temperature (SET)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_ACTUAL": {
          "type": "objectId",
          "label": "Current temperature (ACTUAL)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_MODE": {
          "type": "objectId",
          "label": "HVAC mode (MODE)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_POWER": {
          "newLine": true,
          "type": "objectId",
          "label": "On/off (POWER)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_HUMIDITY": {
          "type": "objectId",
          "label": "Humidity (HUMIDITY)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_SPEED": {
          "type": "objectId",
          "label": "Fan speed (SPEED)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_SWING": {
          "newLine": true,
          "type": "objectId",
          "label": "Swing (SWING)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_BOOST": {
          "type": "objectId",
          "label": "Boost (BOOST)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_PARTY": {
          "type": "objectId",
          "label": "Party (PARTY)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "hvac_default": {
          "newLine": true,
          "type": "select",
          "label": "Heating or cooling",
          "help": "Only used when no HVAC mode state is mapped above.",
          "default": "heat",
          "hidden": "!!data.state_MODE",
          "options": [
            {
              "value": "heat",
              "label": "Heating"
            },
            {
              "value": "cool",
              "label": "Cooling"
            }
          ],
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        }
      }
    },
    "_lightStates": {
      "newLine": true,
      "type": "panel",
      "hidden": "data.entity !== 'light'",
      "items": {
        "_lightHeading": {
          "type": "header",
          "size": 1,
          "text": "Light states",
          "help": "ON switches on/off; DIMMER is the brightness; TEMPERATURE is the colour temperature; RGB a colour value. Map only what your light supports."
        },
        "state_ON": {
          "type": "objectId",
          "label": "On/off (ON)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_ON_ACTUAL": {
          "type": "objectId",
          "label": "On/off feedback (ON_ACTUAL)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_DIMMER": {
          "type": "objectId",
          "label": "Brightness (DIMMER)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_TEMPERATURE": {
          "newLine": true,
          "type": "objectId",
          "label": "Colour temperature (TEMPERATURE)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_RGB": {
          "type": "objectId",
          "label": "RGB colour (RGB)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_HUE": {
          "type": "objectId",
          "label": "Hue (HUE)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_SATURATION": {
          "newLine": true,
          "type": "objectId",
          "label": "Saturation (SATURATION)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_EFFECT": {
          "type": "objectId",
          "label": "Effect (EFFECT)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_WHITE": {
          "newLine": true,
          "type": "objectId",
          "label": "White channel (WHITE)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_RGBW": {
          "type": "objectId",
          "label": "RGBW colour (RGBW)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_CIE": {
          "type": "objectId",
          "label": "CIE / xy colour (CIE)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        }
      }
    },
    "_fanStates": {
      "newLine": true,
      "type": "panel",
      "hidden": "data.entity !== 'fan'",
      "items": {
        "_fanHeading": {
          "type": "header",
          "size": 1,
          "text": "Fan states",
          "help": "SPEED is the speed / preset mode (its common.states become the presets); SET is the on/off state. OSCILLATION and DIRECTION are optional."
        },
        "state_SET": {
          "type": "objectId",
          "label": "On/off (SET)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_SPEED": {
          "type": "objectId",
          "label": "Speed / preset (SPEED)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_OSCILLATION": {
          "newLine": true,
          "type": "objectId",
          "label": "Oscillation (OSCILLATION)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        },
        "state_DIRECTION": {
          "type": "objectId",
          "label": "Direction (DIRECTION)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 4
        }
      }
    },
    "_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": "",
              "label": "(none)"
            },
            {
              "value": "absolute_humidity",
              "label": "absolute_humidity — Absolute humidity (g/m³)",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "apparent_power",
              "label": "apparent_power — Apparent power (VA)",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "aqi",
              "label": "aqi — Air quality index",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "area",
              "label": "area — Area (m²)",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "atmospheric_pressure",
              "label": "atmospheric_pressure — Atmospheric pressure (hPa)",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "awning",
              "label": "awning — awning",
              "hidden": "data.entity !== 'cover'"
            },
            {
              "value": "battery",
              "label": "battery — on: Low / off: Normal",
              "hidden": "data.entity !== 'binary_sensor'"
            },
            {
              "value": "battery",
              "label": "battery — Battery level (%)",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "battery_charging",
              "label": "battery_charging — on: Charging / off: Not charging",
              "hidden": "data.entity !== 'binary_sensor'"
            },
            {
              "value": "blind",
              "label": "blind — blind",
              "hidden": "data.entity !== 'cover'"
            },
            {
              "value": "blood_glucose_concentration",
              "label": "blood_glucose_concentration — Blood glucose (mg/dL)",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "carbon_dioxide",
              "label": "carbon_dioxide — Carbon dioxide (CO₂) (ppm)",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "carbon_monoxide",
              "label": "carbon_monoxide — on: CO detected / off: Clear",
              "hidden": "data.entity !== 'binary_sensor'"
            },
            {
              "value": "carbon_monoxide",
              "label": "carbon_monoxide — Carbon monoxide (CO) (ppm)",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "cold",
              "label": "cold — on: Cold / off: Normal",
              "hidden": "data.entity !== 'binary_sensor'"
            },
            {
              "value": "conductivity",
              "label": "conductivity — Conductivity (µS/cm)",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "connectivity",
              "label": "connectivity — on: Connected / off: Disconnected",
              "hidden": "data.entity !== 'binary_sensor'"
            },
            {
              "value": "current",
              "label": "current — Current (A)",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "curtain",
              "label": "curtain — curtain",
              "hidden": "data.entity !== 'cover'"
            },
            {
              "value": "damper",
              "label": "damper — damper",
              "hidden": "data.entity !== 'cover'"
            },
            {
              "value": "data_rate",
              "label": "data_rate — Data rate (bit/s)",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "data_size",
              "label": "data_size — Data size (B)",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "date",
              "label": "date — Date",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "dehumidifier",
              "label": "dehumidifier — dehumidifier",
              "hidden": "data.entity !== 'humidifier'"
            },
            {
              "value": "distance",
              "label": "distance — Distance (m)",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "door",
              "label": "door — on: Open / off: Closed",
              "hidden": "data.entity !== 'binary_sensor'"
            },
            {
              "value": "door",
              "label": "door — door",
              "hidden": "data.entity !== 'cover'"
            },
            {
              "value": "duration",
              "label": "duration — Duration (s)",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "energy",
              "label": "energy — Energy consumed (Wh)",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "energy_distance",
              "label": "energy_distance — Energy per distance (Wh/km)",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "energy_storage",
              "label": "energy_storage — Stored energy (Wh)",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "frequency",
              "label": "frequency — Frequency (Hz)",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "garage",
              "label": "garage — garage",
              "hidden": "data.entity !== 'cover'"
            },
            {
              "value": "garage_door",
              "label": "garage_door — on: Open / off: Closed",
              "hidden": "data.entity !== 'binary_sensor'"
            },
            {
              "value": "gas",
              "label": "gas — on: Gas detected / off: Clear",
              "hidden": "data.entity !== 'binary_sensor'"
            },
            {
              "value": "gas",
              "label": "gas — Gas volume (m³)",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "gate",
              "label": "gate — gate",
              "hidden": "data.entity !== 'cover'"
            },
            {
              "value": "heat",
              "label": "heat — on: Hot / off: Normal",
              "hidden": "data.entity !== 'binary_sensor'"
            },
            {
              "value": "humidifier",
              "label": "humidifier — humidifier",
              "hidden": "data.entity !== 'humidifier'"
            },
            {
              "value": "humidity",
              "label": "humidity — Humidity (%)",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "illuminance",
              "label": "illuminance — Illuminance (lx)",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "irradiance",
              "label": "irradiance — Irradiance (W/m²)",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "light",
              "label": "light — on: Light detected / off: No light",
              "hidden": "data.entity !== 'binary_sensor'"
            },
            {
              "value": "lock",
              "label": "lock — on: Unlocked / off: Locked",
              "hidden": "data.entity !== 'binary_sensor'"
            },
            {
              "value": "moisture",
              "label": "moisture — on: Wet / off: Dry",
              "hidden": "data.entity !== 'binary_sensor'"
            },
            {
              "value": "moisture",
              "label": "moisture — Moisture (%)",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "monetary",
              "label": "monetary — Monetary value (currency)",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "motion",
              "label": "motion — on: Motion detected / off: Clear",
              "hidden": "data.entity !== 'binary_sensor'"
            },
            {
              "value": "moving",
              "label": "moving — on: Moving / off: Stopped",
              "hidden": "data.entity !== 'binary_sensor'"
            },
            {
              "value": "nitrogen_dioxide",
              "label": "nitrogen_dioxide — Nitrogen dioxide (µg/m³)",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "nitrogen_monoxide",
              "label": "nitrogen_monoxide — Nitrogen monoxide (µg/m³)",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "nitrous_oxide",
              "label": "nitrous_oxide — Nitrous oxide (µg/m³)",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "occupancy",
              "label": "occupancy — on: Occupied / off: Clear",
              "hidden": "data.entity !== 'binary_sensor'"
            },
            {
              "value": "opening",
              "label": "opening — on: Open / off: Closed",
              "hidden": "data.entity !== 'binary_sensor'"
            },
            {
              "value": "outlet",
              "label": "outlet — outlet",
              "hidden": "data.entity !== 'switch'"
            },
            {
              "value": "ozone",
              "label": "ozone — Ozone (µg/m³)",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "ph",
              "label": "ph — pH value",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "plug",
              "label": "plug — on: Plugged in / off: Unplugged",
              "hidden": "data.entity !== 'binary_sensor'"
            },
            {
              "value": "pm1",
              "label": "pm1 — Particulates < 1 µm (µg/m³)",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "pm10",
              "label": "pm10 — Particulates < 10 µm (µg/m³)",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "pm25",
              "label": "pm25 — Particulates < 2.5 µm (µg/m³)",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "pm4",
              "label": "pm4 — Particulates < 4 µm (µg/m³)",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "power",
              "label": "power — on: Power detected / off: No power",
              "hidden": "data.entity !== 'binary_sensor'"
            },
            {
              "value": "power",
              "label": "power — Current power (W)",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "power_factor",
              "label": "power_factor — Power factor (%)",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "precipitation",
              "label": "precipitation — Precipitation (mm)",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "precipitation_intensity",
              "label": "precipitation_intensity — Precipitation intensity (mm/h)",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "presence",
              "label": "presence — on: Home / off: Away",
              "hidden": "data.entity !== 'binary_sensor'"
            },
            {
              "value": "pressure",
              "label": "pressure — Pressure (hPa)",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "problem",
              "label": "problem — on: Problem detected / off: OK",
              "hidden": "data.entity !== 'binary_sensor'"
            },
            {
              "value": "reactive_energy",
              "label": "reactive_energy — Reactive energy (varh)",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "reactive_power",
              "label": "reactive_power — Reactive power (var)",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "running",
              "label": "running — on: Running / off: Not running",
              "hidden": "data.entity !== 'binary_sensor'"
            },
            {
              "value": "safety",
              "label": "safety — on: Unsafe / off: Safe",
              "hidden": "data.entity !== 'binary_sensor'"
            },
            {
              "value": "shade",
              "label": "shade — shade",
              "hidden": "data.entity !== 'cover'"
            },
            {
              "value": "shutter",
              "label": "shutter — shutter",
              "hidden": "data.entity !== 'cover'"
            },
            {
              "value": "signal_strength",
              "label": "signal_strength — Signal strength (dBm)",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "smoke",
              "label": "smoke — on: Smoke detected / off: Clear",
              "hidden": "data.entity !== 'binary_sensor'"
            },
            {
              "value": "sound",
              "label": "sound — on: Sound detected / off: Clear",
              "hidden": "data.entity !== 'binary_sensor'"
            },
            {
              "value": "sound_pressure",
              "label": "sound_pressure — Sound pressure (dB)",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "speed",
              "label": "speed — Speed (m/s)",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "sulphur_dioxide",
              "label": "sulphur_dioxide — Sulphur dioxide (µg/m³)",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "switch",
              "label": "switch — switch",
              "hidden": "data.entity !== 'switch'"
            },
            {
              "value": "tamper",
              "label": "tamper — on: Tampering detected / off: Clear",
              "hidden": "data.entity !== 'binary_sensor'"
            },
            {
              "value": "temperature",
              "label": "temperature — Temperature (°C)",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "temperature_delta",
              "label": "temperature_delta — Temperature difference (°C)",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "timestamp",
              "label": "timestamp — Timestamp",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "update",
              "label": "update — on: Update available / off: Up-to-date",
              "hidden": "data.entity !== 'binary_sensor'"
            },
            {
              "value": "uptime",
              "label": "uptime — Uptime / last boot",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "vibration",
              "label": "vibration — on: Vibration detected / off: No vibration",
              "hidden": "data.entity !== 'binary_sensor'"
            },
            {
              "value": "volatile_organic_compounds",
              "label": "volatile_organic_compounds — Volatile organic compounds (VOC) (µg/m³)",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "volatile_organic_compounds_parts",
              "label": "volatile_organic_compounds_parts — VOC ratio (ppm)",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "voltage",
              "label": "voltage — Voltage (V)",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "volume",
              "label": "volume — Volume consumed (m³)",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "volume_flow_rate",
              "label": "volume_flow_rate — Volume flow rate (m³/h)",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "volume_storage",
              "label": "volume_storage — Stored volume (m³)",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "water",
              "label": "water — Water consumed (L)",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "weight",
              "label": "weight — Weight / mass (kg)",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "wind_direction",
              "label": "wind_direction — Wind direction (°)",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "wind_speed",
              "label": "wind_speed — Wind speed (m/s)",
              "hidden": "data.entity !== 'sensor'"
            },
            {
              "value": "window",
              "label": "window — on: Open / off: Closed",
              "hidden": "data.entity !== 'binary_sensor'"
            },
            {
              "value": "window",
              "label": "window — window",
              "hidden": "data.entity !== 'cover'"
            }
          ],
          "hidden": "!['sensor', 'binary_sensor', 'cover', 'switch', 'humidifier'].includes(data.entity)",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 3,
          "defaultFunc": "data.entity === 'sensor' && customObj.common && customObj.common.unit ? {'°C':'temperature','°F':'temperature','K':'temperature','W':'power','kW':'power','mW':'power','MW':'power','Wh':'energy','kWh':'energy','MWh':'energy','GWh':'energy','A':'current','mA':'current','V':'voltage','mV':'voltage','kV':'voltage','Hz':'frequency','kHz':'frequency','lx':'illuminance','lux':'illuminance','hPa':'pressure','mbar':'pressure','bar':'pressure','Pa':'pressure','psi':'pressure','dBm':'signal_strength'}[customObj.common.unit] : undefined"
        },
        "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'",
          "defaultFunc": "data.entity === 'input_datetime' ? false : undefined",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 3
        },
        "attr_has_date": {
          "type": "checkbox",
          "label": "labelHasDate",
          "hidden": "data.entity !== 'input_datetime'",
          "defaultFunc": "data.entity === 'input_datetime' ? true : undefined",
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 3
        },
        "attr_state_class": {
          "newLine": true,
          "type": "select",
          "label": "State class",
          "help": "For sensors (long-term statistics): measurement = current value; total = a total that can increase and decrease or be reset (net value); total_increasing = a monotonically increasing total that may reset (e.g. an energy meter).",
          "hidden": "data.entity !== 'sensor'",
          "options": [
            {
              "value": "",
              "label": "(none)"
            },
            {
              "value": "measurement",
              "label": "measurement"
            },
            {
              "value": "total",
              "label": "total"
            },
            {
              "value": "total_increasing",
              "label": "total_increasing"
            }
          ],
          "xs": 12,
          "sm": 6,
          "md": 4,
          "lg": 3,
          "defaultFunc": "data.entity !== 'sensor' ? undefined : (['Wh','kWh','MWh','GWh','m³','ft³','L','varh','kvarh'].indexOf((customObj.common&&customObj.common.unit)||'')>=0 ? 'total_increasing' : (['°C','°F','K','%','W','kW','mW','MW','A','mA','V','mV','kV','Hz','kHz','lx','lux','hPa','mbar','bar','Pa','psi','dB','dBm','dBA','ppm','ppb','µg/m³','mg/m³','m/s','km/h','mph','W/m²','°','lm'].indexOf((customObj.common&&customObj.common.unit)||'')>=0 ? 'measurement' : undefined))"
        }
      }
    }
  }
}
