{
  "pluginAlias": "FreeAtHomeLocalApi",
  "pluginType": "platform",
  "singular": true,
  "headerDisplay": "A Homebridge plugin for interfacing with a BUSCH-JAEGER free@home setup.",
  "footerDisplay": "Control your free@home system with Apple Home using the System Access Point local API.",
  "schema": {
    "type": "object",
    "properties": {
      "name": {
        "title": "Name",
        "type": "string",
        "required": true,
        "default": "My free@home Setup"
      },
      "host": {
        "title": "System Access Point Hostname",
        "description": "The system access point host name",
        "placeholder": "SysAP Host Name",
        "type": "string",
        "required": true
      },
      "user": {
        "title": "User ID",
        "description": "The user name that shall be used to authenticate with the system access point.",
        "placeholder": "SysAP User",
        "type": "string",
        "required": true
      },
      "password": {
        "title": "Password",
        "description": "The password that shall be used to authenticate with the system access point",
        "placeholder": "SysAP Password",
        "type": "string",
        "required": true
      },
      "tlsEnabled": {
        "title": "TLS Enabled",
        "description": "Determines whether the communication with the system access point shall be protected by TLS. Disabling TLS poses a security risk!",
        "type": "boolean",
        "required": false,
        "default": true
      },
      "disableCertificateVerification": {
        "title": "Disable TLS Certificate Verification",
        "description": "Disables TLS certificate verification which can be useful in certain scenarios (e.g. self-signed certificates). Disabling TLS certificate verification poses a security risk!",
        "type": "boolean",
        "required": false,
        "default": false
      },
      "motionSensorAutoReset": {
        "title": "Automatic Reset for Motion Sensors",
        "description": "Determines whether motion sensors will be reset automatically.",
        "type": "boolean",
        "required": false,
        "default": true
      },
      "motionSensorDefaultResetTimer": {
        "title": "Motion Sensor Default Reset Timer",
        "description": "Determines the default reset timer for motion sensors. Only relevant if the automatic reset is enabled.",
        "type": "integer",
        "required": false,
        "default": 20000,
        "minimum": 500,
        "maximum": 60000
      },
      "verboseErrors": {
        "title": "Verbose Errors",
        "description": "Determines whether verbose error messages shall be used, for example for message validation. This is a debug option that should only be enabled if needed.",
        "type": "boolean",
        "required": false,
        "default": false
      },
      "experimental": {
        "title": "Experimental Accessories",
        "description": "Determines whether accessories that are only experimentally supported shall be configured. Please refer to the README file and continue at your own risk!",
        "type": "boolean",
        "required": false,
        "default": false
      },
      "allowedChannels": {
        "title": "Allowed Channels",
        "description": "Determines channels that shall be allowed during device discovery. Only accessories for allowed channels will be configured. Use the pattern '{DeviceSerial}/{Channel}' to allow a specific channel, or '{DeviceSerial}/*' to allow all channels provided by the device. Check the README file details!",
        "type": "array",
        "items": {
          "type": "string"
        },
        "required": false
      },
      "ignoredChannels": {
        "title": "Ignored Channels",
        "description": "Determines channels that shall be ignored during device discovery. No accessory will be configured for an ignored channel. Use the pattern '{DeviceSerial}/{Channel}' to ignore a specific channel, or '{DeviceSerial}/*' to ignore all channels provided by the device. Check the README file details!",
        "type": "array",
        "items": {
          "type": "string"
        },
        "required": false
      },
      "typeMappings": {
        "title": "Type Mappings",
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "channel": {
              "type": "string"
            },
            "type": {
              "type": "string",
              "enum": [
                "Undefined",
                "Outlet"
              ]
            }
          }
        },
        "required": false
      }
    }
  }
}
