From 7159786c6d36eeef7b4bf2b279d356b2214a940e Mon Sep 17 00:00:00 2001 From: QSmally Date: Fri, 11 Sep 2026 13:25:28 +0200 Subject: [PATCH 1/2] fix: skip lib check because AI library is bad --- tsconfig.types.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tsconfig.types.json b/tsconfig.types.json index 143890df..4d0eb81c 100644 --- a/tsconfig.types.json +++ b/tsconfig.types.json @@ -8,8 +8,9 @@ "outDir": "./types", "module": "commonjs", "target": "ES2020", - "strict": false + "strict": false, + "skipLibCheck": true }, "include": ["index.js", "lib/**/*.js"], "exclude": ["test/**", "node_modules/**"] -} \ No newline at end of file +} From 22e1c0e23556504476292a5de8f71c6ed3b5183b Mon Sep 17 00:00:00 2001 From: QSmally Date: Fri, 11 Sep 2026 16:19:54 +0200 Subject: [PATCH 2/2] feat: generic firmware updates --- .gitignore | 3 +- assets/app/schema.d.ts | 6 +- assets/app/schema.json | 572 +++++++++++++++++++++++++------ index.js | 1 + lib/App/index.js | 6 +- lib/Util/index.js | 14 +- test/validate-driver-manifest.js | 104 +++--- webpack/index.js | 2 +- 8 files changed, 541 insertions(+), 167 deletions(-) diff --git a/.gitignore b/.gitignore index f5310483..bb237939 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ .idea +.vimrc node_modules /.idea/workspace.xml -types \ No newline at end of file +types diff --git a/assets/app/schema.d.ts b/assets/app/schema.d.ts index fb9ff915..0310ff2d 100644 --- a/assets/app/schema.d.ts +++ b/assets/app/schema.d.ts @@ -248,7 +248,7 @@ export interface App { [k: string]: unknown; }[]; settings?: DriverSettings; - firmwareUpdates?: ZigbeeFirmwareUpdates | ZwaveFirmwareUpdates; + firmwareUpdates?: ZigbeeFirmwareUpdates | ZwaveFirmwareUpdates | GenericFirmwareUpdates; gtin?: string | string[]; matter?: MatterDevice; zwave?: ZwaveDevice; @@ -448,6 +448,10 @@ export interface ZwaveFirmwareUpdateFile { size: number; integrity: Integrity; } +export interface GenericFirmwareUpdates { + enabled: boolean; + wakeInstruction?: I18NObject; +} export interface MatterDevice { vendorId: number | number[]; productId: number | number[]; diff --git a/assets/app/schema.json b/assets/app/schema.json index 74a8488c..97002685 100755 --- a/assets/app/schema.json +++ b/assets/app/schema.json @@ -10,7 +10,9 @@ }, { "type": "object", - "required": ["en"], + "required": [ + "en" + ], "patternProperties": { "^.*$": { "type": "string" @@ -38,7 +40,10 @@ }, "zigbee-firmware-update-device": { "type": "object", - "required": ["manufacturerName", "productId"], + "required": [ + "manufacturerName", + "productId" + ], "additionalProperties": false, "properties": { "manufacturerName": { @@ -71,7 +76,14 @@ }, "zigbee-firmware-update-file": { "type": "object", - "required": ["fileVersion", "size", "imageType", "manufacturerCode", "name", "integrity"], + "required": [ + "fileVersion", + "size", + "imageType", + "manufacturerCode", + "name", + "integrity" + ], "additionalProperties": false, "properties": { "fileVersion": { @@ -108,7 +120,11 @@ }, "zigbee-firmware-update": { "type": "object", - "required": ["changelog", "device", "files"], + "required": [ + "changelog", + "device", + "files" + ], "additionalProperties": false, "properties": { "changelog": { @@ -129,7 +145,9 @@ "zigbee-firmware-updates": { "type": "object", "additionalProperties": false, - "required": ["updates"], + "required": [ + "updates" + ], "properties": { "wakeInstruction": { "$ref": "#/definitions/i18nObject" @@ -166,7 +184,11 @@ }, "zwave-firmware-update-device": { "type": "object", - "required": ["manufacturerId", "productTypeId", "productId"], + "required": [ + "manufacturerId", + "productTypeId", + "productId" + ], "additionalProperties": false, "properties": { "manufacturerId": { @@ -225,7 +247,12 @@ }, "zwave-firmware-update-file": { "type": "object", - "required": ["targetId", "name", "size", "integrity"], + "required": [ + "targetId", + "name", + "size", + "integrity" + ], "additionalProperties": false, "properties": { "region": { @@ -247,7 +274,12 @@ }, "zwave-firmware-update": { "type": "object", - "required": ["version", "changelog", "device", "files"], + "required": [ + "version", + "changelog", + "device", + "files" + ], "additionalProperties": false, "properties": { "version": { @@ -274,7 +306,9 @@ "zwave-firmware-updates": { "type": "object", "additionalProperties": false, - "required": ["updates"], + "required": [ + "updates" + ], "properties": { "wakeInstruction": { "$ref": "#/definitions/i18nObject" @@ -287,7 +321,9 @@ }, "verifyPostUpdateWithNop": { "type": "boolean", - "enum": [false] + "enum": [ + false + ] }, "nopRetryInterval": { "type": "number" @@ -304,8 +340,25 @@ } } }, + "generic-firmware-updates": { + "type": "object", + "additionalProperties": false, + "required": [ + "enabled" + ], + "properties": { + "enabled": { + "type": "boolean" + }, + "wakeInstruction": { + "$ref": "#/definitions/i18nObject" + } + } + }, "author": { - "required": ["name"], + "required": [ + "name" + ], "properties": { "name": { "type": "string" @@ -319,7 +372,10 @@ } }, "images": { - "required": ["large", "small"], + "required": [ + "large", + "small" + ], "additionalProperties": false, "properties": { "large": { @@ -335,7 +391,10 @@ }, "flowCard": { "type": "object", - "required": ["id", "title"], + "required": [ + "id", + "title" + ], "properties": { "id": { "type": "string" @@ -348,35 +407,54 @@ }, "deprecated": { "type": "boolean", - "enum": [true] + "enum": [ + true + ] }, "highlight": { "type": "boolean", - "enum": [true] + "enum": [ + true + ] }, "advanced": { "type": "boolean", - "enum": [true] + "enum": [ + true + ] }, "platforms": { "type": "array", "uniqueItems": true, "items": { "type": "string", - "enum": ["cloud", "local"] + "enum": [ + "cloud", + "local" + ] } }, "droptoken": { "oneOf": [ { "type": "string", - "enum": ["boolean", "number", "string", "image"] + "enum": [ + "boolean", + "number", + "string", + "image" + ] }, { "type": "array", "items": { "type": "string", - "enum": ["boolean", "number", "string", "image"] + "enum": [ + "boolean", + "number", + "string", + "image" + ] } } ] @@ -385,14 +463,22 @@ "type": "array", "items": { "type": "object", - "required": ["name", "title"], + "required": [ + "name", + "title" + ], "properties": { "name": { "type": "string" }, "type": { "type": "string", - "enum": ["boolean", "number", "string", "image"], + "enum": [ + "boolean", + "number", + "string", + "image" + ], "default": "string" }, "title": { @@ -420,14 +506,20 @@ "anyOf": [ { "type": "object", - "required": ["name", "type", "filter"], + "required": [ + "name", + "type", + "filter" + ], "properties": { "name": { "type": "string" }, "type": { "type": "string", - "enum": ["device"] + "enum": [ + "device" + ] }, "filter": { "oneOf": [ @@ -443,7 +535,10 @@ }, { "type": "object", - "required": ["name", "type"], + "required": [ + "name", + "type" + ], "properties": { "title": { "$ref": "#/definitions/i18nObject" @@ -489,7 +584,10 @@ }, { "type": "object", - "required": ["name", "type"], + "required": [ + "name", + "type" + ], "properties": { "title": { "$ref": "#/definitions/i18nObject" @@ -499,7 +597,10 @@ }, "type": { "type": "string", - "enum": ["number", "range"] + "enum": [ + "number", + "range" + ] }, "min": { "type": "number" @@ -526,7 +627,11 @@ }, { "type": "object", - "required": ["name", "type", "values"], + "required": [ + "name", + "type", + "values" + ], "properties": { "title": { "$ref": "#/definitions/i18nObject" @@ -536,13 +641,17 @@ }, "type": { "type": "string", - "enum": ["dropdown"] + "enum": [ + "dropdown" + ] }, "values": { "type": "array", "items": { "type": "object", - "required": ["id"], + "required": [ + "id" + ], "properties": { "id": { "type": "string" @@ -557,7 +666,12 @@ }, { "type": "object", - "required": ["name", "type", "values", "conjunction"], + "required": [ + "name", + "type", + "values", + "conjunction" + ], "properties": { "title": { "$ref": "#/definitions/i18nObject" @@ -567,17 +681,25 @@ }, "type": { "type": "string", - "enum": ["multiselect"] + "enum": [ + "multiselect" + ] }, "conjunction": { "type": "string", - "enum": ["and", "or"] + "enum": [ + "and", + "or" + ] }, "values": { "type": "array", "items": { "type": "object", - "required": ["id", "title"], + "required": [ + "id", + "title" + ], "properties": { "id": { "type": "string" @@ -601,11 +723,20 @@ "oneOf": [ { "type": "object", - "required": ["id", "type", "title"], + "required": [ + "id", + "type", + "title" + ], "properties": { "type": { "type": "string", - "enum": ["text", "password", "textarea", "label"] + "enum": [ + "text", + "password", + "textarea", + "label" + ] }, "id": { "type": "string" @@ -626,11 +757,18 @@ }, { "type": "object", - "required": ["id", "type", "title"], + "required": [ + "id", + "type", + "title" + ], "properties": { "type": { "type": "string", - "enum": ["number", "slider"] + "enum": [ + "number", + "slider" + ] }, "id": { "type": "string" @@ -661,11 +799,19 @@ }, { "type": "object", - "required": ["id", "type", "title", "values"], + "required": [ + "id", + "type", + "title", + "values" + ], "properties": { "type": { "type": "string", - "enum": ["radio", "dropdown"] + "enum": [ + "radio", + "dropdown" + ] }, "id": { "type": "string" @@ -683,7 +829,10 @@ "type": "array", "items": { "type": "object", - "required": ["id", "title"], + "required": [ + "id", + "title" + ], "properties": { "id": { "type": "string" @@ -698,11 +847,17 @@ }, { "type": "object", - "required": ["id", "type", "title"], + "required": [ + "id", + "type", + "title" + ], "properties": { "type": { "type": "string", - "enum": ["checkbox"] + "enum": [ + "checkbox" + ] }, "id": { "type": "string" @@ -720,11 +875,17 @@ }, { "type": "object", - "required": ["type", "title", "children"], + "required": [ + "type", + "title", + "children" + ], "properties": { "type": { "type": "string", - "enum": ["group"] + "enum": [ + "group" + ] }, "title": { "$ref": "#/definitions/i18nObject" @@ -743,11 +904,20 @@ "oneOf": [ { "type": "object", - "required": ["id", "type", "label"], + "required": [ + "id", + "type", + "label" + ], "properties": { "type": { "type": "string", - "enum": ["text", "password", "textarea", "label"] + "enum": [ + "text", + "password", + "textarea", + "label" + ] }, "id": { "oneOf": [ @@ -773,7 +943,9 @@ }, "highlight": { "type": "boolean", - "enum": [true] + "enum": [ + true + ] }, "zwave": { "$ref": "#/definitions/zwaveSetting" @@ -782,11 +954,18 @@ }, { "type": "object", - "required": ["id", "type", "label"], + "required": [ + "id", + "type", + "label" + ], "properties": { "type": { "type": "string", - "enum": ["number", "slider"] + "enum": [ + "number", + "slider" + ] }, "id": { "oneOf": [ @@ -837,7 +1016,9 @@ }, "highlight": { "type": "boolean", - "enum": [true] + "enum": [ + true + ] }, "zwave": { "$ref": "#/definitions/zwaveSetting" @@ -846,11 +1027,19 @@ }, { "type": "object", - "required": ["id", "type", "label", "values"], + "required": [ + "id", + "type", + "label", + "values" + ], "properties": { "type": { "type": "string", - "enum": ["radio", "dropdown"] + "enum": [ + "radio", + "dropdown" + ] }, "id": { "oneOf": [ @@ -875,7 +1064,10 @@ "type": "array", "items": { "type": "object", - "required": ["id", "label"], + "required": [ + "id", + "label" + ], "properties": { "id": { "type": "string" @@ -888,7 +1080,9 @@ }, "highlight": { "type": "boolean", - "enum": [true] + "enum": [ + true + ] }, "zwave": { "$ref": "#/definitions/zwaveSetting" @@ -897,11 +1091,17 @@ }, { "type": "object", - "required": ["id", "type", "label"], + "required": [ + "id", + "type", + "label" + ], "properties": { "type": { "type": "string", - "enum": ["checkbox"] + "enum": [ + "checkbox" + ] }, "id": { "oneOf": [ @@ -924,7 +1124,9 @@ }, "highlight": { "type": "boolean", - "enum": [true] + "enum": [ + true + ] }, "zwave": { "$ref": "#/definitions/zwaveSetting" @@ -933,11 +1135,17 @@ }, { "type": "object", - "required": ["type", "label", "children"], + "required": [ + "type", + "label", + "children" + ], "properties": { "type": { "type": "string", - "enum": ["group"] + "enum": [ + "group" + ] }, "label": { "$ref": "#/definitions/i18nObject" @@ -947,7 +1155,9 @@ }, "highlight": { "type": "boolean", - "enum": [true] + "enum": [ + true + ] }, "zwave": { "$ref": "#/definitions/zwaveSetting" @@ -959,7 +1169,10 @@ }, "matterDevice": { "type": "object", - "required": ["vendorId", "productId"], + "required": [ + "vendorId", + "productId" + ], "properties": { "vendorId": { "oneOf": [ @@ -1031,7 +1244,9 @@ }, "learnmode": { "type": "object", - "required": ["instruction"], + "required": [ + "instruction" + ], "properties": { "image": { "type": "string" @@ -1045,7 +1260,11 @@ }, "zigbeeDevice": { "type": "object", - "required": ["manufacturerName", "productId", "endpoints"], + "required": [ + "manufacturerName", + "productId", + "endpoints" + ], "properties": { "manufacturerName": { "oneOf": [ @@ -1100,7 +1319,9 @@ }, "learnmode": { "type": "object", - "required": ["instruction"], + "required": [ + "instruction" + ], "properties": { "image": { "type": "string" @@ -1114,7 +1335,11 @@ }, "zwaveDevice": { "type": "object", - "required": ["manufacturerId", "productTypeId", "productId"], + "required": [ + "manufacturerId", + "productTypeId", + "productId" + ], "properties": { "manufacturerId": { "oneOf": [ @@ -1157,7 +1382,9 @@ }, "learnmode": { "type": "object", - "required": ["instruction"], + "required": [ + "instruction" + ], "properties": { "image": { "type": "string" @@ -1194,14 +1421,22 @@ "type": "array", "items": { "type": "object", - "required": ["id", "size", "value"], + "required": [ + "id", + "size", + "value" + ], "properties": { "id": { "type": "number" }, "size": { "type": "number", - "enum": [1, 2, 4] + "enum": [ + 1, + 2, + 4 + ] }, "value": { "oneOf": [ @@ -1217,7 +1452,11 @@ "type": "object", "items": { "type": "object", - "required": ["class", "capabilities", "name"], + "required": [ + "class", + "capabilities", + "name" + ], "properties": { "class": { "type": "string" @@ -1244,14 +1483,21 @@ }, "zwaveSetting": { "type": "object", - "required": ["index", "size"], + "required": [ + "index", + "size" + ], "properties": { "index": { "type": "number" }, "size": { "type": "number", - "enum": [1, 2, 4] + "enum": [ + 1, + 2, + 4 + ] }, "signed": { "type": "boolean" @@ -1259,7 +1505,13 @@ } } }, - "required": ["id", "name", "version", "compatibility", "author"], + "required": [ + "id", + "name", + "version", + "compatibility", + "author" + ], "properties": { "id": { "type": "string" @@ -1292,26 +1544,44 @@ "type": "array", "items": { "type": "string", - "enum": ["cloud", "local"] + "enum": [ + "cloud", + "local" + ] } }, "platformLocalRequiredFeatures": { "type": "array", "items": { "type": "string", - "enum": ["nfc", "speaker", "ledring", "matter", "camera-streaming"] + "enum": [ + "nfc", + "speaker", + "ledring", + "matter", + "camera-streaming" + ] } }, "platformLocalOptionalFeatures": { "type": "array", "items": { "type": "string", - "enum": ["nfc", "speaker", "ledring", "matter", "camera-streaming"] + "enum": [ + "nfc", + "speaker", + "ledring", + "matter", + "camera-streaming" + ] } }, "runtime": { "type": "string", - "enum": ["nodejs", "python"] + "enum": [ + "nodejs", + "python" + ] }, "pythonVersion": { "type": "string" @@ -1468,7 +1738,12 @@ "type": "array", "items": { "type": "object", - "required": ["id", "name", "class", "capabilities"], + "required": [ + "id", + "name", + "class", + "capabilities" + ], "properties": { "id": { "type": "string" @@ -1494,7 +1769,9 @@ }, "deprecated": { "type": "boolean", - "enum": [true] + "enum": [ + true + ] }, "discovery": { "type": "string" @@ -1505,7 +1782,10 @@ "approximation": { "oneOf": [ { - "required": ["usageOn", "usageOff"], + "required": [ + "usageOn", + "usageOff" + ], "additionalProperties": false, "properties": { "usageOn": { @@ -1517,7 +1797,9 @@ } }, { - "required": ["usageConstant"], + "required": [ + "usageConstant" + ], "additionalProperties": false, "properties": { "usageConstant": { @@ -1529,7 +1811,9 @@ }, "cumulative": { "type": "boolean", - "enum": [true] + "enum": [ + true + ] }, "cumulativeImportedCapability": { "type": "string" @@ -1539,15 +1823,21 @@ }, "electricCar": { "type": "boolean", - "enum": [true] + "enum": [ + true + ] }, "evCharger": { "type": "boolean", - "enum": [true] + "enum": [ + true + ] }, "homeBattery": { "type": "boolean", - "enum": [true] + "enum": [ + true + ] }, "meterPowerImportedCapability": { "type": "string" @@ -1568,7 +1858,9 @@ "type": "array", "items": { "type": "object", - "required": ["id"], + "required": [ + "id" + ], "properties": { "id": { "type": "string" @@ -1603,6 +1895,9 @@ }, { "$ref": "#/definitions/zwave-firmware-updates" + }, + { + "$ref": "#/definitions/generic-firmware-updates" } ] }, @@ -1650,7 +1945,10 @@ "uniqueItems": true, "items": { "type": "string", - "enum": ["cloud", "local"] + "enum": [ + "cloud", + "local" + ] } }, "connectivity": { @@ -1717,12 +2015,18 @@ "patternProperties": { "^.*$": { "type": "object", - "required": ["type"], + "required": [ + "type" + ], "additionalProperties": false, "properties": { "type": { "type": "string", - "enum": ["mdns-sd", "ssdp", "mac"] + "enum": [ + "mdns-sd", + "ssdp", + "mac" + ] }, "id": { "type": "string", @@ -1734,7 +2038,10 @@ "type": "array", "items": { "type": "object", - "required": ["field", "match"], + "required": [ + "field", + "match" + ], "additionalProperties": false, "properties": { "field": { @@ -1742,12 +2049,18 @@ }, "match": { "type": "object", - "required": ["type", "value"], + "required": [ + "type", + "value" + ], "additionalProperties": false, "properties": { "type": { "type": "string", - "enum": ["string", "regex"] + "enum": [ + "string", + "regex" + ] }, "value": { "type": "string" @@ -1760,7 +2073,10 @@ }, "mdns-sd": { "type": "object", - "required": ["name", "protocol"], + "required": [ + "name", + "protocol" + ], "additionalProperties": false, "properties": { "name": { @@ -1769,13 +2085,18 @@ }, "protocol": { "type": "string", - "enum": ["tcp", "udp"] + "enum": [ + "tcp", + "udp" + ] } } }, "ssdp": { "type": "object", - "required": ["search"], + "required": [ + "search" + ], "additionalProperties": false, "properties": { "search": { @@ -1786,7 +2107,9 @@ }, "mac": { "type": "object", - "required": ["manufacturer"], + "required": [ + "manufacturer" + ], "additionalProperties": false, "properties": { "manufacturer": { @@ -1821,7 +2144,10 @@ "$ref": "#/definitions/i18nObject" }, "height": { - "type": ["number", "string"] + "type": [ + "number", + "string" + ] }, "transparent": { "type": "boolean" @@ -1832,17 +2158,32 @@ "devices": { "type": "object", "properties": { - "type": { "type": "string", "enum": ["global", "app"] }, - "singular": { "type": "boolean" }, + "type": { + "type": "string", + "enum": [ + "global", + "app" + ] + }, + "singular": { + "type": "boolean" + }, "filter": { "type": "object", "properties": { - "class": { "type": "string" }, - "capabilities": { "type": "string" } + "class": { + "type": "string" + }, + "capabilities": { + "type": "string" + } } } }, - "required": ["type", "singular"] + "required": [ + "type", + "singular" + ] }, "api": { "type": "object", @@ -1852,18 +2193,35 @@ "properties": { "method": { "type": "string", - "enum": ["GET", "POST", "PUT", "DELETE"] + "enum": [ + "GET", + "POST", + "PUT", + "DELETE" + ] }, - "path": { "type": "string" } + "path": { + "type": "string" + } }, - "required": ["method", "path"] + "required": [ + "method", + "path" + ] } } }, - "id": { "type": "string" }, - "deprecated": { "type": "boolean" } + "id": { + "type": "string" + }, + "deprecated": { + "type": "boolean" + } }, - "required": ["name", "id"] + "required": [ + "name", + "id" + ] } }, "additionalProperties": false diff --git a/index.js b/index.js index 4722d3c7..d2e8f127 100644 --- a/index.js +++ b/index.js @@ -70,3 +70,4 @@ module.exports.getBatteries = Energy.getBatteries.bind(Energy); /** @typedef {import('./assets/capability/schema').Capability} CapabilityDefinition */ /** @typedef {import('./assets/app/schema').ZigbeeFirmwareUpdates} ZigbeeFirmwareUpdates */ /** @typedef {import('./assets/app/schema').ZwaveFirmwareUpdates} ZwaveFirmwareUpdates */ +/** @typedef {import('./assets/app/schema').GenericFirmwareUpdates} GenericFirmwareUpdates */ diff --git a/lib/App/index.js b/lib/App/index.js index 676e6dba..00f7686d 100644 --- a/lib/App/index.js +++ b/lib/App/index.js @@ -671,9 +671,9 @@ class App { const isZigbeeDriver = typeof driver.zigbee === 'object' && driver.zigbee !== null; const isZwaveDriver = typeof driver.zwave === 'object' && driver.zwave !== null; - if (!isZigbeeDriver && !isZwaveDriver) { - throw new Error(`drivers.${driver.id} firmwareUpdates are only supported for Zigbee and Zwave drivers (missing driver.zigbee or driver.zwave)`); - } + // if (!isZigbeeDriver && !isZwaveDriver) { + // throw new Error(`drivers.${driver.id} firmwareUpdates are only supported for Zigbee and Zwave drivers (missing driver.zigbee or driver.zwave)`); + // } for (const [updateIndex, update] of Object.entries(driver.firmwareUpdates.updates)) { const hasChangelogString = typeof update.changelog === 'string'; diff --git a/lib/Util/index.js b/lib/Util/index.js index 4205c354..c69db6c2 100644 --- a/lib/Util/index.js +++ b/lib/Util/index.js @@ -5,6 +5,7 @@ const zigbeeUtils = require('./zigbee'); /** @typedef {import('../../assets/app/schema').ZigbeeFirmwareUpdates} ZigbeeFirmwareUpdates */ /** @typedef {import('../../assets/app/schema').ZwaveFirmwareUpdates} ZwaveFirmwareUpdates */ +/** @typedef {import('../../assets/app/schema').GenericFirmwareUpdates} GenericFirmwareUpdates */ /** @typedef {import('../../assets/app/schema').ZigbeeFirmwareUpdateFile} ZigbeeFirmwareUpdateFile */ /** @typedef {import('../../assets/app/schema').ZwaveFirmwareUpdateFile} ZwaveFirmwareUpdateFile */ @@ -122,7 +123,7 @@ class Util { } /** - * @param {ZigbeeFirmwareUpdates | ZwaveFirmwareUpdates} driverFirmwareUpdates + * @param {ZigbeeFirmwareUpdates | ZwaveFirmwareUpdates | GenericFirmwareUpdates} driverFirmwareUpdates * @returns {driverFirmwareUpdates is ZigbeeFirmwareUpdates} */ static isZigbeeFirmwareUpdates(driverFirmwareUpdates) { @@ -132,7 +133,7 @@ class Util { } /** - * @param {ZigbeeFirmwareUpdates | ZwaveFirmwareUpdates} driverFirmwareUpdates + * @param {ZigbeeFirmwareUpdates | ZwaveFirmwareUpdates | GenericFirmwareUpdates} driverFirmwareUpdates * @returns {driverFirmwareUpdates is ZwaveFirmwareUpdates} */ static isZwaveFirmwareUpdates(driverFirmwareUpdates) { @@ -141,6 +142,15 @@ class Util { return Util.isZwaveFirmwareUpdate(driverFirmwareUpdates.updates[0]); } + /** + * @param {ZigbeeFirmwareUpdates | ZwaveFirmwareUpdates | GenericFirmwareUpdates} driverFirmwareUpdates + * @returns {driverFirmwareUpdates is GenericFirmwareUpdates} + */ + static isGenericFirmwareUpdates(driverFirmwareUpdates) { + if (!driverFirmwareUpdates) return false; + return typeof driverFirmwareUpdates.enabled === 'boolean'; + } + } Util.FEATURE_SPEAKER = 'speaker'; diff --git a/test/validate-driver-manifest.js b/test/validate-driver-manifest.js index 98ddf873..2da3743a 100644 --- a/test/validate-driver-manifest.js +++ b/test/validate-driver-manifest.js @@ -2075,56 +2075,56 @@ describe('HomeyLib.App#validate() driver manifest', function() { }); }); - it('`firmwareUpdates` only allowed on drivers with zigbee or zwave property', async function() { - const otaBuffer = createZigbeeOtaFileBuffer({ - manufacturerCode: 0x1234, - imageType: 0x5678, - fileVersion: 0x01020304, - }); - const integrity = createIntegrity(otaBuffer); - - const app = mockApp({ - ...baseAppManifest, - drivers: [{ - ...baseDriverManifest, - firmwareUpdates: { - updates: [{ - changelog: { en: 'Initial' }, - device: { manufacturerName: 'dummyManufacturer', productId: 'dummyProduct' }, - files: [{ - name: 'ota.bin', - integrity, - fileVersion: 0x01020304, - imageType: 0x5678, - manufacturerCode: 0x1234, - size: otaBuffer.length, - }], - }], - }, - }], - }, { - files: { - drivers: { - test: { - assets: { - images: { - 'small.png': createFakePng({ width: 75, height: 75 }), - 'large.png': createFakePng({ width: 500, height: 500 }), - 'xlarge.png': createFakePng({ width: 1000, height: 1000 }), - }, - firmware: { - 'ota.bin': otaBuffer, - }, - }, - }, - }, - }, - }); - - await assertValidates(app, { - debug: /drivers.test firmwareUpdates are only supported for Zigbee and Zwave drivers/i, - publish: /drivers.test firmwareUpdates are only supported for Zigbee and Zwave drivers/i, - verified: /drivers.test firmwareUpdates are only supported for Zigbee and Zwave drivers/i, - }); - }); + // it('`firmwareUpdates` only allowed on drivers with zigbee or zwave property', async function() { + // const otaBuffer = createZigbeeOtaFileBuffer({ + // manufacturerCode: 0x1234, + // imageType: 0x5678, + // fileVersion: 0x01020304, + // }); + // const integrity = createIntegrity(otaBuffer); + + // const app = mockApp({ + // ...baseAppManifest, + // drivers: [{ + // ...baseDriverManifest, + // firmwareUpdates: { + // updates: [{ + // changelog: { en: 'Initial' }, + // device: { manufacturerName: 'dummyManufacturer', productId: 'dummyProduct' }, + // files: [{ + // name: 'ota.bin', + // integrity, + // fileVersion: 0x01020304, + // imageType: 0x5678, + // manufacturerCode: 0x1234, + // size: otaBuffer.length, + // }], + // }], + // }, + // }], + // }, { + // files: { + // drivers: { + // test: { + // assets: { + // images: { + // 'small.png': createFakePng({ width: 75, height: 75 }), + // 'large.png': createFakePng({ width: 500, height: 500 }), + // 'xlarge.png': createFakePng({ width: 1000, height: 1000 }), + // }, + // firmware: { + // 'ota.bin': otaBuffer, + // }, + // }, + // }, + // }, + // }, + // }); + + // await assertValidates(app, { + // debug: /drivers.test firmwareUpdates are only supported for Zigbee and Zwave drivers/i, + // publish: /drivers.test firmwareUpdates are only supported for Zigbee and Zwave drivers/i, + // verified: /drivers.test firmwareUpdates are only supported for Zigbee and Zwave drivers/i, + // }); + // }); }); diff --git a/webpack/index.js b/webpack/index.js index 89090771..58776ab2 100644 --- a/webpack/index.js +++ b/webpack/index.js @@ -1,2 +1,2 @@ /*! For license information please see index.js.LICENSE.txt */ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.HomeyLib=t():e.HomeyLib=t()}(self,(()=>(()=>{var e={6:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Mop","da":"Moppe","de":"Mopp","es":"Limpiasuelos","fr":"Balai à franges","it":"Lavapavimenti","ko":"물걸레 청소기","nl":"Mop","no":"Mopp","pl":"Mop","ru":"Швабра","sv":"Mopp","ar":"ممسحة"},"description":{"en":"Use this device class for mops, e.g. a robot mop.","da":"Brug denne enhedsklasse til mopper, f.eks. en robotmoppe.","de":"Verwenden Sie diese Geräteklasse für Mopps, z. B. für Wischroboter.","es":"Utiliza esta clase de dispositivo para equipos y utensilios para limpiar el suelo (por ej., un robot limpiasuelos).","fr":"Utilisez cette classe d\'appareils pour les balais à franges, par exemple un balai robot.","it":"Utilizza questa classe di dispositivi per i lavapavimenti, es. un robot lavapavimenti.","ko":"이 디바이스 클래스는 물걸레 로봇청소기 등 물걸레 청소기에 사용합니다.","nl":"Gebruik deze apparaatklasse voor moppen, bijvoorbeeld een robotmop.","no":"Bruk denne enhetsklassen for mopper, f.eks. en robotmopp.","pl":"Tej klasy urządzeń należy używać w przypadku mopów, np. mopów-robotów.","sv":"Använd den här enhetsklassen för moppar, t.ex. en robotmopp.","ru":"Используйте этот класс устройств для швабр, например, роботов-швабр.","ar":"استخدم فئة الجهاز هذه للممسحات، مثل الممسحة الآلية."},"minCompatibility":"12.0.0"}')},17:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Moisture","nl":"Vochtigheid","da":"Fugt","it":"Umidità","ko":"습기","no":"Fukt","pl":"Wilgoć","ru":"Влажность","sv":"Fukt","es":"Humedad","fr":"Humidité","ar":"الرطوبة","de":"Feuchtigkeit"},"units":{"en":"%","nl":"%","da":"%","it":"%","ko":"%","no":"%","pl":"%","ru":"%","sv":"%","es":"%","fr":" %","ar":"%","de":"%"},"desc":{"en":"The moisture level in percentage.","nl":"Het vochtigheidsniveau in procenten.","da":"Fugtniveauet i procent.","it":"Il livello di umidità in percentuale.","ko":"백분율로 표현한 습기 수준입니다.","no":"Fuktnivået i prosent.","pl":"Poziom wilgoci w procentach.","ru":"Уровень влажности в процентах.","sv":"Fuktnivån i procent.","es":"El nivel de humedad en porcentaje.","fr":"Le niveau d\'humidité en pourcentage.","ar":"مستوى الرطوبة بالنسبة المئوية.","de":"Der Feuchtigkeitsgehalt in Prozent."},"insights":true,"chartType":"spline","decimals":2,"min":0,"max":100,"color":"#FFA07A","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_moisture_changed","title":{"en":"The moisture level changed","nl":"Het vochtigheidsniveau is veranderd","da":"Fugtniveauet ændrede sig","it":"Il livello di umidità è cambiato","ko":"습기 수준이 변경되면","no":"Fuktnivået ble endret","pl":"Zmienił się poziom wilgoci","ru":"Уровень влажности изменился","sv":"Fuktnivån ändrades","es":"El nivel de humedad ha cambiado","fr":"Le niveau d\'humidité a changé","ar":"تغير مستوى الرطوبة","de":"Der Feuchtigkeitsgehalt hat sich geändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":50}]}]},"minCompatibility":"12.2.0"}')},51:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"PM1","nl":"PM1","de":"PM1","fr":"PM1","it":"PM1","sv":"PM1","no":"PM1","es":"PM1","ru":"ТЧ1","pl":"PM1","ko":"극초미세먼지(PM1.0)","da":"PM1","ar":"PM1"},"units":{"en":"μg/m³","ru":"мкг/м³","ko":"μg/m³","no":"μg/m³","da":"μg/m³","it":"μg/m³","nl":"μg/m³","pl":"μg/m³","sv":"μg/m³","es":"μg/m³","fr":"μg/m³","ar":"ميكرو جرام/م³","de":"μg/m³"},"insights":true,"desc":{"en":"Atmospheric particulate matter (μg/m³)","nl":"Zwevende deeltjes (μg/m³)","de":"Atmosphärischer Feinstaub (μg/m³)","fr":"Particules en suspension (μg/m³)\\n","it":"Particolato atmosferico (μg/m³)","sv":"Atmosfäriskt partikelämne (μg/m³)","no":"Svevestøv (μg/m³)","es":"Partículas atmosféricas (μg/m³)","da":"Atmosfæriske partikler (μg/m³)","ru":"Твердые частицы в воздухе (мкг/м³)","pl":"Pył zawieszony w powietrzu (μg/m³)","ko":"대기 중 미세입자 수(μg/m³)","ar":"الجسيمات المعلقة في الغلاف الجوي (ميكروجرام/م³)"},"chartType":"spline","decimals":2,"color":"#E02020","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_pm1_changed","title":{"en":"The PM1 value has changed","nl":"De PM1-waarde is veranderd","de":"Der PM1-Wert hat sich geändert","fr":"La valeur PM1 a changé","it":"Il valore di PM1 è cambiato","sv":"PM1-värdet har ändrats","no":"PM1-verdien er endret","es":"El valor de PM1 ha cambiado","da":"PM1-værdien har ændret sig","ru":"Значение ТЧ1 изменилось","pl":"Zmieniła się wartość PM1","ko":"극초미세먼지(PM1.0) 값이 변경되면","ar":"تغيرت قيمة PM1"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":2}]}]},"minCompatibility":"12.2.0"}')},77:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Tamper Alarm","nl":"Sabotagealarm","de":"Manipulationsalarm","fr":"Alarme de sabotage","it":"Allarme manomissione","sv":"Sabotagelarm","no":"Sabotasjealarm","es":"Alarma de manipulación","da":"Sabotagealarm","ru":"Сигнал о несанкционированном доступе","pl":"Alarm antyingerencyjny","ko":"변화 감지","ar":"إنذار التلاعب"},"titleShort":{"en":"Tamper","nl":"Sabotage","de":"Manipulation","fr":"Sabotage","it":"Manomissione","sv":"Sabotage","no":"Sabotasje","es":"Manipulación","da":"Forstyr","ru":"Несанкционированный доступ","pl":"Niepożądana ingerencja","ko":"탬퍼","ar":"التلاعب"},"desc":{"en":"True when tampering has been detected","nl":"Gaat af als sabotage gedetecteerd wordt","de":"True, wenn Sabotage erkannt wurde","fr":"Vrai si l\'alarme sabotage a été détectée","it":"Vero quando è stata rilevata una manomissione","sv":"Sant när sabotage upptäckts","no":"Sann når sabotasje har blitt påvist","es":"Activado cuando se detecta manipulación","da":"Sandt, når sabotage er blevet opdaget","ru":"Значение «истина» при обнаружении попытки взлома","pl":"Adekwatny, kiedy wykryta zostanie ingerencja","ko":"변조가 감지되면 참","ar":"صحيح عند اكتشاف تلاعب"},"insights":true,"insightsTitleTrue":{"en":"Tamper alarm turned on","nl":"Sabotagealarm ging af","de":"Sabotage-Alarm ist angegangen","fr":"Alarme sabotage s\'est activée","it":"Allarme manomissione attivato","sv":"Sabotagelarm aktiverat","no":"Sabotasjealarm aktivert","es":"Alarma de manipulación activada","da":"Sabotagealarm blev aktiveret","ru":"Противовзломный сигнал включен","pl":"Alarm antyingerencyjny włączony","ko":"변화 감지됨","ar":"تم تشغيل إنذار التلاعب"},"insightsTitleFalse":{"en":"Tamper alarm turned off","nl":"Sabotagealarm ging uit","de":"Sabotage-Alarm ist ausgegangen","fr":"Alarme sabotage s\'est désactivée","it":"Allarme manomissione disattivato","sv":"Sabotagelarm inaktiverat","no":"Sabotasjealarm deaktivert","es":"Alarma de manipulación desactivada","da":"Sabotagealarm blev deaktiveret","ru":"Противовзломный сигнал выключен","pl":"Alarm antyingerencyjny wyłączony","ko":"정상","ar":"تم إيقاف إنذار التلاعب"},"color":"#9033FC","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_tamper_true","highlight":true,"title":{"en":"The tamper alarm turned on","nl":"Het sabotagealarm gaat aan","de":"Der Sabotage-Alarm ist angegangen","fr":"L\'alarme sabotage s\'est activée","it":"L\'allarme manomissione è stato attivato","sv":"Sabotagelarmet aktiverat","no":"Sabotasjealarmen ble aktivert","es":"La alarma de manipulación se ha activado","da":"Sabotagealarmen blev aktiveret","ru":"Противовзломный сигнал включен","pl":"Alarm antyingerencyjny włączony","ko":"변화가 감지되면","ar":"تم تشغيل إنذار التلاعب"}},{"id":"alarm_tamper_false","title":{"en":"The tamper alarm turned off","nl":"Het sabotagealarm gaat uit","de":"Der Sabotage-Alarm ist ausgegangen","fr":"L\'alarme sabotage s\'est désactivée","it":"L\'allarme manomissione è stato disattivato","sv":"Sabotagelarmet inaktiverat","no":"Sabotasjealarmenen ble deaktivert","es":"La alarma de manipulación se ha desactivado","da":"Sabotagealarmen blev deaktiveret","ru":"Противовзломный сигнал выключен","pl":"Alarm antyingerencyjny wyłączony","ko":"변화 감지가 정상 상태이면","ar":"تم إيقاف إنذار التلاعب"}}],"conditions":[{"id":"alarm_tamper","title":{"en":"The tamper alarm is !{{on|off}}","nl":"Het sabotagealarm is !{{aan|uit}}","de":"Der Sabotage-Alarm ist !{{an|aus}}","fr":"L\'alarme sabotage est !{{en marche|arrêtée}}","it":"L\'allarme manomissione è !{{acceso|spento}}","sv":"Sabotagelarmet är !{{på|av}}","no":"Sabotasjealarmen er !{{på|av}}","es":"La alarma de manipulación está !{{activada|desactivada}}","da":"Sabotagealarmen er !{{tændt|slukket}}","ru":"Противовзломный сигнал !{{вкл.|выкл.}}","pl":"Alarm antyingerencyjny jest !{{włączony|wyłączony}}","ko":"!{{변화가 감지되면|변화 감지가 정상 상태이면}}","ar":"إنذار التلاعب !{{يعمل|لا يعمل}}"}}]}}')},104:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Current","nl":"Stroom","de":"Strom","fr":"Courant","it":"Corrente","sv":"Ström","no":"Strøm","es":"Corriente","da":"Strøm","ru":"Текущее значение","pl":"Prąd","ko":"전류","ar":"التيار"},"units":{"en":"A","ko":"A","no":"A","ru":"A","ar":"أمبير","da":"A","de":"A","es":"A","fr":"A","it":"A","nl":"A","pl":"A","sv":"A"},"insights":true,"desc":{"en":"Electric current (A)","nl":"Elektrische stroom (A)","de":"Elektrischer Strom (A)","fr":"Courant électrique (A)","it":"Corrente elettrica (A)","sv":"Elektrisk ström (A)","no":"Elektrisk strøm (A)","es":"Corriente eléctrica (A)","da":"Elektrisk strøm (A)","ru":"Электрический ток (А)","pl":"Prąd elektryczny (A)","ko":"전류(A)","ar":"التيار الكهربائي (أمبير)"},"chartType":"stepLine","decimals":2,"color":"#6DD400","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_current_changed","title":{"en":"The electric current changed","nl":"De elektrische stroom is veranderd","de":"Der elektrische Strom hat sich geändert","fr":"Le courant électrique a changé","it":"La corrente elettrica è cambiata","sv":"Den elektriska strömmen ändrades","no":"Den elektriska strømmen ble endret","es":"La corriente eléctrica ha cambiado","da":"Den elektriske strøm ændrede sig","ru":"Электрический ток изменился","pl":"Zmiana prądu elektrycznego","ko":"전류가 변경되면","ar":"تغير التيار الكهربائي"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":7.5}]}]}}')},140:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Home alarm state","nl":"Thuisalarm status","de":"Heim-Alarm-Status","fr":"Etat de l\'alarme de maison","it":"Stato dell\'allarme domestico","sv":"Hemlarmsstatus","no":"Hjemmealarmstatus","es":"Estado de la alarma doméstica","da":"Hjemmealarmstatus","ru":"Состояние домашней сигнализации","pl":"Stan alarmu domowego","ko":"홈 알람 상태","ar":"حالة إنذار المنزل"},"values":[{"id":"armed","title":{"en":"Armed","nl":"Geactiveerd","de":"scharf","fr":"Armé","it":"Attivato","sv":"Larmat","no":"Aktivert","es":"Activada","da":"Aktiveret","ru":"Готова","pl":"Uzbrojony","ko":"경보 활성화됨","ar":"مجهز"}},{"id":"disarmed","title":{"en":"Disarmed","nl":"Gedeactiveerd","de":"unscharf","fr":"Désarmé","it":"Disattivato","sv":"Avlarmat","no":"Deaktivert","es":"Desactivada","da":"Deaktiveret","ru":"не готова","pl":"rozbrojony","ko":"경보 해제됨","ar":"غير مجهز"}},{"id":"partially_armed","title":{"en":"Partially armed","nl":"Deels geactiveerd","de":"teilweise scharf","fr":"Partiellement armé","it":"Parzialmente attivato","sv":"Delvis larmat","no":"Delvis aktivert","es":"Parcialmente activada","da":"Delvist aktiveret","ru":"Частично готова","pl":"Częściowo uzbrojony","ko":"경보 부분 활성화됨","ar":"مجهز جزئيًا"}}],"color":"#0091FF","getable":true,"setable":true,"uiComponent":"picker","$flow":{"triggers":[{"id":"homealarm_state_changed","title":{"en":"The state changed","nl":"De status is veranderd","de":"Der Status hat sich geändert","fr":"L\'état a été modifié","it":"Lo stato è cambiato","sv":"Statusen ändrad","no":"Statusen ble endret","es":"El estado ha cambiado","da":"Status ændret","ru":"Состояние изменено","pl":"Zmiana stanu","ko":"홈 알람 상태가 변경되면","ar":"تم تغيير الحالة"},"args":[{"name":"state","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"homealarm_state_is","title":{"en":"The state is !{{|not}}","nl":"De status is !{{|niet}}","de":"Der Status ist !{{|nicht}}","fr":"L\'état !{{est|n\'est pas}}","it":"Lo stato è !{{|non}}","sv":"Statusen är !{{|inte}}","no":"Statusen er !{{|ikke}}","es":"El estado !{{|no}} es","da":"Status er !{{|ikke}}","ru":"Состояние — !{{|не}}","pl":"Stan to !{{|nie}}","ko":"홈 알람 상태가 다음!{{이면|이 아니면}}","ar":"الحالة !{{هي|ليست}}"},"args":[{"name":"state","type":"dropdown","values":"$values"}]}],"actions":[{"id":"set_homealarm_state","title":{"en":"Set state","nl":"Zet de status","de":"Status setzen","fr":"Définir l\'état","it":"Imposta stato","sv":"Ställ in status","no":"Innstill status","es":"Definir estado","da":"Indstil status","ru":"Установить состояние","pl":"Ustaw stan","ko":"홈 알람 상태 설정","ar":"ضبط الحالة"},"$filter":{"capabilities":"homealarm_state"},"args":[{"name":"state","type":"dropdown","values":"$values"}]}]}}')},175:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Boiler","da":"Kedel","de":"Heizkessel","es":"Caldera","fr":"Chaudière","it":"Caldaia","ko":"보일러","nl":"Boiler","no":"Varmtvannsbereder","pl":"Boiler","ru":"Котел","sv":"Värmepanna","ar":"سخان مياه"},"description":{"en":"Use this device class for any kind of boiler, e.g. heatpump boiler, gas boiler, hot water boiler, central heating boiler.","da":"Brug denne enhedsklasse til enhver form for kedel, f.eks. varmepumpekedel, gaskedel, varmtvandskedel, centralvarmekedel.","de":"Verwenden Sie diese Geräteklasse für jede Art von Heizkessel, z. B. Wärmepumpenkessel, Gaskessel, Warmwasserboiler, Zentralheizungskessel.","es":"Utiliza esta clase de dispositivo para cualquier tipo de calentador (por ej., caldera de bomba de calor, caldera de gas, caldera de agua caliente, caldera de calefacción central, etc.).","fr":"Utilisez cette classe d\'appareils pour tout type de chaudière, par exemple une chaudière à pompe à chaleur, une chaudière à gaz, une chaudière à eau chaude, une chaudière de chauffage central.","it":"Utilizza questa classe di dispositivi per qualsiasi tipo di caldaia, es. caldaia a pompa di calore, caldaia a gas, caldaia ad acqua, caldaia con riscaldamento centralizzato.","ko":"이 디바이스 클래스는 히트펌프 보일러, 가스 보일러, 온수 보일러, 중앙난방 보일러 등 모든 종류의 보일러에 사용합니다.","nl":"Gebruik deze apparaatklasse voor elk type boiler, bijv. warmtepompboiler, gasketel, warmwaterboiler, cv-ketel.","no":"Bruk denne enhetsklassen for alle slags varmtvannsberedere, f.eks. varmepumpebereder, gassbereder, varmtvannsbereder, sentral storbereder.","pl":"Tej klasy urządzeń należy używać do każdego rodzaju boilera, np. z pompą ciepła, gazowego, na ciepłą wodę, centralnego ogrzewania.","ru":"Используйте этот класс устройств для котлов любого типа, например, котла с тепловым насосом, газового котла, водонагревательного котла, котла центрального отопления.","sv":"Använd den här enhetsklassen för alla typer av pannor, t.ex. värmepumpspannor, gaspannor, varmvattenpannor, centralvärmepannor.","ar":"استخدم فئة الجهاز هذه لأي نوع من سخانات المياه، مثل سخان مياه بمضخة حرارية، سخان غاز، سخان مياه ساخنة، سخان تدفئة مركزية."},"minCompatibility":"12.0.0"}')},178:(e,t,a)=>{"use strict";const r=a(2963),i=a(7177),n=a(7589),s=new Set(["blake2b512","blake2s256","sha256","sha384","sha512","sha512-256","sha3-256","sha3-384","sha3-512"]);async function o(e,t="sha256"){return new Promise(((a,n)=>{const s=r.createHash(t),o=i.createReadStream(e);o.on("error",n),o.on("data",(e=>s.update(e))),o.on("end",(()=>a(s.digest("hex"))))}))}e.exports={hashFile:o,getIntegrity:async function(e,t="sha256"){const a=String(t||"").toLowerCase();if(!s.has(a))throw new Error("Hash algorithm is not allowed for integrity checks");return`${a}:${await o(e,a)}`},validateIntegrity:async function(e,t){if("string"!=typeof t)throw new TypeError("Integrity must be a string");const a=t.split(":");if(2!==a.length||!a[0]||!a[1])throw new Error('Integrity must be in the format "hashName:hexDigest"');const[r,i]=a;return await o(e,r)===i.toLowerCase()},getOTAFilePath:function({appPath:e,driverId:t,fileName:a}){return n.join(e||"","drivers",t,"assets","firmware",a)}}},212:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"CO₂ Alarm","nl":"CO₂-alarm","de":"CO₂-Alarm","fr":"Alarme CO₂","it":"Allarme CO₂","no":"CO₂-alarm","es":"Alarma de CO₂","da":"CO₂-alarm","ru":"Сигнал CO₂","pl":"Alarm CO₂","ko":"CO₂ 알람","ar":"إنذار ثاني أكسيد الكربون","sv":"CO₂-larm"},"titleShort":{"en":"CO₂","nl":"CO₂","de":"CO₂","fr":"CO₂","it":"CO₂","no":"CO₂","es":"CO₂","da":"CO₂","ru":"CO₂","pl":"CO₂","ko":"CO₂","ar":"ثاني أكسيد الكربون","sv":"CO₂"},"desc":{"en":"True when dangerous CO₂ values have been detected","nl":"Gaat af bij gevaarlijke concentraties CO₂","de":"Wahr, wenn gefährliche CO₂-Werte erkannt wurden","fr":"Vrai en cas de valeurs dangereuses de CO₂ détectées","it":"Vero quando sono stati rilevati valori pericolosi di CO₂","no":"Sant når farlige CO₂-verdier har blitt påvist","es":"Verdadero cuando se han detectado valores peligrosos de CO₂","da":"Sandt, når farlige CO₂-værdier er blevet opdaget","ru":"Значение «истина» при обнаружении опасных значений CO₂","pl":"Prawda, gdy wykryto niebezpieczne wartości CO₂","ko":"위험한 CO₂ 값이 감지되면 참","ar":"صحيح عند اكتشاف قيم خطيرة لثاني أكسيد الكربون","sv":"Sant när farliga CO₂-värden har detekterats"},"insights":true,"insightsTitleTrue":{"en":"CO₂ alarm turned on","nl":"CO₂-alarm is aan","de":"CO₂-Alarm wurde ausgelöst","fr":"Alarme CO₂ activée","it":"Allarme CO₂ attivato","sv":"CO₂-larm på","no":"CO₂-alarm ble aktivert","es":"Alarma de CO₂ activada","da":"CO₂-alarm aktiveret","ru":"Сигнал CO₂ включен","pl":"Alarm CO₂ włączony","ko":"CO₂ 알람 켜짐","ar":"تم تشغيل إنذار ثاني أكسيد الكربون"},"insightsTitleFalse":{"en":"CO₂ alarm turned off","nl":"CO₂-alarm is uit","de":"CO₂-Alarm wurde deaktiviert","fr":"Alarme CO₂ désactivée","it":"Allarme CO₂ disattivato","sv":"CO₂-larm av","no":"CO₂-alarm ble deaktivert","es":"Alarma de CO₂ desactivada","da":"CO₂-alarm deaktiveret","ru":"Сигнал CO₂ выключен","pl":"Alarm CO₂ wyłączony","ko":"CO₂ 알람 꺼짐","ar":"تم إيقاف إنذار ثاني أكسيد الكربون"},"color":"#E02020","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_co2_true","highlight":true,"title":{"en":"The CO₂ alarm turned on","nl":"Het CO₂-alarm is aan","de":"Der CO₂-Alarm wurde ausgelöst","fr":"L\'alarme CO₂ s\'est activée","it":"L\'allarme CO₂ è stato attivato","sv":"CO₂-larmet på","no":"CO₂-alarmen ble aktivert","es":"Se ha activado la alarma de CO₂","da":"CO₂-alarmen blev aktiveret","ru":"Сигнал CO₂ включен","pl":"Alarm CO₂ włączony","ko":"CO₂ 알람이 켜지면","ar":"تم تشغيل إنذار ثاني أكسيد الكربون"}},{"id":"alarm_co2_false","title":{"en":"The CO₂ alarm turned off","nl":"Het CO₂-alarm is uit","de":"Der CO₂-Alarm wurde deaktiviert","fr":"L\'alarme CO₂ s\'est désactivée","it":"L\'allarme CO₂ è stato disattivato","sv":"CO₂-larmet av","no":"CO₂-alarmen ble deaktivert","es":"Se ha desactivado la alarma de CO₂","da":"CO₂-alarmen blev deaktiveret","ru":"Сигнал CO₂ выключен","pl":"Alarm CO₂ wyłączony","ko":"CO₂ 알람이 꺼지면","ar":"تم إيقاف إنذار ثاني أكسيد الكربون"}}],"conditions":[{"id":"alarm_co2","title":{"en":"The CO₂ alarm is !{{on|off}}","nl":"Het CO₂-alarm staat !{{aan|uit}}","de":"Der CO₂-Alarm ist !{{an|aus}}","fr":"L\'alarme CO₂ est !{{activée|désactivée}}","it":"L\'allarme CO₂ è !{{attivato|disattivato}}","sv":"CO₂-larmet är !{{på|av}}","no":"CO₂-alarmen er !{{på|av}}","es":"La alarma de CO₂ está !{{activada|desactivada}}","da":"CO₂-alarmen er !{{tændt|slukket}}","ru":"Сигнал CO₂ !{{вкл.|выкл.}}","pl":"Alarm CO₂ jest !{{włączony|wyłączony}}","ko":"CO₂ 알람이 !{{켜져 있으면|꺼져 있으면}}","ar":"إنذار ثاني أكسيد الكربون !{{يعمل|لا يعمل}}"}}]}}')},224:e=>{"use strict";e.exports=function(e,t,a){var r=" ",i=e.level,n=e.dataLevel,s=e.schema[t],o=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+"/"+t,d=!e.opts.allErrors,u="data"+(n||""),m="valid"+i,p=e.opts.$data&&s&&s.$data;p&&(r+=" var schema"+i+" = "+e.util.getData(s.$data,n,e.dataPathArr)+"; "),p||(r+=" var schema"+i+" = validate.schema"+o+";"),r+="var "+m+" = equal("+u+", schema"+i+"); if (!"+m+") { ";var c=c||[];c.push(r),r="",!1!==e.createErrors?(r+=" { keyword: 'const' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { allowedValue: schema"+i+" } ",!1!==e.opts.messages&&(r+=" , message: 'should be equal to constant' "),e.opts.verbose&&(r+=" , schema: validate.schema"+o+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),r+=" } "):r+=" {} ";var g=r;return r=c.pop(),!e.compositeRule&&d?e.async?r+=" throw new ValidationError(["+g+"]); ":r+=" validate.errors = ["+g+"]; return false; ":r+=" var err = "+g+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+=" }",d&&(r+=" else { "),r}},251:(e,t)=>{t.read=function(e,t,a,r,i){var n,s,o=8*i-r-1,l=(1<>1,u=-7,m=a?i-1:0,p=a?-1:1,c=e[t+m];for(m+=p,n=c&(1<<-u)-1,c>>=-u,u+=o;u>0;n=256*n+e[t+m],m+=p,u-=8);for(s=n&(1<<-u)-1,n>>=-u,u+=r;u>0;s=256*s+e[t+m],m+=p,u-=8);if(0===n)n=1-d;else{if(n===l)return s?NaN:1/0*(c?-1:1);s+=Math.pow(2,r),n-=d}return(c?-1:1)*s*Math.pow(2,n-r)},t.write=function(e,t,a,r,i,n){var s,o,l,d=8*n-i-1,u=(1<>1,p=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,c=r?0:n-1,g=r?1:-1,h=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(o=isNaN(t)?1:0,s=u):(s=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-s))<1&&(s--,l*=2),(t+=s+m>=1?p/l:p*Math.pow(2,1-m))*l>=2&&(s++,l/=2),s+m>=u?(o=0,s=u):s+m>=1?(o=(t*l-1)*Math.pow(2,i),s+=m):(o=t*Math.pow(2,m-1)*Math.pow(2,i),s=0));i>=8;e[a+c]=255&o,c+=g,o/=256,i-=8);for(s=s<0;e[a+c]=255&s,c+=g,s/=256,d-=8);e[a+c-g]|=128*h}},253:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Cooktop","da":"Kogeplade","de":"Kochfeld","es":"Placa de cocción","fr":"Table de cuisson","it":"Piano cottura","ko":"쿡탑","nl":"Kookplaat","no":"Koketopp","pl":"Płyta grzewcza","ru":"Варочная панель","sv":"Spishäll","ar":"موقد"},"description":{"en":"Use this device class for cooktops.","da":"Brug denne enhedsklasse til kogeplader.","de":"Verwenden Sie diese Geräteklasse für Kochfelder.","es":"Utiliza esta clase de dispositivo para placas de cocción.","fr":"Utilisez cette classe d\'appareils pour les tables de cuisson.","it":"Utilizza questa classe di dispositivi per i piani cottura.","ko":"이 디바이스 클래스는 쿡탑에 사용합니다.","nl":"Gebruik deze apparaatklasse voor kookplaten.","no":"Bruk denne enhetsklassen for koketopper.","pl":"Tej klasy urządzeń należy używać w przypadku płyt grzewczych.","ru":"Используйте этот класс устройств для варочных панелей.","sv":"Använd den här enhetsklassen för spishällar.","ar":"استخدم فئة الجهاز هذه للمواقد."},"minCompatibility":"12.0.0"}')},275:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Media Player","da":"Medieafspiller","de":"Medienabspielgerät","es":"Reproductor multimedia","fr":"Lecteur multimédia","it":"Lettore multimediale","ko":"미디어 플레이어","nl":"Mediaspeler","no":"Mediespiller","pl":"Odtwarzacz multimedialny","ru":"Медиаплеер","sv":"Mediaspelare","ar":"مشغل وسائط"},"description":{"en":"Use this device class for media players, when the `Set-top box` device class doesn\'t apply.","da":"Brug denne enhedsklasse til medieafspillere, når enhedsklassen `tv-modtagerboks` ikke gælder.","de":"Verwenden Sie diese Geräteklasse für Medienabspielgeräte, wenn die Geräteklasse „Set-Top-Box“ nicht zutrifft.","es":"Utiliza esta clase de dispositivo para reproductores multimedia que no pertenezcan a la clase \\"Descodificador\\".","fr":"Utilisez cette classe d\'appareils pour les lecteurs multimédias, lorsque la classe d\'appareil \\"décodeur\\" ne s\'applique pas.","it":"Utilizza questa classe di dispositivi per i lettori multimediali, quando la classe \\"Set-top box\\" non è applicabile.","ko":"이 디바이스 클래스는 \'Set-top box\' 디바이스 클래스가 적용되지 않는 미디어 플레이어에 사용합니다.","nl":"Gebruik deze apparaatklasse voor mediaspelers als de apparaatklasse \'settopbox\' niet van toepassing is.","no":"Bruk denne enhetsklassen for mediespillere som ikke dekkes av enhetsklassen «TV-mottaker».","pl":"Tej klasy urządzeń należy używać dla odtwarzaczy multimedialnych, gdy klasa urządzeń „dekoder” nie ma zastosowania.","ru":"Используйте этот класс устройств для медиаплееров, которые не относятся к классу устройств «ресивер».","sv":"Använd den här enhetsklassen för mediaspelare när enhetsklassen \\"digitalbox\\" inte är tillämplig.","ar":"استخدم فئة الجهاز هذه لمشغلات الوسائط، عندما لا تنطبق فئة الجهاز \'Set-top box\' (جهاز استقبال)."},"virtualTitle":{"en":"What\'s the type?","da":"Hvad er typen?","de":"Um welchen Typ handelt es sich?","es":"¿De qué tipo es?","fr":"Quel est le type ?","it":"Di che tipo è?","ko":"어떤 유형인가요?","nl":"Wat is het type?","no":"Hvilken type er det?","pl":"Jaki to typ?","ru":"Какой тип?","sv":"Vad är det för typ?","ar":"ما هو النوع؟"},"allowedVirtual":["settopbox"],"minCompatibility":"12.0.0"}')},287:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Voltage","nl":"Voltage","de":"Spannung","fr":"Voltage","it":"Voltaggio","sv":"Spänning","no":"Spenning","es":"Tensión","da":"Elektrisk spænding","ru":"Вольтаж","pl":"Napięcie","ko":"전압","ar":"الجهد"},"units":{"en":"V","ru":"Вольт","ko":"V","ar":"فولط","da":"V","de":"V","es":"V","fr":"V","it":"V","nl":"V","no":"V","pl":"V","sv":"V"},"desc":{"en":"Voltage (V)","nl":"Voltage (V)","de":"Spannung (V)","fr":"Voltage (V)","it":"Voltaggio (V)","sv":"Spänning (V)","no":"Spenning (V)","es":"Tensión (V)","da":"Volt (V)","ru":"Вольтаж (Вольт)","pl":"Napięcie (V)","ko":"전압 볼트(V)","ar":"الجهد (V)"},"insights":true,"chartType":"stepLine","decimals":2,"color":"#6DD400","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_voltage_changed","title":{"en":"The voltage changed","nl":"Het voltage is veranderd","de":"Die Spannung hat sich geändert","fr":"Le voltage a changé","it":"Il voltaggio è cambiato","sv":"Spänningen ändrades","no":"Spenningen ble endret","es":"La tensión ha cambiado","da":"Den elektriske spænding ændrede sig","ru":"Вольтаж изменен","pl":"Zmiana poziomu napięcia","ko":"전압이 변경되면","ar":"تغير الجهد"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":7.5}]}]}}')},295:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Channel up","nl":"Kanaal omhoog","de":"Kanal hoch","fr":"Chaîne haut","it":"Canale verso l\'alto","sv":"Kanal upp","no":"Høyere kanal","es":"Subir de canal","da":"Kanal op","ru":"Канал наверх","pl":"Kanał w górę","ko":"채널 위로","ar":"قناة للأعلى"},"type":"boolean","color":"#9033FC","getable":false,"setable":true,"$flow":{"actions":[{"id":"channel_up","title":{"en":"One channel up","nl":"Eén kanaal omhoog","de":"Einen Kanal hoch","fr":"Une chaîne vers le haut","it":"Un canale verso l\'alto","sv":"En kanal upp","no":"En kanal høyere","es":"Un canal más arriba","da":"En kanal op","ru":"Один канал наверх","pl":"Jeden kanał w górę","ko":"채널 하나 위로","ar":"قناة واحدة للأعلى"}}]},"uiComponent":"button"}')},302:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Dishwasher","da":"Opvaskemaskine","de":"Geschirrspüler","es":"Lavavajillas","fr":"Lave-vaisselle","it":"Lavastoviglie","ko":"식기세척기","nl":"Vaatwasser","no":"Oppvaskmaskin","pl":"Zmywarka","ru":"Посудомоечная машина","sv":"Diskmaskin","ar":"غسالة أطباق"},"description":{"en":"Use this device class for dishwashers.","da":"Brug denne enhedsklasse til opvaskemaskiner.","de":"Verwenden Sie diese Geräteklasse für Geschirrspülmaschinen.","es":"Utiliza esta clase de dispositivo para lavavajillas.","fr":"Utilisez cette classe d\'appareils pour les lave-vaisselle.","it":"Utilizza questa classe di dispositivi per le lavastoviglie.","ko":"이 디바이스 클래스는 식기세척기에 사용합니다.","nl":"Gebruik deze apparaatklasse voor vaatwassers.","no":"Bruk denne enhetsklassen for oppvaskmaskiner.","pl":"Tej klasy urządzeń należy używać w przypadku zmywarek do naczyń.","ru":"Используйте этот класс устройств для посудомоечных машин.","sv":"Använd den här enhetsklassen för diskmaskiner.","ar":"استخدم فئة الجهاز هذه لغسالات الأطباق."},"minCompatibility":"12.0.0"}')},353:e=>{"use strict";e.exports=function(e,t,a){var r=" ",i=e.schema[t],n=e.schemaPath+e.util.getProperty(t),s=e.errSchemaPath+"/"+t,o=!e.opts.allErrors,l=e.util.copy(e),d="";l.level++;var u="valid"+l.level,m=l.baseId,p=!0,c=i;if(c)for(var g,h=-1,v=c.length-1;h0:e.util.schemaHasRules(g,e.RULES.all))&&(p=!1,l.schema=g,l.schemaPath=n+"["+h+"]",l.errSchemaPath=s+"/"+h,r+=" "+e.validate(l)+" ",l.baseId=m,o&&(r+=" if ("+u+") { ",d+="}"));return o&&(r+=p?" if (true) { ":" "+d.slice(0,-1)+" "),r}},400:e=>{"use strict";e.exports=function(e,t,a){var r=" ",i=e.level,n=e.dataLevel,s=e.schema[t],o=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+"/"+t,d=!e.opts.allErrors,u="data"+(n||"");if(!1===e.opts.format)return d&&(r+=" if (true) { "),r;var m,p=e.opts.$data&&s&&s.$data;p?(r+=" var schema"+i+" = "+e.util.getData(s.$data,n,e.dataPathArr)+"; ",m="schema"+i):m=s;var c=e.opts.unknownFormats,g=Array.isArray(c);if(p)r+=" var "+(h="format"+i)+" = formats["+m+"]; var "+(v="isObject"+i)+" = typeof "+h+" == 'object' && !("+h+" instanceof RegExp) && "+h+".validate; var "+(f="formatType"+i)+" = "+v+" && "+h+".type || 'string'; if ("+v+") { ",e.async&&(r+=" var async"+i+" = "+h+".async; "),r+=" "+h+" = "+h+".validate; } if ( ",p&&(r+=" ("+m+" !== undefined && typeof "+m+" != 'string') || "),r+=" (","ignore"!=c&&(r+=" ("+m+" && !"+h+" ",g&&(r+=" && self._opts.unknownFormats.indexOf("+m+") == -1 "),r+=") || "),r+=" ("+h+" && "+f+" == '"+a+"' && !(typeof "+h+" == 'function' ? ",e.async?r+=" (async"+i+" ? await "+h+"("+u+") : "+h+"("+u+")) ":r+=" "+h+"("+u+") ",r+=" : "+h+".test("+u+"))))) {";else{var h;if(!(h=e.formats[s])){if("ignore"==c)return e.logger.warn('unknown format "'+s+'" ignored in schema at path "'+e.errSchemaPath+'"'),d&&(r+=" if (true) { "),r;if(g&&c.indexOf(s)>=0)return d&&(r+=" if (true) { "),r;throw new Error('unknown format "'+s+'" is used in schema at path "'+e.errSchemaPath+'"')}var v,f=(v="object"==typeof h&&!(h instanceof RegExp)&&h.validate)&&h.type||"string";if(v){var k=!0===h.async;h=h.validate}if(f!=a)return d&&(r+=" if (true) { "),r;if(k){if(!e.async)throw new Error("async format in sync schema");r+=" if (!(await "+(y="formats"+e.util.getProperty(s)+".validate")+"("+u+"))) { "}else{r+=" if (! ";var y="formats"+e.util.getProperty(s);v&&(y+=".validate"),r+="function"==typeof h?" "+y+"("+u+") ":" "+y+".test("+u+") ",r+=") { "}}var b=b||[];b.push(r),r="",!1!==e.createErrors?(r+=" { keyword: 'format' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { format: ",r+=p?""+m:""+e.util.toQuotedString(s),r+=" } ",!1!==e.opts.messages&&(r+=" , message: 'should match format \"",r+=p?"' + "+m+" + '":""+e.util.escapeQuotes(s),r+="\"' "),e.opts.verbose&&(r+=" , schema: ",r+=p?"validate.schema"+o:""+e.util.toQuotedString(s),r+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),r+=" } "):r+=" {} ";var w=r;return r=b.pop(),!e.compositeRule&&d?e.async?r+=" throw new ValidationError(["+w+"]); ":r+=" validate.errors = ["+w+"]; return false; ":r+=" var err = "+w+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+=" } ",d&&(r+=" else { "),r}},432:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Duration","nl":"Lengte","de":"Länge","fr":"Durée","it":"Durata","sv":"Längd","no":"Varighet","es":"Duración","da":"Varighed","ru":"Продолжительность","pl":"Czas trwania","ko":"기간","ar":"المدة"},"type":"number","color":"#9033FC","getable":true,"setable":false,"uiComponent":"media"}')},517:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Wind angle","nl":"Windrichting","de":"Windrichtung","fr":"Angle du vent","it":"Angolo del vento","sv":"Vindvinkel","no":"Vindvinkel","es":"Ángulo del viento","da":"Vindvinkel","ru":"Угол ветра","pl":"Kąt wiatru","ko":"풍향각","ar":"زاوية الرياح"},"units":{"en":"°","ko":"°","ru":"°","ar":"°","da":"°","de":"°","es":"°","fr":"°","it":"°","nl":"°","no":"°","pl":"°","sv":"°"},"desc":{"en":"Wind angle in degrees (°)","nl":"Windrichting in graden (°)","de":"Windrichtung in Grad (°)","fr":"Angle du vent en degrés (°)","it":"Angolo del vento in gradi (°)","sv":"Vindvinkel i grader (°)","no":"Vindvinkel i grader (°)","es":"Ángulo del viento en grados (°)","da":"Vindvinkel i grader (°)","ru":"Угол ветра в градусах (°)","pl":"Kąt wiatru w stopniach (°)","ko":"풍향 각도(°)","ar":"زاوية الرياح بالدرجات (°)"},"insights":true,"chartType":"spline","decimals":2,"color":"#32C5FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_wind_angle_changed","title":{"en":"The wind angle changed","nl":"De windrichting is veranderd","de":"Die Windrichtung hat sich geändert","fr":"L\'angle du vent a changé","it":"L\'angolo del vento è cambiato","sv":"Vindvinkel ändrad","no":"Vindvinkel er endret","es":"El ángulo del viento ha cambiado","da":"Vindvinklen er skiftet","ru":"Угол наклона ветра изменился","pl":"Zmiana kąta wiatru","ko":"풍향각이 변경되면","ar":"تغيرت زاوية الرياح"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":36}]}]}}')},538:()=>{},570:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Motion Alarm","nl":"Bewegingsalarm","de":"Bewegungsalarm","fr":"Alarme de mouvement","it":"Allarme di movimento","sv":"Rörelselarm","no":"Bevegelsesalarm","es":"Alarma de movimiento","da":"Bevægelsesalarm","ru":"Сигнал движения","pl":"Alarm ruchu","ko":"움직임 감지","ar":"إنذار الحركة"},"titleShort":{"en":"Motion","nl":"Beweging","de":"Bewegung","fr":"Mouvement","it":"Movimento","sv":"Rörelse","no":"Bevegelse","es":"Movimiento","da":"Bevægelse","ru":"Движение","pl":"Ruch","ko":"모션","ar":"الحركة"},"insights":true,"insightsTitleTrue":{"en":"Motion alarm turned on","nl":"Bewegingsalarm ging af","de":"Bewegungs-Alarm ist angegangen","fr":"Alarme mouvement s\'est déclenchée","it":"Allarme di movimento attivato","sv":"Rörelselarm aktiverat","no":"Bevegelsesalarm aktivert","es":"Alarma de movimiento activada","da":"Bevægelsesalarm blev aktiveret","ru":"Сигнал движения включен","pl":"Czujnik ruchu włączony","ko":"움직임 감지됨","ar":"تم تشغيل إنذار الحركة"},"insightsTitleFalse":{"en":"Motion alarm turned off","nl":"Bewegingsalarm ging uit","de":"Bewegungs-Alarm ist ausgegangen","fr":"Alarme mouvement s\'est désactivée","it":"Allarme di movimento disattivato","sv":"Rörelselarm inaktiverat","no":"Bevegelsesalarm deaktivert","es":"Alarma de movimiento desactivada","da":"Bevægelsesalarm blev deaktiveret","ru":"Сигнал движения выключен","pl":"Czujnik ruchu wyłączony","ko":"움직임 없음","ar":"تم إيقاف إنذار الحركة"},"getable":true,"setable":false,"color":"#32C5FF","uiComponent":"sensor","options":{"zoneActivity":true},"$flow":{"triggers":[{"id":"alarm_motion_true","highlight":true,"title":{"en":"The motion alarm turned on","nl":"De bewegingsmelder gaat aan","de":"Der Bewegungs-Alarm ist angegangen","fr":"L\'alarme mouvement s\'est activée","it":"L\'allarme di movimento è stato attivato","sv":"Rörelselarmet aktiverat","no":"Bevegelsesalarmen ble aktivert","es":"La alarma de movimiento se ha activado","da":"Bevægelsesalarmen blev aktiveret","ru":"Сигнал движения включен","pl":"Czujnik ruchu włączony","ko":"움직임이 감지되면","ar":"تم تشغيل إنذار الحركة"}},{"id":"alarm_motion_false","title":{"en":"The motion alarm turned off","nl":"De bewegingsmelder gaat uit","de":"Der Bewegungs-Alarm ist ausgegangen","fr":"L\'alarme mouvement s\'est désactivée","it":"L\'allarme di movimento è stato disattivato","sv":"Rörelselarmet inaktiverat","no":"Bevegelsesalarmen ble deaktivert","es":"La alarma de movimiento se ha desactivado","da":"Bevægelsesalarmen blev deaktiveret","ru":"Сигнал движения выключен","pl":"Czujnik ruchu wyłączony","ko":"움직임이 없으면","ar":"تم إيقاف إنذار الحركة"}}],"conditions":[{"id":"alarm_motion","title":{"en":"The motion alarm is !{{on|off}}","nl":"De bewegingsmelder is !{{aan|uit}}","de":"Der Bewegungs-Alarm ist !{{an|aus}}","fr":"L\'alarme mouvement est !{{en marche|arrêtée}}","it":"L\'allarme di movimento è !{{acceso|spento}}","sv":"Rörelselarmet är !{{på|av}}","no":"Bevegelsesalarmen er !{{på|av}}","es":"La alarma de movimiento está !{{activada|desactivada}}","da":"Bevægelsesalarmen er !{{tændt|slukket}}","ru":"Сигнал движения !{{вкл.|выкл.}}","pl":"Czujnik ruchu jest !{{włączony|wyłączony}}","ko":"움직임이 !{{감지되면|없으면}}","ar":"إنذار الحركة !{{يعمل|لا يعمل}}"}}]}}')},593:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Rain","nl":"Regen","de":"Niederschlag","fr":"Pluie","it":"Pioggia","sv":"Regn","no":"Regn","es":"Lluvia","da":"Regn","ru":"Дождь","pl":"Deszcz","ko":"강우량","ar":"مطر"},"units":{"en":"mm","ru":"мм","ko":"mm","no":"mm","ar":"مم","da":"mm","de":"mm","es":"mm","fr":"mm","it":"mm","nl":"mm","pl":"mm","sv":"mm"},"insights":true,"desc":{"en":"Rain in millimeter (mm)","nl":"Regen in millimeter (mm)","de":"Niederschlag in Millimeter (mm)","fr":"Pluie en millimètres (mm)","it":"Pioggia in millimetri (mm)","sv":"Regn i millimeter (mm)","no":"Regn i millimeter (mm)","es":"Lluvia en milímetros (mm)","da":"Regn i millimeter (mm)","ru":"Дождь в миллиметрах (мм)","pl":"Deszcz w milimetrach (mm)","ko":"강우량 밀리미터(mm)","ar":"المطر بالمليمتر (mm)"},"chartType":"spline","decimals":2,"color":"#0091FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_rain_changed","title":{"en":"The rain changed","nl":"De regen is veranderd","de":"Der Niederschlag hat sich geändert","fr":"La pluie a changé","it":"La pioggia è cambiata","sv":"Regnet ändrades","no":"Regnet ble endret","es":"La lluvia ha cambiado","da":"Regnen ændrede sig","ru":"Дождь изменился","pl":"Zmiana poziomu deszczu","ko":"강우량이 변경되면","ar":"تغير المطر"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":3}]}]}}')},596:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"TVOC index","nl":"VOS-index","da":"TVOC-indeks","it":"Indice TVOC","ko":"총휘발성유기화합물 지수","pl":"Wskaźnik wszystkich LZO","ru":"Показатель TVOC","sv":"TVOC-index","es":"Índice de COVT","fr":"Indice TVOC","no":"TVOC-indeks","ar":"مؤشر المركبات العضوية المتطايرة الإجمالية","de":"TVOC-Index"},"insights":true,"desc":{"en":"Total volatile organic compounds index","nl":"Index van totaal vluchtige organische stoffen","da":"Samlet indeks for flygtige organiske forbindelser","it":"Indice dei composti organici volatili totali","ko":"휘발성 유기 화합물 총량 지수","pl":"Wskaźnik wszystkich lotnych związków organicznych","ru":"Общий показатель летучих органических соединений","sv":"Index för totala mängden flyktiga organiska föreningar","es":"Índice de compuestos orgánicos volátiles en total","fr":"Indice des composés organiques volatils totaux","no":"Indeks for total mengde flyktige organiske forbindelser","ar":"مؤشر المركبات العضوية المتطايرة الإجمالية","de":"Index der gesamten flüchtigen organischen Verbindungen"},"chartType":"spline","color":"#E02020","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_tvoc_index_changed","title":{"en":"The TVOC index has changed","nl":"De VOS-index is veranderd","da":"TVOC-indeksværdien har ændret sig","it":"L\'indice TVOC è cambiato","ko":"총휘발성유기화합물 지수 수준이 변경되면","no":"TVOC-indeksen er endret","pl":"Zmienił się wskaźnik wszystkich LZO","ru":"Значение показателя TVOC изменилось","sv":"TVOC-indexvärdet har ändrats","es":"El índice de TVOC ha cambiado","fr":"La valeur de l\'indice TVOC a changé","ar":"تغير مؤشر المركبات العضوية المتطايرة الإجمالية","de":"Der TVOC-Index hat sich geändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":2}]}]},"minCompatibility":"12.2.0"}')},598:e=>{"use strict";e.exports=function(e,t,a){var r=" ",i=e.level,n=e.dataLevel,s=e.schema[t],o=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+"/"+t,d=!e.opts.allErrors,u="data"+(n||""),m="valid"+i,p=e.opts.$data&&s&&s.$data;p&&(r+=" var schema"+i+" = "+e.util.getData(s.$data,n,e.dataPathArr)+"; ");var c="i"+i,g="schema"+i;p||(r+=" var "+g+" = validate.schema"+o+";"),r+="var "+m+";",p&&(r+=" if (schema"+i+" === undefined) "+m+" = true; else if (!Array.isArray(schema"+i+")) "+m+" = false; else {"),r+=m+" = false;for (var "+c+"=0; "+c+"<"+g+".length; "+c+"++) if (equal("+u+", "+g+"["+c+"])) { "+m+" = true; break; }",p&&(r+=" } "),r+=" if (!"+m+") { ";var h=h||[];h.push(r),r="",!1!==e.createErrors?(r+=" { keyword: 'enum' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { allowedValues: schema"+i+" } ",!1!==e.opts.messages&&(r+=" , message: 'should be equal to one of the allowed values' "),e.opts.verbose&&(r+=" , schema: validate.schema"+o+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),r+=" } "):r+=" {} ";var v=r;return r=h.pop(),!e.compositeRule&&d?e.async?r+=" throw new ValidationError(["+v+"]); ":r+=" validate.errors = ["+v+"]; return false; ":r+=" var err = "+v+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+=" }",d&&(r+=" else { "),r}},601:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Tank Open Alarm","nl":"Waarschuwing voor open tank","da":"Alarm for åben tank","it":"Allarme serbatoio aperto","ko":"물통 열림 감지","no":"Alarm om åpen tank","pl":"Alarm otwartego zbiornika","ru":"Сигнал об открытии резервуара","sv":"Larm om öppen tank","es":"Alarma de depósito abierto","fr":"Alarme de réservoir ouvert","ar":"إنذار فتح الخزان","de":"Alarm Tank offen"},"titleShort":{"en":"Tank Open","nl":"Open tank","da":"Åben tank","it":"Serbatoio aperto","ko":"물통 열림","no":"Åpen tank","pl":"Otwarty zbiornik","ru":"Резервуар открыт","sv":"Öppen tank","es":"Depósito abierto","fr":"Réservoir ouvert","ar":"الخزان مفتوح","de":"Tank offen"},"desc":{"en":"True when the tank is open.","nl":"Wordt geactiveerd wanneer de tank open is.","da":"Sandt, når tanken er åben.","it":"Vero quando il serbatoio è aperto.","ko":"탱크가 열려 있으면 참입니다.","no":"Sann når tanken er åpen.","pl":"Prawda, gdy zbiornik jest otwarty.","ru":"Значение «истина», когда резервуар открыт.","sv":"Sant när tanken är öppen.","es":"Activado cuando el depósito está abierto.","fr":"Se déclenche lorsque le réservoir est ouvert.","ar":"صحيح عندما يكون الخزان مفتوحًا.","de":"Wahr, wenn der Tank geöffnet ist."},"insights":true,"insightsTitleTrue":{"en":"Tank was open","nl":"Tank was open","da":"Tanken var åben","it":"Il serbatoio era aperto","ko":"물통 열림","no":"Tanken var åpen","pl":"Zbiornik był otwarty","ru":"Резервуар был открыт","sv":"Tanken var öppen","es":"El depósito estaba abierto","fr":"Le réservoir était ouvert","ar":"كان الخزان مفتوحًا","de":"Tank war offen"},"insightsTitleFalse":{"en":"Tank was closed","nl":"Tank was dicht","da":"Tanken var lukket","it":"Il serbatoio è stato chiuso","ko":"물통 닫힘","no":"Tanken var lukket","pl":"Zbiornik był zamknięty","ru":"Резервуар был закрыт","sv":"Tanken var stängd","es":"El depósito estaba cerrado","fr":"Le réservoir était fermé","ar":"كان الخزان مغلقًا","de":"Tank wurde geschlossen"},"color":"#0091FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_tank_open_true","highlight":true,"title":{"en":"The tank opens","nl":"De tank gaat open","da":"Tanken åbner","it":"Il serbatoio si apre","ko":"물통이 열려있으면","no":"Tanken åpnes","pl":"Zbiornik otwiera się","ru":"Резервуар открывается","sv":"Tanken öppnas","es":"El depósito está abierto","fr":"Le réservoir s\'ouvre","ar":"الخزان يفتح","de":"Der Tank öffnet"}},{"id":"alarm_tank_open_false","title":{"en":"The tank closes","nl":"De tank gaat dicht","da":"Tanken lukker","it":"Il serbatoio si chiude","ko":"물통이 닫혀있으면","no":"Tanken lukkes","pl":"Zbiornik zamyka się","ru":"Резервуар закрывается","sv":"Tanken stängs","es":"El depósito está cerrado","fr":"Le réservoir se ferme","ar":"الخزان يغلق","de":"Der Tank schließt"}}],"conditions":[{"id":"alarm_tank_open","title":{"en":"The tank is !{{open|closed}}","nl":"De tank is !{{open|dicht}}","da":"Tanken er !{{åben|lukket}}","it":"Il serbatoio è !{{aperto|chiuso}}","ko":"물통이 !{{열려|닫혀}}있으면","no":"Tanken er !{{åpen|lukket}}","pl":"Zbiornik jest !{{otwarty|zamknięty}}","ru":"Резервуар !{{открыт|закрыт}}","sv":"Tanken är !{{öppen|stängd}}","es":"El depósito está !{{abierto|cerrado}}","fr":"Le réservoir est !{{ouvert|fermé}}","ar":"الخزان !{{مفتوح|مغلق}}","de":"Der Tank ist !{{offen|gesclossen}}"}}]},"minCompatibility":"12.2.0"}')},637:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Dehumidifier","da":"Affugter","de":"Luftentfeuchter","es":"Deshumidificador","fr":"Déshumidificateur","it":"Deumidificatore","ko":"제습기","nl":"Luchtontvochtiger","no":"Luftavfukter","pl":"Osuszacz powietrza","ru":"Осушитель воздуха","sv":"Avfuktare","ar":"مزيل الرطوبة"},"description":{"en":"Use this device class for dehumidifiers.","da":"Brug denne enhedsklasse til affugtere.","de":"Verwenden Sie diese Geräteklasse für Luftentfeuchter.","es":"Utiliza esta clase de dispositivo para deshumidificadores.","fr":"Utilisez cette classe d\'appareils pour les déshumidificateurs.","it":"Utilizza questa classe di dispositivi per i deumidificatori.","ko":"이 디바이스 클래스는 제습기에 사용합니다.","nl":"Gebruik deze apparaatklasse voor luchtontvochtigers.","no":"Bruk denne enhetsklassen for luftavfuktere.","pl":"Tej klasy urządzeń należy używać w przypadku osuszaczy powietrza.","ru":"Используйте этот класс устройств для осушителей воздуха.","sv":"Använd den här enhetsklassen för avfuktare.","ar":"استخدم فئة الجهاز هذه لأجهزة إزالة الرطوبة."},"minCompatibility":"12.0.0"}')},657:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Air Conditioner","da":"Klimaanlæg","de":"Klimaanlage","es":"Equipo de aire acondicionado","fr":"Climatiseur","it":"Climatizzatore","ko":"에어컨","nl":"Airconditioner","no":"Klimaanlegg","pl":"Klimatyzacja","ru":"Кондиционер","sv":"Luftkonditionerare","ar":"مكيف هواء"},"description":{"en":"Use this device class for airconditioners, either portable or split type units.","da":"Brug denne enhedsklasse til klimaanlæg, enten bærbare eller split-enheder.","de":"Verwenden Sie diese Geräteklasse für tragbare oder geteilte Klimageräte.","es":"Utiliza esta clase de dispositivo para equipos de aire acondicionado, ya sean portátiles o de tipo split.","fr":"Cette classe d\'appareils est utilisée pour les climatiseurs, qu\'il s\'agisse d\'unités portables ou de type split.","it":"Utilizza questa classe di dispositivi per i condizionatori, sia portatili che di tipo split.","ko":"이 디바이스 클래스는 이동식 또는 실내외기 분할형 에어컨에 사용합니다.","nl":"Gebruik deze apparaatklasse voor airconditioners, zowel draagbare als splitsysteem.","no":"Bruk denne enhetsklassen for klimaanlegg av både flyttbar og fastmontert type.","pl":"Tej klasy urządzeń należy używać do klimatyzatorów, zarówno przenośnych, jak i typu split.","ru":"Используйте этот класс устройств для кондиционеров, как переносных, так и сплит-систем.","sv":"Använd denna enhetsklass för luftkonditioneringsapparater, antingen portabla eller enheter av split-typ.","ar":"استخدم فئة الجهاز هذه لمكيفات الهواء، سواء كانت محمولة أو وحدات منفصلة."},"minCompatibility":"12.0.0"}')},714:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Air quality level","nl":"Luchtkwaliteitsniveau","da":"Luftkvalitetsniveau","it":"Livello di qualità dell\'aria","ko":"공기질","pl":"Poziom jakości powietrza","ru":"Уровень качества воздуха","sv":"Luftkvalitetsnivå","es":"Nivel de calidad del aire","fr":"Niveau de qualité de l\'air","no":"Luftkvalitetsnivå","ar":"مستوى جودة الهواء","de":"Wert für die Luftqualität"},"desc":{"en":"The air quality index represented as a level.","nl":"De luchtkwaliteitsindex weergegeven als niveau.","da":"Luftkvalitetsindekset repræsenteret som et niveau.","es":"Índice de calidad del aire representado como nivel.","it":"L\'indice di qualità dell\'aria rappresentato come un livello.","ko":"수준으로 표현한 공기질 지수입니다.","pl":"Wskaźnik jakości powietrza przedstawiony jako poziom.","ru":"Показатель качества воздуха, представленный в виде уровня.","sv":"Luftkvalitetsindexet representeras som en nivå.","fr":"L\'indice de qualité de l\'air représenté sous forme de niveau.","no":"Luftkvalitetsindeksen uttrykt som et nivå.","ar":"مؤشر جودة الهواء ممثلًا كمستوى.","de":"Der Luftqualitätsindex, dargestellt als Wert."},"values":[{"id":"good","title":{"en":"Good","nl":"Goed","da":"Godt","it":"Buono","ko":"좋음","pl":"Dobry","ru":"Хороший","sv":"Bra","es":"Bueno","fr":"Bon","no":"God","ar":"جيد","de":"Gut"}},{"id":"fair","title":{"en":"Fair","da":"Rimelig","es":"Razonable","fr":"Moyen","it":"Accettabile","ko":"적당","nl":"Redelijk","no":"God","pl":"Zadowalający","ru":"Удовлетворительный","sv":"Rimlig","ar":"متوسط","de":"Angemessen"}},{"id":"moderate","title":{"en":"Moderate","da":"Moderat","es":"Moderado","fr":"Dégradé","it":"Moderato","ko":"보통","nl":"Matig","no":"Moderat","pl":"Umiarkowany","ru":"Умеренный","sv":"Måttlig","ar":"معتدل","de":"Mäßig"}},{"id":"poor","title":{"en":"Poor","nl":"Slecht","da":"Dårligt","it":"Scarso","ko":"나쁨","pl":"Niski","ru":"Плохой","sv":"Dålig","es":"Deficiente","fr":"Mauvais","no":"Dårlig","ar":"ضعيف","de":"Schlecht"}},{"id":"very_poor","title":{"en":"Very Poor","nl":"Zeer slecht","da":"Meget dårligt","it":"Molto scarso","ko":"매우 나쁨","pl":"Bardzo niski","ru":"Очень плохой","sv":"Mycket dålig","es":"Muy deficiente","fr":"Très mauvais","no":"Svært dårlig","ar":"ضعيف جدًا","de":"Sehr schlecht"}},{"id":"extremely_poor","title":{"en":"Extremely Poor","nl":"Extreem slecht","da":"Ekstremt dårligt","it":"Estremamente scarso","ko":"극도로 나쁨","pl":"Skrajnie niski","ru":"Чрезвычайно плохой","sv":"Extremt dålig","es":"Extremadamente deficiente","fr":"Extrêmement mauvais","no":"Ekstremt dårlig","ar":"ضعيف للغاية","de":"Extrem schlecht"}}],"color":"#6DD400","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"level_aqi_changed","highlight":true,"title":{"en":"The air quality level changed to","nl":"Het luchtkwaliteitsniveau is veranderd naar","da":"Luftkvalitetsniveauet blev ændret til","it":"Il livello di qualità dell\'aria è passato a","ko":"공기질이 다음으로 변경되면","pl":"Poziom jakości powietrza zmienił się na","ru":"Уровень качества воздуха изменился на","sv":"Luftkvalitetsnivån ändrades till","es":"El nivel de calidad del aire ha cambiado a","fr":"Le niveau de qualité de l\'air est passé à","no":"Luftkvalitetsnivået ble endret til","ar":"تغير مستوى جودة الهواء إلى","de":"Die Luftqualitätswert hat gewechselt auf"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"level_aqi_is","title":{"en":"The air quality !{{is|is not}}","nl":"De luchtkwaliteit !{{is|is niet}}","da":"Luftkvaliteten !{{er|er ikke}}","it":"La qualità dell\'aria !{{è|non è}}","ko":"공기질이 다음!{{이면|이 아니면}}","pl":"Jakość powietrza !{{jest|nie jest}}","ru":"Качество воздуха !{{|не}}","sv":"Luftkvaliteten !{{är|är inte}}","es":"La calidad del aire !{{es|no es}}","fr":"La qualité de l\'air !{{est|n\'est pas}}","no":"Luftkvaliteten !{{er|er ikke}}","ar":"جودة الهواء !{{هي|ليست}}","de":"Die Luftqualität !{{ist|ist nicht}}"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.2.0"}')},720:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Window Coverings","nl":"Raambekleding","de":"Fenster-Abdeckungen","fr":"Couverture de fenêtre","it":"Rivestimenti per finestre","sv":"Fönsterskydd","no":"Vindusskjerming","es":"Cobertores de ventanas","da":"Vinduesdække","ru":"Оконные навесы","pl":"Osłony okienne","ko":"창문 커버","ar":"أغطية النوافذ"},"description":{"en":"Use this device class for window coverings, when the `curtains`, `blinds` or `sunshade` device class doesn\'t apply.","de":"Nutze diese Geräteklasse für Fenster-Abdeckungen, wenn `curtains`-, `blinds`- oder `sunshade`-Geräteklassen nicht zutreffen.","fr":"Utilisez cette classe d\'appareil pour les couvertures de fenêtre, lorsque la classe d\'appareil `curtains`, `blinds` ou `sunshade` ne s\'applique pas.","it":"Utilizza questa classe di dispositivi per i rivestimenti per finestre, quando non rientrano nelle classi `curtains`, `blinds` o `sunshade`.","sv":"Använd den här enhetsklassen för fönsterskydd när enhetsklasserna `curtains`, `blinds` eller `sunshade` inte gäller.","no":"Bruk denne enhetsklassen for vindusskjerming som ikke dekkes av enhetsklassene «gardiner», «persienner» eller «markise».","es":"Utiliza esta clase de dispositivo para los cobertores de ventanas que no entren en las clases `curtains`, `blinds` o `sunshade`.","da":"Brug denne enhedsklasse til vinduesdække, når enhedsklasserne `curtains`, `blinds` og `sunshade` ikke er gældende.","ru":"Используйте этот класс устройств для оконных навесов, когда классы устройств `curtains`, `blinds` или `sunshade` не подходят.","pl":"Użyj tej klasy urządzeń dla osłon okiennych o innej klasie urządzenia niż `curtains`, `blinds` lub `sunshade`.","ko":"이 디바이스 클래스는 \'curtains\', \'blinds\', \'sunshade\' 디바이스 클래스가 적용되지 않는 창문 덮개에 사용합니다.","ar":"استخدم فئة الجهاز هذه لأغطية النوافذ، عندما لا تنطبق فئة الجهاز \'ستائر\'، \'ستائر دوارة\' أو \'مظلة شمسية\'.","nl":"Gebruik deze apparaatklasse voor raambekleding wanneer de apparaatklasse \'gordijnen\', \'jaloezieën\' of \'zonnescherm\' niet van toepassing is."},"virtualTitle":{"en":"What\'s the type?","nl":"Wat voor type is dit?","de":"Um welchen Typ handelt es sich?","fr":"Quel est le type ?","it":"Qual è il tipo?","sv":"Vad är det för typ?","no":"Hvilken type er det?","es":"¿Cuál es el tipo?","da":"Hvad er typen?","ru":"Какой тип?","pl":"Wybierz rodzaj?","ko":"어떤 유형인가요?","ar":"ما هو النوع؟"},"allowedVirtual":["sunshade","blinds","curtain","shutterblinds"]}')},759:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"PM2.5 Level","nl":"PM2.5-niveau","da":"PM2.5-niveau","it":"Livello PM2.5","ko":"초미세먼지(PM2.5) 수준","pl":"Poziom PM2.5","ru":"Уровень ТЧ2.5","sv":"PM2.5-nivå","es":"Nivel de PM2,5","fr":"Niveau de PM2.5","no":"PM2.5-nivå","ar":"مستوى PM2.5","de":"PM2.5-Wert"},"desc":{"en":"The level of PM2.5 particles in the air.","nl":"De mate van PM2.5-deeltjes in de lucht.","da":"Niveauet af PM2.5-partikler i luften.","it":"Il livello di particelle PM2.5 nell\'aria.","ko":"공기 중 PM2.5 입자의 수준입니다.","pl":"Poziom cząstek PM2.5 w powietrzu.","ru":"Уровень содержания частиц ТЧ2.5 в воздухе.","sv":"Halten av PM2.5-partiklar i luften.","es":"El nivel de partículas PM2,5 en el aire.","fr":"Le niveau de particules PM2.5 dans l\'air.","no":"Nivået av PM2.5-partikler i luften.","ar":"مستوى جزيئات PM2.5 في الهواء.","de":"Der Gehalt an PM2,5-Partikeln in der Luft."},"values":[{"id":"low","title":{"en":"Low","nl":"Laag","da":"Lavt","ko":"좋음","pl":"Niski","ru":"Низкий","sv":"Låg","es":"Bajo","fr":"Faible","no":"Lavt","ar":"منخفض","de":"Niedrig","it":"Basso"}},{"id":"medium","title":{"en":"Medium","nl":"Gemiddeld","da":"Medium","ko":"보통","pl":"Średni","ru":"Средний","sv":"Medium","es":"Intermedio","fr":"Moyen","no":"Middels","ar":"متوسط","de":"Mittel","it":"Medio"}},{"id":"high","title":{"en":"High","nl":"Hoog","da":"Højt","it":"Alto","ko":"나쁨","pl":"Wysoki","ru":"Высокий","sv":"Hög","es":"Alto","fr":"Élevé","no":"Høyt","ar":"عالي","de":"Hoch"}},{"id":"critical","title":{"en":"Critical","nl":"Kritiek","da":"Kritisk","it":"Critico","ko":"매우 나쁨","pl":"Krytyczny","ru":"Критический","sv":"Kritisk","es":"Crítico","fr":"Critique","no":"Kritisk","ar":"حرج","de":"Kritisch"}}],"color":"#E02020","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"level_pm25_changed","highlight":true,"title":{"en":"The PM2.5 level changed to","nl":"Het PM2.5-niveau is veranderd naar","da":"PM2.5-niveauet blev ændret til","it":"Il livello di PM2.5 è passato a","ko":"초미세먼지(PM2.5) 수준이 다음으로 변경되면","pl":"Poziom PM2.5 zmienił się na","ru":"Уровень ТЧ2.5 изменился на","sv":"PM2.5-nivån ändrades till","es":"El nivel de PM2,5 ha cambiado a","fr":"Le niveau de PM2.5 est passé à","no":"PM2.5-nivået ble endret til","ar":"تغير مستوى PM2.5 إلى","de":"Der PM2,5-Wert hat sich geändert auf"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"level_pm25_is","title":{"en":"The PM2.5 level !{{is|is not}}","nl":"Het PM2.5-niveau !{{is|is niet}}","da":"PM2.5-niveauet !{{er|er ikke}}","it":"Il livello di PM2.5 !{{è|non è}}","ko":"초미세먼지(PM2.5) 수준이 다음!{{이면|이 아니면}}","pl":"Poziom PM2.5 !{{jest|nie jest}}","ru":"Уровень ТЧ2.5 !{{|не}}","sv":"PM2.5-nivån !{{är|är inte}}","es":"El nivel de PM2,5 !{{es|no es}}","fr":"Le niveau de PM2.5 !{{est|n\'est pas}}","no":"PM2.5-nivået !{{er|er ikke}}","ar":"مستوى PM2.5 !{{هو|ليس}}","de":"Der PM2.5-Wert !{{ist|ist nicht}}"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.2.0"}')},795:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"PM0.1","nl":"PM0.1","de":"PM0.1","fr":"PM0.1\\n","it":"PM0.1","sv":"PM0.1","no":"PM0.1","es":"PM0,1","ru":"ТЧ0.1","pl":"PM0.1","ko":"나노미세먼지(PM0.1)","da":"PM0.1","ar":"PM0.1"},"units":{"en":"μg/m³","ru":"мкг/м³","ko":"μg/m³","no":"μg/m³","da":"μg/m³","it":"μg/m³","nl":"μg/m³","pl":"μg/m³","sv":"μg/m³","es":"μg/m³","fr":"μg/m³","ar":"ميكرو جرام/م³","de":"μg/m³"},"insights":true,"desc":{"en":"Atmospheric particulate matter (μg/m³)","nl":"Zwevende deeltjes (μg/m³)","de":"Atmosphärischer Feinstaub (μg/m³)","fr":"Particules en suspension (μg/m³)\\n","it":"Particolato atmosferico (μg/m³)","sv":"Atmosfäriskt partikelämne (μg/m³)","no":"Svevestøv (μg/m³)","es":"Partículas atmosféricas (μg/m³)","da":"Atmosfæriske partikler (μg/m³)","ru":"Твердые частицы в воздухе (мкг/м³)","pl":"Pył zawieszony w powietrzu (μg/m³)","ko":"대기 중 미세입자 수(μg/m³)","ar":"الجسيمات المعلقة في الغلاف الجوي (ميكرو جرام/م³)"},"chartType":"spline","decimals":2,"color":"#E02020","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_pm01_changed","title":{"en":"The PM0.1 value has changed","nl":"De PM0.1-waarde is veranderd","de":"Der PM0.1-Wert hat sich geändert","fr":"La valeur PM0.1 a changé","it":"Il valore di PM0.1 è cambiato","sv":"PM0.1-värdet har ändrats","no":"PM0.1-verdien har blitt endret","es":"El valor de PM0,1 ha cambiado","da":"PM0.1-værdien har ændret sig","ru":"Значение ТЧ0.1 изменилось","pl":"Zmieniła się wartość PM0.1","ko":"나노미세먼지(PM0.1) 값이 변경되면","ar":"تغيرت قيمة PM0.1"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":2}]}]},"minCompatibility":"12.2.0"}')},831:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Album","nl":"Album","de":"Album","fr":"Album","it":"Album","sv":"Album","no":"Album","es":"Álbum","da":"Album","ru":"Альбом","pl":"Album","ko":"앨범","ar":"الألبوم"},"type":"string","color":"#9033FC","getable":true,"setable":false,"uiComponent":"media","$flow":{"triggers":[{"id":"speaker_album_changed","title":{"en":"The album changed","nl":"Het album is veranderd","de":"Das Album hat sich geändert","fr":"L\'album a été modifié","it":"L\'album è cambiato","sv":"Albumet ändrades","no":"Albumet ble endret","es":"El álbum ha cambiado","da":"Albummet skiftede","ru":"Альбом изменен","pl":"Zmiana albumu","ko":"앨범이 변경되면","ar":"تغير الألبوم"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":"Life Lessons"}]}]}}')},868:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Audio Output","nl":"Audio-uitgang","da":"Lydudgang","it":"Uscita audio","ko":"오디오 출력","pl":"Wyjście audio","ru":"Аудиовыход","sv":"Ljudutgång","es":"Salida de audio","fr":"Sortie audio","no":"Lydutgang","ar":"مخرج الصوت","de":"Audioausgang"},"desc":{"en":"The audio output channel for a media player.","nl":"Het audio-uitgangskanaal voor een mediaspeler.","da":"Lydudgangskanalen til en medieafspiller.","it":"Il canale di uscita audio di un lettore multimediale.","ko":"미디어 플레이어의 오디오 출력 채널입니다.","pl":"Kanał wyjściowy audio odtwarzacza multimedialnego.","ru":"Канал аудиовыхода для медиаплеера.","sv":"Ljudutgångskanalen för en mediaspelare.","es":"Canal de salida de audio en un reproductor multimedia.","fr":"Canal de sortie audio d\'un lecteur multimédia.","no":"Lydutgangskanalen for en mediespiller.","ar":"قناة إخراج الصوت لمشغل الوسائط.","de":"Der Audioausgangskanal für einen Media Player."},"values":[{"id":"hdmi_1","title":{"en":"HDMI 1","nl":"HDMI 1","da":"HDMI 1","it":"HDMI 1","ko":"HDMI 1","no":"HDMI 1","pl":"HDMI 1","ru":"HDMI 1","sv":"HDMI 1","es":"HDMI 1","fr":"HDMI 1","ar":"HDMI 1","de":"HDMI 1"}},{"id":"hdmi_2","title":{"en":"HDMI 2","nl":"HDMI 2","da":"HDMI 2","it":"HDMI 2","ko":"HDMI 2","no":"HDMI 2","pl":"HDMI 2","ru":"HDMI 2","sv":"HDMI 2","es":"HDMI 2","fr":"HDMI 2","ar":"HDMI 2","de":"HDMI 2"}},{"id":"hdmi_3","title":{"en":"HDMI 3","nl":"HDMI 3","da":"HDMI 3","it":"HDMI 3","ko":"HDMI 3","no":"HDMI 3","pl":"HDMI 3","ru":"HDMI 3","sv":"HDMI 3","es":"HDMI 3","fr":"HDMI 3","ar":"HDMI 3","de":"HDMI 3"}},{"id":"line_out","title":{"en":"Line Out","nl":"Line out","da":"Linjeudgang","it":"Line out","ko":"Line out","pl":"Wyjście liniowe","ru":"Линейный выход","sv":"Linje ut","es":"Salida de línea","fr":"Sortie line","no":"Linje ut","ar":"مخرج الخط","de":"Line Out (Audioausgang)"}},{"id":"optical","title":{"en":"Optical","nl":"Optisch","da":"Optisk","it":"Ottica","ko":"Optical","pl":"Optyczne","ru":"Оптический выход","sv":"Optisk","es":"Óptico","fr":"Optique","no":"Optisk","ar":"بصري","de":"Optisch"}},{"id":"usb","title":{"en":"USB","nl":"USB","da":"USB","it":"USB","ko":"USB","pl":"USB","ru":"USB","sv":"USB","es":"USB","fr":"USB","no":"USB","ar":"USB","de":"USB"}}],"color":"#9033FC","getable":true,"setable":true,"uiComponent":"picker","$flow":{"triggers":[{"id":"audio_output_changed","highlight":true,"title":{"en":"The audio output changed to","nl":"De audio-uitgang is veranderd naar","da":"Lydudgangen blev ændret til","it":"L\'uscita audio è passata a","ko":"오디오 출력이 다음으로 변경되면","pl":"Wyjście audio zmieniło się na","ru":"Аудиовыход изменен на","sv":"Ljudutgången ändrades till","es":"La salida de audio ha cambiado a","fr":"La sortie audio passe à","no":"Lydutgangen ble endret til","ar":"تم تغيير مخرج الصوت إلى","de":"Der Audioausgang wurde geändert auf"},"args":[{"name":"output","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"audio_output_is","title":{"en":"The audio output !{{is|is not}}","nl":"De audio-uitgang !{{is|is niet}}","da":"Lydudgangen !{{er|er ikke}}","it":"L\'uscita audio !{{è|non è}}","ko":"오디오 출력이 다음!{{이면|이 아니면}}","pl":"Wyjście audio !{{jest|nie jest}}","ru":"Аудиовыход !{{|не}}","sv":"Ljudutgången !{{är|är inte}}","es":"La salida de audio !{{está|no está}}","fr":"La sortie audio !{{est|n\'est pas}}","no":"Lydutgangen !{{er|er ikke}}","ar":"مخرج الصوت !{{هو|ليس}}","de":"Der Audioausgang !{{ist|ist nicht}}"},"args":[{"name":"output","type":"dropdown","values":"$values"}]}],"actions":[{"id":"set_audio_output","title":{"en":"Set audio output to","nl":"Audio-uitgang instellen op","da":"Indstil lydudgang til","it":"Imposta l\'uscita audio su","ko":"오디오 출력을 다음으로 설정","pl":"Ustaw wyjście audio na","ru":"Установить аудиовыход на","sv":"Ställ in ljudutgång till","es":"Configurar la salida de audio en","fr":"Définir la sortie audio sur","no":"Sett lydutgang til","ar":"ضبط مخرج الصوت إلى","de":"Stelle den Audioausgang auf"},"args":[{"name":"output","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.2.0"}')},965:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Shuffle","nl":"Shuffle","de":"Zufallswiedergabe","fr":"Aléatoire","it":"Ordine casuale","sv":"Blanda","no":"Tilfeldig rekkefølge","es":"Aleatorio","da":"Shuffle","ru":"В случайном порядке","pl":"Odtwarzaj losowo","ko":"셔플","ar":"خلط"},"type":"boolean","color":"#9033FC","getable":true,"setable":true,"uiComponent":"media","$flow":{"actions":[{"id":"set_shuffle_true","title":{"en":"Shuffle on","nl":"Shuffle aan","de":"Zufallswiedergabe an","fr":"Aléatoire activée","it":"Ordine casuale attivato","sv":"Blanda på","no":"Tilfeldig rekkefølge på","es":"Orden aleatorio activado","da":"Shufflet slået til","ru":"В случайном порядке","pl":"Włącz odtwarzanie losowe","ko":"셔플 켬","ar":"تشغيل الخلط"}},{"id":"set_shuffle_false","title":{"en":"Shuffle off","nl":"Shuffle uit","de":"Zufallswiedergabe aus","fr":"Aléatoire désactivée","it":"Ordine casuale disattivato","sv":"Blanda av","no":"Tilfeldig rekkefølge av","es":"Orden aleatorio desactivado","da":"Shuffle slået fra","ru":"По порядку","pl":"Wyłącz odtwarzanie losowe","ko":"셔플 끔","ar":"إيقاف الخلط"}}]}}')},993:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Target Humidity","nl":"Gewenste luchtvochtigheid","da":"Luftfugtighedsmål","it":"Umidità target","ko":"희망 습도","pl":"Docelowa wilgotność","ru":"Заданная влажность","sv":"Målfuktighet","es":"Humedad deseada","fr":"Humidité cible","no":"Ønsket fuktighet","ar":"الرطوبة المستهدفة","de":"Ziel-Feuchtigkeit"},"units":{"en":"%","nl":"%","da":"%","it":"%","ko":"%","pl":"%","ru":"%","sv":"%","es":"%","fr":" %","no":"%","ar":"%","de":"%"},"desc":{"en":"The target humidity level in percent.","nl":"Het gewenste vochtigheidsniveau in procenten.","da":"Den ønskede luftfugtighed i procent.","it":"Il livello di umidità target in percentuale.","ko":"백분율로 표현된 목표 습도 수준입니다.","pl":"Docelowy poziom wilgotności w procentach.","ru":"Заданный уровень влажности в процентах.","sv":"Den önskade luftfuktighetsnivån i procent.","es":"El nivel de humedad deseado en porcentaje.","fr":"Le taux d\'humidité cible en pourcentage.","no":"Ønsket fuktighetsnivå i prosent.","ar":"مستوى الرطوبة المستهدف بالنسبة المئوية.","de":"Der Zielwert für die Feuchtigkeit in Prozent."},"min":0,"max":1,"decimals":2,"color":"#0091FF","insights":true,"getable":true,"setable":true,"uiComponent":"slider","$flow":{"triggers":[{"id":"target_humidity_changed","title":{"en":"The target humidity changed","nl":"De gewenste vochtigheid is veranderd","da":"Målfugtigheden ændrede sig","it":"L\'umidità target è cambiata","ko":"희망 습도가 변경되면","pl":"Zmieniła się docelowa wilgotność","ru":"Заданная влажность изменена","sv":"Den önskade luftfuktigheten ändrades","es":"La humedad deseada ha cambiado","fr":"L\'humidité cible a changé","no":"Ønsket fuktighet ble endret","ar":"تغيرت الرطوبة المستهدفة","de":"Die Zielfeuchtigkeit hat sich geändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":0.5}]}],"actions":[{"id":"set_target_humidity","title":{"en":"Set the humidity","nl":"De vochtigheid instellen","da":"Indstil luftfugtigheden","it":"Imposta l\'umidità","ko":"희망 습도 설정","pl":"Ustaw wilgotność","ru":"Установить уровень влажности","sv":"Ställ in luftfuktigheten","es":"Ajustar la humedad","fr":"Définir l\'humidité","no":"Angi fuktigheten","ar":"ضبط الرطوبة","de":"Einstellen der Feuchtigkeit"},"args":[{"name":"target_humidity","type":"range","min":0,"max":1,"step":0.01,"value":0.5,"label":"%","labelMultiplier":100,"labelDecimals":0}]}]},"minCompatibility":"12.2.0"}')},1013:(e,t,a)=>{var r={"./airconditioning.json":657,"./airfryer.json":3554,"./airpurifier.json":2674,"./airtreatment.json":2154,"./amplifier.json":2974,"./battery.json":5619,"./bicycle.json":4963,"./blinds.json":5886,"./boiler.json":175,"./bridge.json":3027,"./button.json":5934,"./camera.json":7101,"./car.json":8148,"./coffeemachine.json":9423,"./cooktop.json":253,"./curtain.json":4636,"./dehumidifier.json":637,"./diffuser.json":9922,"./dishwasher.json":302,"./doorbell.json":4427,"./dryer.json":5848,"./evcharger.json":2177,"./fan.json":7243,"./faucet.json":2850,"./fireplace.json":6461,"./freezer.json":8837,"./fridge.json":2303,"./fridge_and_freezer.json":5597,"./fryer.json":5446,"./gameconsole.json":8621,"./garagedoor.json":4683,"./grill.json":2182,"./heater.json":6507,"./heatpump.json":1330,"./homealarm.json":3454,"./hood.json":4560,"./humidifier.json":9102,"./kettle.json":5905,"./lawnmower.json":9350,"./light.json":6074,"./lock.json":7937,"./mediaplayer.json":275,"./microwave.json":6207,"./mop.json":6,"./multicooker.json":3756,"./networkrouter.json":3121,"./other.json":2440,"./oven.json":2788,"./oven_and_microwave.json":5932,"./petfeeder.json":9848,"./pump.json":6036,"./radiator.json":8184,"./relay.json":9011,"./remote.json":3672,"./scooter.json":7269,"./sensor.json":6796,"./service.json":4357,"./settopbox.json":3998,"./shutterblinds.json":6175,"./siren.json":9647,"./smokealarm.json":1240,"./socket.json":2059,"./solarpanel.json":2755,"./speaker.json":6891,"./sprinkler.json":9738,"./sunshade.json":1961,"./thermostat.json":5395,"./tv.json":6892,"./vacuumcleaner.json":3805,"./vehicle.json":6282,"./washer.json":4398,"./washer_and_dryer.json":5757,"./waterheater.json":6488,"./waterpurifier.json":1269,"./watervalve.json":9101,"./windowcoverings.json":720};function i(e){var t=n(e);return a(t)}function n(e){if(!a.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}i.keys=function(){return Object.keys(r)},i.resolve=n,e.exports=i,i.id=1013},1030:(e,t,a)=>{"use strict";var r=a(6579),i=a(2017),n=a(6740),s=a(2585),o=a(7106);function l(e,t,a){var r=this._refs[a];if("string"==typeof r){if(!this._refs[r])return l.call(this,e,t,r);r=this._refs[r]}if((r=r||this._schemas[a])instanceof s)return g(r.schema,this._opts.inlineRefs)?r.schema:r.validate||this._compile(r);var i,n,o,u=d.call(this,t,a);return u&&(i=u.schema,t=u.root,o=u.baseId),i instanceof s?n=i.validate||e.call(this,i.schema,t,void 0,o):void 0!==i&&(n=g(i,this._opts.inlineRefs)?i:e.call(this,i,t,void 0,o)),n}function d(e,t){var a=r.parse(t),i=k(a),n=f(this._getId(e.schema));if(0===Object.keys(e.schema).length||i!==n){var o=b(i),l=this._refs[o];if("string"==typeof l)return u.call(this,e,l,a);if(l instanceof s)l.validate||this._compile(l),e=l;else{if(!((l=this._schemas[o])instanceof s))return;if(l.validate||this._compile(l),o==b(t))return{schema:l,root:e,baseId:n};e=l}if(!e.schema)return;n=f(this._getId(e.schema))}return p.call(this,a,n,e.schema,e)}function u(e,t,a){var r=d.call(this,e,t);if(r){var i=r.schema,n=r.baseId;e=r.root;var s=this._getId(i);return s&&(n=w(n,s)),p.call(this,a,n,i,e)}}e.exports=l,l.normalizeId=b,l.fullPath=f,l.url=w,l.ids=function(e){var t=b(this._getId(e)),a={"":t},s={"":f(t,!1)},l={},d=this;return o(e,{allKeys:!0},(function(e,t,o,u,m,p,c){if(""!==t){var g=d._getId(e),h=a[u],v=s[u]+"/"+m;if(void 0!==c&&(v+="/"+("number"==typeof c?c:n.escapeFragment(c))),"string"==typeof g){g=h=b(h?r.resolve(h,g):g);var f=d._refs[g];if("string"==typeof f&&(f=d._refs[f]),f&&f.schema){if(!i(e,f.schema))throw new Error('id "'+g+'" resolves to more than one schema')}else if(g!=b(v))if("#"==g[0]){if(l[g]&&!i(e,l[g]))throw new Error('id "'+g+'" resolves to more than one schema');l[g]=e}else d._refs[g]=v}a[t]=h,s[t]=v}})),l},l.inlineRef=g,l.schema=d;var m=n.toHash(["properties","patternProperties","enum","dependencies","definitions"]);function p(e,t,a,r){if(e.fragment=e.fragment||"","/"==e.fragment.slice(0,1)){for(var i=e.fragment.split("/"),s=1;s{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Pressure","nl":"Druk","de":"Druck","fr":"Pression","it":"Pressione","sv":"Tryck","no":"Trykk","es":"Presión","da":"Tryk","ru":"Давление","pl":"Ciśnienie","ko":"기압","ar":"الضغط"},"units":{"en":"mbar","ru":"мбар","ko":"mbar","no":"mbar","ar":"مللي بار","da":"mbar","de":"mbar","es":"mbar","fr":"mbar","it":"mbar","nl":"mbar","pl":"mbar","sv":"mbar"},"insights":true,"desc":{"en":"Pressure in millibar (mbar)","nl":"Druk in millibar (mbar)","de":"Druck in Millibar (mbar)","fr":"Pression en millibar (mbar)","it":"Pressione in millibar (mbar)","sv":"Tryck i millibar (mbar)","no":"Trykk i millibar (mbar)","es":"Presión en milibares (mbar)","da":"Tryk i millibar (mbar)","ru":"Давление (мбар)","pl":"Ciśnienie w milibarach (mbar)","ko":"압력 밀리바(mbar)","ar":"الضغط بالمللي بار (mbar)"},"chartType":"spline","decimals":0,"color":"#32C5FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_pressure_changed","title":{"en":"The pressure changed","nl":"De druk is veranderd","de":"Der Druck hat sich geändert","fr":"La pression a changé","it":"La pressione è cambiata","sv":"Trycket ändrades","no":"Trykket ble endret","es":"La presión ha cambiado","da":"Trykkey ændrede sig","ru":"Давление изменилось","pl":"Zmiana ciśnienia","ko":"기압이 변경되면","ar":"تغير الضغط"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":1000}]}]}}')},1080:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Contact Alarm","nl":"Contactalarm","de":"Kontaktalarm","fr":"Alarme de contact","it":"Allarme contatto","sv":"Kontaktlarm","no":"Kontaktalarm","es":"Alarma de contacto","da":"Kontaktalarm","ru":"Сигнал контакта","pl":"Alarm kontaktu","ko":"열림 감지","ar":"إنذار الاتصال"},"titleShort":{"en":"Contact","nl":"Contact","de":"Kontakt","fr":"Contact","it":"Contatto","sv":"Kontakt","no":"Kontakt","es":"Contacto","da":"Kontakt","ru":"Контакт","pl":"Kontakt","ko":"접촉","ar":"اتصال"},"desc":{"en":"Contact sensor, e.g. for windows (true/false)","nl":"Contact sensor, bijvoorbeeld voor ramen","de":"Kontaktsensor, z.B. für Windows (true/false)","fr":"Capteur de contact, par ex. pour les fenêtres (vrai/faux)","it":"Sensore di contatto, ad es. per le finestre (vero/falso)","sv":"Kontaktsensor, t.ex. för fönster (sant/falskt)","no":"Kontaktsensor, f.eks. for vindu (sant/usant)","es":"Sensor de contacto, p. ej., para ventanas (verdadero/falso)","da":"Kontaktsensor, f.eks. til vinduer (sandt/falsk)","ru":"Контактный датчик, например для окон (истина/ложь)","pl":"Czujnik otwarcia, np. okien (adekwatny/nieadekwatny)","ko":"접촉 센서, 예: 창문(참/거짓)","ar":"مستشعر اتصال، على سبيل المثال للنوافذ (صحيح/خطأ)"},"insights":true,"insightsTitleTrue":{"en":"Contact alarm turned on","nl":"Contact alarm ging af","de":"Kontakt-Alarm ist angegangen","fr":"Alarme contact s\'est activée","it":"Allarme di contatto attivato","sv":"Kontaktalarm aktiverat","no":"Kontaktalarm aktivert","es":"Alarma de contacto activada","da":"Kontaktalarm blev aktiveret","ru":"Контактный сигнал включен","pl":"Alarm otwarcia włączony","ko":"열림","ar":"تم تشغيل إنذار الاتصال"},"insightsTitleFalse":{"en":"Contact alarm turned off","nl":"Contact alarm ging uit","de":"Kontakt-Alarm ist ausgegangen","fr":"Alarme contact s\'est désactivée","it":"Allarme di contatto disattivato","sv":"Kontaktalarm inaktiverat","no":"Kontaktalarm deaktivert","es":"Alarma de contacto desactivada","da":"Kontaktalarm blev deaktiveret","ru":"Контактный сигнал выключен","pl":"Alarm otwarcia wyłączony","ko":"닫힘","ar":"تم إيقاف إنذار الاتصال"},"color":"#32C5FF","getable":true,"setable":false,"uiComponent":"sensor","options":{"zoneActivity":true},"$flow":{"triggers":[{"id":"alarm_contact_true","highlight":true,"title":{"en":"The contact alarm turned on","nl":"Het contactalarm gaat aan","de":"Der Kontakt-Alarm ist angegangen","fr":"L\'alarme contact s\'est activée","it":"L\'allarme di contatto è stato attivato","sv":"Kontaktalarmet aktiverat","no":"Kontaktalarmen ble aktivert","es":"La alarma de contacto se ha activado","da":"Kontaktalarmen blev aktiveret","ru":"Контактный сигнал включен","pl":"Alarm otwarcia włączony","ko":"열림 감지 열리면","ar":"تم تشغيل إنذار الاتصال"}},{"id":"alarm_contact_false","title":{"en":"The contact alarm turned off","nl":"Het contactalarm gaat uit","de":"Der Kontakt-Alarm ist ausgegangen","fr":"L\'alarme contact s\'est désactivée","it":"L\'allarme di contatto è stato disattivato","sv":"Kontaktalarmet inaktiverat","no":"Kontaktalarmen ble deaktivert","es":"La alarma de contacto se ha desactivado","da":"Kontaktalarmen blev deaktiveret","ru":"Контактный сигнал выключен","pl":"Alarm otwarcia wyłączony","ko":"열림 감지 닫히면","ar":"تم إيقاف إنذار الاتصال"}}],"conditions":[{"id":"alarm_contact","title":{"en":"The contact alarm is !{{on|off}}","nl":"Het contactalarm is !{{aan|uit}}","de":"Der Kontakt-Alarm ist !{{an|aus}}","fr":"L\'alarme contact est !{{en marche|arrêtée}}","it":"L\'allarme di contatto è !{{acceso|spento}}","sv":"Kontaktalarmet är !{{på|av}}","no":"Kontaktalarmen er !{{på|av}}","es":"La alarma de contacto está !{{activada|desactivada}}","da":"Kontaktalarmen er !{{tændt|slukket}}","ru":"Контактный сигнал !{{вкл.|выкл.}}","pl":"Alarm otwarcia jest !{{włączony|wyłączony}}","ko":"열림 감지 !{{열리면|닫히면}}","ar":"إنذار الاتصال !{{يعمل|لا يعمل}}"}}]}}')},1169:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Radon Level","nl":"Radonniveau","da":"Radon-niveau","it":"Livello di radon","ko":"라돈 수준","pl":"Poziom radonu","ru":"Уровень радона","sv":"Radonnivå","es":"Nivel de radón","fr":"Niveau de radon","no":"Radonnivå","ar":"مستوى الرادون","de":"Radongehalt"},"desc":{"en":"The level of radioactive radon gas in the air.","nl":"De mate van radioactief radongas in de lucht.","da":"Niveauet af radioaktiv radongas i luften.","it":"Il livello di gas radon radioattivo nell\'aria.","ko":"공기 중 방사성 라돈 기체의 수준입니다.","pl":"Poziom radioaktywnego radonu w powietrzu.","ru":"Уровень содержания радиоактивного радона в воздухе.","sv":"Halten av radioaktiv radongas i luften.","es":"El nivel de gas radón radiactivo en el aire.","fr":"Le niveau de radon radioactif dans l\'air.","no":"Nivået av radioaktiv radongass i luften.","ar":"مستوى غاز الرادون المشع في الهواء.","de":"Der Gehalt an radioaktivem Radongas in der Luft."},"values":[{"id":"low","title":{"en":"Low","nl":"Laag","da":"Lavt","it":"Basso","ko":"낮음","pl":"Niski","ru":"Низкий","sv":"Låg","es":"Bajo","fr":"Faible","no":"Lavt","ar":"منخفض","de":"Niedrig"}},{"id":"medium","title":{"en":"Medium","nl":"Gemiddeld","da":"Medium","it":"Medio","ko":"보통","pl":"Średni","ru":"Средний","sv":"Medium","es":"Intermedio","fr":"Moyen","no":"Middels","ar":"متوسط","de":"Mittel"}},{"id":"high","title":{"en":"High","nl":"Hoog","da":"Højt","it":"Alto","ko":"높음","pl":"Wysoki","ru":"Высокий","sv":"Hög","es":"Alto","fr":"Élevé","no":"Høyt","ar":"عالي","de":"Hoch"}},{"id":"critical","title":{"en":"Critical","nl":"Kritiek","da":"Kritisk","it":"Critico","ko":"위험","pl":"Krytyczny","ru":"Критический","sv":"Kritisk","es":"Crítico","fr":"Critique","no":"Kritisk","ar":"حرج","de":"Kritisch"}}],"color":"#8B0000","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"level_radon_changed","highlight":true,"title":{"en":"The radon level changed to","nl":"Het radonniveau is veranderd naar","da":"Radonniveauet ændrede sig til","it":"Il livello di radon è passato a","ko":"라돈 수준이 다음으로 변경되면","pl":"Poziom radonu zmienił się na","ru":"Уровень радона изменился на","sv":"Radonnivån ändrades till","es":"El nivel de radón ha cambiado a","fr":"Le niveau de radon est passé à","no":"Radonnivået ble endret til","ar":"تغير مستوى الرادون إلى","de":"Der Radonwert hat sich geändert auf"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"level_radon_is","title":{"en":"The radon level !{{is|is not}}","nl":"Het radonniveau !{{is|is niet}}","da":"Radonniveauet !{{er|er ikke}}","it":"Il livello di radon !{{è|non è}}","ko":"라돈 수준이 다음!{{이면|이 아니면}}","pl":"Poziom radonu !{{jest|nie jest}}","ru":"Уровень радона !{{|не}}","sv":"Radonnivån !{{är|är inte}}","es":"El nivel de radón !{{es|no es}}","fr":"Le niveau de radon !{{est|n\'est pas}}","no":"Radonnivået !{{er|er ikke}}","ar":"مستوى الرادون !{{هو|ليس}}","de":"Der Radonwert !{{ist|ist nicht}}"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.2.0"}')},1207:()=>{},1227:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Position","nl":"Positie","de":"Position","fr":"Position","it":"Posizione","sv":"Position","no":"Posisjon","es":"Posición","da":"Position","ru":"Позиция","pl":"Pozycja","ko":"위치","ar":"الموضع"},"type":"number","color":"#9033FC","getable":true,"setable":false,"uiComponent":"media"}')},1240:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Smoke Alarm","da":"Røgalarm","de":"Rauchmelder","es":"Detector de humo","fr":"Détecteur de fumée","it":"Rilevatore di fumo","ko":"연기 감지기","nl":"Rookmelder","no":"Røykvarsler","pl":"Alarm przeciwdymny","ru":"Датчик дыма","sv":"Rökalarm","ar":"إنذار الدخان"},"description":{"en":"Use this device class for any smoke- or CO-alarm, could also be used for combo units.","da":"Brug denne enhedsklasse til enhver røg- eller kuliltealarm, kan også bruges til kombinationsenheder.","de":"Verwenden Sie diese Geräteklasse für jeden Rauch- oder CO-Alarm. Sie kann auch für Kombi-Geräte verwendet werden.","es":"Utiliza esta clase de dispositivo para cualquier detector de humo o CO2. También puede servir para unidades que combinen ambas funciones.","fr":"Cette classe d\'appareils peut être utilisée pour n\'importe quel détecteur de fumée ou de CO, ainsi que pour les unités combinées.","it":"Utilizza questa classe di dispositivi per qualsiasi rilevatore di fumo o di monossido di carbonio. Può essere utilizzata anche per unità combinate.","ko":"이 디바이스 클래스는 연기 및 CO 알람 경보기에 사용하며, 콤보 유닛에도 사용할 수 있습니다.","nl":"Gebruik deze apparaatklasse voor elk rook- of CO-melder, kan ook worden gebruikt voor gecombineerde eenheden.","no":"Bruk denne enhetsklassen for alle slags røyk- eller kullosvarslere. Kan også brukes for kombienheter.","pl":"Tej klasy urządzeń można używać w przypadku dowolnego alarmu dymnego lub CO, a także w przypadku urządzeń typu combo.","ru":"Используйте этот класс устройств для датчиков дыма или угарного газа любого типа; также можно использовать для комбинированных устройств.","sv":"Använd den här enhetsklassen för alla rök- eller CO-larm, kan även användas för kombienheter.","ar":"استخدم فئة الجهاز هذه لأي إنذار دخان أو أول أكسيد الكربون، ويمكن استخدامها أيضًا للوحدات المدمجة."},"minCompatibility":"12.0.0"}')},1247:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Maximum target temperature","nl":"Maximale gewenste temperatuur","da":"Maksimal måltemperatur","it":"Temperatura target massima","ko":"최대 희망 온도","pl":"Maksymalna docelowa tempertura","ru":"Максимальная заданная температура","sv":"Maximal måltemperatur","es":"Temperatura máxima deseada","fr":"Température cible maximale","no":"Maksimum ønsket temperatur","ar":"الحد الأقصى لدرجة الحرارة المستهدفة","de":"Maximale Zieltemperatur"},"units":{"en":"°C","nl":"°C","da":"°C","it":"°C","ko":"°C","pl":"°C","ru":"°C","sv":"°C","es":"°C","fr":"°C","no":"°C","ar":"درجة مئوية","de":"°C"},"desc":{"en":"The high end of the temperature setpoint in degrees Celsius.","nl":"De bovengrens van het instelpunt voor temperatuur in graden Celsius.","da":"Den høje ende af temperaturindstillingspunktet i Celsius.","it":"Il setpoint massimo di temperatura in gradi Celsius.","ko":"섭씨 도 단위의 온도 설정값 최대치입니다.","pl":"Górna granica wartości zadanej temperatury w stopniach Celsjusza.","ru":"Верхний предел заданной температуры в градусах Цельсия.","sv":"Den övre delen av temperaturbörvärdet i grader Celsius.","es":"El valor superior de ajuste de la temperatura en grados centígrados.","fr":"Le niveau maximal de la température en degrés Celsius.","no":"Maksimum ønsket temperaturinnstilling i grader Celsius.","ar":"الحد الأعلى لدرجة الحرارة المستهدفة بالدرجات المئوية.","de":"Das obere Ende des Temperatursollwerts in Grad Celsius."},"insights":true,"chartType":"stepLine","decimals":2,"min":4,"max":35,"color":"#FA6400","getable":true,"setable":true,"uiComponent":"slider","$flow":{"triggers":[{"id":"target_temperature_max_changed","title":{"en":"The maximum target temperature has changed","nl":"De maximale gewenste temperatuur is veranderd","da":"Den maksimale måltemperatur har ændret sig","it":"La temperatura target massima è cambiata","ko":"최대 희망 온도가 변경되면","no":"Maksimum ønsket temperatur er endret","pl":"Zmieniła się maksymalna temperatura docelowa","ru":"Максимальная заданная температура изменена","sv":"Den maximala måltemperaturen har ändrats","es":"La temperatura máxima deseada ha cambiado","fr":"La température maximale cible a changé","ar":"تم تغيير الحد الأقصى لدرجة الحرارة المستهدفة","de":"Die maximale Zieltemperatur wurde geändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":20}]}],"actions":[{"id":"set_target_temperature_max","title":{"en":"Set the maximum target temperature","nl":"De maximale gewenste temperatuur instellen","da":"Indstil den maksimale måltemperatur","it":"Imposta la temperatura target massima","ko":"최대 희망 온도 설정","pl":"Ustaw maksymalną temperaturę docelową","ru":"Установить максимальную заданную температуру","sv":"Ställ in den maximala måltemperaturen","es":"Ajustar la temperatura máxima deseada","fr":"Définir la température maximale cible","no":"Sett maksimum ønsket temperatur","ar":"ضبط الحد الأقصى لدرجة الحرارة المستهدفة","de":"Einstellen der maximalen Zieltemperatur"},"args":[{"name":"target_temperature_max","type":"range","min":4,"max":35,"step":0.5,"example":20}]}]},"minCompatibility":"12.2.0"}')},1269:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Water Purifier","da":"Vandrensningsanlæg","de":"Wasseraufbereiter","es":"Purificador de agua","fr":"Purificateur d\'eau","it":"Depuratore d\'acqua","ko":"정수기","nl":"Waterzuiveraar","no":"Vannrenser","pl":"Oczyszczacz wody","ru":"Очиститель воды","sv":"Vattenrenare","ar":"جهاز تنقية المياه"},"description":{"en":"Use this device class for water purifiers.","da":"Brug denne enhedsklasse til vandrensningsanlæg.","de":"Verwenden Sie diese Geräteklasse für Wasseraufbereiter.","es":"Utiliza esta clase de dispositivo para purificadores de agua.","fr":"Utilisez cette classe d\'appareils pour les purificateurs d\'eau.","it":"Utilizza questa classe di dispositivi per i depuratori d\'acqua.","ko":"이 디바이스 클래스는 정수기에 사용합니다.","nl":"Gebruik deze apparaatklasse voor waterzuiveraars.","no":"Bruk denne enhetsklassen for vannrensere.","pl":"Tej klasy urządzeń należy używać w przypadku oczyszczaczy wody.","ru":"Используйте этот класс устройств для очистителей воды.","sv":"Använd den här enhetsklassen för vattenrenare.","ar":"استخدم فئة الجهاز هذه لأجهزة تنقية المياه."},"minCompatibility":"12.0.0"}')},1275:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Water Alarm","nl":"Wateralarm","de":"Wasseralarm","fr":"Alarme d\'eau","it":"Allarme acqua","sv":"Vattenlarm","no":"Vannalarm","es":"Alarma de agua","da":"Vandalarm","ru":"Сигнал воды","pl":"Alarm zalania wodą","ko":"누수 감지","ar":"إنذار المياه"},"titleShort":{"en":"Water","nl":"Water","de":"Wasser","fr":"Eau","it":"Acqua","sv":"Vatten","no":"Vann","es":"Agua","da":"Vand","ru":"Вода","pl":"Woda","ko":"물","ar":"المياه"},"desc":{"en":"True when water has been detected","nl":"Gaat af als er water gedetecteerd wordt","de":"True, wenn Wasser erkannt wurde","fr":"Vrai si de l\'eau a été détectée","it":"Vero quando è stata rilevata dell\'acqua","sv":"Sant när vatten upptäcks","no":"Sant når vann har blitt påvist","es":"Activado cuando se detecta agua","da":"Sandt, når vand er blevet opdaget","ru":"Значение «истина» при обнаружении протечки воды","pl":"Adekwatny, kiedy wykryta zostanie woda","ko":"물이 감지되면 참","ar":"صحيح عند اكتشاف مياه"},"insights":true,"insightsTitleTrue":{"en":"Water alarm turned on","nl":"Water alarm ging af","de":"Wasser-Alarm ist angegangen","fr":"Alarme eau s\'est activée","it":"Allarme acqua attivato","sv":"Vattenalarm aktiverat","no":"Vannalarm aktivert","es":"Alarma de agua activada","da":"Vandalarm blev aktiveret","ru":"Сигнал протечки воды включен","pl":"Alarm zalania wodą włączony","ko":"누수 감지됨","ar":"تم تشغيل إنذار المياه"},"insightsTitleFalse":{"en":"Water alarm turned off","nl":"Water alarm ging uit","de":"Wasser-Alarm ist ausgegangen","fr":"Alarme eau s\'est désactivée","it":"Allarme acqua disattivato","sv":"Vattenalarm inaktiverat","no":"Vannalarm deaktivert","es":"Alarma de agua desactivada","da":"Vandalarm blev deaktiveret","ru":"Сигнал протечки воды выключен","pl":"Alarm zalania wodą wyłączony","ko":"누수 감지되지 않음","ar":"تم إيقاف إنذار المياه"},"color":"#0091FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_water_true","highlight":true,"title":{"en":"The water alarm turned on","nl":"Het wateralarm gaat aan","de":"Der Wasser-Alarm ist angegangen","fr":"L\'alarme eau s\'est activée","it":"L\'allarme acqua è stato attivato","sv":"Vattenalarmet aktiverat","no":"Vannalarmen ble aktivert","es":"La alarma de agua se ha activado","da":"Vandalarmen blev aktiveret","ru":"Сигнал аккумулятора включен","pl":"Alarm zalania wodą włączony","ko":"누수가 감지되면","ar":"تم تشغيل إنذار المياه"}},{"id":"alarm_water_false","title":{"en":"The water alarm turned off","nl":"Het wateralarm gaat uit","de":"Der Wasser-Alarm ist ausgegangen","fr":"L\'alarme eau s\'est désactivée","it":"L\'allarme acqua è stato disattivato","sv":"Vattenalarmet inaktiverat","no":"Vannalarmen ble deaktivert","es":"La alarma de agua se ha desactivado","da":"Vandalarmen blev deaktiveret","ru":"Сигнал аккумулятора выключен","pl":"Alarm zalania wodą wyłączony","ko":"누수가 감지되지 않으면","ar":"تم إيقاف إنذار المياه"}}],"conditions":[{"id":"alarm_water","title":{"en":"The water alarm is !{{on|off}}","nl":"Het wateralarm is !{{aan|uit}}","de":"Der Wasser-Alarm ist !{{an|aus}}","fr":"L\'alarme eau est !{{en marche|arrêtée}}","it":"L\'allarme acqua è !{{acceso|spento}}","sv":"Vattenalarmet är !{{på|av}}","no":"Vannalarmen er !{{på|av}}","es":"La alarma de agua está !{{activada|desactivada}}","da":"Vandalarmen er !{{tændt|slukket}}","ru":"Сигнал протечки воды !{{вкл.|выкл.}}","pl":"Alarm zalania wodą jest !{{włączony|wyłączony}}","ko":"누수가 감지!{{되면|되지 않으면}}","ar":"إنذار المياه !{{يعمل|لا يعمل}}"}}]}}')},1288:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Gust angle","nl":"Windstootrichting","de":"Böenrichtung","fr":"Direction d\'un coup de vent","it":"Angolo delle raffiche","sv":"Vindriktning","no":"Vindretning","es":"Dirección del aire","da":"Vindretning","ru":"Угол порывов ветра","pl":"Kąt porywu wiatru","ko":"돌풍 각도","ar":"زاوية العاصفة"},"units":{"en":"°","ko":"°","no":"°","ru":"°","ar":"°","da":"°","de":"°","es":"°","fr":"°","it":"°","nl":"°","pl":"°","sv":"°"},"insights":true,"desc":{"en":"Gust angle in degrees (°)","nl":"Windstoot richting in graden (°)","de":"Böenrichtung in Grad (°)","fr":"Direction du coup de vent en degrés (°)","it":"Angolo delle raffiche in gradi (°)","sv":"Vindriktning i grader (°)","no":"Vindretning i grader (°)","es":"Dirección del aire en grados (°)","da":"Vindretning i grader (°)","ru":"Угол порывов ветра в градусах (°)","pl":"Kąt porywu wiatru w stopniach (°)","ko":"돌풍 각도(°)","ar":"زاوية العاصفة بالدرجات (°)"},"chartType":"stepLine","decimals":2,"color":"#32C5FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_gust_angle_changed","title":{"en":"The gust angle changed","nl":"Windstootrichting is veranderd","de":"Die Böenrichtung hat sich geändert","fr":"Direction du coup de vent a changé","it":"L\'angolo delle raffiche è cambiato","sv":"Vindriktningen har ändrats","no":"Vindretningen er endret","es":"La dirección del aire ha cambiado","da":"Vindretningen skiftede","ru":"Угол порывов ветра изменился","pl":"Zmiana kąta porywu wiatru","ko":"돌풍 각도가 변경되면","ar":"تغيرت زاوية العاصفة"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":36}]}]}}')},1298:e=>{"use strict";e.exports=function(e,t,a){var r,i=" ",n=e.level,s=e.dataLevel,o=e.schema[t],l=e.schemaPath+e.util.getProperty(t),d=e.errSchemaPath+"/"+t,u=!e.opts.allErrors,m="data"+(s||""),p=e.opts.$data&&o&&o.$data;if(p?(i+=" var schema"+n+" = "+e.util.getData(o.$data,s,e.dataPathArr)+"; ",r="schema"+n):r=o,!p&&"number"!=typeof o)throw new Error(t+" must be number");i+="if ( ",p&&(i+=" ("+r+" !== undefined && typeof "+r+" != 'number') || "),i+=" Object.keys("+m+").length "+("maxProperties"==t?">":"<")+" "+r+") { ";var c=t,g=g||[];g.push(i),i="",!1!==e.createErrors?(i+=" { keyword: '"+(c||"_limitProperties")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(d)+" , params: { limit: "+r+" } ",!1!==e.opts.messages&&(i+=" , message: 'should NOT have ",i+="maxProperties"==t?"more":"fewer",i+=" than ",i+=p?"' + "+r+" + '":""+o,i+=" properties' "),e.opts.verbose&&(i+=" , schema: ",i+=p?"validate.schema"+l:""+o,i+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),i+=" } "):i+=" {} ";var h=i;return i=g.pop(),!e.compositeRule&&u?e.async?i+=" throw new ValidationError(["+h+"]); ":i+=" validate.errors = ["+h+"]; return false; ":i+=" var err = "+h+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",i+="} ",u&&(i+=" else { "),i}},1329:e=>{"use strict";e.exports=JSON.parse('["onoff","dim","light_hue","light_saturation","light_temperature","light_mode","vacuumcleaner_state","thermostat_mode","target_temperature","measure_temperature","measure_co","measure_co2","measure_pm25","measure_humidity","measure_pressure","measure_noise","measure_rain","measure_wind_strength","measure_wind_angle","measure_gust_strength","measure_gust_angle","measure_battery","measure_power","measure_voltage","measure_current","measure_luminance","measure_ultraviolet","measure_water","alarm_generic","alarm_motion","alarm_contact","alarm_co","alarm_co2","alarm_pm25","alarm_tamper","alarm_smoke","alarm_fire","alarm_heat","alarm_water","alarm_battery","alarm_night","meter_power","meter_water","meter_gas","meter_rain","homealarm_state","volume_set","volume_up","volume_down","volume_mute","channel_up","channel_down","locked","lock_mode","garagedoor_closed","windowcoverings_state","windowcoverings_tilt_up","windowcoverings_tilt_down","windowcoverings_tilt_set","windowcoverings_closed","windowcoverings_set","button","speaker_playing","speaker_next","speaker_prev","speaker_shuffle","speaker_repeat","speaker_artist","speaker_album","speaker_track","speaker_duration","speaker_position","alarm_bin_full","alarm_bin_missing","alarm_cleaning_pad_missing","alarm_cold","alarm_connectivity","alarm_door_fault","alarm_gas","alarm_light","alarm_lost","alarm_moisture","alarm_noise","alarm_occupancy","alarm_pm01","alarm_pm1","alarm_pm10","alarm_power","alarm_presence","alarm_problem","alarm_pump_device","alarm_pump_supply","alarm_running","alarm_safety","alarm_stuck","alarm_tank_empty","alarm_tank_missing","alarm_tank_open","alarm_vibration","audio_output","battery_charging_state","dishwasher_program","docked","fan_mode","fan_speed","heater_operation_mode","measure_hepa_filter","hot_water_mode","laundry_washer_cycles","laundry_washer_program","laundry_washer_speed","level_aqi","level_carbon_filter","level_ch2o","level_co","level_co2","level_nox","level_o3","level_pm1","level_pm01","level_pm10","level_pm25","level_radon","level_so2","level_tvoc","measure_aqi","measure_carbon_filter","measure_ch2o","measure_content_volume","measure_data_rate","measure_data_size","measure_distance","measure_frequency","level_hepa_filter","measure_moisture","measure_monetary","measure_nox","measure_o3","measure_odor","measure_ph","measure_pm1","measure_pm01","measure_pm10","measure_radon","measure_rain_intensity","measure_rotation","measure_signal_strength","measure_so2","measure_speed","measure_tvoc","measure_tvoc_index","measure_weight","media_input","mower_state","operational_state","oscillating","pump_mode","pump_setpoint","refrigerator_mode","speaker_stop","swing_mode","target_humidity_max","target_humidity_min","target_humidity","target_power","target_power_mode","target_temperature_level","target_temperature_max","target_temperature_min","vacuumcleaner_job_mode","valve_position","ev_charging_state","evcharger_charging_state","evcharger_charging","oven_mode","microwave_mode","laundry_dryer_dryness","alarm_freeze_risk","alarm_rain","alarm_open","cooking_time","power_level","power_boost","progress"]')},1330:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Heat Pump","da":"Varmepumpe","de":"Wärmepumpe","es":"Bomba de calor","fr":"Pompe à chaleur","it":"Pompa di calore","ko":"히트펌프","nl":"Warmtepomp","no":"Varmepumpe","pl":"Pompa ciepła","ru":"Тепловой насос","sv":"Värmepump","ar":"مضخة حرارية"},"description":{"en":"Use this device class for heat pumps.","da":"Brug denne enhedsklasse til varmepumper.","de":"Verwenden Sie diese Geräteklasse für Wärmepumpen.","es":"Utiliza esta clase de dispositivo para bombas de calor.","fr":"Utiliser cette classe d\'appareils pour les pompes à chaleur.","it":"Utilizza questa classe di dispositivi per le pompe di calore.","ko":"이 디바이스 클래스는 히트펌프에 사용합니다.","nl":"Gebruik deze apparaatklasse voor warmtepompen.","no":"Bruk denne enhetsklassen for varmepumper.","pl":"Tej klasy urządzeń należy używać w przypadku pomp ciepła.","ru":"Используйте этот класс устройств для тепловых насосов.","sv":"Använd den här enhetsklassen för värmepumpar.","ar":"استخدم فئة الجهاز هذه للمضخات الحرارية."},"minCompatibility":"12.0.0"}')},1366:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Lost Alarm","nl":"Waarschuwing bij zoekraking","da":"Forsvundet alarm","it":"Allarme oggetto smarrito","ko":"기기 분실 감지","no":"Mistet-alarm","pl":"Alarm zgubienia","ru":"Сигнал о потере","sv":"Förlorat larm","es":"Alarma de pérdida","fr":"Alarme de perte","ar":"إنذار الفقد","de":"Alarm für „Verloren“"},"titleShort":{"en":"Lost","nl":"Kwijt","da":"Forsvundet","it":"Smarrito","ko":"분실","no":"Mistet","pl":"Zgubienie","ru":"Потеря","sv":"Förlorat","es":"Pérdida","fr":"Perdu","ar":"مفقود","de":"Verloren"},"desc":{"en":"True when the device is lost.","nl":"Wordt geactiveerd wanneer het apparaat zoek is.","da":"Sandt, når enheden er forsvundet.","it":"Vero quando il dispositivo viene perso.","ko":"디바이스를 분실하면 참입니다.","no":"Sann når enheten er mistet.","pl":"Prawda, gdy urządzenie jest zgubione.","ru":"Значение «истина», когда устройство потеряно.","sv":"Sant när enheten förloras.","es":"Activado cuando se ha perdido el dispositivo.","fr":"Se déclenche lorsque l’appareil est perdu.","ar":"صحيح عند فقد الجهاز.","de":"Wahr, wenn das Gerät verloren gegangen ist."},"insights":true,"insightsTitleTrue":{"en":"Was lost","nl":"Was zoek","da":"Forsvandt","it":"È stato perso","ko":"기기 분실됨","no":"Ble mistet","pl":"Było zgubione","ru":"Было потеряно","sv":"Förlorades","es":"Estaba perdido","fr":"Était perdu","ar":"كان مفقودًا","de":"War verloren"},"insightsTitleFalse":{"en":"Was no longer lost","nl":"Was gevonden","da":"Var ikke længere forsvundet","it":"Non era più perso","ko":"기기 발견됨","no":"Var ikke lenger mistet","pl":"Nie było już zgubione","ru":"Больше не потеряно","sv":"Var inte längre förlorad","es":"Ya no estaba perdido","fr":"N\'était plus perdu","ar":"لم يعد مفقودًا","de":"War nicht mehr verloren"},"color":"#9033FC","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_lost_true","highlight":true,"title":{"en":"Is lost","nl":"Is zoek","da":"Er forsvundet","it":"È perso","ko":"기기가 분실되면","no":"Er mistet","pl":"Jest zgubione","ru":"Потеряно","sv":"Är förlorad","es":"Se ha perdido","fr":"Est perdu","ar":"مفقود","de":"Ist verloren"}},{"id":"alarm_lost_false","title":{"en":"Is no longer lost","nl":"Is gevonden","da":"Er ikke længere forsvundet","it":"Non è più perso","ko":"기기가 발견되면","no":"Er ikke lenger mistet","pl":"Nie jest już zgubione","ru":"Больше не потеряно","sv":"Är inte längre förlorad","es":"Ya no está perdido","fr":"N\'est plus perdu","ar":"لم يعد مفقودًا","de":"Ist nicht mehr verloren"}}],"conditions":[{"id":"alarm_lost","title":{"en":"Is !{{lost|not lost}}","nl":"Is !{{zoek|gevonden}}","da":"Er !{{forsvundet|ikke forsvundet}}","it":"È !{{perso|non perso}}","ko":"기기가 !{{분실되면|발견되면}}","no":"Er !{{mistet|ikke mistet}}","pl":"!{{jest zgubione|nie jest zgubione}} ","ru":"Устройство !{{потеряно|не потеряно}}","sv":"Är !{{förlorad|inte förlorad}}","es":"!{{Se ha perdido|Ya no esta perdido}}","fr":"Est !{{connectée|déconnectée}}","ar":"!{{مفقود|غير مفقود}}","de":"Ist !{{verloren|nicht verloren}}"}}]},"minCompatibility":"12.2.0"}')},1374:e=>{"use strict";e.exports=function(e,t,a){var r=" ",i=e.level,n=e.dataLevel,s=e.schema[t],o=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+"/"+t,d=!e.opts.allErrors,u="data"+(n||""),m="errs__"+i,p=e.util.copy(e),c="";p.level++;var g="valid"+p.level,h="key"+i,v="idx"+i,f=p.dataLevel=e.dataLevel+1,k="data"+f,y="dataProperties"+i,b=Object.keys(s||{}).filter(D),w=e.schema.patternProperties||{},z=Object.keys(w).filter(D),P=e.schema.additionalProperties,_=b.length||z.length,S=!1===P,A="object"==typeof P&&Object.keys(P).length,E=e.opts.removeAdditional,j=S||A||E,C=e.opts.ownProperties,O=e.baseId,L=e.schema.required;if(L&&(!e.opts.$data||!L.$data)&&L.length8)r+=" || validate.schema"+o+".hasOwnProperty("+h+") ";else{var M=b;if(M)for(var x=-1,$=M.length-1;x<$;)J=M[x+=1],r+=" || "+h+" == "+e.util.toQuotedString(J)+" "}if(z.length){var F=z;if(F)for(var I=-1,N=F.length-1;I0:e.util.schemaHasRules(Y,e.RULES.all)){var X=e.util.getProperty(J),ee=(q=u+X,W&&void 0!==Y.default);if(p.schema=Y,p.schemaPath=o+X,p.errSchemaPath=l+"/"+e.util.escapeFragment(J),p.errorPath=e.util.getPath(e.errorPath,J,e.opts.jsonPointers),p.dataPathArr[f]=e.util.toQuotedString(J),G=e.validate(p),p.baseId=O,e.util.varOccurences(G,k)<2){G=e.util.varReplace(G,k,q);var te=q}else te=k,r+=" var "+k+" = "+q+"; ";if(ee)r+=" "+G+" ";else{if(T&&T[J]){r+=" if ( "+te+" === undefined ",C&&(r+=" || ! Object.prototype.hasOwnProperty.call("+u+", '"+e.util.escapeQuotes(J)+"') "),r+=") { "+g+" = false; ",B=e.errorPath,V=l;var ae,re=e.util.escapeQuotes(J);e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPath(B,J,e.opts.jsonPointers)),l=e.errSchemaPath+"/required",(ae=ae||[]).push(r),r="",!1!==e.createErrors?(r+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { missingProperty: '"+re+"' } ",!1!==e.opts.messages&&(r+=" , message: '",e.opts._errorDataPathProperty?r+="is a required property":r+="should have required property \\'"+re+"\\'",r+="' "),e.opts.verbose&&(r+=" , schema: validate.schema"+o+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),r+=" } "):r+=" {} ",R=r,r=ae.pop(),!e.compositeRule&&d?e.async?r+=" throw new ValidationError(["+R+"]); ":r+=" validate.errors = ["+R+"]; return false; ":r+=" var err = "+R+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l=V,e.errorPath=B,r+=" } else { "}else d?(r+=" if ( "+te+" === undefined ",C&&(r+=" || ! Object.prototype.hasOwnProperty.call("+u+", '"+e.util.escapeQuotes(J)+"') "),r+=") { "+g+" = true; } else { "):(r+=" if ("+te+" !== undefined ",C&&(r+=" && Object.prototype.hasOwnProperty.call("+u+", '"+e.util.escapeQuotes(J)+"') "),r+=" ) { ");r+=" "+G+" } "}}d&&(r+=" if ("+g+") { ",c+="}")}}if(z.length){var ie=z;if(ie)for(var ne,se=-1,oe=ie.length-1;se0:e.util.schemaHasRules(Y,e.RULES.all))&&(p.schema=Y,p.schemaPath=e.schemaPath+".patternProperties"+e.util.getProperty(ne),p.errSchemaPath=e.errSchemaPath+"/patternProperties/"+e.util.escapeFragment(ne),r+=C?" "+y+" = "+y+" || Object.keys("+u+"); for (var "+v+"=0; "+v+"<"+y+".length; "+v+"++) { var "+h+" = "+y+"["+v+"]; ":" for (var "+h+" in "+u+") { ",r+=" if ("+e.usePattern(ne)+".test("+h+")) { ",p.errorPath=e.util.getPathExpr(e.errorPath,h,e.opts.jsonPointers),q=u+"["+h+"]",p.dataPathArr[f]=h,G=e.validate(p),p.baseId=O,e.util.varOccurences(G,k)<2?r+=" "+e.util.varReplace(G,k,q)+" ":r+=" var "+k+" = "+q+"; "+G+" ",d&&(r+=" if (!"+g+") break; "),r+=" } ",d&&(r+=" else "+g+" = true; "),r+=" } ",d&&(r+=" if ("+g+") { ",c+="}"))}return d&&(r+=" "+c+" if ("+m+" == errors) {"),r}},1417:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"PM0.1 level","nl":"PM0.1-niveau","da":"PM0.1-niveau","it":"Livello PM0.1","ko":"나노미세먼지(PM0.1) 수준","pl":"Poziom PM0.1","ru":"Уровень ТЧ0.1","sv":"PM0.1-nivå","es":"Nivel de PM0,1","fr":"Niveau de PM0.1","no":"PM0.1-nivå","ar":"مستوى PM0.1","de":"PM0.1-Wert"},"desc":{"en":"The level of PM0.1 particles in the air.","nl":"De mate van PM0.1-deeltjes in de lucht.","da":"Niveauet af PM0.1-partikler i luften.","it":"Il livello di particelle PM0.1 nell\'aria.","ko":"공기 중 PM0.1 입자의 수준입니다.","pl":"Poziom cząstek PM0.1 w powietrzu.","ru":"Уровень содержания частиц ТЧ0.1 в воздухе.","sv":"Halten av PM0.1-partiklar i luften.","es":"El nivel de partículas PM0,1 en el aire.","fr":"Le niveau de particules PM0.1 dans l\'air.","no":"Nivået av PM0.1-partikler i luften.","ar":"مستوى جزيئات PM0.1 في الهواء.","de":"Der Gehalt an PM0.1-Partikeln in der Luft."},"values":[{"id":"low","title":{"en":"Low","nl":"Laag","da":"Lavt","it":"Basso","ko":"좋음","pl":"Niski","ru":"Низкий","sv":"Låg","es":"Bajo","fr":"Faible","no":"Lavt","ar":"منخفض","de":"Niedrig"}},{"id":"medium","title":{"en":"Medium","nl":"Gemiddeld","da":"Medium","it":"Medio","ko":"보통","pl":"Średni","ru":"Средний","sv":"Medium","es":"Intermedio","fr":"Moyen","no":"Middels","ar":"متوسط","de":"Mittel"}},{"id":"high","title":{"en":"High","nl":"Hoog","da":"Højt","it":"Alto","ko":"나쁨","pl":"Wysoki","ru":"Высокий","sv":"Hög","es":"Alto","fr":"Élevé","no":"Høyt","ar":"عالي","de":"Hoch"}},{"id":"critical","title":{"en":"Critical","nl":"Kritiek","da":"Kritisk","it":"Critico","ko":"매우 나쁨","pl":"Krytyczny","ru":"Критический","sv":"Kritisk","es":"Crítico","fr":"Critique","no":"Kritisk","ar":"حرج","de":"Kritisch"}}],"color":"#E02020","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"level_pm01_changed","highlight":true,"title":{"en":"The PM0.1 level changed to","nl":"Het PM0.1-niveau is veranderd naar","da":"PM0.1-niveauet blev ændret til","it":"Il livello PM0.1 è passato a","ko":"나노미세먼지(PM0.1) 수준이 다음으로 변경되면","pl":"Poziom PM0.1 zmienił się na","ru":"Уровень ТЧ0.1 изменился на","sv":"PM0.1-nivån ändrades till","es":"El nivel de PM0,1 ha cambiado a","fr":"Le niveau de PM0.1 est passé à","no":"PM0.1-nivået ble endret til","ar":"تغير مستوى PM0.1 إلى","de":"Der PM0.1-Wert hat sich geändert auf"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"level_pm01_is","title":{"en":"The PM0.1 level !{{is|is not}}","nl":"Het PM0.1-niveau !{{is|is niet}}","da":"PM0.1-niveauet !{{er|er ikke}}","it":"Il livello PM0.1 !{{è|non è}}","ko":"나노미세먼지(PM0.1) 수준이 다음!{{이면|이 아니면}}","pl":"Poziom PM0.1 !{{jest|nie jest}}","ru":"Уровень ТЧ0.1 !{{|не}}","sv":"PM0.1-nivån !{{är|är inte}}","es":"El nivel de PM0,1 !{{es|no es}}","fr":"Le niveau PM0.1 !{{est|n\'est pas}}","no":"PM0.1-nivået !{{er|er ikke}}","ar":"مستوى PM0.1 !{{هو|ليس}}","de":"Der PM0.1-Wert !{{ist|ist nicht}}"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.2.0"}')},1419:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Thermostat mode","nl":"Thermostaatmodus","de":"Thermostat-Modus","fr":"Mode du thermostat","it":"Modalità termostato","sv":"Termostatläge","no":"Termostatmodus","es":"Modo del termostato","da":"Termostattilstand","ru":"Режим термостата","pl":"Tryb termostatu","ko":"온도조절기 모드","ar":"وضع الثرموستات"},"desc":{"en":"Mode of the thermostat","nl":"Modus van de thermostaat","de":"Modus des Thermostates","fr":"Mode du thermostat","it":"Modalità del termostato","sv":"Läge för termostaten","no":"Modus for termostaten","es":"Modo del termostato","da":"Tilstand for termostat","ru":"Режим термостата","pl":"Tryb termostatu","ko":"온도조절기의 모드","ar":"وضع الثرموستات"},"values":[{"id":"auto","title":{"en":"Automatic","nl":"Automatisch","de":"Automatisch","fr":"Automatique","it":"Automatica","sv":"Automatiskt","no":"Automatisk","es":"Automático","da":"Automatisk","ru":"Автоматически","pl":"Automatyczny","ko":"자동","ar":"تلقائي"}},{"id":"heat","title":{"en":"Heat","nl":"Verhitten","de":"Heizen","fr":"Chauffer","it":"Calore","sv":"Värme","no":"Varme","es":"Calentar","da":"Opvarm","ru":"Обогрев","pl":"Ogrzewanie","ko":"난방","ar":"تسخين"}},{"id":"cool","title":{"en":"Cool","nl":"Koelen","de":"Kühlen","fr":"Refroidir","it":"Raffreddamento","sv":"Kyla","no":"Avkjøle","es":"Enfriar","da":"Køl ned","ru":"Охлаждение","pl":"Chłodzenie","ko":"냉방","ar":"تبريد"}},{"id":"off","title":{"en":"Off","nl":"Uit","de":"Aus","fr":"Désactivé","it":"Disattivata","sv":"Av","no":"Av","es":"Desactivado","da":"Deaktiveret","ru":"Выкл","pl":"Wył","ko":"꺼짐","ar":"إيقاف التشغيل"}}],"color":"#FA6400","getable":true,"setable":true,"uiComponent":"picker","$flow":{"triggers":[{"id":"thermostat_mode_changed","title":{"en":"The thermostat mode changed to","nl":"De thermostaatmodus is veranderd naar","de":"Der Thermostat-Modus wurde geändert auf","fr":"Le mode du thermostat est passé à","it":"La modalità del termostato è passata a","sv":"Termostatläget ändrades till","no":"Termostatmodusen ble endret til","es":"El modo del termostato ha cambiado a","da":"Termostattilstanden er ændret til","ru":"Режим термостата изменен на","pl":"Tryb termostatu zmienił się na","ko":"온도조절기 모드가 다음으로 변경되면","ar":"تم تغيير وضع الثرموستات إلى"},"args":[{"name":"thermostat_mode","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"thermostat_mode_is","title":{"en":"The thermostat mode !{{is|is not}}","nl":"De thermostaatmodus !{{is|is niet}}","de":"Der Thermostat-Modus !{{ist|ist nicht}}","fr":"Le mode du thermostat !{{est|n\'est pas}}","it":"La modalità del termostato !{{è|non è}}","sv":"Termostatläget !{{är|är inte}}","no":"Termostatmodusen !{{er|er ikke}}","es":"El modo del termostato !{{está|no está}}","da":"Termostattilstanden !{{er|er ikke}}","ru":"Режим термостата !{{|не}}","pl":"Tryb termostatu !{{jest|nie jest}}","ko":"온도조절기 모드가 다음!{{이면|이 아니면}}","ar":"وضع الثرموستات !{{هو|ليس}}"},"args":[{"name":"thermostat_mode","type":"dropdown","values":"$values"}]}],"actions":[{"id":"thermostat_mode_set","title":{"en":"Set the thermostat mode to","nl":"Stel de thermostaatmodus in op","de":"Stelle den Thermostat-Modus auf","fr":"Définir le mode du thermostat sur","it":"Imposta la modalità del termostato su","sv":"Ställ in termostatläget på","no":"Sett termostatmodusen til","es":"Ajustar el modo del termostato en","da":"Indstil termostattilstanden til","ru":"Установить режим термостата на","pl":"Ustaw tryb termostatu na","ko":"온도조절기 모드를 다음으로 설정","ar":"ضبط وضع الثرموستات على"},"args":[{"name":"thermostat_mode","type":"dropdown","values":"$values"}]}]}}')},1482:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Water flow","nl":"Waterdoorstroming","de":"Wasserfluss","fr":"Débit d\'eau","it":"Flusso d\'acqua","sv":"Vattenflöde","no":"Vannstrøm","es":"Caudal del agua","da":"Vandstrøm","ru":"Поток воды","pl":"Poziom przepływu wody","ko":"유량","ar":"تدفق المياه"},"units":{"en":"L/min","ru":"Л/мин","ko":"L/min","no":"L/min","ar":"لتر/دقيقة","da":"L/min","de":"L/min","es":"L/min","fr":"L/min","it":"L/min","nl":"L/min","pl":"L/min","sv":"L/min"},"desc":{"en":"Water flow in liters per minute (L/min)","nl":"Waterdoorstroming in liters per minuut (L/min)","de":"Wasserfluss in Liter pro Minute (L/min)","fr":"Débit d\'eau en litres par minute (L/min)","it":"Flusso d\'acqua in litri al minuto (L/min)","sv":"Vattenflöde i liter per minut (L/min)","no":"Vannstrøm i liter per minutt (L/min)","es":"Caudal del agua en litros por minuto (L/min)","da":"Vandstrøm i liter per minut (L/min)","ru":"Поток воды в литрах в минуту (л/мин)","pl":"Poziom przepływu wody w litrach na minutę (L/min)","ko":"수량 분당 리터(L/min)","ar":"تدفق المياه باللتر في الدقيقة (L/min)"},"insights":true,"chartType":"stepLine","decimals":2,"color":"#0091FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_water_changed","title":{"en":"The waterflow changed","nl":"De waterstroom is veranderd","de":"Der Wasserfluss hat sich geändert","fr":"Le débit d\'eau a changé","it":"Il flusso d\'acqua è cambiato","sv":"Vattenflödet ändrades","no":"Vannstrømmen ble endret","es":"El caudal del agua ha cambiado","da":"Vandstrømmen har ændret sig","ru":"Поток воды изменился","pl":"Zmienił się przepływ wody","ko":"유량이 변경되면","ar":"تغير تدفق المياه"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":2}]}]}}')},1491:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Volume up","nl":"Volume omhoog","de":"Lautstärke hoch","fr":"Augmenter le volume","it":"Volume alzato","sv":"Volym upp","no":"Volum opp","es":"Subir volumen","da":"Op for lyden","ru":"Звук громче","pl":"Zwiększ głośność","ko":"볼륨 크게","ar":"رفع مستوى الصوت"},"type":"boolean","color":"#9033FC","getable":false,"setable":true,"uiComponent":"button","$flow":{"actions":[{"id":"volume_up","highlight":true,"title":{"en":"Turn the volume up","nl":"Zet het geluid harder","de":"Dreh die Lautstärke hoch","fr":"Augmenter le son","it":"Alza il volume","sv":"Vrid upp volymen","no":"Skru opp volumet","es":"Subir el volumen","da":"Skru op for lyden","ru":"Сделать звук громче","pl":"Zwiększ poziom głośności","ko":"볼륨 높이기","ar":"رفع مستوى الصوت"}}]}}')},1493:(e,t,a)=>{"use strict";var r=a(8287).hp;const{URLSearchParams:i}=a(538),n=a(5098),s=a(8019),o=a(5345),l=a(7021),d=a(6192),u=a(3532),m=a(6346),p=a(2130),c=a(8470),{openAsync:g,closeAsync:h,readAsync:v,statAsync:f,readFileAsync:k,readDirAsync:y,lstatAsync:b,imageSizeAsync:w,join:z,extname:P,basename:_,dirname:S,toArray:A}=a(5399),E=["debug","publish","verified"],j={".jpg":r.from([255,216]),".jpeg":r.from([255,216]),".png":r.from([137,80,78,71])},C={app:{small:{width:250,height:175},large:{width:500,height:350},xlarge:{width:1e3,height:700}},driver:{small:{width:75,height:75},large:{width:500,height:500},xlarge:{width:1e3,height:1e3}}},O=["measure_battery","alarm_battery"],L=new Set(["homey:","zw_","zb_","mtr_","thread_","zone_","energy_","satellite_mode_","homekit_"]);class T{static REQUIRED_PYTHON_PLATFORMS=["arm64","amd64"];static SUPPORTED_PYTHON_VERSIONS=["3.13","3.14"];constructor(e){if(this._path=e,"string"!=typeof this._path)throw new Error("Invalid path")}debug(...e){this._debug&&console.log("[dbg]",...e)}async validate({level:e="debug",debug:t=!1}={}){if(this._debug=t,this.debug(`Validating "${this._path}"`),!E.includes(e))throw new Error(`Invalid validation level. Allowed levels are: ${E}`);const a="publish"===e||"verified"===e,r="verified"===e,i=await k(z(this._path,"app.json")),l=JSON.parse(i),g=T.getJSONSchema(),h=new s({async:!0,allErrors:!0}).compile(g);if(!1===await h(l))throw new Error(this.constructor.errorsText(h.errors,l)||"Invalid app.json");if(!T.isValidId(l.id))throw new Error("Invalid id");if(!o.valid(l.version))throw new Error("Invalid version");if(o.coerce(l.version).toString()!==l.version)throw new Error(`Invalid version (${l.version}), pre-release versions are not allowed`);if(!o.validRange(l.compatibility))throw new Error("Invalid compatibility");const v=o.minVersion(l.compatibility);if(!0===l.esm&&o.lt(o.coerce(l.compatibility),"12.0.1"))throw new Error("ESM apps require a compatibility of at least >=12.0.1");const y=async e=>{await n.promises.access(e).then((()=>{if(o.lt(o.coerce(l.compatibility),"12.0.1"))throw new Error(`ESM apps require a compatibility of at least >=12.0.1. (${e})`)})).catch((e=>{if("ENOENT"!==e.code)throw e}))},b=z(this._path,"app.mjs"),w=z(this._path,"app.cjs"),S=z(this._path,"api.mjs"),j=z(this._path,"api.cjs");if(await y(b),await y(w),await y(S),await y(j),Array.isArray(l.drivers))for(const e of l.drivers){const t=z(this._path,"drivers",e.id,"driver.mjs"),a=z(this._path,"drivers",e.id,"driver.cjs"),r=z(this._path,"drivers",e.id,"device.mjs"),i=z(this._path,"drivers",e.id,"device.cjs");await y(t),await y(a),await y(r),await y(i)}if(null!=l.widgets){if(o.lt(o.coerce(l.compatibility),"12.1.0"))throw new Error(`App widgets require a compatibility of at least >=12.1.0. (${this._path})`);for(const e of Object.values(l.widgets)){if(void 0!==e.transparent&&o.lt(o.coerce(l.compatibility),"12.1.0"))throw new Error(`App widgets transparent property requires a compatibility of at least >=12.1.0. (${this._path})`);if(void 0!==e.deprecated&&o.lt(o.coerce(l.compatibility),"12.3.0"))throw new Error(`App widgets deprecated property requires a compatibility of at least >=12.3.0. (${this._path})`);if(void 0!==e.devices&&o.lt(o.coerce(l.compatibility),"12.3.0"))throw new Error(`App widgets devices property requires a compatibility of at least >=12.3.0. (${this._path})`);const t=z(this._path,"widgets",e.id,"api.mjs"),a=z(this._path,"widgets",e.id,"api.cjs");await y(t),await y(a)}}if(3===l.sdk&&!o.gt(v,"4.2.0"))throw new Error(`Invalid compatibility (${l.compatibility}), SDK version 3 apps must have a compatibility of at least >=5.0.0`);if("python"===l.runtime&&!o.gte(v,"13.0.0"))throw new Error(`Invalid compatibility (${l.compatibility}), Python apps must have a compatibility of at least >=13.0.0`);if("python"===l.runtime&&3!==l.sdk)throw new Error(`Invalid sdk (${l.sdk}), Python apps must use sdk version 3`);if(l.capabilities)for(const[e,t]of Object.entries(l.capabilities))if(void 0!==t.titleShort&&o.lt(v,"13.2.1"))throw new Error(`capabilities.${e}.titleShort requires a compatibility of at least >=13.2.1`);if(T.validatePythonVersion(l),a&&"python"===l.runtime&&void 0!==l.pythonPackages&&l.pythonPackages.length>0){const e=[];for(const t of T.REQUIRED_PYTHON_PLATFORMS){const a=z(this._path,"python_packages",t);await n.promises.access(a).catch((()=>{e.push(t)}))}if(e.length>0)throw new Error(`Cross-platform venvs are required for Python apps with dependencies. Missing ${e.join(", ")}`)}if((l.platforms||[]).includes("cloud")&&(l.platformLocalRequiredFeatures||[]).length>0)throw new Error("The property `platformLocalRequiredFeatures` can not be used in combination with platform: `cloud`.");if(!1===(l.platforms||[]).includes("local")&&(l.platformLocalRequiredFeatures||[]).length>0&&console.warn("Warning: using `platformLocalRequiredFeatures` requires `platforms: [local]`."),!1===(l.platforms||[]).includes("local")&&(l.platformLocalOptionalFeatures||[]).length>0&&console.warn("Warning: using `platformLocalOptionalFeatures` requires `platforms: [local]`."),r){if(void 0===l.platforms)throw new Error("The property `platforms` is required in order to publish a verified app.");if(void 0===l.support)throw new Error("The property `support` is required in order to publish a verified app.")}if(Array.isArray(l.permissions)){const e=T.getPermissions();l.permissions.forEach((t=>{if("homey:app:com.athom.homeyscript"===t)throw new Error(`Forbidden permission: ${t}`);if("homey:manager:api"===t&&a&&console.warn("Warning: using the homey:manager:api permission will require a more thorough review. It may take longer than usual to review your app."),"homey:manager:speech-input"===t){if(r)throw new Error(`Unsupported permission: ${t}, please remove any speech input related functionality.`);console.warn("Warning: the homey:manager:speech-input permission is not supported, please remove any speech input related functionality.")}if(!t.startsWith("homey:app:")&&void 0===e[t])throw new Error(`Invalid permission: ${t}`)}))}if(l.category){const e=T.getCategories();let t=[];t=Array.isArray(l.category)?l.category:[l.category],t.forEach((t=>{if(!e.includes(t))throw new Error(`Invalid category: ${t}`)}))}else if(a)throw new Error("The property `category` is required in order to publish an app.");if(Array.isArray(l.drivers)){const e=d.getClasses(),t=d.getCapabilities();for(let i=0;i{const r=e.split(".")[0],i=void 0!==t[r],s=void 0!==l.capabilities&&void 0!==l.capabilities[r];if(!i&&!s)throw new Error(`drivers.${n.id} invalid capability: ${e}`);if(i&&!s&&t[r].minCompatibility&&o.lt(v,t[r].minCompatibility))throw new Error(`drivers.${n.id} capability: ${r} is not available for compatibility ${l.compatibility}, requires minimum: ${t[r].minCompatibility}`);if(O.includes(r)&&(!n.energy||!Array.isArray(n.energy.batteries)&&!n.energy.homeBattery&&!n.energy.electricCar)&&a)throw new Error(`drivers.${n.id} is missing an array 'energy.batteries' because the capability ${r} is being used.`)})),n.capabilitiesOptions)for(const[e,t]of Object.entries(n.capabilitiesOptions)){if(null===t||"object"!=typeof t||Array.isArray(t))throw new Error(`drivers.${n.id}.capabilitiesOptions.${e} must be an object`);if(void 0!==t.titleShort&&o.lt(v,"13.2.1"))throw new Error(`drivers.${n.id}.capabilitiesOptions.${e}.titleShort requires a compatibility of at least >=13.2.1`);if(u.isInstanceOfId(e,"target_power_mode")&&Array.isArray(t.values)){if(!t.values.some((e=>e&&"object"==typeof e&&"homey"===e.id)))throw new Error(`drivers.${n.id}.capabilitiesOptions.${e}.values must include "homey" value`);if(0===t.values.filter((e=>e&&"object"==typeof e&&"string"==typeof e.id&&"homey"!==e.id)).length)throw new Error(`drivers.${n.id}.capabilitiesOptions.${e}.values must include at least one non-homey value`);const a=["homey_"];for(const r of t.values)if(r&&"object"==typeof r&&"string"==typeof r.id&&a.some((e=>r.id.startsWith(e))))throw new Error(`drivers.${n.id}.capabilitiesOptions.${e}.values custom values cannot use reserved prefix "homey_": ${r.id}`)}if(u.isInstanceOfId(e,"target_power")&&("number"==typeof t.excludeMin||"number"==typeof t.excludeMax)){const a="number"==typeof t.excludeMin?t.excludeMin:0,r="number"==typeof t.excludeMax?t.excludeMax:0;if(a>0||r<0)throw new Error(`drivers.${n.id}.capabilitiesOptions.${e}.excludeMin/excludeMax must include 0 (excludeMin <= 0 <= excludeMax)`)}if(u.isInstanceOfId(e,"target_power")){const a="number"==typeof t.min?t.min:0,r="number"==typeof t.max?t.max:0;if(a>0||r<0)throw new Error(`drivers.${n.id}.capabilitiesOptions.${e}.min/max must include 0 (min <= 0 <= max) to allow idle state`)}}if(Array.isArray(n.pair))for(let e=0;et.id===e));if(!t)throw new Error(`drivers.${n.id} invalid navigation.prev: ${e}`)}const a=t.navigation.next;if(a){const e=n.pair.find((e=>e.id===a));if(!e)throw new Error(`drivers.${n.id} invalid navigation.next: ${a}`)}}void 0===t.template&&await this._ensureFileExistsCaseSensitive(z("drivers",n.id,"pair",`${t.id}.html`))}if(Array.isArray(n.settings))for(const e of n.settings)this._checkPrivateSettingPrefixUse(e,n);const s=new Set;if(n.zwave&&Array.isArray(n.settings))for(let e=0;e{if(!e.includes(t))throw new Error(`drivers.${n.id} invalid 'battery': ${t}. Allowed values: ${e.join(", ")}`)}))}const e=n.capabilities.some((e=>u.isInstanceOfId(e,"meter_power")));if(!0===n.energy.cumulative&&e&&("string"!=typeof n.energy.cumulativeImportedCapability&&console.warn(`Warning: drivers.${n.id} has energy.cumulative set to true, but is missing 'cumulativeImportedCapability'.`),"string"!=typeof n.energy.cumulativeExportedCapability&&console.warn(`Warning: drivers.${n.id} has energy.cumulative set to true, but is missing 'cumulativeExportedCapability'.`)),!0===n.energy.homeBattery&&e&&("string"!=typeof n.energy.meterPowerImportedCapability&&console.warn(`Warning: drivers.${n.id} has energy.homeBattery set to true, but is missing 'meterPowerImportedCapability'.`),"string"!=typeof n.energy.meterPowerExportedCapability&&console.warn(`Warning: drivers.${n.id} has energy.homeBattery set to true, but is missing 'meterPowerExportedCapability'.`)),!0===n.energy.evCharger&&e&&"string"!=typeof n.energy.meterPowerImportedCapability&&console.warn(`Warning: drivers.${n.id} has energy.evCharger set to true, but is missing 'meterPowerImportedCapability'.`),"string"==typeof n.energy.cumulativeImportedCapability&&!1===u.isInstanceOfId(n.energy.cumulativeImportedCapability,"meter_power"))throw new Error(`drivers.${n.id} has 'cumulativeImportedCapability': '${n.energy.cumulativeImportedCapability}' but only instances of 'meter_power' are allowed.`);if("string"==typeof n.energy.cumulativeExportedCapability&&!1===u.isInstanceOfId(n.energy.cumulativeExportedCapability,"meter_power"))throw new Error(`drivers.${n.id} has 'cumulativeExportedCapability': '${n.energy.cumulativeExportedCapability}' but only instances of 'meter_power' are allowed.`);if("string"==typeof n.energy.meterPowerImportedCapability&&!1===u.isInstanceOfId(n.energy.meterPowerImportedCapability,"meter_power"))throw new Error(`drivers.${n.id} has 'meterPowerImportedCapability': '${n.energy.meterPowerImportedCapability}' but only instances of 'meter_power' are allowed.`);if("string"==typeof n.energy.meterPowerExportedCapability&&!1===u.isInstanceOfId(n.energy.meterPowerExportedCapability,"meter_power"))throw new Error(`drivers.${n.id} has 'meterPowerExportedCapability': '${n.energy.meterPowerExportedCapability}' but only instances of 'meter_power' are allowed.`)}if(n.connectivity&&n.connectivity.includes("matter")){if(!n.matter)throw new Error(`drivers.${n.id} has 'connectivity': 'matter' and therefore requires a 'matter' object.`);if(n.pair)throw new Error(`drivers.${n.id} invalid 'pair' configuration, Matter drivers do not support custom pairing views.`);if(void 0===n.matter.deviceVendorId&&void 0!==n.matter.deviceProductName||void 0!==n.matter.deviceVendorId&&void 0===n.matter.deviceProductName)throw new Error(`drivers.${n.id} invalid 'matter': 'deviceVendorId' and 'deviceProductName' must be defined together.`);const e=await this._fileExistsCaseSensitive(z("drivers",n.id,"device.js")),t=await this._fileExistsCaseSensitive(z("drivers",n.id,"device.mjs"));if(e||t)throw new Error(`drivers.${n.id}: using a device.${e?"js":"mjs"} file is not supported for Matter drivers.`);const a=await this._fileExistsCaseSensitive(z("drivers",n.id,"driver.js")),r=await this._fileExistsCaseSensitive(z("drivers",n.id,"driver.mjs"));if(a||r)throw new Error(`drivers.${n.id}: using a driver.${a?"js":"mjs"} file is not supported for Matter drivers.`)}if(n.matter&&(!n.connectivity||!n.connectivity.includes("matter")))throw new Error(`drivers.${n.id} Matter drivers require 'connectivity' to include 'matter'.`);if(n.firmwareUpdates&&Array.isArray(n.firmwareUpdates.updates)){const e="object"==typeof n.zigbee&&null!==n.zigbee,t="object"==typeof n.zwave&&null!==n.zwave;if(!e&&!t)throw new Error(`drivers.${n.id} firmwareUpdates are only supported for Zigbee and Zwave drivers (missing driver.zigbee or driver.zwave)`);for(const[a,r]of Object.entries(n.firmwareUpdates.updates)){const i="string"==typeof r.changelog,s=r.changelog&&"string"==typeof r.changelog.en;if(!i&&!s)throw new Error(`drivers.${n.id}.firmwareUpdates.updates[${a}] is missing a changelog string`);if(!Array.isArray(r.files)||0===r.files.length)throw new Error(`drivers.${n.id}.firmwareUpdates.updates[${a}].files must include at least one file`);if(e){const e=A(n.zigbee.manufacturerName),t=A(n.zigbee.productId),i=A(r.device.manufacturerName),s=A(r.device.productId);if(0===i.length||0===s.length)throw new Error(`drivers.${n.id}.firmwareUpdates.updates[${a}] must include at least one manufacturerName and productId`);const o=i.some((t=>!e.includes(t))),l=s.some((e=>!t.includes(e)));if(o)throw new Error(`drivers.${n.id}.firmwareUpdates.updates[${a}] has a manufacturerName that does not match the driver zigbee.manufacturerName`);if(l)throw new Error(`drivers.${n.id}.firmwareUpdates.updates[${a}] has a productId that does not match the driver zigbee.productId`)}if(t){if(!o.valid(r.version))throw new Error(`drivers.${n.id}.firmwareUpdates.updates[${a}].version is not a valid semver version`);if(void 0!==r.applicableTo&&!o.validRange(r.applicableTo))throw new Error(`drivers.${n.id}.firmwareUpdates.updates[${a}].applicableTo is not a valid semver range`);const e=A(n.zwave.manufacturerId),t=A(n.zwave.productTypeId),i=A(n.zwave.productId),s=A(r.device.manufacturerId),l=A(r.device.productTypeId),d=A(r.device.productId);if(0===s.length||0===l.length||0===d.length)throw new Error(`drivers.${n.id}.firmwareUpdates.updates[${a}] must include at least one manufacturerId, productTypeId and productId`);const u=s.some((t=>!e.includes(t))),m=l.some((e=>!t.includes(e))),p=d.some((e=>!i.includes(e)));if(u)throw new Error(`drivers.${n.id}.firmwareUpdates.updates[${a}] has a manufacturerId that does not match the driver zwave.manufacturerId`);if(m)throw new Error(`drivers.${n.id}.firmwareUpdates.updates[${a}] has a productTypeId that does not match the driver zwave.productTypeId`);if(p)throw new Error(`drivers.${n.id}.firmwareUpdates.updates[${a}] has a productId that does not match the driver zwave.productId`)}const l=new Set;for(const[i,s]of Object.entries(r.files)){if(_(s.name)!==s.name)throw new Error(`drivers.${n.id}.firmwareUpdates.updates[${a}].files[${i}] cannot include (sub)directories in the file name`);const r=c.getOTAFilePath({driverId:n.id,fileName:s.name});await this._ensureFileExistsCaseSensitive(r);const o=z(this._path,r);if(!await c.validateIntegrity(o,s.integrity))throw new Error(`drivers.${n.id}.firmwareUpdates.updates[${a}].files[${i}] integrity mismatch`);if(e)try{await c.validateZigbeeOTAHeader({filePath:o,manufacturerCode:s.manufacturerCode,fileVersion:s.fileVersion,imageType:s.imageType})}catch(e){throw new Error(`drivers.${n.id}.firmwareUpdates.updates[${a}].files[${i}] invalid Zigbee OTA header: ${e.message}`)}if(t){const{size:e}=await f(o);if(e!==s.size)throw new Error(`drivers.${n.id}.firmwareUpdates.updates[${a}].files[${i}] size mismatch: expected ${s.size}, got ${e}`)}let d=null;if(c.isZigbeeFirmwareUpdateFile(s))d=`${s.manufacturerCode}-${s.imageType}-${s.fileVersion}`;else{if(!c.isZwaveFirmwareUpdateFile(s))throw new Error(`drivers.${n.id}.firmwareUpdates.updates[${a}].files[${i}] invalid file schema`);d=`${s.targetId}-${s.region?s.region:"global"}`}if(l.has(d))throw e?new Error(`drivers.${n.id}.firmwareUpdates.updates[${a}] has multiple files with the same manufacturerCode, imageType and fileVersion`):new Error(`drivers.${n.id}.firmwareUpdates.updates[${a}] has multiple files with the same targetId and region`);l.add(d)}}}}const i=l.drivers.every((e=>e.connectivity&&e.connectivity.includes("matter"))),n=l.platformLocalRequiredFeatures&&l.platformLocalRequiredFeatures.includes("matter");i&&!n&&console.warn("Warning: all drivers have connectivity: matter, but matter is not set as a platform required feature."),!i&&n&&console.warn("Warning: matter is set as a platform required feature, but not all drivers have connectivity: matter.")}if(void 0!==l.capabilities)for(const e of Object.keys(l.capabilities)){if(e.includes("."))throw new Error(`Invalid capability: ${e}\nCharacter '.' is reserved for subcapabilities.`);const t=l.capabilities[e],a=new u(t);try{await a.validate()}catch(t){throw new Error(`Invalid capability: ${e}\n${t.message}`)}t.icon&&await this._ensureFileExistsCaseSensitive(t.icon)}if(void 0!==l.signals)for(const e of Object.keys(l.signals))for(const t of Object.keys(l.signals[e])){const a=new m(l.signals[e][t],{frequency:e});try{await a.validate()}catch(a){throw new Error(`Invalid signal: ${e}.${t}\n${a.message}`)}}if(l.flow)for(const e of Object.keys(l.flow)){const t=l.flow[e];if(Array.isArray(t))for(let i=0;ie.id===n.id))!==i){if(l.sdk>=3)throw new Error(`Found multiple Flow card ${e} with the id "${n.id}", all Flow cards should have a unique id.`);console.warn(`Warning: Found multiple Flow card ${e} with the id "${n.id}", all Flow cards should have a unique id.`)}this._validateFlowCard(n,`flow.${e}['${n.id}']`,l,{levelPublish:a,levelVerified:r})}}if(l.discovery)for(const e of Object.keys(l.discovery)){const t=l.discovery[e],{type:a}=t;if(!t[a])throw new Error(`Missing discovery.${e}.${a}`)}if(await this._fileExistsCaseSensitive("locales")){const e=T.getLocales(),t=await this._getDirectoryContents("locales");for(let a=0;a1&&(r/=i);const n="boolean"!=typeof t.zwave.signed||t.zwave.signed,s=Math.pow(2,8*a)/2-1,o=Math.pow(2,8*a)-1;if(n&&r>s)throw new Error(`Value cannot be signed: ${e.id}, ${t.id}. Max value: ${s}, actual value: ${r}`);if(!n&&r>o)throw new Error(`Max value out of bounds: ${e.id}, ${t.id}. Max value: ${o}, actual value: ${r}`)}}}async _getDirectoryContents(e){return await this._fileExistsCaseSensitive(e),e=z(this._path,e),y(e).then((t=>t.map((t=>z(e,t)))))}async _ensureFileExistsCaseSensitive(e){if(!0!==await this._fileExistsCaseSensitive(e))throw new Error(`Filepath does not exist: ${e}`)}async _fileExistsCaseSensitive(e){e=z(this._path,e);const t=S(e);try{return!!(await f(t)).isDirectory()&&(await y(t)).indexOf(_(e))>-1}catch(e){return!1}}async _validateImages(e,t,a){const r=["small","large"];for(let i=0;i=12.5.0. (${t} ${e.id} ${r.name})`);const s=e.args.find((e=>{const t=new i(e.filter);return"device"===e.type&&(t.has("driver_id")||t.has("driverId"))})),l=e.args.filter((e=>e!==s));if(0!==l.length){if(n)for(const e of l)if(void 0===e.title)throw new Error(`${t}.args['${e.name}'].title is required for arguments in order to publish a verified app.`);if(e.droptoken&&l.push({name:"droptoken"}),void 0===e.titleFormatted){if(n)throw new Error(`${t}.titleFormatted is required in order to publish a verified app.`);console.warn(`Warning: ${t}.titleFormatted is missing. Specifying a Flow card's formatted title will be required in the future.`)}if("string"!=typeof e.titleFormatted){if("object"==typeof e.titleFormatted&&null!==e.titleFormatted)for(const[a,r]of Object.entries(e.titleFormatted))T._checkTitleFormatted(r,l,`${t}.titleFormatted.${a}`);if(e.platforms&&a.platforms){if(e.platforms.includes("local")&&!1===a.platforms.includes("local"))throw new Error(`${t} invalid 'platforms': App manifest does not list 'local' as a supported platform.`);if(e.platforms.includes("cloud")&&!1===a.platforms.includes("cloud"))throw new Error(`${t} invalid 'platforms': App manifest does not list 'cloud' as a supported platform.`)}}else T._checkTitleFormatted(e.titleFormatted,l,`${t}.titleFormatted`)}}static _checkTitleFormatted(e,t,a){const r=t.reduce(((e,t)=>(e[t.name]=!1,e)),{}),i=e.match(/\[\[(.*?)\]\]/gm);if(null===i)throw Error(`Missing all args in ${a}`);i.forEach((e=>{const t=e.substring(2,e.length-2);if(void 0===r[t])throw Error(`Invalid [[${t}]] in ${a}.titleFormatted`);if(!0===r[t])throw Error(`Duplicate [[${t}]] in ${a}.titleFormatted`);!1===r[t]&&(r[t]=!0)}));for(const[e,t]of Object.entries(r))if(!1===t)throw Error(`Missing [[${e}]] in ${a}`)}async _readBytes(e,t){e=z(this._path,e);const a=await g(e,"r"),i=r.alloc(t);return await v(a,i,0,t,0),await h(a),i}static isValidId(e){return!("string"!=typeof e||e.length<1||e.split(".").length<2||!/^[a-zA-Z0-9_.-]*$/g.test(e))}static isValidBrandColor(e){return l(e).getBrightness()<=184}static getJSONSchema(){const e=a(7419);return JSON.parse(JSON.stringify(e))}static getPermissions(){const e=a(5948);if("function"==typeof z)for(const t of Object.keys(e))e[t].icon=z("/","..","..","assets","app","permissions",`${t.replace(/:/g,"-")}.svg`);return e}static getCategories(){return["lights","video","music","appliances","security","climate","tools","internet","localization","energy"]}static getLocales(){return["ab","aa","af","ak","sq","am","ar","an","hy","as","av","ae","ay","az","bm","ba","eu","be","bn","bh","bi","bs","br","bg","my","ca","ch","ce","ny","zh","cv","kw","co","cr","hr","cs","da","dv","nl","dz","en","eo","et","ee","fo","fj","fi","fr","ff","gl","ka","de","el","gn","gu","ht","ha","he","hz","hi","ho","hu","ia","id","ie","ga","ig","ik","io","is","it","iu","ja","jv","kl","kn","kr","ks","kk","km","ki","rw","ky","kv","kg","ko","ku","kj","la","lb","lg","li","ln","lo","lt","lu","lv","gv","mk","mg","ms","ml","mt","mi","mr","mh","mn","na","nv","nd","ne","ng","nb","nn","no","ii","nr","oc","oj","cu","om","or","os","pa","pi","fa","pl","ps","pt","qu","rm","rn","ro","ru","sa","sc","sd","se","sm","sg","sr","gd","sn","si","sk","sl","so","st","es","su","sw","ss","sv","ta","te","tg","th","ti","bo","tk","tl","tn","to","tr","ts","tt","tw","ty","ug","uk","ur","uz","ve","vi","vo","wa","cy","wo","fy","xh","yi","yo","za","zu"]}static getBrandColor(e){const t=r.from(e).toString("hex");let a,i=0;do{const e=`${t}${++i}`;let r=l(`#${e.substring(e.length-6)}`);r=l({h:r.toHsv().h,s:.75,l:.5});const n=r.toHexString();this.isValidBrandColor(n)&&(a=n)}while(!a);return a}static errorsText(e,t){return!1===Array.isArray(e)?null:e.reduce(((e,a)=>{let r="";const i=new RegExp("drivers\\[(\\d+)\\]"),n=a.dataPath.match(i);if(n){const e=parseInt(n[1],10),r=t.drivers[e];r&&(a.dataPath=a.dataPath.replace(`drivers[${e}]`,`drivers['${r.id}']`))}switch(["triggers","conditions","actions"].forEach((e=>{const r=new RegExp(`flow.${e}\\[(\\d+)\\]`),i=a.dataPath.match(r);if(i){const r=parseInt(i[1],10),n=t.flow[e][r];if(n){a.dataPath=a.dataPath.replace(`flow.${e}[${r}]`,`flow.${e}['${n.id}']`);const t=new RegExp(".args\\[(\\d+)\\]"),i=a.dataPath.match(t);if(i){const e=parseInt(i[1],10),t=n.args[e];t&&(a.dataPath=a.dataPath.replace(`.args[${e}]`,`.args['${t.name}']`))}}}})),a.keyword){case"oneOf":return`${e}manifest${a.dataPath} matched no available schemas, see previous errors\n`;case"enum":r=JSON.stringify(a.params.allowedValues)}return`${e}manifest${a.dataPath} ${a.message} ${r}\n`}),"").slice(0,-1)}}e.exports=T},1530:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"PM1 Alarm","nl":"PM1-waarschuwing","de":"PM1-Alarm","fr":"Alarme PM1","it":"Allarme PM1","sv":"PM1-larm","no":"PM1-alarm","es":"Alarma de PM1","da":"PM1-alarm","ru":"Сигнал ТЧ1","pl":"Alarm PM1","ko":"극초미세먼지(PM1.0) 알람","ar":"إنذار PM1"},"titleShort":{"en":"PM1","nl":"PM1","de":"PM1","fr":"PM1","it":"PM1","sv":"PM1","no":"PM1","es":"PM1","da":"PM1","ru":"ТЧ1","pl":"PM1","ko":"PM1","ar":"PM1"},"desc":{"en":"True when PM1 values exceeds threshold","nl":"Wordt geactiveerd wanneer PM1-waarden de drempel overschrijden","de":"True, wenn PM1-Werte die Schwelle überschreiten","fr":"Se déclenche lorsque les valeurs PM1 excèdent un seuil","it":"Vero quando i valori PM1 superano la soglia","sv":"Sant när PM1-värdena överstiger gränsvärdet","no":"Sann når PM1-verdiene overskrider grenseverdien","es":"Activado cuando los valores de PM1 superan el límite","da":"Sandt, når PM1-værdier overskrider grænseværdien","ru":"Значение «истина» при превышении контрольного значения ТЧ1","pl":"Prawda, gdy wartości PM1 przekraczają próg","ko":"PM1 값이 임계값을 초과하면 참","ar":"صحيح عندما تتجاوز قيم PM1 الحد"},"insights":true,"insightsTitleTrue":{"en":"PM1 alarm turned on","nl":"PM1-waarschuwing geactiveerd","de":"PM1-Alarm ist angegangen","fr":"Alarme PM1 activée","it":"Allarme PM1 acceso","sv":"PM1-larm aktiverat","no":"PM1-alarm aktivert","es":"Alarma de PM1 activada","da":"PM1-alarm blev aktiveret","ru":"Сигнал ТЧ1 включен","pl":"Alarm PM1 włączony","ko":"극초미세먼지(PM1.0) 알람 켜짐","ar":"تم تشغيل إنذار PM1"},"insightsTitleFalse":{"en":"PM1 alarm turned off","nl":"PM1-waarschuwing gedeactiveerd","de":"PM1-Alarm ist ausgegangen","fr":"Alarme PM1 désactivée","it":"Allarme PM1 spento","sv":"PM1-larm inaktiverat","no":"PM1-alarmen ble deaktivert","es":"Alarma de PM1 desactivada","da":"PM1-alarm blev deaktiveret","ru":"Сигнал ТЧ1 выключен","pl":"Alarm PM1 wyłączony","ko":"극초미세먼지(PM1.0) 알람 꺼짐","ar":"تم إيقاف إنذار PM1"},"color":"#E02020","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_pm1_true","highlight":true,"title":{"en":"The PM1 alarm turned on","nl":"De PM1-waarschuwing is geactiveerd","de":"Der PM1-Alarm ist angegangen","fr":"L\'alarme PM1 s\'est activée","it":"L\'allarme PM1 si è acceso","sv":"PM1-larmet aktiverat","no":"PM1-alarmen ble aktivert","es":"La alarma de PM1 se ha activado","da":"PM1-alarmen blev aktiveret","ru":"Сигнал ТЧ1 включен","pl":"Włączył się alarm PM1","ko":"극초미세먼지(PM1.0) 알람이 \'예\'이면","ar":"تم تشغيل إنذار PM1"}},{"id":"alarm_pm1_false","title":{"en":"The PM1 alarm turned off","nl":"De PM1-waarschuwing is gedeactiveerd","de":"Der PM1-Alarm ist ausgegangen","fr":"L\'alarme PM1 s\'est désactivée","it":"L\'allarme PM1 si è spento","sv":"PM1-larmet inaktiverat","no":"PM1-alarmen ble deaktivert","es":"La alarma de PM1 se ha desactivado","da":"PM1-alarmen blev deaktiveret","ru":"Сигнал ТЧ1 выключен","pl":"Wyłączył się alarm PM1","ko":"극초미세먼지(PM1.0) 알람이 \'아니요\'이면","ar":"تم إيقاف إنذار PM1"}}],"conditions":[{"id":"alarm_pm1","title":{"en":"The PM1 alarm is !{{on|off}}","nl":"De PM1-waarschuwing is !{{geactiveerd|gedeactiveerd}}","de":"Der PM1-Alarm ist !{{an|aus}}","fr":"L\'alarme PM1 est !{{activée|désactivée}}","it":"L\'allarme PM1 è !{{acceso|spento}}","sv":"PM1-larmet är !{{på|av}}","no":"PM1-alarmen er !{{på|av}}","es":"La alarma de PM1 está !{{activada|desactivada}}","da":"PM1-alarmen er !{{tændt|slukket}}","ru":"Сигнал ТЧ1 !{{включен|выключен}}","pl":"Alarm PM1 jest !{{włączony|wyłączony}}","ko":"극초미세먼지(PM1.0) 알람이 !{{\'예\'|\'아니요\'}}이면","ar":"إنذار PM1 !{{يعمل|لا يعمل}}"}}]},"minCompatibility":"12.2.0"}')},1574:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Cooking Time","ar":"وقت الطهي","da":"Tilberedningstid","de":"Garzeit","es":"Tiempo de cocción","fr":"Temps de cuisson","it":"Tempo di cottura","ko":"조리 시간","nl":"Kooktijd","no":"Tilberedningstid","pl":"Czas gotowania","ru":"Время приготовления","sv":"Tillagningstid"},"units":{"en":"s","ar":"s","da":"s","de":"s","es":"s","fr":"sec","it":"s","ko":"초","nl":"s","no":"s","pl":"s","ru":"с","sv":"s"},"desc":{"en":"The cooking time in seconds that is set. When no cooking time is set, the capability should be set to `null`.","ar":"وقت الطهي بالثواني الذي تم ضبطه. عند عدم ضبط وقت الطهي، يجب ضبكط الميزة على \\"لا شيء\\".","da":"Den indstillede tilberedningstid i sekunder. Når der ikke er indstillet nogen tilberedningstid, skal kapaciteten indstilles til `null`.","de":"Die eingestellte Garzeit in Sekunden. Wenn keine Garzeit eingestellt ist, sollte die Funktion auf „null“ gesetzt werden.","es":"El tiempo de cocción en segundos que está establecido. Si no se desea ningún tiempo de cocción, el valor ha de ser \\"nulo\\".","fr":"Le temps de cuisson en secondes qui est défini. Si aucun temps de cuisson n\'est défini, la fonctionnalité doit être réglée sur « null ».","it":"Il tempo di cottura in secondi impostato. Se non viene impostato alcun tempo di cottura, la capacità deve essere impostata su \\"null\\".","ko":"조리 시간은 설정된 초 값입니다. 조리 시간이 설정되어 있지 않으면 기능이 \'null\'로 설정되어야 합니다.","nl":"De kooktijd in seconden die is ingesteld. Als er geen kooktijd is ingesteld, moet de functie worden ingesteld op `null`.","no":"Den innstilte tilberedningstiden i sekunder. Når ingen tilberedningstid er angitt, skal funksjonen settes til `null`.","pl":"Ustawiony czas gotowania w sekundach. Jeśli nie ustawiono czasu gotowania, właściwość powinna być ustawiona na „brak”.","ru":"Установленное время приготовления в секундах. Если время приготовления не задано, для параметра следует установить значение null.","sv":"Den tillagningstid i sekunder som är inställd. Om ingen tillagningstid har ställts in ska funktionen ställas in på `null`."},"insights":true,"chartType":"spline","min":0,"max":86400,"decimals":0,"color":"#FA6400","getable":true,"setable":true,"uiComponent":"sensor","$flow":{"triggers":[{"id":"cooking_time_changed","highlight":true,"title":{"en":"The cooking time changed","ar":"تغير وقت الطهي","da":"Tilberedningstiden ændrede sig","de":"Die Garzeit hat sich geändert","es":"El tiempo de cocción ha cambiado","fr":"Le temps de cuisson a changé","it":"Il tempo di cottura è cambiato","ko":"조리 시간 변경됨","nl":"De kooktijd is veranderd","no":"Tilberedningstiden ble endret","pl":"Czas gotowania uległ zmianie","ru":"Время приготовления изменено","sv":"Tillagningstiden ändrades"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":100}]}],"actions":[{"id":"set_cooking_time","title":{"en":"Set the cooking time to [[cooking_time]]","ar":"اضبط وقت الطهي على [[cooking_time]]","da":"Indstil tilberedningstiden til [[cooking_time]]","de":"Stellen Sie die Garzeit auf [[cooking_time]]","es":"Establece el tiempo de cocción en [[cooking_time]]","fr":"Réglez le temps de cuisson sur [[cooking_time]]","it":"Imposta il tempo di cottura su [[cooking_time]]","ko":"조리 시간을 [[cooking_time]]로 설정","nl":"Stel de kooktijd in op [[cooking_time]]","no":"Sett tilberedningstiden til [[cooking_time]]","pl":"Ustaw czas gotowania na [[cooking_time]]","ru":"Установить время приготовления на [[cooking_time]]","sv":"Ställ in tillagningstiden på [[cooking_time]]"},"args":[{"name":"cooking_time","type":"time","title":{"en":"Cooking time","ar":"وقت الطهي","da":"Tilberedningstid","de":"Garzeit","es":"Tiempo de cocción","fr":"Temps de cuisson","it":"Tempo di cottura","ko":"조리 시간","nl":"Kooktijd","no":"Tilberedningstid","pl":"Czas gotowania","ru":"Время приготовления","sv":"Tillagningstid"},"placeholder":"00:30"}]}]},"minCompatibility":"12.11.0"}')},1615:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Bin Full Alarm","nl":"Afvalbak-vol-alarm","da":"Papirkurv fuld alarm","es":"Alarma de depósito lleno","fr":"Alarme de poubelle pleine","it":"Allarme cestino pieno","ko":"먼지통 가득 참 감지","pl":"Alarm pełnego kosza","ru":"Сигнал о заполненности контейнера","sv":"Larm om full behållare","no":"Alarm om full støvbeholder","ar":"إنذار امتلاء سلة المهملات","de":"Alarm bei vollem Behälter"},"titleShort":{"en":"Bin Full","nl":"Afvalbak vol","da":"Papirkurv fuld","es":"Depósito lleno","fr":"Poubelle pleine","it":"Cestino pieno","ko":"먼지통 가득 참","pl":"Pełny kosz","ru":"Контейнер заполнен","sv":"Full behållare","no":"Full støvbeholder","ar":"سلة المهملات ممتلئة","de":"Behälter voll"},"desc":{"en":"True when the bin is full","nl":"Wordt geactiveerd wanneer de afvalbak vol is","da":"Sandt, når papirkurven er fuld","es":"Activado cuando el cubo está lleno","fr":"Se déclenche lorsque la poubelle est pleine","it":"Vero quando il contenitore è pieno","ko":"휴지통이 가득 차면 참임","pl":"Prawda, gdy kosz jest pełny","ru":"Значение «истина», когда контейнер заполнен","sv":"Sant när behållaren är full","no":"Sann når støvbeholderen er full","ar":"صحيح عندما تكون سلة المهملات ممتلئة","de":"Wahr, wenn der Behälter voll ist"},"insights":true,"insightsTitleTrue":{"en":"The bin was full","nl":"De afvalbak was vol","da":"Papirkurven var fuld","es":"El cubo estaba lleno","fr":"La poubelle était pleine","it":"Il contenitore era pieno","ko":"먼지통 가득 참","pl":"Kosz był pełny","ru":"Контейнер был заполнен","sv":"Behållaren var full","no":"Støvbeholderen var full","ar":"سلة المهملات كانت ممتلئة","de":"Der Behälter war voll"},"insightsTitleFalse":{"en":"The bin was not full","nl":"De afvalbak was niet vol","da":"Papirkurven var ikke fuld","es":"El cubo no estaba lleno","fr":"La poubelle n\'était pas pleine","it":"Il contenitore non era pieno","ko":"먼지통 상태 정상","pl":"Kosz nie był pełny","ru":"Контейнер не был заполнен","sv":"Behållaren var inte full","no":"Støvbeholderen var ikke full","ar":"سلة المهملات لم تكن ممتلئة","de":"Der Behälter war nicht voll"},"color":"#9033FC","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_bin_full_true","highlight":true,"title":{"en":"The bin is full","nl":"De afvalbak is vol","da":"Papirkurven er fuld","es":"El cubo está lleno","fr":"La poubelle est pleine","it":"Il contenitore è pieno","ko":"먼지통이 가득 차면","pl":"Kosz jest pełny","ru":"Контейнер заполнен","sv":"Behållaren är full","no":"Støvbeholderen er full","ar":"سلة المهملات ممتلئة","de":"Der Behälter ist voll"}},{"id":"alarm_bin_full_false","title":{"en":"The bin is no longer full","nl":"De afvalbak is niet meer vol","da":"Papirkurven er ikke længere fuld","es":"El cubo ya no está lleno","fr":"La poubelle n\'est plus pleine","it":"Il contenitore non è più pieno","ko":"먼지통이 정상 상태이면","pl":"Kosz nie jest już pełny","ru":"Контейнер больше не заполнен","sv":"Behållaren är inte längre full","no":"Støvbeholderen er ikke lenger full","ar":"لم تعد سلة المهملات ممتلئة","de":"Der Behälter ist nicht mehr voll"}}],"conditions":[{"id":"alarm_bin_full","title":{"en":"The bin is !{{full|not full}}","nl":"De afvalbak is !{{vol|niet vol}}","da":"Papirkurven er !{{fuld|ikke fuld}}","es":"El cubo !{{está lleno|no está lleno}} ","it":"Il contenitore è !{{pieno|non pieno}}","ko":"먼지통이 !{{가득 차면|정상 상태이면}}","pl":"Kosz !{{jest pełny|nie jest pełny}}","ru":"Контейнер !{{заполнен|не заполнен}}","sv":"Behållaren är!{{full|inte full}}","fr":"La poubelle !{{est pleine|n\'est pas pleine}}","no":"Støvbeholderen er !{{full|ikke full}}","ar":"سلة المهملات !{{ممتلئة|ليست ممتلئة}}","de":"Der Behälter ist !{{voll|nicht voll}}"}}]},"minCompatibility":"12.2.0"}')},1832:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Distance","nl":"Afstand","da":"Afstand","it":"Distanza","ko":"거리","no":"Avstand","pl":"Odległość","ru":"Расстояние","sv":"Avstånd","es":"Distancia","fr":"\\n","ar":"المسافة","de":"Entfernung"},"units":{"en":"m","nl":"m","da":"m","it":"m","ko":"m","no":"m","pl":"m","ru":"м","sv":"m","es":"m","fr":"m","ar":"م","de":"m"},"desc":{"en":"The distance in meters.","nl":"De afstand in meters.","da":"Afstanden i meter.","it":"La distanza in metri.","ko":"미터 단위의 거리입니다.","no":"Avstanden i meter.","pl":"Odległość w metrach.","ru":"Расстояние в метрах.","sv":"Avståndet i meter.","es":"La distancia en metros.","fr":"La distance en mètres.","ar":"المسافة بالمتر.","de":"Die Entfernung in Metern."},"insights":true,"chartType":"spline","color":"#4682B4","decimals":2,"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_distance_changed","title":{"en":"The distance changed","nl":"De afstand is veranderd","da":"Afstanden ændrede sig","it":"La distanza è cambiata","ko":"거리가 변경되면","no":"Avstanden ble endret","pl":"Zmieniła się odległość","ru":"Расстояние изменилось","sv":"Avståndet ändrades","es":"La distancia ha cambiado","fr":"La distance a changé","ar":"تغيرت المسافة","de":"Die Entfernung hat sich geändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":2}]}]},"minCompatibility":"12.2.0"}')},1873:e=>{"use strict";e.exports=function(e,t,a){var r="",i=!0===e.schema.$async,n=e.util.schemaHasRulesExcept(e.schema,e.RULES.all,"$ref"),s=e.self._getId(e.schema);if(e.opts.strictKeywords){var o=e.util.schemaUnknownRules(e.schema,e.RULES.keywords);if(o){var l="unknown keyword: "+o;if("log"!==e.opts.strictKeywords)throw new Error(l);e.logger.warn(l)}}if(e.isTop&&(r+=" var validate = ",i&&(e.async=!0,r+="async "),r+="function(data, dataPath, parentData, parentDataProperty, rootData) { 'use strict'; ",s&&(e.opts.sourceCode||e.opts.processCode)&&(r+=" /*# sourceURL="+s+" */ ")),"boolean"==typeof e.schema||!n&&!e.schema.$ref){t="false schema";var d=e.level,u=e.dataLevel,m=e.schema[t],p=e.schemaPath+e.util.getProperty(t),c=e.errSchemaPath+"/"+t,g=!e.opts.allErrors,h="data"+(u||""),v="valid"+d;if(!1===e.schema){e.isTop?g=!0:r+=" var "+v+" = false; ",(G=G||[]).push(r),r="",!1!==e.createErrors?(r+=" { keyword: 'false schema' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: {} ",!1!==e.opts.messages&&(r+=" , message: 'boolean schema is false' "),e.opts.verbose&&(r+=" , schema: false , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),r+=" } "):r+=" {} ";var f=r;r=G.pop(),!e.compositeRule&&g?e.async?r+=" throw new ValidationError(["+f+"]); ":r+=" validate.errors = ["+f+"]; return false; ":r+=" var err = "+f+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "}else e.isTop?r+=i?" return data; ":" validate.errors = null; return true; ":r+=" var "+v+" = true; ";return e.isTop&&(r+=" }; return validate; "),r}if(e.isTop){var k=e.isTop;if(d=e.level=0,u=e.dataLevel=0,h="data",e.rootId=e.resolve.fullPath(e.self._getId(e.root.schema)),e.baseId=e.baseId||e.rootId,delete e.isTop,e.dataPathArr=[void 0],void 0!==e.schema.default&&e.opts.useDefaults&&e.opts.strictDefaults){var y="default is ignored in the schema root";if("log"!==e.opts.strictDefaults)throw new Error(y);e.logger.warn(y)}r+=" var vErrors = null; ",r+=" var errors = 0; ",r+=" if (rootData === undefined) rootData = data; "}else{if(d=e.level,h="data"+((u=e.dataLevel)||""),s&&(e.baseId=e.resolve.url(e.baseId,s)),i&&!e.async)throw new Error("async schema in sync schema");r+=" var errs_"+d+" = errors;"}v="valid"+d,g=!e.opts.allErrors;var b="",w="",z=e.schema.type,P=Array.isArray(z);if(z&&e.opts.nullable&&!0===e.schema.nullable&&(P?-1==z.indexOf("null")&&(z=z.concat("null")):"null"!=z&&(z=[z,"null"],P=!0)),P&&1==z.length&&(z=z[0],P=!1),e.schema.$ref&&n){if("fail"==e.opts.extendRefs)throw new Error('$ref: validation keywords used in schema at path "'+e.errSchemaPath+'" (see option extendRefs)');!0!==e.opts.extendRefs&&(n=!1,e.logger.warn('$ref: keywords ignored in schema at path "'+e.errSchemaPath+'"'))}if(e.schema.$comment&&e.opts.$comment&&(r+=" "+e.RULES.all.$comment.code(e,"$comment")),z){if(e.opts.coerceTypes)var _=e.util.coerceToTypes(e.opts.coerceTypes,z);var S=e.RULES.types[z];if(_||P||!0===S||S&&!Y(S)){p=e.schemaPath+".type",c=e.errSchemaPath+"/type",p=e.schemaPath+".type",c=e.errSchemaPath+"/type";var A=P?"checkDataTypes":"checkDataType";if(r+=" if ("+e.util[A](z,h,e.opts.strictNumbers,!0)+") { ",_){var E="dataType"+d,j="coerced"+d;r+=" var "+E+" = typeof "+h+"; ","array"==e.opts.coerceTypes&&(r+=" if ("+E+" == 'object' && Array.isArray("+h+")) "+E+" = 'array'; "),r+=" var "+j+" = undefined; ";var C="",O=_;if(O)for(var L,T=-1,D=O.length-1;T{"use strict";var t=["multipleOf","maximum","exclusiveMaximum","minimum","exclusiveMinimum","maxLength","minLength","pattern","additionalItems","maxItems","minItems","uniqueItems","maxProperties","minProperties","required","additionalProperties","enum","format","const"];e.exports=function(e,a){for(var r=0;r{"use strict";e.exports=function(e,t,a){var r=" ",i=e.level,n=e.dataLevel,s=e.schema[t],o=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+"/"+t,d=!e.opts.allErrors,u="data"+(n||""),m="errs__"+i,p=e.util.copy(e),c="";p.level++;var g="valid"+p.level,h={},v={},f=e.opts.ownProperties;for(w in s)if("__proto__"!=w){var k=s[w],y=Array.isArray(k)?v:h;y[w]=k}r+="var "+m+" = errors;";var b=e.errorPath;for(var w in r+="var missing"+i+";",v)if((y=v[w]).length){if(r+=" if ( "+u+e.util.getProperty(w)+" !== undefined ",f&&(r+=" && Object.prototype.hasOwnProperty.call("+u+", '"+e.util.escapeQuotes(w)+"') "),d){r+=" && ( ";var z=y;if(z)for(var P=-1,_=z.length-1;P<_;)O=z[P+=1],P&&(r+=" || "),r+=" ( ( "+(M=u+(D=e.util.getProperty(O)))+" === undefined ",f&&(r+=" || ! Object.prototype.hasOwnProperty.call("+u+", '"+e.util.escapeQuotes(O)+"') "),r+=") && (missing"+i+" = "+e.util.toQuotedString(e.opts.jsonPointers?O:D)+") ) ";r+=")) { ";var S="missing"+i,A="' + "+S+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.opts.jsonPointers?e.util.getPathExpr(b,S,!0):b+" + "+S);var E=E||[];E.push(r),r="",!1!==e.createErrors?(r+=" { keyword: 'dependencies' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { property: '"+e.util.escapeQuotes(w)+"', missingProperty: '"+A+"', depsCount: "+y.length+", deps: '"+e.util.escapeQuotes(1==y.length?y[0]:y.join(", "))+"' } ",!1!==e.opts.messages&&(r+=" , message: 'should have ",1==y.length?r+="property "+e.util.escapeQuotes(y[0]):r+="properties "+e.util.escapeQuotes(y.join(", ")),r+=" when property "+e.util.escapeQuotes(w)+" is present' "),e.opts.verbose&&(r+=" , schema: validate.schema"+o+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),r+=" } "):r+=" {} ";var j=r;r=E.pop(),!e.compositeRule&&d?e.async?r+=" throw new ValidationError(["+j+"]); ":r+=" validate.errors = ["+j+"]; return false; ":r+=" var err = "+j+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "}else{r+=" ) { ";var C=y;if(C)for(var O,L=-1,T=C.length-1;L0:e.util.schemaHasRules(k,e.RULES.all))&&(r+=" "+g+" = true; if ( "+u+e.util.getProperty(w)+" !== undefined ",f&&(r+=" && Object.prototype.hasOwnProperty.call("+u+", '"+e.util.escapeQuotes(w)+"') "),r+=") { ",p.schema=k,p.schemaPath=o+e.util.getProperty(w),p.errSchemaPath=l+"/"+e.util.escapeFragment(w),r+=" "+e.validate(p)+" ",p.baseId=x,r+=" } ",d&&(r+=" if ("+g+") { ",c+="}"));return d&&(r+=" "+c+" if ("+m+" == errors) {"),r}},1946:e=>{"use strict";e.exports=function(e,t,a,r){return a=a||0,e["readUInt"+t+(r?"BE":"LE")].call(e,a)}},1961:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Sunshade","nl":"Zonnescherm","de":"Sonnenschirm","fr":"Auvent","it":"Parasole","sv":"Markis","no":"Markise","es":"Toldo","da":"Markise","ru":"Навес","pl":"Markiza","ko":"햇빛 가리개","ar":"مظلة شمسية"},"description":{"en":"Use this device class for sunshades (window coverings against the sun).","de":"Nutze diese Geräteklasse für Jalousien (Fenster-Abdeckungen gegen die Sonne).","fr":"Utilisez cette classe d\'appareil pour les auvents (couvrant les fenêtres contre le soleil).","it":"Utilizza questa classe di dispositivi per gli scuretti (che riparano le finestre dal sole).","sv":"Använd den här enhetsklassen för markiser (fönsterskydd mot solen).","no":"Bruk denne enhetsklassen for markiser (vindusskjerming mot solen).","es":"Utiliza esta clase de dispositivo para los toldos (para proteger las ventanas del sol).","da":"Brug denne enhedsklasse til markiser (vinduesdække mod solen).","ru":"Используйте этот класс устройств для навесов (оконных навесов от солнца).","pl":"Użyj tej klasy urządzeń dla markiz (osłony okienne chroniące przed słońcem).","ko":"이 디바이스 클래스는 선셰이드(햇빛을 막아주는 창문 덮개)에 사용합니다.","ar":"استخدم فئة الجهاز هذه للمظلات الشمسية (أغطية النوافذ ضد الشمس).","nl":"Gebruik deze apparaatklasse voor zonneschermen (raambekleding tegen de zon)."}}')},1997:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Battery Alarm","nl":"Batterij-alarm","de":"Batteriealarm","fr":"Alarme batterie","it":"Allarme batteria","sv":"Batterilarm","no":"Batterialarm","es":"Alarma de batería","da":"Batterialarm","ru":"Сигнал аккумулятора","pl":"Alarm stanu baterii","ko":"배터리 알람","ar":"إنذار البطارية"},"titleShort":{"en":"Battery","nl":"Batterij","de":"Batterie","fr":"Batterie","it":"Batteria","sv":"Batteri","no":"Batteri","es":"Batería","da":"Batteri","ru":"Аккумулятор","pl":"Stan baterii","ko":"배터리","ar":"البطارية"},"desc":{"en":"True when there is a battery warning","nl":"Geeft een batterijwaarschuwing","de":"True, wenn es eine Batterie-Warnung gibt","fr":"Vrai quand il y a un avertissement de batterie","it":"Vero quando c\'è un avvertimento sulla batteria","sv":"Sant när det finns en batterivarning","no":"Sant når det finnes en batteriadvarsel","es":"Activado cuando hay una advertencia de la batería","da":"Sandt, når der er en batterialarm","ru":"Значение «истина», когда есть предупреждение об аккумуляторе","pl":"Adekwatny, kiedy włączy się ostrzeżenie o stanie baterii","ko":"배터리 경고가 있으면 참","ar":"صحيح عند وجود تحذير البطارية"},"insights":true,"insightsTitleTrue":{"en":"Battery alarm turned on","nl":"Batterijalarm ging af","de":"Batterie-Alarm ist angegangen","fr":"Alarme batterie activée","it":"Allarme batteria attivato","sv":"Batterialarm aktiverat","no":"Batterialarm aktivert","es":"Alarma de la batería activada","da":"Batterialarm aktiveret","ru":"Сигнал аккумулятора включен","pl":"Alarm stanu baterii włączony","ko":"배터리 알람 켜짐","ar":"تم تشغيل إنذار البطارية"},"insightsTitleFalse":{"en":"Battery alarm turned off","nl":"Batterijalarm ging uit","de":"Batterie-Alarm ist ausgegangen","fr":"Alarme batterie désactivée","it":"Allarme batteria disattivato","sv":"Batterialarm inaktiverat","no":"Batterialarm deaktivert","es":"Alarma de la batería desactivada","da":"Batterialarm deaktiveret","ru":"Сигнал аккумулятора выключен","pl":"Alarm stanu baterii wyłączony","ko":"배터리 알람 꺼짐","ar":"تم إيقاف إنذار البطارية"},"color":"#6DD400","getable":true,"setable":false,"uiComponent":"battery","$flow":{"triggers":[{"id":"alarm_battery_true","highlight":true,"title":{"en":"The battery alarm turned on","nl":"De batterijwaarschuwing gaat aan","de":"Der Batterie-Alarm ist angegangen","fr":"L\'alarme batterie s\'est activée","it":"L\'allarme della batteria è stato attivato","sv":"Batterialarmet aktiverat","no":"Batterialarmen ble aktivert","es":"La alarma de la batería se ha activado","da":"Batterialarm aktiverede","ru":"Сигнал аккумулятора включен","pl":"Alarm stanu baterii włączony","ko":"배터리 알람이 \'예\'이면","ar":"تم تشغيل إنذار البطارية"}},{"id":"alarm_battery_false","title":{"en":"The battery alarm turned off","nl":"De batterijwaarschuwing gaat uit","de":"Der Batterie-Alarm ist ausgegangen","fr":"L\'alarme batterie s\'est désactivée","it":"L\'allarme della batteria è stato disattivato","sv":"Batterialarmet aktiverat","no":"Batterialarmen ble deaktivert","es":"La alarma de la batería se ha desactivado","da":"Batterialarm deaktiverede","ru":"Сигнал аккумулятора выключен","pl":"Alarm stanu baterii wyłączony","ko":"배터리 알람이 \'아니요\'이면","ar":"تم إيقاف إنذار البطارية"}}],"conditions":[{"id":"alarm_battery","title":{"en":"The battery alarm is !{{on|off}}","nl":"De batterijwaarschuwing is !{{aan|uit}}","de":"Der Batterie-Alarm ist !{{an|aus}}","fr":"L\'alarme batterie est !{{en marche|arrêtée}}","it":"L\'allarme della batteria è !{{acceso|spento}}","sv":"Batterialarmet är !{{på|av}}","no":"Batterialarmen er !{{på|av}}","es":"La alarma de la batería está !{{activada|desactivada}}","da":"Batterialarmen er !{{tændt|slukket}}","ko":"배터리 알람이 !{{\'예\'이면|\'아니요\'이면}}","pl":"Alarm stanu baterii jest !{{włączony|wyłączony}}","ru":"Сигнал аккумулятора !{{включен|выключен}}","ar":"إنذار البطارية !{{يعمل|لا يعمل}}"}}]}}')},2017:e=>{"use strict";e.exports=function e(t,a){if(t===a)return!0;if(t&&a&&"object"==typeof t&&"object"==typeof a){if(t.constructor!==a.constructor)return!1;var r,i,n;if(Array.isArray(t)){if((r=t.length)!=a.length)return!1;for(i=r;0!=i--;)if(!e(t[i],a[i]))return!1;return!0}if(t.constructor===RegExp)return t.source===a.source&&t.flags===a.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===a.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===a.toString();if((r=(n=Object.keys(t)).length)!==Object.keys(a).length)return!1;for(i=r;0!=i--;)if(!Object.prototype.hasOwnProperty.call(a,n[i]))return!1;for(i=r;0!=i--;){var s=n[i];if(!e(t[s],a[s]))return!1}return!0}return t!=t&&a!=a}},2059:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Wall Plug","nl":"Schakeldoos","de":"Steckdose","fr":"Prise murale","it":"Presa a muro","sv":"Väggkontakt","no":"Veggkontakt","es":"Enchufe de pared","da":"Stikkontakt","ru":"Настенная розетка","pl":"Wtyczka","ko":"벽면 콘센트","ar":"قابس الحائط"},"description":{"en":"Use this device class for sockets (built-in or plug-in socket switches). When adding the `choose_slave` pair template, the user is presented a `What\'s plugged in?` question.","de":"Nutze diese Geräteklasse für Sockel (eingebaut oder zum zum Einstecken). Wenn das `choose_slave`-Paar-Template hinzugefügt wird, wird dem Benutzer eine `Was ist eingesteckt?`-Frage gestellt.","fr":"Utilisez cette classe d\'appareil pour les prises (intégrées ou prises d\'interrupteurs). En ajoutant le modèle d\'appairage `choose_slave`, il est demandé à l\'utilisteur `Qu\'est-ce qui est connecté ?`.","it":"Utilizza questa classe di dispositivi per le prese (prese integrate o interruttori). Aggiungendo il modello di abbinamento `choose_slave`, viene chiesto all\'utente `Cosa è collegato?`.","sv":"Använd den här enhetsklassen för uttag (inbyggda eller stickkontakter). När parmallen `choose_slave` får användaren en `Vad är inkopplat?`-fråga.","no":"Bruk denne enhetsklassen for kontakter (innebygde eller eksterne kontaktenheter). Når sammenkoblingsmalen `choose_slave` legges til, får brukeren et `Hva er koblet til?`-spørsmål.","es":"Utiliza esta clase de dispositivo para los enchufes (interruptores de enchufe integrados o enchufables). Al añadir la plantilla de emparejamiento `choose_slave`, al usuario se le pregunta `¿Qué está enchufado?`.","da":"Brug denne enhedsklasse til kontakter (indbyggede eller eksterne kontaktenheder). Når `choose_slave` parskabelonen tilføjes, bliver brugeren præsenteret for et `Hvad er sat til?` spørgsmål.","ru":"Используйте этот класс устройства для розеток (встроенных или вставных выключателей). При добавлении шаблона сопряжения `choose_slave` пользователю предлагается ответить на вопрос: `Что подключено?`.","pl":"Użyj tej klasy urządzeń dla gniazdek elektrycznych (wbudowanych lub wtyczek). Podczas dodawania szablonu parowania `choose_slave` pojawi się pytanie: `Co jest podłączone?`.","ko":"이 디바이스 클래스는 (빌트인 및 플러그인 방식 소켓 스위치 등) 콘센트에 사용합니다. \'choose_slave\' 페어링 템플릿을 추가하면 사용자에게 \'무엇을 꽂으셨습니까?\' 질문이 표시됩니다.","ar":"استخدم فئة الجهاز هذه للمقابس (المدمجة أو قوابس التبديل). عند إضافة قالب الاقتران \'choose_slave\'، يتم عرض سؤال \'ما هو الموصل؟\' للمستخدم.","nl":"Gebruik deze apparaatklasse voor stopcontacten (ingebouwde of stopcontacten met schakelaar). Bij het toevoegen van het koppelsjabloon \'choose_slave\', krijgt de gebruiker de vraag \'Wat is ingestoken?\' te zien."},"virtualTitle":{"en":"Plugged in","nl":"Aangesloten","de":"Angeschlossen","fr":"Branché","it":"Collegato","sv":"Inkopplad","no":"Plugget inn","es":"Conectado","da":"Tilsluttet","ru":"Подключено","pl":"Podłączone","ko":"꽂힘","ar":"موصول"},"allowedVirtual":["light","fan","heater","coffeemachine","kettle","tv","solarpanel","airconditioning","airfryer","boiler","battery","cooktop","dishwasher","dryer","evcharger","freezer","fridge","fridge_and_freezer","fryer","grill","heatpump","mediaplayer","microwave","multicooker","networkrouter","oven","washer","washer_and_dryer","waterpurifier","oven_and_microwave"]}')},2119:e=>{"use strict";e.exports=function(e,t,a){var r,i=" ",n=e.level,s=e.dataLevel,o=e.schema[t],l=e.schemaPath+e.util.getProperty(t),d=e.errSchemaPath+"/"+t,u=!e.opts.allErrors,m="data"+(s||""),p=e.opts.$data&&o&&o.$data;if(p?(i+=" var schema"+n+" = "+e.util.getData(o.$data,s,e.dataPathArr)+"; ",r="schema"+n):r=o,!p&&"number"!=typeof o)throw new Error(t+" must be number");i+="if ( ",p&&(i+=" ("+r+" !== undefined && typeof "+r+" != 'number') || "),i+=" "+m+".length "+("maxItems"==t?">":"<")+" "+r+") { ";var c=t,g=g||[];g.push(i),i="",!1!==e.createErrors?(i+=" { keyword: '"+(c||"_limitItems")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(d)+" , params: { limit: "+r+" } ",!1!==e.opts.messages&&(i+=" , message: 'should NOT have ",i+="maxItems"==t?"more":"fewer",i+=" than ",i+=p?"' + "+r+" + '":""+o,i+=" items' "),e.opts.verbose&&(i+=" , schema: ",i+=p?"validate.schema"+l:""+o,i+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),i+=" } "):i+=" {} ";var h=i;return i=g.pop(),!e.compositeRule&&u?e.async?i+=" throw new ValidationError(["+h+"]); ":i+=" validate.errors = ["+h+"]; return false; ":i+=" var err = "+h+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",i+="} ",u&&(i+=" else { "),i}},2123:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Tank Missing Alarm","nl":"Waarschuwing voor ontbrekende tank","da":"Alarm for manglende tank","it":"Allarme serbatoio mancante","ko":"물통 분리 감지","no":"Alarm om manglende tank","pl":"Alarm braku zbiornika","ru":"Сигнал об отсутствии резервуара","sv":"Larm för saknad tank","es":"Alarma de depósito no instalado","fr":"Alarme de réservoir manquant","ar":"إنذار فقد الخزان","de":"Alarm bei fehlendem Tank"},"titleShort":{"en":"Tank Missing","nl":"Tank ontbreekt","da":"Manglende tank","it":"Serbatoio mancante","ko":"물통 누락","no":"Manglende tank","pl":"Brak zbiornika","ru":"Резервуар отсутствует","sv":"Tank saknas","es":"Depósito no instalado","fr":"Réservoir manquant","ar":"الخزان غير موجود","de":"Tank fehlt"},"desc":{"en":"True when the tank is missing.","nl":"Wordt geactiveerd wanneer de tank ontbreekt.","da":"Det er sandt, når tanken mangler.","it":"Vero quando manca il serbatoio.","ko":"탱크가 누락되면 참입니다.","no":"Sann når tanken mangler.","pl":"Prawda, gdy brakuje zbiornika.","ru":"Значение «истина», когда резервуар отсутствует.","sv":"Sant när tanken saknas.","es":"Activado cuando el depósito no está presente.","fr":"Se déclenche lorsque le réservoir est manquant.","ar":"صحيح عندما يكون الخزان مفقودًا.","de":"Richtig, wenn der Tank fehlt."},"insights":true,"insightsTitleTrue":{"en":"Tank was missing","nl":"Tank ontbrak","da":"Tanken manglede","it":"Mancava il serbatoio","ko":"물통 없음","no":"Tanken manglet","pl":"Brakowało zbiornika","ru":"Резервуар отсутствовал","sv":"Tank saknades","es":"El depósito no estaba presente","fr":"Le réservoir était manquant","ar":"كان الخزان مفقودًا","de":"Tank fehlte"},"insightsTitleFalse":{"en":"Tank was not missing","nl":"Tank was geplaatst","da":"Tanken manglede ikke","it":"Il serbatoio non mancava","ko":"물통 장착됨","no":"Tanken manglet ikke","pl":"Nie brakowało zbiornika","ru":"Резервуар не отсутствовал","sv":"Tanken saknades inte","es":"El depósito estaba colocado","fr":"Le réservoir n\'était pas manquant","ar":"لم يكن الخزان مفقودًا","de":"Tank fehlte nicht"},"color":"#0091FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_tank_missing_true","highlight":true,"title":{"en":"The tank is missing","nl":"De tank ontbreekt","da":"Tanken mangler","it":"Manca il serbatoio","ko":"물통이 없으면","no":"Tanken mangler","pl":"Brakuje zbiornika","ru":"Резервуар отсутствует","sv":"Tanken saknas","es":"El depósito no está presente","fr":"Le réservoir est manquant","ar":"الخزان مفقود","de":"Der Tank fehlt"}},{"id":"alarm_tank_missing_false","title":{"en":"The tank is placed","nl":"De tank is geplaatst","da":"Tanken er placeret","it":"Il serbatoio è presente","ko":"물통이 장착되어 있으면","no":"Tanken er på plass","pl":"Zbiornik jest umieszczony","ru":"Резервуар размещен","sv":"Tanken är på plats","es":"El depósito está colocado","fr":"Le réservoir est placé","ar":"تم وضع الخزان","de":"Der Tank wird platziert"}}],"conditions":[{"id":"alarm_tank_missing","title":{"en":"Tank !{{is|is not}} missing","nl":"De tank !{{ontbreekt|is geplaatst}}","da":"Tanken !{{er|er ikke}} manglende","it":"Il serbatoio è !{{assente|presente}}","ko":"물통이 !{{없으면|장착되어 있으면}}","no":"Tanken !{{er|er ikke}} borte","pl":"Zbiornik jest !{{brakujący|obecny}}","ru":"Резервуар ! {{отсутствует|в наличии}}","sv":"Tanken !{{saknas|är på plats}}","es":"El depósito !{{está|no está}} presente","fr":"Le réservoir est !{{manquant|présent}}","ar":"الخزان !{{مفقود|غير مفقود}}","de":"Tank !{{fehlt|fehlt nicht}}"}}]},"minCompatibility":"12.2.0"}')},2130:(e,t,a)=>{"use strict";e.exports=class{static getCurrencies(){return a(6570)}static getBatteries(){return["LS14250","C","AA","AAA","AAAA","A23","A27","PP3","CR123A","CR2","CR1632","CR2032","CR2430","CR2450","CR2477","CR3032","CR14250","INTERNAL","OTHER"]}}},2139:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"CO level","nl":"CO-niveau","da":"CO-niveau","it":"Livello di CO","ko":"일산화탄소(CO) 수준","pl":"Poziom CO","ru":"Уровень CO","sv":"CO-nivå","es":"Nivel de monóxido de carbono","fr":"Niveau de CO","no":"CO-nivå","ar":"مستوى أول أكسيد الكربون","de":"CO-Gehalt"},"desc":{"en":"The level of CO in the air.","nl":"De mate van CO in de lucht.","da":"Niveauet af CO i luften.","it":"Il livello di CO nell\'aria.","ko":"공기 중 CO의 수준입니다.","pl":"Poziom tlenku węgla w powietrzu.","ru":"Уровень содержания CO в воздухе.","sv":"Halten av CO i luften.","es":"El nivel de monóxido de carbono en el aire.","fr":"Le niveau de CO dans l\'air.","no":"Nivået av CO i luften.","ar":"مستوى أول أكسيد الكربون في الهواء.","de":"Der CO-Gehalt in der Luft."},"values":[{"id":"low","title":{"en":"Low","nl":"Laag","da":"Lavt","it":"Basso","ko":"낮음","pl":"Niski","ru":"Низкий","sv":"Låg","es":"Bajo","fr":"Faible","no":"Lavt","ar":"منخفض","de":"Niedrig"}},{"id":"medium","title":{"en":"Medium","nl":"Gemiddeld","da":"Medium","it":"Medio","ko":"보통","pl":"Średni","ru":"Средний","sv":"Medium","es":"Intermedio","fr":"Moyen","no":"Middels","ar":"متوسط","de":"Mittel"}},{"id":"high","title":{"en":"High","nl":"Hoog","da":"Højt","it":"Alto","ko":"높음","pl":"Wysoki","ru":"Высокий","sv":"Hög","es":"Alto","fr":"Élevé","no":"Høyt","ar":"عالي","de":"Hoch"}},{"id":"critical","title":{"en":"Critical","nl":"Kritiek","da":"Kritisk","it":"Critico","ko":"위험","pl":"Krytyczny","ru":"Критический","sv":"Kritisk","es":"Crítico","fr":"Critique","no":"Kritisk","ar":"حرج","de":"Kritisch"}}],"color":"#E02020","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"level_co_changed","highlight":true,"title":{"en":"The CO level changed to","nl":"Het CO-niveau is veranderd naar","da":"CO-niveauet blev ændret til","it":"Il livello di CO è passato a","ko":"일산화탄소(CO) 수준이 다음으로 변경되면","pl":"Poziom CO zmienił się na","ru":"Уровень СО изменился на","sv":"CO-nivån ändrades till","es":"El nivel de monóxido de carbono ha cambiado a","fr":"Le niveau de CO est passé à","no":"CO-nivået ble endret til","ar":"تغير مستوى أول أكسيد الكربون إلى","de":"Der CO-Gehalt hat sich geändert auf"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"level_co_is","title":{"en":"The CO level !{{is|is not}}","nl":"Het CO-niveau !{{is|is niet}}","da":"CO-niveauet !{{er|er ikke}}","it":"Il livello di CO !{{è|non è}}","ko":"일산화탄소(CO) 수준이 다음!{{이면|이 아니면}}","pl":"Poziom CO !{{jest|nie jest}}","ru":"Уровень CO !{{|не}}","sv":"CO-nivån !{{är|är inte}}","es":"El nivel de monóxido de carbono !{{es|no es}}","fr":"Le niveau de CO !{{est|n\'est pas}}","no":"CO-nivået !{{er|er ikke}}","ar":"مستوى أول أكسيد الكربون !{{هو|ليس}}","de":"Der CO-Gehalt !{{ist|ist nicht}}"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.2.0"}')},2154:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Air Treatment","da":"Luftbehandling","de":"Luftbehandlung","es":"Tratamiento del aire","fr":"Traitement de l\'air","it":"Trattamento dell\'aria","ko":"공기 관리","nl":"Luchtbehandeling","no":"Luftbehandling","pl":"Oczyszczanie powietrza","ru":"Обработка воздуха","sv":"Luftbehandling","ar":"معالجة الهواء"},"description":{"en":"Use this device class for any type of air treatment appliance, when the `dehumidifier`, `humidifier`, `diffuser` or `airpurifier` device class doesn\'t apply. Could be for combi units.","da":"Brug denne enhedsklasse til alle typer luftbehandlingsapparater, når enhedsklasserne `affugter`, `luftfugter`, `aromalampe` eller `luftrenser` ikke gælder. Kunne være til kombi-enheder.","de":"Verwenden Sie diese Geräteklasse für alle Arten von Luftbehandlungsgeräten, wenn die Geräteklassen „Luftentfeuchter“, „Luftbefeuchter“, „Zerstäuber“ oder „Luftreiniger“ nicht zutreffen. Dies kann etwa für Kombigeräte der Fall sein.","es":"Utiliza esta clase de dispositivo para cualquier tipo de aparato de tratamiento del aire que no pertenezca a las clases \\"Deshumidificador\\", \\"Humidificador\\", \\"Difusor\\" ni \\"Purificador de aire\\". Puede servir para unidades combinadas.","fr":"Utilisez cette classe d\'appareil pour tout type d\'appareil de traitement de l\'air, lorsque la classe d\'appareil \\"déshumidificateur\\", \\"humidificateur\\", \\"diffuseur\\" ou \\"purificateur d\'air\\" ne s\'applique pas. Il peut s\'agir d\'unités combinées.","it":"Utilizza questa classe di dispositivi per qualsiasi tipo di dispositivo per il trattamento dell\'aria, quando la classe \\"deumidificatore\\", \\"umidificatore\\", \\"diffusore\\" o \\"purificatore d\'aria\\" non è applicabile. Può essere utilizzata per le unità combinate.","ko":"이 디바이스 클래스는 \'dehumidifier\', \'humidifier\', \'diffuser\', \'airpurifier\' 디바이스 클래스가 적용되지 않는 공기 처리 가전에 사용합니다. 복합형 유닛에도 사용할 수 있습니다.","nl":"Gebruik deze apparaatklasse voor elk type luchtbehandelingsapparaat wanneer de apparaatklasse \'luchtontvochtiger\', \'luchtbevochtiger\', \'diffuser\' of \'luchtreiniger\' niet van toepassing is. Kan voor combi-eenheden zijn.","no":"Bruk denne enhetsklassen for alle typer luftbehandlingsapparater som ikke dekkes av enhetsklassene «luftavfukter», «luftfukter», «duftspreder» eller «luftrenser». Kan brukes for kombienheter.","pl":"Użyj tej klasy urządzeń dla dowolnego typu urządzenia do uzdatniania powietrza, gdy klasa urządzeń „osuszacz\\", „nawilżacz”, „dyfuzor” lub „oczyszczacz powietrza” nie ma zastosowania. Może dotyczyć jednostek combi.","ru":"Используйте этот класс устройств для любых устройств обработки воздуха, которые не относятся к классу устройств «осушитель воздуха», «увлажнитель воздуха», «диффузор» или «очиститель воздуха». Может использоваться для комбинированных устройств.","sv":"Använd den här enhetsklassen för alla typer av luftbehandlingsapparater när apparatklasserna \\"avfuktare\\", \\"luftavfuktare\\", \\"diffusor\\" eller \\"luftrenare\\" inte är tillämpliga. Kan vara för kombienheter.","ar":"استخدم فئة الجهاز هذه لأي نوع من أجهزة معالجة الهواء، عندما لا تنطبق فئة الجهاز \'مزيل الرطوبة\' أو \'مرطب الهواء\' أو \'ناشر الرائحة\' أو \'منقي الهواء\'. يمكن أن يكون للوحدات المجمعة."},"virtualTitle":{"en":"What\'s the type?","da":"Hvad er typen?","de":"Um welchen Typ handelt es sich?","es":"¿De qué tipo es?","fr":"Quel est le type ?","it":"Di che tipo è?","ko":"어떤 유형인가요?","nl":"Wat is het type?","no":"Hvilken type er det?","pl":"Jaki to typ?","ru":"Какой тип?","sv":"Vad är det för typ?","ar":"ما هو النوع؟"},"allowedVirtual":["airpurifier","dehumidifier","diffuser","humidifier"],"minCompatibility":"12.0.0"}')},2177:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"EV Charger","da":"Ladestationer til elbiler","de":"E-Auto-Ladegerät","es":"Cargador de vehículo eléctrico","fr":"Chargeur EV","it":"Caricatore di veicoli elettrici","ko":"전기차 충전기","nl":"EV-lader","no":"Elbillader","pl":"Ładowarka pojazdów elektrycznych","ru":"Зарядное устройство для электромобилей","sv":"Laddare för elfordon","ar":"شاحن سيارة كهربائية"},"description":{"en":"Use this device class for EV chargers.","da":"Brug denne enhedsklasse til ladestationer til elbiler.","de":"Verwenden Sie diese Geräteklasse für E-Auto-Ladegeräte.","es":"Utiliza esta clase de dispositivo para cargadores de vehículos eléctricos.","fr":"Utilisez cette classe d\'appareils pour les chargeurs de véhicules électriques.","it":"Utilizza questa classe di dispositivi per i caricatori di veicoli elettrici.","ko":"이 디바이스 클래스는 EV 충전기에 사용합니다.","nl":"Gebruik deze apparaatklasse voor EV-laders.","no":"Bruk denne enhetsklassen for elbilladere.","pl":"Ta klasa urządzeń jest przeznaczona dla ładowarek pojazdów elektrycznych.","ru":"Используйте этот класс устройств для зарядных устройств для электромобилей.","sv":"Använd den hät enhetsklassen för elfordonsladdare.","ar":"استخدم فئة الجهاز هذه لشواحن السيارات الكهربائية."},"minCompatibility":"12.0.0"}')},2182:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Grill","da":"Grill","es":"Parrilla","fr":"Gril","it":"Griglia","ko":"그릴","nl":"Grill","no":"Grill","pl":"Grill","ru":"Гриль","sv":"Grill","ar":"شواية","de":"Grill"},"description":{"en":"Use this device class for grills.","da":"Brug denne enhedsklasse til grill.","de":"Verwenden Sie diese Geräteklasse für Grills.","es":"Utiliza esta clase de dispositivo para parrillas.","fr":"Utilisez cette classe d\'appareils pour les grils.","it":"Utilizza questa classe di dispositivi per le griglie.","ko":"이 디바이스 클래스는 그릴에 사용합니다.","nl":"Gebruik deze apparaatklasse voor grills.","no":"Bruk denne enhetsklassen for griller.","pl":"Tej klasy urządzeń należy używać w przypadku grilli.","ru":"Используйте этот класс устройств для грилей.","sv":"Använd den här enhetsklassen för grillar.","ar":"استخدم فئة الجهاز هذه للشوايات."},"minCompatibility":"12.0.0"}')},2190:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"PM2.5 Alarm","nl":"PM2,5-alarm","de":"PM2.5-Alarm","fr":"Alarme PM2.5","it":"Allarme PM2.5","sv":"PM2.5-larm","no":"PM2.5-alarm","es":"Alarma de PM2,5","da":"PM2,5-alarm","ru":"Сигнал ТЧ2.5","pl":"Alarm PM2.5","ko":"초미세먼지(PM2.5) 알람","ar":"إنذار PM2.5"},"titleShort":{"en":"PM2.5","nl":"PM2.5","de":"PM2.5","fr":"PM2.5","it":"PM2.5","sv":"PM2.5","no":"PM2.5","es":"PM2,5","da":"PM2,5","ru":"ТЧ2,5","pl":"PM2,5","ko":"PM2.5","ar":"PM2.5"},"desc":{"en":"True when PM2.5 values exceeds threshold","nl":"Gaat af wanneer de PM2,5 waarde overschreden wordt","de":"True, wenn PM2.5-Werte die Schwelle überschreiten","fr":"Vrai si les valeurs PM2.5 excèdent un seuil","it":"Vero quando i valori PM2.5 superano la soglia","sv":"Sant när PM2.5-värdena överstiger gränsvärdet","no":"Sant når PM2.5-verdiene overskrider grenseverdien","es":"Activado cuando los valores de PM2,5 superan el límite","da":"Sandt, når PM2,5-værdier overskrider grænseværdien","ru":"Значение «истина» при превышении контрольного значения ТЧ 2.5","pl":"Prawda, gdy wartości PM2.5 przekaczają próg","ko":"PM2.5 값이 임계값을 초과하면 참","ar":"صحيح عندما تتجاوز قيم PM2.5 الحد"},"insights":true,"insightsTitleTrue":{"en":"PM2.5 alarm turned on","nl":"PM2,5 alarm ging af","de":"PM2.5-Alarm ist angegangen","fr":"Alarme PM2.5 s\'est activée","it":"Allarme PM2.5 attivato","sv":"PM2.5-larm aktiverat","no":"PM2.5-alarm aktivert","es":"Alarma de PM2,5 activada","da":"PM2,5-alarm blev aktiveret","ru":"Сигнал ТЧ 2.5 включен","pl":"Alarm PM2.5 włączony","ko":"초미세먼지(PM2.5) 알람 켜짐","ar":"تم تشغيل إنذار PM2.5"},"insightsTitleFalse":{"en":"PM2.5 alarm turned off","nl":"PM2,5 alarm ging uit","de":"PM2.5-Alarm ist ausgegangen","fr":"Alarme PM2.5 s\'est désactivée","it":"Allarme PM2.5 disattivato","sv":"PM2.5-larm inaktiverat","no":"PM2.5-alarm deaktivert","es":"Alarma de PM2,5 desactivada","da":"PM2,5-alarm blev deaktiveret","ru":"Сигнал ТЧ 2.5 выключен","pl":"Alarm PM2.5 wyłączony","ko":"초미세먼지(PM2.5) 알람 꺼짐","ar":"تم إيقاف إنذار PM2.5"},"color":"#E02020","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_pm25_true","highlight":true,"title":{"en":"The PM2.5 alarm turned on","nl":"Het PM2,5 gaat aan","de":"Der PM2.5-Alarm ist angegangen","fr":"L\'alarme PM2.5 s\'est activée","it":"L\'allarme PM2.5 è stato attivato","sv":"PM2.5-larmet aktiverat","no":"PM2.5-alarmen ble aktivert","es":"La alarma de PM2,5 se ha activado","da":"PM2,5-alarmen blev aktiveret","ru":"Сигнал ТЧ 2.5 включен","pl":"Alarm PM2.5 włączony","ko":"초미세먼지(PM2.5) 알람이 \'예\'이면","ar":"تم تشغيل إنذار PM2.5"}},{"id":"alarm_pm25_false","title":{"en":"The PM2.5 alarm turned off","nl":"Het PM2,5 gaat uit","de":"Der PM2.5-Alarm ist ausgegangen","fr":"L\'alarme PM2.5 s\'est désactivée","it":"L\'allarme PM2.5 è stato disattivato","sv":"PM2.5-larmet inaktiverat","no":"PM2.5-alarmen ble deaktivert","es":"La alarma de PM2,5 se ha desactivado","da":"PM2,5-alarmen blev deaktiveret","ru":"Сигнал ТЧ 2.5 выключен","pl":"Alarm PM2.5 wyłączony","ko":"초미세먼지(PM2.5) 알람이 \'아니요\'이면","ar":"تم إيقاف إنذار PM2.5"}}],"conditions":[{"id":"alarm_pm25","title":{"en":"The PM2.5 alarm is !{{on|off}}","nl":"Het PM2,5 alarm is !{{aan|uit}}","de":"Der PM2.5-Alarm ist !{{an|aus}}","fr":"L\'alarme PM2.5 est !{{en marche|arrêtée}}","it":"L\'allarme PM2.5 è !{{acceso|spento}}","sv":"PM2.5-larmet är !{{på|av}}","no":"PM2.5-alarmen er !{{på|av}}","es":"La alarma de PM2,5 está !{{activada|desactivada}}","da":"PM2,5-alarmen er !{{tændt|slukket}}","ru":"Сигнал ТЧ 2.5 !{{вкл.|выкл.}}","pl":"Alarm PM2.5 jest !{{włączony|wyłączony}}","ko":"초미세먼지(PM2.5) 알람이 !{{\'예\'|\'아니요\'}}이면","ar":"إنذار PM2.5 !{{يعمل|لا يعمل}}"}}]}}')},2254:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Speed","nl":"Snelheid","da":"Hastighed","it":"Velocità","ko":"속도","pl":"Prędkość","ru":"Скорость","sv":"Hastighet","es":"Velocidad","fr":"Vitesse","no":"Hastighet","ar":"السرعة","de":"Geschwindigkeit"},"units":{"en":"m/s","nl":"m/s","da":"m/s","it":"m/s","ko":"m/s","pl":"m/s","ru":"м/с","sv":"m/s","es":"m/s","fr":"m/s","no":"m/s","ar":"م/ث","de":"m/s"},"desc":{"en":"The speed in meters per second.","nl":"De snelheid in meters per seconde.","da":"Hastigheden i meter pr. sekund.","it":"La velocità in metri al secondo.","ko":"초당 미터 단위의 속도입니다.","pl":"Prędkość w metrach na sekundę.","ru":"Скорость в метрах в секунду.","sv":"Hastigheten i meter per sekund.","es":"La velocidad en metros por segundo.","fr":"La vitesse en mètres par seconde.","no":"Hastigheten i meter per sekund.","ar":"السرعة بالمتر في الثانية.","de":"Die Geschwindigkeit in Metern pro Sekunde."},"insights":true,"chartType":"spline","decimals":2,"color":"#32C5FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_speed_changed","title":{"en":"The speed changed","nl":"De snelheid is veranderd","da":"Hastigheden ændrede sig","it":"La velocità è cambiata","ko":"속도가 변경되면","pl":"Zmieniła się prędkość","ru":"Скорость изменилась","sv":"Hastigheten ändrades","es":"La velocidad ha cambiado","fr":"La vitesse a changé","no":"Hastigheten ble endret","ar":"تغيرت السرعة","de":"Die Geschwindigkeit hat sich geändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":2}]}]},"minCompatibility":"12.2.0"}')},2269:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Signal Strength","nl":"Signaalsterkte","da":"Signalstyrke","it":"Intensità del segnale","ko":"신호 세기","pl":"Siła sygnału","ru":"Мощность сигнала","sv":"Signalstyrka","es":"Intensidad de la señal","fr":"Intensité du signal","no":"Signalstyrke","ar":"قوة الإشارة","de":"Signalstärke"},"units":{"en":"dB","nl":"dB","da":"dB","it":"dB","ko":"dB","pl":"dB","ru":"дБ","sv":"dB","es":"dB","fr":"dB","no":"dB","ar":"دييسيبل","de":"dB"},"desc":{"en":"The signal strength in decibels.","nl":"De signaalsterkte in decibel.","da":"Signalstyrken i decibel.","it":"L\'intensità del segnale in decibel.","ko":"데시벨 단위의 신호 강도입니다.","pl":"Siła sygnału w decybelach.","ru":"Мощность сигнала в децибелах.","sv":"Signalstyrkan i decibel.","es":"La intensidad de la señal en decibelios.","fr":"L\'intensité du signal en décibels.","no":"Signalstyrken i desibel.","ar":"قوة الإشارة بالديسيبل.","de":"Die Signalstärke in Dezibel."},"insights":true,"chartType":"spline","decimals":2,"color":"#6236FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_signal_strength_changed","title":{"en":"The signal strength changed","nl":"De signaalsterkte is veranderd","da":"Signalstyrken ændrede sig","it":"L\'intensità del segnale è cambiata","ko":"신호 세기가 변경되면","pl":"Zmieniła się siła sygnału","ru":"Мощность сигнала изменилась","sv":"Signalstyrkan har ändrats","es":"La intensidad de la señal ha cambiado","fr":"L\'intensité du signal a changé","no":"Signalstyrken ble endret","ar":"تغيرت قوة الإشارة","de":"Die Signalstärke hat sich geändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":2}]}]},"minCompatibility":"12.2.0"}')},2303:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Fridge","da":"Køleskab","de":"Kühlschrank","es":"Frigorífico","fr":"Réfrigérateur","it":"Frigorifero","ko":"냉장고","nl":"Koelkast","no":"Kjøleskap","pl":"Lodówka","ru":"Холодильник","sv":"Kylskåp","ar":"ثلاجة"},"description":{"en":"Use this device class for any kind of fridge, if it is a fridge/freezer use \'fridge_and_freezer\'.","da":"Brug denne enhedsklasse til alle slags køleskabe. Hvis det er et køleskab/fryser, skal du bruge \'fridge_and_freezer\'.","de":"Verwenden Sie diese Geräteklasse für jede Art von Kühlschrank. Wenn es sich um einen Kühl-/Gefrierschrank handelt, verwenden Sie „fridge_and_freezer“.","es":"Utiliza esta clase de dispositivo para cualquier tipo de frigorífico. Si se trata de un frigorífico con congelador, utiliza la clase \'fridge_and_freezer\'.","fr":"Utilisez cette classe d\'appareils pour tout type de réfrigérateur. S\'il s\'agit d\'un réfrigérateur/congélateur, utilisez \\"fridge_and_freezer\\".","it":"Utilizza questa classe di dispositivi per qualsiasi tipo di frigorifero, se si tratta di un frigorifero/congelatore utilizza \\"fridge_and_freezer\\".","ko":"이 디바이스 클래스는 모든 종류의 냉장고에 사용하며, 냉장/냉동고의 경우 \'fridge_and_freezer\'를 사용합니다.","nl":"Gebruik deze apparaatklasse voor elke soort koelkast, als het een koelkast/vriezer is gebruik dan \'fridge_and_freezer\'.","no":"Bruk denne enhetsklassen for alle slags kjøleskap. For kombinert kjøleskap/fryser, bruk «fridge_and_freezer».","pl":"Tej klasy urządzeń należy używać dla każdego rodzaju lodówki, jeśli jest to lodówka/zamrażarka, należy użyć klasy „fridge_and_freezer”.","ru":"Используйте этот класс устройств для холодильников любого типа; в случае холодильника-морозильника используйте fridge_and_freezer.","sv":"Använd den här enhetsklassen för alla typer av kylskåp, om det är en kyl/frys ska du använda \'fridge_and_freezer\'.","ar":"استخدم فئة الجهاز هذه لأي نوع من الثلاجات، إذا كانت ثلاجة/مجمد مدمج، فاستخدم \'fridge_and_freezer\'."},"minCompatibility":"12.0.0"}')},2362:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Target power mode","nl":"Doelvermogensmodus","de":"Zielleistungsmodus","fr":"Mode de puissance cible","it":"Modalità potenza target","sv":"Måleffektläge","no":"Ønsket effekt-modus","es":"Modo de potencia objetivo","da":"Måleffekttilstand","ru":"Режим целевой мощности","pl":"Tryb mocy docelowej","ko":"충전전력 제한 모드","ar":"وضع الطاقة المستهدفة"},"desc":{"en":"The target power control mode","nl":"Besturingsmodus met doelvermogen","de":"Der Zielleistungs-Steuermodus","fr":"Le mode de contrôle de puissance cible","it":"La modalità di controllo della potenza target","sv":"Måleffektens styrläge","no":"Styringsmodus for ønsket effekt","es":"El modo de control de potencia objetivo","da":"Måleffektens kontroltilstand","ru":"Режим управления целевой мощностью","pl":"Tryb sterowania mocą docelową","ko":"충전전력 제한 제어 모드","ar":"وضع التحكم في الطاقة المستهدفة"},"values":[{"id":"device","title":{"en":"Automatic","nl":"Automatisch","de":"Automatisch","fr":"Automatique","it":"Automatico","sv":"Automatisk","no":"Automatisk","es":"Automático","da":"Automatisk","ru":"Автоматический","pl":"Automatyczny","ko":"자동","ar":"تلقائي"}},{"id":"homey","title":{"en":"Homey","nl":"Homey","de":"Homey","fr":"Homey","it":"Homey","sv":"Homey","no":"Homey","es":"Homey","da":"Homey","ru":"Homey","pl":"Homey","ko":"Homey","ar":"Homey"}}],"color":"#6DD400","getable":true,"setable":true,"uiComponent":"picker","minCompatibility":"12.13.0","$flow":{"triggers":[{"id":"target_power_mode_changed","title":{"en":"The target power mode changed to","nl":"De doelvermogensmodus is veranderd naar","de":"Der Zielleistungsmodus wurde geändert auf","fr":"Le mode de puissance cible est passé à","it":"La modalità potenza target è passata a","sv":"Måleffektläget ändrades till","no":"Ønsket effekt-modus ble endret til","es":"El modo de potencia objetivo ha cambiado a","da":"Måleffekttilstanden blev ændret til","ru":"Режим целевой мощности изменен на","pl":"Tryb mocy docelowej zmienił się na","ko":"충전전력 제한 모드가 다음으로 변경되면","ar":"تم تغيير وضع الطاقة المستهدفة إلى"},"hint":{"en":"\\"Homey\\" means Homey controls the device’s target power. Other modes are determined by the device.","nl":"\'Homey\' betekent dat Homey het doelvermogen van het apparaat regelt. Andere modi worden bepaald door het apparaat.","de":"„Homey“ bedeutet, dass Homey die Sollleistung des Geräts steuert. Andere Modi werden vom Gerät selbst festgelegt.","fr":"« Homey » signifie que Homey contrôle la puissance cible de l\'appareil. Les autres modes sont déterminés par l\'appareil.","it":"\\"Homey\\" significa che Homey controlla la potenza target del dispositivo. Le altre modalità sono determinate dal dispositivo.","sv":"\\"Homey\\" innebär att Homey styr enhetens måleffekt. Andra lägen bestäms av enheten.","no":"«Homey» betyr at Homey styrer ønsket effekt for enheten. Andre moduser bestemmes av enheten.","es":"\\"Homey\\" significa que Homey controla la potencia objetivo del dispositivo. Los demás modos los determina el dispositivo.","da":"\\"Homey\\" betyder, at Homey styrer enhedens måleffekt. Andre tilstande bestemmes af enheden.","ru":"Режим «Homey» означает, что Homey управляет целевой мощностью устройства. Другие режимы определяются устройством.","pl":"„Homey“ oznacza, że Homey steruje mocą docelową urządzenia. Pozostałe tryby są określane przez urządzenie.","ko":"\\"Homey\\"는 Homey가 제품의 충전전력 제한을 제어한다는 의미예요. 다른 모드는 제품에 의해 결정됩니다.","ar":"\\"Homey\\" يعني أن Homey يتحكم في الطاقة المستهدفة للجهاز. والأوضاع الأخرى يحددها الجهاز."},"args":[{"name":"target_power_mode","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"target_power_mode_is","title":{"en":"The target power mode !{{is|is not}}","nl":"De doelvermogensmodus !{{is|is niet}}","de":"Der Zielleistungsmodus !{{ist|ist nicht}}","fr":"Le mode de puissance cible !{{est|n\'est pas}}","it":"La modalità potenza target !{{è|non è}}","sv":"Måleffektläget !{{är|är inte}}","no":"Ønsket effekt-modus !{{er|er ikke}}","es":"El modo de potencia objetivo !{{es|no es}}","da":"Måleffekttilstanden !{{er|er ikke}}","ru":"Режим целевой мощности !{{|не}}","pl":"Tryb mocy docelowej !{{jest|nie jest}}","ko":"충전전력 제한 모드가 다음!{{이면|이 아니면}}","ar":"وضع الطاقة المستهدفة !{{هو|ليس}}"},"hint":{"en":"\\"Homey\\" means Homey controls the device’s target power. Other modes are determined by the device.","nl":"\'Homey\' betekent dat Homey het doelvermogen van het apparaat regelt. Andere modi worden bepaald door het apparaat.","de":"„Homey“ bedeutet, dass Homey die Sollleistung des Geräts steuert. Andere Modi werden vom Gerät selbst festgelegt.","fr":"« Homey » signifie que Homey contrôle la puissance cible de l\'appareil. Les autres modes sont déterminés par l\'appareil.","it":"\\"Homey\\" significa che Homey controlla la potenza target del dispositivo. Le altre modalità sono determinate dal dispositivo.","sv":"\\"Homey\\" innebär att Homey styr enhetens måleffekt. Andra lägen bestäms av enheten.","no":"«Homey» betyr at Homey styrer ønsket effekt for enheten. Andre moduser bestemmes av enheten.","es":"\\"Homey\\" significa que Homey controla la potencia objetivo del dispositivo. Los demás modos los determina el dispositivo.","da":"\\"Homey\\" betyder, at Homey styrer enhedens måleffekt. Andre tilstande bestemmes af enheden.","ru":"Режим «Homey» означает, что Homey управляет целевой мощностью устройства. Другие режимы определяются устройством.","pl":"„Homey“ oznacza, że Homey steruje mocą docelową urządzenia. Pozostałe tryby są określane przez urządzenie.","ko":"\\"Homey\\"는 Homey가 제품의 충전전력 제한을 제어한다는 의미예요. 다른 모드는 제품에 의해 결정됩니다.","ar":"\\"Homey\\" يعني أن Homey يتحكم في الطاقة المستهدفة للجهاز. والأوضاع الأخرى يحددها الجهاز."},"args":[{"name":"target_power_mode","type":"dropdown","values":"$values"}]}],"actions":[{"id":"target_power_mode_set","title":{"en":"Set the target power mode to","nl":"Stel de doelvermogensmodus in op","de":"Stelle den Zielleistungsmodus auf","fr":"Définir le mode de puissance cible sur","it":"Imposta la modalità potenza target su","sv":"Ställ in måleffektläget på","no":"Sett ønsket effekt-modus til","es":"Ajustar el modo de potencia objetivo en","da":"Indstil måleffekttilstanden til","ru":"Установить режим целевой мощности на","pl":"Ustaw tryb mocy docelowej na","ko":"충전전력 제한 모드를 다음으로 설정","ar":"ضبط وضع الطاقة المستهدفة على"},"hint":{"en":"To control the target power of this device via Homey, select \\"Homey\\". Other modes are determined by the device.","nl":"Selecteer \'Homey\' om het doelvermogen van dit apparaat via Homey te regelen. Andere modi worden bepaald door het apparaat.","de":"Um die Sollleistung dieses Geräts über Homey zu steuern, wählen Sie „Homey“ aus. Andere Modi werden vom Gerät selbst festgelegt.","fr":"Pour contrôler la puissance cible de cet appareil via Homey, sélectionnez « Homey ». Les autres modes sont déterminés par l\'appareil.","it":"Per controllare la potenza target di questo dispositivo tramite Homey, seleziona \\"Homey\\". Le altre modalità sono determinate dal dispositivo.","sv":"För att styra måleffekten för denna enhet via Homey, välj \\"Homey\\". Andra lägen bestäms av enheten.","no":"For å styre ønsket effekt for denne enheten med Homey, velg «Homey». Andre moduser bestemmes av enheten.","es":"Selecciona \\"Homey\\" para controlar la potencia objetivo de este dispositivo a través de Homey. Los demás modos los determina el dispositivo.","da":"For at styre denne enheds måleffekt via Homey skal du vælge \\"Homey\\". Andre tilstande bestemmes af enheden.","ru":"Чтобы управлять целевой мощностью этого устройства через Homey, выберите режим «Homey». Другие режимы определяются устройством.","pl":"Aby sterować mocą docelową tego urządzenia przez Homey, wybierz „Homey“. Pozostałe tryby są określane przez urządzenie.","ko":"이 제품의 충전전력 제한을 Homey를 통해 제어하려면 \\"Homey\\"를 선택하세요. 다른 모드는 제품에 의해 결정됩니다.","ar":"للتحكم في الطاقة المستهدفة لهذا الجهاز عبر Homey، اختر \\"Homey\\". والأوضاع الأخرى يحددها الجهاز."},"args":[{"name":"target_power_mode","type":"dropdown","values":"$values"}]}]}}')},2391:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Microwave Mode","ar":"وضع الميكروويف","da":"Mikrobølgetilstand","de":"Mikrowellen-Modus","es":"Modo microondas","fr":"Mode du micro-ondes","it":"Modalità microonde","ko":"전자레인지 모드","nl":"Magnetronstand","no":"Mikrobølgemodus","pl":"Tryb mikrofalówki","ru":"Режим микроволновой печи","sv":"Mikrovågsläge"},"desc":{"en":"The microwave mode.","ar":"وضع الميكروويف.","da":"Mikrobølgetilstanden.","de":"Der Mikrowellen-Modus.","es":"El modo microondas.","fr":"Le mode du micro-ondes.","it":"La modalità del microonde.","ko":"전자레인지 모드입니다.\\n","nl":"De magnetronstand.","no":"Mikrobølgemodusen.","pl":"Tryb mikrofalówki.","ru":"Режим микроволновой печи.","sv":"Mikrovågsläget."},"values":[{"id":"normal","title":{"en":"Normal","nl":"Normaal","da":"Normal","it":"Normale","ko":"보통","pl":"Normalny","ru":"Стандарт","sv":"Normal","es":"Normal","fr":"Normal","no":"Standard","ar":"عادي","de":"Normal"}},{"id":"defrost","title":{"en":"Defrost","ar":"إزالة الصقيع","da":"Optøning","de":"Auftauen","es":"Descongelar","fr":"Décongélation","it":"Scongelare","ko":"해동","nl":"Ontdooien","no":"Tining","pl":"Rozmrażanie","ru":"Размораживание","sv":"Upptining"}},{"id":"reheat","title":{"en":"Reheat","ar":"إعادة التسخين","da":"Genopvarmning","de":"Aufwärmen","es":"Recalentar","fr":"Réchauffer","it":"Riscaldare","ko":"재가열","nl":"Opwarmen","no":"Oppvarming","pl":"Odgrzewanie","ru":"Подогрев","sv":"Återuppvärmning"}}],"color":"#FA6400","getable":true,"setable":true,"uiComponent":"picker","$flow":{"triggers":[{"id":"microwave_mode_changed","highlight":true,"title":{"en":"The microwave mode changed to","ar":"تغير وضع الميكروويف إلى","da":"Mikrobølgetilstanden skiftede til","de":"Der Mikrowellen-Modus wurde geändert auf","es":"El modo microondas ha cambiado a","fr":"Le mode du micro-ondes est passé à","it":"La modalità del microonde è passata a","ko":"전자레인지 모드가 다음으로 변경되면","nl":"De magnetronstand veranderde naar","no":"Mikrobølgemodusen ble endret til","pl":"Tryb mikrofalówki zmienił się na","ru":"Режим микроволновой печи изменен на","sv":"Mikrovågsläget ändrades till"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"microwave_mode_is","title":{"en":"The microwave mode !{{is|is not}}","ar":"وضع الميكروويف !{{هو|ليس}}","da":"Mikrobølgetilstanden !{{er|er ikke}}","de":"Der Mikrowellen-Modus !{{ist|ist nicht}}","es":"El modo microondas !{{está|no está}}","fr":"Le mode du micro-ondes !{{est|n\'est pas}}","it":"La modalità del microonde !{{è|non è}}","ko":"전자레인지 모드가 다음!{{이면|이 아니면}}","nl":"De magnetronstand !{{is|is niet}}","no":"Mikrobølgemodusen !{{er|er ikke}}","pl":"Tryb mikrofalówki !{{jest|nie jest}}","ru":"Режим микроволновой печи — !{{ | не}}","sv":"Mikrovågsläget !{{är|är inte}}"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}],"actions":[{"id":"set_microwave_mode","title":{"en":"Set the microwave mode to","ar":"اضبط وضع الميكروويف على","da":"Indstil mikrobølgetilstanden til","de":"Stellen Sie den Mikrowellen-Modus auf","es":"Establece el modo microondas en","fr":"Réglez le mode du micro-ondes sur","it":"Imposta la modalità del microonde su","ko":"전자레인지 모드를 다음으로 설정","nl":"Stel de magnetronstand in op","no":"Sett mikrobølgemodusen til","pl":"Ustaw tryb mikrofalówki na","ru":"Установить режим микроволновой печи на","sv":"Ställ in mikrovågsläget på"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.11.0"}')},2440:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Other","nl":"Overig","de":"Andere","fr":"Autre","it":"Altro","sv":"Övrigt","no":"Annet","es":"Otro","da":"Andet","ru":"Другое","pl":"Inne","ko":"기타","ar":"أخرى"},"description":{"en":"Use this device class for devices that do not fit any other device class.","de":"Nutze diese Geräteklasse für Geräte, die nicht in andere Geräteklassen passen.","fr":"Utilisez cette classe d\'appareil pour les appareils qui ne correspondent à aucune autre classe d\'appareil.","it":"Utilizza questa classe di dispositivi per gli apparecchi che non appartengono a nessun\'altra classe di dispositivi.","sv":"Använd den här enhetsklassen för enheter som inte passar i någon annan enhetsklass.","no":"Bruk denne enhetsklassen for enheter som ikke passer inn i noen annen enhetsklasse.","es":"Utiliza esta clase de dispositivo para los dispositivos que no se ajusten a ninguna otra clase.","da":"Brug denne enhedsklasse til enheder, der ikke hører til i andre enhedsklasse.","ru":"Используйте этот класс устройств для устройств, которые не подходят ни к одному другому классу.","pl":"Użyj tej klasy urządzeń dla produktów, które nie odpowiadają żadnej klasie urządzeń.","ko":"이 디바이스 클래스는 다른 디바이스 클래스에 속하지 않은 디바이스에 사용합니다.","ar":"استخدم فئة الجهاز هذه للأجهزة التي لا تناسب أي فئة أجهزة أخرى.","nl":"Gebruik deze apparaatklasse voor apparaten die niet in een andere apparaatklasse passen."}}')},2477:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Generic Alarm","nl":"Algemeen alarm","de":"Allgemeiner Alarm","fr":"Alarme générique","it":"Allarme generico","sv":"Generiskt larm","no":"Generell alarm","es":"Alarma genérica","da":"Generisk alarm","ru":"Общий сигнал","pl":"Alarm ogólny","ko":"알람","ar":"إنذار عام"},"titleShort":{"en":"Generic","nl":"Algemeen","de":"Allgemein","fr":"Générique","it":"Generico","sv":"Generisk","no":"Generell","es":"Genérica","da":"Generisk","ru":"Общий","pl":"Ogólny","ko":"일반","ar":"عام"},"desc":{"en":"Generic alarm","nl":"Algemeen alarm","de":"Allgemeiner Alarm","fr":"Alarme générique","it":"Allarme generico","sv":"Generiskt larm","no":"Generell alarm","es":"Alarma general","da":"Generisk alarm","ru":"Общий сигнал","pl":"Alarm ogólny","ko":"일반 알람","ar":"إنذار عام"},"insights":true,"insightsTitleTrue":{"en":"Generic alarm turned on","nl":"Algemeen alarm ging af","de":"Allgemeiner Alarm ist angegangen","fr":"Alarme générique s\'est activée","it":"Allarme generico attivato","sv":"Generiskt larm aktiverat","no":"Generell alarm aktivert","es":"Alarma general activada","da":"Generisk alarm blev aktiveret","ru":"Общий сигнал включен","pl":"Alarm ogólny włączony","ko":"알람 켜짐","ar":"تم تشغيل الإنذار العام"},"insightsTitleFalse":{"en":"Generic alarm turned off","nl":"Algemeen alarm ging uit","de":"Allgemeiner Alarm ist ausgegangen","fr":"Alarme générique s\'est désactivée","it":"Allarme generico disattivato","sv":"Generiskt larm inaktiverat","no":"Generell alarm deaktivert","es":"Alarma general desactivada","da":"Generisk alarm blev deaktiveret","ru":"Общий сигнал выключен","pl":"Alarm ogólny wyłączony","ko":"알람 꺼짐","ar":"تم إيقاف الإنذار العام"},"color":"#9033FC","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_generic_true","title":{"en":"The generic alarm turned on","nl":"Het algemene alarm gaat aan","de":"Der allgemeine Alarm ist angegangen","fr":"L\'alarme générique s\'est activée","it":"L\'allarme generico è stato attivato","sv":"Det generiska larmet är aktiverat","no":"Den generelle alarmen ble aktivert","es":"La alarma general se ha activado","da":"Den generiske alarm blev aktiveret","ru":"Общий сигнал включен","pl":"Alarm ogólny włączony","ko":"알람이 켜지면","ar":"تم تشغيل الإنذار العام"}},{"id":"alarm_generic_false","title":{"en":"The generic alarm turned off","nl":"Het algemene alarm ging uit","de":"Der allgemeine Alarm ist ausgegangen","fr":"L\'alarme générique s\'est désactivée","it":"L\'allarme generico è stato disattivato","sv":"Det generiska larmet är inaktiverat","no":"Den generelle alarmen ble deaktivert","es":"La alarma general se ha desactivado","da":"Den generiske alarm blev deaktiveret","ru":"Общий сигнал выключен","pl":"Alarm ogólny wyłączony","ko":"알람이 꺼지면","ar":"تم إيقاف الإنذار العام"}}],"conditions":[{"id":"alarm_generic","title":{"en":"The generic alarm is !{{on|off}}","nl":"Het algemene alarm is !{{aan|uit}}","de":"Der allgemeine Alarm ist !{{an|aus}}","fr":"L\'alarme générique est !{{en marche|arrêtée}}","it":"L\'allarme generico è !{{acceso|spento}}","sv":"Det generiska larmet är !{{på|av}}","no":"Den generelle alarmen er !{{på|av}}","es":"La alarma general está !{{activada|desactivada}}","da":"Den generiske alarm er !{{tændt|slukket}}","ru":"Общий сигнал !{{вкл.|выкл.}}","pl":"Alarm ogólny jest !{{włączony|wyłączony}}","ko":"알람이 !{{켜지면|꺼지면}}","ar":"الإنذار العام !{{يعمل|لا يعمل}}"}}]}}')},2492:e=>{"use strict";e.exports=function(e,t){t||(t={}),"function"==typeof t&&(t={cmp:t});var a,r="boolean"==typeof t.cycles&&t.cycles,i=t.cmp&&(a=t.cmp,function(e){return function(t,r){var i={key:t,value:e[t]},n={key:r,value:e[r]};return a(i,n)}}),n=[];return function e(t){if(t&&t.toJSON&&"function"==typeof t.toJSON&&(t=t.toJSON()),void 0!==t){if("number"==typeof t)return isFinite(t)?""+t:"null";if("object"!=typeof t)return JSON.stringify(t);var a,s;if(Array.isArray(t)){for(s="[",a=0;a{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Media Input","nl":"Media-invoer","da":"Medieindgang","it":"Ingresso multimediale","ko":"미디어 입력","pl":"Wejście multimedialne","ru":"Вход для устройств мультимедиа","sv":"Mediaingång","es":"Entrada de contenido multimedia","fr":"Entrée multimédia","no":"Medieinngang","ar":"مدخل الوسائط","de":"Medieneingang"},"desc":{"en":"The input channel for a media player","nl":"Het invoerkanaal voor een mediaspeler","da":"Indgangskanalen til en medieafspiller","it":"Il canale di ingresso di un lettore multimediale","ko":"미디어 플레이어의 입력 채널","pl":"Kanał wejściowy dla odtwarzacza multimedialnego","ru":"Канал ввода для медиаплеера","sv":"Ingångskanalen för en mediaspelare","es":"El canal de entrada de un reproductor multimedia","fr":"Le canal d\'entrée d\'un lecteur multimédia","no":"Inngangskanalen for en mediespiller","ar":"قناة الإدخال لمشغل الوسائط","de":"Der Eingangskanal für einen Media Player"},"values":[{"id":"hdmi_1","title":{"en":"HDMI 1","nl":"HDMI 1","da":"HDMI 1","it":"HDMI 1","ko":"HDMI 1","pl":"HDMI 1","ru":"HDMI 1","sv":"HDMI 1","es":"HDMI 1","fr":"HDMI 1","no":"HDMI 1","ar":"HDMI 1","de":"HDMI 1"}},{"id":"hdmi_2","title":{"en":"HDMI 2","nl":"HDMI 2","da":"HDMI 2","it":"HDMI 2","ko":"HDMI 2","pl":"HDMI 2","ru":"HDMI 2","sv":"HDMI 2","es":"HDMI 2","fr":"HDMI 2","no":"HDMI 2","ar":"HDMI 2","de":"HDMI 2"}},{"id":"hdmi_3","title":{"en":"HDMI 3","nl":"HDMI 3","da":"HDMI 3","it":"HDMI 3","ko":"HDMI 3","pl":"HDMI 3","ru":"HDMI 3","sv":"HDMI 3","es":"HDMI 3","fr":"HDMI 3","no":"HDMI 3","ar":"HDMI 3","de":"HDMI 3"}},{"id":"usb_1","title":{"en":"USB 1","nl":"USB 1","da":"USB 1","it":"USB 1","ko":"USB 1","pl":"USB 1","ru":"USB 1","sv":"USB 1","es":"USB 1","fr":"USB 1","no":"USB 1","ar":"USB 1","de":"USB 1"}},{"id":"usb_2","title":{"en":"USB 2","nl":"USB 2","da":"USB 2","it":"USB 2","ko":"USB 2","pl":"USB 2","ru":"USB 2","sv":"USB 2","es":"USB 2","fr":"USB 2","no":"USB 2","ar":"USB 2","de":"USB 2"}},{"id":"component","title":{"en":"Component","nl":"Component","da":"Komponent","it":"Componente","ko":"Component","pl":"Komponent","ru":"Компонент","sv":"Komponent","es":"Componente","fr":"Composant","no":"Komponent","ar":"مركب","de":"Komponente"}}],"color":"#9033FC","getable":true,"setable":true,"uiComponent":"picker","$flow":{"triggers":[{"id":"media_input_changed","highlight":true,"title":{"en":"The media input changed to","nl":"De media-invoer is veranderd naar","da":"Medieindgangen blev ændret til","it":"L\'ingresso multimediale è passato a","ko":"미디어 입력이 다음으로 변경되면","pl":"Wejście multimedialne zmieniło się na","ru":"Вход для устройств мультимедиа был изменен на","sv":"Medieuppgifterna ändrades till","es":"La entrada de contenido multimedia ha cambiado a","fr":"L\'entrée multimédia est passée à","no":"Medieinngangen ble endret til","ar":"تغير مدخل الوسائط إلى","de":"Der Medieneingang wurde geändert auf"},"args":[{"name":"input","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"media_input_is","title":{"en":"The media input !{{is|is not}}","nl":"De media-invoer !{{is|is niet}}","da":"Medieindgangen !{{er|er ikke}}","it":"L\'ingresso multimediale !{{è|non è}}","ko":"미디어 입력이 다음!{{이면|이 아니면}}","pl":"Wejście multimedialne !{{jest|nie jest}}","ru":"Вход для устройств мультимедиа !{{|не}}","sv":"Mediaingången !{{är|är inte}}","es":"La entrada de contenido multimedia !{{es|no es}}","fr":"L\'entrée multimédia !{{est|n\'est pas}}","no":"Medieinngangen !{{er|er ikke}}","ar":"مدخل الوسائط !{{هو|ليس}}","de":"Der Medieneingang !{{ist|ist nicht}}"},"args":[{"name":"input","type":"dropdown","values":"$values"}]}],"actions":[{"id":"set_media_input","title":{"en":"Set the media input","nl":"De media-invoer instellen","da":"Indstil medieindgangen","it":"Imposta l\'ingresso multimediale","ko":"미디어 입력 설정","pl":"Ustaw wejście multimedialne","ru":"Установить вход для устройств мультимедиа ","sv":"Ställ in mediaingången","es":"Configurar la entrada de contenido multimedia","fr":"Définir l\'entrée multimédia","no":"Innstill medieinngangen","ar":"ضبط مدخل الوسائط","de":"Medieneingang festlegen"},"args":[{"name":"input","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.2.0"}')},2517:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"PM10","nl":"PM10","de":"PM10","fr":"PM10","it":"PM10","sv":"PM10","no":"PM10","es":"PM10","ru":"ТЧ10","pl":"PM10","ko":"미세먼지(PM10)","da":"PM10","ar":"PM10"},"units":{"en":"μg/m³","ru":"мкг/м³","ko":"μg/m³","no":"μg/m³","da":"μg/m³","it":"μg/m³","nl":"μg/m³","pl":"μg/m³","sv":"μg/m³","es":"μg/m³","fr":"μg/m³","ar":"ميكرو جرام/م³","de":"μg/m³"},"insights":true,"desc":{"en":"Atmospheric particulate matter (μg/m³)","nl":"Zwevende deeltjes (μg/m³)","de":"Atmosphärischer Feinstaub (μg/m³)","fr":"Particules en suspension (μg/m³)","it":"Particolato atmosferico (μg/m³)","sv":"Atmosfäriskt partikelämne (μg/m³)","no":"Svevestøv (μg/m³)","es":"Partículas atmosféricas (μg/m³)","da":"Atmosfæriske partikler (μg/m³)","ru":"Твердые частицы в воздухе (мкг/м³)","pl":"Pył zawieszony w powietrzu (μg/m³)","ko":"대기 중 미세입자 수(μg/m³)","ar":"الجسيمات المعلقة في الغلاف الجوي (ميكرو جرام/م³)"},"chartType":"spline","decimals":2,"color":"#E02020","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_pm10_changed","title":{"en":"The PM10 value has changed","nl":"De PM10-waarde is veranderd","de":"Der PM10-Wert hat sich geändert","fr":"La valeur PM10 a changé","it":"Il valore di PM10 è cambiato","sv":"PM10-värdet har ändrats","no":"PM10-verdien er endret","es":"El valor de PM10 ha cambiado","da":"PM10-værdien har ændret sig","ru":"Значение ТЧ10 изменилось","pl":"Zmieniła się wartość PM10","ko":"미세먼지(PM10) 값이 변경되면","ar":"تغيرت قيمة PM10"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":2}]}]},"minCompatibility":"12.2.0"}')},2519:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Target temperature level","nl":"Gewenst temperatuurniveau","da":"Måltemperaturniveau","it":"Livello di temperatura target","ko":"희망 온도 설정","pl":"Docelowy poziom temperatury","ru":"Уровень заданной температуры","sv":"Nivå för önskad temperatur","es":"Nivel de temperatura deseado","fr":"Niveau de température cible","no":"Ønsket temperaturnivå","ar":"مستوى درجة الحرارة المستهدف","de":"Zieltemperaturniveau"},"desc":{"en":"The target temperature level of the appliance.","nl":"Het gewenste temperatuurniveau van het apparaat.","da":"Apparatets måltemperaturniveau.","it":"Il livello di temperatura target dell\'apparecchio.","ko":"가전의 목표 온도 수준입니다.","pl":"Docelowy poziom temperatury urządzenia.","ru":"Уровень заданной температуры прибора.","sv":"Apparatens önskade temperaturnivå.","es":"El nivel de temperatura deseado del dispositivo.","fr":"Le niveau de température cible de l\'appareil.","no":"Ønsket temperaturnivå for apparatet.","ar":"مستوى درجة الحرارة المستهدف للجهاز.","de":"Das Zieltemperaturniveau des Geräts."},"values":[{"id":"low","title":{"en":"Low","nl":"Laag","da":"Lav","it":"Basso","ko":"낮음","pl":"Niski","ru":"Низкий","sv":"Låg","es":"Bajo","fr":"Faible","no":"Lavt","ar":"منخفض","de":"Niedrig"}},{"id":"medium","title":{"en":"Medium","nl":"Gemiddeld","da":"Medium","it":"Medio","ko":"보통","pl":"Średni","ru":"Средний","sv":"Medium","es":"Intermedio","fr":"Moyen","no":"Middels","ar":"متوسط","de":"Mittel"}},{"id":"high","title":{"en":"High","nl":"Hoog","da":"Høj","it":"Alto","ko":"높음","pl":"Wysoki","ru":"Высокий","sv":"Hög","es":"Alto","fr":"Élevé","no":"Høyt","ar":"عالي","de":"Hoch"}}],"color":"#FA6400","getable":true,"setable":true,"uiComponent":"picker","$flow":{"triggers":[{"id":"target_temperature_level_changed","highlight":true,"title":{"en":"The target temperature level changed to","nl":"Het gewenste temperatuurniveau is veranderd naar","da":"Måltemperaturniveauet ændret til","it":"Il livello di temperatura target è passato a","ko":"희망 온도 설정이 다음으로 변경되면","pl":"Docelowy poziom temperatury zmienił się na","ru":"Уровень заданной температуры изменен на","sv":"Den önskade temperaturnivån ändrades till","es":"El nivel de temperatura deseado ha cambiado a","fr":"Le niveau de température cible est passé à","no":"Ønsket temperaturnivå ble endret til","ar":"تغير مستوى درجة الحرارة المستهدف إلى","de":"Das Zieltemperaturniveau wurde geändert auf"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"target_temperature_level_is","title":{"en":"The target temperature level !{{is|is not}}","nl":"Het gewenste temperatuurniveau !{{is|is niet}}","da":"Måltemperaturniveauet !{{er|er ikke}}","it":"Il livello di temperatura target !{{è|non è}}","ko":"희망 온도 설정이 다음!{{이면|이 아니면}}","pl":"Docelowy poziom temperatury !{{jest|nie jest}}","ru":"Заданный уровень температуры !{{|не}}","sv":"Den önskade temperaturnivån !{{är|är inte}}","es":"El nivel de temperatura deseado !{{es|no es}}","fr":"Le niveau de température cible !{{est|n\'est pas}}","no":"Ønsket temperaturnivå !{{er|er ikke}}","ar":"مستوى درجة الحرارة المستهدف !{{هو|ليس}}","de":"Das Zieltemperaturniveau !{{ist|ist nicht}}"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}],"actions":[{"id":"set_target_temperature_level","title":{"en":"Set the target temperature level to","nl":"Het doeltemperatuurniveau instellen op","da":"Indstil måltemperaturniveauet til","it":"Imposta il livello di temperatura target su","ko":"희망 온도 설정을 다음으로 설정","pl":"Ustaw docelowy poziom temperatury na","ru":"Установить уровень заданной температуры на","sv":"Ställ in önskad temperaturnivå till","es":"Ajustar el nivel de temperatura deseado a","fr":"Définir le niveau de température cible sur","no":"Sett ønsket temperaturnivå til","ar":"ضبط مستوى درجة الحرارة المستهدف على","de":"Stelle das Zieltemperaturniveau auf"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.2.0"}')},2524:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Battery","nl":"Accuniveau","de":"Batterie","fr":"Batterie","it":"Batteria","sv":"Batteri","no":"Batteri","es":"Batería","da":"Batteri","ru":"Аккумулятор","pl":"Bateria","ko":"배터리","ar":"البطارية"},"units":{"en":"%","ko":"%","no":"%","ru":"%","ar":"%","da":"%","de":"%","es":"%","fr":"%","it":"%","nl":"%","pl":"%","sv":"%"},"insights":true,"min":0,"max":100,"desc":{"en":"Battery charge in percentage (%)","nl":"Accuniveau in procenten (%)","de":"Batteriestand in Prozent (%)","fr":"Pourcentage de charge de la batterie (%)","it":"Percentuale di carica della batteria (%)","sv":"Batteriladdning i procent (%)","no":"Batterilading i prosent (%)","es":"Carga de la batería en porcentaje (%)","da":"Batteriniveau i procent (%)","ru":"Зарядка аккумулятора в процентах (%)","pl":"Naładowanie baterii w procentach (%)","ko":"배터리 충전량(%)","ar":"شحن البطارية بالنسبة المئوية (%)"},"chartType":"spline","decimals":2,"color":"#6DD400","getable":true,"setable":false,"uiComponent":"battery","$flow":{"triggers":[{"id":"measure_battery_changed","title":{"en":"The battery level changed","nl":"Het accuniveau is veranderd","de":"Der Batteriestand hat sich geändert","fr":"Le niveau de la batterie a changé","it":"Il livello della batteria è cambiato","sv":"Batterinivån ändrades","no":"Batterinivået ble endret","es":"El nivel de la batería ha cambiado","da":"Batteriniveauet har ændret sig","ru":"Уровень аккумулятора изменен","pl":"Zmienił się poziom baterii","ko":"배터리 수준이 변경되면","ar":"تغير مستوى البطارية"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":99}]}]}}')},2544:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Fire Alarm","nl":"Brandalarm","de":"Feueralarm","fr":"Alarme incendie","it":"Allarme antincendio","sv":"Brandlarm","no":"Brannalarm","es":"Alarma de incendios","da":"Brandalarm","ru":"Пожарный сигнал","pl":"Alarm pożarowy","ko":"화재 감지","ar":"إنذار الحريق"},"titleShort":{"en":"Fire","nl":"Brand","de":"Feuer","fr":"Incendie","it":"Antincendio","sv":"Brand","no":"Brann","es":"Fuego","da":"Brand","ru":"Пожар","pl":"Pożar","ko":"화재","ar":"حريق"},"desc":{"en":"True when fire has been detected","nl":"Gaat af als er brand gedetecteerd wordt","de":"True, wenn Feuer erkannt wurde","fr":"Vrai si un incendie a été détecté","it":"Vero quando è stato rilevato un incendio","sv":"Sant när brand upptäckts","no":"Sann når brann har blitt påvist","es":"Activado cuando se detecta fuego","da":"Sandt, når brand er blevet opdaget","ru":"Значение «истина» при обнаружении огня","pl":"Alarm przeciwpożarowy","ko":"화재가 감지되면 참","ar":"صحيح عند اكتشاف حريق"},"insights":true,"insightsTitleTrue":{"en":"Fire alarm turned on","nl":"Brandalarm ging af","de":"Feuer-Alarm ist angegangen","fr":"Alarme incendie s\'est activée","it":"Allarme antincendio attivato","sv":"Brandlarm aktiverat","no":"Brannalarmen ble aktivert","es":"Alarma de incendios activada","da":"Brandalarm blev aktiveret","ru":"Пожарный сигнал включен","pl":"Adekwatny, kiedy wykryty zostanie pożar","ko":"화재 감지됨","ar":"تم تشغيل إنذار الحريق"},"insightsTitleFalse":{"en":"Fire alarm turned off","nl":"Brandalarm ging uit","de":"Feuer-Alarm ist ausgegangen","fr":"Alarme incendie s\'est désactivée","it":"Allarme antincendio disattivato","sv":"Brandlarm inaktiverat","no":"Brannalarm deaktivert","es":"Alarma de incendios desactivada","da":"Brandalarm blev deaktiveret","ru":"Пожарный сигнал выключен","pl":"Alarm przeciwpożarowy wyłączony","ko":"정상","ar":"تم إيقاف إنذار الحريق"},"color":"#FA6400","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_fire_true","highlight":true,"title":{"en":"The fire alarm turned on","nl":"Het brandalarm gaat aan","de":"Der Feuer-Alarm ist angegangen","fr":"L\'alarme incendie s\'est activée","it":"L\'allarme antincendio è stato attivato","sv":"Brandlarmet aktiverat","no":"Brannalarmen ble aktivert","es":"La alarma de incendios se ha activado","da":"Brandalarmen blev aktiveret","ru":"Пожарный сигнал включен","pl":"Alarm przeciwpożarowy włączony","ko":"화재가 감지되면","ar":"تم تشغيل إنذار الحريق"}},{"id":"alarm_fire_false","title":{"en":"The fire alarm turned off","nl":"Het brandalarm gaat uit","de":"Der Feuer-Alarm ist ausgegangen","fr":"L\'alarme incendie s\'est désactivée","it":"L\'allarme antincendio è stato disattivato","sv":"Brandlarmet inaktiverat","no":"Brannalarmen ble deaktivert","es":"La alarma de incendios se ha desactivado","da":"Brandalarmen blev deaktiveret","ru":"Пожарный сигнал выключен","pl":"Alarm przeciwpożarowy wyłączony","ko":"화재 감지가 정상 상태이면","ar":"تم إيقاف إنذار الحريق"}}],"conditions":[{"id":"alarm_fire","title":{"en":"The fire alarm is !{{on|off}}","nl":"Het brandalarm is !{{aan|uit}}","de":"Der Feuer-Alarm ist !{{an|aus}}","fr":"L\'alarme incendie est !{{en marche|arrêtée}}","it":"L\'allarme antincendio è !{{acceso|spento}}","sv":"Brandlarmet är !{{på|av}}","no":"Brannalarmen er !{{på|av}}","es":"La alarma de incendios está !{{activada|desactivada}}","da":"Brandalarmen er !{{tændt|slukket}}","ru":"Пожарный сигнал !{{вкл.|выкл.}}","pl":"Alarm przeciwpożarowy jest !{{włączony|wyłączony}}","ko":"!{{화재가 감지되면|화재 감지가 정상 상태이면}}","ar":"إنذار الحريق !{{يعمل|لا يعمل}}"}}]}}')},2585:(e,t,a)=>{"use strict";var r=a(6740);e.exports=function(e){r.copy(e,this)}},2621:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"PM1 level","nl":"PM1-niveau","da":"PM1-niveau","it":"Livello PM1","ko":"극초미세먼지(PM1.0) 수준","pl":"Poziom PM1","ru":"Уровень ТЧ1","sv":"PM1-nivå","es":"Nivel de PM1","fr":"Niveau de PM1","no":"PM1-nivå","ar":"مستوى PM1","de":"PM1-Wert"},"desc":{"en":"The amount of PM1 particles in the air represented by a level.","nl":"De hoeveelheid PM1-deeltjes in de lucht weergegeven als niveau.","da":"Mængden af PM1-partikler i luften repræsenteret ved et niveau.","es":"La cantidad de partículas PM1 en el aire representada por un nivel.","it":"La quantità di particelle PM1 nell\'aria rappresentata da un livello.","ko":"수준으로 표현한 공기 중 PM1 입자의 양입니다.","pl":"Ilość cząstek PM1 w powietrzu przedstawiona jako poziom.","ru":"Количество частиц ТЧ1 в воздухе, представленное в виде уровня.","sv":"Mängden PM1-partiklar i luften som representeras av en nivå.","fr":"La quantité de particules PM1 dans l\'air représentée sous forme de niveau.","no":"Mengden av PM1-partikler i luften uttrykt som et nivå.","ar":"كمية جزيئات PM1 في الهواء ممثلة كمستوى.","de":"Die Menge der PM1-Partikel in der Luft, dargestellt durch einen Wert."},"values":[{"id":"low","title":{"en":"Low","nl":"Laag","da":"Lavt","it":"Basso","ko":"좋음","pl":"Niski","ru":"Низкий","sv":"Låg","es":"Bajo","fr":"Faible","no":"Lavt","ar":"منخفض","de":"Niedrig"}},{"id":"medium","title":{"en":"Medium","nl":"Gemiddeld","da":"Medium","it":"Medio","ko":"보통","pl":"Średni","ru":"Средний","sv":"Medium","es":"Intermedio","fr":"Moyen\\n","no":"Middels","ar":"متوسط","de":"Mittel"}},{"id":"high","title":{"en":"High","nl":"Hoog","da":"Højt","it":"Alto","ko":"나쁨","pl":"Wysoki","ru":"Высокий","sv":"Hög","es":"Alto","fr":"Élevé","no":"Høyt","ar":"عالي","de":"Hoch"}},{"id":"critical","title":{"en":"Critical","nl":"Kritiek","da":"Kritisk","it":"Critico","ko":"매우 나쁨","pl":"Krytyczny","ru":"Критический","sv":"Kritisk","es":"Crítico","fr":"Critique","no":"Kritisk","ar":"حرج","de":"Kritisch"}}],"color":"#E02020","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"level_pm1_changed","highlight":true,"title":{"en":"The PM1 level changed to","nl":"Het PM1-niveau is veranderd naar","da":"PM1-niveauet blev ændret til","it":"Il livello PM1 è passato a","ko":"극초미세먼지(PM1.0) 수준이 다음으로 변경되면","pl":"Poziom PM1 zmienił się na","ru":"Уровень ТЧ1 изменился на","sv":"PM1-nivån ändrades till","es":"El nivel de PM1 ha cambiado a","fr":"Le niveau PM1 est passé à","no":"PM1-nivået ble endret til","ar":"تغير مستوى PM1 إلى","de":"Der PM1-Wert hat sich geändert auf"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"level_pm1_is","title":{"en":"The PM1 level !{{is|is not}}","nl":"Het PM1-niveau is !{{is|is niet}}","da":"PM1-niveauet !{{er|er ikke}}","it":"Il livello PM1 !{{è|non è}}","ko":"극초미세먼지(PM1.0) 수준이 다음!{{이면|이 아니면}}","pl":"Poziom PM1 !{{jest|nie jest}}","ru":"Уровень ТЧ1 !{{|не}}","sv":"PM1-nivån !{{är|är inte}}","es":"El nivel de PM1 !{{es|no es}}","fr":"Le niveau PM1 !{{est|n\'est pas}}","no":"PM1-nivået !{{er|er ikke}}","ar":"مستوى PM1 !{{هو|ليس}}","de":"Der PM1-Wert !{{ist|ist nicht}}"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.2.0"}')},2674:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Air Purifier","da":"Luftrenser","de":"Luftreiniger","es":"Purificador de aire","fr":"Purificateur d\'air","it":"Purificatore d\'aria","ko":"공기청정기","nl":"Luchtreiniger","no":"Luftrenser","pl":"Oczyszczacz powietrza","ru":"Очиститель воздуха","sv":"Luftrenare","ar":"جهاز تنقية الهواء"},"description":{"en":"Use this device class for air purifiers.","da":"Brug denne enhedsklasse til luftrensere.","de":"Verwenden Sie diese Geräteklasse für Luftreiniger.","es":"Utiliza esta clase de dispositivo para purificadores de aire.","fr":"Utiliser cette classe d\'appareils pour les purificateurs d\'air.","it":"Utilizza questa classe di dispositivi per i purificatori d\'aria.","ko":"이 디바이스 클래스는 공기청정기에 사용합니다.","nl":"Gebruik deze apparaatklasse voor luchtreinigers.","no":"Bruk denne enhetsklassen for luftrensere.","pl":"Tej klasy urządzeń należy używać w przypadku oczyszczaczy powietrza.","ru":"Используйте этот класс устройств для очистителей воздуха.","sv":"Använd den häe enhetsklassen för luftrenare.","ar":"استخدم فئة الجهاز هذه لأجهزة تنقية الهواء."},"minCompatibility":"12.0.0"}')},2744:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Docked","nl":"Gekoppeld","da":"Forankret","it":"Alloggiato","ko":"거치 상태","pl":"Zadokowane","ru":"Установлено в док-станцию","sv":"Dockad","es":"En la base de carga","fr":"À la base","no":"I stasjonen","ar":"قيد الإرساء","de":"Angedockt"},"desc":{"en":"True when docked.","nl":"Wordt geactiveerd wanneer deze is gekoppeld.","da":"Sandt, når forankret.","it":"Vero quando è alloggiato.","ko":"도킹되면 참입니다.","pl":"Prawda, gdy zadokowane.","ru":"Значение «истина» при установке в док-станцию.","sv":"Sant när den är dockad.","es":"Activado cuando está en la base de carga.","fr":"Se déclenche lorsque l\'appareil est à la base.","no":"Sann når den er i stasjonen.","ar":"صحيح عندما يكون الجهاز في وضع الإرساء.","de":"Wahr, wenn angedockt."},"insights":true,"insightsTitleTrue":{"en":"Docked","nl":"Gekoppeld","da":"Forankret","it":"Alloggiato","ko":"거치됨","pl":"Zadokowane","ru":"Установлено в док-станцию","sv":"Dockad","es":"En la base de carga","fr":"À la base","no":"I stasjonen","ar":"قيد الإرساء","de":"Angedockt"},"insightsTitleFalse":{"en":"Not docked","nl":"Niet gekoppeld","da":"Ikke forankret","it":"Non alloggiato","ko":"거치되지 않음","pl":"Nie zadokowane","ru":"Не установлено в док-станцию","sv":"Inte dockad","es":"Fuera de la base de carga","fr":"Pas à la base","no":"Ikke i stasjonen","ar":"لم يتم إرساؤه","de":"Nicht angedockt"},"color":"#9033FC","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"docked_true","highlight":true,"title":{"en":"Has docked","nl":"Is gekoppeld","da":"Er forankret","it":"Alloggiato","ko":"거치된 상태이면","pl":"Jest zadokowane","ru":"Установлено в док-станцию","sv":"Dockad","es":"Está en la base de carga","fr":"À la base","no":"Har gått til stasjonen","ar":"تم إرساؤه","de":"Hat angedockt"}},{"id":"docked_false","title":{"en":"Has undocked","nl":"Is losgekoppeld","da":"Er ikke forankret","it":"Non alloggiato","ko":"거치되지 않은 상태라면","pl":"Jest niezadokowane","ru":"Не установлено в док-станцию","sv":"Inte dockad","es":"Está fuera de la base de carga","fr":"Pas à la base","no":"Har gått ut av stasjonen","ar":"تم فك الإرساء","de":"Hat abgedockt"}}],"conditions":[{"id":"docked","title":{"en":"Is !{{docked|not docked}}","nl":"Is !{{gekoppeld|niet gekoppeld}}","da":"Er !{{Forankret|Ikke forankret}}","it":"È !{{alloggiato|non alloggiato}}","ko":"!{{거치된 상태이면|거치되지 않은 상태라면}}","pl":"Jest !{{zadokowane|niezadokowane}}","ru":"!{{Установлено в док-станцию|Не установлено в док-станцию}}","sv":"Är !{{dockad|inte dockad}}","es":"Está !{{en la base de carga|fuera de la base de carga}}","fr":"!{{Est à la base|N\'est pas à la base}}","no":"Er !{{i stasjonen|ikke i stasjonen}}","ar":"!{{قيد الإرساء|ليس قيد الإرساء}}","de":"Ist !{{angedockt|abgedockt}}"}}]},"minCompatibility":"12.2.0"}')},2752:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Closed","nl":"Gesloten","de":"Geschlossen","fr":"Fermé","it":"Chiuse","sv":"Stängd","no":"Lukket","es":"Cerrados","da":"Lukket","ru":"Закрыта","pl":"Zamknięta","ko":"차고 문","ar":"مغلق"},"color":"#0082FA","getable":true,"setable":true,"insights":true,"insightsTitleTrue":{"en":"Closed","nl":"Gesloten","de":"Geschlossen","fr":"Fermé","it":"Chiuse","sv":"Stängd","no":"Lukket","es":"Cerrados","da":"Lukket","ru":"Закрыта","pl":"Zamknięta","ko":"차고 문 닫힘","ar":"مغلق"},"insightsTitleFalse":{"en":"Opened","nl":"Geopend","de":"Offen","fr":"Ouvert","it":"Aperte","sv":"Öppen","no":"Åpnet","es":"Abiertos","da":"Åben","ru":"Открыта","pl":"Otwarta","ko":"차고 문 열림","ar":"مفتوح"},"uiComponent":"toggle","$flow":{"triggers":[{"id":"garagedoor_closed_true","title":{"en":"Closed","nl":"Gesloten","de":"Geschlossen","fr":"Fermé","it":"Chiuse","sv":"Stängd","no":"Lukket","es":"Cerrados","da":"Lukket","ru":"Закрыта","pl":"Zamknięta","ko":"차고 문이 닫히면","ar":"مغلق"}},{"id":"garagedoor_closed_false","title":{"en":"Opened","nl":"Geopend","de":"Offen","fr":"Ouvert","it":"Aperte","sv":"Öppen","no":"Åpnet","es":"Abiertos","da":"Åben","ru":"Открыта","pl":"Otwarta","ko":"차고 문이 열리면","ar":"مفتوح"}}],"conditions":[{"id":"closed","title":{"en":"Is !{{closed|open}}","nl":"Is !{{gesloten|geopend}}","de":"Ist !{{geschlossen|offen}}","fr":"Est !{{fermé|ouvert}}","it":"È !{{chiuso|aperto}}","sv":"Är !{{stängd|öppen}}","no":"Er !{{lukket|åpen}}","es":"Está !{{cerrado|abierto}}","da":"Er !{{lukket|åben}}","ru":"!{{закрыта|открыта}}","pl":"Jest !{{zamknięta|otwarta}}","ko":"차고 문이 !{{닫히면|열리면}}","ar":"!{{مغلق|مفتوح}}"}}],"actions":[{"id":"close","highlight":true,"title":{"en":"Close","nl":"Sluiten","de":"Schließen","fr":"Fermer","it":"Chiudi","sv":"Stäng","no":"Lukk","es":"Cerrar","da":"Luk","ru":"Закрыть","pl":"Zamknij","ko":"차고 문 닫기","ar":"إغلاق"}},{"id":"open","highlight":true,"title":{"en":"Open","nl":"Openen","de":"Öffnen","fr":"Ouvrir","it":"Apri","sv":"Öppna","no":"Åpne","es":"Abrir","da":"Åbn","ru":"Открыть","pl":"Otwórz","ko":"차고 문 열기","ar":"فتح"}},{"id":"toggle","title":{"en":"Toggle open or closed","nl":"Schakel tussen geopend en gesloten","de":"Offen/Geschlossen umschalten","fr":"Alterner ouvert/fermé","it":"Alterna aperte/chiuse","sv":"Växla mellan öppen eller stängd","no":"Veksle mellom åpen og lukket","es":"Abrir o cerrar","da":"Skift mellem åben og lukket","ru":"Переключатель открыть/закрыть","pl":"Przełącz na otwartą lub zamkniętą","ko":"차고 문 열림/닫힘 상태 전환하기","ar":"تبديل بين الفتح أو الإغلاق"}}]}}')},2755:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Solar Panel","nl":"Zonnepaneel","sv":"Solpanel","no":"Solpanel","es":"Panel solar","da":"Solpanel","ru":"Солнечная панель","pl":"Panel fotowoltaiczny","ko":"태양광 패널","ar":"لوحة شمسية","de":"Solarpanel","fr":"Panneau solaire","it":"Pannello solare"},"description":{"en":"Use this device class for solar panels.","es":"Utiliza esta clase de dispositivo para los paneles solares.","da":"Brug denne enhedsklasse til solpaneler.","ru":"Используйте этот класс устройств для солнечных панелей.","pl":"Użyj tej klasy urządzeń dla paneli fotowoltaicznych.","ko":"이 디바이스 클래스는 태양광 패널에 사용합니다.","no":"Bruk denne enhetsklassen for solpaneler.","ar":"استخدم فئة الجهاز هذه للألواح الشمسية.","de":"Verwende diese Geräteklasse für Solarpanele.","fr":"Utilisez cette classe d\'appareils pour les panneaux solaires.","it":"Utilizza questa classe di dispositivi per i pannelli solari.","nl":"Gebruik deze apparaatklasse voor zonnepanelen.","sv":"Använd den här enhetsklassen för solpaneler."}}')},2788:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Oven","da":"Ovn","de":"Backofen","es":"Horno","fr":"Four","it":"Forno","ko":"오븐","nl":"Oven","no":"Stekeovn","pl":"Piekarnik","ru":"Духовой шкаф","sv":"Ugn","ar":"فرن"},"description":{"en":"Use this device class for ovens.","da":"Brug denne enhedsklasse til ovne.","de":"Verwenden Sie diese Geräteklasse für Backöfen.","es":"Utiliza esta clase de dispositivo para hornos.","fr":"Utilisez cette classe d\'appareils pour les fours.","it":"Utilizza questa classe di dispositivi per i forni.","ko":"이 디바이스 클래스는 오븐에 사용합니다.","nl":"Gebruik deze apparaatklasse voor ovens.","no":"Bruk denne enhetsklassen for stekeovner.","pl":"Tej klasy urządzeń należy używać w przypadku piekarników.","ru":"Используйте этот класс устройств для духовых шкафов.","sv":"Använd den här enhetsklassen för ugnar.","ar":"استخدم فئة الجهاز هذه للأفران."},"minCompatibility":"12.0.0"}')},2823:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Water meter","nl":"Watermeter","de":"Wasserzähler","fr":"Compteur d\'eau","it":"Contatore dell\'acqua","sv":"Vattenmätare","no":"Vannmåler","es":"Contador de agua","da":"Vandmåler","ru":"Счетчик воды","pl":"Licznik wody","ko":"물 사용량","ar":"عداد المياه"},"decimals":3,"min":0,"units":{"en":"m³","ru":"м³","ko":"m³","no":"m³","ar":"م³","da":"m³","de":"m³","es":"m³","fr":"m³","it":"m³","nl":"m³","pl":"m³","sv":"m³"},"chartType":"spline","desc":{"en":"Water usage in cubic meter (m³)","nl":"Water gebruik in kubieke meter (m³)","de":"Wasserverbrauch in Kubikmeter (m³)","fr":"Consommation d\'eau en mètres cubes (m³)","it":"Utilizzo di acqua in metri cubi (m³)","sv":"Vattenanvändning i kubikmeter (m³)","no":"Vannforbruk i kubikkmeter (m³)","es":"Consumo de agua en metros cúbicos (m³)","da":"Vandforbrug i kubikmeter (m³)","ru":"Использование воды в кубометрах (м³)","pl":"Zużycie wody w metrach sześciennych (m³)","ko":"수도 사용량 입방미터(m³)","ar":"استهلاك المياه بالمتر المكعب (m³)"},"color":"#0091FF","insights":true,"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"meter_water_changed","title":{"en":"The water meter changed","nl":"De watermeter is veranderd","de":"Der Wasserzähler hat sich geändert","fr":"Le compteur d\'eau a changé","it":"Il contatore dell\'acqua è cambiato","sv":"Vattenmätaren ändrades","no":"Vannmåleren ble endret","es":"El contador de agua ha cambiado","da":"Vandmåleren ændrede sig","ru":"Измерения счетчика воды изменились","pl":"Zmiana w liczniku wody","ko":"물 사용량이 변경되면","ar":"تغير عداد المياه"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":25}]}]}}')},2829:e=>{"use strict";e.exports={detect:function(e){return"BM"===e.toString("ascii",0,2)},calculate:function(e){return{width:e.readUInt32LE(18),height:Math.abs(e.readInt32LE(22))}}}},2843:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Pump setpoint","nl":"Setpoint van de pomp","da":"Pumpens indstillingspunkt","it":"Setpoint della pompa","ko":"펌프 설정값","pl":"Wartość zadana pompy","ru":"Уставка насоса","sv":"Börvärde för pump","es":"Valor de ajuste del bombeo","fr":"Point de réglage de la pompe","no":"Pumpens settepunkt","ar":"نقطة ضبط المضخة","de":"Sollwert der Pumpe"},"units":{"en":"%","nl":"%","da":"%","it":"%","ko":"%","pl":"%","ru":"%","sv":"%","es":"%","fr":" %","no":"%","ar":"%","de":"%"},"desc":{"en":"The pump setpoint in percentage.","nl":"Het setpoint van de pomp in procenten.","da":"Pumpens indstillingspunkt i procent.","it":"Il setpoint della pompa in percentuale.","ko":"백분율로 표현된 펌프 설정값입니다.","pl":"Wartość zadana pompy w procentach.","ru":"Уставка насоса в процентах.","sv":"Pumpens börvärde i procent.","es":"El valor de ajuste del bombeo en porcentaje.","fr":"Le point de réglage de la pompe en pourcentage.","no":"Pumpens settepunkt i prosent.","ar":"نقطة ضبط المضخة بالنسبة المئوية.","de":"Der Pumpensollwert in Prozent."},"insights":true,"chartType":"spline","min":0,"max":1,"decimals":2,"color":"#0091FF","getable":true,"setable":true,"uiComponent":"slider","$flow":{"triggers":[{"id":"pump_setpoint_changed","title":{"en":"The pump setpoint changed","nl":"Het setpoint van de pomp is veranderd","da":"Pumpens indstillingspunkt ændrede sig","it":"Il setpoint della pompa è cambiato","ko":"펌프 설정값이 변경되면","pl":"Zmieniła się wartość zadana pompy","ru":"Уставка насоса изменена","sv":"Pumpens börvärde ändrades","es":"El valor de ajuste del bombeo ha cambiado","fr":"Le point de réglage de la pompe a changé","no":"Pumpens settpunkt ble endret","ar":"تغيرت نقطة ضبط المضخة","de":"Der Sollwert der Pumpe wurde geändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":0.5}]}],"actions":[{"id":"set_pump_setpoint","title":{"en":"Set the pump setpoint","nl":"Het setpoint van de pomp instellen","da":"Indstil pumpens indstillingspunkt","it":"Imposta il setpoint della pompa","ko":"펌프 설정값 설정","pl":"Ustaw wartość zadaną pompy","ru":"Определить уставку насоса","sv":"Ställ in pumpens börvärde","es":"Configurar el valor de ajuste del bombeo","fr":"Définir le point de réglage de la pompe","no":"Angi pumpens settepunkt","ar":"ضبط نقطة ضبط المضخة","de":"Einstellen des Pumpensollwerts"},"args":[{"name":"pump_setpoint","type":"range","min":0,"max":1,"step":0.01,"value":0.5,"label":"%","labelMultiplier":100,"labelDecimals":0}]}]},"minCompatibility":"12.2.0"}')},2850:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Faucet","da":"Vandhane","de":"Wasserhahn","es":"Grifo","fr":"Robinet","it":"Rubinetto","ko":"수전","nl":"Kraan","no":"Kran","pl":"Kran","ru":"Смеситель","sv":"Kran","ar":"صنبور"},"description":{"en":"Use this device class for faucets.","da":"Brug denne enhedsklasse til vandhaner.","de":"Verwenden Sie diese Geräteklasse für Wasserhähne.","es":"Utilice esta clase de dispositivo para grifos.","fr":"Utilisez cette classe d\'appareils pour les robinets.","it":"Utilizza questa classe di dispositivi per i rubinetti.","ko":"이 디바이스 클래스는 수도 등의 수전에 사용합니다.","nl":"Gebruik deze apparaatklasse voor kranen.","no":"Bruk denne enhetsklassen for kraner.","pl":"Tej klasy urządzeń należy używać w przypadku kranów.","ru":"Используйте этот класс устройств для смесителей.","sv":"Använd den här enhetsklassen för kranar.","ar":"استخدم فئة الجهاز هذه لصنابير المياه."},"minCompatibility":"12.0.0"}')},2861:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Target power","nl":"Doelvermogen","de":"Zielleistung","fr":"Puissance cible","it":"Potenza target","sv":"Måleffekt","no":"Ønsket effekt","es":"Potencia objetivo","da":"Måleffekt","ru":"Целевая мощность","pl":"Moc docelowa","ko":"충전전력 제한","ar":"الطاقة المستهدفة"},"desc":{"en":"Target power in watt","nl":"Doelvermogen in watt","de":"Zielleistung in Watt","fr":"Puissance cible en watt","it":"Potenza target in watt","sv":"Måleffekt i watt","no":"Ønsket effekt i watt","es":"Potencia objetivo en vatios","da":"Måleffekt i watt","ru":"Целевая мощность в ваттах","pl":"Moc docelowa w watach","ko":"충전전력 제한(와트)","ar":"الطاقة المستهدفة بالواط"},"units":{"en":"W","nl":"W","de":"W","fr":"W","it":"W","sv":"W","no":"W","es":"W","da":"W","ru":"Вт","pl":"W","ko":"W","ar":"واط"},"insights":true,"chartType":"stepLine","min":-25000,"max":25000,"step":1,"decimals":0,"color":"#6DD400","getable":true,"setable":true,"uiComponent":"slider","minCompatibility":"12.13.0","$flow":{"triggers":[{"id":"target_power_changed","highlight":true,"title":{"en":"The target power changed","nl":"Het doelvermogen is veranderd","de":"Die Zielleistung hat sich geändert","fr":"La puissance cible a été modifiée","it":"La potenza target è cambiata","sv":"Måleffekten ändrades","no":"Ønsket effekt ble endret","es":"La potencia objetivo ha cambiado","da":"Måleffekten blev ændret","ru":"Целевая мощность изменена","pl":"Moc docelowa uległa zmianie","ko":"충전전력 제한이 변경되면","ar":"تغيرت الطاقة المستهدفة"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":2500}]}],"actions":[{"id":"target_power_set","highlight":true,"title":{"en":"Set the target power","nl":"Stel het doelvermogen in","de":"Zielleistung festlegen","fr":"Définir la puissance cible","it":"Imposta la potenza target","sv":"Ställ in måleffekten","no":"Innstill ønsket effekt","es":"Establecer la potencia objetivo","da":"Indstil måleffekten","ru":"Установить целевую мощность","pl":"Ustaw moc docelową","ko":"충전전력 제한 설정","ar":"ضبط الطاقة المستهدفة"},"hint":{"en":"This also switches the target power mode to Homey. For EV chargers, charging is automatically started or stopped.","nl":"Hiermee stel je de doelvermogensmodus in op Homey. Bij een EV-lader wordt het laden automatisch gestart of gestopt.","de":"Dies schaltet auch den Zielleistungsmodus auf Homey um. Bei EV-Ladegeräten wird der Ladevorgang automatisch gestartet oder gestoppt.","fr":"Cela règle également le mode de puissance cible sur Homey. Pour les bornes de recharge, la recharge démarre ou s\'arrête automatiquement.","it":"Questo imposta anche la modalità potenza target su Homey. Per i caricatori EV, la ricarica viene avviata o interrotta automaticamente.","sv":"Detta växlar även måleffektläget till Homey. För EV-laddare startas eller stoppas laddningen automatiskt.","no":"Dette bytter også ønsket effekt-modus til Homey. For elbilladere startes eller stoppes lading automatisk.","es":"Esto también cambia el modo de potencia objetivo a Homey. En el caso de cargadores de vehículos eléctricos, la carga se inicia o detiene automáticamente.","da":"Dette skifter også måleffekttilstanden til Homey. For EV-opladere startes eller stoppes opladningen automatisk.","ru":"Эта опция также переключает режим целевой мощности на Homey. Для зарядных станций зарядка автоматически запускается или останавливается.","pl":"To również przełącza tryb mocy docelowej na Homey. W przypadku ładowarek EV ładowanie jest automatycznie uruchamiane lub zatrzymywane.","ko":"이렇게 하면 충전전력 제한 모드도 Homey로 전환돼요. 전기차 충전기의 충전이 상황에 맞게 자동으로 시작되거나 중지되죠.","ar":"يؤدي هذا أيضًا إلى تبديل وضع الطاقة المستهدفة إلى Homey. بالنسبة لشواحن السيارات الكهربائية، يتم بدء الشحن أو إيقافه تلقائيًا."},"args":[{"name":"target_power","type":"range","min":-25000,"max":25000,"step":1,"label":"W","labelDecimals":0}]}]}}')},2869:e=>{"use strict";var t="CgBI";e.exports={detect:function(e){if("PNG\r\n\n"===e.toString("ascii",1,8)){var a=e.toString("ascii",12,16);if(a===t&&(a=e.toString("ascii",28,32)),"IHDR"!==a)throw new TypeError("invalid png");return!0}},calculate:function(e){return e.toString("ascii",12,16)===t?{width:e.readUInt32BE(32),height:e.readUInt32BE(36)}:{width:e.readUInt32BE(16),height:e.readUInt32BE(20)}}}},2897:(e,t,a)=>{"use strict";var r=a(8198);e.exports={$id:"https://github.com/ajv-validator/ajv/blob/master/lib/definition_schema.js",definitions:{simpleTypes:r.definitions.simpleTypes},type:"object",dependencies:{schema:["validate"],$data:["validate"],statements:["inline"],valid:{not:{required:["macro"]}}},properties:{type:r.properties.type,schema:{type:"boolean"},statements:{type:"boolean"},dependencies:{type:"array",items:{type:"string"}},metaSchema:{type:"object"},modifying:{type:"boolean"},valid:{type:"boolean"},$data:{type:"boolean"},async:{type:"boolean"},errors:{anyOf:[{type:"boolean"},{const:"full"}]}}}},2917:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Next","nl":"Volgende","de":"Weiter","fr":"Suivant","it":"Successivo","sv":"Nästa","no":"Neste","es":"Siguiente","da":"Næste","ru":"Дальше","pl":"Dalej","ko":"다음","ar":"التالي"},"type":"boolean","color":"#9033FC","getable":false,"setable":true,"uiComponent":"media","$flow":{"actions":[{"id":"next","title":{"en":"Next","nl":"Volgende","de":"Weiter","fr":"Suivant","it":"Successivo","sv":"Nästa","no":"Neste","es":"Siguiente","da":"Næste","ru":"Дальше","pl":"Dalej","ko":"다음","ar":"التالي"}}]}}')},2940:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Monetary value","nl":"Monetaire waarde","da":"Monetær værdi","it":"Valore monetario","ko":"화폐 가치","no":"Pengeverdi","pl":"Wartość pieniężna","ru":"Денежная стоимость","sv":"Monetärt värde","es":"Valor monetario","fr":"Valeur monétaire","ar":"القيمة المالية","de":"Monetärer Wert"},"units":{"en":"€","nl":"€","da":"€","it":"€","ko":"€","no":"€","pl":"€","ru":"€","sv":"€","es":"€","fr":" €","ar":"يورو","de":"€"},"desc":{"en":"The monetary value with a currency (default: €).","nl":"De monetaire waarde met een valuta (standaard: €).","da":"Den monetære værdi med en valuta (standard: €).","it":"Il valore monetario in una valuta (predefinita: €).","ko":"통화로 환산한 금전적 가치입니다(기본값: €).","no":"Pengeverdien med en valuta (standard: EUR).","pl":"Wartość pieniężna z walutą (domyślnie: €).","ru":"Денежная стоимость с указанием валюты (по умолчанию: евро).","sv":"Det monetära värdet med en valuta (standard: €).","es":"El valor monetario en una divisa (por omisión, €).","fr":"La valeur monétaire avec une devise (par défaut : €).","ar":"القيمة النقدية بعملة (الافتراضي: اليورو).","de":"Der monetäre Wert mit einer Währung (Standard: €)."},"insights":true,"chartType":"spline","decimals":2,"color":"#F7B500","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_monetary_changed","title":{"en":"The monetary value changed","nl":"De monetaire waarde is veranderd","da":"Den monetære værdi ændrede sig","it":"Il valore monetario è cambiato","ko":"화폐 가치가 변경되면","no":"Pengeverdien ble endret","pl":"Zmieniła się wartość pieniężna","ru":"Денежная стоимость изменилась","sv":"Det monetära värdet ändrades","es":"El valor monetario ha cambiado","fr":"La valeur monétaire a changé","ar":"تغيرت القيمة المالية","de":"Der monetäre Wert hat sich geändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":2}]}]},"minCompatibility":"12.2.0"}')},2963:()=>{},2974:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Amplifier","nl":"Versterker","de":"Verstärker","fr":"Amplificateur","it":"Amplificatore","sv":"Förstärkare","no":"Forsterker","es":"Amplificador","da":"Forstærker","ru":"Усилитель","pl":"Wzmacniacz","ko":"앰프","ar":"مضخم صوت"},"description":{"en":"Use this device class for audio amplifier devices.","de":"Nutze diese Geräteklasse für Audio-Verstärker-Geräte.","fr":"Utilisez cette classe d\'appareil pour les appareils amplificateurs audio.","it":"Utilizza questa classe di dispositivi per i dispositivi che amplificano l\'audio.","sv":"Använd den här enhetsklassne ljudförstärkarenheter.","no":"Bruk denne enhetsklassen for lydforsterkerenheter.","es":"Utiliza esta clase de dispositivo para los amplificadores de audio.","da":"Brug denne enhedsklasse til lydforstærkerenheder.","ru":"Используйте этот класс устройств для усилителей звука.","pl":"Użyj tej klasy urządzeń dla wzmacniaczy audio.","ko":"이 디바이스 클래스는 오디오 앰프 디바이스에 사용합니다.","ar":"استخدم فئة الجهاز هذه لأجهزة مضخم الصوت.","nl":"Gebruik deze apparaatklasse voor apparaten met audioversterkers."}}')},2977:()=>{},3027:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Bridge","da":"Bridge","de":"Bridge","es":"Bridge","fr":"Pont","it":"Bridge","ko":"브릿지","nl":"Bridge","no":"Bro","pl":"Most","ru":"Bridge","sv":"Brygga","ar":"جسر"},"description":{"en":"Use this device class for bridges or hubs that connect to other devices or ecosystems.","da":"Brug denne enhedsklasse til broer eller hubs, der forbinder til andre enheder eller økosystemer.","de":"Verwende diese Geräteklasse für Bridges oder Hubs, die mit anderen Geräten oder Ökosystemen verbunden sind.","es":"Utiliza esta clase de dispositivo para puentes o concentradores que se conectan a otros dispositivos o ecosistemas.","fr":"Utilisez cette classe d\'appareils pour les ponts ou les concentrateurs qui se connectent à d\'autres appareils ou écosystèmes.","it":"Usa questa classe di dispositivi per i bridge o gli hub che si connettono ad altri dispositivi o ecosistemi.","ko":"이 제품 클래스는 다른 제품 또는 에코시스템에 연결하는 브릿지 또는 허브에 사용하세요.","nl":"Gebruik deze apparaatklasse voor bridges of hubs die verbinding maken met andere apparaten of ecosystemen.","no":"Bruk denne enhetsklassen for broer eller huber som er koblet til andre enheter eller økosystemer.","pl":"Tej klasy urządzeń należy używać w przypadku mostków lub hubów, które łączą się z innymi urządzeniami lub ekosystemami.","ru":"Используйте этот класс устройств для мостов или концентраторов, которые подключаются к другим устройствам либо экосистемам.","sv":"Använd den här enhetsklassen för bryggor eller hubbar som ansluter till andra enheter eller ekosystem.","ar":"استخدم فئة الجهاز هذه للجسور أو المحاور التي تتصل بأجهزة أو أنظمة بيئية أخرى."},"minCompatibility":"12.5.0"}')},3032:e=>{"use strict";e.exports=function(e,t,a){var r=" ",i=e.level,n=e.dataLevel,s=e.schema[t],o=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+"/"+t,d=!e.opts.allErrors,u="data"+(n||""),m="errs__"+i,p=e.util.copy(e);p.level++;var c="valid"+p.level;if(r+="var "+m+" = errors;",e.opts.strictKeywords?"object"==typeof s&&Object.keys(s).length>0:e.util.schemaHasRules(s,e.RULES.all)){p.schema=s,p.schemaPath=o,p.errSchemaPath=l;var g="key"+i,h="idx"+i,v="i"+i,f="' + "+g+" + '",k="data"+(p.dataLevel=e.dataLevel+1),y="dataProperties"+i,b=e.opts.ownProperties,w=e.baseId;b&&(r+=" var "+y+" = undefined; "),r+=b?" "+y+" = "+y+" || Object.keys("+u+"); for (var "+h+"=0; "+h+"<"+y+".length; "+h+"++) { var "+g+" = "+y+"["+h+"]; ":" for (var "+g+" in "+u+") { ",r+=" var startErrs"+i+" = errors; ";var z=g,P=e.compositeRule;e.compositeRule=p.compositeRule=!0;var _=e.validate(p);p.baseId=w,e.util.varOccurences(_,k)<2?r+=" "+e.util.varReplace(_,k,z)+" ":r+=" var "+k+" = "+z+"; "+_+" ",e.compositeRule=p.compositeRule=P,r+=" if (!"+c+") { for (var "+v+"=startErrs"+i+"; "+v+"{"use strict";e.exports=JSON.parse('{"title":{"en":"Network Router","da":"Netværksrouter","de":"Netzwerk-Router","es":"Router","fr":"Routeur de réseau","it":"Router di rete","ko":"네트워크 라우터","nl":"Netwerkrouter","no":"Nettverksruter","pl":"Router sieciowy","ru":"Сетевой маршрутизатор","sv":"Nätverksrouter","ar":"جهاز توجيه الشبكة"},"description":{"en":"Use this device class for routers or modems.","da":"Brug denne enhedsklasse til routere eller modemer.","de":"Verwenden Sie diese Geräteklasse für Router oder Modems.","es":"Utiliza esta clase de dispositivo para routers o módems.","fr":"Utilisez cette classe d\'appareils pour les routeurs ou les modems.","it":"Utilizza questa classe di dispositivi per i router o i modem.","ko":"이 디바이스 클래스는 라우터 또는 모뎀에 사용합니다.","nl":"Gebruik deze apparaatklasse voor routers of modems.","no":"Bruk denne enhetsklassen for rutere eller modemer.","pl":"Tej klasy urządzeń należy używać w przypadku routerów lub modemów.","ru":"Используйте этот класс устройств для маршрутизаторов или модемов.","sv":"Använd den här enhetsklassen för routrar eller modem.","ar":"استخدم فئة الجهاز هذه لأجهزة التوجيه أو المودم."},"minCompatibility":"12.0.0"}')},3219:e=>{"use strict";e.exports={detect:function(e){return 542327876===e.readUInt32LE(0)},calculate:function(e){return{height:e.readUInt32LE(12),width:e.readUInt32LE(16)}}}},3272:(e,t,a)=>{"use strict";var r=a(8287).hp,i=a(1207),n=a(9411),s=a(9005),o=a(5812),l=524288;function d(e,t){var a=o(e,t);if(a in s){var r=s[a].calculate(e,t);if(!1!==r)return r.type=a,r}throw new TypeError("unsupported file type: "+a+" (file: "+t+")")}e.exports=function(e,t){if(r.isBuffer(e))return d(e);if("string"!=typeof e)throw new TypeError("invalid invocation");var a=n.resolve(e);if("function"!=typeof t){var s=function(e){var t=i.openSync(e,"r"),a=i.fstatSync(t).size,n=Math.min(a,l),s=new r(n);return i.readSync(t,s,0,n,0),i.closeSync(t),s}(a);return d(s,a)}!function(e,t){i.open(e,"r",(function(a,n){if(a)return t(a);i.fstat(n,(function(a,s){if(a)return t(a);var o=s.size;if(o<=0)return t(new Error("File size is not greater than 0 —— "+e));var d=Math.min(o,l),u=new r(d);i.read(n,u,0,d,0,(function(e){if(e)return t(e);i.close(n,(function(e){t(e,u)}))}))}))}))}(a,(function(e,r){if(e)return t(e);var i;try{i=d(r,a)}catch(t){e=t}t(e,i)}))},e.exports.types=Object.keys(s)},3278:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Refrigerator Mode","nl":"Koelkastmodus","da":"Køleskabstilstand","it":"Modalità frigorifero","ko":"냉장 모드","pl":"Tryb lodówki","ru":"Режим холодильника","sv":"Kylskåpsläge","es":"Modo del frigorífico","fr":"Mode du réfrigérateur","no":"Kjøleskapsmodus","ar":"وضع الثلاجة","de":"Kühlschrankmodus"},"desc":{"en":"The mode of the refrigerator.","nl":"De modus van de koelkast.","da":"Køleskabets tilstand.","it":"La modalità del frigorifero.","ko":"냉장고의 모드입니다.","pl":"Tryb pracy lodówki.","ru":"Режим работы холодильника.","sv":"Läget för kylskåpet.","es":"El modo del frigorífico.","fr":"Le mode de fonctionnement du réfrigérateur.","no":"Kjøleskapets modus.","ar":"وضع الثلاجة.","de":"Der Modus des Kühlschranks."},"values":[{"id":"normal","title":{"en":"Normal","nl":"Normaal","da":"Normal","it":"Normale","ko":"보통","pl":"Normalny","ru":"Нормальный","sv":"Normal","es":"Normal","fr":"Normal","no":"Normal","ar":"عادي","de":"Normal"}},{"id":"rapid_cooling","title":{"en":"Rapid Cooling","nl":"Snel koelen","da":"Hurtig afkøling","it":"Raffreddamento rapido","ko":"급속 냉장","pl":"Szybkie chłodzenie","ru":"Быстрое охлаждение","sv":"Snabbkylning","es":"Enfriado rápido","fr":"Refroidissement rapide","no":"Hurtigavkjøling","ar":"تبريد سريع","de":"Schnelles Abkühlen"}},{"id":"rapid_freezing","title":{"en":"Rapid Freezing","nl":"Snel vriezen","da":"Hurtig nedfrysning","it":"Congelamento rapido","ko":"급속 냉동","pl":"Szybkie zamrażanie","ru":"Быстрая заморозка","sv":"Snabbfrysning","es":"Congelación rápida","fr":"Congélation rapide","no":"Hurtigfrysing","ar":"تجميد سريع","de":"Schnelles Einfrieren"}}],"color":"#32C5FF","getable":true,"setable":true,"uiComponent":"picker","$flow":{"triggers":[{"id":"refrigerator_mode_changed","highlight":true,"title":{"en":"The refrigerator mode changed to","nl":"De koelkastmodus is veranderd naar","da":"Køleskabstilstanden ændrede sig til","it":"La modalità del frigorifero è passata a","ko":"냉장고 모드가 다음으로 변경되면","pl":"Tryb lodówki zmienił się na","ru":"Режим холодильника изменен на","sv":"Kylskåpsläget ändrades till","es":"El modo del frigorífico ha cambiado a","fr":"Le mode du réfrigérateur est passé à","no":"Kjøleskapsmodusen ble endret til","ar":"تغير وضع الثلاجة إلى","de":"Der Kühlschrankmodus wurde geändert auf"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"refrigerator_mode_is","title":{"en":"The refrigerator mode !{{is|is not}}","nl":"De koelkastmodus !{{is|is niet}}","da":"Køleskabstilstanden !{{er|er ikke}}","it":"La modalità del frigorifero !{{è|non è}}","ko":"냉장고 모드가 다음!{{이면|이 아니면}}","pl":"Tryb lodówki !{{jest|nie jest}}","ru":"Режим холодильника !{{|не}}","sv":"Kylskåpsläget !{{är|är inte}}","es":"El modo del frigorífico !{{está|no está}}","fr":"Le mode du réfrigérateur !{{est|n\'est pas}}","no":"Kjøleskapsmodusen !{{er|er ikke}}","ar":"وضع الثلاجة !{{هو|ليس}}","de":"Der Kühlschrankmodus !{{ist|ist nicht}}"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}],"actions":[{"id":"set_refrigerator_mode","title":{"en":"Set the refrigerator mode to","nl":"Stel de koelkastmodus in op","da":"Indstil køleskabstilstanden til","it":"Imposta la modalità del frigorifero su","ko":"냉장고 모드를 다음으로 설정","pl":"Ustaw tryb lodówki na","ru":"Установить режим холодильника на","sv":"Ställ in kylskåpsläget på","es":"Ajustar el modo del frigorífico en","fr":"Définir le mode du réfrigérateur sur","no":"Sett kjøleskapsmodusen til","ar":"ضبط وضع الثلاجة على","de":"Stelle den Kühlschrankmodus auf"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.2.0"}')},3383:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Rain Intensity","nl":"Regenintensiteit","da":"Regnens intensitet","it":"Intensità della pioggia","ko":"강수 강도","pl":"Intensywność deszczu","ru":"Интенсивность дождя","sv":"Regnintensitet","es":"Intensidad de la lluvia","fr":"Intensité de la pluie","no":"Nedbørsmengde","ar":"شدة المطر","de":"Regenintensität"},"units":{"en":"mm/h","nl":"mm/u","da":"mm/t","it":"mm/h","ko":"mm/h","pl":"mm/h","ru":"мм/ч","sv":"mm/h","es":"mm/h","fr":"mm/h","no":"mm/t","ar":"مم/س","de":"mm/h"},"desc":{"en":"The rain intensity in millimeters per hour.","nl":"De regenintensiteit in millimeters per uur.","da":"Regnintensiteten i millimeter pr. time.","it":"L\'intensità della pioggia in millimetri all\'ora.","ko":"시간당 밀리미터 단위의 비 강도입니다.","pl":"Intensywność deszczu w milimetrach na godzinę.","ru":"Интенсивность дождя в миллиметрах в час.","sv":"Regnintensiteten i millimeter per timme.","es":"La intensidad de la lluvia en milímetros por hora.","fr":"L\'intensité de la pluie en millimètres par heure.","no":"Nedbørsmengden i millimeter per time.","ar":"شدة المطر بالمليمتر لكل ساعة.","de":"Die Regenintensität in Millimetern pro Stunde."},"insights":true,"chartType":"spline","decimals":2,"color":"#0091FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_rain_intensity_changed","title":{"en":"The rain intensity changed","nl":"De regenintensiteit is veranderd","da":"Regnens intensitet ændrede sig","it":"L\'intensità della pioggia è cambiata","ko":"강수 강도가 변경되면","pl":"Zmieniła się Intensywność deszczu","ru":"Интенсивность дождя изменилась","sv":"Regnintensiteten förändrades","es":"La intensidad de la lluvia ha cambiado","fr":"L\'intensité de la pluie a changé","no":"Nedbørsmengden ble endret","ar":"تغيرت شدة المطر","de":"Die Regenintensität hat sich geändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":2}]}]},"minCompatibility":"12.2.0"}')},3387:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Luminance","nl":"Helderheid","de":"Helligkeit","fr":"Luminance","it":"Luminanza","sv":"Luminans","no":"Luminans","es":"Luminancia","da":"Luminans","ru":"Яркость","pl":"Luminacja","ko":"조도","ar":"السطوع"},"units":{"en":"lx","ru":"лк","ko":"lx","no":"lx","ar":"lx","da":"lx","de":"lx","es":"lx","fr":"lx","it":"lx","nl":"lx","pl":"lx","sv":"lx"},"insights":true,"desc":{"en":"Luminance in Lux (lx)","nl":"Helderheid in Lux (lx)","de":"Leuchtkraft in Lux (lx)","fr":"Luminance en Lux (lx)","it":"Luminanza in Lux (lx)","sv":"Luminans i Lux (lx)","no":"Luminans i Lux (lx)","es":"Luminancia en Lux (lx)","da":"Luminans i Lux (lx)","ru":"Яркость в люксах (лк)","pl":"Luminacja w luksach (lx)","ko":"휘도 럭스(lx)","ar":"السطوع باللوكس (lx)"},"chartType":"spline","decimals":2,"color":"#F7B500","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_luminance_changed","highlight":true,"title":{"en":"The luminance changed","nl":"De helderheid is veranderd","de":"Die Helligkeit hat sich geändert","fr":"La luminance a changé","it":"La luminanza è cambiata","sv":"Luminansen ändrades","no":"Luminansen ble endret","es":"La luminancia ha cambiado","da":"Luminansen ændrede sig","ru":"Яркость изменилась","pl":"Zmiana luminacji","ko":"조도가 변경되면","ar":"تغير السطوع"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":100}]}]}}')},3392:e=>{"use strict";var t=/]+[^>]*>/,a=/]+>/,r=/\bwidth=(['"])([^%]+?)\1/,i=/\bheight=(['"])([^%]+?)\1/,n=/\bviewBox=(['"])(.+?)\1/;function s(e){var t=e.split(" ");return{width:parseInt(t[2],10),height:parseInt(t[3],10)}}e.exports={detect:function(e){return t.test(e)},calculate:function(e){var t=e.toString("utf8").match(a);if(t){var o=function(e){var t=e.match(r),a=e.match(i),o=e.match(n);return{width:t&&parseInt(t[2],10),height:a&&parseInt(a[2],10),viewbox:o&&s(o[2])}}(t[0]);if(o.width&&o.height)return function(e){return{width:e.width,height:e.height}}(o);if(o.viewbox)return function(e){var t=e.viewbox.width/e.viewbox.height;return e.width?{width:e.width,height:Math.floor(e.width/t)}:e.height?{width:Math.floor(e.height*t),height:e.height}:{width:e.viewbox.width,height:e.viewbox.height}}(o)}throw new TypeError("invalid svg")}}},3415:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Charging state","nl":"Oplaadstatus","da":"Opladningstilstand","it":"Stato di carica","ko":"전기차 충전 상태","pl":"Stan ładowania","ru":"Состояние зарядки","sv":"Laddningsstatus","es":"Estado de carga","fr":"État de charge","no":"Ladestatus","de":"Ladezustand","ar":"حالة الشحن"},"desc":{"en":"The current charging state of the battery.","nl":"De huidige oplaadstatus van de batterij.","da":"Batteriets aktuelle opladningstilstand.","it":"Lo stato di carica attuale della batteria.","ko":"배터리의 현재 충전 상태입니다.","pl":"Bieżący stan ładowania akumulatora.","ru":"Текущее состояние зарядки аккумулятора.","sv":"Batteriets aktuella laddningsstatus.","es":"El estado de carga actual de la batería.","fr":"L\'état de charge actuel de la batterie.","no":"Batteriets nåværende ladestatus.","de":"Der aktuelle Ladezustand des Akkus.","ar":"حالة الشحن الحالية للبطارية."},"values":[{"id":"plugged_in_charging","title":{"en":"Charging","nl":"Opladen","da":"Oplader","it":"In ricarica","ko":"충전 중","pl":"Ładowanie\\n","ru":"Заряжается","sv":"Laddning","es":"Carga","fr":"Charge en cours","no":"Lader","de":"Wird geladen","ar":"قيد الشحن"}},{"id":"plugged_in_discharging","title":{"en":"Discharging","nl":"Ontladen","da":"Aflader","it":"Si sta scaricando","ko":"외부 전원 공급 중","pl":"Rozładowywanie","ru":"Разряжается","sv":"Urladdning","es":"Descarga","fr":"Décharge en cours","no":"Lades ut","de":"Wird entladen","ar":"قيد التفريغ"}},{"id":"plugged_in_paused","title":{"en":"Paused","da":"På pause","it":"In pausa","ko":"일시 중지됨","nl":"Gepauzeerd","pl":"Wstrzymane","ru":"На паузе","sv":"Pausad","es":"En pausa","fr":"En pause","no":"Satt på pause","de":"Pausiert","ar":"متوقف مؤقتًا"}},{"id":"plugged_in","title":{"en":"Plugged in","nl":"Aangesloten","da":"Tilsluttet","it":"Cavo collegato","ko":"충전구 연결됨","pl":"Podłączone do gniazdka","ru":"Подключено","sv":"Ansluten","es":"Enchufado","fr":"Branché","no":"Tilkoblet","de":"Eingesteckt","ar":"موصول"}},{"id":"plugged_out","title":{"en":"Not plugged in","nl":"Niet aangesloten","da":"Ikke tilsluttet","it":"Cavo non collegato","ko":"충전구 연결되지 않음","pl":"Niepodłączone do gniazdka","ru":"Не подключено","sv":"Inte ansluten","es":"No enchufado","fr":"Non branché","no":"Ikke tilkoblet","de":"Nicht eingesteckt","ar":"غير موصول"}}],"color":"#6DD400","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"ev_charging_state_changed","title":{"en":"The battery charging state changed","nl":"De oplaadstatus van de batterij is veranderd","da":"Batteriets opladningstilstand er ændret","it":"Lo stato di carica della batteria è cambiato","ko":"전기차 충전 상태가 변경되면","pl":"Stan ładowania akumulatora uległ zmianie","ru":"Состояние зарядки батареи изменилось","sv":"Batteriets laddningsstatus har ändrats","es":"El estado de carga de la batería ha cambiado","fr":"L\'état de charge de la batterie a changé","no":"Batteriladestatusen ble endret","de":"Der Ladezustand des Akkus hat sich geändert","ar":"تم تغيير حالة شحن البطارية"},"args":[{"name":"state","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"ev_charging_state_is","title":{"en":"The battery charging state !{{is|is not}}","nl":"De oplaadstatus van de batterij !{{is|is niet}}","da":"Batteriets opladningstilstand !{{er|er ikke}}","it":"Lo stato di carica della batteria !{{è|non è}}","ko":"전기차 충전 상태가 다음!{{과 같으면|이 아니면}}","pl":"Stan ładowania baterii !{{to|to nie}}","ru":"Состояние зарядки аккумулятора !{{|не}}","sv":"Batteriets laddningsstatus !{{är|är inte}}","es":"El estado de carga de la batería !{{es|no es}}","fr":"L\'état de charge de la batterie !{{est|n\'est pas}}","no":"Batteriladestatusen !{{er|er ikke}}","de":"Der Ladezustand der Batterie !{{ist|ist nicht}}","ar":"حالة شحن البطارية !{{هي|ليست}}"},"args":[{"name":"state","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.4.5"}')},3420:e=>{"use strict";e.exports=JSON.parse('{"$schema":"http://json-schema.org/draft-07/schema#","$id":"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#","description":"Meta-schema for $data reference (JSON Schema extension proposal)","type":"object","required":["$data"],"properties":{"$data":{"type":"string","anyOf":[{"format":"relative-json-pointer"},{"format":"json-pointer"}]}},"additionalProperties":false}')},3454:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Home Security","nl":"Huisbeveiliging","de":"Heim-Sicherheit","fr":"Sécurité de la maison","it":"Sicurezza della casa","sv":"Hemsäkerhet","no":"Hjemmesikkerhet","es":"Seguridad de la casa","da":"Hjemmesikkerhed","ru":"Домашняя безопасность","pl":"Bezpieczeństwo domowe","ko":"홈 시큐리티","ar":"أمن المنزل"},"description":{"en":"Use this device class for home alarm systems.","de":"Nutze diese Geräteklasse für Heim-Alarm-Systeme.","fr":"Utilisez cette classe d\'appareil pour les systèmes d\'alarme de maison.","it":"Utilizza questa classe di dispositivi per i sistemi di allarme di casa.","sv":"Använd den här enhetsklassen för hemlarmsystem.","no":"Bruk denne enhetsklassen for hjemmealarmsystemer.","es":"Utiliza esta clase de dispositivo para los sistemas de alarmas de la casa.","da":"Brug denne enhedsklasse til alarmsystemer til hjemmet.","ru":"Используйте этот класс устройств для домашних систем сигнализации.","pl":"Użyj tej klasy urządzeń dla alarmów domowych.","ko":"이 디바이스 클래스는 가정용 알람 시스템에 사용합니다.","ar":"استخدم فئة الجهاز هذه لأنظمة إنذار المنزل.","nl":"Gebruik deze apparaatklasse voor huisalarmsystemen."}}')},3456:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Maximum target humidity","nl":"Maximale gewenste vochtigheid","da":"Maksimal målfugtighed","it":"Umidità target massima","ko":"최대 희망 습도","pl":"Maksymalna docelowa wilgotność","ru":"Максимальная заданная влажность","sv":"Maximal målfuktighet","es":"Humedad máxima deseada","fr":"Humidité cible maximale","no":"Maksimum ønsket fuktighet","ar":"الحد الأقصى للرطوبة المستهدفة","de":"Maximale Zielfeuchtigkeit"},"units":{"en":"%","nl":"%","da":"%","it":"%","ko":"%","pl":"%","ru":"%","sv":"%","es":"%","fr":" %","no":"%","ar":"%","de":"%"},"desc":{"en":"The high end of the target humidity level in percent.","nl":"De hoogste waarde van het gewenste vochtigheidsniveau in procenten.","da":"Den høje ende af den ønskede luftfugtighed i procent.","it":"Il massimo livello di umidità target in percentuale.","ko":"백분율로 표현한 목표 습도의 최대치입니다.","pl":"Górna granica docelowego poziomu wilgotności w procentach.","ru":"Верхний предел заданного уровня влажности в процентах.","sv":"Den övre delen av den önskade luftfuktighetsnivån i procent.","es":"El valor superior del nivel de humedad deseada en porcentaje.","fr":"Le niveau maximal de l\'humidité cible en pourcentage.","no":"Maksimum ønsket fuktighetsnivå i prosent.","ar":"الحد الأعلى لمستوى الرطوبة المستهدف بالنسبة المئوية.","de":"Das obere Ende der angestrebten Feuchtigkeit in Prozent."},"insights":true,"chartType":"stepLine","decimals":2,"min":0,"max":1,"color":"#0091FF","getable":true,"setable":true,"uiComponent":"slider","$flow":{"triggers":[{"id":"target_humidity_max_changed","title":{"en":"The maximum target humidity has changed","nl":"De maximale gewenste vochtigheid is veranderd","da":"Den maksimale målfugtighed er ændret","it":"L\'umidità target massima è cambiata","ko":"최대 희망 습도가 변경되면","no":"Maksimum ønsket fuktighet er endret","pl":"Zmieniła się maksymalna docelowa wilgotność","ru":"Максимальная заданная влажность изменена","sv":"Den högsta önskade luftfuktigheten har ändrats","es":"La humedad máxima deseada ha cambiado","fr":"L\'humidité cible maximale a changé","ar":"تغير الحد الأقصى للرطوبة المستهدفة","de":"Die maximale Zielfeuchtigkeit wurde geändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":0.5}]}],"actions":[{"id":"set_target_humidity_max","title":{"en":"Set the maximum target humidity","nl":"De maximale gewenste vochtigheid instellen","da":"Indstil den maksimale målfugtighed","it":"Imposta l\'umidità target massima","ko":"최대 희망 습도 설정","pl":"Ustaw maksymalną docelową wilgotność","ru":"Установить максимальную заданную влажность","sv":"Ställ in den högsta önskade luftfuktigheten","es":"Ajustar la humedad máxima deseada","fr":"Définir l\'humidité cible maximale","no":"Angi maksimum ønsket fuktighet","ar":"ضبط الحد الأقصى للرطوبة المستهدفة","de":"Einstellung der maximalen Zielfeuchtigkeit"},"args":[{"name":"target_humidity_max","type":"range","min":0,"max":1,"step":0.01,"value":0.5,"label":"%","labelMultiplier":100,"labelDecimals":0}]}]},"minCompatibility":"12.2.0"}')},3532:(e,t,a)=>{"use strict";const r=a(8019);let i;class n{constructor(e){this._capability=e}debug(...e){this._debug&&console.log("[dbg]",...e)}async validate({debug:e=!1}={}){this._debug=e,this.debug("Validating capability");const t=n.getJSONSchema(),a=new r({async:!0}).compile(t);if(!1===await a(this._capability))throw new Error(JSON.stringify(a.errors,!1,4)||"Invalid Capability");this.debug("Validated successfully")}static getJSONSchema(){return a(7224)}static getCapabilities(){if(i)return i;const e=a(1329);return i=e.reduce(((e,t)=>(e[t]=a(6081)(`./${t}.json`),e[t]=n._composeCapability(t,e[t]),e)),{}),i}static getCapability(e){const t=n.getCapabilities()[e];if(!t)throw new Error("invalid_capability");return t}static hasCapability(e){return!!this.getCapabilities()[e]}static _composeCapability(e,t){return t.flow&&console.warn(`Warning: using \`capability.flow\` (${e}), expected a \`capability.$flow\``),t.$flow&&["triggers","conditions","actions"].forEach((a=>{const r=t.$flow[a];Array.isArray(r)&&r.forEach((a=>{Array.isArray(a.args)&&a.args.forEach((e=>{"dropdown"===e.type&&"$values"===e.values&&(e.values=t.values,e.meta=e.meta||{},e.meta.$values=!0)})),Array.isArray(a.tokens)&&a.tokens.forEach((a=>{"$id"===a.name&&(a.name=e),"$type"===a.type&&(a.type=t.type),"$title"===a.title&&(a.title=t.title)}))}))})),t}static isInstanceOfId(e,t){return t===e||e.startsWith(`${t}.`)}static getBaseId(e){return e.split(".")[0]}}e.exports=n},3554:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Air Fryer","da":"Airfryer","de":"Heißluftfritteuse","es":"Freidora de aire","fr":"Friteuse à air","it":"Friggitrice ad aria","ko":"에어프라이어","nl":"Airfryer","no":"Airfryer","pl":"Frytkownica beztłuszczowa","ru":"Аэрогриль","sv":"Luftfritös","ar":"مقلاة هوائية"},"description":{"en":"Use this device class for air fryers.","da":"Brug denne enhedsklasse til airfryers.","de":"Verwenden Sie diese Geräteklasse für Heißluftfritteusen.","es":"Utiliza esta clase de dispositivo para freidoras de aire.","fr":"Utilisez cette classe d\'appareils pour les friteuses à air.","it":"Utilizza questa classe di dispositivi per le friggitrici ad aria.","ko":"이 디바이스 클래스는 에어프라이어에 사용합니다.","nl":"Gebruik deze apparaatklasse voor airfryers.","no":"Bruk denne enhetsklassen for airfryere.","pl":"Ta klasa urządzeń jest przeznaczona dla frytkownic beztłuszczowych.","ru":"Используйте этот класс устройств для аэрогрилей.","sv":"Använd den här enhetsklassen för luftfritöser.","ar":"استخدم فئة الجهاز هذه للمقالي الهوائية."},"minCompatibility":"12.0.0"}')},3573:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Heater Operation Mode","nl":"Verwarmingsmodus","da":"Varmeapparatets driftstilstand","it":"Modalità di funzionamento del calorifero","ko":"히터 운전 모드","pl":"Tryb grzania","ru":"Режим работы обогревателя","sv":"Driftläge för värmare","es":"Modo de calefacción","fr":"Mode de fonctionnement du chauffage","no":"Driftsmodus for varmeovn","ar":"وضع تشغيل المدفأة","de":"Betriebsmodus des Heizgeräts"},"values":[{"id":"eco","title":{"en":"Eco","nl":"Eco","da":"Øko","it":"Eco","ko":"절약","pl":"Eko","ru":"Эко","sv":"Eco","es":"Eco","fr":"Économique","no":"Øko","ar":"اقتصادي","de":"Öko"}},{"id":"electric","title":{"en":"Electric","nl":"Elektrisch","da":"Elektrisk","it":"Elettrico","ko":"전기","pl":"Elektryczne","ru":"Электричество","sv":"Elektrisk","es":"Eléctrico","fr":"Électrique","no":"Elektrisk","ar":"كهربائي","de":"Elektrisch"}},{"id":"performance","title":{"en":"Performance","nl":"Prestatie","da":"Præstation","it":"Prestazioni","ko":"고성능","pl":"Komfort","ru":"Высокопроизводительный","sv":"Prestanda","es":"Rendimiento","fr":"Performance","no":"Ytelse","ar":"الأداء","de":"Leistung"}},{"id":"high_demand","title":{"en":"High Demand","nl":"Hoog verbruik","da":"Høj efterspørgsel","it":"Domanda elevata","ko":"고수요","pl":"Wysokie zapotrzebowanie","ru":"Интенсивный","sv":"Hög efterfrågan","es":"Alta demanda","fr":"Forte demande","no":"Høy etterspørsel","ar":"طلب عالٍ","de":"Hoher Bedarf"}},{"id":"heat_pump","title":{"en":"Heat Pump","nl":"Warmtepomp","da":"Varmepumpe","it":"Pompa di calore","ko":"히트 펌프","no":"Varmepumpe","pl":"Pompa ciepła","ru":"Тепловой насос","sv":"Värmepump","es":"Bomba de calor","fr":"Pompe à chaleur","ar":"مضخة حرارية","de":"Wärmepumpe"}},{"id":"gas","title":{"en":"Gas","nl":"Gas","da":"Gas","it":"Gas","ko":"가스","no":"Gass","pl":"Gazowe","ru":"Газ","sv":"Gas","es":"Gas","fr":"Gaz","ar":"غاز","de":"Gas"}},{"id":"off","title":{"en":"Off","nl":"Uit","da":"Fra","it":"Off","ko":"꺼짐","no":"Av","pl":"Wył","ru":"Выключен","sv":"Av","es":"Desactivado","fr":"Désactivé","ar":"إيقاف","de":"Aus"}}],"color":"#FA6400","getable":true,"setable":true,"uiComponent":"picker","$flow":{"triggers":[{"id":"heater_operation_mode_changed","title":{"en":"The heater operation mode changed to","nl":"De verwarmingsmodus is veranderd naar","da":"Varmeapparatets driftstilstand er ændret til","it":"La modalità di funzionamento del calorifero è passata a","ko":"히터 작동 모드가 다음으로 변경되면","no":"Varmeelementets driftsmodus er endret til","pl":"Tryb grzania zmienił się na","ru":"Режим работы обогревателя изменен на","sv":"Värmarens driftläge har ändrats till","es":"El modo de calefacción ha cambiado a","fr":"Le mode de fonctionnement du chauffage est passé à","ar":"تم تغيير وضع تشغيل المدفأة إلى","de":"Der Betriebsmodus des Heizgeräts wurde geändert auf"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"heater_operation_mode_is","title":{"en":"The heater operation mode !{{is|is not}}","nl":"De verwarmingsmodus !{{is|is niet}}","da":"Varmeapparatets driftstilstand !{{er|er ikke}}","it":"La modalità di funzionamento del calorifero !{{è|non è}}","ko":"히터 작동 모드가 다음!{{이면|이 아니면}}","pl":"Tryb pracy ogrzewacza !{{jest|nie jest}}","ru":"Режим работы обогревателя !{{|не}}","sv":"Driftläge för värmaren !{{är|är inte}}","es":"El modo de calefacción !{{está|no está}}","fr":"Le mode de fonctionnement du chauffage !{{est|n\'est pas}}","no":"Varmeovnens driftsmodus !{{er|er ikke}}","ar":"وضع تشغيل المدفأة !{{هو|ليس}}","de":"Der Betriebsmodus des Heizgeräts !{{ist|ist nicht}}"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}],"actions":[{"id":"set_heater_operation_mode","title":{"en":"Set the heater operation mode to","nl":"Stel de verwarmingsmodus in op","da":"Indstil varmeapparatets driftstilstand til","it":"Imposta la modalità di funzionamento del calorifero su","ko":"히터 작동 모드를 다음으로 설정","pl":"Ustaw tryb grzania na","ru":"Установить режим работы обогревателя на","sv":"Ställ in värmarens driftläge på","es":"Ajustar el modo de calefacción en","fr":"Définir le mode de fonctionnement du chauffage sur","no":"Sett varmeovnens driftsmodus til","ar":"ضبط وضع تشغيل المدفأة على","de":"Stelle den Betriebsmodus des Heizgeräts auf"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.2.0"}')},3597:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"CO","nl":"CO","de":"CO","fr":"CO","it":"CO","sv":"CO","no":"CO","da":"CO","ru":"CO","pl":"CO","ko":"일산화탄소(CO)","ar":"أول أكسيد الكربون","es":"CO"},"units":{"en":"ppm","ru":"ч./млн.","ko":"ppm","no":"ppm","pl":"ppm","ar":"جزء في المليون","da":"ppm","de":"ppm","es":"ppm","fr":"ppm","it":"ppm","nl":"ppm","sv":"ppm"},"insights":true,"desc":{"en":"CO in Parts-per-million (ppm)","nl":"CO deeltjes per miljoen (ppm)","de":"CO in Anteile pro Million (ppm)","fr":"Niveau de CO en parts par million (ppm)","it":"Livello di CO in parti per milione (ppm)","sv":"CO i partiklar-per-miljon (ppm)","no":"CO i partikler per million (ppm)","es":"CO en partes por millón (ppm)","da":"CO i partikler-per-million (ppm)","ru":"CO в частицах на миллион (ч./млн.)","pl":"Stężenie tlenku węgla w części na milion (ppm)","ko":"CO 백만분의일 농도(ppm)","ar":"أول أكسيد الكربون بجزء في المليون (ppm)"},"chartType":"spline","decimals":2,"color":"#E02020","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_co_changed","title":{"en":"The CO-level changed","nl":"Het CO-niveau is veranderd","de":"Der CO-Gehalt hat sich geändert","fr":"Le niveau de CO a changé","it":"Il livello di CO è cambiato","sv":"CO-nivån ändrades","no":"CO-nivået ble endret","es":"El nivel de CO ha cambiado","da":"CO-niveauet har ændret sig","ru":"CO-уровень изменен","pl":"Zmienił się poziom CO","ko":"일산화탄소(CO) 수준이 변경되면","ar":"تغير مستوى أول أكسيد الكربون"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":20}]}]}}')},3598:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Pump mode","nl":"Pompmodus","da":"Pumpetilstand","it":"Modalità pompa","ko":"펌프 모드","pl":"Tryb pompy","ru":"Режим работы насоса","sv":"Pumpläge","es":"Modo bombeo","fr":"Mode de pompage","no":"Pumpemodus","ar":"وضع المضخة","de":"Pumpenmodus"},"desc":{"en":"Used to set which setpoint regulates the pump.","nl":"Wordt gebruikt om in te stellen welk setpoint de pomp regelt.","da":"Bruges til at indstille, hvilket indstillingspunkt der regulerer pumpen.","it":"Serve per impostare il setpoint che regola la pompa.","ko":"펌프를 조절하는 설정값을 설정하는 데 사용됩니다.","pl":"Służy do ustawiania wartości zadanej regulującej pompę.","ru":"Используется для выбора уставки, регулирующей работу насоса.","sv":"Används för att ställa in vilket börvärde som reglerar pumpen.","es":"Sirve para establecer qué valor regula el bombeo.","fr":"Permet de définir le point de réglage qui régule la pompe.","no":"Brukes til å innstille hvilket settepunkt som skal regulere pumpen.","ar":"يُستخدم لضبط نقطة الضبط التي تنظم المضخة.","de":"Zum Einstellen des Sollwerts, der die Pumpe regelt."},"values":[{"id":"constant_pressure","title":{"en":"Constant Pressure","nl":"Constante druk","da":"Konstant tryk","it":"Pressione costante","ko":"일정 압력","pl":"Stałe ciśnienie","ru":"Постоянное давление","sv":"Konstant tryck","es":"Presión constante","fr":"Pression constante","no":"Konstant trykk","ar":"ضغط ثابت","de":"Konstanter Druck"}},{"id":"compensated_pressure","title":{"en":"Compensated Pressure","nl":"Gecompenseerde druk","da":"Kompenseret tryk","it":"Pressione compensata","ko":"보상 압력","pl":"Kompensowane ciśnienie","ru":"Компенсированное давление","sv":"Kompenserat tryck","es":"Presión compensada","fr":"Pression compensée","no":"Kompensert trykk","ar":"ضغط معوّض","de":"Kompensierter Druck"}},{"id":"constant_flow","title":{"en":"Constant Flow","nl":"Constante Flow","da":"Konstant Flow","it":"Flow costante","ko":"일정 유량","pl":"Stały przepływ","ru":"Постоянный Flow","sv":"Konstant Flow","es":"Flow constante","fr":"Flow constant","no":"Konstant Flow","ar":"Flow ثابت","de":"Konstanter Flow"}},{"id":"constant_speed","title":{"en":"Constant Speed","nl":"Constante snelheid","da":"Konstant hastighed","it":"Velocità costante","ko":"일정 속도","pl":"Stała prędkość","ru":"Постоянная скорость","sv":"Konstant hastighet","es":"Velocidad constante","fr":"Vitesse constante","no":"Konstant hastighet","ar":"سرعة ثابتة","de":"Konstante Geschwindigkeit"}},{"id":"constant_temperature","title":{"en":"Constant Temperature","nl":"Constante temperatuur","da":"Konstant temperatur","it":"Temperatura costante","ko":"일정 온도","pl":"Stała temperatura","ru":"Постоянная температура","sv":"Konstant temperatur","es":"Temperatura constante","fr":"Température constante","no":"Konstant temperatur","ar":"درجة حرارة ثابتة","de":"Konstante Temperatur"}},{"id":"automatic","title":{"en":"Automatic","nl":"Automatisch","da":"Automatisk","es":"Automático","fr":"Automatique","it":"Automatico","ko":"자동","no":"Automatisk","pl":"Automatyczny","ru":"Автоматический","sv":"Automatisk","ar":"تلقائي","de":"Automatisch"}}],"color":"#0091FF","getable":true,"setable":true,"uiComponent":"picker","$flow":{"triggers":[{"id":"pump_mode_changed","highlight":true,"title":{"en":"The pump mode changed to","nl":"De pompmodus is veranderd naar","da":"Pumpetilstanden blev ændret til","it":"La modalità della pompa è passata a","ko":"펌프 모드가 다음으로 변경되면","pl":"Tryb pompy zmienił się na","ru":"Режим работы насоса изменен на","sv":"Pumpläget ändrades till","es":"El modo bombeo ha cambiado a","fr":"Le mode de pompage est passé à","no":"Pumpemodus ble endret til","ar":"تغير وضع المضخة إلى","de":"Der Pumpenmodus wurde geändert auf"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"pump_mode_is","title":{"en":"The pump mode !{{is|is not}}","nl":"De pompmodus !{{is|is niet}}","da":"Pumpetilstanden !{{er|er ikke}}","it":"La modalità pompa !{{è|non è}}","ko":"펌프 모드가 다음!{{이면|이 아니면}}","pl":"Tryb pompy !{{jest|nie jest}}","ru":"Режим работы насоса !{{|не}}","sv":"Pumpens läge !{{är|är inte}}","es":"El modo bombeo !{{es|no es}}","fr":"Le mode de pompage !{{est|n\'est pas}}","no":"Pumpemodusen !{{er|er ikke}}","ar":"وضع المضخة !{{هو|ليس}}","de":"Der Pumpenmodus !{{ist|ist nicht}}"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}],"actions":[{"id":"set_pump_mode","title":{"en":"Set the pump mode to","nl":"Stel de pompmodus in op","da":"Indstil pumpetilstanden til","it":"Imposta la modalità della pompa su","ko":"펌프 모드를 다음으로 설정","pl":"Ustaw tryb pompy na","ru":"Установить режим работы насоса на","sv":"Ställ in pumpläget på","es":"Ajustar el modo bombeo en","fr":"Définir le mode de pompage sur","no":"Sett pumpemodusen til","ar":"ضبط وضع المضخة على","de":"Stelle den Pumpenmodus auf"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.2.0"}')},3635:(e,t,a)=>{"use strict";var r=/^[a-z_$][a-z0-9_$-]*$/i,i=a(7992),n=a(2897);e.exports={add:function(e,t){var a=this.RULES;if(a.keywords[e])throw new Error("Keyword "+e+" is already defined");if(!r.test(e))throw new Error("Keyword "+e+" is not a valid identifier");if(t){this.validateKeyword(t,!0);var n=t.type;if(Array.isArray(n))for(var s=0;s{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Wind strength","nl":"Windsnelheid","de":"Windstärke","fr":"Force du vent","it":"Forza del vento","sv":"Vindstyrka","no":"Vindstyrke","es":"Fuerza del viento","da":"Vindstyrke","ru":"Сила ветра","pl":"Siła wiatru","ko":"풍속","ar":"شدة الرياح"},"units":{"en":"km/h","ru":"км/ч","ko":"km/h","no":"km/t","ar":"كم/ساعة","da":"km/t","de":"km/h","es":"km/h","fr":"km/h","it":"km/h","nl":"km/u","pl":"km/h","sv":"km/h"},"desc":{"en":"Wind Strength in kilometer per hour (km/h)","nl":"Windsnelheid in kilometer per uur (km/u)","de":"Windstärke in Kilometer pro Stunde (km/h)","fr":"Force du vent en kilomètres par heure (km/h)","it":"Forza del vento in chilometri orari (km/h)","sv":"Vindstyrka i kilometer per timme (km/h)","no":"Vindstyrke i kilometer per time (km/t)","es":"La fuerza del viento en kilómetros por hora (km/h)","da":"Vindstyrke i kilometer i timen (km/t)","ru":"Сила ветра в км в час (км/ч)","pl":"Siła wiatru w kilometrach na godzinę (km/h)","ko":"풍속 시간당 킬로미터(km/h)","ar":"شدة الرياح بالكيلومتر في الساعة (km/h)"},"insights":true,"chartType":"spline","decimals":2,"color":"#32C5FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_wind_strength_changed","title":{"en":"The wind strength changed","nl":"De windkracht is veranderd","de":"Die Windstärke hat sich geändert","fr":"La force du vent a changé","it":"La forza del vento è cambiata","sv":"Vindstyrkan ändrades","no":"Vindstyrken ble endret","es":"La fuerza del viento ha cambiado","da":"Vindstyrken ændrede sig","ru":"Сила ветра изменилась","pl":"Zmiana siły wiatru","ko":"풍속이 변경되면","ar":"تغيرت شدة الرياح"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":15}]}]}}')},3672:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Remote","nl":"Afstandsbediening","de":"Fernbedienung","fr":"Télécommande","it":"Telecomando","sv":"Fjärrkontroll","no":"Fjernkontroll","es":"Mando a distancia","da":"Fjernbetjening","ru":"Пульт","pl":"Pilot","ko":"리모컨","ar":"جهاز تحكم عن بعد"},"description":{"en":"Use this device class for (TV/Sunblind/Keyfob etc.) remotes.","de":"Nutze diese Geräteklasse für (TV/Jalousien/Schlüsselanhänger etc.)-Fernbedienungen.","fr":"Utilisez cette classe d\'appareil pour les télécommandes (TV/Stores/Porte-clés, etc.).","it":"Utilizza questa classe di dispositivi per i telecomandi (TV/Tapparelle/Portachiavi, ecc.).","sv":"Använd den här enheten för fjärrkontroller för (TV/Markis/Nyckellås mm.).","no":"Bruk denne enhetsklassen for fjernkontroller (for TV/markise/smartnøkkel etc.).","es":"Utiliza esta clase de dispositivo para los mandos a distancia (TV/persianas/llaves electrónicas, etc.","da":"Brug denne enhedsklasse til fjernbetjeninger (til TV/markise/smartnøgle osv.)","ru":"Используйте этот класс устройств для пультов дистанционного управления (телевизоры/жалюзи/брелки и т.п.).","pl":"Użyj tej klasy urządzeń dla pilotów (od telewizora/od markizy/klucza zbliżeniowego itp.).","ko":"이 디바이스 클래스는 (TV/선블라인드/스마트키 등) 리모컨에 사용합니다.","ar":"استخدم فئة الجهاز هذه لأجهزة التحكم عن بعد (تلفزيون/ستارة شمسية/مفتاح تشغيل، إلخ).","nl":"Gebruik deze apparaatklasse voor afstandsbedieningen (tv/zonwering/keyfob etc.)."}}')},3741:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"PM2.5","nl":"PM2,5","de":"PM2.5","fr":"PM2.5","it":"PM2.5","sv":"PM2.5","no":"PM2.5","es":"PM2,5","ru":"ТЧ 2.5","pl":"PM2.5","ko":"초미세먼지(PM2.5)","ar":"PM2.5","da":"PM2.5"},"units":{"en":"μg/m³","ru":"мкг/м³","ko":"μg/m³","no":"μg/m³","ar":"ميكروجرام/م³","da":"μg/m³","de":"μg/m³","es":"μg/m³","fr":"μg/m³","it":"μg/m³","nl":"μg/m³","pl":"μg/m³","sv":"μg/m³"},"insights":true,"desc":{"en":"Atmospheric particulate matter (μg/m³)","nl":"Deeltjesvormige luchtverontreiniging (μg/m³)","de":"Atmosphärischer Feinstaub (μg/m³)","fr":"Particules en suspension (μg/m³)","it":"Particolato atmosferico (μg/m³)","sv":"Atmosfäriskt partikelämne (μg/m³)","no":"Atmosfæriske partikler (μg/m³)","es":"Partículas atmosféricas (μg/m³)","da":"Atmosfæriske partikler (μg/m³)","ru":"Атмосферные твердые частицы (мкг/м³)","pl":"Pył zawieszony (μg/m³)","ko":"대기 중 미세입자 수(μg/m³)","ar":"الجسيمات المعلقة في الغلاف الجوي (ميكروجرام/م³)"},"chartType":"spline","decimals":2,"color":"#E02020","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_pm25_changed","title":{"en":"The PM2.5 value changed","nl":"De PM2,5-waarde is veranderd","de":"Der PM2.5-Wert hat sich geändert","fr":"La valeur PM2.5 a changé","it":"Il valore di PM2.5 è cambiato","sv":"PM2.5-värdet har ändrats","no":"PM2.5-verdien ble endret","es":"El valor de PM2,5 ha cambiado","da":"PM2.5-værdien har ændret sig","ru":"Значение ТЧ 2.5 изменилось","pl":"Zmieniła się wartość PM2.5","ko":"초미세먼지(PM2.5) 값이 변경되면","ar":"تغيرت قيمة PM2.5"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":2}]}]}}')},3756:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Multicooker","da":"Multicooker","de":"Multikocher","es":"Robot de cocina","fr":"Multicuiseur","it":"Multicooker","ko":"멀티쿠커","nl":"Multicooker","no":"Multikoker","pl":"Multicooker","ru":"Мультиварка","sv":"Multikokare","ar":"جهاز طهي متعدد"},"description":{"en":"Use this device class for multicookers.","da":"Brug denne enhedsklasse til multicookere.","de":"Verwenden Sie diese Geräteklasse für Multikocher.","es":"Utiliza esta clase de dispositivo para robots de cocina.","fr":"Utilisez cette classe d\'appareils pour les multicuiseurs.","it":"Utilizza questa classe di dispositivi per i multicooker.","ko":"이 디바이스 클래스는 멀티쿠커에 사용합니다.","nl":"Gebruik deze apparaatklasse voor multicookers.","no":"Bruk denne enhetsklassen for multikokere.","pl":"Tej klasy urządzeń należy używać w przypadku multicookerów.","ru":"Используйте этот класс устройств для мультиварок.","sv":"Använd den här enhetsklassen för multikokare.","ar":"استخدم فئة الجهاز هذه لأجهزة الطهي المتعددة."},"minCompatibility":"12.0.0"}')},3789:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Energy","nl":"Energie","de":"Energie","fr":"Énergie","it":"Energia","sv":"Energi","no":"Energi","es":"Energía","da":"Energi","ru":"Электроэнергия","pl":"Energia","ko":"전력량","ar":"الطاقة"},"decimals":2,"units":{"en":"kWh","ru":"кВтч","ko":"kWh","no":"kWh","ar":"كيلواط ساعة","da":"kWh","de":"kWh","es":"kWh","fr":"kWh","it":"kWh","nl":"kWh","pl":"kWh","sv":"kWh"},"desc":{"en":"Energy usage in kilowatt-hour (kWh)","nl":"Energie verbruik in kilowattuur (kWh)","de":"Energieverbrauch in Kilowattstunde (kWh)","fr":"Consommation d\'énergie en kilowatt-heure (kWh)","it":"Consumo energetico in kilowattora (kWh)","sv":"Energianvändning i kilowattimmar (kWh)","no":"Energiforbruk i kilowattimer (kWh)","es":"Uso de energía en kilovatio hora (kWh)","da":"Energiforbrug i kilowattime (kWh)","ru":"Энергопотребление в киловатт-часах (кВтч)","pl":"Zużycie energii w kilowatogodzinach (kWh)","ko":"에너지 사용량 킬로와트시(kWh)","ar":"استهلاك الطاقة بالكيلوواط في الساعة (kWh)"},"chartType":"spline","options":{"isApproximated":{"type":"boolean","default":false,"desc":{"en":"This flag is used to determine that the device itself has no power measurement functionality, but that the driver calculates the energy use.","ru":"Этот флаг используется для определения того, что само устройство не имеет функции измерения электроэнергии, но драйвер рассчитывает потребление энергии.","pl":"Flaga oznacza, że samo urządzenie nie ma funkcji pomiaru mocy, ale sterownik oblicza zużycie energii.","ko":"이 플래그는 제품 자체에 전력 측정 기능이 없지만 드라이버가 전력량을 계산하는 경우에 사용돼요.","no":"Dette flagget brukes til å anmerke at enheten i seg selv ikke har noen funksjon for effektmåling, men at sjåføren beregner energibruken.","es":"Este aviso indica que el dispositivo no dispone de ninguna funcionalidad para medir la energía, sino que el controlador calcula el uso de energía.","ar":"تُستخدم هذه العلامة لتحديد أن الجهاز نفسه لا يحتوي على وظيفة قياس الطاقة، ولكن برنامج التشغيل يحسب استهلاك الطاقة.","da":"Dette flag bruges til at bestemme, at enheden ikke selv har nogen strømmålingsfunktionalitet, men at driveren beregner energiforbruget.","de":"Dieses Flag wird verwendet, um festzustellen, dass das Gerät selbst keine Strommessfunktion hat, sondern dass der Treiber den Energieverbrauch berechnet.","fr":"Cet indicateur sert à signaler que l\'appareil n\'intègre pas de fonction de mesure de la puissance et la consommation d\'énergie est calculée par le pilote.","it":"Questo flag viene utilizzato per indicare che il dispositivo in sé non dispone di una funzionalità di misurazione dell\'energia, ma che il driver calcola il consumo energetico.","nl":"Deze vlag wordt gebruikt om aan te geven dat het apparaat zelf geen functionaliteit voor vermogensmeting heeft, maar dat het stuurprogramma het energieverbruik berekent.","sv":"Denna flagga används för att fastställa att enheten i sig inte har någon funktion för effektmätning, men att drivrutinen beräknar energianvändningen."}}},"color":"#6DD400","insights":true,"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"meter_power_changed","title":{"en":"The power meter changed","nl":"De stroommeter is veranderd","de":"Der Gesamtverbrauch hat sich geändert","fr":"Le compteur électrique a changé","it":"Il misuratore di potenza è cambiato","sv":"Elmätaren ändrades","no":"Strømmåleren ble endret","es":"El contador de energía ha cambiado","da":"Strømmåleren ændrede sig","ru":"Измерения счетчика электроэнергии изменились","pl":"Zmiana w liczniku mocy","ko":"전력량이 변경되면","ar":"تغير عداد الطاقة"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":25}]}]}}')},3803:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Radon","nl":"Radon","da":"Radon","it":"Radon","ko":"라돈","pl":"Radon","ru":"Радон","sv":"Radon","es":"Radón","fr":"Radon","no":"Radon","ar":"الرادون","de":"Radon"},"units":{"en":"Bq/m³","nl":"Bq/m³","da":"Bq/m³","it":"Bq/m³","ko":"Bq/m³","pl":"Bq/m³","ru":"Бк/м³","sv":"Bq/m³","es":"Bq/m³","fr":"Bq/m³","no":"Bq/m³","ar":"بيكريل/م³","de":"Bq/m³"},"insights":true,"desc":{"en":"Radon in Becquerel per cubic meter (Bq/m³)","nl":"Radon in becquerel per kubieke meter (Bq/m³)","da":"Radon i Becquerel pr. kubikmeter (Bq/m³)","it":"Radon in Becquerel per metro cubo (Bq/m³)","ko":"입방미터당 베크렐(Bq/m³) 단위의 라돈","pl":"Radon w bekerelach na metr sześcienny (Bq/m³)","ru":"Радон в беккерелях на кубический метр (Бк/м³)","sv":"Radon i becquerel per kubikmeter (Bq/m³)","es":"Radón en becquerelios por metro cúbico (Bq/m³)","fr":"Radon en Becquerel par mètre cube (Bq/m³)","no":"Radon i becquerel per kubikkmeter (Bq/m³)","ar":"الرادون بالبيكريل لكل متر مكعب (Bq/m³)","de":"Radon in Becquerel pro Kubikmeter (Bq/m³)"},"chartType":"spline","decimals":2,"color":"#8B0000","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_radon_changed","title":{"en":"The radon level has changed","nl":"Het radon-niveau is veranderd","da":"Radon-værdien har ændret sig","it":"Il livello di radon è cambiato","ko":"라돈 수준이 변경되면","no":"Radonnivået er endret","pl":"Zmienił się poziom radonu","ru":"Значение радона изменилось","sv":"Radonvärdet har ändrats","es":"El nivel de radón ha cambiado","fr":"La valeur du radon a changé","ar":"تغير مستوى الرادون","de":"Der Radonwert hat sich geändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":2}]}]},"minCompatibility":"12.2.0"}')},3805:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Vacuum Cleaner","nl":"Stofzuiger","de":"Staubsauger","fr":"Aspirateur","it":"Aspirapolvere","sv":"Dammsugare","no":"Støvsuger","es":"Aspiradora","da":"Støvsuger","ru":"Пылесос","pl":"Odkurzacz","ko":"진공청소기","ar":"مكنسة كهربائية"},"description":{"en":"Use this device class for vacuum cleaners, usually together with the `vacuumcleaner_state` capability.","de":"Nutze diese Geräteklasse für Staubsauger - normalerweise zusammen mit der `vacuumcleaner_state`-Fähigkeit.","fr":"Utilisez cette classe d\'appareil pour les aspirateurs, habituellement avec la capacité `vacuumcleaner_state`.","it":"Utilizza questa classe di dispositivi per gli aspirapolvere, generalmente insieme alla funzionalità `vacuumcleaner_state`.","sv":"Använd den här enhetsklassen för dammsugare, oftast tillsammans med funktionen `vacuumcleaner_state`.","no":"Bruk denne enhetsklassen for støvsugere, ofte sammen med funksjonen `vacuumcleaner_state`.","es":"Utiliza esta clase de dispositivo para las aspiradoras, generalmente junto con la capacidad `vacuumcleaner_state`.","da":"Brug denne enhedsklasse til støvsugere, normalt sammen med `vacuumcleaner_state` funktionen.","ru":"Используйте этот класс устройств для пылесосов, обычно вместе с функцией `vacuumcleaner_state`.","pl":"Użyj tej klasy urządzeń dla odkurzaczy, zwykle razem ze zdolnością `vacuumcleaner_state`.","ko":"이 디바이스 클래스는 보통 \'vacuumcleaner_state\' 기능을 갖춘 진공청소기에 사용합니다.","ar":"استخدم فئة الجهاز هذه للمكانس الكهربائية، عادةً مع إمكانية \'vacuumcleaner_state\'.","nl":"Gebruik deze apparaatklasse voor stofzuigers, meestal samen met de optie \'vacuumcleaner_state\'."}}')},3808:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Air Quality Index","nl":"Luchtkwaliteitsindex","da":"Indeks for luftkvalitet","it":"Indice di qualità dell\'aria","ko":"공기질 지수","pl":"Wskaźnik jakości powietrza","ru":"Показатель качества воздуха","sv":"Index för luftkvalitet","es":"Índice de calidad del aire","fr":"Indice de qualité de l\'air","no":"Luftkvalitetsindeks","ar":"مؤشر جودة الهواء","de":"Luftqualitätsindex"},"insights":true,"desc":{"en":"Air Quality Index","nl":"Luchtkwaliteitsindex","da":"Indeks for luftkvalitet","it":"Indice di qualità dell\'aria","ko":"공기질 지수","pl":"Wskaźnik jakości powietrza","ru":"Показатель качества воздуха","sv":"Index för luftkvalitet","es":"Índice de calidad del aire","fr":"Indice de qualité de l\'air","no":"Luftkvalitetsindeks","ar":"مؤشر جودة الهواء","de":"Luftqualitätsindex"},"chartType":"spline","color":"#6DD400","getable":true,"setable":false,"uiComponent":"sensor","min":0,"max":500,"$flow":{"triggers":[{"id":"measure_aqi_changed","title":{"en":"The air quality index changed","nl":"De luchtkwaliteitsindex is veranderd","da":"Luftkvalitetsindekset ændrede sig","it":"L\'indice di qualità dell\'aria è cambiato","ko":"공기질 지수가 변경되면","pl":"Zmienił się wskaźnik jakości powietrza","ru":"Показатель качества воздуха изменился","sv":"Index för luftkvalitet ändrades","es":"El índice de calidad del aire ha cambiado","fr":"L\'indice de qualité de l\'air a changé","no":"Luftkvalitetsindeksen ble endret","ar":"تغير مؤشر جودة الهواء","de":"Der Luftqualitätsindex hat sich geändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":2}]}]},"minCompatibility":"12.2.0"}')},3816:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Pump Supply Fault Alarm","nl":"Waarschuwing voor fout bij pomptoevoer","da":"Alarm for fejl i pumpeforsyningen","it":"Allarme guasto alimentazione pompa","ko":"펌프 공급 결함 감지","pl":"Alarm usterki zasilania pompy","ru":"Сигнал о неисправности в питании насоса","sv":"Larm om fel i pumptillförseln","es":"Alarma de fallo en el suministro eléctrico del bombeo","fr":"Alarme de défaut d\'alimentation de la pompe","no":"Feilalarm for pumpeforsyning","ar":"إنذار عطل إمداد المضخة","de":"Fehleralarm der Pumpenversorgung"},"titleShort":{"en":"Pump Supply Fault","nl":"Fout bij pomptoevoer","da":"Fejl i pumpeforsyningen","it":"Guasto alimentazione pompa","ko":"펌프 공급 결함","pl":"Usterka zasilania pompy","ru":"Неисправность питания насоса","sv":"Fel i pumptillförseln","es":"Fallo en el suministro eléctrico del bombeo","fr":"Défaut d\'alimentation de la pompe","no":"Feil på pumpeforsyning","ar":"عطل في إمداد المضخة","de":"Fehler bei der Versorgung der Pumpe"},"desc":{"en":"True when a fault is detected in the pump supply.","nl":"Wordt geactiveerd wanneer een fout wordt gedetecteerd in de pomptoevoer.","da":"Sandt, når der registreres en fejl i pumpeforsyningen.","it":"Vero quando viene rilevato un guasto nell\'alimentazione della pompa.","ko":"펌프 공급장치에 고장이 감지되면 참입니다.","pl":"Prawda, gdy wykryta jest usterka zasilania pompy.","ru":"Значение «истина» при обнаружении неисправности в питании насоса.","sv":"Sant när ett fel upptäcks i pumptillförseln.","es":"Activado cuando se detecta un fallo en el suministro eléctrico del bombeo.","fr":"Se déclenche lorsqu\'un défaut est détecté dans l\'alimentation de la pompe.","no":"Sann når en feil er påvist i pumpeforsyningen.","ar":"صحيح عند اكتشاف عطل في إمداد المضخة.","de":"Wahr, wenn ein Fehler in der Pumpenversorgung erkannt wird."},"insights":true,"insightsTitleTrue":{"en":"Problem was detected in the pump supply","nl":"Er was een probleem gedetecteerd in de pomptoevoer","da":"Der blev opdaget et problem i pumpeforsyningen","it":"È stato rilevato un problema nell\'alimentazione della pompa","ko":"펌프 공급 결함 감지됨","pl":"Problem z zasilaniem pompy był wykryty","ru":"Была обнаружена проблема с питанием насоса","sv":"Problem upptäcktes i pumptillförseln","es":"Se ha detectado un problema en el suministro eléctrico del bombeo","fr":"Un problème a été détecté dans l\'alimentation de la pompe","no":"Et problem i pumpeforsyningen ble påvist","ar":"تم اكتشاف مشكلة في إمداد المضخة","de":"Es wurde ein Problem in der Pumpenversorgung festgestellt"},"insightsTitleFalse":{"en":"Problem in the pump supply was solved","nl":"Het probleem in de pomptoevoer werd opgelost","da":"Problem med pumpeforsyningen blev løst","it":"Il problema di alimentazione della pompa è stato risolto","ko":"정상","pl":"Problem z zasilaniem pompy był rozwiązany","ru":"Проблема с питанием насоса была решена","sv":"Problem med pumptillförseln löstes","es":"Se ha resuelto el problema en el suministro eléctrico del bombeo","fr":"Le problème d\'alimentation de la pompe a été résolu","no":"Problemet i pumpeforsyningen ble løst","ar":"تم حل المشكلة في إمداد المضخة","de":"Problem mit der Pumpenversorgung wurde gelöst"},"color":"#0091FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_pump_supply_true","highlight":true,"title":{"en":"A problem is detected in the pump supply","nl":"Er is een probleem gedetecteerd in de pomptoevoer","da":"Der er opdaget et problem i pumpeforsyningen","it":"È stato rilevato un problema nell\'alimentazione della pompa","ko":"펌프 공급에서 결함이 감지되면","pl":"Problem z zasilaniem pompy jest wykryty","ru":"Обнаружена проблема с питанием насоса","sv":"Ett problem har upptäckts i pumptillförseln","es":"Se ha detectado un problema en el suministro eléctrico del bombeo","fr":"Un problème est détecté dans l\'alimentation de la pompe","no":"Et problem i pumpeforsyningen er påvist","ar":"تم اكتشاف مشكلة في إمداد المضخة","de":"Es wurde ein Problem mit der Pumpenversorgung festgestellt"}},{"id":"alarm_pump_supply_false","title":{"en":"The problem in the pump supply is solved","nl":"Het probleem in de pomptoevoer is opgelost","da":"Problemet med pumpeforsyningen er løst","it":"Il problema dell\'alimentazione della pompa è risolto","ko":"펌프 공급이 정상 상태이면","pl":"Problem z zasilaniem pompy jest rozwiązany","ru":"Проблема с питанием насоса решена","sv":"Problemet med pumptillförseln är löst","es":"Se ha resuelto el problema en el suministro eléctrico del bombeo","fr":"Le problème de l\'alimentation de la pompe est résolu","no":"Problemet i pumpeforsyningen er løst","ar":"تم حل المشكلة في إمداد المضخة","de":"Das Problem mit der Pumpenversorgung ist gelöst"}}],"conditions":[{"id":"alarm_pump_supply","title":{"en":"There !{{is|isn\'t}} a problem in the pump supply","nl":"Er is !{{een|geen}} probleem in de pomptoevoer","da":"Der !{{er|er ikke}} et problem i pumpeforsyningen","it":"!{{C\'è un|Non c\'è nessun}} problema nell\'alimentazione della pompa","ko":"펌프 공급!{{에서 결함이 감지되면|이 정상 상태이면}}","pl":"!{{Występuje|Nie występuje}} problem z zasilaniem pompy","ru":"!{{Есть проблема|нет проблемы}} с питанием насоса","sv":"Det !{{är|är inte}} ett problem i pumpförsörjningen","es":"!{{Hay un problema|No hay ningún problema}} en el suministro eléctrico del bombeo","fr":"Il !{{y a un problème|n\'y a pas de problème}} concernant l\'alimentation de la pompe","no":"Det !{{er|er ikke}} et problem i pumpeforsyningen","ar":"توجد !{{مشكلة|لا توجد مشكلة}} في إمداد المضخة","de":"Es gibt !{{ein|kein}} Problem mit der Pumpenversorgung"}}]},"minCompatibility":"12.2.0"}')},3822:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Window coverings state","nl":"Raambekledingstatus","de":"Jalousien-Status","fr":"Etat des stores","it":"Stato delle tapparelle","sv":"Status för fönsterskydd","no":"Status for vindusbeskyttelse","es":"Estado de los cobertores de ventanas","da":"Status for vinduesdække","ru":"Состояние оконных навесов","pl":"Stan osłon okiennych","ko":"창문 커버 상태","ar":"حالة أغطية النوافذ"},"type":"enum","values":[{"id":"up","title":{"en":"Up","nl":"Omhoog","de":"Oben","fr":"Haut","it":"Alzate","sv":"Upp","no":"Opp","es":"Arriba","da":"Oppe","ru":"Наверх","pl":"Rozchylone","ko":"위로","ar":"للأعلى"}},{"id":"idle","title":{"en":"Idle","nl":"Stil","de":"Inaktiv","fr":"Inactif","it":"Socchiuse","sv":"Inaktiv","no":"Ikke aktiv","es":"Inactivos","da":"Inaktiv","ru":"В ожидании","pl":"W spoczynku","ko":"유휴","ar":"خامل"}},{"id":"down","title":{"en":"Down","nl":"Omlaag","de":"Unten","fr":"Bas","it":"Abbassate","sv":"Ned","no":"Ned","es":"Abajo","da":"Nede","ru":"Вниз","pl":"Zasunięte","ko":"아래로","ar":"للأسفل"}}],"color":"#F5B207","getable":true,"setable":true,"uiComponent":"ternary","$flow":{"triggers":[{"id":"windowcoverings_state_changed","highlight":true,"title":{"en":"The state changed","nl":"De status is veranderd","de":"Der Status hat sich geändert","fr":"L\'état a été modifié","it":"Lo stato è cambiato","sv":"Status ändrades","no":"Status ble endret","es":"El estado ha cambiado","da":"Status blev ændret","ru":"Состояние изменено","pl":"Zmiana stanu","ko":"창문 가림 상태가 변경되면","ar":"تم تغيير الحالة"},"args":[{"name":"state","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"windowcoverings_state_is","title":{"en":"The state is !{{|not}}","nl":"De status is !{{|niet}}","de":"Der Status ist !{{|nicht}}","fr":"L\'état !{{est|n\' est pas}}","it":"Lo stato !{{è|non è}}","sv":"Status är !{{|inte}}","no":"Status er !{{|ikke}}","es":"El estado !{{|no}} es","da":"Status er !{{|ikke}}","ru":"Состояние !{{|не}}","pl":"Stan to !{{|nie}}","ko":"창문 가림 상태가 다음!{{이면|이 아니면}}","ar":"الحالة !{{هي|ليست}}"},"args":[{"name":"state","type":"dropdown","values":"$values"}]}],"actions":[{"id":"set_windowcoverings_state","highlight":true,"title":{"en":"Set state","nl":"Zet de status","de":"Status setzen","fr":"Définir l\'état","it":"Imposta lo stato","sv":"Ställ in status","no":"Innstill status","es":"Configurar estado","da":"Indstil status","ru":"Установить состояние","pl":"Ustaw stan","ko":"창문 가림 상태 설정","ar":"ضبط الحالة"},"args":[{"name":"state","type":"dropdown","values":"$values"}]}]}}')},3845:(e,t,a)=>{"use strict";var r=a(7403),i=a(6740).toHash;e.exports=function(){var e=[{type:"number",rules:[{maximum:["exclusiveMaximum"]},{minimum:["exclusiveMinimum"]},"multipleOf","format"]},{type:"string",rules:["maxLength","minLength","pattern","format"]},{type:"array",rules:["maxItems","minItems","items","contains","uniqueItems"]},{type:"object",rules:["maxProperties","minProperties","required","dependencies","propertyNames",{properties:["additionalProperties","patternProperties"]}]},{rules:["$ref","const","enum","not","anyOf","oneOf","allOf","if"]}],t=["type","$comment"];return e.all=i(t),e.types=i(["number","integer","string","array","object","boolean","null"]),e.forEach((function(a){a.rules=a.rules.map((function(a){var i;if("object"==typeof a){var n=Object.keys(a)[0];i=a[n],a=n,i.forEach((function(a){t.push(a),e.all[a]=!0}))}return t.push(a),e.all[a]={keyword:a,code:r[a],implements:i}})),e.all.$comment={keyword:"$comment",code:r.$comment},a.type&&(e.types[a.type]=a)})),e.keywords=i(t.concat(["$schema","$id","id","$data","$async","title","description","default","definitions","examples","readOnly","writeOnly","contentMediaType","contentEncoding","additionalItems","then","else"])),e.custom={},e}},3872:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Dim level","nl":"Dim niveau","de":"Dimmlevel","fr":"Intensité lumineuse","it":"Intensità luminosa","sv":"Dimningsnivå","no":"Dempingsnivå","es":"Intensidad de la luz","da":"Lysniveau","ru":"Уровень яркости","pl":"Poziom przygaszenia","ko":"밝기","ar":"مستوى التعتيم"},"chartType":"stepLine","min":0,"max":1,"decimals":2,"units":{"en":"%","ko":"%","no":"%","ru":"%","ar":"%","da":"%","de":"%","es":"%","fr":"%","it":"%","nl":"%","pl":"%","sv":"%"},"color":"#F7B500","getable":true,"setable":true,"uiComponent":"slider","$flow":{"triggers":[{"id":"dim_changed","title":{"en":"The dim level changed","nl":"Het dim-niveau is veranderd","de":"Dimm-Niveau geändert","fr":"Intensité lumineuse modifiée","it":"L\'intensità luminosa è cambiata","sv":"Dimningsnivå ändrades","no":"Dempingsnivået ble endret","es":"La intensidad de la luz ha cambiado","da":"Lysniveau ændret","ru":"Уровень яркости изменен","pl":"Zmienił się poziom przygaszenia","ko":"밝기가 변경되면","ar":"تم تغيير مستوى التعتيم"},"tokens":[{"name":"dim","type":"number","title":{"en":"Level","nl":"Niveau","de":"Niveau","fr":"Niveau","it":"Livello","sv":"Nivå","no":"Nivå","es":"Nivel","da":"Niveau","ru":"Уровень","pl":"Poziom","ko":"밝기","ar":"المستوى"},"example":0.5}]}],"actions":[{"id":"dim","highlight":true,"title":{"en":"Dim to","nl":"Dim naar","de":"Dimmen auf","fr":"Mettre l\'intensité lumineuse sur","it":"Imposta l\'intensità luminosa su","sv":"Dimma till","no":"Demp til","es":"Ajustar la intensidad de la luz a","da":"Juster til","ru":"Установить яркость","pl":"Przygaś do","ko":"다음 밝기로 조절","ar":"تعتيم إلى"},"args":[{"name":"dim","type":"range","min":0,"max":1,"step":0.01,"value":0.5,"label":"%","labelMultiplier":100,"labelDecimals":0}]},{"id":"dim_relative","title":{"en":"Set relative dim-level","nl":"Zet relatief dim-niveau op","de":"Relatives Dimm-Niveau setzen","fr":"Définir l\'intensité lumineuse sur relative","it":"Imposta intensità luminosa su relativa","no":"Innstill relativt dempingsnivå","es":"Ajustar la intensidad de la luz como relativa","da":"Indstil relativt lysniveau","ru":"Установить относительный уровень яркости","pl":"Ustaw względny poziom przygaszenia","ko":"상대 밝기 설정","ar":"ضبط مستوى التعتيم النسبي","sv":"Ställ in relativ dimnivå"},"hint":{"en":"Dim or brighten with respect to the device\'s current dim-level.","nl":"Verhoog of verlaag de helderheid ten opzichte van het huidige dim-niveau van het apparaat.","ru":"Уменьшить или увеличить яркость относительно текущего уровня яркости устройства.","pl":"Przygaś lub rozjaśnij względem obecnego poziomu przygaszenia urządzenia.","ko":"제품의 현재 디밍 수준에 따라 어둡게 또는 밝게 설정돼요.","no":"Demp eller gjør lysere i forhold til enhetens gjeldende dimmingsnivå.","ar":"التعتيم أو الإضاءة بالنسبة إلى مستوى التعتيم الحالي للجهاز.","da":"Dæmp eller lys op i forhold til enhedens aktuelle dæmpningsniveau.","de":"Dimmen oder Aufhellen in Bezug auf die aktuelle Dimmstufe des Geräts.","es":"Atenúa o ilumina con respecto al nivel de atenuación actual del dispositivo.","fr":"Diminuez ou augmentez la luminosité par rapport au niveau actuel de l\'appareil.","it":"Attenua o aumenta rispetto all\'attuale livello di intensità luminosa del dispositivo","sv":"Dimma eller ljusa upp med avseende på enhetens aktuella dimnivå."},"args":[{"name":"dim","type":"range","min":-1,"max":1,"step":0.01,"value":0.5,"label":"%","labelMultiplier":100,"labelDecimals":0}]}]}}')},3907:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Set volume","nl":"Volume instellen","de":"Lautstärke setzen","fr":"Définir le volume","it":"Imposta il volume","sv":"Ställ in volym","no":"Innstill volum","es":"Configurar volumen","da":"Indstil lydstyrken","ru":"Установить громкость","pl":"Ustaw głośność","ko":"볼륨 설정","ar":"ضبط مستوى الصوت"},"type":"number","desc":{"en":"Volume","nl":"Volume","de":"Lautstärke","fr":"Volume","it":"Volume","sv":"Volym","no":"Volum","es":"Volumen","da":"Lydstyrke","ru":"Громкость","pl":"Poziom głośności","ko":"볼륨","ar":"مستوى الصوت"},"chartType":"stepLine","min":0,"max":1,"decimals":2,"units":{"en":"%","ko":"%","no":"%","ru":"%","ar":"%","da":"%","de":"%","es":"%","fr":"%","it":"%","nl":"%","pl":"%","sv":"%"},"color":"#9033FC","setable":true,"getable":true,"uiComponent":"slider","$flow":{"triggers":[{"id":"volume_set_changed","title":{"en":"The volume changed","nl":"Het volume is veranderd","de":"Lautstärke hat sich geändert","fr":"Volume modifié","it":"Il volume è cambiato","sv":"Volymen ändrades","no":"Volumet ble endret","es":"El volumen ha cambiado","da":"Lydstyrke ændrede sig","ru":"Объем изменился","pl":"Zmienił się poziom głośności","ko":"볼륨이 변경되면","ar":"تم تغيير مستوى الصوت"},"tokens":[{"name":"volume_set","type":"number","title":{"en":"Volume","nl":"Volume","de":"Lautstärke","fr":"Volume","it":"Volume","sv":"Volym","no":"Volum","es":"Volumen","da":"Lydstyrke","ru":"Громкость","pl":"Poziom głośności","ko":"볼륨이 다음이면","ar":"مستوى الصوت"},"example":0.5}]}],"actions":[{"id":"volume_set","highlight":true,"title":{"en":"Set the volume to","nl":"Zet het volume naar","de":"Lautstärke setzen auf","fr":"Définir le volume sur","it":"Imposta il volume a","sv":"Ställ in volymen på","no":"Sett volumet til","es":"Configurar el volumen a","da":"Indstil lydstyrke til","ru":"Установить громкость на","pl":"Ustaw poziom głośności na","ko":"볼륨을 다음으로 설정","ar":"ضبط مستوى الصوت على"},"args":[{"name":"volume_set","type":"range","min":0,"max":1,"step":0.01,"value":0.5,"label":"%","labelMultiplier":100,"labelDecimals":0}]},{"id":"volume_set_relative","title":{"en":"Set relative volume","de":"Setze relative Lautsärke","nl":"Zet relatief volume","ru":"Установить относительную громкость","pl":"Ustaw względny poziom głośności","ko":"상대 볼륨 설정","no":"Still inn relativt volum","es":"Configurar volumen relativo","ar":"ضبط مستوى الصوت النسبي","da":"Indstil relativ volumen","fr":"Définir le volume relatif","it":"Imposta il volume relativo","sv":"Ställ in relativ volym"},"hint":{"en":"Change the volume with respect to the device\'s current volume.","de":"Ändere die Lautstärke unter Berücksichtigung der aktuellen Lautstärke des Gerätes.","nl":"Verhoog of verlaag het volume ten opzichte van het huidige volume van het apparaat.","ko":"제품의 현재 볼륨을 기준으로 볼륨을 변경해요.","no":"Endre volumet i forhold til enhetens gjeldende volum.","ru":"Изменить громкость по отношению к текущей громкости устройства.","ar":"تغيير مستوى الصوت بالنسبة إلى مستوى الصوت الحالي للجهاز.","da":"Ændr lydstyrken i forhold til enhedens aktuelle lydstyrke.","es":"Cambia el volumen con respecto al volumen actual del dispositivo.","fr":"Modifiez le volume par rapport au volume actuel de l\'appareil.","it":"Modifica il volume rispetto al volume attuale del dispositivo.","pl":"Zmień głośność w odniesieniu do bieżącej głośności urządzenia.","sv":"Ändra volymen i förhållande till enhetens aktuella volym."},"args":[{"name":"volume_set","type":"range","min":-1,"max":1,"step":0.01,"value":0.5,"label":"%","labelMultiplier":100,"labelDecimals":0}]}]}}')},3940:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"NOx","nl":"NOx","da":"NOx","it":"NOx","ko":"질소산화물","no":"NOx","pl":"NOx","ru":"NOx","sv":"NOx","es":"NOx","fr":"NOx","ar":"أكسيد النيتروجين","de":"NOx"},"units":{"en":"μg/m³","nl":"μg/m³","da":"μg/m³","it":"μg/m³","ko":"μg/m³","no":"μg/m³","pl":"μg/m³","ru":"мкг/м³","sv":"μg/m³","es":"μg/m³","fr":"μg/m³","ar":"ميكروجرام/م³","de":"μg/m³"},"insights":true,"desc":{"en":"Nitrogen Oxides in micrograms per cubic meter (μg/m³)","nl":"Stikstofoxiden in microgram per kubieke meter (μg/m³)","da":"Kvælstofoxider i mikrogram pr. kubikmeter (μg/m³)","it":"Ossidi di azoto in microgrammi per metro cubo (μg/m³)","ko":"입방미터당 마이크로그램(μg/m³) 단위의 질소 산화물","no":"Nitrogenoksider i mikrogram per kubikkmeter (μg/m³)","pl":"Tlenki azotu w mikrogramach na metr sześcienny (μg/m³)","ru":"Оксиды азота в микрограммах на кубический метр (мкг/м³)","sv":"Kväveoxider i mikrogram per kubikmeter (μg/m³)","es":"Óxidos de nitrógeno en microgramos por metro cúbico (μg/m³)","fr":"Oxydes d\'azote en microgrammes par mètre cube (μg/m³)","ar":"أكسيد النيتروجين بالميكروجرام لكل متر مكعب (μg/m³)","de":"Stickstoffoxide in Mikrogramm pro Kubikmeter (μg/m³)"},"chartType":"spline","decimals":2,"color":"#E02020","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_nox_changed","title":{"en":"The NOx level changed","nl":"Het NOx-niveau is veranderd","da":"NOx-værdien ændrede sig","it":"Il livello di NOx è cambiato","ko":"질소산화물 수준 변경되면","no":"NOx-verdien ble endret","pl":"Zmienił się poziom NOx","ru":"Значение NOx изменилось","sv":"NOx-värdet ändrades","es":"El nivel de NOx ha cambiado","fr":"La valeur de NOx a changé","ar":"تغير مستوى أكسيد النيتروجين","de":"Der NOx-Gehalt hat sich geändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":2}]}]},"minCompatibility":"12.2.0"}')},3998:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Set-top Box","da":"Tv-modtagerboks","de":"Set-Top-Box","es":"Descodificador","fr":"Décodeur","it":"Set-top box","ko":"셋톱박스","nl":"Settopbox","no":"TV-mottaker","pl":"Dekoder","ru":"Ресивер","sv":"Digitalbox","ar":"جهاز استقبال"},"description":{"en":"Use this device class for set-top boxes.","da":"Brug denne enhedsklasse til tv-modtagerbokse.","de":"Verwenden Sie diese Geräteklasse für Set-Top-Boxen.","es":"Utiliza esta clase de dispositivo para decodificadores de televisión.","fr":"Utilisez cette classe d\'appareils pour les décodeurs.","it":"Utilizza questa classe di dispositivi per i set-top box.","ko":"이 디바이스 클래스는 셋톱박스에 사용합니다.","nl":"Gebruik deze apparaatklasse voor settopboxen.","no":"Bruk denne enhetsklassen for TV-mottakere.","pl":"Tej klasy urządzeń należy używać w przypadku dekoderów.","ru":"Используйте этот класс устройств для ресиверов.","ar":"استخدم فئة الجهاز هذه لأجهزة الاستقبال.","sv":"Använd den här enhetsklassen för digitalboxar."},"minCompatibility":"12.0.0"}')},4006:e=>{"use strict";var t=e.exports=function(){this._cache={}};t.prototype.put=function(e,t){this._cache[e]=t},t.prototype.get=function(e){return this._cache[e]},t.prototype.del=function(e){delete this._cache[e]},t.prototype.clear=function(){this._cache={}}},4049:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Previous","nl":"Vorige","de":"Zurück","fr":"Précédent","it":"Precedente","sv":"Föregående","no":"Forrige","es":"Anterior","da":"Forrige","ru":"Назад","pl":"Wróć","ko":"이전","ar":"السابق"},"type":"boolean","color":"#9033FC","getable":false,"setable":true,"uiComponent":"media","$flow":{"actions":[{"id":"prev","title":{"en":"Previous","nl":"Vorige","de":"Zurück","fr":"Précédent","it":"Precedente","sv":"Föregående","no":"Forrige","es":"Anterior","da":"Forrige","ru":"Назад","pl":"Wróć","ko":"이전","ar":"السابق"}}]}}')},4078:e=>{"use strict";e.exports=JSON.parse('{"type":"number","min":4,"max":35,"title":{"en":"Target temperature","nl":"Ingestelde temperatuur","de":"Ziel-Temperatur","fr":"Température cible","it":"Temperatura nominale","sv":"Måltemperatur","no":"Ønsket temperatur","es":"Temperatura deseada","da":"Måltemperatur","ru":"Целевая температура","pl":"Cel temperatury","ko":"희망 온도","ar":"درجة الحرارة المستهدفة"},"units":{"en":"°C","ru":"°C","ko":"°C","no":"°C","ar":"درجة مئوية","da":"°C","de":"°C","es":"°C","fr":"°C","it":"°C","nl":"°C","pl":"°C","sv":"°C"},"chartType":"stepLine","decimals":1,"color":"#FA6400","insights":true,"getable":true,"setable":true,"uiComponent":"thermostat","$flow":{"triggers":[{"id":"target_temperature_changed","title":{"en":"The target temperature changed","nl":"De ingestelde temperatuur is veranderd","de":"Die Ziel-Temperatur hat sich geändert","fr":"La température cible a été modifiée","it":"La temperatura nominale è cambiata","sv":"Måltemperaturen ändrades","no":"Ønsket temperatur ble endret","es":"La temperatura deseada ha cambiado","da":"Måltemperaturen blev ændret","ru":"Целевая температура изменена","pl":"Zmiana celu temperatury","ko":"희망 온도가 변경되면","ar":"تغيرت درجة الحرارة المستهدفة"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":23.5}]}],"actions":[{"id":"target_temperature_set","highlight":true,"title":{"en":"Set the temperature","nl":"Stel de temperatuur in","de":"Die Temperatur setzen","fr":"Définir la température","it":"Imposta la temperatura","sv":"Ställ in temperaturen","no":"Innstill temperaturen","es":"Ajustar la temperatura","da":"Indstil temperaturen","ru":"Установить температуру","pl":"Ustaw temperaturę","ko":"희망 온도 설정","ar":"ضبط درجة الحرارة"},"args":[{"name":"target_temperature","type":"range","min":5,"max":40,"step":0.5,"label":"°C","labelDecimals":1}]}]}}')},4096:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Locked","nl":"Op slot","de":"Verriegelt","fr":"Verrouillé","it":"Chiusa","sv":"Låst","no":"Låst","es":"Cerrada","da":"Låst","ru":"Закрыто","pl":"Zablokowane","ko":"잠금 상태","ar":"مغلق"},"desc":{"en":"True when the lock is locked","nl":"Geeft aan wanneer iets op slot is","de":"True, wenn das Schloss verriegelt ist","fr":"Vrai, si le verrou est verrouillé","it":"Vero quando la serratura è chiusa","sv":"Sant när låset är låst","no":"Sant når låsen er låst","es":"Activado cuando la cerradura está cerrada","da":"Sandt, når låsen er låst","ru":"Значение «истина», когда замок закрыт","pl":"Adekwatne, kiedy zamek jest zablokowany","ko":"록이 잠겨 있으면 참","ar":"صحيح عندما يكون القفل مغلقًا"},"insights":true,"insightsTitleTrue":{"en":"Locked","nl":"Vergrendeld","de":"Verriegelt","fr":"Verrouillé","it":"Chiusa","sv":"Låst","no":"Låst","es":"Cerrada","da":"Låst","ru":"Закрыто","pl":"Zablokowane","ko":"잠김","ar":"مغلق"},"insightsTitleFalse":{"en":"Unlocked","nl":"Ontgrendeld","de":"Entriegelt","fr":"Déverrouillé","it":"Aperta","sv":"Olåst","no":"Ulåst","es":"Abierta","da":"Ulåst","ru":"Открыто","pl":"Odblokowane","ko":"잠금 해제","ar":"مفتوح"},"color":"#9033FC","getable":true,"setable":true,"uiComponent":"toggle","$flow":{"triggers":[{"id":"locked_true","title":{"en":"Locked","nl":"Vergrendeld","de":"Verriegelt","fr":"Verrouillé","it":"Chiusa","sv":"Låst","no":"Låst","es":"Cerrado","da":"Låst","ru":"Закрыто","pl":"Zablokowane","ko":"잠김이면","ar":"مغلق"}},{"id":"locked_false","title":{"en":"Unlocked","nl":"Ontgrendeld","de":"Entriegelt","fr":"Déverrouillé","it":"Aperta","sv":"Olåst","no":"Ulåst","es":"Abierto","da":"Låst op","ru":"Открыто","pl":"Odblokowane","ko":"잠금 해제이면","ar":"مفتوح"}}],"conditions":[{"id":"locked","title":{"en":"A lock is !{{locked|unlocked}}","nl":"Een slot is !{{vergrendeld|ontgrendeld}}","de":"Ein Schloss ist !{{verriegelt|entriegelt}}","fr":"Un verrou est !{{verrouillé|déverrouillé}}","it":"Una serratura è !{{chiusa|aperta}}","sv":"Ett lås är !{{låst|olåst}}","no":"En lås er !{{låst|ulåst}}","es":"Una cerradura está !{{cerrada|abierta}}","da":"En lås er blevet !{{låst|låst op}}","ru":"Замок !{{закрыт|открыт}}","pl":"Zamek jest !{{zablokowany|odblokowany}}","ko":"!{{잠김|잠금 해제}}이면","ar":"القفل !{{مغلق|مفتوح}}"}}],"actions":[{"id":"lock","highlight":true,"title":{"en":"Lock","nl":"Vergrendel","de":"Verriegeln","fr":"Verrouiller","it":"Chiudi","sv":"Lås","no":"Lås","es":"Cerrar","da":"Lås","ru":"Закрыть","pl":"Zablokuj","ko":"잠금","ar":"قفل"}},{"id":"unlock","highlight":true,"title":{"en":"Unlock","nl":"Ontgrendel","de":"Entriegeln","fr":"Déverrouiller","it":"Apri","sv":"Lås upp","no":"Lås opp","es":"Abrir","da":"Lås op","ru":"Открыть","pl":"Odblokuj","ko":"잠금 해제","ar":"فتح"}}]}}')},4131:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Color temperature","nl":"Kleurtemperatuur","de":"Farbtemperatur","fr":"Température de couleur","it":"Temperatura colore","sv":"Färgtemperatur","no":"Fargetemperatur","es":"Temperatura del color","da":"Farvetemperatur","ru":"Температура цвета","pl":"Temperatura barwy","ko":"색온도","ar":"درجة حرارة اللون"},"min":0,"chartType":"stepLine","max":1,"decimals":2,"color":"#F7B500","getable":true,"setable":true,"uiComponent":"color","$flow":{"actions":[{"id":"temperature","title":{"en":"Set a temperature","nl":"Verander naar temperatuur","de":"Eine Temperatur setzen","fr":"Définir une température","it":"Imposta una temperatura","sv":"Ställ in en temperatur","no":"Innstill en temperatur","es":"Configurar la temperatura","da":"Indstil en temperatur","ru":"Установить температуру","pl":"Ustaw temperaturę","ko":"온도 설정","ar":"ضبط درجة حرارة"},"args":[{"name":"temperature","type":"range","min":0,"max":1,"step":0.01,"value":0.5,"label":"%","labelMultiplier":100,"labelDecimals":0}],"hint":{"en":"Adjusts the temperature of the light. A higher value means a warmer color.","nl":"Verander de temperatuur van de lamp. Een hogere waarde betekent een warmere kleur.","de":"Stelle die Temperatur der Farbe ein. Ein höherer Wert bedeutet eine wärmere Farbe.","fr":"Ajuste la température de la lumière. Une valeur plus élévée signifie une couleur plus chaude.","it":"Regola la temperatura della luce. Un valore più alto indica un colore più caldo.","sv":"Justerar temperaturen på ljuset. Ett högre värde innebär en varmare färg.","no":"Justerer lystemperaturen. En høyere verdi gir en varmere farge.","es":"Ajusta la temperatura de la luz. Cuanto más alto es el valor, más cálido es el color.","da":"Justerer lysets temperatur. En højere værdi betyder en varmere farve.","ru":"Регулирует температуру света. Более высокое значение означает более теплый цвет.","pl":"Dostosuj temperaturę oświetlenia. Wyższa wartość oznacza cieplejszą barwę.","ko":"조명의 온도를 조정해요. 값이 높을수록 따뜻한 색이에요.","ar":"لتعديل درجة حرارة الضوء. القيمة الأعلى تعني لونًا أكثر دفئًا."}}]}}')},4173:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Carbon Filter","nl":"Koolstoffilter","da":"Kulfilter","it":"Filtro a carbone","ko":"카본 필터 사용량","pl":"Filtr węglowy","ru":"Угольный фильтр","sv":"Kolfilter","es":"Filtro de carbono","fr":"Filtre à charbon","no":"Karbonfilter","ar":"فلتر الكربون","de":"Kohlefilter"},"units":{"en":"%","nl":"%","da":"%","it":"%","ko":"%","pl":"%","ru":"%","sv":"%","es":"%","fr":" %","no":"%","ar":"%","de":"%"},"desc":{"en":"The carbon filter level in percent.","nl":"Het koolstoffilterniveau in procenten.","da":"Kulfilterniveauet i procent.","it":"Il livello del filtro al carbone in percentuale.","ko":"백분율로 표현한 카본 필터 수준입니다.","pl":"Poziom filtra węglowego w procentach.","ru":"Уровень угольного фильтра в процентах.","sv":"Kolfilternivån i procent.","es":"El nivel del filtro de carbono en porcentaje.","fr":"Le niveau du filtre à charbon en pourcentage.","no":"Karbonfilternivået i prosent.","ar":"مستوى فلتر الكربون بالنسبة المئوية.","de":"Die Aktivkohlefilterwert in Prozent."},"min":0,"max":100,"color":"#E02020","insights":true,"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_carbon_filter_changed","highlight":true,"title":{"en":"The carbon filter level changed","nl":"Het koolstoffilterniveau is veranderd","da":"Kulfilterniveauet ændrede sig","it":"Il livello del filtro a carbone è cambiato","ko":"카본 필터 수준이 변경되면","pl":"Zmienił się poziom filtra węglowego","ru":"Уровень угольного фильтра изменился на","sv":"Kolfilternivån ändrades","es":"El nivel del filtro de carbono ha cambiado","fr":"Le niveau du filtre à charbon est passé à","no":"Karbonfilternivået ble endret","ar":"تغير مستوى فلتر الكربون","de":"Das Niveau des Kohlefilters hat sich geändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":50}]}]},"minCompatibility":"12.2.0"}')},4195:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"CO₂ Level","nl":"CO₂-niveau","da":"CO₂-niveau","it":"Livello di CO₂","ko":"CO₂ 수준","pl":"Poziom CO₂","ru":"Уровень CO₂","sv":"CO₂-nivå","es":"Nivel de CO₂","fr":"Niveau de CO₂","no":"CO₂-nivå","ar":"مستوى ثاني أكسيد الكربون","de":"CO₂-Gehalt"},"desc":{"en":"The level of CO₂ in the air.","nl":"De CO₂-niveau in de lucht.","da":"Niveauet af CO₂ i luften.","it":"Il livello di CO₂ nell\'aria.","ko":"공기 중 CO₂의 수준입니다.","pl":"Poziom dwutlenku węgla w powietrzu.","ru":"Уровень содержания CO₂ в воздухе.","sv":"Halten av CO₂ i luften.","es":"El nivel de CO₂ en el aire.","fr":"Le niveau de CO₂ dans l\'air.","no":"Nivået av CO₂ i luften.","ar":"مستوى ثاني أكسيد الكربون في الهواء.","de":"Der CO₂-Gehalt in der Luft."},"values":[{"id":"low","title":{"en":"Low","nl":"Laag","da":"Lavt","it":"Basso","ko":"좋음","pl":"Niski","ru":"Низкий","sv":"Låg","es":"Bajo","fr":"Faible","no":"Lavt","ar":"منخفض","de":"Niedrig"}},{"id":"medium","title":{"en":"Medium","nl":"Gemiddeld","da":"Medium","it":"Medio","ko":"보통","pl":"Średni","ru":"Средний","sv":"Medium","es":"Intermedio","fr":"Moyen","no":"Middels","ar":"متوسط","de":"Mittel"}},{"id":"high","title":{"en":"High","nl":"Hoog","da":"Højt","it":"Alto","ko":"나쁨","pl":"Wysoki","ru":"Высокий","sv":"Hög","es":"Alto","fr":"Élevé","no":"Høyt","ar":"عالي","de":"Hoch"}},{"id":"critical","title":{"en":"Critical","nl":"Kritiek","da":"Kritisk","it":"Critico","ko":"매우 나쁨","pl":"Krytyczny","ru":"Критический","sv":"Kritisk","es":"Crítico","fr":"Critique","no":"Kritisk","ar":"حرج","de":"Kritisch"}}],"color":"#E02020","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"level_co2_changed","highlight":true,"title":{"en":"The CO₂ level changed to","nl":"Het CO₂-niveau is veranderd naar","da":"CO₂-niveauet blev ændret til","it":"Il livello di CO₂ è passato a","ko":"CO₂ 수준이 다음으로 변경되면","pl":"Poziom CO₂ zmienił się na","ru":"Уровень CO₂ изменился на","sv":"CO₂-nivån ändrades till","es":"El nivel de CO₂ ha cambiado a","fr":"Le niveau de CO₂ est passé à","no":"CO₂-nivået ble endret til","ar":"تغير مستوى ثاني أكسيد الكربون إلى","de":"Der CO₂-Gehalt hat sich geändert auf"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"level_co2_is","title":{"en":"The CO₂ level !{{is|is not}}","nl":"Het CO₂-niveau !{{is|is niet}}","da":"CO₂-niveauet !{{er|er ikke}}","it":"Il livello di CO₂ !{{è|non è}}","ko":"CO₂ 수준이 다음!{{이면|이 아니면}}","pl":"Poziom CO₂ !{{jest|nie jest}}","ru":"Уровень CO₂ !{{|не}}","sv":"CO₂-nivån !{{är|är inte}}","es":"El nivel de CO₂ !{{es|no es}}","fr":"Le niveau de CO₂ !{{est|n\'est pas}}","no":"CO₂-nivået !{{er|er ikke}}","ar":"مستوى ثاني أكسيد الكربون !{{هو|ليس}}","de":"Der CO₂-Gehalt !{{ist|ist nicht}}"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.2.0"}')},4249:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Volume down","nl":"Volume omlaag","de":"Lautstärke runter","fr":"Baisser le volume","it":"Volume abbassato","sv":"Volym ned","no":"Volum ned","es":"Bajar volumen","da":"Ned for lyden","ru":"Звук тише","pl":"Zmniejsz głośność","ko":"볼륨 작게","ar":"خفض الصوت"},"type":"boolean","color":"#9033FC","getable":false,"setable":true,"uiComponent":"button","$flow":{"actions":[{"id":"volume_down","highlight":true,"title":{"en":"Turn the volume down","nl":"Zet het geluid zachter","de":"Dreh die Lautstärke runter","fr":"Baisser le son","it":"Abbassa il volume","sv":"Sänk volymen","no":"Senk volumet","es":"Bajar el volumen","da":"Skru ned for lyden","ru":"Сделать звук тише","pl":"Zmniejsz poziom głośności","ko":"볼륨 낮추기","ar":"اخفض الصوت"}}]}}')},4267:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Oscillating","nl":"Oscilleren","da":"Oscillerer","it":"Oscillante","ko":"회전","pl":"Oscylacja","ru":"Колебание","sv":"Oscillerande","es":"Oscilante","fr":"Oscillant","no":"Svingende","ar":"الاهتزاز","de":"Oszillierend"},"desc":{"en":"Enable or disable oscillation.","nl":"Schakel oscillatie in of uit.","da":"Aktiver eller deaktiver oscillation.","it":"Abilita o disabilita l\'oscillazione.","ko":"진자를 활성화 또는 비활성화합니다.","pl":"Włączenie lub wyłączenie oscylacji.","ru":"Включить или отключить колебание.","sv":"Aktivera eller inaktivera oscillation.","es":"Activa o desactiva la oscilación.","fr":"Active ou désactive l\'oscillation.","no":"Aktiver eller deaktiver svingninger.","ar":"تمكين أو تعطيل الاهتزاز.","de":"Oszillation aktivieren oder deaktivieren."},"insights":true,"insightsTitleTrue":{"en":"Oscillation enabled","nl":"Oscillatie ingeschakeld","da":"Oscillation aktiveret","it":"Oscillazione abilitata","ko":"회전 켜짐","pl":"Oscylacja włączona","ru":"Колебание включено","sv":"Oscillation aktiverad","es":"Oscilación activada","fr":"Oscillation activée","no":"Svingning aktivert","ar":"تم تمكين الاهتزاز","de":"Oszillation aktiviert"},"insightsTitleFalse":{"en":"Oscillation disabled","nl":"Oscillatie uitgeschakeld","da":"Oscillation deaktiveret","it":"Oscillazione disabilitata","ko":"회전 꺼짐","pl":"Oscylacja wyłączona","ru":"Колебание выключено","sv":"Oscillation inaktiverad","es":"Oscilación desactivada","fr":"Oscillation désactivée","no":"Svingning deaktivert","ar":"تم تعطيل الاهتزاز","de":"Oszillation deaktiviert"},"color":"#6236FF","getable":true,"setable":true,"uiComponent":"toggle","$flow":{"triggers":[{"id":"oscillating_true","highlight":true,"title":{"en":"Oscillation turned on","nl":"Oscillatie ingeschakeld","da":"Oscillation aktiverede","it":"Oscillazione abilitata","ko":"회전이 켜지면","pl":"Oscylacja włączona","ru":"Колебание включено","sv":"Oscillation aktiverad","es":"Oscilación activada","fr":"Oscillation activée","no":"Svingning aktivert","ar":"تم تشغيل الاهتزاز","de":"Oszillation eingeschaltet"}},{"id":"oscillating_false","title":{"en":"Oscillation turned off","nl":"Oscillatie uitgeschakeld","da":"Oscillation deaktiverede","it":"Oscillazione disabilitata","ko":"회전이 꺼지면","pl":"Oscylacja wyłączona","ru":"Колебание выключено","sv":"Oscillation inaktiverad","es":"Oscilación desactivada","fr":"Oscillation désactivée","no":"Svingning deaktivert","ar":"تم إيقاف الاهتزاز","de":"Oszillation ausgeschaltet"}}],"conditions":[{"id":"oscillating","title":{"en":"Oscillation is !{{enabled|disabled}}","nl":"Oscillatie is !{{ingeschakeld|uitgeschakeld}}","da":"Oscillation er !{{aktiveret|deaktiveret}}","it":"L\'oscillazione è !{{abilitata|disabilitata}}","ko":"회전이 !{{켜지면|꺼지면}}","pl":"Oscylacja jest !{{włączona|wyłączona}}","ru":"Колебание !{{включено|выключено}}","sv":"Oscillation är !{{aktiverad|inaktiverad}}","es":"La oscilación está !{{activada|desactivada}}","fr":"L\'oscillation est !{{activée|désactivée}}","no":"Svingning er !{{aktivert|deaktivert}}","ar":"الاهتزاز !{{ممكّن|معطّل}}","de":"Oszillation ist !{{eingeschaltet|ausgeschaltet}}"}}],"actions":[{"id":"enable_oscillating","title":{"en":"Enable Oscillation","nl":"Oscillatie inschakelen","da":"Aktiver oscillation","it":"Abilita l\'oscillazione","ko":"회전 켜기","pl":"Włącz oscylację","ru":"Включить колебание","sv":"Aktivera oscillation","es":"Activar oscilación","fr":"Activer l\'oscillation","no":"Aktiver svingning","ar":"تمكين الاهتزاز","de":"Oszillation aktivieren"}},{"id":"disable_oscillating","title":{"en":"Disable Oscillation","nl":"Oscillatie uitschakelen","da":"Deaktiver oscillation","it":"Disabilita l\'oscillazione","ko":"회전 끄기","pl":"Wyłącz oscylację","ru":"Отключить колебание","sv":"Inaktivera oscillation","es":"Desactivar oscilación","fr":"Désactiver l\'oscillation","no":"Deaktiver svingning","ar":"تعطيل الاهتزاز","de":"Oszillation deaktivieren"}},{"id":"toggle_oscillating","title":{"en":"Toggle Oscillation on or off","nl":"Oscillatie aan- of uitzetten","da":"Slå oscillation til eller fra","it":"Abilita o disabilita l\'oscillazione","ko":"회전 켬/끔 상태 전환하기","pl":"Przełącz oscylację między wł / wył","ru":"Включить или выключить колебание","sv":"Aktivera eller inaktivera oscillation","es":"Encender o apagar la oscilación","fr":"Activer ou désactiver l\'oscillation","no":"Slå svingning på eller av","ar":"تبديل الاهتزاز بين التشغيل والإيقاف","de":"Oszillation ein- bzw. ausschalten"}}]},"minCompatibility":"12.2.0"}')},4278:e=>{"use strict";e.exports=function(e,t,a){var r=" ",i=e.schema[t],n=e.errSchemaPath+"/"+t,s=(e.opts.allErrors,e.util.toQuotedString(i));return!0===e.opts.$comment?r+=" console.log("+s+");":"function"==typeof e.opts.$comment&&(r+=" self._opts.$comment("+s+", "+e.util.toQuotedString(n)+", validate.root.schema);"),r}},4345:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"TVOC Level","nl":"TVOC-niveau","da":"TVOC-niveau","it":"Livello di TVOC","ko":"총휘발성유기화합물 수준","pl":"Poziom wszystkich LZO","ru":"Уровень TVOC","sv":"TVOC-nivå","es":"Nivel de TVOC","fr":"Niveau de COVT","no":"TVOC-nivå","ar":"مستوى TVOC","de":"TVOC-Gehalt"},"desc":{"en":"The level of total volatile organic compounds in the air.","nl":"De mate van totaal vluchtige organische stoffen in de lucht.","da":"Niveauet af samlede flygtige organiske forbindelser i luften.","it":"Il livello di composti organici volatili totali nell\'aria.","ko":"공기 중 휘발성 유기 화합물의 총량 수준입니다.","pl":"Poziom wszystkich lotnych związków organicznych w powietrzu.","ru":"Уровень общего содержания летучих органических соединений в воздухе.","sv":"Halten av totala mängden flyktiga organiska föreningar i luften.","es":"El nivel de compuestos orgánicos volátiles totales en el aire.","fr":"Le niveau de composés organiques volatils totaux dans l\'air.","no":"Nivået av total mengde flyktige organiske forbindelser i luften.","ar":"مستوى المركبات العضوية المتطايرة الإجمالية في الهواء.","de":"Der Gesamtgehalt an flüchtigen organischen Verbindungen in der Luft."},"values":[{"id":"low","title":{"en":"Low","nl":"Laag","da":"Lavt","it":"Basso","ko":"낮음","pl":"Niski","ru":"Низкий","sv":"Låg","es":"Bajo","fr":"Faible","no":"Lavt","ar":"منخفض","de":"Niedrig"}},{"id":"medium","title":{"en":"Medium","nl":"Gemiddeld","da":"Medium","it":"Medio","ko":"보통","pl":"Średni","ru":"Средний","sv":"Medium","es":"Intermedio","fr":"Moyen","no":"Middels","ar":"متوسط","de":"Mittel"}},{"id":"high","title":{"en":"High","nl":"Hoog","da":"Højt","it":"Alto","ko":"높음","pl":"Wysoki","ru":"Высокий","sv":"Hög","es":"Alto","fr":"Élevé","no":"Høyt","ar":"عالي","de":"Hoch"}},{"id":"critical","title":{"en":"Critical","nl":"Kritiek","da":"Kritisk","it":"Critico","ko":"위험","pl":"Krytyczny","ru":"Критический","sv":"Kritisk","es":"Crítico","fr":"Critique","no":"Kritisk","ar":"حرج","de":"Kritisch"}}],"color":"#E02020","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"level_tvoc_changed","highlight":true,"title":{"en":"The TVOC level changed to","nl":"Het TVOC-niveau is veranderd naar","da":"TVOC-niveauet blev ændret til","it":"Il livello di TVOC è passato a","ko":"총휘발성유기화합물 수준이 다음으로 변경되면","pl":"Poziom wszystkich LZO zmienił się na","ru":"Уровень TVOC изменился на","sv":"TVOC-nivån ändrades till","es":"El nivel de COVT ha cambiado a","fr":"Le niveau en COVT est passé à","no":"TVOC-nivået ble endret til","ar":"تم تغيير مستوى المركبات العضوية المتطايرة الإجمالية إلى","de":"Der TVOC-Gehalt hat sich geändert auf"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"level_tvoc_is","title":{"en":"The TVOC level !{{is|is not}}","nl":"Het TVOC-niveau !{{is|is niet}}","da":"TVOC-niveauet !{{er|er ikke}}","it":"Il livello di TVOC !{{è|non è}}","ko":"총휘발성유기화합물 수준이 다음!{{이면|이 아니면}}","pl":"Poziom wszystkich LZO !{{jest|nie jest}}","ru":"Уровень TVOC !{{|не}}","sv":"TVOC-nivån !{{är|är inte}}","es":"El nivel de TVOC !{{es|no es}}","fr":"Le niveau de COVT !{{est|n\'est pas}}","no":"TVOC-nivået !{{er|er ikke}}","ar":"مستوى المركبات العضوية المتطايرة الإجمالية !{{هو|ليس}}","de":"Der TVOC-Gehalt !{{ist|ist nicht}}"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.2.0"}')},4346:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Laundry washer cycles","nl":"Wascycli","da":"Vaskemaskinens cyklusser","it":"Cicli di lavaggio della lavatrice","ko":"세탁 사이클","pl":"Cykle prania","ru":"Циклы стирки","sv":"Tvättmaskinscykler","es":"Ciclos de lavado","fr":"Cycles du lave-linge","no":"Vaskesykluser","ar":"دورات الغسالة","de":"Waschmaschinenprogramme"},"desc":{"en":"The amount of cycles the laundry washer should perform.","nl":"Het aantal wascycli dat de wasmachine moet uitvoeren.","da":"Antallet af cyklusser, som vaskemaskinen skal udføre.","it":"La quantità di cicli che la lavatrice deve eseguire.","ko":"세탁기가 동작할 사이클의 수입니다.","pl":"Liczba cykli, które powinna wykonać pralka.","ru":"Количество циклов стирки, которые должна выполнять стиральная машина.","sv":"Antalet cykler som tvättmaskinen ska utföra.","es":"El número de ciclos que debe hacer la lavadora.","fr":"Le nombre de cycles que le lave-linge doit effectuer.","no":"Antall sykluser vaskemaskinen skal gjennomføre.","ar":"عدد الدورات التي يجب أن تقوم بها الغسالة.","de":"Die Anzahl der Waschgänge, die die Waschmaschine durchführen soll."},"values":[{"id":"none","title":{"en":"None","nl":"Geen","da":"Ingen","it":"Nessuno","ko":"선택 안 함","pl":"Brak","ru":"Нет","sv":"Ingen","es":"Ninguno","fr":"Aucun","no":"Ingen","ar":"لا شيء","de":"Keine"}},{"id":"normal","title":{"en":"Normal","nl":"Normaal","da":"Normal","it":"Normale","ko":"보통","pl":"Normalne","ru":"Стандарт","sv":"Normal","es":"Normal","fr":"Normal","no":"Standard","ar":"عادي","de":"Normal"}},{"id":"extra","title":{"en":"Extra","nl":"Extra","da":"Ekstra","it":"Extra","ko":"많이","pl":"Dodatkowe","ru":"Дополнительно","sv":"Extra","es":"Extra","fr":"Extra","no":"Ekstra","ar":"إضافي","de":"Extra"}},{"id":"max","title":{"en":"Max","nl":"Max","da":"Maks","it":"Max","ko":"최대","pl":"Maksymalne","ru":"Максимально","sv":"Max","es":"Máximo","fr":"Max","no":"Maks.","ar":"الحد الأقصى","de":"Max"}}],"color":"#0091FF","getable":true,"setable":true,"uiComponent":"picker","$flow":{"triggers":[{"id":"laundry_washer_cycles_changed","highlight":true,"title":{"en":"The cycles changed to","nl":"De cycli zijn veranderd in","da":"Cyklusserne blev ændret til","it":"I cicli sono passati a","ko":"세탁 사이클이 다음으로 변경되면 ","pl":"Cykle prania zmieniły się na","ru":"Циклы стирки изменены на","sv":"Cyklerna ändrade till","es":"Los ciclos han cambiado a","fr":"Les cycles du lave-linge sont passés à","no":"Syklusene ble endret til","ar":"تم تغيير الدورات إلى","de":"Die Programme wurden geändert auf"},"args":[{"name":"cycles","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"laundry_washer_cycles_is","title":{"en":"The cycles !{{is|is not}}","nl":"De cycli !{{zijn|zijn niet}} ","da":"Cyklusserne !{{er|er ikke}}","it":"I cicli !{{sono|non sono}}","ko":"세탁 사이클이 다음!{{이면|이 아니면}}","pl":"Cykle pralki !{{jest|nie jest}}","ru":"Циклы стирки !{{|не}}","sv":"Cyklerna !{{är|är inte}}","es":"Los ciclos !{{están|no están}}","fr":"Les cycles de lave-linge !{{sont|ne sont pas}}","no":"Syklusene !{{er|er ikke}}","ar":"الدورات !{{هي|ليست}}","de":"Die Programme !{{sind|sind nicht}}"},"args":[{"name":"cycles","type":"dropdown","values":"$values"}]}],"actions":[{"id":"set_laundry_washer_cycles","title":{"en":"Set the laundry washer cycles to","nl":"De wasmachinecycli instellen op","da":"Indstil vaskemaskinens cyklusser til","it":"Imposta i cicli della lavatrice su","ko":"세탁 사이클을 다음으로 설정","pl":"Ustaw cykle prania na","ru":"Установить циклы стирки на","sv":"Ställ in tvättmaskinens cykler på","es":"Ajustar los ciclos de lavado a","fr":"Définir les cycles du lave-linge sur","no":"Sett vaskesyklusene til","ar":"ضبط دورات الغسالة على","de":"Stelle die Programme der Waschmaschine auf"},"args":[{"name":"cycles","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.2.0"}')},4355:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Laundry washer program","nl":"Wasprogramma","da":"Vaskemaskineprogram","it":"Programma di lavaggio della lavatrice","ko":"세탁 모드","pl":"Program prania","ru":"Программы стирки","sv":"Tvättmaskinsprogram","es":"Programa de lavado","fr":"Programme du lave-linge","no":"Vaskemaskinprogram","ar":"برنامج الغسالة","de":"Waschmaschinenprogramm"},"desc":{"en":"The current program of the laundry washer.","nl":"Het huidige programma van de wasmachine.","da":"Vaskemaskinens aktuelle program.","it":"Il programma attuale della lavatrice.","ko":"세탁기의 현재 프로그램입니다.","pl":"Bieżący program prania.","ru":"Текущая программа стирки.","sv":"Tvättmaskinens aktuella program.","es":"El programa actual de la lavadora.","fr":"Le programme actuel du lave-linge.","no":"Vaskemaskinens gjeldende program.","ar":"البرنامج الحالي للغسالة.","de":"Das aktuelle Programm der Waschmaschine."},"values":[{"id":"normal","title":{"en":"Normal","nl":"Normaal","da":"Normal","it":"Normale","ko":"표준","pl":"Normalne","ru":"Стандартная","sv":"Normal","es":"Normal","fr":"Normal","no":"Normalt","ar":"عادي","de":"Normal"}},{"id":"auto","title":{"en":"Auto","nl":"Auto","da":"Auto","it":"Auto","ko":"자동","pl":"Auto","ru":"Авто","sv":"Auto","es":"Automático","fr":"Automatique","no":"Automatisk","ar":"تلقائي","de":"Automatisch"}},{"id":"quick","title":{"en":"Quick","nl":"Snel","da":"Hurtig","it":"Veloce","ko":"신속","pl":"Szybkie","ru":"Быстрая","sv":"Snabbt","es":"Rápido","fr":"Rapide","no":"Hurtig","ar":"سريع","de":"Schnell"}},{"id":"heavy","title":{"en":"Heavy","nl":"Zwaar","da":"Tung","it":"Pesante","ko":"강력","pl":"Intensywne","ru":"Интенсивная","sv":"Tungt","es":"Intensivo","fr":"Long","no":"Kraftig","ar":"ثقيل","de":"Sehr verschmutzt"}},{"id":"whites","title":{"en":"Whites","nl":"Wit","da":"Hvid","it":"Bianchi","ko":"흰옷","pl":"Biel","ru":"Белые вещи","sv":"Vittvätt","es":"Blancos","fr":"Blancs","no":"Hvitvask","ar":"أبيض","de":"Weißwäsche"}}],"color":"#0091FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"laundry_washer_program_changed","highlight":true,"title":{"en":"The program changed to","nl":"Het programma is veranderd in","da":"Programmet blev ændret til","it":"Il programma è passato a","ko":"세탁 모드가 다음으로 변경되면","pl":"Program zmienił się na","ru":"Программа изменена на","sv":"Programmet ändrades till","es":"El programa ha cambiado a","fr":"Le programme du lave-linge est passé à","no":"Programmet ble endret til","ar":"تم تغيير البرنامج إلى","de":"Das Programm wurde geändert auf"},"args":[{"name":"program","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"laundry_washer_program_is","title":{"en":"The program !{{is|is not}}","nl":"Het programma !{{is|is niet}}","da":"Programmet !{{er|er ikke}}","it":"Il programma !{{è|non è}}","ko":"세탁 모드가 다음!{{이면|이 아니면}}","pl":"Program !{{jest|nie jest}}","ru":"Программа !{{|не}}","sv":"Programmet !{{är|är inte}}","es":"El programa !{{está|no está}}","fr":"Le programme du lave-linge !{{est|n\'est pas}}","no":"Programmet !{{er|er ikke}}","ar":"البرنامج !{{هو|ليس}}","de":"Das Programm !{{ist|ist nicht}}"},"args":[{"name":"program","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.2.0"}')},4357:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Service","nl":"Service","de":"Dienst","fr":"Service","it":"Servizio","sv":"Service","no":"Tjeneste","es":"Servicio","da":"Tjeneste","ru":"Сервис","pl":"Usługa","ko":"서비스","ar":"خدمة"},"description":{"en":"Use this device class for devices that are not really physical devices, but (cloud) services.","de":"Verwenden Sie diese Geräteklasse für Geräte, die keine physischen Geräte sind, sondern (Cloud-)Dienste.","fr":"Utilisez cette classe d\'appareils pour les appareils qui ne sont pas vraiment des appareils physiques, mais plutôt des services (cloud).","it":"Utilizza questa classe di dispositivi per dispositivi che non sono realmente dispositivi fisici, ma servizi (cloud).","sv":"Använd den här enhetsklassen för enheter som inte är fysiska enheter, utan (moln)tjänster.","no":"Bruk denne enhetsklassen for enheter som ikke er fysiske enheter, men (sky)tjenester.","es":"Utiliza esta clase para los dispositivos que no son físicos, sino servicios (en la nube).","da":"Brug denne enhedsklasse til enheder, der ikke rigtig er fysiske enheder, men (cloud-) tjenester.","ru":"Используйте этот класс устройств для устройств, которые являются не физическими устройствами, а (облачными) сервисами.","pl":"Użyj tej klasy urządzeń dla urządzeń, które nie są fizycznymi urządzeniami, lecz usługami (w chmurze).","ko":"이 디바이스 클래스는 실제 물리적 디바이스가 아닌 (클라우드) 서비스에 사용하세요.","nl":"Gebruik deze apparaatklasse voor apparaten die niet echt fysieke apparaten zijn, maar (cloud-)services.","ar":"استخدم فئة الجهاز هذه للأجهزة التي ليست أجهزة مادية حقيقية، ولكنها خدمات (سحابية)."},"minCompatibility":"12.3.0"}')},4371:e=>{"use strict";e.exports=function(e,t,a){var r=" ",i=e.level,n=e.dataLevel,s=e.schema[t],o=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+"/"+t,d=!e.opts.allErrors,u="data"+(n||""),m="valid"+i,p="errs__"+i,c=e.util.copy(e),g="";c.level++;var h="valid"+c.level,v="i"+i,f=c.dataLevel=e.dataLevel+1,k="data"+f,y=e.baseId;if(r+="var "+p+" = errors;var "+m+";",Array.isArray(s)){var b=e.schema.additionalItems;if(!1===b){r+=" "+m+" = "+u+".length <= "+s.length+"; ";var w=l;l=e.errSchemaPath+"/additionalItems",r+=" if (!"+m+") { ";var z=z||[];z.push(r),r="",!1!==e.createErrors?(r+=" { keyword: 'additionalItems' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { limit: "+s.length+" } ",!1!==e.opts.messages&&(r+=" , message: 'should NOT have more than "+s.length+" items' "),e.opts.verbose&&(r+=" , schema: false , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),r+=" } "):r+=" {} ";var P=r;r=z.pop(),!e.compositeRule&&d?e.async?r+=" throw new ValidationError(["+P+"]); ":r+=" validate.errors = ["+P+"]; return false; ":r+=" var err = "+P+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+=" } ",l=w,d&&(g+="}",r+=" else { ")}var _=s;if(_)for(var S,A=-1,E=_.length-1;A0:e.util.schemaHasRules(S,e.RULES.all)){r+=" "+h+" = true; if ("+u+".length > "+A+") { ";var j=u+"["+A+"]";c.schema=S,c.schemaPath=o+"["+A+"]",c.errSchemaPath=l+"/"+A,c.errorPath=e.util.getPathExpr(e.errorPath,A,e.opts.jsonPointers,!0),c.dataPathArr[f]=A;var C=e.validate(c);c.baseId=y,e.util.varOccurences(C,k)<2?r+=" "+e.util.varReplace(C,k,j)+" ":r+=" var "+k+" = "+j+"; "+C+" ",r+=" } ",d&&(r+=" if ("+h+") { ",g+="}")}"object"==typeof b&&(e.opts.strictKeywords?"object"==typeof b&&Object.keys(b).length>0:e.util.schemaHasRules(b,e.RULES.all))&&(c.schema=b,c.schemaPath=e.schemaPath+".additionalItems",c.errSchemaPath=e.errSchemaPath+"/additionalItems",r+=" "+h+" = true; if ("+u+".length > "+s.length+") { for (var "+v+" = "+s.length+"; "+v+" < "+u+".length; "+v+"++) { ",c.errorPath=e.util.getPathExpr(e.errorPath,v,e.opts.jsonPointers,!0),j=u+"["+v+"]",c.dataPathArr[f]=v,C=e.validate(c),c.baseId=y,e.util.varOccurences(C,k)<2?r+=" "+e.util.varReplace(C,k,j)+" ":r+=" var "+k+" = "+j+"; "+C+" ",d&&(r+=" if (!"+h+") break; "),r+=" } } ",d&&(r+=" if ("+h+") { ",g+="}"))}else(e.opts.strictKeywords?"object"==typeof s&&Object.keys(s).length>0:e.util.schemaHasRules(s,e.RULES.all))&&(c.schema=s,c.schemaPath=o,c.errSchemaPath=l,r+=" for (var "+v+" = 0; "+v+" < "+u+".length; "+v+"++) { ",c.errorPath=e.util.getPathExpr(e.errorPath,v,e.opts.jsonPointers,!0),j=u+"["+v+"]",c.dataPathArr[f]=v,C=e.validate(c),c.baseId=y,e.util.varOccurences(C,k)<2?r+=" "+e.util.varReplace(C,k,j)+" ":r+=" var "+k+" = "+j+"; "+C+" ",d&&(r+=" if (!"+h+") break; "),r+=" }");return d&&(r+=" "+g+" if ("+p+" == errors) {"),r}},4398:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Washing Machine","da":"Vaskemaskine","de":"Waschmaschine","es":"Lavadora","fr":"Lave-linge","it":"Lavatrice","ko":"세탁기","nl":"Wasmachine","no":"Vaskemaskin","pl":"Pralka","ru":"Стиральная машина","sv":"Tvättmaskin","ar":"غسالة"},"description":{"en":"Use this device class for washing machines, if it is a combination washer/dryer use \'washer_and_dryer\'.","da":"Brug denne enhedsklasse til vaskemaskiner. Hvis det er en kombineret vaskemaskine/tørretumbler, skal du bruge \'washer_and_dryer\'.","de":"Verwenden Sie diese Geräteklasse für Waschmaschinen. Wenn es sich um eine Kombination aus Waschmaschine und Trockner handelt, verwenden Sie „washer_and_dryer“.","es":"Utiliza esta clase de dispositivo para lavadoras. Si se trata de un equipo que contiene funciones de lavadora y secadora, utiliza la clase \'washer_and_dryer\'.","fr":"Utilisez cette classe d\'appareils pour les machines à laver ; s\'il s\'agit d\'une combinaison lave-linge/sèche-linge, utilisez \\"washer_and_dryer\\".","it":"Utilizza questa classe di dispositivi per le lavatrici; se si tratta di una lavatrice/asciugatrice combinata, utilizza \\"washer_and_dryer\\".","ko":"이 디바이스 클래스는 세탁기에 사용하고, 세탁기/건조기 일체형의 경우 \'washer_and_dryer\'를 사용합니다.","nl":"Gebruik deze apparaatklasse voor wasmachines, als het een was/droogcombinatie is gebruik dan \'washer_and_dryer\'.","no":"Bruk denne enhetsklassen for vaskemaskiner. For en kombinert vaskemaskin/tørketrommel, bruk «washer_and_dryer».","pl":"Tej klasy urządzeń należy używać w przypadku pralek, a jeśli jest to pralko-suszarka, należy użyć klasy „washer_and_dryer”.","ru":"Используйте этот класс устройств для стиральных машин; в случае стиральной машины-сушилки используйте washer_and_dryer.","sv":"Använd den här enhetsklassen för tvättmaskiner, om det är en kombinerad tvättmaskin/torktumlare ska du använda \'washer_and_dryer\'.","ar":"استخدم فئة الجهاز هذه للغسالات، إذا كانت غسالة/مجفف مدمج، فاستخدم \'washer_and_dryer\'."},"minCompatibility":"12.0.0"}')},4427:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Doorbell","nl":"Deurbel","de":"Türklingel","fr":"Sonnette","it":"Campanello","sv":"Dörrklocka","no":"Dørklokke","es":"Timbre","da":"Dørklokke","ru":"Дверной звонок","pl":"Dzwonek do drzwi","ko":"도어벨","ar":"جرس الباب"},"description":{"en":"Use this device class for doorbells, usually together with the `button` capability.","de":"Nutze diese Geräteklasse für Türklingeln - normalerweise zusammen mit der \'button\'-Fähigkeit.","fr":"Utilisez cette classe d\'appareil pour les sonnettes, habituellement avec la capacité de `bouton`.","it":"Utilizza questa classe di dispositivi per i campanelli, di solito insieme alla funzione `pulsante`.","sv":"Använd den här enhetsklassen för dörrklockor, oftast tillsammans med `knapp`-funktionen.","es":"Utiliza esta clase de dispositivo para los timbres, generalmente junto con la capacidad \'botón\'.","da":"Brug denne enhedsklasse til dørklokker, normalt sammen med `knap`-funktionen.","no":"Bruk denne enhetsklassen for dørklokker, vanligvis sammen med «knapp»-funksjonen.","ru":"Используйте этот класс устройств для дверных звонков, обычно вместе с возможностью использовать «кнопку».","pl":"Użyj tej klasy urządzeń dla dzwonków do drzwi, zwykle razem ze zdolnością „przycisk”.","ko":"이 디바이스 클래스는 보통 \'버튼\' 기능이 있는 초인종에 사용합니다.","ar":"استخدم فئة الجهاز هذه لأجراس الأبواب، عادةً مع إمكانية \'زر\'.","nl":"Gebruik deze apparaatklasse voor deurbellen, meestal samen met de optie \'button\'."}}')},4482:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Playing","nl":"Afspelen","de":"Abspielen","fr":"Lire","it":"In riproduzione","sv":"Spelas","no":"Avspilles","es":"Reproduciendo","da":"Spiller","ru":"Воспроизведение","pl":"Odtwarzanie","ko":"재생 중","ar":"قيد التشغيل"},"type":"boolean","color":"#9033FC","getable":true,"setable":true,"uiComponent":"media","uiQuickAction":true,"$flow":{"triggers":[{"id":"speaker_playing_true","title":{"en":"Started playing","nl":"Begint af te spelen","de":"Begann zu spielen","fr":"Lecture démarrée","it":"Riproduzione avviata","sv":"Började spela","no":"Startet spilling","es":"Reproducción iniciada","da":"Begyndte at spille","ru":"Воспроизведение началось","pl":"Odtwarzanie rozpoczęte","ko":"재생이 시작되면","ar":"بدأ التشغيل"}},{"id":"speaker_playing_false","title":{"en":"Stopped playing","nl":"Gestopt met afspelen","de":"Hörte auf zu spielen","fr":"Lecture stoppée","it":"Riproduzione interrotta","sv":"Slutade spela","no":"Stanset spilling","es":"Reproducción detenida","da":"Stoppede med at spille","ru":"Воспроизведение приостановлено","pl":"Odtwarzanie zatrzymane","ko":"재생이 중지되면","ar":"توقف التشغيل"}}],"conditions":[{"id":"is_playing","title":{"en":"Is !{{|not}} playing","nl":"Is !{{|niet}} aan het afspelen","de":"Wird !{{|nicht}} abgespielt","fr":"!{{Est|N\'est pas}} en cours de lecture","it":"!{{È|Non è}} in riproduzione","sv":"Spelas !{{|inte}}","no":"Avspilles !{{|ikke}}","es":"!{{Se está|No se está}} reproduciendo","da":"Spiller !{{|ikke}}","ru":"!{{|не}} воспроизводится","pl":"!{{odtwarza|nie odtwarza}}","ko":"재생 중!{{이면|이 아니면}}","ar":"هو !{{|ليس}} قيد التشغيل"}}],"actions":[{"id":"play","highlight":true,"title":{"en":"Play","nl":"Speel af","de":"Play","fr":"Lire","it":"Riproduci","sv":"Spela","no":"Spill av","es":"Reproducir","da":"Afspil","ru":"Воспроизвести","pl":"Odtwórz","ko":"재생","ar":"تشغيل"}},{"id":"pause","highlight":true,"title":{"en":"Pause","nl":"Pauzeer","de":"Pause","fr":"Pause","it":"Pausa","sv":"Pausa","no":"Pause","es":"Pausa","da":"Pause","ru":"Пауза","pl":"Pauza","ko":"일시중지","ar":"إيقاف مؤقت"}},{"id":"toggle_playing","title":{"en":"Toggle Play/Pause","nl":"Toggle Afspelen/Pauze","de":"Play/Pause umschalten","fr":"Alterner Lire/Pause","it":"Alterna riproduzione/pausa","sv":"Växla spela/pausa","no":"Veksle mellom avspilling/pause","es":"Reproducir o pausar","da":"Skift mellem Afspil/Pause","ru":"Переключатель Воспроизвести/Пауза","pl":"Przełącz na Odtwórz/Pauza","ko":"재생/일시중지 상태 전환하기","ar":"تبديل التشغيل/الإيقاف المؤقت"}}]}}')},4522:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"CO Alarm","nl":"CO-alarm","de":"CO-Alarm","fr":"Alarme CO","it":"Allarme CO","sv":"CO-larm","no":"CO-alarm","es":"Alarma de CO","da":"CO-alarm","ru":"Сигнал CO","pl":"Alarm CO","ko":"일산화탄소(CO) 알람","ar":"إنذار أول أكسيد الكربون"},"titleShort":{"en":"CO","nl":"CO","de":"CO","fr":"CO","it":"CO","sv":"CO","no":"CO","es":"CO","da":"CO","ru":"CO","pl":"CO","ko":"CO","ar":"أول أكسيد الكربون"},"desc":{"en":"True when dangerous CO values have been detected","nl":"Gaat af bij gevaarlijke concentraties CO","de":"True, wenn gefährliche CO-Werte erkannt wurden","fr":"Vrai si des valeurs de CO dangereuses ont été détectées","it":"Vero quando sono stati rilevati valori pericolosi di CO","sv":"Sant när farliga CO-värden upptäcks","no":"Sant når farlige CO-verdier påvises","es":"Activado cuando se han detectado valores peligrosos de CO","da":"Sandt, når farlige CO-værdier er blevet opdaget","ru":"Значение «истина» при обнаружении опасных значений CO","pl":"Adekwatny, kiedy wykryty zostanie niebezpieczny poziom stężenia CO","ko":"위험한 CO 값이 감지되면 참","ar":"صحيح عند اكتشاف قيم خطيرة لأول أكسيد الكربون"},"insights":true,"insightsTitleTrue":{"en":"CO alarm turned on","nl":"CO-alarm ging af","de":"CO-Alarm ist angegangen","fr":"L\'alarme CO est activée","it":"Allarme CO attivato","sv":"CO-larm aktiverat","no":"CO-alarm aktivert","es":"Alarma de CO activada","da":"CO-alarm aktiveret","ru":"Сигнал CO включен","pl":"Alarm o CO włączony","ko":"일산화탄소(CO) 알람 켜짐","ar":"تم تشغيل إنذار أول أكسيد الكربون"},"insightsTitleFalse":{"en":"CO alarm turned off","nl":"CO-alarm ging uit","de":"CO-Alarm ist ausgegangen","fr":"L\'alarme CO est désactivée","it":"Allarme CO disattivato","sv":"CO-larm inaktiverat","no":"CO-alarm deaktivert","es":"Alarma de CO desactivada","da":"CO-alarm deaktiveret","ru":"Сигнал CO выключен","pl":"Alarm o CO wyłączony","ko":"일산화탄소(CO) 알람 꺼짐","ar":"تم إيقاف إنذار أول أكسيد الكربون"},"color":"#E02020","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_co_true","highlight":true,"title":{"en":"The CO alarm turned on","nl":"Het CO-alarm gaat aan","de":"Der CO-Alarm ist angegangen","fr":"L\'alarme CO s\'est activée","it":"L\'allarme CO è stato attivato","sv":"CO-larmet aktiverades","no":"CO-alarmen ble aktivert","es":"La alarma de CO se ha activado","da":"CO-alarmen blev aktiveredt","ru":"Сигнал CO включен","pl":"Alarm o CO włączony","ko":"일산화탄소(CO) 알람이 \'예\'이면","ar":"تم تشغيل إنذار أول أكسيد الكربون"}},{"id":"alarm_co_false","title":{"en":"The CO alarm turned off","nl":"Het CO-alarm gaat uit","de":"Der CO-Alarm ist ausgegangen","fr":"L\'alarme CO s\'est désactivée","it":"L\'allarme CO è stato disattivato","sv":"CO-larmet inaktiverades","no":"CO-alarmen ble deaktivert","es":"La alarma de CO se ha desactivado","da":"CO-alarmen blev deaktiveret","ru":"Сигнал CO выключен","pl":"Alarm o CO wyłączony","ko":"일산화탄소(CO) 알람이 \'아니요\'이면","ar":"تم إيقاف إنذار أول أكسيد الكربون"}}],"conditions":[{"id":"alarm_co","title":{"en":"The CO alarm is !{{on|off}}","nl":"Het CO-alarm is !{{aan|uit}}","de":"Der CO-Alarm ist !{{an|aus}}","fr":"L\'alarme CO est !{{en marche|arrêtée}}","it":"L\'allarme CO è !{{acceso|spento}}","sv":"CO-larmet är !{{på|av}}","no":"CO-alarmen er !{{på|av}}","es":"La alarma de CO está !{{activada|desactivada}}","da":"CO-alarmen er !{{på|af}}","ru":"Сигнал CO !{{вкл.|выкл.}}","pl":"Alarm CO jest !{{włączony|wyłączony}}","ko":"일산화탄소(CO) 알람이 !{{\'예\'|\'아니요\'}}이면","ar":"إنذار أول أكسيد الكربون !{{يعمل|لا يعمل}}"}}]}}')},4525:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Pump Device Fault Alarm","nl":"Waarschuwing voor fout bij pompapparaat","da":"Alarm for fejl i pumpeenhed","it":"Allarme guasto del dispositivo di pompaggio","ko":"펌프 기기 결함 감지","no":"Feilalarm for pumpeenhet","pl":"Alarm usterki pompy","ru":"Сигнал о неисправности насосного устройства","sv":"Larm om fel på pumpenhet","es":"Alarma de fallo en el dispositivo de bombeo","fr":"Alarme de défaillance du dispositif de pompage","ar":"إنذار عطل جهاز المضخة","de":"Fehleralarm der Pumpvorrichtung"},"titleShort":{"en":"Pump Device Fault","nl":"Fout bij pompapparaat","da":"Fejl i pumpeenhed","it":"Guasto del dispositivo di pompaggio","ko":"펌프 제품 결함","no":"Feil på pumpeenhet","pl":"Usterka pompy","ru":"Неисправность насосного устройства","sv":"Fel på pumpenhet","es":"Fallo en el dispositivo de bombeo","fr":"Défaillance du dispositif de pompage","ar":"عطل بجهاز المضخة","de":"Fehler an der Pumpe"},"desc":{"en":"True when a fault is detected in the pump device.","nl":"Wordt geactiveerd wanneer een fout wordt gedetecteerd in het pompapparaat.","da":"Sandt, når der er registreret en fejl i pumpeenheden.","it":"Vero quando viene rilevato un guasto nel dispositivo di pompaggio.","ko":"펌프 디바이스에 고장이 감지되면 참입니다.","no":"Sann når en feil i pumpeenheten registreres.","pl":"Prawda, gdy wykryta jest usterka pompy.","ru":"Значение «истина» при обнаружении неисправности насосного устройства.","sv":"Sant när ett fel har upptäckts i pumpenheten.","es":"Activado cuando se detecta un fallo en el dispositivo de bombeo.","fr":"Se déclenche lorsqu\'un défaut est détecté dans l’appareil de pompage.","ar":"صحيح عند اكتشاف عطل في جهاز المضخة.","de":"Wahr, wenn ein Fehler in der Pumpvorrichtung erkannt wird."},"insights":true,"insightsTitleTrue":{"en":"Pump device fault alarm turned on","nl":"Waarschuwing van fout bij pompapparaat geactiveerd","da":"Fejlalarm for pumpeenhed slået til","it":"Allarme guasto del dispositivo di pompaggio acceso","ko":"펌프 기기 결함 감지됨","no":"Feilalarm for pumpeenhet aktivert","pl":"Alarm usterki pompy włączony","ru":"Сигнал о неисправности насосного устройства включен","sv":"Larm för fel på pumpenheten aktiverat","es":"Alarma de fallo en el dispositivo de bombeo activada","fr":"Alarme de défaut de l’appareil de pompage activée","ar":"تم تشغيل إنذار عطل جهاز المضخة","de":"Fehleralarm der Pumpvorrichtung aktiviert"},"insightsTitleFalse":{"en":"Pump device fault alarm turned off","nl":"Waarschuwing van fout bij pompapparaat gedeactiveerd","da":"Fejlalarm for pumpeenhed slået fra","it":"Allarme guasto del dispositivo di pompaggio spento","ko":"정상","no":"Feilalarm for pumpeenhet ble deaktivert","pl":"Alarm usterki pompy wyłączony","ru":"Сигнал о неисправности насосного устройства выключен","sv":"Larmet för fel på pumpenheten inaktiverat","es":"Alarma de fallo en el dispositivo de bombeo desactivada","fr":"Alarme de défaut de l’appareil de pompage désactivée","ar":"تم إيقاف إنذار عطل جهاز المضخة","de":"Fehleralarm der Pumpvorrichtung deaktiviert"},"color":"#0091FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_pump_device_true","highlight":true,"title":{"en":"The pump device fault alarm turned on","nl":"De waarschuwing van fout bij pompapparaat is geactiveerd","da":"Pumpeenhedens fejlalarm er slået til","it":"L\'allarme di guasto del dispositivo di pompaggio si è acceso","ko":"펌프 기기에서 결함이 감지되면","no":"Pumpeenhetens feilalarm ble aktivert","pl":"Włączył się alarm usterki pompy","ru":"Сигнал о неисправности насосного устройства включен","sv":"Larmet för fel på pumpenheten aktiverat","es":"Se ha activado la alarma de fallo en el dispositivo de bombeo","fr":"L\'alarme de défaut de l\'appareil de pompage s\'est activée","ar":"تم تشغيل إنذار عطل جهاز المضخة","de":"Der Fehleralarm der Pumpvorrichtung wurde aktiviert."}},{"id":"alarm_pump_device_false","title":{"en":"The pump device fault alarm turned off","nl":"De waarschuwing van fout bij pompapparaat is gedeactiveerd","da":"Pumpeenhedens fejlalarm slået fra","it":"L\'allarme di guasto del dispositivo di pompaggio si è spento","ko":"펌프 기기가 정상 상태이면","no":"Pumpeenhetens feilalarm ble deaktivert","pl":"Wyłączył się alarm usterki pompy","ru":"Сигнал о неисправности насосного устройства выключен","sv":"Larmet för fel på pumpenheten inaktiverat","es":"La alarma de fallo en el dispositivo de bombeo se ha desactivado","fr":"L\'alarme de défaut de l\'appareil de pompage s\'est désactivée","ar":"تم إيقاف إنذار عطل جهاز المضخة","de":"Der Fehleralarm der Pumpvorrichtung wurde deaktiviert."}}],"conditions":[{"id":"alarm_pump_device","title":{"en":"The pump device fault alarm is !{{on|off}}","nl":"De waarschuwing van fout bij pompapparaat is !{{geactiveerd|gedeactiveerd}}","da":"Pumpeenhedens fejlalarm er !{{tændt|slukket}}","it":"L\'allarme di guasto del dispositivo di pompaggio è !{{acceso|spento}}","ko":"펌프 기기!{{에서 결함이 감지되면|가 정상 상태이면}}","no":"Pumpeenhetens feilalarm er !{{på|av}}","pl":"Alarm usterki pompy jest !{{włączony|wyłączony}}","ru":"Сигнал о неисправности насосного устройства !{{включен|выключен}}","sv":"Larmet för fel på pumpenheten är !{{på|av}}","es":"La alarma de fallo en el dispositivo de bombeo está !{{activada|desactivada}}","fr":"L\'alarme de défaut de l\'appareil de pompage est !{{activé|désactivé}}","ar":"إنذار عطل جهاز المضخة !{{يعمل|لا يعمل}}","de":"Der Fehleralarm der Pumpvorrichtung ist !{{aktiviert|deaktiviert}}."}}]},"minCompatibility":"12.2.0"}')},4541:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Closed","nl":"Gesloten","de":"Geschlossen","fr":"Fermé","it":"Chiuse","sv":"Stängd","no":"Lukket","es":"Cerrados","da":"Lukket","ru":"Закрыто","pl":"Zasunięte","ko":"창문 커버","ar":"مغلق"},"color":"#F5B207","getable":true,"setable":true,"uiComponent":"toggle","$flow":{"triggers":[{"id":"windowcoverings_closed_true","title":{"en":"Closed","nl":"Gesloten","de":"Geschlossen","fr":"Fermé","it":"Chiuse","sv":"Stängd","no":"Lukket","es":"Cerrados","da":"Lukket","ru":"Закрыто","pl":"Zasunięte","ko":"창문 커버가 닫히면","ar":"مغلق"}},{"id":"windowcoverings_closed_false","title":{"en":"Opened","nl":"Geopend","de":"Offen","fr":"Ouvert","it":"Aperte","sv":"Öppen","no":"Åpen","es":"Abiertos","da":"Åben","ru":"Открыто","pl":"Rozchylone","ko":"창문 커버가 열리면","ar":"مفتوح"}}],"conditions":[{"id":"closed","title":{"en":"Are !{{closed|opened}}","nl":"Zijn !{{gesloten|geopend}}","de":"Sind !{{geschlossen|offen}}","fr":"Sont !{{fermés|ouverts}}","it":"Sono !{{chiuse|aperte}}","sv":"Är !{{stängda|öppnade}}","no":"Er !{{lukket|åpen}}","es":"Están !{{cerrados|abiertos}}","da":"Er !{{lukket|åben}}","ru":"!{{закрыты|открыты}}","pl":"Są !{{zasunięte|rozchylone}}","ko":"창문 커버가 !{{닫히면|열리면}}","ar":"!{{مغلقة|مفتوحة}}"}}],"actions":[{"id":"close","highlight":true,"title":{"en":"Close","nl":"Sluiten","de":"Schließen","fr":"Fermer","it":"Chiudi","sv":"Stäng","no":"Lukk","es":"Cerrar","da":"Luk","ru":"Закрыть","pl":"Zasuń","ko":"창문 커버 닫기","ar":"إغلاق"}},{"id":"open","highlight":true,"title":{"en":"Open","nl":"Openen","de":"Öffnen","fr":"Ouvrir","it":"Apri","sv":"Öppna","no":"Åpne","es":"Abrir","da":"Åbn","ru":"Открыть","pl":"Rozchyl","ko":"창문 커버 열기","ar":"فتح"}},{"id":"toggle","title":{"en":"Toggle open or closed","nl":"Schakel tussen geopend en gesloten","de":"Offen/Geschlossen umschalten","fr":"Alterner ouvert/fermé","it":"Alterna aperte/chiuse","sv":"Växla mellan öppen eller stängd","no":"Veksle mellom åpen og lukket","es":"Abrir o cerrar","da":"Skift mellem åben og lukket","ru":"Переключатель открыть/закрыть","pl":"Przełącz na rozchylone lub zasłonięte","ko":"창문 커버 열림/닫힘 상태 전환하기","ar":"تبديل بين الفتح أو الإغلاق"}}]}}')},4551:(e,t,a)=>{"use strict";var r=a(1030);function i(e,t,a){this.message=a||i.message(e,t),this.missingRef=r.url(e,t),this.missingSchema=r.normalizeId(r.fullPath(this.missingRef))}function n(e){return e.prototype=Object.create(Error.prototype),e.prototype.constructor=e,e}e.exports={Validation:n((function(e){this.message="validation failed",this.errors=e,this.ajv=this.validation=!0})),MissingRef:n(i)},i.message=function(e,t){return"can't resolve reference "+t+" from id "+e}},4560:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Hood","da":"Emhætte","de":"Abzugshaube","es":"Campana extractora","fr":"Hotte","it":"Cappa","ko":"후드","nl":"Afzuigkap","no":"Vifte","pl":"Okap","ru":"Вытяжка","sv":"Fläkt","ar":"شفاط"},"description":{"en":"User this device class for any kind of extractor hood.","da":"Brug denne enhedsklasse til enhver form for emhætte.","de":"Verwenden Sie diese Geräteklasse für alle Arten von Dunstabzugshauben.","es":"Utiliza esta clase de dispositivo para cualquier tipo de campana extractora.","fr":"Utilisez cette classe d\'appareils pour tout type de hotte aspirante.","it":"Utilizza questa classe di dispositivi per qualsiasi tipo di cappa aspirante.","nl":"Gebruik deze apparaatklasse voor elk type afzuigkap.","no":"Bruk denne enhetsklassen for alle slags avtrekksvifter.","pl":"Tej klasy urządzeń należy używać w przypadku każdego rodzaju okapu.","ru":"Используйте этот класс устройств для вытяжек любого типа.","sv":"Använd den här enhetsklassen för alla typer av köksfläktar.","ko":"이 디바이스 클래스는 모든 종류의 환풍기 후드에 사용합니다.","ar":"استخدم فئة الجهاز هذه لأي نوع من شفاطات المطبخ."},"minCompatibility":"12.0.0"}')},4631:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Track","nl":"Track","de":"Track","fr":"Titre","it":"Traccia","sv":"Spår","no":"Spor","es":"Pista","da":"Spor","ru":"Трек","pl":"Utwór","ko":"트랙","ar":"المسار"},"type":"string","color":"#9033FC","getable":true,"setable":false,"uiComponent":"media","$flow":{"triggers":[{"id":"speaker_track_changed","title":{"en":"The track changed","nl":"De track is veranderd","de":"Der Track hat sich geändert","fr":"Le titre a été modifié","it":"La traccia è cambiata","sv":"Spåret ändrades","no":"Sporet ble endret","es":"La pista ha cambiado","da":"Sporet skiftede","ru":"Трек изменен","pl":"Zmiana utworu","ko":"트랙이 변경되면","ar":"تغير المسار"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":"My World"}]}]}}')},4636:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Curtains","nl":"Gordijnen","de":"Vorhänge","fr":"Rideaux","it":"Tende","sv":"Gardiner","no":"Gardiner","es":"Cortinas","da":"Gardiner","ru":"Шторы","pl":"Zasłony","ko":"커튼","ar":"ستائر"},"description":{"en":"Use this device class for curtains.","de":"Nutze diese Geräteklasse für Vorhänge.","fr":"Utilisez cette classe d\'appareil pour les rideaux.","it":"Utilizza questa classe di dispositivi per le tende.","sv":"Använd den här enheten för gardiner.","no":"Bruk denne enheten for gardiner.","es":"Utiliza esta clase de dispositivo para las cortinas.","da":"Brug denne enhedsklasse til gardiner.","ru":"Используйте этот класс устройств для штор.","pl":"Użyj tej klasy urządzeń dla zasłon.","ko":"이 디바이스 클래스는 커튼에 사용합니다.","ar":"استخدم فئة الجهاز هذه للستائر.","nl":"Gebruik deze apparaatklasse voor gordijnen."}}')},4667:e=>{"use strict";e.exports=function(e,t,a){var r,i=" ",n=e.level,s=e.dataLevel,o=e.schema[t],l=e.schemaPath+e.util.getProperty(t),d=e.errSchemaPath+"/"+t,u=!e.opts.allErrors,m="data"+(s||""),p=e.opts.$data&&o&&o.$data;p?(i+=" var schema"+n+" = "+e.util.getData(o.$data,s,e.dataPathArr)+"; ",r="schema"+n):r=o;var c="maximum"==t,g=c?"exclusiveMaximum":"exclusiveMinimum",h=e.schema[g],v=e.opts.$data&&h&&h.$data,f=c?"<":">",k=c?">":"<",y=void 0;if(!p&&"number"!=typeof o&&void 0!==o)throw new Error(t+" must be number");if(!v&&void 0!==h&&"number"!=typeof h&&"boolean"!=typeof h)throw new Error(g+" must be number or boolean");if(v){var b,w=e.util.getData(h.$data,s,e.dataPathArr),z="exclusive"+n,P="exclType"+n,_="exclIsNumber"+n,S="' + "+(E="op"+n)+" + '";i+=" var schemaExcl"+n+" = "+w+"; ",i+=" var "+z+"; var "+P+" = typeof "+(w="schemaExcl"+n)+"; if ("+P+" != 'boolean' && "+P+" != 'undefined' && "+P+" != 'number') { ",y=g,(b=b||[]).push(i),i="",!1!==e.createErrors?(i+=" { keyword: '"+(y||"_exclusiveLimit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(d)+" , params: {} ",!1!==e.opts.messages&&(i+=" , message: '"+g+" should be boolean' "),e.opts.verbose&&(i+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),i+=" } "):i+=" {} ";var A=i;i=b.pop(),!e.compositeRule&&u?e.async?i+=" throw new ValidationError(["+A+"]); ":i+=" validate.errors = ["+A+"]; return false; ":i+=" var err = "+A+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",i+=" } else if ( ",p&&(i+=" ("+r+" !== undefined && typeof "+r+" != 'number') || "),i+=" "+P+" == 'number' ? ( ("+z+" = "+r+" === undefined || "+w+" "+f+"= "+r+") ? "+m+" "+k+"= "+w+" : "+m+" "+k+" "+r+" ) : ( ("+z+" = "+w+" === true) ? "+m+" "+k+"= "+r+" : "+m+" "+k+" "+r+" ) || "+m+" !== "+m+") { var op"+n+" = "+z+" ? '"+f+"' : '"+f+"='; ",void 0===o&&(y=g,d=e.errSchemaPath+"/"+g,r=w,p=v)}else if(S=f,(_="number"==typeof h)&&p){var E="'"+S+"'";i+=" if ( ",p&&(i+=" ("+r+" !== undefined && typeof "+r+" != 'number') || "),i+=" ( "+r+" === undefined || "+h+" "+f+"= "+r+" ? "+m+" "+k+"= "+h+" : "+m+" "+k+" "+r+" ) || "+m+" !== "+m+") { "}else _&&void 0===o?(z=!0,y=g,d=e.errSchemaPath+"/"+g,r=h,k+="="):(_&&(r=Math[c?"min":"max"](h,o)),h===(!_||r)?(z=!0,y=g,d=e.errSchemaPath+"/"+g,k+="="):(z=!1,S+="=")),E="'"+S+"'",i+=" if ( ",p&&(i+=" ("+r+" !== undefined && typeof "+r+" != 'number') || "),i+=" "+m+" "+k+" "+r+" || "+m+" !== "+m+") { ";return y=y||t,(b=b||[]).push(i),i="",!1!==e.createErrors?(i+=" { keyword: '"+(y||"_limit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(d)+" , params: { comparison: "+E+", limit: "+r+", exclusive: "+z+" } ",!1!==e.opts.messages&&(i+=" , message: 'should be "+S+" ",i+=p?"' + "+r:r+"'"),e.opts.verbose&&(i+=" , schema: ",i+=p?"validate.schema"+l:""+o,i+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),i+=" } "):i+=" {} ",A=i,i=b.pop(),!e.compositeRule&&u?e.async?i+=" throw new ValidationError(["+A+"]); ":i+=" validate.errors = ["+A+"]; return false; ":i+=" var err = "+A+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",i+=" } ",u&&(i+=" else { "),i}},4683:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Garage Door","nl":"Garagedeur","de":"Garagentor","fr":"Porte de garage","it":"Porta del garage","sv":"Garagedörr","no":"Garasjeport","es":"Puerta de garaje","da":"Garageport","ru":"Дверь гаража","pl":"Brama garażowa","ko":"차고 문","ar":"باب المرآب"},"description":{"en":"Use this device class for garage doors, usually together with the `garagedoor_closed` capability.","ru":"Используйте этот класс устройств для дверей гаража, обычно вместе с функцией `garagedoor_closed`.","pl":"Użyj tej klasy urządzeń dla bram garażowych, zwykle razem ze zdolnością „garagedoor_closed”.","ko":"이 디바이스 클래스는 보통 \'garagedoor_closed\' 기능을 갖춘 차고 문에 사용합니다.","no":"Bruk denne enhetsklassen for garasjeporter, vanligvis sammen med funksjonen «garagedoor_closed».","ar":"استخدم فئة الجهاز هذه لأبواب المرآب، عادةً مع ميزة \'garagedoor_closed\'.","da":"Brug denne enhedsklasse til garageporte, normalt sammen med funktionen `garagedoor_closed`.","de":"Verwende diese Geräteklasse für Garagentore, in der Regel in Verbindung mit der Funktion „garagedoor_closed“.","es":"Utiliza esta clase de dispositivos para puertas de garaje (generalmente junto con la capacidad \\"garagedoor_closed\\").","fr":"Utilisez cette classe d\'appareils pour les portes de garage, généralement en association avec la fonctionnalité `garagedoor_closed`.","it":"Utilizza questa classe di dispositivi per le porte del garage, di solito insieme alla funzionalità `garagedoor_closed`.","nl":"Gebruik deze apparaatklasse voor garagedeuren, meestal samen met de optie \'garagedoor_closed\'.","sv":"Använd den här enhetsklassen för garageportar, vanligtvis tillsammans med funktionen `garagedoor_closed`."}}')},4686:(e,t,a)=>{"use strict";var r=a(4551).MissingRef;e.exports=function e(t,a,i){var n=this;if("function"!=typeof this._opts.loadSchema)throw new Error("options.loadSchema should be a function");"function"==typeof a&&(i=a,a=void 0);var s=o(t).then((function(){var e=n._addSchema(t,void 0,a);return e.validate||l(e)}));return i&&s.then((function(e){i(null,e)}),i),s;function o(t){var a=t.$schema;return a&&!n.getSchema(a)?e.call(n,{$ref:a},!0):Promise.resolve()}function l(e){try{return n._compile(e)}catch(t){if(t instanceof r)return function(t){var r=t.missingSchema;if(d(r))throw new Error("Schema "+r+" is loaded but "+t.missingRef+" cannot be resolved");var i=n._loadingSchemas[r];return i||(i=n._loadingSchemas[r]=n._opts.loadSchema(r)).then(s,s),i.then((function(e){if(!d(r))return o(e).then((function(){d(r)||n.addSchema(e,r,void 0,a)}))})).then((function(){return l(e)}));function s(){delete n._loadingSchemas[r]}function d(e){return n._refs[e]||n._schemas[e]}}(t);throw t}}}},4792:(e,t,a)=>{"use strict";e.exports={detect:function(e){return 0===e.readUInt16LE(0)&&2===e.readUInt16LE(2)},calculate:a(6459).calculate}},4861:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Progress","ar":"التقدم المحرز","da":"Fremskridt","de":"Fortschritt","es":"Progreso","fr":"En cours","it":"Avanzamento","ko":"진행률","nl":"Voortgang","no":"Fremdrift","pl":"Postęp","ru":"Ход выполнения","sv":"Förlopp"},"units":{"en":"%","ar":"%","da":"%","de":"%","es":"%","fr":"%","it":"%","ko":"%","nl":"%","no":" %","pl":"%","ru":"%","sv":"%"},"desc":{"en":"The the percentage of the current task that is completed. When the task is currently not active the capability should be set to `null`","ar":"النسبة المئوية للمهمة الحالية التي اكتملت. عندما تكون المهمة غير نشطة حاليًا يجب تعيين الإمكانية على \'null\' (لاغية)","da":"Den procentdel af den aktuelle opgave, der er afsluttet. Når opgaven ikke er aktiv i øjeblikket, skal kapaciteten sættes til `null`","de":"Der Prozentsatz der aktuellen Aufgabe, der schon erledigt ist. Wenn die Aufgabe gerade nicht aktiv ist, sollte die Funktion auf „null“ gesetzt werden.","es":"El porcentaje de la tarea actual que se ha completado. Si la tarea no está activa en ese momento, el valor ha de ser \\"nulo\\".","fr":"Pourcentage de la tâche en cours qui est terminé. Lorsque la tâche n\'est pas active, la fonctionnalité doit être définie sur « null ».","it":"La percentuale dell\'attività corrente che è stata completata. Quando l\'attività non è attiva, la capacità deve essere impostata a \\"null\\"","ko":"현재 작업에서 완료된 비율입니다. 작업이 현재 활성이 아니라면 기능이 \'null\'로 설정되어야 합니다.","nl":"Het percentage van de huidige taak die is voltooid. Als de taak momenteel niet actief is, moet de functie worden ingesteld op `null`","no":"Fullført prosentandel av den aktuelle oppgaven. Når oppgaven ikke er aktiv, skal funksjonen settes til `null`","pl":"Procent ukończenia bieżącego zadania. Gdy zadanie nie jest aktualnie aktywne, właściwość powinna być ustawiona na „brak”","ru":"Процент выполнения текущей задачи. Если задача в данный момент не активна, значение параметра следует установить на null","sv":"Den procentandel av den aktuella uppgiften som är slutförd. När uppgiften för närvarande inte är aktiv bör kapaciteten sättas till `null`"},"insights":true,"chartType":"stepLine","min":0,"max":100,"decimals":2,"color":"#6DD400","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"progress_changed","title":{"en":"The progress changed","ar":"تغير التقدم المحرز","da":"Fremskridtet ændrede sig","de":"Der Fortschritt hat sich verändert","es":"El progreso ha cambiado","fr":"La progression a changé","it":"L\'avanzamento è cambiato","ko":"진행률이 변경되면","nl":"De voortgang is veranderd","no":"Fremdriften ble endret","pl":"Postęp się zmienił","ru":"Значение хода выполнения изменилось","sv":"Förloppet förändrades"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":0.5}]}]},"minCompatibility":"12.11.0"}')},4946:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Button","nl":"Knop","de":"Taste","fr":"Bouton","it":"Pulsante","sv":"Knapp","no":"Knapp","es":"Botón","da":"Knap","ru":"Кнопка","pl":"Przycisk","ko":"버튼","ar":"زر"},"type":"boolean","color":"#9033FC","getable":false,"setable":true,"uiComponent":"button","uiQuickAction":true,"$flow":{"actions":[{"id":"press","title":{"en":"Press the button","nl":"Druk op de knop","de":"Drücke die Taste","fr":"Appuyer sur le bouton","it":"Premi il pulsante","sv":"Tryck på knappen","no":"Trykk på knappen","es":"Pulsa el botón","da":"Tryk på knappen","ru":"Нажмите кнопку","pl":"Naciśnij przycisk","ko":"버튼 누르기","ar":"اضغط على الزر"}}]}}')},4963:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Bicycle","da":"Cykel","de":"Fahrrad","es":"Bicicleta","fr":"Vélo","it":"Bicicletta","ko":"자전거","nl":"Fiets","no":"Sykkel","pl":"Rower","ru":"Велосипед","sv":"Cykel","ar":"دراجة هوائية"},"description":{"en":"Use this device class for bicycles.","da":"Brug denne enhedsklasse til cykler.","de":"Verwenden Sie diese Geräteklasse für Fahrräder.","es":"Utiliza esta clase de dispositivo para bicicletas.","fr":"Utilisez cette classe d\'appareils pour les vélos.","it":"Utilizza questa classe di dispositivi per le biciclette.","ko":"이 디바이스 클래스는 자전거에 사용합니다.","nl":"Gebruik deze apparaatklasse voor fietsen.","no":"Bruk denne enhetsklassen for sykler.","pl":"Ta klasa urządzeń jest przeznaczona dla rowerów.","ru":"Используйте этот класс устройств для велосипедов.","sv":"Använd den här enhetsklassen för cyklar.","ar":"استخدم فئة الجهاز هذه للدراجات الهوائية."},"minCompatibility":"12.0.0"}')},4966:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Gas meter","nl":"Gasmeter","de":"Gaszähler","fr":"Compteur de gaz","it":"Contatore del gas","sv":"Gasmätare","no":"Gassmåler","es":"Contador de gas","da":"Gasmåler","ru":"Счетчик газа","pl":"Licznik gazowy","ko":"가스량","ar":"عداد الغاز"},"min":0,"decimals":2,"chartType":"spline","units":{"en":"m³","ru":"м³","ko":"m³","no":"m³","ar":"م³","da":"m³","de":"m³","es":"m³","fr":"m³","it":"m³","nl":"m³","pl":"m³","sv":"m³"},"desc":{"en":"Gas usage in cubic meter (m³)","nl":"Gas gebruik in kubieke meter (m³)","de":"Gasverbrauch in Kubikmeter (m³)","fr":"Consommation de gaz en mètres cubes (m³)","it":"Consumo di gas in metri cubi (m³)","sv":"Gasanvändning i kubikmeter (m³)","no":"Gassforbruk i kubikkmeter (m³)","es":"Consumo de gas en metros cúbicos (m³)","da":"Gasforbrug i kubikmeter (m³)","ru":"Использование газа в кубометрах (м³)","pl":"Zużycie gazu w metrach sześciennych (m³)","ko":"가스 사용량 입방미터(m³)","ar":"استهلاك الغاز بالمتر المكعب (m³)"},"color":"#F9236C","insights":true,"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"meter_gas_changed","title":{"en":"The gas meter changed","nl":"De gasmeter is veranderd","de":"Der Gaszähler hat sich geändert","fr":"Le compteur de gaz a changé","it":"Il contatore del gas è cambiato","sv":"Gasmätaren ändrades","no":"Gassmåleren ble endret","es":"El contador de gas ha cambiado","da":"Gasmåleren ændrede sig","ru":"Измерения счетчика газа изменились","pl":"Zmiana w liczniku gazowym","ko":"가스량이 변경되면","ar":"تغير عداد الغاز"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":25}]}]}}')},5003:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Ozone Level","nl":"Ozonniveau","da":"Ozon-niveau","it":"Livello di ozono","ko":"오존 수준","pl":"Poziom ozonu","ru":"Уровень озона","sv":"Ozonnivå","es":"Nivel de ozono","fr":"Niveau d\'ozone","no":"Ozonnivå","ar":"مستوى الأوزون","de":"Ozongehalt"},"desc":{"en":"The level of ozone in the air.","nl":"De mate van ozon in de lucht.","da":"Niveauet af ozon i luften.","it":"Il livello di ozono nell\'aria.","ko":"공기 중 오존 수준입니다.","pl":"Poziom ozonu w powietrzu.","ru":"Уровень содержания озона в воздухе.","sv":"Halten av ozon i luften.","es":"El nivel de ozono en el aire.","fr":"Le niveau d\'ozone dans l\'air.","no":"Nivået av ozon i luften.","ar":"مستوى الأوزون في الهواء.","de":"Der Ozongehalt der Luft."},"values":[{"id":"low","title":{"en":"Low","nl":"Laag","da":"Lavt","it":"Basso","ko":"낮음","pl":"Niski","ru":"Низкий","sv":"Låg","es":"Bajo","fr":"Faible","no":"Lavt","ar":"منخفض","de":"Niedrig"}},{"id":"medium","title":{"en":"Medium","nl":"Gemiddeld","da":"Medium","it":"Medio","ko":"보통","pl":"Średni","ru":"Средний","sv":"Medium","es":"Intermedio","fr":"Moyen","no":"Middels","ar":"متوسط","de":"Mittel"}},{"id":"high","title":{"en":"High","nl":"Hoog","da":"Højt","it":"Alto","ko":"높음","pl":"Wysoki","ru":"Высокий","sv":"Hög","es":"Alto","fr":"Élevé","no":"Høyt","ar":"عالي","de":"Hoch"}},{"id":"critical","title":{"en":"Critical","nl":"Kritiek","da":"Kritisk","it":"Critico","ko":"위험","pl":"Krytyczny","ru":"Критический","sv":"Kritisk","es":"Crítico","fr":"Critique","no":"Kritisk\\n","ar":"حرج","de":"Kritisch"}}],"color":"#E02020","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"level_o3_changed","highlight":true,"title":{"en":"The ozone level changed to","nl":"Het ozonniveau is veranderd naar","da":"Ozonniveauet ændrede sig til","it":"Il livello di ozono è passato a","ko":"오존 수준이 다음으로 변경되면","pl":"Poziom ozonu zmienił się na","ru":"Уровень озона изменился на","sv":"Ozonnivån ändrades till","es":"El nivel de ozono ha cambiado a","fr":"Le niveau d\'ozone est passé à","no":"Ozonnivået ble endret til","ar":"تغير مستوى الأوزون إلى","de":"Der Ozonwert hat sich geändert auf"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"level_o3_is","title":{"en":"The ozone level !{{is|is not}}","nl":"Het ozonniveau !{{is|is niet}}","da":"Ozonniveauet !{{er|er ikke}}","it":"Il livello di ozono !{{è|non è}}","ko":"오존 수준이 다음!{{이면|이 아니면}}","pl":"Poziom ozonu !{{jest|nie jest}}","ru":"Уровень озона !{{|не}}","sv":"Ozonnivån !{{är|är inte}}","es":"El nivel de ozono !{{es|no es}}","fr":"Le niveau d\'ozone !{{est|n\'est pas}}","no":"Ozonnivået !{{er|er ikke}}","ar":"مستوى الأوزون !{{هو|ليس}}","de":"Der Ozonwert !{{ist|ist nicht}}"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.2.0"}')},5062:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Minimum target humidity","nl":"Minimale gewenste vochtigheid","da":"Minimum målfugtighed","it":"Umidità target minima","ko":"최저 희망 습도","pl":"Minimalna docelowa wilgotność","ru":"Минимальная заданная влажность","sv":"Lägsta önskade luftfuktighet","es":"Humedad mínima deseada","fr":"Humidité cible minimale","no":"Minimum ønsket fuktighet","ar":"الحد الأدنى للرطوبة المستهدفة","de":"Minimale Zielfeuchtigkeit"},"units":{"en":"%","nl":"%","da":"%","it":"%","ko":"%","pl":"%","ru":"%","sv":"%","es":"%","fr":" %","no":"%","ar":"%","de":"%"},"desc":{"en":"The low end of the target humidity level in percent.","nl":"Het laagste niveau van de gewenste vochtigheid in procenten.","da":"Den lave ende af den ønskede luftfugtighed i procent.","it":"Il livello minimo di umidità target in percentuale.","ko":"백분율로 표현한 목표 습도의 최소치입니다.","pl":"Dolna granica docelowego poziomu wilgotności w procentach.","ru":"Нижний предел заданного уровня влажности в процентах.","es":"El valor inferior del nivel de humedad objetivo en porcentaje.","fr":"Le niveau minimal d\'humidité cible en pourcentage.","no":"Minimum ønsket fuktighetsnivå i prosent.","ar":"الحد الأدنى لمستوى الرطوبة المستهدف بالنسبة المئوية.","de":"Das untere Ende der Zielfeuchtigkeit in Prozent.","sv":"Den nedre delen av den önskade luftfuktighetsnivån i procent."},"insights":true,"chartType":"stepLine","decimals":2,"min":0,"max":1,"color":"#0091FF","getable":true,"setable":true,"uiComponent":"slider","$flow":{"triggers":[{"id":"target_humidity_min_changed","title":{"en":"The minimum target humidity has changed","nl":"De minimale gewenste vochtigheid is veranderd","da":"Minimum målfugtighed er ændret","it":"L\'umidità target minima è cambiata","ko":"최저 희망 습도가 변경되면","no":"Minimum ønsket fuktighet er endret","pl":"Zmieniła się minimalna docelowa wilgotność","ru":"Минимальная заданная влажность изменена","sv":"Den lägsta önskade luftfuktigheten har ändrats","es":"La humedad mínima deseada ha cambiado","fr":"L\'humidité minimale cible a changé","ar":"تغير الحد الأدنى للرطوبة المستهدفة","de":"Die minimale Zielfeuchtigkeit wurde geändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":50}]}],"actions":[{"id":"set_target_humidity_min","title":{"en":"Set the minimum target humidity","nl":"De minimale gewenste vochtigheid instellen","da":"Indstil minimum målfugtighed","it":"Imposta l\'umidità target minima","ko":"최저 희망 습도 설정","pl":"Ustaw minimalną docelową wilgotność","ru":"Установить минимальную заданную влажность","sv":"Ställ in lägsta önskade luftfuktighet","es":"Ajustar la humedad mínima deseada","fr":"Définir l\'humidité minimale cible","no":"Angi minimum ønsket fuktighet","ar":"ضبط الحد الأدنى للرطوبة المستهدفة","de":"Einstellen der minimalen Zielfeuchtigkeit"},"args":[{"name":"target_humidity_min","type":"range","min":0,"max":1,"step":0.01,"value":0.5,"label":"%","labelMultiplier":100,"labelDecimals":0}]}]},"minCompatibility":"12.2.0"}')},5075:e=>{"use strict";function t(e,t,a){let r=!0;return e instanceof Array?e.forEach((e=>{(ea)&&(r=!1)})):"number"==typeof e&&(ea)&&(r=!1),r}function a(e){return"string"==typeof e&&/^(([0-9a-f]{4}\s?){2}){2,}$/i.test(e)}const r=1,i=0,n=.5;function s(e,t){const a={result:!0,msg:`invalid_${this}`};return e instanceof Array?(t.packing?e.some((e=>!(e>=0&&e<=255)))&&(a.result=!1):e.some((e=>!t.words||!t.words[e]))&&(a.result=!1),a):(a.result=!1,a)}const o={words(e,t){const a={result:!0,msg:"invalid_words"};return!(e instanceof Array)||e.length<=1?(a.result=!1,a):(e.forEach((e=>{if(!(e instanceof Array)||e.length<=1)return a.result=!1,a})),a)},agc:(e,t)=>({result:e instanceof Array,msg:"invalid_agc"}),sof:(e,t)=>({result:e instanceof Array,msg:"invalid_sof"}),toggleSof:(e,t)=>({result:e instanceof Array,msg:"invalid_toggleSof"}),eof:(e,t)=>({result:e instanceof Array,msg:"invalid_eof"}),manchesterUnit:(e,t)=>({result:"number"==typeof e,msg:"invalid_manchesterUnit"}),manchesterMaxUnits:(e,t)=>({result:"number"==typeof e&&e>=r,msg:"invalid_manchesterMaxUnits"}),sensitivity:(e,a)=>({result:"number"==typeof e&&t(e,i,n),msg:"invalid_sensitivity"}),interval:(e,t)=>({result:"number"==typeof e,msg:"invalid_signalinterval"}),minimalLength:(e,t)=>({result:e>0,msg:"invalid_minimalLength"}),maximalLength:(e,t)=>({result:e>0,msg:"invalid_maximalLength"}),packing:(e,t)=>({result:"boolean"==typeof e&&t.words&&2==t.words.length,msg:"invalid_packing"}),dutyCycle:(e,t)=>({result:"number"==typeof e,msg:"invalid_dutyCycle"}),txOnly:(e,t)=>({result:"boolean"==typeof e,msg:"invalid_txOnly"}),cmds(e,t){const a={result:!0,msg:"invalid_cmd"};return Object.keys(e).forEach((r=>{s(e[r],t).result||(a.result=!1)})),a},toggleIndexes:(e,t)=>({result:e instanceof Array&&!e.some((e=>e>=t.sof.length)),msg:"invalid_toggleIndexes"}),toggleBits:(e,t)=>({result:e instanceof Array,msg:"invalid_toggleBits"}),prefixData:s.bind("prefixData"),postfixData:s.bind("postfixData")},l={timeInterval:{min:5,max:32767},manchesterInterval:{min:0,max:1},rxTimeout:{min:0,max:255},repetitions:{min:1,max:255}},d={words(e,a){const r={result:!0,msg:"word_interval_out_of_bounds"},i=a.hasOwnProperty("manchesterUnit")?l.manchesterInterval:l.timeInterval;return e.forEach((e=>{t(e,i.min,i.max)||(r.result=!1)})),r},agc(e,a){const r=a.hasOwnProperty("manchesterUnit")?l.manchesterInterval:l.timeInterval;return{result:t(e,r.min,r.max),msg:"agc_out_of_bounds"}},toggleSof(e,a){const r=a.hasOwnProperty("manchesterUnit")?l.manchesterInterval:l.timeInterval;return{result:t(e,r.min,r.max),msg:"toggleSof_out_of_bounds"}},sof(e,a){const r=a.hasOwnProperty("manchesterUnit")?l.manchesterInterval:l.timeInterval;return{result:t(e,r.min,r.max),msg:"sof_out_of_bounds"}},eof(e,a){const r=a.hasOwnProperty("manchesterUnit")?l.manchesterInterval:l.timeInterval;return{result:t(e,r.min,r.max),msg:"eof_out_of_bounds"}},repetitions:(e,a)=>({result:t(e,l.repetitions.min,l.repetitions.max),msg:"repetitions_out_of_bounds"}),interval:(e,a)=>({result:t(e,l.timeInterval.min,l.timeInterval.max),msg:"interval_out_of_bounds"}),rxTimeout:(e,a)=>({result:t(e,l.rxTimeout.min,l.rxTimeout.max),msg:"rxTimeout_out_of_bounds"}),manchesterUnit:(e,a)=>({result:t(e,l.timeInterval.min,l.timeInterval.max),msg:"manchesterUnit_out_of_bounds"})},u=1e3,m=2e5,p=58e3,c=812e3,g=5e3,h=5e4,v={modulation(e,a){const r=["type","baudRate","channelSpacing","channelDeviation"],i={result:!0,msg:"invalid_modulation_properties"};for(let t=0;t({result:!Object.keys(e).some((t=>!a(e[t]))),msg:"invalid_pronto_cmds"}),toggleCmds:(e,t)=>({result:!Object.keys(e).some((t=>!a(e[t]))),msg:"invalid_pronto_toggleCmds"}),repetitions:(e,a)=>({result:t(e,l.repetitions.min,l.repetitions.max),msg:"repetitions_out_of_bounds"})},k={carrier:(e,a)=>({result:t(e,433e6,43399e4),msg:"carrier_out_of_bounds"})},y=868e6,b=8689e5,w={carrier:(e,a)=>({result:t(e,y,b),msg:"carrier_out_of_bounds"})},z=3e4,P=58e3,_=30,S=70,A={carrier:(e,a)=>({result:t(e,z,P),msg:"invalid_carrier"}),dutyCycle:(e,a)=>({result:t(e,_,S),msg:"dutyCycle_out_of_bounds"})};e.exports={validate:function(e,t,a){for(const r in a){const i=a[r],n=e[r];if("function"==typeof n){const e=n(i,a);t(e.msg,e.result)}}},genericValidator:o,irValidator:A,rfValidator:d,rf433Validator:k,rf868Validator:w,modulationValidator:v,prontoValidator:f}},5091:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Vacuum cleaner state","de":"Staubsauger-Status","fr":"Etat de l\'aspirateur","it":"Stato dell\'aspirapolvere","sv":"Dammsugarstatus","no":"Støvsugerstatus","es":"Modo de la aspiradora","da":"Støvsugerstatus","ru":"Состояние пылесоса","pl":"Stan odkurzacza","ko":"청소기 상태","ar":"حالة المكنسة الكهربائية","nl":"Stofzuigerstatus"},"values":[{"id":"cleaning","title":{"en":"Cleaning","nl":"Stofzuigen","de":"Staubsaugen","fr":"Aspirer","it":"Pulizia in corso","sv":"Städning","no":"Rengjøring","es":"Aspirando","da":"Støvsuger","ru":"Идет уборка","pl":"Sprzątanie","ko":"청소 중","ar":"تنظيف"}},{"id":"spot_cleaning","title":{"en":"Spot cleaning","nl":"Vlek schoonmaken","de":"Spot-Reinigung","fr":"Détacher","it":"Pulizia delle macchie","sv":"Områdesstädning","no":"Områderengjøring","es":"Aspirando un punto concreto","da":"Områdestøvsugning","ru":"Идет точечная уборка","pl":"Przestań sprzątać","ko":"집중 청소 중","ar":"تنظيف موضعي"}},{"id":"docked","title":{"en":"Docked","nl":"Op laadstation","de":"An Ladestation","fr":"Connecté à la base","it":"Connesso alla base","sv":"Dockad","no":"I ladestasjon","es":"En la base de carga","da":"I ladestation","ru":"На станции","pl":"W bazie","ko":"거치됨","ar":"قيد الإرساء"}},{"id":"charging","title":{"en":"Charging","nl":"Aan het opladen","de":"Lädt auf","fr":"En charge","it":"In carica","sv":"Laddar","no":"Lader","es":"Cargando","da":"Lader","ru":"Заряжается","pl":"Ładowanie","ko":"충전 중","ar":"قيد الشحن"}},{"id":"stopped","title":{"en":"Stopped","nl":"Gestopt","de":"Gestoppt","fr":"Arrêté","it":"Fermo","sv":"Stoppad","no":"Stanset","es":"Detenida","da":"Stoppet","ru":"Остановлен","pl":"Zatrzymano","ko":"정지","ar":"متوقف"}}],"color":"#0091FF","getable":true,"setable":true,"uiComponent":"picker","$flow":{"triggers":[{"id":"vacuumcleaner_state_changed","title":{"en":"The state changed to...","nl":"De status is veranderd naar...","de":"Der Status hat sich geändert auf...","fr":"L\'état est passé à...","it":"Lo stato è cambiato in...","sv":"Status ändrad till...","no":"Status endret til ...","es":"El estado ha cambiado a...","da":"Status er ændret til...","ru":"Состояние изменено на…","pl":"Zmiana stanu na...","ko":"청소기 상태가 변경되면","ar":"تم تغيير الحالة إلى..."},"args":[{"name":"state","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"vacuumcleaner_state_is","title":{"en":"The vacuum cleaner !{{is|is not}}","nl":"De stofzuiger !{{is|is niet}}","de":"Der Staubsauger !{{ist|ist nicht}}","fr":"L\'aspirateur !{{est|n\'est pas}}","it":"L\'aspirapolvere !{{è|non è}}","sv":"Dammsugaren !{{är|är inte}}","no":"Støvsugeren !{{er|er ikke}}","es":"La aspiradora !{{está|no está}}","da":"Støvsugeren !{{er|er ikke}}","ru":"Пылесос !{{|не}}","pl":"Stan odkurzacza !{{to|to nie}}","ko":"청소기 상태가 다음!{{이면|이 아니면}}","ar":"المكنسة الكهربائية !{{هي|ليست}}"},"args":[{"name":"state","type":"dropdown","values":"$values"}]}],"actions":[{"id":"clean","highlight":true,"title":{"en":"Start cleaning","nl":"Begin met stofzuigen","de":"Mit Staubsaugen anfangen","fr":"Commencer le nettoyage","it":"Avvia la pulizia","sv":"Börja städa","no":"Begynn rengjøring","es":"Comenzar a aspirar","da":"Begynd at støvsuge","ru":"Начать уборку","pl":"Zacznij sprzątać","ko":"청소 시작","ar":"بدء التنظيف"}},{"id":"spot_clean","title":{"en":"Start spot cleaning","nl":"Begin met pleksgewijs stofzuigen","de":"Mit Spot-Reinigung anfangen","fr":"Commencer le détachage","it":"Avvia la pulizia delle macchie","sv":"Starta områdesstädning","no":"Begynn områderengjøring","es":"Comenzar a aspirar un punto concreto","da":"Begynd at områdestøvsuge","ru":"Начать точечную уборку","pl":"Zacznij sprzątać punktowo","ko":"집중 청소 시작","ar":"بدء التنظيف الموضعي"}},{"id":"dock","highlight":true,"title":{"en":"Return to dock","nl":"Terug naar laadstation","de":"Zu Ladestation zurückkehren","fr":"Retourner à la base","it":"Ritorna alla base","sv":"Återgå till docka","no":"Gå tilbake til ladestasjon","es":"Volver a la base de carga","da":"Vend tilbage til ladestationen","ru":"Возвратиться на станцию","pl":"Wróć do bazy","ko":"도크로 복귀","ar":"العودة إلى المرساة"}},{"id":"stop","highlight":true,"title":{"en":"Stop","nl":"Stop","de":"Stop","fr":"Arrêter","it":"Arresta","sv":"Stopp","no":"Stans","es":"Detener","da":"Stop","ru":"Стоп","pl":"Przestań","ko":"중지","ar":"إيقاف"}}]}}')},5098:()=>{},5150:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Oven Mode","ar":"وضع الفرن","da":"Ovntilstand","de":"Backofen-Modus","es":"Modo horno","fr":"Mode de cuisson du four","it":"Modalità forno","ko":"오븐 모드","nl":"Ovenstand","no":"Ovnsmodus","pl":"Tryb piekarnika","ru":"Режим духовки","sv":"Ugnsläge"},"desc":{"en":"The oven mode.","ar":"وضع الفرن.","da":"Ovntilstanden.","de":"Der Ofenmodus.","es":"El modo horno.","fr":"Le mode de cuisson du four.","it":"La modalità del forno.","ko":"오븐 모드입니다.","nl":"De ovenstand.","no":"Ovnsmodusen.","pl":"Tryb piekarnika.","ru":"Режим духовки.","sv":"Ugnsläget."},"values":[{"id":"bake","title":{"en":"Bake","ar":"خبز","da":"Bage","de":"Backen","es":"Hornear","fr":"Cuire","it":"Cuocere","ko":"베이킹","nl":"Bakken","no":"Baking","pl":"Pieczenie","ru":"Выпечка","sv":"Baka"}},{"id":"convection","title":{"en":"Convection","ar":"الحمل الحراري","da":"Konvektion","de":"Umluft","es":"Convección","fr":"Convection","it":"Convezione","ko":"컨벡션","nl":"Hetelucht","no":"Varmluft","pl":"Konwekcja","ru":"Конвекция","sv":"Konvektion"}},{"id":"grill","title":{"en":"Grill","ar":"الشواية","da":"Grill","de":"Grill","es":"Gratinar","fr":"Gril","it":"Grigliare","ko":"그릴","nl":"Grillen","no":"Grilling","pl":"Grill","ru":"Гриль","sv":"Grill"}},{"id":"roast","title":{"en":"Roast","ar":"الشواء","da":"Stegt","de":"Braten","es":"Asar","fr":"Rôtir","it":"Cuocere arrosto","ko":"로스트","nl":"Braden","no":"Steking","pl":"Pieczenie","ru":"Обжарка","sv":"Stekning"}},{"id":"clean","title":{"en":"Clean","ar":"نظيفة","da":"Ren","de":"Reinigen","es":"Limpiar","fr":"Nettoyage","it":"Pulire","ko":"세척","nl":"Reinigen","no":"Rengjøring","pl":"Czyszczenie","ru":"Очистка","sv":"Ren"}},{"id":"convection_bake","title":{"en":"Convection Bake","ar":"الخَبز الحراري","da":"Konvektionsbagning","de":"Backen mit Umluft","es":"Horneado por convección","fr":"Cuisson par convection","it":"Cottura a convezione","ko":"컨벡션 베이킹","nl":"Hetelucht bakken","no":"Varmluftsbaking","pl":"Pieczenie konwekcyjne (bez tłuszczu)","ru":"Выпечка с конвекцией","sv":"Konvektionsbakning"}},{"id":"convection_roast","title":{"en":"Convection Roast","ar":"التحميص الحراري","da":"Konvektionsstegning","de":"Braten mit Umluft","es":"Asado por convección","fr":"Rôti par convection","it":"Cottura arrosto a convezione","ko":"컨벡션 로스트","nl":"Hetelucht braden","no":"Varmluftssteking","pl":"Pieczenie konwekcyjne (z tłuszczem)","ru":"Обжарка с конвекцией","sv":"Konvektionsstekning"}},{"id":"warming","title":{"en":"Warming","ar":"الاحترار","da":"Varmer op","de":"Erwärmen","es":"Calentamiento","fr":"Réchauffage","it":"Riscaldamento","ko":"보온","nl":"Verwarmen","no":"Oppvarming","pl":"Grzanie","ru":"Прогрев","sv":"Uppvärmning"}},{"id":"proofing","title":{"en":"Proofing","ar":"التدقيق","da":"Hæver","de":"Garen/gehen lassen","es":"Fermentación","fr":"Étuve","it":"Lievitazione","ko":"발효","nl":"Rijzen","no":"Heving","pl":"Odpoczywanie","ru":"Расстойка","sv":"Preparera"}},{"id":"steam","title":{"en":"Steam","ar":"البخار","da":"Damp","de":"Dampf","es":"Vapor","fr":"Vapeur","it":"Vapore","ko":"스팀","nl":"Stomen","no":"Damping","pl":"Parowanie","ru":"Пар","sv":"Ånga"}}],"color":"#FA6400","getable":true,"setable":true,"uiComponent":"picker","$flow":{"triggers":[{"id":"oven_mode_changed","highlight":true,"title":{"en":"The oven mode changed to","ar":"تغير وضع الفرن إلى","da":"Ovntilstanden ændrede sig til","de":"Der Ofenmodus wurde geändert auf","es":"El modo horno ha cambiado a","fr":"Le mode de cuisson du four est passé à","it":"La modalità del forno è passata a","ko":"오븐 모드가 다음으로 변경되면","nl":"De ovenstand veranderde naar","no":"Ovnsmodusen ble endret til","pl":"Tryb piekarnika zmienił się na","ru":"Режим духовки изменен на","sv":"Ugnsläget ändrades till"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"oven_mode_is","title":{"en":"The oven mode !{{is|is not}}","ar":"وضع الفرن !{{هو|ليس}}","da":"Ovntilstanden !{{er|er ikke}}","de":"Der Ofenmodus !{{ist|ist nicht}}","es":"El modo horno !{{está|no está}}","fr":"Le mode de cuisson du four !{{est|n\'est pas}}","it":"La modalità del forno !{{è|non è}}","ko":"오븐 모드가 다음!{{이면|이 아니면}}","nl":"De ovenstand !{{is|is niet}}","no":"Ovnsmodusen !{{er|er ikke}}","pl":"Tryb piekarnika !{{jest|nie jest}}","ru":"Режим духовки — !{{ | не}}","sv":"Ugnsläget !{{är|är inte}}"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}],"actions":[{"id":"set_oven_mode","title":{"en":"Set the oven mode to","ar":"ضبط وضع الفرن على","da":"Indstil ovntilstand til","de":"Stellen Sie den Ofenmodus auf","es":"Establece el modo horno en","fr":"Réglez le mode de cuisson du four sur","it":"Imposta la modalità del forno su","ko":"오븐 모드를 다음으로 설정","nl":"Stel de ovenstand in op","no":"Sett ovnsmodusen til","pl":"Ustaw tryb piekarnika na","ru":"Установить режим духовки на","sv":"Ställ in ugnsläget på"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.11.0"}')},5165:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"CO₂","nl":"CO₂","de":"CO₂","fr":"CO₂","it":"CO₂","sv":"CO₂","no":"CO₂","da":"CO₂","ru":"CO₂","pl":"CO₂","ko":"CO₂","ar":"ثاني أكسيد الكربون","es":"CO₂"},"units":{"en":"ppm","ru":"ч./млн.","ko":"ppm","no":"ppm","pl":"ppm","ar":"جزء في المليون","da":"ppm","de":"ppm","es":"ppm","fr":"ppm","it":"ppm","nl":"ppm","sv":"ppm"},"insights":true,"desc":{"en":"CO₂ in Parts-per-million (ppm)","nl":"CO₂-deeltjes per miljoen (ppm)","de":"CO₂ in Parts per million (ppm)","fr":"CO₂ en parties par million (ppm)","it":"Livello di CO₂ in parti per milione (ppm)","sv":"CO₂ i partiklar per miljon (ppm)","no":"CO₂ i partikler per million (ppm)","es":"CO₂ en partes por millón (ppm)","da":"CO₂ i partikler-per-million (ppm)","ru":"CO₂ в частях на миллион (ч./млн)","pl":"Stężenie dwutlenku węgla w części na milion (ppm)","ko":"CO₂ 백만분율(ppm)","ar":"ثاني أكسيد الكربون بالجزء في المليون (ppm)"},"chartType":"spline","decimals":2,"color":"#E02020","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_co2_changed","title":{"en":"The CO₂-level changed","nl":"Het CO₂-niveau is veranderd","de":"Der CO₂-Gehalt hat sich geändert","fr":"Le niveau de CO₂ a changé","it":"Il livello di CO₂ è cambiato","sv":"CO₂-nivån ändrades","no":"CO₂-nivået ble endret","es":"El nivel de CO₂ ha cambiado","da":"CO₂-niveauet har ændret sig","ru":"Уровень CO₂ изменился","pl":"Zmienił się poziom CO₂","ko":"CO₂ 수준이 변경되면","ar":"تغير مستوى ثاني أكسيد الكربون"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":20}]}]}}')},5237:(e,t,a)=>{"use strict";const r=a(1493),i=a(3532),n=a(6192),s=a(2130),o=a(8570),l=a(6346),d=a(8470);let u,m;try{u=a(Object(function(){var e=new Error("Cannot find module './lib/AIReviewer'");throw e.code="MODULE_NOT_FOUND",e}())),m=a(Object(function(){var e=new Error("Cannot find module './lib/AIReviewer/enums'");throw e.code="MODULE_NOT_FOUND",e}())),"function"!=typeof u&&(u=void 0),m&&"object"==typeof m&&Array.isArray(m.SEVERITIES)||(m=void 0)}catch(e){}e.exports.App=r,e.exports.Capability=i,e.exports.Device=n,e.exports.Energy=s,e.exports.Media=o,e.exports.Signal=l,e.exports.Util=d,e.exports.AIReviewer=u,e.exports.AIReviewerEnums=m,e.exports.getDeviceClasses=n.getClasses.bind(n),e.exports.getDeviceClass=n.getClass.bind(n),e.exports.getCapabilities=i.getCapabilities.bind(i),e.exports.getCapability=i.getCapability.bind(i),e.exports.hasCapability=i.hasCapability.bind(i),e.exports.getAppLocales=r.getLocales.bind(r),e.exports.getAppCategories=r.getCategories.bind(r),e.exports.getAppPermissions=r.getPermissions.bind(r),e.exports.getAppBrandColor=r.getBrandColor.bind(r),e.exports.getMediaCodecs=o.getCodecs.bind(o),e.exports.getCurrencies=s.getCurrencies.bind(s),e.exports.getBatteries=s.getBatteries.bind(s)},5248:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Stop","nl":"Stop","da":"Stop","it":"Stop","ko":"중지","pl":"Zatrzymaj","ru":"Остановить","sv":"Stopp","es":"Detener","fr":"Arrêter","no":"Stopp","ar":"إيقاف","de":"Stopp"},"type":"boolean","color":"#9033FC","getable":false,"setable":true,"uiComponent":"media","$flow":{"actions":[{"id":"stop","title":{"en":"Stop","nl":"Stop","da":"Stop","it":"Stop","ko":"중지","pl":"Zatrzymaj","ru":"Остановить","sv":"Stopp","es":"Detener","fr":"Arrêter","no":"Stopp","ar":"إيقاف","de":"Stopp"}}]},"minCompatibility":"12.2.0"}')},5326:e=>{"use strict";e.exports=function(e,t,a){var r=" ",i=e.level,n=e.dataLevel,s=e.schema[t],o=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+"/"+t,d=!e.opts.allErrors,u="data"+(n||""),m="valid"+i,p="errs__"+i,c=e.util.copy(e),g="";c.level++;var h="valid"+c.level,v=c.baseId,f="prevValid"+i,k="passingSchemas"+i;r+="var "+p+" = errors , "+f+" = false , "+m+" = false , "+k+" = null; ";var y=e.compositeRule;e.compositeRule=c.compositeRule=!0;var b=s;if(b)for(var w,z=-1,P=b.length-1;z0:e.util.schemaHasRules(w,e.RULES.all))?(c.schema=w,c.schemaPath=o+"["+z+"]",c.errSchemaPath=l+"/"+z,r+=" "+e.validate(c)+" ",c.baseId=v):r+=" var "+h+" = true; ",z&&(r+=" if ("+h+" && "+f+") { "+m+" = false; "+k+" = ["+k+", "+z+"]; } else { ",g+="}"),r+=" if ("+h+") { "+m+" = "+f+" = true; "+k+" = "+z+"; }";return e.compositeRule=c.compositeRule=y,r+=g+"if (!"+m+") { var err = ",!1!==e.createErrors?(r+=" { keyword: 'oneOf' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { passingSchemas: "+k+" } ",!1!==e.opts.messages&&(r+=" , message: 'should match exactly one schema in oneOf' "),e.opts.verbose&&(r+=" , schema: validate.schema"+o+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),r+=" } "):r+=" {} ",r+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&d&&(e.async?r+=" throw new ValidationError(vErrors); ":r+=" validate.errors = vErrors; return false; "),r+="} else { errors = "+p+"; if (vErrors !== null) { if ("+p+") vErrors.length = "+p+"; else vErrors = null; }",e.opts.allErrors&&(r+=" } "),r}},5345:(e,t)=>{var a;t=e.exports=Y,a="object"==typeof process&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?function(){var e=Array.prototype.slice.call(arguments,0);e.unshift("SEMVER"),console.log.apply(console,e)}:function(){},t.SEMVER_SPEC_VERSION="2.0.0";var r=256,i=Number.MAX_SAFE_INTEGER||9007199254740991,n=r-6,s=t.re=[],o=t.safeRe=[],l=t.src=[],d=0,u="[a-zA-Z0-9-]",m=[["\\s",1],["\\d",r],[u,n]];function p(e){for(var t=0;t)?=?)";var C=d++;l[C]=l[g]+"|x|X|\\*";var O=d++;l[O]=l[c]+"|x|X|\\*";var L=d++;l[L]="[v=\\s]*("+l[O]+")(?:\\.("+l[O]+")(?:\\.("+l[O]+")(?:"+l[b]+")?"+l[P]+"?)?)?";var T=d++;l[T]="[v=\\s]*("+l[C]+")(?:\\.("+l[C]+")(?:\\.("+l[C]+")(?:"+l[w]+")?"+l[P]+"?)?)?";var D=d++;l[D]="^"+l[j]+"\\s*"+l[L]+"$";var M=d++;l[M]="^"+l[j]+"\\s*"+l[T]+"$";var x=d++;l[x]="(?:^|[^\\d])(\\d{1,16})(?:\\.(\\d{1,16}))?(?:\\.(\\d{1,16}))?(?:$|[^\\d])";var $=d++;l[$]="(?:~>?)";var F=d++;l[F]="(\\s*)"+l[$]+"\\s+",s[F]=new RegExp(l[F],"g"),o[F]=new RegExp(p(l[F]),"g");var I=d++;l[I]="^"+l[$]+l[L]+"$";var N=d++;l[N]="^"+l[$]+l[T]+"$";var B=d++;l[B]="(?:\\^)";var H=d++;l[H]="(\\s*)"+l[B]+"\\s+",s[H]=new RegExp(l[H],"g"),o[H]=new RegExp(p(l[H]),"g");var V=d++;l[V]="^"+l[B]+l[L]+"$";var R=d++;l[R]="^"+l[B]+l[T]+"$";var U=d++;l[U]="^"+l[j]+"\\s*("+A+")$|^$";var q=d++;l[q]="^"+l[j]+"\\s*("+S+")$|^$";var G=d++;l[G]="(\\s*)"+l[j]+"\\s*("+A+"|"+l[L]+")",s[G]=new RegExp(l[G],"g"),o[G]=new RegExp(p(l[G]),"g");var W=d++;l[W]="^\\s*("+l[L]+")\\s+-\\s+("+l[L]+")\\s*$";var K=d++;l[K]="^\\s*("+l[T]+")\\s+-\\s+("+l[T]+")\\s*$";var J=d++;l[J]="(<|>)?=?\\s*\\*";for(var Z=0;Z<35;Z++)a(Z,l[Z]),s[Z]||(s[Z]=new RegExp(l[Z]),o[Z]=new RegExp(p(l[Z])));function Q(e,t){if(t&&"object"==typeof t||(t={loose:!!t,includePrerelease:!1}),e instanceof Y)return e;if("string"!=typeof e)return null;if(e.length>r)return null;if(!(t.loose?o[E]:o[_]).test(e))return null;try{return new Y(e,t)}catch(e){return null}}function Y(e,t){if(t&&"object"==typeof t||(t={loose:!!t,includePrerelease:!1}),e instanceof Y){if(e.loose===t.loose)return e;e=e.version}else if("string"!=typeof e)throw new TypeError("Invalid Version: "+e);if(e.length>r)throw new TypeError("version is longer than "+r+" characters");if(!(this instanceof Y))return new Y(e,t);a("SemVer",e,t),this.options=t,this.loose=!!t.loose;var n=e.trim().match(t.loose?o[E]:o[_]);if(!n)throw new TypeError("Invalid Version: "+e);if(this.raw=e,this.major=+n[1],this.minor=+n[2],this.patch=+n[3],this.major>i||this.major<0)throw new TypeError("Invalid major version");if(this.minor>i||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>i||this.patch<0)throw new TypeError("Invalid patch version");n[4]?this.prerelease=n[4].split(".").map((function(e){if(/^[0-9]+$/.test(e)){var t=+e;if(t>=0&&t=0;)"number"==typeof this.prerelease[a]&&(this.prerelease[a]++,a=-2);-1===a&&this.prerelease.push(0)}t&&(this.prerelease[0]===t?isNaN(this.prerelease[1])&&(this.prerelease=[t,0]):this.prerelease=[t,0]);break;default:throw new Error("invalid increment argument: "+e)}return this.format(),this.raw=this.version,this},t.inc=function(e,t,a,r){"string"==typeof a&&(r=a,a=void 0);try{return new Y(e,a).inc(t,r).version}catch(e){return null}},t.diff=function(e,t){if(ie(e,t))return null;var a=Q(e),r=Q(t),i="";if(a.prerelease.length||r.prerelease.length){i="pre";var n="prerelease"}for(var s in a)if(("major"===s||"minor"===s||"patch"===s)&&a[s]!==r[s])return i+s;return n},t.compareIdentifiers=ee;var X=/^[0-9]+$/;function ee(e,t){var a=X.test(e),r=X.test(t);return a&&r&&(e=+e,t=+t),e===t?0:a&&!r?-1:r&&!a?1:e0}function re(e,t,a){return te(e,t,a)<0}function ie(e,t,a){return 0===te(e,t,a)}function ne(e,t,a){return 0!==te(e,t,a)}function se(e,t,a){return te(e,t,a)>=0}function oe(e,t,a){return te(e,t,a)<=0}function le(e,t,a,r){switch(t){case"===":return"object"==typeof e&&(e=e.version),"object"==typeof a&&(a=a.version),e===a;case"!==":return"object"==typeof e&&(e=e.version),"object"==typeof a&&(a=a.version),e!==a;case"":case"=":case"==":return ie(e,a,r);case"!=":return ne(e,a,r);case">":return ae(e,a,r);case">=":return se(e,a,r);case"<":return re(e,a,r);case"<=":return oe(e,a,r);default:throw new TypeError("Invalid operator: "+t)}}function de(e,t){if(t&&"object"==typeof t||(t={loose:!!t,includePrerelease:!1}),e instanceof de){if(e.loose===!!t.loose)return e;e=e.value}if(!(this instanceof de))return new de(e,t);e=e.trim().split(/\s+/).join(" "),a("comparator",e,t),this.options=t,this.loose=!!t.loose,this.parse(e),this.semver===ue?this.value="":this.value=this.operator+this.semver.version,a("comp",this)}t.rcompareIdentifiers=function(e,t){return ee(t,e)},t.major=function(e,t){return new Y(e,t).major},t.minor=function(e,t){return new Y(e,t).minor},t.patch=function(e,t){return new Y(e,t).patch},t.compare=te,t.compareLoose=function(e,t){return te(e,t,!0)},t.rcompare=function(e,t,a){return te(t,e,a)},t.sort=function(e,a){return e.sort((function(e,r){return t.compare(e,r,a)}))},t.rsort=function(e,a){return e.sort((function(e,r){return t.rcompare(e,r,a)}))},t.gt=ae,t.lt=re,t.eq=ie,t.neq=ne,t.gte=se,t.lte=oe,t.cmp=le,t.Comparator=de;var ue={};function me(e,t){if(t&&"object"==typeof t||(t={loose:!!t,includePrerelease:!1}),e instanceof me)return e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease?e:new me(e.raw,t);if(e instanceof de)return new me(e.value,t);if(!(this instanceof me))return new me(e,t);if(this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease,this.raw=e.trim().split(/\s+/).join(" "),this.set=this.raw.split("||").map((function(e){return this.parseRange(e.trim())}),this).filter((function(e){return e.length})),!this.set.length)throw new TypeError("Invalid SemVer Range: "+this.raw);this.format()}function pe(e){return!e||"x"===e.toLowerCase()||"*"===e}function ce(e,t,a,r,i,n,s,o,l,d,u,m,p){return((t=pe(a)?"":pe(r)?">="+a+".0.0":pe(i)?">="+a+"."+r+".0":">="+t)+" "+(o=pe(l)?"":pe(d)?"<"+(+l+1)+".0.0":pe(u)?"<"+l+"."+(+d+1)+".0":m?"<="+l+"."+d+"."+u+"-"+m:"<="+o)).trim()}function ge(e,t,r){for(var i=0;i0){var n=e[i].semver;if(n.major===t.major&&n.minor===t.minor&&n.patch===t.patch)return!0}return!1}return!0}function he(e,t,a){try{t=new me(t,a)}catch(e){return!1}return t.test(e)}function ve(e,t,a,r){var i,n,s,o,l;switch(e=new Y(e,r),t=new me(t,r),a){case">":i=ae,n=oe,s=re,o=">",l=">=";break;case"<":i=re,n=se,s=ae,o="<",l="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(he(e,t,r))return!1;for(var d=0;d=0.0.0")),m=m||e,p=p||e,i(e.semver,m.semver,r)?m=e:s(e.semver,p.semver,r)&&(p=e)})),m.operator===o||m.operator===l)return!1;if((!p.operator||p.operator===o)&&n(e,p.semver))return!1;if(p.operator===l&&s(e,p.semver))return!1}return!0}de.prototype.parse=function(e){var t=this.options.loose?o[U]:o[q],a=e.match(t);if(!a)throw new TypeError("Invalid comparator: "+e);this.operator=a[1],"="===this.operator&&(this.operator=""),a[2]?this.semver=new Y(a[2],this.options.loose):this.semver=ue},de.prototype.toString=function(){return this.value},de.prototype.test=function(e){return a("Comparator.test",e,this.options.loose),this.semver===ue||("string"==typeof e&&(e=new Y(e,this.options)),le(e,this.operator,this.semver,this.options))},de.prototype.intersects=function(e,t){if(!(e instanceof de))throw new TypeError("a Comparator is required");var a;if(t&&"object"==typeof t||(t={loose:!!t,includePrerelease:!1}),""===this.operator)return a=new me(e.value,t),he(this.value,a,t);if(""===e.operator)return a=new me(this.value,t),he(e.semver,a,t);var r=!(">="!==this.operator&&">"!==this.operator||">="!==e.operator&&">"!==e.operator),i=!("<="!==this.operator&&"<"!==this.operator||"<="!==e.operator&&"<"!==e.operator),n=this.semver.version===e.semver.version,s=!(">="!==this.operator&&"<="!==this.operator||">="!==e.operator&&"<="!==e.operator),o=le(this.semver,"<",e.semver,t)&&(">="===this.operator||">"===this.operator)&&("<="===e.operator||"<"===e.operator),l=le(this.semver,">",e.semver,t)&&("<="===this.operator||"<"===this.operator)&&(">="===e.operator||">"===e.operator);return r||i||n&&s||o||l},t.Range=me,me.prototype.format=function(){return this.range=this.set.map((function(e){return e.join(" ").trim()})).join("||").trim(),this.range},me.prototype.toString=function(){return this.range},me.prototype.parseRange=function(e){var t=this.options.loose,r=t?o[K]:o[W];e=e.replace(r,ce),a("hyphen replace",e),e=e.replace(o[G],"$1$2$3"),a("comparator trim",e,o[G]),e=(e=e.replace(o[F],"$1~")).replace(o[H],"$1^");var i=t?o[U]:o[q],n=e.split(" ").map((function(e){return function(e,t){return a("comp",e,t),e=function(e,t){return e.trim().split(/\s+/).map((function(e){return function(e,t){a("caret",e,t);var r=t.loose?o[R]:o[V];return e.replace(r,(function(t,r,i,n,s){var o;return a("caret",e,t,r,i,n,s),pe(r)?o="":pe(i)?o=">="+r+".0.0 <"+(+r+1)+".0.0":pe(n)?o="0"===r?">="+r+"."+i+".0 <"+r+"."+(+i+1)+".0":">="+r+"."+i+".0 <"+(+r+1)+".0.0":s?(a("replaceCaret pr",s),o="0"===r?"0"===i?">="+r+"."+i+"."+n+"-"+s+" <"+r+"."+i+"."+(+n+1):">="+r+"."+i+"."+n+"-"+s+" <"+r+"."+(+i+1)+".0":">="+r+"."+i+"."+n+"-"+s+" <"+(+r+1)+".0.0"):(a("no pr"),o="0"===r?"0"===i?">="+r+"."+i+"."+n+" <"+r+"."+i+"."+(+n+1):">="+r+"."+i+"."+n+" <"+r+"."+(+i+1)+".0":">="+r+"."+i+"."+n+" <"+(+r+1)+".0.0"),a("caret return",o),o}))}(e,t)})).join(" ")}(e,t),a("caret",e),e=function(e,t){return e.trim().split(/\s+/).map((function(e){return function(e,t){var r=t.loose?o[N]:o[I];return e.replace(r,(function(t,r,i,n,s){var o;return a("tilde",e,t,r,i,n,s),pe(r)?o="":pe(i)?o=">="+r+".0.0 <"+(+r+1)+".0.0":pe(n)?o=">="+r+"."+i+".0 <"+r+"."+(+i+1)+".0":s?(a("replaceTilde pr",s),o=">="+r+"."+i+"."+n+"-"+s+" <"+r+"."+(+i+1)+".0"):o=">="+r+"."+i+"."+n+" <"+r+"."+(+i+1)+".0",a("tilde return",o),o}))}(e,t)})).join(" ")}(e,t),a("tildes",e),e=function(e,t){return a("replaceXRanges",e,t),e.split(/\s+/).map((function(e){return function(e,t){e=e.trim();var r=t.loose?o[M]:o[D];return e.replace(r,(function(t,r,i,n,s,o){a("xRange",e,t,r,i,n,s,o);var l=pe(i),d=l||pe(n),u=d||pe(s);return"="===r&&u&&(r=""),l?t=">"===r||"<"===r?"<0.0.0":"*":r&&u?(d&&(n=0),s=0,">"===r?(r=">=",d?(i=+i+1,n=0,s=0):(n=+n+1,s=0)):"<="===r&&(r="<",d?i=+i+1:n=+n+1),t=r+i+"."+n+"."+s):d?t=">="+i+".0.0 <"+(+i+1)+".0.0":u&&(t=">="+i+"."+n+".0 <"+i+"."+(+n+1)+".0"),a("xRange return",t),t}))}(e,t)})).join(" ")}(e,t),a("xrange",e),e=function(e,t){return a("replaceStars",e,t),e.trim().replace(o[J],"")}(e,t),a("stars",e),e}(e,this.options)}),this).join(" ").split(/\s+/);return this.options.loose&&(n=n.filter((function(e){return!!e.match(i)}))),n.map((function(e){return new de(e,this.options)}),this)},me.prototype.intersects=function(e,t){if(!(e instanceof me))throw new TypeError("a Range is required");return this.set.some((function(a){return a.every((function(a){return e.set.some((function(e){return e.every((function(e){return a.intersects(e,t)}))}))}))}))},t.toComparators=function(e,t){return new me(e,t).set.map((function(e){return e.map((function(e){return e.value})).join(" ").trim().split(" ")}))},me.prototype.test=function(e){if(!e)return!1;"string"==typeof e&&(e=new Y(e,this.options));for(var t=0;t":0===t.prerelease.length?t.patch++:t.prerelease.push(0),t.raw=t.format();case"":case">=":a&&!ae(a,t)||(a=t);break;case"<":case"<=":break;default:throw new Error("Unexpected operation: "+e.operator)}}));return a&&e.test(a)?a:null},t.validRange=function(e,t){try{return new me(e,t).range||"*"}catch(e){return null}},t.ltr=function(e,t,a){return ve(e,t,"<",a)},t.gtr=function(e,t,a){return ve(e,t,">",a)},t.outside=ve,t.prerelease=function(e,t){var a=Q(e,t);return a&&a.prerelease.length?a.prerelease:null},t.intersects=function(e,t,a){return e=new me(e,a),t=new me(t,a),e.intersects(t)},t.coerce=function(e){if(e instanceof Y)return e;if("string"!=typeof e)return null;var t=e.match(o[x]);return null==t?null:Q(t[1]+"."+(t[2]||"0")+"."+(t[3]||"0"))}},5354:(e,t,a)=>{"use strict";var r=a(8287).hp;const i=a(7177),n=200208670;async function s(e,t){const a=await i.promises.open(e,"r");try{const e=r.alloc(t),{bytesRead:i}=await a.read(e,0,t,0);if(it.size)throw new Error("Zigbee OTA header length exceeds file size");const o=56===r?a:await s(e,r);let l=0;const d=o.readUInt32LE(l);if(l+=4,d!==n)throw new Error("Invalid Zigbee OTA header identifier");const u=o.readUInt16LE(l);l+=2;const m=o.readUInt16LE(l);l+=2;const p=o.readUInt16LE(l);l+=2;const c=o.readUInt16LE(l);l+=2;const g=o.readUInt16LE(l);l+=2;const h=o.readUInt32LE(l);l+=4;const v=o.readUInt16LE(l);l+=2;const f=o.toString("ascii",l,l+32).replace(/\0+$/,"");l+=32;const k=o.readUInt32LE(l);l+=4;const y={fileSize:t.size,fileIdentifier:d,headerVersion:u,headerLength:m,fieldControl:p,manufacturerCode:c,imageType:g,fileVersion:h,zigbeeStackVersion:v,headerString:f,totalImageSize:k};if(1&p&&(y.securityCredentialVersion=o.readUInt8(l),l+=1),2&p&&(y.upgradeFileDestination=o.slice(l,l+8).toString("hex"),l+=8),4&p&&(y.minimumHardwareVersion=o.readUInt16LE(l),l+=2,y.maximumHardwareVersion=o.readUInt16LE(l),l+=2),mi.totalImageSize)throw new Error("Zigbee OTA header length exceeds total image size");if(i.totalImageSize!==i.fileSize)throw new Error("Zigbee OTA total image size does not match file size");if(void 0!==t){if("number"!=typeof t)throw new TypeError("manufacturerCode must be a number");if(i.manufacturerCode!==t)throw new Error("Zigbee OTA manufacturer code does not match")}if(void 0!==r){if("number"!=typeof r)throw new TypeError("imageType must be a number");if(i.imageType!==r)throw new Error("Zigbee OTA image type does not match")}if(void 0!==a){if("number"!=typeof a)throw new TypeError("fileVersion must be a number");if(i.fileVersion!==a)throw new Error("Zigbee OTA file version does not match")}return i}}},5366:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Channel down","nl":"Kanaal omlaag","de":"Kanal runter","fr":"Chane bas","it":"Canale verso il basso","sv":"Kanal ned","no":"Lavere kanal","es":"Bajar de canal","da":"Kanal ned","ru":"Канал вниз","pl":"Kanał w dół","ko":"채널 아래로","ar":"خفض قناة للأسفل"},"type":"boolean","color":"#9033FC","getable":false,"setable":true,"$flow":{"actions":[{"id":"channel_down","title":{"en":"One channel down","nl":"Eén kanaal omlaag","de":"Einen Kanal runter","fr":"Une châine vers le bas","it":"Un canale verso il basso","sv":"En kanal ned","no":"En kanal lavere","es":"Un canal más abajo","da":"En kanal ned","ru":"Один канал вниз","pl":"Jeden kanał w dół","ko":"채널 하나 아래로","ar":"قناة واحدة للأسفل"}}]},"uiComponent":"button"}')},5391:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Carbon filter level","nl":"Koolstoffilterniveau","da":"Niveau for kulfilter","it":"Livello filtro a carbone","ko":"카본 필터 상태","pl":"Poziom filtra węglowego","ru":"Уровень угольного фильтра","sv":"Kolfilternivå","es":"Nivel de filtro de carbono","fr":"Niveau du filtre à charbon","no":"Karbonfilternivå","ar":"مستوى فلتر الكربون","de":"Niveau des Kohlefilters"},"desc":{"en":"The level of degredation on the active carbon filter.","nl":"De mate van aantasting van het actieve koolstoffilter.","da":"Niveauet af nedbrydning på det aktive kulfilter.","it":"Il livello di degradazione del filtro a carbone attivo.","ko":"활성탄 필터의 백화 수준입니다.","pl":"Poziom degradacji filtra z węglem aktywnym.","ru":"Уровень снижения производительности фильтра с активированным углем.","sv":"Graden av nedbrytning på det aktiva kolfiltret.","es":"El nivel de degradación del filtro de carbón activo.","fr":"Le niveau de dégradation du filtre à charbon actif.","no":"Nedbrytingsnivået for filteret med aktivt kull.","ar":"مستوى التدهور في فلتر الكربون النشط.","de":"Der Verschleißgrad des Aktivkohlefilters."},"values":[{"id":"ok","title":{"en":"OK","nl":"OK","da":"OK","it":"OK","ko":"좋음","pl":"OK","ru":"Нормальный","sv":"OK","es":"Correcto","fr":"OK","no":"OK","ar":"جيد","de":"OK"}},{"id":"warning","title":{"en":"Warning","nl":"Waarschuwing","da":"Advarsel","it":"Attenzione","ko":"주의","pl":"Ostrzeżenie","ru":"Требующий внимания","sv":"Varning","es":"Advertencia","fr":"Avertissement","no":"Advarsel","ar":"تحذير","de":"Warnung"}},{"id":"critical","title":{"en":"Critical","nl":"Kritiek","da":"Kritisk","it":"Critico","ko":"교체 필요","pl":"Krytyczny","ru":"Критический","sv":"Kritisk","es":"Crítico","fr":"Critique","no":"Kritisk","ar":"حرج","de":"Kritisch"}}],"color":"#E02020","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"level_carbon_filter_changed","highlight":true,"title":{"en":"The carbon filter level changed to","nl":"Het koolstoffilterniveau is veranderd in","da":"Kulfilterniveauet blev ændret til","it":"Il livello del filtro al carbone è passato a","ko":"카본 필터 상태가 다음으로 변경되면","pl":"Poziom filtra węglowego zmienił się na","ru":"Уровень угольного фильтра изменился на","sv":"Kolfilternivån ändrades till","es":"El nivel del filtro de carbón ha cambiado a","fr":"Le niveau du filtre à charbon est passé à","no":"Karbonfilternivået ble endret til","ar":"تم تغيير مستوى فلتر الكربون إلى","de":"Das Niveau des Aktivkohlefilters wurde geändert auf"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"level_carbon_filter_is","title":{"en":"The carbon filter level !{{is|is not}}","nl":"Het koolstoffilterniveau !{{is|is niet}}","da":"Niveauet for kulfilteret !{{er|er ikke}}","it":"Il livello del filtro a carbone !{{è|non è}}","ko":"카본 필터 상태가 다음!{{이면|이 아니면}}","pl":"Poziom filtra węglowego !{{jest|nie jest}}","ru":"Уровень угольного фильтра !{{|не}}","sv":"Kolfilternivån !{{är|är inte}}","es":"El nivel del filtro de carbono !{{es|no es}}","fr":"Le niveau du filtre à charbon !{{est|n\'est pas}}","no":"Karbonfilternivået !{{er|er ikke}}","ar":"مستوى فلتر الكربون !{{هو|ليس}}","de":"Das Niveau des Aktivkohlefilters !{{ist|ist nicht}}"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.2.0"}')},5395:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Thermostat","nl":"Thermostaat","de":"Thermostat","fr":"Thermostat","it":"Termostato","sv":"Termostat","no":"Termostat","es":"Termostato","da":"Termostat","ru":"Термостат","pl":"Termostat","ko":"온도 조절 장치","ar":"ثرموستات"},"description":{"en":"Use this device class for thermostats, either for the entire home or radiator-mounted, usually together with the `measure_temperature`, `target_temperature` and `thermostat_mode` capabilities.","de":"Nutze diese Geräteklasse für Thermostate, entweder für das gesamte Heim oder pro Heizung - normalerweise zusammen mit den `measure_temperature`-, `target_temperature`- und `thermostat_mode`-Fähigkeiten.","fr":"Utilisez cette classe d\'appareil pour les thermostats, soit pour toute la maison soit montés sur radiateurs, généralemebnt avec les capacités `measure_temperature`, `target_temperature` et `thermostat_mode`.","it":"Utilizza questa classe di dispositivi per i termostati, sia quelli per l\'intera casa che quelli montati sul radiatore, solitamente insieme alle funzionalità `measure_temperature`,`target_temperature` e `thermostat_mode`.","sv":"Använd den här enhetsklassen för termostater, antingen för hela hemmet eller elementmonterade, oftast tillsammans med funktionerna `measure_temperature`, `target_temperature` och `thermostat_mode`.","no":"Bruk denne enhetsklassen for termostater, enten for hele hjemmet eller monterte på varmeelement, ofte sammen med funksjonene `measure_temperature`, `target_temperature` og `thermostat_mode`.","es":"Utiliza esta clase de dispositivo para los termostatos, tanto los de toda la casa como los montados en los radiadores, generalmente junto con las capacidades `measure_temperature`, `target_temperature` y `thermostat_mode`.","da":"Brug denne enhedsklasse til termostater, enten til hele hjemmet eller på radiatorer, normalt sammen med `measure_temperature`, `target_temperature` og `thermostat_mode` funktionerne.","ru":"Используйте этот класс устройств для термостатов для всего дома или для термостатов на радиаторах, обычно вместе с функциями `measure_temperature`, `target_temperature` и `thermostat_mode`.","pl":"Użyj tej klasy urządzeń dla termostatów, zarówno dla całego domu, jak i urządzeń podłączanych do kaloryferów; zwykle razem ze zdolnościami `measure_temperature`, `target_temperature` oraz `thermostat_mode`.","ko":"이 디바이스 클래스는 집 전체 또는 특정 라디에이터의 온도를 조절하고 보통 \'measure_temperature\', \'target_temperature\', \'thermostat_mode\' 기능을 갖춘 온도조절기에 사용합니다.","ar":"استخدم فئة الجهاز هذه لأجهزة الثرموستات، سواء كانت للمنزل بأكمله أو مثبتة على الرادياتير، عادةً مع إمكانيات \'measure_temperature\'، \'target_temperature\' و\'thermostat_mode\'.","nl":"Gebruik deze apparaatklasse voor thermostaten, hetzij voor het hele huis of op een radiator, meestal samen met de opties \'measure_temperature\', \'target_temperature\' en \'thermostat_mode\'."}}')},5399:(e,t,a)=>{"use strict";try{const t=a(9416),r=a(5560),i=a(2977),n=a(3272);t&&i&&i.promisify&&(e.exports.openAsync=i.promisify(t.open),e.exports.closeAsync=i.promisify(t.close),e.exports.readAsync=i.promisify(t.read),e.exports.statAsync=i.promisify(t.stat),e.exports.readFileAsync=i.promisify(t.readFile),e.exports.readDirAsync=i.promisify(t.readdir),e.exports.lstatAsync=i.promisify(t.lstat),e.exports.imageSizeAsync=i.promisify(n)),r&&(e.exports.join=r.join,e.exports.extname=r.extname,e.exports.basename=r.basename,e.exports.dirname=r.dirname)}catch(e){}e.exports.toArray=function(e){return null!=e?Array.isArray(e)?e:[e]:[]}},5446:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Fryer","da":"Frituregryde","de":"Fritteuse","es":"Freidora","fr":"Friteuse","it":"Friggitrice","ko":"프라이어","nl":"Friteuse","no":"Frityrkoker","pl":"Frytkownica","ru":"Фритюрница","sv":"Fritös","ar":"مقلاة"},"description":{"en":"Use this device class for fryers.","da":"Brug denne enhedsklasse til frituregryder.","de":"Verwenden Sie diese Geräteklasse für Friteusen.","es":"Utiliza esta clase de dispositivo para freidoras.","fr":"Utilisez cette classe d\'appareils pour les friteuses.","it":"Utilizza questa classe di dispositivi per le friggitrici.","ko":"이 디바이스 클래스는 튀김기 등 프라이어에 사용합니다.","nl":"Gebruik deze apparaatklasse voor friteuses.","no":"Bruk denne enhetsklassen for frityrkokere.","pl":"Tej klasy urządzeń należy używać w przypadku frytkownic.","ru":"Используйте этот класс устройств для фритюрниц.","sv":"Använd den här enhetsklassen för fritöser.","ar":"استخدم فئة الجهاز هذه للمقالي."},"minCompatibility":"12.0.0"}')},5493:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Minimum target temperature","nl":"Minimale gewenste temperatuur","da":"Minimum måltemperatur","it":"Temperatura target minima","ko":"최저 희망 온도","pl":"Minimalna temperatura docelowa","ru":"Минимальная заданная температура","sv":"Lägsta måltemperatur","es":"Temperatura mínima deseada","fr":"Température minimale cible","no":"Minimum ønsket temperatur","ar":"الحد الأدنى لدرجة الحرارة المستهدفة","de":"Minimale Zieltemperatur"},"units":{"en":"°C","nl":"°C","da":"°C","it":"°C","ko":"°C","pl":"°C","ru":"°C","sv":"°C","es":"°C","fr":"°C","no":"°C","ar":"درجة مئوية","de":"°C"},"desc":{"en":"The low end of the temperature setpoint in degrees Celsius.","nl":"De ondergrens van het instelpunt voor temperatuur in graden Celsius.","da":"Den lave ende af temperaturindstillingspunktet i Celsius.","it":"Il setpoint minimo di temperatura in gradi Celsius.","ko":"섭씨 도 단위의 온도 설정값 최소치입니다.","pl":"Dolna granica wartości zadanej temperatury w stopniach Celsjusza.","ru":"Нижний предел уставки температуры в градусах Цельсия.","sv":"Den nedre delen av temperaturbörvärdet i grader Celsius.","es":"El valor inferior de ajuste de la temperatura en grados centígrados.\\n","fr":"Le niveau minimal de la température en degrés Celsius.","no":"Minimum ønsket temperaturinnstilling i grader Celsius.","ar":"الحد الأدنى لدرجة الحرارة المستهدفة بالدرجات المئوية.","de":"Das untere Ende des Temperatursollwerts in Grad Celsius."},"insights":true,"chartType":"stepLine","decimals":2,"min":4,"max":35,"color":"#FA6400","getable":true,"setable":true,"uiComponent":"slider","$flow":{"triggers":[{"id":"target_temperature_min_changed","title":{"en":"The minimum target temperature has changed","nl":"De minimale gewenste temperatuur is veranderd","da":"Minimum måltemperatur har ændret sig","it":"La temperatura target minima è cambiata","ko":"최저 희망 온도가 변경되면","no":"Minimum ønsket temperatur er endret","pl":"Zmieniła się minimalna temperatura docelowa","ru":"Минимальная заданная температура изменена","sv":"Den lägsta måltemperaturen har ändrats","es":"La temperatura mínima deseada ha cambiado","fr":"La température minimale cible a changé","ar":"تم تغيير الحد الأدنى لدرجة الحرارة المستهدفة","de":"Die minimale Zieltemperatur wurde geändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":20}]}],"actions":[{"id":"set_target_temperature_min","title":{"en":"Set the minimum target temperature","nl":"De minimale gewenste temperatuur instellen","da":"Indstil minimum måltemperatur","it":"Imposta la temperatura target minima","ko":"최저 희망 온도 설정","pl":"Ustaw minimalną temperaturę docelową","ru":"Установить минимальную заданную температуру","sv":"Ställ in lägsta önskade temperatur","es":"Ajustar la temperatura mínima deseada","fr":"Définir la température minimale cible","no":"Sett minimum ønsket temperatur","ar":"ضبط الحد الأدنى لدرجة الحرارة المستهدفة","de":"Einstellen der minimalen Zieltemperatur"},"args":[{"name":"target_temperature_min","type":"range","min":4,"max":35,"step":0.5,"example":20}]}]},"minCompatibility":"12.2.0"}')},5560:()=>{},5597:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Fridge & Freezer","da":"Køleskab og fryser","de":"Kühl- und Gefrierschrank","es":"Frigorífico con congelador","fr":"Réfrigérateur et congélateur","it":"Frigorifero e congelatore","ko":"냉장고 겸 냉동고","nl":"Koelkast & vriezer","no":"Kjøleskap og fryser","pl":"Lodówka i zamrażarka","ru":"Холодильник и морозильная камера","sv":"Kyl och frys","ar":"ثلاجة ومجمد"},"description":{"en":"Use this device class for any kind of refrigerator that also has a freezer.","da":"Brug denne enhedsklasse til enhver form for køleskab, der også har en fryser.","de":"Verwenden Sie diese Geräteklasse für jede Art von Kühlschrank, in den auch ein Gefriergerät integriert ist.","es":"Utiliza esta clase de dispositivo para cualquier tipo de frigorífico que contenga una zona independiente de congelación.","fr":"Utilisez cette classe d\'appareils pour tout type de réfrigérateur qui possède également un congélateur.","it":"Utilizza questa classe di dispositivi per qualsiasi tipo di frigorifero dotato anche di congelatore.","ko":"이 디바이스 클래스는 냉동고 기능을 갖춘 모든 종류의 냉장고에 사용합니다.","nl":"Gebruik deze apparaatklasse voor elke soort koelkast die ook een vriezer heeft.","no":"Bruk denne enhetsklassen for alle slags kjøleskap som også har fryser.","pl":"Ta klasa urządzeń jest przeznaczona do każdego rodzaju lodówki z zamrażalnikiem.","ru":"Используйте этот класс устройств для любого холодильника, в котором также есть морозильная камера.","sv":"Använd den här enhetsklassen för alla typer av kylskåp som också har en frys.","ar":"استخدم فئة الجهاز هذه لأي نوع من الثلاجات التي تحتوي أيضًا على مجمد."},"minCompatibility":"12.0.0"}')},5619:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Battery","da":"Batteri","de":"Batterie","es":"Batería","fr":"Batterie","it":"Batteria","ko":"배터리","nl":"Batterij","no":"Batteri","pl":"Bateria","ru":"Аккумулятор","sv":"Batteri","ar":"بطارية"},"description":{"en":"Use this device for batteries, e.g. home battery storage.","da":"Brug denne enhedsklasse til batterier, f.eks. til opbevaring af hjemmebatterier.","de":"Verwenden Sie diese Geräteklasse für Batterien, z. B. für den Heimbatteriespeicher.","es":"Utiliza esta clase de dispositivo para baterías (por ej., almacenamiento doméstico de pilas y baterías).","fr":"Utilisez cette classe d\'appareils pour les batteries, par exemple pour le stockage des batteries domestiques.","it":"Utilizza questa classe di dispositivi per le batterie, es. accumulatore domestico.","ko":"이 디바이스 클래스는 가정용 배터리 스토리지 등 배터리류에 사용합니다.","nl":"Gebruik deze apparaatklasse voor batterijen, bijvoorbeeld voor thuisopslag van batterijen.","no":"Bruk denne enhetsklassen for batterier, f.eks. batterilagringsløsninger hjemme.","pl":"Tego urządzenia należy używać do baterii, np. do przechowywania baterii w domu.","ru":"Используйте этот класс устройств для аккумуляторов, например, для домашних накопителей энергии.","sv":"Använd den här enhetsklassen för batterier, t.ex. för batterilagring i hemmet.","ar":"استخدم هذا الجهاز للبطاريات، على سبيل المثال تخزين البطاريات المنزلية."},"minCompatibility":"12.0.0"}')},5633:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Power Alarm","nl":"Stroomwaarschuwing","da":"Strømalarm","it":"Allarme alimentazione","ko":"전원 감지","no":"Strømalarm","pl":"Alarm zasilania","ru":"Сигнал питания","sv":"Strömlarm","es":"Alarma de suministro eléctrico","fr":"Alarme d\'alimentation électrique","ar":"إنذار الطاقة","de":"Stromalarm"},"titleShort":{"en":"Power","nl":"Stroom","da":"Strøm","it":"Alimentazione","ko":"전력","no":"Strøm","pl":"Moc","ru":"Питание","sv":"Ström","es":"Potencia","fr":"Alimentation électrique","ar":"الطاقة","de":"Leistung"},"desc":{"en":"True when power is detected.","nl":"Wordt geactiveerd wanneer stroom wordt gedetecteerd.","da":"Sandt, når der registreres strøm.","it":"Vero quando viene rilevata l\'alimentazione.","ko":"전원이 감지되면 참입니다.","no":"Sann når strøm registreres.","pl":"Prawda, gdy wykryte jest zasilanie.","ru":"Значение «истина» при обнаружении питания.","sv":"Sant när strömförsörjning detekteras.","es":"Activado cuando se detecta suministro eléctrico.","fr":"Se déclenche lorsque une alimentation électrique est détectée.","ar":"صحيح عند اكتشاف طاقة.","de":"Wahr, wenn Strom erkannt wird."},"insights":true,"insightsTitleTrue":{"en":"Power alarm turned on","nl":"Stroomwaarschuwing geactiveerd","da":"Strømalarm slået til","it":"Allarme alimentazione acceso","ko":"전원 감지됨","no":"Strømalarm aktivert","pl":"Alarm zasilania włączony","ru":"Сигнал питания включен","sv":"Strömlarm aktiverat","es":"Alarma de suministro eléctrico activada","fr":"Alarme d\'alimentation électrique activée","ar":"تم تشغيل إنذار الطاقة","de":"Stromalarm ist aktiviert"},"insightsTitleFalse":{"en":"Power alarm turned off","nl":"Stroomwaarschuwing gedeactiveerd","da":"Strømalarm slået fra","it":"Allarme alimentazione spento","ko":"전원 없음","no":"Strømalarm deaktivert","pl":"Alarm zasilania wyłączony","ru":"Сигнал питания выключен","sv":"Strömlarm inaktiverat","es":"Alarma de suministro eléctrico desactivada","fr":"Alarme d\'alimentation électrique désactivée","ar":"تم إيقاف إنذار الطاقة","de":"Stromalarm ausgeschaltet"},"color":"#6DD400","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_power_true","highlight":true,"title":{"en":"The power alarm turned on","nl":"De stroomwaarschuwing is geactiveerd","da":"Strømalarmen slået til","it":"L\'allarme alimentazione si è acceso","ko":"전원이 감지되면","no":"Strømalarmen ble aktivert","pl":"Włączył się alarm zasilania","ru":"Сигнал питания включен","sv":"Strömlarmet aktiverat","es":"La alarma de suministro eléctrico está activada","fr":"L\'alarme d\'alimentation électrique s\'est activée","ar":"تم تشغيل إنذار الطاقة","de":"Der Stromalarm ist aktiviert"}},{"id":"alarm_power_false","title":{"en":"The power alarm turned off","nl":"De stroomwaarschuwing is gedeactiveerd","da":"Strømalarmen slået fra","it":"L\'allarme alimentazione si è spento","ko":"전원이 없으면","no":"Strømalarmen ble deaktivert","pl":"Wyłączył się alarm zasilania","ru":"Сигнал питания выключен","sv":"Strömlarmet inaktiverat","es":"La alarma de suministro eléctrico está desactivada","fr":"L\'alarme d\'alimentation électrique s\'est désactivée","ar":"تم إيقاف إنذار الطاقة","de":"Der Stromalarm wurde ausgeschaltet"}}],"conditions":[{"id":"alarm_power","title":{"en":"The power alarm is !{{on|off}}","nl":"De stroomwaarschuwing is !{{geactiveerd|gedeactiveerd}}","da":"Strømalarmen er !{{tændt|slukket}}","it":"L\'allarme alimentazione è !{{acceso|spento}}","ko":"전원이 !{{감지되면|없으면}}","no":"Strømalarmen er !{{på|av}}","pl":"Alarm zasilania jest !{{włączony|wyłączony}}","ru":"Сигнал питания !{{включен|выключен}}","sv":"Strömlarmet är !{{på|av}}","es":"La alarma de suministro eléctrico está !{{activada|desactivada}}","fr":"L\'alarme d\'alimentation électrique est !{{activée|désactivée}}","ar":"إنذار الطاقة !{{يعمل|لا يعمل}}","de":"Der Stromalarm ist !{{an|aus}}"}}]},"minCompatibility":"12.2.0"}')},5643:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Power Boost","ar":"تعزيز الطاقة","da":"Strøm-boost","de":"Power Boost","es":"Aumento de potencia","fr":"Power Boost","it":"Aumento di potenza","ko":"전력 부스트","nl":"Extra vermogen","no":"Effektboost","pl":"Zwiększenie mocy","ru":"Усиление мощности","sv":"Effektökning"},"desc":{"en":"When enabled, power boost mode is active. The device may use more energy to reach its target.","ar":"عند التمكين، يكون وضع تعزيز الطاقة نشطًا. وقد يستخدم الجهاز المزيد من الطاقة للوصول إلى هدفه.","da":"Når den er aktiveret, er strøm-boost-tilstand aktiv. Enheden kan bruge mere energi på at nå sit mål.","de":"Wenn aktiviert, ist der Power Boost-Modus eingeschaltet. Das Gerät verbraucht möglicherweise mehr Energie, um das Ziel zu erreichen.","es":"Cuando está activado, el modo de aumento de potencia está activo. El dispositivo puede emplear más energía para alcanzar su objetivo.","fr":"Lorsque cette option est activée, Power Boost est activé. L\'appareil peut consommer davantage d\'énergie pour atteindre son objectif.","it":"Quando è abilitata, la modalità di aumento di potenza è attiva. Il dispositivo può utilizzare più energia per raggiungere l\'obiettivo.","ko":"활성화하면 전력 부스트가 활성 상태가 됩니다. 제품이 목표에 도달하기 위해 더 많은 에너지를 사용할 수 있습니다.","nl":"Wanneer ingeschakeld, is de stand met extra vermogen actief. Het apparaat kan meer energie gebruiken om zijn doel te bereiken.","no":"Når dette er aktivert, er effektboostmodusen aktiv. Enheten kan bruke mer energi for å nå målet.","pl":"Po włączeniu aktywny jest tryb zwiększenia mocy. Urządzenie może zużywać więcej energii, aby osiągnąć docelowe parametry.","ru":"При включении активируется режим усиления мощности. Устройство может использовать больше энергии для достижения поставленной цели.","sv":"När det är aktiverat är energiökningsläget aktivt. Enheten kan använda mer energi för att nå sitt mål."},"color":"#6DD400","getable":true,"setable":true,"insights":true,"insightsTitleTrue":{"en":"Power Boost enabled","ar":"تم تمكين تعزيز الطاقة","da":"Strøm-boost aktiveret","de":"Power Boost aktiviert","es":"Aumento de potencia activado","fr":"Power Boost activé","it":"Aumento di potenza abilitato","ko":"전력 부스트 활성화됨","nl":"Extra vermogen ingeschakeld","no":"Effektboost aktivert","pl":"Zwiększenie mocy włączone","ru":"Усиление мощности включено","sv":"Energiökning aktiverat"},"insightsTitleFalse":{"en":"Power Boost disabled","ar":"تم تعطيل تعزيز الطاقة","da":"Strøm-boost deaktiveret","de":"Power Boost deaktiviert","es":"Aumento de potencia desactivado","fr":"Power Boost désactivé","it":"Aumento di potenza disabilitato","ko":"전력 부스트 비활성화됨","nl":"Extra vermogen uitgeschakeld","no":"Effektboost deaktivert","pl":"Zwiększenie mocy wyłączone","ru":"Усиление мощности выключено","sv":"Energiökning inaktiverat"},"uiComponent":"toggle","uiQuickAction":false,"$flow":{"triggers":[{"id":"power_boost_true","highlight":true,"title":{"en":"Power boost enabled","ar":"تم تمكين تعزيز الطاقة","da":"Strøm-boost aktiveret","de":"Power Boost aktiviert","es":"Aumento de potencia activado","fr":"Power Boost activé","it":"Aumento di potenza abilitato","ko":"전력 부스트가 활성화되면","nl":"Extra vermogen ingeschakeld","no":"Effektboost aktivert","pl":"Zwiększenie mocy włączone","ru":"Усиление мощности включено","sv":"Energiökning aktiverat"}},{"id":"power_boost_false","highlight":true,"title":{"en":"Power boost disabled","ar":"تم تعطيل تعزيز الطاقة","da":"Strøm-boost deaktiveret","de":"Power Boost deaktiviert","es":"Aumento de potencia desactivado","fr":"Power Boost désactivé","it":"Aumento di potenza disattivato","ko":"전력 부스트가 비활성화되어 있으면","nl":"Extra vermogen uitgeschakeld","no":"Effektboost deaktivert","pl":"Zwiększenie mocy wyłączone","ru":"Усиление мощности отключено","sv":"Effektökning inaktiverat"}}],"conditions":[{"id":"power_boost","title":{"en":"Power boost is !{{enabled|disabled}}","ar":"تعزيز الطاقة !{{ممكّن|معطّل}}","da":"Strøm-boost er!{{enabled|disabled}}","de":"Power Boost ist !{{aktiviert|deaktiviert}}","es":"El aumento de potencia está !{{activado|desactivado}}","fr":"Power Boost est !{{activé|désactivé}}","it":"L\'aumento di potenza è !{{abilitato|disabilitato}}","ko":"전력 부스트가 !{{활성화|비활성화}}되어 있으면","nl":"Extra vermogen is !{{ingeschakeld|uitgeschakeld}}","no":"Effektboost er !{{aktivert|deaktivert}}","pl":"Zwiększenie mocy jest !{{włączone|wyłączone}}","ru":"Усиление мощности !{{включено|выключено}}","sv":"Effektökning är !{{aktiverad|inaktiverad}}"}}],"actions":[{"id":"enable","highlight":true,"title":{"en":"Enable power boost","ar":"تمكين تعزيز الطاقة","da":"Aktiver strøm-boost","de":"Power Boost aktivieren","es":"Activar aumento de potencia","fr":"Activer Power Boost","it":"Abilita aumento di potenza","ko":"전력 부스트 활성화","nl":"Extra vermogen inschakelen","no":"Aktiver effektboost","pl":"Włącz zwiększenie mocy","ru":"Включить усиление мощности","sv":"Aktivera effektökning"}},{"id":"disable","highlight":true,"title":{"en":"Disable power boost","ar":"تعطيل تعزيز الطاقة","da":"Deaktiver strøm-boost","de":"Power Boost deaktivieren","es":"Desactivar aumento de potencia","fr":"Désactiver Power Boost","it":"Disabilita aumento di potenza","ko":"전력 부스트 비활성화","nl":"Extra vermogen uitschakelen","no":"Deaktiver effektboost","pl":"Wyłącz zwiększenie mocy","ru":"Отключить усиление мощности","sv":"Inaktivera effektökning"}},{"id":"toggle","title":{"en":"Toggle power boost","ar":"تبديل تعزيز الطاقة","da":"Slå strøm-boost til/fra","de":"Power Boost ein-/ausschalten","es":"Conmutador de aumento de potencia","fr":"Activer/Désactiver Power Boost","it":"Attiva/disattiva aumento di potenza","ko":"전력 부스트 토글","nl":"Extra vermogen in-/uitschakelen","no":"Slå effektboost på/av","pl":"Przełącz zwiększenie mocy","ru":"Включить/выключить усиление мощности","sv":"Växla effektökning"}}]},"minCompatibility":"12.11.0"}')},5674:e=>{"use strict";e.exports=function(e,t,a){var r=" ",i=e.level,n=e.dataLevel,s=e.schema[t],o=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+"/"+t,d=!e.opts.allErrors,u="data"+(n||""),m="valid"+i,p="errs__"+i,c=e.util.copy(e);c.level++;var g="valid"+c.level,h="i"+i,v=c.dataLevel=e.dataLevel+1,f="data"+v,k=e.baseId,y=e.opts.strictKeywords?"object"==typeof s&&Object.keys(s).length>0:e.util.schemaHasRules(s,e.RULES.all);if(r+="var "+p+" = errors;var "+m+";",y){var b=e.compositeRule;e.compositeRule=c.compositeRule=!0,c.schema=s,c.schemaPath=o,c.errSchemaPath=l,r+=" var "+g+" = false; for (var "+h+" = 0; "+h+" < "+u+".length; "+h+"++) { ",c.errorPath=e.util.getPathExpr(e.errorPath,h,e.opts.jsonPointers,!0);var w=u+"["+h+"]";c.dataPathArr[v]=h;var z=e.validate(c);c.baseId=k,e.util.varOccurences(z,f)<2?r+=" "+e.util.varReplace(z,f,w)+" ":r+=" var "+f+" = "+w+"; "+z+" ",r+=" if ("+g+") break; } ",e.compositeRule=c.compositeRule=b,r+=" if (!"+g+") {"}else r+=" if ("+u+".length == 0) {";var P=P||[];P.push(r),r="",!1!==e.createErrors?(r+=" { keyword: 'contains' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: {} ",!1!==e.opts.messages&&(r+=" , message: 'should contain a valid item' "),e.opts.verbose&&(r+=" , schema: validate.schema"+o+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),r+=" } "):r+=" {} ";var _=r;return r=P.pop(),!e.compositeRule&&d?e.async?r+=" throw new ValidationError(["+_+"]); ":r+=" validate.errors = ["+_+"]; return false; ":r+=" var err = "+_+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+=" } else { ",y&&(r+=" errors = "+p+"; if (vErrors !== null) { if ("+p+") vErrors.length = "+p+"; else vErrors = null; } "),e.opts.allErrors&&(r+=" } "),r}},5686:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Bin Missing Alarm","nl":"Afvalbak-ontbreekt-alarm","da":"Papirkurv mangler alarm","es":"Alarma de depósito no instalado","fr":"Alarme de poubelle manquante","it":"Allarme cestino mancante","ko":"먼지통 미장착 감지","pl":"Alarm braku kosza","ru":"Сигнал об отсутствии контейнера","sv":"Larm om att behållaren saknas","no":"Alarm om manglende støvbeholder","ar":"إنذار فقد سلة المهملات","de":"Alarm bei fehlendem Behälter"},"titleShort":{"en":"Bin Missing","nl":"Afvalbak ontbreekt","da":"Papirkurv mangler","es":"Depósito no instalado","fr":"Poubelle manquante","it":"Cestino mancante","ko":"먼지통 누락","pl":"Brak kosza","ru":"Контейнер отсутствует","sv":"Behållaren saknas","no":"Manglende støvbeholder","ar":"سلة المهملات غير موجودة","de":"Behälter fehlt"},"desc":{"en":"True when the bin is missing.","nl":"Wordt geactiveerd wanneer de afvalbak ontbreekt.","da":"Sandt, når papirkurven mangler","es":"Activado cuando el cubo no está presente.","fr":"Se déclenche lorsque la poubelle est manquante.","it":"Vero quando manca il contenitore.","ko":"휴지통이 누락되면 참입니다.","pl":"Prawda, gdy brakuje kosza.","ru":"Значение «истина», когда контейнер отсутствует.","sv":"Sant när behållaren saknas.","no":"Sann når støvbeholderen mangler.","ar":"صحيح عندما تكون سلة المهملات مفقودة.","de":"Wahr, wenn der Behälter fehlt."},"insights":true,"insightsTitleTrue":{"en":"The bin was removed","nl":"De afvalbak was verwijderd","da":"Papirkurv blev fjernet","es":"El cubo se ha retirado","fr":"La poubelle a été enlevée","it":"Il contenitore è stato rimosso","ko":"먼지통 없음","pl":"Kosz został usunięty","ru":"Контейнер был удален","sv":"Behållaren togs bort","no":"Støvbeholderen ble fjernet","ar":"تمت إزالة سلة المهملات","de":"Der Behälter wurde entfernt"},"insightsTitleFalse":{"en":"The bin was placed","nl":"De afvalbak was geplaatst","da":"Papirkurven blev placeret","es":"El cubo se ha colocado","fr":"La poubelle a été placée","it":"Il contenitore è stato posizionato","ko":"먼지통 장착됨","pl":"Kosz został umieszczony","ru":"Контейнер был размещен","sv":"Behållaren placerades","no":"Støvbeholderen ble satt på plass","ar":"تم وضع سلة المهملات","de":"Der Behälter wurde platziert"},"color":"#9033FC","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_bin_missing_true","highlight":true,"title":{"en":"The bin was removed","nl":"De afvalbak was verwijderd","da":"Papirkurven blev fjernet","es":"El cubo se ha retirado","fr":"La poubelle a été enlevée","it":"Il contenitore è stato rimosso","ko":"먼지통이 없으면","pl":"Kosz został usunięty","ru":"Контейнер был удален","sv":"Behållaren togs bort","no":"Støvbeholderen ble fjernet","ar":"تمت إزالة سلة المهملات","de":"Der Behälter wurde entfernt"}},{"id":"alarm_bin_missing_false","title":{"en":"The bin was placed","nl":"De afvalbak was geplaatst","da":"Papirkurven blev placeret","es":"El cubo se ha colocado","fr":"La corbeille a été placée","it":"Il contenitore è stato posizionato","ko":"먼지통이 장착되면","pl":"Kosz został umieszczony","ru":"Контейнер был размещен","sv":"Behållaren placerades","no":"Støvbeholderen ble satt på plass","ar":"تم وضع سلة المهملات","de":"Der Behälter wurde platziert"}}],"conditions":[{"id":"alarm_bin_missing","title":{"en":"The bin is !{{missing|present}}","nl":"De afvalbak !{{ontbreekt|staat er}}","da":"Papirkurven !{{mangler|er til stede}}","es":"Cubo !{{no presente|presente}}","it":"Il contenitore è !{{assente|presente}}","ko":"먼지통이 !{{없으면|장착되면}}","pl":"Kosz jest !{{brakujący|obecny}}","ru":"Контейнер !{{отсутствует|в наличии}}","sv":"Behållaren !{{saknas|är på plats}}","fr":"La poubelle est !{{manquante|présente}}","no":"Støvbeholderen !{{mangler|mangler ikke}}","ar":"سلة المهملات !{{مفقودة|موجودة}}","de":"Der Behälter !{{fehlt|ist vorhanden}}"}}]},"minCompatibility":"12.2.0"}')},5757:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Washer & Dryer","da":"Vaskemaskine og tørretumbler","de":"Waschmaschine mit Trockner","es":"Lavadora-secadora","fr":"Lave-linge et sèche-linge","it":"Lavatrice e asciugatrice","ko":"세탁기 겸 건조기","nl":"Wasmachine & droger","no":"Vaskemaskin og tørketrommel","pl":"Pralko-suszarka","ru":"Стиральная машина и сушилка","sv":"Tvättmaskin och torktumlare","ar":"غسالة ومجفف"},"description":{"en":"Use this device class for any kind of washer and dryer combination.","da":"Brug denne enhedsklasse til enhver form for kombination af vaskemaskine og tørretumbler.","de":"Verwenden Sie diese Geräteklasse für jede Art von Waschmaschinen- und Trocknerkombis.","es":"Utiliza esta clase de dispositivo para cualquier equipo que tenga funciones de lavadora y secadora.","fr":"Cette classe d\'appareils peut être utilisée pour n\'importe quelle combinaison de lave-linge et de sèche-linge.","it":"Utilizza questa classe di dispositivi per qualsiasi tipo di combinazione di lavatrice e asciugatrice.","ko":"이 디바이스 클래스는 모든 종류의 일체형 세탁건조기에 사용합니다.","nl":"Gebruik deze apparaatklasse voor elke was/droogcombinatie.","no":"Bruk denne enhetsklassen for alle slags kombinasjoner av vaskemaskin og tørketrommel.","pl":"Tej klasy urządzenia należy używać do każdego rodzaju pralko-suszarki.","ru":"Используйте этот класс устройств для любой комбинации стиральной и сушильной машин.","sv":"Använd den här enhetsklassen för alla typer av tvättmaskin och torktumlare.","ar":"استخدم فئة الجهاز هذه لأي نوع من الغسالات والمجففات المدمجة."},"minCompatibility":"12.0.0"}')},5771:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Temperature","nl":"Temperatuur","de":"Temperatur","fr":"Température","it":"Temperatura","sv":"Temperatur","no":"Temperatur","es":"Temperatura","da":"Temperatur","ru":"Температура","pl":"Temperatura","ko":"온도","ar":"درجة الحرارة"},"units":{"en":"°C","ko":"°C","no":"°C","ru":"°C","ar":"درجة مئوية","da":"°C","de":"°C","es":"°C","fr":"°C","it":"°C","nl":"°C","pl":"°C","sv":"°C"},"insights":true,"desc":{"en":"Temperature in degrees Celsius (°C)","nl":"Temperatuur in graden Celsius (°C)","de":"Temperatur in Grad Celsius (°C)","fr":"Température en degrés Celsius (°C)","it":"Temperatura in gradi Celsius (°C)","sv":"Temperatur i grader Celsius (°C)","no":"Temperatur i grader Celsius (°C)","es":"Temperatura en grados Celsius (°C)","da":"Temperatur i Celsius (°C)","ru":"Температура в градусах Цельсия (°C)","pl":"Temperatura w stopniach Celsjusza (°C)","ko":"온도 섭씨(°C)","ar":"درجة الحرارة بالدرجات المئوية (°C)"},"decimals":1,"chartType":"spline","color":"#FA6400","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_temperature_changed","highlight":true,"title":{"en":"The temperature changes","nl":"De temperatuur verandert","de":"Die Temperatur hat sich geändert","fr":"La température a changé","it":"La temperatura è cambiata","sv":"Temperaturen ändrades","no":"Temperaturen endres","es":"La temperatura ha cambiado","da":"Temperaturen ændrede sig","ru":"Температура изменяется","pl":"Zmiana temperatury","ko":"온도가 변경되면","ar":"تتغير درجة الحرارة"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":23.5}]}]}}')},5777:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Battery charging state","nl":"Oplaadstatus van de batterij","da":"Batteriets opladningstilstand","it":"Stato di carica della batteria","ko":"배터리 충전 상태","pl":"Stan ładowania baterii","ru":"Состояние зарядки аккумулятора","sv":"Batteriets laddningsstatus","es":"Estado de carga de la batería","fr":"État de charge de la batterie","no":"Batteriladestatus","de":"Ladezustand der Batterie","ar":"حالة شحن البطارية"},"desc":{"en":"The current charging state of the battery.","nl":"De huidige oplaadstatus van de batterij.","da":"Batteriets aktuelle opladningstilstand.","it":"Lo stato di carica attuale della batteria.","ko":"배터리의 현재 충전 상태입니다.","pl":"Bieżący stan naładowania baterii.","ru":"Текущее состояние зарядки аккумулятора.","sv":"Batteriets aktuella laddningsstatus.","es":"El estado de carga actual de la batería.","fr":"L\'état de charge actuel de la batterie.","no":"Batteriets nåværende ladestatus.","ar":"حالة الشحن الحالية للبطارية.","de":"Der aktuelle Ladezustand des Akkus."},"values":[{"id":"charging","title":{"en":"Charging","nl":"Opladen","da":"Oplader","it":"In carica","ko":"충전 중","pl":"Ładowanie","ru":"Заряжается","sv":"Laddning","es":"Cargando","fr":"Charge","no":"Lades","ar":"قيد الشحن","de":"Wird geladen"}},{"id":"discharging","title":{"en":"Discharging","nl":"Ontladen","da":"Aflader","it":"Scarica","ko":"외부 전원 공급 중","pl":"Rozładowanie","ru":"Разряжается","sv":"Urladdning","es":"Descargando","fr":"Décharge","no":"Lades ut","ar":"قيد التفريغ","de":"Entladen"}},{"id":"idle","title":{"en":"Idle","nl":"Inactief","da":"Inaktiv","it":"Inattivo","ko":"대기","pl":"Bezczynność","ru":"В ожидании","sv":"Viloläge","es":"Reposo","fr":"Inactif","no":"Inaktiv","ar":"خامل","de":"Leerlauf"}}],"color":"#6DD400","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"battery_charging_state_changed","title":{"en":"The battery charging state changed","nl":"De oplaadstatus van de batterij is veranderd","da":"Batteriets opladningstilstand er ændret","it":"Lo stato di carica della batteria è cambiato","ko":"배터리 충전 상태가 변경되면","pl":"Stan ładowania baterii uległ zmianie","ru":"Состояние зарядки батареи изменилось","sv":"Batteriets laddningsstatus har ändrats","es":"El estado de carga de la batería ha cambiado","fr":"L\'état de charge de la batterie a changé","no":"Batteriladestatusen ble endret","de":"Der Ladezustand der Batterie hat sich geändert","ar":"تم تغيير حالة شحن البطارية"},"args":[{"name":"state","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"battery_charging_state_is","title":{"en":"The battery charging state !{{is|is not}}","nl":"De oplaadstatus van de batterij !{{is|is niet}}","da":"Batteriets opladningstilstand !{{er|er ikke}}","it":"Lo stato di carica della batteria !{{è|non è}}","ko":"배터리 충전 상태가 다음!{{과 같으면|이 아니면}}","pl":"Stan ładowania baterii !{{to|to nie}}","ru":"Состояние зарядки аккумулятора !{{|не}}","sv":"Batteriets laddningsstatus !{{är|är inte}}","es":"El estado de carga de la batería !{{es|no es}}","fr":"L\'état de charge de la batterie !{{est|n\'est pas}}","no":"Batteriladestatusen !{{er|er ikke}}","de":"Der Ladezustand der Batterie !{{ist|ist nicht}}","ar":"حالة شحن البطارية !{{هي|ليست}}"},"args":[{"name":"state","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.2.0"}')},5812:(e,t,a)=>{"use strict";var r=a(9005);e.exports=function(e,t){var a;for(a in r)if(r[a].detect(e,t))return a}},5848:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Dryer","da":"Tørretumbler","de":"Trockner","es":"Secadora","fr":"Sèche-linge","it":"Asciugatrice","ko":"건조기","nl":"Droger","no":"Tørketrommel","pl":"Suszarka","ru":"Сушилка","sv":"Torktumlare","ar":"مجفف"},"description":{"en":"Use this device class for dryers, if it is a combination washer/dryer use \'washer_and_dryer\'.","da":"Brug denne enhedsklasse til tørretumblere. Hvis det er en kombineret vaskemaskine/tørretumbler, skal du bruge \'washer_and_dryer\'.","de":"Verwenden Sie diese Geräteklasse für Trockner. Bei Kombingeräten mit Waschmaschine und Trockner verwenden Sie „washer_and_dryer“.","es":"Utiliza esta clase de dispositivo para secadoras. Si se trata de un equipo que contiene funciones de lavadora y secadora, utiliza la clase \'washer_and_dryer\'.","fr":"Utilisez cette classe d\'appareils pour les sèche-linge. S\'il s\'agit d\'une combinaison lave-linge/sèche-linge, utilisez \\"washer_and_dryer\\".","it":"Utilizza questa classe di dispositivi per le asciugatrici, se si tratta di una combinazione di lavatrice/asciugatrice utilizza \\"washer_and_dryer\\".","ko":"이 디바이스 클래스는 건조기에 사용하고, 세탁기/건조기 일체형의 경우 \'washer_and_dryer\'를 사용합니다.","nl":"Gebruik deze apparaatklasse voor drogers, als het een was/droogcombinatie is gebruik dan \'washer_and_dryer\'.","no":"Bruk denne enhetsklassen for tørketromler. For en kombinert vaskemaskin/tørketrommel, bruk «washer_and_dryer».","pl":"Użyj tej klasy urządzeń dla suszarek, jeśli jest to pralko-suszarka, użyj „washer_and_dryer”.","ru":"Используйте этот класс устройств для сушилок; в случае стиральной машины-сушилки используйте washer_and_dryer.","sv":"Använd den här enhetsklassen för torktumlare, om det är en kombinerad tvättmaskin/torktumlare ska du använda \'washer_and_dryer\'.","ar":"استخدم فئة الجهاز هذه للمجففات، إذا كانت غسالة/مجفف مدمج، فاستخدم \'washer_and_dryer\'."},"minCompatibility":"12.0.0"}')},5858:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Rain meter","nl":"Regenmeter","de":"Regenzähler","fr":"Compteur de pluie","it":"Misuratore di pioggia","sv":"Regnmätare","no":"Regnmåler","es":"Pluviómetro","da":"Regnmåler","ru":"Счетчик дождя","pl":"Licznik deszczu","ko":"집수량","ar":"عداد المطر"},"units":{"en":"m³","ru":"м³","ko":"m³","no":"m³","ar":"م³","da":"m³","de":"m³","es":"m³","fr":"m³","it":"m³","nl":"m³","pl":"m³","sv":"m³"},"chartType":"spline","desc":{"en":"Rain in cubic meter (m³)","nl":"Regen in kubieke meter (m³)","de":"Regen in Kubikmeter (m³)","fr":"Pluie en mètres cubes (m³)","it":"Pioggia in metri cubi (m³)","sv":"Regn i kubikmeter (m³)","no":"Regn i kubikkmeter (m³)","es":"Lluvia en metros cúbicos (m³)","da":"Regn i kubikmeter (m³)","ru":"Дождь в кубометрах (м³)","pl":"Deszcz w metrach sześciennych (m³)","ko":"강우량 입방미터(m³)","ar":"المطر بالمتر المكعب (m³)"},"decimals":2,"color":"#0091FF","insights":true,"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"meter_rain_changed","title":{"en":"The rain meter changed","nl":"De regenmeter is veranderd","de":"Der Regenzähler hat sich geändert","fr":"Le compteur de pluie a changé","it":"Il misuratore di pioggia è cambiato","sv":"Regnmätaren ändrades","no":"Regnmåleren ble endret","es":"El pluviómetro ha cambiado","da":"Regnmåleren ændrede sig","ru":"Измерения дождя изменились","pl":"Zmiana w liczniku deszczu","ko":"집수량이 변경되면","ar":"تغير عداد المطر"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":1}]}]}}')},5886:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Blinds","nl":"Jaloezieën & Lamellen","de":"Rolladen","fr":"Stores","it":"Tapparelle","sv":"Persienner","no":"Persienner","es":"Persianas","da":"Persienner","ru":"Жалюзи","pl":"Rolety","ko":"블라인드","ar":"ستائر دوارة"},"description":{"en":"Use this device class for blinds, both horizontal and vertical.","de":"Nutze diese Geräteklasse für Rolladen, sowohl horizontal als auch vertikal.","fr":"Utilisez cette classe d\'appareil pour les stores, horizontaux et verticaux.","it":"Utilizza questa classe di dispositivi per le tapparelle, orizzontali e verticali.","sv":"Använd den här enhetsklassen för persienner, både horisontella och vertikala.","no":"Bruk denne enhetsklassen for persienner, både horisontale og vertikale.","es":"Utiliza esta clase de dispositivo para las persianas, tanto horizontales como verticales.","da":"Brug denne enhedsklasse til persienner, både vandrette og lodrette.","ru":"Используйте этот класс устройств для жалюзи, как горизонтальных, так и вертикальных.","pl":"Użyj tej klasy urządzeń dla rolet (poziomych i pionowych).","ko":"이 디바이스 클래스는 가로형 및 세로형 블라인드에 사용합니다.","ar":"استخدم فئة الجهاز هذه للستائر الدوارة، الأفقية والعمودية على حد سواء.","nl":"Gebruik deze apparaatklasse voor jaloezieën, zowel horizontaal als verticaal."}}')},5898:e=>{"use strict";e.exports=function(e,t,a){var r,i=" ",n=e.level,s=e.dataLevel,o=e.schema[t],l=e.schemaPath+e.util.getProperty(t),d=e.errSchemaPath+"/"+t,u=!e.opts.allErrors,m="data"+(s||""),p="valid"+n,c=e.opts.$data&&o&&o.$data;if(c?(i+=" var schema"+n+" = "+e.util.getData(o.$data,s,e.dataPathArr)+"; ",r="schema"+n):r=o,(o||c)&&!1!==e.opts.uniqueItems){c&&(i+=" var "+p+"; if ("+r+" === false || "+r+" === undefined) "+p+" = true; else if (typeof "+r+" != 'boolean') "+p+" = false; else { "),i+=" var i = "+m+".length , "+p+" = true , j; if (i > 1) { ";var g=e.schema.items&&e.schema.items.type,h=Array.isArray(g);if(!g||"object"==g||"array"==g||h&&(g.indexOf("object")>=0||g.indexOf("array")>=0))i+=" outer: for (;i--;) { for (j = i; j--;) { if (equal("+m+"[i], "+m+"[j])) { "+p+" = false; break outer; } } } ";else{i+=" var itemIndices = {}, item; for (;i--;) { var item = "+m+"[i]; ";var v="checkDataType"+(h?"s":"");i+=" if ("+e.util[v](g,"item",e.opts.strictNumbers,!0)+") continue; ",h&&(i+=" if (typeof item == 'string') item = '\"' + item; "),i+=" if (typeof itemIndices[item] == 'number') { "+p+" = false; j = itemIndices[item]; break; } itemIndices[item] = i; } "}i+=" } ",c&&(i+=" } "),i+=" if (!"+p+") { ";var f=f||[];f.push(i),i="",!1!==e.createErrors?(i+=" { keyword: 'uniqueItems' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(d)+" , params: { i: i, j: j } ",!1!==e.opts.messages&&(i+=" , message: 'should NOT have duplicate items (items ## ' + j + ' and ' + i + ' are identical)' "),e.opts.verbose&&(i+=" , schema: ",i+=c?"validate.schema"+l:""+o,i+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),i+=" } "):i+=" {} ";var k=i;i=f.pop(),!e.compositeRule&&u?e.async?i+=" throw new ValidationError(["+k+"]); ":i+=" validate.errors = ["+k+"]; return false; ":i+=" var err = "+k+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",i+=" } ",u&&(i+=" else { ")}else u&&(i+=" if (true) { ");return i}},5899:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Freeze Risk Alarm","ar":"إنذار خطر التجمد","da":"Fryserisikoalarm","de":"Alarm für Einfriergefahr","es":"Alarma de riesgo de congelación","fr":"Alarme de risque de gel","it":"Allarme rischio di congelamento","ko":"동파 위험 알람","nl":"Vriesgevaaralarm","no":"Frostrisikoalarm","pl":"Alarm ryzyka zamarznięcia","ru":"Сигнализация риска замораживания","sv":"Frysrisklarm"},"titleShort":{"en":"Freeze Risk","ar":"خطر التجمد","da":"Fryserisiko","de":"Einfriergefahr","es":"Riesgo de congelación","fr":"Risque de gel","it":"Rischio di congelamento","ko":"동파 위험","nl":"Vriesgevaar","no":"Frostrisiko","pl":"Ryzyko zamarznięcia","ru":"Риск замораживания","sv":"Frysrisk"},"desc":{"en":"True when in the current ambient conditions water could potentially freeze.","ar":"صحيح عند إمكانية تجمد الماء في الظروف المحيطة الحالية.","da":"Sandt, når vandet under de nuværende forhold potentielt kan fryse.","de":"Wahr, wenn bei den aktuellen Umgebungsbedingungen Wasser gefrieren könnte.","es":"Verdadero cuando el agua podría congelarse debido a las condiciones ambientales.","fr":"Se déclenche lorsque, dans les conditions ambiantes actuelles, l\'eau peut potentiellement geler.","it":"È vero quando nelle attuali condizioni ambientali l\'acqua potrebbe potenzialmente congelare.","ko":"현재 주변 조건에서 물이 얼 가능성이 있을 때 참입니다.","nl":"Waar als in de huidige omgevingsomstandigheden water zou kunnen bevriezen.","no":"Sann når vann under de nåværende miljøforholdene potensielt kan fryse.","pl":"Prawda, gdy w obecnych warunkach otoczenia woda mogłaby zamarznąć.","ru":"Истина, когда при текущих условиях окружающей среды вода потенциально может замерзнуть.","sv":"Sant när vattnet under de rådande förhållandena potentiellt kan frysa."},"insights":true,"insightsTitleTrue":{"en":"Freeze risk alarm turned on","ar":"تم تشغيل إنذار خطر التجمد","da":"Fryserisikoalarm slået til","de":"Alarm für Einfriergefahr ist aktiviert","es":"Alarma de riesgo de congelación activada","fr":"Alarme de risque de gel activée","it":"Allarme rischio di congelamento attivato","ko":"동파 위험 알람 켜짐","nl":"Vriesgevaaralarm ingeschakeld","no":"Frostrisikoalarm aktivert","pl":"Alarm ryzyka zamarznięcia włączony","ru":"Сигнализация риска замораживания включена","sv":"Larmet för frysrisk aktiverat"},"insightsTitleFalse":{"en":"Freeze risk alarm turned off","ar":"تم إيقاف تشغيل إنذار خطر التجمد","da":"Fryserisikoalarm slået fra","de":"Alarm für Einfriergefahr ausgeschaltet","es":"Alarma de riesgo de congelación desactivada","fr":"Alarme de risque de gel désactivée","it":"Allarme rischio di congelamento disattivato","ko":"동파 위험 알람 꺼짐","nl":"Vriesgevaaralarm uitgeschakeld","no":"Frostrisikoalarm deaktivert","pl":"Alarm ryzyka zamarznięcia wyłączony","ru":"Сигнализация риска замораживания выключена","sv":"Larmet för frysrisk avstängt"},"color":"#0091FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_freeze_risk_true","highlight":true,"title":{"en":"The freeze risk alarm turned on","ar":"تم تشغيل إنذار خطر التجمد","da":"Fryserisikoalarmen er slået til","de":"Der Alarm für Einfriergefahr wurde aktiviert","es":"La alarma de riesgo de congelación se ha activado","fr":"L\'alarme de risque de gel s\'est activée","it":"L\'allarme di rischio di congelamento si è attivato","ko":"동파 위험 알람이 켜져 있으면","nl":"Het vriesgevaaralarm aan gaat","no":"Frostrisikoalarmen ble aktivert","pl":"Włączył się alarm ryzyka zamarznięcia","ru":"Сигнализация риска замораживания включена","sv":"Larmet för frysrisk aktiverat"}},{"id":"alarm_freeze_risk_false","title":{"en":"The freeze risk alarm turned off","ar":"تم إيقاف تشغيل إنذار خطر التجمد","da":"Fryserisikoalarmen er slået fra","de":"Der Alarm für Einfriergefahr ist ausgeschaltet","es":"La alarma de riesgo de congelación se ha desactivado","fr":"L\'alarme de risque de gel s\'est désactivée","it":"L\'allarme di rischio di congelamento si è disattivato","ko":"동파 위험 알람이 꺼져 있으면","nl":"Het vriesgevaaralarm uit gaat","no":"Frostrisikoalarmen ble deaktivert","pl":"Wyłączył się alarm ryzyka zamarznięcia","ru":"Сигнализация риска замораживания выключена","sv":"Larmet för frysrisk avstängt"}}],"conditions":[{"id":"alarm_freeze_risk","title":{"en":"The freeze risk alarm is !{{on|off}}","ar":"إنذار خطر التجميد !{{يعمل|لا يعمل}}","da":"Fryserisikoalarmen er !{{tændt|slukket}}","de":"Alarm für Einfriergefahr ist !{{an|aus}}","es":"La alarma de riesgo de congelación está !{{activada|desactivada}}","fr":"L\'alarme de risque de gel est !{{activée|désactivée}}","it":"L\'allarme di rischio di congelamento è !{{attivo|non attivo}}","ko":"동파 위험 알람이 !{{켜져|꺼져}} 있으면","nl":"Het vriesgevaaralarm staat !{{aan|uit}}","no":"Frostrisikoalarmen er !{{på|av}}","pl":"Alarm ryzyka zamarznięcia jest !{{włączony|wyłączony}}","ru":"Сигнализация риска замораживания !{{включена|выключена}}","sv":"Larmet för frysrisk är !{{på|av}}"}}]},"minCompatibility":"12.11.0"}')},5905:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Kettle","nl":"Waterkoker","de":"Wasserkocher","fr":"Bouilloire","it":"Bollitore","sv":"Vattenkokare","no":"Vannkoker","es":"Hervidor","da":"Elkedel","ru":"Чайник","pl":"Czajnik","ko":"주전자","ar":"غلاية"},"description":{"en":"Use this device class for kettle devices, that can heat water.","de":"Nutze diese Geräteklasse für Kessel-Geräte, die Wasser kochen können.","fr":"Utilisez cette classe d\'appareil pour les bouilloires qui peuvent faire chauffer de l\'eau.","it":"Utilizza questa classe di dispositivi per i bollitori, che possono riscaldare l\'acqua.","sv":"Använd den här enhetsklassen för vattenkokare, som kan värma vatten.","no":"Bruk denne enhetsklassen for vannkokere som kan varme opp vann.","es":"Utiliza esta clase de dispositivo para los hervidores que calientan agua.","da":"Brug denne enhedsklasse til elkedelenheder, der kan opvarme vand.","ru":"Используйте этот класс устройств для чайников, которые могут нагревать воду.","pl":"Użyj tej klasy urządzeń dla czajników, które ogrzewają wodę.","ko":"이 디바이스 클래스는 물을 데울 수 있는 주전자에 사용합니다.","ar":"استخدم فئة الجهاز هذه لأجهزة الغلاية التي يمكنها تسخين الماء.","nl":"Gebruik deze apparaatklasse voor waterkokers die water kunnen verwarmen."}}')},5932:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Combi Microwave Oven","da":"Kombimikrobølgeovn","de":"Kombi-Mikrowellenherd","es":"Horno-microondas","fr":"Four à micro-ondes combiné","it":"Forno a microonde combinato","ko":"전자레인지 겸 오븐","nl":"Combimagnetron","no":"Kombi-mikrobølgeovn","pl":"Kuchenka mikrofalowa combi","ru":"Комбинированная микроволновая печь","sv":"Kombimikrovågsugn","ar":"فرن ميكروويف مدمج"},"description":{"en":"Use this device class for combination microwave ovens.","da":"Brug denne enhedsklasse til kombimikrobølgeovne.","de":"Verwenden Sie diese Geräteklasse für Kombi-Mikrowellenherde.","es":"Utilice esta clase de dispositivo para equipos que combinan funciones de horno y microondas.","fr":"Utilisez cette classe d\'appareils pour les fours à micro-ondes combinés.","it":"Utilizza questa classe di dispositivi per i forni a microonde combinati.","ko":"이 디바이스 클래스는 전자레인지와 오븐 기능을 합친 콤비오븐에 사용합니다.","nl":"Gebruik deze apparaatklasse voor combimagnetrons.","no":"Bruk denne enhetsklassen for kombiovner med mikrobølgeovn.","pl":"Tej klasy urządzeń należy używać w przypadku kuchenkach mikrofalowych combi.","ru":"Используйте этот класс устройств для комбинированных микроволновых печей.","sv":"Använd den här enhetsklassen för kombinerade mikrovågsugnar.","ar":"استخدم فئة الجهاز هذه لأفران الميكروويف المدمجة."},"minCompatibility":"12.0.0"}')},5934:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Button","nl":"Knop","de":"Taste","fr":"Bouton","it":"Pulsante","sv":"Knapp","no":"Knapp","es":"Botón","da":"Knap","ru":"Кнопка","pl":"Przycisk","ko":"버튼","ar":"زر"},"description":{"en":"Use this device class for buttons, such as a remote.","de":"Nutze diese Geräteklasse für Tasten wie z. B. eine Fernbedienung.","fr":"Utilisez cette classe d\'appareil pour les boutons, comme pour une télécommande.","it":"Utilizza questa classe di dispositivi per i pulsanti, come ad esempio un telecomando.","sv":"Använd den här enhetsklassen för knappar, som en fjärrkontroll.","no":"Bruk denne enhetsklassen for knapper, f.eks. en fjernkontroll.","es":"Utiliza esta clase de dispositivo para los botones, p. ej., mandos a distancia.","da":"Brug denne enhedsklasse til knapper, f-eks. en fjernbetjening.","ru":"Используйте этот класс устройств для устройств с кнопками, например пультов.","pl":"Użyj tej klasy urządzeń dla przycisków, np. pilota.","ko":"이 디바이스 클래스는 리모컨 등 버튼이 있는 것에 사용합니다.","ar":"استخدم فئة الجهاز هذه للأزرار، مثل جهاز التحكم عن بعد.","nl":"Gebruik deze apparaatklasse voor knoppen, zoals een afstandsbediening."}}')},5948:e=>{"use strict";e.exports=JSON.parse('{"homey:manager:geolocation":{"title":{"en":"Read Homey\'s location","nl":"Homey\'s locatie uitlezen","de":"Homeys Standort lesen","fr":"Lire la position de Homey","it":"Leggi la posizione di Homey","sv":"Läs av Homeys plats","no":"Les av Homeys posisjon","es":"Leer la posición de Homey","da":"Læs Homeys placering","ru":"Читать местонахождение Homey","pl":"Odczytaj lokalizację Homey","ko":"Homey 위치 읽기","ar":"قراءة موقع Homey"}},"homey:manager:ledring":{"title":{"en":"Control Homey\'s LED ring","nl":"Homey\'s LED ring besturen","de":"Homeys LED-Ring steuern","fr":"Contrôler l\'anneau LED de Homey","it":"Controlla l\'anello LED di Homey","sv":"Kontrollera Homeys LED-ring","no":"Kontroller Homeys LED-ring","es":"Controlar el anillo LED de Homey","da":"Kontroller Homeys LED-ring","ru":"Управлять светодиодным кольцом Homey","pl":"Steruj lampą pierścieniową Homey","ko":"Homey LED 링 제어","ar":"التحكم في حلقة LED الخاصة بـ Homey"}},"homey:manager:media":{"title":{"en":"Control Homey\'s Music","nl":"Homey\'s Muziek besturen","de":"Homeys Musik steuern","fr":"Contrôler la musique de Homey","it":"Controlla la musica di Homey","sv":"Styr Homeys musik","no":"Kontroller Homeys musikk","es":"Controlar la música de Homey","da":"Kontroller Homeys musik","ru":"Управлять музыкой Homey","pl":"Steruj muzyką Homey","ko":"Homey의 음악 제어","ar":"التحكم في موسيقى Homey"}},"homey:manager:speech-input":{"title":{"en":"React to speech","nl":"Reageren op spraak","de":"Auf Sprache reagieren","fr":"Réagir au discours","it":"Reagisci al parlato","sv":"Reagera på tal","no":"Reager på tale","es":"Reaccionar al habla","da":"Reager på tale","ru":"Реагировать на голос","pl":"Reaguj na mowę","ko":"음성에 반응","ar":"الاستجابة للكلام"}},"homey:manager:speech-output":{"title":{"en":"Let Homey talk","nl":"Homey laten praten","de":"Homey sprechen lassen","fr":"Laisser Homey parler","it":"Permetti a Homey di parlare","sv":"Låt Homey prata","no":"La Homey snakke","es":"Deja que Homey hable","da":"Lad Homey tale","ru":"Разрешить Homey говорить","pl":"Pozwól Homey mówić","ko":"Homey의 음성 안내","ar":"جعل Homey يتكلم"}},"homey:wireless:433":{"title":{"en":"Send and receive on the 433 MHz frequency","nl":"Verzenden en ontvangen op de 433 MHz frequentie","de":"Auf der 433MHz-Frequenz senden und empfangen","fr":"Envoyer et recevoir sur la fréquence 433 MHz","it":"Invia e ricevi sulla frequenza 433 MHz","sv":"Skicka och ta emot på frekvensen 433 MHz","no":"Send og motta på frekvensen 433 MHz","es":"Enviar y recibir en la frecuencia de 433 MHz","da":"Send, og modtag på 433 MHz-frekvensen","ru":"Отправка и получение сигналов на частоте 433 МГц","pl":"Wysyłaj i odbieraj sygnały o częstotliwości 433 MHz","ko":"433MHz 주파수 송수신","ar":"إرسال واستقبال على تردد 433 MHz"}},"homey:wireless:868":{"title":{"en":"Send and receive on the 868 MHz frequency","nl":"Verzenden en ontvangen op de 868 MHz frequentie","de":"Auf der 868MHz-Frequenz senden und empfangen","fr":"Envoyer et recevoir sur la fréquence 868 MHz","it":"Invia e ricevi sulla frequenza 868 MHz","sv":"Skicka och ta emot på frekvensen 468 MHz","no":"Send og motta på frekvensen 468 MHz","es":"Enviar y recibir en la frecuencia de 868 MHz","da":"Send, og modtag på 868 MHz-frekvensen","ru":"Отправка и получение сигналов на частоте 868 МГц","pl":"Wysyłaj i odbieraj sygnały o częstotliwości 868 MHz","ko":"868MHz 주파수 송수신","ar":"إرسال واستقبال على تردد 868 MHz"}},"homey:wireless:ir":{"title":{"en":"Send and receive Infrared","nl":"Infrarood verzenden en ontvangen","de":"Infrarot senden und empfangen","fr":"Envoyer et recevoir en infrarouge","it":"Invia e ricevi in infrarossi","sv":"Skicka och ta emot infrarött","no":"Send og motta infrarødt","es":"Enviar y recibir en infrarrojos","da":"Send, og modtag på infrarød","ru":"Отправка и получение ИК-сигналов","pl":"Wysyłaj i odbieraj podczerwień","ko":"적외선 송수신","ar":"إرسال واستقبال الأشعة تحت الحمراء"}},"homey:wireless:zwave":{"title":{"en":"Send and receive Z-Wave for specific devices","nl":"Z-Wave verzenden en ontvangen voor specifieke apparaten","de":"Z-Wave für spezifische Geräte senden und empfangen","fr":"Envoyer et recevoir Z-Wave pour les appareils spécifiques","it":"Invia e ricevi Z-Wave per dispositivi specifici","sv":"Skicka och ta emot Z-Wave för specifika enheter","no":"Send og motta Z-Wave for spesifikke enheter","es":"Enviar y recibir Z-Wave para dispositivos específicos","da":"Send, og modtag på Z-Wave for specifikke enheder","ru":"Отправлять и получать сигналы Z-Wave для определенных устройств","pl":"Wysyłaj i odbieraj Z-Wave dla określonych urządzeń","ko":"특정 제품용 Z-Wave 송수신","ar":"إرسال واستقبال Z-Wave لأجهزة محددة"}},"homey:wireless:zigbee":{"title":{"en":"Send and receive Zigbee for specific devices","nl":"Zigbee verzenden en ontvangen voor specifieke apparaten","de":"Zigbee für spezifische Geräte senden und empfangen","fr":"Envoyer et recevoir Zigbee pour les appareils spécifiques","it":"Invia e ricevi Zigbee per dispositivi specifici","sv":"Skicka och ta emot Zigbee för specifika enheter","no":"Send og motta Zigbee for spesifikke enheter","es":"Enviar y recibir Zigbee para dispositivos específicos","da":"Send, og modtag på Zigbee for specifikke enheder","ru":"Отправлять и получать сигналы Zigbee для определенных устройств","pl":"Wysyłaj i odbieraj Zigbee dla określonych urządzeń","ko":"특정 제품용 Zigbee 송수신","ar":"إرسال واستقبال Zigbee لأجهزة محددة"}},"homey:wireless:nfc":{"title":{"en":"Read and write NFC tags","nl":"NFC tags lezen en schrijven","de":"NFC-Tags lesen und schreiben","fr":"Lire et écrire les tags NFC","it":"Leggi e scrivi i tag NFC","sv":"Läs och skriv NFC-taggar","no":"Les og skriv NFC-tagger","es":"Leer y escribir etiquetas NFC","da":"Læs, og skriv NFC-tags","ru":"Чтение и запись тегов NFC","pl":"Odczytuj i twórz tagi NFC","ko":"NFC 태그 읽기 및 쓰기","ar":"قراءة وكتابة علامات NFC"}},"homey:manager:api":{"title":{"en":"Gain full access to Homey to control everything on behalf of the user","nl":"Volledige toegang tot Homey om alles te bedienen namens de gebruiker","de":"Erhalte vollen Zugriff auf Homey, um alles im Namen des Benutzers zu steuern","fr":"Obtenir l\'accès complet à Homey pour contrôler tout au nom de l\'utilisateur","it":"Ottieni l\'accesso completo a Homey per controllare tutto a nome dell\'utente","sv":"Få full åtkomst till Homey för att styra allt åt användaren","no":"Få full tilgang til Homey for å kontrollere alt på vegne av brukeren","es":"Acceso completo a Homey para controlarlo todo en nombre del usuario","da":"Få fuld adgang til Homey for at kontrollere alt på brugerens vegne","ru":"Получите полный доступ к Homey, чтобы контролировать все от имени пользователя","pl":"Zdobądź pełny dostęp do Homey, aby sterować wszystkim w imieniu użytkownika","ko":"사용자를 대신해 모든 것을 제어할 수 있도록 Homey에 대한 전체 액세스 권한 얻기","ar":"الحصول على وصول كامل إلى Homey للتحكم في كل شيء نيابة عن المستخدم"}},"homey:wireless:ble":{"title":{"en":"Communicate with Bluetooth Low Energy devices","nl":"Communiceren met Bluetooth Low Energy apparaten","de":"Mit Bluetooth-Low-Energy-Geräten kommunizieren","fr":"Communiquer avec les appareils Bluetooth à faible énergie","it":"Comunica con i dispositivi Bluetooth Low Energy","sv":"Kommunicera med Bluetooth låg energi-enheter","no":"Kommuniser med Bluetooth Low Energy-enheter","es":"Comunicarse con dispositivos de Bluetooth Low Energy","da":"Kommuniker med Bluetooth low energy-enheder","ru":"Связываться с устройствами Bluetooth с низким энергопотреблением","pl":"Porozumiewaj się z urządzeniami Bluetooth Low Energy","ko":"블루투스 LE 제품과 통신","ar":"التواصل مع أجهزة Bluetooth Low Energy"}}}')},5950:(e,t,a)=>{"use strict";var r=a(6740),i=/^(\d\d\d\d)-(\d\d)-(\d\d)$/,n=[0,31,28,31,30,31,30,31,31,30,31,30,31],s=/^(\d\d):(\d\d):(\d\d)(\.\d+)?(z|[+-]\d\d(?::?\d\d)?)?$/i,o=/^(?=.{1,253}\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\.?$/i,l=/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,d=/^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i,u=/^(?:(?:http[s\u017F]?|ftp):\/\/)(?:(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+(?::(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?@)?(?:(?!10(?:\.[0-9]{1,3}){3})(?!127(?:\.[0-9]{1,3}){3})(?!169\.254(?:\.[0-9]{1,3}){2})(?!192\.168(?:\.[0-9]{1,3}){2})(?!172\.(?:1[6-9]|2[0-9]|3[01])(?:\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-?)*(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)(?:\.(?:(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-?)*(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)*(?:\.(?:(?:[KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\/(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?$/i,m=/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,p=/^(?:\/(?:[^~/]|~0|~1)*)*$/,c=/^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,g=/^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/;function h(e){return e="full"==e?"full":"fast",r.copy(h[e])}function v(e){var t=e.match(i);if(!t)return!1;var a=+t[1],r=+t[2],s=+t[3];return r>=1&&r<=12&&s>=1&&s<=(2==r&&function(e){return e%4==0&&(e%100!=0||e%400==0)}(a)?29:n[r])}function f(e,t){var a=e.match(s);if(!a)return!1;var r=a[1],i=a[2],n=a[3],o=a[5];return(r<=23&&i<=59&&n<=59||23==r&&59==i&&60==n)&&(!t||o)}e.exports=h,h.fast={date:/^\d\d\d\d-[0-1]\d-[0-3]\d$/,time:/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,"date-time":/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,uri:/^(?:[a-z][a-z0-9+-.]*:)(?:\/?\/)?[^\s]*$/i,"uri-reference":/^(?:(?:[a-z][a-z0-9+-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i,"uri-template":d,url:u,email:/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,hostname:o,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:w,uuid:m,"json-pointer":p,"json-pointer-uri-fragment":c,"relative-json-pointer":g},h.full={date:v,time:f,"date-time":function(e){var t=e.split(k);return 2==t.length&&v(t[0])&&f(t[1],!0)},uri:function(e){return y.test(e)&&l.test(e)},"uri-reference":/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,"uri-template":d,url:u,email:/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,hostname:o,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:w,uuid:m,"json-pointer":p,"json-pointer-uri-fragment":c,"relative-json-pointer":g};var k=/t|\s/i,y=/\/|:/,b=/[^\\]\\Z/;function w(e){if(b.test(e))return!1;try{return new RegExp(e),!0}catch(e){return!1}}},6015:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Position","nl":"Positie","de":"Position","fr":"Position","it":"Posizione","sv":"Position","no":"Posisjon","es":"Posición","da":"Position","ru":"Позиция","pl":"Pozycja","ko":"동작 제어","ar":"الموضع"},"desc":{"en":"Set the position of window coverings. 0% is closed, 100% is open","de":"Die Position der Jalousien setzen. 0% ist geschlossen, 100% ist offen","fr":"Définir la position des stores. 0% est fermé, 100% est ouvert","it":"Imposta la posizione delle tapparelle. 0% è chiuse, 100% è aperte","sv":"Ställ in positionen för fönsterskydden. 0 % är stängd, 100 % är öppet","no":"Innstill vindusbeskyttelsens posisjon. 0 % er lukket, 100 % er åpen","es":"Configura la posición de los cobertores de ventanas. 0 % es \'cerrados\', 100 % es \'abiertos\'","da":"Indstil positionen af dækket for vinduet. 0% er lukket, 100% er åben","ru":"Установите позицию оконных навесов. 0% означает закрыто, 100% означает открыто","pl":"Ustaw pozycję osłon okiennych. 0% oznacza zasunięte, 100% rozchylone","ko":"창문 커버 위치를 설정합니다. 0%는 닫힘, 100%는 열림입니다.","ar":"ضبط موضع أغطية النوافذ. 0% مغلق، 100% مفتوح","nl":"Stel de positie van de raambekleding in. 0% is gesloten, 100% is open"},"chartType":"stepLine","min":0,"max":1,"decimals":2,"units":{"en":"%","ko":"%","no":"%","ru":"%","ar":"%","da":"%","de":"%","es":"%","fr":"%","it":"%","nl":"%","pl":"%","sv":"%"},"color":"#F5B207","getable":true,"setable":true,"uiComponent":"slider","$flow":{"triggers":[{"id":"windowcoverings_set_changed","title":{"en":"The position changed","nl":"De positie is veranderd","de":"Position hat sich geändert","fr":"La position a changé","it":"La posizione è cambiata","sv":"Position ändrad","no":"Posisjonen ble endret","es":"La posición ha cambiado","da":"Position ændret","ru":"Позиция изменилась","pl":"Zmieniła się pozycja","ko":"창문 가림 %가 변경되면","ar":"تم تغيير الموضع"},"tokens":[{"name":"windowcoverings_set","type":"number","title":{"en":"Position","nl":"Positie","de":"Position","fr":"Position","it":"Posizione","sv":"Position","no":"Posisjon","es":"Posición","da":"Position","ru":"Позиция","pl":"Pozycja","ko":"창문 가림 %가 다음이면","ar":"الموضع"},"example":0.5}]}],"actions":[{"id":"windowcoverings_set","highlight":true,"title":{"en":"Set the position to","nl":"Zet de positie naar","de":"Setze die Position auf","fr":"Mettre la position sur","it":"Imposta la posizione su","sv":"Ställ in positionen till","no":"Innstill posisjonen til","es":"Configurar la posición como","da":"Indstil positionen til","ru":"Установите позицию на","pl":"Ustaw pozycję na","ko":"창문 가림 %를 다음으로 설정","ar":"ضبط الموضع على"},"hint":{"en":"Change the position to open (100%), closed (0%), or a value in between.","nl":"Verander de positie naar open (100%), gesloten (0%), of een waarde daartussen.","ru":"Измените позицию на открытую (100%), закрытую (0%) или между этими значениями.","pl":"Zmień pozycję na rozchylone (100%), zasunięte (0%) lub wartość pomiędzy.","ko":"위치를 열림(100%), 닫힘(0%) 또는 그 사이의 값으로 변경해요.","no":"Endre posisjonen til åpen (100 %), lukket (0 %) eller en verdi mellom disse.","ar":"تغيير الموضع إلى مفتوح (100%) أو مغلق (0%)، أو قيمة بينهما.","da":"Skift position til åben (100 %), lukket (0 %) eller en værdi midt imellem.","de":"Ändere die Position auf offen (100 %), geschlossen (0 %) oder einen Wert dazwischen.","es":"Cambia la posición a abierto (100 %), cerrado (0 %) o un valor intermedio.","fr":"Réglez la position sur ouvert (100 %), fermé (0 %) ou une valeur intermédiaire.","it":"Modifica la posizione su aperto (100%), chiuso (0%) o su un valore intermedio.","sv":"Ändra positionen till öppen (100 %), stängd (0 %) eller ett värde däremellan."},"args":[{"name":"windowcoverings_set","type":"range","min":0,"max":1,"step":0.01,"value":0.5,"label":"%","labelMultiplier":100,"labelDecimals":0}]}]}}')},6036:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Pump","ar":"المضخة","da":"Pumpe","de":"Pumpe","es":"Bomba","fr":"Pompe","it":"Pompa","ko":"펌프","nl":"Pompen","no":"Pumpe","pl":"Pompa","ru":"Насос","sv":"Pump"},"description":{"en":"Use this device class for pumps.","ar":"استخدم فئة الجهاز هذه للمضخات.","da":"Brug denne enhedsklasse til pumper.","de":"Verwende diese Geräteklasse für Pumpen.","es":"Usa esta clase de dispositivo para las bombas.","fr":"Utilisez cette classe d\'appareils pour les pompes.","it":"Utilizza questa classe di dispositivi per le pompe.","ko":"펌프에 이 제품 클래스를 사용합니다.","nl":"Gebruik deze apparaatklasse voor pompen.","no":"Bruk denne enhetsklassen for pumper.","pl":"Tej klasy urządzeń należy używać dla pomp.","ru":"Используйте этот класс устройств для насосов.","sv":"Använd denna enhetsklass för pumpar."},"minCompatibility":"12.11.0"}')},6038:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Swing mode","nl":"Zwenkmodus","da":"Svingtilstand","it":"Modalità oscillazione","ko":"스윙 모드","pl":"Tryb wahania","ru":"Режим поворота","sv":"Svängläge","es":"Modo oscilante","fr":"Mode de balancement","no":"Svingmodus","ar":"وضع التأرجح","de":"Schwenkmodus"},"values":[{"id":"vertical","title":{"en":"Vertical","nl":"Verticaal","da":"Lodret","it":"Verticale","ko":"상하","pl":"Pionowe","ru":"Вертикальный","sv":"Vertikalt","es":"Vertical","fr":"Vertical","no":"Vertikal","ar":"عمودي","de":"Vertikal"}},{"id":"horizontal","title":{"en":"Horizontal","nl":"Horizontaal","da":"Vandret","it":"Orizzontale","ko":"좌우","pl":"Poziome","ru":"Горизонтальный","sv":"Horisontellt","es":"Horizontal","fr":"Horizontal","no":"Horisontal","ar":"أفقي","de":"Horizontal"}},{"id":"both","title":{"en":"Both","nl":"Beide","da":"Begge","it":"Entrambi","ko":"상하좌우","pl":"Oba","ru":"Оба","sv":"Båda","es":"Ambos","fr":"Les deux","no":"Begge","ar":"كلاهما","de":"Beide"}}],"color":"#6236FF","getable":true,"setable":true,"uiComponent":"picker","$flow":{"triggers":[{"id":"swing_mode_changed","title":{"en":"The swing mode changed to","nl":"De zwenkmodus is veranderd naar","da":"Svingtilstanden er ændret til","it":"La modalità oscillazione è passata a","ko":"스윙 모드가 다음으로 변경되면","no":"Svingmodusen er endret til","pl":"Tryb wahania zmienił się na","ru":"Режим поворота изменен на","sv":"Svängläget har ändrats till","es":"El modo de giro ha cambiado a","fr":"Le mode de balancement est passé à","ar":"تغير وضع التأرجح إلى","de":"Der Schwenkmodus wurde geändert auf"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"swing_mode_is","title":{"en":"The swing mode !{{is|is not}}","nl":"De zwenkmodus !{{is|is niet}}","da":"Svingtilstanden !{{er|er ikke}}","it":"La modalità oscillazione !{{è|non è}}","ko":"스윙 모드가 다음!{{이면|이 아니면}}","pl":"Tryb wahania !{{jest|nie jest}}","ru":"Режим поворота !{{|не}}","sv":"Svängläget !{{är|är inte}}","es":"El modo de oscilación !{{es|no es}}","fr":"Le mode de balancement !{{est|n\'est pas}}","no":"Svingmodusen !{{er|er ikke}}","ar":"وضع التأرجح !{{هو|ليس}}","de":"Der Schwenkmodus !{{ist|ist nicht}}"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}],"actions":[{"id":"set_swing_mode","title":{"en":"Set the swing mode to","nl":"Stel de zwenkmodus in op","da":"Indstil svingtilstanden til","it":"Imposta la modalità oscillazione su","ko":"스윙 모드를 다음으로 설정","pl":"Ustaw tryb wahania na","ru":"Установить режим поворота на","sv":"Ställ in svängläget på","es":"Ajustar el modo de oscilación en","fr":"Définir le mode de balancement sur","no":"Sett svingmodusen til","ar":"ضبط وضع التأرجح على","de":"Stelle den Schwenkmodus auf"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.2.0"}')},6074:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Light","nl":"Lamp","de":"Lampe","fr":"Lampe","it":"Lampada","sv":"Lampa","no":"Lampe","es":"Lámpara","da":"Lys","ru":"Лампа","pl":"Oświetlenie","ko":"조명","ar":"ضوء"},"description":{"en":"Use this device class for lights, usually together with the `onoff`, `dim` and `light_*` capabilities.","de":"Nutze diese Geräteklasse für Lampen - normalerweise zusammen mit den `onoff`-, `dim`- und `light_*`-Fähigkeiten.","fr":"Utilisez cette classe d\'appareil pou les lampes, habituellement avec les capacités `onoff`, `dim` et `light_*`.","it":"Utilizza questa classe di dispositivi per le lampade, generalmente insieme alle funzioni \'onoff\', `dim` e `light_*`.","sv":"Använd den här enhetsklassen för lampor, oftast tillsammans med funktionerna `onoff`, `dim` och `light_*`.","no":"Bruk denne enhetsklassen for lamper, ofte sammen med funksjonene `onoff`, `dim` och `light_*`.","es":"Utiliza esta clase de dispositivo para las luces, generalmente junto con las capacidades de \'onoff\', `dim`, y `light_*`.","da":"Brug denne enhedsklasse til lys, normalt sammen med `onoff`, `dim` og `light_*` funktionerne.","ru":"Используйте этот класс устройств для ламп, обычно вместе с функциями `onoff`,`dim` и `light_ *`.","pl":"Użyj tej klasy urządzeń dla oświetlenia, zwykle razem ze zdolnościami `onoff`, `dim` oraz `light_*`.","ko":"이 디바이스 클래스는 보통 \'onoff\', \'dim\', \'light_*\' 기능을 갖춘 조명에 사용합니다.","ar":"استخدم فئة الجهاز هذه للأضواء، عادةً مع إمكانيات \'onoff\' (تشعيل/إيقاف) و\'dim\' (تعتيم) و\'light_*\' (الضوء).","nl":"Gebruik deze apparaatklasse voor lichten, meestal samen met de opties \'onoff\', \'dim\' en \'light_*\'."}}')},6081:(e,t,a)=>{var r={"./alarm_battery.json":1997,"./alarm_bin_full.json":1615,"./alarm_bin_missing.json":5686,"./alarm_cleaning_pad_missing.json":6962,"./alarm_co.json":4522,"./alarm_co2.json":212,"./alarm_cold.json":8114,"./alarm_connectivity.json":7667,"./alarm_contact.json":1080,"./alarm_door_fault.json":6291,"./alarm_fire.json":2544,"./alarm_freeze_risk.json":5899,"./alarm_gas.json":9981,"./alarm_generic.json":2477,"./alarm_heat.json":7530,"./alarm_light.json":7008,"./alarm_lost.json":1366,"./alarm_moisture.json":7122,"./alarm_motion.json":570,"./alarm_night.json":8006,"./alarm_noise.json":6410,"./alarm_occupancy.json":9509,"./alarm_open.json":8364,"./alarm_pm01.json":7800,"./alarm_pm1.json":1530,"./alarm_pm10.json":7110,"./alarm_pm25.json":2190,"./alarm_power.json":5633,"./alarm_presence.json":7741,"./alarm_problem.json":9091,"./alarm_pump_device.json":4525,"./alarm_pump_supply.json":3816,"./alarm_rain.json":8142,"./alarm_running.json":7099,"./alarm_safety.json":9894,"./alarm_smoke.json":9073,"./alarm_stuck.json":6312,"./alarm_tamper.json":77,"./alarm_tank_empty.json":8390,"./alarm_tank_missing.json":2123,"./alarm_tank_open.json":601,"./alarm_vibration.json":7250,"./alarm_water.json":1275,"./audio_output.json":868,"./battery_charging_state.json":5777,"./button.json":4946,"./channel_down.json":5366,"./channel_up.json":295,"./cooking_time.json":1574,"./dim.json":3872,"./dishwasher_program.json":9337,"./docked.json":2744,"./ev_charging_state.json":3415,"./evcharger_charging.json":6929,"./evcharger_charging_state.json":7363,"./fan_mode.json":8187,"./fan_speed.json":9331,"./garagedoor_closed.json":2752,"./heater_operation_mode.json":3573,"./homealarm_state.json":140,"./hot_water_mode.json":9249,"./laundry_dryer_dryness.json":7975,"./laundry_washer_cycles.json":4346,"./laundry_washer_program.json":4355,"./laundry_washer_speed.json":8504,"./level_aqi.json":714,"./level_carbon_filter.json":5391,"./level_ch2o.json":7073,"./level_co.json":2139,"./level_co2.json":4195,"./level_hepa_filter.json":7920,"./level_nox.json":8686,"./level_o3.json":5003,"./level_pm01.json":1417,"./level_pm1.json":2621,"./level_pm10.json":8627,"./level_pm25.json":759,"./level_radon.json":1169,"./level_so2.json":6355,"./level_tvoc.json":4345,"./light_hue.json":6983,"./light_mode.json":8272,"./light_saturation.json":6907,"./light_temperature.json":4131,"./lock_mode.json":6797,"./locked.json":4096,"./measure_aqi.json":3808,"./measure_battery.json":2524,"./measure_carbon_filter.json":4173,"./measure_ch2o.json":9975,"./measure_co.json":3597,"./measure_co2.json":5165,"./measure_content_volume.json":7951,"./measure_current.json":104,"./measure_data_rate.json":6478,"./measure_data_size.json":7893,"./measure_distance.json":1832,"./measure_frequency.json":9183,"./measure_gust_angle.json":1288,"./measure_gust_strength.json":6656,"./measure_hepa_filter.json":9450,"./measure_humidity.json":8878,"./measure_luminance.json":3387,"./measure_moisture.json":17,"./measure_monetary.json":2940,"./measure_noise.json":9819,"./measure_nox.json":3940,"./measure_o3.json":7557,"./measure_odor.json":9581,"./measure_ph.json":9735,"./measure_pm01.json":795,"./measure_pm1.json":51,"./measure_pm10.json":2517,"./measure_pm25.json":3741,"./measure_power.json":9792,"./measure_pressure.json":1036,"./measure_radon.json":3803,"./measure_rain.json":593,"./measure_rain_intensity.json":3383,"./measure_rotation.json":8013,"./measure_signal_strength.json":2269,"./measure_so2.json":6957,"./measure_speed.json":2254,"./measure_temperature.json":5771,"./measure_tvoc.json":9415,"./measure_tvoc_index.json":596,"./measure_ultraviolet.json":8724,"./measure_voltage.json":287,"./measure_water.json":1482,"./measure_weight.json":6171,"./measure_wind_angle.json":517,"./measure_wind_strength.json":3651,"./media_input.json":2501,"./meter_gas.json":4966,"./meter_power.json":3789,"./meter_rain.json":5858,"./meter_water.json":2823,"./microwave_mode.json":2391,"./mower_state.json":8062,"./onoff.json":8220,"./operational_state.json":8324,"./oscillating.json":4267,"./oven_mode.json":5150,"./power_boost.json":5643,"./power_level.json":8434,"./progress.json":4861,"./pump_mode.json":3598,"./pump_setpoint.json":2843,"./refrigerator_mode.json":3278,"./speaker_album.json":831,"./speaker_artist.json":7067,"./speaker_duration.json":432,"./speaker_next.json":2917,"./speaker_playing.json":4482,"./speaker_position.json":1227,"./speaker_prev.json":4049,"./speaker_repeat.json":6999,"./speaker_shuffle.json":965,"./speaker_stop.json":5248,"./speaker_track.json":4631,"./swing_mode.json":6038,"./target_humidity.json":993,"./target_humidity_max.json":3456,"./target_humidity_min.json":5062,"./target_power.json":2861,"./target_power_mode.json":2362,"./target_temperature.json":4078,"./target_temperature_level.json":2519,"./target_temperature_max.json":1247,"./target_temperature_min.json":5493,"./thermostat_mode.json":1419,"./vacuumcleaner_job_mode.json":8037,"./vacuumcleaner_state.json":5091,"./valve_position.json":9514,"./volume_down.json":4249,"./volume_mute.json":7364,"./volume_set.json":3907,"./volume_up.json":1491,"./windowcoverings_closed.json":4541,"./windowcoverings_set.json":6015,"./windowcoverings_state.json":3822,"./windowcoverings_tilt_down.json":8395,"./windowcoverings_tilt_set.json":7593,"./windowcoverings_tilt_up.json":6774};function i(e){var t=n(e);return a(t)}function n(e){if(!a.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}i.keys=function(){return Object.keys(r)},i.resolve=n,e.exports=i,i.id=6081},6171:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Weight","nl":"Gewicht","da":"Vægt","it":"Peso","ko":"무게","pl":"Waga","ru":"Вес","sv":"Vikt","es":"Peso","fr":"Poids","no":"Vekt","ar":"الوزن","de":"Gewicht"},"units":{"en":"g","nl":"g","da":"g","it":"g","ko":"g","pl":"g","ru":"г","sv":"g","es":"g","fr":"g","no":"g","ar":"جرام","de":"g"},"desc":{"en":"Generic mass in grams; weight is used instead of mass to fit with everyday language.","nl":"Generieke massa in grammen; gewicht wordt gebruikt in plaats van massa om aan te sluiten bij het alledaagse taalgebruik.","da":"Generisk masse i gram; vægt bruges i stedet for masse for at passe til hverdagssproget.","it":"Massa generica in grammi; il peso è usato al posto della massa per adattarsi al linguaggio quotidiano.","ko":"그램은 일반적으로 질량 단위이지만, 일상 언어에 맞게 질량 대신 무게라는 용어를 사용합니다.","pl":"Ogólna masa w gramach; słowo „waga” jest użyte zamiast „masa”, aby pasowało do codziennego języka.","ru":"Общая масса в граммах; вес используется вместо массы, с учетом сложившейся традиции в повседневной речи.","sv":"Generisk massa i gram; vikt används i stället för massa för att passa in i vardagsspråket.","es":"Masa genérica en gramos; se utiliza el peso en lugar de la masa para facilitar la comprensión.","fr":"Masse générique en grammes ; le terme \\"poids\\" est utilisé au lieu de \\"masse\\" pour s\'ajuster au langage courant.","no":"Generisk masse i gram – vekt brukes i stedet for masse siden det brukes i dagligtalen.","ar":"الكتلة العامة بالجرام؛ يتم استخدام الوزن بدلًا من الكتلة ليتناسب مع اللغة اليومية.","de":"Allgemeine Masse in Gramm; aus Gründen der Alltagssprache wird anstelle von Masse „Gewicht“ verwendet."},"insights":true,"chartType":"spline","decimals":2,"color":"#FFA07A","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_weight_changed","title":{"en":"The weight changed","nl":"Het gewicht is veranderd","da":"Vægten ændrede sig","it":"Il peso è cambiato","ko":"무게가 변경되면","pl":"Zmieniła się waga","ru":"Вес изменился","sv":"Vikten ändrades","es":"El peso ha cambiado","fr":"Le poids a changé","no":"Vekten ble endret","ar":"تغير الوزن","de":"Das Gewicht hat sich geändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":2}]}]},"minCompatibility":"12.2.0"}')},6175:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Shutter Blinds","da":"Persienner","de":"Jalousien","es":"Persianas","fr":"Volets roulants","it":"Tapparelle","ko":"셔터 블라인드","nl":"Jaloezieën","no":"Persienner","pl":"Żaluzje","ru":"Жалюзи","sv":"Persienner","ar":"ستائر متحركة"},"description":{"en":"Use this device class for shutter blinds.","da":"Brug denne enhedsklasse til persienner.","de":"Verwenden Sie diese Geräteklasse für Jalousien.","es":"Utiliza esta clase de dispositivo para persianas.","fr":"Utiliser cette classe d\'appareils pour les volets roulants.","it":"Utilizza questa classe di dispositivi per le tapparelle.","ko":"이 디바이스 클래스는 셔터 블라인드에 사용합니다.","nl":"Gebruik deze apparaatklasse voor jaloezieën.","no":"Bruk denne enhetsklassen for persienner.","pl":"Tej klasy urządzeń należy używać w przypadku żaluzji.","ru":"Используйте этот класс устройств для жалюзи.","sv":"Använd den här enhetsklassen för persienner.","ar":"استخدم فئة الجهاز هذه للستائر المتحركة."},"minCompatibility":"12.0.0"}')},6192:(e,t,a)=>{"use strict";const r=a(3532);let i;class n{static getClasses(){if(i)return i;const e=a(8293);return i=e.reduce(((e,t)=>(e[t]=a(1013)(`./${t}.json`),e)),{}),i}static getClass(e){const t=n.getClasses()[e];if(!t)throw new Error("invalid_class");return t}static getCapabilities(){return r.getCapabilities()}}e.exports=n},6207:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Microwave","da":"Mikrobølgeovn","de":"Mikrowelle","es":"Microondas","fr":"Micro-ondes","it":"Microonde","ko":"전자레인지","nl":"Magnetron","no":"Mikrobølgeovn","pl":"Mikrofalówka","ru":"Микроволновая печь","sv":"Mikrovågsugn","ar":"ميكروويف"},"description":{"en":"Use this device class for any kind of microwave, if it is a combi unit use \'oven_and_microwave\'.","da":"Brug denne enhedsklasse til enhver form for mikrobølgeovn, hvis det er en kombi-enhed, skal du bruge \'combi_microwave\'.","de":"Verwenden Sie diese Geräteklasse für jede Art von Mikrowelle. Wenn es sich um ein Kombigerät handelt, verwenden Sie „oven_and_microwave“.","es":"Utiliza esta clase de dispositivo para cualquier tipo de microondas. Si se trata de un equipo que combina horno y microondas, utiliza la clase \'oven_and_microwave\'.","fr":"Utilisez cette classe d\'appareils pour tout type de micro-ondes. S\'il s\'agit d\'une unité combinée, utilisez \\"oven_and_microwave\\".","it":"Utilizza questa classe di dispositivi per qualsiasi tipo di microonde; se si tratta di un\'unità combinata, utilizza \\"oven_and_microwave\\".","nl":"Gebruik deze apparaatklasse voor elke soort magnetron, als het een combimagnetron is gebruik dan \'oven_and_microwave\'.","no":"Bruk denne enhetsklassen for alle slags mikrobølgeovner. For kombienheter, bruk «combi_microwave».","pl":"Tej klasy urządzeń należy używać dla każdego rodzaju kuchenki mikrofalowej, jeśli jest to urządzenie combi, należy użyć klasy \\"oven_and_microwave\\".","ru":"Используйте этот класс устройств для микроволновых печей любого типа; в случае комбинированного устройства используйте oven_and_microwave.","sv":"Använd den här enhetsklassen för alla typer av mikrovågsugnar, om det är en kombienhet ska du använda \'oven_and_microwave\'.","ko":"이 디바이스 클래스는 모든 종류의 전자레인지에 사용하되, 콤비오븐의 경우 \'combi_microwave\'를 사용합니다.","ar":"استخدم فئة الجهاز هذه لأي نوع من أجهزة الميكروويف، إذا كانت وحدة مدمجة فاستخدم \'oven_and_microwave\' (فرن وميكروويف)."},"minCompatibility":"12.0.0"}')},6282:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Vehicle","da":"Køretøj","de":"Fahrzeug","es":"Vehículo","fr":"Véhicule","it":"Veicolo","ko":"차량","nl":"Voertuig","no":"Kjøretøy","pl":"Pojazd","ru":"Транспортное средство","sv":"Fordon","ar":"مركبة"},"description":{"en":"Use this device class for any type of vehicle, when the `car`, `bicycle` or `scooter` device class doesn\'t apply.","da":"Brug denne enhedsklasse til alle typer køretøjer, når enhedsklassen `bil`, `cykel` eller `scooter` ikke gælder.","de":"Verwenden Sie diese Geräteklasse für jede Art von Fahrzeug, wenn die Geräteklassen „Auto“, „Fahrrad“ oder „Motorroller“ nicht zutreffen.","es":"Utiliza esta clase de dispositivo para cualquier tipo de vehículo que no pertenezca a las clases \\"Coche\\", \\"Bicicleta\\" o \\"Scooter\\".","fr":"Utilisez cette classe d\'appareils pour tout type de véhicule, lorsque la classe d\'appareils \\"voiture\\", \\"vélo\\" ou \\"trotinette\\" ne s\'applique pas.","it":"Utilizza questa classe di dispositivi per qualsiasi tipo di veicolo, quando la classe \\"automobile\\", \\"bicicletta\\" o \\"scooter\\" non è applicabile.","ko":"이 디바이스 클래스는 \'car\', \'bicycle\', \'scooter\' 디바이스가 적용되지 않는 모든 종류의 탈것에 사용합니다.","nl":"Gebruik deze apparaatklasse voor elk type voertuig, wanneer de apparaatklasse \'auto\', \'fiets\' of \'scooter\' niet van toepassing is.","no":"Bruk denne enhetsklassen for alle typer kjøretøy som ikke dekkes av enhetsklassene\\n«bil», «sykkel» eller «scooter».","pl":"Tej klasy urządzeń należy używać dla dowolnego typu pojazdu, gdy klasa urządzeń „samochód”, „rower” lub „skuter” nie ma zastosowania.","ru":"Используйте этот класс устройств для транспортных средств любого типа, которые не относятся к классу устройств «автомобиль», «велосипед» или «самокат».","sv":"Använd den här enhetsklassen för alla typer av fordon, när enhetsklassen \\"bil\\", \\"cykel\\" eller \\"skoter\\" inte är tillämplig.","ar":"استخدم فئة الجهاز هذه لأي نوع من المركبات، عندما لا تنطبق فئة الجهاز \'سيارة\' أو \'دراجة هوائية\' أو \'سكوتر\'."},"virtualTitle":{"en":"What\'s the type?","da":"Hvad er typen?","de":"Um welchen Typ handelt es sich?","es":"¿De qué tipo es?","fr":"Quel est le type ?","it":"Di che tipo è?","ko":"어떤 유형인가요?","nl":"Wat is het type?","no":"Hvilken type er det?","pl":"Jaki to typ?","ru":"Какой тип?","sv":"Vad är det för typ?","ar":"ما هو النوع؟"},"allowedVirtual":["bicycle","car","scooter"],"minCompatibility":"12.0.0"}')},6291:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Door Fault Alarm","nl":"Deur-probleemalarm","da":"Alarm for dørfejl","fr":"Alarme de défaut de porte","it":"Allarme guasto porta","ko":"도어 에러 감지","no":"Dørfeilalarm","pl":"Alarm usterki drzwi","ru":"Сигнал о неисправности двери","sv":"Larm för dörrfel","es":"Alarma de fallo en puerta","ar":"إنذار عطل الباب","de":"Türstörungsalarm"},"titleShort":{"en":"Door Fault","nl":"Deurfout","da":"Dørfejl","fr":"Défaut de porte","it":"Guasto porta","ko":"도어 결함","no":"Dørfeil","pl":"Usterka drzwi","ru":"Неисправность двери","sv":"Dörrfel","es":"Fallo en puerta","ar":"عطل بالباب","de":"Störung der Tür"},"desc":{"en":"True when there is an issue with the door or lock.","nl":"Wordt geactiveerd wanneer er een probleem is met de deur of het slot.","da":"Sandt, når der er et problem med døren eller låsen.","fr":"Se déclenche lorsque la porte ou la serrure présente un problème.","it":"Vero quando c\'è un problema con la porta o la serratura.","ko":"도어 또는 록에 문제가 있으면 참입니다.","no":"Sann når det er et problem med døren eller låsen.","pl":"Prawda, gdy występuje problem z drzwiami lub zamkiem.","ru":"Значение «истина», когда обнаружена проблема с дверью или замком.","sv":"Sant när det finns ett problem med dörren eller låset.","es":"Activado cuando hay un problema con la puerta o la cerradura.","ar":"صحيح عند وجود مشكلة في الباب أو القفل.","de":"Wahr, wenn es ein Problem mit der Tür oder dem Schloss gibt."},"insights":true,"insightsTitleTrue":{"en":"Door fault alarm turned on","nl":"Waarschuwing bij defect aan deur geactiveerd","da":"Alarm for dørfejl slået til","fr":"Alarme de défaut de porte activée","it":"Allarme guasto porta acceso","ko":"도어 에러 감지됨","no":"Dørfeilalarm aktivert","pl":"Alarm usterki drzwi włączony","ru":"Сигнал о неисправности двери включен","sv":"Larm för dörrfel aktiverat","es":"Alarma de fallo en puerta activada","ar":"تم تشغيل إنذار عطل الباب","de":"Türstörungsalarm eingeschaltet"},"insightsTitleFalse":{"en":"Door fault alarm turned off","nl":"Waarschuwing bij defect aan deur gedeactiveerd","da":"Alarm for dørfejl slået fra","fr":"Alarme de défaut de porte désactivée","it":"Allarme guasto porta spento","ko":"도어 에러 감지되지 않음","no":"Dørfeilalarm deaktivert","pl":"Alarm usterki drzwi wyłączony","ru":"Сигнал о неисправности двери выключен","sv":"Larm för dörrfel inaktiverat","es":"Alarma de fallo en puerta desactivada","ar":"تم إيقاف إنذار عطل الباب","de":"Türstörungsalarm ausgeschaltet"},"color":"#0082FA","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_door_fault_true","highlight":true,"title":{"en":"The door alarm turned on","nl":"De deurwaarschuwing is geactiveerd","da":"Døralarmen slået til","fr":"L\'alarme de la porte s\'est activée","it":"L\'allarme della porta si è acceso","ko":"도어 에러가 감지되면","no":"Døralarmen ble aktivert","pl":"Włączył się alarm drzwi","ru":"Сигнал о неисправности двери включен","sv":"Dörrlarmet aktiverat","es":"La alarma de la puerta se ha activado","ar":"تم تشغيل إنذار الباب","de":"Der Türalarm wurde eingeschaltet"}},{"id":"alarm_door_fault_false","title":{"en":"The door alarm turned off","nl":"De deurwaarschuwing is gedeactiveerd","da":"Døralarmen slået fra","fr":"L\'alarme de la porte s\'est désactivée","it":"L\'allarme della porta si è spento","ko":"도어 에러가 감지되지 않으면","no":"Døralarmen ble deaktivert","pl":"Wyłączył się alarm drzwi","ru":"Сигнал о неисправности двери выключен","sv":"Dörrlarmet inaktiverat","es":"La alarma de la puerta se ha desactivado","ar":"تم إيقاف إنذار الباب","de":"Der Türalarm wurde ausgeschaltet"}}],"conditions":[{"id":"alarm_door_fault","title":{"en":"The door alarm is !{{on|off}}","nl":"De deurwaarschuwing is !{{geactiveerd|gedeactiveerd}}","da":"Døralarmen er slået !{{til|fra}}","it":"L\'allarme della porta è !{{acceso|spento}}","ko":"도어 에러가 !{{감지되면|감지되지 않으면}}","no":"Døralarmen er !{{på|av}}","pl":"Alarm drzwi jest !{{włączony|wyłączony}}","ru":"Сигнал о неисправности двери !{{включен|выключен}}","sv":"Dörrlarmet är aktiverat !{{på|av}}","es":"La alarma de la puerta está !{{activada|desactivada}}","fr":"L\'alarme de porte est !{{activée|désactivée}}","ar":"إنذار الباب !{{يعمل|لا يعمل}}","de":"Der Türalarm ist !{{an|aus}}"}}]},"minCompatibility":"12.2.0"}')},6312:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Stuck Alarm","nl":"Vastgelopen-alarm","da":"Fastlåst alarm","it":"Allarme dispositivo bloccato","ko":"기기 막힘 감지","no":"Fastkjøringsalarm","pl":"Alarm zablokowania","ru":"Сигнал о заклинивании","sv":"Larm om att något fastnat","es":"Alarma de atasco","fr":"Alarme d\'appareil bloqué","ar":"إنذار التعلق","de":"„Blockiert“-Alarm"},"titleShort":{"en":"Stuck","nl":"Vast","da":"Fastlåst","it":"Dispositivo bloccato","ko":"막힘","no":"Fastkjøring","pl":"Zablokowanie","ru":"Заклинивание","sv":"Fastnat","es":"Atasco","fr":"Appareil bloqué","ar":"عالق","de":"Blockiert"},"desc":{"en":"True when the device is stuck.","nl":"Gaat af als het apparaat is vastgelopen.","da":"Sandt, når enheden sidder fast.","it":"Vero quando il dispositivo è bloccato.","ko":"디바이스가 막히면 참입니다.","no":"Sann når enheten sitter fast.","pl":"Prawda, gdy urządzenie jest zablokowane.","ru":"Значение «истина», когда устройство заклинило.","sv":"Sant när enheten har fastnat.","es":"Activado cuando el dispositivo está atascado.","fr":"Se déclenche lorsque l\'appareil est bloqué.","ar":"صحيح عندما يكون الجهاز عالقًا.","de":"Wahr, wenn das Gerät blockiert ist."},"insights":true,"insightsTitleTrue":{"en":"Was stuck","nl":"Zat vast","da":"Sad fast","it":"Era bloccato","ko":"기기 막힘 감지됨","no":"Satt fast","pl":"Było zablokowane","ru":"Заклинило","sv":"Var fast","es":"Estaba atascado","fr":"Était bloqué","ar":"كان عالقًا","de":"War blockiert"},"insightsTitleFalse":{"en":"Was no longer stuck","nl":"Zat niet meer vast","da":"Sad ikke længere fast","it":"Non era più bloccato","ko":"정상","no":"Satt ikke lenger fast","pl":"Nie było już zablokowane","ru":"Больше не заклинено","sv":"Var inte längre fast","es":"Ya no estaba atascado","fr":"N\'était plus bloqué","ar":"لم يعد عالقًا","de":"War nicht mehr blockiert"},"color":"#9033FC","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_stuck_true","highlight":true,"title":{"en":"Is stuck","nl":"Zit vast","da":"Sidder fast","it":"È bloccato","ko":"기기 막힘이 감지되면","no":"Sitter fast","pl":"Jest zablokowane","ru":"Заклинено","sv":"Är fast","es":"Está atascado","fr":"Est bloqué","ar":"عالق","de":"Ist blockiert"}},{"id":"alarm_stuck_false","title":{"en":"Is no longer stuck","nl":"Zit niet meer vast","da":"Sidder ikke længere fast","it":"Non è più bloccato","ko":"기기 막힘 감지가 정상 상태이면","no":"Sitter ikke lenger fast","pl":"Nie jest już zablokowane","ru":"Больше не заклинено","sv":"Är inte längre fast","es":"Ya no está atascado","fr":"N\'est plus bloqué","ar":"لم يعد عالقًا","de":"Ist nicht mehr blockiert"}}],"conditions":[{"id":"alarm_stuck","title":{"en":"Is !{{stuck|not stuck}}","nl":"Zit !{{vast|niet vast}}","da":"Er !{{fastlåst|ikke fastlåst}}","it":"È !{{bloccato|sbloccato}}","ko":"!{{기기 막힘이 감지되면|기기 막힘 감지가 정상 상태이면}}","no":"Sitter !{{fast|ikke fast}}","pl":"Jest !{{zablokowane|niezablokowane}}","ru":"Устройство !{{заклинено|не заклинено}}","sv":"Är !{{fast|inte fast}}","es":"!{{Está atascado|No está atascado}}","fr":"Est !{{connectée|déconnectée}}","ar":"هو !{{عالق|غير عالق}}","de":"Ist !{{blockiert|nicht blockiert}}"}}]},"minCompatibility":"12.2.0"}')},6346:(e,t,a)=>{"use strict";const{validate:r,genericValidator:i,irValidator:n,rfValidator:s,rf433Validator:o,rf868Validator:l,modulationValidator:d,prontoValidator:u}=a(5075);e.exports=class{constructor(e,{frequency:t}={}){this._signal=e,this._frequency=t,this._check=this._check.bind(this)}debug(...e){this._debug&&console.log("[dbg]",...e)}_check(e,t){if(!0!==t)throw new Error(e)}async validate({debug:e=!1}={}){if(this._debug=e,this.debug("Validating signal"),!this._signal)throw new Error("Invalid Signal");if("prontohex"===this._signal.type)this._validateProntohex();else{if(void 0!==this._signal.type)throw new Error("Invalid Signal type");this._validateRegular()}if("433"===this._frequency)this._validate433();else if("868"===this._frequency)this._validate868();else{if("ir"!==this._frequency)throw new Error("Invalid Frequency");this._validateInfrared()}this.debug("Validated successfully")}_validateWithEngine(e){return r(e,this._check,this._signal)}_validateProntohex(){this._check("mandatory_fields",this._signal.hasOwnProperty("cmds")),this._validateWithEngine(u)}_validateRegular(){this._check("mandatory_fields",this._signal.hasOwnProperty("sof")||this._signal.hasOwnProperty("eof")||this._signal.hasOwnProperty("words")),this._validateWithEngine(i),this._validateWithEngine(s)}_validate433(){this._validateWithEngine(d),this._validateWithEngine(o)}_validate868(){this._validateWithEngine(d),this._validateWithEngine(l)}_validateInfrared(){this._validateWithEngine(n)}}},6355:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"SO₂ Level","nl":"SO₂-niveau","da":"SO₂-niveau","it":"Livello di SO₂","ko":"SO₂ 수준","pl":"Poziom SO₂","ru":"Уровень SO₂","sv":"SO₂-nivå","es":"Nivel de SO₂","fr":"Niveau de SO₂","no":"SO₂-nivå","ar":"مستوى ثاني أكسيد الكبريت","de":"SO₂-Gehalt"},"desc":{"en":"The level of sulfur dioxide in the air.","nl":"De mate van zwaveldioxide in de lucht.","da":"Niveauet af svovldioxid i luften.","it":"Il livello di anidride solforosa nell\'aria.","ko":"공기 중 이산화황의 수준입니다.","pl":"Poziom dwutlenku siarki w powietrzu.","ru":"Уровень содержания диоксида серы в воздухе.","sv":"Halten av svaveldioxid i luften.","es":"El nivel de dióxido de azufre en el aire.","fr":"Le niveau de dioxyde de soufre dans l\'air.","no":"Nivået av svoveldioksid i luften.","ar":"مستوى ثاني أكسيد الكبريت في الهواء.","de":"Der Schwefeldioxidgehalt in der Luft."},"values":[{"id":"low","title":{"en":"Low","nl":"Laag","da":"Lavt","it":"Basso","ko":"낮음","pl":"Niski","ru":"Низкий","sv":"Låg","es":"Bajo","fr":"Faible","no":"Lavt","ar":"منخفض","de":"Niedrig"}},{"id":"medium","title":{"en":"Medium","nl":"Gemiddeld","da":"Medium","it":"Medio","ko":"보통","pl":"Średni","ru":"Средний","sv":"Medium","es":"Intermedio","fr":"Moyen","no":"Middels","ar":"متوسط","de":"Mittel"}},{"id":"high","title":{"en":"High","nl":"Hoog","da":"Højt","it":"Alto","ko":"높음","pl":"Wysoki","ru":"Высокий","sv":"Hög","es":"Alto","fr":"Élevé","no":"Høyt","ar":"عالي","de":"Hoch"}},{"id":"critical","title":{"en":"Critical","nl":"Kritiek","da":"Kritisk","it":"Critico","ko":"위험","pl":"Krytyczny","ru":"Критический","sv":"Kritisk","es":"Crítico","fr":"\\n","no":"Kritisk","ar":"حرج","de":"Kritisch"}}],"color":"#FA6400","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"level_so2_changed","highlight":true,"title":{"en":"The SO₂ level changed to","nl":"Het SO₂-niveau is veranderd naar","da":"SO₂-niveauet blev ændret til","it":"Il livello di SO₂ è passato a","ko":"SO₂ 수준이 다음으로 변경되면","pl":"Poziom SO₂ zmienił się na","ru":"Уровень SO₂ изменился на","sv":"SO₂-nivån ändrades till","es":"El nivel de SO₂ ha cambiado a","fr":"Le niveau de SO₂ est passé à","no":"SO₂-nivået ble endret til","ar":"تغير مستوى ثاني أكسيد الكبريت إلى","de":"Der SO₂-Gehalt hat sich geändert auf"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"level_so2_is","title":{"en":"The SO₂ level !{{is|is not}}","nl":"Het SO₂-niveau !{{is|is niet}}","da":"SO₂-niveauet !{{er|er ikke}}","it":"Il livello di SO₂ !{{è|non è}}","ko":"SO₂ 수준이 다음!{{이면|이 아니면}}","pl":"Poziom SO₂ !{{jest|nie jest}}","ru":"Уровень SO₂ !{{|не}}","sv":"SO₂-nivån !{{är|är inte}}","es":"El nivel de SO₂ !{{es|no es}}","fr":"Le niveau de SO₂ !{{est|n\'est pas}}","no":"SO₂-nivået !{{er|er ikke}}","ar":"مستوى ثاني أكسيد الكبريت !{{هو|ليس}}","de":"Der SO₂-Gehalt !{{ist|ist nicht}}"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.2.0"}')},6410:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Noise Alarm","nl":"Geluidswaarschuwing","da":"Støjalarm","it":"Allarme rumore","ko":"소음 감지","no":"Støyalarm","pl":"Alarm hałasu","ru":"Сигнал шума","sv":"Bullerlarm","es":"Alarma de ruido","fr":"Alarme sonore","ar":"إنذار الضوضاء","de":"Geräuschalarm"},"titleShort":{"en":"Noise","nl":"Geluid","da":"Støj","it":"Rumore","ko":"소음","no":"Støy","pl":"Hałas","ru":"Шум","sv":"Buller","es":"Ruido","fr":"Son","ar":"الضوضاء","de":"Geräusch"},"desc":{"en":"True when sound is detected.","nl":"Wordt geactiveerd wanneer geluid wordt gedetecteerd.","da":"Sandt, når der registreres lyd.","it":"Vero quando viene rilevato un suono.","ko":"소리가 감지되면 참입니다.","no":"Sann når lyd registreres.","pl":"Prawda, gdy wykryty jest dźwięk.","ru":"Значение «истина» при обнаружении звука.","sv":"Sant när ljud detekteras.","es":"Activado cuando se detecta sonido.","fr":"Se déclenche lorsque du son est détecté.","ar":"صحيح عند اكتشاف صوت.","de":"Wahr, wenn Ton erkannt wird."},"insights":true,"insightsTitleTrue":{"en":"Noise Alarm turned on","nl":"Geluidswaarschuwing geactiveerd","da":"Støjalarm slået til","it":"Allarme rumore acceso","ko":"소음 감지됨","no":"Støyalarm aktivert","pl":"Alarm hałasu włączony","ru":"Сигнал шума включен","sv":"Bullerlarm aktiverat","es":"Alarma de ruido activada","fr":"Alarme sonore activée","ar":"تم تشغيل إنذار الضوضاء","de":"Geräuschalarm eingeschaltet"},"insightsTitleFalse":{"en":"Noise Alarm turned off","nl":"Geluidswaarschuwing gedeactiveerd","da":"Støjalarm slået fra","it":"Allarme rumore spento","ko":"소음 감지되지 않음","no":"Støyalarm deaktivert","pl":"Alarm hałasu wyłączony","ru":"Сигнал шума выключен","sv":"Bullerlarm inaktiverat","es":"Alarma de ruido desactivada","fr":"Alarme sonore désactivée","ar":"تم إيقاف إنذار الضوضاء","de":"Geräuschalarm ausgeschaltet"},"color":"#F7B500","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_noise_true","highlight":true,"title":{"en":"The noise alarm turned on","nl":"De geluidswaarschuwing is geactiveerd","da":"Støjalarmen er slået til","it":"L\'allarme rumore si è acceso","ko":"소음이 감지되면","no":"Støyalarmen ble aktivert","pl":"Włączył się alarm hałasu","ru":"Сигнал шума включен","sv":"Bullerlarm aktiverat","es":"La alarma de ruido se ha activado","fr":"L\'alarme sonore s\'est activée","ar":"تم تشغيل إنذار الضوضاء","de":"Der Lärmalarm hat sich eingeschaltet"}},{"id":"alarm_noise_false","title":{"en":"The noise alarm turned off","nl":"De geluidswaarschuwing is gedeactiveerd","da":"Støjalarmen slået fra","it":"L\'allarme rumore si è spento","ko":"소음이 감지되지 않으면","no":"Støyalarmen ble deaktivert","pl":"Wyłączył się alarm hałasu","ru":"Сигнал шума выключен","sv":"Bullerlarm inaktiverat","es":"La alarma de ruido se ha desactivado","fr":"L\'alarme sonore s\'est désactivée","ar":"تم إيقاف إنذار الضوضاء","de":"Der Lärmalarm hat sich ausgeschaltet"}}],"conditions":[{"id":"alarm_noise","title":{"en":"The noise alarm is !{{on|off}}","nl":"De geluidswaarschuwing is !{{geactiveerd|gedeactiveerd}}","da":"Støjalarmen er slået !{{til|fra}}","it":"L\'allarme rumore è !{{acceso|spento}}","ko":"소음이 감지!{{되면|되지 않으면}}","no":"Støyalarmen er !{{på|av}}","pl":"Alarm hałasu jest !{{włączony|wyłączony}}","ru":"Сигнал шума !{{включен|выключен}}","sv":"Bullerlarmet är aktiverat !{{på|av}}","es":"La alarma de ruido está !{{activada|desactivada}}","fr":"L\'alarme sonore est !{{activée|désactivée}}","ar":"إنذار الضوضاء !{{يعمل|لا يعمل}}","de":"Der Geräuschalarm ist !{{an|aus}}"}}]},"minCompatibility":"12.2.0"}')},6459:e=>{"use strict";function t(e,t){var a=e.readUInt8(t);return 0===a?256:a}function a(e,a){var r=6+16*a;return{width:t(e,r),height:t(e,r+1)}}e.exports={detect:function(e){return 0===e.readUInt16LE(0)&&1===e.readUInt16LE(2)},calculate:function(e){var t,r=e.readUInt16LE(4),i=a(e,0);if(1===r)return i;for(i.images=[{width:i.width,height:i.height}],t=1;t{"use strict";e.exports=JSON.parse('{"title":{"en":"Fireplace","da":"Ildsted","de":"Kamin","es":"Chimenea","fr":"Cheminée","it":"Camino","ko":"난로","nl":"Open haard","no":"Peis","pl":"Kominek","ru":"Камин","sv":"Öppen spis","ar":"مدفأة"},"description":{"en":"Use this device class for fireplaces.","da":"Brug denne enhedsklasse til ildsteder.","de":"Verwenden Sie diese Geräteklasse für Kamine.","es":"Utiliza esta clase de dispositivo para chimeneas.","fr":"Utilisez cette classe d\'appareils pour les cheminées.","it":"Utilizza questa classe di dispositivi per i camini.","ko":"이 디바이스 클래스는 난로에 사용합니다.","nl":"Gebruik deze apparaatklasse voor open haarden.","no":"Bruk denne enhetsklassen for peiser.","pl":"Tej klasy urządzeń należy używać w przypadku kominków.","ru":"Используйте этот класс устройств для каминов.","sv":"Använd den här enhetsklassen för öppna spisar.","ar":"استخدم فئة الجهاز هذه للمدافئ."},"minCompatibility":"12.0.0"}')},6478:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Data Rate","nl":"Gegevenssnelheid","da":"Datahastighed","it":"Velocità di trasmissione dei dati","ko":"데이터 전송률","pl":"Szybkość transmisji danych","ru":"Скорость передачи данных","sv":"Datahastighet","es":"Velocidad de datos","fr":"Débits de données","no":"Bitrate","ar":"معدل البيانات","de":"Datenrate"},"units":{"en":"b/s","nl":"b/s","da":"b/s","it":"b/s","ko":"b/s","pl":"b/s","ru":"бит/с","sv":"b/s","es":"b/s","fr":"b/s","no":"b/s","ar":"بت/ثانية","de":"b/s"},"desc":{"en":"The data rate in bits per second.","nl":"De gegevenssnelheid in bits per seconde.","da":"Datahastigheden i bits pr. sekund.","it":"La velocità di trasmissione dei dati in bit al secondo.","ko":"초당 비트 단위의 데이터 전송률입니다.","pl":"Szybkość transmisji danych w bitach na sekundę.","ru":"Скорость передачи данных в битах в секунду.","sv":"Datahastigheten i bitar per sekund.","es":"La velocidad de transmisión de datos en bits por segundo.","fr":"Le débit de données en bits par seconde.","no":"Bitrate i bits per sekund.","ar":"معدل البيانات بالبت في الثانية.","de":"Die Datenrate in Bits pro Sekunde."},"insights":true,"chartType":"spline","decimals":0,"color":"#6236FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_data_rate_changed","title":{"en":"The data rate changed","nl":"De gegevenssnelheid is veranderd","da":"Datahastigheden ændrede sig","it":"La velocità di trasmissione dei dati è cambiata","ko":"데이터 전송률이 변경되면","pl":"Zmieniła się szybkość transmisji danych","ru":"Скорость передачи данных изменилась","sv":"Datahastigheten ändrades","es":"La velocidad de datos ha cambiado","fr":"Le débit de données a changé","no":"Bitraten ble endret","ar":"تغير معدل البيانات","de":"Die Datenrate hat sich geändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":200}]}]},"minCompatibility":"12.2.0"}')},6488:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Water Heater","da":"Vandvarmer","de":"Warmwasserbereiter","es":"Calentador de agua","fr":"Chauffe-eau","it":"Scaldabagno","ko":"온수기","nl":"Boiler","no":"Varmtvannsbereder","pl":"Podgrzewacz wody","ru":"Водонагреватель","sv":"Varmvattenberedare","ar":"سخان مياه"},"description":{"en":"Use this device class for water heaters.","da":"Brug denne enhedsklasse til vandvarmere.","de":"Verwenden Sie diese Geräteklasse für Warmwasserbereiter.","es":"Utiliza esta clase de dispositivo para calentadores de agua.","fr":"Utilisez cette classe d\'appareils pour les chauffe-eau.","it":"Utilizza questa classe di dispositivi per gli scaldabagno.","ko":"이 디바이스 클래스는 온수기에 사용합니다.","nl":"Gebruik deze apparaatklasse voor boilers.","no":"Bruk denne enhetsklassen for varmtvannsberedere.","pl":"Tej klasy urządzeń należy używać do podgrzewaczy wody.","ru":"Используйте этот класс устройств для водонагревателей.","sv":"Använd den här enhetsklassen för varmvattenberedare.","ar":"استخدم فئة الجهاز هذه لسخانات المياه."},"minCompatibility":"12.0.0"}')},6507:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Heater","nl":"Heater","de":"Heizung","fr":"Radiateur","it":"Termosifone","sv":"Element","no":"Varmeelement","es":"Calefactor","da":"Varmeapparat","ru":"Обогреватель","pl":"Grzejnik","ko":"히터","ar":"مدفأة"},"description":{"en":"Use this device class for heaters, that warm your home.","de":"Nutze diese Geräteklasse für Heizungen, die dein Heim wärmen.","fr":"Utilisez cette classe d\'appareil pour les radiateurs qui chauffent votre maison.","it":"Utilizza questa classe di dispositivi per i termosifoni, che riscaldano la tua casa.","sv":"Använd den här enhetsklassen för element, som värmer upp hemmet.","no":"Bruk denne enhetsklassen for varmeelement som varmer opp hjemmet ditt.","es":"Utiliza esta clase de dispositivo para los calefactores que calientan tu casa.","da":"Brug denne enhedsklasse til varmeapparater, som opvarmer dit hjem.","ru":"Используйте этот класс устройств для обогревателей, которые обогревают ваш дом.","pl":"Użyj tej klasy urządzeń dla grzejników, które ogrzewają dom.","ko":"이 디바이스 클래스는 집을 따뜻하게 해주는 히터에 사용합니다.","ar":"استخدم فئة الجهاز هذه للمدافئ التي تدفئ منزلك.","nl":"Gebruik deze apparaatklasse voor verwarmingen die je huis verwarmen."},"virtualTitle":{"en":"What\'s the type?","da":"Hvad er typen?","de":"Um welchen Typ handelt es sich?","es":"¿De qué tipo es?","fr":"Quel est le type ?","it":"Di che tipo è?","ko":"어떤 유형인가요?","nl":"Wat is het type?","no":"Hvilken type er det?","pl":"Jaki to typ?","ru":"Какой тип?","sv":"Vad är det för typ?","ar":"ما هو النوع؟"},"allowedVirtual":["radiator"]}')},6570:e=>{"use strict";e.exports=JSON.parse('{"USD":"$","CAD":"$","EUR":"€","AED":"د.إ.‏","AFN":"؋","ALL":"Lek","AMD":"դր.","ARS":"$","AUD":"$","AZN":"ман.","BAM":"KM","BDT":"৳","BGN":"лв.","BHD":"د.ب.‏","BIF":"FBu","BND":"$","BOB":"Bs","BRL":"R$","BWP":"P","BYR":"BYR","BZD":"$","CDF":"FrCD","CHF":"CHF","CLP":"$","CNY":"CN¥","COP":"$","CRC":"₡","CVE":"CV$","CZK":"Kč","DJF":"Fdj","DKK":"kr","DOP":"RD$","DZD":"د.ج.‏","EEK":"kr","EGP":"ج.م.‏","ERN":"Nfk","ETB":"Br","GBP":"£","GEL":"GEL","GHS":"GH₵","GNF":"FG","GTQ":"Q","HKD":"$","HNL":"L","HRK":"kn","HUF":"Ft","IDR":"Rp","ILS":"₪","INR":"টকা","IQD":"د.ع.‏","IRR":"﷼","ISK":"kr","JMD":"$","JOD":"د.أ.‏","JPY":"¥","KES":"Ksh","KHR":"៛","KMF":"FC","KRW":"₩","KWD":"د.ك.‏","KZT":"тңг.","LBP":"ل.ل.‏","LKR":"SL Re","LTL":"Lt","LVL":"Ls","LYD":"د.ل.‏","MAD":"د.م.‏","MDL":"MDL","MGA":"MGA","MKD":"MKD","MMK":"K","MOP":"MOP$","MUR":"MURs","MXN":"$","MYR":"RM","MZN":"MTn","NAD":"N$","NGN":"₦","NIO":"C$","NOK":"kr","NPR":"नेरू","NZD":"$","OMR":"ر.ع.‏","PAB":"B/.","PEN":"S/.","PHP":"₱","PKR":"₨","PLN":"zł","PYG":"₲","QAR":"ر.ق.‏","RON":"RON","RSD":"дин.","RUB":"руб.","RWF":"FR","SAR":"ر.س.‏","SDG":"SDG","SEK":"kr","SGD":"$","SOS":"Ssh","SYP":"ل.س.‏","THB":"฿","TND":"د.ت.‏","TOP":"T$","TRY":"TL","TTD":"$","TWD":"NT$","TZS":"TSh","UAH":"₴","UGX":"USh","UYU":"$","UZS":"UZS","VEF":"Bs.F.","VND":"₫","XAF":"FCFA","XOF":"CFA","YER":"ر.ي.‏","ZAR":"R","ZMK":"ZK"}')},6579:function(e,t){!function(e){"use strict";function t(){for(var e=arguments.length,t=Array(e),a=0;a1){t[0]=t[0].slice(0,-1);for(var r=t.length-1,i=1;i= 0x80 (not a basic code point)","invalid-input":"Invalid input"},h=Math.floor,v=String.fromCharCode;function f(e){throw new RangeError(g[e])}function k(e,t){var a=e.split("@"),r="";return a.length>1&&(r=a[0]+"@",e=a[1]),r+function(e,t){for(var a=[],r=e.length;r--;)a[r]=t(e[r]);return a}((e=e.replace(c,".")).split("."),t).join(".")}function y(e){for(var t=[],a=0,r=e.length;a=55296&&i<=56319&&a>1,e+=h(e/t);e>455;r+=u)e=h(e/35);return h(r+36*e/(e+38))},z=function(e){var t,a=[],r=e.length,i=0,n=128,s=72,o=e.lastIndexOf("-");o<0&&(o=0);for(var l=0;l=128&&f("not-basic"),a.push(e.charCodeAt(l));for(var m=o>0?o+1:0;m=r&&f("invalid-input");var v=(t=e.charCodeAt(m++))-48<10?t-22:t-65<26?t-65:t-97<26?t-97:u;(v>=u||v>h((d-i)/c))&&f("overflow"),i+=v*c;var k=g<=s?1:g>=s+26?26:g-s;if(vh(d/y)&&f("overflow"),c*=y}var b=a.length+1;s=w(i-p,b,0==p),h(i/b)>d-n&&f("overflow"),n+=h(i/b),i%=b,a.splice(i++,0,n)}return String.fromCodePoint.apply(String,a)},P=function(e){var t=[],a=(e=y(e)).length,r=128,i=0,n=72,s=!0,o=!1,l=void 0;try{for(var m,p=e[Symbol.iterator]();!(s=(m=p.next()).done);s=!0){var c=m.value;c<128&&t.push(v(c))}}catch(e){o=!0,l=e}finally{try{!s&&p.return&&p.return()}finally{if(o)throw l}}var g=t.length,k=g;for(g&&t.push("-");k=r&&jh((d-i)/C)&&f("overflow"),i+=(z-r)*C,r=z;var O=!0,L=!1,T=void 0;try{for(var D,M=e[Symbol.iterator]();!(O=(D=M.next()).done);O=!0){var x=D.value;if(xd&&f("overflow"),x==r){for(var $=i,F=u;;F+=u){var I=F<=n?1:F>=n+26?26:F-n;if($>6|192).toString(16).toUpperCase()+"%"+(63&t|128).toString(16).toUpperCase():"%"+(t>>12|224).toString(16).toUpperCase()+"%"+(t>>6&63|128).toString(16).toUpperCase()+"%"+(63&t|128).toString(16).toUpperCase()}function j(e){for(var t="",a=0,r=e.length;a=194&&i<224){if(r-a>=6){var n=parseInt(e.substr(a+4,2),16);t+=String.fromCharCode((31&i)<<6|63&n)}else t+=e.substr(a,6);a+=6}else if(i>=224){if(r-a>=9){var s=parseInt(e.substr(a+4,2),16),o=parseInt(e.substr(a+7,2),16);t+=String.fromCharCode((15&i)<<12|(63&s)<<6|63&o)}else t+=e.substr(a,9);a+=9}else t+=e.substr(a,3),a+=3}return t}function C(e,t){function a(e){var a=j(e);return a.match(t.UNRESERVED)?a:e}return e.scheme&&(e.scheme=String(e.scheme).replace(t.PCT_ENCODED,a).toLowerCase().replace(t.NOT_SCHEME,"")),void 0!==e.userinfo&&(e.userinfo=String(e.userinfo).replace(t.PCT_ENCODED,a).replace(t.NOT_USERINFO,E).replace(t.PCT_ENCODED,i)),void 0!==e.host&&(e.host=String(e.host).replace(t.PCT_ENCODED,a).toLowerCase().replace(t.NOT_HOST,E).replace(t.PCT_ENCODED,i)),void 0!==e.path&&(e.path=String(e.path).replace(t.PCT_ENCODED,a).replace(e.scheme?t.NOT_PATH:t.NOT_PATH_NOSCHEME,E).replace(t.PCT_ENCODED,i)),void 0!==e.query&&(e.query=String(e.query).replace(t.PCT_ENCODED,a).replace(t.NOT_QUERY,E).replace(t.PCT_ENCODED,i)),void 0!==e.fragment&&(e.fragment=String(e.fragment).replace(t.PCT_ENCODED,a).replace(t.NOT_FRAGMENT,E).replace(t.PCT_ENCODED,i)),e}function O(e){return e.replace(/^0*(.*)/,"$1")||"0"}function L(e,t){var a=e.match(t.IPV4ADDRESS)||[],r=l(a,2)[1];return r?r.split(".").map(O).join("."):e}function T(e,t){var a=e.match(t.IPV6ADDRESS)||[],r=l(a,3),i=r[1],n=r[2];if(i){for(var s=i.toLowerCase().split("::").reverse(),o=l(s,2),d=o[0],u=o[1],m=u?u.split(":").map(O):[],p=d.split(":").map(O),c=t.IPV4ADDRESS.test(p[p.length-1]),g=c?7:8,h=p.length-g,v=Array(g),f=0;f1){var b=v.slice(0,k.index),w=v.slice(k.index+k.length);y=b.join(":")+"::"+w.join(":")}else y=v.join(":");return n&&(y+="%"+n),y}return e}var D=/^(?:([^:\/?#]+):)?(?:\/\/((?:([^\/?#@]*)@)?(\[[^\/?#\]]+\]|[^\/?#:]*)(?:\:(\d*))?))?([^?#]*)(?:\?([^#]*))?(?:#((?:.|\n|\r)*))?/i,M=void 0==="".match(/(){0}/)[1];function x(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a={},r=!1!==t.iri?o:s;"suffix"===t.reference&&(e=(t.scheme?t.scheme+":":"")+"//"+e);var i=e.match(D);if(i){M?(a.scheme=i[1],a.userinfo=i[3],a.host=i[4],a.port=parseInt(i[5],10),a.path=i[6]||"",a.query=i[7],a.fragment=i[8],isNaN(a.port)&&(a.port=i[5])):(a.scheme=i[1]||void 0,a.userinfo=-1!==e.indexOf("@")?i[3]:void 0,a.host=-1!==e.indexOf("//")?i[4]:void 0,a.port=parseInt(i[5],10),a.path=i[6]||"",a.query=-1!==e.indexOf("?")?i[7]:void 0,a.fragment=-1!==e.indexOf("#")?i[8]:void 0,isNaN(a.port)&&(a.port=e.match(/\/\/(?:.|\n)*\:(?:\/|\?|\#|$)/)?i[4]:void 0)),a.host&&(a.host=T(L(a.host,r),r)),void 0!==a.scheme||void 0!==a.userinfo||void 0!==a.host||void 0!==a.port||a.path||void 0!==a.query?void 0===a.scheme?a.reference="relative":void 0===a.fragment?a.reference="absolute":a.reference="uri":a.reference="same-document",t.reference&&"suffix"!==t.reference&&t.reference!==a.reference&&(a.error=a.error||"URI is not a "+t.reference+" reference.");var n=A[(t.scheme||a.scheme||"").toLowerCase()];if(t.unicodeSupport||n&&n.unicodeSupport)C(a,r);else{if(a.host&&(t.domainHost||n&&n.domainHost))try{a.host=_(a.host.replace(r.PCT_ENCODED,j).toLowerCase())}catch(e){a.error=a.error||"Host's domain name can not be converted to ASCII via punycode: "+e}C(a,s)}n&&n.parse&&n.parse(a,t)}else a.error=a.error||"URI can not be parsed.";return a}var $=/^\.\.?\//,F=/^\/\.(\/|$)/,I=/^\/\.\.(\/|$)/,N=/^\/?(?:.|\n)*?(?=\/|$)/;function B(e){for(var t=[];e.length;)if(e.match($))e=e.replace($,"");else if(e.match(F))e=e.replace(F,"/");else if(e.match(I))e=e.replace(I,"/"),t.pop();else if("."===e||".."===e)e="";else{var a=e.match(N);if(!a)throw new Error("Unexpected dot segment condition");var r=a[0];e=e.slice(r.length),t.push(r)}return t.join("")}function H(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=t.iri?o:s,r=[],i=A[(t.scheme||e.scheme||"").toLowerCase()];if(i&&i.serialize&&i.serialize(e,t),e.host)if(a.IPV6ADDRESS.test(e.host));else if(t.domainHost||i&&i.domainHost)try{e.host=t.iri?S(e.host):_(e.host.replace(a.PCT_ENCODED,j).toLowerCase())}catch(a){e.error=e.error||"Host's domain name can not be converted to "+(t.iri?"Unicode":"ASCII")+" via punycode: "+a}C(e,a),"suffix"!==t.reference&&e.scheme&&(r.push(e.scheme),r.push(":"));var n=function(e,t){var a=!1!==t.iri?o:s,r=[];return void 0!==e.userinfo&&(r.push(e.userinfo),r.push("@")),void 0!==e.host&&r.push(T(L(String(e.host),a),a).replace(a.IPV6ADDRESS,(function(e,t,a){return"["+t+(a?"%25"+a:"")+"]"}))),"number"!=typeof e.port&&"string"!=typeof e.port||(r.push(":"),r.push(String(e.port))),r.length?r.join(""):void 0}(e,t);if(void 0!==n&&("suffix"!==t.reference&&r.push("//"),r.push(n),e.path&&"/"!==e.path.charAt(0)&&r.push("/")),void 0!==e.path){var l=e.path;t.absolutePath||i&&i.absolutePath||(l=B(l)),void 0===n&&(l=l.replace(/^\/\//,"/%2F")),r.push(l)}return void 0!==e.query&&(r.push("?"),r.push(e.query)),void 0!==e.fragment&&(r.push("#"),r.push(e.fragment)),r.join("")}function V(e,t){var a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r={};return arguments[3]||(e=x(H(e,a),a),t=x(H(t,a),a)),!(a=a||{}).tolerant&&t.scheme?(r.scheme=t.scheme,r.userinfo=t.userinfo,r.host=t.host,r.port=t.port,r.path=B(t.path||""),r.query=t.query):(void 0!==t.userinfo||void 0!==t.host||void 0!==t.port?(r.userinfo=t.userinfo,r.host=t.host,r.port=t.port,r.path=B(t.path||""),r.query=t.query):(t.path?("/"===t.path.charAt(0)?r.path=B(t.path):(void 0===e.userinfo&&void 0===e.host&&void 0===e.port||e.path?e.path?r.path=e.path.slice(0,e.path.lastIndexOf("/")+1)+t.path:r.path=t.path:r.path="/"+t.path,r.path=B(r.path)),r.query=t.query):(r.path=e.path,void 0!==t.query?r.query=t.query:r.query=e.query),r.userinfo=e.userinfo,r.host=e.host,r.port=e.port),r.scheme=e.scheme),r.fragment=t.fragment,r}function R(e,t){return e&&e.toString().replace(t&&t.iri?o.PCT_ENCODED:s.PCT_ENCODED,j)}var U={scheme:"http",domainHost:!0,parse:function(e,t){return e.host||(e.error=e.error||"HTTP URIs must have a host."),e},serialize:function(e,t){var a="https"===String(e.scheme).toLowerCase();return e.port!==(a?443:80)&&""!==e.port||(e.port=void 0),e.path||(e.path="/"),e}},q={scheme:"https",domainHost:U.domainHost,parse:U.parse,serialize:U.serialize};function G(e){return"boolean"==typeof e.secure?e.secure:"wss"===String(e.scheme).toLowerCase()}var W={scheme:"ws",domainHost:!0,parse:function(e,t){var a=e;return a.secure=G(a),a.resourceName=(a.path||"/")+(a.query?"?"+a.query:""),a.path=void 0,a.query=void 0,a},serialize:function(e,t){if(e.port!==(G(e)?443:80)&&""!==e.port||(e.port=void 0),"boolean"==typeof e.secure&&(e.scheme=e.secure?"wss":"ws",e.secure=void 0),e.resourceName){var a=e.resourceName.split("?"),r=l(a,2),i=r[0],n=r[1];e.path=i&&"/"!==i?i:void 0,e.query=n,e.resourceName=void 0}return e.fragment=void 0,e}},K={scheme:"wss",domainHost:W.domainHost,parse:W.parse,serialize:W.serialize},J={},Z="[A-Za-z0-9\\-\\.\\_\\~\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]",Q="[0-9A-Fa-f]",Y=a(a("%[EFef]"+Q+"%"+Q+Q+"%"+Q+Q)+"|"+a("%[89A-Fa-f]"+Q+"%"+Q+Q)+"|"+a("%"+Q+Q)),X=t("[\\!\\$\\%\\'\\(\\)\\*\\+\\,\\-\\.0-9\\<\\>A-Z\\x5E-\\x7E]",'[\\"\\\\]'),ee=new RegExp(Z,"g"),te=new RegExp(Y,"g"),ae=new RegExp(t("[^]","[A-Za-z0-9\\!\\$\\%\\'\\*\\+\\-\\^\\_\\`\\{\\|\\}\\~]","[\\.]",'[\\"]',X),"g"),re=new RegExp(t("[^]",Z,"[\\!\\$\\'\\(\\)\\*\\+\\,\\;\\:\\@]"),"g"),ie=re;function ne(e){var t=j(e);return t.match(ee)?t:e}var se={scheme:"mailto",parse:function(e,t){var a=e,r=a.to=a.path?a.path.split(","):[];if(a.path=void 0,a.query){for(var i=!1,n={},s=a.query.split("&"),o=0,l=s.length;o{"use strict";e.exports={detect:function(e){var t="RIFF"===e.toString("ascii",0,4),a="WEBP"===e.toString("ascii",8,12),r="VP8"===e.toString("ascii",12,15);return t&&a&&r},calculate:function(e){var t=e.toString("ascii",12,16);if(e=e.slice(20,30),"VP8X"===t){var a=e[0];return!(192&a||1&a)&&function(e){return{width:1+e.readUIntLE(4,3),height:1+e.readUIntLE(7,3)}}(e)}if("VP8 "===t&&47!==e[0])return function(e){return{width:16383&e.readInt16LE(6),height:16383&e.readInt16LE(8)}}(e);var r=e.toString("hex",3,6);return"VP8L"===t&&"9d012a"!==r&&function(e){return{width:1+((63&e[2])<<8|e[1]),height:1+((15&e[4])<<10|e[3]<<2|(192&e[2])>>6)}}(e)}}},6656:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Gust strength","nl":"Windstootkracht","de":"Böenstärke","fr":"Force d\'un coup de vent","it":"Intensità delle raffiche","sv":"Byvind","no":"Vindkast","es":"Fuerza del aire","da":"Vindstyrke","ru":"Сила порывов ветра","pl":"Siła porywu wiatru","ko":"돌풍 세기","ar":"شدة العاصفة"},"units":{"en":"km/h","ru":"км/ч","ko":"km/h","no":"km/t","ar":"كم/ساعة","da":"km/t","de":"km/h","es":"km/h","fr":"km/h","it":"km/h","nl":"km/u","pl":"km/h","sv":"km/h"},"insights":true,"desc":{"en":"Gust strength in kilometer per hour (km/h)","nl":"Windstoot snelheid in kilometer per uur (km/u)","de":"Böenstärke in Kilometer pro Stunde (km/h)","fr":"Force du coup de vent en kilomètres par heure (km/h)","it":"Intensità delle raffiche in chilometri orari (km/h)","sv":"Byvind i kilometer per timme (km/h)","no":"Vindkaststyrke i kilometer per time (km/t)","es":"Fuerza del aire en kilómetros por hora (km/h)","da":"Vindstyrke i kilometer i timen (km/t)","ru":"Сила порывов ветра в км в час (км/ч)","pl":"Siła porywu wiatru w kilometrach na godzinę (km/h)","ko":"돌풍 세기 시간당 킬로미터(km/h)","ar":"شدة العاصفة بالكيلومتر في الساعة (km/h)"},"chartType":"stepLine","decimals":2,"color":"#32C5FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_gust_strength_changed","title":{"en":"The gust strength changed","nl":"De windstootkracht is veranderd","de":"Die Böenstärke hat sich geändert","fr":"La force du coup de vent a changé","it":"L\'intensità delle raffiche è cambiata","sv":"Byvinden ändrades","no":"Vindstyrken ble endret","es":"La fuerza del aire ha cambiado","da":"Vindstyrken skiftede","ru":"Сила порывов ветра изменилась","pl":"Zmiana siły porywu wiatru","ko":"돌풍 세기가 변경되면","ar":"تغيرت شدة العاصفة"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":15}]}]}}')},6740:(e,t,a)=>{"use strict";function r(e,t,a,r){var i=r?" !== ":" === ",n=r?" || ":" && ",s=r?"!":"",o=r?"":"!";switch(e){case"null":return t+i+"null";case"array":return s+"Array.isArray("+t+")";case"object":return"("+s+t+n+"typeof "+t+i+'"object"'+n+o+"Array.isArray("+t+"))";case"integer":return"(typeof "+t+i+'"number"'+n+o+"("+t+" % 1)"+n+t+i+t+(a?n+s+"isFinite("+t+")":"")+")";case"number":return"(typeof "+t+i+'"'+e+'"'+(a?n+s+"isFinite("+t+")":"")+")";default:return"typeof "+t+i+'"'+e+'"'}}e.exports={copy:function(e,t){for(var a in t=t||{},e)t[a]=e[a];return t},checkDataType:r,checkDataTypes:function(e,t,a){if(1===e.length)return r(e[0],t,a,!0);var i="",s=n(e);for(var o in s.array&&s.object&&(i=s.null?"(":"(!"+t+" || ",i+="typeof "+t+' !== "object")',delete s.null,delete s.array,delete s.object),s.number&&delete s.integer,s)i+=(i?" && ":"")+r(o,t,a,!0);return i},coerceToTypes:function(e,t){if(Array.isArray(t)){for(var a=[],r=0;r=t)throw new Error("Cannot access property/index "+r+" levels up, current level is "+t);return a[t-r]}if(r>t)throw new Error("Cannot access data "+r+" levels up, current level is "+t);if(n="data"+(t-r||""),!i)return n}for(var o=n,d=i.split("/"),u=0;u{"use strict";e.exports=JSON.parse('{"title":{"en":"Window coverings tilt up","nl":"Raambekleding kantelt omhoog","de":"Jalousien nach oben gekippt","fr":"Stores levés","it":"Tapparelle alzate","sv":"Fönsterskydd öppna","no":"Vindusbeskyttelser åpne","es":"Cobertores de ventanas inclinados hacia arriba","da":"Vinduesdække opad","ru":"Приподнять оконные навесы","pl":"Rozchylenie osłon okiennych","ko":"위로 틸트","ar":"إمالة أغطية النوافذ للأعلى"},"type":"boolean","color":"#F5B207","getable":false,"setable":true,"uiComponent":"button","$flow":{"actions":[{"id":"tilt_up","title":{"en":"Tilt up","da":"Vip op","it":"Inclina verso l\'alto","ko":"창문 가림 기울기 위로 틸팅","nl":"Omhoog kantelen","pl":"Odchylenie w górę","ru":"Наклон вверх","sv":"Luta upp","es":"Inclinar hacia arriba","fr":"Inclinaison vers le haut","no":"Vipp opp","ar":"إمالة للأعلى","de":"Nach oben neigen"}}]}}')},6782:e=>{"use strict";e.exports=JSON.parse('{"homey:codec:mp3":{},"homey:codec:ogg":{},"homey:codec:flac":{}}')},6796:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Sensor","nl":"Sensor","de":"Sensor","fr":"Capteur","it":"Sensore","sv":"Sensor","no":"Sensor","es":"Sensor","da":"Sensor","ru":"Датчик","pl":"Czujnik","ko":"센서","ar":"مستشعر"},"description":{"en":"Use this device class for sensors, e.g. a contact or motion sensor.","de":"Nutze diese Geräteklasse für Sensoren, z. B. ein Kontakt- oder Bewegungssensor.","fr":"Utilisez cette classe d\'appareil pour les capteurs, par ex. un capteur de contact ou de mouvement.","it":"Utilizza questa classe di dispositivi per i sensori, ad es. un sensore di contatto o di movimento.","sv":"Använd den här enhetsklassen för sensorer, t.ex. en kontakt eller rörelsesensor.","no":"Bruk denne enhetsklassen for sensorer, f.eks. en kontakt- eller bevegelsessensor.","es":"Utiliza esta clase de dispositivo para los sensores; p. ej., sensores de contacto o movimiento.","da":"Brug denne enhedsklasse til sensorer, f-eks en kontakt- eller bevægelsessensor.","ru":"Используйте этот класс устройства для датчиков, например датчиков контакта или движения.","pl":"Użyj tej klasy urządzeń dla czujników, np. czujnika otwarcia lub ruchu.","ko":"이 디바이스 클래스는 접촉 또는 모션 센서 등 센서류에 사용합니다.","ar":"استخدم فئة الجهاز هذه للمستشعرات، مثل مستشعر الاتصال أو الحركة.","nl":"Gebruik deze apparaatklasse voor sensoren, bijvoorbeeld een contact- of bewegingssensor."}}')},6797:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Lock mode","nl":"Vergrendelmodus","de":"Schloss-Modus","fr":"Mode verrou","it":"Modalità serratura","sv":"Låsläge","no":"Låsemodus","es":"Modo de la cerradura","da":"Lås-tilstand","ru":"Режим замка","pl":"Tryb zamknięcia","ko":"잠금 모드","ar":"وضع القفل"},"values":[{"id":"always_locked","title":{"en":"Always locked","nl":"Altijd op slot","de":"Immer verriegelt","fr":"Toujours verrouillé","it":"Sempre chiusa","sv":"Alltid låst","no":"Alltid låst","es":"Siempre cerrada","da":"Altid låst","ru":"Всегда закрыт","pl":"Zawsze zablokowane","ko":"항상 잠김","ar":"مغلق دائمًا"}},{"id":"always_unlocked","title":{"en":"Always unlocked","nl":"Altijd open","de":"Immer entriegelt","fr":"Toujours déverrouillé","it":"Sempre aperta","sv":"Alltid olåst","no":"Alltid ulåst","es":"Siempre abierta","da":"Altid ulåst","ru":"Всегда открыт","pl":"Zawsze odblokowane","ko":"항상 잠금 해제됨","ar":"مفتوح دائمًا"}},{"id":"locked_until_unlock","title":{"en":"Locked until unlocked","nl":"Op slot tot geopend","de":"Verriegelt, bis entriegelt wird","fr":"Verrouillé jusqu\'à déverrouillé","it":"Chiusa finché non viene sbloccata","sv":"Låst tills upplåst","no":"Låst til opplåst","es":"Cerrada hasta que se abra","da":"Låst indtil ulåst","ru":"Закрыт, пока не будет открыт","pl":"Zablokowane aż do odblokowania","ko":"잠금 해제할 때까지 잠김","ar":"مغلق حتى يتم فتحه"}}],"color":"#0091FF","getable":true,"setable":true,"uiComponent":"picker","$flow":{"triggers":[{"id":"lock_mode_changed","title":{"en":"The lock mode changed to","nl":"De slotmodus is veranderd naar","de":"Der Schloss-Modus wurde geändert auf","fr":"Le mode de verrouillage est passé à","it":"La modalità di chiusura è passata a","sv":"Låsläget har ändrats till","no":"Låsemodusen er endret til","es":"El modo de la cerradura ha cambiado a","da":"Låstilstanden er ændret til","ru":"Режим замка изменен на","pl":"Tryb zamknięcia zmienił się na","ko":"잠금 모드가 다음으로 변경되면","ar":"تم تغيير وضع القفل إلى"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"lock_mode_is","title":{"en":"The lock mode !{{is|is not}}","nl":"De slotmodus !{{is|is niet}}","de":"Der Schloss-Modus !{{ist|ist nicht}}","fr":"Le mode de verrouillage !{{est|n\'est pas}}","it":"La modalità di chiusura !{{è|non è}}","sv":"Låsläget !{{är|är inte}}","no":"Låsemodusen !{{er|er ikke}}","es":"El modo de la cerradura !{{está|no está}}","da":"Låstilstanden !{{er|er ikke}}","ru":"Режим замка !{{|не}}","pl":"Tryb zamknięcia !{{jest|nie jest}}","ko":"잠금 모드가 다음!{{이면|이 아니면}}","ar":"وضع القفل !{{هو|ليس}}"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}],"actions":[{"id":"mode","title":{"en":"Set the lock mode to","nl":"Stel de slotmodus in op","de":"Stelle den Schloss-Modus auf","fr":"Définir le mode de verrouillage sur","it":"Imposta la modalità di chiusura su","sv":"Ställ in låsläget på","no":"Sett låsemodusen til","es":"Ajustar el modo de la cerradura en","da":"Indstil låstilstanden til","ru":"Установить режим замка на","pl":"Ustaw tryb zamknięcia na","ko":"잠금 모드를 다음으로 설정","ar":"ضبط وضع القفل على"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}]}}')},6891:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Speaker","nl":"Speaker","de":"Lautsprecher","fr":"Haut-parleur","it":"Altoparlante","sv":"Högtalare","no":"Høyttaler","es":"Altavoz","da":"Højttaler","ru":"Колонка","pl":"Głośnik","ko":"스피커","ar":"سماعة"},"description":{"en":"Use this device class for devices that can play music, usually together with the `speaker_*` capabilities.","de":"Nutze diese Geräteklasse für Geräte, die Musik spielen können - normalerweise zusammen mit den `speaker_*`-Fähigkeiten.","fr":"Utilisez cette classe d\'appareil pour les appareils qui peuvent jouer de la musique, généralement avec la capacité `speaker_*`.","it":"Utilizza questa classe di dispositivi per i dispositivi che possono riprodurre musica, generalmente insieme alla funzione `speaker_*`.","sv":"Använd den här enhetsklassen för enheter som kan spela musik, oftast tilsammans med funktionerna `speaker_*`.","no":"Bruk denne enhetsklassen for enheter som kan spille musikk, ofte sammen med funksjonen `speaker_*`.","es":"Utiliza esta clase de dispositivo para los aparatos capaces de reproducir música, generalmente junto con las capacidades `speaker_*`.","da":"Brug denne enhedsklasse til enheder, der kan afspille musik, normalt sammen med `speaker_*` funktionerne.","ru":"Используйте этот класс устройств для устройств, воспроизводящих музыку, обычно вместе с функцией `speaker_*`.","pl":"Użyj tej klasy urządzeń dla produktów, które mogą odtwarzać muzykę, zwykle razem ze zdolnością `speaker_*`.","ko":"이 디바이스 클래스는 음악을 재생할 수 있고 보통 \'speaker_*\' 기능을 갖춘 디바이스에 사용합니다.","ar":"استخدم فئة الجهاز هذه للأجهزة التي يمكنها تشغيل الموسيقى، عادةً مع إمكانيات \'speaker_*\'.","nl":"Gebruik deze apparaatklasse voor apparaten die muziek kunnen afspelen, meestal samen met de opties voor \'speaker_*\'."}}')},6892:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"TV","nl":"TV","de":"TV","fr":"TV","it":"TV","sv":"TV","no":"TV","es":"TV","da":"TV","ru":"Телевизор","pl":"Telewizor","ko":"TV","ar":"تلفزيون"},"description":{"en":"Use this device class for TVs.","de":"Nutze diese Geräteklasse für TVs","fr":"Utilisez cette classe d\'appareil pour les TV","it":"Utilizza questa classe di dispositivi per i televisori.","sv":"Använd den här enhetsklassen för TV-apparater.","no":"Bruk denne enhetsklassen for TV-apparater.","es":"Utiliza esta clase de dispositivo para los televisores.","da":"Brug denne enhedsklasse til TV-apparater.","ru":"Используйте этот класс устройств для телевизоров.","pl":"Użyj tej klasy urządzeń dla telewizorów.","ko":"이 디바이스 클래스는 TV에 사용합니다.","ar":"استخدم فئة الجهاز هذه لأجهزة التلفزيون.","nl":"Gebruik deze apparaatklasse voor tv\'s."}}')},6907:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Color saturation","nl":"Kleurverzadiging","de":"Farbsättigung","fr":"Saturation de couleur","it":"Saturazione colore","sv":"Färggmättnad","no":"Fargemetning","es":"Saturación del color","da":"Farvemætning","ru":"Насыщенность цвета","pl":"Nasycenie barwy","ko":"채도","ar":"تشبع اللون"},"min":0,"chartType":"stepLine","max":1,"decimals":2,"color":"#F7B500","getable":true,"setable":true,"$flow":{"actions":[{"id":"saturation","title":{"en":"Set the saturation","nl":"Verander kleurverzadiging","de":"Die Sättigung setzen","fr":"Définir la saturation","it":"Imposta la saturazione","sv":"Ställ in mättnad","no":"Innstill metningen","es":"Configurar la saturación","da":"Indstil farvemætningen","ru":"Установить насыщенность","pl":"Ustaw nasycenie","ko":"채도 설정","ar":"ضبط التشبع"},"args":[{"name":"saturation","type":"range","min":0,"max":1,"step":0.01,"value":0.5,"label":"%","labelMultiplier":100,"labelDecimals":0}]}]},"uiComponent":"color"}')},6929:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Charging","nl":"Opladen","da":"Oplader","de":"Wird aufgeladen","es":"Carga","fr":"Charge en cours","it":"In ricarica","ko":"전기차 충전기","no":"Lader","pl":"Ładowanie","ru":"Заряжается","sv":"Laddning","ar":"قيد الشحن"},"type":"boolean","color":"#6DD400","getable":true,"setable":true,"insights":true,"minCompatibility":"12.4.5","insightsTitleTrue":{"en":"Started charging","nl":"Begonnen met opladen","da":"Begyndte at oplade","de":"Ladevorgang hat begonnen","es":"Carga iniciada","fr":"Charge démarrée","it":"Ricarica avviata","ko":"충전 시작됨","no":"Startet lading","pl":"Rozpoczęto ładowanie","ru":"Зарядка началась","sv":"Började ladda","ar":"بدأ الشحن"},"insightsTitleFalse":{"en":"Stopped charging","nl":"Gestopt met opladen","da":"Stoppede med at oplade","de":"Ladevorgang wurde gestoppt","es":"Carga detenida","fr":"Charge arrêtée","it":"Ricarica interrotta","ko":"충전 중지됨","no":"Stoppet lading","pl":"Zatrzymano ładowanie","ru":"Зарядка остановлена","sv":"Slutade ladda","ar":"توقف الشحن"},"uiComponent":"toggle","$flow":{"triggers":[{"id":"evcharger_charging_true","highlight":true,"title":{"en":"Started charging","nl":"Begonnen met opladen","da":"Begyndte at oplade","de":"Ladevorgang hat begonnen","es":"Carga iniciada","fr":"Charge démarrée","it":"Ricarica avviata","ko":"충전이 시작되면","no":"Startet lading","pl":"Rozpoczęto ładowanie","ru":"Зарядка началась","sv":"Började ladda","ar":"بدأ الشحن"}},{"id":"evcharger_charging_false","highlight":true,"title":{"en":"Stopped charging","nl":"Gestopt met opladen","da":"Stoppede med at oplade","de":"Ladevorgang wurde gestoppt","es":"Carga detenida","fr":"Charge arrêtée","it":"Ricarica interrotta","ko":"충전이 중지되면","no":"Stoppet lading","pl":"Zatrzymano ładowanie","ru":"Зарядка остановлена","sv":"Slutade ladda","ar":"توقف الشحن"}}],"conditions":[{"id":"evcharger_charging","title":{"en":"Is !{{|not}} charging","nl":"Is !{{|niet}} aan het opladen","da":"Oplader !{{|ikke}}","de":"Wird !{{|nicht}} geladen","es":"!{{|No}} está cargando","fr":"N\'est !{{|pas}} en cours de charge","it":"!{{|Non}} è in ricarica","ko":"충전 중!{{이면|이 아니면}}","no":"Lader !{{|ikke}}","pl":"!{{Jest|Nie jest}} w trakcie ładowania","ru":"!{{|не}} заряжается","sv":"Laddar !{{|inte}}","ar":"هو !{{|ليس}} في حالة شحن"}}],"actions":[{"id":"evcharger_charging_start","highlight":true,"title":{"en":"Start charging","nl":"Begin met opladen","da":"Begynd at oplade","de":"Ladevorgang starten","es":"Iniciar carga","fr":"Démarrer la charge","it":"Avvia la ricarica","ko":"충전 시작","no":"Start lading","pl":"Rozpoczęcie ładowania","ru":"Начать зарядку","sv":"Starta laddning","ar":"بدء الشحن"}},{"id":"evcharger_charging_stop","highlight":true,"title":{"en":"Stop charging","nl":"Stop met opladen","da":"Stop med at oplade","de":"Ladevorgang stoppen","es":"Detener carga","fr":"Arrêter la charge","it":"Interrompi la ricarica","ko":"충전 중지","no":"Stopp lading","pl":"Zatrzymanie ładowania","ru":"Остановить зарядку","sv":"Avsluta laddning","ar":"إيقاف الشحن"}}]}}')},6957:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"SO₂","nl":"SO₂","da":"SO₂","it":"SO₂","ko":"SO₂","pl":"SO₂","ru":"SO₂","sv":"SO₂","es":"SO₂","fr":"SO₂","no":"SO₂","ar":"ثاني أكسيد الكبريت","de":"SO₂"},"units":{"en":"μg/m³","nl":"μg/m³","da":"μg/m³","it":"μg/m³","ko":"μg/m³","pl":"μg/m³","ru":"мкг/м³","sv":"μg/m³","es":"μg/m³","fr":"μg/m³","no":"μg/m³","ar":"ميكروجرام/م³","de":"μg/m³"},"insights":true,"desc":{"en":"Sulfur dioxide in micrograms per cubic meter (μg/m³)","nl":"Zwaveldioxide in microgram per kubieke meter (μg/m³)","da":"Svovldioxid i mikrogram pr. kubikmeter (μg/m³)","it":"Anidride solforosa in microgrammi per metro cubo (μg/m³)","ko":"입방미터당 마이크로그램(μg/m³) 단위의 이산화황","pl":"Dwutlenek siarki w mikrogramach na metr sześcienny (μg/m³)","ru":"Диоксид серы в микрограммах на кубический метр (мкг/м³)","sv":"Svaveldioxid i mikrogram per kubikmeter (μg/m³)","es":"Dióxido de azufre en microgramos por metro cúbico (μg/m³)","fr":"Dioxyde de soufre en microgrammes par mètre cube (μg/m³)","no":"Svoveldioksid i mikrogram per kubikkmeter (μg/m³)","ar":"ثاني أكسيد الكبريت بالميكروجرام لكل متر مكعب (μg/m³)","de":"Schwefeldioxid in Mikrogramm pro Kubikmeter (μg/m³)"},"chartType":"spline","decimals":2,"color":"#FA6400","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_so2_changed","title":{"en":"The SO₂ level has changed","nl":"Het SO₂-niveau is veranderd","da":"SO₂-værdien har ændret sig","it":"Il livello di SO₂ è cambiato","ko":"SO₂ 수준이 변경되면","no":"SO₂-nivået er endret","pl":"Zmienił się poziom SO₂","ru":"Уровень SO₂ изменился","sv":"SO₂-nivån har ändrats","es":"El nivel de SO₂ ha cambiado","fr":"Le niveau de SO₂ a changé","ar":"تغير مستوى ثاني أكسيد الكبريت","de":"Der SO₂-Gehalt hat sich geändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":2}]}]},"minCompatibility":"12.2.0"}')},6962:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Cleaning Pad Missing Alarm","nl":"Reinigingspad-ontbreekt-alarm","da":"Rengøringspad mangler alarm","es":"Alarma de mopa de limpieza no instalada","fr":"Alarme de lingette de nettoyage manquante","it":"Allarme panno pulente mancante","ko":"물걸레 분리 감지","pl":"Alarm braku podkładki czyszczącej","ru":"Сигнал об отсутствии чистящей губки","sv":"Rengöringsdyna saknar larm","no":"Alarm om manglende vaskeklut","ar":"إنذار فقد وسادة التنظيف","de":"Alarm bei fehlendem Reinigungspad"},"titleShort":{"en":"Cleaning Pad Missing","nl":"Reinigingspad ontbreekt","da":"Rengøringspude mangler","es":"Mopa de limpieza no instalada","fr":"Lingette de nettoyage manquante","it":"Panno pulente mancante","ko":"물걸레 누락","pl":"Brak podkładki czyszczącej","ru":"Чистящая губка отсутствует","sv":"Rengöringsdyna saknas","no":"Manglende vaskeklut","ar":"وسادة التنظيف غير موجودة","de":"Reinigungspad fehlt"},"desc":{"en":"True when the cleaning pad is missing.","nl":"Wordt geactiveerd wanneer de reinigingspad ontbreekt.","da":"Sandt, når rengøringspad mangler.","es":"Activado cuando la almohadilla no está presente","fr":"Se déclenche lorsque la lingette de nettoyage est manquante.","it":"Vero quando manca il panno pulente.","ko":"클리닝 패드가 누락되면 참입니다.","pl":"Prawda, gdy brakuje podkładki czyszczącej.","ru":"Значение «истина», когда чистящая губка отсутствует.","sv":"Sant när rengöringsdynan saknas.","no":"Sann når vaskekluten mangler.","ar":"صحيح عند فقد وسادة التنظيف.","de":"Wahr, wenn das Reinigungspad fehlt."},"insights":true,"insightsTitleTrue":{"en":"The cleaning pad was removed","nl":"De reinigingspad was verwijderd","da":"Rengøringspad blev fjernet","es":"La almohadilla de limpieza se ha retirado","fr":"La lingette de nettoyage a été enlevée","it":"Il panno pulente è stato rimosso","ko":"물걸레 분리됨","pl":"Podkładka czyszcząca została usunięta","ru":"Чистящая губка была удалена","sv":"Rengöringsdynan togs bort","no":"Vaskekluten ble fjernet","ar":"تمت إزالة وسادة التنظيف","de":"Das Reinigungspad wurde entfernt"},"insightsTitleFalse":{"en":"The cleaning pad was placed","nl":"De reinigingspad was geplaatst","da":"Rengøringspad blev placeret","es":"La almohadilla de limpieza se ha colocado","fr":"La lingette de nettoyage a été placée","it":"Il panno pulente è stato posizionato","ko":"물걸레 장착됨","pl":"Podkładka czyszcząca została umieszczona","ru":"Чистящая губка была размещена","sv":"Rengöringsdynan placerades","no":"Vaskekluten ble satt på plass","ar":"تم وضع وسادة التنظيف","de":"Das Reinigungspad wurde platziert"},"color":"#9033FC","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_cleaning_pad_missing_true","highlight":true,"title":{"en":"The cleaning pad was removed","nl":"De reinigingspad is verwijderd","da":"Rengøringspad blev fjernet","es":"La almohadilla de limpieza se ha retirado","fr":"La lingette de nettoyage a été enlevée","it":"Il panno pulente è stato rimosso","ko":"물걸레가 분리되면","pl":"Podkładka czyszcząca została usunięta","ru":"Чистящая губка была удалена","sv":"Rengöringsdynan togs bort","no":"Vaskekluten ble fjernet","ar":"تمت إزالة وسادة التنظيف","de":"Das Reinigungspad wurde entfernt"}},{"id":"alarm_cleaning_pad_missing_false","title":{"en":"The cleaning pad was placed","nl":"De reinigingspad is geplaatst","da":"Rengøringspad blev placeret","es":"La almohadilla de limpieza se ha colocado","fr":"La lingette de nettoyage a été placée","it":"Il panno pulente è stato posizionato","ko":"물걸레가 장착되면","pl":"Podkładka czyszcząca została umieszczona","ru":"Чистящая губка была размещена","sv":"Rengöringsdynan placerades","no":"Vaskekluten ble satt på plass","ar":"تم وضع وسادة التنظيف","de":"Das Reinigungspad wurde platziert"}}],"conditions":[{"id":"alarm_cleaning_pad_missing","title":{"en":"The cleaning pad is !{{missing|present}}","nl":"De reiningingspad !{{ontbreekt|is aangebracht}}","da":"Rengøringspad !{{mangler|er tilstede}}","es":"Almohadilla de limpieza !{{no presente|presente}}","it":"Il panno pulente è !{{assente|presente}}","ko":"물걸레가 !{{분리되면|장착되면}}","pl":"Podkładka czyszcząca jest !{{brakująca|obecna}}","ru":"Чистящая губка !{{отсутствует|в наличии}}","sv":"Rengöringsdynan !{{saknas|är på plats}}","fr":"La lingette de nettoyage est !{{manquante|présente}}","no":"Vaskekluten !{{mangler|er på plass}}","ar":"وسادة التنظيف !{{مفقودة|موجودة}}","de":"Das Reinigungspad !{{fehlt|ist vorhanden}}"}}]},"minCompatibility":"12.2.0"}')},6983:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Hue","nl":"Tint","de":"Farbton","fr":"Teinte","it":"Tonalità","sv":"Nyans","no":"Fargetone","es":"Tonalidad","da":"Farvetone","ru":"Оттенок","pl":"Odcień","ko":"색상","ar":"درجة اللون"},"min":0,"chartType":"stepLine","max":1,"decimals":2,"color":"#F7B500","getable":true,"setable":true,"uiComponent":"color","$flow":{"actions":[{"id":"hue","title":{"en":"Set the hue","nl":"Verander kleurtint","de":"Den Farbton setzen","fr":"Définir la teinte","it":"Imposta la tonalità","sv":"Ställ in nyans","no":"Innstill fargetone","es":"Configurar la tonalidad","da":"Indstil farvetonen","ru":"Установить оттенок","pl":"Ustaw odcień","ko":"색조 설정","ar":"ضبط درجة اللون"},"hint":{"en":"Select a color from the hue scale, for example red (0°/360°), yellow (60°), or blue (180°).","nl":"Selecteer een kleurtint van de hue schaal, bijvoorbeeld rood (0°/360°), geel (60°), of blauw (180°).","ru":"Выберите цвет из шкалы оттенков, например красный (0°/360°), желтый (60°) или синий (180°).","pl":"Wybierz barwę ze skali odcieni: np. czerwień (0°/360°), żółty (60°) lub niebieski (180°).","ko":"색조 스케일에서 색상을 선택하세요. 빨간색은 (0°/360°), 노란색은 (60°), 파란색은 (180°)이에요.","no":"Velg en farge fra fargeskalaen, for eksempel rød (0°/360°), gul (60°) eller blå (180°).","ar":"اختر لونًا من مقياس درجات الألوان، على سبيل المثال أحمر (0°/360°)، أصفر (60°)، أو أزرق (180°).","da":"Vælg en farve fra nuanceskalaen, f.eks. rød (0°/360°), gul (60°) eller blå (180°).","de":"Wähle eine Farbe aus der Farbtonskala aus, zum Beispiel Rot (0°/360°), Gelb (60°) oder Blau (180°).","es":"Selecciona un color de la escala cromática [por ej.: rojo (0°/360°), amarillo (60°) o azul (180°)].","fr":"Sélectionnez une couleur dans l\'échelle des teintes, par exemple rouge (0°/360°), jaune (60°) ou bleu (180°).","it":"Seleziona un colore dalla scala di tonalità, ad esempio rosso (0°/360°), giallo (60°) o blu (180°).","sv":"Välj en färg från nyansskalan, t.ex. röd (0°/360°), gul (60°) eller blå (180°)."},"args":[{"name":"hue","type":"range","min":0,"max":1,"step":0.01,"value":0,"label":"°","labelMultiplier":360,"labelDecimals":0}]},{"id":"color","title":{"en":"Set a color","nl":"Verander naar kleur","de":"Eine Farbe setzen","fr":"Définir la couleur","it":"Imposta un colore","sv":"Ställ in en färg","no":"Innstill fargetone","es":"Configurar un color","da":"Indstil en farve","ru":"Установить цвет","pl":"Ustaw barwę","ko":"색상 설정","ar":"ضبط لون"},"args":[{"name":"color","type":"color"}]},{"id":"color_random","title":{"en":"Set a random color","nl":"Verander naar een willekeurige kleur","de":"Eine zufällige Farbe setzen","fr":"Définir une couleur aléatoire","it":"Imposta un colore casuale","sv":"Ställ in en slumpvis färg","no":"Innstill en tilfeldig farge","es":"Configurar un color aleatorio","da":"Indstil en tilfældig farve","ru":"Установить случайный цвет","pl":"Ustaw losową barwę","ko":"무작위 색상 설정","ar":"ضبط لون عشوائي"}}]}}')},6990:e=>{"use strict";e.exports=function(e,t,a){var r,i,n=" ",s=e.level,o=e.dataLevel,l=e.schema[t],d=e.errSchemaPath+"/"+t,u=!e.opts.allErrors,m="data"+(o||""),p="valid"+s;if("#"==l||"#/"==l)e.isRoot?(r=e.async,i="validate"):(r=!0===e.root.schema.$async,i="root.refVal[0]");else{var c=e.resolveRef(e.baseId,l,e.isRoot);if(void 0===c){var g=e.MissingRefError.message(e.baseId,l);if("fail"==e.opts.missingRefs){e.logger.error(g),(k=k||[]).push(n),n="",!1!==e.createErrors?(n+=" { keyword: '$ref' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(d)+" , params: { ref: '"+e.util.escapeQuotes(l)+"' } ",!1!==e.opts.messages&&(n+=" , message: 'can\\'t resolve reference "+e.util.escapeQuotes(l)+"' "),e.opts.verbose&&(n+=" , schema: "+e.util.toQuotedString(l)+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),n+=" } "):n+=" {} ";var h=n;n=k.pop(),!e.compositeRule&&u?e.async?n+=" throw new ValidationError(["+h+"]); ":n+=" validate.errors = ["+h+"]; return false; ":n+=" var err = "+h+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",u&&(n+=" if (false) { ")}else{if("ignore"!=e.opts.missingRefs)throw new e.MissingRefError(e.baseId,l,g);e.logger.warn(g),u&&(n+=" if (true) { ")}}else if(c.inline){var v=e.util.copy(e);v.level++;var f="valid"+v.level;v.schema=c.schema,v.schemaPath="",v.errSchemaPath=l,n+=" "+e.validate(v).replace(/validate\.schema/g,c.code)+" ",u&&(n+=" if ("+f+") { ")}else r=!0===c.$async||e.async&&!1!==c.$async,i=c.code}if(i){var k;(k=k||[]).push(n),n="",e.opts.passContext?n+=" "+i+".call(this, ":n+=" "+i+"( ",n+=" "+m+", (dataPath || '')",'""'!=e.errorPath&&(n+=" + "+e.errorPath);var y=n+=" , "+(o?"data"+(o-1||""):"parentData")+" , "+(o?e.dataPathArr[o]:"parentDataProperty")+", rootData) ";if(n=k.pop(),r){if(!e.async)throw new Error("async schema referenced by sync schema");u&&(n+=" var "+p+"; "),n+=" try { await "+y+"; ",u&&(n+=" "+p+" = true; "),n+=" } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; ",u&&(n+=" "+p+" = false; "),n+=" } ",u&&(n+=" if ("+p+") { ")}else n+=" if (!"+y+") { if (vErrors === null) vErrors = "+i+".errors; else vErrors = vErrors.concat("+i+".errors); errors = vErrors.length; } ",u&&(n+=" else { ")}return n}},6995:(e,t,a)=>{"use strict";var r=a(8287).hp,i=a(9081),n=a(1946);function s(e,t){var a=n(e,16,8,t);return(n(e,16,10,t)<<16)+a}function o(e){if(e.length>24)return e.slice(12)}e.exports={detect:function(e){var t=e.toString("hex",0,4);return"49492a00"===t||"4d4d002a"===t},calculate:function(e,t){if(!t)throw new TypeError("Tiff doesn't support buffer");var a="BE"===function(e){var t=e.toString("ascii",0,2);return"II"===t?"LE":"MM"===t?"BE":void 0}(e),l=function(e,t){for(var a,r,i,l={};e&&e.length&&(a=n(e,16,0,t),r=n(e,16,2,t),i=n(e,32,4,t),0!==a);)1!==i||3!==r&&4!==r||(l[a]=s(e,t)),e=o(e);return l}(function(e,t,a){var s=n(e,32,4,a),o=1024,l=i.statSync(t).size;s+o>l&&(o=l-s-10);var d=new r(o),u=i.openSync(t,"r");return i.readSync(u,d,0,o,s),d.slice(2)}(e,t,a),a),d=l[256],u=l[257];if(!d||!u)throw new TypeError("Invalid Tiff, missing tags");return{width:d,height:u}}}},6999:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Repeat","nl":"Herhalen","de":"Wiederholen","fr":"Répéter","it":"Ripeti","sv":"Upprepa","no":"Gjenta","es":"Repetir","da":"Gentag","ru":"Повторить","pl":"Powtórz","ko":"반복","ar":"تكرار"},"type":"enum","values":[{"id":"none","title":{"en":"Off","nl":"Uit","de":"Aus","fr":"Arrêt","it":"Spegni","sv":"Av","no":"Av","es":"Apagar","da":"Fra","ru":"выкл","pl":"wył","ko":"끔","ar":"إيقاف"}},{"id":"track","title":{"en":"Repeat Track","de":"Titel wiederholen","fr":"Répéter le titre","it":"Ripeti traccia","sv":"Upprepa spår","no":"Gjenta spor","es":"Repetir pista","da":"Gentag spor","ru":"Повторить трек","pl":"Powtórz utwór","ko":"트랙 반복","ar":"تكرار المسار","nl":"Nummer herhalen"}},{"id":"playlist","title":{"en":"Repeat Playlist","de":"Playlist wiederholen","fr":"Répéter la playlist","it":"Ripeti playlist","sv":"Upprepa spellista","no":"Gjenta spilleliste","es":"Repetir lista de reproducción","da":"Gentag afspilningsliste","ru":"Повторить плейлист","pl":"Powtórz składankę","ko":"재생목록 반복","ar":"تكرار قائمة التشغيل","nl":"Afspeellijst herhalen"}}],"color":"#9033FC","getable":true,"setable":true,"uiComponent":"media","$flow":{"actions":[{"id":"set_repeat","title":{"en":"Repeat","de":"Wiederholen","fr":"Répéter","it":"Ripeti","sv":"Upprepa","no":"Gjenta","es":"Repetir","da":"Gentag","ru":"Повторить","pl":"Powtórz","ko":"반복","ar":"تكرار","nl":"Herhalen"},"args":[{"name":"value","type":"dropdown","values":"$values"}]}]}}')},7008:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Light Alarm","nl":"Lichtalarm","da":"Lysalarm","it":"Allarme luce","ko":"빛 감지","no":"Lysalarm","pl":"Alarm światła","ru":"Сигнал освещения","sv":"Belysningslarm","es":"Alarma de luz","fr":"Alarme de lumière","ar":"إنذار الضوء","de":"Lichtalarm"},"titleShort":{"en":"Light","nl":"Licht","da":"Lys","it":"Luce","ko":"조명","no":"Lys","pl":"Światło","ru":"Освещение","sv":"Belysning","es":"Luz","fr":"Lumière","ar":"الضوء","de":"Licht"},"desc":{"en":"True when light is detected.","nl":"Wordt geactiveerd wanneer licht wordt gedetecteerd.","da":"Sandt, når der registreres lys.","it":"Vero quando viene rilevata la luce.","ko":"빛이 감지되면 참입니다.","no":"Sann når lys er registrert.","pl":"Prawda, gdy wykryte jest światło.","ru":"Значение «истина» при обнаружении элемента освещения.","sv":"Sant när ljus detekteras.","es":"Activado cuando se detecta luz.","fr":"Se déclenche lorsque de la lumière est détectée.","ar":"صحيح عند اكتشاف ضوء.","de":"Wahr, wenn Licht erkannt wird."},"insights":true,"insightsTitleTrue":{"en":"Light was detected","nl":"Er werd licht gedetecteerd","da":"Lys blev registreret","it":"La luce è stata rilevata","ko":"빛 감지됨","no":"Lys ble registrert","pl":"Światło było wykryte","ru":"Элемент освещения был обнаружен","sv":"Ljus detekterades","es":"Se ha detectado luz","fr":"De la lumière a été détectée","ar":"تم اكتشاف ضوء","de":"Licht wurde erkannt"},"insightsTitleFalse":{"en":"Light was no longer detected","nl":"Er werd geen licht meer gedetecteerd","da":"Lyset blev ikke længere registreret","it":"La luce non è più rilevata","ko":"빛 감지되지 않음","no":"Lys ble ikke lenger registrert","pl":"Światło nie było już wykryte","ru":"Элемент освещения больше не обнаруживался","sv":"Ljus detekterades inte längre","es":"No hay luz detectada","fr":"La lumière n\'est plus détectée","ar":"لم يعد يتم اكتشاف ضوء","de":"Licht wurde nicht mehr erkannt"},"getable":true,"setable":false,"color":"#F7B500","uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_light_true","highlight":true,"title":{"en":"Light is detected","nl":"Er wordt licht gedetecteerd","da":"Der er registreret lys","it":"Luce rilevata","ko":"빛이 감지되면","no":"Lys er registrert","pl":"Światło jest wykryte","ru":"Элемент освещения обнаружен","sv":"Ljus detekteras","es":"Se detecta luz","fr":"De la lumière est détectée","ar":"تم اكتشاف ضوء","de":"Licht wird erkannt"}},{"id":"alarm_light_false","title":{"en":"Light is no longer detected","nl":"Er wordt geen licht meer gedetecteerd","da":"Lyset registreres ikke længere","it":"La luce non è più rilevata","ko":"빛이 감지되지 않으면","no":"Lys registreres ikke lenger","pl":"Światło nie jest już wykryte","ru":"Элемент освещения больше не обнаруживается","sv":"Ljus detekteras inte längre","es":"Ya no se detecta luz","fr":"La lumière n\'est plus détectée","ar":"لم يعد يتم اكتشاف ضوء","de":"Licht wird nicht mehr erkannt"}}],"conditions":[{"id":"alarm_light","title":{"en":"Light !{{is|is not}} detected","nl":"Er !{{wordt|wordt geen}} licht gedetecteerd","da":"Lys !{{er|er ikke}} registreret","it":"La luce !{è|non è}} rilevata","ko":"빛이 감지!{{되면|되지 않으면}}","no":"Lys !{{er|er}} ikke registrert","pl":"Światło !{{jest|nie jest}} wykryte","ru":"Элемент освещения !{{обнаружен|не обнаружен}}","sv":"Ljus !{{har|har inte}} detekterats","es":"!{{Se detecta|No se detecta}} luz","fr":"Lumière !{{détectée|non détectée}}","ar":"!{{تم|لم يتم}} اكتشاف ضوء","de":"Licht !{{wird|wird nicht}} erkannt"}}]},"minCompatibility":"12.2.0"}')},7021:(e,t,a)=>{var r;!function(i){var n=/^\s+/,s=/\s+$/,o=0,l=i.round,d=i.min,u=i.max,m=i.random;function p(e,t){if(t=t||{},(e=e||"")instanceof p)return e;if(!(this instanceof p))return new p(e,t);var a=function(e){var t,a,r,o={r:0,g:0,b:0},l=1,m=null,p=null,c=null,g=!1,h=!1;return"string"==typeof e&&(e=function(e){e=e.replace(n,"").replace(s,"").toLowerCase();var t,a=!1;if(O[e])e=O[e],a=!0;else if("transparent"==e)return{r:0,g:0,b:0,a:0,format:"name"};return(t=R.rgb.exec(e))?{r:t[1],g:t[2],b:t[3]}:(t=R.rgba.exec(e))?{r:t[1],g:t[2],b:t[3],a:t[4]}:(t=R.hsl.exec(e))?{h:t[1],s:t[2],l:t[3]}:(t=R.hsla.exec(e))?{h:t[1],s:t[2],l:t[3],a:t[4]}:(t=R.hsv.exec(e))?{h:t[1],s:t[2],v:t[3]}:(t=R.hsva.exec(e))?{h:t[1],s:t[2],v:t[3],a:t[4]}:(t=R.hex8.exec(e))?{r:x(t[1]),g:x(t[2]),b:x(t[3]),a:N(t[4]),format:a?"name":"hex8"}:(t=R.hex6.exec(e))?{r:x(t[1]),g:x(t[2]),b:x(t[3]),format:a?"name":"hex"}:(t=R.hex4.exec(e))?{r:x(t[1]+""+t[1]),g:x(t[2]+""+t[2]),b:x(t[3]+""+t[3]),a:N(t[4]+""+t[4]),format:a?"name":"hex8"}:!!(t=R.hex3.exec(e))&&{r:x(t[1]+""+t[1]),g:x(t[2]+""+t[2]),b:x(t[3]+""+t[3]),format:a?"name":"hex"}}(e)),"object"==typeof e&&(U(e.r)&&U(e.g)&&U(e.b)?(t=e.r,a=e.g,r=e.b,o={r:255*D(t,255),g:255*D(a,255),b:255*D(r,255)},g=!0,h="%"===String(e.r).substr(-1)?"prgb":"rgb"):U(e.h)&&U(e.s)&&U(e.v)?(m=F(e.s),p=F(e.v),o=function(e,t,a){e=6*D(e,360),t=D(t,100),a=D(a,100);var r=i.floor(e),n=e-r,s=a*(1-t),o=a*(1-n*t),l=a*(1-(1-n)*t),d=r%6;return{r:255*[a,o,s,s,l,a][d],g:255*[l,a,a,o,s,s][d],b:255*[s,s,l,a,a,o][d]}}(e.h,m,p),g=!0,h="hsv"):U(e.h)&&U(e.s)&&U(e.l)&&(m=F(e.s),c=F(e.l),o=function(e,t,a){var r,i,n;function s(e,t,a){return a<0&&(a+=1),a>1&&(a-=1),a<1/6?e+6*(t-e)*a:a<.5?t:a<2/3?e+(t-e)*(2/3-a)*6:e}if(e=D(e,360),t=D(t,100),a=D(a,100),0===t)r=i=n=a;else{var o=a<.5?a*(1+t):a+t-a*t,l=2*a-o;r=s(l,o,e+1/3),i=s(l,o,e),n=s(l,o,e-1/3)}return{r:255*r,g:255*i,b:255*n}}(e.h,m,c),g=!0,h="hsl"),e.hasOwnProperty("a")&&(l=e.a)),l=T(l),{ok:g,format:e.format||h,r:d(255,u(o.r,0)),g:d(255,u(o.g,0)),b:d(255,u(o.b,0)),a:l}}(e);this._originalInput=e,this._r=a.r,this._g=a.g,this._b=a.b,this._a=a.a,this._roundA=l(100*this._a)/100,this._format=t.format||a.format,this._gradientType=t.gradientType,this._r<1&&(this._r=l(this._r)),this._g<1&&(this._g=l(this._g)),this._b<1&&(this._b=l(this._b)),this._ok=a.ok,this._tc_id=o++}function c(e,t,a){e=D(e,255),t=D(t,255),a=D(a,255);var r,i,n=u(e,t,a),s=d(e,t,a),o=(n+s)/2;if(n==s)r=i=0;else{var l=n-s;switch(i=o>.5?l/(2-n-s):l/(n+s),n){case e:r=(t-a)/l+(t>1)+720)%360;--t;)r.h=(r.h+i)%360,n.push(p(r));return n}function C(e,t){t=t||6;for(var a=p(e).toHsv(),r=a.h,i=a.s,n=a.v,s=[],o=1/t;t--;)s.push(p({h:r,s:i,v:n})),n=(n+o)%1;return s}p.prototype={isDark:function(){return this.getBrightness()<128},isLight:function(){return!this.isDark()},isValid:function(){return this._ok},getOriginalInput:function(){return this._originalInput},getFormat:function(){return this._format},getAlpha:function(){return this._a},getBrightness:function(){var e=this.toRgb();return(299*e.r+587*e.g+114*e.b)/1e3},getLuminance:function(){var e,t,a,r=this.toRgb();return e=r.r/255,t=r.g/255,a=r.b/255,.2126*(e<=.03928?e/12.92:i.pow((e+.055)/1.055,2.4))+.7152*(t<=.03928?t/12.92:i.pow((t+.055)/1.055,2.4))+.0722*(a<=.03928?a/12.92:i.pow((a+.055)/1.055,2.4))},setAlpha:function(e){return this._a=T(e),this._roundA=l(100*this._a)/100,this},toHsv:function(){var e=g(this._r,this._g,this._b);return{h:360*e.h,s:e.s,v:e.v,a:this._a}},toHsvString:function(){var e=g(this._r,this._g,this._b),t=l(360*e.h),a=l(100*e.s),r=l(100*e.v);return 1==this._a?"hsv("+t+", "+a+"%, "+r+"%)":"hsva("+t+", "+a+"%, "+r+"%, "+this._roundA+")"},toHsl:function(){var e=c(this._r,this._g,this._b);return{h:360*e.h,s:e.s,l:e.l,a:this._a}},toHslString:function(){var e=c(this._r,this._g,this._b),t=l(360*e.h),a=l(100*e.s),r=l(100*e.l);return 1==this._a?"hsl("+t+", "+a+"%, "+r+"%)":"hsla("+t+", "+a+"%, "+r+"%, "+this._roundA+")"},toHex:function(e){return h(this._r,this._g,this._b,e)},toHexString:function(e){return"#"+this.toHex(e)},toHex8:function(e){return function(e,t,a,r,i){var n=[$(l(e).toString(16)),$(l(t).toString(16)),$(l(a).toString(16)),$(I(r))];return i&&n[0].charAt(0)==n[0].charAt(1)&&n[1].charAt(0)==n[1].charAt(1)&&n[2].charAt(0)==n[2].charAt(1)&&n[3].charAt(0)==n[3].charAt(1)?n[0].charAt(0)+n[1].charAt(0)+n[2].charAt(0)+n[3].charAt(0):n.join("")}(this._r,this._g,this._b,this._a,e)},toHex8String:function(e){return"#"+this.toHex8(e)},toRgb:function(){return{r:l(this._r),g:l(this._g),b:l(this._b),a:this._a}},toRgbString:function(){return 1==this._a?"rgb("+l(this._r)+", "+l(this._g)+", "+l(this._b)+")":"rgba("+l(this._r)+", "+l(this._g)+", "+l(this._b)+", "+this._roundA+")"},toPercentageRgb:function(){return{r:l(100*D(this._r,255))+"%",g:l(100*D(this._g,255))+"%",b:l(100*D(this._b,255))+"%",a:this._a}},toPercentageRgbString:function(){return 1==this._a?"rgb("+l(100*D(this._r,255))+"%, "+l(100*D(this._g,255))+"%, "+l(100*D(this._b,255))+"%)":"rgba("+l(100*D(this._r,255))+"%, "+l(100*D(this._g,255))+"%, "+l(100*D(this._b,255))+"%, "+this._roundA+")"},toName:function(){return 0===this._a?"transparent":!(this._a<1)&&(L[h(this._r,this._g,this._b,!0)]||!1)},toFilter:function(e){var t="#"+v(this._r,this._g,this._b,this._a),a=t,r=this._gradientType?"GradientType = 1, ":"";if(e){var i=p(e);a="#"+v(i._r,i._g,i._b,i._a)}return"progid:DXImageTransform.Microsoft.gradient("+r+"startColorstr="+t+",endColorstr="+a+")"},toString:function(e){var t=!!e;e=e||this._format;var a=!1,r=this._a<1&&this._a>=0;return t||!r||"hex"!==e&&"hex6"!==e&&"hex3"!==e&&"hex4"!==e&&"hex8"!==e&&"name"!==e?("rgb"===e&&(a=this.toRgbString()),"prgb"===e&&(a=this.toPercentageRgbString()),"hex"!==e&&"hex6"!==e||(a=this.toHexString()),"hex3"===e&&(a=this.toHexString(!0)),"hex4"===e&&(a=this.toHex8String(!0)),"hex8"===e&&(a=this.toHex8String()),"name"===e&&(a=this.toName()),"hsl"===e&&(a=this.toHslString()),"hsv"===e&&(a=this.toHsvString()),a||this.toHexString()):"name"===e&&0===this._a?this.toName():this.toRgbString()},clone:function(){return p(this.toString())},_applyModification:function(e,t){var a=e.apply(null,[this].concat([].slice.call(t)));return this._r=a._r,this._g=a._g,this._b=a._b,this.setAlpha(a._a),this},lighten:function(){return this._applyModification(b,arguments)},brighten:function(){return this._applyModification(w,arguments)},darken:function(){return this._applyModification(z,arguments)},desaturate:function(){return this._applyModification(f,arguments)},saturate:function(){return this._applyModification(k,arguments)},greyscale:function(){return this._applyModification(y,arguments)},spin:function(){return this._applyModification(P,arguments)},_applyCombination:function(e,t){return e.apply(null,[this].concat([].slice.call(t)))},analogous:function(){return this._applyCombination(j,arguments)},complement:function(){return this._applyCombination(_,arguments)},monochromatic:function(){return this._applyCombination(C,arguments)},splitcomplement:function(){return this._applyCombination(E,arguments)},triad:function(){return this._applyCombination(S,arguments)},tetrad:function(){return this._applyCombination(A,arguments)}},p.fromRatio=function(e,t){if("object"==typeof e){var a={};for(var r in e)e.hasOwnProperty(r)&&(a[r]="a"===r?e[r]:F(e[r]));e=a}return p(e,t)},p.equals=function(e,t){return!(!e||!t)&&p(e).toRgbString()==p(t).toRgbString()},p.random=function(){return p.fromRatio({r:m(),g:m(),b:m()})},p.mix=function(e,t,a){a=0===a?0:a||50;var r=p(e).toRgb(),i=p(t).toRgb(),n=a/100;return p({r:(i.r-r.r)*n+r.r,g:(i.g-r.g)*n+r.g,b:(i.b-r.b)*n+r.b,a:(i.a-r.a)*n+r.a})},p.readability=function(e,t){var a=p(e),r=p(t);return(i.max(a.getLuminance(),r.getLuminance())+.05)/(i.min(a.getLuminance(),r.getLuminance())+.05)},p.isReadable=function(e,t,a){var r,i,n,s,o,l=p.readability(e,t);switch(i=!1,(n=a,"AA"!==(s=((n=n||{level:"AA",size:"small"}).level||"AA").toUpperCase())&&"AAA"!==s&&(s="AA"),"small"!==(o=(n.size||"small").toLowerCase())&&"large"!==o&&(o="small"),r={level:s,size:o}).level+r.size){case"AAsmall":case"AAAlarge":i=l>=4.5;break;case"AAlarge":i=l>=3;break;case"AAAsmall":i=l>=7}return i},p.mostReadable=function(e,t,a){var r,i,n,s,o=null,l=0;i=(a=a||{}).includeFallbackColors,n=a.level,s=a.size;for(var d=0;dl&&(l=r,o=p(t[d]));return p.isReadable(e,o,{level:n,size:s})||!i?o:(a.includeFallbackColors=!1,p.mostReadable(e,["#fff","#000"],a))};var O=p.names={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"0ff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000",blanchedalmond:"ffebcd",blue:"00f",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",burntsienna:"ea7e5d",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"0ff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkgrey:"a9a9a9",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"f0f",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",grey:"808080",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgreen:"90ee90",lightgrey:"d3d3d3",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"789",lightslategrey:"789",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"0f0",limegreen:"32cd32",linen:"faf0e6",magenta:"f0f",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370db",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"db7093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",rebeccapurple:"663399",red:"f00",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"fff",whitesmoke:"f5f5f5",yellow:"ff0",yellowgreen:"9acd32"},L=p.hexNames=function(e){var t={};for(var a in e)e.hasOwnProperty(a)&&(t[e[a]]=a);return t}(O);function T(e){return e=parseFloat(e),(isNaN(e)||e<0||e>1)&&(e=1),e}function D(e,t){(function(e){return"string"==typeof e&&-1!=e.indexOf(".")&&1===parseFloat(e)})(e)&&(e="100%");var a=function(e){return"string"==typeof e&&-1!=e.indexOf("%")}(e);return e=d(t,u(0,parseFloat(e))),a&&(e=parseInt(e*t,10)/100),i.abs(e-t)<1e-6?1:e%t/parseFloat(t)}function M(e){return d(1,u(0,e))}function x(e){return parseInt(e,16)}function $(e){return 1==e.length?"0"+e:""+e}function F(e){return e<=1&&(e=100*e+"%"),e}function I(e){return i.round(255*parseFloat(e)).toString(16)}function N(e){return x(e)/255}var B,H,V,R=(H="[\\s|\\(]+("+(B="(?:[-\\+]?\\d*\\.\\d+%?)|(?:[-\\+]?\\d+%?)")+")[,|\\s]+("+B+")[,|\\s]+("+B+")\\s*\\)?",V="[\\s|\\(]+("+B+")[,|\\s]+("+B+")[,|\\s]+("+B+")[,|\\s]+("+B+")\\s*\\)?",{CSS_UNIT:new RegExp(B),rgb:new RegExp("rgb"+H),rgba:new RegExp("rgba"+V),hsl:new RegExp("hsl"+H),hsla:new RegExp("hsla"+V),hsv:new RegExp("hsv"+H),hsva:new RegExp("hsva"+V),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/});function U(e){return!!R.CSS_UNIT.exec(e)}e.exports?e.exports=p:void 0===(r=function(){return p}.call(t,a,t,e))||(e.exports=r)}(Math)},7067:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Artist","nl":"Artiest","de":"Künstler","fr":"Artiste","it":"Artista","sv":"Artist","no":"Artist","es":"Artista","da":"Kunstner","ru":"Исполнитель","pl":"Wykonawca","ko":"아티스트","ar":"الفنان"},"type":"string","color":"#9033FC","getable":true,"setable":false,"uiComponent":"media","$flow":{"triggers":[{"id":"speaker_artist_changed","title":{"en":"The artist changed","nl":"De artiest is veranderd","de":"Der Künstler hat sich verändert","fr":"L\'artiste a été modifié","it":"L\'artista è cambiato","sv":"Artisten ändrades","no":"Artisten ble endret","es":"El artista ha cambiado","da":"Kunstneren skiftede","ru":"Исполнитель изменен","pl":"Zmiana wykonawcy","ko":"아티스트가 변경되면","ar":"تغير الفنان"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":"Johnny S."}]}]}}')},7073:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Formaldehyde Level","nl":"Formaldehydeniveau","da":"Formaldehydniveau","it":"Livello di formaldeide","ko":"포름알데히드 수준","pl":"Poziom formaldehydu","ru":"Уровень формальдегида","sv":"Formaldehydnivå","es":"Nivel de formaldehído","fr":"Niveau de formaldéhyde","no":"Formaldehydnivå","ar":"مستوى الفورمالديهيد","de":"Formaldehydgehalt"},"desc":{"en":"The level of formaldehyde in the air.","nl":"De mate van formaldehyde in de lucht.","da":"Niveauet af formaldehyd i luften.","it":"Il livello di formaldeide nell\'aria.","ko":"공기 중 포름알데히드의 수준입니다.","pl":"Poziom formaldehydu w powietrzu.","ru":"Уровень содержания формальдегида в воздухе.","sv":"Halten av formaldehyd i luften.","es":"El nivel de formaldehído en el aire.","fr":"Le niveau de formaldéhyde dans l\'air.","no":"Nivået av formaldehyd i luften.","ar":"مستوى الفورمالديهيد في الهواء.","de":"Der Formaldehydgehalt in der Luft."},"values":[{"id":"low","title":{"en":"Low","nl":"Laag","da":"Lavt","it":"Basso","ko":"낮음","pl":"Niski","ru":"Низкий","sv":"Låg","es":"Bajo","fr":"Faible","no":"Lavt","ar":"منخفض","de":"Niedrig"}},{"id":"medium","title":{"en":"Medium","nl":"Gemiddeld","da":"Medium","it":"Medio","ko":"보통","pl":"Średni","ru":"Средний","sv":"Medium","es":"Intermedio","fr":"Moyen","no":"Middels","ar":"متوسط","de":"Mittel"}},{"id":"high","title":{"en":"High","nl":"Hoog","da":"Højt","it":"Alto","ko":"높음","pl":"Wysoki","ru":"Высокий","sv":"Hög","es":"Alto","fr":"Élevé","no":"Høyt","ar":"عالي","de":"Hoch"}},{"id":"critical","title":{"en":"Critical","nl":"Kritiek","da":"Kritisk","it":"Critico","ko":"위험","pl":"Krytyczny","ru":"Критический","sv":"Kritisk","es":"Crítico","fr":"Critique","no":"Kritisk","ar":"حرج","de":"Kritisch"}}],"color":"#8B0000","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"level_ch2o_changed","highlight":true,"title":{"en":"The formaldehyde level changed to","nl":"Het formaldehydeniveau is veranderd naar","da":"Formaldehydniveauet blev ændret til","it":"Il livello di formaldeide è passato a","ko":"포름알데히드 수준이 다음으로 변경되면","pl":"Poziom formaldehydu zmienił się na","ru":"Уровень формальдегида изменился на","sv":"Formaldehydnivån ändrades till","es":"El nivel de formaldehído ha cambiado a","fr":"Le niveau de formaldéhyde est passé à","no":"Formaldehydnivået ble endret til","ar":"تم تغيير مستوى الفورمالديهيد إلى","de":"Der Formaldehydgehalt hat sich geändert auf"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"level_ch2o_is","title":{"en":"The formaldehyde level !{{is|is not}}","nl":"Het formaldehydeniveau !{{is|is niet}}","da":"Niveauet af formaldehyd !{{er|er ikke}}","it":"Il livello di formaldeide !{{è|non è}}","ko":"포름알데히드 수준이 다음!{{이면|이 아니면}}","pl":"Poziom formaldehydu !{{jest|nie jest}}","ru":"Уровень формальдегида !{{|не}}","sv":"Nivån av formaldehyd !{{är|är inte}}","es":"El nivel de formaldehído !{{es|no es}}","fr":"Le taux de formaldéhyde !{{est|n\'est pas}}","no":"Formaldehydnivået !{{er|er ikke}}","ar":"مستوى الفورمالديهيد !{{هو|ليس}}","de":"Der Formaldehydgehalt !{{ist|ist nicht}}"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.2.0"}')},7099:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Running Alarm","nl":"Werkzaamheidsalarm","da":"Løbende alarm","it":"Allarme in esecuzione","ko":"작동 감지","no":"Kjøringsalarm","pl":"Alarm pracy urządzenia","ru":"Сигнал о процессе","sv":"Larm körs","es":"Alarma de funcionamiento","fr":"Alarme de fonctionnement","ar":"إنذار التشغيل","de":"Laufender Alarm"},"titleShort":{"en":"Running","nl":"Actief","da":"I gang","it":"In esecuzione","ko":"작동 중","no":"Kjøring","pl":"Praca urządzenia","ru":"Выполняется","sv":"Körs","es":"Funcionamiento","fr":"En marche","ar":"قيد التشغيل","de":"Läuft"},"desc":{"en":"True when the device is busy (e.g., printer is printing).","nl":"Waar wanneer het apparaat bezig is (bijv. printer is aan het printen).","da":"Sandt, når enheden er optaget (f.eks. printeren er i gang med at udskrive).","it":"Vero quando il dispositivo è occupato (ad esempio, la stampante sta stampando).","ko":"디바이스가 바쁜 상태(예: 프린터가 인쇄 중)면 참입니다.","pl":"Prawda, gdy urządzenie jest zajęte (np. drukarka drukuje).","ru":"Значение «истина», когда устройство занято (например, принтер печатает документ).","sv":"Sant när enheten är upptagen (t.ex. skrivaren skriver ut).","es":"Activado cuando el dispositivo está en funcionamiento (por ejemplo, la impresora está imprimiendo).","fr":"Se déclenche lorsque l\'appareil est utilisé (par exemple, l\'imprimante est en train d\'imprimer).","no":"Sann når enheten er i bruk (f.eks. en skriver som skriver ut noe).","ar":"صحيح عندما يكون الجهاز مشغولًا (مثل، قيام الطابعة بالطباعة).","de":"Wahr, wenn das Gerät arbeitet (z. B. wenn der Drucker druckt)."},"insights":true,"insightsTitleTrue":{"en":"Running alarm turned on","nl":"Werkzaamheidsalarm ging aan","da":"Løbende alarm slået til","it":"Allarme elaborazione in corso acceso","ko":"작동 감지됨","pl":"Alarm pracy urządzenia włączony","ru":"Сигнал о процессе включен","sv":"Körlarm aktiverat","es":"Alarma de funcionamiento activada","fr":"Alarme de fonctionnement activée","no":"Kjøringsalarm aktivert","ar":"تم تشغيل إنذار التشغيل","de":"Laufender Alarm eingeschaltet"},"insightsTitleFalse":{"en":"Running alarm turned off","nl":"Werkzaamheidsalarm ging uit","da":"Løbende alarm slået fra","it":"Allarme elaborazione in corso spento","ko":"작동 안 함","pl":"Alarm pracy urządzenia wyłączony","ru":"Сигнал о процессе выключен","sv":"Körlarm inaktiverat","es":"Alarma de funcionamiento desactivada","fr":"Alarme de fonctionnement désactivée","no":"Kjøringsalarm deaktivert","ar":"تم إيقاف إنذار التشغيل","de":"Laufender Alarm ausgeschaltet"},"color":"#32C5FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_running_true","highlight":true,"title":{"en":"The running alarm turned on","nl":"Het werkzaamheidsalarm gaat aan","da":"Den løbende alarm er slået til","it":"L\'allarme di elaborazione in corso si è acceso","ko":"작동 중이면","pl":"Włączył się alarm pracy urządzenia","ru":"Сигнал о процессе включен","sv":"Körlarmet aktiverat","es":"La alarma de funcionamiento se ha activado","fr":"L\'alarme de fonctionnement s\'est activée","no":"Kjøringsalarmen ble aktivert","ar":"تم تشغيل إنذار التشغيل","de":"Der Laufende Alarm wurde eingeschaltet"}},{"id":"alarm_running_false","title":{"en":"The running alarm turned off","nl":"Het werkzaamheidsalarm gaat uit","da":"Den løbende alarm er slået fra","it":"L\'allarme di elaborazione in corso si è spento","ko":"작동하지 않으면","pl":"Alarm pracy urządzenia wyłączony","ru":"Сигнал о процессе выключен","sv":"Körlarmet inaktiverat","es":"La alarma de funcionamiento se ha desactivado","fr":"L\'alarme de fonctionnement s\'est désactivée","no":"Kjøringsalarmen ble deaktivert","ar":"تم إيقاف إنذار التشغيل","de":"Der laufende Alarm wurde ausgeschaltet"}}],"conditions":[{"id":"alarm_running","title":{"en":"Is !{{busy|not busy}}","nl":"Is !{{bezig|niet bezig}}","da":"Er !{{optaget|ikke optaget}}","it":"È !{{occupato|non occupato}}","ko":"!{{작동 중이면|작동하지 않으면}}","pl":"!{{Jest zajęte|Nie jest zajęte}}","ru":"Устройство !{{занято|не занято}}","sv":"Är !{{upptaget|inte upptaget}}","es":"!{{Está en funcionamiento|No está en funcionamiento}}","fr":"Est !{{connectée|déconnectée}}","no":"Er !{{i bruk|ikke i bruk}}","ar":"!{{مشغول|غير مشغول}}","de":"!{{Arbeitet|Arbeitet nicht}}"}}]},"minCompatibility":"12.2.0"}')},7101:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Camera","nl":"Camera","de":"Kamera","fr":"Caméra","it":"Telecamera","sv":"Kamera","no":"Kamera","es":"Cámara","da":"Kamera","ru":"Камера","pl":"Kamera","ko":"카메라","ar":"كاميرا"},"description":{"en":"Security camera","nl":"Beveiligingscamera","de":"Überwachungskamera","fr":"Caméra de sécurité","it":"Telecamera di sicurezza","sv":"Säkerhetskamera","no":"Sikkerhetskamera","es":"Cámara de seguridad","da":"Overvågningskamera","ru":"Камера наблюдения","pl":"Kamera bezpieczeństwa","ko":"보안 카메라","ar":"كاميرا أمنية"}}')},7106:e=>{"use strict";var t=e.exports=function(e,t,r){"function"==typeof t&&(r=t,t={}),a(t,"function"==typeof(r=t.cb||r)?r:r.pre||function(){},r.post||function(){},e,"",e)};function a(e,r,i,n,s,o,l,d,u,m){if(n&&"object"==typeof n&&!Array.isArray(n)){for(var p in r(n,s,o,l,d,u,m),n){var c=n[p];if(Array.isArray(c)){if(p in t.arrayKeywords)for(var g=0;g{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"PM10 Alarm","nl":"PM10-waarschuwing","de":"PM10-Alarm","fr":"Alarme PM10","it":"Allarme PM10","sv":"PM10-larm","no":"PM10-alarm","es":"Alarma de PM10","da":"PM10-alarm","ru":"Сигнал ТЧ10","pl":"Alarm PM10","ko":"미세먼지(PM10) 알람","ar":"إنذار PM10"},"titleShort":{"en":"PM10","nl":"PM10","de":"PM10","fr":"PM10","it":"PM10","sv":"PM10","no":"PM10","es":"PM10","da":"PM10","ru":"ТЧ10","pl":"PM10","ko":"PM10","ar":"PM10"},"desc":{"en":"True when PM10 values exceeds threshold","nl":"Wordt geactiveerd wanneer PM10-waarden de drempel overschrijden","de":"True, wenn PM10-Werte die Schwelle überschreiten","fr":"Se déclenche lorsque les valeurs PM10 excèdent un seuil","it":"Vero quando i valori PM10 superano la soglia","sv":"Sant när PM10-värdena överstiger gränsvärdet","no":"Sann når PM10-verdiene overskrider grenseverdien","es":"Activado cuando los valores de PM10 superan el límite","da":"Sandt, når PM10-værdier overskrider grænseværdien","ru":"Значение «истина» при превышении контрольного значения ТЧ10","pl":"Prawda, gdy wartości PM10 przekraczają próg","ko":"PM10 값이 임계값을 초과하면 참","ar":"صحيح عندما تتجاوز قيم PM10 الحد"},"insights":true,"insightsTitleTrue":{"en":"PM10 alarm turned on","nl":"PM10-waarschuwing geactiveerd","de":"PM10-Alarm ist angegangen","fr":"Alarme PM10 activée","it":"Allarme PM10 acceso","sv":"PM10-larm aktiverat","no":"PM10-alarm aktivert","es":"Alarma de PM10 activada","da":"PM10-alarm blev aktiveret","ru":"Сигнал ТЧ10 включен","pl":"Alarm PM10 włączony","ko":"미세먼지(PM10) 알람 켜짐","ar":"تم تشغيل إنذار PM10"},"insightsTitleFalse":{"en":"PM10 alarm turned off","nl":"PM10-waarschuwing gedeactiveerd","de":"PM10-Alarm ist ausgegangen","fr":"Alarme PM10 désactivée","it":"Allarme PM10 spento","sv":"PM10-larm inaktiverat","no":"PM10-alarm deaktivert","es":"Alarma de PM10 desactivada","da":"PM10-alarm blev deaktiveret","ru":"Сигнал ТЧ10 выключен","pl":"Alarm PM10 wyłączony","ko":"미세먼지(PM10) 알람 꺼짐","ar":"تم إيقاف إنذار PM10"},"color":"#E02020","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_pm10_true","highlight":true,"title":{"en":"The PM10 alarm turned on","nl":"De PM10-waarschuwing is geactiveerd","de":"Der PM10-Alarm ist angegangen","fr":"L\'alarme PM10 s\'est activée","it":"L\'allarme PM10 si è acceso","sv":"PM10-larmet aktiverat","no":"PM10-alarmen ble aktivert","es":"La alarma de PM10 se ha activado","da":"PM10-alarmen blev aktiveret","ru":"Сигнал ТЧ10 включен","pl":"Włączył się alarm PM10","ko":"미세먼지(PM10) 알람이 \'예\'이면","ar":"تم تشغيل إنذار PM10"}},{"id":"alarm_pm10_false","title":{"en":"The PM10 alarm turned off","nl":"De PM10-waarschuwing is gedeactiveerd","de":"Der PM10-Alarm ist ausgegangen","fr":"L\'alarme PM10 s\'est désactivée","it":"L\'allarme PM10 si è spento","sv":"PM10-larmet inaktiverat","no":"PM10-alarmen ble deaktivert","es":"La alarma de PM10 se ha desactivado","da":"PM10-alarmen blev deaktiveret","ru":"Сигнал ТЧ10 выключен","pl":"Wyłączył się alarm PM10","ko":"미세먼지(PM10) 알람이 \'아니요\'이면","ar":"تم إيقاف إنذار PM10"}}],"conditions":[{"id":"alarm_pm10","title":{"en":"The PM10 alarm is !{{on|off}}","nl":"De PM10-waarschuwing is !{{geactiveerd|gedeactiveerd}}","de":"Der PM10-Alarm ist !{{an|aus}}","fr":"L\'alarme PM10 est !{{activée|désactivée}}","it":"L\'allarme PM10 è !{{acceso|spento}}","sv":"PM10-larmet är !{{på|av}}","no":"PM10-alarmen er !{{på|av}}","es":"La alarma de PM10 está !{{activada|desactivada}}","da":"PM10-alarmen er !{{tændt|slukket}}","ru":"Сигнал ТЧ10 !{{включен|выключен}}","pl":"Alarm PM10 jest !{{włączony|wyłączony}}","ko":"미세먼지(PM10) 알람이 !{{\'예\'|\'아니요\'}}이면","ar":"إنذار PM10 !{{يعمل|لا يعمل}}"}}]},"minCompatibility":"12.2.0"}')},7122:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Moisture Alarm","nl":"Vochtwaarschuwing","da":"Fugtalarm","it":"Allarme umidità","ko":"습기 감지","no":"Fuktalarm","pl":"Alarm wilgoci","ru":"Сигнал влаги","sv":"Fuktlarm","es":"Alarma de humedad","fr":"Alarme d\'humidité","ar":"إنذار الرطوبة","de":"Feuchtigkeitsalarm"},"titleShort":{"en":"Moisture","nl":"Vocht","da":"Fugt","it":"Umidità","ko":"습도","no":"Fukt","pl":"Wilgoć","ru":"Влага","sv":"Fukt","es":"Humedad","fr":"Humidité","ar":"الرطوبة","de":"Feuchtigkeit"},"desc":{"en":"True when moisture is detected.","nl":"Wordt geactiveerd wanneer vocht wordt gedetecteerd.","da":"Sandt, når der registreres fugt.","it":"Vero quando viene rilevata umidità.","ko":"습기가 감지되면 참입니다.","no":"Sann når fuktighet er oppdaget.","pl":"Prawda, gdy wykryta jest wilgoć.","ru":"Значение «истина» при обнаружении влаги.","sv":"Sant när fukt detekteras.","es":"Activado cuando se detecta humedad.","fr":"Se déclenche lorsque de l\'humidité est détectée.","ar":"صحيح عند اكتشاف رطوبة.","de":"Wahr, wenn Feuchtigkeit erkannt wird."},"insights":true,"insightsTitleTrue":{"en":"Moisture Alarm turned on","nl":"Vochtwaarschuwing geactiveerd","da":"Fugtalarm slået til","it":"Allarme umidità acceso","ko":"습기 감지됨","no":"Fuktalarm aktivert","pl":"Alarm wilgoci włączony","ru":"Сигнал влаги включен","sv":"Fuktlarm aktiverat","es":"Alarma de humedad activada","fr":"Alarme d\'humidité activée","ar":"تم تشغيل إنذار الرطوبة","de":"Feuchtigkeitsalarm eingeschaltet"},"insightsTitleFalse":{"en":"Moisture Alarm turned off","nl":"Vochtwaarschuwing gedeactiveerd","da":"Fugtalarm slået fra","it":"Allarme umidità spento","ko":"습기 감지되지 않음","no":"Fuktalarm deaktivert","pl":"Alarm wilgoci wyłączony","ru":"Сигнал влаги выключен","sv":"Fuktlarmet inaktiverat","es":"Alarma de humedad desactivada","fr":"Alarme d\'humidité désactivée","ar":"تم إيقاف إنذار الرطوبة","de":"Feuchtigkeitsalarm ausgeschaltet"},"color":"#0091FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_moisture_true","highlight":true,"title":{"en":"The moisture alarm turned on","nl":"De vochtwaarschuwing is geactiveerd","da":"Fugtalarmen er slået til","it":"L\'allarme umidità si è acceso","ko":"습기가 감지되면","no":"Fuktalarmen ble aktivert","pl":"Włączył się alarm wilgoci","ru":"Сигнал влаги включен","sv":"Fuktlarmet är aktiverat","es":"La alarma de humedad se ha activado","fr":"L\'alarme d\'humidité s\'est activée","ar":"تم تشغيل إنذار الرطوبة","de":"Der Feuchtigkeitsalarm hat sich eingeschaltet"}},{"id":"alarm_moisture_false","title":{"en":"The moisture alarm turned off","nl":"De vochtwaarschuwing is gedeactiveerd","da":"Fugtalarmen er slået fra","it":"L\'allarme umidità si è spento","ko":"습기가 감지되지 않으면","no":"Fuktalarmen ble deaktivert","pl":"Wyłączył się alarm wilgoci","ru":"Сигнал влаги выключен","sv":"Fuktlarmet inaktiverat","es":"La alarma de humedad se ha desactivado","fr":"L\'alarme d\'humidité s\'est désactivée","ar":"تم إيقاف إنذار الرطوبة","de":"Der Feuchtigkeitsalarm hat sich ausgeschaltet"}}],"conditions":[{"id":"alarm_moisture","title":{"en":"The moisture alarm is !{{on|off}}","nl":"De vochtwaarschuwing is !{{geactiveerd|gedeactiveerd}}","da":"Fugtalarmen er slået !{{til|fra}}","it":"L\'allarme umidità è !{{acceso|spento}}","ko":"습기가 감지!{{되면|되지 않으면}}","no":"Fuktalarmen er !{{på|av}}","pl":"Alarm wilgoci jest !{{włączony|wyłączony}}","ru":"Сигнал влаги !{{включен|выключен}}","sv":"Fuktlarmet är aktiverat !{{på|av}}","es":"La alarma de humedad está !{{activada|desactivada}}","fr":"L\'alarme d\'humidité est !{{activée|désactivée}}","ar":"إنذار الرطوبة !{{يعمل|لا يعمل}}","de":"Der Feuchtigkeitsalarm ist !{{an|aus}}"}}]},"minCompatibility":"12.2.0"}')},7177:()=>{},7181:e=>{"use strict";e.exports={detect:function(e){return"8BPS"===e.toString("ascii",0,4)},calculate:function(e){return{width:e.readUInt32BE(18),height:e.readUInt32BE(14)}}}},7224:e=>{"use strict";e.exports=JSON.parse('{"title":"Capability","type":"object","definitions":{"i18nObject":{"oneOf":[{"type":"string","minLength":1},{"type":"object","required":["en"],"patternProperties":{"^.*$":{"type":"string"}},"additionalProperties":false}]}},"required":["title","type"],"anyOf":[{"required":["getable"]},{"required":["setable"]}],"properties":{"title":{"$ref":"#/definitions/i18nObject"},"titleShort":{"$ref":"#/definitions/i18nObject"},"desc":{"$ref":"#/definitions/i18nObject"},"type":{"type":"string","enum":["boolean","number","string","enum"]},"getable":{"type":"boolean","default":true},"setable":{"type":"boolean","default":true},"icon":{"type":"string"},"insights":{"type":"boolean"},"insightsTitleTrue":{"$ref":"#/definitions/i18nObject"},"insightsTitleFalse":{"$ref":"#/definitions/i18nObject"},"chartType":{"type":"string","enum":["line","area","stepLine","column","spline","splineArea","scatter"]},"decimals":{"type":"number"},"min":{"type":"number"},"max":{"type":"number"},"step":{"type":"number","minimum":0},"units":{"$ref":"#/definitions/i18nObject"},"values":{"type":"array","items":{"type":"object","required":["id","title"],"properties":{"id":{"type":"string"},"title":{"$ref":"#/definitions/i18nObject"}}}},"uiComponent":{"oneOf":[{"type":"string","enum":["thermostat","media","toggle","slider","ternary","button","color","picker","sensor","battery"]},{"type":"null"}]}},"_comment":"Require `values` array when `type` is `enum`","oneOf":[{"properties":{"type":{"type":"string","enum":["enum"]}},"required":["values"]},{"properties":{"type":{"type":"string","enum":["boolean","number","string"]}}}]}')},7243:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Fan","nl":"Ventilator","de":"Ventilator","fr":"Ventilateur","it":"Ventilatore","sv":"Fläkt","no":"Vifte","es":"Ventilador","da":"Ventilator","ru":"Вентилятор","pl":"Wentylator","ko":"팬","ar":"مروحة"},"description":{"en":"Use this device class for fans that cool your home.","de":"Nutze diese Geräteklasse für Ventilatoren, die dein Heim kühlen.","fr":"Utilisez cette classe d\'appareil pour les ventilateurs qui refroidissent votre maison.","it":"Utilizza questa classe di dispositivi per i ventilatori che rinfrescano la tua casa.","sv":"Använd den här enhetsklassen för fläktar som kyler ned hemmet.","no":"Bruk denne enhetsklassen for vifter som avkjøler boligen din.","es":"Utiliza esta clase de dispositivo para los ventiladores que enfrían la casa.","da":"Brug denne enhedsklasse til ventilatorer, der køler dit hjem ned.","ru":"Используйте этот класс устройств для вентиляторов, которые охлаждают ваш дом.","pl":"Użyj tej klasy urządzeń dla wentylatorów, które chłodzą dom.","ko":"이 디바이스 클래스는 집에서 시원하게 지내게 해주는 선풍기에 사용합니다.","ar":"استخدم فئة الجهاز هذه للمراوح التي تبرّد منزلك.","nl":"Gebruik deze apparaatklasse voor ventilatoren die je huis koelen."}}')},7250:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Vibration Alarm","nl":"Trilwaarschuwing","da":"Vibrationsalarm","it":"Allarme vibrazione","ko":"진동 감지","no":"Vibrasjonsalarm","pl":"Alarm wibracji","ru":"Сигнал вибрации","sv":"Vibrationslarm","es":"Alarma de vibración","fr":"Alarme de vibration","ar":"إنذار الاهتزاز","de":"Vibrationsalarm"},"titleShort":{"en":"Vibration","nl":"Vibratie","da":"Vibration","it":"Vibrazione","ko":"진동","no":"Vibrasjon","pl":"Wibracje","ru":"Вибрация","sv":"Vibration","es":"Vibración","fr":"Vibration","ar":"اهتزاز","de":"Vibration"},"desc":{"en":"True when vibration is detected.","nl":"Wordt geactiveerd wanneer trilling wordt gedetecteerd.","da":"Sandt, når der registreres vibration.","it":"Vero quando viene rilevata una vibrazione.","ko":"진동이 감지되면 참입니다.","no":"Sann når vibrasjon registreres.","pl":"Prawda, gdy wykryta jest wibracja.","ru":"Значение «истина» при обнаружении вибрации.","sv":"Sant när vibrationer detekteras.","es":"Activado cuando se detecta vibración.","fr":"Se déclenche lorsque des vibrations sont détectées.","ar":"صحيح عند اكتشاف اهتزاز.","de":"Wahr, wenn eine Vibration erkannt wird."},"insights":true,"insightsTitleTrue":{"en":"Vibration alarm turned on","nl":"Trilwaarschuwing geactiveerd","da":"Vibrationsalarm slået til","it":"Allarme vibrazione acceso","ko":"진동 감지됨","no":"Vibrasjonsalarm aktivert","pl":"Alarm wibracji włączony","ru":"Сигнал о вибрации включен","sv":"Vibrationslarmet aktiverat","es":"Alarma de vibración activada","fr":"Alarme de vibration activée","ar":"تم تشغيل إنذار الاهتزاز","de":"Vibrationsalarm eingeschaltet"},"insightsTitleFalse":{"en":"Vibration alarm turned off","nl":"Trilwaarschuwing gedeactiveerd","da":"Vibrationsalarm slået fra","it":"Allarme vibrazione spento","ko":"진동 감지되지 않음","no":"Vibrasjonsalarm deaktivert","pl":"Alarm wibracji wyłączony","ru":"Сигнал о вибрации выключен","sv":"Vibrationslarmet inaktiverat","es":"Alarma de vibración desactivada","fr":"Alarme de vibration désactivée","ar":"تم إيقاف إنذار الاهتزاز","de":"Vibrationsalarm ausgeschaltet"},"color":"#32C5FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_vibration_true","highlight":true,"title":{"en":"The vibration alarm turned on","nl":"De trilwaarschuwing is geactiveerd","da":"Vibrationsalarmen slået til","it":"L\'allarme vibrazione si è acceso","ko":"진동이 감지되면","no":"Vibrasjonsalarmen ble aktivert","pl":"Włączył się alarm wibracji","ru":"Сигнал о вибрации включен","sv":"Vibrationslarmet aktiverat","es":"La alarma de vibración se ha activado","fr":"L\'alarme de vibration s\'est activée","ar":"تم تشغيل إنذار التلاعب","de":"Der Vibrationsalarm wurde eingeschaltet"}},{"id":"alarm_vibration_false","title":{"en":"The vibration alarm turned off","nl":"De trilwaarschuwing is gedeactiveerd","da":"Vibrationsalarmen slået fra","it":"L\'allarme vibrazione si è spento","ko":"진동이 감지되지 않으면","no":"Vibrasjonsalarmen ble deaktivert","pl":"Wyłączył się alarm wibracji","ru":"Сигнал о вибрации выключен","sv":"Vibrationslarmet inaktiverat","es":"La alarma de vibración se ha desactivado","fr":"L\'alarme de vibration s\'est désactivée","ar":"تم إيقاف إنذار الاهتزاز","de":"Der Vibrationsalarm wurde ausgeschaltet"}}],"conditions":[{"id":"alarm_vibration","title":{"en":"The vibration alarm is !{{on|off}}","nl":"De trilwaarschuwing is !{{geactiveerd|gedeactiveerd}}","da":"Vibrationsalarmen er !{{tændt|slukket}}","it":"L\'allarme vibrazione è !{{acceso|spento}}","ko":"진동이 감지!{{되면|되지 않으면}}","no":"Vibrasjonsalarmen er !{{på|av}}","pl":"Alarm wibracji jest !{{włączony|wyłączony}}","ru":"Сигнал о вибрации !{{включен|выключен}}","sv":"Vibrationslarmet är !{{av|på}}","es":"La alarma de vibración está !{{activada|desactivada}}","fr":"L\'alarme de vibration est !{{activée|désactivée}}","ar":"إنذار الاهتزاز !{{يعمل|لا يعمل}}","de":"Der Vibrationsalarm ist !{{an|aus}}"}}]},"minCompatibility":"12.2.0"}')},7269:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Scooter","da":"Scooter","de":"Motorroller","es":"Scooter","fr":"Trottinette","it":"Scooter","ko":"스쿠터","nl":"Scooter","no":"Scooter","pl":"Skuter","ru":"Самокат","ar":"سكوتر","sv":"Skoter"},"description":{"en":"Use this device class for scooters.","da":"Brug denne enhedsklasse til scootere.","de":"Verwenden Sie diese Geräteklasse für Motorroller.","es":"Utilice esta clase de dispositivo para scooters.","fr":"Utilisez cette classe d\'appareils pour les trottinettes.","it":"Utilizza questa classe di dispositivi per gli scooter.","ko":"이 디바이스 클래스는 스쿠터에 사용합니다.","nl":"Gebruik deze apparaatklasse voor scooters.","no":"Bruk denne enhetsklassen for scootere.","pl":"Tej klasy urządzeń należy używać w przypadku skuterów.","ru":"Используйте этот класс устройств для самокатов.","sv":"Använd den här enhetsklassen för skotrar.","ar":"استخدم فئة الجهاز هذه للسكوترات."},"minCompatibility":"12.0.0"}')},7354:(e,t,a)=>{"use strict";var r=a(1030),i=a(6740),n=a(4551),s=a(2492),o=a(1873),l=i.ucs2length,d=a(2017),u=n.Validation;function m(e,t,a){var r=c.call(this,e,t,a);return r>=0?{index:r,compiling:!0}:(r=this._compilations.length,this._compilations[r]={schema:e,root:t,baseId:a},{index:r,compiling:!1})}function p(e,t,a){var r=c.call(this,e,t,a);r>=0&&this._compilations.splice(r,1)}function c(e,t,a){for(var r=0;r{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Charging state","nl":"Oplaadstatus","da":"Opladningstilstand","de":"Ladezustand","es":"Estado de carga","fr":"État de charge","it":"Stato di carica","ko":"전기차 충전기 상태","no":"Ladestatus","pl":"Stan ładowania","ru":"Состояние зарядки","sv":"Laddningstillstånd","ar":"حالة الشحن"},"desc":{"en":"The current charging state of the EV charger.","da":"Elbilopladerens aktuelle opladningstilstand.","de":"Der aktuelle Ladezustand der Ladestation für Elektrofahrzeuge.","es":"El estado de carga actual del cargador del VE.","fr":"L\'état de charge actuel du chargeur VE","it":"Lo stato di carica attuale dell’alimentatore per veicoli elettrici.","ko":"전기차 충전기의 현재 충전 상태입니다.","nl":"De huidige oplaadstatus van de EV-lader.","no":"Gjeldende ladestatus for elbilladeren.","pl":"Bieżący stan ładowania ładowarki EV.","ru":"Текущее состояние зарядки зарядного устройства для электромобилей.","sv":"EV-laddarens aktuella laddningsstatus.","ar":"حالة الشحن الحالية لشاحن السيارة الكهربائية."},"color":"#6DD400","getable":true,"setable":false,"uiComponent":"sensor","minCompatibility":"12.4.5","values":[{"id":"plugged_in_charging","title":{"en":"Charging","nl":"Opladen","da":"Oplader","it":"In ricarica","ko":"충전 중","pl":"Ładowanie","ru":"Заряжается","sv":"Laddning\\n","es":"Carga","fr":"Charge en cours","no":"Lader","de":"Wird aufgeladen","ar":"قيد الشحن"}},{"id":"plugged_in_discharging","title":{"en":"Discharging","nl":"Ontladen","da":"Aflader","it":"Si sta scaricando","ko":"외부 전원 공급 중","pl":"Rozładowywanie","ru":"Разряжается","sv":"Urladdning\\n","es":"Descarga","fr":"Décharge en cours","no":"Lades ut","de":"Wird entladen","ar":"قيد التفريغ"}},{"id":"plugged_in_paused","title":{"en":"Paused","da":"På pause","it":"In pausa","ko":"일시 중지됨","nl":"Gepauzeerd","pl":"Wstrzymane","ru":"На паузе","sv":"Pausad\\n","es":"En pausa","fr":"En pause","no":"Satt på pause","de":"Pausiert","ar":"متوقف مؤقتًا"}},{"id":"plugged_in","title":{"en":"Plugged in","nl":"Aangesloten","da":"Tilsluttet","it":"Cavo collegato","ko":"충전구 연결됨","pl":"Podłączone do gniazdka","ru":"Подключено","sv":"Ansluten","es":"Enchufado","fr":"Branché","no":"Tilkoblet","de":"Eingesteckt","ar":"موصول"}},{"id":"plugged_out","title":{"en":"Not plugged in","nl":"Niet aangesloten","da":"Ikke tilsluttet","it":"Cavo non collegato","ko":"충전구 연결되지 않음","pl":"Niepodłączone do gniazdka","ru":"Не подключено","sv":"Inte ansluten","es":"No enchufado","fr":"Non branché","no":"Ikke tilkoblet","de":"Nicht eingesteckt","ar":"غير موصول"}}],"$flow":{"triggers":[{"id":"evcharger_charging_state_changed","title":{"en":"The EV charger charging state changed","da":"Elbilopladerens opladningstilstand er ændret","de":"Der Ladezustand der Ladestation für Elektrofahrzeuge hat sich geändert.","es":"El estado de carga del cargador del VE ha cambiado","fr":"L\'état de charge du chargeur VE a changé","it":"Lo stato di carica dell’alimentatore per veicoli elettrici è cambiato","ko":"전기차 충전기 충전 상태가 변경되면","nl":"De oplaadstatus van de EV-lader is veranderd","no":"Elbilladerens ladestatus ble endret","pl":"Stan ładowania ładowarki EV uległ zmianie","ru":"Состояние зарядки зарядного устройства для электромобилей изменилось","sv":"Laddningsstatus för EV-laddaren har ändrats","ar":"تم تغيير حالة شحن شاحن السيارة الكهربائية"},"args":[{"name":"state","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"evcharger_charging_state_is","title":{"en":"The EV charger charging state !{{is|is not}}","da":"Elbilopladerens opladningstilstand !{{er|er ikke}}","de":"Der Ladezustand der Ladestation für Elektrofahrzeuge !{{ist|ist nicht}}","es":"El estado de carga del cargador del VE !{{es|no es}}","fr":"L\'état de charge du chargeur VE !{{est|n\'est pas}}","it":"Lo stato di carica dell’alimentatore per veicoli elettrici !{{è|non è}}","ko":"전기차 충전기 충전 상태가 다음!{{과 같음|이 아님}}","nl":"De oplaadstatus van de EV-lader !{{is|is niet}}","no":"Elbilladerens ladestatus !{{er|er ikke}}","pl":"Stan ładowania ładowarki EV !{{to|to nie}}","ru":"Состояние зарядки зарядного устройства для электромобилей !{{|не}}","sv":"Laddningsstatus för EV-laddaren !{{är|är inte}}","ar":"حالة شحن شاحن السيارة الكهربائية !{{هي|ليست}}"},"args":[{"name":"state","type":"dropdown","values":"$values"}]}]}}')},7364:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Volume muted","nl":"Gedempt volume","de":"Lautstärke stumm","fr":"Volume sourdine","it":"Volume disattivato","sv":"Volym inaktiverad","no":"Volym dempet","es":"Silenciar volumen","da":"Lyd slået fra","ru":"Звук выключен","pl":"Głośność wyciszona","ko":"음소거","ar":"الصوت مكتوم"},"type":"boolean","color":"#9033FC","getable":true,"setable":true,"uiComponent":"button","$flow":{"actions":[{"id":"volume_mute","title":{"en":"Mute the volume","nl":"Demp het geluid","de":"Lautstärke stummschalten","fr":"Mettre le volume en sourdine","it":"Disattiva il volume","sv":"Inaktivera volymen","no":"Demp volumet","es":"Silenciar el volumen","da":"Slå lyden fra","ru":"Выключить звук","pl":"Wycisz głośność","ko":"볼륨 음소거","ar":"كتم الصوت"}},{"id":"volume_unmute","title":{"en":"Unmute the volume","nl":"Demp het geluid niet meer","de":"Lautstärke nicht mehr stummschalten","fr":"Réactiver le son","it":"Riattiva il volume","sv":"Aktivera volymen","no":"Opphev demping av volum","es":"Activar el volumen","da":"Slå lyden til","ru":"Включить звук","pl":"Włącz głośność","ko":"볼륨 음소거 해제","ar":"إلغاء كتم الصوت"}},{"id":"volume_mute_toggle","title":{"en":"Toggle muted volume on or off","nl":"Gedempt volume in- of uitschakelen","de":"Stummschaltung ein- oder ausschalten","fr":"Activer ou désactiver le son coupé","it":"Attiva o disattiva il volume disattivato","sv":"Slå på eller av avstängd volym","no":"Slå dempet volum på eller av","es":"Activar el volumen o silenciar","da":"Slå dæmpet lydstyrke til eller fra","ko":"볼륨 켬/끔 상태 전환하기","ru":"Включить или выключить приглушенный звук","ar":"تبديل كتم الصوت بين التشغيل والإيقاف","pl":"Włącz lub wyłącz wyciszenie głośności"}}]}}')},7403:(e,t,a)=>{"use strict";e.exports={$ref:a(6990),allOf:a(353),anyOf:a(9480),$comment:a(4278),const:a(224),contains:a(5674),dependencies:a(1926),enum:a(598),format:a(400),if:a(8532),items:a(4371),maximum:a(4667),minimum:a(4667),maxItems:a(2119),minItems:a(2119),maxLength:a(7935),minLength:a(7935),maxProperties:a(1298),minProperties:a(1298),multipleOf:a(9294),not:a(8914),oneOf:a(5326),pattern:a(8317),properties:a(1374),propertyNames:a(3032),required:a(7850),uniqueItems:a(5898),validate:a(1873)}},7419:e=>{"use strict";e.exports=JSON.parse('{"title":"App","type":"object","definitions":{"i18nObject":{"oneOf":[{"type":"string","minLength":1},{"type":"object","required":["en"],"patternProperties":{"^.*$":{"type":"string"}},"additionalProperties":false}]},"i18nArray":{"type":"object","patternProperties":{"^.*$":{"type":"array","items":{"type":"string"}}},"additionalProperties":false},"integrity":{"type":"string","pattern":"^(blake2b512|blake2s256|sha256|sha384|sha512|sha512-256|sha3-256|sha3-384|sha3-512):[0-9a-fA-F]+$"},"zigbee-firmware-update-device":{"type":"object","required":["manufacturerName","productId"],"additionalProperties":false,"properties":{"manufacturerName":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"productId":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"zigbee-firmware-update-file":{"type":"object","required":["fileVersion","size","imageType","manufacturerCode","name","integrity"],"additionalProperties":false,"properties":{"fileVersion":{"type":"number"},"imageType":{"type":"number"},"manufacturerCode":{"type":"number"},"minFileVersion":{"type":"number"},"maxFileVersion":{"type":"number"},"minHardwareVersion":{"type":"number"},"maxHardwareVersion":{"type":"number"},"size":{"type":"number"},"name":{"type":"string"},"integrity":{"$ref":"#/definitions/integrity"}}},"zigbee-firmware-update":{"type":"object","required":["changelog","device","files"],"additionalProperties":false,"properties":{"changelog":{"$ref":"#/definitions/i18nObject"},"device":{"$ref":"#/definitions/zigbee-firmware-update-device"},"files":{"type":"array","minItems":1,"items":{"$ref":"#/definitions/zigbee-firmware-update-file"}}}},"zigbee-firmware-updates":{"type":"object","additionalProperties":false,"required":["updates"],"properties":{"wakeInstruction":{"$ref":"#/definitions/i18nObject"},"queryNextImageTimeout":{"type":"number"},"minImageBlockPeriod":{"type":"number"},"maxImageBlockSize":{"type":"number"},"imageBlockRequestTimeout":{"type":"number"},"upgradeEndRequestTimeout":{"type":"number"},"upgradeEndDelay":{"type":"number"},"postUpgradeAnnounceTimeout":{"type":"number"},"updates":{"type":"array","minItems":1,"items":{"$ref":"#/definitions/zigbee-firmware-update"}}}},"zwave-firmware-update-device":{"type":"object","required":["manufacturerId","productTypeId","productId"],"additionalProperties":false,"properties":{"manufacturerId":{"oneOf":[{"type":"number"},{"type":"array","items":{"type":"number"}}]},"productId":{"oneOf":[{"type":"number"},{"type":"array","items":{"type":"number"}}]},"productTypeId":{"oneOf":[{"type":"number"},{"type":"array","items":{"type":"number"}}]},"hardwareVersion":{"oneOf":[{"type":"number"},{"type":"array","items":{"type":"number"}}]}}},"zwave-firmware-update-file":{"type":"object","required":["targetId","name","size","integrity"],"additionalProperties":false,"properties":{"region":{"type":"string"},"targetId":{"type":"number"},"name":{"type":"string"},"size":{"type":"number"},"integrity":{"$ref":"#/definitions/integrity"}}},"zwave-firmware-update":{"type":"object","required":["version","changelog","device","files"],"additionalProperties":false,"properties":{"version":{"type":"string"},"changelog":{"$ref":"#/definitions/i18nObject"},"applicableTo":{"type":"string"},"device":{"$ref":"#/definitions/zwave-firmware-update-device"},"files":{"type":"array","minItems":1,"items":{"$ref":"#/definitions/zwave-firmware-update-file"}}}},"zwave-firmware-updates":{"type":"object","additionalProperties":false,"required":["updates"],"properties":{"wakeInstruction":{"$ref":"#/definitions/i18nObject"},"reportTimeout":{"type":"number"},"minWaitTime":{"type":"number"},"verifyPostUpdateWithNop":{"type":"boolean","enum":[false]},"nopRetryInterval":{"type":"number"},"nopMaxRetries":{"type":"number"},"updates":{"type":"array","minItems":1,"items":{"$ref":"#/definitions/zwave-firmware-update"}}}},"author":{"required":["name"],"properties":{"name":{"type":"string"},"email":{"type":"string"},"website":{"type":"string"}}},"images":{"required":["large","small"],"additionalProperties":false,"properties":{"large":{"type":"string"},"small":{"type":"string"},"xlarge":{"type":"string"}}},"flowCard":{"type":"object","required":["id","title"],"properties":{"id":{"type":"string"},"title":{"$ref":"#/definitions/i18nObject"},"titleFormatted":{"$ref":"#/definitions/i18nObject"},"deprecated":{"type":"boolean","enum":[true]},"highlight":{"type":"boolean","enum":[true]},"advanced":{"type":"boolean","enum":[true]},"platforms":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["cloud","local"]}},"droptoken":{"oneOf":[{"type":"string","enum":["boolean","number","string","image"]},{"type":"array","items":{"type":"string","enum":["boolean","number","string","image"]}}]},"tokens":{"type":"array","items":{"type":"object","required":["name","title"],"properties":{"name":{"type":"string"},"type":{"type":"string","enum":["boolean","number","string","image"],"default":"string"},"title":{"$ref":"#/definitions/i18nObject"},"example":{"oneOf":[{"$ref":"#/definitions/i18nObject"},{"type":"number"},{"type":"boolean"}]}}}},"args":{"type":"array","items":{"anyOf":[{"type":"object","required":["name","type","filter"],"properties":{"name":{"type":"string"},"type":{"type":"string","enum":["device"]},"filter":{"oneOf":[{"type":"string"},{"type":"object"}]}}},{"type":"object","required":["name","type"],"properties":{"title":{"$ref":"#/definitions/i18nObject"},"name":{"type":"string"},"type":{"type":"string","enum":["text","autocomplete","device","date","time","color","checkbox","code"]},"placeholder":{"$ref":"#/definitions/i18nObject"},"filter":{"oneOf":[{"type":"string"},{"type":"object"}]},"items":{"type":"string","enum":["variable","flow_or_advanced_flow","user"]}}},{"type":"object","required":["name","type"],"properties":{"title":{"$ref":"#/definitions/i18nObject"},"name":{"type":"string"},"type":{"type":"string","enum":["number","range"]},"min":{"type":"number"},"max":{"type":"number"},"step":{"type":"number","minimum":0},"label":{"$ref":"#/definitions/i18nObject"},"labelMultiplier":{"type":"number"},"labelDecimals":{"type":"number","mimimum":0,"maximum":10}}},{"type":"object","required":["name","type","values"],"properties":{"title":{"$ref":"#/definitions/i18nObject"},"name":{"type":"string"},"type":{"type":"string","enum":["dropdown"]},"values":{"type":"array","items":{"type":"object","required":["id"],"properties":{"id":{"type":"string"},"title":{"$ref":"#/definitions/i18nObject"}}}}}},{"type":"object","required":["name","type","values","conjunction"],"properties":{"title":{"$ref":"#/definitions/i18nObject"},"name":{"type":"string"},"type":{"type":"string","enum":["multiselect"]},"conjunction":{"type":"string","enum":["and","or"]},"values":{"type":"array","items":{"type":"object","required":["id","title"],"properties":{"id":{"type":"string"},"title":{"$ref":"#/definitions/i18nObject"}}}}}}]}}}},"appSettings":{"type":"array","items":{"oneOf":[{"type":"object","required":["id","type","title"],"properties":{"type":{"type":"string","enum":["text","password","textarea","label"]},"id":{"type":"string"},"title":{"$ref":"#/definitions/i18nObject"},"hint":{"$ref":"#/definitions/i18nObject"},"value":{"type":"string"},"pattern":{"type":"string"}}},{"type":"object","required":["id","type","title"],"properties":{"type":{"type":"string","enum":["number","slider"]},"id":{"type":"string"},"title":{"$ref":"#/definitions/i18nObject"},"hint":{"$ref":"#/definitions/i18nObject"},"value":{"type":"number"},"units":{"$ref":"#/definitions/i18nObject"},"min":{"type":"number"},"max":{"type":"number"},"step":{"type":"number","minimum":0}}},{"type":"object","required":["id","type","title","values"],"properties":{"type":{"type":"string","enum":["radio","dropdown"]},"id":{"type":"string"},"title":{"$ref":"#/definitions/i18nObject"},"hint":{"$ref":"#/definitions/i18nObject"},"value":{"type":"string"},"values":{"type":"array","items":{"type":"object","required":["id","title"],"properties":{"id":{"type":"string"},"title":{"$ref":"#/definitions/i18nObject"}}}}}},{"type":"object","required":["id","type","title"],"properties":{"type":{"type":"string","enum":["checkbox"]},"id":{"type":"string"},"title":{"$ref":"#/definitions/i18nObject"},"hint":{"$ref":"#/definitions/i18nObject"},"value":{"type":"boolean"}}},{"type":"object","required":["type","title","children"],"properties":{"type":{"type":"string","enum":["group"]},"title":{"$ref":"#/definitions/i18nObject"},"children":{"$ref":"#/definitions/appSettings"}}}]}},"driverSettings":{"type":"array","items":{"oneOf":[{"type":"object","required":["id","type","label"],"properties":{"type":{"type":"string","enum":["text","password","textarea","label"]},"id":{"oneOf":[{"type":"string"},{"type":"number"}]},"label":{"$ref":"#/definitions/i18nObject"},"hint":{"$ref":"#/definitions/i18nObject"},"value":{"type":"string"},"pattern":{"type":"string"},"highlight":{"type":"boolean","enum":[true]},"zwave":{"$ref":"#/definitions/zwaveSetting"}}},{"type":"object","required":["id","type","label"],"properties":{"type":{"type":"string","enum":["number","slider"]},"id":{"oneOf":[{"type":"string"},{"type":"number"}]},"label":{"$ref":"#/definitions/i18nObject"},"hint":{"$ref":"#/definitions/i18nObject"},"value":{"type":"number"},"units":{"$ref":"#/definitions/i18nObject"},"attr":{"type":"object","properties":{"min":{"type":"number"},"max":{"type":"number"},"step":{"type":"number","minimum":0}}},"min":{"type":"number"},"max":{"type":"number"},"step":{"type":"number","minimum":0},"highlight":{"type":"boolean","enum":[true]},"zwave":{"$ref":"#/definitions/zwaveSetting"}}},{"type":"object","required":["id","type","label","values"],"properties":{"type":{"type":"string","enum":["radio","dropdown"]},"id":{"oneOf":[{"type":"string"},{"type":"number"}]},"label":{"$ref":"#/definitions/i18nObject"},"hint":{"$ref":"#/definitions/i18nObject"},"value":{"type":"string"},"values":{"type":"array","items":{"type":"object","required":["id","label"],"properties":{"id":{"type":"string"},"label":{"$ref":"#/definitions/i18nObject"}}}},"highlight":{"type":"boolean","enum":[true]},"zwave":{"$ref":"#/definitions/zwaveSetting"}}},{"type":"object","required":["id","type","label"],"properties":{"type":{"type":"string","enum":["checkbox"]},"id":{"oneOf":[{"type":"string"},{"type":"number"}]},"label":{"$ref":"#/definitions/i18nObject"},"hint":{"$ref":"#/definitions/i18nObject"},"value":{"type":"boolean"},"highlight":{"type":"boolean","enum":[true]},"zwave":{"$ref":"#/definitions/zwaveSetting"}}},{"type":"object","required":["type","label","children"],"properties":{"type":{"type":"string","enum":["group"]},"label":{"$ref":"#/definitions/i18nObject"},"children":{"$ref":"#/definitions/driverSettings"},"highlight":{"type":"boolean","enum":[true]},"zwave":{"$ref":"#/definitions/zwaveSetting"}}}]}},"matterDevice":{"type":"object","required":["vendorId","productId"],"properties":{"vendorId":{"oneOf":[{"type":"number","minimum":1,"maximum":65520},{"type":"array","items":{"type":"number","minimum":1,"maximum":65520}}]},"productId":{"oneOf":[{"type":"number","minimum":1,"maximum":65535},{"type":"array","items":{"type":"number","minimum":1,"maximum":65535}}]},"deviceVendorId":{"oneOf":[{"type":"number","minimum":1,"maximum":65520},{"type":"array","items":{"type":"number","minimum":1,"maximum":65520}}]},"deviceProductName":{"oneOf":[{"type":"string","minLength":1,"maxLength":32},{"type":"array","items":{"type":"string","minLength":1,"maxLength":32}}]},"learnmode":{"type":"object","required":["instruction"],"properties":{"image":{"type":"string"},"instruction":{"$ref":"#/definitions/i18nObject"}}}}},"zigbeeDevice":{"type":"object","required":["manufacturerName","productId","endpoints"],"properties":{"manufacturerName":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"productId":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"endpoints":{"type":"object","propertyNames":{"type":"string","pattern":"^[0-9]+$"},"additionalProperties":{"type":"object","additionalProperties":false,"properties":{"clusters":{"type":"array","items":{"type":"number"}},"bindings":{"type":"array","items":{"type":"number"}}}}},"learnmode":{"type":"object","required":["instruction"],"properties":{"image":{"type":"string"},"instruction":{"$ref":"#/definitions/i18nObject"}}}}},"zwaveDevice":{"type":"object","required":["manufacturerId","productTypeId","productId"],"properties":{"manufacturerId":{"oneOf":[{"type":"number"},{"type":"array","items":{"type":"number"}}]},"productTypeId":{"oneOf":[{"type":"number"},{"type":"array","items":{"type":"number"}}]},"productId":{"oneOf":[{"type":"number"},{"type":"array","items":{"type":"number"}}]},"learnmode":{"type":"object","required":["instruction"],"properties":{"image":{"type":"string"},"instruction":{"$ref":"#/definitions/i18nObject"}}},"associationGroups":{"type":"array","items":{"type":"number"}},"associationGroupsMultiChannel":{"type":"array","items":{"type":"number"}},"associationGroupsOptions":{"type":"object","properties":{"hint":{"$ref":"#/definitions/i18nObject"}}},"wakeUpInterval":{"type":"number"},"defaultConfiguration":{"type":"array","items":{"type":"object","required":["id","size","value"],"properties":{"id":{"type":"number"},"size":{"type":"number","enum":[1,2,4]},"value":{"oneOf":[{"type":"number"},{"type":"string"}]},"multiChannelNodes":{"type":"object","items":{"type":"object","required":["class","capabilities","name"],"properties":{"class":{"type":"string"},"capabilities":{"type":"array","items":{"type":"string"}},"icon":{"type":"string"},"name":{"$ref":"#/definitions/i18nObject"}}}}}}}}},"zwaveSetting":{"type":"object","required":["index","size"],"properties":{"index":{"type":"number"},"size":{"type":"number","enum":[1,2,4]},"signed":{"type":"boolean"}}}},"required":["id","name","version","compatibility","author"],"properties":{"id":{"type":"string"},"name":{"$ref":"#/definitions/i18nObject"},"description":{"$ref":"#/definitions/i18nObject"},"author":{"$ref":"#/definitions/author"},"images":{"$ref":"#/definitions/images"},"version":{"type":"string"},"compatibility":{"type":"string"},"sdk":{"type":"number","default":3,"minimum":1,"maximum":3},"platforms":{"type":"array","items":{"type":"string","enum":["cloud","local"]}},"platformLocalRequiredFeatures":{"type":"array","items":{"type":"string","enum":["nfc","speaker","ledring","matter","camera-streaming"]}},"platformLocalOptionalFeatures":{"type":"array","items":{"type":"string","enum":["nfc","speaker","ledring","matter","camera-streaming"]}},"runtime":{"type":"string","enum":["nodejs","python"]},"pythonVersion":{"type":"string"},"pythonPackages":{"type":"array","items":{"type":"string"}},"tags":{"$ref":"#/definitions/i18nArray"},"permissions":{"type":"array","uniqueItems":true,"items":{"type":"string"}},"bugs":{"type":"object","properties":{"url":{"type":"string","pattern":"^https?://"}}},"homepage":{"type":"string","pattern":"^https://"},"support":{"type":"string","pattern":"^(https://|mailto:)"},"source":{"type":"string","pattern":"^https://"},"athomForumDiscussionId":{"type":"number"},"homeyCommunityTopicId":{"type":"number"},"category":{"oneOf":[{"type":"string"},{"type":"array","uniqueItems":true,"items":{"type":"string"}}]},"contributors":{"type":"object","patternProperties":{"^(developers|translators)$":{"type":"array","items":{"$ref":"#/definitions/author"}}},"additionalProperties":false},"contributing":{"type":"object","properties":{"donate":{"type":"object","additionalProperties":false,"properties":{"githubSponsors":{"type":"object","additionalProperties":false,"properties":{"username":{"type":"string"}}},"bunq":{"type":"object","additionalProperties":false,"properties":{"username":{"type":"string"}}},"patreon":{"type":"object","additionalProperties":false,"properties":{"username":{"type":"string"}}},"paypal":{"type":"object","additionalProperties":false,"properties":{"username":{"type":"string"},"email":{"type":"string"},"fundraiserCharityId":{"type":"number"},"currency":{"type":"string"}}}}}}},"screensavers":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"title":{"$ref":"#/definitions/i18nObject"}}}},"capabilities":{"type":"object","patternProperties":{"^.*$":{"type":"object"}},"additionalProperties":false},"drivers":{"type":"array","items":{"type":"object","required":["id","name","class","capabilities"],"properties":{"id":{"type":"string"},"name":{"$ref":"#/definitions/i18nObject"},"class":{"type":"string"},"capabilities":{"type":"array","uniqueItems":true,"items":{"type":"string"}},"capabilitiesOptions":{"type":"object"},"images":{"$ref":"#/definitions/images"},"deprecated":{"type":"boolean","enum":[true]},"discovery":{"type":"string"},"energy":{"type":"object","properties":{"approximation":{"oneOf":[{"required":["usageOn","usageOff"],"additionalProperties":false,"properties":{"usageOn":{"type":"number"},"usageOff":{"type":"number"}}},{"required":["usageConstant"],"additionalProperties":false,"properties":{"usageConstant":{"type":"number"}}}]},"cumulative":{"type":"boolean","enum":[true]},"cumulativeImportedCapability":{"type":"string"},"cumulativeExportedCapability":{"type":"string"},"electricCar":{"type":"boolean","enum":[true]},"evCharger":{"type":"boolean","enum":[true]},"homeBattery":{"type":"boolean","enum":[true]},"meterPowerImportedCapability":{"type":"string"},"meterPowerExportedCapability":{"type":"string"},"batteries":{"type":"array","minItems":1,"items":{"type":"string"}}}},"pair":{"type":"array","items":{"type":"object","required":["id"],"properties":{"id":{"type":"string"},"template":{"type":"string"},"options":{"type":"object"},"navigation":{"type":"object","properties":{"prev":{"type":"string"},"next":{"type":"string"}}}}}},"settings":{"$ref":"#/definitions/driverSettings"},"firmwareUpdates":{"oneOf":[{"$ref":"#/definitions/zigbee-firmware-updates"},{"$ref":"#/definitions/zwave-firmware-updates"}]},"gtin":{"oneOf":[{"type":"string"},{"type":"array","uniqueItems":true,"items":{"type":"string"}}]},"matter":{"$ref":"#/definitions/matterDevice"},"zwave":{"$ref":"#/definitions/zwaveDevice"},"zigbee":{"$ref":"#/definitions/zigbeeDevice"},"rf433":{"type":"object","properties":{"satelliteMode":{"type":"boolean"}}},"infrared":{"type":"object","properties":{"satelliteMode":{"type":"boolean"}}},"platforms":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["cloud","local"]}},"connectivity":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["lan","cloud","ble","zwave","zigbee","infrared","rf433","rf868","matter"]}}}}},"flow":{"type":"object","properties":{"triggers":{"type":"array","items":{"$ref":"#/definitions/flowCard"}},"conditions":{"type":"array","items":{"$ref":"#/definitions/flowCard"}},"actions":{"type":"array","items":{"$ref":"#/definitions/flowCard"}}}},"signals":{"type":"object","patternProperties":{"^(433|868|ir)$":{"type":"object"}},"additionalProperties":false},"brandColor":{"type":"string","minLength":7,"maxLength":7,"pattern":"^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$"},"discovery":{"type":"object","patternProperties":{"^.*$":{"type":"object","required":["type"],"additionalProperties":false,"properties":{"type":{"type":"string","enum":["mdns-sd","ssdp","mac"]},"id":{"type":"string","minLength":1},"conditions":{"type":"array","items":{"type":"array","items":{"type":"object","required":["field","match"],"additionalProperties":false,"properties":{"field":{"type":"string"},"match":{"type":"object","required":["type","value"],"additionalProperties":false,"properties":{"type":{"type":"string","enum":["string","regex"]},"value":{"type":"string"}}}}}}},"mdns-sd":{"type":"object","required":["name","protocol"],"additionalProperties":false,"properties":{"name":{"type":"string","minLength":1},"protocol":{"type":"string","enum":["tcp","udp"]}}},"ssdp":{"type":"object","required":["search"],"additionalProperties":false,"properties":{"search":{"type":"string","minLength":1}}},"mac":{"type":"object","required":["manufacturer"],"additionalProperties":false,"properties":{"manufacturer":{"type":"array","uniqueItems":true,"minItems":1,"maxItems":32,"items":{"type":"array","minItems":3,"maxItems":3,"items":{"type":"integer","minimum":0,"maximum":255}}}}}}}}},"widgets":{"type":"object","patternProperties":{"^.*$":{"type":"object","properties":{"name":{"$ref":"#/definitions/i18nObject"},"height":{"type":["number","string"]},"transparent":{"type":"boolean"},"settings":{"type":"array"},"devices":{"type":"object","properties":{"type":{"type":"string","enum":["global","app"]},"singular":{"type":"boolean"},"filter":{"type":"object","properties":{"class":{"type":"string"},"capabilities":{"type":"string"}}}},"required":["type","singular"]},"api":{"type":"object","patternProperties":{"^.*$":{"type":"object","properties":{"method":{"type":"string","enum":["GET","POST","PUT","DELETE"]},"path":{"type":"string"}},"required":["method","path"]}}},"id":{"type":"string"},"deprecated":{"type":"boolean"}},"required":["name","id"]}},"additionalProperties":false},"settings":{"$ref":"#/definitions/appSettings"}}}')},7526:(e,t)=>{"use strict";t.byteLength=function(e){var t=o(e),a=t[0],r=t[1];return 3*(a+r)/4-r},t.toByteArray=function(e){var t,a,n=o(e),s=n[0],l=n[1],d=new i(function(e,t,a){return 3*(t+a)/4-a}(0,s,l)),u=0,m=l>0?s-4:s;for(a=0;a>16&255,d[u++]=t>>8&255,d[u++]=255&t;return 2===l&&(t=r[e.charCodeAt(a)]<<2|r[e.charCodeAt(a+1)]>>4,d[u++]=255&t),1===l&&(t=r[e.charCodeAt(a)]<<10|r[e.charCodeAt(a+1)]<<4|r[e.charCodeAt(a+2)]>>2,d[u++]=t>>8&255,d[u++]=255&t),d},t.fromByteArray=function(e){for(var t,r=e.length,i=r%3,n=[],s=16383,o=0,d=r-i;od?d:o+s));return 1===i?(t=e[r-1],n.push(a[t>>2]+a[t<<4&63]+"==")):2===i&&(t=(e[r-2]<<8)+e[r-1],n.push(a[t>>10]+a[t>>4&63]+a[t<<2&63]+"=")),n.join("")};for(var a=[],r=[],i="undefined"!=typeof Uint8Array?Uint8Array:Array,n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",s=0;s<64;++s)a[s]=n[s],r[n.charCodeAt(s)]=s;function o(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var a=e.indexOf("=");return-1===a&&(a=t),[a,a===t?0:4-a%4]}function l(e,t,r){for(var i,n,s=[],o=t;o>18&63]+a[n>>12&63]+a[n>>6&63]+a[63&n]);return s.join("")}r["-".charCodeAt(0)]=62,r["_".charCodeAt(0)]=63},7530:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Heat Alarm","nl":"Hitte-alarm","de":"Hitzealarm","fr":"Alarme de chaleur","it":"Allarme calore","sv":"Värmelarm","no":"Varmealarm","es":"Alarma de calor","da":"Varmealarm","ru":"Сигнал тепла","pl":"Alarm gorąca","ko":"과열 감지","ar":"إنذار الحرارة"},"titleShort":{"en":"Heat","nl":"Hitte","de":"Hitze","fr":"Chaleur","it":"Calore","sv":"Värme","no":"Varme","es":"Calor","da":"Varme","ru":"Тепло","pl":"Gorąco","ko":"과열","ar":"الحرارة"},"desc":{"en":"True when extreme heat has been detected","nl":"Gaat af als er extreme hitte gedetecteerd wordt","de":"True, wenn extreme Hitze erkannt wurde","fr":"Vrai si une chaleur extrême a été détectée","it":"Vero quando è stato rilevato un calore estremo","sv":"Sant när extrem hetta upptäckts","no":"Sann når ekstrem varme har blitt påvist","es":"Activado cuando se detecta calor extremo","da":"Sandt, når ekstrem varme er blevet opdaget","ru":"Значение «истина» при обнаружении экстремально высокой температуры","pl":"Adekwatny, kiedy wykryta zostanie ekstremalnie wysoka temperatura","ko":"과도한 열이 감지되면 참","ar":"صحيح عند اكتشاف حرارة شديدة"},"insights":true,"insightsTitleTrue":{"en":"Heat alarm turned on","nl":"Hittealarm ging af","de":"Hitze-Alarm ist angegangen","fr":"Alarme chaleur s\'est activée","it":"Allarme di calore attivato","sv":"Värmelarm aktiverat","no":"Varmealarm aktivert","es":"Alarma de calor activada","da":"Varmealarm blev aktiveret","ru":"Сигнал перегрева включен","pl":"Alarm termiczny włączony","ko":"과열 감지됨","ar":"تم تشغيل إنذار الحرارة"},"insightsTitleFalse":{"en":"Heat alarm turned off","nl":"Hittealarm ging uit","de":"Hitze-Alarm ist ausgegangen","fr":"Alarme chaleur s\'est désactivée","it":"Allarme di calore disattivato","sv":"Värmelarm inaktiverat","no":"Varmealarm deaktivert","es":"Alarma de calor desactivada","da":"Varmealarm blev deaktiveret","ru":"Сигнал перегрева выключен","pl":"Alarm termiczny wyłączony","ko":"정상","ar":"تم إيقاف إنذار الحرارة"},"color":"#FA6400","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_heat_true","highlight":true,"title":{"en":"The heat alarm turned on","nl":"Het hitte-alarm gaat aan","de":"Der Hitze-Alarm ist angegangen","fr":"L\'alarme chaleur s\'est activée","it":"L\'allarme di calore è stato attivato","sv":"Värmelarmet aktiverat","no":"Varmealarmen ble aktivert","es":"La alarma de calor se ha activado","da":"Varmealarmen blev aktiveret","ru":"Сигнал перегрева включен","pl":"Alarm termiczny włączony","ko":"과열이 감지되면","ar":"تم تشغيل إنذار الحرارة"}},{"id":"alarm_heat_false","title":{"en":"The heat alarm turned off","nl":"Het hitte-alarm gaat uit","de":"Der Hitze-Alarm ist ausgegangen","fr":"L\'alarme chaleur s\'est désactivée","it":"L\'allarme di calore è stato disattivato","sv":"Värmelarmet inaktiverat","no":"Varmealarmen ble deaktivert","es":"La alarma de calor se ha desactivado","da":"Varmealarmen blev deaktiveret","ru":"Сигнал перегрева выключен","pl":"Alarm termiczny wyłączony","ko":"과열 감지가 정상 상태이면","ar":"تم إيقاف إنذار الحرارة"}}],"conditions":[{"id":"alarm_heat","title":{"en":"The heat alarm is !{{on|off}}","nl":"Het hitte-alarm is !{{aan|uit}}","de":"Der Hitze-Alarm ist !{{an|aus}}","fr":"L\'alarme chaleur est !{{en marche|arrêtée}}","it":"L\'allarme di calore è !{{acceso|spento}}","sv":"Värmelarmet är !{{på|av}}","no":"Varmealarmen er !{{på|av}}","es":"La alarma de calor está !{{activada|desactivada}}","da":"Varmealarmen er !{{tændt|slukket}}","ru":"Сигнал перегрева !{{вкл.|выкл.}}","pl":"Alarm termiczny jest !{{włączony|wyłączony}}","ko":"!{{과열이 감지되면|과열 감지가 정상 상태이면}}","ar":"إنذار الحرارة !{{يعمل|لا يعمل}}"}}]}}')},7557:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Ozone","nl":"Ozon","da":"Ozon","it":"Ozono","ko":"오존","no":"Ozon","pl":"Ozon","ru":"Озон","sv":"Ozon","es":"Ozono","fr":"Ozone","ar":"الأوزون","de":"Ozon"},"units":{"en":"μg/m³","nl":"μg/m³","da":"μg/m³","it":"μg/m³","ko":"μg/m³","no":"μg/m³","pl":"μg/m³","ru":"мкг/м³","sv":"μg/m³","es":"μg/m³","fr":"μg/m³","ar":"ميكروجرام/م³","de":"μg/m³"},"insights":true,"desc":{"en":"Ozone in micrograms per cubic meter (μg/m³)","nl":"Ozon in microgram per kubieke meter (μg/m³)","da":"Ozon i mikrogram pr. kubikmeter (μg/m³)","it":"Ozono in microgrammi per metro cubo (μg/m³)","ko":"입방미터당 마이크로그램(μg/m³) 단위의 오존","no":"Ozon i mikrogram per kubikkmeter (μg/m³)","pl":"Ozon w mikrogramach na metr sześcienny (μg/m³)","ru":"Озон в микрограммах на кубический метр (мкг/м³)","sv":"Ozon i mikrogram per kubikmeter (μg/m³)","es":"Ozono en microgramos por metro cúbico (μg/m³)","fr":"Ozone en microgrammes par mètre cube (μg/m³)","ar":"الأوزون بالميكروجرام لكل متر مكعب (μg/m³)","de":"Ozon in Mikrogramm pro Kubikmeter (μg/m³)"},"chartType":"spline","decimals":2,"color":"#E02020","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_o3_changed","title":{"en":"The ozone level changed","nl":"Het ozonniveau is veranderd","da":"Ozonværdien ændrede sig","it":"Il livello di ozono è cambiato","ko":"오존 수준이 변경되면","no":"Ozonnivået ble endret","pl":"Zmienił się poziom ozonu","ru":"Значение озона изменилось","sv":"Ozonvärdet ändrades","es":"El nivel de ozono ha cambiado","fr":"La valeur de l\'ozone a changé","ar":"تغير مستوى الأوزون","de":"Der Ozonwert hat sich geändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":2}]}]},"minCompatibility":"12.2.0"}')},7589:()=>{},7593:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Window coverings tilt set","nl":"Kanteling van raambekleding ingesteld","de":"Jalousien-Kippstellung setzen","fr":"Définir l\'inclinaison des stores","it":"Imposta l\'inclinazione delle tapparelle","sv":"Ställ in lutning för fönsterskydd","no":"Innstill helning for vindusbeskyttelse","es":"Configurar la inclinación de los cobertores de ventanas","da":"Indstil hældning for vinduesdække","ru":"Угол наклона оконных навесов установлен","pl":"Ustawienie osłon okiennych","ko":"기울기","ar":"ضبط إمالة أغطية النوافذ"},"type":"number","min":0,"max":1,"units":{"en":"%","ko":"%","no":"%","ru":"%","ar":"%","da":"%","de":"%","es":"%","fr":"%","it":"%","nl":"%","pl":"%","sv":"%"},"decimals":2,"color":"#F5B207","getable":true,"setable":true,"uiComponent":"slider","$flow":{"triggers":[{"id":"windowcoverings_tilt_set_changed","title":{"en":"The tilt position changed","da":"Hældningspositionen ændrede sig","it":"L\'inclinazione è cambiata","ko":"창문 가림 기울기 위치가 변경되면","nl":"De kantelpositie is veranderd","pl":"Zmieniła się pozycja odchylenia","ru":"Положение наклона изменено","sv":"Lutningsläget ändrades","es":"La inclinación ha cambiado","fr":"La position d\'inclinaison a changé","no":"Vippeposisjonen ble endret","ar":"تم تغيير موضع الإمالة","de":"Die Neigungsposition wurde geändert"},"tokens":[{"name":"windowcoverings_tilt_set","type":"number","title":{"en":"Position","da":"Position","it":"Posizione","ko":"창문 가림 기울기 위치가 다음이면","nl":"Positie","pl":"Pozycja","ru":"Положение","sv":"Position","es":"Posición","fr":"Position","no":"Posisjon","ar":"الموضع","de":"Position"},"example":0.5}]}],"actions":[{"id":"windowcoverings_tilt_set","highlight":true,"title":{"en":"Set the tilt position to","da":"Indstil hældningsposition til","it":"Imposta l\'inclinazione su","ko":"창문 가림 기울기 위치를 다음으로 설정","nl":"De kantelpositie instellen op","pl":"Ustaw pozycję odchylenia na","ru":"Установить положение наклона на","sv":"Ställ in lutningsläget på","es":"Ajustar la inclinación a","fr":"Définir la position d\'inclinaison sur","no":"Sett vippeposisjonen til","ar":"ضبط موضع الإمالة على","de":"Stelle die Neigungsposition auf"},"hint":{"en":"Change the tilt position to open (100%), closed (0%), or a value in between.","da":"Skift hældningsposition til åben (100 %), lukket (0 %) eller en værdi midt imellem.","it":"Modifica l\'inclinazione su aperto (100%), chiuso (0%) o su un valore intermedio.","ko":"창문 가림 기울기 위치를 열림(100%), 닫힘(0%) 또는 그 사이의 값으로 변경해요.","nl":"Wijzig de kantelpositie in open (100%), gesloten (0%) of een waarde ertussenin.","pl":"Zmień pozycję odchylenia na otwartą (100%), zamkniętą (0%) lub wartość pośrednią.","ru":"Изменить положение наклона на «открыто» (100%), «закрыто» (0%) или выбрать промежуточное значение.","sv":"Ändra lutningsläget till öppet (100 %), stängt (0 %) eller ett värde däremellan.","es":"Cambia la inclinación a abierta (100%), cerrada (0%) o un valor intermedio.","fr":"Modifier la position de l\'inclinaison pour qu\'elle soit ouverte (100 %), fermée (0 %) ou une valeur intermédiaire.","no":"Endre vippeposisjonen til åpen (100 %), lukket (0 %) eller en mellomliggende verdi.","ar":"تغيير موضع الإمالة إلى مفتوح (100%) أو مغلق (0%)، أو قيمة بينهما.","de":"Ändere die Neigungsposition auf offen (100 %), geschlossen (0 %) oder einen Wert dazwischen."},"args":[{"name":"windowcoverings_tilt_set","type":"range","min":0,"max":1,"step":0.01,"value":0.5,"label":"%","labelMultiplier":100,"labelDecimals":0}]}]}}')},7667:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Connectivity Alarm","nl":"Verbindingswaarschuwing","da":"Tilslutningsalarm","fr":"Alarme de connectivité","it":"Allarme connessione","ko":"연결 해제 감지","no":"Tilkoblingsalarm","pl":"Alarm łączności","ru":"Сигнал подключения","sv":"Anslutningslarm","es":"Alarma de conectividad","ar":"إنذار الاتصال","de":"Verbindungsalarm"},"titleShort":{"en":"Connectivity","nl":"Connectiviteit","da":"Tilslutning","fr":"Connectivité","it":"Connettività","ko":"연결성","no":"Tilkobling","pl":"Łączność","ru":"Подключение","sv":"Anslutning","es":"Conectividad","ar":"الاتصال","de":"Konnektivität"},"desc":{"en":"True when disconnected from the network.","nl":"Wordt geactiveerd wanneer het apparaat niet meer verbonden is met het netwerk.","da":"Sandt, når forbindelsen til netværket er afbrudt.","fr":"Se déclenche lorsque le réseau est déconnecté.","it":"Vero quando si è disconnessi dalla rete.","ko":"네트워크에서 연결 해제되면 참입니다.","no":"Sann når koblet fra nettverket.","pl":"Prawda, gdy nastąpiło odłączenie od sieci.","ru":"Значение «истина», когда устройство отключено от сети.","sv":"Sant när den är frånkopplad från nätverket.","es":"Activado cuando se desconecta de la red.","ar":"صحيح عند قطع الاتصال بالشبكة.","de":"Wahr, wenn die Verbindung zum Netz getrennt ist."},"insights":true,"insightsTitleTrue":{"en":"Disconnected","nl":"Niet verbonden","da":"Afbrudt","fr":"Déconnecté","it":"Disconnesso","ko":"연결 해제됨","no":"Frakoblet","pl":"Odłączone","ru":"Отключено","sv":"Frånkopplad","es":"Desconectado","ar":"تم قطع الاتصال","de":"Getrennt"},"insightsTitleFalse":{"en":"Connected","nl":"Verbonden","da":"Tilsluttet","fr":"Connecté","it":"Connesso","ko":"연결됨","no":"Tilkoblet","pl":"Połączone","ru":"Подключено","sv":"Ansluten","es":"Conectado","ar":"متصل","de":"Verbunden"},"color":"#9033FC","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_connectivity_true","highlight":true,"title":{"en":"Is disconnected","nl":"Is niet verbonden","da":"Er afbrudt","fr":"Est déconnectée","it":"È disconnesso","ko":"연결이 해제되면","no":"Er frakoblet","pl":"Odłączony","ru":"Отключено","sv":"Frånkopplad","es":"Está desconectado","ar":"مفصول","de":"Ist nicht verbunden"}},{"id":"alarm_connectivity_false","title":{"en":"Is connected","nl":"Is verbonden","da":"Er tilsluttet","fr":"Est connectée","it":"È connesso","ko":"연결되면","no":"Er tilkoblet","pl":"Połączony","ru":"Подключено","sv":"Ansluten","es":"Está conectado","ar":"متصل","de":"Ist verbunden"}}],"conditions":[{"id":"alarm_connectivity","title":{"en":"Is !{{connected|disconnected}}","nl":"Is !{{verbonden|niet verbonden}}","da":"Er !{{tilsluttet|afbrudt}}","it":"È !{{connesso|disconnesso}}","ko":"!{{연결되면|연결이 해제되면}}","no":"Er !{{frakoblet|tilkoblet}}","pl":"Jest !{{połączony|niepołączony}}","ru":"Устройство !{{подключено|отключено}}","sv":"Är !{{ansluten|frånkopplad}}","es":"Está !{{conectado|desconectado}}","fr":"Est !{{connectée|déconnectée}}","ar":"هو !{{متصل|غير متصل}}","de":"Ist !{{verbunden|nicht verbunden}}"}}]},"minCompatibility":"12.2.0"}')},7741:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Presence Alarm","nl":"Aanwezigheidswaarschuwing","da":"Tilstedeværelsesalarm","it":"Allarme di presenza","ko":"재실 감지","no":"Tilstedeværelsesalarm","pl":"Alarm obecności","ru":"Сигнал присутствия","sv":"Närvarolarm","es":"Alarma de presencia","fr":"Alarme de présence","ar":"إنذار التواجد","de":"Anwesenheitsalarm"},"titleShort":{"en":"Presence","nl":"Aanwezigheid","da":"Tilstedeværelse","it":"Presenza","ko":"존재감지","no":"Tilstedeværelse","pl":"Obecność","ru":"Присутствие","sv":"Närvaro","es":"Presencia","fr":"Présence","ar":"التواجد","de":"Anwesenheit"},"desc":{"en":"True when presence has been detected.","nl":"Wordt geactiveerd wanneer aanwezigheid wordt gedetecteerd","da":"True, når der er registreret tilstedeværelse.","it":"Vero quando viene rilevata una presenza.","ko":"존재가 감지되면 참입니다.","no":"Sann når tilstedeværelse har blitt påvist.","pl":"Prawda, gdy wykryta została obecność.","ru":"Значение «истина» при обнаружении присутствия.","sv":"True när närvaro har detekterats.","es":"Activado cuando se detecta presencia.","fr":"Se déclenche lorsqu\'une présence a été détectée.","ar":"صحيح عند اكتشاف تواجد.","de":"Wahr, wenn Anwesenheit erkannt wurde."},"insights":true,"insightsTitleTrue":{"en":"Presence Alarm turned on","nl":"Aanwezigheidswaarschuwing geactiveerd","da":"Tilstedeværelsesalarm slået til","it":"Allarme di presenza acceso","ko":"재실 감지됨","no":"Tilstedeværelsesalarm aktivert","pl":"Alarm obecności włączony","ru":"Сигнал присутствия включен","sv":"Närvarolarm aktiverat","es":"Alarma de presencia activada","fr":"Alarme de présence activée","ar":"تم تشغيل إنذار التواجد","de":"Anwesenheitsalarm eingeschaltet"},"insightsTitleFalse":{"en":"Presence Alarm turned off","nl":"Aanwezigheidswaarschuwing gedeactiveerd","da":"Tilstedeværelsesalarm slået fra","it":"Allarme di presenza spento","ko":"재실 감지되지 않음","no":"Tilstedeværelsesalarm deaktivert","pl":"Alarm obecności wyłączony","ru":"Сигнал присутствия выключен","sv":"Närvarolarm inaktiverat","es":"Alarma de presencia desactivada","fr":"Alarme de présence désactivée","ar":"تم إيقاف إنذار التواجد","de":"Anwesenheitsalarm ausgeschaltet"},"color":"#32C5FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_presence_true","highlight":true,"title":{"en":"The presence alarm turned on","nl":"De aanwezigheidswaarschuwing is geactiveerd","da":"Tilstedeværelsesalarmen er slået til","it":"L\'allarme di presenza si è acceso","ko":"재실이면","no":"Tilstedeværelsesalarmen ble aktivert","pl":"Włączył się alarm obecności","ru":"Сигнал присутствия включен","sv":"Närvarolarmet aktiverat","es":"La alarma de presencia se ha activado","fr":"L\'alarme de présence s\'est activée","ar":"تم تشغيل إنذار التواجد","de":"Der Anwesenheitsalarm ist eingeschaltet"}},{"id":"alarm_presence_false","title":{"en":"The presence alarm turned off","nl":"De aanwezigheidswaarschuwing is gedeactiveerd","da":"Tilstedeværelsesalarm slået fra","it":"L\'allarme di presenza si è spento","ko":"부재이면","no":"Tilstedeværelsesalarmen ble deaktivert","pl":"Wyłączył się alarm obecności","ru":"Сигнал присутствия выключен","sv":"Närvarolarmet inaktiverat","es":"La alarma de presencia se ha desactivado","fr":"L\'alarme de présence s\'est désactivée","ar":"تم إيقاف إنذار التواجد","de":"Der Anwesenheitsalarm ist ausgeschaltet"}}],"conditions":[{"id":"alarm_presence","title":{"en":"The presence alarm is !{{on|off}}","nl":"De aanwezigheidswaarschuwing is !{{geactiveerd|gedeactiveerd}}","da":"Tilstedeværelsesalarmen er !{{tændt|slukket}}","it":"L\'allarme di presenza è !{{acceso|spento}}","ko":"!{{재실|부재}}이면","no":"Tilstedeværelsesalarmen er !{{på|av}}","pl":"Alarm obecności jest !{{włączony|wyłączony}}","ru":"Сигнал присутствия !{{включен|выключен}}","sv":"Närvarolarmet är !{{på|av}}","es":"La alarma de presencia está !{{activada|desactivada}}","fr":"L\'alarme de présence est !{{activée|désactivée}}","ar":"إنذار التواجد !{{يعمل|لا يعمل}}","de":"Der Anwesenheitsalarm ist !{{an|aus}}"}}]},"minCompatibility":"12.2.0"}')},7800:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"PM0.1 Alarm","nl":"PM0.1-waarschuwing","de":"PM0.1-Alarm","fr":"Alarme PM0.1","it":"Allarme PM0.1","sv":"PM0.1-larm","no":"PM0.1-alarm","es":"Alarma de PM0,1","da":"PM0.1-alarm","ru":"Сигнал ТЧ0.1","pl":"Alarm PM0.1","ko":"나노미세먼지(PM0.1) 알람","ar":"إنذار PM0.1"},"titleShort":{"en":"PM0.1","nl":"PM0.1","de":"PM0.1","fr":"PM0.1","it":"PM0.1","sv":"PM0.1","no":"PM0.1","es":"PM0,1","da":"PM0,1","ru":"ТЧ0,1","pl":"PM0,1","ko":"PM0.1","ar":"PM0.1"},"desc":{"en":"True when PM0.1 values exceeds threshold","nl":"Wordt geactiveerd wanneer PM0.1-waarden de drempel overschrijden","de":"True, wenn PM0.1-Werte die Schwelle überschreiten","fr":"Se déclenche lorsque les valeurs PM0.1 excèdent un seuil","it":"Vero quando i valori PM0.1 superano la soglia","sv":"Sant när PM0.1-värdena överstiger gränsvärdet","no":"Sann når PM0.1-verdiene overskrider grenseverdien","es":"Activado cuando los valores de PM0,1 superan el límite","da":"Sandt, når PM0.1-værdier overskrider grænseværdien","ru":"Значение «истина» при превышении контрольного значения ТЧ0.1","pl":"Prawda, gdy wartości PM0.1 przekraczają próg","ko":"PM0.1 값이 임계값을 초과하면 참","ar":"صحيح عندما تتجاوز قيم PM0.1 الحد"},"insights":true,"insightsTitleTrue":{"en":"PM0.1 alarm turned on","nl":"PM0.1-waarschuwing geactiveerd","de":"PM0.1-Alarm ist angegangen","fr":"Alarme PM0.1 activée","it":"Allarme PM0.1 acceso","sv":"PM0.1-larm aktiverat","no":"PM0.1-alarm aktivert","es":"Alarma de PM0,1 activada","da":"PM0.1-alarm blev aktiveret","ru":"Сигнал ТЧ0.1 включен","pl":"Alarm PM0.1 włączony","ko":"나노미세먼지(PM0.1) 알람 켜짐","ar":"تم تشغيل إنذار PM0.1"},"insightsTitleFalse":{"en":"PM0.1 alarm turned off","nl":"PM0.1-waarschuwing gedeactiveerd","de":"PM0.1-Alarm ist ausgegangen","fr":"Alarme PM0.1 désactivée","it":"Allarme PM0.1 spento","sv":"PM0.1-larm inaktiverat","no":"PM0.1-alarm deaktivert","es":"Alarma de PM0,1 desactivada","da":"PM0.1-alarm blev deaktiveret","ru":"Сигнал ТЧ0.1 выключен","pl":"Alarm PM0.1 wyłączony","ko":"나노미세먼지(PM0.1) 알람 꺼짐","ar":"تم إيقاف إنذار PM0.1"},"color":"#E02020","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_pm01_true","highlight":true,"title":{"en":"The PM0.1 alarm turned on","nl":"De PM0.1-waarschuwing is geactiveerd","de":"Der PM0.1-Alarm ist angegangen","fr":"L\'alarme PM0.1 s\'est activée","it":"L\'allarme PM0.1 si è acceso","sv":"PM0.1-larmet aktiverat","no":"PM0.1-alarmen ble aktivert","es":"La alarma de PM0,1 se ha activado","da":"PM0.1-alarmen blev aktiveret","ru":"Сигнал ТЧ0.1 включен","pl":"Włączył się alarm PM0.1","ko":"나노미세먼지(PM0.1) 알람이 \'예\'이면","ar":"تم تشغيل إنذار PM0.1"}},{"id":"alarm_pm01_false","title":{"en":"The PM0.1 alarm turned off","nl":"De PM0.1-waarschuwing is gedeactiveerd","de":"Der PM0.1-Alarm ist ausgegangen","fr":"L\'alarme PM0.1 s\'est désactivée","it":"L\'allarme PM0.1 si è spento","sv":"PM0.1-larmet inaktiverat","no":"PM0.1-alarmen ble deaktivert","es":"La alarma de PM0,1 se ha desactivado","da":"PM0.1-alarmen blev deaktiveret","ru":"Сигнал ТЧ0.1 выключен","pl":"Wyłączył się alarm PM0.1","ko":"나노미세먼지(PM0.1) 알람이 \'아니요\'이면","ar":"تم إيقاف إنذار PM0.1"}}],"conditions":[{"id":"alarm_pm01","title":{"en":"The PM0.1 alarm is !{{on|off}}","nl":"De PM0.1-waarschuwing is !{{geactiveerd|gedeactiveerd}}","de":"Der PM0.1-Alarm ist !{{an|aus}}","fr":"L\'alarme PM0.1 est !{{activée|désactivée}}","it":"L\'allarme PM0.1 è !{{acceso|spento}}","sv":"PM0.1-larmet är !{{på|av}}","no":"PM0.1-alarmen er !{{på|av}}","es":"La alarma de PM0,1 está !{{activada|desactivada}}","da":"PM0.1-alarmen er !{{tændt|slukket}}","ru":"Сигнал ТЧ0.1 !{{включен|выключен}}","pl":"Alarm PM0.1 jest !{{włączony|wyłączony}}","ko":"나노미세먼지(PM0.1) 알람이 !{{\'예\'|\'아니요\'}}이면","ar":"إنذار PM0.1 !{{يعمل|لا يعمل}}"}}]},"minCompatibility":"12.2.0"}')},7850:e=>{"use strict";e.exports=function(e,t,a){var r=" ",i=e.level,n=e.dataLevel,s=e.schema[t],o=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+"/"+t,d=!e.opts.allErrors,u="data"+(n||""),m="valid"+i,p=e.opts.$data&&s&&s.$data;p&&(r+=" var schema"+i+" = "+e.util.getData(s.$data,n,e.dataPathArr)+"; ");var c="schema"+i;if(!p)if(s.length0:e.util.schemaHasRules(y,e.RULES.all))||(g[g.length]=v)}}else g=s;if(p||g.length){var b=e.errorPath,w=p||g.length>=e.opts.loopRequired,z=e.opts.ownProperties;if(d)if(r+=" var missing"+i+"; ",w){p||(r+=" var "+c+" = validate.schema"+o+"; ");var P="' + "+(C="schema"+i+"["+(E="i"+i)+"]")+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(b,C,e.opts.jsonPointers)),r+=" var "+m+" = true; ",p&&(r+=" if (schema"+i+" === undefined) "+m+" = true; else if (!Array.isArray(schema"+i+")) "+m+" = false; else {"),r+=" for (var "+E+" = 0; "+E+" < "+c+".length; "+E+"++) { "+m+" = "+u+"["+c+"["+E+"]] !== undefined ",z&&(r+=" && Object.prototype.hasOwnProperty.call("+u+", "+c+"["+E+"]) "),r+="; if (!"+m+") break; } ",p&&(r+=" } "),r+=" if (!"+m+") { ",(S=S||[]).push(r),r="",!1!==e.createErrors?(r+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { missingProperty: '"+P+"' } ",!1!==e.opts.messages&&(r+=" , message: '",e.opts._errorDataPathProperty?r+="is a required property":r+="should have required property \\'"+P+"\\'",r+="' "),e.opts.verbose&&(r+=" , schema: validate.schema"+o+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),r+=" } "):r+=" {} ";var _=r;r=S.pop(),!e.compositeRule&&d?e.async?r+=" throw new ValidationError(["+_+"]); ":r+=" validate.errors = ["+_+"]; return false; ":r+=" var err = "+_+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+=" } else { "}else{r+=" if ( ";var S,A=g;if(A)for(var E=-1,j=A.length-1;E{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Data Size","nl":"Gegevensgrootte","da":"Datastørrelse","it":"Dimensione dei dati","ko":"데이터 크기","pl":"Rozmiar danych","ru":"Размер данных","sv":"Datastorlek","es":"Tamaño de los datos","fr":"Taille des données","no":"Datastørrelse","ar":"حجم البيانات","de":"Datengröße"},"units":{"en":"bytes","nl":"bytes","da":"bytes","it":"byte","ko":"bytes ","pl":"bajty","ru":"байты","sv":"byte","es":"bytes","fr":"octets","no":"byte","ar":"بايت","de":"Bytes"},"desc":{"en":"The data size in bytes.","nl":"De gegevensgrootte in bytes.","da":"Datastørrelsen i bytes.","it":"La dimensione dei dati in byte.","ko":"바이트 단위의 데이터 크기입니다.","pl":"Rozmiar danych w bajtach.","ru":"Размер данных в байтах.","sv":"Datastorlek i byte.","es":"El tamaño de los datos en bytes.","fr":"La taille des données en octets.","no":"Datastørrelsen i byte.","ar":"حجم البيانات بالبايت.","de":"Die Datengröße in Bytes."},"insights":true,"chartType":"spline","decimals":0,"color":"#6236FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_data_size_changed","title":{"en":"The data size changed","nl":"De gegevensgrootte is veranderd","da":"Datastørrelsen er ændret","it":"La dimensione dei dati è cambiata","ko":"데이터 크기가 변경되면","pl":"Zmienił się rozmiar danych","ru":"Размер данных изменился","sv":"Datastorleken ändrades","es":"El tamaño de los datos ha cambiado","fr":"La taille des données a changé","no":"Datastørrelsen ble endret","ar":"تغير حجم البيانات","de":"Die Datengröße hat sich geändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":200}]}]},"minCompatibility":"12.2.0"}')},7920:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"HEPA filter level","nl":"HEPA-filterniveau","da":"Niveau for HEPA-filter","it":"Livello del filtro HEPA","ko":"헤파 필터 상태","pl":"Poziom filtra HEPA","ru":"Уровень HEPA-фильтра","sv":"HEPA-filternivå","es":"Nivel del filtro HEPA","fr":"Niveau du filtre HEPA","no":"HEPA-filternivå","ar":"مستوى فلتر HEPA","de":"HEPA-Filterwert"},"desc":{"en":"The level of degredation on the HEPA filter.","nl":"De mate van aantasting van het HEPA-filter.","da":"Niveauet af nedbrydning på HEPA-filteret.","it":"Il livello di degradazione del filtro HEPA.","ko":"HEPA 필터의 오염 수준입니다.","pl":"Poziom degradacji filtra HEPA.","ru":"Уровень снижения производительности HEPA-фильтра.","sv":"Graden av nedbrytning på HEPA-filtret.","es":"El nivel de degradación del filtro HEPA.","fr":"Le niveau de dégradation du filtre HEPA.","no":"Nedbrytingsnivået for HEPA-filteret.","ar":"مستوى التدهور في فلتر HEPA.","de":"Der Verschleißgrad des HEPA-Filters."},"values":[{"id":"ok","title":{"en":"OK","nl":"OK","da":"OK","it":"OK","ko":"좋음","pl":"OK","ru":"Нормальный","sv":"OK","es":"Correcto","fr":"OK","no":"OK","ar":"جيد","de":"OK"}},{"id":"warning","title":{"en":"Warning","nl":"Waarschuwing","da":"Advarsel","it":"Attenzione","ko":"주의","pl":"Ostrzeżenie","ru":"Требующий внимания","sv":"Varning","es":"Advertencia","fr":"Avertissement","no":"Advarsel","ar":"تحذير","de":"Warnung"}},{"id":"critical","title":{"en":"Critical","nl":"Kritiek","da":"Kritisk","it":"Critico","ko":"교체 필요","pl":"Krytyczny","ru":"Критический","sv":"Kritisk","es":"Crítico","fr":"Critique","no":"Kritisk","ar":"حرج","de":"Kritisch"}}],"color":"#E02020","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"level_hepa_filter_changed","highlight":true,"title":{"en":"The HEPA filter level changed to","nl":"Het HEPA-filterniveau is veranderd naar","da":"HEPA-filterets niveau blev ændret til","it":"Il livello del filtro HEPA è passato a","ko":"헤파 필터 상태가 다음으로 변경되면","pl":"Poziom filtra HEPA zmienił się na","ru":"Уровень HEPA-фильтра изменился на","sv":"HEPA-filternivån ändrades till","es":"El filtro HEPA ha cambiado a","fr":"Le niveau du filtre HEPA est passé à","no":"HEPA-filternivået ble endret til","ar":"تغير مستوى فلتر HEPA إلى","de":"Der HEPA-Filterwert hat sich geändert auf"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"level_hepa_filter_is","title":{"en":"The HEPA filter level !{{is|is not}}","nl":"Het HEPA-filterniveau !{{is|is niet}}","da":"HEPA-filterets niveau !{{er|er ikke}}","it":"Il livello del filtro HEPA !{{è|non è}}","ko":"헤파 필터 상태가 다음!{{이면|이 아니면}}","pl":"Poziom filtra HEPA !{{jest|nie jest}}","ru":"Уровень фильтра HEPA !{{|не}}","sv":"HEPA-filternivån !{{är|är inte}}","es":"El nivel del filtro HEPA !{{es|no es}}","fr":"Le niveau du filtre HEPA !{{est|n\'est pas}}","no":"HEPA-filternivået !{{er|er ikke}}","ar":"مستوى فلتر HEPA !{{هو|ليس}}","de":"Der HEPA-Filterwert !{{ist|ist nicht}}"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.2.0"}')},7935:e=>{"use strict";e.exports=function(e,t,a){var r,i=" ",n=e.level,s=e.dataLevel,o=e.schema[t],l=e.schemaPath+e.util.getProperty(t),d=e.errSchemaPath+"/"+t,u=!e.opts.allErrors,m="data"+(s||""),p=e.opts.$data&&o&&o.$data;if(p?(i+=" var schema"+n+" = "+e.util.getData(o.$data,s,e.dataPathArr)+"; ",r="schema"+n):r=o,!p&&"number"!=typeof o)throw new Error(t+" must be number");var c="maxLength"==t?">":"<";i+="if ( ",p&&(i+=" ("+r+" !== undefined && typeof "+r+" != 'number') || "),!1===e.opts.unicode?i+=" "+m+".length ":i+=" ucs2length("+m+") ",i+=" "+c+" "+r+") { ";var g=t,h=h||[];h.push(i),i="",!1!==e.createErrors?(i+=" { keyword: '"+(g||"_limitLength")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(d)+" , params: { limit: "+r+" } ",!1!==e.opts.messages&&(i+=" , message: 'should NOT be ",i+="maxLength"==t?"longer":"shorter",i+=" than ",i+=p?"' + "+r+" + '":""+o,i+=" characters' "),e.opts.verbose&&(i+=" , schema: ",i+=p?"validate.schema"+l:""+o,i+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),i+=" } "):i+=" {} ";var v=i;return i=h.pop(),!e.compositeRule&&u?e.async?i+=" throw new ValidationError(["+v+"]); ":i+=" validate.errors = ["+v+"]; return false; ":i+=" var err = "+v+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",i+="} ",u&&(i+=" else { "),i}},7937:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Lock","nl":"Slot","de":"Schloss","fr":"Verrou","it":"Serratura","sv":"Lås","no":"Lås","es":"Cerradura","da":"Lås","ru":"Замок","pl":"Zamek","ko":"잠금 장치","ar":"قفل"},"description":{"en":"Use this device class for lock devices, usually together with the `locked` and `lock_mode` capabilities.","de":"Nutze diese Geräteklasse für Schloss-Geräte - normalerweise zusammen mit den `locked`- und `lock_mode`-Fähigkeiten.","fr":"Utilisez cette classe d\'appareil pour les appareils verrou, généralement avec les capacités `locked` et `lock_mode`.","it":"Utilizza questa classe di dispositivi per le serrature, generalmente insieme alle funzioni `locked` e `lock_mode`.","sv":"Använd den här enhetsklassen för att låsa enheter, oftast tillsammans med funktionerna `locked` och `lock_mode`.","no":"Bruk denne enhetsklassen for låseenheter, ofte sammen med funksjonene `locked` og `lock_mode`.","es":"Utiliza esta clase de dispositivo para las cerraduras, generalmente junto con las capacidades de `locked` y `lock_mode`.","da":"Brug denne enhedsklasse til låseenheder, normalt sammen med `locked` and `lock_mode` funktionerne.","ru":"Используйте этот класс устройств для замков, обычно вместе с функциями `locked` и `lock_mode`.","pl":"Użyj tej klasy urządzeń dla produktów z zamkiem, zwykle razem ze zdolnościami `locked` i `lock_mode`.","ko":"이 디바이스 클래스는 보통 \'locked\' 및 \'lock_mode\' 기능을 갖춘 잠금장치인 록 디바이스에 사용합니다.","ar":"استخدم فئة الجهاز هذه لأجهزة القفل، عادةً مع إمكانيات \'locked\' (مقفل) و\'lock_mode\' (وضع القفل).","nl":"Gebruik deze apparaatklasse voor vergrendelde apparaten, meestal samen met de opties \'locked\' en \'lock_mode\'."}}')},7951:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Volume","nl":"Volume","da":"Volumen","it":"Volume","ko":"부피","pl":"Objętość","ru":"Объем","sv":"Volym","es":"Volumen","fr":"Volume","no":"Volum","ar":"الحجم","de":"Volumen"},"units":{"en":"L","nl":"L","da":"L","it":"L","ko":"L","pl":"l","ru":"Л","sv":"L","es":"L","fr":"L","no":"L","ar":"لتر","de":"L"},"desc":{"en":"The volume of the content in liters.","nl":"Het volume van de inhoud in liters.","da":"Indholdets volumen i liter.","it":"Il volume del contenuto in litri.","ko":"리터 단위의 내용물 부피입니다.","pl":"Objętość zawartości w litrach.","ru":"Объем содержимого в литрах.","sv":"Innehållets volym i liter.","es":"El volumen del contenido en litros.","fr":"Le volume du contenu en litres.","no":"Volumet av innholdet i liter.","ar":"حجم المحتوى باللتر.","de":"Das Volumen des Inhalts in Litern."},"insights":true,"chartType":"spline","decimals":2,"color":"#9033FC","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_content_volume_changed","title":{"en":"The volume changed","nl":"Het volume is veranderd","da":"Lydstyrken ændrede sig","it":"Il volume è cambiato","ko":"부피가 변경되면","pl":"Zmieniła się objętość","ru":"Объем изменился","sv":"Volymen ändrades","es":"El volumen ha cambiado","fr":"Le volume a changé\\n","no":"Volumet ble endret","ar":"تغير الحجم","de":"Das Volumen hat sich geändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":2}]}]},"minCompatibility":"12.2.0"}')},7975:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Laundry dryer dryness","ar":"جفاف مجفف الغسيل","da":"Tørretumblerens tørhed","de":"Trocknung des Wäschetrockners","es":"Secado en secadora","fr":"Séchage du linge","it":"Asciugatura del bucato","ko":"건조기 건조도","nl":"Droogte van wasdroger","no":"Tørkenivå for tørketrommel","pl":"Suchość suszarki do prania","ru":"Степень сухости сушильной машины","sv":"Torktumlarens torrhet"},"desc":{"en":"The dryness setting of the laundry dryer.","ar":"إعداد الجفاف في مجفف الغسيل.","da":"Tørretumblerens indstilling af tørhed.","de":"Die Trocknungseinstellung des Wäschetrockners.","es":"El ajuste de secado de la secadora.","fr":"Le réglage de séchage du sèche-linge.","it":"L\'impostazione di asciugatura dell\'asciugatrice.","ko":"건조기의 건조도 설정입니다.","nl":"De droogte-instelling van de wasdroger.","no":"Tørkeinnstillingen på tørketrommelen.","pl":"Ustawienie suchości suszarki do prania","ru":"Настройка степени сухости сушильной машины.","sv":"Torktumlarens inställning för torrhet."},"values":[{"id":"low","title":{"en":"Low","nl":"Laag","da":"Lavt","it":"Basso","ko":"약하게","pl":"Niski","ru":"Низкая","sv":"Låg","es":"Bajo","fr":"Faible","no":"Lav","ar":"منخفض","de":"Niedrig"}},{"id":"normal","title":{"en":"Normal","nl":"Normaal","da":"Normal","it":"Normale","ko":"보통","pl":"Normalny","ru":"Стандарт","sv":"Normal","es":"Normal","fr":"Normal","no":"Standard","ar":"عادي","de":"Normal"}},{"id":"extra","title":{"en":"Extra","nl":"Extra","da":"Ekstra","it":"Extra","ko":"강력","pl":"Wyższy","ru":"Повышенная","sv":"Extra","es":"Extra","fr":"Extra","no":"Ekstra","ar":"إضافي","de":"Extra"}},{"id":"max","title":{"en":"Max","nl":"Max","da":"Maks","it":"Max","ko":"최대","pl":"Maksymalny","ru":"Максимальная","sv":"Max","es":"Máximo","fr":"Max","no":"Maks.","ar":"الحد الأقصى","de":"Max."}}],"color":"#0091FF","getable":true,"setable":true,"uiComponent":"picker","$flow":{"triggers":[{"id":"laundry_dryer_dryness_changed","title":{"en":"The dryness changed to","ar":"تم تغيير الجفاف إلى","da":"Tørheden ændrede sig til","de":"Die Trocknung wurde gestellt auf","es":"El secado ha cambiado a","fr":"Le séchage a changé pour","it":"L\'asciugatura è cambiata in","ko":"건조도가 다음으로 변경되면","nl":"De droogte veranderde naar","no":"Tørkenivået ble endret til","pl":"Suchość zmieniła się na","ru":"Степень сухости изменена на","sv":"Torrheten ändrades till"},"args":[{"name":"dryness","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"laundry_dryer_dryness_is","title":{"en":"The dryness !{{is|is not}}","ar":"الجفاف !{{هو|ليس}}","da":"Tørheden !{{is|is not}}","de":"Die Trocknung !{{ist|ist nicht}}","es":"El secado !{{está|no está}}","fr":"Le séchage {{est|n\'est pas}}","it":"L\'asciugatura !{{è|non è}}","ko":"건조도가 다음!{{이면|이 아니면}}","nl":"De droogte !{{is|is niet}}","no":"Tørkenivået !{{er|er ikke}}","pl":"Suchość !{{jest|nie jest}}","ru":"Степень сухости — !{{ | не}}","sv":"Torrheten !{{är|är inte}}"},"args":[{"name":"dryness","type":"dropdown","values":"$values"}]}],"actions":[{"id":"set_laundry_dryer_dryness","title":{"en":"Set the laundry dryer dryness to","ar":"اضبط درجة جفاف مجفف الغسيل على","da":"Indstil tørretumblerens tørhed til","de":"Stellen Sie den Trocknungsgrad des Wäschetrockners auf","es":"Establece el secado de la secadora en","fr":"Règlez le séchage du sèche-linge sur","it":"Imposta l\'asciugatura dell\'asciugatrice su","ko":"건조기 건조도를 다음으로 설정","nl":"Stel de droogte van de wasdroger in op","no":"Sett tørkenivået for tørketrommelen til","pl":"Ustaw suchość suszarki na","ru":"Установить степень сухости сушильной машины на","sv":"Ställ in torktumlarens torrhet på"},"args":[{"name":"dryness","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.11.0"}')},7992:e=>{"use strict";e.exports=function(e,t,a){var r,i,n=" ",s=e.level,o=e.dataLevel,l=e.schema[t],d=e.schemaPath+e.util.getProperty(t),u=e.errSchemaPath+"/"+t,m=!e.opts.allErrors,p="data"+(o||""),c="valid"+s,g="errs__"+s,h=e.opts.$data&&l&&l.$data;h?(n+=" var schema"+s+" = "+e.util.getData(l.$data,o,e.dataPathArr)+"; ",i="schema"+s):i=l;var v,f,k,y,b,w=this,z="definition"+s,P=w.definition,_="";if(h&&P.$data){b="keywordValidate"+s;var S=P.validateSchema;n+=" var "+z+" = RULES.custom['"+t+"'].definition; var "+b+" = "+z+".validate;"}else{if(!(y=e.useCustomRule(w,l,e.schema,e)))return;i="validate.schema"+d,b=y.code,v=P.compile,f=P.inline,k=P.macro}var A=b+".errors",E="i"+s,j="ruleErr"+s,C=P.async;if(C&&!e.async)throw new Error("async keyword in sync schema");if(f||k||(n+=A+" = null;"),n+="var "+g+" = errors;var "+c+";",h&&P.$data&&(_+="}",n+=" if ("+i+" === undefined) { "+c+" = true; } else { ",S&&(_+="}",n+=" "+c+" = "+z+".validateSchema("+i+"); if ("+c+") { ")),f)P.statements?n+=" "+y.validate+" ":n+=" "+c+" = "+y.validate+"; ";else if(k){var O=e.util.copy(e);_="",O.level++;var L="valid"+O.level;O.schema=y.validate,O.schemaPath="";var T=e.compositeRule;e.compositeRule=O.compositeRule=!0;var D=e.validate(O).replace(/validate\.schema/g,b);e.compositeRule=O.compositeRule=T,n+=" "+D}else{(F=F||[]).push(n),n="",n+=" "+b+".call( ",e.opts.passContext?n+="this":n+="self",v||!1===P.schema?n+=" , "+p+" ":n+=" , "+i+" , "+p+" , validate.schema"+e.schemaPath+" ",n+=" , (dataPath || '')",'""'!=e.errorPath&&(n+=" + "+e.errorPath);var M=o?"data"+(o-1||""):"parentData",x=o?e.dataPathArr[o]:"parentDataProperty",$=n+=" , "+M+" , "+x+" , rootData ) ";n=F.pop(),!1===P.errors?(n+=" "+c+" = ",C&&(n+="await "),n+=$+"; "):n+=C?" var "+(A="customErrors"+s)+" = null; try { "+c+" = await "+$+"; } catch (e) { "+c+" = false; if (e instanceof ValidationError) "+A+" = e.errors; else throw e; } ":" "+A+" = null; "+c+" = "+$+"; "}if(P.modifying&&(n+=" if ("+M+") "+p+" = "+M+"["+x+"];"),n+=""+_,P.valid)m&&(n+=" if (true) { ");else{var F;n+=" if ( ",void 0===P.valid?(n+=" !",n+=k?""+L:""+c):n+=" "+!P.valid+" ",n+=") { ",r=w.keyword,(F=F||[]).push(n),n="",(F=F||[]).push(n),n="",!1!==e.createErrors?(n+=" { keyword: '"+(r||"custom")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { keyword: '"+w.keyword+"' } ",!1!==e.opts.messages&&(n+=" , message: 'should pass \""+w.keyword+"\" keyword validation' "),e.opts.verbose&&(n+=" , schema: validate.schema"+d+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+p+" "),n+=" } "):n+=" {} ";var I=n;n=F.pop(),!e.compositeRule&&m?e.async?n+=" throw new ValidationError(["+I+"]); ":n+=" validate.errors = ["+I+"]; return false; ":n+=" var err = "+I+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ";var N=n;n=F.pop(),f?P.errors?"full"!=P.errors&&(n+=" for (var "+E+"="+g+"; "+E+"{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Night Alarm","nl":"Nachtalarm","de":"Nachtalarm","fr":"Alarme de nuit","it":"Allarme notturno","sv":"Nattlarm","no":"Nattalarm","es":"Alarma nocturna","da":"Natalarm","ru":"Ночной сигнал","pl":"Alarm nocny","ko":"야간 알람","ar":"إنذار الليل"},"titleShort":{"en":"Night","nl":"Nacht","de":"Nacht","fr":"Nuit","it":"Notte","sv":"Natt","no":"Natt","es":"Noche","da":"Nat","ru":"Ночь","pl":"Noc","ko":"밤","ar":"الليل"},"desc":{"en":"True when it is night","nl":"Gaat af als het nacht is","de":"True, wenn es Nacht ist","fr":"Vrai quand il fait nuit","it":"Vero quando è notte","sv":"Sant när det är natt","no":"Sant når det er natt","es":"Activado cuando es de noche","da":"Sandt, når det er nat","ru":"Значение «истина» ночью","pl":"Adekwatny, kiedy jest noc","ko":"밤이 되면 참","ar":"صحيح عند حلول الليل"},"insights":true,"insightsTitleTrue":{"en":"Night alarm turned on","nl":"Nachtalarm ging af","de":"Nacht-Alarm ist angegangen","fr":"Alarme nuit s\'est activée","it":"Allarme notturno attivato","sv":"Nattlarm aktiverat","no":"Nattalarm aktivert","es":"Alarma nocturna activada","da":"Natalarm blev aktiveret","ru":"Ночной сигнал включен","pl":"Alarm nocny włączony","ko":"야간 알람 켜짐","ar":"تم تشغيل إنذار الليل"},"insightsTitleFalse":{"en":"Night alarm turned off","nl":"Nachtalarm ging uit","de":"Nacht-Alarm ist ausgegangen","fr":"Alarme nuit s\'est désactivée","it":"Allarme notturno disattivato","sv":"Nattlarm inaktiverat","no":"Nattalarm deaktivert","es":"Alarma nocturna desactivada","da":"Natalarm blev deaktiveret","ru":"Ночной сигнал выключен","pl":"Alarm nocny wyłączony","ko":"야간 알람 꺼짐","ar":"تم إيقاف إنذار الليل"},"color":"#9033FC","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_night_true","title":{"en":"The night alarm turned on","nl":"Het nachtalarm gaat aan","de":"Der Nacht-Alarm ist angegangen","fr":"L\'alarme nuit s\'est activée","it":"L\'allarme notturno è stato attivato","sv":"Nattlarmet aktiverat","no":"Nattalarmen ble aktivert","es":"La alarma nocturna se ha activado","da":"Natalarmen blev aktiveret","ru":"Ночной сигнал включен","pl":"Alarm nocny włączony","ko":"야간이면","ar":"تم تشغيل إنذار الليل"}},{"id":"alarm_night_false","title":{"en":"The night alarm turned off","nl":"Het nachtalarm gaat uit","de":"Der Nacht-Alarm ist ausgegangen","fr":"L\'alarme nuit s\'est désactivée","it":"L\'allarme notturno è stato disattivato","sv":"Nattlarmet inaktiverat","no":"Nattalarmen ble deaktivert","es":"La alarma nocturna se ha desactivado","da":"Natalarmen blev deaktiveret","ru":"Ночной сигнал выключен","pl":"Alarm nocny wyłączony","ko":"야간이 아니면","ar":"تم إيقاف إنذار الليل"}}],"conditions":[{"id":"alarm_night","title":{"en":"The night alarm is !{{on|off}}","nl":"Het nachtalarm is !{{aan|uit}}","de":"Der Nacht-Alarm ist !{{an|aus}}","fr":"L\'alarme nuit est !{{en marche|arrêtée}}","it":"L\'allarme notturno è !{{acceso|spento}}","sv":"Nattlarmet är !{{på|av}}","no":"Nattalarmen er !{{på|av}}","es":"La alarma nocturna está !{{activada|desactivada}}","da":"Natalarmen er !{{tændt|slukket}}","ru":"Ночной сигнал !{{вкл.|выкл.}}","pl":"Alarm nocny jest !{{włączony|wyłączony}}","ko":"야간!{{이면|이 아니면}}","ar":"إنذار الليل !{{يعمل|لا يعمل}}"}}]}}')},8013:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Rotation","nl":"Rotatie","da":"Rotation","it":"Rotazione","ko":"회전각","pl":"Rotacja","ru":"Вращение","sv":"Rotation","es":"Rotación","fr":"Rotation","no":"Rotasjon","ar":"الدوران","de":"Rotation"},"units":{"en":"°","nl":"°","da":"°","it":"°","ko":"°","pl":"°","ru":"°","sv":"°","es":"°","fr":"°","no":"°","ar":"°","de":"°"},"desc":{"en":"The rotation in degrees.","nl":"De rotatie in graden.","da":"Rotationen i grader.","it":"La rotazione in gradi.","ko":"도 단위의 회전각입니다.","pl":"Obrót w stopniach.","ru":"Вращение в градусах.","sv":"Rotationen i grader.","es":"La rotación en grados.","fr":"La rotation en degrés.","no":"Rotasjonen i grader.","ar":"الدوران بالدرجات.","de":"Die Rotation in Grad."},"insights":true,"chartType":"spline","decimals":1,"color":"#6236FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_rotation_changed","title":{"en":"The rotation changed","nl":"De rotatie is veranderd","da":"Rotationen ændrede sig","it":"La rotazione è cambiata","ko":"회전각이 변경되면","pl":"Zmieniła się rotacja","ru":"Вращение изменилось","sv":"Rotationen ändrades","es":"La rotación ha cambiado","fr":"La rotation a changé","no":"Rotasjonen ble endret","ar":"تغير الدوران","de":"Die Rotation hat sich geändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":200}]}]},"minCompatibility":"12.2.0"}')},8019:(e,t,a)=>{"use strict";var r=a(7354),i=a(1030),n=a(4006),s=a(2585),o=a(2492),l=a(5950),d=a(3845),u=a(1897),m=a(6740);e.exports=f,f.prototype.validate=function(e,t){var a;if("string"==typeof e){if(!(a=this.getSchema(e)))throw new Error('no schema with key or ref "'+e+'"')}else{var r=this._addSchema(e);a=r.validate||this._compile(r)}var i=a(t);return!0!==a.$async&&(this.errors=a.errors),i},f.prototype.compile=function(e,t){var a=this._addSchema(e,void 0,t);return a.validate||this._compile(a)},f.prototype.addSchema=function(e,t,a,r){if(Array.isArray(e)){for(var n=0;n{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Vacuum cleaner job mode","nl":"Stofzuigermodus","da":"Støvsugerens jobtilstand","it":"Modalità di lavoro dell\'aspirapolvere","ko":"청소 모드","pl":"Tryb pracy odkurzacza","ru":"Режим работы пылесоса","sv":"Dammsugarens arbetsläge","es":"Modo de trabajo del aspirador","fr":"Mode de fonctionnement de l\'aspirateur","no":"Jobbmodus for støvsuger","ar":"وضع مهمة المكنسة الكهربائية","de":"Arbeitsmodus des Staubsaugers"},"values":[{"id":"off","title":{"en":"Off","nl":"Uit","da":"Fra","it":"Off","ko":"꺼짐","pl":"Wył","ru":"Выкл.","sv":"Av","es":"Desactivado","fr":"Désactivé","no":"Av","ar":"إيقاف التشغيل","de":"Aus"}},{"id":"normal","title":{"en":"Normal","nl":"Normaal","da":"Normal","it":"Normale","ko":"보통","pl":"Normalny","ru":"Нормальный","sv":"Normal","es":"Normal","fr":"Normal","no":"Normal","ar":"عادي","de":"Normal"}},{"id":"high","title":{"en":"High","nl":"Hoog","da":"Høj","it":"Alto","ko":"강력","pl":"Wysoki","ru":"Интенсивный","sv":"Hög","es":"Alto","fr":"Élevé","no":"Høy","ar":"عالي","de":"Hoch"}},{"id":"turbo","title":{"en":"Turbo","nl":"Turbo","da":"Turbo","it":"Turbo","ko":"터보","pl":"Turbo","ru":"Турбо","sv":"Turbo","es":"Turbo","fr":"Turbo","no":"Turbo","ar":"تربو","de":"Turbo"}},{"id":"mop","title":{"en":"Mop","nl":"Dweilen","da":"Moppe","it":"Lavaggio","ko":"물걸레","pl":"Mop","ru":"Швабра","sv":"Mopp","es":"Fregado","fr":"Serpillère","no":"Mopping","ar":"مسح","de":"Mopp"}},{"id":"auto","title":{"en":"Auto","nl":"Automatisch","da":"Auto","it":"Auto","ko":"자동","pl":"Auto","ru":"Авто\\n","sv":"Auto","es":"Automático","fr":"Automatique","no":"Automatisk","ar":"تلقائي","de":"Automatisch"}}],"color":"#0091FF","getable":true,"setable":true,"uiComponent":"picker","$flow":{"triggers":[{"id":"vacuumcleaner_job_mode_changed","title":{"en":"The job mode changed to","nl":"De modus is veranderd naar","da":"Jobtilstanden er ændret til","it":"La modalità di lavoro è passata a","ko":"작동 모드가 다음으로 변경되면","no":"Jobbmodusen er endret til","pl":"Tryb pracy zmienił się na","ru":"Режим работы изменен на","sv":"Arbetsläget har ändrats till","es":"El modo de trabajo ha cambiado a","fr":"Le mode de fonctionnement est passé à","ar":"تم تغيير وضع المهمة إلى","de":"Der Auftragsmodus wurde geändert auf"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"vacuumcleaner_job_mode_is","title":{"en":"The job mode !{{is|is not}}","nl":"De modus !{{is|is niet}}","da":"Jobtilstanden !{{er|er ikke}}","it":"La modalità di lavoro !{{è|non è}}","ko":"작동 모드가 다음!{{이면|이 아니면}}","pl":"Tryb pracy !{{to|to nie}}","ru":"Режим работы !{{|не}}","sv":"Arbetsläget !{{är|är inte}}","es":"El modo de trabajo !{{está|no está}}","fr":"Le mode fonctionnement !{{est|n\'est pas}}","no":"Jobbmodusen !{{er|er ikke}}","ar":"وضع المهمة !{{هو|ليس}}","de":"Der Auftragsmodus !{{ist|ist nicht}}"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}],"actions":[{"id":"set_vacuumcleaner_job_mode","title":{"en":"Set the job mode to","nl":"Stel de modus in op","da":"Indstil jobtilstanden til","it":"Imposta la modalità di lavoro su","ko":"작동 모드를 다음으로 설정","pl":"Ustaw tryb pracy na","ru":"Установить режим работы на","sv":"Ställ in arbetsläget på","es":"Ajustar el modo de trabajo en","fr":"Définir le mode de fonctionnement sur","no":"Sett jobbmodusen til","ar":"ضبط وضع المهمة على","de":"Stelle den Auftragsmodus auf"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.2.0"}')},8062:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Mower state","nl":"Staat van de maaier","da":"Plæneklipperens tilstand","it":"Stato del tosaerba","ko":"잔디깎기 상태","pl":"Stan kosiarki","ru":"Состояние косилки","sv":"Gräsllipparens tillstånd","es":"Estado del cortacésped","fr":"État de la tondeuse","no":"Gressklipperstatus","ar":"حالة الجزازة","de":"Zustand des Rasenmähers"},"desc":{"en":"The current state of the lawnmower.","da":"Plæneklipperens nuværende tilstand.","it":"Lo stato attuale del tosaerba.","ko":"잔디 깎는 기계의 현재 상태입니다.","nl":"De huidige staat van de grasmaaier.","pl":"Aktualny stan kosiarki.","ru":"Текущее состояние газонокосилки.","sv":"Det aktuella tillståndet för gräsklipparen.","es":"El estado actual del cortacésped.","fr":"L\'état actuel de la tondeuse à gazon.","no":"Gressklipperens nåværende tilstand.","ar":"الحالة الحالية لجزازة العشب.","de":"Der aktuelle Zustand des Rasenmähers."},"values":[{"id":"mowing","title":{"en":"Mowing","da":"Klipper","it":"Falciatura in corso","ko":"작동 중","nl":"Maaien","pl":"W trakcie koszenia","ru":"Кошение","sv":"Klippning","es":"Segando","fr":"Tonte","no":"Klipper gress","ar":"القص","de":"Mähen"}},{"id":"docked","title":{"en":"Docked","da":"Forankret","it":"Alloggiato","ko":"거치됨","nl":"Gekoppeld","pl":"Zadokowana","ru":"На док-станции","sv":"Dockad","es":"En la base de carga","fr":"À la base","no":"I stasjonen","ar":"قيد الإرساء","de":"Angedockt"}},{"id":"paused","title":{"en":"Paused","da":"På pause","it":"In pausa","ko":"일시 정지","nl":"Gepauzeerd","pl":"Wstrzymana","ru":"На паузе","sv":"Pausad","es":"En pausa","fr":"En pause","no":"På pause","ar":"متوقف مؤقتًا","de":"Pausiert"}},{"id":"error","title":{"en":"Error","da":"Fejl","it":"Errore","ko":"에러","nl":"Fout","pl":"Błąd","ru":"Ошибка","sv":"Fel","es":"Error","fr":"Erreur","no":"Feil","ar":"خطأ","de":"Fehler"}}],"color":"#6DD400","getable":true,"setable":true,"uiComponent":"picker","$flow":{"triggers":[{"id":"mower_state_changed","title":{"en":"The lawnmower state changed","da":"Plæneklipperens tilstand ændrede sig","it":"Lo stato del tosaerba è cambiato","ko":"잔디깎기 상태가 변경되면","nl":"De staat van de grasmaaier is veranderd","pl":"Zmienił się stan kosiarki","ru":"Состояние газонокосилки изменилось","sv":"Läget för gräsklippare förändrades","es":"El estado del cortacésped ha cambiado","fr":"L\'état de la tondeuse à gazon a changé","no":"Gressklipperstatusen ble endret","ar":"تغيرت حالة جزازة العشب","de":"Der Zustand des Rasenmähers hat sich geändert"},"args":[{"name":"state","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"mower_state_is","title":{"en":"The lawnmower !{{is|is not}}","da":"Plæneklipperen !{{er|er ikke}}","it":"Il tosaerba !{{è|non è}}","ko":"잔디깎기 상태가 다음!{{이면|이 아니면}}","nl":"De grasmaaier !{{is|is niet}}","pl":"Kosiarka !{{jest|nie jest}}","ru":"Газонокосилка !{{|не}}","sv":"Gräsklipparen !{{är|är inte}}","es":"El cortacésped !{{está|no está}}","fr":"La tondeuse !{{est|n\'est pas}}","no":"Gressklipperen !{{er|er ikke}}","ar":"جزازة العشب !{{هي|ليست}}","de":"Der Rasenmäher !{{ist|ist nicht}}"},"args":[{"name":"state","type":"dropdown","values":"$values"}]}],"actions":[{"id":"mower_state_mow","title":{"en":"Start mowing","da":"Begynd at slå græs","it":"Inizia a falciare","ko":"잔디 깎기 시작","nl":"Beginnen met maaien","pl":"Rozpocznij koszenie","ru":"Начать косить","sv":"Börja klippa gräset","es":"Iniciar segado","fr":"Commencer à tondre","no":"Start gressklipping","ar":"بدء القص","de":"Mähen beginnen"}},{"id":"mower_state_pause","title":{"en":"Pause mowing","da":"Sæt plæneklipning på pause","it":"Sospendi la falciatura","ko":"잔디 깎기 일시중지","nl":"Maaien onderbreken","pl":"Wstrzymaj koszenie","ru":"Приостановить кошение","sv":"Pausa klippningen","es":"Pausar segado","fr":"Interrompre la tonte","no":"Sett gressklippingen på pause","ar":"إيقاف القص مؤقتًا","de":"Mähen unterbrechen"}},{"id":"mower_state_dock","title":{"en":"Return to dock","da":"Vend tilbage til base","it":"Torna all\'alloggiamento","ko":"도크로 복귀","nl":"Terug naar dok","pl":"Powrót do doku","ru":"Вернуться на док-станцию","sv":"Återgå till dockan","es":"Volver a la base de carga","fr":"Retour à la base","no":"Gå tilbake til stasjonen","ar":"العودة إلى المرساة","de":"Rückkehr zum Dock"}}]},"minCompatibility":"12.2.0"}')},8114:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Cold Alarm","nl":"Kou-alarm","da":"Kuldealarm","es":"Alarma de frío","fr":"Alarme de froid","it":"Allarme freddo","ko":"한파 알림","no":"Kuldealarm","pl":"Alarm zimna","ru":"Сигнал холода","sv":"Köldlarm","ar":"إنذار البرودة","de":"Kältealarm"},"titleShort":{"en":"Cold","nl":"Koud","da":"Kulde","es":"Frío","fr":"Froid","it":"Freddo","ko":"추움","no":"Kulde","pl":"Zimno","ru":"Холод","sv":"Kyla","ar":"برودة","de":"Kälte"},"desc":{"en":"True when the temperature is too low.","nl":"Wordt geactiveerd wanneer de temperatuur te laag is.","da":"Sandt, når temperaturen er for lav.","es":"Activado cuando la temperatura es muy baja.","fr":"Se déclenche lorsque la température est trop basse.","it":"Vero quando la temperatura è troppo bassa.","ko":"온도가 너무 낮으면 참입니다.","no":"Sann når temperaturen er for lav.","pl":"Prawda, gdy temperatura jest zbyt niska.","ru":"Значение «истина», когда температура слишком низкая.","sv":"Sant när temperaturen är för låg.","ar":"صحيح عندما تكون درجة الحرارة منخفضة جدًا.","de":"Wahr, wenn die Temperatur zu niedrig ist."},"insights":true,"insightsTitleTrue":{"en":"Cold alarm turned on","nl":"Waarschuwing bij kou geactiveerd","da":"Kuldealarm tændt","es":"Alarma de frío activada","fr":"Alarme de froid activée","it":"Allarme freddo acceso","ko":"한파 알림 켜짐","no":"Kuldealarm aktivert","pl":"Alarm zimna włączony","ru":"Сигнал холода включен","sv":"Köldlarm aktiverat","ar":"تم تشغيل إنذار البرودة","de":"Kältealarm eingeschaltet"},"insightsTitleFalse":{"en":"Cold alarm turned off","nl":"Waarschuwing bij kou gedeactiveerd","da":"Kuldealarm slukket","es":"Alarma de frío desactivada","fr":"Alarme de froid désactivée","it":"Allarme freddo spento","ko":"한파 알림 꺼짐","no":"Kuldealarm deaktivert","pl":"Alarm zimna wyłączony","ru":"Сигнал холода выключен","sv":"Köldlarm inaktiverat","ar":"تم إيقاف إنذار البرودة","de":"Kältealarm ausgeschaltet"},"color":"#0091FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_cold_true","highlight":true,"title":{"en":"The cold alarm turned on","nl":"De waarschuwing bij kou is geactiveerd","da":"Kuldealarm tændt","es":"Alarma de frío activada","fr":"L\'alarme de froid s\'est activée","it":"L\'allarme freddo si è acceso","ko":"한파 알림이 \'예\'이면","no":"Kuldealarmen ble aktivert","pl":"Włączył się alarm zimna","ru":"Сигнал холода включен","sv":"Köldlarmet aktiverat","ar":"تم تشغيل إنذار البرودة","de":"Der Kältealarm wurde eingeschaltet"}},{"id":"alarm_cold_false","title":{"en":"The cold alarm turned off","nl":"De waarschuwing bij kou is gedeactiveerd","da":"Kuldealarm slukket","es":"Alarma de frío desactivada","fr":"L\'alarme de froid s\'est désactivée","it":"L\'allarme freddo si è spento","ko":"한파 알림이 \'아니요\'이면","no":"Kuldealarmen ble deaktivert","pl":"Wyłączył się alarm zimna","ru":"Сигнал холода выключен","sv":"Köldlarmet inaktiverat","ar":"تم إيقاف إنذار البرودة","de":"Der Kältealarm ist ausgeschaltet"}}],"conditions":[{"id":"alarm_cold","title":{"en":"The cold alarm is !{{on|off}}","nl":"De waarschuwing bij kou is !{{geactiveerd|gedeactiveerd}}","da":"Kuldealarm er slået !{{til|fra}}","es":"La alarma de frío está !{{activada|desactivada}}","it":"L\'allarme freddo è !{{acceso|spento}}","ko":"한파 알림이 !{{\'예\'|\'아니요\'}}이면","no":"Kuldealarmen er !{{på|av}}","pl":"Alarm zimna jest !{{włączony|wyłączony}}","ru":"Сигнал холода !{{включен|выключен}}","sv":"Köldlarmet är !{{av|på}}","fr":"L\'alarme de froid est !{{activée|désactivée}}","ar":"إنذار البرودة !{{يعمل|لا يعمل}}","de":"Der Kältealarm ist !{{an|aus}}"}}]},"minCompatibility":"12.2.0"}')},8142:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Rain Alarm","ar":"إنذار المطر","da":"Regnalarm","de":"Regenalarm","es":"Alarma de lluvia","fr":"Alarme de pluie","it":"Allarme pioggia","ko":"강우 알람","nl":"Regenalarm","no":"Regnalarm","pl":"Alarm deszczu","ru":"Сигнализация дождя","sv":"Regnlarm"},"titleShort":{"en":"Rain","ar":"المطر","da":"Regn","de":"Regen","es":"Lluvia","fr":"Pluie","it":"Pioggia","ko":"비","nl":"Regen","no":"Regn","pl":"Deszcz","ru":"Дождь","sv":"Regn"},"desc":{"en":"True when rain is detected.","ar":"صحيح عند اكتشاف هطول الأمطار.","da":"Sandt, når der registreres regn.","de":"Wahr, wenn Regen erkannt wird.","es":"Verdadero cuando se detecta lluvia.","fr":"Se déclenche lorsque de la pluie est détectée.","it":"Vero quando viene rilevata la pioggia.","ko":"비가 감지되면 참입니다.","nl":"Waar wanneer regen wordt gedetecteerd.","no":"Sann når regn er påvist.","pl":"Prawda, gdy wykryto deszcz.","ru":"Истина, когда обнаружен дождь.","sv":"Sant när regn detekteras."},"insights":true,"insightsTitleTrue":{"en":"Rain alarm turned on","ar":"تم تشغيل إنذار المطر","da":"Regnalarm slået til","de":"Regenalarm ist eingeschaltet","es":"Alarma de lluvia desactivada","fr":"Alarme de pluie activée","it":"Allarme pioggia attivato","ko":"강우 알람 켜짐","nl":"Regenalarm ingeschakeld","no":"Regnalarm aktivert","pl":"Alarm deszczu włączony","ru":"Сигнализация дождя включена","sv":"Regnlarmet aktiverat"},"insightsTitleFalse":{"en":"Rain alarm turned off","ar":"تم إيقاف تشغيل إنذار المطر","da":"Regnalarm slået fra","de":"Regenalarm ausgeschaltet","es":"Alarma de lluvia desactivada","fr":"Alarme de pluie désactivée","it":"Allarme pioggia disattivato","ko":"강우 알람 꺼짐","nl":"Regenalarm uitgeschakeld","no":"Regnalarm deaktivert","pl":"Alarm deszczu wyłączony","ru":"Сигнализация дождя выключена","sv":"Regnlarmet avstängt"},"color":"#0091FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_rain_true","highlight":true,"title":{"en":"The rain alarm turned on","ar":"تم تشغيل إنذار المطر","da":"Regnalarmen blev slået til","de":"Der Regenalarm hat sich eingeschaltet","es":"La alarma de lluvia se ha activado","fr":"L\'alarme de pluie s\'est activée","it":"L\'allarme pioggia si è attivato","ko":"강우 알람이 켜져 있으면","nl":"Het regenalarm aan gaat","no":"Regnalarmen ble aktivert","pl":"Alarm deszczu włączył się","ru":"Сигнализация дождя включена","sv":"Regnlarmet aktiverat"}},{"id":"alarm_rain_false","title":{"en":"The rain alarm turned off","ar":"تم إيقاف تشغيل إنذار المطر","da":"Regnalarmen er slået fra","de":"Der Regenalarm wurde ausgeschaltet","es":"La alarma de lluvia se ha desactivado","fr":"L\'alarme de pluie s\'est désactivée","it":"L\'allarme pioggia si è disattivato","ko":"강우 알람이 꺼져 있으면","nl":"Het regenalarm uit gaat","no":"Regnalarmen ble deaktivert","pl":"Alarm deszczu wyłączył się","ru":"Сигнализация дождя выключена","sv":"Regnlarmet avstängt"}}],"conditions":[{"id":"alarm_rain","title":{"en":"The rain alarm is !{{on|off}}","ar":"إنذار المطر !{{يعمل|لا يعمل}}","da":"Regnalarmen er !{{tændt|slukket}}","de":"Der Regenalarm ist !{{an|aus}}","es":"La alarma de lluvia está !{{activada|desactivada}}","fr":"L\'alarme de pluie est !{{activée|désactivée}}","it":"L\'allarme pioggia è!{{attivo|non attivo}}","ko":"강우 알람이 !{{켜져|꺼져}} 있으면","nl":"Het regenalarm staat !{{aan|uit}}","no":"Regnalarmen er !{{på|av}}","pl":"Alarm deszczu jest!{{włączony|wyłączony}}","ru":"Сигнализация дождя !{{включена|выключена}}","sv":"Regnlarmet är !{{on|off}}"}}]},"minCompatibility":"12.11.0"}')},8148:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Car","da":"Bil","de":"Auto","es":"Coche","fr":"Voiture","it":"Automobile","ko":"자동차","nl":"Auto","no":"Bil","pl":"Samochód","ru":"Автомобиль","sv":"Bil","ar":"سيارة"},"description":{"en":"Use this device class for any kind of car.","da":"Brug denne enhedsklasse til enhver form for bil.","de":"Verwenden Sie diese Geräteklasse für jede Art von Auto.","es":"Utiliza esta clase de dispositivo para cualquier tipo de coche.","fr":"Cette classe d\'appareils peut être utilisée pour tout type de voiture.","it":"Utilizza questa classe di dispositivi per qualsiasi tipo di automobile.","ko":"이 디바이스는 모든 종류의 자동차에 사용합니다.","nl":"Gebruik deze apparaatklasse voor elk type auto.","no":"Bruk denne enhetsklassen for alle slags biler.","pl":"Ta klasa urządzeń jest przeznaczona do każdego rodzaju samochodu.","ru":"Используйте этот класс устройств для автомобилей любого типа.","sv":"Använd den här enhetsklassen för alla typer av bilar.","ar":"استخدم فئة الجهاز هذه لأي نوع من السيارات."},"minCompatibility":"12.0.0"}')},8184:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Radiator","da":"Radiator","de":"Heizkörper","es":"Radiador","fr":"Radiateur","it":"Radiatore","ko":"라디에이터","nl":"Radiator","no":"Radiator","pl":"Grzejnik","ru":"Обогреватель","sv":"Element","ar":"رادياتير"},"description":{"en":"Use this device class for radiators.","da":"Brug denne enhedsklasse til radiatorer.","de":"Verwenden Sie diese Geräteklasse für Heizkörper.","es":"Utiliza esta clase de dispositivo para radiadores.","fr":"Utiliser cette classe d\'appareils pour les radiateurs.","it":"Utilizza questa classe di dispositivi per i radiatori.","ko":"이 디바이스 클래스는 라디에이터에 사용합니다.","nl":"Gebruik deze apparaatklasse voor radiatoren.","no":"Bruk denne enhetsklassen for radiatorer.","pl":"Tej klasy urządzeń należy używać w przypadku grzejników.","ru":"Используйте этот класс устройств для обогревателей.","sv":"Använd den här enhetsklassen för element.","ar":"استخدم فئة الجهاز هذه للرادياتيرات."},"minCompatibility":"12.0.0"}')},8187:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Fan Mode","nl":"Ventilatormodus","da":"Ventilatortilstand","it":"Modalità ventola","ko":"팬 모드","pl":"Tryb wentylatora","ru":"Режим вентилятора","sv":"Fläktläge","es":"Modo ventilador","fr":"Mode de ventilation","no":"Viftemodus","ar":"وضع المروحة","de":"Lüftermodus"},"values":[{"id":"auto","title":{"en":"Auto","nl":"Automatisch","da":"Auto","it":"Auto","ko":"자동","pl":"Auto","ru":"Авто","sv":"Auto","es":"Automático","fr":"Automatique","no":"Automatisk","ar":"تلقائي","de":"Automatisch"}},{"id":"on","title":{"en":"On","nl":"Aan","da":"Til","it":"On","ko":"켜짐","no":"På","pl":"Wł","ru":"Включен","sv":"På","es":"Activado","fr":"Activé","ar":"تشغيل","de":"Ein"}},{"id":"off","title":{"en":"Off","nl":"Uit","da":"Fra","it":"Off","ko":"꺼짐","no":"Av","pl":"Wył","ru":"Выключен","sv":"Av","es":"Desactivado","fr":"Désactivé","ar":"إيقاف","de":"Aus"}}],"color":"#0091FF","getable":true,"setable":true,"uiComponent":"picker","$flow":{"triggers":[{"id":"fan_mode_changed","title":{"en":"The fan mode changed to","nl":"De ventilatormodus is veranderd naar","da":"Ventilatortilstanden er ændret til","it":"La modalità ventola è passata a","ko":"팬 모드가 다음으로 변경되면","no":"Viftemodusen er endret til","pl":"Tryb wentylatora zmienił się na","ru":"Режим вентилятора изменен на","sv":"Fläktläget har ändrats till","es":"El modo ventilador ha cambiado a","fr":"Le mode de ventilation est passé à","ar":"تم تغيير وضع المروحة إلى","de":"Der Lüftermodus wurde geändert auf"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"fan_mode_is","title":{"en":"The fan mode !{{is|is not}}","nl":"De ventilatormodus !{{is|is niet}}","da":"Ventilatortilstand !{{er|er ikke}}","it":"La modalità ventola !{{è|non è}}","ko":"팬 모드가 다음!{{이면|이 아니면}}","no":"Viftemodusen !{{er|er ikke}}","pl":"Tryb wentylatora !{{jest|nie jest}}","ru":"Режим вентилятора !{{|не}}","sv":"Fläktläge !{{är|är inte}}","es":"El modo ventilador !{{está|no está}}","fr":"Le mode de ventilation !{{est|n\'est pas}}","ar":"وضع المروحة !{{هو|ليس}}","de":"Der Lüftermodus !{{ist|ist nicht}}"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}],"actions":[{"id":"set_fan_mode","title":{"en":"Set the fan mode to","nl":"Stel de ventilatormodus in op","da":"Indstil ventilatortilstand til","it":"Imposta la modalità ventola su","ko":"팬 모드를 다음으로 설정","no":"Sett viftemodusen til","pl":"Ustaw tryb wentylatora na","ru":"Установить режим вентилятора на","sv":"Ställ in fläktläget på","es":"Ajustar el modo de ventilador en","fr":"Définir le mode de ventilation sur","ar":"ضبط وضع المروحة على","de":"Stelle den Lüftermodus auf"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.2.0"}')},8198:e=>{"use strict";e.exports=JSON.parse('{"$schema":"http://json-schema.org/draft-07/schema#","$id":"http://json-schema.org/draft-07/schema#","title":"Core schema meta-schema","definitions":{"schemaArray":{"type":"array","minItems":1,"items":{"$ref":"#"}},"nonNegativeInteger":{"type":"integer","minimum":0},"nonNegativeIntegerDefault0":{"allOf":[{"$ref":"#/definitions/nonNegativeInteger"},{"default":0}]},"simpleTypes":{"enum":["array","boolean","integer","null","number","object","string"]},"stringArray":{"type":"array","items":{"type":"string"},"uniqueItems":true,"default":[]}},"type":["object","boolean"],"properties":{"$id":{"type":"string","format":"uri-reference"},"$schema":{"type":"string","format":"uri"},"$ref":{"type":"string","format":"uri-reference"},"$comment":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"default":true,"readOnly":{"type":"boolean","default":false},"examples":{"type":"array","items":true},"multipleOf":{"type":"number","exclusiveMinimum":0},"maximum":{"type":"number"},"exclusiveMaximum":{"type":"number"},"minimum":{"type":"number"},"exclusiveMinimum":{"type":"number"},"maxLength":{"$ref":"#/definitions/nonNegativeInteger"},"minLength":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"pattern":{"type":"string","format":"regex"},"additionalItems":{"$ref":"#"},"items":{"anyOf":[{"$ref":"#"},{"$ref":"#/definitions/schemaArray"}],"default":true},"maxItems":{"$ref":"#/definitions/nonNegativeInteger"},"minItems":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"uniqueItems":{"type":"boolean","default":false},"contains":{"$ref":"#"},"maxProperties":{"$ref":"#/definitions/nonNegativeInteger"},"minProperties":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"required":{"$ref":"#/definitions/stringArray"},"additionalProperties":{"$ref":"#"},"definitions":{"type":"object","additionalProperties":{"$ref":"#"},"default":{}},"properties":{"type":"object","additionalProperties":{"$ref":"#"},"default":{}},"patternProperties":{"type":"object","additionalProperties":{"$ref":"#"},"propertyNames":{"format":"regex"},"default":{}},"dependencies":{"type":"object","additionalProperties":{"anyOf":[{"$ref":"#"},{"$ref":"#/definitions/stringArray"}]}},"propertyNames":{"$ref":"#"},"const":true,"enum":{"type":"array","items":true,"minItems":1,"uniqueItems":true},"type":{"anyOf":[{"$ref":"#/definitions/simpleTypes"},{"type":"array","items":{"$ref":"#/definitions/simpleTypes"},"minItems":1,"uniqueItems":true}]},"format":{"type":"string"},"contentMediaType":{"type":"string"},"contentEncoding":{"type":"string"},"if":{"$ref":"#"},"then":{"$ref":"#"},"else":{"$ref":"#"},"allOf":{"$ref":"#/definitions/schemaArray"},"anyOf":{"$ref":"#/definitions/schemaArray"},"oneOf":{"$ref":"#/definitions/schemaArray"},"not":{"$ref":"#"}},"default":true}')},8220:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Turned on","nl":"Aangezet","de":"Eingeschaltet","fr":"Activé","it":"Attivato","sv":"Aktiverad","no":"Aktivert","es":"Encendido","da":"Tændt","ru":"Включено","pl":"Włączone","ko":"전원","ar":"مشغل"},"color":"#9033FC","getable":true,"setable":true,"insights":true,"insightsTitleTrue":{"en":"Turned on","nl":"Aangezet","de":"Eingeschaltet","fr":"Activé","it":"Attivato","sv":"Aktiverad","no":"Aktivert","es":"Encendido","da":"Tændt","ru":"Включено","pl":"Włączone","ko":"전원 켜짐","ar":"مشغل"},"insightsTitleFalse":{"en":"Turned off","nl":"Uitgezet","de":"Ausgeschaltet","fr":"Désactivé","it":"Disattivato","sv":"Inaktiverad","no":"Deaktivert","es":"Apagado","da":"Slukket","ru":"Выключено","pl":"Wyłączone","ko":"전원 꺼짐","ar":"متوقف"},"options":{"setOnDim":{"type":"boolean","default":true,"desc":{"en":"When a device has both an `onoff` and `dim` capability, and Homey wants to turn the device on AND to a specific dim value, set this capability to `false` to prevent Homey from sending a set command.","de":"Wenn ein Gerät sowohl \'An/Aus\'- als auch \'Dimm\'-Fähigkeit hat und Homey das Gerät anschalten UND auf einen bestimmten Wert dimmen will, setze diese Fähigkeit auf \'false\', um Homey am Senden eines Setzen-Befehls zu hindern.","fr":"Quand un appareil peut `allumer/éteindre` et `estomper`, et que Homey veut allumer l\'appareil ET sur une valeur d\'estompage spécifique, définissez cette capacité sur `faux` pour empêcher Homey d\'envoyer une commande de définition.","it":"Quando un dispositivo può \'accendersi\' e \'attenuarsi\' e Homey desidera attivare il dispositivo E definire un valore specifico, imposta questa funzione su \'falso\' per impedire a Homey di inviare un comando di definizione.","sv":"När en enhet har både en `på/av`- och `dim`-funktionalitet och Homey vill slå på enheten OCH till ett specifikt dimvärde, sätt den här funktionen till `falsk` för att förhindra att Homey skickar ett inställningskommando.","no":"Når en enhet har både en `på/av`- og en `dempe`-funksjon og Homey vil slå på enheten OG sette dempingen til en spesifikk verdi, sett denne egenskapen til `usann` for å forhindre at Homey sender en innstillingskommando.","es":"Cuando un dispositivo tiene tanto la capacidad \'encender/apagar\' como la de \'intensidad de la luz\', y Homey quiere encender el dispositivo Y ajustar una intensidad concreta, configura esta capacidad como \'falso\' para evitar que Homey envíe un comando de configuración.","da":"Når en enhed har både en `tænd/sluk`- og en `dæmpe`-funktion, og Homey vil tænde for enheden OG indstille til en specifik dæmpeværdi, skal denne funktion indstilles til `falsk` for at forhindre, at Homey sender en indstillingskommando.","ru":"Когда устройство имеет функции `onoff` и `dim`, и Homey хочет включить устройство ТАКЖЕ с определенным значением яркости, установите для этой функции значение `false`, чтобы Homey не отправил команду на установку.","pl":"Jeśli urządzenie ma zdolności „wł.wył.” i „przygaś”, a urządzenie Homey chce włączyć produkt ORAZ ustawić konkretną wartość przygaszenia, ustaw tę zdolność jako „nieadekwatne” – w ten sposób Homey nie będzie wysyłać ustawionych poleceń.","ko":"제품에 \'전원\' 및 \'밝기\' 기능이 모두 있는데 Homey가 제품을 켜는 동시에 특정한 조절값으로 설정하길 원한다면 이 기능을 \'거짓\'으로 설정해 Homey가 설정 명령을 보내지 않도록 하세요.","ar":"عندما يحتوي الجهاز على كل من إمكانية \'تشغيل/إيقاف\' و\'تعتيم\'، ويريد Homey تشغيل الجهاز وضبط قيمة تعتيم محددة، اضبط هذه الإمكانية على \'false\' (خطأ) لمنع Homey من إرسال أمر ضبط.","nl":"Wanneer een apparaat een mogelijkheid voor zowel \'onoff\' als \'dim\' heeft, en Homey wil het apparaat aanzetten EN op een specifieke dimwaarde instellen, stel deze mogelijkheid dan in op \'false\' om te voorkomen dat Homey een vast commando stuurt."}},"greyout":{"type":"boolean","default":false,"desc":{"en":"When this capability is false, give a visual hint to greyout the device.","de":"wenn diese Fähigkeit \'false\' ist, gibt es einen visuellenen Hinweis, um das Gerät auszugrauen.","fr":"Quand cette capacité est fausse, donnez un indice visuel pour griser cet appareil.","it":"Quando questa funzione è impostata su falso, dai un indizio visivo per far apparire questo dispositivo in grigio.","sv":"När den här funktionen är falsk, ge en ett visuellt tips för att gråa ut enheten.","no":"Når denne egenskapen er usann, gi et visuelt tips for å vise enheten i grått.","es":"Cuando esta capacidad es falsa, da una indicación visual para poner en gris el dispositivo.","da":"Når denne funktion er falsk, skal du give et visuelt tip for at vise enheden i grå.","ru":"Когда функция ложна, установите визуальную подсказку, чтобы выделить устройство серым цветом.","pl":"Jeśli zdolność jest nieadekwatna, użyj wizualnej wskazówki, aby wyświetlić urządzenie na szaro.","ko":"이 기능이 거짓으로 설정되면 제품이 회색으로 표시되어 쉽게 식별할 수 있어요.","ar":"عندما تكون هذه الإمكانية خاطئة، أعط تلميحًا مرئيًا لتغميق الجهاز.","nl":"Als deze mogelijkheid \'false\' is, geef dan een visuele hint om het apparaat grijs te maken."}}},"uiComponent":"toggle","uiQuickAction":true,"$flow":{"triggers":[{"id":"onoff_true","highlight":true,"title":{"en":"Turned on","nl":"Aangezet ","de":"Angeschaltet","fr":"Activé","it":"Attivato","sv":"Aktiverad","no":"Aktivert","es":"Encendido","da":"Tændt","ru":"Включено","pl":"Włączone","ko":"켜지면","ar":"مشغل"}},{"id":"onoff_false","highlight":true,"title":{"en":"Turned off","nl":"Uitgezet","de":"Ausgeschaltet","fr":"Désactivé","it":"Disattivato","sv":"Inaktiverad","no":"Deaktivert","es":"Apagado","da":"Slukket","ru":"Выключено","pl":"Wyłączone","ko":"꺼지면","ar":"متوقف"}}],"conditions":[{"id":"on","title":{"en":"Is turned !{{on|off}}","nl":"Is !{{aan|uit}}","de":"Ist !{{an|aus}}","fr":"Est !{{activé|désactivé}}","it":"È !{{attivato|disattivato}}","sv":"Är !{{på|av}}","no":"Er slått !{{på|av}}","es":"Está !{{encendido|apagado}}","da":"Er !{{tændt|slukket}}","ru":"!{{Вкл.|Выкл.}}","pl":"Jest !{{włączone|wyłączone}}","ko":"!{{켜지면|꺼지면}}","ar":"!{{قيد التشغيل|متوقف عن التشغيل}}"}},{"id":"open","title":{"en":"Is !{{open|closed}}","nl":"Is !{{geopend|gesloten}}","de":"Ist !{{offen|geschlossen}}","fr":"Est !{{ouvert|fermé}}","it":"È !{{aperto|chiuso}}","sv":"Är !{{öppen|stängd}}","no":"Er !{{åpen|lukket}}","es":"Está !{{abierto|cerrado}}","da":"Er !{{åben|lukket}}","ru":"!{{Открыто|Закрыто}}","pl":"Jest !{{otwarte|zamknięte}}","ko":"!{{열리면|닫히면}}","ar":"!{{مفتوح|مغلق}}"},"$filter":{"class":"windowcoverings|curtain|blinds|sunshade"}}],"actions":[{"id":"on","highlight":true,"title":{"en":"Turn on","nl":"Zet aan","de":"Einschalten","fr":"Activer","it":"Attiva","sv":"Aktivera","no":"Slå på","es":"Encender","da":"Tændt","ru":"Включить","pl":"Włącz","ko":"켜기","ar":"مشغل"}},{"id":"off","highlight":true,"title":{"en":"Turn off","nl":"Zet uit","de":"Ausschalten","fr":"Désactiver","it":"Disattiva","sv":"Stäng av","no":"Slå av","es":"Apagar","da":"Slukket","ru":"Выключить","pl":"Wyłącz","ko":"끄기","ar":"متوقف"}},{"id":"toggle","title":{"en":"Toggle on or off","nl":"Schakel aan of uit","de":"Ein- oder ausschalten","fr":"Alterner activé ou désactivé","it":"Attiva o disattiva","sv":"Växla på och av","no":"Veksle mellom på og av","es":"Encender o apagar","da":"Tænd eller sluk","ru":"Переключатель включить/выключить","pl":"Przełącz na wł. lub wył.","ko":"켬/끔 상태 전환하기","ar":"تبديل التشغيل أو الإيقاف"}},{"id":"open","title":{"en":"Open the curtain or blind","nl":"Open de gordijnen","de":"Vorhang oder Rollladen öffnen","fr":"Ouvrir le rideau ou le store","it":"Apri la tenda o le persiane","sv":"Öppna gardin eller persienn","no":"Åpne gardinen eller persiennen","es":"Abrir cortina o persiana","da":"Åbn gardiner eller persienner","ru":"Открыть штору или жалюзи","pl":"Rozchyl zasłonę lub roletę","ko":"커튼 또는 블라인드 열기","ar":"فتح الستارة أو الستارة الدوارة"},"$filter":{"class":"windowcoverings|curtain|blinds|sunshade"}},{"id":"close","title":{"en":"Close the curtain or blind","nl":"Sluit de gordijnen","de":"Vorhang oder Rollladen schließen","fr":"Fermer le rideau ou le store","it":"Chiudi la tenda o le persiane","sv":"Stäng gardin eller persienn","no":"Trekk for gardinen eller persiennen","es":"Cerrar cortina o persiana","da":"Luk gardiner eller persienner","ru":"Закрыть штору или жалюзи","pl":"Zasuń zasłonę lub roletę","ko":"커튼 또는 블라인드 닫기","ar":"إغلاق الستارة أو الستارة الدوارة"},"$filter":{"class":"windowcoverings|curtain|blinds|sunshade"}}]}}')},8272:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Light mode","nl":"Lamp modus","de":"Lichtmodus","fr":"Mode lumière","it":"Modalità luce","sv":"Lampläge","no":"Lysmodus","es":"Modo de la luz","da":"Lystilstand","ru":"Режим света","pl":"Tryb oświetlenia","ko":"라이트 모드","ar":"وضع الضوء"},"desc":{"en":"Switch between color or temperature mode","nl":"Schakel tussen kleur of temperatuur modus","de":"Zwischen Farb- und Temperaturmodus wechseln","fr":"Passer entre les modes couleur ou température","it":"Passa tra le modalità colore o temperatura","sv":"Växla mellan färg- och temperatur-läge","no":"Veksle mellom farge- og temperaturmodus","es":"Cambia entre los modos color y temperatura","da":"Skift mellem farve- eller temperaturtilstand","ru":"Переключение между цветовым или температурным режимом","pl":"Przełączaj między trybem barwy lub temperatury","ko":"색상 또는 온도 모드 간에 전환","ar":"التبديل بين وضع اللون أو درجة الحرارة"},"values":[{"id":"color","title":{"en":"Color","nl":"Kleur","de":"Farbe","fr":"Couleur","it":"Colore","sv":"Färg","no":"Farge","es":"Color","da":"Farve","ru":"Цвет","pl":"Barwa","ko":"색상","ar":"اللون"}},{"id":"temperature","title":{"en":"Temperature","nl":"Temperatuur","de":"Temperatur","fr":"Température","it":"Temperatura","sv":"Temperatur","no":"Temperatur","es":"Temperatura","da":"Temperatur","ru":"Температура","pl":"Temperatura","ko":"온도","ar":"درجة الحرارة"}}],"color":"#F7B500","getable":true,"setable":true,"uiComponent":"color"}')},8287:(e,t,a)=>{"use strict";const r=a(7526),i=a(251),n="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;t.hp=l,t.IS=50;const s=2147483647;function o(e){if(e>s)throw new RangeError('The value "'+e+'" is invalid for option "size"');const t=new Uint8Array(e);return Object.setPrototypeOf(t,l.prototype),t}function l(e,t,a){if("number"==typeof e){if("string"==typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return m(e)}return d(e,t,a)}function d(e,t,a){if("string"==typeof e)return function(e,t){if("string"==typeof t&&""!==t||(t="utf8"),!l.isEncoding(t))throw new TypeError("Unknown encoding: "+t);const a=0|h(e,t);let r=o(a);const i=r.write(e,t);return i!==a&&(r=r.slice(0,i)),r}(e,t);if(ArrayBuffer.isView(e))return function(e){if(J(e,Uint8Array)){const t=new Uint8Array(e);return c(t.buffer,t.byteOffset,t.byteLength)}return p(e)}(e);if(null==e)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(J(e,ArrayBuffer)||e&&J(e.buffer,ArrayBuffer))return c(e,t,a);if("undefined"!=typeof SharedArrayBuffer&&(J(e,SharedArrayBuffer)||e&&J(e.buffer,SharedArrayBuffer)))return c(e,t,a);if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type number');const r=e.valueOf&&e.valueOf();if(null!=r&&r!==e)return l.from(r,t,a);const i=function(e){if(l.isBuffer(e)){const t=0|g(e.length),a=o(t);return 0===a.length||e.copy(a,0,0,t),a}return void 0!==e.length?"number"!=typeof e.length||Z(e.length)?o(0):p(e):"Buffer"===e.type&&Array.isArray(e.data)?p(e.data):void 0}(e);if(i)return i;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof e[Symbol.toPrimitive])return l.from(e[Symbol.toPrimitive]("string"),t,a);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function u(e){if("number"!=typeof e)throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function m(e){return u(e),o(e<0?0:0|g(e))}function p(e){const t=e.length<0?0:0|g(e.length),a=o(t);for(let r=0;r=s)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+s.toString(16)+" bytes");return 0|e}function h(e,t){if(l.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||J(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);const a=e.length,r=arguments.length>2&&!0===arguments[2];if(!r&&0===a)return 0;let i=!1;for(;;)switch(t){case"ascii":case"latin1":case"binary":return a;case"utf8":case"utf-8":return G(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*a;case"hex":return a>>>1;case"base64":return W(e).length;default:if(i)return r?-1:G(e).length;t=(""+t).toLowerCase(),i=!0}}function v(e,t,a){let r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===a||a>this.length)&&(a=this.length),a<=0)return"";if((a>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return O(this,t,a);case"utf8":case"utf-8":return A(this,t,a);case"ascii":return j(this,t,a);case"latin1":case"binary":return C(this,t,a);case"base64":return S(this,t,a);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return L(this,t,a);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}function f(e,t,a){const r=e[t];e[t]=e[a],e[a]=r}function k(e,t,a,r,i){if(0===e.length)return-1;if("string"==typeof a?(r=a,a=0):a>2147483647?a=2147483647:a<-2147483648&&(a=-2147483648),Z(a=+a)&&(a=i?0:e.length-1),a<0&&(a=e.length+a),a>=e.length){if(i)return-1;a=e.length-1}else if(a<0){if(!i)return-1;a=0}if("string"==typeof t&&(t=l.from(t,r)),l.isBuffer(t))return 0===t.length?-1:y(e,t,a,r,i);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,a):Uint8Array.prototype.lastIndexOf.call(e,t,a):y(e,[t],a,r,i);throw new TypeError("val must be string, number or Buffer")}function y(e,t,a,r,i){let n,s=1,o=e.length,l=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;s=2,o/=2,l/=2,a/=2}function d(e,t){return 1===s?e[t]:e.readUInt16BE(t*s)}if(i){let r=-1;for(n=a;no&&(a=o-l),n=a;n>=0;n--){let a=!0;for(let r=0;ri&&(r=i):r=i;const n=t.length;let s;for(r>n/2&&(r=n/2),s=0;s>8,i=a%256,n.push(i),n.push(r);return n}(t,e.length-a),e,a,r)}function S(e,t,a){return 0===t&&a===e.length?r.fromByteArray(e):r.fromByteArray(e.slice(t,a))}function A(e,t,a){a=Math.min(e.length,a);const r=[];let i=t;for(;i239?4:t>223?3:t>191?2:1;if(i+s<=a){let a,r,o,l;switch(s){case 1:t<128&&(n=t);break;case 2:a=e[i+1],128==(192&a)&&(l=(31&t)<<6|63&a,l>127&&(n=l));break;case 3:a=e[i+1],r=e[i+2],128==(192&a)&&128==(192&r)&&(l=(15&t)<<12|(63&a)<<6|63&r,l>2047&&(l<55296||l>57343)&&(n=l));break;case 4:a=e[i+1],r=e[i+2],o=e[i+3],128==(192&a)&&128==(192&r)&&128==(192&o)&&(l=(15&t)<<18|(63&a)<<12|(63&r)<<6|63&o,l>65535&&l<1114112&&(n=l))}}null===n?(n=65533,s=1):n>65535&&(n-=65536,r.push(n>>>10&1023|55296),n=56320|1023&n),r.push(n),i+=s}return function(e){const t=e.length;if(t<=E)return String.fromCharCode.apply(String,e);let a="",r=0;for(;rr.length?(l.isBuffer(t)||(t=l.from(t)),t.copy(r,i)):Uint8Array.prototype.set.call(r,t,i);else{if(!l.isBuffer(t))throw new TypeError('"list" argument must be an Array of Buffers');t.copy(r,i)}i+=t.length}return r},l.byteLength=h,l.prototype._isBuffer=!0,l.prototype.swap16=function(){const e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let t=0;ta&&(e+=" ... "),""},n&&(l.prototype[n]=l.prototype.inspect),l.prototype.compare=function(e,t,a,r,i){if(J(e,Uint8Array)&&(e=l.from(e,e.offset,e.byteLength)),!l.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===t&&(t=0),void 0===a&&(a=e?e.length:0),void 0===r&&(r=0),void 0===i&&(i=this.length),t<0||a>e.length||r<0||i>this.length)throw new RangeError("out of range index");if(r>=i&&t>=a)return 0;if(r>=i)return-1;if(t>=a)return 1;if(this===e)return 0;let n=(i>>>=0)-(r>>>=0),s=(a>>>=0)-(t>>>=0);const o=Math.min(n,s),d=this.slice(r,i),u=e.slice(t,a);for(let e=0;e>>=0,isFinite(a)?(a>>>=0,void 0===r&&(r="utf8")):(r=a,a=void 0)}const i=this.length-t;if((void 0===a||a>i)&&(a=i),e.length>0&&(a<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");let n=!1;for(;;)switch(r){case"hex":return b(this,e,t,a);case"utf8":case"utf-8":return w(this,e,t,a);case"ascii":case"latin1":case"binary":return z(this,e,t,a);case"base64":return P(this,e,t,a);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return _(this,e,t,a);default:if(n)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),n=!0}},l.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};const E=4096;function j(e,t,a){let r="";a=Math.min(e.length,a);for(let i=t;ir)&&(a=r);let i="";for(let r=t;ra)throw new RangeError("Trying to access beyond buffer length")}function D(e,t,a,r,i,n){if(!l.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||te.length)throw new RangeError("Index out of range")}function M(e,t,a,r,i){V(t,r,i,e,a,7);let n=Number(t&BigInt(4294967295));e[a++]=n,n>>=8,e[a++]=n,n>>=8,e[a++]=n,n>>=8,e[a++]=n;let s=Number(t>>BigInt(32)&BigInt(4294967295));return e[a++]=s,s>>=8,e[a++]=s,s>>=8,e[a++]=s,s>>=8,e[a++]=s,a}function x(e,t,a,r,i){V(t,r,i,e,a,7);let n=Number(t&BigInt(4294967295));e[a+7]=n,n>>=8,e[a+6]=n,n>>=8,e[a+5]=n,n>>=8,e[a+4]=n;let s=Number(t>>BigInt(32)&BigInt(4294967295));return e[a+3]=s,s>>=8,e[a+2]=s,s>>=8,e[a+1]=s,s>>=8,e[a]=s,a+8}function $(e,t,a,r,i,n){if(a+r>e.length)throw new RangeError("Index out of range");if(a<0)throw new RangeError("Index out of range")}function F(e,t,a,r,n){return t=+t,a>>>=0,n||$(e,0,a,4),i.write(e,t,a,r,23,4),a+4}function I(e,t,a,r,n){return t=+t,a>>>=0,n||$(e,0,a,8),i.write(e,t,a,r,52,8),a+8}l.prototype.slice=function(e,t){const a=this.length;(e=~~e)<0?(e+=a)<0&&(e=0):e>a&&(e=a),(t=void 0===t?a:~~t)<0?(t+=a)<0&&(t=0):t>a&&(t=a),t>>=0,t>>>=0,a||T(e,t,this.length);let r=this[e],i=1,n=0;for(;++n>>=0,t>>>=0,a||T(e,t,this.length);let r=this[e+--t],i=1;for(;t>0&&(i*=256);)r+=this[e+--t]*i;return r},l.prototype.readUint8=l.prototype.readUInt8=function(e,t){return e>>>=0,t||T(e,1,this.length),this[e]},l.prototype.readUint16LE=l.prototype.readUInt16LE=function(e,t){return e>>>=0,t||T(e,2,this.length),this[e]|this[e+1]<<8},l.prototype.readUint16BE=l.prototype.readUInt16BE=function(e,t){return e>>>=0,t||T(e,2,this.length),this[e]<<8|this[e+1]},l.prototype.readUint32LE=l.prototype.readUInt32LE=function(e,t){return e>>>=0,t||T(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},l.prototype.readUint32BE=l.prototype.readUInt32BE=function(e,t){return e>>>=0,t||T(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},l.prototype.readBigUInt64LE=Y((function(e){R(e>>>=0,"offset");const t=this[e],a=this[e+7];void 0!==t&&void 0!==a||U(e,this.length-8);const r=t+256*this[++e]+65536*this[++e]+this[++e]*2**24,i=this[++e]+256*this[++e]+65536*this[++e]+a*2**24;return BigInt(r)+(BigInt(i)<>>=0,"offset");const t=this[e],a=this[e+7];void 0!==t&&void 0!==a||U(e,this.length-8);const r=t*2**24+65536*this[++e]+256*this[++e]+this[++e],i=this[++e]*2**24+65536*this[++e]+256*this[++e]+a;return(BigInt(r)<>>=0,t>>>=0,a||T(e,t,this.length);let r=this[e],i=1,n=0;for(;++n=i&&(r-=Math.pow(2,8*t)),r},l.prototype.readIntBE=function(e,t,a){e>>>=0,t>>>=0,a||T(e,t,this.length);let r=t,i=1,n=this[e+--r];for(;r>0&&(i*=256);)n+=this[e+--r]*i;return i*=128,n>=i&&(n-=Math.pow(2,8*t)),n},l.prototype.readInt8=function(e,t){return e>>>=0,t||T(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},l.prototype.readInt16LE=function(e,t){e>>>=0,t||T(e,2,this.length);const a=this[e]|this[e+1]<<8;return 32768&a?4294901760|a:a},l.prototype.readInt16BE=function(e,t){e>>>=0,t||T(e,2,this.length);const a=this[e+1]|this[e]<<8;return 32768&a?4294901760|a:a},l.prototype.readInt32LE=function(e,t){return e>>>=0,t||T(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},l.prototype.readInt32BE=function(e,t){return e>>>=0,t||T(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},l.prototype.readBigInt64LE=Y((function(e){R(e>>>=0,"offset");const t=this[e],a=this[e+7];void 0!==t&&void 0!==a||U(e,this.length-8);const r=this[e+4]+256*this[e+5]+65536*this[e+6]+(a<<24);return(BigInt(r)<>>=0,"offset");const t=this[e],a=this[e+7];void 0!==t&&void 0!==a||U(e,this.length-8);const r=(t<<24)+65536*this[++e]+256*this[++e]+this[++e];return(BigInt(r)<>>=0,t||T(e,4,this.length),i.read(this,e,!0,23,4)},l.prototype.readFloatBE=function(e,t){return e>>>=0,t||T(e,4,this.length),i.read(this,e,!1,23,4)},l.prototype.readDoubleLE=function(e,t){return e>>>=0,t||T(e,8,this.length),i.read(this,e,!0,52,8)},l.prototype.readDoubleBE=function(e,t){return e>>>=0,t||T(e,8,this.length),i.read(this,e,!1,52,8)},l.prototype.writeUintLE=l.prototype.writeUIntLE=function(e,t,a,r){e=+e,t>>>=0,a>>>=0,r||D(this,e,t,a,Math.pow(2,8*a)-1,0);let i=1,n=0;for(this[t]=255&e;++n>>=0,a>>>=0,r||D(this,e,t,a,Math.pow(2,8*a)-1,0);let i=a-1,n=1;for(this[t+i]=255&e;--i>=0&&(n*=256);)this[t+i]=e/n&255;return t+a},l.prototype.writeUint8=l.prototype.writeUInt8=function(e,t,a){return e=+e,t>>>=0,a||D(this,e,t,1,255,0),this[t]=255&e,t+1},l.prototype.writeUint16LE=l.prototype.writeUInt16LE=function(e,t,a){return e=+e,t>>>=0,a||D(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},l.prototype.writeUint16BE=l.prototype.writeUInt16BE=function(e,t,a){return e=+e,t>>>=0,a||D(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},l.prototype.writeUint32LE=l.prototype.writeUInt32LE=function(e,t,a){return e=+e,t>>>=0,a||D(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},l.prototype.writeUint32BE=l.prototype.writeUInt32BE=function(e,t,a){return e=+e,t>>>=0,a||D(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},l.prototype.writeBigUInt64LE=Y((function(e,t=0){return M(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))})),l.prototype.writeBigUInt64BE=Y((function(e,t=0){return x(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))})),l.prototype.writeIntLE=function(e,t,a,r){if(e=+e,t>>>=0,!r){const r=Math.pow(2,8*a-1);D(this,e,t,a,r-1,-r)}let i=0,n=1,s=0;for(this[t]=255&e;++i>>=0,!r){const r=Math.pow(2,8*a-1);D(this,e,t,a,r-1,-r)}let i=a-1,n=1,s=0;for(this[t+i]=255&e;--i>=0&&(n*=256);)e<0&&0===s&&0!==this[t+i+1]&&(s=1),this[t+i]=(e/n|0)-s&255;return t+a},l.prototype.writeInt8=function(e,t,a){return e=+e,t>>>=0,a||D(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},l.prototype.writeInt16LE=function(e,t,a){return e=+e,t>>>=0,a||D(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},l.prototype.writeInt16BE=function(e,t,a){return e=+e,t>>>=0,a||D(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},l.prototype.writeInt32LE=function(e,t,a){return e=+e,t>>>=0,a||D(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},l.prototype.writeInt32BE=function(e,t,a){return e=+e,t>>>=0,a||D(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},l.prototype.writeBigInt64LE=Y((function(e,t=0){return M(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),l.prototype.writeBigInt64BE=Y((function(e,t=0){return x(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),l.prototype.writeFloatLE=function(e,t,a){return F(this,e,t,!0,a)},l.prototype.writeFloatBE=function(e,t,a){return F(this,e,t,!1,a)},l.prototype.writeDoubleLE=function(e,t,a){return I(this,e,t,!0,a)},l.prototype.writeDoubleBE=function(e,t,a){return I(this,e,t,!1,a)},l.prototype.copy=function(e,t,a,r){if(!l.isBuffer(e))throw new TypeError("argument should be a Buffer");if(a||(a=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r=this.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t>>=0,a=void 0===a?this.length:a>>>0,e||(e=0),"number"==typeof e)for(i=t;i=r+4;a-=3)t=`_${e.slice(a-3,a)}${t}`;return`${e.slice(0,a)}${t}`}function V(e,t,a,r,i,n){if(e>a||e3?0===t||t===BigInt(0)?`>= 0${r} and < 2${r} ** ${8*(n+1)}${r}`:`>= -(2${r} ** ${8*(n+1)-1}${r}) and < 2 ** ${8*(n+1)-1}${r}`:`>= ${t}${r} and <= ${a}${r}`,new N.ERR_OUT_OF_RANGE("value",i,e)}!function(e,t,a){R(t,"offset"),void 0!==e[t]&&void 0!==e[t+a]||U(t,e.length-(a+1))}(r,i,n)}function R(e,t){if("number"!=typeof e)throw new N.ERR_INVALID_ARG_TYPE(t,"number",e)}function U(e,t,a){if(Math.floor(e)!==e)throw R(e,a),new N.ERR_OUT_OF_RANGE(a||"offset","an integer",e);if(t<0)throw new N.ERR_BUFFER_OUT_OF_BOUNDS;throw new N.ERR_OUT_OF_RANGE(a||"offset",`>= ${a?1:0} and <= ${t}`,e)}B("ERR_BUFFER_OUT_OF_BOUNDS",(function(e){return e?`${e} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"}),RangeError),B("ERR_INVALID_ARG_TYPE",(function(e,t){return`The "${e}" argument must be of type number. Received type ${typeof t}`}),TypeError),B("ERR_OUT_OF_RANGE",(function(e,t,a){let r=`The value of "${e}" is out of range.`,i=a;return Number.isInteger(a)&&Math.abs(a)>2**32?i=H(String(a)):"bigint"==typeof a&&(i=String(a),(a>BigInt(2)**BigInt(32)||a<-(BigInt(2)**BigInt(32)))&&(i=H(i)),i+="n"),r+=` It must be ${t}. Received ${i}`,r}),RangeError);const q=/[^+/0-9A-Za-z-_]/g;function G(e,t){let a;t=t||1/0;const r=e.length;let i=null;const n=[];for(let s=0;s55295&&a<57344){if(!i){if(a>56319){(t-=3)>-1&&n.push(239,191,189);continue}if(s+1===r){(t-=3)>-1&&n.push(239,191,189);continue}i=a;continue}if(a<56320){(t-=3)>-1&&n.push(239,191,189),i=a;continue}a=65536+(i-55296<<10|a-56320)}else i&&(t-=3)>-1&&n.push(239,191,189);if(i=null,a<128){if((t-=1)<0)break;n.push(a)}else if(a<2048){if((t-=2)<0)break;n.push(a>>6|192,63&a|128)}else if(a<65536){if((t-=3)<0)break;n.push(a>>12|224,a>>6&63|128,63&a|128)}else{if(!(a<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;n.push(a>>18|240,a>>12&63|128,a>>6&63|128,63&a|128)}}return n}function W(e){return r.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(q,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function K(e,t,a,r){let i;for(i=0;i=t.length||i>=e.length);++i)t[i+a]=e[i];return i}function J(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function Z(e){return e!=e}const Q=function(){const e="0123456789abcdef",t=new Array(256);for(let a=0;a<16;++a){const r=16*a;for(let i=0;i<16;++i)t[r+i]=e[a]+e[i]}return t}();function Y(e){return"undefined"==typeof BigInt?X:e}function X(){throw new Error("BigInt not supported")}},8293:e=>{"use strict";e.exports=JSON.parse('["airconditioning","airfryer","airpurifier","airtreatment","amplifier","battery","bicycle","blinds","boiler","bridge","button","camera","car","coffeemachine","cooktop","curtain","dehumidifier","diffuser","dishwasher","doorbell","dryer","evcharger","fan","faucet","fireplace","freezer","fridge_and_freezer","fridge","fryer","gameconsole","garagedoor","grill","heater","heatpump","homealarm","hood","humidifier","kettle","lawnmower","light","lock","mediaplayer","microwave","mop","multicooker","networkrouter","other","oven_and_microwave","oven","petfeeder","radiator","remote","scooter","sensor","service","settopbox","shutterblinds","siren","smokealarm","socket","solarpanel","speaker","sprinkler","sunshade","thermostat","tv","vacuumcleaner","vehicle","washer_and_dryer","washer","waterheater","waterpurifier","watervalve","windowcoverings","pump"]')},8317:e=>{"use strict";e.exports=function(e,t,a){var r,i=" ",n=e.level,s=e.dataLevel,o=e.schema[t],l=e.schemaPath+e.util.getProperty(t),d=e.errSchemaPath+"/"+t,u=!e.opts.allErrors,m="data"+(s||""),p=e.opts.$data&&o&&o.$data;p?(i+=" var schema"+n+" = "+e.util.getData(o.$data,s,e.dataPathArr)+"; ",r="schema"+n):r=o,i+="if ( ",p&&(i+=" ("+r+" !== undefined && typeof "+r+" != 'string') || "),i+=" !"+(p?"(new RegExp("+r+"))":e.usePattern(o))+".test("+m+") ) { ";var c=c||[];c.push(i),i="",!1!==e.createErrors?(i+=" { keyword: 'pattern' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(d)+" , params: { pattern: ",i+=p?""+r:""+e.util.toQuotedString(o),i+=" } ",!1!==e.opts.messages&&(i+=" , message: 'should match pattern \"",i+=p?"' + "+r+" + '":""+e.util.escapeQuotes(o),i+="\"' "),e.opts.verbose&&(i+=" , schema: ",i+=p?"validate.schema"+l:""+e.util.toQuotedString(o),i+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),i+=" } "):i+=" {} ";var g=i;return i=c.pop(),!e.compositeRule&&u?e.async?i+=" throw new ValidationError(["+g+"]); ":i+=" validate.errors = ["+g+"]; return false; ":i+=" var err = "+g+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",i+="} ",u&&(i+=" else { "),i}},8324:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Operational state","nl":"Operationele staat","da":"Driftstilstand","it":"Stato operativo","ko":"작동 상태","pl":"Stan działania","ru":"Рабочее состояние","sv":"Drifttillstånd","es":"Estado operativo","fr":"État opérationnel","no":"Driftstilstand","ar":"حالة التشغيل","de":"Betriebszustand"},"desc":{"en":"The operational state of the appliance.","nl":"De operationele staat van het apparaat.","da":"Apparatets driftstilstand.","it":"Lo stato operativo dell\'apparecchio.","ko":"가전의 작동 상태입니다.","pl":"Stan działania urządzenia.","ru":"Рабочее состояние прибора.","sv":"Apparatens drifttillstånd.","es":"El estado operativo del dispositivo.","fr":"L\'état de fonctionnement de l\'appareil.","no":"Apparatets driftstilstand.","ar":"حالة التشغيل للجهاز.","de":"Der Betriebszustand des Geräts."},"values":[{"id":"stopped","title":{"en":"Stopped","nl":"Gestopt","da":"Stoppet","it":"Interrotto","ko":"정지","pl":"Urządzenie zatrzymane","ru":"Остановлено","sv":"Stoppad","es":"Detenido","fr":"Arrêté","no":"Stoppet","ar":"متوقف","de":"Angehalten"}},{"id":"running","title":{"en":"Running","nl":"Bezig","da":"Kører","it":"In esecuzione","ko":"동작 중","pl":"Urządzenie pracuje","ru":"Работает","sv":"Körs","es":"En uso","fr":"En cours d\'exécution","no":"I gang","ar":"قيد التشغيل","de":"Läuft"}},{"id":"paused","title":{"en":"Paused","nl":"Gepauzeerd","da":"På pause","it":"In pausa","ko":"일시정지","pl":"Urządzenie wstrzymane","ru":"На паузе","sv":"Pausad","es":"En pausa","fr":"En pause","no":"På pause","ar":"متوقف مؤقتًا","de":"Pausiert"}},{"id":"error","title":{"en":"Error","nl":"Fout","da":"Fejl","it":"Errore","ko":"에러","pl":"Błąd","ru":"Ошибка","sv":"Fel","es":"Error","fr":"Erreur","no":"Feil","ar":"خطأ","de":"Fehler"}}],"color":"#6DD400","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"operational_state_changed","highlight":true,"title":{"en":"The operational state changed to","nl":"De operationele staat is veranderd naar","da":"Driftstilstanden blev ændret til","it":"Lo stato operativo è passato a","ko":"작동 상태가 다음으로 변경되면","pl":"Stan działania zmienił się na","ru":"Рабочее состояние изменилось на","sv":"Drifttillståndet ändrades till","es":"El estado operativo ha cambiado a","fr":"L\'état opérationnel est passé à","no":"Driftstilstanden ble endret til","ar":"تغيرت حالة التشغيل إلى","de":"Der Betriebszustand hat sich geändert in"},"args":[{"name":"state","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"operational_state_is","title":{"en":"The operational state !{{is|is not}}","nl":"De operationele staat !{{is|is niet}}","da":"Driftstilstanden !{{er|er ikke}}","it":"Lo stato operativo !{{è|non è}}","ko":"작동 상태가 다음!{{이면|이 아니면}}","pl":"Stan działania !{{jest|nie jest}}","ru":"Рабочее состояние !{{|не}}","sv":"Drifttillståndet !{{är|är inte}}","es":"El estado operativo !{{está|no está}}","fr":"L\'état opérationnel !{{est|n\'est pas}}","no":"Driftstilstanden !{{er|er ikke}}","ar":"حالة التشغيل !{{هي|ليست}}","de":"Der Betriebszustand !{{ist|ist nicht}}"},"args":[{"name":"state","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.2.0"}')},8364:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Open Alarm","ar":"إنذار الفتح","da":"Åben alarm","de":"Alarm „Geöffnet“","es":"Alarma de apertura","fr":"Alarme de détection d\'ouverture","it":"Allarme apertura","ko":"열림 알람","nl":"Open-alarm","no":"Åpen-alarm","pl":"Alarm otwarcia","ru":"Сигнализация открытия","sv":"Öppet larm"},"titleShort":{"en":"Open","ar":"فتح","da":"Åben","de":"Öffnen","es":"Apertura","fr":"Ouverture","it":"Apertura","ko":"열림","nl":"Open","no":"Åpen","pl":"Otwarcie","ru":"Открытие","sv":"Öppen"},"desc":{"en":"True when a door/window/etc... is open.","ar":"صحيح عند فتح الباب/النافذة/... إلخ....","da":"Sandt, når en dør/et vindue/etc... er åben.","de":"Wahr, wenn eine Tür/ein Fenster/etc… offen ist.","es":"Verdadero cuando una puerta/ventana/etc. está abierta.","fr":"Se déclenche lorsque une porte/fenêtre/etc. est ouverte.","it":"Vero quando una porta/finestra ecc. è aperta.","ko":"문/창문 등이 열려 있을 때 참입니다.","nl":"Waar als een deur/raam/etc... open is.","no":"Sann når en dør, et vindu o.l. er åpen(t).","pl":"Prawda, gdy drzwi/okno/etc... są otwarte.","ru":"Истина, когда дверь/окно и т. д. открыты.","sv":"Sant när en dörr/ett fönster/mm... är öppen."},"insights":true,"insightsTitleTrue":{"en":"Open alarm turned on","ar":"تم تشغيل إنذار الفتح","da":"Åben alarm slået til","de":"Alarm „Geöffnet“ ist eingeschaltet","es":"Alarma de apertura activada","fr":"Alarme de détection d\'ouverture activée","it":"Allarme apertura attivato","ko":"열림 알람 켜짐","nl":"Open-alarm ingeschakeld","no":"Åpen-alarm aktivert","pl":"Alarm otwarcia włączony","ru":"Сигнализация открытия включена","sv":"Öppet larm aktiverat"},"insightsTitleFalse":{"en":"Open alarm turned off","ar":"تم إيقاف تشغيل إنذار الفتح","da":"Åben alarm slået fra","de":"Alarm „Geöffnet“ ausgeschaltet","es":"Alarma de apertura desactivada","fr":"Alarme de détection d\'ouverture désactivée","it":"Allarme apertura disattivato","ko":"열림 알람 꺼짐","nl":"Open-alarm uitgeschakeld","no":"Åpen-alarm deaktivert","pl":"Alarm otwarcia wyłączony","ru":"Сигнализация открытия выключена","sv":"Öppet larm avstängt"},"color":"#0091FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_open_true","highlight":true,"title":{"en":"The open alarm turned on","ar":"تم تشغيل إنذار الفتح","da":"Den åbne alarm er slået til","de":"Der Alarm „Geöffnet“ hat sich eingeschaltet","es":"La alarma de apertura se ha activado","fr":"L\'alarme de détection d\'ouverture s\'est activée","it":"L\'allarme apertura si è attivato","ko":"열림 알람이 켜져 있으면","nl":"Het open-alarm aan gaat","no":"Åpen-alarmen ble aktivert","pl":"Alarm otwarcia włączył się","ru":"Сигнализация открытия включена","sv":"Det öppna larmet aktiverat"}},{"id":"alarm_open_false","title":{"en":"The open alarm turned off","ar":"تم إيقاف تشغيل إنذار الفتح","da":"Den åbne alarm er slået fra","de":"Der Alarm „Geöffnet“ wurde ausgeschaltet","es":"La alarma de apertura se ha desactivado","fr":"L\'alarme de détection d\'ouverture s\'est désactivée","it":"L\'allarme apertura si è disattivato","ko":"열림 알람이 꺼져 있으면","nl":"Het open-alarm uit gaat","no":"Åpen-alarmen ble deaktivert","pl":"Alarm otwarcia wyłączył się","ru":"Сигнализация открытия выключена","sv":"Det öppna larmet avstängt"}}],"conditions":[{"id":"alarm_open","title":{"en":"The open alarm is !{{on|off}}","ar":"إنذار الفتح !{{يعمل|لا يعمل}}","da":"Den åbne alarm er !{{tændt|slukket}}","de":"Der Alarm „Geöffnet“ ist !{{an|aus}}","es":"La alarma de apertura está !{{activada|desactivada}}","fr":"L\'alarme de détection d\'ouverture est !{{activée|désactivée}}","it":"L\'allarme apertura è !{{attivo|non attivo}}","ko":"열림 알람이 !{{켜져|꺼져}} 있으면","nl":"Het open-alarm staat !{{aan|uit}}","no":"Åpen-alarmen er !{{på|av}}","pl":"Alarm otwarcia jest !{{włączony|wyłączony}}","ru":"Сигнализация открытия !{{включена|выключена}}","sv":"Det öppna larmet är !{{på|av}}"}}]},"minCompatibility":"12.11.0"}')},8390:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Tank Empty Alarm","nl":"Waarschuwing voor lege tank","da":"Alarm for tom tank","it":"Allarme serbatoio vuoto","ko":"물통 물 부족 감지","no":"Alarm om tom tank","pl":"Alarm pustego zbiornika","ru":"Сигнал пустого резервуара","sv":"Larm om tom tank","es":"Alarma de depósito vacío","fr":"Alarme de réservoir vide","ar":"إنذار الخزان الفارغ","de":"Alarm Tank leer"},"titleShort":{"en":"Tank Empty","nl":"Lege tank","da":"Tom tank","it":"Serbatoio vuoto","ko":"물통 비어 있음","no":"Tom tank","pl":"Pusty zbiornik","ru":"Резервуар пустой","sv":"Tom tank","es":"Depósito vacío","fr":"Réservoir vide","ar":"الخزان فارغ","de":"Tank leer"},"desc":{"en":"True when the tank is empty.","nl":"Wordt geactiveerd wanneer de tank leeg is.","da":"Sandt, når tanken er tom.","it":"Vero quando il serbatoio è vuoto.","ko":"탱크가 비어 있으면 참입니다.","no":"Sann når tanken er tom.","pl":"Prawda, gdy zbiornik jest pusty.","ru":"Значение «истина», когда резервуар пустой.","sv":"Sant när tanken är tom.","es":"Activado cuando el depósito está vacío.","fr":"Se déclenche lorsque le réservoir est vide.","ar":"صحيح عندما يكون الخزان فارغًا.","de":"Wahr, wenn der Tank leer ist."},"insights":true,"insightsTitleTrue":{"en":"Tank was empty","nl":"Tank was leeg","da":"Tanken var tom","it":"Il serbatoio era vuoto","ko":"물 보충 필요","no":"Tanken var tom","pl":"Zbiornik był pusty","ru":"Резервуар был пуст","sv":"Tanken var tom","es":"El depósito estaba vacío","fr":"Le réservoir était vide","ar":"كان الخزان فارغًا","de":"Tank war leer"},"insightsTitleFalse":{"en":"Tank was not empty","nl":"Tank was niet leeg","da":"Tanken var ikke tom","it":"Il serbatoio non era vuoto","ko":"물 보충됨","no":"Tanken var ikke tom","pl":"Zbiornik nie był pusty","ru":"Резервуар не был пуст","sv":"Tanken var inte tom","es":"El depósito no estaba vacío","fr":"Le réservoir n\'était pas vide","ar":"لم يكن الخزان فارغًا","de":"Tank war nicht leer"},"color":"#0091FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_tank_empty_true","highlight":true,"title":{"en":"The tank is empty","nl":"De tank is leeg","da":"Tanken er tom","it":"Il serbatoio è vuoto","ko":"물 보충이 필요하면","no":"Tanken er tom","pl":"Zbiornik jest pusty","ru":"Резервуар пуст","sv":"Tanken är tom","es":"El depósito está vacío","fr":"Le réservoir est vide","ar":"الخزان فارغ","de":"Der Tank ist leer"}},{"id":"alarm_tank_empty_false","title":{"en":"The tank is no longer empty","nl":"De tank is niet meer leeg","da":"Tanken er ikke længere tom","it":"Il serbatoio non è più vuoto","ko":"물이 보충되어 있으면","no":"Tanken er ikke lenger tom","pl":"Zbiornik nie jest już pusty","ru":"Резервуар больше не пуст","sv":"Tanken är inte längre tom","es":"El depósito ya no está vacío","fr":"Le réservoir n\'est plus vide","ar":"لم يعد الخزان فارغًا","de":"Der Tank ist nicht mehr leer"}}],"conditions":[{"id":"alarm_tank_empty","title":{"en":"The tank is !{{empty|not empty}}","nl":"De tank is !{{leeg|niet leeg}}","da":"Tanken er !{{tom|ikke tom}}","it":"Il serbatoio !{{è vuoto|non è vuoto}}","ko":"!{{물 보충이 필요하면|물이 보충되어 있으면}}","no":"Tanken er !{{tom|ikke tom}}","pl":"Zbiornik !{{jest pusty|nie jest pusty}}","ru":"Резервуар !{{пуст|не пуст}}","sv":"Tanken är !{{tom|inte tom}}","es":"El depósito !{{está vacío|no está vacío}}","fr":"Le réservoir !{{est rempli|n\'est pas rempli}}","ar":"الخزان !{{فارغ|ليس فارغًا}}","de":"Der Tank ist !{{leer|nicht leer}}"}}]},"minCompatibility":"12.2.0"}')},8395:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Window coverings tilt down","nl":"Raambekleding kantelt omlaag","de":"Jalousien nach unten gekippt","fr":"Stores baissés","it":"Tapparelle abbassate","sv":"Fönsterskydd nedfällda","no":"Vindusbeskyttelser lukket","es":"Cobertores de ventanas inclinados hacia abajo","da":"Vinduesdække nedad","ru":"Наклонить вниз оконные навесы","pl":"Zasunięcie osłon okiennych","ko":"아래로 틸트","ar":"إمالة أغطية النوافذ للأسفل"},"type":"boolean","color":"#F5B207","getable":false,"setable":true,"uiComponent":"button","$flow":{"actions":[{"id":"tilt_down","title":{"en":"Tilt down","da":"Vip nedad","it":"Inclina verso il basso","ko":"창문 가림 기울기 아래로 틸팅","nl":"Omlaag kantelen","pl":"Odchylenie w dół","ru":"Наклон вниз","sv":"Luta ner","es":"Inclinar hacia abajo","fr":"Inclinaison vers le bas","no":"Vipp ned","ar":"إمالة للأسفل","de":"Nach unten neigen"}}]}}')},8434:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Power level","ar":"مستوى الطاقة","da":"Strømniveau","de":"Leistungsstufe","es":"Nivel de potencia","fr":"Niveau de puissance","it":"Livello di potenza","ko":"전력 수준","nl":"Vermogensniveau","no":"Effektnivå","pl":"Poziom mocy","ru":"Уровень мощности","sv":"Effektnivå"},"chartType":"stepLine","min":0,"max":1,"decimals":2,"units":{"en":"%","ko":"%","no":"%","ru":"%","ar":"%","da":"%","de":"%","es":"%","fr":" %","it":"%","nl":"%","pl":"%","sv":"%"},"color":"#6DD400","getable":true,"setable":true,"uiComponent":"slider","$flow":{"triggers":[{"id":"power_level_changed","title":{"en":"The power level changed","ar":"تغير مستوى الطاقة","da":"Strømniveauet ændrede sig","de":"Die Leistungsstufe hat sich geändert","es":"El nivel de potencia ha cambiado","fr":"Le niveau de puissance a changé","it":"Il livello di potenza è cambiato","ko":"전력 수준이 변경되면","nl":"Het vermogensniveau veranderde","no":"Effektnivået ble endret","pl":"Poziom mocy uległ zmianie","ru":"Уровень мощности изменен","sv":"Effektnivån förändrades"},"tokens":[{"name":"power_level","type":"number","title":{"en":"Level","nl":"Niveau","de":"Stufe","fr":"Niveau","it":"Livello","sv":"Nivå","no":"Nivå","es":"Nivel","da":"Niveau","ru":"Уровень","pl":"Poziom","ko":"수준","ar":"المستوى"},"example":0.5}]}],"actions":[{"id":"power_level","highlight":true,"title":{"en":"Set the power level to","ar":"ضبط مستوى الطاقة على","da":"Indstil strømniveauet til","de":"Stellen Sie die Leistungsstufe auf","es":"Establece el nivel de potencia en","fr":"Réglez le niveau de puissance sur","it":"Imposta il livello di potenza su","ko":"전력 수준을 다음으로 설정","nl":"Stel het vermogensniveau in op","no":"Sett effektnivået til","pl":"Ustaw poziom mocy na","ru":"Установить уровень мощности на","sv":"Ställ in effektnivån till"},"args":[{"name":"power_level","type":"range","min":0,"max":1,"step":0.01,"value":0.5,"label":"%","labelMultiplier":100,"labelDecimals":0}]},{"id":"power_level_relative","title":{"en":"Set relative power level","ar":"تعيين مستوى الطاقة النسبية","da":"Indstil relativt strømniveau","de":"Relative Leistungsstufe einstellen","es":"Establecer nivel de potencia relativo","fr":"Définir le niveau de puissance relative","it":"Imposta il livello di potenza relativo","ko":"상대 전력 수준 설정","nl":"Relatief vermogensniveau instellen","no":"Angi relativt effektnivå","pl":"Ustaw względny poziom mocy","ru":"Установить относительный уровень мощности","sv":"Ställ in relativ effektnivå"},"hint":{"en":"Increase or decrease with respect to the device\'s current power level.","ar":"الزيادة أو النقصان فيما يتعلق بمستوى الطاقة الحالي للجهاز.","da":"Øges eller mindskes i forhold til enhedens aktuelle strømniveau.","de":"Erhöhen oder verringern in Bezug auf die aktuelle Leistungsstufe des Geräts.","es":"Aumenta o disminuye con respecto al nivel de potencia actual del dispositivo.","fr":"Augmentez ou diminuez en fonction du niveau de puissance actuel de l\'appareil.","it":"Aumenta o diminuisci rispetto al livello di potenza attuale del dispositivo.","ko":"제품의 현재 전원 수준에 맞춰 증가 또는 감소합니다.","nl":"Verhoog of verlaag ten opzichte van het huidige vermogensniveau van het apparaat.","no":"Øk eller reduser i forhold til enhetens gjeldende effektnivå.","pl":"Zwiększ lub zmniejsz zależnie od bieżącego poziomu mocy urządzenia.","ru":"Увеличивайте или уменьшайте относительно текущего уровня мощности устройства.","sv":"Öka eller minska i förhållande till enhetens aktuella effektnivå."},"args":[{"name":"power_level","type":"range","min":-1,"max":1,"step":0.01,"value":0.5,"label":"%","labelMultiplier":100,"labelDecimals":0}]}]},"minCompatibility":"12.11.0"}')},8470:(e,t,a)=>{"use strict";const r=a(178),i=a(5354);class n{static getPlatformLocalFeatures(e){return n._platformLocalFeatures[e]||[]}static getMissingPlatformLocalFeatures(e,t){const a=n.getPlatformLocalFeatures(e);return t.filter((e=>!a.includes(e)))}static getIntegrity(e,t){return r.getIntegrity(e,t)}static validateIntegrity(e,t){return r.validateIntegrity(e,t)}static parseZigbeeOTAHeader(e){return i.parseZigbeeOTAHeader(e)}static validateZigbeeOTAHeader(e){return i.validateZigbeeOTAHeader(e)}static getOTAFilePath({appPath:e,driverId:t,fileName:a}){return r.getOTAFilePath({appPath:e,driverId:t,fileName:a})}static isZigbeeFirmwareUpdateFile(e){return"manufacturerCode"in e}static isZwaveFirmwareUpdateFile(e){return"targetId"in e}static isZigbeeFirmwareUpdate(e){return!(!Array.isArray(e.files)||0===e.files.length)&&n.isZigbeeFirmwareUpdateFile(e.files[0])}static isZwaveFirmwareUpdate(e){return!(!Array.isArray(e.files)||0===e.files.length)&&n.isZwaveFirmwareUpdateFile(e.files[0])}static isZigbeeFirmwareUpdates(e){return!!e&&!(!Array.isArray(e.updates)||0===e.updates.length)&&n.isZigbeeFirmwareUpdate(e.updates[0])}static isZwaveFirmwareUpdates(e){return!!e&&!(!Array.isArray(e.updates)||0===e.updates.length)&&n.isZwaveFirmwareUpdate(e.updates[0])}}n.FEATURE_SPEAKER="speaker",n.FEATURE_LED_RING="ledring",n.FEATURE_NFC="nfc",n.FEATURE_MATTER="matter",n.FEATURE_CAMERA_STREAMING="camera-streaming",n.FEATURE_BLE_ADVERTISEMENTS="ble-advertisements",n._platformLocalFeatures={homey1s:[n.FEATURE_SPEAKER,n.FEATURE_LED_RING,n.FEATURE_NFC],homey1d:[n.FEATURE_SPEAKER,n.FEATURE_LED_RING,n.FEATURE_NFC],homey1q:[n.FEATURE_SPEAKER,n.FEATURE_LED_RING,n.FEATURE_NFC],homey2s:[n.FEATURE_SPEAKER,n.FEATURE_LED_RING,n.FEATURE_NFC],homey2d:[n.FEATURE_SPEAKER,n.FEATURE_LED_RING,n.FEATURE_NFC],homey2q:[n.FEATURE_SPEAKER,n.FEATURE_LED_RING,n.FEATURE_NFC],homey3s:[n.FEATURE_SPEAKER,n.FEATURE_LED_RING],homey3d:[n.FEATURE_SPEAKER,n.FEATURE_LED_RING],homey4d:[n.FEATURE_SPEAKER,n.FEATURE_LED_RING],homey5q:[n.FEATURE_MATTER,n.FEATURE_CAMERA_STREAMING,n.FEATURE_BLE_ADVERTISEMENTS],homey6q:[n.FEATURE_MATTER,n.FEATURE_CAMERA_STREAMING,n.FEATURE_BLE_ADVERTISEMENTS],homey7q:[n.FEATURE_MATTER,n.FEATURE_CAMERA_STREAMING,n.FEATURE_BLE_ADVERTISEMENTS],shs:[n.FEATURE_MATTER,n.FEATURE_CAMERA_STREAMING,n.FEATURE_BLE_ADVERTISEMENTS]},e.exports=n},8504:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Laundry washer speed","nl":"Toerental van wasmachine","da":"Vaskemaskinens hastighed","it":"Velocità della lavatrice","ko":"세탁 속도","pl":"Prędkość prania","ru":"Скорость стиральной машины","sv":"Tvättmaskinens hastighet","es":"Velocidad de centrifugado","fr":"Vitesse du lave-linge","no":"Vaskehastighet","ar":"سرعة الغسالة","de":"Geschwindigkeit der Waschmaschine"},"desc":{"en":"The spin speed of the laundry washer.","nl":"De centrifugesnelheid van de wasmachine.","da":"Vaskemaskinens centrifugeringshastighed.","it":"La velocità di centrifuga della lavatrice.","ko":"세탁기의 회전 속도입니다.","pl":"Prędkość obrotów pralki.","ru":"Скорость отжима в стиральной машине.","sv":"Tvättmaskinens centrifugeringshastighet.","es":"La velocidad de centrifugado de la lavadora.","fr":"La vitesse d\'essorage du lave-linge.","no":"Vaskemaskinens sentrifugehastighet.","ar":"سرعة دوران الغسالة.","de":"Die Schleuderdrehzahl der Waschmaschine."},"values":[{"id":"low","title":{"en":"Low","nl":"Laag","da":"Lav","it":"Bassa","ko":"저속","pl":"Niska","ru":"Низкая","sv":"Låg","es":"Baja","fr":"Lente","no":"Lav","ar":"منخفض","de":"Niedrig"}},{"id":"medium","title":{"en":"Medium","nl":"Gemiddeld","da":"Medium","it":"Media","ko":"보통","pl":"Średnia","ru":"Средняя","sv":"Medium","es":"Intermedia","fr":"Moyenne","no":"Middels","ar":"متوسط","de":"Mittel"}},{"id":"high","title":{"en":"High","nl":"Hoog","da":"Høj","it":"Alta","ko":"고속","pl":"Wysoka","ru":"Высокая","sv":"Hög","es":"Alta","fr":"Rapide","no":"Høy","ar":"عالي","de":"Hoch"}}],"color":"#0091FF","getable":true,"setable":true,"uiComponent":"picker","$flow":{"triggers":[{"id":"laundry_washer_speed_changed","highlight":true,"title":{"en":"The speed changed to","nl":"Het toerental is veranderd in","da":"Hastigheden blev ændret til","it":"La velocità è passata a","ko":"세탁 속도가 다음으로 변경되면","pl":"Prędkość zmieniła się na","ru":"Скорость изменена на","sv":"Hastigheten ändrades till","es":"La velocidad ha cambiado a","fr":"La vitesse du lave-linge est passée à","no":"Hastigheten ble endret til","ar":"تم تغيير السرعة إلى","de":"Die Geschwindigkeit wurde geändert auf"},"args":[{"name":"speed","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"laundry_washer_speed_is","title":{"en":"The speed !{{is|is not}}","nl":"Het toerental !{{is|is niet}}","da":"Hastigheden !{{er|er ikke}}","it":"La velocità !{{è|non è}}","ko":"세탁 속도가 다음!{{이면|이 아니면}}","pl":"Prędkość !{{jest|nie jest}}","ru":"Скорость !{{|не}}","sv":"Hastigheten !{{är|är inte}}","es":"La velocidad !{{está|no está}}","fr":"La vitesse du lave-linge !{{est|n\'est pas}}","no":"Hastigheten !{{er|er ikke}}","ar":"السرعة !{{هي|ليست}}","de":"Die Geschwindigkeit !{{ist|ist nicht}}"},"args":[{"name":"speed","type":"dropdown","values":"$values"}]}],"actions":[{"id":"set_laundry_washer_speed","title":{"en":"Set the speed to","nl":"Het toerental instellen op","da":"Indstil hastigheden til","it":"Imposta la velocità su","ko":"세탁 속도를 다음으로 설정","pl":"Ustaw prędkość na","ru":"Установить скорость на","sv":"Ställ in hastigheten på","es":"Ajustar la velocidad a","fr":"Définir la vitesse du lave-linge sur","no":"Sett hastigheten til","ar":"ضبط السرعة على","de":"Stelle die Geschwindigkeit auf"},"args":[{"name":"speed","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.2.0"}')},8532:e=>{"use strict";e.exports=function(e,t,a){var r=" ",i=e.level,n=e.dataLevel,s=e.schema[t],o=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+"/"+t,d=!e.opts.allErrors,u="data"+(n||""),m="valid"+i,p="errs__"+i,c=e.util.copy(e);c.level++;var g="valid"+c.level,h=e.schema.then,v=e.schema.else,f=void 0!==h&&(e.opts.strictKeywords?"object"==typeof h&&Object.keys(h).length>0:e.util.schemaHasRules(h,e.RULES.all)),k=void 0!==v&&(e.opts.strictKeywords?"object"==typeof v&&Object.keys(v).length>0:e.util.schemaHasRules(v,e.RULES.all)),y=c.baseId;if(f||k){var b;c.createErrors=!1,c.schema=s,c.schemaPath=o,c.errSchemaPath=l,r+=" var "+p+" = errors; var "+m+" = true; ";var w=e.compositeRule;e.compositeRule=c.compositeRule=!0,r+=" "+e.validate(c)+" ",c.baseId=y,c.createErrors=!0,r+=" errors = "+p+"; if (vErrors !== null) { if ("+p+") vErrors.length = "+p+"; else vErrors = null; } ",e.compositeRule=c.compositeRule=w,f?(r+=" if ("+g+") { ",c.schema=e.schema.then,c.schemaPath=e.schemaPath+".then",c.errSchemaPath=e.errSchemaPath+"/then",r+=" "+e.validate(c)+" ",c.baseId=y,r+=" "+m+" = "+g+"; ",f&&k?r+=" var "+(b="ifClause"+i)+" = 'then'; ":b="'then'",r+=" } ",k&&(r+=" else { ")):r+=" if (!"+g+") { ",k&&(c.schema=e.schema.else,c.schemaPath=e.schemaPath+".else",c.errSchemaPath=e.errSchemaPath+"/else",r+=" "+e.validate(c)+" ",c.baseId=y,r+=" "+m+" = "+g+"; ",f&&k?r+=" var "+(b="ifClause"+i)+" = 'else'; ":b="'else'",r+=" } "),r+=" if (!"+m+") { var err = ",!1!==e.createErrors?(r+=" { keyword: 'if' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { failingKeyword: "+b+" } ",!1!==e.opts.messages&&(r+=" , message: 'should match \"' + "+b+" + '\" schema' "),e.opts.verbose&&(r+=" , schema: validate.schema"+o+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),r+=" } "):r+=" {} ",r+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&d&&(e.async?r+=" throw new ValidationError(vErrors); ":r+=" validate.errors = vErrors; return false; "),r+=" } ",d&&(r+=" else { ")}else d&&(r+=" if (true) { ");return r}},8570:(e,t,a)=>{"use strict";e.exports=class{static getCodecs(){return a(6782)}}},8621:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Game Console","da":"Spilkonsol","de":"Spielkonsole","es":"Consola de videojuegos","fr":"Console de jeux","it":"Console per videogiochi","ko":"게임 콘솔","nl":"Spelcomputer","no":"Spillkonsoll","pl":"Konsola do gier","ru":"Игровая консоль","sv":"Spelkonsol","ar":"وحدة تحكم ألعاب"},"description":{"en":"Use this device class for any type of game console.","da":"Brug denne enhedsklasse til alle typer spilkonsoller.","de":"Verwenden Sie diese Geräteklasse für alle Arten von Spielkonsolen.","es":"Utiliza esta clase de dispositivo para cualquier tipo de consola de videojuegos.","fr":"Utilisez cette classe d\'appareils pour tout type de console de jeu.","it":"Utilizza questa classe di dispositivi per qualsiasi tipo di console per videogiochi.","ko":"이 디바이스 클래스는 모든 종류의 게임 콘솔에 사용합니다.","nl":"Gebruik deze apparaatklasse voor elk type spelcomputer.","no":"Bruk denne enhetsklassen for alle typer spillkonsoller.","pl":"Tej klasy urządzeń należy używać w przypadku dowolnego typu konsoli do gier.","ru":"Используйте этот класс устройств для игровых консолей любого типа.","sv":"Använd den här enhetsklassen för alla typer av spelkonsoler.","ar":"استخدم فئة الجهاز هذه لأي نوع من وحدات تحكم الألعاب."},"minCompatibility":"12.0.0"}')},8627:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"PM10 level","nl":"PM10-niveau","da":"PM10-niveau","it":"Livello di PM10","ko":"미세먼지(PM10) 수준","pl":"Poziom PM10","ru":"Уровень ТЧ10","sv":"PM10-nivå","es":"Nivel de PM10","fr":"Niveau de PM10","no":"PM10-nivå","ar":"مستوى PM10","de":"PM10-Wert"},"desc":{"en":"The level of PM10 particles in the air.","nl":"De mate van PM10-deeltjes in de lucht.","da":"Niveauet af PM10-partikler i luften.","it":"Il livello di particelle PM10 nell\'aria.","ko":"공기 중 PM10 입자의 수준입니다.","pl":"Poziom cząstek PM10 w powietrzu.","ru":"Уровень содержания частиц ТЧ10 в воздухе.","sv":"Halten av PM10-partiklar i luften.","es":"El nivel de partículas PM10 en el aire.","fr":"Le niveau de particules PM10 dans l\'air.","no":"Nivået av PM10-partikler i luften.","ar":"مستوى جزيئات PM10 في الهواء.","de":"Der Gehalt an PM10-Partikeln in der Luft."},"values":[{"id":"low","title":{"en":"Low","nl":"Laag","da":"Lavt","it":"Basso","ko":"좋음","pl":"Niski","ru":"Низкий","sv":"Låg","es":"Bajo","fr":"Faible","no":"Lavt","ar":"منخفض","de":"Niedrig"}},{"id":"medium","title":{"en":"Medium","nl":"Gemiddeld","da":"Medium","it":"Medio","ko":"보통","pl":"Średni","ru":"Средний","sv":"Medium","es":"Intermedio","fr":"Moyen","no":"Middels","ar":"متوسط","de":"Mittel"}},{"id":"high","title":{"en":"High","nl":"Hoog","da":"Højt","it":"Alto","ko":"나쁨","pl":"Wysoki","ru":"Высокий","sv":"Hög","es":"Alto","fr":"Élevé","no":"Høyt","ar":"عالي","de":"Hoch"}},{"id":"critical","title":{"en":"Critical","nl":"Kritiek","da":"Kritisk","it":"Critico","ko":"매우 나쁨","pl":"Krytyczny","ru":"Критический","sv":"Kritisk","es":"Crítico","fr":"Critique","no":"Kritisk","ar":"حرج","de":"Kritisch"}}],"color":"#E02020","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"level_pm10_changed","highlight":true,"title":{"en":"The PM10 level changed to","nl":"Het PM10-niveau is veranderd naar","da":"PM10-niveauet blev ændret til","it":"Il livello di PM10 è passato a","ko":"미세먼지(PM10) 수준이 다음으로 변경되면","pl":"Poziom PM10 zmienił się na","ru":"Уровень ТЧ10 изменился на","sv":"PM10-nivån ändrades till","es":"El nivel de PM10 ha cambiado a","fr":"Le niveau de PM10 est passé à","no":"PM10-nivået ble endret til","ar":"تغير مستوى PM10 إلى","de":"Der PM10-Wert hat sich geändert auf"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"level_pm10_is","title":{"en":"The PM10 level !{{is|is not}}","nl":"Het PM10-niveau !{{is|is niet}}","da":"PM10-niveauet !{{er|er ikke}}","it":"Il livello di PM10 !{{è|non è}}","ko":"미세먼지(PM10) 수준이 다음!{{이면|이 아니면}}","pl":"Poziom PM10 !{{jest|nie jest}}","ru":"Уровень ТЧ10 !{{|не}}","sv":"PM10-nivån !{{är|är inte}}","es":"El nivel de PM10 !{{es|no es}}","fr":"Le niveau de PM10 !{{est|n\'est pas}}","no":"PM10-nivået !{{er|er ikke}}","ar":"مستوى PM10 !{{هو|ليس}}","de":"Der PM10-Wert !{{ist|ist nicht}}"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.2.0"}')},8686:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"NOx level","nl":"NOx-niveau","da":"NOx-niveau","it":"Livello di NOx","ko":"질소산화물 수준","pl":"Poziom NOx","ru":" Уровень NOx","sv":"NOx-nivå","es":"Nivel de NOx","fr":"Niveau de NOx","no":"NOx-nivå","ar":"مستوى أكسيد النيتروجين","de":"NOx-Wert"},"desc":{"en":"The level of nitrogen oxides in the air.","nl":"De mate van stikstofoxiden in de lucht.","da":"Niveauet af nitrogenoxider i luften.","it":"Il livello di ossidi di azoto nell\'aria.","ko":"공기 중 질소 산화물 수준입니다.","pl":"Poziom tlenków azotu w powietrzu.","ru":"Уровень содержания оксидов азота в воздухе.","sv":"Halten av kväveoxider i luften.","es":"El nivel de óxidos de nitrógeno en el aire.","fr":"Le niveau d\'oxydes d\'azote dans l\'air.","no":"Nitrogenoksidnivået i luften.","ar":"مستوى أكسيد النيتروجين في الهواء.","de":"Der Gehalt an Stickoxiden in der Luft."},"values":[{"id":"low","title":{"en":"Low","nl":"Laag","da":"Lavt","it":"Basso","ko":"낮음","pl":"Niski","ru":"Низкий","sv":"Låg","es":"Bajo","fr":"Faible","no":"Lavt","ar":"منخفض","de":"Niedrig"}},{"id":"medium","title":{"en":"Medium","nl":"Gemiddeld","da":"Medium","it":"Medio","ko":"보통","pl":"Średni","ru":"Средний","sv":"Medium","es":"Intermedio","fr":"Moyen","no":"Middels","ar":"متوسط","de":"Mittel"}},{"id":"high","title":{"en":"High","nl":"Hoog","da":"Højt","it":"Alto","ko":"높음","pl":"Wysoki","ru":"Высокий","sv":"Hög","es":"Alto","fr":"Élevé","no":"Høyt","ar":"عالي"}},{"id":"critical","title":{"en":"Critical","nl":"Kritiek","da":"Kritisk","it":"Critico","ko":"위험","pl":"Krytyczny","ru":"Критический","sv":"Kritisk","es":"Crítico","fr":"Critique","no":"Kritisk","ar":"حرج","de":"Kritisch"}}],"color":"#E02020","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"level_nox_changed","highlight":true,"title":{"en":"The NOx level changed to","nl":"Het NOx-niveau is veranderd naar","da":"NOx-niveauet blev ændret til","it":"Il livello di NOx è passato a","ko":"질소산화물 수준이 다음으로 변경되면","pl":"Poziom NOx zmienił się na","ru":"Уровень NOx изменился на","sv":"NOx-nivån ändrades till","es":"El nivel de NOx ha cambiado a","fr":"Le niveau de NOx est passé à","no":"NOx-nivået ble endret til","ar":"تغير مستوى أكسيد النيتروجين إلى","de":"Der NOx-Wert hat sich geändert auf"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"level_nox_is","title":{"en":"The NOx level !{{is|is not}}","nl":"Het NOx-niveau !{{is|is niet}}","da":"NOx-niveauet !{{er|er ikke}}","it":"Il livello di NOx !{{è|non è}}","ko":"질소산화물 수준이 다음!{{이면|이 아니면}}","pl":"Poziom NOx !{{jest|nie jest}}","ru":"Уровень NOx !{{|не}}","sv":"NOx-nivån !{{är|är inte}}","es":"El nivel de NOx !{{es|no es}}","fr":"Le niveau de NOx !{{est|n\'est pas}}","no":"NOx-nivået !{{er|er ikke}}","ar":"مستوى أكسيد النيتروجين !{{هو|ليس}}","de":"Der NOx-Wert !{{ist|ist nicht}}"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.2.0"}')},8724:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Ultraviolet","nl":"Ultraviolet","de":"Ultraviolett","fr":"Ultraviolet","it":"Ultravioletto","sv":"Ultraviolett","no":"Ultrafiolett","es":"Ultravioleta","da":"Ultraviolet","ru":"Ультрафиолетовое излучение","pl":"Promieniowanie UV","ko":"자외선","ar":"الأشعة فوق البنفسجية"},"units":{"en":"UVI","ru":"Индекс УФ-излучения","ko":"UVI","no":"UVI","ar":"UVI","da":"UVI","de":"UVI","es":"UVI","fr":"UVI","it":"UVI","nl":"UVI","pl":"UVI","sv":"UVI"},"desc":{"en":"Ultraviolet in UV index (UVI)","de":"Ultraviolett in UV-Index (UVI)","fr":"Ultraviolet en UV-Index (UVI)","it":"Ultravioletto nell\'indice UV (UVI)","sv":"Ultraviolett i UV-Index (UVI)","no":"Ultrafiolett på UV-indeks (UVI)","es":"Ultravioleta en índice UV (UV)","da":"Ultraviolet i UV-indeks (UV)","ru":"Индекс ультрафиолетового излучения","pl":"Promieniowanie UV w indeksie UV (UVI)","ko":"자외선 UV 지수(UVI)","ar":"الأشعة فوق البنفسجية بمؤشر الأشعة فوق البنفسجية (UVI)","nl":"Ultraviolet in UV-index (UVI)"},"insights":true,"chartType":"spline","decimals":2,"color":"#6236FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_ultraviolet_changed","title":{"en":"The ultraviolet value changed","nl":"De ultravioletwaarde is veranderd","de":"Der Ultraviolett-Wert hat sich geändert","fr":"La valeur d\'ultraviolet a changé","it":"Il valore dell\'ultravioletto è cambiato","sv":"Ultraviolettvärdet ändrades","no":"Ultrafiolettverdien ble endret","es":"La radiación ultravioleta ha cambiado","da":"UV-værdien ændrede sig","ru":"Значение УФ-излучения изменилось","pl":"Zmiana poziomu promieniowania UV","ko":"자외선 값이 변경되면","ar":"تغيرت قيمة الأشعة فوق البنفسجية"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":100}]}]}}')},8837:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Freezer","da":"Fryser","de":"Gefrierschrank","es":"Congelador","fr":"Congélateur","it":"Congelatore","ko":"냉동고","nl":"Diepvries","no":"Fryser","pl":"Zamrażarka","ru":"Морозильная камера","sv":"Frys","ar":"مجمد"},"description":{"en":"Use this device class for any kind of freezer, if it is a frigde/freezer use \'fridge_and_freezer\'.","da":"Brug denne enhedsklasse til enhver form for fryser. Hvis det er et køleskab/fryser, skal du bruge \'fridge_and_freezer\'.","de":"Verwenden Sie diese Geräteklasse für jede Art von Gefrierschränken. Für Kühl- und Gefrierschränke verwenden Sie „fridge_and_freezer“.","es":"Utiliza esta clase de dispositivo para cualquier tipo de congelador. Si se trata de un frigorífico con congelador, utiliza la clase \'fridge_and_freezer\'.","fr":"Utilisez cette classe d\'appareils pour tout type de congélateur, s\'il s\'agit d\'un réfrigérateur/congélateur, utilisez \\"fridge_and_freezer\\".","it":"Utilizza questa classe di dispositivi per qualsiasi tipo di congelatore, se si tratta di un frigorifero/congelatore utilizza \\"fridge_and_freezer\\".","ko":"이 디바이스 클래스는 모든 종류의 냉동고에 사용하며, 냉장/냉동고의 경우 \'fridge_and_freezer\'를 사용합니다.","nl":"Gebruik deze apparaatklasse voor elke soort vriezer, als het een koelkast/vriezer is gebruik dan \'fridge_and_freezer\'.","no":"Bruk denne enhetsklassen for alle slags frysere. For kombinert kjøleskap/fryser, bruk «fridge_and_freezer».","pl":"Tej klasy urządzeń należy używać dla każdego rodzaju zamrażarki, jeśli jest to lodówka/zamrażarka, należy użyć klasy „fridge_and_freezer”.","ru":"Используйте этот класс устройств для морозильных камер любого типа; в случае холодильника-морозильника используйте fridge_and_freezer.","sv":"Använd den här enhetsklassen för alla typer av frysar, om det är en kyl/frys ska du använda \'fridge_and_freezer\'.","ar":"استخدم فئة الجهاز هذه لأي نوع من المجمدات، إذا كانت ثلاجة/مجمد مدمج، فاستخدم \'fridge_and_freezer\'."},"minCompatibility":"12.0.0"}')},8841:e=>{"use strict";function t(e,t){return{height:e.readUInt16BE(t),width:e.readUInt16BE(t+2)}}function a(e,t){if(t>e.length)throw new TypeError("Corrupt JPG, exceeded buffer limits");if(255!==e[t])throw new TypeError("Invalid JPG, marker table corrupted")}e.exports={detect:function(e){return"ffd8"===e.toString("hex",0,2)},calculate:function(e){var r,i;for(e=e.slice(4);e.length;){if(r=e.readUInt16BE(0),a(e,r),192===(i=e[r+1])||193===i||194===i)return t(e,r+5);e=e.slice(r+2)}throw new TypeError("Invalid JPG, no size found")}}},8878:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Humidity","nl":"Luchtvochtigheid","de":"Luftfeuchtigkeit","fr":"Humidité","it":"Umidità","sv":"Luftfuktighet","no":"Luftfuktighet","es":"Humedad","da":"Luftfugtighed","ru":"Влажность","pl":"Wilgotność","ko":"습도","ar":"الرطوبة"},"units":{"en":"%","ko":"%","no":"%","ru":"%","ar":"%","da":"%","de":"%","es":"%","fr":"%","it":"%","nl":"%","pl":"%","sv":"%"},"insights":true,"desc":{"en":"Humidity in percent (%)","nl":"Relatieve luchtvochtigheid (%)","de":"Luftfeuchtigkeit in Prozent (%)","fr":"Humidité en pourcentage (%)","it":"Umidità in percentuale (%)","sv":"Luftfuktighet i procent (%)","no":"Luftfuktighet i prosent (%)","es":"Humedad en porcentaje (%)","da":"Luftfugtighed i procent (%)","ru":"Влажность в процентах (%)","pl":"Wilgotność w procentach (%)","ko":"습도(%)","ar":"الرطوبة بالنسبة المئوية (%)"},"chartType":"spline","decimals":2,"color":"#FFA07A","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_humidity_changed","title":{"en":"The humidity changed","nl":"De luchtvochtigheid is veranderd","de":"Die Luftfeuchtigkeit hat sich geändert","fr":"L\'humidité a changé","it":"L\'umidità è cambiata","sv":"Luftfuktigheten ändrades","no":"Luftfuktigheten ble endret","es":"La humedad ha cambiado","da":"Luftfugtigheden ændrede sig","ru":"Влажность изменилась","pl":"Zmiana wilgotności","ko":"습도가 변경되면","ar":"تغيرت الرطوبة"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":35}]}]}}')},8914:e=>{"use strict";e.exports=function(e,t,a){var r=" ",i=e.level,n=e.dataLevel,s=e.schema[t],o=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+"/"+t,d=!e.opts.allErrors,u="data"+(n||""),m="errs__"+i,p=e.util.copy(e);p.level++;var c="valid"+p.level;if(e.opts.strictKeywords?"object"==typeof s&&Object.keys(s).length>0:e.util.schemaHasRules(s,e.RULES.all)){p.schema=s,p.schemaPath=o,p.errSchemaPath=l,r+=" var "+m+" = errors; ";var g,h=e.compositeRule;e.compositeRule=p.compositeRule=!0,p.createErrors=!1,p.opts.allErrors&&(g=p.opts.allErrors,p.opts.allErrors=!1),r+=" "+e.validate(p)+" ",p.createErrors=!0,g&&(p.opts.allErrors=g),e.compositeRule=p.compositeRule=h,r+=" if ("+c+") { ";var v=v||[];v.push(r),r="",!1!==e.createErrors?(r+=" { keyword: 'not' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: {} ",!1!==e.opts.messages&&(r+=" , message: 'should NOT be valid' "),e.opts.verbose&&(r+=" , schema: validate.schema"+o+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),r+=" } "):r+=" {} ";var f=r;r=v.pop(),!e.compositeRule&&d?e.async?r+=" throw new ValidationError(["+f+"]); ":r+=" validate.errors = ["+f+"]; return false; ":r+=" var err = "+f+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+=" } else { errors = "+m+"; if (vErrors !== null) { if ("+m+") vErrors.length = "+m+"; else vErrors = null; } ",e.opts.allErrors&&(r+=" } ")}else r+=" var err = ",!1!==e.createErrors?(r+=" { keyword: 'not' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: {} ",!1!==e.opts.messages&&(r+=" , message: 'should NOT be valid' "),e.opts.verbose&&(r+=" , schema: validate.schema"+o+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),r+=" } "):r+=" {} ",r+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",d&&(r+=" if (false) { ");return r}},9005:(e,t,a)=>{"use strict";var r={bmp:a(2829),cur:a(4792),dds:a(3219),gif:a(9764),ico:a(6459),jpg:a(8841),png:a(2869),psd:a(7181),svg:a(3392),tiff:a(6995),webp:a(6622)};e.exports=r},9011:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Relay","nl":"Relais","de":"Relais","fr":"Relais","it":"Relé","sv":"Relä","no":"Relé","es":"Relé","da":"Relæ","ru":"Узел","pl":"Przekaźnik","ko":"릴레이","ar":"مرحل"},"description":{"en":"Use this device class for relays, which are connected to another device.","de":"Nutze diese Geräteklasse für Relais, die mit anderen Geräten verbunden sind.","fr":"Utilisez cette classe d\'appareil pour les relais qui sont connectés à d\'autres appareils.","it":"Utilizza questa classe di dispositivi per i relé, che sono connessi ad un altro dispositivo.","sv":"Använd den här enhetsklassen för relän, som är kopplade till en annan enhet","no":"Bruk denne enhetsklassen for reléer som er koblet til en annen enhet.","es":"Utiliza esta clase de dispositivo para los relés conectados a otros dispositivos.","da":"Brug denne enhedsklasse til relæer, som er koblet til en anden enhed.","ru":"Используйте этот класс устройств для узлов, которые подключены к другому устройству.","pl":"Użyj tej klasy urządzeń dla przekaźników niepołączonych z żadnym innym urządzeniem.","ko":"이 디바이스 클래스는 다른 디바이스에 연결된 릴레이에 사용합니다.","ar":"استخدم فئة الجهاز هذه للمرحلات، والتي تتصل بجهاز آخر.","nl":"Gebruik deze apparaatklasse voor relais die verbonden zijn met een ander apparaat."},"virtualTitle":{"en":"What\'s connected?","nl":"Wat is er verbonden?","de":"Was ist verbunden?","fr":"Qu\'est-ce qui est connecté ?","it":"Cos\'è connesso?","sv":"Relä","no":"Hva er tilkoblet?","es":"¿Qué está conectado?","da":"Hvad er tilkoblet?","ru":"Что подключено?","pl":"Co jest połączone?","ko":"어떤 것이 연결되어 있나요?","ar":"ما هو المتصل؟"},"allowedVirtual":["garagedoor","sunshade","blinds","curtain"]}')},9073:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Smoke Alarm","nl":"Rookmelder","de":"Rauchalarm","fr":"Alarme de fumée","it":"Allarme fumo","sv":"Röklarm","no":"Røykalarm","es":"Alarma de humo","da":"Røgalarm","ru":"Сигнал дыма","pl":"Alarm przeciwdymny","ko":"연기 감지","ar":"إنذار الدخان"},"titleShort":{"en":"Smoke","nl":"Rook","de":"Rauch","fr":"Fumée","it":"Fumo","sv":"Rök","no":"Røyk","es":"Humo","da":"Røg","ru":"Дым","pl":"Dym","ko":"연기","ar":"الدخان"},"desc":{"en":"True when smoke has been detected","nl":"Gaat af als er rook gedetecteerd wordt","de":"True, wenn Rauch erkannt wurde","fr":"Vrai quand de la fumée a été détectée","it":"Vero quando è stato rilevato del fumo","sv":"Sant när rök upptäcks","no":"Sann når røyk har blitt påvist","es":"Activado cuando se detecta humo","da":"Sandt, når røg er blevet opdaget","ru":"Значение «истина» при обнаружении дыма","pl":"Adekwatny, kiedy wykryty zostanie dym","ko":"연기가 감지되면 참","ar":"صحيح عند اكتشاف دخان"},"insights":true,"insightsTitleTrue":{"en":"Smoke alarm turned on","nl":"Rookmelder ging af","de":"Rauch-Alarm ist angegangen","fr":"Alarme fumée s\'est activée","it":"Allarme fumo attivato","sv":"Röklarm aktiverat","no":"Røykalarm aktivert","es":"Alarma de humo activada","da":"Røgalarm blev aktiveret","ru":"Сигнал дыма включен","pl":"Alarm przeciwdymny włączony","ko":"연기 감지됨","ar":"تم تشغيل إنذار الدخان"},"insightsTitleFalse":{"en":"Smoke alarm turned off","nl":"Rookmelder ging uit","de":"Rauch-Alarm ist ausgegangen","fr":"Alarme fumée s\'est désactivée","it":"Allarme fumo disattivato","sv":"Röklarm inaktiverat","no":"Røykalarm deaktivert","es":"Alarma de humo desactivada","da":"Røgalarm blev deaktiveret","ru":"Сигнал дыма выключен","pl":"Alarm przeciwdymny wyłączony","ko":"정상","ar":"تم إيقاف إنذار الدخان"},"color":"#FA6400","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_smoke_true","highlight":true,"title":{"en":"The smoke alarm turned on","nl":"De rookmelder gaat aan","de":"Der Rauch-Alarm ist angegangen","fr":"L\'alarme fumée s\'est activée","it":"L\'allarme fumo è stato attivato","sv":"Röklarmet aktiverat","no":"Røykalarmen ble aktivert","es":"La alarma de humo se ha activado","da":"Røgalarmen blev aktiveret","ru":"Сигнал дыма включен","pl":"Alarm przeciwdymny włączony","ko":"연기가 감지되면","ar":"تم تشغيل إنذار الدخان"}},{"id":"alarm_smoke_false","title":{"en":"The smoke alarm turned off","nl":"De rookmelder gaat uit","de":"Der Rauch-Alarm ist ausgegangen","fr":"L\'alarme fumée s\'est désactivée","it":"L\'allarme fumo è stato disattivato","sv":"Röklarmet inaktiverat","no":"Røykalarmen ble deaktivert","es":"La alarma de humo se ha desactivado","da":"Røgalarmen blev deaktiveret","ru":"Сигнал дыма выключен","pl":"Alarm przeciwdymny wyłączony","ko":"연기 감지가 정상 상태이면","ar":"تم إيقاف إنذار الدخان"}}],"conditions":[{"id":"alarm_smoke","title":{"en":"The smoke alarm is !{{on|off}}","nl":"De rookmelder is !{{aan|uit}}","de":"Der Rauch-Alarm ist !{{an|aus}}","fr":"L\'alarme fumée est !{{en marche|arrêtée}}","it":"L\'allarme fumo è !{{acceso|spento}}","sv":"Röklarmet är !{{på|av}}","no":"Røykalarmen er !{{på|av}}","es":"La alarma de humo está !{{activada|desactivada}}","da":"Røgalarmen er !{{tændt|slukket}}","ru":"Сигнал дыма !{{вкл.|выкл.}}","pl":"Alarm przeciwdymny jest !{{włączony|wyłączony}}","ko":"!{{연기가 감지되면|연기 감지가 정상 상태이면}}","ar":"إنذار الدخان !{{يعمل|لا يعمل}}"}}]}}')},9081:()=>{},9091:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Problem Alarm","nl":"Probleemwaarschuwing","da":"Problemalarm","it":"Allarme problema","ko":"이상 감지","no":"Problemalarm","pl":"Alarm problemu","ru":"Сигнал о проблеме","sv":"Problemlarm","es":"Alarma de problema","fr":"Alarme de problème","ar":"إنذار وجود مشكلة","de":"Problem-Alarm"},"titleShort":{"en":"Problem","nl":"Probleem","da":"Problem","it":"Problema","ko":"문제","no":"Problem","pl":"Problem","ru":"Проблема","sv":"Problem","es":"Problema","fr":"Problème","ar":"مشكلة","de":"Problem"},"desc":{"en":"True when a problem is detected.","nl":"Wordt geactiveerd wanneer een probleem wordt gedetecteerd.","da":"Sandt, når der opdages et problem.","it":"Vero quando viene rilevato un problema.","ko":"문제가 감지되면 참입니다.","no":"Sann når et problem registreres.","pl":"Prawda, gdy wykryty jest problem.","ru":"Значение «истина» при обнаружении проблемы.","sv":"Sant när ett problem upptäcks.","es":"Activado cuando se detecta un problema.","fr":"Se déclenche lorsqu\'un problème est détecté.","ar":"صحيح عند اكتشاف مشكلة.","de":"Wahr, wenn ein Problem erkannt wird."},"insights":true,"insightsTitleTrue":{"en":"Problem was detected","nl":"Probleem was gedetecteerd","da":"Problem blev opdaget","it":"Problema rilevato","ko":"이상 감지됨","no":"Problem ble registrert","pl":"Problem był wykryty","ru":"Была обнаружена проблема","sv":"Ett problem har upptäckts","es":"Problema detectado","fr":"Un problème a été détecté","ar":"تم اكتشاف مشكلة","de":"Problem wurde erkannt"},"insightsTitleFalse":{"en":"Problem solved","nl":"Probleem opgelost","da":"Problem løst","it":"Problema risolto","ko":"정상","no":"Problem løst","pl":"Problem rozwiązany","ru":"Проблема решена","sv":"Problemet är löst","es":"Problema resuelto","fr":"Problème résolu","ar":"تم حل المشكلة","de":"Problem gelöst"},"color":"#9033FC","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_problem_true","highlight":true,"title":{"en":"A problem is detected","nl":"Er is een probleem gedetecteerd","da":"Et problem er opdaget","it":"È stato rilevato un problema","ko":"이상이 감지되면","no":"Et problem er registrert","pl":"Problem jest wykryty","ru":"Обнаружена проблема","sv":"Ett problem har upptäckts","es":"Se ha detectado un problema","fr":"Un problème est détecté","ar":"تم اكتشاف مشكلة","de":"Ein Problem wird erkannt"}},{"id":"alarm_problem_false","title":{"en":"The problem is solved","nl":"Het probleem is opgelost","da":"Problemet er løst","it":"Il problema è risolto","ko":"이상 감지가 정상 상태이면","no":"Problemet er løst","pl":"Problem jest rozwiązany","ru":"Проблема решена","sv":"Problemet är löst","es":"Se ha resuelto el problema","fr":"Le problème est résolu","ar":"تم حل المشكلة","de":"Das Problem ist gelöst"}}],"conditions":[{"id":"alarm_problem","title":{"en":"There !{{is|isn\'t}} a problem","nl":"Er is !{{een|geen}} probleem","da":"Der !{{er|er ikke}} et problem","it":"!{{C\'è un|Non c\'è nessun}} problema","ko":"!{{이상이 감지되면|이상 감지가 정상 상태이면}}","no":"Det !{{er|er ikke}} et problem","pl":"!{{Problem jest|Problemu nie ma}}","ru":"!{{есть проблема|проблемы нет}}","sv":"Det !{{är|är inte}} ett problem","es":"!{{Hay un problema|No hay ningún problema}}","fr":"Il !{{y a un problème|n\'y a pas de problème}}","ar":"توجد !{{مشكلة|لا توجد مشكلة}}","de":"Es gibt !{{ein|kein}} Problem"}}]},"minCompatibility":"12.2.0"}')},9101:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Water Valve","da":"Vandventil","de":"Wasserventil","es":"Válvula de agua","fr":"Robinet d\'adduction d\'eau","it":"Valvola idraulica","ko":"워터 밸브","nl":"Waterklep","no":"Vannventil","pl":"Zawór wodny","ru":"Водяной клапан","sv":"Vattenventil","ar":"صمام مياه"},"description":{"en":"Use this device class for mechanical water valves.","da":"Brug denne enhedsklasse til mekaniske vandventiler.","de":"Verwenden Sie diese Geräteklasse für mechanische Wasserventile.","es":"Utiliza esta clase de dispositivo para válvulas mecánicas de agua.","fr":"Utilisez cette classe d\'appareils pour les robinet d\'adduction d\'eau mécaniques.","it":"Utilizza questa classe di dispositivi per le valvole idrauliche meccaniche.","ko":"이 디바이스 클래스는 기계식 워터 밸브에 사용합니다.","nl":"Gebruik deze apparaatklasse voor mechanische waterkleppen.","no":"Bruk denne enhetsklassen for mekaniske vannventiler.","pl":"Tej klasy urządzeń należy używać w przypadku mechanicznych zaworów wodnych.","ru":"Используйте этот класс устройств для механических водяных клапанов.","sv":"Använd den här apparatklassen för mekaniska vattenventiler.","ar":"استخدم فئة الجهاز هذه لصمامات المياه الميكانيكية."},"minCompatibility":"12.0.0"}')},9102:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Humidifier","da":"Luftfugter","de":"Luftbefeuchter","es":"Humidificador","fr":"Humidificateur","it":"Umidificatore","ko":"가습기","nl":"Luchtbevochtiger","no":"Luftfukter","pl":"Nawilżacz","ru":"Увлажнитель воздуха","sv":"Luftfuktare","ar":"مرطب هواء"},"description":{"en":"Use this device class for humidifiers.","da":"Brug denne enhedsklasse til luftfugtere.","de":"Verwenden Sie diese Geräteklasse für Luftbefeuchter.","es":"Utiliza esta clase de dispositivo para humidificadores.","fr":"Utiliser cette classe d\'appareils pour les humidificateurs.","it":"Utilizza questa classe di dispositivi per gli umidificatori.","ko":"이 디바이스 클래스는 가습기에 사용합니다.","nl":"Gebruik deze apparaatklasse voor luchtbevochtigers.","no":"Bruk denne enhetsklassen for luftfuktere.","pl":"Tej klasy urządzeń należy używać w przypadku nawilżaczy powietrza.","ru":"Используйте этот класс устройств для увлажнителей воздуха.","sv":"Använd den här enhetsklassen för luftfuktare.","ar":"استخدم فئة الجهاز هذه لأجهزة ترطيب الهواء."},"minCompatibility":"12.0.0"}')},9183:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Frequency","nl":"Frequentie","da":"Frekvens","it":"Frequenza","ko":"주파수","no":"Frekvens","pl":"Częstotliwość","ru":"Частота","sv":"Frekvens","es":"Frecuencia","fr":"Fréquence","ar":"التردد","de":"Frequenz"},"units":{"en":"Hz","nl":"Hz","da":"Hz","it":"Hz","ko":"Hz","no":"Hz","pl":"Hz","ru":"Гц","sv":"Hz","es":"Hz","fr":"Hz","ar":"هرتز","de":"Hz"},"desc":{"en":"The frequency in hertz.","nl":"De frequentie in hertz.","da":"Frekvensen i hertz.","it":"La frequenza in hertz.","ko":"헤르츠 단위의 주사율입니다.","no":"Frekvensen i hertz.","pl":"Częstotliwość w hercach.","ru":"Частота в герцах.","sv":"Frekvensen i hertz.","es":"La frecuencia en hercios.","fr":"La fréquence en hertz.","ar":"التردد بالهرتز.","de":"Die Frequenz in Hertz."},"insights":true,"chartType":"spline","decimals":2,"color":"#6236FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_frequency_changed","title":{"en":"The frequency changed","nl":"De frequentie is veranderd","da":"Frekvensen ændrede sig","it":"La frequenza è cambiata","ko":"주파수가 변경되면","no":"Frekvensen ble endret","pl":"Zmieniła się częstotliwość","ru":"Частота изменилась","sv":"Frekvensen ändrades","es":"La frecuencia ha cambiado","fr":"La fréquence a changé","ar":"تغير التردد","de":"Die Frequenz hat sich geändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":2}]}]},"minCompatibility":"12.2.0"}')},9249:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Hot water mode","nl":"Warmwatermodus","da":"Varmtvandstilstand","it":"Modalità acqua calda","ko":"온수 모드","pl":"Tryb ciepłej wody","ru":"Режим нагрева воды","sv":"Varmvattenläge","es":"Modo de agua caliente","fr":"Mode eau chaude","no":"Varmtvannsmodus","ar":"وضع الماء الساخن","de":"Warmwassermodus"},"values":[{"id":"on","title":{"en":"On","nl":"Aan","da":"Til","it":"On","ko":"켜짐","pl":"Wł","ru":"Включен","sv":"På","es":"Activado","fr":"Activé","no":"På","ar":"مشغل","de":"Ein"}},{"id":"off","title":{"en":"Off","nl":"Uit","da":"Fra","it":"Off","ko":"꺼짐","pl":"Wył","ru":"Выключен","sv":"Av","es":"Desactivado","fr":"Désactivé","no":"Av","ar":"متوقف","de":"Aus"}},{"id":"eco","title":{"en":"Eco","nl":"Eco","da":"Øko","it":"Eco","ko":"절약","pl":"Eko","ru":"Эко","sv":"Eco","es":"Eco","fr":"Économique","no":"Øko","ar":"اقتصادي","de":"Öko"}}],"color":"#FA6400","getable":true,"setable":true,"uiComponent":"picker","$flow":{"triggers":[{"id":"hot_water_mode_changed","title":{"en":"The hot water mode changed to","nl":"De warmwatermodus is veranderd naar","da":"Varmtvandstilstanden er ændret til","it":"La modalità acqua calda è passata a","ko":"온수 모드가 다음으로 변경되면","no":"Varmtvannsmodus er endret til","pl":"Tryb ciepłej wody zmienił się na","ru":"Режим нагрева воды изменен на","sv":"Varmvattenläget har ändrats till","es":"El modo de agua caliente ha cambiado a","fr":"Le mode eau chaude est passé à","ar":"تم تغيير وضع الماء الساخن إلى","de":"Der Warmwassermodus wurde geändert auf"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"hot_water_mode_is","title":{"en":"The hot water mode !{{is|is not}}","nl":"De warmwatermodus !{{is|is niet}}","da":"Varmtvandstilstanden !{{er|er ikke}}","it":"La modalità acqua calda !{{è|non è}}","ko":"온수 모드가 다음!{{이면|이 아니면}}","pl":"Tryb gorącej wody !{{jest|nie jest}}","ru":"Режим нагрева воды !{{|не}}","sv":"Varmvattenläge !{{är|är inte}}","es":"El modo de agua caliente !{{está|no está}}","fr":"Le mode eau chaude !{{est|n\'est pas}}","no":"Varmtvannsmodusen !{{er|er ikke}}","ar":"وضع الماء الساخن !{{هو|ليس}}","de":"Der Warmwassermodus !{{ist|ist nicht}}"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}],"actions":[{"id":"set_hot_water_mode","title":{"en":"Set the hot water mode to","nl":"Stel de warmwatermodus in op","da":"Indstil varmtvandstilstanden til","it":"Imposta la modalità acqua calda su","ko":"온수 모드를 다음으로 설정","pl":"Ustaw tryb ciepłej wody na","ru":"Установить режим нагрева воды на","sv":"Ställ in varmvattenläget på","es":"Ajustar el modo de agua caliente en","fr":"Définir le mode eau chaude sur","no":"Sett varmtvannsmodusen til","ar":"ضبط وضع الماء الساخن على","de":"Stelle den Warmwassermodus auf"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.2.0"}')},9294:e=>{"use strict";e.exports=function(e,t,a){var r,i=" ",n=e.level,s=e.dataLevel,o=e.schema[t],l=e.schemaPath+e.util.getProperty(t),d=e.errSchemaPath+"/"+t,u=!e.opts.allErrors,m="data"+(s||""),p=e.opts.$data&&o&&o.$data;if(p?(i+=" var schema"+n+" = "+e.util.getData(o.$data,s,e.dataPathArr)+"; ",r="schema"+n):r=o,!p&&"number"!=typeof o)throw new Error(t+" must be number");i+="var division"+n+";if (",p&&(i+=" "+r+" !== undefined && ( typeof "+r+" != 'number' || "),i+=" (division"+n+" = "+m+" / "+r+", ",e.opts.multipleOfPrecision?i+=" Math.abs(Math.round(division"+n+") - division"+n+") > 1e-"+e.opts.multipleOfPrecision+" ":i+=" division"+n+" !== parseInt(division"+n+") ",i+=" ) ",p&&(i+=" ) "),i+=" ) { ";var c=c||[];c.push(i),i="",!1!==e.createErrors?(i+=" { keyword: 'multipleOf' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(d)+" , params: { multipleOf: "+r+" } ",!1!==e.opts.messages&&(i+=" , message: 'should be multiple of ",i+=p?"' + "+r:r+"'"),e.opts.verbose&&(i+=" , schema: ",i+=p?"validate.schema"+l:""+o,i+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),i+=" } "):i+=" {} ";var g=i;return i=c.pop(),!e.compositeRule&&u?e.async?i+=" throw new ValidationError(["+g+"]); ":i+=" validate.errors = ["+g+"]; return false; ":i+=" var err = "+g+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",i+="} ",u&&(i+=" else { "),i}},9331:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Fan speed","nl":"Ventilatorsnelheid","da":"Ventilatorhastighed","it":"Velocità della ventola","ko":"팬 속도","no":"Viftehastighet","pl":"Prędkość wentylatora","ru":"Скорость вентилятора","sv":"Fläkthastighet","es":"Velocidad del ventilador","fr":"Vitesse de ventilation","ar":"سرعة المروحة","de":"Lüftergeschwindigkeit"},"units":{"en":"%","da":"%","it":"%","ko":"%","nl":"%","no":"%","pl":"%","ru":"%","sv":"%","es":"%","fr":" %","ar":"%","de":"%"},"desc":{"en":"The fan speed in percentage.","nl":"De ventilatorsnelheid in procenten.","da":"Ventilatorhastigheden i procent.","it":"La velocità della ventola in percentuale.","ko":"백분율로 표현한 팬 속도입니다.","no":"Viftehastigheten i prosent.","pl":"Prędkość wentylatora w procentach.","ru":"Скорость работы вентилятора в процентах.","sv":"Fläkthastigheten i procent.","es":"La velocidad del ventilador en porcentaje.","fr":"Vitesse de ventilation en pourcentage.","ar":"سرعة المروحة بالنسبة المئوية.","de":"Die Lüftergeschwindigkeit in Prozent."},"insights":true,"chartType":"spline","min":0,"max":1,"decimals":2,"color":"#0091FF","getable":true,"setable":true,"uiComponent":"slider","$flow":{"triggers":[{"id":"fan_speed_changed","title":{"en":"The fan speed changed","nl":"De ventilatorsnelheid is veranderd","da":"Ventilatorhastigheden ændrede sig","it":"La velocità della ventola è cambiata","ko":"팬 속도가 변경되면","no":"Viftehastigheten ble endret","pl":"Prędkość wentylatora zmieniła się","ru":"Скорость вентилятора изменена","sv":"Fläkthastigheten ändrades","es":"La velocidad del ventilador ha cambiado","fr":"La vitesse de ventilation a changé","ar":"تم تغيير سرعة المروحة","de":"Die Lüftergeschwindigkeit wurde geändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":0.5}]}],"actions":[{"id":"set_fan_speed","title":{"en":"Set the fan speed to","nl":"De ventilatorsnelheid instellen op","da":"Indstil ventilatorhastigheden til","it":"Imposta la velocità della ventola su","ko":"팬 속도를 다음으로 설정","no":"Sett viftehastigheten til","pl":"Ustaw prędkość wentylatora na","ru":"Установить скорость вентилятора на","sv":"Ställ in fläkthastigheten på","es":"Ajustar la velocidad del ventilador a","fr":"Définir la vitesse de ventilation sur","ar":"ضبط سرعة المروحة على","de":"Stelle die Lüftergeschwindigkeit auf"},"args":[{"name":"fan_speed","type":"range","min":0,"max":1,"step":0.01,"value":0.5,"label":"%","labelMultiplier":100,"labelDecimals":0}]}]},"minCompatibility":"12.2.0"}')},9337:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Dishwasher program","nl":"Vaatwasprogramma","da":"Program til opvaskemaskine","it":"Programma lavastoviglie","ko":"식기세척기 운전 모드","pl":"Program zmywarki","ru":"Программа посудомоечной машины","sv":"Diskmaskinsprogram","es":"Programa del lavavajillas","fr":"Programme lave-vaisselle","no":"Oppvaskmaskinprogram","ar":"برنامج غسالة الأطباق","de":"Geschirrspülprogramm"},"desc":{"en":"The current program of the dishwasher.","nl":"Het huidige programma van de vaatwasser.","da":"Opvaskemaskinens aktuelle program.","it":"Il programma attuale della lavastoviglie.","ko":"식기세척기의 현재 프로그램입니다.","pl":"Bieżący program zmywarki.","ru":"Текущая программа посудомоечной машины.","sv":"Diskmaskinens aktuella program.","es":"El programa actual del lavavajillas.","fr":"Le programme actuel du lave-vaisselle.","no":"Oppvaskmaskinens gjeldende program.","ar":"البرنامج الحالي لغسالة الأطباق.","de":"Das aktuelle Programm des Geschirrspülers."},"values":[{"id":"normal","title":{"en":"Normal","nl":"Normaal","da":"Normalt","it":"Normale","ko":"중","pl":"Normalny","ru":"Стандартная","sv":"Normal\\n","es":"Normal","fr":"Normal","no":"Normal","ar":"عادية","de":"Normal"}},{"id":"heavy","title":{"en":"Heavy","nl":"Zwaar","da":"Tungt","it":"Pesante","ko":"강","pl":"Intensywny","ru":"Интенсивная","sv":"Tung","es":"Intensivo","fr":"Intensif","no":"Kraftig","ar":"كبيرة","de":"Stark verschmutzt"}},{"id":"light","title":{"en":"Light","nl":"Licht","da":"Let","it":"Leggero","ko":"약","pl":"Lekki","ru":"Легкая","sv":"Lätt","es":"Rápido","fr":"Rapide","no":"Lett","ar":"خفيفة","de":"Leicht verschmutzt"}}],"color":"#0091FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"dishwasher_program_changed","highlight":true,"title":{"en":"The program changed to","nl":"Het programma is veranderd in","da":"Programmet blev ændret til","it":"Il programma è passato a","ko":"식기세척기 운전 모드가 다음으로 변경되면 ","pl":"Program zmienił się na","ru":"Программа изменена на","sv":"Programmet ändrades till","es":"El programa ha cambiado a","fr":"Le programme du lave-vaisselle est passé à","no":"Programmet ble endret til","ar":"تم تغيير البرنامج إلى","de":"Das Programm wurde geändert auf"},"args":[{"name":"program","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"dishwasher_program_is","title":{"en":"The program is","nl":"Het programma is","da":"Programmet er","it":"Il programma è","ko":"식기세척기 운전 모드가 다음이면","pl":"Program to","ru":"Программа:","sv":"Programmet är","es":"El programa es","fr":"Le programme est","no":"Programmet er","ar":"البرنامج","de":"Das Programm ist"},"args":[{"name":"program","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.2.0"}')},9350:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Lawn Mower","da":"Plæneklipper","de":"Rasenmäher","es":"Cortacésped","fr":"Tondeuse à gazon","it":"Tagliaerba","ko":"잔디깎이","nl":"Grasmaaier","no":"Gressklipper","pl":"Kosiarka","ru":"Газонокосилка","sv":"Gräsklippare","ar":"جزازة العشب"},"description":{"en":"Use this device class for lawn mowers.","da":"Brug denne enhedsklasse til plæneklippere.","de":"Verwenden Sie diese Geräteklasse für Rasenmäher.","es":"Utiliza esta clase de dispositivo para cortadoras de césped.","fr":"Utilisez cette classe d\'appareils pour les tondeuses à gazon.","it":"Utilizza questa classe di dispositivi per i tagliaerba.","ko":"이 디바이스 클래스는 잔디깎이 등 예초기에 사용합니다.","nl":"Gebruik deze apparaatklasse voor grasmaaiers.","no":"Bruk denne enhetsklassen for gressklippere.","pl":"Tej klasy urządzeń należy używać w przypadku kosiarek do trawy.","ru":"Используйте этот класс устройств для газонокосилок.","sv":"Använd den här enhetsklassen för gräsklippare.","ar":"استخدم فئة الجهاز هذه لجزازات العشب."},"minCompatibility":"12.0.0"}')},9411:()=>{},9415:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"TVOC","nl":"VOS","da":"TVOC","it":"TVOC","ko":"총휘발성유기화합물","pl":"Wszystkie LZO","ru":"TVOC","sv":"TVOC","es":"TVOC","fr":"TVOC","no":"TVOC","ar":"المركبات العضوية المتطايرة الإجمالية","de":"TVOC"},"units":{"en":"μg/m³","nl":"μg/m³","da":"μg/m³","it":"μg/m³","ko":"μg/m³","pl":"μg/m³","ru":"мкг/м³","sv":"μg/m³","es":"μg/m³","fr":"μg/m³","no":"μg/m³","ar":"ميكروجرام/م³","de":"μg/m³"},"insights":true,"desc":{"en":"Total volatile organic compounds in micrograms per cubic meter (μg/m³)","nl":"Totale vluchtige organische stoffen in microgram per kubieke meter (μg/m³)","da":"Total mængde flygtige organiske forbindelser i mikrogram pr. kubikmeter (μg/m³)","it":"Composti organici volatili totali in microgrammi per metro cubo (μg/m³)","ko":"입방미터당 마이크로그램(μg/m³) 단위의 휘발성 유기 화합물 총량","pl":"Całkowita ilość lotnych związków organicznych w mikrogramach na metr sześcienny (μg/m³)","ru":"Общее количество летучих органических соединений в микрограммах на кубический метр (мкг/м³)","sv":"Totalt antal flyktiga organiska föreningar i mikrogram per kubikmeter (μg/m³)","es":"Compuestos orgánicos volátiles totales en microgramos por metro cúbico (μg/m³)","fr":"Total des composés organiques volatils en microgrammes par mètre cube (μg/m³)","no":"Total mengde flyktige organiske forbindelser i mikrogram per kubikkmeter (μg/m³)","ar":"المركبات العضوية المتطايرة الإجمالية بالميكروجرام لكل متر مكعب (μg/m³)","de":"Gesamte flüchtige organische Verbindungen in Mikrogramm pro Kubikmeter (μg/m³)"},"chartType":"spline","decimals":2,"color":"#E02020","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_tvoc_changed","title":{"en":"The TVOC level has changed","nl":"Het VOS-niveau is veranderd","da":"TVOC-værdien har ændret sig","it":"Il livello di TVOC è cambiato","ko":"총휘발성유기화합물 수준이 변경되면","no":"TVOC-nivået er endret","pl":"Zmieniła się wartość wszystkich LZO","ru":"Значение TVOC изменилось","sv":"TVOC-värdet har ändrats","es":"El nivel de TVOC ha cambiado","fr":"La valeur du TVOC a changé","ar":"تغير مستوى المركبات العضوية المتطايرة الإجمالية","de":"Der TVOC-Gehalt hat sich verändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":2}]}]},"minCompatibility":"12.2.0"}')},9416:()=>{},9423:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Coffee Machine","nl":"Koffiemachine","de":"Kaffemaschine","fr":"Machine à café","it":"Macchina per il caffè","sv":"Kaffemaskin","no":"Kaffemaskin","es":"Máquina de café","da":"Kaffemaskine","ru":"Кофемашина","pl":"Ekspres do kawy","ko":"커피머신","ar":"آلة تحضير القهوة"},"description":{"en":"Use this device class for coffee machines.","de":"Nutze diese Geräteklasse für Kaffeemaschinen.","fr":"Utilisez cette classe d\'appareil pour les machines à café.","it":"Utilizza questa classe di dispositivi per le macchine per il caffè.","sv":"Använd den här enhetsklassen för kaffemaskiner.","no":"Bruk denne enhetsklassen for kaffemaskiner.","es":"Utiliza esta clase de dispositivo para las máquinas de café.","da":"Brug denne enhedsklasse til kaffemaskiner.","ru":"Используйте этот класс устройств для кофемашин.","pl":"Użyj tej klasy urządzeń dla ekspresów do kawy.","ko":"이 디바이스 클래스는 커피머신에 사용합니다.","ar":"استخدم فئة الجهاز هذه لآلات تحضير القهوة.","nl":"Gebruik deze apparaatklasse voor koffiezetapparaten."}}')},9450:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"HEPA Filter","nl":"HEPA-filter","da":"HEPA-filter","it":"Filtro HEPA","ko":"헤파 필터 사용량","no":"HEPA-filter","pl":"Filtr HEPA","ru":"HEPA-фильтр","sv":"HEPA-filter","es":"Filtro HEPA","fr":"Filtre HEPA","ar":"فلتر HEPA","de":"HEPA-Filter"},"units":{"en":"%","nl":"%","da":"%","it":"%","ko":"%","no":"%","pl":"%","ru":"%","sv":"%","es":"%","fr":" %","ar":"%","de":"%"},"desc":{"en":"The HEPA filter level in percent.","nl":"Het HEPA-filterniveau in procenten.","da":"HEPA-filterets niveau i procent.","it":"Il livello del filtro HEPA in percentuale.","ko":"백분율로 표현한 HEPA 필터 수준입니다.","no":"HEPA-filternivået i prosent.","pl":"Poziom filtra HEPA w procentach.","ru":"Уровень HEPA-фильтра в процентах.","sv":"HEPA-filtrets nivå i procent.","es":"El nivel del filtro HEPA en porcentaje.","fr":"Le niveau du filtre HEPA en pourcentage.","ar":"مستوى فلتر HEPA بالنسبة المئوية.","de":"Der HEPA-Filterwert in Prozent."},"min":0,"max":100,"color":"#6236FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_hepa_filter_changed","highlight":true,"title":{"en":"The HEPA filter level changed","nl":"Het HEPA-filterniveau is veranderd","da":"HEPA-filterets niveau ændrede sig","it":"Il livello del filtro HEPA è cambiato","ko":"헤파 필터 수준이 변경되면","no":"HEPA-filternivået ble endret","pl":"Zmienił się poziom filtra HEPA","ru":"Уровень HEPA-фильтра изменился","sv":"HEPA-filternivån ändrades","es":"El nivel del filtro HEPA ha cambiado","fr":"Le niveau du filtre HEPA est passé à","ar":"تغير مستوى فلتر HEPA","de":"Der HEPA-Filterwert hat sich geändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":50}]}]},"minCompatibility":"12.2.0"}')},9480:e=>{"use strict";e.exports=function(e,t,a){var r=" ",i=e.level,n=e.dataLevel,s=e.schema[t],o=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+"/"+t,d=!e.opts.allErrors,u="data"+(n||""),m="valid"+i,p="errs__"+i,c=e.util.copy(e),g="";c.level++;var h="valid"+c.level,v=s.every((function(t){return e.opts.strictKeywords?"object"==typeof t&&Object.keys(t).length>0:e.util.schemaHasRules(t,e.RULES.all)}));if(v){var f=c.baseId;r+=" var "+p+" = errors; var "+m+" = false; ";var k=e.compositeRule;e.compositeRule=c.compositeRule=!0;var y=s;if(y)for(var b,w=-1,z=y.length-1;w{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Occupancy Alarm","nl":"Bezettingsalarm","da":"Beboelsesalarm","it":"Allarme occupazione","ko":"점유 감지","no":"Bruksalarm","pl":"Alarm aktywności","ru":"Сигнал активности","sv":"Närvarolarm","es":"Alarma de ocupación","fr":"Alarme d\'occupation","ar":"إنذار الإشغال","de":"Belegungsalarm"},"titleShort":{"en":"Occupancy","nl":"Bezetting","da":"Beboelse","it":"Occupazione","ko":"재실","no":"Bruk","pl":"Zajętość","ru":"Занятость","sv":"Närvaro","es":"Ocupación","fr":"Occupation","ar":"الإشغال","de":"Belegung"},"desc":{"en":"True when occupancy is detected.","nl":"Wordt geactiveerd wanneer gebruik wordt gedetecteerd.","da":"Sandt, når tilstedeværelse registreres.","it":"Vero quando viene rilevata l\'occupazione.","ko":"내부에 사람이 감지되면 참입니다.","no":"Sann når bruk er registrert.","pl":"Prawda, gdy wykryta jest zajętość.","ru":"Значение «истина» при обнаружении занятости.","sv":"Sant när närvaro detekteras.","es":"Activado cuando se detecta ocupación.","fr":"Se déclenche lorsque une occupation est détectée.","ar":"صحيح عند اكتشاف إشغال.","de":"Wahr, wenn eine Belegung erkannt wird."},"insights":true,"insightsTitleTrue":{"en":"Occupancy alarm turned on","nl":"Waarschuwing bij gebruik geactiveerd","da":"Tilstedeværelsesalarm slået til","it":"Allarme occupazione acceso","ko":"점유 감지됨","no":"Bruksalarm aktivert","pl":"Alarm zajętości włączony","ru":"Сигнал о занятости включен","sv":"Närvarolarm aktiverat","es":"Alarma de ocupación activada","fr":"Alarme d\'occupation activée","ar":"تم تشغيل إنذار الإشغال","de":"Belegungsalarm eingeschaltet"},"insightsTitleFalse":{"en":"Occupancy alarm turned off","nl":"Waarschuwing bij gebruik gedeactiveerd","da":"Tilstedeværelsesalarm slået fra","it":"Allarme occupazione spento","ko":"점유 감지되지 않음","no":"Bruksalarm deaktivert","pl":"Alarm zajętości wyłączony","ru":"Сигнал о занятости выключен","sv":"Närvarolarm inaktiverat","es":"Alarma de ocupación desactivada","fr":"Alarme d\'occupation désactivée","ar":"تم إيقاف إنذار الإشغال","de":"Belegungsalarm ausgeschaltet"},"color":"#32C5FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_occupancy_true","highlight":true,"title":{"en":"The occupancy alarm turned on","nl":"De waarschuwing bij gebruik is geactiveerd","da":"Tilstedeværelsesalarmen er slået til","it":"L\'allarme occupazione si è acceso","ko":"점유가 감지되면","no":"Bruksalarmen ble aktivert","pl":"Włączył się alarm zajętości","ru":"Сигнал о занятости включен","sv":"Närvarolarmet aktiverat","es":"La alarma de ocupación se ha activado","fr":"L\'alarme d\'occupation s\'est activée","ar":"تم تشغيل إنذار الإشغال","de":"Der Belegungsalarm hat sich eingeschaltet"}},{"id":"alarm_occupancy_false","title":{"en":"The occupancy alarm turned off","nl":"De waarschuwing bij gebruik is gedeactiveerd","da":"Tilstedeværelsesalarmen er slået fra","it":"L\'allarme occupazione si è spento","ko":"점유가 감지되지 않으면","no":"Bruksalarmen ble deaktivert","pl":"Wyłączył się alarm zajętości","ru":"Сигнал о занятости выключен","sv":"Närvarolarmet inaktiverat","es":"La alarma de ocupación se ha desactivado","fr":"L\'alarme d\'occupation s\'est désactivée","ar":"تم إيقاف إنذار الإشغال","de":"Der Belegungsalarm hat sich ausgeschaltet"}}],"conditions":[{"id":"alarm_occupancy","title":{"en":"Is !{{occupied|not occupied}}","nl":"Wordt !{{gebruikt|niet gebruikt}}","da":"Er ! {{beboet|ikke beboet}}","it":"È !{{occupato|non occupato}}","ko":"점유가 감지!{{되면|되지 않으면}}","no":"Er !{{i bruk|ikke i bruk}}","pl":"Jest !{{zajęte|niezajęte}}","ru":"Устройство !{{занято|не занято}}","sv":"Är !{{närvarande|inte närvarande}}","es":"!{{Está ocupado|No está ocupado}}","fr":"Est !{{connectée|déconnectée}}","ar":"!{{مشغول|غير مشغول}}","de":"Ist !{{belegt|nicht belegt}}"}}]},"minCompatibility":"12.2.0"}')},9514:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Valve position","nl":"Kleppositie","da":"Ventilens position","it":"Posizione della valvola","ko":"밸브 열림 정도","pl":"Pozycja zaworu","ru":"Положение клапана","sv":"Ventilposition","es":"Posición de la válvula","fr":"Position de la vanne","no":"Ventilposisjon","ar":"وضع الصمام","de":"Ventilposition"},"units":{"en":"%","nl":"%","da":"%","it":"%","ko":"%","pl":"%","ru":"%","sv":"%","es":"%","fr":" %","no":"%","ar":"%","de":"%"},"desc":{"en":"The current position of the valve in percent.","nl":"De huidige positie van de klep in procenten.","da":"Ventilens aktuelle position i procent.","it":"La posizione attuale della valvola in percentuale.","ko":"백분율로 표현한 밸브의 현재 위치입니다.","pl":"Bieżąca pozycja zaworu w procentach.","ru":"Текущее положение клапана в процентах.","sv":"Ventilens aktuella position i procent.","es":"La posición actual de la válvula en porcentaje.","fr":"Position actuelle de la vanne en pourcentage.","no":"Ventilens nåværende posisjon i prosent.","ar":"الوضع الحالي للصمام بالنسبة المئوية.","de":"Die aktuelle Position des Ventils in Prozent."},"insights":true,"chartType":"spline","decimals":2,"min":0,"max":1,"color":"#0091FF","getable":true,"setable":true,"uiComponent":"slider","$flow":{"triggers":[{"id":"valve_position_changed","title":{"en":"The valve position changed","nl":"De kleppositie is veranderd","da":"Ventilens position er ændret","it":"La posizione della valvola è cambiata","ko":"밸브 열림이 변경되면","pl":"Zmieniła się pozycja zaworu","ru":"Положение клапана изменено","sv":"Ventilens position har ändrats","es":"La posición de la válvula la cambiado","fr":"La position de la vanne a changé","no":"Ventilposisjonen ble endret","ar":"تم تغيير وضع الصمام","de":"Die Position des Ventils wurde geändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":0.5}]}],"actions":[{"id":"set_valve_position","title":{"en":"Set the valve position","nl":"De kleppositie instellen","da":"Indstil ventilens position","it":"Imposta la posizione della valvola","ko":"밸브 열림 정도 변경","pl":"Ustaw pozycję zaworu","ru":"Установить положение клапана","sv":"Ställ in ventilens position","es":"Ajustar la posición de la válvula","fr":"Définir la position de la vanne","no":"Innstill ventilposisjonen","ar":"ضبط موضع الصمام","de":"Einstellen der Ventilposition"},"args":[{"name":"valve_position","type":"range","min":0,"max":1,"step":0.01,"value":0.5,"label":"%","labelMultiplier":100,"labelDecimals":0}]}]},"minCompatibility":"12.2.0"}')},9581:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Odor","nl":"Geur","da":"Lugt","it":"Odore","ko":"냄새","no":"Lukt","pl":"Zapach","ru":"Запах","sv":"Lukt","es":"Olor","fr":"Odeur","ar":"الرائحة","de":"Geruch"},"units":{"en":"OU","nl":"GE","da":"OU","it":"OU","ko":"OU","no":"OU","pl":"ou","ru":"Единицы интенсивности запаха","sv":"OU","es":"OU","fr":"UO","ar":"وحدات الرائحة","de":"OU"},"desc":{"en":"Odor concentration in odor units.","nl":"Geurconcentratie in geureenheden.","da":"Lugtkoncentration i lugtenheder.","it":"Concentrazione di odori in unità di odore.","ko":"OU(Odor Unit) 단위의 냄새 농도입니다.","no":"Luktkonsentrasjon i luktenheter.","pl":"Stężenie zapachowe w jednostkach zapachowych.","ru":"Концентрация запаха в единицах интенсивности запаха.","sv":"Luktkoncentration i luktenheter.","es":"Concentración de olor en unidades olfativas.","fr":"Concentration d\'odeur en unités d\'odeur.","ar":"تركيز الرائحة بوحدات الرائحة.","de":"Geruchskonzentration in Geruchseinheiten."},"insights":true,"chartType":"spline","decimals":0,"color":"#E02020","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_odor_changed","title":{"en":"The odor concentration changed","nl":"De geurconcentratie is veranderd","da":"Lugtkoncentrationen ændrede sig","it":"La concentrazione di odori è cambiata","ko":"냄새 농도 변경됨","pl":"Zmieniło się stężenie zapachowe","ru":"Концентрация запаха изменилась","sv":"Luktkoncentrationen förändrades","es":"La concentración de olor ha cambiado","fr":"La concentration d\'odeurs a changé","no":"Luktkonsentrasjonen ble endret","ar":"تغير تركيز الرائحة","de":"Die Geruchskonzentration hat sich geändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":200}]}]},"minCompatibility":"12.2.0"}')},9647:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Siren","da":"Sirene","de":"Sirene","es":"Alarma","fr":"Sirène","it":"Allarme","ko":"사이렌","nl":"Sirene","no":"Sirene","pl":"Syrena","ru":"Сирена","sv":"Siren","ar":"صفارة إنذار"},"description":{"en":"Use this device class for sirens.","da":"Brug denne enhedsklasse til sirener.","de":"Verwenden Sie diese Geräteklasse für Sirenen.","es":"Utiliza esta clase de dispositivo para alarmas.","fr":"Utilisez cette classe d\'appareils pour les sirènes.","it":"Utilizza questa classe di dispositivi per gli allarmi.","ko":"이 디바이스 클래스는 사이렌에 사용합니다.","nl":"Gebruik deze apparaatklasse voor sirenes.","no":"Bruk denne enhetsklassen for sirener.","pl":"Tej klasy urządzeń należy używać w przypadku syren.","ru":"Используйте этот класс устройств для сирен.","sv":"Använd den här enhetsklassen för sirener.","ar":"استخدم فئة الجهاز هذه لصفارات الإنذار."},"minCompatibility":"12.0.0"}')},9735:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"pH level","nl":"pH-waarde","da":"pH-niveau","it":"Livello di pH","ko":"산성도","no":"pH-nivå","pl":"Poziom pH","ru":"Уровень pH","sv":"pH-nivå","es":"nivel de PH","fr":"Niveau de pH","ar":"مستوى الحموضة","de":"pH-Wert"},"desc":{"en":"The pH level of a aqueous solution.","nl":"De pH-waarde van een waterige oplossing.","da":"PH-niveauet i en vandig opløsning.","it":"Il livello di pH di una soluzione acquosa.","ko":"수용액의 pH 수준입니다.","pl":"Poziom pH roztworu wodnego.","ru":"Уровень pH водного раствора.","sv":"pH-värdet i en vattenlösning.","es":"El nivel de pH de una solución acuosa.","fr":"Le pH d\'une solution aqueuse.","no":"pH-nivå for en vandig løsning.","ar":"مستوى الحموضة للمحلول المائي.","de":"Der pH-Wert einer wässrigen Lösung."},"insights":true,"chartType":"spline","decimals":2,"color":"#E02020","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_ph_changed","title":{"en":"The pH level changed","nl":"De pH-waarde is veranderd","da":"PH-niveauet ændrede sig","it":"Il livello di pH è cambiato","ko":"산성도가 변경되면","pl":"Zmienił się poziom pH","ru":"Уровень pH изменился","sv":"pH-nivån förändrades","es":"El nivel de pH ha cambiado","fr":"Le niveau de pH a changé","no":"pH-nivået ble endret","ar":"تغير مستوى الحموضة","de":"Der pH-Wert hat sich geändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":2}]}]},"minCompatibility":"12.2.0"}')},9738:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Sprinkler","da":"Sprinkler","de":"Sprinkleranlage","es":"Aspersor","fr":"Arrosage","it":"Irrigatore","ko":"스프링클러","nl":"Sprinkler","no":"Sprinkler","pl":"Zraszacz","ru":"Спринклер","sv":"Sprinkler","ar":"رشاش"},"description":{"en":"Use this device class for sprinkler systems.","da":"Brug denne enhedsklasse til sprinklersystemer.","de":"Verwenden Sie diese Geräteklasse für Sprinkleranlagen.","es":"Utiliza esta clase de dispositivo para sistemas de riego.","fr":"Utilisez cette classe d\'appareils pour les systèmes d\'arrosage.","it":"Utilizza questa classe di dispositivi per i sistemi di irrigazione.","ko":"이 디바이스 클래스는 스프링클러 시스템에 사용합니다.","nl":"Gebruik deze apparaatklasse voor sprinklersystemen.","no":"Bruk denne enhetsklassen for sprinkleranlegg.","pl":"Tej klasy urządzeń należy używać w instalacjach zraszaczy.","ru":"Используйте этот класс устройств для спринклерных систем.","sv":"Använd den här enhetsklassen för sprinklersystem.","ar":"استخدم فئة الجهاز هذه لأنظمة الرشاشات."},"minCompatibility":"12.0.0"}')},9764:e=>{"use strict";var t=/^GIF8[79]a/;e.exports={detect:function(e){var a=e.toString("ascii",0,6);return t.test(a)},calculate:function(e){return{width:e.readUInt16LE(6),height:e.readUInt16LE(8)}}}},9792:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Power","nl":"Vermogen","de":"Leistung","fr":"Puissance","it":"Potenza","sv":"Effekt","no":"Effekt","es":"Potencia","da":"Effekt","ru":"Электроэнергия","pl":"Moc","ko":"소비 전력","ar":"الطاقة"},"units":{"en":"W","ru":"Вт","ko":"W","ar":"واط","da":"W","de":"W","es":"W","it":"W","nl":"W","no":"W","pl":"W","sv":"W"},"insights":true,"desc":{"en":"Power in watt (W)","nl":"Vermogen in watt (W)","de":"Leistung in Watt (W)","fr":"Puissance en watt (W)","it":"Potenza in watt (W)","sv":"Effekt i watt (W)","no":"Effekt i watt (W)","es":"Potencia en vatios (W)","da":"Effekt i watt (W)","ru":"Электроэнергия (Вт)","pl":"Moc w watach (W)","ko":"전력 와트(W)","ar":"الطاقة بالواط (W)"},"options":{"isApproximated":{"type":"boolean","default":false,"desc":{"en":"This flag is used to determine that the device itself has no power measurement functionality, but that the driver calculates the energy use.","ru":"Этот флаг используется для определения того, что само устройство не имеет функции измерения электроэнергии, но драйвер рассчитывает потребление энергии.","pl":"Flaga oznacza, że samo urządzenie nie ma funkcji pomiaru mocy, ale sterownik oblicza zużycie energii.","ko":"이 플래그는 제품 자체에 전력 측정 기능이 없지만 드라이버가 에너지 사용량을 계산하는 경우에 사용돼요.","no":"Dette flagget brukes til å anmerke at enheten i seg selv ikke har noen funksjon for effektmåling, men at sjåføren beregner energibruken.","es":"Este aviso indica que el dispositivo no dispone de ninguna funcionalidad para medir la energía, sino que el controlador calcula el uso de energía.","ar":"تُستخدم هذه العلامة لتحديد أن الجهاز نفسه لا يحتوي على وظيفة قياس الطاقة، غير أن برنامج التشغيل يحسب استهلاك الطاقة.","da":"Dette flag bruges til at bestemme, at enheden ikke selv har nogen strømmålingsfunktionalitet, men at driveren beregner energiforbruget.","de":"Dieses Flag wird verwendet, um festzustellen, dass das Gerät selbst keine Strommessfunktion hat, sondern dass der Treiber den Energieverbrauch berechnet.","fr":"Cet indicateur sert à signaler que l\'appareil n\'intègre pas de fonction de mesure de la puissance et la consommation d\'énergie est calculée par le pilote.","it":"Questo flag viene utilizzato per indicare che il dispositivo in sé non dispone di una funzionalità di misurazione dell\'energia, ma che il driver calcola il consumo energetico.","nl":"Deze vlag wordt gebruikt om aan te geven dat het apparaat zelf geen functionaliteit voor vermogensmeting heeft, maar dat het stuurprogramma het energieverbruik berekent.","sv":"Denna flagga används för att fastställa att enheten i sig inte har någon funktion för effektmätning, men att drivrutinen beräknar energianvändningen."}}},"chartType":"stepLine","decimals":2,"color":"#6DD400","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_power_changed","highlight":true,"title":{"en":"The power changed","nl":"Het vermogen is veranderd","de":"Die Stromversorgung wurde geändert","fr":"L\'énergie a changé","it":"L\'energia è cambiata","sv":"Strömmen ändrades","no":"Strømmen ble endret","es":"La potencia ha cambiado","da":"Strømmen ændrede sig","ru":"Электроэнергия изменена","pl":"Zmiana mocy","ko":"소비 전력이 변경되면","ar":"تغيرت الطاقة"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":7.5}]}]}}')},9819:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Noise","nl":"Geluid","de":"Lärm","fr":"Bruit","it":"Rumore","sv":"Buller","no":"Støy","es":"Ruido","ru":"Шум","pl":"Hałas","ko":"소음","ar":"الضوضاء","da":"Støj"},"units":{"en":"dB","ru":"дБ","ko":"dB","no":"dB","ar":"ديسيبل","da":"dB","de":"dB","es":"dB","fr":"dB","it":"dB","nl":"dB","pl":"dB","sv":"dB"},"insights":true,"desc":{"en":"Noise in decibel (dB)","nl":"Geluid in decibel (dB)","de":"Lärm in Dezibel (dB)","fr":"Bruit en decibel (dB)","it":"Rumore in decibel (dB)","sv":"Buller i decibel (dB)","no":"Støy i decibel (dB)","es":"Ruido en decibelios (dB)","da":"Støj i decibel (dB)","ru":"Шум в децибелах (дБ)","pl":"Poziom hałasu w decybelach (dB)","ko":"소음 데시벨(dB)","ar":"الضوضاء بالديسيبل (dB)"},"chartType":"spline","decimals":2,"color":"#F7B500","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_noise_changed","title":{"en":"The noise changed","nl":"Het geluidsniveau is veranderd","de":"Der Lärm hat sich geändert","fr":"Le bruit a changé","it":"Il rumore è cambiato","sv":"Bullret ändrades","no":"Støyen ble endret","es":"El ruido ha cambiado","da":"Støjniveauet ændrede sig","ru":"Шум изменился","pl":"Zmiana poziomu hałasu","ko":"소음이 변경되면","ar":"تغيرت الضوضاء"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":43}]}]}}')},9848:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Pet Feeder","da":"Foderautomat til kæledyr","de":"Futterspender","es":"Comedero para mascotas","fr":"Mangeoire pour animaux","it":"Distributore di cibo per animali domestici","ko":"펫 급식기","nl":"Voerbak","no":"Kjæledyrmater","pl":"Karmnik dla zwierząt","ru":"Кормушка для животных","sv":"Foderautomat till husdjur","ar":"مغذية حيوانات أليفة"},"description":{"en":"Use this device class for pet feeders.","da":"Brug denne enhedsklasse til foderautomater til kæledyr.","de":"Verwenden Sie diese Geräteklasse für Futterspender für Haustiere.","es":"Utiliza esta clase de dispositivo para comederos de mascotas.","fr":"Utilisez cette classe d\'appareils pour les mangeoires pour animaux.","it":"Utilizza questa classe di dispositivi per i distributori di cibo per animali domestici.","ko":"이 디바이스 클래스는 사료 급여기에 사용합니다.","nl":"Gebruik deze apparaatklasse voor voerbakken.","no":"Bruk denne enhetsklassen for kjæledyrmatere.","pl":"Tej klasy urządzeń należy używać w przypadku karmników dla zwierząt.","ru":"Используйте этот класс устройств для кормушек для домашних животных.","sv":"Använd den här enhetsklassen för foderautomater till husdjur.","ar":"استخدم فئة الجهاز هذه لمغذيات الحيوانات الأليفة."},"minCompatibility":"12.0.0"}')},9853:e=>{"use strict";e.exports=function(e){for(var t,a=0,r=e.length,i=0;i=55296&&t<=56319&&i{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Safety Alarm","nl":"Veiligheidswaarschuwing","da":"Sikkerhedsalarm","it":"Allarme sicurezza","ko":"위험 감지","no":"Trygghetsalarm","pl":"Alarm bezpieczeństwa","ru":"Сигнал тревоги","sv":"Säkerhetslarm","es":"Alarma de seguridad","fr":"Alarme de sécurité","ar":"إنذار الأمان","de":"Sicherheitsalarm"},"titleShort":{"en":"Safety","nl":"Veiligheid","da":"Sikkerhed","it":"Sicurezza","ko":"안전","no":"Trygghet","pl":"Bezpieczeństwo","ru":"Безопасность","sv":"Säkerhet","es":"Seguridad","fr":"Sécurité","ar":"الأمان","de":"Sicherheit"},"desc":{"en":"True when unsafe.","nl":"Wordt geactiveerd wanneer het onveilig is.","da":"Sandt, når usikker.","it":"Vero quando non sicuro.","ko":"안전하지 않으면 참입니다.","no":"Sann ved utrygge forhold.","pl":"Prawda, gdy nie jest bezpieczne.","ru":"Значение «истина» при возникновении опасности.","sv":"Sant när det är osäkert.","es":"Activado cuando no es seguro.","fr":"Se déclenche en cas d\'insécurité.","ar":"صحيح عندما يكون غير آمن.","de":"Wahr, wenn unsicher."},"insights":true,"insightsTitleTrue":{"en":"Safety alarm turned on","nl":"Veiligheidswaarschuwing geactiveerd","da":"Sikkerhedsalarm slået til","it":"Allarme sicurezza acceso","ko":"위험","no":"Trygghetsalarm aktivert","pl":"Alarm bezpieczeństwa włączony","ru":"Сигнал тревоги включен","sv":"Säkerhetslarm aktiverat","es":"Alarma de seguridad activada","fr":"Alarme de sécurité activée","ar":"تم تشغيل إنذار الأمان","de":"Sicherheitsalarm eingeschaltet"},"insightsTitleFalse":{"en":"Safety alarm turned off","nl":"Veiligheidswaarschuwing gedeactiveerd","da":"Sikkerhedsalarm slået fra","it":"Allarme sicurezza spento","ko":"안전","no":"Trygghetsalarm deaktivert","pl":"Alarm bezpieczeństwa wyłączony","ru":"Сигнал тревоги выключен","sv":"Säkerhetslarm inaktiverat","es":"Alarma de seguridad desactivada","fr":"Alarme de sécurité désactivée","ar":"تم إيقاف إنذار الأمان","de":"Sicherheitsalarm ausgeschaltet"},"color":"#32C5FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_safety_true","highlight":true,"title":{"en":"The safety alarm turned on","nl":"De veiligheidswaarschuwing is geactiveerd","da":"Sikkerhedsalarmen er slået til","it":"L\'allarme sicurezza si è acceso","ko":"위험이면","no":"Trygghetsalarmen ble aktivert","pl":"Włączył się alarm bezpieczeństwa","ru":"Сигнал тревоги включен","sv":"Säkerhetslarmet aktiverat","es":"La alarma de seguridad se ha activado","fr":"L\'alarme de sécurité s\'est activée","ar":"تم تشغيل إنذار الأمان","de":"Der Sicherheitsalarm wurde eingeschaltet"}},{"id":"alarm_safety_false","title":{"en":"The safety alarm turned off","nl":"De veiligheidswaarschuwing is gedeactiveerd","da":"Sikkerhedsalarmen er slået fra","it":"L\'allarme sicurezza si è spento","ko":"안전이면","no":"Trygghetsalarmen ble deaktivert","pl":"Wyłączył się alarm bezpieczeństwa","ru":"Сигнал тревоги выключен","sv":"Säkerhetslarmet inaktiverat","es":"La alarma de seguridad se ha apagado","fr":"L\'alarme de sécurité s\'est désactivée","ar":"تم إيقاف إنذار الأمان","de":"Der Sicherheitsalarm wurde ausgeschaltet"}}],"conditions":[{"id":"alarm_safety","title":{"en":"The safety alarm is !{{on|off}}","nl":"De veiligheidswaarschuwing is !{{geactiveerd|gedeactiveerd}}","da":"Sikkerhedsalarmen er !{{tændt|slukket}}","it":"L\'allarme sicurezza è !{{acceso|spento}}","ko":"!{{위험|안전}}이면","no":"Trygghetsalarmen er !{{på|av}}","pl":"Alarm bezpieczeństwa jest !{{włączony|wyłączony}}","ru":"Сигнал тревоги !{{включен|выключен}}","sv":"Säkerhetslarmet är !{{på|av}}","es":"La alarma de seguridad está !{{activada|desactivada}}","fr":"L\'alarme de sécurité est !{{activée|désactivée}}","ar":"إنذار الأمان !{{يعمل|لا يعمل}}","de":"Der Sicherheitsalarm ist !{{an|aus}}"}}]},"minCompatibility":"12.2.0"}')},9922:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Diffuser","da":"Aromalampe","de":"Zerstäuber","es":"Difusor","fr":"Diffuseur","it":"Diffusore","ko":"디퓨저","nl":"Diffuser","no":"Duftspreder","pl":"Dyfuzor","ru":"Диффузор","sv":"Diffusör","ar":"ناشر رائحة"},"description":{"en":"User this device class for diffusers.","da":"Brug denne enhedsklasse til aromalamper.","de":"Verwenden Sie diese Geräteklasse für Zerstäuber.","es":"Utiliza esta clase de dispositivo para difusores.","fr":"Utilisez cette classe d\'appareil pour les diffuseurs.","it":"Utilizza questa classe di dispositivi per i diffusori.","ko":"이 디바이스 클래스는 디퓨저에 사용합니다.","nl":"Gebruik deze apparaatklasse voor diffusers.","no":"Bruk denne enhetsklassen for duftspredere.","pl":"Tej klasy urządzeń należy używać w przypadku dyfuzorów.","ru":"Используйте этот класс устройств для диффузоров.","sv":"Använd den här enhetsklassen för diffusörer.","ar":"استخدم فئة الجهاز هذه لناشرات الرائحة."},"minCompatibility":"12.0.0"}')},9975:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Formaldehyde","nl":"Formaldehyde","da":"Formaldehyd","it":"Formaldeide","ko":"포름알데히드","pl":"Formaldehyd","ru":"Формальдегид","sv":"Formaldehyd","es":"Formaldehído","fr":"Formaldéhyde","no":"Formaldehyd","ar":"الفورمالديهيد","de":"Formaldehyd"},"units":{"en":"μg/m³","nl":"μg/m³","da":"μg/m³","it":"μg/m³","ko":"μg/m³","pl":"μg/m³","ru":"мкг/м³","sv":"μg/m³","es":"μg/m³","fr":"μg/m³","no":"μg/m³","ar":"ميكروجرام/م³","de":"μg/m³"},"insights":true,"desc":{"en":"Formaldehyde in micrograms per cubic meter (μg/m³)","nl":"Formaldehyde in microgram per kubieke meter (μg/m³)","da":"Formaldehyd i mikrogram pr. kubikmeter (μg/m³)","it":"Formaldeide in microgrammi per metro cubo (μg/m³)","ko":"입방미터당 마이크로그램(μg/m³) 단위의 포름알데히드","pl":"Formaldehyd w mikrogramach na metr sześcienny (μg/m³)","ru":"Формальдегид в микрограммах на кубический метр (мкг/м³)","sv":"Formaldehyd i mikrogram per kubikmeter (μg/m³)","es":"Formaldehído en microgramos por metro cúbico (μg/m³)","fr":"Formaldéhyde en microgrammes par mètre cube (μg/m³)","no":"Formaldehyd i mikrogram per kubikkmeter (μg/m³)","ar":"الفورمالديهيد بالميكروجرام لكل متر مكعب (μg/m³)","de":"Formaldehyd in Mikrogramm pro Kubikmeter (μg/m³)"},"chartType":"spline","decimals":2,"color":"#8B0000","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_ch2o_changed","title":{"en":"The formaldehyde level changed","nl":"Het formaldehydeniveau is veranderd","da":"Formaldehydniveauet ændrede sig","it":"Il livello di formaldeide è cambiato","ko":"포름알데히드 수준이 변경되면","pl":"Zmienił się poziom formaldehydu","ru":"Уровень формальдегида изменился","sv":"Formaldehydnivån ändrades","es":"El nivel de formaldehído ha cambiado","fr":"Le niveau de formaldéhyde a changé","no":"Formaldehydnivået ble endret","ar":"تم تغيير مستوى الفورمالديهيد","de":"Der Formaldehydgehalt hat sich geändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":2}]}]},"minCompatibility":"12.2.0"}')},9981:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Gas Alarm","nl":"Gasalarm","da":"Gasalarm","fr":"Alarme de gaz","it":"Allarme gas","ko":"가스 감지","no":"Gassalarm","pl":"Alarm gazu","ru":"Сигнал газа","sv":"Gaslarm","es":"Alarma de gas","ar":"إنذار الغاز","de":"Gasalarm"},"titleShort":{"en":"Gas","nl":"Gas","da":"Gas","fr":"Gaz","it":"Gas","ko":"가스","no":"Gass","pl":"Gaz","ru":"Газ","sv":"Gas","es":"Gas","ar":"الغاز","de":"Gas"},"description":{"en":"True when gas is detected","nl":"Wordt geactiveerd wanneer gas wordt gedetecteerd","da":"Sandt, når der registreres gas","fr":"Se déclenche lorsque du gaz est détecté","it":"Vero quando viene rilevato del gas","ko":"가스가 감지되면 참임","no":"Sann når gass er oppdaget","pl":"Prawda, gdy wykryty jest gaz","ru":"Значение «истина» при обнаружении газа","sv":"Sant när gas detekteras","es":"Activado cuando se detecta gas","ar":"صحيح عند اكتشاف غاز","de":"Wahr, wenn Gas erkannt wird"},"insights":true,"insightsTitleTrue":{"en":"Gas alarm turned on","nl":"Gaswaarschuwing geactiveerd","da":"Gasalarm slået til","fr":"Alarme de gaz activée","it":"Allarme gas acceso","ko":"가스 감지됨","no":"Gassalarm aktivert","pl":"Alarm gazu włączony","ru":"Сигнал об утечке газа включен","sv":"Gaslarm aktiverat","es":"Alarma de gas activada","ar":"تم تشغيل إنذار الغاز","de":"Gasalarm eingeschaltet"},"insightsTitleFalse":{"en":"Gas alarm turned off","nl":"Gaswaarschuwing gedeactiveerd","da":"Gasalarm slået fra","fr":"Alarme de gaz désactivée","it":"Allarme gas spento","ko":"정상","no":"Gassalarm deaktivert","pl":"Alarm gazu wyłączony","ru":"Сигнал об утечке газа выключен","sv":"Gaslarm inaktiverat","es":"Alarma de gas desactivada","ar":"تم إيقاف إنذار الغاز","de":"Gasalarm ausgeschaltet"},"color":"#F9236C","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_gas_true","highlight":true,"title":{"en":"The gas alarm turned on","nl":"De gaswaarschuwing is geactiveerd","da":"Gasalarmen tændte","fr":"L\'alarme de gaz s\'est activée","it":"L\'allarme gas si è acceso","ko":"가스가 감지되면","no":"Gassalarmen ble aktivert","pl":"Włączył się alarm gazu","ru":"Сигнал об утечке газа включен","sv":"Gaslarmet aktiveras","es":"La alarma de gas se ha activado","ar":"تم تشغيل إنذار الغاز","de":"Der Gasalarm wurde eingeschaltet"}},{"id":"alarm_gas_false","title":{"en":"The gas alarm turned off","nl":"De gaswaarschuwing is gedeactiveerd","da":"Gasalarmen slukkede","it":"L\'allarme gas si è spento","ko":"가스 감지가 정상 상태이면","no":"Gassalarmen ble deaktivert","pl":"Wyłączył się alarm gazu","ru":"Сигнал об утечке газа выключен","sv":"Gaslarmet inaktiverat","es":"La alarma de gas se ha desactivado","fr":"L\'alarme de gaz s\'est désactivée","ar":"تم إيقاف إنذار الغاز","de":"Der Gasalarm wurde ausgeschaltet"}}],"conditions":[{"id":"alarm_gas","title":{"en":"The gas alarm is !{{on|off}}","nl":"De gaswaarschuwing is !{{geactiveerd|gedeactiveerd}}","da":"Gasalarmen er slået !{{til|fra}}","it":"L\'allarme gas è !{{acceso|spento}}","ko":"!{{가스가 감지되면|가스 감지가 정상 상태이면}}","no":"Gassalarmen er !{{på|av}}","pl":"Alarm gazu jest !{{włączony|wyłączony}}","ru":"Сигнал об утечке газа !{{включен|выключен}}","sv":"Gaslarmet är !{{på|av}}","es":"La alarma de gas está !{{activada|desactivada}}","fr":"L\'alarme de gaz est !{{activée|désactivée}}","ar":"إنذار الغاز !{{يعمل|لا يعمل}}","de":"Der Gasalarm ist !{{an|aus}}"}}]},"minCompatibility":"12.2.0"}')}},t={};function a(r){var i=t[r];if(void 0!==i)return i.exports;var n=t[r]={exports:{}};return e[r].call(n.exports,n,n.exports,a),n.exports}return a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a(5237)})())); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.HomeyLib=t():e.HomeyLib=t()}(self,(()=>(()=>{var e={6:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Mop","da":"Moppe","de":"Mopp","es":"Limpiasuelos","fr":"Balai à franges","it":"Lavapavimenti","ko":"물걸레 청소기","nl":"Mop","no":"Mopp","pl":"Mop","ru":"Швабра","sv":"Mopp","ar":"ممسحة"},"description":{"en":"Use this device class for mops, e.g. a robot mop.","da":"Brug denne enhedsklasse til mopper, f.eks. en robotmoppe.","de":"Verwenden Sie diese Geräteklasse für Mopps, z. B. für Wischroboter.","es":"Utiliza esta clase de dispositivo para equipos y utensilios para limpiar el suelo (por ej., un robot limpiasuelos).","fr":"Utilisez cette classe d\'appareils pour les balais à franges, par exemple un balai robot.","it":"Utilizza questa classe di dispositivi per i lavapavimenti, es. un robot lavapavimenti.","ko":"이 디바이스 클래스는 물걸레 로봇청소기 등 물걸레 청소기에 사용합니다.","nl":"Gebruik deze apparaatklasse voor moppen, bijvoorbeeld een robotmop.","no":"Bruk denne enhetsklassen for mopper, f.eks. en robotmopp.","pl":"Tej klasy urządzeń należy używać w przypadku mopów, np. mopów-robotów.","sv":"Använd den här enhetsklassen för moppar, t.ex. en robotmopp.","ru":"Используйте этот класс устройств для швабр, например, роботов-швабр.","ar":"استخدم فئة الجهاز هذه للممسحات، مثل الممسحة الآلية."},"minCompatibility":"12.0.0"}')},17:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Moisture","nl":"Vochtigheid","da":"Fugt","it":"Umidità","ko":"습기","no":"Fukt","pl":"Wilgoć","ru":"Влажность","sv":"Fukt","es":"Humedad","fr":"Humidité","ar":"الرطوبة","de":"Feuchtigkeit"},"units":{"en":"%","nl":"%","da":"%","it":"%","ko":"%","no":"%","pl":"%","ru":"%","sv":"%","es":"%","fr":" %","ar":"%","de":"%"},"desc":{"en":"The moisture level in percentage.","nl":"Het vochtigheidsniveau in procenten.","da":"Fugtniveauet i procent.","it":"Il livello di umidità in percentuale.","ko":"백분율로 표현한 습기 수준입니다.","no":"Fuktnivået i prosent.","pl":"Poziom wilgoci w procentach.","ru":"Уровень влажности в процентах.","sv":"Fuktnivån i procent.","es":"El nivel de humedad en porcentaje.","fr":"Le niveau d\'humidité en pourcentage.","ar":"مستوى الرطوبة بالنسبة المئوية.","de":"Der Feuchtigkeitsgehalt in Prozent."},"insights":true,"chartType":"spline","decimals":2,"min":0,"max":100,"color":"#FFA07A","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_moisture_changed","title":{"en":"The moisture level changed","nl":"Het vochtigheidsniveau is veranderd","da":"Fugtniveauet ændrede sig","it":"Il livello di umidità è cambiato","ko":"습기 수준이 변경되면","no":"Fuktnivået ble endret","pl":"Zmienił się poziom wilgoci","ru":"Уровень влажности изменился","sv":"Fuktnivån ändrades","es":"El nivel de humedad ha cambiado","fr":"Le niveau d\'humidité a changé","ar":"تغير مستوى الرطوبة","de":"Der Feuchtigkeitsgehalt hat sich geändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":50}]}]},"minCompatibility":"12.2.0"}')},51:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"PM1","nl":"PM1","de":"PM1","fr":"PM1","it":"PM1","sv":"PM1","no":"PM1","es":"PM1","ru":"ТЧ1","pl":"PM1","ko":"극초미세먼지(PM1.0)","da":"PM1","ar":"PM1"},"units":{"en":"μg/m³","ru":"мкг/м³","ko":"μg/m³","no":"μg/m³","da":"μg/m³","it":"μg/m³","nl":"μg/m³","pl":"μg/m³","sv":"μg/m³","es":"μg/m³","fr":"μg/m³","ar":"ميكرو جرام/م³","de":"μg/m³"},"insights":true,"desc":{"en":"Atmospheric particulate matter (μg/m³)","nl":"Zwevende deeltjes (μg/m³)","de":"Atmosphärischer Feinstaub (μg/m³)","fr":"Particules en suspension (μg/m³)\\n","it":"Particolato atmosferico (μg/m³)","sv":"Atmosfäriskt partikelämne (μg/m³)","no":"Svevestøv (μg/m³)","es":"Partículas atmosféricas (μg/m³)","da":"Atmosfæriske partikler (μg/m³)","ru":"Твердые частицы в воздухе (мкг/м³)","pl":"Pył zawieszony w powietrzu (μg/m³)","ko":"대기 중 미세입자 수(μg/m³)","ar":"الجسيمات المعلقة في الغلاف الجوي (ميكروجرام/م³)"},"chartType":"spline","decimals":2,"color":"#E02020","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_pm1_changed","title":{"en":"The PM1 value has changed","nl":"De PM1-waarde is veranderd","de":"Der PM1-Wert hat sich geändert","fr":"La valeur PM1 a changé","it":"Il valore di PM1 è cambiato","sv":"PM1-värdet har ändrats","no":"PM1-verdien er endret","es":"El valor de PM1 ha cambiado","da":"PM1-værdien har ændret sig","ru":"Значение ТЧ1 изменилось","pl":"Zmieniła się wartość PM1","ko":"극초미세먼지(PM1.0) 값이 변경되면","ar":"تغيرت قيمة PM1"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":2}]}]},"minCompatibility":"12.2.0"}')},77:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Tamper Alarm","nl":"Sabotagealarm","de":"Manipulationsalarm","fr":"Alarme de sabotage","it":"Allarme manomissione","sv":"Sabotagelarm","no":"Sabotasjealarm","es":"Alarma de manipulación","da":"Sabotagealarm","ru":"Сигнал о несанкционированном доступе","pl":"Alarm antyingerencyjny","ko":"변화 감지","ar":"إنذار التلاعب"},"titleShort":{"en":"Tamper","nl":"Sabotage","de":"Manipulation","fr":"Sabotage","it":"Manomissione","sv":"Sabotage","no":"Sabotasje","es":"Manipulación","da":"Forstyr","ru":"Несанкционированный доступ","pl":"Niepożądana ingerencja","ko":"탬퍼","ar":"التلاعب"},"desc":{"en":"True when tampering has been detected","nl":"Gaat af als sabotage gedetecteerd wordt","de":"True, wenn Sabotage erkannt wurde","fr":"Vrai si l\'alarme sabotage a été détectée","it":"Vero quando è stata rilevata una manomissione","sv":"Sant när sabotage upptäckts","no":"Sann når sabotasje har blitt påvist","es":"Activado cuando se detecta manipulación","da":"Sandt, når sabotage er blevet opdaget","ru":"Значение «истина» при обнаружении попытки взлома","pl":"Adekwatny, kiedy wykryta zostanie ingerencja","ko":"변조가 감지되면 참","ar":"صحيح عند اكتشاف تلاعب"},"insights":true,"insightsTitleTrue":{"en":"Tamper alarm turned on","nl":"Sabotagealarm ging af","de":"Sabotage-Alarm ist angegangen","fr":"Alarme sabotage s\'est activée","it":"Allarme manomissione attivato","sv":"Sabotagelarm aktiverat","no":"Sabotasjealarm aktivert","es":"Alarma de manipulación activada","da":"Sabotagealarm blev aktiveret","ru":"Противовзломный сигнал включен","pl":"Alarm antyingerencyjny włączony","ko":"변화 감지됨","ar":"تم تشغيل إنذار التلاعب"},"insightsTitleFalse":{"en":"Tamper alarm turned off","nl":"Sabotagealarm ging uit","de":"Sabotage-Alarm ist ausgegangen","fr":"Alarme sabotage s\'est désactivée","it":"Allarme manomissione disattivato","sv":"Sabotagelarm inaktiverat","no":"Sabotasjealarm deaktivert","es":"Alarma de manipulación desactivada","da":"Sabotagealarm blev deaktiveret","ru":"Противовзломный сигнал выключен","pl":"Alarm antyingerencyjny wyłączony","ko":"정상","ar":"تم إيقاف إنذار التلاعب"},"color":"#9033FC","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_tamper_true","highlight":true,"title":{"en":"The tamper alarm turned on","nl":"Het sabotagealarm gaat aan","de":"Der Sabotage-Alarm ist angegangen","fr":"L\'alarme sabotage s\'est activée","it":"L\'allarme manomissione è stato attivato","sv":"Sabotagelarmet aktiverat","no":"Sabotasjealarmen ble aktivert","es":"La alarma de manipulación se ha activado","da":"Sabotagealarmen blev aktiveret","ru":"Противовзломный сигнал включен","pl":"Alarm antyingerencyjny włączony","ko":"변화가 감지되면","ar":"تم تشغيل إنذار التلاعب"}},{"id":"alarm_tamper_false","title":{"en":"The tamper alarm turned off","nl":"Het sabotagealarm gaat uit","de":"Der Sabotage-Alarm ist ausgegangen","fr":"L\'alarme sabotage s\'est désactivée","it":"L\'allarme manomissione è stato disattivato","sv":"Sabotagelarmet inaktiverat","no":"Sabotasjealarmenen ble deaktivert","es":"La alarma de manipulación se ha desactivado","da":"Sabotagealarmen blev deaktiveret","ru":"Противовзломный сигнал выключен","pl":"Alarm antyingerencyjny wyłączony","ko":"변화 감지가 정상 상태이면","ar":"تم إيقاف إنذار التلاعب"}}],"conditions":[{"id":"alarm_tamper","title":{"en":"The tamper alarm is !{{on|off}}","nl":"Het sabotagealarm is !{{aan|uit}}","de":"Der Sabotage-Alarm ist !{{an|aus}}","fr":"L\'alarme sabotage est !{{en marche|arrêtée}}","it":"L\'allarme manomissione è !{{acceso|spento}}","sv":"Sabotagelarmet är !{{på|av}}","no":"Sabotasjealarmen er !{{på|av}}","es":"La alarma de manipulación está !{{activada|desactivada}}","da":"Sabotagealarmen er !{{tændt|slukket}}","ru":"Противовзломный сигнал !{{вкл.|выкл.}}","pl":"Alarm antyingerencyjny jest !{{włączony|wyłączony}}","ko":"!{{변화가 감지되면|변화 감지가 정상 상태이면}}","ar":"إنذار التلاعب !{{يعمل|لا يعمل}}"}}]}}')},104:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Current","nl":"Stroom","de":"Strom","fr":"Courant","it":"Corrente","sv":"Ström","no":"Strøm","es":"Corriente","da":"Strøm","ru":"Текущее значение","pl":"Prąd","ko":"전류","ar":"التيار"},"units":{"en":"A","ko":"A","no":"A","ru":"A","ar":"أمبير","da":"A","de":"A","es":"A","fr":"A","it":"A","nl":"A","pl":"A","sv":"A"},"insights":true,"desc":{"en":"Electric current (A)","nl":"Elektrische stroom (A)","de":"Elektrischer Strom (A)","fr":"Courant électrique (A)","it":"Corrente elettrica (A)","sv":"Elektrisk ström (A)","no":"Elektrisk strøm (A)","es":"Corriente eléctrica (A)","da":"Elektrisk strøm (A)","ru":"Электрический ток (А)","pl":"Prąd elektryczny (A)","ko":"전류(A)","ar":"التيار الكهربائي (أمبير)"},"chartType":"stepLine","decimals":2,"color":"#6DD400","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_current_changed","title":{"en":"The electric current changed","nl":"De elektrische stroom is veranderd","de":"Der elektrische Strom hat sich geändert","fr":"Le courant électrique a changé","it":"La corrente elettrica è cambiata","sv":"Den elektriska strömmen ändrades","no":"Den elektriska strømmen ble endret","es":"La corriente eléctrica ha cambiado","da":"Den elektriske strøm ændrede sig","ru":"Электрический ток изменился","pl":"Zmiana prądu elektrycznego","ko":"전류가 변경되면","ar":"تغير التيار الكهربائي"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":7.5}]}]}}')},140:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Home alarm state","nl":"Thuisalarm status","de":"Heim-Alarm-Status","fr":"Etat de l\'alarme de maison","it":"Stato dell\'allarme domestico","sv":"Hemlarmsstatus","no":"Hjemmealarmstatus","es":"Estado de la alarma doméstica","da":"Hjemmealarmstatus","ru":"Состояние домашней сигнализации","pl":"Stan alarmu domowego","ko":"홈 알람 상태","ar":"حالة إنذار المنزل"},"values":[{"id":"armed","title":{"en":"Armed","nl":"Geactiveerd","de":"scharf","fr":"Armé","it":"Attivato","sv":"Larmat","no":"Aktivert","es":"Activada","da":"Aktiveret","ru":"Готова","pl":"Uzbrojony","ko":"경보 활성화됨","ar":"مجهز"}},{"id":"disarmed","title":{"en":"Disarmed","nl":"Gedeactiveerd","de":"unscharf","fr":"Désarmé","it":"Disattivato","sv":"Avlarmat","no":"Deaktivert","es":"Desactivada","da":"Deaktiveret","ru":"не готова","pl":"rozbrojony","ko":"경보 해제됨","ar":"غير مجهز"}},{"id":"partially_armed","title":{"en":"Partially armed","nl":"Deels geactiveerd","de":"teilweise scharf","fr":"Partiellement armé","it":"Parzialmente attivato","sv":"Delvis larmat","no":"Delvis aktivert","es":"Parcialmente activada","da":"Delvist aktiveret","ru":"Частично готова","pl":"Częściowo uzbrojony","ko":"경보 부분 활성화됨","ar":"مجهز جزئيًا"}}],"color":"#0091FF","getable":true,"setable":true,"uiComponent":"picker","$flow":{"triggers":[{"id":"homealarm_state_changed","title":{"en":"The state changed","nl":"De status is veranderd","de":"Der Status hat sich geändert","fr":"L\'état a été modifié","it":"Lo stato è cambiato","sv":"Statusen ändrad","no":"Statusen ble endret","es":"El estado ha cambiado","da":"Status ændret","ru":"Состояние изменено","pl":"Zmiana stanu","ko":"홈 알람 상태가 변경되면","ar":"تم تغيير الحالة"},"args":[{"name":"state","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"homealarm_state_is","title":{"en":"The state is !{{|not}}","nl":"De status is !{{|niet}}","de":"Der Status ist !{{|nicht}}","fr":"L\'état !{{est|n\'est pas}}","it":"Lo stato è !{{|non}}","sv":"Statusen är !{{|inte}}","no":"Statusen er !{{|ikke}}","es":"El estado !{{|no}} es","da":"Status er !{{|ikke}}","ru":"Состояние — !{{|не}}","pl":"Stan to !{{|nie}}","ko":"홈 알람 상태가 다음!{{이면|이 아니면}}","ar":"الحالة !{{هي|ليست}}"},"args":[{"name":"state","type":"dropdown","values":"$values"}]}],"actions":[{"id":"set_homealarm_state","title":{"en":"Set state","nl":"Zet de status","de":"Status setzen","fr":"Définir l\'état","it":"Imposta stato","sv":"Ställ in status","no":"Innstill status","es":"Definir estado","da":"Indstil status","ru":"Установить состояние","pl":"Ustaw stan","ko":"홈 알람 상태 설정","ar":"ضبط الحالة"},"$filter":{"capabilities":"homealarm_state"},"args":[{"name":"state","type":"dropdown","values":"$values"}]}]}}')},175:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Boiler","da":"Kedel","de":"Heizkessel","es":"Caldera","fr":"Chaudière","it":"Caldaia","ko":"보일러","nl":"Boiler","no":"Varmtvannsbereder","pl":"Boiler","ru":"Котел","sv":"Värmepanna","ar":"سخان مياه"},"description":{"en":"Use this device class for any kind of boiler, e.g. heatpump boiler, gas boiler, hot water boiler, central heating boiler.","da":"Brug denne enhedsklasse til enhver form for kedel, f.eks. varmepumpekedel, gaskedel, varmtvandskedel, centralvarmekedel.","de":"Verwenden Sie diese Geräteklasse für jede Art von Heizkessel, z. B. Wärmepumpenkessel, Gaskessel, Warmwasserboiler, Zentralheizungskessel.","es":"Utiliza esta clase de dispositivo para cualquier tipo de calentador (por ej., caldera de bomba de calor, caldera de gas, caldera de agua caliente, caldera de calefacción central, etc.).","fr":"Utilisez cette classe d\'appareils pour tout type de chaudière, par exemple une chaudière à pompe à chaleur, une chaudière à gaz, une chaudière à eau chaude, une chaudière de chauffage central.","it":"Utilizza questa classe di dispositivi per qualsiasi tipo di caldaia, es. caldaia a pompa di calore, caldaia a gas, caldaia ad acqua, caldaia con riscaldamento centralizzato.","ko":"이 디바이스 클래스는 히트펌프 보일러, 가스 보일러, 온수 보일러, 중앙난방 보일러 등 모든 종류의 보일러에 사용합니다.","nl":"Gebruik deze apparaatklasse voor elk type boiler, bijv. warmtepompboiler, gasketel, warmwaterboiler, cv-ketel.","no":"Bruk denne enhetsklassen for alle slags varmtvannsberedere, f.eks. varmepumpebereder, gassbereder, varmtvannsbereder, sentral storbereder.","pl":"Tej klasy urządzeń należy używać do każdego rodzaju boilera, np. z pompą ciepła, gazowego, na ciepłą wodę, centralnego ogrzewania.","ru":"Используйте этот класс устройств для котлов любого типа, например, котла с тепловым насосом, газового котла, водонагревательного котла, котла центрального отопления.","sv":"Använd den här enhetsklassen för alla typer av pannor, t.ex. värmepumpspannor, gaspannor, varmvattenpannor, centralvärmepannor.","ar":"استخدم فئة الجهاز هذه لأي نوع من سخانات المياه، مثل سخان مياه بمضخة حرارية، سخان غاز، سخان مياه ساخنة، سخان تدفئة مركزية."},"minCompatibility":"12.0.0"}')},178:(e,t,a)=>{"use strict";const r=a(2963),i=a(7177),n=a(7589),s=new Set(["blake2b512","blake2s256","sha256","sha384","sha512","sha512-256","sha3-256","sha3-384","sha3-512"]);async function o(e,t="sha256"){return new Promise(((a,n)=>{const s=r.createHash(t),o=i.createReadStream(e);o.on("error",n),o.on("data",(e=>s.update(e))),o.on("end",(()=>a(s.digest("hex"))))}))}e.exports={hashFile:o,getIntegrity:async function(e,t="sha256"){const a=String(t||"").toLowerCase();if(!s.has(a))throw new Error("Hash algorithm is not allowed for integrity checks");return`${a}:${await o(e,a)}`},validateIntegrity:async function(e,t){if("string"!=typeof t)throw new TypeError("Integrity must be a string");const a=t.split(":");if(2!==a.length||!a[0]||!a[1])throw new Error('Integrity must be in the format "hashName:hexDigest"');const[r,i]=a;return await o(e,r)===i.toLowerCase()},getOTAFilePath:function({appPath:e,driverId:t,fileName:a}){return n.join(e||"","drivers",t,"assets","firmware",a)}}},212:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"CO₂ Alarm","nl":"CO₂-alarm","de":"CO₂-Alarm","fr":"Alarme CO₂","it":"Allarme CO₂","no":"CO₂-alarm","es":"Alarma de CO₂","da":"CO₂-alarm","ru":"Сигнал CO₂","pl":"Alarm CO₂","ko":"CO₂ 알람","ar":"إنذار ثاني أكسيد الكربون","sv":"CO₂-larm"},"titleShort":{"en":"CO₂","nl":"CO₂","de":"CO₂","fr":"CO₂","it":"CO₂","no":"CO₂","es":"CO₂","da":"CO₂","ru":"CO₂","pl":"CO₂","ko":"CO₂","ar":"ثاني أكسيد الكربون","sv":"CO₂"},"desc":{"en":"True when dangerous CO₂ values have been detected","nl":"Gaat af bij gevaarlijke concentraties CO₂","de":"Wahr, wenn gefährliche CO₂-Werte erkannt wurden","fr":"Vrai en cas de valeurs dangereuses de CO₂ détectées","it":"Vero quando sono stati rilevati valori pericolosi di CO₂","no":"Sant når farlige CO₂-verdier har blitt påvist","es":"Verdadero cuando se han detectado valores peligrosos de CO₂","da":"Sandt, når farlige CO₂-værdier er blevet opdaget","ru":"Значение «истина» при обнаружении опасных значений CO₂","pl":"Prawda, gdy wykryto niebezpieczne wartości CO₂","ko":"위험한 CO₂ 값이 감지되면 참","ar":"صحيح عند اكتشاف قيم خطيرة لثاني أكسيد الكربون","sv":"Sant när farliga CO₂-värden har detekterats"},"insights":true,"insightsTitleTrue":{"en":"CO₂ alarm turned on","nl":"CO₂-alarm is aan","de":"CO₂-Alarm wurde ausgelöst","fr":"Alarme CO₂ activée","it":"Allarme CO₂ attivato","sv":"CO₂-larm på","no":"CO₂-alarm ble aktivert","es":"Alarma de CO₂ activada","da":"CO₂-alarm aktiveret","ru":"Сигнал CO₂ включен","pl":"Alarm CO₂ włączony","ko":"CO₂ 알람 켜짐","ar":"تم تشغيل إنذار ثاني أكسيد الكربون"},"insightsTitleFalse":{"en":"CO₂ alarm turned off","nl":"CO₂-alarm is uit","de":"CO₂-Alarm wurde deaktiviert","fr":"Alarme CO₂ désactivée","it":"Allarme CO₂ disattivato","sv":"CO₂-larm av","no":"CO₂-alarm ble deaktivert","es":"Alarma de CO₂ desactivada","da":"CO₂-alarm deaktiveret","ru":"Сигнал CO₂ выключен","pl":"Alarm CO₂ wyłączony","ko":"CO₂ 알람 꺼짐","ar":"تم إيقاف إنذار ثاني أكسيد الكربون"},"color":"#E02020","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_co2_true","highlight":true,"title":{"en":"The CO₂ alarm turned on","nl":"Het CO₂-alarm is aan","de":"Der CO₂-Alarm wurde ausgelöst","fr":"L\'alarme CO₂ s\'est activée","it":"L\'allarme CO₂ è stato attivato","sv":"CO₂-larmet på","no":"CO₂-alarmen ble aktivert","es":"Se ha activado la alarma de CO₂","da":"CO₂-alarmen blev aktiveret","ru":"Сигнал CO₂ включен","pl":"Alarm CO₂ włączony","ko":"CO₂ 알람이 켜지면","ar":"تم تشغيل إنذار ثاني أكسيد الكربون"}},{"id":"alarm_co2_false","title":{"en":"The CO₂ alarm turned off","nl":"Het CO₂-alarm is uit","de":"Der CO₂-Alarm wurde deaktiviert","fr":"L\'alarme CO₂ s\'est désactivée","it":"L\'allarme CO₂ è stato disattivato","sv":"CO₂-larmet av","no":"CO₂-alarmen ble deaktivert","es":"Se ha desactivado la alarma de CO₂","da":"CO₂-alarmen blev deaktiveret","ru":"Сигнал CO₂ выключен","pl":"Alarm CO₂ wyłączony","ko":"CO₂ 알람이 꺼지면","ar":"تم إيقاف إنذار ثاني أكسيد الكربون"}}],"conditions":[{"id":"alarm_co2","title":{"en":"The CO₂ alarm is !{{on|off}}","nl":"Het CO₂-alarm staat !{{aan|uit}}","de":"Der CO₂-Alarm ist !{{an|aus}}","fr":"L\'alarme CO₂ est !{{activée|désactivée}}","it":"L\'allarme CO₂ è !{{attivato|disattivato}}","sv":"CO₂-larmet är !{{på|av}}","no":"CO₂-alarmen er !{{på|av}}","es":"La alarma de CO₂ está !{{activada|desactivada}}","da":"CO₂-alarmen er !{{tændt|slukket}}","ru":"Сигнал CO₂ !{{вкл.|выкл.}}","pl":"Alarm CO₂ jest !{{włączony|wyłączony}}","ko":"CO₂ 알람이 !{{켜져 있으면|꺼져 있으면}}","ar":"إنذار ثاني أكسيد الكربون !{{يعمل|لا يعمل}}"}}]}}')},224:e=>{"use strict";e.exports=function(e,t,a){var r=" ",i=e.level,n=e.dataLevel,s=e.schema[t],o=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+"/"+t,d=!e.opts.allErrors,u="data"+(n||""),m="valid"+i,p=e.opts.$data&&s&&s.$data;p&&(r+=" var schema"+i+" = "+e.util.getData(s.$data,n,e.dataPathArr)+"; "),p||(r+=" var schema"+i+" = validate.schema"+o+";"),r+="var "+m+" = equal("+u+", schema"+i+"); if (!"+m+") { ";var c=c||[];c.push(r),r="",!1!==e.createErrors?(r+=" { keyword: 'const' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { allowedValue: schema"+i+" } ",!1!==e.opts.messages&&(r+=" , message: 'should be equal to constant' "),e.opts.verbose&&(r+=" , schema: validate.schema"+o+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),r+=" } "):r+=" {} ";var g=r;return r=c.pop(),!e.compositeRule&&d?e.async?r+=" throw new ValidationError(["+g+"]); ":r+=" validate.errors = ["+g+"]; return false; ":r+=" var err = "+g+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+=" }",d&&(r+=" else { "),r}},251:(e,t)=>{t.read=function(e,t,a,r,i){var n,s,o=8*i-r-1,l=(1<>1,u=-7,m=a?i-1:0,p=a?-1:1,c=e[t+m];for(m+=p,n=c&(1<<-u)-1,c>>=-u,u+=o;u>0;n=256*n+e[t+m],m+=p,u-=8);for(s=n&(1<<-u)-1,n>>=-u,u+=r;u>0;s=256*s+e[t+m],m+=p,u-=8);if(0===n)n=1-d;else{if(n===l)return s?NaN:1/0*(c?-1:1);s+=Math.pow(2,r),n-=d}return(c?-1:1)*s*Math.pow(2,n-r)},t.write=function(e,t,a,r,i,n){var s,o,l,d=8*n-i-1,u=(1<>1,p=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,c=r?0:n-1,g=r?1:-1,h=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(o=isNaN(t)?1:0,s=u):(s=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-s))<1&&(s--,l*=2),(t+=s+m>=1?p/l:p*Math.pow(2,1-m))*l>=2&&(s++,l/=2),s+m>=u?(o=0,s=u):s+m>=1?(o=(t*l-1)*Math.pow(2,i),s+=m):(o=t*Math.pow(2,m-1)*Math.pow(2,i),s=0));i>=8;e[a+c]=255&o,c+=g,o/=256,i-=8);for(s=s<0;e[a+c]=255&s,c+=g,s/=256,d-=8);e[a+c-g]|=128*h}},253:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Cooktop","da":"Kogeplade","de":"Kochfeld","es":"Placa de cocción","fr":"Table de cuisson","it":"Piano cottura","ko":"쿡탑","nl":"Kookplaat","no":"Koketopp","pl":"Płyta grzewcza","ru":"Варочная панель","sv":"Spishäll","ar":"موقد"},"description":{"en":"Use this device class for cooktops.","da":"Brug denne enhedsklasse til kogeplader.","de":"Verwenden Sie diese Geräteklasse für Kochfelder.","es":"Utiliza esta clase de dispositivo para placas de cocción.","fr":"Utilisez cette classe d\'appareils pour les tables de cuisson.","it":"Utilizza questa classe di dispositivi per i piani cottura.","ko":"이 디바이스 클래스는 쿡탑에 사용합니다.","nl":"Gebruik deze apparaatklasse voor kookplaten.","no":"Bruk denne enhetsklassen for koketopper.","pl":"Tej klasy urządzeń należy używać w przypadku płyt grzewczych.","ru":"Используйте этот класс устройств для варочных панелей.","sv":"Använd den här enhetsklassen för spishällar.","ar":"استخدم فئة الجهاز هذه للمواقد."},"minCompatibility":"12.0.0"}')},275:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Media Player","da":"Medieafspiller","de":"Medienabspielgerät","es":"Reproductor multimedia","fr":"Lecteur multimédia","it":"Lettore multimediale","ko":"미디어 플레이어","nl":"Mediaspeler","no":"Mediespiller","pl":"Odtwarzacz multimedialny","ru":"Медиаплеер","sv":"Mediaspelare","ar":"مشغل وسائط"},"description":{"en":"Use this device class for media players, when the `Set-top box` device class doesn\'t apply.","da":"Brug denne enhedsklasse til medieafspillere, når enhedsklassen `tv-modtagerboks` ikke gælder.","de":"Verwenden Sie diese Geräteklasse für Medienabspielgeräte, wenn die Geräteklasse „Set-Top-Box“ nicht zutrifft.","es":"Utiliza esta clase de dispositivo para reproductores multimedia que no pertenezcan a la clase \\"Descodificador\\".","fr":"Utilisez cette classe d\'appareils pour les lecteurs multimédias, lorsque la classe d\'appareil \\"décodeur\\" ne s\'applique pas.","it":"Utilizza questa classe di dispositivi per i lettori multimediali, quando la classe \\"Set-top box\\" non è applicabile.","ko":"이 디바이스 클래스는 \'Set-top box\' 디바이스 클래스가 적용되지 않는 미디어 플레이어에 사용합니다.","nl":"Gebruik deze apparaatklasse voor mediaspelers als de apparaatklasse \'settopbox\' niet van toepassing is.","no":"Bruk denne enhetsklassen for mediespillere som ikke dekkes av enhetsklassen «TV-mottaker».","pl":"Tej klasy urządzeń należy używać dla odtwarzaczy multimedialnych, gdy klasa urządzeń „dekoder” nie ma zastosowania.","ru":"Используйте этот класс устройств для медиаплееров, которые не относятся к классу устройств «ресивер».","sv":"Använd den här enhetsklassen för mediaspelare när enhetsklassen \\"digitalbox\\" inte är tillämplig.","ar":"استخدم فئة الجهاز هذه لمشغلات الوسائط، عندما لا تنطبق فئة الجهاز \'Set-top box\' (جهاز استقبال)."},"virtualTitle":{"en":"What\'s the type?","da":"Hvad er typen?","de":"Um welchen Typ handelt es sich?","es":"¿De qué tipo es?","fr":"Quel est le type ?","it":"Di che tipo è?","ko":"어떤 유형인가요?","nl":"Wat is het type?","no":"Hvilken type er det?","pl":"Jaki to typ?","ru":"Какой тип?","sv":"Vad är det för typ?","ar":"ما هو النوع؟"},"allowedVirtual":["settopbox"],"minCompatibility":"12.0.0"}')},287:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Voltage","nl":"Voltage","de":"Spannung","fr":"Voltage","it":"Voltaggio","sv":"Spänning","no":"Spenning","es":"Tensión","da":"Elektrisk spænding","ru":"Вольтаж","pl":"Napięcie","ko":"전압","ar":"الجهد"},"units":{"en":"V","ru":"Вольт","ko":"V","ar":"فولط","da":"V","de":"V","es":"V","fr":"V","it":"V","nl":"V","no":"V","pl":"V","sv":"V"},"desc":{"en":"Voltage (V)","nl":"Voltage (V)","de":"Spannung (V)","fr":"Voltage (V)","it":"Voltaggio (V)","sv":"Spänning (V)","no":"Spenning (V)","es":"Tensión (V)","da":"Volt (V)","ru":"Вольтаж (Вольт)","pl":"Napięcie (V)","ko":"전압 볼트(V)","ar":"الجهد (V)"},"insights":true,"chartType":"stepLine","decimals":2,"color":"#6DD400","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_voltage_changed","title":{"en":"The voltage changed","nl":"Het voltage is veranderd","de":"Die Spannung hat sich geändert","fr":"Le voltage a changé","it":"Il voltaggio è cambiato","sv":"Spänningen ändrades","no":"Spenningen ble endret","es":"La tensión ha cambiado","da":"Den elektriske spænding ændrede sig","ru":"Вольтаж изменен","pl":"Zmiana poziomu napięcia","ko":"전압이 변경되면","ar":"تغير الجهد"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":7.5}]}]}}')},295:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Channel up","nl":"Kanaal omhoog","de":"Kanal hoch","fr":"Chaîne haut","it":"Canale verso l\'alto","sv":"Kanal upp","no":"Høyere kanal","es":"Subir de canal","da":"Kanal op","ru":"Канал наверх","pl":"Kanał w górę","ko":"채널 위로","ar":"قناة للأعلى"},"type":"boolean","color":"#9033FC","getable":false,"setable":true,"$flow":{"actions":[{"id":"channel_up","title":{"en":"One channel up","nl":"Eén kanaal omhoog","de":"Einen Kanal hoch","fr":"Une chaîne vers le haut","it":"Un canale verso l\'alto","sv":"En kanal upp","no":"En kanal høyere","es":"Un canal más arriba","da":"En kanal op","ru":"Один канал наверх","pl":"Jeden kanał w górę","ko":"채널 하나 위로","ar":"قناة واحدة للأعلى"}}]},"uiComponent":"button"}')},302:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Dishwasher","da":"Opvaskemaskine","de":"Geschirrspüler","es":"Lavavajillas","fr":"Lave-vaisselle","it":"Lavastoviglie","ko":"식기세척기","nl":"Vaatwasser","no":"Oppvaskmaskin","pl":"Zmywarka","ru":"Посудомоечная машина","sv":"Diskmaskin","ar":"غسالة أطباق"},"description":{"en":"Use this device class for dishwashers.","da":"Brug denne enhedsklasse til opvaskemaskiner.","de":"Verwenden Sie diese Geräteklasse für Geschirrspülmaschinen.","es":"Utiliza esta clase de dispositivo para lavavajillas.","fr":"Utilisez cette classe d\'appareils pour les lave-vaisselle.","it":"Utilizza questa classe di dispositivi per le lavastoviglie.","ko":"이 디바이스 클래스는 식기세척기에 사용합니다.","nl":"Gebruik deze apparaatklasse voor vaatwassers.","no":"Bruk denne enhetsklassen for oppvaskmaskiner.","pl":"Tej klasy urządzeń należy używać w przypadku zmywarek do naczyń.","ru":"Используйте этот класс устройств для посудомоечных машин.","sv":"Använd den här enhetsklassen för diskmaskiner.","ar":"استخدم فئة الجهاز هذه لغسالات الأطباق."},"minCompatibility":"12.0.0"}')},353:e=>{"use strict";e.exports=function(e,t,a){var r=" ",i=e.schema[t],n=e.schemaPath+e.util.getProperty(t),s=e.errSchemaPath+"/"+t,o=!e.opts.allErrors,l=e.util.copy(e),d="";l.level++;var u="valid"+l.level,m=l.baseId,p=!0,c=i;if(c)for(var g,h=-1,v=c.length-1;h0:e.util.schemaHasRules(g,e.RULES.all))&&(p=!1,l.schema=g,l.schemaPath=n+"["+h+"]",l.errSchemaPath=s+"/"+h,r+=" "+e.validate(l)+" ",l.baseId=m,o&&(r+=" if ("+u+") { ",d+="}"));return o&&(r+=p?" if (true) { ":" "+d.slice(0,-1)+" "),r}},400:e=>{"use strict";e.exports=function(e,t,a){var r=" ",i=e.level,n=e.dataLevel,s=e.schema[t],o=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+"/"+t,d=!e.opts.allErrors,u="data"+(n||"");if(!1===e.opts.format)return d&&(r+=" if (true) { "),r;var m,p=e.opts.$data&&s&&s.$data;p?(r+=" var schema"+i+" = "+e.util.getData(s.$data,n,e.dataPathArr)+"; ",m="schema"+i):m=s;var c=e.opts.unknownFormats,g=Array.isArray(c);if(p)r+=" var "+(h="format"+i)+" = formats["+m+"]; var "+(v="isObject"+i)+" = typeof "+h+" == 'object' && !("+h+" instanceof RegExp) && "+h+".validate; var "+(f="formatType"+i)+" = "+v+" && "+h+".type || 'string'; if ("+v+") { ",e.async&&(r+=" var async"+i+" = "+h+".async; "),r+=" "+h+" = "+h+".validate; } if ( ",p&&(r+=" ("+m+" !== undefined && typeof "+m+" != 'string') || "),r+=" (","ignore"!=c&&(r+=" ("+m+" && !"+h+" ",g&&(r+=" && self._opts.unknownFormats.indexOf("+m+") == -1 "),r+=") || "),r+=" ("+h+" && "+f+" == '"+a+"' && !(typeof "+h+" == 'function' ? ",e.async?r+=" (async"+i+" ? await "+h+"("+u+") : "+h+"("+u+")) ":r+=" "+h+"("+u+") ",r+=" : "+h+".test("+u+"))))) {";else{var h;if(!(h=e.formats[s])){if("ignore"==c)return e.logger.warn('unknown format "'+s+'" ignored in schema at path "'+e.errSchemaPath+'"'),d&&(r+=" if (true) { "),r;if(g&&c.indexOf(s)>=0)return d&&(r+=" if (true) { "),r;throw new Error('unknown format "'+s+'" is used in schema at path "'+e.errSchemaPath+'"')}var v,f=(v="object"==typeof h&&!(h instanceof RegExp)&&h.validate)&&h.type||"string";if(v){var k=!0===h.async;h=h.validate}if(f!=a)return d&&(r+=" if (true) { "),r;if(k){if(!e.async)throw new Error("async format in sync schema");r+=" if (!(await "+(y="formats"+e.util.getProperty(s)+".validate")+"("+u+"))) { "}else{r+=" if (! ";var y="formats"+e.util.getProperty(s);v&&(y+=".validate"),r+="function"==typeof h?" "+y+"("+u+") ":" "+y+".test("+u+") ",r+=") { "}}var b=b||[];b.push(r),r="",!1!==e.createErrors?(r+=" { keyword: 'format' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { format: ",r+=p?""+m:""+e.util.toQuotedString(s),r+=" } ",!1!==e.opts.messages&&(r+=" , message: 'should match format \"",r+=p?"' + "+m+" + '":""+e.util.escapeQuotes(s),r+="\"' "),e.opts.verbose&&(r+=" , schema: ",r+=p?"validate.schema"+o:""+e.util.toQuotedString(s),r+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),r+=" } "):r+=" {} ";var w=r;return r=b.pop(),!e.compositeRule&&d?e.async?r+=" throw new ValidationError(["+w+"]); ":r+=" validate.errors = ["+w+"]; return false; ":r+=" var err = "+w+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+=" } ",d&&(r+=" else { "),r}},432:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Duration","nl":"Lengte","de":"Länge","fr":"Durée","it":"Durata","sv":"Längd","no":"Varighet","es":"Duración","da":"Varighed","ru":"Продолжительность","pl":"Czas trwania","ko":"기간","ar":"المدة"},"type":"number","color":"#9033FC","getable":true,"setable":false,"uiComponent":"media"}')},517:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Wind angle","nl":"Windrichting","de":"Windrichtung","fr":"Angle du vent","it":"Angolo del vento","sv":"Vindvinkel","no":"Vindvinkel","es":"Ángulo del viento","da":"Vindvinkel","ru":"Угол ветра","pl":"Kąt wiatru","ko":"풍향각","ar":"زاوية الرياح"},"units":{"en":"°","ko":"°","ru":"°","ar":"°","da":"°","de":"°","es":"°","fr":"°","it":"°","nl":"°","no":"°","pl":"°","sv":"°"},"desc":{"en":"Wind angle in degrees (°)","nl":"Windrichting in graden (°)","de":"Windrichtung in Grad (°)","fr":"Angle du vent en degrés (°)","it":"Angolo del vento in gradi (°)","sv":"Vindvinkel i grader (°)","no":"Vindvinkel i grader (°)","es":"Ángulo del viento en grados (°)","da":"Vindvinkel i grader (°)","ru":"Угол ветра в градусах (°)","pl":"Kąt wiatru w stopniach (°)","ko":"풍향 각도(°)","ar":"زاوية الرياح بالدرجات (°)"},"insights":true,"chartType":"spline","decimals":2,"color":"#32C5FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_wind_angle_changed","title":{"en":"The wind angle changed","nl":"De windrichting is veranderd","de":"Die Windrichtung hat sich geändert","fr":"L\'angle du vent a changé","it":"L\'angolo del vento è cambiato","sv":"Vindvinkel ändrad","no":"Vindvinkel er endret","es":"El ángulo del viento ha cambiado","da":"Vindvinklen er skiftet","ru":"Угол наклона ветра изменился","pl":"Zmiana kąta wiatru","ko":"풍향각이 변경되면","ar":"تغيرت زاوية الرياح"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":36}]}]}}')},538:()=>{},570:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Motion Alarm","nl":"Bewegingsalarm","de":"Bewegungsalarm","fr":"Alarme de mouvement","it":"Allarme di movimento","sv":"Rörelselarm","no":"Bevegelsesalarm","es":"Alarma de movimiento","da":"Bevægelsesalarm","ru":"Сигнал движения","pl":"Alarm ruchu","ko":"움직임 감지","ar":"إنذار الحركة"},"titleShort":{"en":"Motion","nl":"Beweging","de":"Bewegung","fr":"Mouvement","it":"Movimento","sv":"Rörelse","no":"Bevegelse","es":"Movimiento","da":"Bevægelse","ru":"Движение","pl":"Ruch","ko":"모션","ar":"الحركة"},"insights":true,"insightsTitleTrue":{"en":"Motion alarm turned on","nl":"Bewegingsalarm ging af","de":"Bewegungs-Alarm ist angegangen","fr":"Alarme mouvement s\'est déclenchée","it":"Allarme di movimento attivato","sv":"Rörelselarm aktiverat","no":"Bevegelsesalarm aktivert","es":"Alarma de movimiento activada","da":"Bevægelsesalarm blev aktiveret","ru":"Сигнал движения включен","pl":"Czujnik ruchu włączony","ko":"움직임 감지됨","ar":"تم تشغيل إنذار الحركة"},"insightsTitleFalse":{"en":"Motion alarm turned off","nl":"Bewegingsalarm ging uit","de":"Bewegungs-Alarm ist ausgegangen","fr":"Alarme mouvement s\'est désactivée","it":"Allarme di movimento disattivato","sv":"Rörelselarm inaktiverat","no":"Bevegelsesalarm deaktivert","es":"Alarma de movimiento desactivada","da":"Bevægelsesalarm blev deaktiveret","ru":"Сигнал движения выключен","pl":"Czujnik ruchu wyłączony","ko":"움직임 없음","ar":"تم إيقاف إنذار الحركة"},"getable":true,"setable":false,"color":"#32C5FF","uiComponent":"sensor","options":{"zoneActivity":true},"$flow":{"triggers":[{"id":"alarm_motion_true","highlight":true,"title":{"en":"The motion alarm turned on","nl":"De bewegingsmelder gaat aan","de":"Der Bewegungs-Alarm ist angegangen","fr":"L\'alarme mouvement s\'est activée","it":"L\'allarme di movimento è stato attivato","sv":"Rörelselarmet aktiverat","no":"Bevegelsesalarmen ble aktivert","es":"La alarma de movimiento se ha activado","da":"Bevægelsesalarmen blev aktiveret","ru":"Сигнал движения включен","pl":"Czujnik ruchu włączony","ko":"움직임이 감지되면","ar":"تم تشغيل إنذار الحركة"}},{"id":"alarm_motion_false","title":{"en":"The motion alarm turned off","nl":"De bewegingsmelder gaat uit","de":"Der Bewegungs-Alarm ist ausgegangen","fr":"L\'alarme mouvement s\'est désactivée","it":"L\'allarme di movimento è stato disattivato","sv":"Rörelselarmet inaktiverat","no":"Bevegelsesalarmen ble deaktivert","es":"La alarma de movimiento se ha desactivado","da":"Bevægelsesalarmen blev deaktiveret","ru":"Сигнал движения выключен","pl":"Czujnik ruchu wyłączony","ko":"움직임이 없으면","ar":"تم إيقاف إنذار الحركة"}}],"conditions":[{"id":"alarm_motion","title":{"en":"The motion alarm is !{{on|off}}","nl":"De bewegingsmelder is !{{aan|uit}}","de":"Der Bewegungs-Alarm ist !{{an|aus}}","fr":"L\'alarme mouvement est !{{en marche|arrêtée}}","it":"L\'allarme di movimento è !{{acceso|spento}}","sv":"Rörelselarmet är !{{på|av}}","no":"Bevegelsesalarmen er !{{på|av}}","es":"La alarma de movimiento está !{{activada|desactivada}}","da":"Bevægelsesalarmen er !{{tændt|slukket}}","ru":"Сигнал движения !{{вкл.|выкл.}}","pl":"Czujnik ruchu jest !{{włączony|wyłączony}}","ko":"움직임이 !{{감지되면|없으면}}","ar":"إنذار الحركة !{{يعمل|لا يعمل}}"}}]}}')},593:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Rain","nl":"Regen","de":"Niederschlag","fr":"Pluie","it":"Pioggia","sv":"Regn","no":"Regn","es":"Lluvia","da":"Regn","ru":"Дождь","pl":"Deszcz","ko":"강우량","ar":"مطر"},"units":{"en":"mm","ru":"мм","ko":"mm","no":"mm","ar":"مم","da":"mm","de":"mm","es":"mm","fr":"mm","it":"mm","nl":"mm","pl":"mm","sv":"mm"},"insights":true,"desc":{"en":"Rain in millimeter (mm)","nl":"Regen in millimeter (mm)","de":"Niederschlag in Millimeter (mm)","fr":"Pluie en millimètres (mm)","it":"Pioggia in millimetri (mm)","sv":"Regn i millimeter (mm)","no":"Regn i millimeter (mm)","es":"Lluvia en milímetros (mm)","da":"Regn i millimeter (mm)","ru":"Дождь в миллиметрах (мм)","pl":"Deszcz w milimetrach (mm)","ko":"강우량 밀리미터(mm)","ar":"المطر بالمليمتر (mm)"},"chartType":"spline","decimals":2,"color":"#0091FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_rain_changed","title":{"en":"The rain changed","nl":"De regen is veranderd","de":"Der Niederschlag hat sich geändert","fr":"La pluie a changé","it":"La pioggia è cambiata","sv":"Regnet ändrades","no":"Regnet ble endret","es":"La lluvia ha cambiado","da":"Regnen ændrede sig","ru":"Дождь изменился","pl":"Zmiana poziomu deszczu","ko":"강우량이 변경되면","ar":"تغير المطر"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":3}]}]}}')},596:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"TVOC index","nl":"VOS-index","da":"TVOC-indeks","it":"Indice TVOC","ko":"총휘발성유기화합물 지수","pl":"Wskaźnik wszystkich LZO","ru":"Показатель TVOC","sv":"TVOC-index","es":"Índice de COVT","fr":"Indice TVOC","no":"TVOC-indeks","ar":"مؤشر المركبات العضوية المتطايرة الإجمالية","de":"TVOC-Index"},"insights":true,"desc":{"en":"Total volatile organic compounds index","nl":"Index van totaal vluchtige organische stoffen","da":"Samlet indeks for flygtige organiske forbindelser","it":"Indice dei composti organici volatili totali","ko":"휘발성 유기 화합물 총량 지수","pl":"Wskaźnik wszystkich lotnych związków organicznych","ru":"Общий показатель летучих органических соединений","sv":"Index för totala mängden flyktiga organiska föreningar","es":"Índice de compuestos orgánicos volátiles en total","fr":"Indice des composés organiques volatils totaux","no":"Indeks for total mengde flyktige organiske forbindelser","ar":"مؤشر المركبات العضوية المتطايرة الإجمالية","de":"Index der gesamten flüchtigen organischen Verbindungen"},"chartType":"spline","color":"#E02020","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_tvoc_index_changed","title":{"en":"The TVOC index has changed","nl":"De VOS-index is veranderd","da":"TVOC-indeksværdien har ændret sig","it":"L\'indice TVOC è cambiato","ko":"총휘발성유기화합물 지수 수준이 변경되면","no":"TVOC-indeksen er endret","pl":"Zmienił się wskaźnik wszystkich LZO","ru":"Значение показателя TVOC изменилось","sv":"TVOC-indexvärdet har ändrats","es":"El índice de TVOC ha cambiado","fr":"La valeur de l\'indice TVOC a changé","ar":"تغير مؤشر المركبات العضوية المتطايرة الإجمالية","de":"Der TVOC-Index hat sich geändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":2}]}]},"minCompatibility":"12.2.0"}')},598:e=>{"use strict";e.exports=function(e,t,a){var r=" ",i=e.level,n=e.dataLevel,s=e.schema[t],o=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+"/"+t,d=!e.opts.allErrors,u="data"+(n||""),m="valid"+i,p=e.opts.$data&&s&&s.$data;p&&(r+=" var schema"+i+" = "+e.util.getData(s.$data,n,e.dataPathArr)+"; ");var c="i"+i,g="schema"+i;p||(r+=" var "+g+" = validate.schema"+o+";"),r+="var "+m+";",p&&(r+=" if (schema"+i+" === undefined) "+m+" = true; else if (!Array.isArray(schema"+i+")) "+m+" = false; else {"),r+=m+" = false;for (var "+c+"=0; "+c+"<"+g+".length; "+c+"++) if (equal("+u+", "+g+"["+c+"])) { "+m+" = true; break; }",p&&(r+=" } "),r+=" if (!"+m+") { ";var h=h||[];h.push(r),r="",!1!==e.createErrors?(r+=" { keyword: 'enum' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { allowedValues: schema"+i+" } ",!1!==e.opts.messages&&(r+=" , message: 'should be equal to one of the allowed values' "),e.opts.verbose&&(r+=" , schema: validate.schema"+o+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),r+=" } "):r+=" {} ";var v=r;return r=h.pop(),!e.compositeRule&&d?e.async?r+=" throw new ValidationError(["+v+"]); ":r+=" validate.errors = ["+v+"]; return false; ":r+=" var err = "+v+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+=" }",d&&(r+=" else { "),r}},601:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Tank Open Alarm","nl":"Waarschuwing voor open tank","da":"Alarm for åben tank","it":"Allarme serbatoio aperto","ko":"물통 열림 감지","no":"Alarm om åpen tank","pl":"Alarm otwartego zbiornika","ru":"Сигнал об открытии резервуара","sv":"Larm om öppen tank","es":"Alarma de depósito abierto","fr":"Alarme de réservoir ouvert","ar":"إنذار فتح الخزان","de":"Alarm Tank offen"},"titleShort":{"en":"Tank Open","nl":"Open tank","da":"Åben tank","it":"Serbatoio aperto","ko":"물통 열림","no":"Åpen tank","pl":"Otwarty zbiornik","ru":"Резервуар открыт","sv":"Öppen tank","es":"Depósito abierto","fr":"Réservoir ouvert","ar":"الخزان مفتوح","de":"Tank offen"},"desc":{"en":"True when the tank is open.","nl":"Wordt geactiveerd wanneer de tank open is.","da":"Sandt, når tanken er åben.","it":"Vero quando il serbatoio è aperto.","ko":"탱크가 열려 있으면 참입니다.","no":"Sann når tanken er åpen.","pl":"Prawda, gdy zbiornik jest otwarty.","ru":"Значение «истина», когда резервуар открыт.","sv":"Sant när tanken är öppen.","es":"Activado cuando el depósito está abierto.","fr":"Se déclenche lorsque le réservoir est ouvert.","ar":"صحيح عندما يكون الخزان مفتوحًا.","de":"Wahr, wenn der Tank geöffnet ist."},"insights":true,"insightsTitleTrue":{"en":"Tank was open","nl":"Tank was open","da":"Tanken var åben","it":"Il serbatoio era aperto","ko":"물통 열림","no":"Tanken var åpen","pl":"Zbiornik był otwarty","ru":"Резервуар был открыт","sv":"Tanken var öppen","es":"El depósito estaba abierto","fr":"Le réservoir était ouvert","ar":"كان الخزان مفتوحًا","de":"Tank war offen"},"insightsTitleFalse":{"en":"Tank was closed","nl":"Tank was dicht","da":"Tanken var lukket","it":"Il serbatoio è stato chiuso","ko":"물통 닫힘","no":"Tanken var lukket","pl":"Zbiornik był zamknięty","ru":"Резервуар был закрыт","sv":"Tanken var stängd","es":"El depósito estaba cerrado","fr":"Le réservoir était fermé","ar":"كان الخزان مغلقًا","de":"Tank wurde geschlossen"},"color":"#0091FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_tank_open_true","highlight":true,"title":{"en":"The tank opens","nl":"De tank gaat open","da":"Tanken åbner","it":"Il serbatoio si apre","ko":"물통이 열려있으면","no":"Tanken åpnes","pl":"Zbiornik otwiera się","ru":"Резервуар открывается","sv":"Tanken öppnas","es":"El depósito está abierto","fr":"Le réservoir s\'ouvre","ar":"الخزان يفتح","de":"Der Tank öffnet"}},{"id":"alarm_tank_open_false","title":{"en":"The tank closes","nl":"De tank gaat dicht","da":"Tanken lukker","it":"Il serbatoio si chiude","ko":"물통이 닫혀있으면","no":"Tanken lukkes","pl":"Zbiornik zamyka się","ru":"Резервуар закрывается","sv":"Tanken stängs","es":"El depósito está cerrado","fr":"Le réservoir se ferme","ar":"الخزان يغلق","de":"Der Tank schließt"}}],"conditions":[{"id":"alarm_tank_open","title":{"en":"The tank is !{{open|closed}}","nl":"De tank is !{{open|dicht}}","da":"Tanken er !{{åben|lukket}}","it":"Il serbatoio è !{{aperto|chiuso}}","ko":"물통이 !{{열려|닫혀}}있으면","no":"Tanken er !{{åpen|lukket}}","pl":"Zbiornik jest !{{otwarty|zamknięty}}","ru":"Резервуар !{{открыт|закрыт}}","sv":"Tanken är !{{öppen|stängd}}","es":"El depósito está !{{abierto|cerrado}}","fr":"Le réservoir est !{{ouvert|fermé}}","ar":"الخزان !{{مفتوح|مغلق}}","de":"Der Tank ist !{{offen|gesclossen}}"}}]},"minCompatibility":"12.2.0"}')},637:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Dehumidifier","da":"Affugter","de":"Luftentfeuchter","es":"Deshumidificador","fr":"Déshumidificateur","it":"Deumidificatore","ko":"제습기","nl":"Luchtontvochtiger","no":"Luftavfukter","pl":"Osuszacz powietrza","ru":"Осушитель воздуха","sv":"Avfuktare","ar":"مزيل الرطوبة"},"description":{"en":"Use this device class for dehumidifiers.","da":"Brug denne enhedsklasse til affugtere.","de":"Verwenden Sie diese Geräteklasse für Luftentfeuchter.","es":"Utiliza esta clase de dispositivo para deshumidificadores.","fr":"Utilisez cette classe d\'appareils pour les déshumidificateurs.","it":"Utilizza questa classe di dispositivi per i deumidificatori.","ko":"이 디바이스 클래스는 제습기에 사용합니다.","nl":"Gebruik deze apparaatklasse voor luchtontvochtigers.","no":"Bruk denne enhetsklassen for luftavfuktere.","pl":"Tej klasy urządzeń należy używać w przypadku osuszaczy powietrza.","ru":"Используйте этот класс устройств для осушителей воздуха.","sv":"Använd den här enhetsklassen för avfuktare.","ar":"استخدم فئة الجهاز هذه لأجهزة إزالة الرطوبة."},"minCompatibility":"12.0.0"}')},657:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Air Conditioner","da":"Klimaanlæg","de":"Klimaanlage","es":"Equipo de aire acondicionado","fr":"Climatiseur","it":"Climatizzatore","ko":"에어컨","nl":"Airconditioner","no":"Klimaanlegg","pl":"Klimatyzacja","ru":"Кондиционер","sv":"Luftkonditionerare","ar":"مكيف هواء"},"description":{"en":"Use this device class for airconditioners, either portable or split type units.","da":"Brug denne enhedsklasse til klimaanlæg, enten bærbare eller split-enheder.","de":"Verwenden Sie diese Geräteklasse für tragbare oder geteilte Klimageräte.","es":"Utiliza esta clase de dispositivo para equipos de aire acondicionado, ya sean portátiles o de tipo split.","fr":"Cette classe d\'appareils est utilisée pour les climatiseurs, qu\'il s\'agisse d\'unités portables ou de type split.","it":"Utilizza questa classe di dispositivi per i condizionatori, sia portatili che di tipo split.","ko":"이 디바이스 클래스는 이동식 또는 실내외기 분할형 에어컨에 사용합니다.","nl":"Gebruik deze apparaatklasse voor airconditioners, zowel draagbare als splitsysteem.","no":"Bruk denne enhetsklassen for klimaanlegg av både flyttbar og fastmontert type.","pl":"Tej klasy urządzeń należy używać do klimatyzatorów, zarówno przenośnych, jak i typu split.","ru":"Используйте этот класс устройств для кондиционеров, как переносных, так и сплит-систем.","sv":"Använd denna enhetsklass för luftkonditioneringsapparater, antingen portabla eller enheter av split-typ.","ar":"استخدم فئة الجهاز هذه لمكيفات الهواء، سواء كانت محمولة أو وحدات منفصلة."},"minCompatibility":"12.0.0"}')},714:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Air quality level","nl":"Luchtkwaliteitsniveau","da":"Luftkvalitetsniveau","it":"Livello di qualità dell\'aria","ko":"공기질","pl":"Poziom jakości powietrza","ru":"Уровень качества воздуха","sv":"Luftkvalitetsnivå","es":"Nivel de calidad del aire","fr":"Niveau de qualité de l\'air","no":"Luftkvalitetsnivå","ar":"مستوى جودة الهواء","de":"Wert für die Luftqualität"},"desc":{"en":"The air quality index represented as a level.","nl":"De luchtkwaliteitsindex weergegeven als niveau.","da":"Luftkvalitetsindekset repræsenteret som et niveau.","es":"Índice de calidad del aire representado como nivel.","it":"L\'indice di qualità dell\'aria rappresentato come un livello.","ko":"수준으로 표현한 공기질 지수입니다.","pl":"Wskaźnik jakości powietrza przedstawiony jako poziom.","ru":"Показатель качества воздуха, представленный в виде уровня.","sv":"Luftkvalitetsindexet representeras som en nivå.","fr":"L\'indice de qualité de l\'air représenté sous forme de niveau.","no":"Luftkvalitetsindeksen uttrykt som et nivå.","ar":"مؤشر جودة الهواء ممثلًا كمستوى.","de":"Der Luftqualitätsindex, dargestellt als Wert."},"values":[{"id":"good","title":{"en":"Good","nl":"Goed","da":"Godt","it":"Buono","ko":"좋음","pl":"Dobry","ru":"Хороший","sv":"Bra","es":"Bueno","fr":"Bon","no":"God","ar":"جيد","de":"Gut"}},{"id":"fair","title":{"en":"Fair","da":"Rimelig","es":"Razonable","fr":"Moyen","it":"Accettabile","ko":"적당","nl":"Redelijk","no":"God","pl":"Zadowalający","ru":"Удовлетворительный","sv":"Rimlig","ar":"متوسط","de":"Angemessen"}},{"id":"moderate","title":{"en":"Moderate","da":"Moderat","es":"Moderado","fr":"Dégradé","it":"Moderato","ko":"보통","nl":"Matig","no":"Moderat","pl":"Umiarkowany","ru":"Умеренный","sv":"Måttlig","ar":"معتدل","de":"Mäßig"}},{"id":"poor","title":{"en":"Poor","nl":"Slecht","da":"Dårligt","it":"Scarso","ko":"나쁨","pl":"Niski","ru":"Плохой","sv":"Dålig","es":"Deficiente","fr":"Mauvais","no":"Dårlig","ar":"ضعيف","de":"Schlecht"}},{"id":"very_poor","title":{"en":"Very Poor","nl":"Zeer slecht","da":"Meget dårligt","it":"Molto scarso","ko":"매우 나쁨","pl":"Bardzo niski","ru":"Очень плохой","sv":"Mycket dålig","es":"Muy deficiente","fr":"Très mauvais","no":"Svært dårlig","ar":"ضعيف جدًا","de":"Sehr schlecht"}},{"id":"extremely_poor","title":{"en":"Extremely Poor","nl":"Extreem slecht","da":"Ekstremt dårligt","it":"Estremamente scarso","ko":"극도로 나쁨","pl":"Skrajnie niski","ru":"Чрезвычайно плохой","sv":"Extremt dålig","es":"Extremadamente deficiente","fr":"Extrêmement mauvais","no":"Ekstremt dårlig","ar":"ضعيف للغاية","de":"Extrem schlecht"}}],"color":"#6DD400","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"level_aqi_changed","highlight":true,"title":{"en":"The air quality level changed to","nl":"Het luchtkwaliteitsniveau is veranderd naar","da":"Luftkvalitetsniveauet blev ændret til","it":"Il livello di qualità dell\'aria è passato a","ko":"공기질이 다음으로 변경되면","pl":"Poziom jakości powietrza zmienił się na","ru":"Уровень качества воздуха изменился на","sv":"Luftkvalitetsnivån ändrades till","es":"El nivel de calidad del aire ha cambiado a","fr":"Le niveau de qualité de l\'air est passé à","no":"Luftkvalitetsnivået ble endret til","ar":"تغير مستوى جودة الهواء إلى","de":"Die Luftqualitätswert hat gewechselt auf"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"level_aqi_is","title":{"en":"The air quality !{{is|is not}}","nl":"De luchtkwaliteit !{{is|is niet}}","da":"Luftkvaliteten !{{er|er ikke}}","it":"La qualità dell\'aria !{{è|non è}}","ko":"공기질이 다음!{{이면|이 아니면}}","pl":"Jakość powietrza !{{jest|nie jest}}","ru":"Качество воздуха !{{|не}}","sv":"Luftkvaliteten !{{är|är inte}}","es":"La calidad del aire !{{es|no es}}","fr":"La qualité de l\'air !{{est|n\'est pas}}","no":"Luftkvaliteten !{{er|er ikke}}","ar":"جودة الهواء !{{هي|ليست}}","de":"Die Luftqualität !{{ist|ist nicht}}"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.2.0"}')},720:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Window Coverings","nl":"Raambekleding","de":"Fenster-Abdeckungen","fr":"Couverture de fenêtre","it":"Rivestimenti per finestre","sv":"Fönsterskydd","no":"Vindusskjerming","es":"Cobertores de ventanas","da":"Vinduesdække","ru":"Оконные навесы","pl":"Osłony okienne","ko":"창문 커버","ar":"أغطية النوافذ"},"description":{"en":"Use this device class for window coverings, when the `curtains`, `blinds` or `sunshade` device class doesn\'t apply.","de":"Nutze diese Geräteklasse für Fenster-Abdeckungen, wenn `curtains`-, `blinds`- oder `sunshade`-Geräteklassen nicht zutreffen.","fr":"Utilisez cette classe d\'appareil pour les couvertures de fenêtre, lorsque la classe d\'appareil `curtains`, `blinds` ou `sunshade` ne s\'applique pas.","it":"Utilizza questa classe di dispositivi per i rivestimenti per finestre, quando non rientrano nelle classi `curtains`, `blinds` o `sunshade`.","sv":"Använd den här enhetsklassen för fönsterskydd när enhetsklasserna `curtains`, `blinds` eller `sunshade` inte gäller.","no":"Bruk denne enhetsklassen for vindusskjerming som ikke dekkes av enhetsklassene «gardiner», «persienner» eller «markise».","es":"Utiliza esta clase de dispositivo para los cobertores de ventanas que no entren en las clases `curtains`, `blinds` o `sunshade`.","da":"Brug denne enhedsklasse til vinduesdække, når enhedsklasserne `curtains`, `blinds` og `sunshade` ikke er gældende.","ru":"Используйте этот класс устройств для оконных навесов, когда классы устройств `curtains`, `blinds` или `sunshade` не подходят.","pl":"Użyj tej klasy urządzeń dla osłon okiennych o innej klasie urządzenia niż `curtains`, `blinds` lub `sunshade`.","ko":"이 디바이스 클래스는 \'curtains\', \'blinds\', \'sunshade\' 디바이스 클래스가 적용되지 않는 창문 덮개에 사용합니다.","ar":"استخدم فئة الجهاز هذه لأغطية النوافذ، عندما لا تنطبق فئة الجهاز \'ستائر\'، \'ستائر دوارة\' أو \'مظلة شمسية\'.","nl":"Gebruik deze apparaatklasse voor raambekleding wanneer de apparaatklasse \'gordijnen\', \'jaloezieën\' of \'zonnescherm\' niet van toepassing is."},"virtualTitle":{"en":"What\'s the type?","nl":"Wat voor type is dit?","de":"Um welchen Typ handelt es sich?","fr":"Quel est le type ?","it":"Qual è il tipo?","sv":"Vad är det för typ?","no":"Hvilken type er det?","es":"¿Cuál es el tipo?","da":"Hvad er typen?","ru":"Какой тип?","pl":"Wybierz rodzaj?","ko":"어떤 유형인가요?","ar":"ما هو النوع؟"},"allowedVirtual":["sunshade","blinds","curtain","shutterblinds"]}')},759:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"PM2.5 Level","nl":"PM2.5-niveau","da":"PM2.5-niveau","it":"Livello PM2.5","ko":"초미세먼지(PM2.5) 수준","pl":"Poziom PM2.5","ru":"Уровень ТЧ2.5","sv":"PM2.5-nivå","es":"Nivel de PM2,5","fr":"Niveau de PM2.5","no":"PM2.5-nivå","ar":"مستوى PM2.5","de":"PM2.5-Wert"},"desc":{"en":"The level of PM2.5 particles in the air.","nl":"De mate van PM2.5-deeltjes in de lucht.","da":"Niveauet af PM2.5-partikler i luften.","it":"Il livello di particelle PM2.5 nell\'aria.","ko":"공기 중 PM2.5 입자의 수준입니다.","pl":"Poziom cząstek PM2.5 w powietrzu.","ru":"Уровень содержания частиц ТЧ2.5 в воздухе.","sv":"Halten av PM2.5-partiklar i luften.","es":"El nivel de partículas PM2,5 en el aire.","fr":"Le niveau de particules PM2.5 dans l\'air.","no":"Nivået av PM2.5-partikler i luften.","ar":"مستوى جزيئات PM2.5 في الهواء.","de":"Der Gehalt an PM2,5-Partikeln in der Luft."},"values":[{"id":"low","title":{"en":"Low","nl":"Laag","da":"Lavt","ko":"좋음","pl":"Niski","ru":"Низкий","sv":"Låg","es":"Bajo","fr":"Faible","no":"Lavt","ar":"منخفض","de":"Niedrig","it":"Basso"}},{"id":"medium","title":{"en":"Medium","nl":"Gemiddeld","da":"Medium","ko":"보통","pl":"Średni","ru":"Средний","sv":"Medium","es":"Intermedio","fr":"Moyen","no":"Middels","ar":"متوسط","de":"Mittel","it":"Medio"}},{"id":"high","title":{"en":"High","nl":"Hoog","da":"Højt","it":"Alto","ko":"나쁨","pl":"Wysoki","ru":"Высокий","sv":"Hög","es":"Alto","fr":"Élevé","no":"Høyt","ar":"عالي","de":"Hoch"}},{"id":"critical","title":{"en":"Critical","nl":"Kritiek","da":"Kritisk","it":"Critico","ko":"매우 나쁨","pl":"Krytyczny","ru":"Критический","sv":"Kritisk","es":"Crítico","fr":"Critique","no":"Kritisk","ar":"حرج","de":"Kritisch"}}],"color":"#E02020","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"level_pm25_changed","highlight":true,"title":{"en":"The PM2.5 level changed to","nl":"Het PM2.5-niveau is veranderd naar","da":"PM2.5-niveauet blev ændret til","it":"Il livello di PM2.5 è passato a","ko":"초미세먼지(PM2.5) 수준이 다음으로 변경되면","pl":"Poziom PM2.5 zmienił się na","ru":"Уровень ТЧ2.5 изменился на","sv":"PM2.5-nivån ändrades till","es":"El nivel de PM2,5 ha cambiado a","fr":"Le niveau de PM2.5 est passé à","no":"PM2.5-nivået ble endret til","ar":"تغير مستوى PM2.5 إلى","de":"Der PM2,5-Wert hat sich geändert auf"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"level_pm25_is","title":{"en":"The PM2.5 level !{{is|is not}}","nl":"Het PM2.5-niveau !{{is|is niet}}","da":"PM2.5-niveauet !{{er|er ikke}}","it":"Il livello di PM2.5 !{{è|non è}}","ko":"초미세먼지(PM2.5) 수준이 다음!{{이면|이 아니면}}","pl":"Poziom PM2.5 !{{jest|nie jest}}","ru":"Уровень ТЧ2.5 !{{|не}}","sv":"PM2.5-nivån !{{är|är inte}}","es":"El nivel de PM2,5 !{{es|no es}}","fr":"Le niveau de PM2.5 !{{est|n\'est pas}}","no":"PM2.5-nivået !{{er|er ikke}}","ar":"مستوى PM2.5 !{{هو|ليس}}","de":"Der PM2.5-Wert !{{ist|ist nicht}}"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.2.0"}')},795:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"PM0.1","nl":"PM0.1","de":"PM0.1","fr":"PM0.1\\n","it":"PM0.1","sv":"PM0.1","no":"PM0.1","es":"PM0,1","ru":"ТЧ0.1","pl":"PM0.1","ko":"나노미세먼지(PM0.1)","da":"PM0.1","ar":"PM0.1"},"units":{"en":"μg/m³","ru":"мкг/м³","ko":"μg/m³","no":"μg/m³","da":"μg/m³","it":"μg/m³","nl":"μg/m³","pl":"μg/m³","sv":"μg/m³","es":"μg/m³","fr":"μg/m³","ar":"ميكرو جرام/م³","de":"μg/m³"},"insights":true,"desc":{"en":"Atmospheric particulate matter (μg/m³)","nl":"Zwevende deeltjes (μg/m³)","de":"Atmosphärischer Feinstaub (μg/m³)","fr":"Particules en suspension (μg/m³)\\n","it":"Particolato atmosferico (μg/m³)","sv":"Atmosfäriskt partikelämne (μg/m³)","no":"Svevestøv (μg/m³)","es":"Partículas atmosféricas (μg/m³)","da":"Atmosfæriske partikler (μg/m³)","ru":"Твердые частицы в воздухе (мкг/м³)","pl":"Pył zawieszony w powietrzu (μg/m³)","ko":"대기 중 미세입자 수(μg/m³)","ar":"الجسيمات المعلقة في الغلاف الجوي (ميكرو جرام/م³)"},"chartType":"spline","decimals":2,"color":"#E02020","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_pm01_changed","title":{"en":"The PM0.1 value has changed","nl":"De PM0.1-waarde is veranderd","de":"Der PM0.1-Wert hat sich geändert","fr":"La valeur PM0.1 a changé","it":"Il valore di PM0.1 è cambiato","sv":"PM0.1-värdet har ändrats","no":"PM0.1-verdien har blitt endret","es":"El valor de PM0,1 ha cambiado","da":"PM0.1-værdien har ændret sig","ru":"Значение ТЧ0.1 изменилось","pl":"Zmieniła się wartość PM0.1","ko":"나노미세먼지(PM0.1) 값이 변경되면","ar":"تغيرت قيمة PM0.1"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":2}]}]},"minCompatibility":"12.2.0"}')},831:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Album","nl":"Album","de":"Album","fr":"Album","it":"Album","sv":"Album","no":"Album","es":"Álbum","da":"Album","ru":"Альбом","pl":"Album","ko":"앨범","ar":"الألبوم"},"type":"string","color":"#9033FC","getable":true,"setable":false,"uiComponent":"media","$flow":{"triggers":[{"id":"speaker_album_changed","title":{"en":"The album changed","nl":"Het album is veranderd","de":"Das Album hat sich geändert","fr":"L\'album a été modifié","it":"L\'album è cambiato","sv":"Albumet ändrades","no":"Albumet ble endret","es":"El álbum ha cambiado","da":"Albummet skiftede","ru":"Альбом изменен","pl":"Zmiana albumu","ko":"앨범이 변경되면","ar":"تغير الألبوم"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":"Life Lessons"}]}]}}')},868:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Audio Output","nl":"Audio-uitgang","da":"Lydudgang","it":"Uscita audio","ko":"오디오 출력","pl":"Wyjście audio","ru":"Аудиовыход","sv":"Ljudutgång","es":"Salida de audio","fr":"Sortie audio","no":"Lydutgang","ar":"مخرج الصوت","de":"Audioausgang"},"desc":{"en":"The audio output channel for a media player.","nl":"Het audio-uitgangskanaal voor een mediaspeler.","da":"Lydudgangskanalen til en medieafspiller.","it":"Il canale di uscita audio di un lettore multimediale.","ko":"미디어 플레이어의 오디오 출력 채널입니다.","pl":"Kanał wyjściowy audio odtwarzacza multimedialnego.","ru":"Канал аудиовыхода для медиаплеера.","sv":"Ljudutgångskanalen för en mediaspelare.","es":"Canal de salida de audio en un reproductor multimedia.","fr":"Canal de sortie audio d\'un lecteur multimédia.","no":"Lydutgangskanalen for en mediespiller.","ar":"قناة إخراج الصوت لمشغل الوسائط.","de":"Der Audioausgangskanal für einen Media Player."},"values":[{"id":"hdmi_1","title":{"en":"HDMI 1","nl":"HDMI 1","da":"HDMI 1","it":"HDMI 1","ko":"HDMI 1","no":"HDMI 1","pl":"HDMI 1","ru":"HDMI 1","sv":"HDMI 1","es":"HDMI 1","fr":"HDMI 1","ar":"HDMI 1","de":"HDMI 1"}},{"id":"hdmi_2","title":{"en":"HDMI 2","nl":"HDMI 2","da":"HDMI 2","it":"HDMI 2","ko":"HDMI 2","no":"HDMI 2","pl":"HDMI 2","ru":"HDMI 2","sv":"HDMI 2","es":"HDMI 2","fr":"HDMI 2","ar":"HDMI 2","de":"HDMI 2"}},{"id":"hdmi_3","title":{"en":"HDMI 3","nl":"HDMI 3","da":"HDMI 3","it":"HDMI 3","ko":"HDMI 3","no":"HDMI 3","pl":"HDMI 3","ru":"HDMI 3","sv":"HDMI 3","es":"HDMI 3","fr":"HDMI 3","ar":"HDMI 3","de":"HDMI 3"}},{"id":"line_out","title":{"en":"Line Out","nl":"Line out","da":"Linjeudgang","it":"Line out","ko":"Line out","pl":"Wyjście liniowe","ru":"Линейный выход","sv":"Linje ut","es":"Salida de línea","fr":"Sortie line","no":"Linje ut","ar":"مخرج الخط","de":"Line Out (Audioausgang)"}},{"id":"optical","title":{"en":"Optical","nl":"Optisch","da":"Optisk","it":"Ottica","ko":"Optical","pl":"Optyczne","ru":"Оптический выход","sv":"Optisk","es":"Óptico","fr":"Optique","no":"Optisk","ar":"بصري","de":"Optisch"}},{"id":"usb","title":{"en":"USB","nl":"USB","da":"USB","it":"USB","ko":"USB","pl":"USB","ru":"USB","sv":"USB","es":"USB","fr":"USB","no":"USB","ar":"USB","de":"USB"}}],"color":"#9033FC","getable":true,"setable":true,"uiComponent":"picker","$flow":{"triggers":[{"id":"audio_output_changed","highlight":true,"title":{"en":"The audio output changed to","nl":"De audio-uitgang is veranderd naar","da":"Lydudgangen blev ændret til","it":"L\'uscita audio è passata a","ko":"오디오 출력이 다음으로 변경되면","pl":"Wyjście audio zmieniło się na","ru":"Аудиовыход изменен на","sv":"Ljudutgången ändrades till","es":"La salida de audio ha cambiado a","fr":"La sortie audio passe à","no":"Lydutgangen ble endret til","ar":"تم تغيير مخرج الصوت إلى","de":"Der Audioausgang wurde geändert auf"},"args":[{"name":"output","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"audio_output_is","title":{"en":"The audio output !{{is|is not}}","nl":"De audio-uitgang !{{is|is niet}}","da":"Lydudgangen !{{er|er ikke}}","it":"L\'uscita audio !{{è|non è}}","ko":"오디오 출력이 다음!{{이면|이 아니면}}","pl":"Wyjście audio !{{jest|nie jest}}","ru":"Аудиовыход !{{|не}}","sv":"Ljudutgången !{{är|är inte}}","es":"La salida de audio !{{está|no está}}","fr":"La sortie audio !{{est|n\'est pas}}","no":"Lydutgangen !{{er|er ikke}}","ar":"مخرج الصوت !{{هو|ليس}}","de":"Der Audioausgang !{{ist|ist nicht}}"},"args":[{"name":"output","type":"dropdown","values":"$values"}]}],"actions":[{"id":"set_audio_output","title":{"en":"Set audio output to","nl":"Audio-uitgang instellen op","da":"Indstil lydudgang til","it":"Imposta l\'uscita audio su","ko":"오디오 출력을 다음으로 설정","pl":"Ustaw wyjście audio na","ru":"Установить аудиовыход на","sv":"Ställ in ljudutgång till","es":"Configurar la salida de audio en","fr":"Définir la sortie audio sur","no":"Sett lydutgang til","ar":"ضبط مخرج الصوت إلى","de":"Stelle den Audioausgang auf"},"args":[{"name":"output","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.2.0"}')},965:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Shuffle","nl":"Shuffle","de":"Zufallswiedergabe","fr":"Aléatoire","it":"Ordine casuale","sv":"Blanda","no":"Tilfeldig rekkefølge","es":"Aleatorio","da":"Shuffle","ru":"В случайном порядке","pl":"Odtwarzaj losowo","ko":"셔플","ar":"خلط"},"type":"boolean","color":"#9033FC","getable":true,"setable":true,"uiComponent":"media","$flow":{"actions":[{"id":"set_shuffle_true","title":{"en":"Shuffle on","nl":"Shuffle aan","de":"Zufallswiedergabe an","fr":"Aléatoire activée","it":"Ordine casuale attivato","sv":"Blanda på","no":"Tilfeldig rekkefølge på","es":"Orden aleatorio activado","da":"Shufflet slået til","ru":"В случайном порядке","pl":"Włącz odtwarzanie losowe","ko":"셔플 켬","ar":"تشغيل الخلط"}},{"id":"set_shuffle_false","title":{"en":"Shuffle off","nl":"Shuffle uit","de":"Zufallswiedergabe aus","fr":"Aléatoire désactivée","it":"Ordine casuale disattivato","sv":"Blanda av","no":"Tilfeldig rekkefølge av","es":"Orden aleatorio desactivado","da":"Shuffle slået fra","ru":"По порядку","pl":"Wyłącz odtwarzanie losowe","ko":"셔플 끔","ar":"إيقاف الخلط"}}]}}')},993:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Target Humidity","nl":"Gewenste luchtvochtigheid","da":"Luftfugtighedsmål","it":"Umidità target","ko":"희망 습도","pl":"Docelowa wilgotność","ru":"Заданная влажность","sv":"Målfuktighet","es":"Humedad deseada","fr":"Humidité cible","no":"Ønsket fuktighet","ar":"الرطوبة المستهدفة","de":"Ziel-Feuchtigkeit"},"units":{"en":"%","nl":"%","da":"%","it":"%","ko":"%","pl":"%","ru":"%","sv":"%","es":"%","fr":" %","no":"%","ar":"%","de":"%"},"desc":{"en":"The target humidity level in percent.","nl":"Het gewenste vochtigheidsniveau in procenten.","da":"Den ønskede luftfugtighed i procent.","it":"Il livello di umidità target in percentuale.","ko":"백분율로 표현된 목표 습도 수준입니다.","pl":"Docelowy poziom wilgotności w procentach.","ru":"Заданный уровень влажности в процентах.","sv":"Den önskade luftfuktighetsnivån i procent.","es":"El nivel de humedad deseado en porcentaje.","fr":"Le taux d\'humidité cible en pourcentage.","no":"Ønsket fuktighetsnivå i prosent.","ar":"مستوى الرطوبة المستهدف بالنسبة المئوية.","de":"Der Zielwert für die Feuchtigkeit in Prozent."},"min":0,"max":1,"decimals":2,"color":"#0091FF","insights":true,"getable":true,"setable":true,"uiComponent":"slider","$flow":{"triggers":[{"id":"target_humidity_changed","title":{"en":"The target humidity changed","nl":"De gewenste vochtigheid is veranderd","da":"Målfugtigheden ændrede sig","it":"L\'umidità target è cambiata","ko":"희망 습도가 변경되면","pl":"Zmieniła się docelowa wilgotność","ru":"Заданная влажность изменена","sv":"Den önskade luftfuktigheten ändrades","es":"La humedad deseada ha cambiado","fr":"L\'humidité cible a changé","no":"Ønsket fuktighet ble endret","ar":"تغيرت الرطوبة المستهدفة","de":"Die Zielfeuchtigkeit hat sich geändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":0.5}]}],"actions":[{"id":"set_target_humidity","title":{"en":"Set the humidity","nl":"De vochtigheid instellen","da":"Indstil luftfugtigheden","it":"Imposta l\'umidità","ko":"희망 습도 설정","pl":"Ustaw wilgotność","ru":"Установить уровень влажности","sv":"Ställ in luftfuktigheten","es":"Ajustar la humedad","fr":"Définir l\'humidité","no":"Angi fuktigheten","ar":"ضبط الرطوبة","de":"Einstellen der Feuchtigkeit"},"args":[{"name":"target_humidity","type":"range","min":0,"max":1,"step":0.01,"value":0.5,"label":"%","labelMultiplier":100,"labelDecimals":0}]}]},"minCompatibility":"12.2.0"}')},1013:(e,t,a)=>{var r={"./airconditioning.json":657,"./airfryer.json":3554,"./airpurifier.json":2674,"./airtreatment.json":2154,"./amplifier.json":2974,"./battery.json":5619,"./bicycle.json":4963,"./blinds.json":5886,"./boiler.json":175,"./bridge.json":3027,"./button.json":5934,"./camera.json":7101,"./car.json":8148,"./coffeemachine.json":9423,"./cooktop.json":253,"./curtain.json":4636,"./dehumidifier.json":637,"./diffuser.json":9922,"./dishwasher.json":302,"./doorbell.json":4427,"./dryer.json":5848,"./evcharger.json":2177,"./fan.json":7243,"./faucet.json":2850,"./fireplace.json":6461,"./freezer.json":8837,"./fridge.json":2303,"./fridge_and_freezer.json":5597,"./fryer.json":5446,"./gameconsole.json":8621,"./garagedoor.json":4683,"./grill.json":2182,"./heater.json":6507,"./heatpump.json":1330,"./homealarm.json":3454,"./hood.json":4560,"./humidifier.json":9102,"./kettle.json":5905,"./lawnmower.json":9350,"./light.json":6074,"./lock.json":7937,"./mediaplayer.json":275,"./microwave.json":6207,"./mop.json":6,"./multicooker.json":3756,"./networkrouter.json":3121,"./other.json":2440,"./oven.json":2788,"./oven_and_microwave.json":5932,"./petfeeder.json":9848,"./pump.json":6036,"./radiator.json":8184,"./relay.json":9011,"./remote.json":3672,"./scooter.json":7269,"./sensor.json":6796,"./service.json":4357,"./settopbox.json":3998,"./shutterblinds.json":6175,"./siren.json":9647,"./smokealarm.json":1240,"./socket.json":2059,"./solarpanel.json":2755,"./speaker.json":6891,"./sprinkler.json":9738,"./sunshade.json":1961,"./thermostat.json":5395,"./tv.json":6892,"./vacuumcleaner.json":3805,"./vehicle.json":6282,"./washer.json":4398,"./washer_and_dryer.json":5757,"./waterheater.json":6488,"./waterpurifier.json":1269,"./watervalve.json":9101,"./windowcoverings.json":720};function i(e){var t=n(e);return a(t)}function n(e){if(!a.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}i.keys=function(){return Object.keys(r)},i.resolve=n,e.exports=i,i.id=1013},1030:(e,t,a)=>{"use strict";var r=a(6579),i=a(2017),n=a(6740),s=a(2585),o=a(7106);function l(e,t,a){var r=this._refs[a];if("string"==typeof r){if(!this._refs[r])return l.call(this,e,t,r);r=this._refs[r]}if((r=r||this._schemas[a])instanceof s)return g(r.schema,this._opts.inlineRefs)?r.schema:r.validate||this._compile(r);var i,n,o,u=d.call(this,t,a);return u&&(i=u.schema,t=u.root,o=u.baseId),i instanceof s?n=i.validate||e.call(this,i.schema,t,void 0,o):void 0!==i&&(n=g(i,this._opts.inlineRefs)?i:e.call(this,i,t,void 0,o)),n}function d(e,t){var a=r.parse(t),i=k(a),n=f(this._getId(e.schema));if(0===Object.keys(e.schema).length||i!==n){var o=b(i),l=this._refs[o];if("string"==typeof l)return u.call(this,e,l,a);if(l instanceof s)l.validate||this._compile(l),e=l;else{if(!((l=this._schemas[o])instanceof s))return;if(l.validate||this._compile(l),o==b(t))return{schema:l,root:e,baseId:n};e=l}if(!e.schema)return;n=f(this._getId(e.schema))}return p.call(this,a,n,e.schema,e)}function u(e,t,a){var r=d.call(this,e,t);if(r){var i=r.schema,n=r.baseId;e=r.root;var s=this._getId(i);return s&&(n=w(n,s)),p.call(this,a,n,i,e)}}e.exports=l,l.normalizeId=b,l.fullPath=f,l.url=w,l.ids=function(e){var t=b(this._getId(e)),a={"":t},s={"":f(t,!1)},l={},d=this;return o(e,{allKeys:!0},(function(e,t,o,u,m,p,c){if(""!==t){var g=d._getId(e),h=a[u],v=s[u]+"/"+m;if(void 0!==c&&(v+="/"+("number"==typeof c?c:n.escapeFragment(c))),"string"==typeof g){g=h=b(h?r.resolve(h,g):g);var f=d._refs[g];if("string"==typeof f&&(f=d._refs[f]),f&&f.schema){if(!i(e,f.schema))throw new Error('id "'+g+'" resolves to more than one schema')}else if(g!=b(v))if("#"==g[0]){if(l[g]&&!i(e,l[g]))throw new Error('id "'+g+'" resolves to more than one schema');l[g]=e}else d._refs[g]=v}a[t]=h,s[t]=v}})),l},l.inlineRef=g,l.schema=d;var m=n.toHash(["properties","patternProperties","enum","dependencies","definitions"]);function p(e,t,a,r){if(e.fragment=e.fragment||"","/"==e.fragment.slice(0,1)){for(var i=e.fragment.split("/"),s=1;s{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Pressure","nl":"Druk","de":"Druck","fr":"Pression","it":"Pressione","sv":"Tryck","no":"Trykk","es":"Presión","da":"Tryk","ru":"Давление","pl":"Ciśnienie","ko":"기압","ar":"الضغط"},"units":{"en":"mbar","ru":"мбар","ko":"mbar","no":"mbar","ar":"مللي بار","da":"mbar","de":"mbar","es":"mbar","fr":"mbar","it":"mbar","nl":"mbar","pl":"mbar","sv":"mbar"},"insights":true,"desc":{"en":"Pressure in millibar (mbar)","nl":"Druk in millibar (mbar)","de":"Druck in Millibar (mbar)","fr":"Pression en millibar (mbar)","it":"Pressione in millibar (mbar)","sv":"Tryck i millibar (mbar)","no":"Trykk i millibar (mbar)","es":"Presión en milibares (mbar)","da":"Tryk i millibar (mbar)","ru":"Давление (мбар)","pl":"Ciśnienie w milibarach (mbar)","ko":"압력 밀리바(mbar)","ar":"الضغط بالمللي بار (mbar)"},"chartType":"spline","decimals":0,"color":"#32C5FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_pressure_changed","title":{"en":"The pressure changed","nl":"De druk is veranderd","de":"Der Druck hat sich geändert","fr":"La pression a changé","it":"La pressione è cambiata","sv":"Trycket ändrades","no":"Trykket ble endret","es":"La presión ha cambiado","da":"Trykkey ændrede sig","ru":"Давление изменилось","pl":"Zmiana ciśnienia","ko":"기압이 변경되면","ar":"تغير الضغط"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":1000}]}]}}')},1080:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Contact Alarm","nl":"Contactalarm","de":"Kontaktalarm","fr":"Alarme de contact","it":"Allarme contatto","sv":"Kontaktlarm","no":"Kontaktalarm","es":"Alarma de contacto","da":"Kontaktalarm","ru":"Сигнал контакта","pl":"Alarm kontaktu","ko":"열림 감지","ar":"إنذار الاتصال"},"titleShort":{"en":"No Contact","nl":"Geen contact","de":"Kein Kontakt","fr":"Aucun contact","it":"Nessun contatto","sv":"Ingen kontakt","no":"Ingen kontakt","es":"No hay contacto","da":"Ingen kontakt","ru":"Нет контакта","pl":"Brak kontaktu","ko":"접촉 없음","ar":"لا يوجد اتصال"},"desc":{"en":"Contact sensor, e.g. for windows (true/false)","nl":"Contact sensor, bijvoorbeeld voor ramen","de":"Kontaktsensor, z.B. für Windows (true/false)","fr":"Capteur de contact, par ex. pour les fenêtres (vrai/faux)","it":"Sensore di contatto, ad es. per le finestre (vero/falso)","sv":"Kontaktsensor, t.ex. för fönster (sant/falskt)","no":"Kontaktsensor, f.eks. for vindu (sant/usant)","es":"Sensor de contacto, p. ej., para ventanas (verdadero/falso)","da":"Kontaktsensor, f.eks. til vinduer (sandt/falsk)","ru":"Контактный датчик, например для окон (истина/ложь)","pl":"Czujnik otwarcia, np. okien (adekwatny/nieadekwatny)","ko":"접촉 센서, 예: 창문(참/거짓)","ar":"مستشعر اتصال، على سبيل المثال للنوافذ (صحيح/خطأ)"},"insights":true,"insightsTitleTrue":{"en":"Contact alarm turned on","nl":"Contact alarm ging af","de":"Kontakt-Alarm ist angegangen","fr":"Alarme contact s\'est activée","it":"Allarme di contatto attivato","sv":"Kontaktalarm aktiverat","no":"Kontaktalarm aktivert","es":"Alarma de contacto activada","da":"Kontaktalarm blev aktiveret","ru":"Контактный сигнал включен","pl":"Alarm otwarcia włączony","ko":"열림","ar":"تم تشغيل إنذار الاتصال"},"insightsTitleFalse":{"en":"Contact alarm turned off","nl":"Contact alarm ging uit","de":"Kontakt-Alarm ist ausgegangen","fr":"Alarme contact s\'est désactivée","it":"Allarme di contatto disattivato","sv":"Kontaktalarm inaktiverat","no":"Kontaktalarm deaktivert","es":"Alarma de contacto desactivada","da":"Kontaktalarm blev deaktiveret","ru":"Контактный сигнал выключен","pl":"Alarm otwarcia wyłączony","ko":"닫힘","ar":"تم إيقاف إنذار الاتصال"},"color":"#32C5FF","getable":true,"setable":false,"uiComponent":"sensor","options":{"zoneActivity":true},"$flow":{"triggers":[{"id":"alarm_contact_true","highlight":true,"title":{"en":"The contact alarm turned on","nl":"Het contactalarm gaat aan","de":"Der Kontakt-Alarm ist angegangen","fr":"L\'alarme contact s\'est activée","it":"L\'allarme di contatto è stato attivato","sv":"Kontaktalarmet aktiverat","no":"Kontaktalarmen ble aktivert","es":"La alarma de contacto se ha activado","da":"Kontaktalarmen blev aktiveret","ru":"Контактный сигнал включен","pl":"Alarm otwarcia włączony","ko":"열림 감지 열리면","ar":"تم تشغيل إنذار الاتصال"}},{"id":"alarm_contact_false","title":{"en":"The contact alarm turned off","nl":"Het contactalarm gaat uit","de":"Der Kontakt-Alarm ist ausgegangen","fr":"L\'alarme contact s\'est désactivée","it":"L\'allarme di contatto è stato disattivato","sv":"Kontaktalarmet inaktiverat","no":"Kontaktalarmen ble deaktivert","es":"La alarma de contacto se ha desactivado","da":"Kontaktalarmen blev deaktiveret","ru":"Контактный сигнал выключен","pl":"Alarm otwarcia wyłączony","ko":"열림 감지 닫히면","ar":"تم إيقاف إنذار الاتصال"}}],"conditions":[{"id":"alarm_contact","title":{"en":"The contact alarm is !{{on|off}}","nl":"Het contactalarm is !{{aan|uit}}","de":"Der Kontakt-Alarm ist !{{an|aus}}","fr":"L\'alarme contact est !{{en marche|arrêtée}}","it":"L\'allarme di contatto è !{{acceso|spento}}","sv":"Kontaktalarmet är !{{på|av}}","no":"Kontaktalarmen er !{{på|av}}","es":"La alarma de contacto está !{{activada|desactivada}}","da":"Kontaktalarmen er !{{tændt|slukket}}","ru":"Контактный сигнал !{{вкл.|выкл.}}","pl":"Alarm otwarcia jest !{{włączony|wyłączony}}","ko":"열림 감지 !{{열리면|닫히면}}","ar":"إنذار الاتصال !{{يعمل|لا يعمل}}"}}]}}')},1169:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Radon Level","nl":"Radonniveau","da":"Radon-niveau","it":"Livello di radon","ko":"라돈 수준","pl":"Poziom radonu","ru":"Уровень радона","sv":"Radonnivå","es":"Nivel de radón","fr":"Niveau de radon","no":"Radonnivå","ar":"مستوى الرادون","de":"Radongehalt"},"desc":{"en":"The level of radioactive radon gas in the air.","nl":"De mate van radioactief radongas in de lucht.","da":"Niveauet af radioaktiv radongas i luften.","it":"Il livello di gas radon radioattivo nell\'aria.","ko":"공기 중 방사성 라돈 기체의 수준입니다.","pl":"Poziom radioaktywnego radonu w powietrzu.","ru":"Уровень содержания радиоактивного радона в воздухе.","sv":"Halten av radioaktiv radongas i luften.","es":"El nivel de gas radón radiactivo en el aire.","fr":"Le niveau de radon radioactif dans l\'air.","no":"Nivået av radioaktiv radongass i luften.","ar":"مستوى غاز الرادون المشع في الهواء.","de":"Der Gehalt an radioaktivem Radongas in der Luft."},"values":[{"id":"low","title":{"en":"Low","nl":"Laag","da":"Lavt","it":"Basso","ko":"낮음","pl":"Niski","ru":"Низкий","sv":"Låg","es":"Bajo","fr":"Faible","no":"Lavt","ar":"منخفض","de":"Niedrig"}},{"id":"medium","title":{"en":"Medium","nl":"Gemiddeld","da":"Medium","it":"Medio","ko":"보통","pl":"Średni","ru":"Средний","sv":"Medium","es":"Intermedio","fr":"Moyen","no":"Middels","ar":"متوسط","de":"Mittel"}},{"id":"high","title":{"en":"High","nl":"Hoog","da":"Højt","it":"Alto","ko":"높음","pl":"Wysoki","ru":"Высокий","sv":"Hög","es":"Alto","fr":"Élevé","no":"Høyt","ar":"عالي","de":"Hoch"}},{"id":"critical","title":{"en":"Critical","nl":"Kritiek","da":"Kritisk","it":"Critico","ko":"위험","pl":"Krytyczny","ru":"Критический","sv":"Kritisk","es":"Crítico","fr":"Critique","no":"Kritisk","ar":"حرج","de":"Kritisch"}}],"color":"#8B0000","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"level_radon_changed","highlight":true,"title":{"en":"The radon level changed to","nl":"Het radonniveau is veranderd naar","da":"Radonniveauet ændrede sig til","it":"Il livello di radon è passato a","ko":"라돈 수준이 다음으로 변경되면","pl":"Poziom radonu zmienił się na","ru":"Уровень радона изменился на","sv":"Radonnivån ändrades till","es":"El nivel de radón ha cambiado a","fr":"Le niveau de radon est passé à","no":"Radonnivået ble endret til","ar":"تغير مستوى الرادون إلى","de":"Der Radonwert hat sich geändert auf"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"level_radon_is","title":{"en":"The radon level !{{is|is not}}","nl":"Het radonniveau !{{is|is niet}}","da":"Radonniveauet !{{er|er ikke}}","it":"Il livello di radon !{{è|non è}}","ko":"라돈 수준이 다음!{{이면|이 아니면}}","pl":"Poziom radonu !{{jest|nie jest}}","ru":"Уровень радона !{{|не}}","sv":"Radonnivån !{{är|är inte}}","es":"El nivel de radón !{{es|no es}}","fr":"Le niveau de radon !{{est|n\'est pas}}","no":"Radonnivået !{{er|er ikke}}","ar":"مستوى الرادون !{{هو|ليس}}","de":"Der Radonwert !{{ist|ist nicht}}"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.2.0"}')},1207:()=>{},1227:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Position","nl":"Positie","de":"Position","fr":"Position","it":"Posizione","sv":"Position","no":"Posisjon","es":"Posición","da":"Position","ru":"Позиция","pl":"Pozycja","ko":"위치","ar":"الموضع"},"type":"number","color":"#9033FC","getable":true,"setable":false,"uiComponent":"media"}')},1240:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Smoke Alarm","da":"Røgalarm","de":"Rauchmelder","es":"Detector de humo","fr":"Détecteur de fumée","it":"Rilevatore di fumo","ko":"연기 감지기","nl":"Rookmelder","no":"Røykvarsler","pl":"Alarm przeciwdymny","ru":"Датчик дыма","sv":"Rökalarm","ar":"إنذار الدخان"},"description":{"en":"Use this device class for any smoke- or CO-alarm, could also be used for combo units.","da":"Brug denne enhedsklasse til enhver røg- eller kuliltealarm, kan også bruges til kombinationsenheder.","de":"Verwenden Sie diese Geräteklasse für jeden Rauch- oder CO-Alarm. Sie kann auch für Kombi-Geräte verwendet werden.","es":"Utiliza esta clase de dispositivo para cualquier detector de humo o CO2. También puede servir para unidades que combinen ambas funciones.","fr":"Cette classe d\'appareils peut être utilisée pour n\'importe quel détecteur de fumée ou de CO, ainsi que pour les unités combinées.","it":"Utilizza questa classe di dispositivi per qualsiasi rilevatore di fumo o di monossido di carbonio. Può essere utilizzata anche per unità combinate.","ko":"이 디바이스 클래스는 연기 및 CO 알람 경보기에 사용하며, 콤보 유닛에도 사용할 수 있습니다.","nl":"Gebruik deze apparaatklasse voor elk rook- of CO-melder, kan ook worden gebruikt voor gecombineerde eenheden.","no":"Bruk denne enhetsklassen for alle slags røyk- eller kullosvarslere. Kan også brukes for kombienheter.","pl":"Tej klasy urządzeń można używać w przypadku dowolnego alarmu dymnego lub CO, a także w przypadku urządzeń typu combo.","ru":"Используйте этот класс устройств для датчиков дыма или угарного газа любого типа; также можно использовать для комбинированных устройств.","sv":"Använd den här enhetsklassen för alla rök- eller CO-larm, kan även användas för kombienheter.","ar":"استخدم فئة الجهاز هذه لأي إنذار دخان أو أول أكسيد الكربون، ويمكن استخدامها أيضًا للوحدات المدمجة."},"minCompatibility":"12.0.0"}')},1247:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Maximum target temperature","nl":"Maximale gewenste temperatuur","da":"Maksimal måltemperatur","it":"Temperatura target massima","ko":"최대 희망 온도","pl":"Maksymalna docelowa tempertura","ru":"Максимальная заданная температура","sv":"Maximal måltemperatur","es":"Temperatura máxima deseada","fr":"Température cible maximale","no":"Maksimum ønsket temperatur","ar":"الحد الأقصى لدرجة الحرارة المستهدفة","de":"Maximale Zieltemperatur"},"units":{"en":"°C","nl":"°C","da":"°C","it":"°C","ko":"°C","pl":"°C","ru":"°C","sv":"°C","es":"°C","fr":"°C","no":"°C","ar":"°C","de":"°C"},"desc":{"en":"The high end of the temperature setpoint in degrees Celsius.","nl":"De bovengrens van het instelpunt voor temperatuur in graden Celsius.","da":"Den høje ende af temperaturindstillingspunktet i Celsius.","it":"Il setpoint massimo di temperatura in gradi Celsius.","ko":"섭씨 도 단위의 온도 설정값 최대치입니다.","pl":"Górna granica wartości zadanej temperatury w stopniach Celsjusza.","ru":"Верхний предел заданной температуры в градусах Цельсия.","sv":"Den övre delen av temperaturbörvärdet i grader Celsius.","es":"El valor superior de ajuste de la temperatura en grados centígrados.","fr":"Le niveau maximal de la température en degrés Celsius.","no":"Maksimum ønsket temperaturinnstilling i grader Celsius.","ar":"الحد الأعلى لدرجة الحرارة المستهدفة بالدرجات المئوية.","de":"Das obere Ende des Temperatursollwerts in Grad Celsius."},"insights":true,"chartType":"stepLine","decimals":2,"min":4,"max":35,"color":"#FA6400","getable":true,"setable":true,"uiComponent":"slider","$flow":{"triggers":[{"id":"target_temperature_max_changed","title":{"en":"The maximum target temperature has changed","nl":"De maximale gewenste temperatuur is veranderd","da":"Den maksimale måltemperatur har ændret sig","it":"La temperatura target massima è cambiata","ko":"최대 희망 온도가 변경되면","no":"Maksimum ønsket temperatur er endret","pl":"Zmieniła się maksymalna temperatura docelowa","ru":"Максимальная заданная температура изменена","sv":"Den maximala måltemperaturen har ändrats","es":"La temperatura máxima deseada ha cambiado","fr":"La température maximale cible a changé","ar":"تم تغيير الحد الأقصى لدرجة الحرارة المستهدفة","de":"Die maximale Zieltemperatur wurde geändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":20}]}],"actions":[{"id":"set_target_temperature_max","title":{"en":"Set the maximum target temperature","nl":"De maximale gewenste temperatuur instellen","da":"Indstil den maksimale måltemperatur","it":"Imposta la temperatura target massima","ko":"최대 희망 온도 설정","pl":"Ustaw maksymalną temperaturę docelową","ru":"Установить максимальную заданную температуру","sv":"Ställ in den maximala måltemperaturen","es":"Ajustar la temperatura máxima deseada","fr":"Définir la température maximale cible","no":"Sett maksimum ønsket temperatur","ar":"ضبط الحد الأقصى لدرجة الحرارة المستهدفة","de":"Einstellen der maximalen Zieltemperatur"},"args":[{"name":"target_temperature_max","type":"range","min":4,"max":35,"step":0.5,"example":20}]}]},"minCompatibility":"12.2.0"}')},1269:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Water Purifier","da":"Vandrensningsanlæg","de":"Wasseraufbereiter","es":"Purificador de agua","fr":"Purificateur d\'eau","it":"Depuratore d\'acqua","ko":"정수기","nl":"Waterzuiveraar","no":"Vannrenser","pl":"Oczyszczacz wody","ru":"Очиститель воды","sv":"Vattenrenare","ar":"جهاز تنقية المياه"},"description":{"en":"Use this device class for water purifiers.","da":"Brug denne enhedsklasse til vandrensningsanlæg.","de":"Verwenden Sie diese Geräteklasse für Wasseraufbereiter.","es":"Utiliza esta clase de dispositivo para purificadores de agua.","fr":"Utilisez cette classe d\'appareils pour les purificateurs d\'eau.","it":"Utilizza questa classe di dispositivi per i depuratori d\'acqua.","ko":"이 디바이스 클래스는 정수기에 사용합니다.","nl":"Gebruik deze apparaatklasse voor waterzuiveraars.","no":"Bruk denne enhetsklassen for vannrensere.","pl":"Tej klasy urządzeń należy używać w przypadku oczyszczaczy wody.","ru":"Используйте этот класс устройств для очистителей воды.","sv":"Använd den här enhetsklassen för vattenrenare.","ar":"استخدم فئة الجهاز هذه لأجهزة تنقية المياه."},"minCompatibility":"12.0.0"}')},1275:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Water Alarm","nl":"Wateralarm","de":"Wasseralarm","fr":"Alarme d\'eau","it":"Allarme acqua","sv":"Vattenlarm","no":"Vannalarm","es":"Alarma de agua","da":"Vandalarm","ru":"Сигнал воды","pl":"Alarm zalania wodą","ko":"누수 감지","ar":"إنذار المياه"},"titleShort":{"en":"Water","nl":"Water","de":"Wasser","fr":"Eau","it":"Acqua","sv":"Vatten","no":"Vann","es":"Agua","da":"Vand","ru":"Вода","pl":"Woda","ko":"물","ar":"المياه"},"desc":{"en":"True when water has been detected","nl":"Gaat af als er water gedetecteerd wordt","de":"True, wenn Wasser erkannt wurde","fr":"Vrai si de l\'eau a été détectée","it":"Vero quando è stata rilevata dell\'acqua","sv":"Sant när vatten upptäcks","no":"Sant når vann har blitt påvist","es":"Activado cuando se detecta agua","da":"Sandt, når vand er blevet opdaget","ru":"Значение «истина» при обнаружении протечки воды","pl":"Adekwatny, kiedy wykryta zostanie woda","ko":"물이 감지되면 참","ar":"صحيح عند اكتشاف مياه"},"insights":true,"insightsTitleTrue":{"en":"Water alarm turned on","nl":"Water alarm ging af","de":"Wasser-Alarm ist angegangen","fr":"Alarme eau s\'est activée","it":"Allarme acqua attivato","sv":"Vattenalarm aktiverat","no":"Vannalarm aktivert","es":"Alarma de agua activada","da":"Vandalarm blev aktiveret","ru":"Сигнал протечки воды включен","pl":"Alarm zalania wodą włączony","ko":"누수 감지됨","ar":"تم تشغيل إنذار المياه"},"insightsTitleFalse":{"en":"Water alarm turned off","nl":"Water alarm ging uit","de":"Wasser-Alarm ist ausgegangen","fr":"Alarme eau s\'est désactivée","it":"Allarme acqua disattivato","sv":"Vattenalarm inaktiverat","no":"Vannalarm deaktivert","es":"Alarma de agua desactivada","da":"Vandalarm blev deaktiveret","ru":"Сигнал протечки воды выключен","pl":"Alarm zalania wodą wyłączony","ko":"누수 감지되지 않음","ar":"تم إيقاف إنذار المياه"},"color":"#0091FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_water_true","highlight":true,"title":{"en":"The water alarm turned on","nl":"Het wateralarm gaat aan","de":"Der Wasser-Alarm ist angegangen","fr":"L\'alarme eau s\'est activée","it":"L\'allarme acqua è stato attivato","sv":"Vattenalarmet aktiverat","no":"Vannalarmen ble aktivert","es":"La alarma de agua se ha activado","da":"Vandalarmen blev aktiveret","ru":"Сигнал аккумулятора включен","pl":"Alarm zalania wodą włączony","ko":"누수가 감지되면","ar":"تم تشغيل إنذار المياه"}},{"id":"alarm_water_false","title":{"en":"The water alarm turned off","nl":"Het wateralarm gaat uit","de":"Der Wasser-Alarm ist ausgegangen","fr":"L\'alarme eau s\'est désactivée","it":"L\'allarme acqua è stato disattivato","sv":"Vattenalarmet inaktiverat","no":"Vannalarmen ble deaktivert","es":"La alarma de agua se ha desactivado","da":"Vandalarmen blev deaktiveret","ru":"Сигнал аккумулятора выключен","pl":"Alarm zalania wodą wyłączony","ko":"누수가 감지되지 않으면","ar":"تم إيقاف إنذار المياه"}}],"conditions":[{"id":"alarm_water","title":{"en":"The water alarm is !{{on|off}}","nl":"Het wateralarm is !{{aan|uit}}","de":"Der Wasser-Alarm ist !{{an|aus}}","fr":"L\'alarme eau est !{{en marche|arrêtée}}","it":"L\'allarme acqua è !{{acceso|spento}}","sv":"Vattenalarmet är !{{på|av}}","no":"Vannalarmen er !{{på|av}}","es":"La alarma de agua está !{{activada|desactivada}}","da":"Vandalarmen er !{{tændt|slukket}}","ru":"Сигнал протечки воды !{{вкл.|выкл.}}","pl":"Alarm zalania wodą jest !{{włączony|wyłączony}}","ko":"누수가 감지!{{되면|되지 않으면}}","ar":"إنذار المياه !{{يعمل|لا يعمل}}"}}]}}')},1288:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Gust angle","nl":"Windstootrichting","de":"Böenrichtung","fr":"Direction d\'un coup de vent","it":"Angolo delle raffiche","sv":"Vindriktning","no":"Vindretning","es":"Dirección del aire","da":"Vindretning","ru":"Угол порывов ветра","pl":"Kąt porywu wiatru","ko":"돌풍 각도","ar":"زاوية العاصفة"},"units":{"en":"°","ko":"°","no":"°","ru":"°","ar":"°","da":"°","de":"°","es":"°","fr":"°","it":"°","nl":"°","pl":"°","sv":"°"},"insights":true,"desc":{"en":"Gust angle in degrees (°)","nl":"Windstoot richting in graden (°)","de":"Böenrichtung in Grad (°)","fr":"Direction du coup de vent en degrés (°)","it":"Angolo delle raffiche in gradi (°)","sv":"Vindriktning i grader (°)","no":"Vindretning i grader (°)","es":"Dirección del aire en grados (°)","da":"Vindretning i grader (°)","ru":"Угол порывов ветра в градусах (°)","pl":"Kąt porywu wiatru w stopniach (°)","ko":"돌풍 각도(°)","ar":"زاوية العاصفة بالدرجات (°)"},"chartType":"stepLine","decimals":2,"color":"#32C5FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_gust_angle_changed","title":{"en":"The gust angle changed","nl":"Windstootrichting is veranderd","de":"Die Böenrichtung hat sich geändert","fr":"Direction du coup de vent a changé","it":"L\'angolo delle raffiche è cambiato","sv":"Vindriktningen har ändrats","no":"Vindretningen er endret","es":"La dirección del aire ha cambiado","da":"Vindretningen skiftede","ru":"Угол порывов ветра изменился","pl":"Zmiana kąta porywu wiatru","ko":"돌풍 각도가 변경되면","ar":"تغيرت زاوية العاصفة"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":36}]}]}}')},1298:e=>{"use strict";e.exports=function(e,t,a){var r,i=" ",n=e.level,s=e.dataLevel,o=e.schema[t],l=e.schemaPath+e.util.getProperty(t),d=e.errSchemaPath+"/"+t,u=!e.opts.allErrors,m="data"+(s||""),p=e.opts.$data&&o&&o.$data;if(p?(i+=" var schema"+n+" = "+e.util.getData(o.$data,s,e.dataPathArr)+"; ",r="schema"+n):r=o,!p&&"number"!=typeof o)throw new Error(t+" must be number");i+="if ( ",p&&(i+=" ("+r+" !== undefined && typeof "+r+" != 'number') || "),i+=" Object.keys("+m+").length "+("maxProperties"==t?">":"<")+" "+r+") { ";var c=t,g=g||[];g.push(i),i="",!1!==e.createErrors?(i+=" { keyword: '"+(c||"_limitProperties")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(d)+" , params: { limit: "+r+" } ",!1!==e.opts.messages&&(i+=" , message: 'should NOT have ",i+="maxProperties"==t?"more":"fewer",i+=" than ",i+=p?"' + "+r+" + '":""+o,i+=" properties' "),e.opts.verbose&&(i+=" , schema: ",i+=p?"validate.schema"+l:""+o,i+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),i+=" } "):i+=" {} ";var h=i;return i=g.pop(),!e.compositeRule&&u?e.async?i+=" throw new ValidationError(["+h+"]); ":i+=" validate.errors = ["+h+"]; return false; ":i+=" var err = "+h+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",i+="} ",u&&(i+=" else { "),i}},1329:e=>{"use strict";e.exports=JSON.parse('["onoff","dim","light_hue","light_saturation","light_temperature","light_mode","vacuumcleaner_state","thermostat_mode","target_temperature","measure_temperature","measure_co","measure_co2","measure_pm25","measure_humidity","measure_pressure","measure_noise","measure_rain","measure_wind_strength","measure_wind_angle","measure_gust_strength","measure_gust_angle","measure_battery","measure_power","measure_voltage","measure_current","measure_luminance","measure_ultraviolet","measure_water","alarm_generic","alarm_motion","alarm_contact","alarm_co","alarm_co2","alarm_pm25","alarm_tamper","alarm_smoke","alarm_fire","alarm_heat","alarm_water","alarm_battery","alarm_night","meter_power","meter_water","meter_gas","meter_rain","homealarm_state","volume_set","volume_up","volume_down","volume_mute","channel_up","channel_down","locked","lock_mode","garagedoor_closed","windowcoverings_state","windowcoverings_tilt_up","windowcoverings_tilt_down","windowcoverings_tilt_set","windowcoverings_closed","windowcoverings_set","button","speaker_playing","speaker_next","speaker_prev","speaker_shuffle","speaker_repeat","speaker_artist","speaker_album","speaker_track","speaker_duration","speaker_position","alarm_bin_full","alarm_bin_missing","alarm_cleaning_pad_missing","alarm_cold","alarm_connectivity","alarm_door_fault","alarm_gas","alarm_light","alarm_lost","alarm_moisture","alarm_noise","alarm_occupancy","alarm_pm01","alarm_pm1","alarm_pm10","alarm_power","alarm_presence","alarm_problem","alarm_pump_device","alarm_pump_supply","alarm_running","alarm_safety","alarm_stuck","alarm_tank_empty","alarm_tank_missing","alarm_tank_open","alarm_vibration","audio_output","battery_charging_state","dishwasher_program","docked","fan_mode","fan_speed","heater_operation_mode","measure_hepa_filter","hot_water_mode","laundry_washer_cycles","laundry_washer_program","laundry_washer_speed","level_aqi","level_carbon_filter","level_ch2o","level_co","level_co2","level_nox","level_o3","level_pm1","level_pm01","level_pm10","level_pm25","level_radon","level_so2","level_tvoc","measure_aqi","measure_carbon_filter","measure_ch2o","measure_content_volume","measure_data_rate","measure_data_size","measure_distance","measure_frequency","level_hepa_filter","measure_moisture","measure_monetary","measure_nox","measure_o3","measure_odor","measure_ph","measure_pm1","measure_pm01","measure_pm10","measure_radon","measure_rain_intensity","measure_rotation","measure_signal_strength","measure_so2","measure_speed","measure_tvoc","measure_tvoc_index","measure_weight","media_input","mower_state","operational_state","oscillating","pump_mode","pump_setpoint","refrigerator_mode","speaker_stop","swing_mode","target_humidity_max","target_humidity_min","target_humidity","target_power","target_power_mode","target_temperature_level","target_temperature_max","target_temperature_min","vacuumcleaner_job_mode","valve_position","ev_charging_state","evcharger_charging_state","evcharger_charging","oven_mode","microwave_mode","laundry_dryer_dryness","alarm_freeze_risk","alarm_rain","alarm_open","cooking_time","power_level","power_boost","progress"]')},1330:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Heat Pump","da":"Varmepumpe","de":"Wärmepumpe","es":"Bomba de calor","fr":"Pompe à chaleur","it":"Pompa di calore","ko":"히트펌프","nl":"Warmtepomp","no":"Varmepumpe","pl":"Pompa ciepła","ru":"Тепловой насос","sv":"Värmepump","ar":"مضخة حرارية"},"description":{"en":"Use this device class for heat pumps.","da":"Brug denne enhedsklasse til varmepumper.","de":"Verwenden Sie diese Geräteklasse für Wärmepumpen.","es":"Utiliza esta clase de dispositivo para bombas de calor.","fr":"Utiliser cette classe d\'appareils pour les pompes à chaleur.","it":"Utilizza questa classe di dispositivi per le pompe di calore.","ko":"이 디바이스 클래스는 히트펌프에 사용합니다.","nl":"Gebruik deze apparaatklasse voor warmtepompen.","no":"Bruk denne enhetsklassen for varmepumper.","pl":"Tej klasy urządzeń należy używać w przypadku pomp ciepła.","ru":"Используйте этот класс устройств для тепловых насосов.","sv":"Använd den här enhetsklassen för värmepumpar.","ar":"استخدم فئة الجهاز هذه للمضخات الحرارية."},"minCompatibility":"12.0.0"}')},1366:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Lost Alarm","nl":"Waarschuwing bij zoekraking","da":"Forsvundet alarm","it":"Allarme oggetto smarrito","ko":"기기 분실 감지","no":"Mistet-alarm","pl":"Alarm zgubienia","ru":"Сигнал о потере","sv":"Förlorat larm","es":"Alarma de pérdida","fr":"Alarme de perte","ar":"إنذار الفقد","de":"Alarm für „Verloren“"},"titleShort":{"en":"Lost","nl":"Kwijt","da":"Forsvundet","it":"Smarrito","ko":"분실","no":"Mistet","pl":"Zgubienie","ru":"Потеря","sv":"Förlorat","es":"Pérdida","fr":"Perdu","ar":"مفقود","de":"Verloren"},"desc":{"en":"True when the device is lost.","nl":"Wordt geactiveerd wanneer het apparaat zoek is.","da":"Sandt, når enheden er forsvundet.","it":"Vero quando il dispositivo viene perso.","ko":"디바이스를 분실하면 참입니다.","no":"Sann når enheten er mistet.","pl":"Prawda, gdy urządzenie jest zgubione.","ru":"Значение «истина», когда устройство потеряно.","sv":"Sant när enheten förloras.","es":"Activado cuando se ha perdido el dispositivo.","fr":"Se déclenche lorsque l’appareil est perdu.","ar":"صحيح عند فقد الجهاز.","de":"Wahr, wenn das Gerät verloren gegangen ist."},"insights":true,"insightsTitleTrue":{"en":"Was lost","nl":"Was zoek","da":"Forsvandt","it":"È stato perso","ko":"기기 분실됨","no":"Ble mistet","pl":"Było zgubione","ru":"Было потеряно","sv":"Förlorades","es":"Estaba perdido","fr":"Était perdu","ar":"كان مفقودًا","de":"War verloren"},"insightsTitleFalse":{"en":"Was no longer lost","nl":"Was gevonden","da":"Var ikke længere forsvundet","it":"Non era più perso","ko":"기기 발견됨","no":"Var ikke lenger mistet","pl":"Nie było już zgubione","ru":"Больше не потеряно","sv":"Var inte längre förlorad","es":"Ya no estaba perdido","fr":"N\'était plus perdu","ar":"لم يعد مفقودًا","de":"War nicht mehr verloren"},"color":"#9033FC","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_lost_true","highlight":true,"title":{"en":"Is lost","nl":"Is zoek","da":"Er forsvundet","it":"È perso","ko":"기기가 분실되면","no":"Er mistet","pl":"Jest zgubione","ru":"Потеряно","sv":"Är förlorad","es":"Se ha perdido","fr":"Est perdu","ar":"مفقود","de":"Ist verloren"}},{"id":"alarm_lost_false","title":{"en":"Is no longer lost","nl":"Is gevonden","da":"Er ikke længere forsvundet","it":"Non è più perso","ko":"기기가 발견되면","no":"Er ikke lenger mistet","pl":"Nie jest już zgubione","ru":"Больше не потеряно","sv":"Är inte längre förlorad","es":"Ya no está perdido","fr":"N\'est plus perdu","ar":"لم يعد مفقودًا","de":"Ist nicht mehr verloren"}}],"conditions":[{"id":"alarm_lost","title":{"en":"Is !{{lost|not lost}}","nl":"Is !{{zoek|gevonden}}","da":"Er !{{forsvundet|ikke forsvundet}}","it":"È !{{perso|non perso}}","ko":"기기가 !{{분실되면|발견되면}}","no":"Er !{{mistet|ikke mistet}}","pl":"!{{jest zgubione|nie jest zgubione}} ","ru":"Устройство !{{потеряно|не потеряно}}","sv":"Är !{{förlorad|inte förlorad}}","es":"!{{Se ha perdido|Ya no esta perdido}}","fr":"Est !{{connectée|déconnectée}}","ar":"!{{مفقود|غير مفقود}}","de":"Ist !{{verloren|nicht verloren}}"}}]},"minCompatibility":"12.2.0"}')},1374:e=>{"use strict";e.exports=function(e,t,a){var r=" ",i=e.level,n=e.dataLevel,s=e.schema[t],o=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+"/"+t,d=!e.opts.allErrors,u="data"+(n||""),m="errs__"+i,p=e.util.copy(e),c="";p.level++;var g="valid"+p.level,h="key"+i,v="idx"+i,f=p.dataLevel=e.dataLevel+1,k="data"+f,y="dataProperties"+i,b=Object.keys(s||{}).filter(D),w=e.schema.patternProperties||{},z=Object.keys(w).filter(D),P=e.schema.additionalProperties,_=b.length||z.length,S=!1===P,A="object"==typeof P&&Object.keys(P).length,E=e.opts.removeAdditional,j=S||A||E,C=e.opts.ownProperties,O=e.baseId,L=e.schema.required;if(L&&(!e.opts.$data||!L.$data)&&L.length8)r+=" || validate.schema"+o+".hasOwnProperty("+h+") ";else{var M=b;if(M)for(var x=-1,$=M.length-1;x<$;)J=M[x+=1],r+=" || "+h+" == "+e.util.toQuotedString(J)+" "}if(z.length){var F=z;if(F)for(var I=-1,N=F.length-1;I0:e.util.schemaHasRules(Y,e.RULES.all)){var X=e.util.getProperty(J),ee=(q=u+X,W&&void 0!==Y.default);if(p.schema=Y,p.schemaPath=o+X,p.errSchemaPath=l+"/"+e.util.escapeFragment(J),p.errorPath=e.util.getPath(e.errorPath,J,e.opts.jsonPointers),p.dataPathArr[f]=e.util.toQuotedString(J),G=e.validate(p),p.baseId=O,e.util.varOccurences(G,k)<2){G=e.util.varReplace(G,k,q);var te=q}else te=k,r+=" var "+k+" = "+q+"; ";if(ee)r+=" "+G+" ";else{if(T&&T[J]){r+=" if ( "+te+" === undefined ",C&&(r+=" || ! Object.prototype.hasOwnProperty.call("+u+", '"+e.util.escapeQuotes(J)+"') "),r+=") { "+g+" = false; ",B=e.errorPath,V=l;var ae,re=e.util.escapeQuotes(J);e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPath(B,J,e.opts.jsonPointers)),l=e.errSchemaPath+"/required",(ae=ae||[]).push(r),r="",!1!==e.createErrors?(r+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { missingProperty: '"+re+"' } ",!1!==e.opts.messages&&(r+=" , message: '",e.opts._errorDataPathProperty?r+="is a required property":r+="should have required property \\'"+re+"\\'",r+="' "),e.opts.verbose&&(r+=" , schema: validate.schema"+o+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),r+=" } "):r+=" {} ",R=r,r=ae.pop(),!e.compositeRule&&d?e.async?r+=" throw new ValidationError(["+R+"]); ":r+=" validate.errors = ["+R+"]; return false; ":r+=" var err = "+R+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",l=V,e.errorPath=B,r+=" } else { "}else d?(r+=" if ( "+te+" === undefined ",C&&(r+=" || ! Object.prototype.hasOwnProperty.call("+u+", '"+e.util.escapeQuotes(J)+"') "),r+=") { "+g+" = true; } else { "):(r+=" if ("+te+" !== undefined ",C&&(r+=" && Object.prototype.hasOwnProperty.call("+u+", '"+e.util.escapeQuotes(J)+"') "),r+=" ) { ");r+=" "+G+" } "}}d&&(r+=" if ("+g+") { ",c+="}")}}if(z.length){var ie=z;if(ie)for(var ne,se=-1,oe=ie.length-1;se0:e.util.schemaHasRules(Y,e.RULES.all))&&(p.schema=Y,p.schemaPath=e.schemaPath+".patternProperties"+e.util.getProperty(ne),p.errSchemaPath=e.errSchemaPath+"/patternProperties/"+e.util.escapeFragment(ne),r+=C?" "+y+" = "+y+" || Object.keys("+u+"); for (var "+v+"=0; "+v+"<"+y+".length; "+v+"++) { var "+h+" = "+y+"["+v+"]; ":" for (var "+h+" in "+u+") { ",r+=" if ("+e.usePattern(ne)+".test("+h+")) { ",p.errorPath=e.util.getPathExpr(e.errorPath,h,e.opts.jsonPointers),q=u+"["+h+"]",p.dataPathArr[f]=h,G=e.validate(p),p.baseId=O,e.util.varOccurences(G,k)<2?r+=" "+e.util.varReplace(G,k,q)+" ":r+=" var "+k+" = "+q+"; "+G+" ",d&&(r+=" if (!"+g+") break; "),r+=" } ",d&&(r+=" else "+g+" = true; "),r+=" } ",d&&(r+=" if ("+g+") { ",c+="}"))}return d&&(r+=" "+c+" if ("+m+" == errors) {"),r}},1417:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"PM0.1 level","nl":"PM0.1-niveau","da":"PM0.1-niveau","it":"Livello PM0.1","ko":"나노미세먼지(PM0.1) 수준","pl":"Poziom PM0.1","ru":"Уровень ТЧ0.1","sv":"PM0.1-nivå","es":"Nivel de PM0,1","fr":"Niveau de PM0.1","no":"PM0.1-nivå","ar":"مستوى PM0.1","de":"PM0.1-Wert"},"desc":{"en":"The level of PM0.1 particles in the air.","nl":"De mate van PM0.1-deeltjes in de lucht.","da":"Niveauet af PM0.1-partikler i luften.","it":"Il livello di particelle PM0.1 nell\'aria.","ko":"공기 중 PM0.1 입자의 수준입니다.","pl":"Poziom cząstek PM0.1 w powietrzu.","ru":"Уровень содержания частиц ТЧ0.1 в воздухе.","sv":"Halten av PM0.1-partiklar i luften.","es":"El nivel de partículas PM0,1 en el aire.","fr":"Le niveau de particules PM0.1 dans l\'air.","no":"Nivået av PM0.1-partikler i luften.","ar":"مستوى جزيئات PM0.1 في الهواء.","de":"Der Gehalt an PM0.1-Partikeln in der Luft."},"values":[{"id":"low","title":{"en":"Low","nl":"Laag","da":"Lavt","it":"Basso","ko":"좋음","pl":"Niski","ru":"Низкий","sv":"Låg","es":"Bajo","fr":"Faible","no":"Lavt","ar":"منخفض","de":"Niedrig"}},{"id":"medium","title":{"en":"Medium","nl":"Gemiddeld","da":"Medium","it":"Medio","ko":"보통","pl":"Średni","ru":"Средний","sv":"Medium","es":"Intermedio","fr":"Moyen","no":"Middels","ar":"متوسط","de":"Mittel"}},{"id":"high","title":{"en":"High","nl":"Hoog","da":"Højt","it":"Alto","ko":"나쁨","pl":"Wysoki","ru":"Высокий","sv":"Hög","es":"Alto","fr":"Élevé","no":"Høyt","ar":"عالي","de":"Hoch"}},{"id":"critical","title":{"en":"Critical","nl":"Kritiek","da":"Kritisk","it":"Critico","ko":"매우 나쁨","pl":"Krytyczny","ru":"Критический","sv":"Kritisk","es":"Crítico","fr":"Critique","no":"Kritisk","ar":"حرج","de":"Kritisch"}}],"color":"#E02020","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"level_pm01_changed","highlight":true,"title":{"en":"The PM0.1 level changed to","nl":"Het PM0.1-niveau is veranderd naar","da":"PM0.1-niveauet blev ændret til","it":"Il livello PM0.1 è passato a","ko":"나노미세먼지(PM0.1) 수준이 다음으로 변경되면","pl":"Poziom PM0.1 zmienił się na","ru":"Уровень ТЧ0.1 изменился на","sv":"PM0.1-nivån ändrades till","es":"El nivel de PM0,1 ha cambiado a","fr":"Le niveau de PM0.1 est passé à","no":"PM0.1-nivået ble endret til","ar":"تغير مستوى PM0.1 إلى","de":"Der PM0.1-Wert hat sich geändert auf"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"level_pm01_is","title":{"en":"The PM0.1 level !{{is|is not}}","nl":"Het PM0.1-niveau !{{is|is niet}}","da":"PM0.1-niveauet !{{er|er ikke}}","it":"Il livello PM0.1 !{{è|non è}}","ko":"나노미세먼지(PM0.1) 수준이 다음!{{이면|이 아니면}}","pl":"Poziom PM0.1 !{{jest|nie jest}}","ru":"Уровень ТЧ0.1 !{{|не}}","sv":"PM0.1-nivån !{{är|är inte}}","es":"El nivel de PM0,1 !{{es|no es}}","fr":"Le niveau PM0.1 !{{est|n\'est pas}}","no":"PM0.1-nivået !{{er|er ikke}}","ar":"مستوى PM0.1 !{{هو|ليس}}","de":"Der PM0.1-Wert !{{ist|ist nicht}}"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.2.0"}')},1419:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Thermostat mode","nl":"Thermostaatmodus","de":"Thermostat-Modus","fr":"Mode du thermostat","it":"Modalità termostato","sv":"Termostatläge","no":"Termostatmodus","es":"Modo del termostato","da":"Termostattilstand","ru":"Режим термостата","pl":"Tryb termostatu","ko":"온도조절기 모드","ar":"وضع الثرموستات"},"desc":{"en":"Mode of the thermostat","nl":"Modus van de thermostaat","de":"Modus des Thermostates","fr":"Mode du thermostat","it":"Modalità del termostato","sv":"Läge för termostaten","no":"Modus for termostaten","es":"Modo del termostato","da":"Tilstand for termostat","ru":"Режим термостата","pl":"Tryb termostatu","ko":"온도조절기의 모드","ar":"وضع الثرموستات"},"values":[{"id":"auto","title":{"en":"Automatic","nl":"Automatisch","de":"Automatisch","fr":"Automatique","it":"Automatica","sv":"Automatiskt","no":"Automatisk","es":"Automático","da":"Automatisk","ru":"Автоматически","pl":"Automatyczny","ko":"자동","ar":"تلقائي"}},{"id":"heat","title":{"en":"Heat","nl":"Verhitten","de":"Heizen","fr":"Chauffer","it":"Calore","sv":"Värme","no":"Varme","es":"Calentar","da":"Opvarm","ru":"Обогрев","pl":"Ogrzewanie","ko":"난방","ar":"تسخين"}},{"id":"cool","title":{"en":"Cool","nl":"Koelen","de":"Kühlen","fr":"Refroidir","it":"Raffreddamento","sv":"Kyla","no":"Avkjøle","es":"Enfriar","da":"Køl ned","ru":"Охлаждение","pl":"Chłodzenie","ko":"냉방","ar":"تبريد"}},{"id":"off","title":{"en":"Off","nl":"Uit","de":"Aus","fr":"Désactivé","it":"Disattivata","sv":"Av","no":"Av","es":"Desactivado","da":"Deaktiveret","ru":"Выкл","pl":"Wył","ko":"꺼짐","ar":"إيقاف التشغيل"}}],"color":"#FA6400","getable":true,"setable":true,"uiComponent":"picker","$flow":{"triggers":[{"id":"thermostat_mode_changed","title":{"en":"The thermostat mode changed to","nl":"De thermostaatstand is veranderd naar","de":"Der Thermostat-Modus wurde geändert auf","fr":"Le mode du thermostat est passé à","it":"La modalità del termostato è passata a","sv":"Termostatläget ändrades till","no":"Termostatmodusen ble endret til","es":"El modo del termostato ha cambiado a","da":"Termostattilstanden er ændret til","ru":"Режим работы термостата изменен на:","pl":"Tryb termostatu zmienił się na","ko":"온도조절기 모드가 다음으로 변경되면","ar":"تم تغيير وضع الثرموستات إلى"},"args":[{"name":"thermostat_mode","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"thermostat_mode_is","title":{"en":"The thermostat mode !{{is|is not}}","nl":"De thermostaatstand !{{is|is niet}}","de":"Der Thermostat-Modus !{{ist|ist nicht}}","fr":"Le mode du thermostat !{{est|n\'est pas}}","it":"La modalità del termostato !{{è|non è}}","sv":"Termostatläget !{{är|är inte}}","no":"Termostatmodusen !{{er|er ikke}}","es":"El modo del termostato !{{está|no está}}","da":"Termostattilstanden !{{er|er ikke}}","ru":"Режим работы термостата !{{|не}}","pl":"Tryb termostatu !{{jest|nie jest}}","ko":"온도조절기 모드가 다음!{{과 같으면|이 아니면}}","ar":"وضع الثرموستات !{{هو|ليس}}"},"args":[{"name":"thermostat_mode","type":"dropdown","values":"$values"}]}],"actions":[{"id":"thermostat_mode_set","title":{"en":"Set the thermostat mode to","nl":"Stel de thermostaatstand in op","de":"Stelle den Thermostat-Modus auf","fr":"Définir le mode du thermostat sur","it":"Imposta la modalità del termostato su","sv":"Ställ in termostatläget till","no":"Sett termostatmodusen til","es":"Ajustar el modo del termostato en","da":"Indstil termostattilstanden til","ru":"Установить режим работы термостата на:","pl":"Ustaw tryb termostatu na","ko":"온도조절기 모드를 다음으로 설정","ar":"ضبط وضع الثرموستات على"},"args":[{"name":"thermostat_mode","type":"dropdown","values":"$values"}]}]}}')},1482:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Water flow","nl":"Waterdoorstroming","de":"Wasserfluss","fr":"Débit d\'eau","it":"Flusso d\'acqua","sv":"Vattenflöde","no":"Vannstrøm","es":"Caudal del agua","da":"Vandstrøm","ru":"Поток воды","pl":"Poziom przepływu wody","ko":"유량","ar":"تدفق المياه"},"units":{"en":"L/min","ru":"Л/мин","ko":"L/min","no":"L/min","ar":"لتر/دقيقة","da":"L/min","de":"L/min","es":"L/min","fr":"L/min","it":"L/min","nl":"L/min","pl":"L/min","sv":"L/min"},"desc":{"en":"Water flow in liters per minute (L/min)","nl":"Waterdoorstroming in liters per minuut (L/min)","de":"Wasserfluss in Liter pro Minute (L/min)","fr":"Débit d\'eau en litres par minute (L/min)","it":"Flusso d\'acqua in litri al minuto (L/min)","sv":"Vattenflöde i liter per minut (L/min)","no":"Vannstrøm i liter per minutt (L/min)","es":"Caudal del agua en litros por minuto (L/min)","da":"Vandstrøm i liter per minut (L/min)","ru":"Поток воды в литрах в минуту (л/мин)","pl":"Poziom przepływu wody w litrach na minutę (L/min)","ko":"수량 분당 리터(L/min)","ar":"تدفق المياه باللتر في الدقيقة (L/min)"},"insights":true,"chartType":"stepLine","decimals":2,"color":"#0091FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_water_changed","title":{"en":"The waterflow changed","nl":"De waterstroom is veranderd","de":"Der Wasserfluss hat sich geändert","fr":"Le débit d\'eau a changé","it":"Il flusso d\'acqua è cambiato","sv":"Vattenflödet ändrades","no":"Vannstrømmen ble endret","es":"El caudal del agua ha cambiado","da":"Vandstrømmen har ændret sig","ru":"Поток воды изменился","pl":"Zmienił się przepływ wody","ko":"유량이 변경되면","ar":"تغير تدفق المياه"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":2}]}]}}')},1491:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Volume up","nl":"Volume omhoog","de":"Lautstärke hoch","fr":"Augmenter le volume","it":"Volume alzato","sv":"Volym upp","no":"Volum opp","es":"Subir volumen","da":"Op for lyden","ru":"Звук громче","pl":"Zwiększ głośność","ko":"볼륨 크게","ar":"رفع مستوى الصوت"},"type":"boolean","color":"#9033FC","getable":false,"setable":true,"uiComponent":"button","$flow":{"actions":[{"id":"volume_up","highlight":true,"title":{"en":"Turn the volume up","nl":"Zet het geluid harder","de":"Dreh die Lautstärke hoch","fr":"Augmenter le son","it":"Alza il volume","sv":"Vrid upp volymen","no":"Skru opp volumet","es":"Subir el volumen","da":"Skru op for lyden","ru":"Сделать звук громче","pl":"Zwiększ poziom głośności","ko":"볼륨 높이기","ar":"رفع مستوى الصوت"}}]}}')},1493:(e,t,a)=>{"use strict";var r=a(8287).hp;const{URLSearchParams:i}=a(538),n=a(5098),s=a(8019),o=a(5345),l=a(7021),d=a(6192),u=a(3532),m=a(6346),p=a(2130),c=a(8470),{openAsync:g,closeAsync:h,readAsync:v,statAsync:f,readFileAsync:k,readDirAsync:y,lstatAsync:b,imageSizeAsync:w,join:z,extname:P,basename:_,dirname:S,toArray:A}=a(5399),E=["debug","publish","verified"],j={".jpg":r.from([255,216]),".jpeg":r.from([255,216]),".png":r.from([137,80,78,71])},C={app:{small:{width:250,height:175},large:{width:500,height:350},xlarge:{width:1e3,height:700}},driver:{small:{width:75,height:75},large:{width:500,height:500},xlarge:{width:1e3,height:1e3}}},O=["measure_battery","alarm_battery"],L=new Set(["homey:","zw_","zb_","mtr_","thread_","zone_","energy_","satellite_mode_","homekit_"]);class T{static REQUIRED_PYTHON_PLATFORMS=["arm64","amd64"];static SUPPORTED_PYTHON_VERSIONS=["3.13","3.14"];constructor(e){if(this._path=e,"string"!=typeof this._path)throw new Error("Invalid path")}debug(...e){this._debug&&console.log("[dbg]",...e)}async validate({level:e="debug",debug:t=!1}={}){if(this._debug=t,this.debug(`Validating "${this._path}"`),!E.includes(e))throw new Error(`Invalid validation level. Allowed levels are: ${E}`);const a="publish"===e||"verified"===e,r="verified"===e,i=await k(z(this._path,"app.json")),l=JSON.parse(i),g=T.getJSONSchema(),h=new s({async:!0,allErrors:!0}).compile(g);if(!1===await h(l))throw new Error(this.constructor.errorsText(h.errors,l)||"Invalid app.json");if(!T.isValidId(l.id))throw new Error("Invalid id");if(!o.valid(l.version))throw new Error("Invalid version");if(o.coerce(l.version).toString()!==l.version)throw new Error(`Invalid version (${l.version}), pre-release versions are not allowed`);if(!o.validRange(l.compatibility))throw new Error("Invalid compatibility");const v=o.minVersion(l.compatibility);if(!0===l.esm&&o.lt(o.coerce(l.compatibility),"12.0.1"))throw new Error("ESM apps require a compatibility of at least >=12.0.1");const y=async e=>{await n.promises.access(e).then((()=>{if(o.lt(o.coerce(l.compatibility),"12.0.1"))throw new Error(`ESM apps require a compatibility of at least >=12.0.1. (${e})`)})).catch((e=>{if("ENOENT"!==e.code)throw e}))},b=z(this._path,"app.mjs"),w=z(this._path,"app.cjs"),S=z(this._path,"api.mjs"),j=z(this._path,"api.cjs");if(await y(b),await y(w),await y(S),await y(j),Array.isArray(l.drivers))for(const e of l.drivers){const t=z(this._path,"drivers",e.id,"driver.mjs"),a=z(this._path,"drivers",e.id,"driver.cjs"),r=z(this._path,"drivers",e.id,"device.mjs"),i=z(this._path,"drivers",e.id,"device.cjs");await y(t),await y(a),await y(r),await y(i)}if(null!=l.widgets){if(o.lt(o.coerce(l.compatibility),"12.1.0"))throw new Error(`App widgets require a compatibility of at least >=12.1.0. (${this._path})`);for(const e of Object.values(l.widgets)){if(void 0!==e.transparent&&o.lt(o.coerce(l.compatibility),"12.1.0"))throw new Error(`App widgets transparent property requires a compatibility of at least >=12.1.0. (${this._path})`);if(void 0!==e.deprecated&&o.lt(o.coerce(l.compatibility),"12.3.0"))throw new Error(`App widgets deprecated property requires a compatibility of at least >=12.3.0. (${this._path})`);if(void 0!==e.devices&&o.lt(o.coerce(l.compatibility),"12.3.0"))throw new Error(`App widgets devices property requires a compatibility of at least >=12.3.0. (${this._path})`);const t=z(this._path,"widgets",e.id,"api.mjs"),a=z(this._path,"widgets",e.id,"api.cjs");await y(t),await y(a)}}if(3===l.sdk&&!o.gt(v,"4.2.0"))throw new Error(`Invalid compatibility (${l.compatibility}), SDK version 3 apps must have a compatibility of at least >=5.0.0`);if("python"===l.runtime&&!o.gte(v,"13.0.0"))throw new Error(`Invalid compatibility (${l.compatibility}), Python apps must have a compatibility of at least >=13.0.0`);if("python"===l.runtime&&3!==l.sdk)throw new Error(`Invalid sdk (${l.sdk}), Python apps must use sdk version 3`);if(l.capabilities)for(const[e,t]of Object.entries(l.capabilities)){if(void 0!==t.titleShort&&o.lt(v,"13.2.1"))throw new Error(`capabilities.${e}.titleShort requires a compatibility of at least >=13.2.1`);if(void 0!==t.uiState&&o.lt(v,"13.5.0"))throw new Error(`capabilities.${e}.uiState requires a compatibility of at least >=13.5.0`)}if(T.validatePythonVersion(l),a&&"python"===l.runtime&&void 0!==l.pythonPackages&&l.pythonPackages.length>0){const e=[];for(const t of T.REQUIRED_PYTHON_PLATFORMS){const a=z(this._path,"python_packages",t);await n.promises.access(a).catch((()=>{e.push(t)}))}if(e.length>0)throw new Error(`Cross-platform venvs are required for Python apps with dependencies. Missing ${e.join(", ")}`)}if((l.platforms||[]).includes("cloud")&&(l.platformLocalRequiredFeatures||[]).length>0)throw new Error("The property `platformLocalRequiredFeatures` can not be used in combination with platform: `cloud`.");if(!1===(l.platforms||[]).includes("local")&&(l.platformLocalRequiredFeatures||[]).length>0&&console.warn("Warning: using `platformLocalRequiredFeatures` requires `platforms: [local]`."),!1===(l.platforms||[]).includes("local")&&(l.platformLocalOptionalFeatures||[]).length>0&&console.warn("Warning: using `platformLocalOptionalFeatures` requires `platforms: [local]`."),r){if(void 0===l.platforms)throw new Error("The property `platforms` is required in order to publish a verified app.");if(void 0===l.support)throw new Error("The property `support` is required in order to publish a verified app.")}if(Array.isArray(l.permissions)){const e=T.getPermissions();l.permissions.forEach((t=>{if("homey:app:com.athom.homeyscript"===t)throw new Error(`Forbidden permission: ${t}`);if("homey:manager:api"===t&&a&&console.warn("Warning: using the homey:manager:api permission will require a more thorough review. It may take longer than usual to review your app."),"homey:manager:speech-input"===t){if(r)throw new Error(`Unsupported permission: ${t}, please remove any speech input related functionality.`);console.warn("Warning: the homey:manager:speech-input permission is not supported, please remove any speech input related functionality.")}if(!t.startsWith("homey:app:")&&void 0===e[t])throw new Error(`Invalid permission: ${t}`)}))}if(l.category){const e=T.getCategories();let t=[];t=Array.isArray(l.category)?l.category:[l.category],t.forEach((t=>{if(!e.includes(t))throw new Error(`Invalid category: ${t}`)}))}else if(a)throw new Error("The property `category` is required in order to publish an app.");if(Array.isArray(l.drivers)){const e=d.getClasses(),t=d.getCapabilities();for(let i=0;i{const r=e.split(".")[0],i=void 0!==t[r],s=void 0!==l.capabilities&&void 0!==l.capabilities[r];if(!i&&!s)throw new Error(`drivers.${n.id} invalid capability: ${e}`);if(i&&!s&&t[r].minCompatibility&&o.lt(v,t[r].minCompatibility))throw new Error(`drivers.${n.id} capability: ${r} is not available for compatibility ${l.compatibility}, requires minimum: ${t[r].minCompatibility}`);if(O.includes(r)&&(!n.energy||!Array.isArray(n.energy.batteries)&&!n.energy.homeBattery&&!n.energy.electricCar)&&a)throw new Error(`drivers.${n.id} is missing an array 'energy.batteries' because the capability ${r} is being used.`)})),n.capabilitiesOptions)for(const[e,t]of Object.entries(n.capabilitiesOptions)){if(null===t||"object"!=typeof t||Array.isArray(t))throw new Error(`drivers.${n.id}.capabilitiesOptions.${e} must be an object`);if(void 0!==t.titleShort&&o.lt(v,"13.2.1"))throw new Error(`drivers.${n.id}.capabilitiesOptions.${e}.titleShort requires a compatibility of at least >=13.2.1`);if(void 0!==t.uiState&&o.lt(v,"13.5.0"))throw new Error(`drivers.${n.id}.capabilitiesOptions.${e}.uiState requires a compatibility of at least >=13.5.0`);if(u.isInstanceOfId(e,"target_power_mode")&&Array.isArray(t.values)){if(!t.values.some((e=>e&&"object"==typeof e&&"homey"===e.id)))throw new Error(`drivers.${n.id}.capabilitiesOptions.${e}.values must include "homey" value`);if(0===t.values.filter((e=>e&&"object"==typeof e&&"string"==typeof e.id&&"homey"!==e.id)).length)throw new Error(`drivers.${n.id}.capabilitiesOptions.${e}.values must include at least one non-homey value`);const a=["homey_"];for(const r of t.values)if(r&&"object"==typeof r&&"string"==typeof r.id&&a.some((e=>r.id.startsWith(e))))throw new Error(`drivers.${n.id}.capabilitiesOptions.${e}.values custom values cannot use reserved prefix "homey_": ${r.id}`)}if(u.isInstanceOfId(e,"target_power")&&("number"==typeof t.excludeMin||"number"==typeof t.excludeMax)){const a="number"==typeof t.excludeMin?t.excludeMin:0,r="number"==typeof t.excludeMax?t.excludeMax:0;if(a>0||r<0)throw new Error(`drivers.${n.id}.capabilitiesOptions.${e}.excludeMin/excludeMax must include 0 (excludeMin <= 0 <= excludeMax)`)}if(u.isInstanceOfId(e,"target_power")){const a="number"==typeof t.min?t.min:0,r="number"==typeof t.max?t.max:0;if(a>0||r<0)throw new Error(`drivers.${n.id}.capabilitiesOptions.${e}.min/max must include 0 (min <= 0 <= max) to allow idle state`)}}if(Array.isArray(n.pair))for(let e=0;et.id===e));if(!t)throw new Error(`drivers.${n.id} invalid navigation.prev: ${e}`)}const a=t.navigation.next;if(a){const e=n.pair.find((e=>e.id===a));if(!e)throw new Error(`drivers.${n.id} invalid navigation.next: ${a}`)}}void 0===t.template&&await this._ensureFileExistsCaseSensitive(z("drivers",n.id,"pair",`${t.id}.html`))}if(Array.isArray(n.settings))for(const e of n.settings)this._checkPrivateSettingPrefixUse(e,n);const s=new Set;if(n.zwave&&Array.isArray(n.settings))for(let e=0;e{if(!e.includes(t))throw new Error(`drivers.${n.id} invalid 'battery': ${t}. Allowed values: ${e.join(", ")}`)}))}const e=n.capabilities.some((e=>u.isInstanceOfId(e,"meter_power")));if(!0===n.energy.cumulative&&e&&("string"!=typeof n.energy.cumulativeImportedCapability&&console.warn(`Warning: drivers.${n.id} has energy.cumulative set to true, but is missing 'cumulativeImportedCapability'.`),"string"!=typeof n.energy.cumulativeExportedCapability&&console.warn(`Warning: drivers.${n.id} has energy.cumulative set to true, but is missing 'cumulativeExportedCapability'.`)),!0===n.energy.homeBattery&&e&&("string"!=typeof n.energy.meterPowerImportedCapability&&console.warn(`Warning: drivers.${n.id} has energy.homeBattery set to true, but is missing 'meterPowerImportedCapability'.`),"string"!=typeof n.energy.meterPowerExportedCapability&&console.warn(`Warning: drivers.${n.id} has energy.homeBattery set to true, but is missing 'meterPowerExportedCapability'.`)),!0===n.energy.evCharger&&e&&"string"!=typeof n.energy.meterPowerImportedCapability&&console.warn(`Warning: drivers.${n.id} has energy.evCharger set to true, but is missing 'meterPowerImportedCapability'.`),"string"==typeof n.energy.cumulativeImportedCapability&&!1===u.isInstanceOfId(n.energy.cumulativeImportedCapability,"meter_power"))throw new Error(`drivers.${n.id} has 'cumulativeImportedCapability': '${n.energy.cumulativeImportedCapability}' but only instances of 'meter_power' are allowed.`);if("string"==typeof n.energy.cumulativeExportedCapability&&!1===u.isInstanceOfId(n.energy.cumulativeExportedCapability,"meter_power"))throw new Error(`drivers.${n.id} has 'cumulativeExportedCapability': '${n.energy.cumulativeExportedCapability}' but only instances of 'meter_power' are allowed.`);if("string"==typeof n.energy.meterPowerImportedCapability&&!1===u.isInstanceOfId(n.energy.meterPowerImportedCapability,"meter_power"))throw new Error(`drivers.${n.id} has 'meterPowerImportedCapability': '${n.energy.meterPowerImportedCapability}' but only instances of 'meter_power' are allowed.`);if("string"==typeof n.energy.meterPowerExportedCapability&&!1===u.isInstanceOfId(n.energy.meterPowerExportedCapability,"meter_power"))throw new Error(`drivers.${n.id} has 'meterPowerExportedCapability': '${n.energy.meterPowerExportedCapability}' but only instances of 'meter_power' are allowed.`)}if(n.connectivity&&n.connectivity.includes("matter")){if(!n.matter)throw new Error(`drivers.${n.id} has 'connectivity': 'matter' and therefore requires a 'matter' object.`);if(n.pair)throw new Error(`drivers.${n.id} invalid 'pair' configuration, Matter drivers do not support custom pairing views.`);if(void 0===n.matter.deviceVendorId&&void 0!==n.matter.deviceProductName||void 0!==n.matter.deviceVendorId&&void 0===n.matter.deviceProductName)throw new Error(`drivers.${n.id} invalid 'matter': 'deviceVendorId' and 'deviceProductName' must be defined together.`);const e=await this._fileExistsCaseSensitive(z("drivers",n.id,"device.js")),t=await this._fileExistsCaseSensitive(z("drivers",n.id,"device.mjs"));if(e||t)throw new Error(`drivers.${n.id}: using a device.${e?"js":"mjs"} file is not supported for Matter drivers.`);const a=await this._fileExistsCaseSensitive(z("drivers",n.id,"driver.js")),r=await this._fileExistsCaseSensitive(z("drivers",n.id,"driver.mjs"));if(a||r)throw new Error(`drivers.${n.id}: using a driver.${a?"js":"mjs"} file is not supported for Matter drivers.`)}if(n.matter&&(!n.connectivity||!n.connectivity.includes("matter")))throw new Error(`drivers.${n.id} Matter drivers require 'connectivity' to include 'matter'.`);if(n.firmwareUpdates&&Array.isArray(n.firmwareUpdates.updates)){const e="object"==typeof n.zigbee&&null!==n.zigbee,t="object"==typeof n.zwave&&null!==n.zwave;for(const[a,r]of Object.entries(n.firmwareUpdates.updates)){const i="string"==typeof r.changelog,s=r.changelog&&"string"==typeof r.changelog.en;if(!i&&!s)throw new Error(`drivers.${n.id}.firmwareUpdates.updates[${a}] is missing a changelog string`);if(!Array.isArray(r.files)||0===r.files.length)throw new Error(`drivers.${n.id}.firmwareUpdates.updates[${a}].files must include at least one file`);if(e){const e=A(n.zigbee.manufacturerName),t=A(n.zigbee.productId),i=A(r.device.manufacturerName),s=A(r.device.productId);if(0===i.length||0===s.length)throw new Error(`drivers.${n.id}.firmwareUpdates.updates[${a}] must include at least one manufacturerName and productId`);const o=i.some((t=>!e.includes(t))),l=s.some((e=>!t.includes(e)));if(o)throw new Error(`drivers.${n.id}.firmwareUpdates.updates[${a}] has a manufacturerName that does not match the driver zigbee.manufacturerName`);if(l)throw new Error(`drivers.${n.id}.firmwareUpdates.updates[${a}] has a productId that does not match the driver zigbee.productId`)}if(t){if(!o.valid(r.version))throw new Error(`drivers.${n.id}.firmwareUpdates.updates[${a}].version is not a valid semver version`);if(void 0!==r.applicableTo&&!o.validRange(r.applicableTo))throw new Error(`drivers.${n.id}.firmwareUpdates.updates[${a}].applicableTo is not a valid semver range`);const e=A(n.zwave.manufacturerId),t=A(n.zwave.productTypeId),i=A(n.zwave.productId),s=A(r.device.manufacturerId),l=A(r.device.productTypeId),d=A(r.device.productId);if(0===s.length||0===l.length||0===d.length)throw new Error(`drivers.${n.id}.firmwareUpdates.updates[${a}] must include at least one manufacturerId, productTypeId and productId`);const u=s.some((t=>!e.includes(t))),m=l.some((e=>!t.includes(e))),p=d.some((e=>!i.includes(e)));if(u)throw new Error(`drivers.${n.id}.firmwareUpdates.updates[${a}] has a manufacturerId that does not match the driver zwave.manufacturerId`);if(m)throw new Error(`drivers.${n.id}.firmwareUpdates.updates[${a}] has a productTypeId that does not match the driver zwave.productTypeId`);if(p)throw new Error(`drivers.${n.id}.firmwareUpdates.updates[${a}] has a productId that does not match the driver zwave.productId`)}const l=new Set;for(const[i,s]of Object.entries(r.files)){if(_(s.name)!==s.name)throw new Error(`drivers.${n.id}.firmwareUpdates.updates[${a}].files[${i}] cannot include (sub)directories in the file name`);const r=c.getOTAFilePath({driverId:n.id,fileName:s.name});await this._ensureFileExistsCaseSensitive(r);const o=z(this._path,r);if(!await c.validateIntegrity(o,s.integrity))throw new Error(`drivers.${n.id}.firmwareUpdates.updates[${a}].files[${i}] integrity mismatch`);if(e)try{await c.validateZigbeeOTAHeader({filePath:o,manufacturerCode:s.manufacturerCode,fileVersion:s.fileVersion,imageType:s.imageType})}catch(e){throw new Error(`drivers.${n.id}.firmwareUpdates.updates[${a}].files[${i}] invalid Zigbee OTA header: ${e.message}`)}if(t){const{size:e}=await f(o);if(e!==s.size)throw new Error(`drivers.${n.id}.firmwareUpdates.updates[${a}].files[${i}] size mismatch: expected ${s.size}, got ${e}`)}let d=null;if(c.isZigbeeFirmwareUpdateFile(s))d=`${s.manufacturerCode}-${s.imageType}-${s.fileVersion}`;else{if(!c.isZwaveFirmwareUpdateFile(s))throw new Error(`drivers.${n.id}.firmwareUpdates.updates[${a}].files[${i}] invalid file schema`);d=`${s.targetId}-${s.region?s.region:"global"}`}if(l.has(d))throw e?new Error(`drivers.${n.id}.firmwareUpdates.updates[${a}] has multiple files with the same manufacturerCode, imageType and fileVersion`):new Error(`drivers.${n.id}.firmwareUpdates.updates[${a}] has multiple files with the same targetId and region`);l.add(d)}}}}const i=l.drivers.every((e=>e.connectivity&&e.connectivity.includes("matter"))),n=l.platformLocalRequiredFeatures&&l.platformLocalRequiredFeatures.includes("matter");i&&!n&&console.warn("Warning: all drivers have connectivity: matter, but matter is not set as a platform required feature."),!i&&n&&console.warn("Warning: matter is set as a platform required feature, but not all drivers have connectivity: matter.")}if(void 0!==l.capabilities)for(const e of Object.keys(l.capabilities)){if(e.includes("."))throw new Error(`Invalid capability: ${e}\nCharacter '.' is reserved for subcapabilities.`);const t=l.capabilities[e],a=new u(t);try{await a.validate()}catch(t){throw new Error(`Invalid capability: ${e}\n${t.message}`)}t.icon&&await this._ensureFileExistsCaseSensitive(t.icon)}if(void 0!==l.signals)for(const e of Object.keys(l.signals))for(const t of Object.keys(l.signals[e])){const a=new m(l.signals[e][t],{frequency:e});try{await a.validate()}catch(a){throw new Error(`Invalid signal: ${e}.${t}\n${a.message}`)}}if(l.flow)for(const e of Object.keys(l.flow)){const t=l.flow[e];if(Array.isArray(t))for(let i=0;ie.id===n.id))!==i){if(l.sdk>=3)throw new Error(`Found multiple Flow card ${e} with the id "${n.id}", all Flow cards should have a unique id.`);console.warn(`Warning: Found multiple Flow card ${e} with the id "${n.id}", all Flow cards should have a unique id.`)}this._validateFlowCard(n,`flow.${e}['${n.id}']`,l,{levelPublish:a,levelVerified:r})}}if(l.discovery)for(const e of Object.keys(l.discovery)){const t=l.discovery[e],{type:a}=t;if(!t[a])throw new Error(`Missing discovery.${e}.${a}`)}if(await this._fileExistsCaseSensitive("locales")){const e=T.getLocales(),t=await this._getDirectoryContents("locales");for(let a=0;a1&&(r/=i);const n="boolean"!=typeof t.zwave.signed||t.zwave.signed,s=Math.pow(2,8*a)/2-1,o=Math.pow(2,8*a)-1;if(n&&r>s)throw new Error(`Value cannot be signed: ${e.id}, ${t.id}. Max value: ${s}, actual value: ${r}`);if(!n&&r>o)throw new Error(`Max value out of bounds: ${e.id}, ${t.id}. Max value: ${o}, actual value: ${r}`)}}}async _getDirectoryContents(e){return await this._fileExistsCaseSensitive(e),e=z(this._path,e),y(e).then((t=>t.map((t=>z(e,t)))))}async _ensureFileExistsCaseSensitive(e){if(!0!==await this._fileExistsCaseSensitive(e))throw new Error(`Filepath does not exist: ${e}`)}async _fileExistsCaseSensitive(e){e=z(this._path,e);const t=S(e);try{return!!(await f(t)).isDirectory()&&(await y(t)).indexOf(_(e))>-1}catch(e){return!1}}async _validateImages(e,t,a){const r=["small","large"];for(let i=0;i=12.5.0. (${t} ${e.id} ${r.name})`);const s=e.args.find((e=>{const t=new i(e.filter);return"device"===e.type&&(t.has("driver_id")||t.has("driverId"))})),l=e.args.filter((e=>e!==s));if(0!==l.length){if(n)for(const e of l)if(void 0===e.title)throw new Error(`${t}.args['${e.name}'].title is required for arguments in order to publish a verified app.`);if(e.droptoken&&l.push({name:"droptoken"}),void 0===e.titleFormatted){if(n)throw new Error(`${t}.titleFormatted is required in order to publish a verified app.`);console.warn(`Warning: ${t}.titleFormatted is missing. Specifying a Flow card's formatted title will be required in the future.`)}if("string"!=typeof e.titleFormatted){if("object"==typeof e.titleFormatted&&null!==e.titleFormatted)for(const[a,r]of Object.entries(e.titleFormatted))T._checkTitleFormatted(r,l,`${t}.titleFormatted.${a}`);if(e.platforms&&a.platforms){if(e.platforms.includes("local")&&!1===a.platforms.includes("local"))throw new Error(`${t} invalid 'platforms': App manifest does not list 'local' as a supported platform.`);if(e.platforms.includes("cloud")&&!1===a.platforms.includes("cloud"))throw new Error(`${t} invalid 'platforms': App manifest does not list 'cloud' as a supported platform.`)}}else T._checkTitleFormatted(e.titleFormatted,l,`${t}.titleFormatted`)}}static _checkTitleFormatted(e,t,a){const r=t.reduce(((e,t)=>(e[t.name]=!1,e)),{}),i=e.match(/\[\[(.*?)\]\]/gm);if(null===i)throw Error(`Missing all args in ${a}`);i.forEach((e=>{const t=e.substring(2,e.length-2);if(void 0===r[t])throw Error(`Invalid [[${t}]] in ${a}.titleFormatted`);if(!0===r[t])throw Error(`Duplicate [[${t}]] in ${a}.titleFormatted`);!1===r[t]&&(r[t]=!0)}));for(const[e,t]of Object.entries(r))if(!1===t)throw Error(`Missing [[${e}]] in ${a}`)}async _readBytes(e,t){e=z(this._path,e);const a=await g(e,"r"),i=r.alloc(t);return await v(a,i,0,t,0),await h(a),i}static isValidId(e){return!("string"!=typeof e||e.length<1||e.split(".").length<2||!/^[a-zA-Z0-9_.-]*$/g.test(e))}static isValidBrandColor(e){return l(e).getBrightness()<=184}static getJSONSchema(){const e=a(7419);return JSON.parse(JSON.stringify(e))}static getPermissions(){const e=a(5948);if("function"==typeof z)for(const t of Object.keys(e))e[t].icon=z("/","..","..","assets","app","permissions",`${t.replace(/:/g,"-")}.svg`);return e}static getCategories(){return["lights","video","music","appliances","security","climate","tools","internet","localization","energy"]}static getLocales(){return["ab","aa","af","ak","sq","am","ar","an","hy","as","av","ae","ay","az","bm","ba","eu","be","bn","bh","bi","bs","br","bg","my","ca","ch","ce","ny","zh","cv","kw","co","cr","hr","cs","da","dv","nl","dz","en","eo","et","ee","fo","fj","fi","fr","ff","gl","ka","de","el","gn","gu","ht","ha","he","hz","hi","ho","hu","ia","id","ie","ga","ig","ik","io","is","it","iu","ja","jv","kl","kn","kr","ks","kk","km","ki","rw","ky","kv","kg","ko","ku","kj","la","lb","lg","li","ln","lo","lt","lu","lv","gv","mk","mg","ms","ml","mt","mi","mr","mh","mn","na","nv","nd","ne","ng","nb","nn","no","ii","nr","oc","oj","cu","om","or","os","pa","pi","fa","pl","ps","pt","qu","rm","rn","ro","ru","sa","sc","sd","se","sm","sg","sr","gd","sn","si","sk","sl","so","st","es","su","sw","ss","sv","ta","te","tg","th","ti","bo","tk","tl","tn","to","tr","ts","tt","tw","ty","ug","uk","ur","uz","ve","vi","vo","wa","cy","wo","fy","xh","yi","yo","za","zu"]}static getBrandColor(e){const t=r.from(e).toString("hex");let a,i=0;do{const e=`${t}${++i}`;let r=l(`#${e.substring(e.length-6)}`);r=l({h:r.toHsv().h,s:.75,l:.5});const n=r.toHexString();this.isValidBrandColor(n)&&(a=n)}while(!a);return a}static errorsText(e,t){return!1===Array.isArray(e)?null:e.reduce(((e,a)=>{let r="";const i=new RegExp("drivers\\[(\\d+)\\]"),n=a.dataPath.match(i);if(n){const e=parseInt(n[1],10),r=t.drivers[e];r&&(a.dataPath=a.dataPath.replace(`drivers[${e}]`,`drivers['${r.id}']`))}switch(["triggers","conditions","actions"].forEach((e=>{const r=new RegExp(`flow.${e}\\[(\\d+)\\]`),i=a.dataPath.match(r);if(i){const r=parseInt(i[1],10),n=t.flow[e][r];if(n){a.dataPath=a.dataPath.replace(`flow.${e}[${r}]`,`flow.${e}['${n.id}']`);const t=new RegExp(".args\\[(\\d+)\\]"),i=a.dataPath.match(t);if(i){const e=parseInt(i[1],10),t=n.args[e];t&&(a.dataPath=a.dataPath.replace(`.args[${e}]`,`.args['${t.name}']`))}}}})),a.keyword){case"oneOf":return`${e}manifest${a.dataPath} matched no available schemas, see previous errors\n`;case"enum":r=JSON.stringify(a.params.allowedValues)}return`${e}manifest${a.dataPath} ${a.message} ${r}\n`}),"").slice(0,-1)}}e.exports=T},1530:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"PM1 Alarm","nl":"PM1-waarschuwing","de":"PM1-Alarm","fr":"Alarme PM1","it":"Allarme PM1","sv":"PM1-larm","no":"PM1-alarm","es":"Alarma de PM1","da":"PM1-alarm","ru":"Сигнал ТЧ1","pl":"Alarm PM1","ko":"극초미세먼지(PM1.0) 알람","ar":"إنذار PM1"},"titleShort":{"en":"PM1","nl":"PM1","de":"PM1","fr":"PM1","it":"PM1","sv":"PM1","no":"PM1","es":"PM1","da":"PM1","ru":"ТЧ1","pl":"PM1","ko":"PM1","ar":"PM1"},"desc":{"en":"True when PM1 values exceeds threshold","nl":"Wordt geactiveerd wanneer PM1-waarden de drempel overschrijden","de":"True, wenn PM1-Werte die Schwelle überschreiten","fr":"Se déclenche lorsque les valeurs PM1 excèdent un seuil","it":"Vero quando i valori PM1 superano la soglia","sv":"Sant när PM1-värdena överstiger gränsvärdet","no":"Sann når PM1-verdiene overskrider grenseverdien","es":"Activado cuando los valores de PM1 superan el límite","da":"Sandt, når PM1-værdier overskrider grænseværdien","ru":"Значение «истина» при превышении контрольного значения ТЧ1","pl":"Prawda, gdy wartości PM1 przekraczają próg","ko":"PM1 값이 임계값을 초과하면 참","ar":"صحيح عندما تتجاوز قيم PM1 الحد"},"insights":true,"insightsTitleTrue":{"en":"PM1 alarm turned on","nl":"PM1-waarschuwing geactiveerd","de":"PM1-Alarm ist angegangen","fr":"Alarme PM1 activée","it":"Allarme PM1 acceso","sv":"PM1-larm aktiverat","no":"PM1-alarm aktivert","es":"Alarma de PM1 activada","da":"PM1-alarm blev aktiveret","ru":"Сигнал ТЧ1 включен","pl":"Alarm PM1 włączony","ko":"극초미세먼지(PM1.0) 알람 켜짐","ar":"تم تشغيل إنذار PM1"},"insightsTitleFalse":{"en":"PM1 alarm turned off","nl":"PM1-waarschuwing gedeactiveerd","de":"PM1-Alarm ist ausgegangen","fr":"Alarme PM1 désactivée","it":"Allarme PM1 spento","sv":"PM1-larm inaktiverat","no":"PM1-alarmen ble deaktivert","es":"Alarma de PM1 desactivada","da":"PM1-alarm blev deaktiveret","ru":"Сигнал ТЧ1 выключен","pl":"Alarm PM1 wyłączony","ko":"극초미세먼지(PM1.0) 알람 꺼짐","ar":"تم إيقاف إنذار PM1"},"color":"#E02020","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_pm1_true","highlight":true,"title":{"en":"The PM1 alarm turned on","nl":"De PM1-waarschuwing is geactiveerd","de":"Der PM1-Alarm ist angegangen","fr":"L\'alarme PM1 s\'est activée","it":"L\'allarme PM1 si è acceso","sv":"PM1-larmet aktiverat","no":"PM1-alarmen ble aktivert","es":"La alarma de PM1 se ha activado","da":"PM1-alarmen blev aktiveret","ru":"Сигнал ТЧ1 включен","pl":"Włączył się alarm PM1","ko":"극초미세먼지(PM1.0) 알람이 \'예\'이면","ar":"تم تشغيل إنذار PM1"}},{"id":"alarm_pm1_false","title":{"en":"The PM1 alarm turned off","nl":"De PM1-waarschuwing is gedeactiveerd","de":"Der PM1-Alarm ist ausgegangen","fr":"L\'alarme PM1 s\'est désactivée","it":"L\'allarme PM1 si è spento","sv":"PM1-larmet inaktiverat","no":"PM1-alarmen ble deaktivert","es":"La alarma de PM1 se ha desactivado","da":"PM1-alarmen blev deaktiveret","ru":"Сигнал ТЧ1 выключен","pl":"Wyłączył się alarm PM1","ko":"극초미세먼지(PM1.0) 알람이 \'아니요\'이면","ar":"تم إيقاف إنذار PM1"}}],"conditions":[{"id":"alarm_pm1","title":{"en":"The PM1 alarm is !{{on|off}}","nl":"De PM1-waarschuwing is !{{geactiveerd|gedeactiveerd}}","de":"Der PM1-Alarm ist !{{an|aus}}","fr":"L\'alarme PM1 est !{{activée|désactivée}}","it":"L\'allarme PM1 è !{{acceso|spento}}","sv":"PM1-larmet är !{{på|av}}","no":"PM1-alarmen er !{{på|av}}","es":"La alarma de PM1 está !{{activada|desactivada}}","da":"PM1-alarmen er !{{tændt|slukket}}","ru":"Сигнал ТЧ1 !{{включен|выключен}}","pl":"Alarm PM1 jest !{{włączony|wyłączony}}","ko":"극초미세먼지(PM1.0) 알람이 !{{\'예\'|\'아니요\'}}이면","ar":"إنذار PM1 !{{يعمل|لا يعمل}}"}}]},"minCompatibility":"12.2.0"}')},1574:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Cooking Time","ar":"وقت الطهي","da":"Tilberedningstid","de":"Garzeit","es":"Tiempo de cocción","fr":"Temps de cuisson","it":"Tempo di cottura","ko":"조리 시간","nl":"Kooktijd","no":"Tilberedningstid","pl":"Czas gotowania","ru":"Время приготовления","sv":"Tillagningstid"},"units":{"en":"s","ar":"s","da":"s","de":"s","es":"s","fr":"sec","it":"s","ko":"초","nl":"s","no":"s","pl":"s","ru":"с","sv":"s"},"desc":{"en":"The cooking time in seconds that is set. When no cooking time is set, the capability should be set to `null`.","ar":"وقت الطهي بالثواني الذي تم ضبطه. عند عدم ضبط وقت الطهي، يجب ضبكط الميزة على \\"لا شيء\\".","da":"Den indstillede tilberedningstid i sekunder. Når der ikke er indstillet nogen tilberedningstid, skal kapaciteten indstilles til `null`.","de":"Die eingestellte Garzeit in Sekunden. Wenn keine Garzeit eingestellt ist, sollte die Funktion auf „null“ gesetzt werden.","es":"El tiempo de cocción en segundos que está establecido. Si no se desea ningún tiempo de cocción, el valor ha de ser \\"nulo\\".","fr":"Le temps de cuisson en secondes qui est défini. Si aucun temps de cuisson n\'est défini, la fonctionnalité doit être réglée sur « null ».","it":"Il tempo di cottura in secondi impostato. Se non viene impostato alcun tempo di cottura, la capacità deve essere impostata su \\"null\\".","ko":"조리 시간은 설정된 초 값입니다. 조리 시간이 설정되어 있지 않으면 기능이 \'null\'로 설정되어야 합니다.","nl":"De kooktijd in seconden die is ingesteld. Als er geen kooktijd is ingesteld, moet de functie worden ingesteld op `null`.","no":"Den innstilte tilberedningstiden i sekunder. Når ingen tilberedningstid er angitt, skal funksjonen settes til `null`.","pl":"Ustawiony czas gotowania w sekundach. Jeśli nie ustawiono czasu gotowania, właściwość powinna być ustawiona na „brak”.","ru":"Установленное время приготовления в секундах. Если время приготовления не задано, для параметра следует установить значение null.","sv":"Den tillagningstid i sekunder som är inställd. Om ingen tillagningstid har ställts in ska funktionen ställas in på `null`."},"insights":true,"chartType":"spline","min":0,"max":86400,"decimals":0,"color":"#FA6400","getable":true,"setable":true,"uiComponent":"sensor","$flow":{"triggers":[{"id":"cooking_time_changed","highlight":true,"title":{"en":"The cooking time changed","ar":"تغير وقت الطهي","da":"Tilberedningstiden ændrede sig","de":"Die Garzeit hat sich geändert","es":"El tiempo de cocción ha cambiado","fr":"Le temps de cuisson a changé","it":"Il tempo di cottura è cambiato","ko":"조리 시간 변경됨","nl":"De kooktijd is veranderd","no":"Tilberedningstiden ble endret","pl":"Czas gotowania uległ zmianie","ru":"Время приготовления изменено","sv":"Tillagningstiden ändrades"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":100}]}],"actions":[{"id":"set_cooking_time","title":{"en":"Set the cooking time to [[cooking_time]]","ar":"اضبط وقت الطهي على [[cooking_time]]","da":"Indstil tilberedningstiden til [[cooking_time]]","de":"Stellen Sie die Garzeit auf [[cooking_time]]","es":"Establece el tiempo de cocción en [[cooking_time]]","fr":"Réglez le temps de cuisson sur [[cooking_time]]","it":"Imposta il tempo di cottura su [[cooking_time]]","ko":"조리 시간을 [[cooking_time]]로 설정","nl":"Stel de kooktijd in op [[cooking_time]]","no":"Sett tilberedningstiden til [[cooking_time]]","pl":"Ustaw czas gotowania na [[cooking_time]]","ru":"Установить время приготовления на [[cooking_time]]","sv":"Ställ in tillagningstiden på [[cooking_time]]"},"args":[{"name":"cooking_time","type":"time","title":{"en":"Cooking time","ar":"وقت الطهي","da":"Tilberedningstid","de":"Garzeit","es":"Tiempo de cocción","fr":"Temps de cuisson","it":"Tempo di cottura","ko":"조리 시간","nl":"Kooktijd","no":"Tilberedningstid","pl":"Czas gotowania","ru":"Время приготовления","sv":"Tillagningstid"},"placeholder":"00:30"}]}]},"minCompatibility":"12.11.0"}')},1615:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Bin Full Alarm","nl":"Afvalbak-vol-alarm","da":"Papirkurv fuld alarm","es":"Alarma de depósito lleno","fr":"Alarme de poubelle pleine","it":"Allarme cestino pieno","ko":"먼지통 가득 참 감지","pl":"Alarm pełnego kosza","ru":"Сигнал о заполненности контейнера","sv":"Larm om full behållare","no":"Alarm om full støvbeholder","ar":"إنذار امتلاء سلة المهملات","de":"Alarm bei vollem Behälter"},"titleShort":{"en":"Bin Full","nl":"Afvalbak vol","da":"Papirkurv fuld","es":"Depósito lleno","fr":"Poubelle pleine","it":"Cestino pieno","ko":"먼지통 가득 참","pl":"Pełny kosz","ru":"Контейнер заполнен","sv":"Full behållare","no":"Full støvbeholder","ar":"سلة المهملات ممتلئة","de":"Behälter voll"},"desc":{"en":"True when the bin is full","nl":"Wordt geactiveerd wanneer de afvalbak vol is","da":"Sandt, når papirkurven er fuld","es":"Activado cuando el cubo está lleno","fr":"Se déclenche lorsque la poubelle est pleine","it":"Vero quando il contenitore è pieno","ko":"휴지통이 가득 차면 참임","pl":"Prawda, gdy kosz jest pełny","ru":"Значение «истина», когда контейнер заполнен","sv":"Sant när behållaren är full","no":"Sann når støvbeholderen er full","ar":"صحيح عندما تكون سلة المهملات ممتلئة","de":"Wahr, wenn der Behälter voll ist"},"insights":true,"insightsTitleTrue":{"en":"The bin was full","nl":"De afvalbak was vol","da":"Papirkurven var fuld","es":"El cubo estaba lleno","fr":"La poubelle était pleine","it":"Il contenitore era pieno","ko":"먼지통 가득 참","pl":"Kosz był pełny","ru":"Контейнер был заполнен","sv":"Behållaren var full","no":"Støvbeholderen var full","ar":"سلة المهملات كانت ممتلئة","de":"Der Behälter war voll"},"insightsTitleFalse":{"en":"The bin was not full","nl":"De afvalbak was niet vol","da":"Papirkurven var ikke fuld","es":"El cubo no estaba lleno","fr":"La poubelle n\'était pas pleine","it":"Il contenitore non era pieno","ko":"먼지통 상태 정상","pl":"Kosz nie był pełny","ru":"Контейнер не был заполнен","sv":"Behållaren var inte full","no":"Støvbeholderen var ikke full","ar":"سلة المهملات لم تكن ممتلئة","de":"Der Behälter war nicht voll"},"color":"#9033FC","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_bin_full_true","highlight":true,"title":{"en":"The bin is full","nl":"De afvalbak is vol","da":"Papirkurven er fuld","es":"El cubo está lleno","fr":"La poubelle est pleine","it":"Il contenitore è pieno","ko":"먼지통이 가득 차면","pl":"Kosz jest pełny","ru":"Контейнер заполнен","sv":"Behållaren är full","no":"Støvbeholderen er full","ar":"سلة المهملات ممتلئة","de":"Der Behälter ist voll"}},{"id":"alarm_bin_full_false","title":{"en":"The bin is no longer full","nl":"De afvalbak is niet meer vol","da":"Papirkurven er ikke længere fuld","es":"El cubo ya no está lleno","fr":"La poubelle n\'est plus pleine","it":"Il contenitore non è più pieno","ko":"먼지통이 정상 상태이면","pl":"Kosz nie jest już pełny","ru":"Контейнер больше не заполнен","sv":"Behållaren är inte längre full","no":"Støvbeholderen er ikke lenger full","ar":"لم تعد سلة المهملات ممتلئة","de":"Der Behälter ist nicht mehr voll"}}],"conditions":[{"id":"alarm_bin_full","title":{"en":"The bin is !{{full|not full}}","nl":"De afvalbak is !{{vol|niet vol}}","da":"Papirkurven er !{{fuld|ikke fuld}}","es":"El cubo !{{está lleno|no está lleno}} ","it":"Il contenitore è !{{pieno|non pieno}}","ko":"먼지통이 !{{가득 차면|정상 상태이면}}","pl":"Kosz !{{jest pełny|nie jest pełny}}","ru":"Контейнер !{{заполнен|не заполнен}}","sv":"Behållaren är!{{full|inte full}}","fr":"La poubelle !{{est pleine|n\'est pas pleine}}","no":"Støvbeholderen er !{{full|ikke full}}","ar":"سلة المهملات !{{ممتلئة|ليست ممتلئة}}","de":"Der Behälter ist !{{voll|nicht voll}}"}}]},"minCompatibility":"12.2.0"}')},1832:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Distance","nl":"Afstand","da":"Afstand","it":"Distanza","ko":"거리","no":"Avstand","pl":"Odległość","ru":"Расстояние","sv":"Avstånd","es":"Distancia","fr":"\\n","ar":"المسافة","de":"Entfernung"},"units":{"en":"m","nl":"m","da":"m","it":"m","ko":"m","no":"m","pl":"m","ru":"м","sv":"m","es":"m","fr":"m","ar":"م","de":"m"},"desc":{"en":"The distance in meters.","nl":"De afstand in meters.","da":"Afstanden i meter.","it":"La distanza in metri.","ko":"미터 단위의 거리입니다.","no":"Avstanden i meter.","pl":"Odległość w metrach.","ru":"Расстояние в метрах.","sv":"Avståndet i meter.","es":"La distancia en metros.","fr":"La distance en mètres.","ar":"المسافة بالمتر.","de":"Die Entfernung in Metern."},"insights":true,"chartType":"spline","color":"#4682B4","decimals":2,"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_distance_changed","title":{"en":"The distance changed","nl":"De afstand is veranderd","da":"Afstanden ændrede sig","it":"La distanza è cambiata","ko":"거리가 변경되면","no":"Avstanden ble endret","pl":"Zmieniła się odległość","ru":"Расстояние изменилось","sv":"Avståndet ändrades","es":"La distancia ha cambiado","fr":"La distance a changé","ar":"تغيرت المسافة","de":"Die Entfernung hat sich geändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":2}]}]},"minCompatibility":"12.2.0"}')},1873:e=>{"use strict";e.exports=function(e,t,a){var r="",i=!0===e.schema.$async,n=e.util.schemaHasRulesExcept(e.schema,e.RULES.all,"$ref"),s=e.self._getId(e.schema);if(e.opts.strictKeywords){var o=e.util.schemaUnknownRules(e.schema,e.RULES.keywords);if(o){var l="unknown keyword: "+o;if("log"!==e.opts.strictKeywords)throw new Error(l);e.logger.warn(l)}}if(e.isTop&&(r+=" var validate = ",i&&(e.async=!0,r+="async "),r+="function(data, dataPath, parentData, parentDataProperty, rootData) { 'use strict'; ",s&&(e.opts.sourceCode||e.opts.processCode)&&(r+=" /*# sourceURL="+s+" */ ")),"boolean"==typeof e.schema||!n&&!e.schema.$ref){t="false schema";var d=e.level,u=e.dataLevel,m=e.schema[t],p=e.schemaPath+e.util.getProperty(t),c=e.errSchemaPath+"/"+t,g=!e.opts.allErrors,h="data"+(u||""),v="valid"+d;if(!1===e.schema){e.isTop?g=!0:r+=" var "+v+" = false; ",(G=G||[]).push(r),r="",!1!==e.createErrors?(r+=" { keyword: 'false schema' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: {} ",!1!==e.opts.messages&&(r+=" , message: 'boolean schema is false' "),e.opts.verbose&&(r+=" , schema: false , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),r+=" } "):r+=" {} ";var f=r;r=G.pop(),!e.compositeRule&&g?e.async?r+=" throw new ValidationError(["+f+"]); ":r+=" validate.errors = ["+f+"]; return false; ":r+=" var err = "+f+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "}else e.isTop?r+=i?" return data; ":" validate.errors = null; return true; ":r+=" var "+v+" = true; ";return e.isTop&&(r+=" }; return validate; "),r}if(e.isTop){var k=e.isTop;if(d=e.level=0,u=e.dataLevel=0,h="data",e.rootId=e.resolve.fullPath(e.self._getId(e.root.schema)),e.baseId=e.baseId||e.rootId,delete e.isTop,e.dataPathArr=[void 0],void 0!==e.schema.default&&e.opts.useDefaults&&e.opts.strictDefaults){var y="default is ignored in the schema root";if("log"!==e.opts.strictDefaults)throw new Error(y);e.logger.warn(y)}r+=" var vErrors = null; ",r+=" var errors = 0; ",r+=" if (rootData === undefined) rootData = data; "}else{if(d=e.level,h="data"+((u=e.dataLevel)||""),s&&(e.baseId=e.resolve.url(e.baseId,s)),i&&!e.async)throw new Error("async schema in sync schema");r+=" var errs_"+d+" = errors;"}v="valid"+d,g=!e.opts.allErrors;var b="",w="",z=e.schema.type,P=Array.isArray(z);if(z&&e.opts.nullable&&!0===e.schema.nullable&&(P?-1==z.indexOf("null")&&(z=z.concat("null")):"null"!=z&&(z=[z,"null"],P=!0)),P&&1==z.length&&(z=z[0],P=!1),e.schema.$ref&&n){if("fail"==e.opts.extendRefs)throw new Error('$ref: validation keywords used in schema at path "'+e.errSchemaPath+'" (see option extendRefs)');!0!==e.opts.extendRefs&&(n=!1,e.logger.warn('$ref: keywords ignored in schema at path "'+e.errSchemaPath+'"'))}if(e.schema.$comment&&e.opts.$comment&&(r+=" "+e.RULES.all.$comment.code(e,"$comment")),z){if(e.opts.coerceTypes)var _=e.util.coerceToTypes(e.opts.coerceTypes,z);var S=e.RULES.types[z];if(_||P||!0===S||S&&!Y(S)){p=e.schemaPath+".type",c=e.errSchemaPath+"/type",p=e.schemaPath+".type",c=e.errSchemaPath+"/type";var A=P?"checkDataTypes":"checkDataType";if(r+=" if ("+e.util[A](z,h,e.opts.strictNumbers,!0)+") { ",_){var E="dataType"+d,j="coerced"+d;r+=" var "+E+" = typeof "+h+"; ","array"==e.opts.coerceTypes&&(r+=" if ("+E+" == 'object' && Array.isArray("+h+")) "+E+" = 'array'; "),r+=" var "+j+" = undefined; ";var C="",O=_;if(O)for(var L,T=-1,D=O.length-1;T{"use strict";var t=["multipleOf","maximum","exclusiveMaximum","minimum","exclusiveMinimum","maxLength","minLength","pattern","additionalItems","maxItems","minItems","uniqueItems","maxProperties","minProperties","required","additionalProperties","enum","format","const"];e.exports=function(e,a){for(var r=0;r{"use strict";e.exports=function(e,t,a){var r=" ",i=e.level,n=e.dataLevel,s=e.schema[t],o=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+"/"+t,d=!e.opts.allErrors,u="data"+(n||""),m="errs__"+i,p=e.util.copy(e),c="";p.level++;var g="valid"+p.level,h={},v={},f=e.opts.ownProperties;for(w in s)if("__proto__"!=w){var k=s[w],y=Array.isArray(k)?v:h;y[w]=k}r+="var "+m+" = errors;";var b=e.errorPath;for(var w in r+="var missing"+i+";",v)if((y=v[w]).length){if(r+=" if ( "+u+e.util.getProperty(w)+" !== undefined ",f&&(r+=" && Object.prototype.hasOwnProperty.call("+u+", '"+e.util.escapeQuotes(w)+"') "),d){r+=" && ( ";var z=y;if(z)for(var P=-1,_=z.length-1;P<_;)O=z[P+=1],P&&(r+=" || "),r+=" ( ( "+(M=u+(D=e.util.getProperty(O)))+" === undefined ",f&&(r+=" || ! Object.prototype.hasOwnProperty.call("+u+", '"+e.util.escapeQuotes(O)+"') "),r+=") && (missing"+i+" = "+e.util.toQuotedString(e.opts.jsonPointers?O:D)+") ) ";r+=")) { ";var S="missing"+i,A="' + "+S+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.opts.jsonPointers?e.util.getPathExpr(b,S,!0):b+" + "+S);var E=E||[];E.push(r),r="",!1!==e.createErrors?(r+=" { keyword: 'dependencies' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { property: '"+e.util.escapeQuotes(w)+"', missingProperty: '"+A+"', depsCount: "+y.length+", deps: '"+e.util.escapeQuotes(1==y.length?y[0]:y.join(", "))+"' } ",!1!==e.opts.messages&&(r+=" , message: 'should have ",1==y.length?r+="property "+e.util.escapeQuotes(y[0]):r+="properties "+e.util.escapeQuotes(y.join(", ")),r+=" when property "+e.util.escapeQuotes(w)+" is present' "),e.opts.verbose&&(r+=" , schema: validate.schema"+o+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),r+=" } "):r+=" {} ";var j=r;r=E.pop(),!e.compositeRule&&d?e.async?r+=" throw new ValidationError(["+j+"]); ":r+=" validate.errors = ["+j+"]; return false; ":r+=" var err = "+j+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; "}else{r+=" ) { ";var C=y;if(C)for(var O,L=-1,T=C.length-1;L0:e.util.schemaHasRules(k,e.RULES.all))&&(r+=" "+g+" = true; if ( "+u+e.util.getProperty(w)+" !== undefined ",f&&(r+=" && Object.prototype.hasOwnProperty.call("+u+", '"+e.util.escapeQuotes(w)+"') "),r+=") { ",p.schema=k,p.schemaPath=o+e.util.getProperty(w),p.errSchemaPath=l+"/"+e.util.escapeFragment(w),r+=" "+e.validate(p)+" ",p.baseId=x,r+=" } ",d&&(r+=" if ("+g+") { ",c+="}"));return d&&(r+=" "+c+" if ("+m+" == errors) {"),r}},1946:e=>{"use strict";e.exports=function(e,t,a,r){return a=a||0,e["readUInt"+t+(r?"BE":"LE")].call(e,a)}},1961:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Sunshade","nl":"Zonnescherm","de":"Sonnenschirm","fr":"Auvent","it":"Parasole","sv":"Markis","no":"Markise","es":"Toldo","da":"Markise","ru":"Навес","pl":"Markiza","ko":"햇빛 가리개","ar":"مظلة شمسية"},"description":{"en":"Use this device class for sunshades (window coverings against the sun).","de":"Nutze diese Geräteklasse für Jalousien (Fenster-Abdeckungen gegen die Sonne).","fr":"Utilisez cette classe d\'appareil pour les auvents (couvrant les fenêtres contre le soleil).","it":"Utilizza questa classe di dispositivi per gli scuretti (che riparano le finestre dal sole).","sv":"Använd den här enhetsklassen för markiser (fönsterskydd mot solen).","no":"Bruk denne enhetsklassen for markiser (vindusskjerming mot solen).","es":"Utiliza esta clase de dispositivo para los toldos (para proteger las ventanas del sol).","da":"Brug denne enhedsklasse til markiser (vinduesdække mod solen).","ru":"Используйте этот класс устройств для навесов (оконных навесов от солнца).","pl":"Użyj tej klasy urządzeń dla markiz (osłony okienne chroniące przed słońcem).","ko":"이 디바이스 클래스는 선셰이드(햇빛을 막아주는 창문 덮개)에 사용합니다.","ar":"استخدم فئة الجهاز هذه للمظلات الشمسية (أغطية النوافذ ضد الشمس).","nl":"Gebruik deze apparaatklasse voor zonneschermen (raambekleding tegen de zon)."}}')},1997:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Battery Alarm","nl":"Batterij-alarm","de":"Batteriealarm","fr":"Alarme batterie","it":"Allarme batteria","sv":"Batterilarm","no":"Batterialarm","es":"Alarma de batería","da":"Batterialarm","ru":"Сигнал аккумулятора","pl":"Alarm stanu baterii","ko":"배터리 알람","ar":"إنذار البطارية"},"titleShort":{"en":"Battery","nl":"Batterij","de":"Batterie","fr":"Batterie","it":"Batteria","sv":"Batteri","no":"Batteri","es":"Batería","da":"Batteri","ru":"Аккумулятор","pl":"Stan baterii","ko":"배터리","ar":"البطارية"},"desc":{"en":"True when there is a battery warning","nl":"Geeft een batterijwaarschuwing","de":"True, wenn es eine Batterie-Warnung gibt","fr":"Vrai quand il y a un avertissement de batterie","it":"Vero quando c\'è un avvertimento sulla batteria","sv":"Sant när det finns en batterivarning","no":"Sant når det finnes en batteriadvarsel","es":"Activado cuando hay una advertencia de la batería","da":"Sandt, når der er en batterialarm","ru":"Значение «истина», когда есть предупреждение об аккумуляторе","pl":"Adekwatny, kiedy włączy się ostrzeżenie o stanie baterii","ko":"배터리 경고가 있으면 참","ar":"صحيح عند وجود تحذير البطارية"},"insights":true,"insightsTitleTrue":{"en":"Battery alarm turned on","nl":"Batterijalarm ging af","de":"Batterie-Alarm ist angegangen","fr":"Alarme batterie activée","it":"Allarme batteria attivato","sv":"Batterialarm aktiverat","no":"Batterialarm aktivert","es":"Alarma de la batería activada","da":"Batterialarm aktiveret","ru":"Сигнал аккумулятора включен","pl":"Alarm stanu baterii włączony","ko":"배터리 알람 켜짐","ar":"تم تشغيل إنذار البطارية"},"insightsTitleFalse":{"en":"Battery alarm turned off","nl":"Batterijalarm ging uit","de":"Batterie-Alarm ist ausgegangen","fr":"Alarme batterie désactivée","it":"Allarme batteria disattivato","sv":"Batterialarm inaktiverat","no":"Batterialarm deaktivert","es":"Alarma de la batería desactivada","da":"Batterialarm deaktiveret","ru":"Сигнал аккумулятора выключен","pl":"Alarm stanu baterii wyłączony","ko":"배터리 알람 꺼짐","ar":"تم إيقاف إنذار البطارية"},"color":"#6DD400","getable":true,"setable":false,"uiComponent":"battery","$flow":{"triggers":[{"id":"alarm_battery_true","highlight":true,"title":{"en":"The battery alarm turned on","nl":"De batterijwaarschuwing gaat aan","de":"Der Batterie-Alarm ist angegangen","fr":"L\'alarme batterie s\'est activée","it":"L\'allarme della batteria è stato attivato","sv":"Batterialarmet aktiverat","no":"Batterialarmen ble aktivert","es":"La alarma de la batería se ha activado","da":"Batterialarm aktiverede","ru":"Сигнал аккумулятора включен","pl":"Alarm stanu baterii włączony","ko":"배터리 알람이 \'예\'이면","ar":"تم تشغيل إنذار البطارية"}},{"id":"alarm_battery_false","title":{"en":"The battery alarm turned off","nl":"De batterijwaarschuwing gaat uit","de":"Der Batterie-Alarm ist ausgegangen","fr":"L\'alarme batterie s\'est désactivée","it":"L\'allarme della batteria è stato disattivato","sv":"Batterialarmet aktiverat","no":"Batterialarmen ble deaktivert","es":"La alarma de la batería se ha desactivado","da":"Batterialarm deaktiverede","ru":"Сигнал аккумулятора выключен","pl":"Alarm stanu baterii wyłączony","ko":"배터리 알람이 \'아니요\'이면","ar":"تم إيقاف إنذار البطارية"}}],"conditions":[{"id":"alarm_battery","title":{"en":"The battery alarm is !{{on|off}}","nl":"De batterijwaarschuwing is !{{aan|uit}}","de":"Der Batterie-Alarm ist !{{an|aus}}","fr":"L\'alarme batterie est !{{en marche|arrêtée}}","it":"L\'allarme della batteria è !{{acceso|spento}}","sv":"Batterialarmet är !{{på|av}}","no":"Batterialarmen er !{{på|av}}","es":"La alarma de la batería está !{{activada|desactivada}}","da":"Batterialarmen er !{{tændt|slukket}}","ko":"배터리 알람이 !{{\'예\'이면|\'아니요\'이면}}","pl":"Alarm stanu baterii jest !{{włączony|wyłączony}}","ru":"Сигнал аккумулятора !{{включен|выключен}}","ar":"إنذار البطارية !{{يعمل|لا يعمل}}"}}]}}')},2017:e=>{"use strict";e.exports=function e(t,a){if(t===a)return!0;if(t&&a&&"object"==typeof t&&"object"==typeof a){if(t.constructor!==a.constructor)return!1;var r,i,n;if(Array.isArray(t)){if((r=t.length)!=a.length)return!1;for(i=r;0!=i--;)if(!e(t[i],a[i]))return!1;return!0}if(t.constructor===RegExp)return t.source===a.source&&t.flags===a.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===a.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===a.toString();if((r=(n=Object.keys(t)).length)!==Object.keys(a).length)return!1;for(i=r;0!=i--;)if(!Object.prototype.hasOwnProperty.call(a,n[i]))return!1;for(i=r;0!=i--;){var s=n[i];if(!e(t[s],a[s]))return!1}return!0}return t!=t&&a!=a}},2059:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Wall Plug","nl":"Schakeldoos","de":"Steckdose","fr":"Prise murale","it":"Presa a muro","sv":"Väggkontakt","no":"Veggkontakt","es":"Enchufe de pared","da":"Stikkontakt","ru":"Настенная розетка","pl":"Wtyczka","ko":"벽면 콘센트","ar":"قابس الحائط"},"description":{"en":"Use this device class for sockets (built-in or plug-in socket switches). When adding the `choose_slave` pair template, the user is presented a `What\'s plugged in?` question.","de":"Nutze diese Geräteklasse für Sockel (eingebaut oder zum zum Einstecken). Wenn das `choose_slave`-Paar-Template hinzugefügt wird, wird dem Benutzer eine `Was ist eingesteckt?`-Frage gestellt.","fr":"Utilisez cette classe d\'appareil pour les prises (intégrées ou prises d\'interrupteurs). En ajoutant le modèle d\'appairage `choose_slave`, il est demandé à l\'utilisteur `Qu\'est-ce qui est connecté ?`.","it":"Utilizza questa classe di dispositivi per le prese (prese integrate o interruttori). Aggiungendo il modello di abbinamento `choose_slave`, viene chiesto all\'utente `Cosa è collegato?`.","sv":"Använd den här enhetsklassen för uttag (inbyggda eller stickkontakter). När parmallen `choose_slave` får användaren en `Vad är inkopplat?`-fråga.","no":"Bruk denne enhetsklassen for kontakter (innebygde eller eksterne kontaktenheter). Når sammenkoblingsmalen `choose_slave` legges til, får brukeren et `Hva er koblet til?`-spørsmål.","es":"Utiliza esta clase de dispositivo para los enchufes (interruptores de enchufe integrados o enchufables). Al añadir la plantilla de emparejamiento `choose_slave`, al usuario se le pregunta `¿Qué está enchufado?`.","da":"Brug denne enhedsklasse til kontakter (indbyggede eller eksterne kontaktenheder). Når `choose_slave` parskabelonen tilføjes, bliver brugeren præsenteret for et `Hvad er sat til?` spørgsmål.","ru":"Используйте этот класс устройства для розеток (встроенных или вставных выключателей). При добавлении шаблона сопряжения `choose_slave` пользователю предлагается ответить на вопрос: `Что подключено?`.","pl":"Użyj tej klasy urządzeń dla gniazdek elektrycznych (wbudowanych lub wtyczek). Podczas dodawania szablonu parowania `choose_slave` pojawi się pytanie: `Co jest podłączone?`.","ko":"이 디바이스 클래스는 (빌트인 및 플러그인 방식 소켓 스위치 등) 콘센트에 사용합니다. \'choose_slave\' 페어링 템플릿을 추가하면 사용자에게 \'무엇을 꽂으셨습니까?\' 질문이 표시됩니다.","ar":"استخدم فئة الجهاز هذه للمقابس (المدمجة أو قوابس التبديل). عند إضافة قالب الاقتران \'choose_slave\'، يتم عرض سؤال \'ما هو الموصل؟\' للمستخدم.","nl":"Gebruik deze apparaatklasse voor stopcontacten (ingebouwde of stopcontacten met schakelaar). Bij het toevoegen van het koppelsjabloon \'choose_slave\', krijgt de gebruiker de vraag \'Wat is ingestoken?\' te zien."},"virtualTitle":{"en":"Plugged in","nl":"Aangesloten","de":"Angeschlossen","fr":"Branché","it":"Collegato","sv":"Inkopplad","no":"Plugget inn","es":"Conectado","da":"Tilsluttet","ru":"Подключено","pl":"Podłączone","ko":"꽂힘","ar":"موصول"},"allowedVirtual":["light","fan","heater","coffeemachine","kettle","tv","solarpanel","airconditioning","airfryer","boiler","battery","cooktop","dishwasher","dryer","evcharger","freezer","fridge","fridge_and_freezer","fryer","grill","heatpump","mediaplayer","microwave","multicooker","networkrouter","oven","washer","washer_and_dryer","waterpurifier","oven_and_microwave"]}')},2119:e=>{"use strict";e.exports=function(e,t,a){var r,i=" ",n=e.level,s=e.dataLevel,o=e.schema[t],l=e.schemaPath+e.util.getProperty(t),d=e.errSchemaPath+"/"+t,u=!e.opts.allErrors,m="data"+(s||""),p=e.opts.$data&&o&&o.$data;if(p?(i+=" var schema"+n+" = "+e.util.getData(o.$data,s,e.dataPathArr)+"; ",r="schema"+n):r=o,!p&&"number"!=typeof o)throw new Error(t+" must be number");i+="if ( ",p&&(i+=" ("+r+" !== undefined && typeof "+r+" != 'number') || "),i+=" "+m+".length "+("maxItems"==t?">":"<")+" "+r+") { ";var c=t,g=g||[];g.push(i),i="",!1!==e.createErrors?(i+=" { keyword: '"+(c||"_limitItems")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(d)+" , params: { limit: "+r+" } ",!1!==e.opts.messages&&(i+=" , message: 'should NOT have ",i+="maxItems"==t?"more":"fewer",i+=" than ",i+=p?"' + "+r+" + '":""+o,i+=" items' "),e.opts.verbose&&(i+=" , schema: ",i+=p?"validate.schema"+l:""+o,i+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),i+=" } "):i+=" {} ";var h=i;return i=g.pop(),!e.compositeRule&&u?e.async?i+=" throw new ValidationError(["+h+"]); ":i+=" validate.errors = ["+h+"]; return false; ":i+=" var err = "+h+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",i+="} ",u&&(i+=" else { "),i}},2123:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Tank Missing Alarm","nl":"Waarschuwing voor ontbrekende tank","da":"Alarm for manglende tank","it":"Allarme serbatoio mancante","ko":"물통 분리 감지","no":"Alarm om manglende tank","pl":"Alarm braku zbiornika","ru":"Сигнал об отсутствии резервуара","sv":"Larm för saknad tank","es":"Alarma de depósito no instalado","fr":"Alarme de réservoir manquant","ar":"إنذار فقد الخزان","de":"Alarm bei fehlendem Tank"},"titleShort":{"en":"Tank Missing","nl":"Tank ontbreekt","da":"Manglende tank","it":"Serbatoio mancante","ko":"물통 누락","no":"Manglende tank","pl":"Brak zbiornika","ru":"Резервуар отсутствует","sv":"Tank saknas","es":"Depósito no instalado","fr":"Réservoir manquant","ar":"الخزان غير موجود","de":"Tank fehlt"},"desc":{"en":"True when the tank is missing.","nl":"Wordt geactiveerd wanneer de tank ontbreekt.","da":"Det er sandt, når tanken mangler.","it":"Vero quando manca il serbatoio.","ko":"탱크가 누락되면 참입니다.","no":"Sann når tanken mangler.","pl":"Prawda, gdy brakuje zbiornika.","ru":"Значение «истина», когда резервуар отсутствует.","sv":"Sant när tanken saknas.","es":"Activado cuando el depósito no está presente.","fr":"Se déclenche lorsque le réservoir est manquant.","ar":"صحيح عندما يكون الخزان مفقودًا.","de":"Richtig, wenn der Tank fehlt."},"insights":true,"insightsTitleTrue":{"en":"Tank was missing","nl":"Tank ontbrak","da":"Tanken manglede","it":"Mancava il serbatoio","ko":"물통 없음","no":"Tanken manglet","pl":"Brakowało zbiornika","ru":"Резервуар отсутствовал","sv":"Tank saknades","es":"El depósito no estaba presente","fr":"Le réservoir était manquant","ar":"كان الخزان مفقودًا","de":"Tank fehlte"},"insightsTitleFalse":{"en":"Tank was not missing","nl":"Tank was geplaatst","da":"Tanken manglede ikke","it":"Il serbatoio non mancava","ko":"물통 장착됨","no":"Tanken manglet ikke","pl":"Nie brakowało zbiornika","ru":"Резервуар не отсутствовал","sv":"Tanken saknades inte","es":"El depósito estaba colocado","fr":"Le réservoir n\'était pas manquant","ar":"لم يكن الخزان مفقودًا","de":"Tank fehlte nicht"},"color":"#0091FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_tank_missing_true","highlight":true,"title":{"en":"The tank is missing","nl":"De tank ontbreekt","da":"Tanken mangler","it":"Manca il serbatoio","ko":"물통이 없으면","no":"Tanken mangler","pl":"Brakuje zbiornika","ru":"Резервуар отсутствует","sv":"Tanken saknas","es":"El depósito no está presente","fr":"Le réservoir est manquant","ar":"الخزان مفقود","de":"Der Tank fehlt"}},{"id":"alarm_tank_missing_false","title":{"en":"The tank is placed","nl":"De tank is geplaatst","da":"Tanken er placeret","it":"Il serbatoio è presente","ko":"물통이 장착되어 있으면","no":"Tanken er på plass","pl":"Zbiornik jest umieszczony","ru":"Резервуар размещен","sv":"Tanken är på plats","es":"El depósito está colocado","fr":"Le réservoir est placé","ar":"تم وضع الخزان","de":"Der Tank wird platziert"}}],"conditions":[{"id":"alarm_tank_missing","title":{"en":"Tank !{{is|is not}} missing","nl":"De tank !{{ontbreekt|is geplaatst}}","da":"Tanken !{{er|er ikke}} manglende","it":"Il serbatoio è !{{assente|presente}}","ko":"물통이 !{{없으면|장착되어 있으면}}","no":"Tanken !{{er|er ikke}} borte","pl":"Zbiornik jest !{{brakujący|obecny}}","ru":"Резервуар ! {{отсутствует|в наличии}}","sv":"Tanken !{{saknas|är på plats}}","es":"El depósito !{{está|no está}} presente","fr":"Le réservoir est !{{manquant|présent}}","ar":"الخزان !{{مفقود|غير مفقود}}","de":"Tank !{{fehlt|fehlt nicht}}"}}]},"minCompatibility":"12.2.0"}')},2130:(e,t,a)=>{"use strict";e.exports=class{static getCurrencies(){return a(6570)}static getBatteries(){return["LS14250","C","AA","AAA","AAAA","A23","A27","PP3","CR123A","CR2","CR1632","CR2032","CR2430","CR2450","CR2477","CR3032","CR14250","INTERNAL","OTHER"]}}},2139:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"CO level","nl":"CO-niveau","da":"CO-niveau","it":"Livello di CO","ko":"일산화탄소(CO) 수준","pl":"Poziom CO","ru":"Уровень CO","sv":"CO-nivå","es":"Nivel de monóxido de carbono","fr":"Niveau de CO","no":"CO-nivå","ar":"مستوى أول أكسيد الكربون","de":"CO-Gehalt"},"desc":{"en":"The level of CO in the air.","nl":"De mate van CO in de lucht.","da":"Niveauet af CO i luften.","it":"Il livello di CO nell\'aria.","ko":"공기 중 CO의 수준입니다.","pl":"Poziom tlenku węgla w powietrzu.","ru":"Уровень содержания CO в воздухе.","sv":"Halten av CO i luften.","es":"El nivel de monóxido de carbono en el aire.","fr":"Le niveau de CO dans l\'air.","no":"Nivået av CO i luften.","ar":"مستوى أول أكسيد الكربون في الهواء.","de":"Der CO-Gehalt in der Luft."},"values":[{"id":"low","title":{"en":"Low","nl":"Laag","da":"Lavt","it":"Basso","ko":"낮음","pl":"Niski","ru":"Низкий","sv":"Låg","es":"Bajo","fr":"Faible","no":"Lavt","ar":"منخفض","de":"Niedrig"}},{"id":"medium","title":{"en":"Medium","nl":"Gemiddeld","da":"Medium","it":"Medio","ko":"보통","pl":"Średni","ru":"Средний","sv":"Medium","es":"Intermedio","fr":"Moyen","no":"Middels","ar":"متوسط","de":"Mittel"}},{"id":"high","title":{"en":"High","nl":"Hoog","da":"Højt","it":"Alto","ko":"높음","pl":"Wysoki","ru":"Высокий","sv":"Hög","es":"Alto","fr":"Élevé","no":"Høyt","ar":"عالي","de":"Hoch"}},{"id":"critical","title":{"en":"Critical","nl":"Kritiek","da":"Kritisk","it":"Critico","ko":"위험","pl":"Krytyczny","ru":"Критический","sv":"Kritisk","es":"Crítico","fr":"Critique","no":"Kritisk","ar":"حرج","de":"Kritisch"}}],"color":"#E02020","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"level_co_changed","highlight":true,"title":{"en":"The CO level changed to","nl":"Het CO-niveau is veranderd naar","da":"CO-niveauet blev ændret til","it":"Il livello di CO è passato a","ko":"일산화탄소(CO) 수준이 다음으로 변경되면","pl":"Poziom CO zmienił się na","ru":"Уровень СО изменился на","sv":"CO-nivån ändrades till","es":"El nivel de monóxido de carbono ha cambiado a","fr":"Le niveau de CO est passé à","no":"CO-nivået ble endret til","ar":"تغير مستوى أول أكسيد الكربون إلى","de":"Der CO-Gehalt hat sich geändert auf"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"level_co_is","title":{"en":"The CO level !{{is|is not}}","nl":"Het CO-niveau !{{is|is niet}}","da":"CO-niveauet !{{er|er ikke}}","it":"Il livello di CO !{{è|non è}}","ko":"일산화탄소(CO) 수준이 다음!{{이면|이 아니면}}","pl":"Poziom CO !{{jest|nie jest}}","ru":"Уровень CO !{{|не}}","sv":"CO-nivån !{{är|är inte}}","es":"El nivel de monóxido de carbono !{{es|no es}}","fr":"Le niveau de CO !{{est|n\'est pas}}","no":"CO-nivået !{{er|er ikke}}","ar":"مستوى أول أكسيد الكربون !{{هو|ليس}}","de":"Der CO-Gehalt !{{ist|ist nicht}}"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.2.0"}')},2154:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Air Treatment","da":"Luftbehandling","de":"Luftbehandlung","es":"Tratamiento del aire","fr":"Traitement de l\'air","it":"Trattamento dell\'aria","ko":"공기 관리","nl":"Luchtbehandeling","no":"Luftbehandling","pl":"Oczyszczanie powietrza","ru":"Обработка воздуха","sv":"Luftbehandling","ar":"معالجة الهواء"},"description":{"en":"Use this device class for any type of air treatment appliance, when the `dehumidifier`, `humidifier`, `diffuser` or `airpurifier` device class doesn\'t apply. Could be for combi units.","da":"Brug denne enhedsklasse til alle typer luftbehandlingsapparater, når enhedsklasserne `affugter`, `luftfugter`, `aromalampe` eller `luftrenser` ikke gælder. Kunne være til kombi-enheder.","de":"Verwenden Sie diese Geräteklasse für alle Arten von Luftbehandlungsgeräten, wenn die Geräteklassen „Luftentfeuchter“, „Luftbefeuchter“, „Zerstäuber“ oder „Luftreiniger“ nicht zutreffen. Dies kann etwa für Kombigeräte der Fall sein.","es":"Utiliza esta clase de dispositivo para cualquier tipo de aparato de tratamiento del aire que no pertenezca a las clases \\"Deshumidificador\\", \\"Humidificador\\", \\"Difusor\\" ni \\"Purificador de aire\\". Puede servir para unidades combinadas.","fr":"Utilisez cette classe d\'appareil pour tout type d\'appareil de traitement de l\'air, lorsque la classe d\'appareil \\"déshumidificateur\\", \\"humidificateur\\", \\"diffuseur\\" ou \\"purificateur d\'air\\" ne s\'applique pas. Il peut s\'agir d\'unités combinées.","it":"Utilizza questa classe di dispositivi per qualsiasi tipo di dispositivo per il trattamento dell\'aria, quando la classe \\"deumidificatore\\", \\"umidificatore\\", \\"diffusore\\" o \\"purificatore d\'aria\\" non è applicabile. Può essere utilizzata per le unità combinate.","ko":"이 디바이스 클래스는 \'dehumidifier\', \'humidifier\', \'diffuser\', \'airpurifier\' 디바이스 클래스가 적용되지 않는 공기 처리 가전에 사용합니다. 복합형 유닛에도 사용할 수 있습니다.","nl":"Gebruik deze apparaatklasse voor elk type luchtbehandelingsapparaat wanneer de apparaatklasse \'luchtontvochtiger\', \'luchtbevochtiger\', \'diffuser\' of \'luchtreiniger\' niet van toepassing is. Kan voor combi-eenheden zijn.","no":"Bruk denne enhetsklassen for alle typer luftbehandlingsapparater som ikke dekkes av enhetsklassene «luftavfukter», «luftfukter», «duftspreder» eller «luftrenser». Kan brukes for kombienheter.","pl":"Użyj tej klasy urządzeń dla dowolnego typu urządzenia do uzdatniania powietrza, gdy klasa urządzeń „osuszacz\\", „nawilżacz”, „dyfuzor” lub „oczyszczacz powietrza” nie ma zastosowania. Może dotyczyć jednostek combi.","ru":"Используйте этот класс устройств для любых устройств обработки воздуха, которые не относятся к классу устройств «осушитель воздуха», «увлажнитель воздуха», «диффузор» или «очиститель воздуха». Может использоваться для комбинированных устройств.","sv":"Använd den här enhetsklassen för alla typer av luftbehandlingsapparater när apparatklasserna \\"avfuktare\\", \\"luftavfuktare\\", \\"diffusor\\" eller \\"luftrenare\\" inte är tillämpliga. Kan vara för kombienheter.","ar":"استخدم فئة الجهاز هذه لأي نوع من أجهزة معالجة الهواء، عندما لا تنطبق فئة الجهاز \'مزيل الرطوبة\' أو \'مرطب الهواء\' أو \'ناشر الرائحة\' أو \'منقي الهواء\'. يمكن أن يكون للوحدات المجمعة."},"virtualTitle":{"en":"What\'s the type?","da":"Hvad er typen?","de":"Um welchen Typ handelt es sich?","es":"¿De qué tipo es?","fr":"Quel est le type ?","it":"Di che tipo è?","ko":"어떤 유형인가요?","nl":"Wat is het type?","no":"Hvilken type er det?","pl":"Jaki to typ?","ru":"Какой тип?","sv":"Vad är det för typ?","ar":"ما هو النوع؟"},"allowedVirtual":["airpurifier","dehumidifier","diffuser","humidifier"],"minCompatibility":"12.0.0"}')},2177:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"EV Charger","da":"Ladestationer til elbiler","de":"E-Auto-Ladegerät","es":"Cargador de vehículo eléctrico","fr":"Chargeur EV","it":"Caricatore di veicoli elettrici","ko":"전기차 충전기","nl":"EV-lader","no":"Elbillader","pl":"Ładowarka pojazdów elektrycznych","ru":"Зарядное устройство для электромобилей","sv":"Laddare för elfordon","ar":"شاحن سيارة كهربائية"},"description":{"en":"Use this device class for EV chargers.","da":"Brug denne enhedsklasse til ladestationer til elbiler.","de":"Verwenden Sie diese Geräteklasse für E-Auto-Ladegeräte.","es":"Utiliza esta clase de dispositivo para cargadores de vehículos eléctricos.","fr":"Utilisez cette classe d\'appareils pour les chargeurs de véhicules électriques.","it":"Utilizza questa classe di dispositivi per i caricatori di veicoli elettrici.","ko":"이 디바이스 클래스는 EV 충전기에 사용합니다.","nl":"Gebruik deze apparaatklasse voor EV-laders.","no":"Bruk denne enhetsklassen for elbilladere.","pl":"Ta klasa urządzeń jest przeznaczona dla ładowarek pojazdów elektrycznych.","ru":"Используйте этот класс устройств для зарядных устройств для электромобилей.","sv":"Använd den hät enhetsklassen för elfordonsladdare.","ar":"استخدم فئة الجهاز هذه لشواحن السيارات الكهربائية."},"minCompatibility":"12.0.0"}')},2182:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Grill","da":"Grill","es":"Parrilla","fr":"Gril","it":"Griglia","ko":"그릴","nl":"Grill","no":"Grill","pl":"Grill","ru":"Гриль","sv":"Grill","ar":"شواية","de":"Grill"},"description":{"en":"Use this device class for grills.","da":"Brug denne enhedsklasse til grill.","de":"Verwenden Sie diese Geräteklasse für Grills.","es":"Utiliza esta clase de dispositivo para parrillas.","fr":"Utilisez cette classe d\'appareils pour les grils.","it":"Utilizza questa classe di dispositivi per le griglie.","ko":"이 디바이스 클래스는 그릴에 사용합니다.","nl":"Gebruik deze apparaatklasse voor grills.","no":"Bruk denne enhetsklassen for griller.","pl":"Tej klasy urządzeń należy używać w przypadku grilli.","ru":"Используйте этот класс устройств для грилей.","sv":"Använd den här enhetsklassen för grillar.","ar":"استخدم فئة الجهاز هذه للشوايات."},"minCompatibility":"12.0.0"}')},2190:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"PM2.5 Alarm","nl":"PM2,5-alarm","de":"PM2.5-Alarm","fr":"Alarme PM2.5","it":"Allarme PM2.5","sv":"PM2.5-larm","no":"PM2.5-alarm","es":"Alarma de PM2,5","da":"PM2,5-alarm","ru":"Сигнал ТЧ2.5","pl":"Alarm PM2.5","ko":"초미세먼지(PM2.5) 알람","ar":"إنذار PM2.5"},"titleShort":{"en":"PM2.5","nl":"PM2.5","de":"PM2.5","fr":"PM2.5","it":"PM2.5","sv":"PM2.5","no":"PM2.5","es":"PM2,5","da":"PM2,5","ru":"ТЧ2,5","pl":"PM2,5","ko":"PM2.5","ar":"PM2.5"},"desc":{"en":"True when PM2.5 values exceeds threshold","nl":"Gaat af wanneer de PM2,5 waarde overschreden wordt","de":"True, wenn PM2.5-Werte die Schwelle überschreiten","fr":"Vrai si les valeurs PM2.5 excèdent un seuil","it":"Vero quando i valori PM2.5 superano la soglia","sv":"Sant när PM2.5-värdena överstiger gränsvärdet","no":"Sant når PM2.5-verdiene overskrider grenseverdien","es":"Activado cuando los valores de PM2,5 superan el límite","da":"Sandt, når PM2,5-værdier overskrider grænseværdien","ru":"Значение «истина» при превышении контрольного значения ТЧ 2.5","pl":"Prawda, gdy wartości PM2.5 przekaczają próg","ko":"PM2.5 값이 임계값을 초과하면 참","ar":"صحيح عندما تتجاوز قيم PM2.5 الحد"},"insights":true,"insightsTitleTrue":{"en":"PM2.5 alarm turned on","nl":"PM2,5 alarm ging af","de":"PM2.5-Alarm ist angegangen","fr":"Alarme PM2.5 s\'est activée","it":"Allarme PM2.5 attivato","sv":"PM2.5-larm aktiverat","no":"PM2.5-alarm aktivert","es":"Alarma de PM2,5 activada","da":"PM2,5-alarm blev aktiveret","ru":"Сигнал ТЧ 2.5 включен","pl":"Alarm PM2.5 włączony","ko":"초미세먼지(PM2.5) 알람 켜짐","ar":"تم تشغيل إنذار PM2.5"},"insightsTitleFalse":{"en":"PM2.5 alarm turned off","nl":"PM2,5 alarm ging uit","de":"PM2.5-Alarm ist ausgegangen","fr":"Alarme PM2.5 s\'est désactivée","it":"Allarme PM2.5 disattivato","sv":"PM2.5-larm inaktiverat","no":"PM2.5-alarm deaktivert","es":"Alarma de PM2,5 desactivada","da":"PM2,5-alarm blev deaktiveret","ru":"Сигнал ТЧ 2.5 выключен","pl":"Alarm PM2.5 wyłączony","ko":"초미세먼지(PM2.5) 알람 꺼짐","ar":"تم إيقاف إنذار PM2.5"},"color":"#E02020","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_pm25_true","highlight":true,"title":{"en":"The PM2.5 alarm turned on","nl":"Het PM2,5 gaat aan","de":"Der PM2.5-Alarm ist angegangen","fr":"L\'alarme PM2.5 s\'est activée","it":"L\'allarme PM2.5 è stato attivato","sv":"PM2.5-larmet aktiverat","no":"PM2.5-alarmen ble aktivert","es":"La alarma de PM2,5 se ha activado","da":"PM2,5-alarmen blev aktiveret","ru":"Сигнал ТЧ 2.5 включен","pl":"Alarm PM2.5 włączony","ko":"초미세먼지(PM2.5) 알람이 \'예\'이면","ar":"تم تشغيل إنذار PM2.5"}},{"id":"alarm_pm25_false","title":{"en":"The PM2.5 alarm turned off","nl":"Het PM2,5 gaat uit","de":"Der PM2.5-Alarm ist ausgegangen","fr":"L\'alarme PM2.5 s\'est désactivée","it":"L\'allarme PM2.5 è stato disattivato","sv":"PM2.5-larmet inaktiverat","no":"PM2.5-alarmen ble deaktivert","es":"La alarma de PM2,5 se ha desactivado","da":"PM2,5-alarmen blev deaktiveret","ru":"Сигнал ТЧ 2.5 выключен","pl":"Alarm PM2.5 wyłączony","ko":"초미세먼지(PM2.5) 알람이 \'아니요\'이면","ar":"تم إيقاف إنذار PM2.5"}}],"conditions":[{"id":"alarm_pm25","title":{"en":"The PM2.5 alarm is !{{on|off}}","nl":"Het PM2,5 alarm is !{{aan|uit}}","de":"Der PM2.5-Alarm ist !{{an|aus}}","fr":"L\'alarme PM2.5 est !{{en marche|arrêtée}}","it":"L\'allarme PM2.5 è !{{acceso|spento}}","sv":"PM2.5-larmet är !{{på|av}}","no":"PM2.5-alarmen er !{{på|av}}","es":"La alarma de PM2,5 está !{{activada|desactivada}}","da":"PM2,5-alarmen er !{{tændt|slukket}}","ru":"Сигнал ТЧ 2.5 !{{вкл.|выкл.}}","pl":"Alarm PM2.5 jest !{{włączony|wyłączony}}","ko":"초미세먼지(PM2.5) 알람이 !{{\'예\'|\'아니요\'}}이면","ar":"إنذار PM2.5 !{{يعمل|لا يعمل}}"}}]}}')},2254:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Speed","nl":"Snelheid","da":"Hastighed","it":"Velocità","ko":"속도","pl":"Prędkość","ru":"Скорость","sv":"Hastighet","es":"Velocidad","fr":"Vitesse","no":"Hastighet","ar":"السرعة","de":"Geschwindigkeit"},"units":{"en":"m/s","nl":"m/s","da":"m/s","it":"m/s","ko":"m/s","pl":"m/s","ru":"м/с","sv":"m/s","es":"m/s","fr":"m/s","no":"m/s","ar":"م/ث","de":"m/s"},"desc":{"en":"The speed in meters per second.","nl":"De snelheid in meters per seconde.","da":"Hastigheden i meter pr. sekund.","it":"La velocità in metri al secondo.","ko":"초당 미터 단위의 속도입니다.","pl":"Prędkość w metrach na sekundę.","ru":"Скорость в метрах в секунду.","sv":"Hastigheten i meter per sekund.","es":"La velocidad en metros por segundo.","fr":"La vitesse en mètres par seconde.","no":"Hastigheten i meter per sekund.","ar":"السرعة بالمتر في الثانية.","de":"Die Geschwindigkeit in Metern pro Sekunde."},"insights":true,"chartType":"spline","decimals":2,"color":"#32C5FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_speed_changed","title":{"en":"The speed changed","nl":"De snelheid is veranderd","da":"Hastigheden ændrede sig","it":"La velocità è cambiata","ko":"속도가 변경되면","pl":"Zmieniła się prędkość","ru":"Скорость изменилась","sv":"Hastigheten ändrades","es":"La velocidad ha cambiado","fr":"La vitesse a changé","no":"Hastigheten ble endret","ar":"تغيرت السرعة","de":"Die Geschwindigkeit hat sich geändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":2}]}]},"minCompatibility":"12.2.0"}')},2269:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Signal Strength","nl":"Signaalsterkte","da":"Signalstyrke","it":"Intensità del segnale","ko":"신호 세기","pl":"Siła sygnału","ru":"Мощность сигнала","sv":"Signalstyrka","es":"Intensidad de la señal","fr":"Intensité du signal","no":"Signalstyrke","ar":"قوة الإشارة","de":"Signalstärke"},"units":{"en":"dB","nl":"dB","da":"dB","it":"dB","ko":"dB","pl":"dB","ru":"дБ","sv":"dB","es":"dB","fr":"dB","no":"dB","ar":"دييسيبل","de":"dB"},"desc":{"en":"The signal strength in decibels.","nl":"De signaalsterkte in decibel.","da":"Signalstyrken i decibel.","it":"L\'intensità del segnale in decibel.","ko":"데시벨 단위의 신호 강도입니다.","pl":"Siła sygnału w decybelach.","ru":"Мощность сигнала в децибелах.","sv":"Signalstyrkan i decibel.","es":"La intensidad de la señal en decibelios.","fr":"L\'intensité du signal en décibels.","no":"Signalstyrken i desibel.","ar":"قوة الإشارة بالديسيبل.","de":"Die Signalstärke in Dezibel."},"insights":true,"chartType":"spline","decimals":2,"color":"#6236FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_signal_strength_changed","title":{"en":"The signal strength changed","nl":"De signaalsterkte is veranderd","da":"Signalstyrken ændrede sig","it":"L\'intensità del segnale è cambiata","ko":"신호 세기가 변경되면","pl":"Zmieniła się siła sygnału","ru":"Мощность сигнала изменилась","sv":"Signalstyrkan har ändrats","es":"La intensidad de la señal ha cambiado","fr":"L\'intensité du signal a changé","no":"Signalstyrken ble endret","ar":"تغيرت قوة الإشارة","de":"Die Signalstärke hat sich geändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":2}]}]},"minCompatibility":"12.2.0"}')},2303:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Fridge","da":"Køleskab","de":"Kühlschrank","es":"Frigorífico","fr":"Réfrigérateur","it":"Frigorifero","ko":"냉장고","nl":"Koelkast","no":"Kjøleskap","pl":"Lodówka","ru":"Холодильник","sv":"Kylskåp","ar":"ثلاجة"},"description":{"en":"Use this device class for any kind of fridge, if it is a fridge/freezer use \'fridge_and_freezer\'.","da":"Brug denne enhedsklasse til alle slags køleskabe. Hvis det er et køleskab/fryser, skal du bruge \'fridge_and_freezer\'.","de":"Verwenden Sie diese Geräteklasse für jede Art von Kühlschrank. Wenn es sich um einen Kühl-/Gefrierschrank handelt, verwenden Sie „fridge_and_freezer“.","es":"Utiliza esta clase de dispositivo para cualquier tipo de frigorífico. Si se trata de un frigorífico con congelador, utiliza la clase \'fridge_and_freezer\'.","fr":"Utilisez cette classe d\'appareils pour tout type de réfrigérateur. S\'il s\'agit d\'un réfrigérateur/congélateur, utilisez \\"fridge_and_freezer\\".","it":"Utilizza questa classe di dispositivi per qualsiasi tipo di frigorifero, se si tratta di un frigorifero/congelatore utilizza \\"fridge_and_freezer\\".","ko":"이 디바이스 클래스는 모든 종류의 냉장고에 사용하며, 냉장/냉동고의 경우 \'fridge_and_freezer\'를 사용합니다.","nl":"Gebruik deze apparaatklasse voor elke soort koelkast, als het een koelkast/vriezer is gebruik dan \'fridge_and_freezer\'.","no":"Bruk denne enhetsklassen for alle slags kjøleskap. For kombinert kjøleskap/fryser, bruk «fridge_and_freezer».","pl":"Tej klasy urządzeń należy używać dla każdego rodzaju lodówki, jeśli jest to lodówka/zamrażarka, należy użyć klasy „fridge_and_freezer”.","ru":"Используйте этот класс устройств для холодильников любого типа; в случае холодильника-морозильника используйте fridge_and_freezer.","sv":"Använd den här enhetsklassen för alla typer av kylskåp, om det är en kyl/frys ska du använda \'fridge_and_freezer\'.","ar":"استخدم فئة الجهاز هذه لأي نوع من الثلاجات، إذا كانت ثلاجة/مجمد مدمج، فاستخدم \'fridge_and_freezer\'."},"minCompatibility":"12.0.0"}')},2362:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Target power mode","nl":"Doelvermogensmodus","de":"Zielleistungsmodus","fr":"Mode de puissance cible","it":"Modalità potenza target","sv":"Måleffektläge","no":"Ønsket effekt-modus","es":"Modo de potencia objetivo","da":"Måleffekttilstand","ru":"Режим целевой мощности","pl":"Tryb mocy docelowej","ko":"충전전력 제한 모드","ar":"وضع الطاقة المستهدفة"},"desc":{"en":"The target power control mode","nl":"Besturingsmodus met doelvermogen","de":"Der Zielleistungs-Steuermodus","fr":"Le mode de contrôle de puissance cible","it":"La modalità di controllo della potenza target","sv":"Måleffektens styrläge","no":"Styringsmodus for ønsket effekt","es":"El modo de control de potencia objetivo","da":"Måleffektens kontroltilstand","ru":"Режим управления целевой мощностью","pl":"Tryb sterowania mocą docelową","ko":"충전전력 제한 제어 모드","ar":"وضع التحكم في الطاقة المستهدفة"},"values":[{"id":"device","title":{"en":"Automatic","nl":"Automatisch","de":"Automatisch","fr":"Automatique","it":"Automatico","sv":"Automatisk","no":"Automatisk","es":"Automático","da":"Automatisk","ru":"Автоматический","pl":"Automatyczny","ko":"자동","ar":"تلقائي"}},{"id":"homey","title":{"en":"Homey","nl":"Homey","de":"Homey","fr":"Homey","it":"Homey","sv":"Homey","no":"Homey","es":"Homey","da":"Homey","ru":"Homey","pl":"Homey","ko":"Homey","ar":"Homey"}}],"color":"#6DD400","getable":true,"setable":true,"uiComponent":"picker","minCompatibility":"12.13.0","$flow":{"triggers":[{"id":"target_power_mode_changed","title":{"en":"The target power mode changed to","nl":"De doelvermogensmodus is veranderd in","de":"Der Zielleistungsmodus wurde geändert auf","fr":"Le mode de puissance cible est passé à","it":"La modalità potenza target è passata a","sv":"Måleffektläget ändrades till","no":"Ønsket effekt-modusen ble endret til","es":"El modo de potencia objetivo ha cambiado a","da":"Måleffekttilstanden blev ændret til","ru":"Режим целевой мощности изменен на:","pl":"Tryb mocy docelowej zmienił się na","ko":"충전전력 제한값 모드가 다음으로 변경되면","ar":"تم تغيير وضع الطاقة المستهدفة إلى"},"hint":{"en":"\\"Homey\\" means Homey controls the device’s target power. Other modes are determined by the device.","nl":"\'Homey\' betekent dat Homey het doelvermogen van het apparaat regelt. Andere modi worden bepaald door het apparaat.","de":"„Homey“ bedeutet, dass Homey die Sollleistung des Geräts steuert. Andere Modi werden vom Gerät selbst festgelegt.","fr":"« Homey » signifie que Homey contrôle la puissance cible de l\'appareil. Les autres modes sont déterminés par l\'appareil.","it":"\\"Homey\\" significa che Homey controlla la potenza target del dispositivo. Le altre modalità sono determinate dal dispositivo.","sv":"\\"Homey\\" innebär att Homey styr enhetens måleffekt. Andra lägen bestäms av enheten.","no":"«Homey» betyr at Homey styrer ønsket effekt for enheten. Andre moduser bestemmes av enheten.","es":"\\"Homey\\" significa que Homey controla la potencia objetivo del dispositivo. Los demás modos los determina el dispositivo.","da":"\\"Homey\\" betyder, at Homey styrer enhedens måleffekt. Andre tilstande bestemmes af enheden.","ru":"Режим «Homey» означает, что Homey управляет целевой мощностью устройства. Другие режимы определяются устройством.","pl":"„Homey“ oznacza, że Homey steruje mocą docelową urządzenia. Pozostałe tryby są określane przez urządzenie.","ko":"\\"Homey\\"는 Homey가 제품의 충전전력 제한을 제어한다는 의미예요. 다른 모드는 제품에 의해 결정됩니다.","ar":"\\"Homey\\" يعني أن Homey يتحكم في الطاقة المستهدفة للجهاز. والأوضاع الأخرى يحددها الجهاز."},"args":[{"name":"target_power_mode","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"target_power_mode_is","title":{"en":"The target power mode !{{is|is not}}","nl":"De doelvermogensmodus !{{is|is niet}}","de":"Der Zielleistungsmodus !{{ist|ist nicht}}","fr":"Le mode de puissance cible !{{est|n\'est pas}}","it":"La modalità potenza target !{{è|non è}}","sv":"Måleffektläget !{{är|är inte}}","no":"Ønsket effekt-modus !{{er|er ikke}}","es":"El modo de potencia objetivo !{{está!no está}}","da":"Måleffekttilstanden !{{er|er ikke}}","ru":"Режим целевой мощности !{{|не}}","pl":"Tryb mocy docelowej !{{jest|nie jest}}","ko":"충전전력 제한값 모드가 다음!{{과 같으면|이 아니면}}","ar":"وضع الطاقة المستهدفة !{{هو|ليس}}"},"hint":{"en":"\\"Homey\\" means Homey controls the device’s target power. Other modes are determined by the device.","nl":"\'Homey\' betekent dat Homey het doelvermogen van het apparaat regelt. Andere modi worden bepaald door het apparaat.","de":"„Homey“ bedeutet, dass Homey die Sollleistung des Geräts steuert. Andere Modi werden vom Gerät selbst festgelegt.","fr":"« Homey » signifie que Homey contrôle la puissance cible de l\'appareil. Les autres modes sont déterminés par l\'appareil.","it":"\\"Homey\\" significa che Homey controlla la potenza target del dispositivo. Le altre modalità sono determinate dal dispositivo.","sv":"\\"Homey\\" innebär att Homey styr enhetens måleffekt. Andra lägen bestäms av enheten.","no":"«Homey» betyr at Homey styrer ønsket effekt for enheten. Andre moduser bestemmes av enheten.","es":"\\"Homey\\" significa que Homey controla la potencia objetivo del dispositivo. Los demás modos los determina el dispositivo.","da":"\\"Homey\\" betyder, at Homey styrer enhedens måleffekt. Andre tilstande bestemmes af enheden.","ru":"Режим «Homey» означает, что Homey управляет целевой мощностью устройства. Другие режимы определяются устройством.","pl":"„Homey“ oznacza, że Homey steruje mocą docelową urządzenia. Pozostałe tryby są określane przez urządzenie.","ko":"\\"Homey\\"는 Homey가 제품의 충전전력 제한을 제어한다는 의미예요. 다른 모드는 제품에 의해 결정됩니다.","ar":"\\"Homey\\" يعني أن Homey يتحكم في الطاقة المستهدفة للجهاز. والأوضاع الأخرى يحددها الجهاز."},"args":[{"name":"target_power_mode","type":"dropdown","values":"$values"}]}],"actions":[{"id":"target_power_mode_set","title":{"en":"Set the target power mode to","nl":"Stel de doelvermogensmodus in op","de":"Stelle den Zielleistungsmodus auf","fr":"Définir le mode de puissance cible sur","it":"Imposta la modalità potenza target su","sv":"Ställ in måleffektläget till","no":"Sett ønsket effekt-modus til","es":"Ajustar el modo de potencia objetivo en","da":"Indstil måleffekttilstanden til","ru":"Установить режим целевой мощности на:","pl":"Ustaw tryb mocy docelowej na","ko":"충전전력 제한값 모드를 다음으로 설정","ar":"ضبط وضع الطاقة المستهدفة على"},"hint":{"en":"To control the target power of this device via Homey, select \\"Homey\\". Other modes are determined by the device.","nl":"Selecteer \'Homey\' om het doelvermogen van dit apparaat via Homey te regelen. Andere modi worden bepaald door het apparaat.","de":"Um die Sollleistung dieses Geräts über Homey zu steuern, wählen Sie „Homey“ aus. Andere Modi werden vom Gerät selbst festgelegt.","fr":"Pour contrôler la puissance cible de cet appareil via Homey, sélectionnez « Homey ». Les autres modes sont déterminés par l\'appareil.","it":"Per controllare la potenza target di questo dispositivo tramite Homey, seleziona \\"Homey\\". Le altre modalità sono determinate dal dispositivo.","sv":"För att styra måleffekten för denna enhet via Homey, välj \\"Homey\\". Andra lägen bestäms av enheten.","no":"For å styre ønsket effekt for denne enheten med Homey, velg «Homey». Andre moduser bestemmes av enheten.","es":"Selecciona \\"Homey\\" para controlar la potencia objetivo de este dispositivo a través de Homey. Los demás modos los determina el dispositivo.","da":"For at styre denne enheds måleffekt via Homey skal du vælge \\"Homey\\". Andre tilstande bestemmes af enheden.","ru":"Чтобы управлять целевой мощностью этого устройства через Homey, выберите режим «Homey». Другие режимы определяются устройством.","pl":"Aby sterować mocą docelową tego urządzenia przez Homey, wybierz „Homey“. Pozostałe tryby są określane przez urządzenie.","ko":"이 제품의 충전전력 제한을 Homey를 통해 제어하려면 \\"Homey\\"를 선택하세요. 다른 모드는 제품에 의해 결정됩니다.","ar":"للتحكم في الطاقة المستهدفة لهذا الجهاز عبر Homey، اختر \\"Homey\\". والأوضاع الأخرى يحددها الجهاز."},"args":[{"name":"target_power_mode","type":"dropdown","values":"$values"}]}]}}')},2391:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Microwave Mode","ar":"وضع الميكروويف","da":"Mikrobølgetilstand","de":"Mikrowellen-Modus","es":"Modo microondas","fr":"Mode du micro-ondes","it":"Modalità microonde","ko":"전자레인지 모드","nl":"Magnetronstand","no":"Mikrobølgemodus","pl":"Tryb mikrofalówki","ru":"Режим микроволновой печи","sv":"Mikrovågsläge"},"desc":{"en":"The microwave mode.","ar":"وضع الميكروويف.","da":"Mikrobølgetilstanden.","de":"Der Mikrowellen-Modus.","es":"El modo microondas.","fr":"Le mode du micro-ondes.","it":"La modalità del microonde.","ko":"전자레인지 모드입니다.\\n","nl":"De magnetronstand.","no":"Mikrobølgemodusen.","pl":"Tryb mikrofalówki.","ru":"Режим микроволновой печи.","sv":"Mikrovågsläget."},"values":[{"id":"normal","title":{"en":"Normal","nl":"Normaal","da":"Normal","it":"Normale","ko":"보통","pl":"Normalny","ru":"Стандарт","sv":"Normal","es":"Normal","fr":"Normal","no":"Standard","ar":"عادي","de":"Normal"}},{"id":"defrost","title":{"en":"Defrost","ar":"إزالة الصقيع","da":"Optøning","de":"Auftauen","es":"Descongelar","fr":"Décongélation","it":"Scongelare","ko":"해동","nl":"Ontdooien","no":"Tining","pl":"Rozmrażanie","ru":"Размораживание","sv":"Upptining"}},{"id":"reheat","title":{"en":"Reheat","ar":"إعادة التسخين","da":"Genopvarmning","de":"Aufwärmen","es":"Recalentar","fr":"Réchauffer","it":"Riscaldare","ko":"재가열","nl":"Opwarmen","no":"Oppvarming","pl":"Odgrzewanie","ru":"Подогрев","sv":"Återuppvärmning"}}],"color":"#FA6400","getable":true,"setable":true,"uiComponent":"picker","$flow":{"triggers":[{"id":"microwave_mode_changed","highlight":true,"title":{"en":"The microwave mode changed to","ar":"تغير وضع الميكروويف إلى","da":"Mikrobølgetilstanden skiftede til","de":"Der Mikrowellen-Modus wurde geändert auf","es":"El modo microondas ha cambiado a","fr":"Le mode du micro-ondes est passé à","it":"La modalità del microonde è passata a","ko":"전자레인지 모드가 다음으로 변경되면","nl":"De magnetronstand veranderde naar","no":"Mikrobølgemodusen ble endret til","pl":"Tryb mikrofalówki zmienił się na","ru":"Режим микроволновой печи изменен на","sv":"Mikrovågsläget ändrades till"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"microwave_mode_is","title":{"en":"The microwave mode !{{is|is not}}","ar":"وضع الميكروويف !{{هو|ليس}}","da":"Mikrobølgetilstanden !{{er|er ikke}}","de":"Der Mikrowellenmodus !{{ist|ist nicht}}","es":"El modo microondas !{{está|no está}}","fr":"Le mode du micro-ondes !{{est|n\'est pas}}","it":"La modalità del microonde !{{è|non è}}","ko":"전자레인지 모드가 다음!{{이면|이 아니면}}","nl":"De magnetronstand !{{is|is niet}}","no":"Mikrobølgemodusen !{{er|er ikke}}","pl":"Tryb mikrofalówki !{{jest|nie jest}}","ru":"Режим микроволновой печи — !{{ | не}}","sv":"Mikrovågsläget !{{är|är inte}}"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}],"actions":[{"id":"set_microwave_mode","title":{"en":"Set the microwave mode to","ar":"اضبط وضع الميكروويف على","da":"Indstil mikrobølgetilstanden til","de":"Stellen Sie den Mikrowellen-Modus auf","es":"Establece el modo microondas en","fr":"Réglez le mode du micro-ondes sur","it":"Imposta la modalità del microonde su","ko":"전자레인지 모드를 다음으로 설정","nl":"Stel de magnetronstand in op","no":"Sett mikrobølgemodusen til","pl":"Ustaw tryb mikrofalówki na","ru":"Установить режим микроволновой печи на","sv":"Ställ in mikrovågsläget på"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.11.0"}')},2440:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Other","nl":"Overig","de":"Andere","fr":"Autre","it":"Altro","sv":"Övrigt","no":"Annet","es":"Otro","da":"Andet","ru":"Другое","pl":"Inne","ko":"기타","ar":"أخرى"},"description":{"en":"Use this device class for devices that do not fit any other device class.","de":"Nutze diese Geräteklasse für Geräte, die nicht in andere Geräteklassen passen.","fr":"Utilisez cette classe d\'appareil pour les appareils qui ne correspondent à aucune autre classe d\'appareil.","it":"Utilizza questa classe di dispositivi per gli apparecchi che non appartengono a nessun\'altra classe di dispositivi.","sv":"Använd den här enhetsklassen för enheter som inte passar i någon annan enhetsklass.","no":"Bruk denne enhetsklassen for enheter som ikke passer inn i noen annen enhetsklasse.","es":"Utiliza esta clase de dispositivo para los dispositivos que no se ajusten a ninguna otra clase.","da":"Brug denne enhedsklasse til enheder, der ikke hører til i andre enhedsklasse.","ru":"Используйте этот класс устройств для устройств, которые не подходят ни к одному другому классу.","pl":"Użyj tej klasy urządzeń dla produktów, które nie odpowiadają żadnej klasie urządzeń.","ko":"이 디바이스 클래스는 다른 디바이스 클래스에 속하지 않은 디바이스에 사용합니다.","ar":"استخدم فئة الجهاز هذه للأجهزة التي لا تناسب أي فئة أجهزة أخرى.","nl":"Gebruik deze apparaatklasse voor apparaten die niet in een andere apparaatklasse passen."}}')},2477:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Generic Alarm","nl":"Algemeen alarm","de":"Allgemeiner Alarm","fr":"Alarme générique","it":"Allarme generico","sv":"Generiskt larm","no":"Generell alarm","es":"Alarma genérica","da":"Generisk alarm","ru":"Общий сигнал","pl":"Alarm ogólny","ko":"알람","ar":"إنذار عام"},"titleShort":{"en":"Generic","nl":"Algemeen","de":"Allgemein","fr":"Générique","it":"Generico","sv":"Generisk","no":"Generell","es":"Genérica","da":"Generisk","ru":"Общий","pl":"Ogólny","ko":"일반","ar":"عام"},"desc":{"en":"Generic alarm","nl":"Algemeen alarm","de":"Allgemeiner Alarm","fr":"Alarme générique","it":"Allarme generico","sv":"Generiskt larm","no":"Generell alarm","es":"Alarma general","da":"Generisk alarm","ru":"Общий сигнал","pl":"Alarm ogólny","ko":"일반 알람","ar":"إنذار عام"},"insights":true,"insightsTitleTrue":{"en":"Generic alarm turned on","nl":"Algemeen alarm ging af","de":"Allgemeiner Alarm ist angegangen","fr":"Alarme générique s\'est activée","it":"Allarme generico attivato","sv":"Generiskt larm aktiverat","no":"Generell alarm aktivert","es":"Alarma general activada","da":"Generisk alarm blev aktiveret","ru":"Общий сигнал включен","pl":"Alarm ogólny włączony","ko":"알람 켜짐","ar":"تم تشغيل الإنذار العام"},"insightsTitleFalse":{"en":"Generic alarm turned off","nl":"Algemeen alarm ging uit","de":"Allgemeiner Alarm ist ausgegangen","fr":"Alarme générique s\'est désactivée","it":"Allarme generico disattivato","sv":"Generiskt larm inaktiverat","no":"Generell alarm deaktivert","es":"Alarma general desactivada","da":"Generisk alarm blev deaktiveret","ru":"Общий сигнал выключен","pl":"Alarm ogólny wyłączony","ko":"알람 꺼짐","ar":"تم إيقاف الإنذار العام"},"color":"#9033FC","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_generic_true","title":{"en":"The generic alarm turned on","nl":"Het algemene alarm gaat aan","de":"Der allgemeine Alarm ist angegangen","fr":"L\'alarme générique s\'est activée","it":"L\'allarme generico è stato attivato","sv":"Det generiska larmet är aktiverat","no":"Den generelle alarmen ble aktivert","es":"La alarma general se ha activado","da":"Den generiske alarm blev aktiveret","ru":"Общий сигнал включен","pl":"Alarm ogólny włączony","ko":"알람이 켜지면","ar":"تم تشغيل الإنذار العام"}},{"id":"alarm_generic_false","title":{"en":"The generic alarm turned off","nl":"Het algemene alarm ging uit","de":"Der allgemeine Alarm ist ausgegangen","fr":"L\'alarme générique s\'est désactivée","it":"L\'allarme generico è stato disattivato","sv":"Det generiska larmet är inaktiverat","no":"Den generelle alarmen ble deaktivert","es":"La alarma general se ha desactivado","da":"Den generiske alarm blev deaktiveret","ru":"Общий сигнал выключен","pl":"Alarm ogólny wyłączony","ko":"알람이 꺼지면","ar":"تم إيقاف الإنذار العام"}}],"conditions":[{"id":"alarm_generic","title":{"en":"The generic alarm is !{{on|off}}","nl":"Het algemene alarm is !{{aan|uit}}","de":"Der allgemeine Alarm ist !{{an|aus}}","fr":"L\'alarme générique est !{{en marche|arrêtée}}","it":"L\'allarme generico è !{{acceso|spento}}","sv":"Det generiska larmet är !{{på|av}}","no":"Den generelle alarmen er !{{på|av}}","es":"La alarma general está !{{activada|desactivada}}","da":"Den generiske alarm er !{{tændt|slukket}}","ru":"Общий сигнал !{{вкл.|выкл.}}","pl":"Alarm ogólny jest !{{włączony|wyłączony}}","ko":"알람이 !{{켜지면|꺼지면}}","ar":"الإنذار العام !{{يعمل|لا يعمل}}"}}]}}')},2492:e=>{"use strict";e.exports=function(e,t){t||(t={}),"function"==typeof t&&(t={cmp:t});var a,r="boolean"==typeof t.cycles&&t.cycles,i=t.cmp&&(a=t.cmp,function(e){return function(t,r){var i={key:t,value:e[t]},n={key:r,value:e[r]};return a(i,n)}}),n=[];return function e(t){if(t&&t.toJSON&&"function"==typeof t.toJSON&&(t=t.toJSON()),void 0!==t){if("number"==typeof t)return isFinite(t)?""+t:"null";if("object"!=typeof t)return JSON.stringify(t);var a,s;if(Array.isArray(t)){for(s="[",a=0;a{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Media Input","nl":"Media-invoer","da":"Medieindgang","it":"Ingresso multimediale","ko":"미디어 입력","pl":"Wejście multimedialne","ru":"Вход для устройств мультимедиа","sv":"Mediaingång","es":"Entrada de contenido multimedia","fr":"Entrée multimédia","no":"Medieinngang","ar":"مدخل الوسائط","de":"Medieneingang"},"desc":{"en":"The input channel for a media player","nl":"Het invoerkanaal voor een mediaspeler","da":"Indgangskanalen til en medieafspiller","it":"Il canale di ingresso di un lettore multimediale","ko":"미디어 플레이어의 입력 채널","pl":"Kanał wejściowy dla odtwarzacza multimedialnego","ru":"Канал ввода для медиаплеера","sv":"Ingångskanalen för en mediaspelare","es":"El canal de entrada de un reproductor multimedia","fr":"Le canal d\'entrée d\'un lecteur multimédia","no":"Inngangskanalen for en mediespiller","ar":"قناة الإدخال لمشغل الوسائط","de":"Der Eingangskanal für einen Media Player"},"values":[{"id":"hdmi_1","title":{"en":"HDMI 1","nl":"HDMI 1","da":"HDMI 1","it":"HDMI 1","ko":"HDMI 1","pl":"HDMI 1","ru":"HDMI 1","sv":"HDMI 1","es":"HDMI 1","fr":"HDMI 1","no":"HDMI 1","ar":"HDMI 1","de":"HDMI 1"}},{"id":"hdmi_2","title":{"en":"HDMI 2","nl":"HDMI 2","da":"HDMI 2","it":"HDMI 2","ko":"HDMI 2","pl":"HDMI 2","ru":"HDMI 2","sv":"HDMI 2","es":"HDMI 2","fr":"HDMI 2","no":"HDMI 2","ar":"HDMI 2","de":"HDMI 2"}},{"id":"hdmi_3","title":{"en":"HDMI 3","nl":"HDMI 3","da":"HDMI 3","it":"HDMI 3","ko":"HDMI 3","pl":"HDMI 3","ru":"HDMI 3","sv":"HDMI 3","es":"HDMI 3","fr":"HDMI 3","no":"HDMI 3","ar":"HDMI 3","de":"HDMI 3"}},{"id":"usb_1","title":{"en":"USB 1","nl":"USB 1","da":"USB 1","it":"USB 1","ko":"USB 1","pl":"USB 1","ru":"USB 1","sv":"USB 1","es":"USB 1","fr":"USB 1","no":"USB 1","ar":"USB 1","de":"USB 1"}},{"id":"usb_2","title":{"en":"USB 2","nl":"USB 2","da":"USB 2","it":"USB 2","ko":"USB 2","pl":"USB 2","ru":"USB 2","sv":"USB 2","es":"USB 2","fr":"USB 2","no":"USB 2","ar":"USB 2","de":"USB 2"}},{"id":"component","title":{"en":"Component","nl":"Component","da":"Komponent","it":"Componente","ko":"Component","pl":"Komponent","ru":"Компонент","sv":"Komponent","es":"Componente","fr":"Composant","no":"Komponent","ar":"مركب","de":"Komponente"}}],"color":"#9033FC","getable":true,"setable":true,"uiComponent":"picker","$flow":{"triggers":[{"id":"media_input_changed","highlight":true,"title":{"en":"The media input changed to","nl":"De media-invoer is veranderd naar","da":"Medieindgangen blev ændret til","it":"L\'ingresso multimediale è passato a","ko":"미디어 입력이 다음으로 변경되면","pl":"Wejście multimedialne zmieniło się na","ru":"Вход для устройств мультимедиа был изменен на","sv":"Medieuppgifterna ändrades till","es":"La entrada de contenido multimedia ha cambiado a","fr":"L\'entrée multimédia est passée à","no":"Medieinngangen ble endret til","ar":"تغير مدخل الوسائط إلى","de":"Der Medieneingang wurde geändert auf"},"args":[{"name":"input","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"media_input_is","title":{"en":"The media input !{{is|is not}}","nl":"De media-invoer !{{is|is niet}}","da":"Medieindgangen !{{er|er ikke}}","it":"L\'ingresso multimediale !{{è|non è}}","ko":"미디어 입력이 다음!{{이면|이 아니면}}","pl":"Wejście multimedialne !{{jest|nie jest}}","ru":"Вход для устройств мультимедиа !{{|не}}","sv":"Mediaingången !{{är|är inte}}","es":"La entrada de contenido multimedia !{{es|no es}}","fr":"L\'entrée multimédia !{{est|n\'est pas}}","no":"Medieinngangen !{{er|er ikke}}","ar":"مدخل الوسائط !{{هو|ليس}}","de":"Der Medieneingang !{{ist|ist nicht}}"},"args":[{"name":"input","type":"dropdown","values":"$values"}]}],"actions":[{"id":"set_media_input","title":{"en":"Set the media input","nl":"De media-invoer instellen","da":"Indstil medieindgangen","it":"Imposta l\'ingresso multimediale","ko":"미디어 입력 설정","pl":"Ustaw wejście multimedialne","ru":"Установить вход для устройств мультимедиа ","sv":"Ställ in mediaingången","es":"Configurar la entrada de contenido multimedia","fr":"Définir l\'entrée multimédia","no":"Innstill medieinngangen","ar":"ضبط مدخل الوسائط","de":"Medieneingang festlegen"},"args":[{"name":"input","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.2.0"}')},2517:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"PM10","nl":"PM10","de":"PM10","fr":"PM10","it":"PM10","sv":"PM10","no":"PM10","es":"PM10","ru":"ТЧ10","pl":"PM10","ko":"미세먼지(PM10)","da":"PM10","ar":"PM10"},"units":{"en":"μg/m³","ru":"мкг/м³","ko":"μg/m³","no":"μg/m³","da":"μg/m³","it":"μg/m³","nl":"μg/m³","pl":"μg/m³","sv":"μg/m³","es":"μg/m³","fr":"μg/m³","ar":"ميكرو جرام/م³","de":"μg/m³"},"insights":true,"desc":{"en":"Atmospheric particulate matter (μg/m³)","nl":"Zwevende deeltjes (μg/m³)","de":"Atmosphärischer Feinstaub (μg/m³)","fr":"Particules en suspension (μg/m³)","it":"Particolato atmosferico (μg/m³)","sv":"Atmosfäriskt partikelämne (μg/m³)","no":"Svevestøv (μg/m³)","es":"Partículas atmosféricas (μg/m³)","da":"Atmosfæriske partikler (μg/m³)","ru":"Твердые частицы в воздухе (мкг/м³)","pl":"Pył zawieszony w powietrzu (μg/m³)","ko":"대기 중 미세입자 수(μg/m³)","ar":"الجسيمات المعلقة في الغلاف الجوي (ميكرو جرام/م³)"},"chartType":"spline","decimals":2,"color":"#E02020","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_pm10_changed","title":{"en":"The PM10 value has changed","nl":"De PM10-waarde is veranderd","de":"Der PM10-Wert hat sich geändert","fr":"La valeur PM10 a changé","it":"Il valore di PM10 è cambiato","sv":"PM10-värdet har ändrats","no":"PM10-verdien er endret","es":"El valor de PM10 ha cambiado","da":"PM10-værdien har ændret sig","ru":"Значение ТЧ10 изменилось","pl":"Zmieniła się wartość PM10","ko":"미세먼지(PM10) 값이 변경되면","ar":"تغيرت قيمة PM10"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":2}]}]},"minCompatibility":"12.2.0"}')},2519:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Target temperature level","nl":"Gewenst temperatuurniveau","da":"Måltemperaturniveau","it":"Livello di temperatura target","ko":"희망 온도 설정","pl":"Docelowy poziom temperatury","ru":"Уровень заданной температуры","sv":"Nivå för önskad temperatur","es":"Nivel de temperatura deseado","fr":"Niveau de température cible","no":"Ønsket temperaturnivå","ar":"مستوى درجة الحرارة المستهدف","de":"Zieltemperaturniveau"},"desc":{"en":"The target temperature level of the appliance.","nl":"Het gewenste temperatuurniveau van het apparaat.","da":"Apparatets måltemperaturniveau.","it":"Il livello di temperatura target dell\'apparecchio.","ko":"가전의 목표 온도 수준입니다.","pl":"Docelowy poziom temperatury urządzenia.","ru":"Уровень заданной температуры прибора.","sv":"Apparatens önskade temperaturnivå.","es":"El nivel de temperatura deseado del dispositivo.","fr":"Le niveau de température cible de l\'appareil.","no":"Ønsket temperaturnivå for apparatet.","ar":"مستوى درجة الحرارة المستهدف للجهاز.","de":"Das Zieltemperaturniveau des Geräts."},"values":[{"id":"low","title":{"en":"Low","nl":"Laag","da":"Lav","it":"Basso","ko":"낮음","pl":"Niski","ru":"Низкий","sv":"Låg","es":"Bajo","fr":"Faible","no":"Lavt","ar":"منخفض","de":"Niedrig"}},{"id":"medium","title":{"en":"Medium","nl":"Gemiddeld","da":"Medium","it":"Medio","ko":"보통","pl":"Średni","ru":"Средний","sv":"Medium","es":"Intermedio","fr":"Moyen","no":"Middels","ar":"متوسط","de":"Mittel"}},{"id":"high","title":{"en":"High","nl":"Hoog","da":"Høj","it":"Alto","ko":"높음","pl":"Wysoki","ru":"Высокий","sv":"Hög","es":"Alto","fr":"Élevé","no":"Høyt","ar":"عالي","de":"Hoch"}}],"color":"#FA6400","getable":true,"setable":true,"uiComponent":"picker","$flow":{"triggers":[{"id":"target_temperature_level_changed","highlight":true,"title":{"en":"The target temperature level changed to","nl":"Het gewenste temperatuurniveau is veranderd naar","da":"Måltemperaturniveauet ændret til","it":"Il livello di temperatura target è passato a","ko":"희망 온도 설정이 다음으로 변경되면","pl":"Docelowy poziom temperatury zmienił się na","ru":"Уровень заданной температуры изменен на","sv":"Den önskade temperaturnivån ändrades till","es":"El nivel de temperatura deseado ha cambiado a","fr":"Le niveau de température cible est passé à","no":"Ønsket temperaturnivå ble endret til","ar":"تغير مستوى درجة الحرارة المستهدف إلى","de":"Das Zieltemperaturniveau wurde geändert auf"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"target_temperature_level_is","title":{"en":"The target temperature level !{{is|is not}}","nl":"Het gewenste temperatuurniveau !{{is|is niet}}","da":"Måltemperaturniveauet !{{er|er ikke}}","it":"Il livello di temperatura target !{{è|non è}}","ko":"희망 온도 설정이 다음!{{이면|이 아니면}}","pl":"Docelowy poziom temperatury !{{jest|nie jest}}","ru":"Заданный уровень температуры !{{|не}}","sv":"Den önskade temperaturnivån !{{är|är inte}}","es":"El nivel de temperatura deseado !{{es|no es}}","fr":"Le niveau de température cible !{{est|n\'est pas}}","no":"Ønsket temperaturnivå !{{er|er ikke}}","ar":"مستوى درجة الحرارة المستهدف !{{هو|ليس}}","de":"Das Zieltemperaturniveau !{{ist|ist nicht}}"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}],"actions":[{"id":"set_target_temperature_level","title":{"en":"Set the target temperature level to","nl":"Het doeltemperatuurniveau instellen op","da":"Indstil måltemperaturniveauet til","it":"Imposta il livello di temperatura target su","ko":"희망 온도 설정을 다음으로 설정","pl":"Ustaw docelowy poziom temperatury na","ru":"Установить уровень заданной температуры на","sv":"Ställ in önskad temperaturnivå till","es":"Ajustar el nivel de temperatura deseado a","fr":"Définir le niveau de température cible sur","no":"Sett ønsket temperaturnivå til","ar":"ضبط مستوى درجة الحرارة المستهدف على","de":"Stelle das Zieltemperaturniveau auf"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.2.0"}')},2524:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Battery","nl":"Accuniveau","de":"Batterie","fr":"Batterie","it":"Batteria","sv":"Batteri","no":"Batteri","es":"Batería","da":"Batteri","ru":"Аккумулятор","pl":"Bateria","ko":"배터리","ar":"البطارية"},"units":{"en":"%","ko":"%","no":"%","ru":"%","ar":"%","da":"%","de":"%","es":"%","fr":"%","it":"%","nl":"%","pl":"%","sv":"%"},"insights":true,"min":0,"max":100,"desc":{"en":"Battery charge in percentage (%)","nl":"Accuniveau in procenten (%)","de":"Batteriestand in Prozent (%)","fr":"Pourcentage de charge de la batterie (%)","it":"Percentuale di carica della batteria (%)","sv":"Batteriladdning i procent (%)","no":"Batterilading i prosent (%)","es":"Carga de la batería en porcentaje (%)","da":"Batteriniveau i procent (%)","ru":"Зарядка аккумулятора в процентах (%)","pl":"Naładowanie baterii w procentach (%)","ko":"배터리 충전량(%)","ar":"شحن البطارية بالنسبة المئوية (%)"},"chartType":"spline","decimals":2,"color":"#6DD400","getable":true,"setable":false,"uiComponent":"battery","$flow":{"triggers":[{"id":"measure_battery_changed","title":{"en":"The battery level changed","nl":"Het accuniveau is veranderd","de":"Der Batteriestand hat sich geändert","fr":"Le niveau de la batterie a changé","it":"Il livello della batteria è cambiato","sv":"Batterinivån ändrades","no":"Batterinivået ble endret","es":"El nivel de la batería ha cambiado","da":"Batteriniveauet har ændret sig","ru":"Уровень аккумулятора изменен","pl":"Zmienił się poziom baterii","ko":"배터리 수준이 변경되면","ar":"تغير مستوى البطارية"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":99}]}]}}')},2544:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Fire Alarm","nl":"Brandalarm","de":"Feueralarm","fr":"Alarme incendie","it":"Allarme antincendio","sv":"Brandlarm","no":"Brannalarm","es":"Alarma de incendios","da":"Brandalarm","ru":"Пожарный сигнал","pl":"Alarm pożarowy","ko":"화재 감지","ar":"إنذار الحريق"},"titleShort":{"en":"Fire","nl":"Brand","de":"Feuer","fr":"Incendie","it":"Antincendio","sv":"Brand","no":"Brann","es":"Fuego","da":"Brand","ru":"Пожар","pl":"Pożar","ko":"화재","ar":"حريق"},"desc":{"en":"True when fire has been detected","nl":"Gaat af als er brand gedetecteerd wordt","de":"True, wenn Feuer erkannt wurde","fr":"Vrai si un incendie a été détecté","it":"Vero quando è stato rilevato un incendio","sv":"Sant när brand upptäckts","no":"Sann når brann har blitt påvist","es":"Activado cuando se detecta fuego","da":"Sandt, når brand er blevet opdaget","ru":"Значение «истина» при обнаружении огня","pl":"Alarm przeciwpożarowy","ko":"화재가 감지되면 참","ar":"صحيح عند اكتشاف حريق"},"insights":true,"insightsTitleTrue":{"en":"Fire alarm turned on","nl":"Brandalarm ging af","de":"Feuer-Alarm ist angegangen","fr":"Alarme incendie s\'est activée","it":"Allarme antincendio attivato","sv":"Brandlarm aktiverat","no":"Brannalarmen ble aktivert","es":"Alarma de incendios activada","da":"Brandalarm blev aktiveret","ru":"Пожарный сигнал включен","pl":"Adekwatny, kiedy wykryty zostanie pożar","ko":"화재 감지됨","ar":"تم تشغيل إنذار الحريق"},"insightsTitleFalse":{"en":"Fire alarm turned off","nl":"Brandalarm ging uit","de":"Feuer-Alarm ist ausgegangen","fr":"Alarme incendie s\'est désactivée","it":"Allarme antincendio disattivato","sv":"Brandlarm inaktiverat","no":"Brannalarm deaktivert","es":"Alarma de incendios desactivada","da":"Brandalarm blev deaktiveret","ru":"Пожарный сигнал выключен","pl":"Alarm przeciwpożarowy wyłączony","ko":"정상","ar":"تم إيقاف إنذار الحريق"},"color":"#FA6400","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_fire_true","highlight":true,"title":{"en":"The fire alarm turned on","nl":"Het brandalarm gaat aan","de":"Der Feuer-Alarm ist angegangen","fr":"L\'alarme incendie s\'est activée","it":"L\'allarme antincendio è stato attivato","sv":"Brandlarmet aktiverat","no":"Brannalarmen ble aktivert","es":"La alarma de incendios se ha activado","da":"Brandalarmen blev aktiveret","ru":"Пожарный сигнал включен","pl":"Alarm przeciwpożarowy włączony","ko":"화재가 감지되면","ar":"تم تشغيل إنذار الحريق"}},{"id":"alarm_fire_false","title":{"en":"The fire alarm turned off","nl":"Het brandalarm gaat uit","de":"Der Feuer-Alarm ist ausgegangen","fr":"L\'alarme incendie s\'est désactivée","it":"L\'allarme antincendio è stato disattivato","sv":"Brandlarmet inaktiverat","no":"Brannalarmen ble deaktivert","es":"La alarma de incendios se ha desactivado","da":"Brandalarmen blev deaktiveret","ru":"Пожарный сигнал выключен","pl":"Alarm przeciwpożarowy wyłączony","ko":"화재 감지가 정상 상태이면","ar":"تم إيقاف إنذار الحريق"}}],"conditions":[{"id":"alarm_fire","title":{"en":"The fire alarm is !{{on|off}}","nl":"Het brandalarm is !{{aan|uit}}","de":"Der Feuer-Alarm ist !{{an|aus}}","fr":"L\'alarme incendie est !{{en marche|arrêtée}}","it":"L\'allarme antincendio è !{{acceso|spento}}","sv":"Brandlarmet är !{{på|av}}","no":"Brannalarmen er !{{på|av}}","es":"La alarma de incendios está !{{activada|desactivada}}","da":"Brandalarmen er !{{tændt|slukket}}","ru":"Пожарный сигнал !{{вкл.|выкл.}}","pl":"Alarm przeciwpożarowy jest !{{włączony|wyłączony}}","ko":"!{{화재가 감지되면|화재 감지가 정상 상태이면}}","ar":"إنذار الحريق !{{يعمل|لا يعمل}}"}}]}}')},2585:(e,t,a)=>{"use strict";var r=a(6740);e.exports=function(e){r.copy(e,this)}},2621:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"PM1 level","nl":"PM1-niveau","da":"PM1-niveau","it":"Livello PM1","ko":"극초미세먼지(PM1.0) 수준","pl":"Poziom PM1","ru":"Уровень ТЧ1","sv":"PM1-nivå","es":"Nivel de PM1","fr":"Niveau de PM1","no":"PM1-nivå","ar":"مستوى PM1","de":"PM1-Wert"},"desc":{"en":"The amount of PM1 particles in the air represented by a level.","nl":"De hoeveelheid PM1-deeltjes in de lucht weergegeven als niveau.","da":"Mængden af PM1-partikler i luften repræsenteret ved et niveau.","es":"La cantidad de partículas PM1 en el aire representada por un nivel.","it":"La quantità di particelle PM1 nell\'aria rappresentata da un livello.","ko":"수준으로 표현한 공기 중 PM1 입자의 양입니다.","pl":"Ilość cząstek PM1 w powietrzu przedstawiona jako poziom.","ru":"Количество частиц ТЧ1 в воздухе, представленное в виде уровня.","sv":"Mängden PM1-partiklar i luften som representeras av en nivå.","fr":"La quantité de particules PM1 dans l\'air représentée sous forme de niveau.","no":"Mengden av PM1-partikler i luften uttrykt som et nivå.","ar":"كمية جزيئات PM1 في الهواء ممثلة كمستوى.","de":"Die Menge der PM1-Partikel in der Luft, dargestellt durch einen Wert."},"values":[{"id":"low","title":{"en":"Low","nl":"Laag","da":"Lavt","it":"Basso","ko":"좋음","pl":"Niski","ru":"Низкий","sv":"Låg","es":"Bajo","fr":"Faible","no":"Lavt","ar":"منخفض","de":"Niedrig"}},{"id":"medium","title":{"en":"Medium","nl":"Gemiddeld","da":"Medium","it":"Medio","ko":"보통","pl":"Średni","ru":"Средний","sv":"Medium","es":"Intermedio","fr":"Moyen\\n","no":"Middels","ar":"متوسط","de":"Mittel"}},{"id":"high","title":{"en":"High","nl":"Hoog","da":"Højt","it":"Alto","ko":"나쁨","pl":"Wysoki","ru":"Высокий","sv":"Hög","es":"Alto","fr":"Élevé","no":"Høyt","ar":"عالي","de":"Hoch"}},{"id":"critical","title":{"en":"Critical","nl":"Kritiek","da":"Kritisk","it":"Critico","ko":"매우 나쁨","pl":"Krytyczny","ru":"Критический","sv":"Kritisk","es":"Crítico","fr":"Critique","no":"Kritisk","ar":"حرج","de":"Kritisch"}}],"color":"#E02020","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"level_pm1_changed","highlight":true,"title":{"en":"The PM1 level changed to","nl":"Het PM1-niveau is veranderd naar","da":"PM1-niveauet blev ændret til","it":"Il livello PM1 è passato a","ko":"극초미세먼지(PM1.0) 수준이 다음으로 변경되면","pl":"Poziom PM1 zmienił się na","ru":"Уровень ТЧ1 изменился на","sv":"PM1-nivån ändrades till","es":"El nivel de PM1 ha cambiado a","fr":"Le niveau PM1 est passé à","no":"PM1-nivået ble endret til","ar":"تغير مستوى PM1 إلى","de":"Der PM1-Wert hat sich geändert auf"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"level_pm1_is","title":{"en":"The PM1 level !{{is|is not}}","nl":"Het PM1-niveau is !{{is|is niet}}","da":"PM1-niveauet !{{er|er ikke}}","it":"Il livello PM1 !{{è|non è}}","ko":"극초미세먼지(PM1.0) 수준이 다음!{{이면|이 아니면}}","pl":"Poziom PM1 !{{jest|nie jest}}","ru":"Уровень ТЧ1 !{{|не}}","sv":"PM1-nivån !{{är|är inte}}","es":"El nivel de PM1 !{{es|no es}}","fr":"Le niveau PM1 !{{est|n\'est pas}}","no":"PM1-nivået !{{er|er ikke}}","ar":"مستوى PM1 !{{هو|ليس}}","de":"Der PM1-Wert !{{ist|ist nicht}}"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.2.0"}')},2674:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Air Purifier","da":"Luftrenser","de":"Luftreiniger","es":"Purificador de aire","fr":"Purificateur d\'air","it":"Purificatore d\'aria","ko":"공기청정기","nl":"Luchtreiniger","no":"Luftrenser","pl":"Oczyszczacz powietrza","ru":"Очиститель воздуха","sv":"Luftrenare","ar":"جهاز تنقية الهواء"},"description":{"en":"Use this device class for air purifiers.","da":"Brug denne enhedsklasse til luftrensere.","de":"Verwenden Sie diese Geräteklasse für Luftreiniger.","es":"Utiliza esta clase de dispositivo para purificadores de aire.","fr":"Utiliser cette classe d\'appareils pour les purificateurs d\'air.","it":"Utilizza questa classe di dispositivi per i purificatori d\'aria.","ko":"이 디바이스 클래스는 공기청정기에 사용합니다.","nl":"Gebruik deze apparaatklasse voor luchtreinigers.","no":"Bruk denne enhetsklassen for luftrensere.","pl":"Tej klasy urządzeń należy używać w przypadku oczyszczaczy powietrza.","ru":"Используйте этот класс устройств для очистителей воздуха.","sv":"Använd den häe enhetsklassen för luftrenare.","ar":"استخدم فئة الجهاز هذه لأجهزة تنقية الهواء."},"minCompatibility":"12.0.0"}')},2744:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Docked","nl":"Gekoppeld","da":"Forankret","it":"Alloggiato","ko":"거치 상태","pl":"Zadokowane","ru":"Установлено в док-станцию","sv":"Dockad","es":"En la base de carga","fr":"À la base","no":"I stasjonen","ar":"قيد الإرساء","de":"Angedockt"},"desc":{"en":"True when docked.","nl":"Wordt geactiveerd wanneer deze is gekoppeld.","da":"Sandt, når forankret.","it":"Vero quando è alloggiato.","ko":"도킹되면 참입니다.","pl":"Prawda, gdy zadokowane.","ru":"Значение «истина» при установке в док-станцию.","sv":"Sant när den är dockad.","es":"Activado cuando está en la base de carga.","fr":"Se déclenche lorsque l\'appareil est à la base.","no":"Sann når den er i stasjonen.","ar":"صحيح عندما يكون الجهاز في وضع الإرساء.","de":"Wahr, wenn angedockt."},"insights":true,"insightsTitleTrue":{"en":"Docked","nl":"Gekoppeld","da":"Forankret","it":"Alloggiato","ko":"거치됨","pl":"Zadokowane","ru":"Установлено в док-станцию","sv":"Dockad","es":"En la base de carga","fr":"À la base","no":"I stasjonen","ar":"قيد الإرساء","de":"Angedockt"},"insightsTitleFalse":{"en":"Not docked","nl":"Niet gekoppeld","da":"Ikke forankret","it":"Non alloggiato","ko":"거치되지 않음","pl":"Nie zadokowane","ru":"Не установлено в док-станцию","sv":"Inte dockad","es":"Fuera de la base de carga","fr":"Pas à la base","no":"Ikke i stasjonen","ar":"لم يتم إرساؤه","de":"Nicht angedockt"},"color":"#9033FC","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"docked_true","highlight":true,"title":{"en":"Has docked","nl":"Is gekoppeld","da":"Er forankret","it":"Alloggiato","ko":"거치된 상태이면","pl":"Jest zadokowane","ru":"Установлено в док-станцию","sv":"Dockad","es":"Está en la base de carga","fr":"À la base","no":"Har gått til stasjonen","ar":"تم إرساؤه","de":"Hat angedockt"}},{"id":"docked_false","title":{"en":"Has undocked","nl":"Is losgekoppeld","da":"Er ikke forankret","it":"Non alloggiato","ko":"거치되지 않은 상태라면","pl":"Jest niezadokowane","ru":"Не установлено в док-станцию","sv":"Inte dockad","es":"Está fuera de la base de carga","fr":"Pas à la base","no":"Har gått ut av stasjonen","ar":"تم فك الإرساء","de":"Hat abgedockt"}}],"conditions":[{"id":"docked","title":{"en":"Is !{{docked|not docked}}","nl":"Is !{{gekoppeld|niet gekoppeld}}","da":"Er !{{Forankret|Ikke forankret}}","it":"È !{{alloggiato|non alloggiato}}","ko":"!{{거치된 상태이면|거치되지 않은 상태라면}}","pl":"Jest !{{zadokowane|niezadokowane}}","ru":"!{{Установлено в док-станцию|Не установлено в док-станцию}}","sv":"Är !{{dockad|inte dockad}}","es":"Está !{{en la base de carga|fuera de la base de carga}}","fr":"!{{Est à la base|N\'est pas à la base}}","no":"Er !{{i stasjonen|ikke i stasjonen}}","ar":"!{{قيد الإرساء|ليس قيد الإرساء}}","de":"Ist !{{angedockt|abgedockt}}"}}]},"minCompatibility":"12.2.0"}')},2752:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Closed","nl":"Gesloten","de":"Geschlossen","fr":"Fermé","it":"Chiuse","sv":"Stängd","no":"Lukket","es":"Cerrados","da":"Lukket","ru":"Закрыта","pl":"Zamknięta","ko":"차고 문","ar":"مغلق"},"color":"#0082FA","getable":true,"setable":true,"insights":true,"insightsTitleTrue":{"en":"Closed","nl":"Gesloten","de":"Geschlossen","fr":"Fermé","it":"Chiuse","sv":"Stängd","no":"Lukket","es":"Cerrados","da":"Lukket","ru":"Закрыта","pl":"Zamknięta","ko":"차고 문 닫힘","ar":"مغلق"},"insightsTitleFalse":{"en":"Opened","nl":"Geopend","de":"Offen","fr":"Ouvert","it":"Aperte","sv":"Öppen","no":"Åpnet","es":"Abiertos","da":"Åben","ru":"Открыта","pl":"Otwarta","ko":"차고 문 열림","ar":"مفتوح"},"uiComponent":"toggle","$flow":{"triggers":[{"id":"garagedoor_closed_true","title":{"en":"Closed","nl":"Gesloten","de":"Geschlossen","fr":"Fermé","it":"Chiuse","sv":"Stängd","no":"Lukket","es":"Cerrados","da":"Lukket","ru":"Закрыта","pl":"Zamknięta","ko":"차고 문이 닫히면","ar":"مغلق"}},{"id":"garagedoor_closed_false","title":{"en":"Opened","nl":"Geopend","de":"Offen","fr":"Ouvert","it":"Aperte","sv":"Öppen","no":"Åpnet","es":"Abiertos","da":"Åben","ru":"Открыта","pl":"Otwarta","ko":"차고 문이 열리면","ar":"مفتوح"}}],"conditions":[{"id":"closed","title":{"en":"Is !{{closed|open}}","nl":"Is !{{gesloten|geopend}}","de":"Ist !{{geschlossen|offen}}","fr":"Est !{{fermé|ouvert}}","it":"È !{{chiuso|aperto}}","sv":"Är !{{stängd|öppen}}","no":"Er !{{lukket|åpen}}","es":"Está !{{cerrado|abierto}}","da":"Er !{{lukket|åben}}","ru":"!{{закрыта|открыта}}","pl":"Jest !{{zamknięta|otwarta}}","ko":"차고 문이 !{{닫히면|열리면}}","ar":"!{{مغلق|مفتوح}}"}}],"actions":[{"id":"close","highlight":true,"title":{"en":"Close","nl":"Sluiten","de":"Schließen","fr":"Fermer","it":"Chiudi","sv":"Stäng","no":"Lukk","es":"Cerrar","da":"Luk","ru":"Закрыть","pl":"Zamknij","ko":"차고 문 닫기","ar":"إغلاق"}},{"id":"open","highlight":true,"title":{"en":"Open","nl":"Openen","de":"Öffnen","fr":"Ouvrir","it":"Apri","sv":"Öppna","no":"Åpne","es":"Abrir","da":"Åbn","ru":"Открыть","pl":"Otwórz","ko":"차고 문 열기","ar":"فتح"}},{"id":"toggle","title":{"en":"Toggle open or closed","nl":"Schakel tussen geopend en gesloten","de":"Offen/Geschlossen umschalten","fr":"Alterner ouvert/fermé","it":"Alterna aperte/chiuse","sv":"Växla mellan öppen eller stängd","no":"Veksle mellom åpen og lukket","es":"Abrir o cerrar","da":"Skift mellem åben og lukket","ru":"Переключатель открыть/закрыть","pl":"Przełącz na otwartą lub zamkniętą","ko":"차고 문 열림/닫힘 상태 전환하기","ar":"تبديل بين الفتح أو الإغلاق"}}]}}')},2755:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Solar Panel","nl":"Zonnepaneel","sv":"Solpanel","no":"Solpanel","es":"Panel solar","da":"Solpanel","ru":"Солнечная панель","pl":"Panel fotowoltaiczny","ko":"태양광 패널","ar":"لوحة شمسية","de":"Solarpanel","fr":"Panneau solaire","it":"Pannello solare"},"description":{"en":"Use this device class for solar panels.","es":"Utiliza esta clase de dispositivo para los paneles solares.","da":"Brug denne enhedsklasse til solpaneler.","ru":"Используйте этот класс устройств для солнечных панелей.","pl":"Użyj tej klasy urządzeń dla paneli fotowoltaicznych.","ko":"이 디바이스 클래스는 태양광 패널에 사용합니다.","no":"Bruk denne enhetsklassen for solpaneler.","ar":"استخدم فئة الجهاز هذه للألواح الشمسية.","de":"Verwende diese Geräteklasse für Solarpanele.","fr":"Utilisez cette classe d\'appareils pour les panneaux solaires.","it":"Utilizza questa classe di dispositivi per i pannelli solari.","nl":"Gebruik deze apparaatklasse voor zonnepanelen.","sv":"Använd den här enhetsklassen för solpaneler."}}')},2788:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Oven","da":"Ovn","de":"Backofen","es":"Horno","fr":"Four","it":"Forno","ko":"오븐","nl":"Oven","no":"Stekeovn","pl":"Piekarnik","ru":"Духовой шкаф","sv":"Ugn","ar":"فرن"},"description":{"en":"Use this device class for ovens.","da":"Brug denne enhedsklasse til ovne.","de":"Verwenden Sie diese Geräteklasse für Backöfen.","es":"Utiliza esta clase de dispositivo para hornos.","fr":"Utilisez cette classe d\'appareils pour les fours.","it":"Utilizza questa classe di dispositivi per i forni.","ko":"이 디바이스 클래스는 오븐에 사용합니다.","nl":"Gebruik deze apparaatklasse voor ovens.","no":"Bruk denne enhetsklassen for stekeovner.","pl":"Tej klasy urządzeń należy używać w przypadku piekarników.","ru":"Используйте этот класс устройств для духовых шкафов.","sv":"Använd den här enhetsklassen för ugnar.","ar":"استخدم فئة الجهاز هذه للأفران."},"minCompatibility":"12.0.0"}')},2823:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Water meter","nl":"Watermeter","de":"Wasserzähler","fr":"Compteur d\'eau","it":"Contatore dell\'acqua","sv":"Vattenmätare","no":"Vannmåler","es":"Contador de agua","da":"Vandmåler","ru":"Счетчик воды","pl":"Licznik wody","ko":"물 사용량","ar":"عداد المياه"},"decimals":3,"min":0,"units":{"en":"m³","ru":"м³","ko":"m³","no":"m³","ar":"م³","da":"m³","de":"m³","es":"m³","fr":"m³","it":"m³","nl":"m³","pl":"m³","sv":"m³"},"chartType":"spline","desc":{"en":"Water usage in cubic meter (m³)","nl":"Water gebruik in kubieke meter (m³)","de":"Wasserverbrauch in Kubikmeter (m³)","fr":"Consommation d\'eau en mètres cubes (m³)","it":"Utilizzo di acqua in metri cubi (m³)","sv":"Vattenanvändning i kubikmeter (m³)","no":"Vannforbruk i kubikkmeter (m³)","es":"Consumo de agua en metros cúbicos (m³)","da":"Vandforbrug i kubikmeter (m³)","ru":"Использование воды в кубометрах (м³)","pl":"Zużycie wody w metrach sześciennych (m³)","ko":"수도 사용량 입방미터(m³)","ar":"استهلاك المياه بالمتر المكعب (m³)"},"color":"#0091FF","insights":true,"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"meter_water_changed","title":{"en":"The water meter changed","nl":"De watermeter is veranderd","de":"Der Wasserzähler hat sich geändert","fr":"Le compteur d\'eau a changé","it":"Il contatore dell\'acqua è cambiato","sv":"Vattenmätaren ändrades","no":"Vannmåleren ble endret","es":"El contador de agua ha cambiado","da":"Vandmåleren ændrede sig","ru":"Измерения счетчика воды изменились","pl":"Zmiana w liczniku wody","ko":"물 사용량이 변경되면","ar":"تغير عداد المياه"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":25}]}]}}')},2829:e=>{"use strict";e.exports={detect:function(e){return"BM"===e.toString("ascii",0,2)},calculate:function(e){return{width:e.readUInt32LE(18),height:Math.abs(e.readInt32LE(22))}}}},2843:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Pump setpoint","nl":"Setpoint van de pomp","da":"Pumpens indstillingspunkt","it":"Setpoint della pompa","ko":"펌프 설정값","pl":"Wartość zadana pompy","ru":"Уставка насоса","sv":"Börvärde för pump","es":"Valor de ajuste del bombeo","fr":"Point de réglage de la pompe","no":"Pumpens settepunkt","ar":"نقطة ضبط المضخة","de":"Sollwert der Pumpe"},"units":{"en":"%","nl":"%","da":"%","it":"%","ko":"%","pl":"%","ru":"%","sv":"%","es":"%","fr":" %","no":"%","ar":"%","de":"%"},"desc":{"en":"The pump setpoint in percentage.","nl":"Het setpoint van de pomp in procenten.","da":"Pumpens indstillingspunkt i procent.","it":"Il setpoint della pompa in percentuale.","ko":"백분율로 표현된 펌프 설정값입니다.","pl":"Wartość zadana pompy w procentach.","ru":"Уставка насоса в процентах.","sv":"Pumpens börvärde i procent.","es":"El valor de ajuste del bombeo en porcentaje.","fr":"Le point de réglage de la pompe en pourcentage.","no":"Pumpens settepunkt i prosent.","ar":"نقطة ضبط المضخة بالنسبة المئوية.","de":"Der Pumpensollwert in Prozent."},"insights":true,"chartType":"spline","min":0,"max":1,"decimals":2,"color":"#0091FF","getable":true,"setable":true,"uiComponent":"slider","$flow":{"triggers":[{"id":"pump_setpoint_changed","title":{"en":"The pump setpoint changed","nl":"Het setpoint van de pomp is veranderd","da":"Pumpens indstillingspunkt ændrede sig","it":"Il setpoint della pompa è cambiato","ko":"펌프 설정값이 변경되면","pl":"Zmieniła się wartość zadana pompy","ru":"Уставка насоса изменена","sv":"Pumpens börvärde ändrades","es":"El valor de ajuste del bombeo ha cambiado","fr":"Le point de réglage de la pompe a changé","no":"Pumpens settpunkt ble endret","ar":"تغيرت نقطة ضبط المضخة","de":"Der Sollwert der Pumpe wurde geändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":0.5}]}],"actions":[{"id":"set_pump_setpoint","title":{"en":"Set the pump setpoint","nl":"Het setpoint van de pomp instellen","da":"Indstil pumpens indstillingspunkt","it":"Imposta il setpoint della pompa","ko":"펌프 설정값 설정","pl":"Ustaw wartość zadaną pompy","ru":"Определить уставку насоса","sv":"Ställ in pumpens börvärde","es":"Configurar el valor de ajuste del bombeo","fr":"Définir le point de réglage de la pompe","no":"Angi pumpens settepunkt","ar":"ضبط نقطة ضبط المضخة","de":"Einstellen des Pumpensollwerts"},"args":[{"name":"pump_setpoint","type":"range","min":0,"max":1,"step":0.01,"value":0.5,"label":"%","labelMultiplier":100,"labelDecimals":0}]}]},"minCompatibility":"12.2.0"}')},2850:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Faucet","da":"Vandhane","de":"Wasserhahn","es":"Grifo","fr":"Robinet","it":"Rubinetto","ko":"수전","nl":"Kraan","no":"Kran","pl":"Kran","ru":"Смеситель","sv":"Kran","ar":"صنبور"},"description":{"en":"Use this device class for faucets.","da":"Brug denne enhedsklasse til vandhaner.","de":"Verwenden Sie diese Geräteklasse für Wasserhähne.","es":"Utilice esta clase de dispositivo para grifos.","fr":"Utilisez cette classe d\'appareils pour les robinets.","it":"Utilizza questa classe di dispositivi per i rubinetti.","ko":"이 디바이스 클래스는 수도 등의 수전에 사용합니다.","nl":"Gebruik deze apparaatklasse voor kranen.","no":"Bruk denne enhetsklassen for kraner.","pl":"Tej klasy urządzeń należy używać w przypadku kranów.","ru":"Используйте этот класс устройств для смесителей.","sv":"Använd den här enhetsklassen för kranar.","ar":"استخدم فئة الجهاز هذه لصنابير المياه."},"minCompatibility":"12.0.0"}')},2861:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Target power","nl":"Doelvermogen","de":"Zielleistung","fr":"Puissance cible","it":"Potenza target","sv":"Måleffekt","no":"Ønsket effekt","es":"Potencia objetivo","da":"Måleffekt","ru":"Целевая мощность","pl":"Moc docelowa","ko":"충전전력 제한","ar":"الطاقة المستهدفة"},"desc":{"en":"Target power in watt","nl":"Doelvermogen in watt","de":"Zielleistung in Watt","fr":"Puissance cible en watt","it":"Potenza target in watt","sv":"Måleffekt i watt","no":"Ønsket effekt i watt","es":"Potencia objetivo en vatios","da":"Måleffekt i watt","ru":"Целевая мощность в ваттах","pl":"Moc docelowa w watach","ko":"충전전력 제한(와트)","ar":"الطاقة المستهدفة بالواط"},"units":{"en":"W","nl":"W","de":"W","fr":"W","it":"W","sv":"W","no":"W","es":"W","da":"W","ru":"Вт","pl":"W","ko":"W","ar":"واط"},"insights":true,"chartType":"stepLine","min":-25000,"max":25000,"step":1,"decimals":0,"color":"#6DD400","getable":true,"setable":true,"uiComponent":"slider","minCompatibility":"12.13.0","$flow":{"triggers":[{"id":"target_power_changed","highlight":true,"title":{"en":"The target power changed","nl":"Het doelvermogen is veranderd","de":"Die Zielleistung hat sich geändert","fr":"La puissance cible a été modifiée","it":"La potenza target è cambiata","sv":"Måleffekten ändrades","no":"Ønsket effekt ble endret","es":"La potencia objetivo ha cambiado","da":"Måleffekten blev ændret","ru":"Целевая мощность изменена","pl":"Moc docelowa uległa zmianie","ko":"충전전력 제한이 변경되면","ar":"تغيرت الطاقة المستهدفة"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":2500}]}],"actions":[{"id":"target_power_set","highlight":true,"title":{"en":"Set the target power","nl":"Stel het doelvermogen in","de":"Zielleistung festlegen","fr":"Définir la puissance cible","it":"Imposta la potenza target","sv":"Ställ in måleffekten","no":"Innstill ønsket effekt","es":"Establecer la potencia objetivo","da":"Indstil måleffekten","ru":"Установить целевую мощность","pl":"Ustaw moc docelową","ko":"충전전력 제한 설정","ar":"ضبط الطاقة المستهدفة"},"hint":{"en":"This also switches the target power mode to Homey. For EV chargers, charging is automatically started or stopped.","nl":"Hiermee stel je de doelvermogensmodus in op Homey. Bij een EV-lader wordt het laden automatisch gestart of gestopt.","de":"Dies schaltet auch den Zielleistungsmodus auf Homey um. Bei EV-Ladegeräten wird der Ladevorgang automatisch gestartet oder gestoppt.","fr":"Cela règle également le mode de puissance cible sur Homey. Pour les bornes de recharge, la recharge démarre ou s\'arrête automatiquement.","it":"Questo imposta anche la modalità potenza target su Homey. Per i caricatori EV, la ricarica viene avviata o interrotta automaticamente.","sv":"Detta växlar även måleffektläget till Homey. För EV-laddare startas eller stoppas laddningen automatiskt.","no":"Dette bytter også ønsket effekt-modus til Homey. For elbilladere startes eller stoppes lading automatisk.","es":"Esto también cambia el modo de potencia objetivo a Homey. En el caso de cargadores de vehículos eléctricos, la carga se inicia o detiene automáticamente.","da":"Dette skifter også måleffekttilstanden til Homey. For EV-opladere startes eller stoppes opladningen automatisk.","ru":"Эта опция также переключает режим целевой мощности на Homey. Для зарядных станций зарядка автоматически запускается или останавливается.","pl":"To również przełącza tryb mocy docelowej na Homey. W przypadku ładowarek EV ładowanie jest automatycznie uruchamiane lub zatrzymywane.","ko":"이렇게 하면 충전전력 제한 모드도 Homey로 전환돼요. 전기차 충전기의 충전이 상황에 맞게 자동으로 시작되거나 중지되죠.","ar":"يؤدي هذا أيضًا إلى تبديل وضع الطاقة المستهدفة إلى Homey. بالنسبة لشواحن السيارات الكهربائية، يتم بدء الشحن أو إيقافه تلقائيًا."},"args":[{"name":"target_power","type":"range","min":-25000,"max":25000,"step":1,"label":"W","labelDecimals":0}]}]}}')},2869:e=>{"use strict";var t="CgBI";e.exports={detect:function(e){if("PNG\r\n\n"===e.toString("ascii",1,8)){var a=e.toString("ascii",12,16);if(a===t&&(a=e.toString("ascii",28,32)),"IHDR"!==a)throw new TypeError("invalid png");return!0}},calculate:function(e){return e.toString("ascii",12,16)===t?{width:e.readUInt32BE(32),height:e.readUInt32BE(36)}:{width:e.readUInt32BE(16),height:e.readUInt32BE(20)}}}},2897:(e,t,a)=>{"use strict";var r=a(8198);e.exports={$id:"https://github.com/ajv-validator/ajv/blob/master/lib/definition_schema.js",definitions:{simpleTypes:r.definitions.simpleTypes},type:"object",dependencies:{schema:["validate"],$data:["validate"],statements:["inline"],valid:{not:{required:["macro"]}}},properties:{type:r.properties.type,schema:{type:"boolean"},statements:{type:"boolean"},dependencies:{type:"array",items:{type:"string"}},metaSchema:{type:"object"},modifying:{type:"boolean"},valid:{type:"boolean"},$data:{type:"boolean"},async:{type:"boolean"},errors:{anyOf:[{type:"boolean"},{const:"full"}]}}}},2917:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Next","nl":"Volgende","de":"Weiter","fr":"Suivant","it":"Successivo","sv":"Nästa","no":"Neste","es":"Siguiente","da":"Næste","ru":"Дальше","pl":"Dalej","ko":"다음","ar":"التالي"},"type":"boolean","color":"#9033FC","getable":false,"setable":true,"uiComponent":"media","$flow":{"actions":[{"id":"next","title":{"en":"Next","nl":"Volgende","de":"Weiter","fr":"Suivant","it":"Successivo","sv":"Nästa","no":"Neste","es":"Siguiente","da":"Næste","ru":"Дальше","pl":"Dalej","ko":"다음","ar":"التالي"}}]}}')},2940:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Monetary value","nl":"Monetaire waarde","da":"Monetær værdi","it":"Valore monetario","ko":"화폐 가치","no":"Pengeverdi","pl":"Wartość pieniężna","ru":"Денежная стоимость","sv":"Monetärt värde","es":"Valor monetario","fr":"Valeur monétaire","ar":"القيمة المالية","de":"Monetärer Wert"},"units":{"en":"€","nl":"€","da":"€","it":"€","ko":"€","no":"€","pl":"€","ru":"€","sv":"€","es":"€","fr":" €","ar":"يورو","de":"€"},"desc":{"en":"The monetary value with a currency (default: €).","nl":"De monetaire waarde met een valuta (standaard: €).","da":"Den monetære værdi med en valuta (standard: €).","it":"Il valore monetario in una valuta (predefinita: €).","ko":"통화로 환산한 금전적 가치입니다(기본값: €).","no":"Pengeverdien med en valuta (standard: EUR).","pl":"Wartość pieniężna z walutą (domyślnie: €).","ru":"Денежная стоимость с указанием валюты (по умолчанию: евро).","sv":"Det monetära värdet med en valuta (standard: €).","es":"El valor monetario en una divisa (por omisión, €).","fr":"La valeur monétaire avec une devise (par défaut : €).","ar":"القيمة النقدية بعملة (الافتراضي: اليورو).","de":"Der monetäre Wert mit einer Währung (Standard: €)."},"insights":true,"chartType":"spline","decimals":2,"color":"#F7B500","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_monetary_changed","title":{"en":"The monetary value changed","nl":"De monetaire waarde is veranderd","da":"Den monetære værdi ændrede sig","it":"Il valore monetario è cambiato","ko":"화폐 가치가 변경되면","no":"Pengeverdien ble endret","pl":"Zmieniła się wartość pieniężna","ru":"Денежная стоимость изменилась","sv":"Det monetära värdet ändrades","es":"El valor monetario ha cambiado","fr":"La valeur monétaire a changé","ar":"تغيرت القيمة المالية","de":"Der monetäre Wert hat sich geändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":2}]}]},"minCompatibility":"12.2.0"}')},2963:()=>{},2974:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Amplifier","nl":"Versterker","de":"Verstärker","fr":"Amplificateur","it":"Amplificatore","sv":"Förstärkare","no":"Forsterker","es":"Amplificador","da":"Forstærker","ru":"Усилитель","pl":"Wzmacniacz","ko":"앰프","ar":"مضخم صوت"},"description":{"en":"Use this device class for audio amplifier devices.","de":"Nutze diese Geräteklasse für Audio-Verstärker-Geräte.","fr":"Utilisez cette classe d\'appareil pour les appareils amplificateurs audio.","it":"Utilizza questa classe di dispositivi per i dispositivi che amplificano l\'audio.","sv":"Använd den här enhetsklassne ljudförstärkarenheter.","no":"Bruk denne enhetsklassen for lydforsterkerenheter.","es":"Utiliza esta clase de dispositivo para los amplificadores de audio.","da":"Brug denne enhedsklasse til lydforstærkerenheder.","ru":"Используйте этот класс устройств для усилителей звука.","pl":"Użyj tej klasy urządzeń dla wzmacniaczy audio.","ko":"이 디바이스 클래스는 오디오 앰프 디바이스에 사용합니다.","ar":"استخدم فئة الجهاز هذه لأجهزة مضخم الصوت.","nl":"Gebruik deze apparaatklasse voor apparaten met audioversterkers."}}')},2977:()=>{},3027:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Bridge","da":"Bridge","de":"Bridge","es":"Bridge","fr":"Pont","it":"Bridge","ko":"브릿지","nl":"Bridge","no":"Bro","pl":"Most","ru":"Bridge","sv":"Brygga","ar":"جسر"},"description":{"en":"Use this device class for bridges or hubs that connect to other devices or ecosystems.","da":"Brug denne enhedsklasse til broer eller hubs, der forbinder til andre enheder eller økosystemer.","de":"Verwende diese Geräteklasse für Bridges oder Hubs, die mit anderen Geräten oder Ökosystemen verbunden sind.","es":"Utiliza esta clase de dispositivo para puentes o concentradores que se conectan a otros dispositivos o ecosistemas.","fr":"Utilisez cette classe d\'appareils pour les ponts ou les concentrateurs qui se connectent à d\'autres appareils ou écosystèmes.","it":"Usa questa classe di dispositivi per i bridge o gli hub che si connettono ad altri dispositivi o ecosistemi.","ko":"이 제품 클래스는 다른 제품 또는 에코시스템에 연결하는 브릿지 또는 허브에 사용하세요.","nl":"Gebruik deze apparaatklasse voor bridges of hubs die verbinding maken met andere apparaten of ecosystemen.","no":"Bruk denne enhetsklassen for broer eller huber som er koblet til andre enheter eller økosystemer.","pl":"Tej klasy urządzeń należy używać w przypadku mostków lub hubów, które łączą się z innymi urządzeniami lub ekosystemami.","ru":"Используйте этот класс устройств для мостов или концентраторов, которые подключаются к другим устройствам либо экосистемам.","sv":"Använd den här enhetsklassen för bryggor eller hubbar som ansluter till andra enheter eller ekosystem.","ar":"استخدم فئة الجهاز هذه للجسور أو المحاور التي تتصل بأجهزة أو أنظمة بيئية أخرى."},"minCompatibility":"12.5.0"}')},3032:e=>{"use strict";e.exports=function(e,t,a){var r=" ",i=e.level,n=e.dataLevel,s=e.schema[t],o=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+"/"+t,d=!e.opts.allErrors,u="data"+(n||""),m="errs__"+i,p=e.util.copy(e);p.level++;var c="valid"+p.level;if(r+="var "+m+" = errors;",e.opts.strictKeywords?"object"==typeof s&&Object.keys(s).length>0:e.util.schemaHasRules(s,e.RULES.all)){p.schema=s,p.schemaPath=o,p.errSchemaPath=l;var g="key"+i,h="idx"+i,v="i"+i,f="' + "+g+" + '",k="data"+(p.dataLevel=e.dataLevel+1),y="dataProperties"+i,b=e.opts.ownProperties,w=e.baseId;b&&(r+=" var "+y+" = undefined; "),r+=b?" "+y+" = "+y+" || Object.keys("+u+"); for (var "+h+"=0; "+h+"<"+y+".length; "+h+"++) { var "+g+" = "+y+"["+h+"]; ":" for (var "+g+" in "+u+") { ",r+=" var startErrs"+i+" = errors; ";var z=g,P=e.compositeRule;e.compositeRule=p.compositeRule=!0;var _=e.validate(p);p.baseId=w,e.util.varOccurences(_,k)<2?r+=" "+e.util.varReplace(_,k,z)+" ":r+=" var "+k+" = "+z+"; "+_+" ",e.compositeRule=p.compositeRule=P,r+=" if (!"+c+") { for (var "+v+"=startErrs"+i+"; "+v+"{"use strict";e.exports=JSON.parse('{"title":{"en":"Network Router","da":"Netværksrouter","de":"Netzwerk-Router","es":"Router","fr":"Routeur de réseau","it":"Router di rete","ko":"네트워크 라우터","nl":"Netwerkrouter","no":"Nettverksruter","pl":"Router sieciowy","ru":"Сетевой маршрутизатор","sv":"Nätverksrouter","ar":"جهاز توجيه الشبكة"},"description":{"en":"Use this device class for routers or modems.","da":"Brug denne enhedsklasse til routere eller modemer.","de":"Verwenden Sie diese Geräteklasse für Router oder Modems.","es":"Utiliza esta clase de dispositivo para routers o módems.","fr":"Utilisez cette classe d\'appareils pour les routeurs ou les modems.","it":"Utilizza questa classe di dispositivi per i router o i modem.","ko":"이 디바이스 클래스는 라우터 또는 모뎀에 사용합니다.","nl":"Gebruik deze apparaatklasse voor routers of modems.","no":"Bruk denne enhetsklassen for rutere eller modemer.","pl":"Tej klasy urządzeń należy używać w przypadku routerów lub modemów.","ru":"Используйте этот класс устройств для маршрутизаторов или модемов.","sv":"Använd den här enhetsklassen för routrar eller modem.","ar":"استخدم فئة الجهاز هذه لأجهزة التوجيه أو المودم."},"minCompatibility":"12.0.0"}')},3219:e=>{"use strict";e.exports={detect:function(e){return 542327876===e.readUInt32LE(0)},calculate:function(e){return{height:e.readUInt32LE(12),width:e.readUInt32LE(16)}}}},3272:(e,t,a)=>{"use strict";var r=a(8287).hp,i=a(1207),n=a(9411),s=a(9005),o=a(5812),l=524288;function d(e,t){var a=o(e,t);if(a in s){var r=s[a].calculate(e,t);if(!1!==r)return r.type=a,r}throw new TypeError("unsupported file type: "+a+" (file: "+t+")")}e.exports=function(e,t){if(r.isBuffer(e))return d(e);if("string"!=typeof e)throw new TypeError("invalid invocation");var a=n.resolve(e);if("function"!=typeof t){var s=function(e){var t=i.openSync(e,"r"),a=i.fstatSync(t).size,n=Math.min(a,l),s=new r(n);return i.readSync(t,s,0,n,0),i.closeSync(t),s}(a);return d(s,a)}!function(e,t){i.open(e,"r",(function(a,n){if(a)return t(a);i.fstat(n,(function(a,s){if(a)return t(a);var o=s.size;if(o<=0)return t(new Error("File size is not greater than 0 —— "+e));var d=Math.min(o,l),u=new r(d);i.read(n,u,0,d,0,(function(e){if(e)return t(e);i.close(n,(function(e){t(e,u)}))}))}))}))}(a,(function(e,r){if(e)return t(e);var i;try{i=d(r,a)}catch(t){e=t}t(e,i)}))},e.exports.types=Object.keys(s)},3278:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Refrigerator Mode","nl":"Koelkastmodus","da":"Køleskabstilstand","it":"Modalità frigorifero","ko":"냉장 모드","pl":"Tryb lodówki","ru":"Режим холодильника","sv":"Kylskåpsläge","es":"Modo del frigorífico","fr":"Mode du réfrigérateur","no":"Kjøleskapsmodus","ar":"وضع الثلاجة","de":"Kühlschrankmodus"},"desc":{"en":"The mode of the refrigerator.","nl":"De modus van de koelkast.","da":"Køleskabets tilstand.","it":"La modalità del frigorifero.","ko":"냉장고의 모드입니다.","pl":"Tryb pracy lodówki.","ru":"Режим работы холодильника.","sv":"Läget för kylskåpet.","es":"El modo del frigorífico.","fr":"Le mode de fonctionnement du réfrigérateur.","no":"Kjøleskapets modus.","ar":"وضع الثلاجة.","de":"Der Modus des Kühlschranks."},"values":[{"id":"normal","title":{"en":"Normal","nl":"Normaal","da":"Normal","it":"Normale","ko":"보통","pl":"Normalny","ru":"Нормальный","sv":"Normal","es":"Normal","fr":"Normal","no":"Normal","ar":"عادي","de":"Normal"}},{"id":"rapid_cooling","title":{"en":"Rapid Cooling","nl":"Snel koelen","da":"Hurtig afkøling","it":"Raffreddamento rapido","ko":"급속 냉장","pl":"Szybkie chłodzenie","ru":"Быстрое охлаждение","sv":"Snabbkylning","es":"Enfriado rápido","fr":"Refroidissement rapide","no":"Hurtigavkjøling","ar":"تبريد سريع","de":"Schnelles Abkühlen"}},{"id":"rapid_freezing","title":{"en":"Rapid Freezing","nl":"Snel vriezen","da":"Hurtig nedfrysning","it":"Congelamento rapido","ko":"급속 냉동","pl":"Szybkie zamrażanie","ru":"Быстрая заморозка","sv":"Snabbfrysning","es":"Congelación rápida","fr":"Congélation rapide","no":"Hurtigfrysing","ar":"تجميد سريع","de":"Schnelles Einfrieren"}}],"color":"#32C5FF","getable":true,"setable":true,"uiComponent":"picker","$flow":{"triggers":[{"id":"refrigerator_mode_changed","highlight":true,"title":{"en":"The refrigerator mode changed to","nl":"De koelkaststand is veranderd naar","da":"Køleskabstilstanden er ændret til","it":"La modalità del frigorifero è passata a","ko":"냉장고 모드가 다음으로 변경되면","pl":"Tryb lodówki zmienił się na","ru":"Режим работы холодильника изменен на:","sv":"Kylskåpsläget ändrades till","es":"El modo del frigorífico ha cambiado a","fr":"Le mode du réfrigérateur est passé à","no":"Kjøleskapsmodusen ble endret til","ar":"تم تغيير وضع الثلاجة إلى","de":"Der Kühlschrankmodus wurde geändert auf"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"refrigerator_mode_is","title":{"en":"The refrigerator mode !{{is|is not}}","nl":"De koelkaststand !{{is|is niet}}","da":"Køleskabstilstanden !{{er|er ikke}}","it":"La modalità del frigorifero !{{è|non è}}","ko":"냉장고 모드가 다음!{{과 같으면|이 아니면}}","pl":"Tryb lodówki !{{jest|nie jest}}","ru":"Режим работы холодильника !{{|не}}","sv":"Kylskåpsläget !{{är|är inte}}","es":"El modo del frigorífico !{{está|no está}}","fr":"Le mode du réfrigérateur !{{est|n\'est pas}}","no":"Kjøleskapsmodusen !{{er|er ikke}}","ar":"وضع الثلاجة !{{هو|ليس}}","de":"Der Kühlschrankmodus !{{ist|ist nicht}}"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}],"actions":[{"id":"set_refrigerator_mode","title":{"en":"Set the refrigerator mode to","nl":"Stel de koelkaststand in op","da":"Indstil køleskabstilstanden til","it":"Imposta la modalità del frigorifero su","ko":"냉장고 모드를 다음으로 설정","pl":"Ustaw tryb lodówki na","ru":"Установить режим работы холодильника на:","sv":"Ställ in kylskåpsläget på","es":"Ajustar el modo del frigorífico en","fr":"Définir le mode du réfrigérateur sur","no":"Sett kjøleskapsmodusen til","ar":"ضبط وضع الثلاجة على","de":"Stelle den Kühlschrankmodus auf"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.2.0"}')},3383:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Rain Intensity","nl":"Regenintensiteit","da":"Regnens intensitet","it":"Intensità della pioggia","ko":"강수 강도","pl":"Intensywność deszczu","ru":"Интенсивность дождя","sv":"Regnintensitet","es":"Intensidad de la lluvia","fr":"Intensité de la pluie","no":"Nedbørsmengde","ar":"شدة المطر","de":"Regenintensität"},"units":{"en":"mm/h","nl":"mm/u","da":"mm/t","it":"mm/h","ko":"mm/h","pl":"mm/h","ru":"мм/ч","sv":"mm/h","es":"mm/h","fr":"mm/h","no":"mm/t","ar":"مم/س","de":"mm/h"},"desc":{"en":"The rain intensity in millimeters per hour.","nl":"De regenintensiteit in millimeters per uur.","da":"Regnintensiteten i millimeter pr. time.","it":"L\'intensità della pioggia in millimetri all\'ora.","ko":"시간당 밀리미터 단위의 비 강도입니다.","pl":"Intensywność deszczu w milimetrach na godzinę.","ru":"Интенсивность дождя в миллиметрах в час.","sv":"Regnintensiteten i millimeter per timme.","es":"La intensidad de la lluvia en milímetros por hora.","fr":"L\'intensité de la pluie en millimètres par heure.","no":"Nedbørsmengden i millimeter per time.","ar":"شدة المطر بالمليمتر لكل ساعة.","de":"Die Regenintensität in Millimetern pro Stunde."},"insights":true,"chartType":"spline","decimals":2,"color":"#0091FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_rain_intensity_changed","title":{"en":"The rain intensity changed","nl":"De regenintensiteit is veranderd","da":"Regnens intensitet ændrede sig","it":"L\'intensità della pioggia è cambiata","ko":"강수 강도가 변경되면","pl":"Zmieniła się Intensywność deszczu","ru":"Интенсивность дождя изменилась","sv":"Regnintensiteten förändrades","es":"La intensidad de la lluvia ha cambiado","fr":"L\'intensité de la pluie a changé","no":"Nedbørsmengden ble endret","ar":"تغيرت شدة المطر","de":"Die Regenintensität hat sich geändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":2}]}]},"minCompatibility":"12.2.0"}')},3387:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Luminance","nl":"Helderheid","de":"Helligkeit","fr":"Luminance","it":"Luminanza","sv":"Luminans","no":"Luminans","es":"Luminancia","da":"Luminans","ru":"Яркость","pl":"Luminacja","ko":"조도","ar":"السطوع"},"units":{"en":"lx","ru":"лк","ko":"lx","no":"lx","ar":"lx","da":"lx","de":"lx","es":"lx","fr":"lx","it":"lx","nl":"lx","pl":"lx","sv":"lx"},"insights":true,"desc":{"en":"Luminance in Lux (lx)","nl":"Helderheid in Lux (lx)","de":"Leuchtkraft in Lux (lx)","fr":"Luminance en Lux (lx)","it":"Luminanza in Lux (lx)","sv":"Luminans i Lux (lx)","no":"Luminans i Lux (lx)","es":"Luminancia en Lux (lx)","da":"Luminans i Lux (lx)","ru":"Яркость в люксах (лк)","pl":"Luminacja w luksach (lx)","ko":"휘도 럭스(lx)","ar":"السطوع باللوكس (lx)"},"chartType":"spline","decimals":2,"color":"#F7B500","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_luminance_changed","highlight":true,"title":{"en":"The luminance changed","nl":"De helderheid is veranderd","de":"Die Helligkeit hat sich geändert","fr":"La luminance a changé","it":"La luminanza è cambiata","sv":"Luminansen ändrades","no":"Luminansen ble endret","es":"La luminancia ha cambiado","da":"Luminansen ændrede sig","ru":"Яркость изменилась","pl":"Zmiana luminacji","ko":"조도가 변경되면","ar":"تغير السطوع"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":100}]}]}}')},3392:e=>{"use strict";var t=/]+[^>]*>/,a=/]+>/,r=/\bwidth=(['"])([^%]+?)\1/,i=/\bheight=(['"])([^%]+?)\1/,n=/\bviewBox=(['"])(.+?)\1/;function s(e){var t=e.split(" ");return{width:parseInt(t[2],10),height:parseInt(t[3],10)}}e.exports={detect:function(e){return t.test(e)},calculate:function(e){var t=e.toString("utf8").match(a);if(t){var o=function(e){var t=e.match(r),a=e.match(i),o=e.match(n);return{width:t&&parseInt(t[2],10),height:a&&parseInt(a[2],10),viewbox:o&&s(o[2])}}(t[0]);if(o.width&&o.height)return function(e){return{width:e.width,height:e.height}}(o);if(o.viewbox)return function(e){var t=e.viewbox.width/e.viewbox.height;return e.width?{width:e.width,height:Math.floor(e.width/t)}:e.height?{width:Math.floor(e.height*t),height:e.height}:{width:e.viewbox.width,height:e.viewbox.height}}(o)}throw new TypeError("invalid svg")}}},3415:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Charging state","nl":"Oplaadstatus","da":"Opladningstilstand","it":"Stato di carica","ko":"전기차 충전 상태","pl":"Stan ładowania","ru":"Состояние зарядки","sv":"Laddningsstatus","es":"Estado de carga","fr":"État de charge","no":"Ladestatus","de":"Ladezustand","ar":"حالة الشحن"},"desc":{"en":"The current charging state of the battery.","nl":"De huidige oplaadstatus van de batterij.","da":"Batteriets aktuelle opladningstilstand.","it":"Lo stato di carica attuale della batteria.","ko":"배터리의 현재 충전 상태입니다.","pl":"Bieżący stan ładowania akumulatora.","ru":"Текущее состояние зарядки аккумулятора.","sv":"Batteriets aktuella laddningsstatus.","es":"El estado de carga actual de la batería.","fr":"L\'état de charge actuel de la batterie.","no":"Batteriets nåværende ladestatus.","de":"Der aktuelle Ladezustand des Akkus.","ar":"حالة الشحن الحالية للبطارية."},"values":[{"id":"plugged_in_charging","title":{"en":"Charging","nl":"Opladen","da":"Oplader","it":"In ricarica","ko":"충전 중","pl":"Ładowanie\\n","ru":"Заряжается","sv":"Laddning","es":"Carga","fr":"Charge en cours","no":"Lader","de":"Wird geladen","ar":"قيد الشحن"}},{"id":"plugged_in_discharging","title":{"en":"Discharging","nl":"Ontladen","da":"Aflader","it":"Si sta scaricando","ko":"외부 전원 공급 중","pl":"Rozładowywanie","ru":"Разряжается","sv":"Urladdning","es":"Descarga","fr":"Décharge en cours","no":"Lades ut","de":"Wird entladen","ar":"قيد التفريغ"}},{"id":"plugged_in_paused","title":{"en":"Paused","da":"På pause","it":"In pausa","ko":"일시 중지됨","nl":"Gepauzeerd","pl":"Wstrzymane","ru":"На паузе","sv":"Pausad","es":"En pausa","fr":"En pause","no":"Satt på pause","de":"Pausiert","ar":"متوقف مؤقتًا"}},{"id":"plugged_in","title":{"en":"Plugged in","nl":"Aangesloten","da":"Tilsluttet","it":"Cavo collegato","ko":"충전구 연결됨","pl":"Podłączone do gniazdka","ru":"Подключено","sv":"Ansluten","es":"Enchufado","fr":"Branché","no":"Tilkoblet","de":"Eingesteckt","ar":"موصول"}},{"id":"plugged_out","title":{"en":"Not plugged in","nl":"Niet aangesloten","da":"Ikke tilsluttet","it":"Cavo non collegato","ko":"충전구 연결되지 않음","pl":"Niepodłączone do gniazdka","ru":"Не подключено","sv":"Inte ansluten","es":"No enchufado","fr":"Non branché","no":"Ikke tilkoblet","de":"Nicht eingesteckt","ar":"غير موصول"}}],"color":"#6DD400","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"ev_charging_state_changed","title":{"en":"The battery charging state changed","nl":"De oplaadstatus van de batterij is veranderd","da":"Batteriets opladningstilstand er ændret","it":"Lo stato di carica della batteria è cambiato","ko":"전기차 충전 상태가 변경되면","pl":"Stan ładowania akumulatora uległ zmianie","ru":"Состояние зарядки батареи изменилось","sv":"Batteriets laddningsstatus har ändrats","es":"El estado de carga de la batería ha cambiado","fr":"L\'état de charge de la batterie a changé","no":"Batteriladestatusen ble endret","de":"Der Ladezustand des Akkus hat sich geändert","ar":"تم تغيير حالة شحن البطارية"},"args":[{"name":"state","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"ev_charging_state_is","title":{"en":"The battery charging state !{{is|is not}}","nl":"De oplaadstatus van de batterij !{{is|is niet}}","da":"Batteriets opladningstilstand !{{er|er ikke}}","it":"Lo stato di carica della batteria !{{è|non è}}","ko":"전기차 충전 상태가 다음!{{과 같으면|이 아니면}}","pl":"Stan ładowania baterii !{{to|to nie}}","ru":"Состояние зарядки аккумулятора !{{|не}}","sv":"Batteriets laddningsstatus !{{är|är inte}}","es":"El estado de carga de la batería !{{es|no es}}","fr":"L\'état de charge de la batterie !{{est|n\'est pas}}","no":"Batteriladestatusen !{{er|er ikke}}","de":"Der Ladezustand der Batterie !{{ist|ist nicht}}","ar":"حالة شحن البطارية !{{هي|ليست}}"},"args":[{"name":"state","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.4.5"}')},3420:e=>{"use strict";e.exports=JSON.parse('{"$schema":"http://json-schema.org/draft-07/schema#","$id":"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#","description":"Meta-schema for $data reference (JSON Schema extension proposal)","type":"object","required":["$data"],"properties":{"$data":{"type":"string","anyOf":[{"format":"relative-json-pointer"},{"format":"json-pointer"}]}},"additionalProperties":false}')},3454:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Home Security","nl":"Huisbeveiliging","de":"Heim-Sicherheit","fr":"Sécurité de la maison","it":"Sicurezza della casa","sv":"Hemsäkerhet","no":"Hjemmesikkerhet","es":"Seguridad de la casa","da":"Hjemmesikkerhed","ru":"Домашняя безопасность","pl":"Bezpieczeństwo domowe","ko":"홈 시큐리티","ar":"أمن المنزل"},"description":{"en":"Use this device class for home alarm systems.","de":"Nutze diese Geräteklasse für Heim-Alarm-Systeme.","fr":"Utilisez cette classe d\'appareil pour les systèmes d\'alarme de maison.","it":"Utilizza questa classe di dispositivi per i sistemi di allarme di casa.","sv":"Använd den här enhetsklassen för hemlarmsystem.","no":"Bruk denne enhetsklassen for hjemmealarmsystemer.","es":"Utiliza esta clase de dispositivo para los sistemas de alarmas de la casa.","da":"Brug denne enhedsklasse til alarmsystemer til hjemmet.","ru":"Используйте этот класс устройств для домашних систем сигнализации.","pl":"Użyj tej klasy urządzeń dla alarmów domowych.","ko":"이 디바이스 클래스는 가정용 알람 시스템에 사용합니다.","ar":"استخدم فئة الجهاز هذه لأنظمة إنذار المنزل.","nl":"Gebruik deze apparaatklasse voor huisalarmsystemen."}}')},3456:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Maximum target humidity","nl":"Maximale gewenste vochtigheid","da":"Maksimal målfugtighed","it":"Umidità target massima","ko":"최대 희망 습도","pl":"Maksymalna docelowa wilgotność","ru":"Максимальная заданная влажность","sv":"Maximal målfuktighet","es":"Humedad máxima deseada","fr":"Humidité cible maximale","no":"Maksimum ønsket fuktighet","ar":"الحد الأقصى للرطوبة المستهدفة","de":"Maximale Zielfeuchtigkeit"},"units":{"en":"%","nl":"%","da":"%","it":"%","ko":"%","pl":"%","ru":"%","sv":"%","es":"%","fr":" %","no":"%","ar":"%","de":"%"},"desc":{"en":"The high end of the target humidity level in percent.","nl":"De hoogste waarde van het gewenste vochtigheidsniveau in procenten.","da":"Den høje ende af den ønskede luftfugtighed i procent.","it":"Il massimo livello di umidità target in percentuale.","ko":"백분율로 표현한 목표 습도의 최대치입니다.","pl":"Górna granica docelowego poziomu wilgotności w procentach.","ru":"Верхний предел заданного уровня влажности в процентах.","sv":"Den övre delen av den önskade luftfuktighetsnivån i procent.","es":"El valor superior del nivel de humedad deseada en porcentaje.","fr":"Le niveau maximal de l\'humidité cible en pourcentage.","no":"Maksimum ønsket fuktighetsnivå i prosent.","ar":"الحد الأعلى لمستوى الرطوبة المستهدف بالنسبة المئوية.","de":"Das obere Ende der angestrebten Feuchtigkeit in Prozent."},"insights":true,"chartType":"stepLine","decimals":2,"min":0,"max":1,"color":"#0091FF","getable":true,"setable":true,"uiComponent":"slider","$flow":{"triggers":[{"id":"target_humidity_max_changed","title":{"en":"The maximum target humidity has changed","nl":"De maximale gewenste vochtigheid is veranderd","da":"Den maksimale målfugtighed er ændret","it":"L\'umidità target massima è cambiata","ko":"최대 희망 습도가 변경되면","no":"Maksimum ønsket fuktighet er endret","pl":"Zmieniła się maksymalna docelowa wilgotność","ru":"Максимальная заданная влажность изменена","sv":"Den högsta önskade luftfuktigheten har ändrats","es":"La humedad máxima deseada ha cambiado","fr":"L\'humidité cible maximale a changé","ar":"تغير الحد الأقصى للرطوبة المستهدفة","de":"Die maximale Zielfeuchtigkeit wurde geändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":0.5}]}],"actions":[{"id":"set_target_humidity_max","title":{"en":"Set the maximum target humidity","nl":"De maximale gewenste vochtigheid instellen","da":"Indstil den maksimale målfugtighed","it":"Imposta l\'umidità target massima","ko":"최대 희망 습도 설정","pl":"Ustaw maksymalną docelową wilgotność","ru":"Установить максимальную заданную влажность","sv":"Ställ in den högsta önskade luftfuktigheten","es":"Ajustar la humedad máxima deseada","fr":"Définir l\'humidité cible maximale","no":"Angi maksimum ønsket fuktighet","ar":"ضبط الحد الأقصى للرطوبة المستهدفة","de":"Einstellung der maximalen Zielfeuchtigkeit"},"args":[{"name":"target_humidity_max","type":"range","min":0,"max":1,"step":0.01,"value":0.5,"label":"%","labelMultiplier":100,"labelDecimals":0}]}]},"minCompatibility":"12.2.0"}')},3532:(e,t,a)=>{"use strict";const r=a(8019);let i;class n{constructor(e){this._capability=e}debug(...e){this._debug&&console.log("[dbg]",...e)}async validate({debug:e=!1}={}){this._debug=e,this.debug("Validating capability");const t=n.getJSONSchema(),a=new r({async:!0}).compile(t);if(!1===await a(this._capability))throw new Error(JSON.stringify(a.errors,!1,4)||"Invalid Capability");this.debug("Validated successfully")}static getJSONSchema(){return a(7224)}static getCapabilities(){if(i)return i;const e=a(1329);return i=e.reduce(((e,t)=>(e[t]=a(6081)(`./${t}.json`),e[t]=n._composeCapability(t,e[t]),e)),{}),i}static getCapability(e){const t=n.getCapabilities()[e];if(!t)throw new Error("invalid_capability");return t}static hasCapability(e){return!!this.getCapabilities()[e]}static _composeCapability(e,t){return t.flow&&console.warn(`Warning: using \`capability.flow\` (${e}), expected a \`capability.$flow\``),t.$flow&&["triggers","conditions","actions"].forEach((a=>{const r=t.$flow[a];Array.isArray(r)&&r.forEach((a=>{Array.isArray(a.args)&&a.args.forEach((e=>{"dropdown"===e.type&&"$values"===e.values&&(e.values=t.values,e.meta=e.meta||{},e.meta.$values=!0)})),Array.isArray(a.tokens)&&a.tokens.forEach((a=>{"$id"===a.name&&(a.name=e),"$type"===a.type&&(a.type=t.type),"$title"===a.title&&(a.title=t.title)}))}))})),t}static isInstanceOfId(e,t){return t===e||e.startsWith(`${t}.`)}static getBaseId(e){return e.split(".")[0]}}e.exports=n},3554:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Air Fryer","da":"Airfryer","de":"Heißluftfritteuse","es":"Freidora de aire","fr":"Friteuse à air","it":"Friggitrice ad aria","ko":"에어프라이어","nl":"Airfryer","no":"Airfryer","pl":"Frytkownica beztłuszczowa","ru":"Аэрогриль","sv":"Luftfritös","ar":"مقلاة هوائية"},"description":{"en":"Use this device class for air fryers.","da":"Brug denne enhedsklasse til airfryers.","de":"Verwenden Sie diese Geräteklasse für Heißluftfritteusen.","es":"Utiliza esta clase de dispositivo para freidoras de aire.","fr":"Utilisez cette classe d\'appareils pour les friteuses à air.","it":"Utilizza questa classe di dispositivi per le friggitrici ad aria.","ko":"이 디바이스 클래스는 에어프라이어에 사용합니다.","nl":"Gebruik deze apparaatklasse voor airfryers.","no":"Bruk denne enhetsklassen for airfryere.","pl":"Ta klasa urządzeń jest przeznaczona dla frytkownic beztłuszczowych.","ru":"Используйте этот класс устройств для аэрогрилей.","sv":"Använd den här enhetsklassen för luftfritöser.","ar":"استخدم فئة الجهاز هذه للمقالي الهوائية."},"minCompatibility":"12.0.0"}')},3573:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Heater Operation Mode","nl":"Verwarmingsmodus","da":"Varmeapparatets driftstilstand","it":"Modalità di funzionamento del calorifero","ko":"히터 운전 모드","pl":"Tryb grzania","ru":"Режим работы обогревателя","sv":"Driftläge för värmare","es":"Modo de calefacción","fr":"Mode de fonctionnement du chauffage","no":"Driftsmodus for varmeovn","ar":"وضع تشغيل المدفأة","de":"Betriebsmodus des Heizgeräts"},"values":[{"id":"eco","title":{"en":"Eco","nl":"Eco","da":"Øko","it":"Eco","ko":"절약","pl":"Eko","ru":"Эко","sv":"Eco","es":"Eco","fr":"Économique","no":"Øko","ar":"اقتصادي","de":"Öko"}},{"id":"electric","title":{"en":"Electric","nl":"Elektrisch","da":"Elektrisk","it":"Elettrico","ko":"전기","pl":"Elektryczne","ru":"Электричество","sv":"Elektrisk","es":"Eléctrico","fr":"Électrique","no":"Elektrisk","ar":"كهربائي","de":"Elektrisch"}},{"id":"performance","title":{"en":"Performance","nl":"Prestatie","da":"Præstation","it":"Prestazioni","ko":"고성능","pl":"Komfort","ru":"Высокопроизводительный","sv":"Prestanda","es":"Rendimiento","fr":"Performance","no":"Ytelse","ar":"الأداء","de":"Leistung"}},{"id":"high_demand","title":{"en":"High Demand","nl":"Hoog verbruik","da":"Høj efterspørgsel","it":"Domanda elevata","ko":"고수요","pl":"Wysokie zapotrzebowanie","ru":"Интенсивный","sv":"Hög efterfrågan","es":"Alta demanda","fr":"Forte demande","no":"Høy etterspørsel","ar":"طلب عالٍ","de":"Hoher Bedarf"}},{"id":"heat_pump","title":{"en":"Heat Pump","nl":"Warmtepomp","da":"Varmepumpe","it":"Pompa di calore","ko":"히트 펌프","no":"Varmepumpe","pl":"Pompa ciepła","ru":"Тепловой насос","sv":"Värmepump","es":"Bomba de calor","fr":"Pompe à chaleur","ar":"مضخة حرارية","de":"Wärmepumpe"}},{"id":"gas","title":{"en":"Gas","nl":"Gas","da":"Gas","it":"Gas","ko":"가스","no":"Gass","pl":"Gazowe","ru":"Газ","sv":"Gas","es":"Gas","fr":"Gaz","ar":"غاز","de":"Gas"}},{"id":"off","title":{"en":"Off","nl":"Uit","da":"Fra","it":"Off","ko":"꺼짐","no":"Av","pl":"Wył","ru":"Выключен","sv":"Av","es":"Desactivado","fr":"Désactivé","ar":"إيقاف","de":"Aus"}}],"color":"#FA6400","getable":true,"setable":true,"uiComponent":"picker","$flow":{"triggers":[{"id":"heater_operation_mode_changed","title":{"en":"The heater operation mode changed to","nl":"De verwarmingsstand is veranderd naar","da":"Varmeapparatets driftstilstand er ændret til","it":"La modalità di funzionamento del calorifero è passata a","ko":"히터 작동 모드가 다음으로 변경되면","no":"Driftsmodus for varmeovnen ble endret til","pl":"Tryb pracy grzejnika zmienił się na","ru":"Режим работы обогревателя изменен на:","sv":"Värmarens driftläge har ändrats till","es":"El modo de calefacción ha cambiado a","fr":"Le mode de fonctionnement du chauffage est passé à","ar":"تم تغيير وضع تشغيل المدفأة إلى","de":"Der Betriebsmodus der Heizung wurde geändert auf"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"heater_operation_mode_is","title":{"en":"The heater operation mode !{{is|is not}}","nl":"De verwarmingsmodus !{{is|is niet}}","da":"Varmeapparatets driftstilstand !{{er|er ikke}}","it":"La modalità di funzionamento del calorifero !{{è|non è}}","ko":"히터 작동 모드가 다음!{{이면|이 아니면}}","pl":"Tryb pracy ogrzewacza !{{jest|nie jest}}","ru":"Режим работы обогревателя !{{|не}}","sv":"Driftläge för värmaren !{{är|är inte}}","es":"El modo de calefacción !{{está|no está}}","fr":"Le mode de fonctionnement du chauffage !{{est|n\'est pas}}","no":"Varmeovnens driftsmodus !{{er|er ikke}}","ar":"وضع تشغيل المدفأة !{{هو|ليس}}","de":"Der Betriebsmodus des Heizgeräts !{{ist|ist nicht}}"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}],"actions":[{"id":"set_heater_operation_mode","title":{"en":"Set the heater operation mode to","nl":"Stel de verwarmingsstand in op","da":"Indstil varmeapparatets driftstilstand til","it":"Imposta la modalità di funzionamento del calorifero su","ko":"히터 작동 모드를 다음으로 설정","pl":"Ustaw tryb grzania na","ru":"Установить режим работы обогревателя на","sv":"Ställ in värmarens driftläge på","es":"Ajustar el modo de calefacción en","fr":"Définir le mode de fonctionnement du chauffage sur","no":"Sett varmeovnens driftsmodus til","ar":"ضبط وضع تشغيل المدفأة على","de":"Stelle den Betriebsmodus des Heizgeräts auf"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.2.0"}')},3597:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"CO","nl":"CO","de":"CO","fr":"CO","it":"CO","sv":"CO","no":"CO","da":"CO","ru":"CO","pl":"CO","ko":"일산화탄소(CO)","ar":"أول أكسيد الكربون","es":"CO"},"units":{"en":"ppm","ru":"ч./млн.","ko":"ppm","no":"ppm","pl":"ppm","ar":"جزء في المليون","da":"ppm","de":"ppm","es":"ppm","fr":"ppm","it":"ppm","nl":"ppm","sv":"ppm"},"insights":true,"desc":{"en":"CO in Parts-per-million (ppm)","nl":"CO deeltjes per miljoen (ppm)","de":"CO in Anteile pro Million (ppm)","fr":"Niveau de CO en parts par million (ppm)","it":"Livello di CO in parti per milione (ppm)","sv":"CO i partiklar-per-miljon (ppm)","no":"CO i partikler per million (ppm)","es":"CO en partes por millón (ppm)","da":"CO i partikler-per-million (ppm)","ru":"CO в частицах на миллион (ч./млн.)","pl":"Stężenie tlenku węgla w części na milion (ppm)","ko":"CO 백만분의일 농도(ppm)","ar":"أول أكسيد الكربون بجزء في المليون (ppm)"},"chartType":"spline","decimals":2,"color":"#E02020","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_co_changed","title":{"en":"The CO-level changed","nl":"Het CO-niveau is veranderd","de":"Der CO-Gehalt hat sich geändert","fr":"Le niveau de CO a changé","it":"Il livello di CO è cambiato","sv":"CO-nivån ändrades","no":"CO-nivået ble endret","es":"El nivel de CO ha cambiado","da":"CO-niveauet har ændret sig","ru":"CO-уровень изменен","pl":"Zmienił się poziom CO","ko":"일산화탄소(CO) 수준이 변경되면","ar":"تغير مستوى أول أكسيد الكربون"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":20}]}]}}')},3598:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Pump mode","nl":"Pompmodus","da":"Pumpetilstand","it":"Modalità pompa","ko":"펌프 모드","pl":"Tryb pompy","ru":"Режим работы насоса","sv":"Pumpläge","es":"Modo bombeo","fr":"Mode de pompage","no":"Pumpemodus","ar":"وضع المضخة","de":"Pumpenmodus"},"desc":{"en":"Used to set which setpoint regulates the pump.","nl":"Wordt gebruikt om in te stellen welk setpoint de pomp regelt.","da":"Bruges til at indstille, hvilket indstillingspunkt der regulerer pumpen.","it":"Serve per impostare il setpoint che regola la pompa.","ko":"펌프를 조절하는 설정값을 설정하는 데 사용됩니다.","pl":"Służy do ustawiania wartości zadanej regulującej pompę.","ru":"Используется для выбора уставки, регулирующей работу насоса.","sv":"Används för att ställa in vilket börvärde som reglerar pumpen.","es":"Sirve para establecer qué valor regula el bombeo.","fr":"Permet de définir le point de réglage qui régule la pompe.","no":"Brukes til å innstille hvilket settepunkt som skal regulere pumpen.","ar":"يُستخدم لضبط نقطة الضبط التي تنظم المضخة.","de":"Zum Einstellen des Sollwerts, der die Pumpe regelt."},"values":[{"id":"constant_pressure","title":{"en":"Constant Pressure","nl":"Constante druk","da":"Konstant tryk","it":"Pressione costante","ko":"일정 압력","pl":"Stałe ciśnienie","ru":"Постоянное давление","sv":"Konstant tryck","es":"Presión constante","fr":"Pression constante","no":"Konstant trykk","ar":"ضغط ثابت","de":"Konstanter Druck"}},{"id":"compensated_pressure","title":{"en":"Compensated Pressure","nl":"Gecompenseerde druk","da":"Kompenseret tryk","it":"Pressione compensata","ko":"보상 압력","pl":"Kompensowane ciśnienie","ru":"Компенсированное давление","sv":"Kompenserat tryck","es":"Presión compensada","fr":"Pression compensée","no":"Kompensert trykk","ar":"ضغط معوّض","de":"Kompensierter Druck"}},{"id":"constant_flow","title":{"en":"Constant Flow","nl":"Constante Flow","da":"Konstant Flow","it":"Flow costante","ko":"일정 유량","pl":"Stały przepływ","ru":"Постоянный Flow","sv":"Konstant Flow","es":"Flow constante","fr":"Flow constant","no":"Konstant Flow","ar":"Flow ثابت","de":"Konstanter Flow"}},{"id":"constant_speed","title":{"en":"Constant Speed","nl":"Constante snelheid","da":"Konstant hastighed","it":"Velocità costante","ko":"일정 속도","pl":"Stała prędkość","ru":"Постоянная скорость","sv":"Konstant hastighet","es":"Velocidad constante","fr":"Vitesse constante","no":"Konstant hastighet","ar":"سرعة ثابتة","de":"Konstante Geschwindigkeit"}},{"id":"constant_temperature","title":{"en":"Constant Temperature","nl":"Constante temperatuur","da":"Konstant temperatur","it":"Temperatura costante","ko":"일정 온도","pl":"Stała temperatura","ru":"Постоянная температура","sv":"Konstant temperatur","es":"Temperatura constante","fr":"Température constante","no":"Konstant temperatur","ar":"درجة حرارة ثابتة","de":"Konstante Temperatur"}},{"id":"automatic","title":{"en":"Automatic","nl":"Automatisch","da":"Automatisk","es":"Automático","fr":"Automatique","it":"Automatico","ko":"자동","no":"Automatisk","pl":"Automatyczny","ru":"Автоматический","sv":"Automatisk","ar":"تلقائي","de":"Automatisch"}}],"color":"#0091FF","getable":true,"setable":true,"uiComponent":"picker","$flow":{"triggers":[{"id":"pump_mode_changed","highlight":true,"title":{"en":"The pump mode changed to","nl":"De pompmodus is veranderd naar","da":"Pumpetilstanden blev ændret til","it":"La modalità della pompa è passata a","ko":"펌프 모드가 다음으로 변경되면","pl":"Tryb pompy zmienił się na","ru":"Режим работы насоса изменен на","sv":"Pumpläget ändrades till","es":"El modo bombeo ha cambiado a","fr":"Le mode de pompage est passé à","no":"Pumpemodus ble endret til","ar":"تغير وضع المضخة إلى","de":"Der Pumpenmodus wurde geändert auf"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"pump_mode_is","title":{"en":"The pump mode !{{is|is not}}","nl":"De pompmodus !{{is|is niet}}","da":"Pumpetilstanden !{{er|er ikke}}","it":"La modalità pompa !{{è|non è}}","ko":"펌프 모드가 다음!{{이면|이 아니면}}","pl":"Tryb pompy !{{jest|nie jest}}","ru":"Режим работы насоса !{{|не}}","sv":"Pumpens läge !{{är|är inte}}","es":"El modo bombeo !{{es|no es}}","fr":"Le mode de pompage !{{est|n\'est pas}}","no":"Pumpemodusen !{{er|er ikke}}","ar":"وضع المضخة !{{هو|ليس}}","de":"Der Pumpenmodus !{{ist|ist nicht}}"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}],"actions":[{"id":"set_pump_mode","title":{"en":"Set the pump mode to","nl":"Stel de pompstand in op","da":"Indstil pumpetilstanden til","it":"Imposta la modalità della pompa su","ko":"펌프 모드를 다음으로 설정","pl":"Ustaw tryb pompy na","ru":"Установить режим работы насоса на:","sv":"Ställ in pumpläget till","es":"Ajustar el modo bombeo en","fr":"Définir le mode de pompage sur","no":"Sett pumpemodusen til","ar":"ضبط وضع المضخة على","de":"Stelle den Pumpenmodus auf"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.2.0"}')},3635:(e,t,a)=>{"use strict";var r=/^[a-z_$][a-z0-9_$-]*$/i,i=a(7992),n=a(2897);e.exports={add:function(e,t){var a=this.RULES;if(a.keywords[e])throw new Error("Keyword "+e+" is already defined");if(!r.test(e))throw new Error("Keyword "+e+" is not a valid identifier");if(t){this.validateKeyword(t,!0);var n=t.type;if(Array.isArray(n))for(var s=0;s{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Wind strength","nl":"Windsnelheid","de":"Windstärke","fr":"Force du vent","it":"Forza del vento","sv":"Vindstyrka","no":"Vindstyrke","es":"Fuerza del viento","da":"Vindstyrke","ru":"Сила ветра","pl":"Siła wiatru","ko":"풍속","ar":"شدة الرياح"},"units":{"en":"km/h","ru":"км/ч","ko":"km/h","no":"km/t","ar":"كم/ساعة","da":"km/t","de":"km/h","es":"km/h","fr":"km/h","it":"km/h","nl":"km/u","pl":"km/h","sv":"km/h"},"desc":{"en":"Wind Strength in kilometer per hour (km/h)","nl":"Windsnelheid in kilometer per uur (km/u)","de":"Windstärke in Kilometer pro Stunde (km/h)","fr":"Force du vent en kilomètres par heure (km/h)","it":"Forza del vento in chilometri orari (km/h)","sv":"Vindstyrka i kilometer per timme (km/h)","no":"Vindstyrke i kilometer per time (km/t)","es":"La fuerza del viento en kilómetros por hora (km/h)","da":"Vindstyrke i kilometer i timen (km/t)","ru":"Сила ветра в км в час (км/ч)","pl":"Siła wiatru w kilometrach na godzinę (km/h)","ko":"풍속 시간당 킬로미터(km/h)","ar":"شدة الرياح بالكيلومتر في الساعة (km/h)"},"insights":true,"chartType":"spline","decimals":2,"color":"#32C5FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_wind_strength_changed","title":{"en":"The wind strength changed","nl":"De windkracht is veranderd","de":"Die Windstärke hat sich geändert","fr":"La force du vent a changé","it":"La forza del vento è cambiata","sv":"Vindstyrkan ändrades","no":"Vindstyrken ble endret","es":"La fuerza del viento ha cambiado","da":"Vindstyrken ændrede sig","ru":"Сила ветра изменилась","pl":"Zmiana siły wiatru","ko":"풍속이 변경되면","ar":"تغيرت شدة الرياح"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":15}]}]}}')},3672:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Remote","nl":"Afstandsbediening","de":"Fernbedienung","fr":"Télécommande","it":"Telecomando","sv":"Fjärrkontroll","no":"Fjernkontroll","es":"Mando a distancia","da":"Fjernbetjening","ru":"Пульт","pl":"Pilot","ko":"리모컨","ar":"جهاز تحكم عن بعد"},"description":{"en":"Use this device class for (TV/Sunblind/Keyfob etc.) remotes.","de":"Nutze diese Geräteklasse für (TV/Jalousien/Schlüsselanhänger etc.)-Fernbedienungen.","fr":"Utilisez cette classe d\'appareil pour les télécommandes (TV/Stores/Porte-clés, etc.).","it":"Utilizza questa classe di dispositivi per i telecomandi (TV/Tapparelle/Portachiavi, ecc.).","sv":"Använd den här enheten för fjärrkontroller för (TV/Markis/Nyckellås mm.).","no":"Bruk denne enhetsklassen for fjernkontroller (for TV/markise/smartnøkkel etc.).","es":"Utiliza esta clase de dispositivo para los mandos a distancia (TV/persianas/llaves electrónicas, etc.","da":"Brug denne enhedsklasse til fjernbetjeninger (til TV/markise/smartnøgle osv.)","ru":"Используйте этот класс устройств для пультов дистанционного управления (телевизоры/жалюзи/брелки и т.п.).","pl":"Użyj tej klasy urządzeń dla pilotów (od telewizora/od markizy/klucza zbliżeniowego itp.).","ko":"이 디바이스 클래스는 (TV/선블라인드/스마트키 등) 리모컨에 사용합니다.","ar":"استخدم فئة الجهاز هذه لأجهزة التحكم عن بعد (تلفزيون/ستارة شمسية/مفتاح تشغيل، إلخ).","nl":"Gebruik deze apparaatklasse voor afstandsbedieningen (tv/zonwering/keyfob etc.)."}}')},3741:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"PM2.5","nl":"PM2,5","de":"PM2.5","fr":"PM2.5","it":"PM2.5","sv":"PM2.5","no":"PM2.5","es":"PM2,5","ru":"ТЧ 2.5","pl":"PM2.5","ko":"초미세먼지(PM2.5)","ar":"PM2.5","da":"PM2.5"},"units":{"en":"μg/m³","ru":"мкг/м³","ko":"μg/m³","no":"μg/m³","ar":"ميكروجرام/م³","da":"μg/m³","de":"μg/m³","es":"μg/m³","fr":"μg/m³","it":"μg/m³","nl":"μg/m³","pl":"μg/m³","sv":"μg/m³"},"insights":true,"desc":{"en":"Atmospheric particulate matter (μg/m³)","nl":"Deeltjesvormige luchtverontreiniging (μg/m³)","de":"Atmosphärischer Feinstaub (μg/m³)","fr":"Particules en suspension (μg/m³)","it":"Particolato atmosferico (μg/m³)","sv":"Atmosfäriskt partikelämne (μg/m³)","no":"Atmosfæriske partikler (μg/m³)","es":"Partículas atmosféricas (μg/m³)","da":"Atmosfæriske partikler (μg/m³)","ru":"Атмосферные твердые частицы (мкг/м³)","pl":"Pył zawieszony (μg/m³)","ko":"대기 중 미세입자 수(μg/m³)","ar":"الجسيمات المعلقة في الغلاف الجوي (ميكروجرام/م³)"},"chartType":"spline","decimals":2,"color":"#E02020","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_pm25_changed","title":{"en":"The PM2.5 value changed","nl":"De PM2,5-waarde is veranderd","de":"Der PM2.5-Wert hat sich geändert","fr":"La valeur PM2.5 a changé","it":"Il valore di PM2.5 è cambiato","sv":"PM2.5-värdet har ändrats","no":"PM2.5-verdien ble endret","es":"El valor de PM2,5 ha cambiado","da":"PM2.5-værdien har ændret sig","ru":"Значение ТЧ 2.5 изменилось","pl":"Zmieniła się wartość PM2.5","ko":"초미세먼지(PM2.5) 값이 변경되면","ar":"تغيرت قيمة PM2.5"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":2}]}]}}')},3756:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Multicooker","da":"Multicooker","de":"Multikocher","es":"Robot de cocina","fr":"Multicuiseur","it":"Multicooker","ko":"멀티쿠커","nl":"Multicooker","no":"Multikoker","pl":"Multicooker","ru":"Мультиварка","sv":"Multikokare","ar":"جهاز طهي متعدد"},"description":{"en":"Use this device class for multicookers.","da":"Brug denne enhedsklasse til multicookere.","de":"Verwenden Sie diese Geräteklasse für Multikocher.","es":"Utiliza esta clase de dispositivo para robots de cocina.","fr":"Utilisez cette classe d\'appareils pour les multicuiseurs.","it":"Utilizza questa classe di dispositivi per i multicooker.","ko":"이 디바이스 클래스는 멀티쿠커에 사용합니다.","nl":"Gebruik deze apparaatklasse voor multicookers.","no":"Bruk denne enhetsklassen for multikokere.","pl":"Tej klasy urządzeń należy używać w przypadku multicookerów.","ru":"Используйте этот класс устройств для мультиварок.","sv":"Använd den här enhetsklassen för multikokare.","ar":"استخدم فئة الجهاز هذه لأجهزة الطهي المتعددة."},"minCompatibility":"12.0.0"}')},3789:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Energy","nl":"Energie","de":"Energie","fr":"Énergie","it":"Energia","sv":"Energi","no":"Energi","es":"Energía","da":"Energi","ru":"Электроэнергия","pl":"Energia","ko":"전력량","ar":"الطاقة"},"decimals":3,"units":{"en":"kWh","ru":"кВтч","ko":"kWh","no":"kWh","ar":"كيلواط ساعة","da":"kWh","de":"kWh","es":"kWh","fr":"kWh","it":"kWh","nl":"kWh","pl":"kWh","sv":"kWh"},"desc":{"en":"Energy usage in kilowatt-hour (kWh)","nl":"Energie verbruik in kilowattuur (kWh)","de":"Energieverbrauch in Kilowattstunde (kWh)","fr":"Consommation d\'énergie en kilowatt-heure (kWh)","it":"Consumo energetico in kilowattora (kWh)","sv":"Energianvändning i kilowattimmar (kWh)","no":"Energiforbruk i kilowattimer (kWh)","es":"Uso de energía en kilovatio hora (kWh)","da":"Energiforbrug i kilowattime (kWh)","ru":"Энергопотребление в киловатт-часах (кВтч)","pl":"Zużycie energii w kilowatogodzinach (kWh)","ko":"에너지 사용량 킬로와트시(kWh)","ar":"استهلاك الطاقة بالكيلوواط في الساعة (kWh)"},"chartType":"spline","options":{"isApproximated":{"type":"boolean","default":false,"desc":{"en":"This flag is used to determine that the device itself has no power measurement functionality, but that the driver calculates the energy use.","ru":"Этот флаг используется для определения того, что само устройство не имеет функции измерения электроэнергии, но драйвер рассчитывает потребление энергии.","pl":"Flaga oznacza, że samo urządzenie nie ma funkcji pomiaru mocy, ale sterownik oblicza zużycie energii.","ko":"이 플래그는 제품 자체에 전력 측정 기능이 없지만 드라이버가 전력량을 계산하는 경우에 사용돼요.","no":"Dette flagget brukes til å anmerke at enheten i seg selv ikke har noen funksjon for effektmåling, men at sjåføren beregner energibruken.","es":"Este aviso indica que el dispositivo no dispone de ninguna funcionalidad para medir la energía, sino que el controlador calcula el uso de energía.","ar":"تُستخدم هذه العلامة لتحديد أن الجهاز نفسه لا يحتوي على وظيفة قياس الطاقة، ولكن برنامج التشغيل يحسب استهلاك الطاقة.","da":"Dette flag bruges til at bestemme, at enheden ikke selv har nogen strømmålingsfunktionalitet, men at driveren beregner energiforbruget.","de":"Dieses Flag wird verwendet, um festzustellen, dass das Gerät selbst keine Strommessfunktion hat, sondern dass der Treiber den Energieverbrauch berechnet.","fr":"Cet indicateur sert à signaler que l\'appareil n\'intègre pas de fonction de mesure de la puissance et la consommation d\'énergie est calculée par le pilote.","it":"Questo flag viene utilizzato per indicare che il dispositivo in sé non dispone di una funzionalità di misurazione dell\'energia, ma che il driver calcola il consumo energetico.","nl":"Deze vlag wordt gebruikt om aan te geven dat het apparaat zelf geen functionaliteit voor vermogensmeting heeft, maar dat het stuurprogramma het energieverbruik berekent.","sv":"Denna flagga används för att fastställa att enheten i sig inte har någon funktion för effektmätning, men att drivrutinen beräknar energianvändningen."}}},"color":"#6DD400","insights":true,"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"meter_power_changed","title":{"en":"The power meter changed","nl":"De stroommeter is veranderd","de":"Der Gesamtverbrauch hat sich geändert","fr":"Le compteur électrique a changé","it":"Il misuratore di potenza è cambiato","sv":"Elmätaren ändrades","no":"Strømmåleren ble endret","es":"El contador de energía ha cambiado","da":"Strømmåleren ændrede sig","ru":"Измерения счетчика электроэнергии изменились","pl":"Zmiana w liczniku mocy","ko":"전력량이 변경되면","ar":"تغير عداد الطاقة"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":25}]}]}}')},3803:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Radon","nl":"Radon","da":"Radon","it":"Radon","ko":"라돈","pl":"Radon","ru":"Радон","sv":"Radon","es":"Radón","fr":"Radon","no":"Radon","ar":"الرادون","de":"Radon"},"units":{"en":"Bq/m³","nl":"Bq/m³","da":"Bq/m³","it":"Bq/m³","ko":"Bq/m³","pl":"Bq/m³","ru":"Бк/м³","sv":"Bq/m³","es":"Bq/m³","fr":"Bq/m³","no":"Bq/m³","ar":"بيكريل/م³","de":"Bq/m³"},"insights":true,"desc":{"en":"Radon in Becquerel per cubic meter (Bq/m³)","nl":"Radon in becquerel per kubieke meter (Bq/m³)","da":"Radon i Becquerel pr. kubikmeter (Bq/m³)","it":"Radon in Becquerel per metro cubo (Bq/m³)","ko":"입방미터당 베크렐(Bq/m³) 단위의 라돈","pl":"Radon w bekerelach na metr sześcienny (Bq/m³)","ru":"Радон в беккерелях на кубический метр (Бк/м³)","sv":"Radon i becquerel per kubikmeter (Bq/m³)","es":"Radón en becquerelios por metro cúbico (Bq/m³)","fr":"Radon en Becquerel par mètre cube (Bq/m³)","no":"Radon i becquerel per kubikkmeter (Bq/m³)","ar":"الرادون بالبيكريل لكل متر مكعب (Bq/m³)","de":"Radon in Becquerel pro Kubikmeter (Bq/m³)"},"chartType":"spline","decimals":2,"color":"#8B0000","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_radon_changed","title":{"en":"The radon level has changed","nl":"Het radon-niveau is veranderd","da":"Radon-værdien har ændret sig","it":"Il livello di radon è cambiato","ko":"라돈 수준이 변경되면","no":"Radonnivået er endret","pl":"Zmienił się poziom radonu","ru":"Значение радона изменилось","sv":"Radonvärdet har ändrats","es":"El nivel de radón ha cambiado","fr":"La valeur du radon a changé","ar":"تغير مستوى الرادون","de":"Der Radonwert hat sich geändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":2}]}]},"minCompatibility":"12.2.0"}')},3805:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Vacuum Cleaner","nl":"Stofzuiger","de":"Staubsauger","fr":"Aspirateur","it":"Aspirapolvere","sv":"Dammsugare","no":"Støvsuger","es":"Aspiradora","da":"Støvsuger","ru":"Пылесос","pl":"Odkurzacz","ko":"진공청소기","ar":"مكنسة كهربائية"},"description":{"en":"Use this device class for vacuum cleaners, usually together with the `vacuumcleaner_state` capability.","de":"Nutze diese Geräteklasse für Staubsauger - normalerweise zusammen mit der `vacuumcleaner_state`-Fähigkeit.","fr":"Utilisez cette classe d\'appareil pour les aspirateurs, habituellement avec la capacité `vacuumcleaner_state`.","it":"Utilizza questa classe di dispositivi per gli aspirapolvere, generalmente insieme alla funzionalità `vacuumcleaner_state`.","sv":"Använd den här enhetsklassen för dammsugare, oftast tillsammans med funktionen `vacuumcleaner_state`.","no":"Bruk denne enhetsklassen for støvsugere, ofte sammen med funksjonen `vacuumcleaner_state`.","es":"Utiliza esta clase de dispositivo para las aspiradoras, generalmente junto con la capacidad `vacuumcleaner_state`.","da":"Brug denne enhedsklasse til støvsugere, normalt sammen med `vacuumcleaner_state` funktionen.","ru":"Используйте этот класс устройств для пылесосов, обычно вместе с функцией `vacuumcleaner_state`.","pl":"Użyj tej klasy urządzeń dla odkurzaczy, zwykle razem ze zdolnością `vacuumcleaner_state`.","ko":"이 디바이스 클래스는 보통 \'vacuumcleaner_state\' 기능을 갖춘 진공청소기에 사용합니다.","ar":"استخدم فئة الجهاز هذه للمكانس الكهربائية، عادةً مع إمكانية \'vacuumcleaner_state\'.","nl":"Gebruik deze apparaatklasse voor stofzuigers, meestal samen met de optie \'vacuumcleaner_state\'."}}')},3808:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Air Quality Index","nl":"Luchtkwaliteitsindex","da":"Indeks for luftkvalitet","it":"Indice di qualità dell\'aria","ko":"공기질 지수","pl":"Wskaźnik jakości powietrza","ru":"Показатель качества воздуха","sv":"Index för luftkvalitet","es":"Índice de calidad del aire","fr":"Indice de qualité de l\'air","no":"Luftkvalitetsindeks","ar":"مؤشر جودة الهواء","de":"Luftqualitätsindex"},"insights":true,"desc":{"en":"Air Quality Index","nl":"Luchtkwaliteitsindex","da":"Indeks for luftkvalitet","it":"Indice di qualità dell\'aria","ko":"공기질 지수","pl":"Wskaźnik jakości powietrza","ru":"Показатель качества воздуха","sv":"Index för luftkvalitet","es":"Índice de calidad del aire","fr":"Indice de qualité de l\'air","no":"Luftkvalitetsindeks","ar":"مؤشر جودة الهواء","de":"Luftqualitätsindex"},"chartType":"spline","color":"#6DD400","getable":true,"setable":false,"uiComponent":"sensor","min":0,"max":500,"$flow":{"triggers":[{"id":"measure_aqi_changed","title":{"en":"The air quality index changed","nl":"De luchtkwaliteitsindex is veranderd","da":"Luftkvalitetsindekset ændrede sig","it":"L\'indice di qualità dell\'aria è cambiato","ko":"공기질 지수가 변경되면","pl":"Zmienił się wskaźnik jakości powietrza","ru":"Показатель качества воздуха изменился","sv":"Index för luftkvalitet ändrades","es":"El índice de calidad del aire ha cambiado","fr":"L\'indice de qualité de l\'air a changé","no":"Luftkvalitetsindeksen ble endret","ar":"تغير مؤشر جودة الهواء","de":"Der Luftqualitätsindex hat sich geändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":2}]}]},"minCompatibility":"12.2.0"}')},3816:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Pump Supply Fault Alarm","nl":"Waarschuwing voor fout bij pomptoevoer","da":"Alarm for fejl i pumpeforsyningen","it":"Allarme guasto alimentazione pompa","ko":"펌프 공급 결함 감지","pl":"Alarm usterki zasilania pompy","ru":"Сигнал о неисправности в питании насоса","sv":"Larm om fel i pumptillförseln","es":"Alarma de fallo en el suministro eléctrico del bombeo","fr":"Alarme de défaut d\'alimentation de la pompe","no":"Feilalarm for pumpeforsyning","ar":"إنذار عطل إمداد المضخة","de":"Fehleralarm der Pumpenversorgung"},"titleShort":{"en":"Pump Supply Fault","nl":"Fout bij pomptoevoer","da":"Fejl i pumpeforsyningen","it":"Guasto alimentazione pompa","ko":"펌프 공급 결함","pl":"Usterka zasilania pompy","ru":"Неисправность питания насоса","sv":"Fel i pumptillförseln","es":"Fallo en el suministro eléctrico del bombeo","fr":"Défaut d\'alimentation de la pompe","no":"Feil på pumpeforsyning","ar":"عطل في إمداد المضخة","de":"Fehler bei der Versorgung der Pumpe"},"desc":{"en":"True when a fault is detected in the pump supply.","nl":"Wordt geactiveerd wanneer een fout wordt gedetecteerd in de pomptoevoer.","da":"Sandt, når der registreres en fejl i pumpeforsyningen.","it":"Vero quando viene rilevato un guasto nell\'alimentazione della pompa.","ko":"펌프 공급장치에 고장이 감지되면 참입니다.","pl":"Prawda, gdy wykryta jest usterka zasilania pompy.","ru":"Значение «истина» при обнаружении неисправности в питании насоса.","sv":"Sant när ett fel upptäcks i pumptillförseln.","es":"Activado cuando se detecta un fallo en el suministro eléctrico del bombeo.","fr":"Se déclenche lorsqu\'un défaut est détecté dans l\'alimentation de la pompe.","no":"Sann når en feil er påvist i pumpeforsyningen.","ar":"صحيح عند اكتشاف عطل في إمداد المضخة.","de":"Wahr, wenn ein Fehler in der Pumpenversorgung erkannt wird."},"insights":true,"insightsTitleTrue":{"en":"Problem was detected in the pump supply","nl":"Er was een probleem gedetecteerd in de pomptoevoer","da":"Der blev opdaget et problem i pumpeforsyningen","it":"È stato rilevato un problema nell\'alimentazione della pompa","ko":"펌프 공급 결함 감지됨","pl":"Problem z zasilaniem pompy był wykryty","ru":"Была обнаружена проблема с питанием насоса","sv":"Problem upptäcktes i pumptillförseln","es":"Se ha detectado un problema en el suministro eléctrico del bombeo","fr":"Un problème a été détecté dans l\'alimentation de la pompe","no":"Et problem i pumpeforsyningen ble påvist","ar":"تم اكتشاف مشكلة في إمداد المضخة","de":"Es wurde ein Problem in der Pumpenversorgung festgestellt"},"insightsTitleFalse":{"en":"Problem in the pump supply was solved","nl":"Het probleem in de pomptoevoer werd opgelost","da":"Problem med pumpeforsyningen blev løst","it":"Il problema di alimentazione della pompa è stato risolto","ko":"정상","pl":"Problem z zasilaniem pompy był rozwiązany","ru":"Проблема с питанием насоса была решена","sv":"Problem med pumptillförseln löstes","es":"Se ha resuelto el problema en el suministro eléctrico del bombeo","fr":"Le problème d\'alimentation de la pompe a été résolu","no":"Problemet i pumpeforsyningen ble løst","ar":"تم حل المشكلة في إمداد المضخة","de":"Problem mit der Pumpenversorgung wurde gelöst"},"color":"#0091FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_pump_supply_true","highlight":true,"title":{"en":"A problem is detected in the pump supply","nl":"Er is een probleem gedetecteerd in de pomptoevoer","da":"Der er opdaget et problem i pumpeforsyningen","it":"È stato rilevato un problema nell\'alimentazione della pompa","ko":"펌프 공급에서 결함이 감지되면","pl":"Problem z zasilaniem pompy jest wykryty","ru":"Обнаружена проблема с питанием насоса","sv":"Ett problem har upptäckts i pumptillförseln","es":"Se ha detectado un problema en el suministro eléctrico del bombeo","fr":"Un problème est détecté dans l\'alimentation de la pompe","no":"Et problem i pumpeforsyningen er påvist","ar":"تم اكتشاف مشكلة في إمداد المضخة","de":"Es wurde ein Problem mit der Pumpenversorgung festgestellt"}},{"id":"alarm_pump_supply_false","title":{"en":"The problem in the pump supply is solved","nl":"Het probleem in de pomptoevoer is opgelost","da":"Problemet med pumpeforsyningen er løst","it":"Il problema dell\'alimentazione della pompa è risolto","ko":"펌프 공급이 정상 상태이면","pl":"Problem z zasilaniem pompy jest rozwiązany","ru":"Проблема с питанием насоса решена","sv":"Problemet med pumptillförseln är löst","es":"Se ha resuelto el problema en el suministro eléctrico del bombeo","fr":"Le problème de l\'alimentation de la pompe est résolu","no":"Problemet i pumpeforsyningen er løst","ar":"تم حل المشكلة في إمداد المضخة","de":"Das Problem mit der Pumpenversorgung ist gelöst"}}],"conditions":[{"id":"alarm_pump_supply","title":{"en":"There !{{is|isn\'t}} a problem in the pump supply","nl":"Er is !{{een|geen}} probleem in de pomptoevoer","da":"Der !{{er|er ikke}} et problem i pumpeforsyningen","it":"!{{C\'è un|Non c\'è nessun}} problema nell\'alimentazione della pompa","ko":"펌프 공급!{{에서 결함이 감지되면|이 정상 상태이면}}","pl":"!{{Występuje|Nie występuje}} problem z zasilaniem pompy","ru":"!{{Есть проблема|нет проблемы}} с питанием насоса","sv":"Det !{{är|är inte}} ett problem i pumpförsörjningen","es":"!{{Hay un problema|No hay ningún problema}} en el suministro eléctrico del bombeo","fr":"Il !{{y a un problème|n\'y a pas de problème}} concernant l\'alimentation de la pompe","no":"Det !{{er|er ikke}} et problem i pumpeforsyningen","ar":"توجد !{{مشكلة|لا توجد مشكلة}} في إمداد المضخة","de":"Es gibt !{{ein|kein}} Problem mit der Pumpenversorgung"}}]},"minCompatibility":"12.2.0"}')},3822:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Window coverings state","nl":"Raambekledingstatus","de":"Jalousien-Status","fr":"Etat des stores","it":"Stato delle tapparelle","sv":"Status för fönsterskydd","no":"Status for vindusbeskyttelse","es":"Estado de los cobertores de ventanas","da":"Status for vinduesdække","ru":"Состояние оконных навесов","pl":"Stan osłon okiennych","ko":"창문 커버 상태","ar":"حالة أغطية النوافذ"},"type":"enum","values":[{"id":"up","title":{"en":"Up","nl":"Omhoog","de":"Oben","fr":"Haut","it":"Alzate","sv":"Upp","no":"Opp","es":"Arriba","da":"Oppe","ru":"Наверх","pl":"Rozchylone","ko":"위로","ar":"للأعلى"}},{"id":"idle","title":{"en":"Idle","nl":"Stil","de":"Inaktiv","fr":"Inactif","it":"Socchiuse","sv":"Inaktiv","no":"Ikke aktiv","es":"Inactivos","da":"Inaktiv","ru":"В ожидании","pl":"W spoczynku","ko":"유휴","ar":"خامل"}},{"id":"down","title":{"en":"Down","nl":"Omlaag","de":"Unten","fr":"Bas","it":"Abbassate","sv":"Ned","no":"Ned","es":"Abajo","da":"Nede","ru":"Вниз","pl":"Zasunięte","ko":"아래로","ar":"للأسفل"}}],"color":"#F5B207","getable":true,"setable":true,"uiComponent":"ternary","$flow":{"triggers":[{"id":"windowcoverings_state_changed","highlight":true,"title":{"en":"The state changed","nl":"De status is veranderd","de":"Der Status hat sich geändert","fr":"L\'état a été modifié","it":"Lo stato è cambiato","sv":"Status ändrades","no":"Status ble endret","es":"El estado ha cambiado","da":"Status blev ændret","ru":"Состояние изменено","pl":"Zmiana stanu","ko":"창문 가림 상태가 변경되면","ar":"تم تغيير الحالة"},"args":[{"name":"state","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"windowcoverings_state_is","title":{"en":"The state is !{{|not}}","nl":"De status is !{{|niet}}","de":"Der Status ist !{{|nicht}}","fr":"L\'état !{{est|n\' est pas}}","it":"Lo stato !{{è|non è}}","sv":"Status är !{{|inte}}","no":"Status er !{{|ikke}}","es":"El estado !{{|no}} es","da":"Status er !{{|ikke}}","ru":"Состояние !{{|не}}","pl":"Stan to !{{|nie}}","ko":"창문 가림 상태가 다음!{{이면|이 아니면}}","ar":"الحالة !{{هي|ليست}}"},"args":[{"name":"state","type":"dropdown","values":"$values"}]}],"actions":[{"id":"set_windowcoverings_state","highlight":true,"title":{"en":"Set state","nl":"Zet de status","de":"Status setzen","fr":"Définir l\'état","it":"Imposta lo stato","sv":"Ställ in status","no":"Innstill status","es":"Configurar estado","da":"Indstil status","ru":"Установить состояние","pl":"Ustaw stan","ko":"창문 가림 상태 설정","ar":"ضبط الحالة"},"args":[{"name":"state","type":"dropdown","values":"$values"}]}]}}')},3845:(e,t,a)=>{"use strict";var r=a(7403),i=a(6740).toHash;e.exports=function(){var e=[{type:"number",rules:[{maximum:["exclusiveMaximum"]},{minimum:["exclusiveMinimum"]},"multipleOf","format"]},{type:"string",rules:["maxLength","minLength","pattern","format"]},{type:"array",rules:["maxItems","minItems","items","contains","uniqueItems"]},{type:"object",rules:["maxProperties","minProperties","required","dependencies","propertyNames",{properties:["additionalProperties","patternProperties"]}]},{rules:["$ref","const","enum","not","anyOf","oneOf","allOf","if"]}],t=["type","$comment"];return e.all=i(t),e.types=i(["number","integer","string","array","object","boolean","null"]),e.forEach((function(a){a.rules=a.rules.map((function(a){var i;if("object"==typeof a){var n=Object.keys(a)[0];i=a[n],a=n,i.forEach((function(a){t.push(a),e.all[a]=!0}))}return t.push(a),e.all[a]={keyword:a,code:r[a],implements:i}})),e.all.$comment={keyword:"$comment",code:r.$comment},a.type&&(e.types[a.type]=a)})),e.keywords=i(t.concat(["$schema","$id","id","$data","$async","title","description","default","definitions","examples","readOnly","writeOnly","contentMediaType","contentEncoding","additionalItems","then","else"])),e.custom={},e}},3872:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Dim level","nl":"Dim niveau","de":"Dimmlevel","fr":"Intensité lumineuse","it":"Intensità luminosa","sv":"Dimningsnivå","no":"Dempingsnivå","es":"Intensidad de la luz","da":"Lysniveau","ru":"Уровень яркости","pl":"Poziom przygaszenia","ko":"밝기","ar":"مستوى التعتيم"},"chartType":"stepLine","min":0,"max":1,"decimals":2,"units":{"en":"%","ko":"%","no":"%","ru":"%","ar":"%","da":"%","de":"%","es":"%","fr":"%","it":"%","nl":"%","pl":"%","sv":"%"},"color":"#F7B500","getable":true,"setable":true,"uiComponent":"slider","$flow":{"triggers":[{"id":"dim_changed","title":{"en":"The dim level changed","nl":"Het dim-niveau is veranderd","de":"Dimm-Niveau geändert","fr":"Intensité lumineuse modifiée","it":"L\'intensità luminosa è cambiata","sv":"Dimningsnivå ändrades","no":"Dempingsnivået ble endret","es":"La intensidad de la luz ha cambiado","da":"Lysniveau ændret","ru":"Уровень яркости изменен","pl":"Zmienił się poziom przygaszenia","ko":"밝기가 변경되면","ar":"تم تغيير مستوى التعتيم"},"tokens":[{"name":"dim","type":"number","title":{"en":"Level","nl":"Niveau","de":"Niveau","fr":"Niveau","it":"Livello","sv":"Nivå","no":"Nivå","es":"Nivel","da":"Niveau","ru":"Уровень","pl":"Poziom","ko":"밝기","ar":"المستوى"},"example":0.5}]}],"actions":[{"id":"dim","highlight":true,"title":{"en":"Dim to","nl":"Dim naar","de":"Dimmen auf","fr":"Mettre l\'intensité lumineuse sur","it":"Imposta l\'intensità luminosa su","sv":"Dimma till","no":"Demp til","es":"Ajustar la intensidad de la luz a","da":"Juster til","ru":"Установить яркость","pl":"Przygaś do","ko":"다음 밝기로 조절","ar":"تعتيم إلى"},"args":[{"name":"dim","type":"range","min":0,"max":1,"step":0.01,"value":0.5,"label":"%","labelMultiplier":100,"labelDecimals":0}]},{"id":"dim_relative","title":{"en":"Set relative dim-level","nl":"Zet relatief dim-niveau op","de":"Relatives Dimm-Niveau setzen","fr":"Définir l\'intensité lumineuse sur relative","it":"Imposta intensità luminosa su relativa","no":"Innstill relativt dempingsnivå","es":"Ajustar la intensidad de la luz como relativa","da":"Indstil relativt lysniveau","ru":"Установить относительный уровень яркости","pl":"Ustaw względny poziom przygaszenia","ko":"상대 밝기 설정","ar":"ضبط مستوى التعتيم النسبي","sv":"Ställ in relativ dimnivå"},"hint":{"en":"Dim or brighten with respect to the device\'s current dim-level.","nl":"Verhoog of verlaag de helderheid ten opzichte van het huidige dim-niveau van het apparaat.","ru":"Уменьшить или увеличить яркость относительно текущего уровня яркости устройства.","pl":"Przygaś lub rozjaśnij względem obecnego poziomu przygaszenia urządzenia.","ko":"제품의 현재 디밍 수준에 따라 어둡게 또는 밝게 설정돼요.","no":"Demp eller gjør lysere i forhold til enhetens gjeldende dimmingsnivå.","ar":"التعتيم أو الإضاءة بالنسبة إلى مستوى التعتيم الحالي للجهاز.","da":"Dæmp eller lys op i forhold til enhedens aktuelle dæmpningsniveau.","de":"Dimmen oder Aufhellen in Bezug auf die aktuelle Dimmstufe des Geräts.","es":"Atenúa o ilumina con respecto al nivel de atenuación actual del dispositivo.","fr":"Diminuez ou augmentez la luminosité par rapport au niveau actuel de l\'appareil.","it":"Attenua o aumenta rispetto all\'attuale livello di intensità luminosa del dispositivo","sv":"Dimma eller ljusa upp med avseende på enhetens aktuella dimnivå."},"args":[{"name":"dim","type":"range","min":-1,"max":1,"step":0.01,"value":0.5,"label":"%","labelMultiplier":100,"labelDecimals":0}]}]}}')},3907:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Set volume","nl":"Volume instellen","de":"Lautstärke setzen","fr":"Définir le volume","it":"Imposta il volume","sv":"Ställ in volym","no":"Innstill volum","es":"Configurar volumen","da":"Indstil lydstyrken","ru":"Установить громкость","pl":"Ustaw głośność","ko":"볼륨 설정","ar":"ضبط مستوى الصوت"},"type":"number","desc":{"en":"Volume","nl":"Volume","de":"Lautstärke","fr":"Volume","it":"Volume","sv":"Volym","no":"Volum","es":"Volumen","da":"Lydstyrke","ru":"Громкость","pl":"Poziom głośności","ko":"볼륨","ar":"مستوى الصوت"},"chartType":"stepLine","min":0,"max":1,"decimals":2,"units":{"en":"%","ko":"%","no":"%","ru":"%","ar":"%","da":"%","de":"%","es":"%","fr":"%","it":"%","nl":"%","pl":"%","sv":"%"},"color":"#9033FC","setable":true,"getable":true,"uiComponent":"slider","$flow":{"triggers":[{"id":"volume_set_changed","title":{"en":"The volume changed","nl":"Het volume is veranderd","de":"Lautstärke hat sich geändert","fr":"Volume modifié","it":"Il volume è cambiato","sv":"Volymen ändrades","no":"Volumet ble endret","es":"El volumen ha cambiado","da":"Lydstyrke ændrede sig","ru":"Объем изменился","pl":"Zmienił się poziom głośności","ko":"볼륨이 변경되면","ar":"تم تغيير مستوى الصوت"},"tokens":[{"name":"volume_set","type":"number","title":{"en":"Volume","nl":"Volume","de":"Lautstärke","fr":"Volume","it":"Volume","sv":"Volym","no":"Volum","es":"Volumen","da":"Lydstyrke","ru":"Громкость","pl":"Poziom głośności","ko":"볼륨이 다음이면","ar":"مستوى الصوت"},"example":0.5}]}],"actions":[{"id":"volume_set","highlight":true,"title":{"en":"Set the volume to","nl":"Zet het volume naar","de":"Lautstärke setzen auf","fr":"Définir le volume sur","it":"Imposta il volume a","sv":"Ställ in volymen på","no":"Sett volumet til","es":"Configurar el volumen a","da":"Indstil lydstyrke til","ru":"Установить громкость на","pl":"Ustaw poziom głośności na","ko":"볼륨을 다음으로 설정","ar":"ضبط مستوى الصوت على"},"args":[{"name":"volume_set","type":"range","min":0,"max":1,"step":0.01,"value":0.5,"label":"%","labelMultiplier":100,"labelDecimals":0}]},{"id":"volume_set_relative","title":{"en":"Set relative volume","de":"Setze relative Lautsärke","nl":"Zet relatief volume","ru":"Установить относительную громкость","pl":"Ustaw względny poziom głośności","ko":"상대 볼륨 설정","no":"Still inn relativt volum","es":"Configurar volumen relativo","ar":"ضبط مستوى الصوت النسبي","da":"Indstil relativ volumen","fr":"Définir le volume relatif","it":"Imposta il volume relativo","sv":"Ställ in relativ volym"},"hint":{"en":"Change the volume with respect to the device\'s current volume.","de":"Ändere die Lautstärke unter Berücksichtigung der aktuellen Lautstärke des Gerätes.","nl":"Verhoog of verlaag het volume ten opzichte van het huidige volume van het apparaat.","ko":"제품의 현재 볼륨을 기준으로 볼륨을 변경해요.","no":"Endre volumet i forhold til enhetens gjeldende volum.","ru":"Изменить громкость по отношению к текущей громкости устройства.","ar":"تغيير مستوى الصوت بالنسبة إلى مستوى الصوت الحالي للجهاز.","da":"Ændr lydstyrken i forhold til enhedens aktuelle lydstyrke.","es":"Cambia el volumen con respecto al volumen actual del dispositivo.","fr":"Modifiez le volume par rapport au volume actuel de l\'appareil.","it":"Modifica il volume rispetto al volume attuale del dispositivo.","pl":"Zmień głośność w odniesieniu do bieżącej głośności urządzenia.","sv":"Ändra volymen i förhållande till enhetens aktuella volym."},"args":[{"name":"volume_set","type":"range","min":-1,"max":1,"step":0.01,"value":0.5,"label":"%","labelMultiplier":100,"labelDecimals":0}]}]}}')},3940:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"NOx","nl":"NOx","da":"NOx","it":"NOx","ko":"질소산화물","no":"NOx","pl":"NOx","ru":"NOx","sv":"NOx","es":"NOx","fr":"NOx","ar":"أكسيد النيتروجين","de":"NOx"},"units":{"en":"μg/m³","nl":"μg/m³","da":"μg/m³","it":"μg/m³","ko":"μg/m³","no":"μg/m³","pl":"μg/m³","ru":"мкг/м³","sv":"μg/m³","es":"μg/m³","fr":"μg/m³","ar":"ميكروجرام/م³","de":"μg/m³"},"insights":true,"desc":{"en":"Nitrogen Oxides in micrograms per cubic meter (μg/m³)","nl":"Stikstofoxiden in microgram per kubieke meter (μg/m³)","da":"Kvælstofoxider i mikrogram pr. kubikmeter (μg/m³)","it":"Ossidi di azoto in microgrammi per metro cubo (μg/m³)","ko":"입방미터당 마이크로그램(μg/m³) 단위의 질소 산화물","no":"Nitrogenoksider i mikrogram per kubikkmeter (μg/m³)","pl":"Tlenki azotu w mikrogramach na metr sześcienny (μg/m³)","ru":"Оксиды азота в микрограммах на кубический метр (мкг/м³)","sv":"Kväveoxider i mikrogram per kubikmeter (μg/m³)","es":"Óxidos de nitrógeno en microgramos por metro cúbico (μg/m³)","fr":"Oxydes d\'azote en microgrammes par mètre cube (μg/m³)","ar":"أكسيد النيتروجين بالميكروجرام لكل متر مكعب (μg/m³)","de":"Stickstoffoxide in Mikrogramm pro Kubikmeter (μg/m³)"},"chartType":"spline","decimals":2,"color":"#E02020","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_nox_changed","title":{"en":"The NOx level changed","nl":"Het NOx-niveau is veranderd","da":"NOx-værdien ændrede sig","it":"Il livello di NOx è cambiato","ko":"질소산화물 수준 변경되면","no":"NOx-verdien ble endret","pl":"Zmienił się poziom NOx","ru":"Значение NOx изменилось","sv":"NOx-värdet ändrades","es":"El nivel de NOx ha cambiado","fr":"La valeur de NOx a changé","ar":"تغير مستوى أكسيد النيتروجين","de":"Der NOx-Gehalt hat sich geändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":2}]}]},"minCompatibility":"12.2.0"}')},3998:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Set-top Box","da":"Tv-modtagerboks","de":"Set-Top-Box","es":"Descodificador","fr":"Décodeur","it":"Set-top box","ko":"셋톱박스","nl":"Settopbox","no":"TV-mottaker","pl":"Dekoder","ru":"Ресивер","sv":"Digitalbox","ar":"جهاز استقبال"},"description":{"en":"Use this device class for set-top boxes.","da":"Brug denne enhedsklasse til tv-modtagerbokse.","de":"Verwenden Sie diese Geräteklasse für Set-Top-Boxen.","es":"Utiliza esta clase de dispositivo para decodificadores de televisión.","fr":"Utilisez cette classe d\'appareils pour les décodeurs.","it":"Utilizza questa classe di dispositivi per i set-top box.","ko":"이 디바이스 클래스는 셋톱박스에 사용합니다.","nl":"Gebruik deze apparaatklasse voor settopboxen.","no":"Bruk denne enhetsklassen for TV-mottakere.","pl":"Tej klasy urządzeń należy używać w przypadku dekoderów.","ru":"Используйте этот класс устройств для ресиверов.","ar":"استخدم فئة الجهاز هذه لأجهزة الاستقبال.","sv":"Använd den här enhetsklassen för digitalboxar."},"minCompatibility":"12.0.0"}')},4006:e=>{"use strict";var t=e.exports=function(){this._cache={}};t.prototype.put=function(e,t){this._cache[e]=t},t.prototype.get=function(e){return this._cache[e]},t.prototype.del=function(e){delete this._cache[e]},t.prototype.clear=function(){this._cache={}}},4049:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Previous","nl":"Vorige","de":"Zurück","fr":"Précédent","it":"Precedente","sv":"Föregående","no":"Forrige","es":"Anterior","da":"Forrige","ru":"Назад","pl":"Wróć","ko":"이전","ar":"السابق"},"type":"boolean","color":"#9033FC","getable":false,"setable":true,"uiComponent":"media","$flow":{"actions":[{"id":"prev","title":{"en":"Previous","nl":"Vorige","de":"Zurück","fr":"Précédent","it":"Precedente","sv":"Föregående","no":"Forrige","es":"Anterior","da":"Forrige","ru":"Назад","pl":"Wróć","ko":"이전","ar":"السابق"}}]}}')},4078:e=>{"use strict";e.exports=JSON.parse('{"type":"number","min":4,"max":35,"title":{"en":"Target temperature","nl":"Ingestelde temperatuur","de":"Ziel-Temperatur","fr":"Température cible","it":"Temperatura nominale","sv":"Måltemperatur","no":"Ønsket temperatur","es":"Temperatura deseada","da":"Måltemperatur","ru":"Целевая температура","pl":"Cel temperatury","ko":"희망 온도","ar":"درجة الحرارة المستهدفة"},"units":{"en":"°C","ru":"°C","ko":"°C","no":"°C","ar":"°C","da":"°C","de":"°C","es":"°C","fr":"°C","it":"°C","nl":"°C","pl":"°C","sv":"°C"},"chartType":"stepLine","decimals":1,"color":"#FA6400","insights":true,"getable":true,"setable":true,"uiComponent":"thermostat","$flow":{"triggers":[{"id":"target_temperature_changed","title":{"en":"The target temperature changed","nl":"De ingestelde temperatuur is veranderd","de":"Die Ziel-Temperatur hat sich geändert","fr":"La température cible a été modifiée","it":"La temperatura nominale è cambiata","sv":"Måltemperaturen ändrades","no":"Ønsket temperatur ble endret","es":"La temperatura deseada ha cambiado","da":"Måltemperaturen blev ændret","ru":"Целевая температура изменена","pl":"Zmiana celu temperatury","ko":"희망 온도가 변경되면","ar":"تغيرت درجة الحرارة المستهدفة"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":23.5}]}],"actions":[{"id":"target_temperature_set","highlight":true,"title":{"en":"Set the temperature","nl":"Stel de temperatuur in","de":"Die Temperatur setzen","fr":"Définir la température","it":"Imposta la temperatura","sv":"Ställ in temperaturen","no":"Innstill temperaturen","es":"Ajustar la temperatura","da":"Indstil temperaturen","ru":"Установить температуру","pl":"Ustaw temperaturę","ko":"희망 온도 설정","ar":"ضبط درجة الحرارة"},"args":[{"name":"target_temperature","type":"range","min":5,"max":40,"step":0.5,"label":"°C","labelDecimals":1}]}]}}')},4096:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Locked","nl":"Op slot","de":"Verriegelt","fr":"Verrouillé","it":"Chiusa","sv":"Låst","no":"Låst","es":"Cerrada","da":"Låst","ru":"Закрыто","pl":"Zablokowane","ko":"잠금 상태","ar":"مغلق"},"desc":{"en":"True when the lock is locked","nl":"Geeft aan wanneer iets op slot is","de":"True, wenn das Schloss verriegelt ist","fr":"Vrai, si le verrou est verrouillé","it":"Vero quando la serratura è chiusa","sv":"Sant när låset är låst","no":"Sant når låsen er låst","es":"Activado cuando la cerradura está cerrada","da":"Sandt, når låsen er låst","ru":"Значение «истина», когда замок закрыт","pl":"Adekwatne, kiedy zamek jest zablokowany","ko":"록이 잠겨 있으면 참","ar":"صحيح عندما يكون القفل مغلقًا"},"insights":true,"insightsTitleTrue":{"en":"Locked","nl":"Vergrendeld","de":"Verriegelt","fr":"Verrouillé","it":"Chiusa","sv":"Låst","no":"Låst","es":"Cerrada","da":"Låst","ru":"Закрыто","pl":"Zablokowane","ko":"잠김","ar":"مغلق"},"insightsTitleFalse":{"en":"Unlocked","nl":"Ontgrendeld","de":"Entriegelt","fr":"Déverrouillé","it":"Aperta","sv":"Olåst","no":"Ulåst","es":"Abierta","da":"Ulåst","ru":"Открыто","pl":"Odblokowane","ko":"잠금 해제","ar":"مفتوح"},"color":"#9033FC","getable":true,"setable":true,"uiComponent":"toggle","$flow":{"triggers":[{"id":"locked_true","title":{"en":"Locked","nl":"Vergrendeld","de":"Verriegelt","fr":"Verrouillé","it":"Chiusa","sv":"Låst","no":"Låst","es":"Cerrado","da":"Låst","ru":"Закрыто","pl":"Zablokowane","ko":"잠김이면","ar":"مغلق"}},{"id":"locked_false","title":{"en":"Unlocked","nl":"Ontgrendeld","de":"Entriegelt","fr":"Déverrouillé","it":"Aperta","sv":"Olåst","no":"Ulåst","es":"Abierto","da":"Låst op","ru":"Открыто","pl":"Odblokowane","ko":"잠금 해제이면","ar":"مفتوح"}}],"conditions":[{"id":"locked","title":{"en":"A lock is !{{locked|unlocked}}","nl":"Een slot is !{{vergrendeld|ontgrendeld}}","de":"Ein Schloss ist !{{verriegelt|entriegelt}}","fr":"Un verrou est !{{verrouillé|déverrouillé}}","it":"Una serratura è !{{chiusa|aperta}}","sv":"Ett lås är !{{låst|olåst}}","no":"En lås er !{{låst|ulåst}}","es":"Una cerradura está !{{cerrada|abierta}}","da":"En lås er blevet !{{låst|låst op}}","ru":"Замок !{{закрыт|открыт}}","pl":"Zamek jest !{{zablokowany|odblokowany}}","ko":"!{{잠김|잠금 해제}}이면","ar":"القفل !{{مغلق|مفتوح}}"}}],"actions":[{"id":"lock","highlight":true,"title":{"en":"Lock","nl":"Vergrendel","de":"Verriegeln","fr":"Verrouiller","it":"Chiudi","sv":"Lås","no":"Lås","es":"Cerrar","da":"Lås","ru":"Закрыть","pl":"Zablokuj","ko":"잠금","ar":"قفل"}},{"id":"unlock","highlight":true,"title":{"en":"Unlock","nl":"Ontgrendel","de":"Entriegeln","fr":"Déverrouiller","it":"Apri","sv":"Lås upp","no":"Lås opp","es":"Abrir","da":"Lås op","ru":"Открыть","pl":"Odblokuj","ko":"잠금 해제","ar":"فتح"}}]}}')},4131:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Color temperature","nl":"Kleurtemperatuur","de":"Farbtemperatur","fr":"Température de couleur","it":"Temperatura colore","sv":"Färgtemperatur","no":"Fargetemperatur","es":"Temperatura del color","da":"Farvetemperatur","ru":"Температура цвета","pl":"Temperatura barwy","ko":"색온도","ar":"درجة حرارة اللون"},"min":0,"chartType":"stepLine","max":1,"decimals":2,"color":"#F7B500","getable":true,"setable":true,"uiComponent":"color","$flow":{"actions":[{"id":"temperature","title":{"en":"Set a temperature","nl":"Verander naar temperatuur","de":"Eine Temperatur setzen","fr":"Définir une température","it":"Imposta una temperatura","sv":"Ställ in en temperatur","no":"Innstill en temperatur","es":"Configurar la temperatura","da":"Indstil en temperatur","ru":"Установить температуру","pl":"Ustaw temperaturę","ko":"온도 설정","ar":"ضبط درجة حرارة"},"args":[{"name":"temperature","type":"range","min":0,"max":1,"step":0.01,"value":0.5,"label":"%","labelMultiplier":100,"labelDecimals":0}],"hint":{"en":"Adjusts the temperature of the light. A higher value means a warmer color.","nl":"Verander de temperatuur van de lamp. Een hogere waarde betekent een warmere kleur.","de":"Stelle die Temperatur der Farbe ein. Ein höherer Wert bedeutet eine wärmere Farbe.","fr":"Ajuste la température de la lumière. Une valeur plus élévée signifie une couleur plus chaude.","it":"Regola la temperatura della luce. Un valore più alto indica un colore più caldo.","sv":"Justerar temperaturen på ljuset. Ett högre värde innebär en varmare färg.","no":"Justerer lystemperaturen. En høyere verdi gir en varmere farge.","es":"Ajusta la temperatura de la luz. Cuanto más alto es el valor, más cálido es el color.","da":"Justerer lysets temperatur. En højere værdi betyder en varmere farve.","ru":"Регулирует температуру света. Более высокое значение означает более теплый цвет.","pl":"Dostosuj temperaturę oświetlenia. Wyższa wartość oznacza cieplejszą barwę.","ko":"조명의 온도를 조정해요. 값이 높을수록 따뜻한 색이에요.","ar":"لتعديل درجة حرارة الضوء. القيمة الأعلى تعني لونًا أكثر دفئًا."}}]}}')},4173:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Carbon Filter","nl":"Koolstoffilter","da":"Kulfilter","it":"Filtro a carbone","ko":"카본 필터 사용량","pl":"Filtr węglowy","ru":"Угольный фильтр","sv":"Kolfilter","es":"Filtro de carbono","fr":"Filtre à charbon","no":"Karbonfilter","ar":"فلتر الكربون","de":"Kohlefilter"},"units":{"en":"%","nl":"%","da":"%","it":"%","ko":"%","pl":"%","ru":"%","sv":"%","es":"%","fr":" %","no":"%","ar":"%","de":"%"},"desc":{"en":"The carbon filter level in percent.","nl":"Het koolstoffilterniveau in procenten.","da":"Kulfilterniveauet i procent.","it":"Il livello del filtro al carbone in percentuale.","ko":"백분율로 표현한 카본 필터 수준입니다.","pl":"Poziom filtra węglowego w procentach.","ru":"Уровень угольного фильтра в процентах.","sv":"Kolfilternivån i procent.","es":"El nivel del filtro de carbono en porcentaje.","fr":"Le niveau du filtre à charbon en pourcentage.","no":"Karbonfilternivået i prosent.","ar":"مستوى فلتر الكربون بالنسبة المئوية.","de":"Die Aktivkohlefilterwert in Prozent."},"min":0,"max":100,"color":"#E02020","insights":true,"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_carbon_filter_changed","highlight":true,"title":{"en":"The carbon filter level changed","nl":"Het koolstoffilterniveau is veranderd","da":"Kulfilterniveauet ændrede sig","it":"Il livello del filtro a carbone è cambiato","ko":"카본 필터 수준이 변경되면","pl":"Zmienił się poziom filtra węglowego","ru":"Уровень угольного фильтра изменился на","sv":"Kolfilternivån ändrades","es":"El nivel del filtro de carbono ha cambiado","fr":"Le niveau du filtre à charbon est passé à","no":"Karbonfilternivået ble endret","ar":"تغير مستوى فلتر الكربون","de":"Das Niveau des Kohlefilters hat sich geändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":50}]}]},"minCompatibility":"12.2.0"}')},4195:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"CO₂ Level","nl":"CO₂-niveau","da":"CO₂-niveau","it":"Livello di CO₂","ko":"CO₂ 수준","pl":"Poziom CO₂","ru":"Уровень CO₂","sv":"CO₂-nivå","es":"Nivel de CO₂","fr":"Niveau de CO₂","no":"CO₂-nivå","ar":"مستوى ثاني أكسيد الكربون","de":"CO₂-Gehalt"},"desc":{"en":"The level of CO₂ in the air.","nl":"De CO₂-niveau in de lucht.","da":"Niveauet af CO₂ i luften.","it":"Il livello di CO₂ nell\'aria.","ko":"공기 중 CO₂의 수준입니다.","pl":"Poziom dwutlenku węgla w powietrzu.","ru":"Уровень содержания CO₂ в воздухе.","sv":"Halten av CO₂ i luften.","es":"El nivel de CO₂ en el aire.","fr":"Le niveau de CO₂ dans l\'air.","no":"Nivået av CO₂ i luften.","ar":"مستوى ثاني أكسيد الكربون في الهواء.","de":"Der CO₂-Gehalt in der Luft."},"values":[{"id":"low","title":{"en":"Low","nl":"Laag","da":"Lavt","it":"Basso","ko":"좋음","pl":"Niski","ru":"Низкий","sv":"Låg","es":"Bajo","fr":"Faible","no":"Lavt","ar":"منخفض","de":"Niedrig"}},{"id":"medium","title":{"en":"Medium","nl":"Gemiddeld","da":"Medium","it":"Medio","ko":"보통","pl":"Średni","ru":"Средний","sv":"Medium","es":"Intermedio","fr":"Moyen","no":"Middels","ar":"متوسط","de":"Mittel"}},{"id":"high","title":{"en":"High","nl":"Hoog","da":"Højt","it":"Alto","ko":"나쁨","pl":"Wysoki","ru":"Высокий","sv":"Hög","es":"Alto","fr":"Élevé","no":"Høyt","ar":"عالي","de":"Hoch"}},{"id":"critical","title":{"en":"Critical","nl":"Kritiek","da":"Kritisk","it":"Critico","ko":"매우 나쁨","pl":"Krytyczny","ru":"Критический","sv":"Kritisk","es":"Crítico","fr":"Critique","no":"Kritisk","ar":"حرج","de":"Kritisch"}}],"color":"#E02020","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"level_co2_changed","highlight":true,"title":{"en":"The CO₂ level changed to","nl":"Het CO₂-niveau is veranderd naar","da":"CO₂-niveauet blev ændret til","it":"Il livello di CO₂ è passato a","ko":"CO₂ 수준이 다음으로 변경되면","pl":"Poziom CO₂ zmienił się na","ru":"Уровень CO₂ изменился на","sv":"CO₂-nivån ändrades till","es":"El nivel de CO₂ ha cambiado a","fr":"Le niveau de CO₂ est passé à","no":"CO₂-nivået ble endret til","ar":"تغير مستوى ثاني أكسيد الكربون إلى","de":"Der CO₂-Gehalt hat sich geändert auf"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"level_co2_is","title":{"en":"The CO₂ level !{{is|is not}}","nl":"Het CO₂-niveau !{{is|is niet}}","da":"CO₂-niveauet !{{er|er ikke}}","it":"Il livello di CO₂ !{{è|non è}}","ko":"CO₂ 수준이 다음!{{이면|이 아니면}}","pl":"Poziom CO₂ !{{jest|nie jest}}","ru":"Уровень CO₂ !{{|не}}","sv":"CO₂-nivån !{{är|är inte}}","es":"El nivel de CO₂ !{{es|no es}}","fr":"Le niveau de CO₂ !{{est|n\'est pas}}","no":"CO₂-nivået !{{er|er ikke}}","ar":"مستوى ثاني أكسيد الكربون !{{هو|ليس}}","de":"Der CO₂-Gehalt !{{ist|ist nicht}}"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.2.0"}')},4249:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Volume down","nl":"Volume omlaag","de":"Lautstärke runter","fr":"Baisser le volume","it":"Volume abbassato","sv":"Volym ned","no":"Volum ned","es":"Bajar volumen","da":"Ned for lyden","ru":"Звук тише","pl":"Zmniejsz głośność","ko":"볼륨 작게","ar":"خفض الصوت"},"type":"boolean","color":"#9033FC","getable":false,"setable":true,"uiComponent":"button","$flow":{"actions":[{"id":"volume_down","highlight":true,"title":{"en":"Turn the volume down","nl":"Zet het geluid zachter","de":"Dreh die Lautstärke runter","fr":"Baisser le son","it":"Abbassa il volume","sv":"Sänk volymen","no":"Senk volumet","es":"Bajar el volumen","da":"Skru ned for lyden","ru":"Сделать звук тише","pl":"Zmniejsz poziom głośności","ko":"볼륨 낮추기","ar":"اخفض الصوت"}}]}}')},4267:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Oscillating","nl":"Oscilleren","da":"Oscillerer","it":"Oscillante","ko":"회전","pl":"Oscylacja","ru":"Колебание","sv":"Oscillerande","es":"Oscilante","fr":"Oscillant","no":"Svingende","ar":"الاهتزاز","de":"Oszillierend"},"desc":{"en":"Enable or disable oscillation.","nl":"Schakel oscillatie in of uit.","da":"Aktiver eller deaktiver oscillation.","it":"Abilita o disabilita l\'oscillazione.","ko":"진자를 활성화 또는 비활성화합니다.","pl":"Włączenie lub wyłączenie oscylacji.","ru":"Включить или отключить колебание.","sv":"Aktivera eller inaktivera oscillation.","es":"Activa o desactiva la oscilación.","fr":"Active ou désactive l\'oscillation.","no":"Aktiver eller deaktiver svingninger.","ar":"تمكين أو تعطيل الاهتزاز.","de":"Oszillation aktivieren oder deaktivieren."},"insights":true,"insightsTitleTrue":{"en":"Oscillation enabled","nl":"Oscillatie ingeschakeld","da":"Oscillation aktiveret","it":"Oscillazione abilitata","ko":"회전 켜짐","pl":"Oscylacja włączona","ru":"Колебание включено","sv":"Oscillation aktiverad","es":"Oscilación activada","fr":"Oscillation activée","no":"Svingning aktivert","ar":"تم تمكين الاهتزاز","de":"Oszillation aktiviert"},"insightsTitleFalse":{"en":"Oscillation disabled","nl":"Oscillatie uitgeschakeld","da":"Oscillation deaktiveret","it":"Oscillazione disabilitata","ko":"회전 꺼짐","pl":"Oscylacja wyłączona","ru":"Колебание выключено","sv":"Oscillation inaktiverad","es":"Oscilación desactivada","fr":"Oscillation désactivée","no":"Svingning deaktivert","ar":"تم تعطيل الاهتزاز","de":"Oszillation deaktiviert"},"color":"#6236FF","getable":true,"setable":true,"uiComponent":"toggle","$flow":{"triggers":[{"id":"oscillating_true","highlight":true,"title":{"en":"Oscillation turned on","nl":"Oscillatie ingeschakeld","da":"Oscillation aktiverede","it":"Oscillazione abilitata","ko":"회전이 켜지면","pl":"Oscylacja włączona","ru":"Колебание включено","sv":"Oscillation aktiverad","es":"Oscilación activada","fr":"Oscillation activée","no":"Svingning aktivert","ar":"تم تشغيل الاهتزاز","de":"Oszillation eingeschaltet"}},{"id":"oscillating_false","title":{"en":"Oscillation turned off","nl":"Oscillatie uitgeschakeld","da":"Oscillation deaktiverede","it":"Oscillazione disabilitata","ko":"회전이 꺼지면","pl":"Oscylacja wyłączona","ru":"Колебание выключено","sv":"Oscillation inaktiverad","es":"Oscilación desactivada","fr":"Oscillation désactivée","no":"Svingning deaktivert","ar":"تم إيقاف الاهتزاز","de":"Oszillation ausgeschaltet"}}],"conditions":[{"id":"oscillating","title":{"en":"Oscillation is !{{enabled|disabled}}","nl":"Oscillatie is !{{ingeschakeld|uitgeschakeld}}","da":"Oscillation er !{{aktiveret|deaktiveret}}","it":"L\'oscillazione è !{{abilitata|disabilitata}}","ko":"회전이 !{{켜지면|꺼지면}}","pl":"Oscylacja jest !{{włączona|wyłączona}}","ru":"Колебание !{{включено|выключено}}","sv":"Oscillation är !{{aktiverad|inaktiverad}}","es":"La oscilación está !{{activada|desactivada}}","fr":"L\'oscillation est !{{activée|désactivée}}","no":"Svingning er !{{aktivert|deaktivert}}","ar":"الاهتزاز !{{ممكّن|معطّل}}","de":"Oszillation ist !{{eingeschaltet|ausgeschaltet}}"}}],"actions":[{"id":"enable_oscillating","title":{"en":"Enable Oscillation","nl":"Oscillatie inschakelen","da":"Aktiver oscillation","it":"Abilita l\'oscillazione","ko":"회전 켜기","pl":"Włącz oscylację","ru":"Включить колебание","sv":"Aktivera oscillation","es":"Activar oscilación","fr":"Activer l\'oscillation","no":"Aktiver svingning","ar":"تمكين الاهتزاز","de":"Oszillation aktivieren"}},{"id":"disable_oscillating","title":{"en":"Disable Oscillation","nl":"Oscillatie uitschakelen","da":"Deaktiver oscillation","it":"Disabilita l\'oscillazione","ko":"회전 끄기","pl":"Wyłącz oscylację","ru":"Отключить колебание","sv":"Inaktivera oscillation","es":"Desactivar oscilación","fr":"Désactiver l\'oscillation","no":"Deaktiver svingning","ar":"تعطيل الاهتزاز","de":"Oszillation deaktivieren"}},{"id":"toggle_oscillating","title":{"en":"Toggle Oscillation on or off","nl":"Oscillatie aan- of uitzetten","da":"Slå oscillation til eller fra","it":"Abilita o disabilita l\'oscillazione","ko":"회전 켬/끔 상태 전환하기","pl":"Przełącz oscylację między wł / wył","ru":"Включить или выключить колебание","sv":"Aktivera eller inaktivera oscillation","es":"Encender o apagar la oscilación","fr":"Activer ou désactiver l\'oscillation","no":"Slå svingning på eller av","ar":"تبديل الاهتزاز بين التشغيل والإيقاف","de":"Oszillation ein- bzw. ausschalten"}}]},"minCompatibility":"12.2.0"}')},4278:e=>{"use strict";e.exports=function(e,t,a){var r=" ",i=e.schema[t],n=e.errSchemaPath+"/"+t,s=(e.opts.allErrors,e.util.toQuotedString(i));return!0===e.opts.$comment?r+=" console.log("+s+");":"function"==typeof e.opts.$comment&&(r+=" self._opts.$comment("+s+", "+e.util.toQuotedString(n)+", validate.root.schema);"),r}},4345:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"TVOC Level","nl":"TVOC-niveau","da":"TVOC-niveau","it":"Livello di TVOC","ko":"총휘발성유기화합물 수준","pl":"Poziom wszystkich LZO","ru":"Уровень TVOC","sv":"TVOC-nivå","es":"Nivel de TVOC","fr":"Niveau de COVT","no":"TVOC-nivå","ar":"مستوى TVOC","de":"TVOC-Gehalt"},"desc":{"en":"The level of total volatile organic compounds in the air.","nl":"De mate van totaal vluchtige organische stoffen in de lucht.","da":"Niveauet af samlede flygtige organiske forbindelser i luften.","it":"Il livello di composti organici volatili totali nell\'aria.","ko":"공기 중 휘발성 유기 화합물의 총량 수준입니다.","pl":"Poziom wszystkich lotnych związków organicznych w powietrzu.","ru":"Уровень общего содержания летучих органических соединений в воздухе.","sv":"Halten av totala mängden flyktiga organiska föreningar i luften.","es":"El nivel de compuestos orgánicos volátiles totales en el aire.","fr":"Le niveau de composés organiques volatils totaux dans l\'air.","no":"Nivået av total mengde flyktige organiske forbindelser i luften.","ar":"مستوى المركبات العضوية المتطايرة الإجمالية في الهواء.","de":"Der Gesamtgehalt an flüchtigen organischen Verbindungen in der Luft."},"values":[{"id":"low","title":{"en":"Low","nl":"Laag","da":"Lavt","it":"Basso","ko":"낮음","pl":"Niski","ru":"Низкий","sv":"Låg","es":"Bajo","fr":"Faible","no":"Lavt","ar":"منخفض","de":"Niedrig"}},{"id":"medium","title":{"en":"Medium","nl":"Gemiddeld","da":"Medium","it":"Medio","ko":"보통","pl":"Średni","ru":"Средний","sv":"Medium","es":"Intermedio","fr":"Moyen","no":"Middels","ar":"متوسط","de":"Mittel"}},{"id":"high","title":{"en":"High","nl":"Hoog","da":"Højt","it":"Alto","ko":"높음","pl":"Wysoki","ru":"Высокий","sv":"Hög","es":"Alto","fr":"Élevé","no":"Høyt","ar":"عالي","de":"Hoch"}},{"id":"critical","title":{"en":"Critical","nl":"Kritiek","da":"Kritisk","it":"Critico","ko":"위험","pl":"Krytyczny","ru":"Критический","sv":"Kritisk","es":"Crítico","fr":"Critique","no":"Kritisk","ar":"حرج","de":"Kritisch"}}],"color":"#E02020","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"level_tvoc_changed","highlight":true,"title":{"en":"The TVOC level changed to","nl":"Het TVOC-niveau is veranderd naar","da":"TVOC-niveauet blev ændret til","it":"Il livello di TVOC è passato a","ko":"총휘발성유기화합물 수준이 다음으로 변경되면","pl":"Poziom wszystkich LZO zmienił się na","ru":"Уровень TVOC изменился на","sv":"TVOC-nivån ändrades till","es":"El nivel de COVT ha cambiado a","fr":"Le niveau en COVT est passé à","no":"TVOC-nivået ble endret til","ar":"تم تغيير مستوى المركبات العضوية المتطايرة الإجمالية إلى","de":"Der TVOC-Gehalt hat sich geändert auf"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"level_tvoc_is","title":{"en":"The TVOC level !{{is|is not}}","nl":"Het TVOC-niveau !{{is|is niet}}","da":"TVOC-niveauet !{{er|er ikke}}","it":"Il livello di TVOC !{{è|non è}}","ko":"총휘발성유기화합물 수준이 다음!{{이면|이 아니면}}","pl":"Poziom wszystkich LZO !{{jest|nie jest}}","ru":"Уровень TVOC !{{|не}}","sv":"TVOC-nivån !{{är|är inte}}","es":"El nivel de TVOC !{{es|no es}}","fr":"Le niveau de COVT !{{est|n\'est pas}}","no":"TVOC-nivået !{{er|er ikke}}","ar":"مستوى المركبات العضوية المتطايرة الإجمالية !{{هو|ليس}}","de":"Der TVOC-Gehalt !{{ist|ist nicht}}"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.2.0"}')},4346:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Laundry washer cycles","nl":"Wascycli","da":"Vaskemaskinens cyklusser","it":"Cicli di lavaggio della lavatrice","ko":"세탁 사이클","pl":"Cykle prania","ru":"Циклы стирки","sv":"Tvättmaskinscykler","es":"Ciclos de lavado","fr":"Cycles du lave-linge","no":"Vaskesykluser","ar":"دورات الغسالة","de":"Waschmaschinenprogramme"},"desc":{"en":"The amount of cycles the laundry washer should perform.","nl":"Het aantal wascycli dat de wasmachine moet uitvoeren.","da":"Antallet af cyklusser, som vaskemaskinen skal udføre.","it":"La quantità di cicli che la lavatrice deve eseguire.","ko":"세탁기가 동작할 사이클의 수입니다.","pl":"Liczba cykli, które powinna wykonać pralka.","ru":"Количество циклов стирки, которые должна выполнять стиральная машина.","sv":"Antalet cykler som tvättmaskinen ska utföra.","es":"El número de ciclos que debe hacer la lavadora.","fr":"Le nombre de cycles que le lave-linge doit effectuer.","no":"Antall sykluser vaskemaskinen skal gjennomføre.","ar":"عدد الدورات التي يجب أن تقوم بها الغسالة.","de":"Die Anzahl der Waschgänge, die die Waschmaschine durchführen soll."},"values":[{"id":"none","title":{"en":"None","nl":"Geen","da":"Ingen","it":"Nessuno","ko":"선택 안 함","pl":"Brak","ru":"Нет","sv":"Ingen","es":"Ninguno","fr":"Aucun","no":"Ingen","ar":"لا شيء","de":"Keine"}},{"id":"normal","title":{"en":"Normal","nl":"Normaal","da":"Normal","it":"Normale","ko":"보통","pl":"Normalne","ru":"Стандарт","sv":"Normal","es":"Normal","fr":"Normal","no":"Standard","ar":"عادي","de":"Normal"}},{"id":"extra","title":{"en":"Extra","nl":"Extra","da":"Ekstra","it":"Extra","ko":"많이","pl":"Dodatkowe","ru":"Дополнительно","sv":"Extra","es":"Extra","fr":"Extra","no":"Ekstra","ar":"إضافي","de":"Extra"}},{"id":"max","title":{"en":"Max","nl":"Max","da":"Maks","it":"Max","ko":"최대","pl":"Maksymalne","ru":"Максимально","sv":"Max","es":"Máximo","fr":"Max","no":"Maks.","ar":"الحد الأقصى","de":"Max"}}],"color":"#0091FF","getable":true,"setable":true,"uiComponent":"picker","$flow":{"triggers":[{"id":"laundry_washer_cycles_changed","highlight":true,"title":{"en":"The cycles changed to","nl":"De cycli zijn veranderd in","da":"Cyklusserne blev ændret til","it":"I cicli sono passati a","ko":"세탁 사이클이 다음으로 변경되면 ","pl":"Cykle prania zmieniły się na","ru":"Циклы стирки изменены на","sv":"Cyklerna ändrade till","es":"Los ciclos han cambiado a","fr":"Les cycles du lave-linge sont passés à","no":"Syklusene ble endret til","ar":"تم تغيير الدورات إلى","de":"Die Programme wurden geändert auf"},"args":[{"name":"cycles","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"laundry_washer_cycles_is","title":{"en":"The cycles !{{is|is not}}","nl":"De cycli !{{zijn|zijn niet}} ","da":"Cyklusserne !{{er|er ikke}}","it":"I cicli !{{sono|non sono}}","ko":"세탁 사이클이 다음!{{이면|이 아니면}}","pl":"Cykle pralki !{{jest|nie jest}}","ru":"Циклы стирки !{{|не}}","sv":"Cyklerna !{{är|är inte}}","es":"Los ciclos !{{están|no están}}","fr":"Les cycles de lave-linge !{{sont|ne sont pas}}","no":"Syklusene !{{er|er ikke}}","ar":"الدورات !{{هي|ليست}}","de":"Die Programme !{{sind|sind nicht}}"},"args":[{"name":"cycles","type":"dropdown","values":"$values"}]}],"actions":[{"id":"set_laundry_washer_cycles","title":{"en":"Set the laundry washer cycles to","nl":"De wasmachinecycli instellen op","da":"Indstil vaskemaskinens cyklusser til","it":"Imposta i cicli della lavatrice su","ko":"세탁 사이클을 다음으로 설정","pl":"Ustaw cykle prania na","ru":"Установить циклы стирки на","sv":"Ställ in tvättmaskinens cykler på","es":"Ajustar los ciclos de lavado a","fr":"Définir les cycles du lave-linge sur","no":"Sett vaskesyklusene til","ar":"ضبط دورات الغسالة على","de":"Stelle die Programme der Waschmaschine auf"},"args":[{"name":"cycles","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.2.0"}')},4355:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Laundry washer program","nl":"Wasprogramma","da":"Vaskemaskineprogram","it":"Programma di lavaggio della lavatrice","ko":"세탁 모드","pl":"Program prania","ru":"Программы стирки","sv":"Tvättmaskinsprogram","es":"Programa de lavado","fr":"Programme du lave-linge","no":"Vaskemaskinprogram","ar":"برنامج الغسالة","de":"Waschmaschinenprogramm"},"desc":{"en":"The current program of the laundry washer.","nl":"Het huidige programma van de wasmachine.","da":"Vaskemaskinens aktuelle program.","it":"Il programma attuale della lavatrice.","ko":"세탁기의 현재 프로그램입니다.","pl":"Bieżący program prania.","ru":"Текущая программа стирки.","sv":"Tvättmaskinens aktuella program.","es":"El programa actual de la lavadora.","fr":"Le programme actuel du lave-linge.","no":"Vaskemaskinens gjeldende program.","ar":"البرنامج الحالي للغسالة.","de":"Das aktuelle Programm der Waschmaschine."},"values":[{"id":"normal","title":{"en":"Normal","nl":"Normaal","da":"Normal","it":"Normale","ko":"표준","pl":"Normalne","ru":"Стандартная","sv":"Normal","es":"Normal","fr":"Normal","no":"Normalt","ar":"عادي","de":"Normal"}},{"id":"auto","title":{"en":"Auto","nl":"Auto","da":"Auto","it":"Auto","ko":"자동","pl":"Auto","ru":"Авто","sv":"Auto","es":"Automático","fr":"Automatique","no":"Automatisk","ar":"تلقائي","de":"Automatisch"}},{"id":"quick","title":{"en":"Quick","nl":"Snel","da":"Hurtig","it":"Veloce","ko":"신속","pl":"Szybkie","ru":"Быстрая","sv":"Snabbt","es":"Rápido","fr":"Rapide","no":"Hurtig","ar":"سريع","de":"Schnell"}},{"id":"heavy","title":{"en":"Heavy","nl":"Zwaar","da":"Tung","it":"Pesante","ko":"강력","pl":"Intensywne","ru":"Интенсивная","sv":"Tungt","es":"Intensivo","fr":"Long","no":"Kraftig","ar":"ثقيل","de":"Sehr verschmutzt"}},{"id":"whites","title":{"en":"Whites","nl":"Wit","da":"Hvid","it":"Bianchi","ko":"흰옷","pl":"Biel","ru":"Белые вещи","sv":"Vittvätt","es":"Blancos","fr":"Blancs","no":"Hvitvask","ar":"أبيض","de":"Weißwäsche"}}],"color":"#0091FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"laundry_washer_program_changed","highlight":true,"title":{"en":"The program changed to","nl":"Het programma is veranderd in","da":"Programmet blev ændret til","it":"Il programma è passato a","ko":"세탁 모드가 다음으로 변경되면","pl":"Program zmienił się na","ru":"Программа изменена на","sv":"Programmet ändrades till","es":"El programa ha cambiado a","fr":"Le programme du lave-linge est passé à","no":"Programmet ble endret til","ar":"تم تغيير البرنامج إلى","de":"Das Programm wurde geändert auf"},"args":[{"name":"program","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"laundry_washer_program_is","title":{"en":"The program !{{is|is not}}","nl":"Het programma !{{is|is niet}}","da":"Programmet !{{er|er ikke}}","it":"Il programma !{{è|non è}}","ko":"세탁 모드가 다음!{{이면|이 아니면}}","pl":"Program !{{jest|nie jest}}","ru":"Программа !{{|не}}","sv":"Programmet !{{är|är inte}}","es":"El programa !{{está|no está}}","fr":"Le programme du lave-linge !{{est|n\'est pas}}","no":"Programmet !{{er|er ikke}}","ar":"البرنامج !{{هو|ليس}}","de":"Das Programm !{{ist|ist nicht}}"},"args":[{"name":"program","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.2.0"}')},4357:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Service","nl":"Service","de":"Dienst","fr":"Service","it":"Servizio","sv":"Service","no":"Tjeneste","es":"Servicio","da":"Tjeneste","ru":"Сервис","pl":"Usługa","ko":"서비스","ar":"خدمة"},"description":{"en":"Use this device class for devices that are not really physical devices, but (cloud) services.","de":"Verwenden Sie diese Geräteklasse für Geräte, die keine physischen Geräte sind, sondern (Cloud-)Dienste.","fr":"Utilisez cette classe d\'appareils pour les appareils qui ne sont pas vraiment des appareils physiques, mais plutôt des services (cloud).","it":"Utilizza questa classe di dispositivi per dispositivi che non sono realmente dispositivi fisici, ma servizi (cloud).","sv":"Använd den här enhetsklassen för enheter som inte är fysiska enheter, utan (moln)tjänster.","no":"Bruk denne enhetsklassen for enheter som ikke er fysiske enheter, men (sky)tjenester.","es":"Utiliza esta clase para los dispositivos que no son físicos, sino servicios (en la nube).","da":"Brug denne enhedsklasse til enheder, der ikke rigtig er fysiske enheder, men (cloud-) tjenester.","ru":"Используйте этот класс устройств для устройств, которые являются не физическими устройствами, а (облачными) сервисами.","pl":"Użyj tej klasy urządzeń dla urządzeń, które nie są fizycznymi urządzeniami, lecz usługami (w chmurze).","ko":"이 디바이스 클래스는 실제 물리적 디바이스가 아닌 (클라우드) 서비스에 사용하세요.","nl":"Gebruik deze apparaatklasse voor apparaten die niet echt fysieke apparaten zijn, maar (cloud-)services.","ar":"استخدم فئة الجهاز هذه للأجهزة التي ليست أجهزة مادية حقيقية، ولكنها خدمات (سحابية)."},"minCompatibility":"12.3.0"}')},4371:e=>{"use strict";e.exports=function(e,t,a){var r=" ",i=e.level,n=e.dataLevel,s=e.schema[t],o=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+"/"+t,d=!e.opts.allErrors,u="data"+(n||""),m="valid"+i,p="errs__"+i,c=e.util.copy(e),g="";c.level++;var h="valid"+c.level,v="i"+i,f=c.dataLevel=e.dataLevel+1,k="data"+f,y=e.baseId;if(r+="var "+p+" = errors;var "+m+";",Array.isArray(s)){var b=e.schema.additionalItems;if(!1===b){r+=" "+m+" = "+u+".length <= "+s.length+"; ";var w=l;l=e.errSchemaPath+"/additionalItems",r+=" if (!"+m+") { ";var z=z||[];z.push(r),r="",!1!==e.createErrors?(r+=" { keyword: 'additionalItems' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { limit: "+s.length+" } ",!1!==e.opts.messages&&(r+=" , message: 'should NOT have more than "+s.length+" items' "),e.opts.verbose&&(r+=" , schema: false , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),r+=" } "):r+=" {} ";var P=r;r=z.pop(),!e.compositeRule&&d?e.async?r+=" throw new ValidationError(["+P+"]); ":r+=" validate.errors = ["+P+"]; return false; ":r+=" var err = "+P+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+=" } ",l=w,d&&(g+="}",r+=" else { ")}var _=s;if(_)for(var S,A=-1,E=_.length-1;A0:e.util.schemaHasRules(S,e.RULES.all)){r+=" "+h+" = true; if ("+u+".length > "+A+") { ";var j=u+"["+A+"]";c.schema=S,c.schemaPath=o+"["+A+"]",c.errSchemaPath=l+"/"+A,c.errorPath=e.util.getPathExpr(e.errorPath,A,e.opts.jsonPointers,!0),c.dataPathArr[f]=A;var C=e.validate(c);c.baseId=y,e.util.varOccurences(C,k)<2?r+=" "+e.util.varReplace(C,k,j)+" ":r+=" var "+k+" = "+j+"; "+C+" ",r+=" } ",d&&(r+=" if ("+h+") { ",g+="}")}"object"==typeof b&&(e.opts.strictKeywords?"object"==typeof b&&Object.keys(b).length>0:e.util.schemaHasRules(b,e.RULES.all))&&(c.schema=b,c.schemaPath=e.schemaPath+".additionalItems",c.errSchemaPath=e.errSchemaPath+"/additionalItems",r+=" "+h+" = true; if ("+u+".length > "+s.length+") { for (var "+v+" = "+s.length+"; "+v+" < "+u+".length; "+v+"++) { ",c.errorPath=e.util.getPathExpr(e.errorPath,v,e.opts.jsonPointers,!0),j=u+"["+v+"]",c.dataPathArr[f]=v,C=e.validate(c),c.baseId=y,e.util.varOccurences(C,k)<2?r+=" "+e.util.varReplace(C,k,j)+" ":r+=" var "+k+" = "+j+"; "+C+" ",d&&(r+=" if (!"+h+") break; "),r+=" } } ",d&&(r+=" if ("+h+") { ",g+="}"))}else(e.opts.strictKeywords?"object"==typeof s&&Object.keys(s).length>0:e.util.schemaHasRules(s,e.RULES.all))&&(c.schema=s,c.schemaPath=o,c.errSchemaPath=l,r+=" for (var "+v+" = 0; "+v+" < "+u+".length; "+v+"++) { ",c.errorPath=e.util.getPathExpr(e.errorPath,v,e.opts.jsonPointers,!0),j=u+"["+v+"]",c.dataPathArr[f]=v,C=e.validate(c),c.baseId=y,e.util.varOccurences(C,k)<2?r+=" "+e.util.varReplace(C,k,j)+" ":r+=" var "+k+" = "+j+"; "+C+" ",d&&(r+=" if (!"+h+") break; "),r+=" }");return d&&(r+=" "+g+" if ("+p+" == errors) {"),r}},4398:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Washing Machine","da":"Vaskemaskine","de":"Waschmaschine","es":"Lavadora","fr":"Lave-linge","it":"Lavatrice","ko":"세탁기","nl":"Wasmachine","no":"Vaskemaskin","pl":"Pralka","ru":"Стиральная машина","sv":"Tvättmaskin","ar":"غسالة"},"description":{"en":"Use this device class for washing machines, if it is a combination washer/dryer use \'washer_and_dryer\'.","da":"Brug denne enhedsklasse til vaskemaskiner. Hvis det er en kombineret vaskemaskine/tørretumbler, skal du bruge \'washer_and_dryer\'.","de":"Verwenden Sie diese Geräteklasse für Waschmaschinen. Wenn es sich um eine Kombination aus Waschmaschine und Trockner handelt, verwenden Sie „washer_and_dryer“.","es":"Utiliza esta clase de dispositivo para lavadoras. Si se trata de un equipo que contiene funciones de lavadora y secadora, utiliza la clase \'washer_and_dryer\'.","fr":"Utilisez cette classe d\'appareils pour les machines à laver ; s\'il s\'agit d\'une combinaison lave-linge/sèche-linge, utilisez \\"washer_and_dryer\\".","it":"Utilizza questa classe di dispositivi per le lavatrici; se si tratta di una lavatrice/asciugatrice combinata, utilizza \\"washer_and_dryer\\".","ko":"이 디바이스 클래스는 세탁기에 사용하고, 세탁기/건조기 일체형의 경우 \'washer_and_dryer\'를 사용합니다.","nl":"Gebruik deze apparaatklasse voor wasmachines, als het een was/droogcombinatie is gebruik dan \'washer_and_dryer\'.","no":"Bruk denne enhetsklassen for vaskemaskiner. For en kombinert vaskemaskin/tørketrommel, bruk «washer_and_dryer».","pl":"Tej klasy urządzeń należy używać w przypadku pralek, a jeśli jest to pralko-suszarka, należy użyć klasy „washer_and_dryer”.","ru":"Используйте этот класс устройств для стиральных машин; в случае стиральной машины-сушилки используйте washer_and_dryer.","sv":"Använd den här enhetsklassen för tvättmaskiner, om det är en kombinerad tvättmaskin/torktumlare ska du använda \'washer_and_dryer\'.","ar":"استخدم فئة الجهاز هذه للغسالات، إذا كانت غسالة/مجفف مدمج، فاستخدم \'washer_and_dryer\'."},"minCompatibility":"12.0.0"}')},4427:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Doorbell","nl":"Deurbel","de":"Türklingel","fr":"Sonnette","it":"Campanello","sv":"Dörrklocka","no":"Dørklokke","es":"Timbre","da":"Dørklokke","ru":"Дверной звонок","pl":"Dzwonek do drzwi","ko":"도어벨","ar":"جرس الباب"},"description":{"en":"Use this device class for doorbells, usually together with the `button` capability.","de":"Nutze diese Geräteklasse für Türklingeln - normalerweise zusammen mit der \'button\'-Fähigkeit.","fr":"Utilisez cette classe d\'appareil pour les sonnettes, habituellement avec la capacité de `bouton`.","it":"Utilizza questa classe di dispositivi per i campanelli, di solito insieme alla funzione `pulsante`.","sv":"Använd den här enhetsklassen för dörrklockor, oftast tillsammans med `knapp`-funktionen.","es":"Utiliza esta clase de dispositivo para los timbres, generalmente junto con la capacidad \'botón\'.","da":"Brug denne enhedsklasse til dørklokker, normalt sammen med `knap`-funktionen.","no":"Bruk denne enhetsklassen for dørklokker, vanligvis sammen med «knapp»-funksjonen.","ru":"Используйте этот класс устройств для дверных звонков, обычно вместе с возможностью использовать «кнопку».","pl":"Użyj tej klasy urządzeń dla dzwonków do drzwi, zwykle razem ze zdolnością „przycisk”.","ko":"이 디바이스 클래스는 보통 \'버튼\' 기능이 있는 초인종에 사용합니다.","ar":"استخدم فئة الجهاز هذه لأجراس الأبواب، عادةً مع إمكانية \'زر\'.","nl":"Gebruik deze apparaatklasse voor deurbellen, meestal samen met de optie \'button\'."}}')},4482:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Playing","nl":"Afspelen","de":"Abspielen","fr":"Lire","it":"In riproduzione","sv":"Spelas","no":"Avspilles","es":"Reproduciendo","da":"Spiller","ru":"Воспроизведение","pl":"Odtwarzanie","ko":"재생 중","ar":"قيد التشغيل"},"type":"boolean","color":"#9033FC","getable":true,"setable":true,"uiComponent":"media","uiQuickAction":true,"$flow":{"triggers":[{"id":"speaker_playing_true","title":{"en":"Started playing","nl":"Begint af te spelen","de":"Begann zu spielen","fr":"Lecture démarrée","it":"Riproduzione avviata","sv":"Började spela","no":"Startet spilling","es":"Reproducción iniciada","da":"Begyndte at spille","ru":"Воспроизведение началось","pl":"Odtwarzanie rozpoczęte","ko":"재생이 시작되면","ar":"بدأ التشغيل"}},{"id":"speaker_playing_false","title":{"en":"Stopped playing","nl":"Gestopt met afspelen","de":"Hörte auf zu spielen","fr":"Lecture stoppée","it":"Riproduzione interrotta","sv":"Slutade spela","no":"Stanset spilling","es":"Reproducción detenida","da":"Stoppede med at spille","ru":"Воспроизведение приостановлено","pl":"Odtwarzanie zatrzymane","ko":"재생이 중지되면","ar":"توقف التشغيل"}}],"conditions":[{"id":"is_playing","title":{"en":"Is !{{|not}} playing","nl":"Is !{{|niet}} aan het afspelen","de":"Wird !{{|nicht}} abgespielt","fr":"!{{Est|N\'est pas}} en cours de lecture","it":"!{{È|Non è}} in riproduzione","sv":"Spelas !{{|inte}}","no":"Avspilles !{{|ikke}}","es":"!{{Se está|No se está}} reproduciendo","da":"Spiller !{{|ikke}}","ru":"!{{|не}} воспроизводится","pl":"!{{odtwarza|nie odtwarza}}","ko":"재생 중!{{이면|이 아니면}}","ar":"هو !{{|ليس}} قيد التشغيل"}}],"actions":[{"id":"play","highlight":true,"title":{"en":"Play","nl":"Speel af","de":"Play","fr":"Lire","it":"Riproduci","sv":"Spela","no":"Spill av","es":"Reproducir","da":"Afspil","ru":"Воспроизвести","pl":"Odtwórz","ko":"재생","ar":"تشغيل"}},{"id":"pause","highlight":true,"title":{"en":"Pause","nl":"Pauzeer","de":"Pause","fr":"Pause","it":"Pausa","sv":"Pausa","no":"Pause","es":"Pausa","da":"Pause","ru":"Пауза","pl":"Pauza","ko":"일시중지","ar":"إيقاف مؤقت"}},{"id":"toggle_playing","title":{"en":"Toggle Play/Pause","nl":"Toggle Afspelen/Pauze","de":"Play/Pause umschalten","fr":"Alterner Lire/Pause","it":"Alterna riproduzione/pausa","sv":"Växla spela/pausa","no":"Veksle mellom avspilling/pause","es":"Reproducir o pausar","da":"Skift mellem Afspil/Pause","ru":"Переключатель Воспроизвести/Пауза","pl":"Przełącz na Odtwórz/Pauza","ko":"재생/일시중지 상태 전환하기","ar":"تبديل التشغيل/الإيقاف المؤقت"}}]}}')},4522:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"CO Alarm","nl":"CO-alarm","de":"CO-Alarm","fr":"Alarme CO","it":"Allarme CO","sv":"CO-larm","no":"CO-alarm","es":"Alarma de CO","da":"CO-alarm","ru":"Сигнал CO","pl":"Alarm CO","ko":"일산화탄소(CO) 알람","ar":"إنذار أول أكسيد الكربون"},"titleShort":{"en":"CO","nl":"CO","de":"CO","fr":"CO","it":"CO","sv":"CO","no":"CO","es":"CO","da":"CO","ru":"CO","pl":"CO","ko":"CO","ar":"أول أكسيد الكربون"},"desc":{"en":"True when dangerous CO values have been detected","nl":"Gaat af bij gevaarlijke concentraties CO","de":"True, wenn gefährliche CO-Werte erkannt wurden","fr":"Vrai si des valeurs de CO dangereuses ont été détectées","it":"Vero quando sono stati rilevati valori pericolosi di CO","sv":"Sant när farliga CO-värden upptäcks","no":"Sant når farlige CO-verdier påvises","es":"Activado cuando se han detectado valores peligrosos de CO","da":"Sandt, når farlige CO-værdier er blevet opdaget","ru":"Значение «истина» при обнаружении опасных значений CO","pl":"Adekwatny, kiedy wykryty zostanie niebezpieczny poziom stężenia CO","ko":"위험한 CO 값이 감지되면 참","ar":"صحيح عند اكتشاف قيم خطيرة لأول أكسيد الكربون"},"insights":true,"insightsTitleTrue":{"en":"CO alarm turned on","nl":"CO-alarm ging af","de":"CO-Alarm ist angegangen","fr":"L\'alarme CO est activée","it":"Allarme CO attivato","sv":"CO-larm aktiverat","no":"CO-alarm aktivert","es":"Alarma de CO activada","da":"CO-alarm aktiveret","ru":"Сигнал CO включен","pl":"Alarm o CO włączony","ko":"일산화탄소(CO) 알람 켜짐","ar":"تم تشغيل إنذار أول أكسيد الكربون"},"insightsTitleFalse":{"en":"CO alarm turned off","nl":"CO-alarm ging uit","de":"CO-Alarm ist ausgegangen","fr":"L\'alarme CO est désactivée","it":"Allarme CO disattivato","sv":"CO-larm inaktiverat","no":"CO-alarm deaktivert","es":"Alarma de CO desactivada","da":"CO-alarm deaktiveret","ru":"Сигнал CO выключен","pl":"Alarm o CO wyłączony","ko":"일산화탄소(CO) 알람 꺼짐","ar":"تم إيقاف إنذار أول أكسيد الكربون"},"color":"#E02020","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_co_true","highlight":true,"title":{"en":"The CO alarm turned on","nl":"Het CO-alarm gaat aan","de":"Der CO-Alarm ist angegangen","fr":"L\'alarme CO s\'est activée","it":"L\'allarme CO è stato attivato","sv":"CO-larmet aktiverades","no":"CO-alarmen ble aktivert","es":"La alarma de CO se ha activado","da":"CO-alarmen blev aktiveredt","ru":"Сигнал CO включен","pl":"Alarm o CO włączony","ko":"일산화탄소(CO) 알람이 \'예\'이면","ar":"تم تشغيل إنذار أول أكسيد الكربون"}},{"id":"alarm_co_false","title":{"en":"The CO alarm turned off","nl":"Het CO-alarm gaat uit","de":"Der CO-Alarm ist ausgegangen","fr":"L\'alarme CO s\'est désactivée","it":"L\'allarme CO è stato disattivato","sv":"CO-larmet inaktiverades","no":"CO-alarmen ble deaktivert","es":"La alarma de CO se ha desactivado","da":"CO-alarmen blev deaktiveret","ru":"Сигнал CO выключен","pl":"Alarm o CO wyłączony","ko":"일산화탄소(CO) 알람이 \'아니요\'이면","ar":"تم إيقاف إنذار أول أكسيد الكربون"}}],"conditions":[{"id":"alarm_co","title":{"en":"The CO alarm is !{{on|off}}","nl":"Het CO-alarm is !{{aan|uit}}","de":"Der CO-Alarm ist !{{an|aus}}","fr":"L\'alarme CO est !{{en marche|arrêtée}}","it":"L\'allarme CO è !{{acceso|spento}}","sv":"CO-larmet är !{{på|av}}","no":"CO-alarmen er !{{på|av}}","es":"La alarma de CO está !{{activada|desactivada}}","da":"CO-alarmen er !{{på|af}}","ru":"Сигнал CO !{{вкл.|выкл.}}","pl":"Alarm CO jest !{{włączony|wyłączony}}","ko":"일산화탄소(CO) 알람이 !{{\'예\'|\'아니요\'}}이면","ar":"إنذار أول أكسيد الكربون !{{يعمل|لا يعمل}}"}}]}}')},4525:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Pump Device Fault Alarm","nl":"Waarschuwing voor fout bij pompapparaat","da":"Alarm for fejl i pumpeenhed","it":"Allarme guasto del dispositivo di pompaggio","ko":"펌프 기기 결함 감지","no":"Feilalarm for pumpeenhet","pl":"Alarm usterki pompy","ru":"Сигнал о неисправности насосного устройства","sv":"Larm om fel på pumpenhet","es":"Alarma de fallo en el dispositivo de bombeo","fr":"Alarme de défaillance du dispositif de pompage","ar":"إنذار عطل جهاز المضخة","de":"Fehleralarm der Pumpvorrichtung"},"titleShort":{"en":"Pump Device Fault","nl":"Fout bij pompapparaat","da":"Fejl i pumpeenhed","it":"Guasto del dispositivo di pompaggio","ko":"펌프 제품 결함","no":"Feil på pumpeenhet","pl":"Usterka pompy","ru":"Неисправность насосного устройства","sv":"Fel på pumpenhet","es":"Fallo en el dispositivo de bombeo","fr":"Défaillance du dispositif de pompage","ar":"عطل بجهاز المضخة","de":"Fehler an der Pumpe"},"desc":{"en":"True when a fault is detected in the pump device.","nl":"Wordt geactiveerd wanneer een fout wordt gedetecteerd in het pompapparaat.","da":"Sandt, når der er registreret en fejl i pumpeenheden.","it":"Vero quando viene rilevato un guasto nel dispositivo di pompaggio.","ko":"펌프 디바이스에 고장이 감지되면 참입니다.","no":"Sann når en feil i pumpeenheten registreres.","pl":"Prawda, gdy wykryta jest usterka pompy.","ru":"Значение «истина» при обнаружении неисправности насосного устройства.","sv":"Sant när ett fel har upptäckts i pumpenheten.","es":"Activado cuando se detecta un fallo en el dispositivo de bombeo.","fr":"Se déclenche lorsqu\'un défaut est détecté dans l’appareil de pompage.","ar":"صحيح عند اكتشاف عطل في جهاز المضخة.","de":"Wahr, wenn ein Fehler in der Pumpvorrichtung erkannt wird."},"insights":true,"insightsTitleTrue":{"en":"Pump device fault alarm turned on","nl":"Waarschuwing van fout bij pompapparaat geactiveerd","da":"Fejlalarm for pumpeenhed slået til","it":"Allarme guasto del dispositivo di pompaggio acceso","ko":"펌프 기기 결함 감지됨","no":"Feilalarm for pumpeenhet aktivert","pl":"Alarm usterki pompy włączony","ru":"Сигнал о неисправности насосного устройства включен","sv":"Larm för fel på pumpenheten aktiverat","es":"Alarma de fallo en el dispositivo de bombeo activada","fr":"Alarme de défaut de l’appareil de pompage activée","ar":"تم تشغيل إنذار عطل جهاز المضخة","de":"Fehleralarm der Pumpvorrichtung aktiviert"},"insightsTitleFalse":{"en":"Pump device fault alarm turned off","nl":"Waarschuwing van fout bij pompapparaat gedeactiveerd","da":"Fejlalarm for pumpeenhed slået fra","it":"Allarme guasto del dispositivo di pompaggio spento","ko":"정상","no":"Feilalarm for pumpeenhet ble deaktivert","pl":"Alarm usterki pompy wyłączony","ru":"Сигнал о неисправности насосного устройства выключен","sv":"Larmet för fel på pumpenheten inaktiverat","es":"Alarma de fallo en el dispositivo de bombeo desactivada","fr":"Alarme de défaut de l’appareil de pompage désactivée","ar":"تم إيقاف إنذار عطل جهاز المضخة","de":"Fehleralarm der Pumpvorrichtung deaktiviert"},"color":"#0091FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_pump_device_true","highlight":true,"title":{"en":"The pump device fault alarm turned on","nl":"De waarschuwing van fout bij pompapparaat is geactiveerd","da":"Pumpeenhedens fejlalarm er slået til","it":"L\'allarme di guasto del dispositivo di pompaggio si è acceso","ko":"펌프 기기에서 결함이 감지되면","no":"Pumpeenhetens feilalarm ble aktivert","pl":"Włączył się alarm usterki pompy","ru":"Сигнал о неисправности насосного устройства включен","sv":"Larmet för fel på pumpenheten aktiverat","es":"Se ha activado la alarma de fallo en el dispositivo de bombeo","fr":"L\'alarme de défaut de l\'appareil de pompage s\'est activée","ar":"تم تشغيل إنذار عطل جهاز المضخة","de":"Der Fehleralarm der Pumpvorrichtung wurde aktiviert."}},{"id":"alarm_pump_device_false","title":{"en":"The pump device fault alarm turned off","nl":"De waarschuwing van fout bij pompapparaat is gedeactiveerd","da":"Pumpeenhedens fejlalarm slået fra","it":"L\'allarme di guasto del dispositivo di pompaggio si è spento","ko":"펌프 기기가 정상 상태이면","no":"Pumpeenhetens feilalarm ble deaktivert","pl":"Wyłączył się alarm usterki pompy","ru":"Сигнал о неисправности насосного устройства выключен","sv":"Larmet för fel på pumpenheten inaktiverat","es":"La alarma de fallo en el dispositivo de bombeo se ha desactivado","fr":"L\'alarme de défaut de l\'appareil de pompage s\'est désactivée","ar":"تم إيقاف إنذار عطل جهاز المضخة","de":"Der Fehleralarm der Pumpvorrichtung wurde deaktiviert."}}],"conditions":[{"id":"alarm_pump_device","title":{"en":"The pump device fault alarm is !{{on|off}}","nl":"De waarschuwing van fout bij pompapparaat is !{{geactiveerd|gedeactiveerd}}","da":"Pumpeenhedens fejlalarm er !{{tændt|slukket}}","it":"L\'allarme di guasto del dispositivo di pompaggio è !{{acceso|spento}}","ko":"펌프 기기!{{에서 결함이 감지되면|가 정상 상태이면}}","no":"Pumpeenhetens feilalarm er !{{på|av}}","pl":"Alarm usterki pompy jest !{{włączony|wyłączony}}","ru":"Сигнал о неисправности насосного устройства !{{включен|выключен}}","sv":"Larmet för fel på pumpenheten är !{{på|av}}","es":"La alarma de fallo en el dispositivo de bombeo está !{{activada|desactivada}}","fr":"L\'alarme de défaut de l\'appareil de pompage est !{{activé|désactivé}}","ar":"إنذار عطل جهاز المضخة !{{يعمل|لا يعمل}}","de":"Der Fehleralarm der Pumpvorrichtung ist !{{aktiviert|deaktiviert}}."}}]},"minCompatibility":"12.2.0"}')},4541:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Closed","nl":"Gesloten","de":"Geschlossen","fr":"Fermé","it":"Chiuse","sv":"Stängd","no":"Lukket","es":"Cerrados","da":"Lukket","ru":"Закрыто","pl":"Zasunięte","ko":"창문 커버","ar":"مغلق"},"color":"#F5B207","getable":true,"setable":true,"uiComponent":"toggle","$flow":{"triggers":[{"id":"windowcoverings_closed_true","title":{"en":"Closed","nl":"Gesloten","de":"Geschlossen","fr":"Fermé","it":"Chiuse","sv":"Stängd","no":"Lukket","es":"Cerrados","da":"Lukket","ru":"Закрыто","pl":"Zasunięte","ko":"창문 커버가 닫히면","ar":"مغلق"}},{"id":"windowcoverings_closed_false","title":{"en":"Opened","nl":"Geopend","de":"Offen","fr":"Ouvert","it":"Aperte","sv":"Öppen","no":"Åpen","es":"Abiertos","da":"Åben","ru":"Открыто","pl":"Rozchylone","ko":"창문 커버가 열리면","ar":"مفتوح"}}],"conditions":[{"id":"closed","title":{"en":"Are !{{closed|opened}}","nl":"Zijn !{{gesloten|geopend}}","de":"Sind !{{geschlossen|offen}}","fr":"Sont !{{fermés|ouverts}}","it":"Sono !{{chiuse|aperte}}","sv":"Är !{{stängda|öppnade}}","no":"Er !{{lukket|åpen}}","es":"Están !{{cerrados|abiertos}}","da":"Er !{{lukket|åben}}","ru":"!{{закрыты|открыты}}","pl":"Są !{{zasunięte|rozchylone}}","ko":"창문 커버가 !{{닫히면|열리면}}","ar":"!{{مغلقة|مفتوحة}}"}}],"actions":[{"id":"close","highlight":true,"title":{"en":"Close","nl":"Sluiten","de":"Schließen","fr":"Fermer","it":"Chiudi","sv":"Stäng","no":"Lukk","es":"Cerrar","da":"Luk","ru":"Закрыть","pl":"Zasuń","ko":"창문 커버 닫기","ar":"إغلاق"}},{"id":"open","highlight":true,"title":{"en":"Open","nl":"Openen","de":"Öffnen","fr":"Ouvrir","it":"Apri","sv":"Öppna","no":"Åpne","es":"Abrir","da":"Åbn","ru":"Открыть","pl":"Rozchyl","ko":"창문 커버 열기","ar":"فتح"}},{"id":"toggle","title":{"en":"Toggle open or closed","nl":"Schakel tussen geopend en gesloten","de":"Offen/Geschlossen umschalten","fr":"Alterner ouvert/fermé","it":"Alterna aperte/chiuse","sv":"Växla mellan öppen eller stängd","no":"Veksle mellom åpen og lukket","es":"Abrir o cerrar","da":"Skift mellem åben og lukket","ru":"Переключатель открыть/закрыть","pl":"Przełącz na rozchylone lub zasłonięte","ko":"창문 커버 열림/닫힘 상태 전환하기","ar":"تبديل بين الفتح أو الإغلاق"}}]}}')},4551:(e,t,a)=>{"use strict";var r=a(1030);function i(e,t,a){this.message=a||i.message(e,t),this.missingRef=r.url(e,t),this.missingSchema=r.normalizeId(r.fullPath(this.missingRef))}function n(e){return e.prototype=Object.create(Error.prototype),e.prototype.constructor=e,e}e.exports={Validation:n((function(e){this.message="validation failed",this.errors=e,this.ajv=this.validation=!0})),MissingRef:n(i)},i.message=function(e,t){return"can't resolve reference "+t+" from id "+e}},4560:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Hood","da":"Emhætte","de":"Abzugshaube","es":"Campana extractora","fr":"Hotte","it":"Cappa","ko":"후드","nl":"Afzuigkap","no":"Vifte","pl":"Okap","ru":"Вытяжка","sv":"Fläkt","ar":"شفاط"},"description":{"en":"User this device class for any kind of extractor hood.","da":"Brug denne enhedsklasse til enhver form for emhætte.","de":"Verwenden Sie diese Geräteklasse für alle Arten von Dunstabzugshauben.","es":"Utiliza esta clase de dispositivo para cualquier tipo de campana extractora.","fr":"Utilisez cette classe d\'appareils pour tout type de hotte aspirante.","it":"Utilizza questa classe di dispositivi per qualsiasi tipo di cappa aspirante.","nl":"Gebruik deze apparaatklasse voor elk type afzuigkap.","no":"Bruk denne enhetsklassen for alle slags avtrekksvifter.","pl":"Tej klasy urządzeń należy używać w przypadku każdego rodzaju okapu.","ru":"Используйте этот класс устройств для вытяжек любого типа.","sv":"Använd den här enhetsklassen för alla typer av köksfläktar.","ko":"이 디바이스 클래스는 모든 종류의 환풍기 후드에 사용합니다.","ar":"استخدم فئة الجهاز هذه لأي نوع من شفاطات المطبخ."},"minCompatibility":"12.0.0"}')},4631:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Track","nl":"Track","de":"Track","fr":"Titre","it":"Traccia","sv":"Spår","no":"Spor","es":"Pista","da":"Spor","ru":"Трек","pl":"Utwór","ko":"트랙","ar":"المسار"},"type":"string","color":"#9033FC","getable":true,"setable":false,"uiComponent":"media","$flow":{"triggers":[{"id":"speaker_track_changed","title":{"en":"The track changed","nl":"De track is veranderd","de":"Der Track hat sich geändert","fr":"Le titre a été modifié","it":"La traccia è cambiata","sv":"Spåret ändrades","no":"Sporet ble endret","es":"La pista ha cambiado","da":"Sporet skiftede","ru":"Трек изменен","pl":"Zmiana utworu","ko":"트랙이 변경되면","ar":"تغير المسار"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":"My World"}]}]}}')},4636:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Curtains","nl":"Gordijnen","de":"Vorhänge","fr":"Rideaux","it":"Tende","sv":"Gardiner","no":"Gardiner","es":"Cortinas","da":"Gardiner","ru":"Шторы","pl":"Zasłony","ko":"커튼","ar":"ستائر"},"description":{"en":"Use this device class for curtains.","de":"Nutze diese Geräteklasse für Vorhänge.","fr":"Utilisez cette classe d\'appareil pour les rideaux.","it":"Utilizza questa classe di dispositivi per le tende.","sv":"Använd den här enheten för gardiner.","no":"Bruk denne enheten for gardiner.","es":"Utiliza esta clase de dispositivo para las cortinas.","da":"Brug denne enhedsklasse til gardiner.","ru":"Используйте этот класс устройств для штор.","pl":"Użyj tej klasy urządzeń dla zasłon.","ko":"이 디바이스 클래스는 커튼에 사용합니다.","ar":"استخدم فئة الجهاز هذه للستائر.","nl":"Gebruik deze apparaatklasse voor gordijnen."}}')},4667:e=>{"use strict";e.exports=function(e,t,a){var r,i=" ",n=e.level,s=e.dataLevel,o=e.schema[t],l=e.schemaPath+e.util.getProperty(t),d=e.errSchemaPath+"/"+t,u=!e.opts.allErrors,m="data"+(s||""),p=e.opts.$data&&o&&o.$data;p?(i+=" var schema"+n+" = "+e.util.getData(o.$data,s,e.dataPathArr)+"; ",r="schema"+n):r=o;var c="maximum"==t,g=c?"exclusiveMaximum":"exclusiveMinimum",h=e.schema[g],v=e.opts.$data&&h&&h.$data,f=c?"<":">",k=c?">":"<",y=void 0;if(!p&&"number"!=typeof o&&void 0!==o)throw new Error(t+" must be number");if(!v&&void 0!==h&&"number"!=typeof h&&"boolean"!=typeof h)throw new Error(g+" must be number or boolean");if(v){var b,w=e.util.getData(h.$data,s,e.dataPathArr),z="exclusive"+n,P="exclType"+n,_="exclIsNumber"+n,S="' + "+(E="op"+n)+" + '";i+=" var schemaExcl"+n+" = "+w+"; ",i+=" var "+z+"; var "+P+" = typeof "+(w="schemaExcl"+n)+"; if ("+P+" != 'boolean' && "+P+" != 'undefined' && "+P+" != 'number') { ",y=g,(b=b||[]).push(i),i="",!1!==e.createErrors?(i+=" { keyword: '"+(y||"_exclusiveLimit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(d)+" , params: {} ",!1!==e.opts.messages&&(i+=" , message: '"+g+" should be boolean' "),e.opts.verbose&&(i+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),i+=" } "):i+=" {} ";var A=i;i=b.pop(),!e.compositeRule&&u?e.async?i+=" throw new ValidationError(["+A+"]); ":i+=" validate.errors = ["+A+"]; return false; ":i+=" var err = "+A+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",i+=" } else if ( ",p&&(i+=" ("+r+" !== undefined && typeof "+r+" != 'number') || "),i+=" "+P+" == 'number' ? ( ("+z+" = "+r+" === undefined || "+w+" "+f+"= "+r+") ? "+m+" "+k+"= "+w+" : "+m+" "+k+" "+r+" ) : ( ("+z+" = "+w+" === true) ? "+m+" "+k+"= "+r+" : "+m+" "+k+" "+r+" ) || "+m+" !== "+m+") { var op"+n+" = "+z+" ? '"+f+"' : '"+f+"='; ",void 0===o&&(y=g,d=e.errSchemaPath+"/"+g,r=w,p=v)}else if(S=f,(_="number"==typeof h)&&p){var E="'"+S+"'";i+=" if ( ",p&&(i+=" ("+r+" !== undefined && typeof "+r+" != 'number') || "),i+=" ( "+r+" === undefined || "+h+" "+f+"= "+r+" ? "+m+" "+k+"= "+h+" : "+m+" "+k+" "+r+" ) || "+m+" !== "+m+") { "}else _&&void 0===o?(z=!0,y=g,d=e.errSchemaPath+"/"+g,r=h,k+="="):(_&&(r=Math[c?"min":"max"](h,o)),h===(!_||r)?(z=!0,y=g,d=e.errSchemaPath+"/"+g,k+="="):(z=!1,S+="=")),E="'"+S+"'",i+=" if ( ",p&&(i+=" ("+r+" !== undefined && typeof "+r+" != 'number') || "),i+=" "+m+" "+k+" "+r+" || "+m+" !== "+m+") { ";return y=y||t,(b=b||[]).push(i),i="",!1!==e.createErrors?(i+=" { keyword: '"+(y||"_limit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(d)+" , params: { comparison: "+E+", limit: "+r+", exclusive: "+z+" } ",!1!==e.opts.messages&&(i+=" , message: 'should be "+S+" ",i+=p?"' + "+r:r+"'"),e.opts.verbose&&(i+=" , schema: ",i+=p?"validate.schema"+l:""+o,i+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),i+=" } "):i+=" {} ",A=i,i=b.pop(),!e.compositeRule&&u?e.async?i+=" throw new ValidationError(["+A+"]); ":i+=" validate.errors = ["+A+"]; return false; ":i+=" var err = "+A+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",i+=" } ",u&&(i+=" else { "),i}},4683:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Garage Door","nl":"Garagedeur","de":"Garagentor","fr":"Porte de garage","it":"Porta del garage","sv":"Garagedörr","no":"Garasjeport","es":"Puerta de garaje","da":"Garageport","ru":"Дверь гаража","pl":"Brama garażowa","ko":"차고 문","ar":"باب المرآب"},"description":{"en":"Use this device class for garage doors, usually together with the `garagedoor_closed` capability.","ru":"Используйте этот класс устройств для дверей гаража, обычно вместе с функцией `garagedoor_closed`.","pl":"Użyj tej klasy urządzeń dla bram garażowych, zwykle razem ze zdolnością „garagedoor_closed”.","ko":"이 디바이스 클래스는 보통 \'garagedoor_closed\' 기능을 갖춘 차고 문에 사용합니다.","no":"Bruk denne enhetsklassen for garasjeporter, vanligvis sammen med funksjonen «garagedoor_closed».","ar":"استخدم فئة الجهاز هذه لأبواب المرآب، عادةً مع ميزة \'garagedoor_closed\'.","da":"Brug denne enhedsklasse til garageporte, normalt sammen med funktionen `garagedoor_closed`.","de":"Verwende diese Geräteklasse für Garagentore, in der Regel in Verbindung mit der Funktion „garagedoor_closed“.","es":"Utiliza esta clase de dispositivos para puertas de garaje (generalmente junto con la capacidad \\"garagedoor_closed\\").","fr":"Utilisez cette classe d\'appareils pour les portes de garage, généralement en association avec la fonctionnalité `garagedoor_closed`.","it":"Utilizza questa classe di dispositivi per le porte del garage, di solito insieme alla funzionalità `garagedoor_closed`.","nl":"Gebruik deze apparaatklasse voor garagedeuren, meestal samen met de optie \'garagedoor_closed\'.","sv":"Använd den här enhetsklassen för garageportar, vanligtvis tillsammans med funktionen `garagedoor_closed`."}}')},4686:(e,t,a)=>{"use strict";var r=a(4551).MissingRef;e.exports=function e(t,a,i){var n=this;if("function"!=typeof this._opts.loadSchema)throw new Error("options.loadSchema should be a function");"function"==typeof a&&(i=a,a=void 0);var s=o(t).then((function(){var e=n._addSchema(t,void 0,a);return e.validate||l(e)}));return i&&s.then((function(e){i(null,e)}),i),s;function o(t){var a=t.$schema;return a&&!n.getSchema(a)?e.call(n,{$ref:a},!0):Promise.resolve()}function l(e){try{return n._compile(e)}catch(t){if(t instanceof r)return function(t){var r=t.missingSchema;if(d(r))throw new Error("Schema "+r+" is loaded but "+t.missingRef+" cannot be resolved");var i=n._loadingSchemas[r];return i||(i=n._loadingSchemas[r]=n._opts.loadSchema(r)).then(s,s),i.then((function(e){if(!d(r))return o(e).then((function(){d(r)||n.addSchema(e,r,void 0,a)}))})).then((function(){return l(e)}));function s(){delete n._loadingSchemas[r]}function d(e){return n._refs[e]||n._schemas[e]}}(t);throw t}}}},4792:(e,t,a)=>{"use strict";e.exports={detect:function(e){return 0===e.readUInt16LE(0)&&2===e.readUInt16LE(2)},calculate:a(6459).calculate}},4861:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Progress","ar":"التقدم المحرز","da":"Fremskridt","de":"Fortschritt","es":"Progreso","fr":"En cours","it":"Avanzamento","ko":"진행률","nl":"Voortgang","no":"Fremdrift","pl":"Postęp","ru":"Ход выполнения","sv":"Förlopp"},"units":{"en":"%","ar":"%","da":"%","de":"%","es":"%","fr":"%","it":"%","ko":"%","nl":"%","no":" %","pl":"%","ru":"%","sv":"%"},"desc":{"en":"The the percentage of the current task that is completed. When the task is currently not active the capability should be set to `null`","ar":"النسبة المئوية للمهمة الحالية التي اكتملت. عندما تكون المهمة غير نشطة حاليًا يجب تعيين الإمكانية على \'null\' (لاغية)","da":"Den procentdel af den aktuelle opgave, der er afsluttet. Når opgaven ikke er aktiv i øjeblikket, skal kapaciteten sættes til `null`","de":"Der Prozentsatz der aktuellen Aufgabe, der schon erledigt ist. Wenn die Aufgabe gerade nicht aktiv ist, sollte die Funktion auf „null“ gesetzt werden.","es":"El porcentaje de la tarea actual que se ha completado. Si la tarea no está activa en ese momento, el valor ha de ser \\"nulo\\".","fr":"Pourcentage de la tâche en cours qui est terminé. Lorsque la tâche n\'est pas active, la fonctionnalité doit être définie sur « null ».","it":"La percentuale dell\'attività corrente che è stata completata. Quando l\'attività non è attiva, la capacità deve essere impostata a \\"null\\"","ko":"현재 작업에서 완료된 비율입니다. 작업이 현재 활성이 아니라면 기능이 \'null\'로 설정되어야 합니다.","nl":"Het percentage van de huidige taak die is voltooid. Als de taak momenteel niet actief is, moet de functie worden ingesteld op `null`","no":"Fullført prosentandel av den aktuelle oppgaven. Når oppgaven ikke er aktiv, skal funksjonen settes til `null`","pl":"Procent ukończenia bieżącego zadania. Gdy zadanie nie jest aktualnie aktywne, właściwość powinna być ustawiona na „brak”","ru":"Процент выполнения текущей задачи. Если задача в данный момент не активна, значение параметра следует установить на null","sv":"Den procentandel av den aktuella uppgiften som är slutförd. När uppgiften för närvarande inte är aktiv bör kapaciteten sättas till `null`"},"insights":true,"chartType":"stepLine","min":0,"max":100,"decimals":2,"color":"#6DD400","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"progress_changed","title":{"en":"The progress changed","ar":"تغير التقدم المحرز","da":"Fremskridtet ændrede sig","de":"Der Fortschritt hat sich verändert","es":"El progreso ha cambiado","fr":"La progression a changé","it":"L\'avanzamento è cambiato","ko":"진행률이 변경되면","nl":"De voortgang is veranderd","no":"Fremdriften ble endret","pl":"Postęp się zmienił","ru":"Значение хода выполнения изменилось","sv":"Förloppet förändrades"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":0.5}]}]},"minCompatibility":"12.11.0"}')},4946:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Button","nl":"Knop","de":"Taste","fr":"Bouton","it":"Pulsante","sv":"Knapp","no":"Knapp","es":"Botón","da":"Knap","ru":"Кнопка","pl":"Przycisk","ko":"버튼","ar":"زر"},"type":"boolean","color":"#9033FC","getable":false,"setable":true,"uiComponent":"button","uiQuickAction":true,"$flow":{"actions":[{"id":"press","title":{"en":"Press the button","nl":"Druk op de knop","de":"Drücke die Taste","fr":"Appuyer sur le bouton","it":"Premi il pulsante","sv":"Tryck på knappen","no":"Trykk på knappen","es":"Pulsa el botón","da":"Tryk på knappen","ru":"Нажмите кнопку","pl":"Naciśnij przycisk","ko":"버튼 누르기","ar":"اضغط على الزر"}}]}}')},4963:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Bicycle","da":"Cykel","de":"Fahrrad","es":"Bicicleta","fr":"Vélo","it":"Bicicletta","ko":"자전거","nl":"Fiets","no":"Sykkel","pl":"Rower","ru":"Велосипед","sv":"Cykel","ar":"دراجة هوائية"},"description":{"en":"Use this device class for bicycles.","da":"Brug denne enhedsklasse til cykler.","de":"Verwenden Sie diese Geräteklasse für Fahrräder.","es":"Utiliza esta clase de dispositivo para bicicletas.","fr":"Utilisez cette classe d\'appareils pour les vélos.","it":"Utilizza questa classe di dispositivi per le biciclette.","ko":"이 디바이스 클래스는 자전거에 사용합니다.","nl":"Gebruik deze apparaatklasse voor fietsen.","no":"Bruk denne enhetsklassen for sykler.","pl":"Ta klasa urządzeń jest przeznaczona dla rowerów.","ru":"Используйте этот класс устройств для велосипедов.","sv":"Använd den här enhetsklassen för cyklar.","ar":"استخدم فئة الجهاز هذه للدراجات الهوائية."},"minCompatibility":"12.0.0"}')},4966:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Gas meter","nl":"Gasmeter","de":"Gaszähler","fr":"Compteur de gaz","it":"Contatore del gas","sv":"Gasmätare","no":"Gassmåler","es":"Contador de gas","da":"Gasmåler","ru":"Счетчик газа","pl":"Licznik gazowy","ko":"가스량","ar":"عداد الغاز"},"min":0,"decimals":3,"chartType":"spline","units":{"en":"m³","ru":"м³","ko":"m³","no":"m³","ar":"م³","da":"m³","de":"m³","es":"m³","fr":"m³","it":"m³","nl":"m³","pl":"m³","sv":"m³"},"desc":{"en":"Gas usage in cubic meter (m³)","nl":"Gas gebruik in kubieke meter (m³)","de":"Gasverbrauch in Kubikmeter (m³)","fr":"Consommation de gaz en mètres cubes (m³)","it":"Consumo di gas in metri cubi (m³)","sv":"Gasanvändning i kubikmeter (m³)","no":"Gassforbruk i kubikkmeter (m³)","es":"Consumo de gas en metros cúbicos (m³)","da":"Gasforbrug i kubikmeter (m³)","ru":"Использование газа в кубометрах (м³)","pl":"Zużycie gazu w metrach sześciennych (m³)","ko":"가스 사용량 입방미터(m³)","ar":"استهلاك الغاز بالمتر المكعب (m³)"},"color":"#F9236C","insights":true,"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"meter_gas_changed","title":{"en":"The gas meter changed","nl":"De gasmeter is veranderd","de":"Der Gaszähler hat sich geändert","fr":"Le compteur de gaz a changé","it":"Il contatore del gas è cambiato","sv":"Gasmätaren ändrades","no":"Gassmåleren ble endret","es":"El contador de gas ha cambiado","da":"Gasmåleren ændrede sig","ru":"Измерения счетчика газа изменились","pl":"Zmiana w liczniku gazowym","ko":"가스량이 변경되면","ar":"تغير عداد الغاز"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":25}]}]}}')},5003:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Ozone Level","nl":"Ozonniveau","da":"Ozon-niveau","it":"Livello di ozono","ko":"오존 수준","pl":"Poziom ozonu","ru":"Уровень озона","sv":"Ozonnivå","es":"Nivel de ozono","fr":"Niveau d\'ozone","no":"Ozonnivå","ar":"مستوى الأوزون","de":"Ozongehalt"},"desc":{"en":"The level of ozone in the air.","nl":"De mate van ozon in de lucht.","da":"Niveauet af ozon i luften.","it":"Il livello di ozono nell\'aria.","ko":"공기 중 오존 수준입니다.","pl":"Poziom ozonu w powietrzu.","ru":"Уровень содержания озона в воздухе.","sv":"Halten av ozon i luften.","es":"El nivel de ozono en el aire.","fr":"Le niveau d\'ozone dans l\'air.","no":"Nivået av ozon i luften.","ar":"مستوى الأوزون في الهواء.","de":"Der Ozongehalt der Luft."},"values":[{"id":"low","title":{"en":"Low","nl":"Laag","da":"Lavt","it":"Basso","ko":"낮음","pl":"Niski","ru":"Низкий","sv":"Låg","es":"Bajo","fr":"Faible","no":"Lavt","ar":"منخفض","de":"Niedrig"}},{"id":"medium","title":{"en":"Medium","nl":"Gemiddeld","da":"Medium","it":"Medio","ko":"보통","pl":"Średni","ru":"Средний","sv":"Medium","es":"Intermedio","fr":"Moyen","no":"Middels","ar":"متوسط","de":"Mittel"}},{"id":"high","title":{"en":"High","nl":"Hoog","da":"Højt","it":"Alto","ko":"높음","pl":"Wysoki","ru":"Высокий","sv":"Hög","es":"Alto","fr":"Élevé","no":"Høyt","ar":"عالي","de":"Hoch"}},{"id":"critical","title":{"en":"Critical","nl":"Kritiek","da":"Kritisk","it":"Critico","ko":"위험","pl":"Krytyczny","ru":"Критический","sv":"Kritisk","es":"Crítico","fr":"Critique","no":"Kritisk\\n","ar":"حرج","de":"Kritisch"}}],"color":"#E02020","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"level_o3_changed","highlight":true,"title":{"en":"The ozone level changed to","nl":"Het ozonniveau is veranderd naar","da":"Ozonniveauet ændrede sig til","it":"Il livello di ozono è passato a","ko":"오존 수준이 다음으로 변경되면","pl":"Poziom ozonu zmienił się na","ru":"Уровень озона изменился на","sv":"Ozonnivån ändrades till","es":"El nivel de ozono ha cambiado a","fr":"Le niveau d\'ozone est passé à","no":"Ozonnivået ble endret til","ar":"تغير مستوى الأوزون إلى","de":"Der Ozonwert hat sich geändert auf"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"level_o3_is","title":{"en":"The ozone level !{{is|is not}}","nl":"Het ozonniveau !{{is|is niet}}","da":"Ozonniveauet !{{er|er ikke}}","it":"Il livello di ozono !{{è|non è}}","ko":"오존 수준이 다음!{{이면|이 아니면}}","pl":"Poziom ozonu !{{jest|nie jest}}","ru":"Уровень озона !{{|не}}","sv":"Ozonnivån !{{är|är inte}}","es":"El nivel de ozono !{{es|no es}}","fr":"Le niveau d\'ozone !{{est|n\'est pas}}","no":"Ozonnivået !{{er|er ikke}}","ar":"مستوى الأوزون !{{هو|ليس}}","de":"Der Ozonwert !{{ist|ist nicht}}"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.2.0"}')},5062:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Minimum target humidity","nl":"Minimale gewenste vochtigheid","da":"Minimum målfugtighed","it":"Umidità target minima","ko":"최저 희망 습도","pl":"Minimalna docelowa wilgotność","ru":"Минимальная заданная влажность","sv":"Lägsta önskade luftfuktighet","es":"Humedad mínima deseada","fr":"Humidité cible minimale","no":"Minimum ønsket fuktighet","ar":"الحد الأدنى للرطوبة المستهدفة","de":"Minimale Zielfeuchtigkeit"},"units":{"en":"%","nl":"%","da":"%","it":"%","ko":"%","pl":"%","ru":"%","sv":"%","es":"%","fr":" %","no":"%","ar":"%","de":"%"},"desc":{"en":"The low end of the target humidity level in percent.","nl":"Het laagste niveau van de gewenste vochtigheid in procenten.","da":"Den lave ende af den ønskede luftfugtighed i procent.","it":"Il livello minimo di umidità target in percentuale.","ko":"백분율로 표현한 목표 습도의 최소치입니다.","pl":"Dolna granica docelowego poziomu wilgotności w procentach.","ru":"Нижний предел заданного уровня влажности в процентах.","es":"El valor inferior del nivel de humedad objetivo en porcentaje.","fr":"Le niveau minimal d\'humidité cible en pourcentage.","no":"Minimum ønsket fuktighetsnivå i prosent.","ar":"الحد الأدنى لمستوى الرطوبة المستهدف بالنسبة المئوية.","de":"Das untere Ende der Zielfeuchtigkeit in Prozent.","sv":"Den nedre delen av den önskade luftfuktighetsnivån i procent."},"insights":true,"chartType":"stepLine","decimals":2,"min":0,"max":1,"color":"#0091FF","getable":true,"setable":true,"uiComponent":"slider","$flow":{"triggers":[{"id":"target_humidity_min_changed","title":{"en":"The minimum target humidity has changed","nl":"De minimale gewenste vochtigheid is veranderd","da":"Minimum målfugtighed er ændret","it":"L\'umidità target minima è cambiata","ko":"최저 희망 습도가 변경되면","no":"Minimum ønsket fuktighet er endret","pl":"Zmieniła się minimalna docelowa wilgotność","ru":"Минимальная заданная влажность изменена","sv":"Den lägsta önskade luftfuktigheten har ändrats","es":"La humedad mínima deseada ha cambiado","fr":"L\'humidité minimale cible a changé","ar":"تغير الحد الأدنى للرطوبة المستهدفة","de":"Die minimale Zielfeuchtigkeit wurde geändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":50}]}],"actions":[{"id":"set_target_humidity_min","title":{"en":"Set the minimum target humidity","nl":"De minimale gewenste vochtigheid instellen","da":"Indstil minimum målfugtighed","it":"Imposta l\'umidità target minima","ko":"최저 희망 습도 설정","pl":"Ustaw minimalną docelową wilgotność","ru":"Установить минимальную заданную влажность","sv":"Ställ in lägsta önskade luftfuktighet","es":"Ajustar la humedad mínima deseada","fr":"Définir l\'humidité minimale cible","no":"Angi minimum ønsket fuktighet","ar":"ضبط الحد الأدنى للرطوبة المستهدفة","de":"Einstellen der minimalen Zielfeuchtigkeit"},"args":[{"name":"target_humidity_min","type":"range","min":0,"max":1,"step":0.01,"value":0.5,"label":"%","labelMultiplier":100,"labelDecimals":0}]}]},"minCompatibility":"12.2.0"}')},5075:e=>{"use strict";function t(e,t,a){let r=!0;return e instanceof Array?e.forEach((e=>{(ea)&&(r=!1)})):"number"==typeof e&&(ea)&&(r=!1),r}function a(e){return"string"==typeof e&&/^(([0-9a-f]{4}\s?){2}){2,}$/i.test(e)}const r=1,i=0,n=.5;function s(e,t){const a={result:!0,msg:`invalid_${this}`};return e instanceof Array?(t.packing?e.some((e=>!(e>=0&&e<=255)))&&(a.result=!1):e.some((e=>!t.words||!t.words[e]))&&(a.result=!1),a):(a.result=!1,a)}const o={words(e,t){const a={result:!0,msg:"invalid_words"};return!(e instanceof Array)||e.length<=1?(a.result=!1,a):(e.forEach((e=>{if(!(e instanceof Array)||e.length<=1)return a.result=!1,a})),a)},agc:(e,t)=>({result:e instanceof Array,msg:"invalid_agc"}),sof:(e,t)=>({result:e instanceof Array,msg:"invalid_sof"}),toggleSof:(e,t)=>({result:e instanceof Array,msg:"invalid_toggleSof"}),eof:(e,t)=>({result:e instanceof Array,msg:"invalid_eof"}),manchesterUnit:(e,t)=>({result:"number"==typeof e,msg:"invalid_manchesterUnit"}),manchesterMaxUnits:(e,t)=>({result:"number"==typeof e&&e>=r,msg:"invalid_manchesterMaxUnits"}),sensitivity:(e,a)=>({result:"number"==typeof e&&t(e,i,n),msg:"invalid_sensitivity"}),interval:(e,t)=>({result:"number"==typeof e,msg:"invalid_signalinterval"}),minimalLength:(e,t)=>({result:e>0,msg:"invalid_minimalLength"}),maximalLength:(e,t)=>({result:e>0,msg:"invalid_maximalLength"}),packing:(e,t)=>({result:"boolean"==typeof e&&t.words&&2==t.words.length,msg:"invalid_packing"}),dutyCycle:(e,t)=>({result:"number"==typeof e,msg:"invalid_dutyCycle"}),txOnly:(e,t)=>({result:"boolean"==typeof e,msg:"invalid_txOnly"}),cmds(e,t){const a={result:!0,msg:"invalid_cmd"};return Object.keys(e).forEach((r=>{s(e[r],t).result||(a.result=!1)})),a},toggleIndexes:(e,t)=>({result:e instanceof Array&&!e.some((e=>e>=t.sof.length)),msg:"invalid_toggleIndexes"}),toggleBits:(e,t)=>({result:e instanceof Array,msg:"invalid_toggleBits"}),prefixData:s.bind("prefixData"),postfixData:s.bind("postfixData")},l={timeInterval:{min:5,max:32767},manchesterInterval:{min:0,max:1},rxTimeout:{min:0,max:255},repetitions:{min:1,max:255}},d={words(e,a){const r={result:!0,msg:"word_interval_out_of_bounds"},i=a.hasOwnProperty("manchesterUnit")?l.manchesterInterval:l.timeInterval;return e.forEach((e=>{t(e,i.min,i.max)||(r.result=!1)})),r},agc(e,a){const r=a.hasOwnProperty("manchesterUnit")?l.manchesterInterval:l.timeInterval;return{result:t(e,r.min,r.max),msg:"agc_out_of_bounds"}},toggleSof(e,a){const r=a.hasOwnProperty("manchesterUnit")?l.manchesterInterval:l.timeInterval;return{result:t(e,r.min,r.max),msg:"toggleSof_out_of_bounds"}},sof(e,a){const r=a.hasOwnProperty("manchesterUnit")?l.manchesterInterval:l.timeInterval;return{result:t(e,r.min,r.max),msg:"sof_out_of_bounds"}},eof(e,a){const r=a.hasOwnProperty("manchesterUnit")?l.manchesterInterval:l.timeInterval;return{result:t(e,r.min,r.max),msg:"eof_out_of_bounds"}},repetitions:(e,a)=>({result:t(e,l.repetitions.min,l.repetitions.max),msg:"repetitions_out_of_bounds"}),interval:(e,a)=>({result:t(e,l.timeInterval.min,l.timeInterval.max),msg:"interval_out_of_bounds"}),rxTimeout:(e,a)=>({result:t(e,l.rxTimeout.min,l.rxTimeout.max),msg:"rxTimeout_out_of_bounds"}),manchesterUnit:(e,a)=>({result:t(e,l.timeInterval.min,l.timeInterval.max),msg:"manchesterUnit_out_of_bounds"})},u=1e3,m=2e5,p=58e3,c=812e3,g=5e3,h=5e4,v={modulation(e,a){const r=["type","baudRate","channelSpacing","channelDeviation"],i={result:!0,msg:"invalid_modulation_properties"};for(let t=0;t({result:!Object.keys(e).some((t=>!a(e[t]))),msg:"invalid_pronto_cmds"}),toggleCmds:(e,t)=>({result:!Object.keys(e).some((t=>!a(e[t]))),msg:"invalid_pronto_toggleCmds"}),repetitions:(e,a)=>({result:t(e,l.repetitions.min,l.repetitions.max),msg:"repetitions_out_of_bounds"})},k={carrier:(e,a)=>({result:t(e,433e6,43399e4),msg:"carrier_out_of_bounds"})},y=868e6,b=8689e5,w={carrier:(e,a)=>({result:t(e,y,b),msg:"carrier_out_of_bounds"})},z=3e4,P=58e3,_=30,S=70,A={carrier:(e,a)=>({result:t(e,z,P),msg:"invalid_carrier"}),dutyCycle:(e,a)=>({result:t(e,_,S),msg:"dutyCycle_out_of_bounds"})};e.exports={validate:function(e,t,a){for(const r in a){const i=a[r],n=e[r];if("function"==typeof n){const e=n(i,a);t(e.msg,e.result)}}},genericValidator:o,irValidator:A,rfValidator:d,rf433Validator:k,rf868Validator:w,modulationValidator:v,prontoValidator:f}},5091:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Vacuum cleaner state","de":"Staubsauger-Status","fr":"Etat de l\'aspirateur","it":"Stato dell\'aspirapolvere","sv":"Dammsugarstatus","no":"Støvsugerstatus","es":"Modo de la aspiradora","da":"Støvsugerstatus","ru":"Состояние пылесоса","pl":"Stan odkurzacza","ko":"청소기 상태","ar":"حالة المكنسة الكهربائية","nl":"Stofzuigerstatus"},"values":[{"id":"cleaning","title":{"en":"Cleaning","nl":"Stofzuigen","de":"Staubsaugen","fr":"Aspirer","it":"Pulizia in corso","sv":"Städning","no":"Rengjøring","es":"Aspirando","da":"Støvsuger","ru":"Идет уборка","pl":"Sprzątanie","ko":"청소 중","ar":"تنظيف"}},{"id":"spot_cleaning","title":{"en":"Spot cleaning","nl":"Vlek schoonmaken","de":"Spot-Reinigung","fr":"Détacher","it":"Pulizia delle macchie","sv":"Områdesstädning","no":"Områderengjøring","es":"Aspirando un punto concreto","da":"Områdestøvsugning","ru":"Идет точечная уборка","pl":"Przestań sprzątać","ko":"집중 청소 중","ar":"تنظيف موضعي"}},{"id":"docked","title":{"en":"Docked","nl":"Op laadstation","de":"An Ladestation","fr":"Connecté à la base","it":"Connesso alla base","sv":"Dockad","no":"I ladestasjon","es":"En la base de carga","da":"I ladestation","ru":"На станции","pl":"W bazie","ko":"거치됨","ar":"قيد الإرساء"}},{"id":"charging","title":{"en":"Charging","nl":"Aan het opladen","de":"Lädt auf","fr":"En charge","it":"In carica","sv":"Laddar","no":"Lader","es":"Cargando","da":"Lader","ru":"Заряжается","pl":"Ładowanie","ko":"충전 중","ar":"قيد الشحن"}},{"id":"stopped","title":{"en":"Stopped","nl":"Gestopt","de":"Gestoppt","fr":"Arrêté","it":"Fermo","sv":"Stoppad","no":"Stanset","es":"Detenida","da":"Stoppet","ru":"Остановлен","pl":"Zatrzymano","ko":"정지","ar":"متوقف"}}],"color":"#0091FF","getable":true,"setable":true,"uiComponent":"picker","$flow":{"triggers":[{"id":"vacuumcleaner_state_changed","title":{"en":"The state changed to...","nl":"De status is veranderd naar...","de":"Der Status hat sich geändert auf...","fr":"L\'état est passé à...","it":"Lo stato è cambiato in...","sv":"Status ändrad till...","no":"Status endret til ...","es":"El estado ha cambiado a...","da":"Status er ændret til...","ru":"Состояние изменено на…","pl":"Zmiana stanu na...","ko":"청소기 상태가 변경되면","ar":"تم تغيير الحالة إلى..."},"args":[{"name":"state","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"vacuumcleaner_state_is","title":{"en":"The vacuum cleaner !{{is|is not}}","nl":"De stofzuiger !{{is|is niet}}","de":"Der Staubsauger !{{ist|ist nicht}}","fr":"L\'aspirateur !{{est|n\'est pas}}","it":"L\'aspirapolvere !{{è|non è}}","sv":"Dammsugaren !{{är|är inte}}","no":"Støvsugeren !{{er|er ikke}}","es":"La aspiradora !{{está|no está}}","da":"Støvsugeren !{{er|er ikke}}","ru":"Пылесос !{{|не}}","pl":"Stan odkurzacza !{{to|to nie}}","ko":"청소기 상태가 다음!{{이면|이 아니면}}","ar":"المكنسة الكهربائية !{{هي|ليست}}"},"args":[{"name":"state","type":"dropdown","values":"$values"}]}],"actions":[{"id":"clean","highlight":true,"title":{"en":"Start cleaning","nl":"Begin met stofzuigen","de":"Mit Staubsaugen anfangen","fr":"Commencer le nettoyage","it":"Avvia la pulizia","sv":"Börja städa","no":"Begynn rengjøring","es":"Comenzar a aspirar","da":"Begynd at støvsuge","ru":"Начать уборку","pl":"Zacznij sprzątać","ko":"청소 시작","ar":"بدء التنظيف"}},{"id":"spot_clean","title":{"en":"Start spot cleaning","nl":"Begin met pleksgewijs stofzuigen","de":"Mit Spot-Reinigung anfangen","fr":"Commencer le détachage","it":"Avvia la pulizia delle macchie","sv":"Starta områdesstädning","no":"Begynn områderengjøring","es":"Comenzar a aspirar un punto concreto","da":"Begynd at områdestøvsuge","ru":"Начать точечную уборку","pl":"Zacznij sprzątać punktowo","ko":"집중 청소 시작","ar":"بدء التنظيف الموضعي"}},{"id":"dock","highlight":true,"title":{"en":"Return to dock","nl":"Terug naar laadstation","de":"Zu Ladestation zurückkehren","fr":"Retourner à la base","it":"Ritorna alla base","sv":"Återgå till docka","no":"Gå tilbake til ladestasjon","es":"Volver a la base de carga","da":"Vend tilbage til ladestationen","ru":"Возвратиться на станцию","pl":"Wróć do bazy","ko":"도크로 복귀","ar":"العودة إلى المرساة"}},{"id":"stop","highlight":true,"title":{"en":"Stop","nl":"Stop","de":"Stop","fr":"Arrêter","it":"Arresta","sv":"Stopp","no":"Stans","es":"Detener","da":"Stop","ru":"Стоп","pl":"Przestań","ko":"중지","ar":"إيقاف"}}]}}')},5098:()=>{},5150:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Oven Mode","ar":"وضع الفرن","da":"Ovntilstand","de":"Backofen-Modus","es":"Modo horno","fr":"Mode de cuisson du four","it":"Modalità forno","ko":"오븐 모드","nl":"Ovenstand","no":"Ovnsmodus","pl":"Tryb piekarnika","ru":"Режим духовки","sv":"Ugnsläge"},"desc":{"en":"The oven mode.","ar":"وضع الفرن.","da":"Ovntilstanden.","de":"Der Ofenmodus.","es":"El modo horno.","fr":"Le mode de cuisson du four.","it":"La modalità del forno.","ko":"오븐 모드입니다.","nl":"De ovenstand.","no":"Ovnsmodusen.","pl":"Tryb piekarnika.","ru":"Режим духовки.","sv":"Ugnsläget."},"values":[{"id":"bake","title":{"en":"Bake","ar":"خبز","da":"Bage","de":"Backen","es":"Hornear","fr":"Cuire","it":"Cuocere","ko":"베이킹","nl":"Bakken","no":"Baking","pl":"Pieczenie","ru":"Выпечка","sv":"Baka"}},{"id":"convection","title":{"en":"Convection","ar":"الحمل الحراري","da":"Konvektion","de":"Umluft","es":"Convección","fr":"Convection","it":"Convezione","ko":"컨벡션","nl":"Hetelucht","no":"Varmluft","pl":"Konwekcja","ru":"Конвекция","sv":"Konvektion"}},{"id":"grill","title":{"en":"Grill","ar":"الشواية","da":"Grill","de":"Grill","es":"Gratinar","fr":"Gril","it":"Grigliare","ko":"그릴","nl":"Grillen","no":"Grilling","pl":"Grill","ru":"Гриль","sv":"Grill"}},{"id":"roast","title":{"en":"Roast","ar":"الشواء","da":"Stegt","de":"Braten","es":"Asar","fr":"Rôtir","it":"Cuocere arrosto","ko":"로스트","nl":"Braden","no":"Steking","pl":"Pieczenie","ru":"Обжарка","sv":"Stekning"}},{"id":"clean","title":{"en":"Clean","ar":"نظيفة","da":"Ren","de":"Reinigen","es":"Limpiar","fr":"Nettoyage","it":"Pulire","ko":"세척","nl":"Reinigen","no":"Rengjøring","pl":"Czyszczenie","ru":"Очистка","sv":"Ren"}},{"id":"convection_bake","title":{"en":"Convection Bake","ar":"الخَبز الحراري","da":"Konvektionsbagning","de":"Backen mit Umluft","es":"Horneado por convección","fr":"Cuisson par convection","it":"Cottura a convezione","ko":"컨벡션 베이킹","nl":"Hetelucht bakken","no":"Varmluftsbaking","pl":"Pieczenie konwekcyjne (bez tłuszczu)","ru":"Выпечка с конвекцией","sv":"Konvektionsbakning"}},{"id":"convection_roast","title":{"en":"Convection Roast","ar":"التحميص الحراري","da":"Konvektionsstegning","de":"Braten mit Umluft","es":"Asado por convección","fr":"Rôti par convection","it":"Cottura arrosto a convezione","ko":"컨벡션 로스트","nl":"Hetelucht braden","no":"Varmluftssteking","pl":"Pieczenie konwekcyjne (z tłuszczem)","ru":"Обжарка с конвекцией","sv":"Konvektionsstekning"}},{"id":"warming","title":{"en":"Warming","ar":"الاحترار","da":"Varmer op","de":"Erwärmen","es":"Calentamiento","fr":"Réchauffage","it":"Riscaldamento","ko":"보온","nl":"Verwarmen","no":"Oppvarming","pl":"Grzanie","ru":"Прогрев","sv":"Uppvärmning"}},{"id":"proofing","title":{"en":"Proofing","ar":"التدقيق","da":"Hæver","de":"Garen/gehen lassen","es":"Fermentación","fr":"Étuve","it":"Lievitazione","ko":"발효","nl":"Rijzen","no":"Heving","pl":"Odpoczywanie","ru":"Расстойка","sv":"Preparera"}},{"id":"steam","title":{"en":"Steam","ar":"البخار","da":"Damp","de":"Dampf","es":"Vapor","fr":"Vapeur","it":"Vapore","ko":"스팀","nl":"Stomen","no":"Damping","pl":"Parowanie","ru":"Пар","sv":"Ånga"}}],"color":"#FA6400","getable":true,"setable":true,"uiComponent":"picker","$flow":{"triggers":[{"id":"oven_mode_changed","highlight":true,"title":{"en":"The oven mode changed to","ar":"تغير وضع الفرن إلى","da":"Ovntilstanden ændrede sig til","de":"Der Ofenmodus wurde geändert auf","es":"El modo horno ha cambiado a","fr":"Le mode de cuisson du four est passé à","it":"La modalità del forno è passata a","ko":"오븐 모드가 다음으로 변경되면","nl":"De ovenstand veranderde naar","no":"Ovnsmodusen ble endret til","pl":"Tryb piekarnika zmienił się na","ru":"Режим духовки изменен на","sv":"Ugnsläget ändrades till"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"oven_mode_is","title":{"en":"The oven mode !{{is|is not}}","ar":"وضع الفرن !{{هو|ليس}}","da":"Ovntilstanden !{{er|er ikke}}","de":"Der Ofenmodus !{{ist|ist nicht}}","es":"El modo horno !{{está|no está}}","fr":"Le mode de cuisson du four !{{est|n\'est pas}}","it":"La modalità del forno !{{è|non è}}","ko":"오븐 모드가 다음!{{이면|이 아니면}}","nl":"De ovenstand !{{is|is niet}}","no":"Ovnsmodusen !{{er|er ikke}}","pl":"Tryb piekarnika !{{jest|nie jest}}","ru":"Режим духовки — !{{ | не}}","sv":"Ugnsläget !{{är|är inte}}"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}],"actions":[{"id":"set_oven_mode","title":{"en":"Set the oven mode to","ar":"ضبط وضع الفرن على","da":"Indstil ovntilstand til","de":"Stellen Sie den Ofenmodus auf","es":"Establece el modo horno en","fr":"Réglez le mode de cuisson du four sur","it":"Imposta la modalità del forno su","ko":"오븐 모드를 다음으로 설정","nl":"Stel de ovenstand in op","no":"Sett ovnsmodusen til","pl":"Ustaw tryb piekarnika na","ru":"Установить режим духовки на","sv":"Ställ in ugnsläget på"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.11.0"}')},5165:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"CO₂","nl":"CO₂","de":"CO₂","fr":"CO₂","it":"CO₂","sv":"CO₂","no":"CO₂","da":"CO₂","ru":"CO₂","pl":"CO₂","ko":"CO₂","ar":"ثاني أكسيد الكربون","es":"CO₂"},"units":{"en":"ppm","ru":"ч./млн.","ko":"ppm","no":"ppm","pl":"ppm","ar":"جزء في المليون","da":"ppm","de":"ppm","es":"ppm","fr":"ppm","it":"ppm","nl":"ppm","sv":"ppm"},"insights":true,"desc":{"en":"CO₂ in Parts-per-million (ppm)","nl":"CO₂-deeltjes per miljoen (ppm)","de":"CO₂ in Parts per million (ppm)","fr":"CO₂ en parties par million (ppm)","it":"Livello di CO₂ in parti per milione (ppm)","sv":"CO₂ i partiklar per miljon (ppm)","no":"CO₂ i partikler per million (ppm)","es":"CO₂ en partes por millón (ppm)","da":"CO₂ i partikler-per-million (ppm)","ru":"CO₂ в частях на миллион (ч./млн)","pl":"Stężenie dwutlenku węgla w części na milion (ppm)","ko":"CO₂ 백만분율(ppm)","ar":"ثاني أكسيد الكربون بالجزء في المليون (ppm)"},"chartType":"spline","decimals":2,"color":"#E02020","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_co2_changed","title":{"en":"The CO₂-level changed","nl":"Het CO₂-niveau is veranderd","de":"Der CO₂-Gehalt hat sich geändert","fr":"Le niveau de CO₂ a changé","it":"Il livello di CO₂ è cambiato","sv":"CO₂-nivån ändrades","no":"CO₂-nivået ble endret","es":"El nivel de CO₂ ha cambiado","da":"CO₂-niveauet har ændret sig","ru":"Уровень CO₂ изменился","pl":"Zmienił się poziom CO₂","ko":"CO₂ 수준이 변경되면","ar":"تغير مستوى ثاني أكسيد الكربون"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":20}]}]}}')},5237:(e,t,a)=>{"use strict";const r=a(1493),i=a(3532),n=a(6192),s=a(2130),o=a(8570),l=a(6346),d=a(8470);let u,m;try{u=a(Object(function(){var e=new Error("Cannot find module './lib/AIReviewer'");throw e.code="MODULE_NOT_FOUND",e}())),m=a(Object(function(){var e=new Error("Cannot find module './lib/AIReviewer/enums'");throw e.code="MODULE_NOT_FOUND",e}())),"function"!=typeof u&&(u=void 0),m&&"object"==typeof m&&Array.isArray(m.SEVERITIES)||(m=void 0)}catch(e){}e.exports.App=r,e.exports.Capability=i,e.exports.Device=n,e.exports.Energy=s,e.exports.Media=o,e.exports.Signal=l,e.exports.Util=d,e.exports.AIReviewer=u,e.exports.AIReviewerEnums=m,e.exports.getDeviceClasses=n.getClasses.bind(n),e.exports.getDeviceClass=n.getClass.bind(n),e.exports.getCapabilities=i.getCapabilities.bind(i),e.exports.getCapability=i.getCapability.bind(i),e.exports.hasCapability=i.hasCapability.bind(i),e.exports.getAppLocales=r.getLocales.bind(r),e.exports.getAppCategories=r.getCategories.bind(r),e.exports.getAppPermissions=r.getPermissions.bind(r),e.exports.getAppBrandColor=r.getBrandColor.bind(r),e.exports.getMediaCodecs=o.getCodecs.bind(o),e.exports.getCurrencies=s.getCurrencies.bind(s),e.exports.getBatteries=s.getBatteries.bind(s)},5248:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Stop","nl":"Stop","da":"Stop","it":"Stop","ko":"중지","pl":"Zatrzymaj","ru":"Остановить","sv":"Stopp","es":"Detener","fr":"Arrêter","no":"Stopp","ar":"إيقاف","de":"Stopp"},"type":"boolean","color":"#9033FC","getable":false,"setable":true,"uiComponent":"media","$flow":{"actions":[{"id":"stop","title":{"en":"Stop","nl":"Stop","da":"Stop","it":"Stop","ko":"중지","pl":"Zatrzymaj","ru":"Остановить","sv":"Stopp","es":"Detener","fr":"Arrêter","no":"Stopp","ar":"إيقاف","de":"Stopp"}}]},"minCompatibility":"12.2.0"}')},5326:e=>{"use strict";e.exports=function(e,t,a){var r=" ",i=e.level,n=e.dataLevel,s=e.schema[t],o=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+"/"+t,d=!e.opts.allErrors,u="data"+(n||""),m="valid"+i,p="errs__"+i,c=e.util.copy(e),g="";c.level++;var h="valid"+c.level,v=c.baseId,f="prevValid"+i,k="passingSchemas"+i;r+="var "+p+" = errors , "+f+" = false , "+m+" = false , "+k+" = null; ";var y=e.compositeRule;e.compositeRule=c.compositeRule=!0;var b=s;if(b)for(var w,z=-1,P=b.length-1;z0:e.util.schemaHasRules(w,e.RULES.all))?(c.schema=w,c.schemaPath=o+"["+z+"]",c.errSchemaPath=l+"/"+z,r+=" "+e.validate(c)+" ",c.baseId=v):r+=" var "+h+" = true; ",z&&(r+=" if ("+h+" && "+f+") { "+m+" = false; "+k+" = ["+k+", "+z+"]; } else { ",g+="}"),r+=" if ("+h+") { "+m+" = "+f+" = true; "+k+" = "+z+"; }";return e.compositeRule=c.compositeRule=y,r+=g+"if (!"+m+") { var err = ",!1!==e.createErrors?(r+=" { keyword: 'oneOf' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { passingSchemas: "+k+" } ",!1!==e.opts.messages&&(r+=" , message: 'should match exactly one schema in oneOf' "),e.opts.verbose&&(r+=" , schema: validate.schema"+o+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),r+=" } "):r+=" {} ",r+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&d&&(e.async?r+=" throw new ValidationError(vErrors); ":r+=" validate.errors = vErrors; return false; "),r+="} else { errors = "+p+"; if (vErrors !== null) { if ("+p+") vErrors.length = "+p+"; else vErrors = null; }",e.opts.allErrors&&(r+=" } "),r}},5345:(e,t)=>{var a;t=e.exports=Y,a="object"==typeof process&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?function(){var e=Array.prototype.slice.call(arguments,0);e.unshift("SEMVER"),console.log.apply(console,e)}:function(){},t.SEMVER_SPEC_VERSION="2.0.0";var r=256,i=Number.MAX_SAFE_INTEGER||9007199254740991,n=r-6,s=t.re=[],o=t.safeRe=[],l=t.src=[],d=0,u="[a-zA-Z0-9-]",m=[["\\s",1],["\\d",r],[u,n]];function p(e){for(var t=0;t)?=?)";var C=d++;l[C]=l[g]+"|x|X|\\*";var O=d++;l[O]=l[c]+"|x|X|\\*";var L=d++;l[L]="[v=\\s]*("+l[O]+")(?:\\.("+l[O]+")(?:\\.("+l[O]+")(?:"+l[b]+")?"+l[P]+"?)?)?";var T=d++;l[T]="[v=\\s]*("+l[C]+")(?:\\.("+l[C]+")(?:\\.("+l[C]+")(?:"+l[w]+")?"+l[P]+"?)?)?";var D=d++;l[D]="^"+l[j]+"\\s*"+l[L]+"$";var M=d++;l[M]="^"+l[j]+"\\s*"+l[T]+"$";var x=d++;l[x]="(?:^|[^\\d])(\\d{1,16})(?:\\.(\\d{1,16}))?(?:\\.(\\d{1,16}))?(?:$|[^\\d])";var $=d++;l[$]="(?:~>?)";var F=d++;l[F]="(\\s*)"+l[$]+"\\s+",s[F]=new RegExp(l[F],"g"),o[F]=new RegExp(p(l[F]),"g");var I=d++;l[I]="^"+l[$]+l[L]+"$";var N=d++;l[N]="^"+l[$]+l[T]+"$";var B=d++;l[B]="(?:\\^)";var H=d++;l[H]="(\\s*)"+l[B]+"\\s+",s[H]=new RegExp(l[H],"g"),o[H]=new RegExp(p(l[H]),"g");var V=d++;l[V]="^"+l[B]+l[L]+"$";var R=d++;l[R]="^"+l[B]+l[T]+"$";var U=d++;l[U]="^"+l[j]+"\\s*("+A+")$|^$";var q=d++;l[q]="^"+l[j]+"\\s*("+S+")$|^$";var G=d++;l[G]="(\\s*)"+l[j]+"\\s*("+A+"|"+l[L]+")",s[G]=new RegExp(l[G],"g"),o[G]=new RegExp(p(l[G]),"g");var W=d++;l[W]="^\\s*("+l[L]+")\\s+-\\s+("+l[L]+")\\s*$";var K=d++;l[K]="^\\s*("+l[T]+")\\s+-\\s+("+l[T]+")\\s*$";var J=d++;l[J]="(<|>)?=?\\s*\\*";for(var Z=0;Z<35;Z++)a(Z,l[Z]),s[Z]||(s[Z]=new RegExp(l[Z]),o[Z]=new RegExp(p(l[Z])));function Q(e,t){if(t&&"object"==typeof t||(t={loose:!!t,includePrerelease:!1}),e instanceof Y)return e;if("string"!=typeof e)return null;if(e.length>r)return null;if(!(t.loose?o[E]:o[_]).test(e))return null;try{return new Y(e,t)}catch(e){return null}}function Y(e,t){if(t&&"object"==typeof t||(t={loose:!!t,includePrerelease:!1}),e instanceof Y){if(e.loose===t.loose)return e;e=e.version}else if("string"!=typeof e)throw new TypeError("Invalid Version: "+e);if(e.length>r)throw new TypeError("version is longer than "+r+" characters");if(!(this instanceof Y))return new Y(e,t);a("SemVer",e,t),this.options=t,this.loose=!!t.loose;var n=e.trim().match(t.loose?o[E]:o[_]);if(!n)throw new TypeError("Invalid Version: "+e);if(this.raw=e,this.major=+n[1],this.minor=+n[2],this.patch=+n[3],this.major>i||this.major<0)throw new TypeError("Invalid major version");if(this.minor>i||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>i||this.patch<0)throw new TypeError("Invalid patch version");n[4]?this.prerelease=n[4].split(".").map((function(e){if(/^[0-9]+$/.test(e)){var t=+e;if(t>=0&&t=0;)"number"==typeof this.prerelease[a]&&(this.prerelease[a]++,a=-2);-1===a&&this.prerelease.push(0)}t&&(this.prerelease[0]===t?isNaN(this.prerelease[1])&&(this.prerelease=[t,0]):this.prerelease=[t,0]);break;default:throw new Error("invalid increment argument: "+e)}return this.format(),this.raw=this.version,this},t.inc=function(e,t,a,r){"string"==typeof a&&(r=a,a=void 0);try{return new Y(e,a).inc(t,r).version}catch(e){return null}},t.diff=function(e,t){if(ie(e,t))return null;var a=Q(e),r=Q(t),i="";if(a.prerelease.length||r.prerelease.length){i="pre";var n="prerelease"}for(var s in a)if(("major"===s||"minor"===s||"patch"===s)&&a[s]!==r[s])return i+s;return n},t.compareIdentifiers=ee;var X=/^[0-9]+$/;function ee(e,t){var a=X.test(e),r=X.test(t);return a&&r&&(e=+e,t=+t),e===t?0:a&&!r?-1:r&&!a?1:e0}function re(e,t,a){return te(e,t,a)<0}function ie(e,t,a){return 0===te(e,t,a)}function ne(e,t,a){return 0!==te(e,t,a)}function se(e,t,a){return te(e,t,a)>=0}function oe(e,t,a){return te(e,t,a)<=0}function le(e,t,a,r){switch(t){case"===":return"object"==typeof e&&(e=e.version),"object"==typeof a&&(a=a.version),e===a;case"!==":return"object"==typeof e&&(e=e.version),"object"==typeof a&&(a=a.version),e!==a;case"":case"=":case"==":return ie(e,a,r);case"!=":return ne(e,a,r);case">":return ae(e,a,r);case">=":return se(e,a,r);case"<":return re(e,a,r);case"<=":return oe(e,a,r);default:throw new TypeError("Invalid operator: "+t)}}function de(e,t){if(t&&"object"==typeof t||(t={loose:!!t,includePrerelease:!1}),e instanceof de){if(e.loose===!!t.loose)return e;e=e.value}if(!(this instanceof de))return new de(e,t);e=e.trim().split(/\s+/).join(" "),a("comparator",e,t),this.options=t,this.loose=!!t.loose,this.parse(e),this.semver===ue?this.value="":this.value=this.operator+this.semver.version,a("comp",this)}t.rcompareIdentifiers=function(e,t){return ee(t,e)},t.major=function(e,t){return new Y(e,t).major},t.minor=function(e,t){return new Y(e,t).minor},t.patch=function(e,t){return new Y(e,t).patch},t.compare=te,t.compareLoose=function(e,t){return te(e,t,!0)},t.rcompare=function(e,t,a){return te(t,e,a)},t.sort=function(e,a){return e.sort((function(e,r){return t.compare(e,r,a)}))},t.rsort=function(e,a){return e.sort((function(e,r){return t.rcompare(e,r,a)}))},t.gt=ae,t.lt=re,t.eq=ie,t.neq=ne,t.gte=se,t.lte=oe,t.cmp=le,t.Comparator=de;var ue={};function me(e,t){if(t&&"object"==typeof t||(t={loose:!!t,includePrerelease:!1}),e instanceof me)return e.loose===!!t.loose&&e.includePrerelease===!!t.includePrerelease?e:new me(e.raw,t);if(e instanceof de)return new me(e.value,t);if(!(this instanceof me))return new me(e,t);if(this.options=t,this.loose=!!t.loose,this.includePrerelease=!!t.includePrerelease,this.raw=e.trim().split(/\s+/).join(" "),this.set=this.raw.split("||").map((function(e){return this.parseRange(e.trim())}),this).filter((function(e){return e.length})),!this.set.length)throw new TypeError("Invalid SemVer Range: "+this.raw);this.format()}function pe(e){return!e||"x"===e.toLowerCase()||"*"===e}function ce(e,t,a,r,i,n,s,o,l,d,u,m,p){return((t=pe(a)?"":pe(r)?">="+a+".0.0":pe(i)?">="+a+"."+r+".0":">="+t)+" "+(o=pe(l)?"":pe(d)?"<"+(+l+1)+".0.0":pe(u)?"<"+l+"."+(+d+1)+".0":m?"<="+l+"."+d+"."+u+"-"+m:"<="+o)).trim()}function ge(e,t,r){for(var i=0;i0){var n=e[i].semver;if(n.major===t.major&&n.minor===t.minor&&n.patch===t.patch)return!0}return!1}return!0}function he(e,t,a){try{t=new me(t,a)}catch(e){return!1}return t.test(e)}function ve(e,t,a,r){var i,n,s,o,l;switch(e=new Y(e,r),t=new me(t,r),a){case">":i=ae,n=oe,s=re,o=">",l=">=";break;case"<":i=re,n=se,s=ae,o="<",l="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(he(e,t,r))return!1;for(var d=0;d=0.0.0")),m=m||e,p=p||e,i(e.semver,m.semver,r)?m=e:s(e.semver,p.semver,r)&&(p=e)})),m.operator===o||m.operator===l)return!1;if((!p.operator||p.operator===o)&&n(e,p.semver))return!1;if(p.operator===l&&s(e,p.semver))return!1}return!0}de.prototype.parse=function(e){var t=this.options.loose?o[U]:o[q],a=e.match(t);if(!a)throw new TypeError("Invalid comparator: "+e);this.operator=a[1],"="===this.operator&&(this.operator=""),a[2]?this.semver=new Y(a[2],this.options.loose):this.semver=ue},de.prototype.toString=function(){return this.value},de.prototype.test=function(e){return a("Comparator.test",e,this.options.loose),this.semver===ue||("string"==typeof e&&(e=new Y(e,this.options)),le(e,this.operator,this.semver,this.options))},de.prototype.intersects=function(e,t){if(!(e instanceof de))throw new TypeError("a Comparator is required");var a;if(t&&"object"==typeof t||(t={loose:!!t,includePrerelease:!1}),""===this.operator)return a=new me(e.value,t),he(this.value,a,t);if(""===e.operator)return a=new me(this.value,t),he(e.semver,a,t);var r=!(">="!==this.operator&&">"!==this.operator||">="!==e.operator&&">"!==e.operator),i=!("<="!==this.operator&&"<"!==this.operator||"<="!==e.operator&&"<"!==e.operator),n=this.semver.version===e.semver.version,s=!(">="!==this.operator&&"<="!==this.operator||">="!==e.operator&&"<="!==e.operator),o=le(this.semver,"<",e.semver,t)&&(">="===this.operator||">"===this.operator)&&("<="===e.operator||"<"===e.operator),l=le(this.semver,">",e.semver,t)&&("<="===this.operator||"<"===this.operator)&&(">="===e.operator||">"===e.operator);return r||i||n&&s||o||l},t.Range=me,me.prototype.format=function(){return this.range=this.set.map((function(e){return e.join(" ").trim()})).join("||").trim(),this.range},me.prototype.toString=function(){return this.range},me.prototype.parseRange=function(e){var t=this.options.loose,r=t?o[K]:o[W];e=e.replace(r,ce),a("hyphen replace",e),e=e.replace(o[G],"$1$2$3"),a("comparator trim",e,o[G]),e=(e=e.replace(o[F],"$1~")).replace(o[H],"$1^");var i=t?o[U]:o[q],n=e.split(" ").map((function(e){return function(e,t){return a("comp",e,t),e=function(e,t){return e.trim().split(/\s+/).map((function(e){return function(e,t){a("caret",e,t);var r=t.loose?o[R]:o[V];return e.replace(r,(function(t,r,i,n,s){var o;return a("caret",e,t,r,i,n,s),pe(r)?o="":pe(i)?o=">="+r+".0.0 <"+(+r+1)+".0.0":pe(n)?o="0"===r?">="+r+"."+i+".0 <"+r+"."+(+i+1)+".0":">="+r+"."+i+".0 <"+(+r+1)+".0.0":s?(a("replaceCaret pr",s),o="0"===r?"0"===i?">="+r+"."+i+"."+n+"-"+s+" <"+r+"."+i+"."+(+n+1):">="+r+"."+i+"."+n+"-"+s+" <"+r+"."+(+i+1)+".0":">="+r+"."+i+"."+n+"-"+s+" <"+(+r+1)+".0.0"):(a("no pr"),o="0"===r?"0"===i?">="+r+"."+i+"."+n+" <"+r+"."+i+"."+(+n+1):">="+r+"."+i+"."+n+" <"+r+"."+(+i+1)+".0":">="+r+"."+i+"."+n+" <"+(+r+1)+".0.0"),a("caret return",o),o}))}(e,t)})).join(" ")}(e,t),a("caret",e),e=function(e,t){return e.trim().split(/\s+/).map((function(e){return function(e,t){var r=t.loose?o[N]:o[I];return e.replace(r,(function(t,r,i,n,s){var o;return a("tilde",e,t,r,i,n,s),pe(r)?o="":pe(i)?o=">="+r+".0.0 <"+(+r+1)+".0.0":pe(n)?o=">="+r+"."+i+".0 <"+r+"."+(+i+1)+".0":s?(a("replaceTilde pr",s),o=">="+r+"."+i+"."+n+"-"+s+" <"+r+"."+(+i+1)+".0"):o=">="+r+"."+i+"."+n+" <"+r+"."+(+i+1)+".0",a("tilde return",o),o}))}(e,t)})).join(" ")}(e,t),a("tildes",e),e=function(e,t){return a("replaceXRanges",e,t),e.split(/\s+/).map((function(e){return function(e,t){e=e.trim();var r=t.loose?o[M]:o[D];return e.replace(r,(function(t,r,i,n,s,o){a("xRange",e,t,r,i,n,s,o);var l=pe(i),d=l||pe(n),u=d||pe(s);return"="===r&&u&&(r=""),l?t=">"===r||"<"===r?"<0.0.0":"*":r&&u?(d&&(n=0),s=0,">"===r?(r=">=",d?(i=+i+1,n=0,s=0):(n=+n+1,s=0)):"<="===r&&(r="<",d?i=+i+1:n=+n+1),t=r+i+"."+n+"."+s):d?t=">="+i+".0.0 <"+(+i+1)+".0.0":u&&(t=">="+i+"."+n+".0 <"+i+"."+(+n+1)+".0"),a("xRange return",t),t}))}(e,t)})).join(" ")}(e,t),a("xrange",e),e=function(e,t){return a("replaceStars",e,t),e.trim().replace(o[J],"")}(e,t),a("stars",e),e}(e,this.options)}),this).join(" ").split(/\s+/);return this.options.loose&&(n=n.filter((function(e){return!!e.match(i)}))),n.map((function(e){return new de(e,this.options)}),this)},me.prototype.intersects=function(e,t){if(!(e instanceof me))throw new TypeError("a Range is required");return this.set.some((function(a){return a.every((function(a){return e.set.some((function(e){return e.every((function(e){return a.intersects(e,t)}))}))}))}))},t.toComparators=function(e,t){return new me(e,t).set.map((function(e){return e.map((function(e){return e.value})).join(" ").trim().split(" ")}))},me.prototype.test=function(e){if(!e)return!1;"string"==typeof e&&(e=new Y(e,this.options));for(var t=0;t":0===t.prerelease.length?t.patch++:t.prerelease.push(0),t.raw=t.format();case"":case">=":a&&!ae(a,t)||(a=t);break;case"<":case"<=":break;default:throw new Error("Unexpected operation: "+e.operator)}}));return a&&e.test(a)?a:null},t.validRange=function(e,t){try{return new me(e,t).range||"*"}catch(e){return null}},t.ltr=function(e,t,a){return ve(e,t,"<",a)},t.gtr=function(e,t,a){return ve(e,t,">",a)},t.outside=ve,t.prerelease=function(e,t){var a=Q(e,t);return a&&a.prerelease.length?a.prerelease:null},t.intersects=function(e,t,a){return e=new me(e,a),t=new me(t,a),e.intersects(t)},t.coerce=function(e){if(e instanceof Y)return e;if("string"!=typeof e)return null;var t=e.match(o[x]);return null==t?null:Q(t[1]+"."+(t[2]||"0")+"."+(t[3]||"0"))}},5354:(e,t,a)=>{"use strict";var r=a(8287).hp;const i=a(7177),n=200208670;async function s(e,t){const a=await i.promises.open(e,"r");try{const e=r.alloc(t),{bytesRead:i}=await a.read(e,0,t,0);if(it.size)throw new Error("Zigbee OTA header length exceeds file size");const o=56===r?a:await s(e,r);let l=0;const d=o.readUInt32LE(l);if(l+=4,d!==n)throw new Error("Invalid Zigbee OTA header identifier");const u=o.readUInt16LE(l);l+=2;const m=o.readUInt16LE(l);l+=2;const p=o.readUInt16LE(l);l+=2;const c=o.readUInt16LE(l);l+=2;const g=o.readUInt16LE(l);l+=2;const h=o.readUInt32LE(l);l+=4;const v=o.readUInt16LE(l);l+=2;const f=o.toString("ascii",l,l+32).replace(/\0+$/,"");l+=32;const k=o.readUInt32LE(l);l+=4;const y={fileSize:t.size,fileIdentifier:d,headerVersion:u,headerLength:m,fieldControl:p,manufacturerCode:c,imageType:g,fileVersion:h,zigbeeStackVersion:v,headerString:f,totalImageSize:k};if(1&p&&(y.securityCredentialVersion=o.readUInt8(l),l+=1),2&p&&(y.upgradeFileDestination=o.slice(l,l+8).toString("hex"),l+=8),4&p&&(y.minimumHardwareVersion=o.readUInt16LE(l),l+=2,y.maximumHardwareVersion=o.readUInt16LE(l),l+=2),mi.totalImageSize)throw new Error("Zigbee OTA header length exceeds total image size");if(i.totalImageSize!==i.fileSize)throw new Error("Zigbee OTA total image size does not match file size");if(void 0!==t){if("number"!=typeof t)throw new TypeError("manufacturerCode must be a number");if(i.manufacturerCode!==t)throw new Error("Zigbee OTA manufacturer code does not match")}if(void 0!==r){if("number"!=typeof r)throw new TypeError("imageType must be a number");if(i.imageType!==r)throw new Error("Zigbee OTA image type does not match")}if(void 0!==a){if("number"!=typeof a)throw new TypeError("fileVersion must be a number");if(i.fileVersion!==a)throw new Error("Zigbee OTA file version does not match")}return i}}},5366:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Channel down","nl":"Kanaal omlaag","de":"Kanal runter","fr":"Chane bas","it":"Canale verso il basso","sv":"Kanal ned","no":"Lavere kanal","es":"Bajar de canal","da":"Kanal ned","ru":"Канал вниз","pl":"Kanał w dół","ko":"채널 아래로","ar":"خفض قناة للأسفل"},"type":"boolean","color":"#9033FC","getable":false,"setable":true,"$flow":{"actions":[{"id":"channel_down","title":{"en":"One channel down","nl":"Eén kanaal omlaag","de":"Einen Kanal runter","fr":"Une châine vers le bas","it":"Un canale verso il basso","sv":"En kanal ned","no":"En kanal lavere","es":"Un canal más abajo","da":"En kanal ned","ru":"Один канал вниз","pl":"Jeden kanał w dół","ko":"채널 하나 아래로","ar":"قناة واحدة للأسفل"}}]},"uiComponent":"button"}')},5391:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Carbon filter level","nl":"Koolstoffilterniveau","da":"Niveau for kulfilter","it":"Livello filtro a carbone","ko":"카본 필터 상태","pl":"Poziom filtra węglowego","ru":"Уровень угольного фильтра","sv":"Kolfilternivå","es":"Nivel de filtro de carbono","fr":"Niveau du filtre à charbon","no":"Karbonfilternivå","ar":"مستوى فلتر الكربون","de":"Niveau des Kohlefilters"},"desc":{"en":"The level of degredation on the active carbon filter.","nl":"De mate van aantasting van het actieve koolstoffilter.","da":"Niveauet af nedbrydning på det aktive kulfilter.","it":"Il livello di degradazione del filtro a carbone attivo.","ko":"활성탄 필터의 백화 수준입니다.","pl":"Poziom degradacji filtra z węglem aktywnym.","ru":"Уровень снижения производительности фильтра с активированным углем.","sv":"Graden av nedbrytning på det aktiva kolfiltret.","es":"El nivel de degradación del filtro de carbón activo.","fr":"Le niveau de dégradation du filtre à charbon actif.","no":"Nedbrytingsnivået for filteret med aktivt kull.","ar":"مستوى التدهور في فلتر الكربون النشط.","de":"Der Verschleißgrad des Aktivkohlefilters."},"values":[{"id":"ok","title":{"en":"OK","nl":"OK","da":"OK","it":"OK","ko":"좋음","pl":"OK","ru":"Нормальный","sv":"OK","es":"Correcto","fr":"OK","no":"OK","ar":"جيد","de":"OK"}},{"id":"warning","title":{"en":"Warning","nl":"Waarschuwing","da":"Advarsel","it":"Attenzione","ko":"주의","pl":"Ostrzeżenie","ru":"Требующий внимания","sv":"Varning","es":"Advertencia","fr":"Avertissement","no":"Advarsel","ar":"تحذير","de":"Warnung"}},{"id":"critical","title":{"en":"Critical","nl":"Kritiek","da":"Kritisk","it":"Critico","ko":"교체 필요","pl":"Krytyczny","ru":"Критический","sv":"Kritisk","es":"Crítico","fr":"Critique","no":"Kritisk","ar":"حرج","de":"Kritisch"}}],"color":"#E02020","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"level_carbon_filter_changed","highlight":true,"title":{"en":"The carbon filter level changed to","nl":"Het koolstoffilterniveau is veranderd in","da":"Kulfilterniveauet blev ændret til","it":"Il livello del filtro al carbone è passato a","ko":"카본 필터 상태가 다음으로 변경되면","pl":"Poziom filtra węglowego zmienił się na","ru":"Уровень угольного фильтра изменился на","sv":"Kolfilternivån ändrades till","es":"El nivel del filtro de carbón ha cambiado a","fr":"Le niveau du filtre à charbon est passé à","no":"Karbonfilternivået ble endret til","ar":"تم تغيير مستوى فلتر الكربون إلى","de":"Das Niveau des Aktivkohlefilters wurde geändert auf"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"level_carbon_filter_is","title":{"en":"The carbon filter level !{{is|is not}}","nl":"Het koolstoffilterniveau !{{is|is niet}}","da":"Niveauet for kulfilteret !{{er|er ikke}}","it":"Il livello del filtro a carbone !{{è|non è}}","ko":"카본 필터 상태가 다음!{{이면|이 아니면}}","pl":"Poziom filtra węglowego !{{jest|nie jest}}","ru":"Уровень угольного фильтра !{{|не}}","sv":"Kolfilternivån !{{är|är inte}}","es":"El nivel del filtro de carbono !{{es|no es}}","fr":"Le niveau du filtre à charbon !{{est|n\'est pas}}","no":"Karbonfilternivået !{{er|er ikke}}","ar":"مستوى فلتر الكربون !{{هو|ليس}}","de":"Das Niveau des Aktivkohlefilters !{{ist|ist nicht}}"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.2.0"}')},5395:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Thermostat","nl":"Thermostaat","de":"Thermostat","fr":"Thermostat","it":"Termostato","sv":"Termostat","no":"Termostat","es":"Termostato","da":"Termostat","ru":"Термостат","pl":"Termostat","ko":"온도 조절 장치","ar":"ثرموستات"},"description":{"en":"Use this device class for thermostats, either for the entire home or radiator-mounted, usually together with the `measure_temperature`, `target_temperature` and `thermostat_mode` capabilities.","de":"Nutze diese Geräteklasse für Thermostate, entweder für das gesamte Heim oder pro Heizung - normalerweise zusammen mit den `measure_temperature`-, `target_temperature`- und `thermostat_mode`-Fähigkeiten.","fr":"Utilisez cette classe d\'appareil pour les thermostats, soit pour toute la maison soit montés sur radiateurs, généralemebnt avec les capacités `measure_temperature`, `target_temperature` et `thermostat_mode`.","it":"Utilizza questa classe di dispositivi per i termostati, sia quelli per l\'intera casa che quelli montati sul radiatore, solitamente insieme alle funzionalità `measure_temperature`,`target_temperature` e `thermostat_mode`.","sv":"Använd den här enhetsklassen för termostater, antingen för hela hemmet eller elementmonterade, oftast tillsammans med funktionerna `measure_temperature`, `target_temperature` och `thermostat_mode`.","no":"Bruk denne enhetsklassen for termostater, enten for hele hjemmet eller monterte på varmeelement, ofte sammen med funksjonene `measure_temperature`, `target_temperature` og `thermostat_mode`.","es":"Utiliza esta clase de dispositivo para los termostatos, tanto los de toda la casa como los montados en los radiadores, generalmente junto con las capacidades `measure_temperature`, `target_temperature` y `thermostat_mode`.","da":"Brug denne enhedsklasse til termostater, enten til hele hjemmet eller på radiatorer, normalt sammen med `measure_temperature`, `target_temperature` og `thermostat_mode` funktionerne.","ru":"Используйте этот класс устройств для термостатов для всего дома или для термостатов на радиаторах, обычно вместе с функциями `measure_temperature`, `target_temperature` и `thermostat_mode`.","pl":"Użyj tej klasy urządzeń dla termostatów, zarówno dla całego domu, jak i urządzeń podłączanych do kaloryferów; zwykle razem ze zdolnościami `measure_temperature`, `target_temperature` oraz `thermostat_mode`.","ko":"이 디바이스 클래스는 집 전체 또는 특정 라디에이터의 온도를 조절하고 보통 \'measure_temperature\', \'target_temperature\', \'thermostat_mode\' 기능을 갖춘 온도조절기에 사용합니다.","ar":"استخدم فئة الجهاز هذه لأجهزة الثرموستات، سواء كانت للمنزل بأكمله أو مثبتة على الرادياتير، عادةً مع إمكانيات \'measure_temperature\'، \'target_temperature\' و\'thermostat_mode\'.","nl":"Gebruik deze apparaatklasse voor thermostaten, hetzij voor het hele huis of op een radiator, meestal samen met de opties \'measure_temperature\', \'target_temperature\' en \'thermostat_mode\'."}}')},5399:(e,t,a)=>{"use strict";try{const t=a(9416),r=a(5560),i=a(2977),n=a(3272);t&&i&&i.promisify&&(e.exports.openAsync=i.promisify(t.open),e.exports.closeAsync=i.promisify(t.close),e.exports.readAsync=i.promisify(t.read),e.exports.statAsync=i.promisify(t.stat),e.exports.readFileAsync=i.promisify(t.readFile),e.exports.readDirAsync=i.promisify(t.readdir),e.exports.lstatAsync=i.promisify(t.lstat),e.exports.imageSizeAsync=i.promisify(n)),r&&(e.exports.join=r.join,e.exports.extname=r.extname,e.exports.basename=r.basename,e.exports.dirname=r.dirname)}catch(e){}e.exports.toArray=function(e){return null!=e?Array.isArray(e)?e:[e]:[]}},5446:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Fryer","da":"Frituregryde","de":"Fritteuse","es":"Freidora","fr":"Friteuse","it":"Friggitrice","ko":"프라이어","nl":"Friteuse","no":"Frityrkoker","pl":"Frytkownica","ru":"Фритюрница","sv":"Fritös","ar":"مقلاة"},"description":{"en":"Use this device class for fryers.","da":"Brug denne enhedsklasse til frituregryder.","de":"Verwenden Sie diese Geräteklasse für Friteusen.","es":"Utiliza esta clase de dispositivo para freidoras.","fr":"Utilisez cette classe d\'appareils pour les friteuses.","it":"Utilizza questa classe di dispositivi per le friggitrici.","ko":"이 디바이스 클래스는 튀김기 등 프라이어에 사용합니다.","nl":"Gebruik deze apparaatklasse voor friteuses.","no":"Bruk denne enhetsklassen for frityrkokere.","pl":"Tej klasy urządzeń należy używać w przypadku frytkownic.","ru":"Используйте этот класс устройств для фритюрниц.","sv":"Använd den här enhetsklassen för fritöser.","ar":"استخدم فئة الجهاز هذه للمقالي."},"minCompatibility":"12.0.0"}')},5493:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Minimum target temperature","nl":"Minimale gewenste temperatuur","da":"Minimum måltemperatur","it":"Temperatura target minima","ko":"최저 희망 온도","pl":"Minimalna temperatura docelowa","ru":"Минимальная заданная температура","sv":"Lägsta måltemperatur","es":"Temperatura mínima deseada","fr":"Température minimale cible","no":"Minimum ønsket temperatur","ar":"الحد الأدنى لدرجة الحرارة المستهدفة","de":"Minimale Zieltemperatur"},"units":{"en":"°C","nl":"°C","da":"°C","it":"°C","ko":"°C","pl":"°C","ru":"°C","sv":"°C","es":"°C","fr":"°C","no":"°C","ar":"°C","de":"°C"},"desc":{"en":"The low end of the temperature setpoint in degrees Celsius.","nl":"De ondergrens van het instelpunt voor temperatuur in graden Celsius.","da":"Den lave ende af temperaturindstillingspunktet i Celsius.","it":"Il setpoint minimo di temperatura in gradi Celsius.","ko":"섭씨 도 단위의 온도 설정값 최소치입니다.","pl":"Dolna granica wartości zadanej temperatury w stopniach Celsjusza.","ru":"Нижний предел уставки температуры в градусах Цельсия.","sv":"Den nedre delen av temperaturbörvärdet i grader Celsius.","es":"El valor inferior de ajuste de la temperatura en grados centígrados.\\n","fr":"Le niveau minimal de la température en degrés Celsius.","no":"Minimum ønsket temperaturinnstilling i grader Celsius.","ar":"الحد الأدنى لدرجة الحرارة المستهدفة بالدرجات المئوية.","de":"Das untere Ende des Temperatursollwerts in Grad Celsius."},"insights":true,"chartType":"stepLine","decimals":2,"min":4,"max":35,"color":"#FA6400","getable":true,"setable":true,"uiComponent":"slider","$flow":{"triggers":[{"id":"target_temperature_min_changed","title":{"en":"The minimum target temperature has changed","nl":"De minimale gewenste temperatuur is veranderd","da":"Minimum måltemperatur har ændret sig","it":"La temperatura target minima è cambiata","ko":"최저 희망 온도가 변경되면","no":"Minimum ønsket temperatur er endret","pl":"Zmieniła się minimalna temperatura docelowa","ru":"Минимальная заданная температура изменена","sv":"Den lägsta måltemperaturen har ändrats","es":"La temperatura mínima deseada ha cambiado","fr":"La température minimale cible a changé","ar":"تم تغيير الحد الأدنى لدرجة الحرارة المستهدفة","de":"Die minimale Zieltemperatur wurde geändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":20}]}],"actions":[{"id":"set_target_temperature_min","title":{"en":"Set the minimum target temperature","nl":"De minimale gewenste temperatuur instellen","da":"Indstil minimum måltemperatur","it":"Imposta la temperatura target minima","ko":"최저 희망 온도 설정","pl":"Ustaw minimalną temperaturę docelową","ru":"Установить минимальную заданную температуру","sv":"Ställ in lägsta önskade temperatur","es":"Ajustar la temperatura mínima deseada","fr":"Définir la température minimale cible","no":"Sett minimum ønsket temperatur","ar":"ضبط الحد الأدنى لدرجة الحرارة المستهدفة","de":"Einstellen der minimalen Zieltemperatur"},"args":[{"name":"target_temperature_min","type":"range","min":4,"max":35,"step":0.5,"example":20}]}]},"minCompatibility":"12.2.0"}')},5560:()=>{},5597:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Fridge & Freezer","da":"Køleskab og fryser","de":"Kühl- und Gefrierschrank","es":"Frigorífico con congelador","fr":"Réfrigérateur et congélateur","it":"Frigorifero e congelatore","ko":"냉장고 겸 냉동고","nl":"Koelkast & vriezer","no":"Kjøleskap og fryser","pl":"Lodówka i zamrażarka","ru":"Холодильник и морозильная камера","sv":"Kyl och frys","ar":"ثلاجة ومجمد"},"description":{"en":"Use this device class for any kind of refrigerator that also has a freezer.","da":"Brug denne enhedsklasse til enhver form for køleskab, der også har en fryser.","de":"Verwenden Sie diese Geräteklasse für jede Art von Kühlschrank, in den auch ein Gefriergerät integriert ist.","es":"Utiliza esta clase de dispositivo para cualquier tipo de frigorífico que contenga una zona independiente de congelación.","fr":"Utilisez cette classe d\'appareils pour tout type de réfrigérateur qui possède également un congélateur.","it":"Utilizza questa classe di dispositivi per qualsiasi tipo di frigorifero dotato anche di congelatore.","ko":"이 디바이스 클래스는 냉동고 기능을 갖춘 모든 종류의 냉장고에 사용합니다.","nl":"Gebruik deze apparaatklasse voor elke soort koelkast die ook een vriezer heeft.","no":"Bruk denne enhetsklassen for alle slags kjøleskap som også har fryser.","pl":"Ta klasa urządzeń jest przeznaczona do każdego rodzaju lodówki z zamrażalnikiem.","ru":"Используйте этот класс устройств для любого холодильника, в котором также есть морозильная камера.","sv":"Använd den här enhetsklassen för alla typer av kylskåp som också har en frys.","ar":"استخدم فئة الجهاز هذه لأي نوع من الثلاجات التي تحتوي أيضًا على مجمد."},"minCompatibility":"12.0.0"}')},5619:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Battery","da":"Batteri","de":"Batterie","es":"Batería","fr":"Batterie","it":"Batteria","ko":"배터리","nl":"Batterij","no":"Batteri","pl":"Bateria","ru":"Аккумулятор","sv":"Batteri","ar":"بطارية"},"description":{"en":"Use this device for batteries, e.g. home battery storage.","da":"Brug denne enhedsklasse til batterier, f.eks. til opbevaring af hjemmebatterier.","de":"Verwenden Sie diese Geräteklasse für Batterien, z. B. für den Heimbatteriespeicher.","es":"Utiliza esta clase de dispositivo para baterías (por ej., almacenamiento doméstico de pilas y baterías).","fr":"Utilisez cette classe d\'appareils pour les batteries, par exemple pour le stockage des batteries domestiques.","it":"Utilizza questa classe di dispositivi per le batterie, es. accumulatore domestico.","ko":"이 디바이스 클래스는 가정용 배터리 스토리지 등 배터리류에 사용합니다.","nl":"Gebruik deze apparaatklasse voor batterijen, bijvoorbeeld voor thuisopslag van batterijen.","no":"Bruk denne enhetsklassen for batterier, f.eks. batterilagringsløsninger hjemme.","pl":"Tego urządzenia należy używać do baterii, np. do przechowywania baterii w domu.","ru":"Используйте этот класс устройств для аккумуляторов, например, для домашних накопителей энергии.","sv":"Använd den här enhetsklassen för batterier, t.ex. för batterilagring i hemmet.","ar":"استخدم هذا الجهاز للبطاريات، على سبيل المثال تخزين البطاريات المنزلية."},"minCompatibility":"12.0.0"}')},5633:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Power Alarm","nl":"Stroomwaarschuwing","da":"Strømalarm","it":"Allarme alimentazione","ko":"전원 감지","no":"Strømalarm","pl":"Alarm zasilania","ru":"Сигнал питания","sv":"Strömlarm","es":"Alarma de suministro eléctrico","fr":"Alarme d\'alimentation électrique","ar":"إنذار الطاقة","de":"Stromalarm"},"titleShort":{"en":"Power","nl":"Stroom","da":"Strøm","it":"Alimentazione","ko":"전력","no":"Strøm","pl":"Zasilanie","ru":"Питание","sv":"Ström","es":"Potencia","fr":"Alimentation électrique","ar":"الطاقة","de":"Leistung"},"desc":{"en":"True when power is detected.","nl":"Wordt geactiveerd wanneer stroom wordt gedetecteerd.","da":"Sandt, når der registreres strøm.","it":"Vero quando viene rilevata l\'alimentazione.","ko":"전원이 감지되면 참입니다.","no":"Sann når strøm registreres.","pl":"Prawda, gdy wykryte jest zasilanie.","ru":"Значение «истина» при обнаружении питания.","sv":"Sant när strömförsörjning detekteras.","es":"Activado cuando se detecta suministro eléctrico.","fr":"Se déclenche lorsque une alimentation électrique est détectée.","ar":"صحيح عند اكتشاف طاقة.","de":"Wahr, wenn Strom erkannt wird."},"insights":true,"insightsTitleTrue":{"en":"Power alarm turned on","nl":"Stroomwaarschuwing geactiveerd","da":"Strømalarm slået til","it":"Allarme alimentazione acceso","ko":"전원 감지됨","no":"Strømalarm aktivert","pl":"Alarm zasilania włączony","ru":"Сигнал питания включен","sv":"Strömlarm aktiverat","es":"Alarma de suministro eléctrico activada","fr":"Alarme d\'alimentation électrique activée","ar":"تم تشغيل إنذار الطاقة","de":"Stromalarm ist aktiviert"},"insightsTitleFalse":{"en":"Power alarm turned off","nl":"Stroomwaarschuwing gedeactiveerd","da":"Strømalarm slået fra","it":"Allarme alimentazione spento","ko":"전원 없음","no":"Strømalarm deaktivert","pl":"Alarm zasilania wyłączony","ru":"Сигнал питания выключен","sv":"Strömlarm inaktiverat","es":"Alarma de suministro eléctrico desactivada","fr":"Alarme d\'alimentation électrique désactivée","ar":"تم إيقاف إنذار الطاقة","de":"Stromalarm ausgeschaltet"},"color":"#6DD400","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_power_true","highlight":true,"title":{"en":"The power alarm turned on","nl":"De stroomwaarschuwing is geactiveerd","da":"Strømalarmen slået til","it":"L\'allarme alimentazione si è acceso","ko":"전원이 감지되면","no":"Strømalarmen ble aktivert","pl":"Włączył się alarm zasilania","ru":"Сигнал питания включен","sv":"Strömlarmet aktiverat","es":"La alarma de suministro eléctrico está activada","fr":"L\'alarme d\'alimentation électrique s\'est activée","ar":"تم تشغيل إنذار الطاقة","de":"Der Stromalarm ist aktiviert"}},{"id":"alarm_power_false","title":{"en":"The power alarm turned off","nl":"De stroomwaarschuwing is gedeactiveerd","da":"Strømalarmen slået fra","it":"L\'allarme alimentazione si è spento","ko":"전원이 없으면","no":"Strømalarmen ble deaktivert","pl":"Wyłączył się alarm zasilania","ru":"Сигнал питания выключен","sv":"Strömlarmet inaktiverat","es":"La alarma de suministro eléctrico está desactivada","fr":"L\'alarme d\'alimentation électrique s\'est désactivée","ar":"تم إيقاف إنذار الطاقة","de":"Der Stromalarm wurde ausgeschaltet"}}],"conditions":[{"id":"alarm_power","title":{"en":"The power alarm is !{{on|off}}","nl":"De stroomwaarschuwing is !{{geactiveerd|gedeactiveerd}}","da":"Strømalarmen er !{{tændt|slukket}}","it":"L\'allarme alimentazione è !{{acceso|spento}}","ko":"전원이 !{{감지되면|없으면}}","no":"Strømalarmen er !{{på|av}}","pl":"Alarm zasilania jest !{{włączony|wyłączony}}","ru":"Сигнал питания !{{включен|выключен}}","sv":"Strömlarmet är !{{på|av}}","es":"La alarma de suministro eléctrico está !{{activada|desactivada}}","fr":"L\'alarme d\'alimentation électrique est !{{activée|désactivée}}","ar":"إنذار الطاقة !{{يعمل|لا يعمل}}","de":"Der Stromalarm ist !{{an|aus}}"}}]},"minCompatibility":"12.2.0"}')},5643:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Power Boost","ar":"تعزيز الطاقة","da":"Strøm-boost","de":"Power Boost","es":"Aumento de potencia","fr":"Power Boost","it":"Aumento di potenza","ko":"전력 부스트","nl":"Extra vermogen","no":"Effektboost","pl":"Zwiększenie mocy","ru":"Усиление мощности","sv":"Effektökning"},"desc":{"en":"When enabled, power boost mode is active. The device may use more energy to reach its target.","ar":"عند التمكين، يكون وضع تعزيز الطاقة نشطًا. وقد يستخدم الجهاز المزيد من الطاقة للوصول إلى هدفه.","da":"Når den er aktiveret, er strøm-boost-tilstand aktiv. Enheden kan bruge mere energi på at nå sit mål.","de":"Wenn aktiviert, ist der Power Boost-Modus eingeschaltet. Das Gerät verbraucht möglicherweise mehr Energie, um das Ziel zu erreichen.","es":"Cuando está activado, el modo de aumento de potencia está activo. El dispositivo puede emplear más energía para alcanzar su objetivo.","fr":"Lorsque cette option est activée, Power Boost est activé. L\'appareil peut consommer davantage d\'énergie pour atteindre son objectif.","it":"Quando è abilitata, la modalità di aumento di potenza è attiva. Il dispositivo può utilizzare più energia per raggiungere l\'obiettivo.","ko":"활성화하면 전력 부스트가 활성 상태가 됩니다. 제품이 목표에 도달하기 위해 더 많은 에너지를 사용할 수 있습니다.","nl":"Wanneer ingeschakeld, is de stand met extra vermogen actief. Het apparaat kan meer energie gebruiken om zijn doel te bereiken.","no":"Når dette er aktivert, er effektboostmodusen aktiv. Enheten kan bruke mer energi for å nå målet.","pl":"Po włączeniu aktywny jest tryb zwiększenia mocy. Urządzenie może zużywać więcej energii, aby osiągnąć docelowe parametry.","ru":"При включении активируется режим усиления мощности. Устройство может использовать больше энергии для достижения поставленной цели.","sv":"När det är aktiverat är energiökningsläget aktivt. Enheten kan använda mer energi för att nå sitt mål."},"color":"#6DD400","getable":true,"setable":true,"insights":true,"insightsTitleTrue":{"en":"Power Boost enabled","ar":"تم تمكين تعزيز الطاقة","da":"Strøm-boost aktiveret","de":"Power Boost aktiviert","es":"Aumento de potencia activado","fr":"Power Boost activé","it":"Aumento di potenza abilitato","ko":"전력 부스트 활성화됨","nl":"Extra vermogen ingeschakeld","no":"Effektboost aktivert","pl":"Zwiększenie mocy włączone","ru":"Усиление мощности включено","sv":"Energiökning aktiverat"},"insightsTitleFalse":{"en":"Power Boost disabled","ar":"تم تعطيل تعزيز الطاقة","da":"Strøm-boost deaktiveret","de":"Power Boost deaktiviert","es":"Aumento de potencia desactivado","fr":"Power Boost désactivé","it":"Aumento di potenza disabilitato","ko":"전력 부스트 비활성화됨","nl":"Extra vermogen uitgeschakeld","no":"Effektboost deaktivert","pl":"Zwiększenie mocy wyłączone","ru":"Усиление мощности выключено","sv":"Energiökning inaktiverat"},"uiComponent":"toggle","uiQuickAction":false,"$flow":{"triggers":[{"id":"power_boost_true","highlight":true,"title":{"en":"Power boost enabled","ar":"تم تمكين تعزيز الطاقة","da":"Strøm-boost aktiveret","de":"Power Boost aktiviert","es":"Aumento de potencia activado","fr":"Power Boost activé","it":"Aumento di potenza abilitato","ko":"전력 부스트가 활성화되면","nl":"Extra vermogen ingeschakeld","no":"Effektboost aktivert","pl":"Zwiększenie mocy włączone","ru":"Усиление мощности включено","sv":"Energiökning aktiverat"}},{"id":"power_boost_false","highlight":true,"title":{"en":"Power boost disabled","ar":"تم تعطيل تعزيز الطاقة","da":"Strøm-boost deaktiveret","de":"Power Boost deaktiviert","es":"Aumento de potencia desactivado","fr":"Power Boost désactivé","it":"Aumento di potenza disattivato","ko":"전력 부스트가 비활성화되어 있으면","nl":"Extra vermogen uitgeschakeld","no":"Effektboost deaktivert","pl":"Zwiększenie mocy wyłączone","ru":"Усиление мощности отключено","sv":"Effektökning inaktiverat"}}],"conditions":[{"id":"power_boost","title":{"en":"Power boost is !{{enabled|disabled}}","ar":"تعزيز الطاقة !{{ممكّن|معطّل}}","da":"Strøm-boost er!{{enabled|disabled}}","de":"Power Boost ist !{{aktiviert|deaktiviert}}","es":"El aumento de potencia está !{{activado|desactivado}}","fr":"Power Boost est !{{activé|désactivé}}","it":"L\'aumento di potenza è !{{abilitato|disabilitato}}","ko":"전력 부스트가 !{{활성화|비활성화}}되어 있으면","nl":"Extra vermogen is !{{ingeschakeld|uitgeschakeld}}","no":"Effektboost er !{{aktivert|deaktivert}}","pl":"Zwiększenie mocy jest !{{włączone|wyłączone}}","ru":"Усиление мощности !{{включено|выключено}}","sv":"Effektökning är !{{aktiverad|inaktiverad}}"}}],"actions":[{"id":"enable","highlight":true,"title":{"en":"Enable power boost","ar":"تمكين تعزيز الطاقة","da":"Aktiver strøm-boost","de":"Power Boost aktivieren","es":"Activar aumento de potencia","fr":"Activer Power Boost","it":"Abilita aumento di potenza","ko":"전력 부스트 활성화","nl":"Extra vermogen inschakelen","no":"Aktiver effektboost","pl":"Włącz zwiększenie mocy","ru":"Включить усиление мощности","sv":"Aktivera effektökning"}},{"id":"disable","highlight":true,"title":{"en":"Disable power boost","ar":"تعطيل تعزيز الطاقة","da":"Deaktiver strøm-boost","de":"Power Boost deaktivieren","es":"Desactivar aumento de potencia","fr":"Désactiver Power Boost","it":"Disabilita aumento di potenza","ko":"전력 부스트 비활성화","nl":"Extra vermogen uitschakelen","no":"Deaktiver effektboost","pl":"Wyłącz zwiększenie mocy","ru":"Отключить усиление мощности","sv":"Inaktivera effektökning"}},{"id":"toggle","title":{"en":"Toggle power boost","ar":"تبديل تعزيز الطاقة","da":"Slå strøm-boost til/fra","de":"Power Boost ein-/ausschalten","es":"Conmutador de aumento de potencia","fr":"Activer/Désactiver Power Boost","it":"Attiva/disattiva aumento di potenza","ko":"전력 부스트 토글","nl":"Extra vermogen in-/uitschakelen","no":"Slå effektboost på/av","pl":"Przełącz zwiększenie mocy","ru":"Включить/выключить усиление мощности","sv":"Växla effektökning"}}]},"minCompatibility":"12.11.0"}')},5674:e=>{"use strict";e.exports=function(e,t,a){var r=" ",i=e.level,n=e.dataLevel,s=e.schema[t],o=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+"/"+t,d=!e.opts.allErrors,u="data"+(n||""),m="valid"+i,p="errs__"+i,c=e.util.copy(e);c.level++;var g="valid"+c.level,h="i"+i,v=c.dataLevel=e.dataLevel+1,f="data"+v,k=e.baseId,y=e.opts.strictKeywords?"object"==typeof s&&Object.keys(s).length>0:e.util.schemaHasRules(s,e.RULES.all);if(r+="var "+p+" = errors;var "+m+";",y){var b=e.compositeRule;e.compositeRule=c.compositeRule=!0,c.schema=s,c.schemaPath=o,c.errSchemaPath=l,r+=" var "+g+" = false; for (var "+h+" = 0; "+h+" < "+u+".length; "+h+"++) { ",c.errorPath=e.util.getPathExpr(e.errorPath,h,e.opts.jsonPointers,!0);var w=u+"["+h+"]";c.dataPathArr[v]=h;var z=e.validate(c);c.baseId=k,e.util.varOccurences(z,f)<2?r+=" "+e.util.varReplace(z,f,w)+" ":r+=" var "+f+" = "+w+"; "+z+" ",r+=" if ("+g+") break; } ",e.compositeRule=c.compositeRule=b,r+=" if (!"+g+") {"}else r+=" if ("+u+".length == 0) {";var P=P||[];P.push(r),r="",!1!==e.createErrors?(r+=" { keyword: 'contains' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: {} ",!1!==e.opts.messages&&(r+=" , message: 'should contain a valid item' "),e.opts.verbose&&(r+=" , schema: validate.schema"+o+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),r+=" } "):r+=" {} ";var _=r;return r=P.pop(),!e.compositeRule&&d?e.async?r+=" throw new ValidationError(["+_+"]); ":r+=" validate.errors = ["+_+"]; return false; ":r+=" var err = "+_+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+=" } else { ",y&&(r+=" errors = "+p+"; if (vErrors !== null) { if ("+p+") vErrors.length = "+p+"; else vErrors = null; } "),e.opts.allErrors&&(r+=" } "),r}},5686:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Bin Missing Alarm","nl":"Afvalbak-ontbreekt-alarm","da":"Papirkurv mangler alarm","es":"Alarma de depósito no instalado","fr":"Alarme de poubelle manquante","it":"Allarme cestino mancante","ko":"먼지통 미장착 감지","pl":"Alarm braku kosza","ru":"Сигнал об отсутствии контейнера","sv":"Larm om att behållaren saknas","no":"Alarm om manglende støvbeholder","ar":"إنذار فقد سلة المهملات","de":"Alarm bei fehlendem Behälter"},"titleShort":{"en":"Bin Missing","nl":"Afvalbak ontbreekt","da":"Papirkurv mangler","es":"Depósito no instalado","fr":"Poubelle manquante","it":"Cestino mancante","ko":"먼지통 누락","pl":"Brak kosza","ru":"Контейнер отсутствует","sv":"Behållaren saknas","no":"Manglende støvbeholder","ar":"سلة المهملات غير موجودة","de":"Behälter fehlt"},"desc":{"en":"True when the bin is missing.","nl":"Wordt geactiveerd wanneer de afvalbak ontbreekt.","da":"Sandt, når papirkurven mangler","es":"Activado cuando el cubo no está presente.","fr":"Se déclenche lorsque la poubelle est manquante.","it":"Vero quando manca il contenitore.","ko":"휴지통이 누락되면 참입니다.","pl":"Prawda, gdy brakuje kosza.","ru":"Значение «истина», когда контейнер отсутствует.","sv":"Sant när behållaren saknas.","no":"Sann når støvbeholderen mangler.","ar":"صحيح عندما تكون سلة المهملات مفقودة.","de":"Wahr, wenn der Behälter fehlt."},"insights":true,"insightsTitleTrue":{"en":"The bin was removed","nl":"De afvalbak was verwijderd","da":"Papirkurv blev fjernet","es":"El cubo se ha retirado","fr":"La poubelle a été enlevée","it":"Il contenitore è stato rimosso","ko":"먼지통 없음","pl":"Kosz został usunięty","ru":"Контейнер был удален","sv":"Behållaren togs bort","no":"Støvbeholderen ble fjernet","ar":"تمت إزالة سلة المهملات","de":"Der Behälter wurde entfernt"},"insightsTitleFalse":{"en":"The bin was placed","nl":"De afvalbak was geplaatst","da":"Papirkurven blev placeret","es":"El cubo se ha colocado","fr":"La poubelle a été placée","it":"Il contenitore è stato posizionato","ko":"먼지통 장착됨","pl":"Kosz został umieszczony","ru":"Контейнер был размещен","sv":"Behållaren placerades","no":"Støvbeholderen ble satt på plass","ar":"تم وضع سلة المهملات","de":"Der Behälter wurde platziert"},"color":"#9033FC","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_bin_missing_true","highlight":true,"title":{"en":"The bin was removed","nl":"De afvalbak was verwijderd","da":"Papirkurven blev fjernet","es":"El cubo se ha retirado","fr":"La poubelle a été enlevée","it":"Il contenitore è stato rimosso","ko":"먼지통이 없으면","pl":"Kosz został usunięty","ru":"Контейнер был удален","sv":"Behållaren togs bort","no":"Støvbeholderen ble fjernet","ar":"تمت إزالة سلة المهملات","de":"Der Behälter wurde entfernt"}},{"id":"alarm_bin_missing_false","title":{"en":"The bin was placed","nl":"De afvalbak was geplaatst","da":"Papirkurven blev placeret","es":"El cubo se ha colocado","fr":"La corbeille a été placée","it":"Il contenitore è stato posizionato","ko":"먼지통이 장착되면","pl":"Kosz został umieszczony","ru":"Контейнер был размещен","sv":"Behållaren placerades","no":"Støvbeholderen ble satt på plass","ar":"تم وضع سلة المهملات","de":"Der Behälter wurde platziert"}}],"conditions":[{"id":"alarm_bin_missing","title":{"en":"The bin is !{{missing|present}}","nl":"De afvalbak !{{ontbreekt|staat er}}","da":"Papirkurven !{{mangler|er til stede}}","es":"Cubo !{{no presente|presente}}","it":"Il contenitore è !{{assente|presente}}","ko":"먼지통이 !{{없으면|장착되면}}","pl":"Kosz jest !{{brakujący|obecny}}","ru":"Контейнер !{{отсутствует|в наличии}}","sv":"Behållaren !{{saknas|är på plats}}","fr":"La poubelle est !{{manquante|présente}}","no":"Støvbeholderen !{{mangler|mangler ikke}}","ar":"سلة المهملات !{{مفقودة|موجودة}}","de":"Der Behälter !{{fehlt|ist vorhanden}}"}}]},"minCompatibility":"12.2.0"}')},5757:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Washer & Dryer","da":"Vaskemaskine og tørretumbler","de":"Waschmaschine mit Trockner","es":"Lavadora-secadora","fr":"Lave-linge et sèche-linge","it":"Lavatrice e asciugatrice","ko":"세탁기 겸 건조기","nl":"Wasmachine & droger","no":"Vaskemaskin og tørketrommel","pl":"Pralko-suszarka","ru":"Стиральная машина и сушилка","sv":"Tvättmaskin och torktumlare","ar":"غسالة ومجفف"},"description":{"en":"Use this device class for any kind of washer and dryer combination.","da":"Brug denne enhedsklasse til enhver form for kombination af vaskemaskine og tørretumbler.","de":"Verwenden Sie diese Geräteklasse für jede Art von Waschmaschinen- und Trocknerkombis.","es":"Utiliza esta clase de dispositivo para cualquier equipo que tenga funciones de lavadora y secadora.","fr":"Cette classe d\'appareils peut être utilisée pour n\'importe quelle combinaison de lave-linge et de sèche-linge.","it":"Utilizza questa classe di dispositivi per qualsiasi tipo di combinazione di lavatrice e asciugatrice.","ko":"이 디바이스 클래스는 모든 종류의 일체형 세탁건조기에 사용합니다.","nl":"Gebruik deze apparaatklasse voor elke was/droogcombinatie.","no":"Bruk denne enhetsklassen for alle slags kombinasjoner av vaskemaskin og tørketrommel.","pl":"Tej klasy urządzenia należy używać do każdego rodzaju pralko-suszarki.","ru":"Используйте этот класс устройств для любой комбинации стиральной и сушильной машин.","sv":"Använd den här enhetsklassen för alla typer av tvättmaskin och torktumlare.","ar":"استخدم فئة الجهاز هذه لأي نوع من الغسالات والمجففات المدمجة."},"minCompatibility":"12.0.0"}')},5771:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Temperature","nl":"Temperatuur","de":"Temperatur","fr":"Température","it":"Temperatura","sv":"Temperatur","no":"Temperatur","es":"Temperatura","da":"Temperatur","ru":"Температура","pl":"Temperatura","ko":"온도","ar":"درجة الحرارة"},"units":{"en":"°C","ko":"°C","no":"°C","ru":"°C","ar":"°C","da":"°C","de":"°C","es":"°C","fr":"°C","it":"°C","nl":"°C","pl":"°C","sv":"°C"},"insights":true,"desc":{"en":"Temperature in degrees Celsius (°C)","nl":"Temperatuur in graden Celsius (°C)","de":"Temperatur in Grad Celsius (°C)","fr":"Température en degrés Celsius (°C)","it":"Temperatura in gradi Celsius (°C)","sv":"Temperatur i grader Celsius (°C)","no":"Temperatur i grader Celsius (°C)","es":"Temperatura en grados Celsius (°C)","da":"Temperatur i Celsius (°C)","ru":"Температура в градусах Цельсия (°C)","pl":"Temperatura w stopniach Celsjusza (°C)","ko":"온도 섭씨(°C)","ar":"درجة الحرارة بالدرجات المئوية (°C)"},"decimals":1,"chartType":"spline","color":"#FA6400","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_temperature_changed","highlight":true,"title":{"en":"The temperature changes","nl":"De temperatuur verandert","de":"Die Temperatur hat sich geändert","fr":"La température a changé","it":"La temperatura è cambiata","sv":"Temperaturen ändrades","no":"Temperaturen endres","es":"La temperatura ha cambiado","da":"Temperaturen ændrede sig","ru":"Температура изменяется","pl":"Zmiana temperatury","ko":"온도가 변경되면","ar":"تتغير درجة الحرارة"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":23.5}]}]}}')},5777:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Battery charging state","nl":"Oplaadstatus van de batterij","da":"Batteriets opladningstilstand","it":"Stato di carica della batteria","ko":"배터리 충전 상태","pl":"Stan ładowania baterii","ru":"Состояние зарядки аккумулятора","sv":"Batteriets laddningsstatus","es":"Estado de carga de la batería","fr":"État de charge de la batterie","no":"Batteriladestatus","de":"Ladezustand der Batterie","ar":"حالة شحن البطارية"},"desc":{"en":"The current charging state of the battery.","nl":"De huidige oplaadstatus van de batterij.","da":"Batteriets aktuelle opladningstilstand.","it":"Lo stato di carica attuale della batteria.","ko":"배터리의 현재 충전 상태입니다.","pl":"Bieżący stan naładowania baterii.","ru":"Текущее состояние зарядки аккумулятора.","sv":"Batteriets aktuella laddningsstatus.","es":"El estado de carga actual de la batería.","fr":"L\'état de charge actuel de la batterie.","no":"Batteriets nåværende ladestatus.","ar":"حالة الشحن الحالية للبطارية.","de":"Der aktuelle Ladezustand des Akkus."},"values":[{"id":"charging","title":{"en":"Charging","nl":"Opladen","da":"Oplader","it":"In carica","ko":"충전 중","pl":"Ładowanie","ru":"Заряжается","sv":"Laddning","es":"Cargando","fr":"Charge","no":"Lades","ar":"قيد الشحن","de":"Wird geladen"}},{"id":"discharging","title":{"en":"Discharging","nl":"Ontladen","da":"Aflader","it":"Scarica","ko":"외부 전원 공급 중","pl":"Rozładowanie","ru":"Разряжается","sv":"Urladdning","es":"Descargando","fr":"Décharge","no":"Lades ut","ar":"قيد التفريغ","de":"Entladen"}},{"id":"idle","title":{"en":"Idle","nl":"Inactief","da":"Inaktiv","it":"Inattivo","ko":"대기","pl":"Bezczynność","ru":"В ожидании","sv":"Viloläge","es":"Reposo","fr":"Inactif","no":"Inaktiv","ar":"خامل","de":"Leerlauf"}}],"color":"#6DD400","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"battery_charging_state_changed","title":{"en":"The battery charging state changed","nl":"De oplaadstatus van de batterij is veranderd","da":"Batteriets opladningstilstand er ændret","it":"Lo stato di carica della batteria è cambiato","ko":"배터리 충전 상태가 변경되면","pl":"Stan ładowania baterii uległ zmianie","ru":"Состояние зарядки батареи изменилось","sv":"Batteriets laddningsstatus har ändrats","es":"El estado de carga de la batería ha cambiado","fr":"L\'état de charge de la batterie a changé","no":"Batteriladestatusen ble endret","de":"Der Ladezustand der Batterie hat sich geändert","ar":"تم تغيير حالة شحن البطارية"},"args":[{"name":"state","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"battery_charging_state_is","title":{"en":"The battery charging state !{{is|is not}}","nl":"De oplaadstatus van de batterij !{{is|is niet}}","da":"Batteriets opladningstilstand !{{er|er ikke}}","it":"Lo stato di carica della batteria !{{è|non è}}","ko":"배터리 충전 상태가 다음!{{과 같으면|이 아니면}}","pl":"Stan ładowania baterii !{{to|to nie}}","ru":"Состояние зарядки аккумулятора !{{|не}}","sv":"Batteriets laddningsstatus !{{är|är inte}}","es":"El estado de carga de la batería !{{es|no es}}","fr":"L\'état de charge de la batterie !{{est|n\'est pas}}","no":"Batteriladestatusen !{{er|er ikke}}","de":"Der Ladezustand der Batterie !{{ist|ist nicht}}","ar":"حالة شحن البطارية !{{هي|ليست}}"},"args":[{"name":"state","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.2.0"}')},5812:(e,t,a)=>{"use strict";var r=a(9005);e.exports=function(e,t){var a;for(a in r)if(r[a].detect(e,t))return a}},5848:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Dryer","da":"Tørretumbler","de":"Trockner","es":"Secadora","fr":"Sèche-linge","it":"Asciugatrice","ko":"건조기","nl":"Droger","no":"Tørketrommel","pl":"Suszarka","ru":"Сушилка","sv":"Torktumlare","ar":"مجفف"},"description":{"en":"Use this device class for dryers, if it is a combination washer/dryer use \'washer_and_dryer\'.","da":"Brug denne enhedsklasse til tørretumblere. Hvis det er en kombineret vaskemaskine/tørretumbler, skal du bruge \'washer_and_dryer\'.","de":"Verwenden Sie diese Geräteklasse für Trockner. Bei Kombingeräten mit Waschmaschine und Trockner verwenden Sie „washer_and_dryer“.","es":"Utiliza esta clase de dispositivo para secadoras. Si se trata de un equipo que contiene funciones de lavadora y secadora, utiliza la clase \'washer_and_dryer\'.","fr":"Utilisez cette classe d\'appareils pour les sèche-linge. S\'il s\'agit d\'une combinaison lave-linge/sèche-linge, utilisez \\"washer_and_dryer\\".","it":"Utilizza questa classe di dispositivi per le asciugatrici, se si tratta di una combinazione di lavatrice/asciugatrice utilizza \\"washer_and_dryer\\".","ko":"이 디바이스 클래스는 건조기에 사용하고, 세탁기/건조기 일체형의 경우 \'washer_and_dryer\'를 사용합니다.","nl":"Gebruik deze apparaatklasse voor drogers, als het een was/droogcombinatie is gebruik dan \'washer_and_dryer\'.","no":"Bruk denne enhetsklassen for tørketromler. For en kombinert vaskemaskin/tørketrommel, bruk «washer_and_dryer».","pl":"Użyj tej klasy urządzeń dla suszarek, jeśli jest to pralko-suszarka, użyj „washer_and_dryer”.","ru":"Используйте этот класс устройств для сушилок; в случае стиральной машины-сушилки используйте washer_and_dryer.","sv":"Använd den här enhetsklassen för torktumlare, om det är en kombinerad tvättmaskin/torktumlare ska du använda \'washer_and_dryer\'.","ar":"استخدم فئة الجهاز هذه للمجففات، إذا كانت غسالة/مجفف مدمج، فاستخدم \'washer_and_dryer\'."},"minCompatibility":"12.0.0"}')},5858:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Rain meter","nl":"Regenmeter","de":"Regenzähler","fr":"Compteur de pluie","it":"Misuratore di pioggia","sv":"Regnmätare","no":"Regnmåler","es":"Pluviómetro","da":"Regnmåler","ru":"Счетчик дождя","pl":"Licznik deszczu","ko":"집수량","ar":"عداد المطر"},"units":{"en":"m³","ru":"м³","ko":"m³","no":"m³","ar":"م³","da":"m³","de":"m³","es":"m³","fr":"m³","it":"m³","nl":"m³","pl":"m³","sv":"m³"},"chartType":"spline","desc":{"en":"Rain in cubic meter (m³)","nl":"Regen in kubieke meter (m³)","de":"Regen in Kubikmeter (m³)","fr":"Pluie en mètres cubes (m³)","it":"Pioggia in metri cubi (m³)","sv":"Regn i kubikmeter (m³)","no":"Regn i kubikkmeter (m³)","es":"Lluvia en metros cúbicos (m³)","da":"Regn i kubikmeter (m³)","ru":"Дождь в кубометрах (м³)","pl":"Deszcz w metrach sześciennych (m³)","ko":"강우량 입방미터(m³)","ar":"المطر بالمتر المكعب (m³)"},"decimals":2,"color":"#0091FF","insights":true,"getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"meter_rain_changed","title":{"en":"The rain meter changed","nl":"De regenmeter is veranderd","de":"Der Regenzähler hat sich geändert","fr":"Le compteur de pluie a changé","it":"Il misuratore di pioggia è cambiato","sv":"Regnmätaren ändrades","no":"Regnmåleren ble endret","es":"El pluviómetro ha cambiado","da":"Regnmåleren ændrede sig","ru":"Измерения дождя изменились","pl":"Zmiana w liczniku deszczu","ko":"집수량이 변경되면","ar":"تغير عداد المطر"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":1}]}]}}')},5886:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Blinds","nl":"Jaloezieën & Lamellen","de":"Rolladen","fr":"Stores","it":"Tapparelle","sv":"Persienner","no":"Persienner","es":"Persianas","da":"Persienner","ru":"Жалюзи","pl":"Rolety","ko":"블라인드","ar":"ستائر دوارة"},"description":{"en":"Use this device class for blinds, both horizontal and vertical.","de":"Nutze diese Geräteklasse für Rolladen, sowohl horizontal als auch vertikal.","fr":"Utilisez cette classe d\'appareil pour les stores, horizontaux et verticaux.","it":"Utilizza questa classe di dispositivi per le tapparelle, orizzontali e verticali.","sv":"Använd den här enhetsklassen för persienner, både horisontella och vertikala.","no":"Bruk denne enhetsklassen for persienner, både horisontale og vertikale.","es":"Utiliza esta clase de dispositivo para las persianas, tanto horizontales como verticales.","da":"Brug denne enhedsklasse til persienner, både vandrette og lodrette.","ru":"Используйте этот класс устройств для жалюзи, как горизонтальных, так и вертикальных.","pl":"Użyj tej klasy urządzeń dla rolet (poziomych i pionowych).","ko":"이 디바이스 클래스는 가로형 및 세로형 블라인드에 사용합니다.","ar":"استخدم فئة الجهاز هذه للستائر الدوارة، الأفقية والعمودية على حد سواء.","nl":"Gebruik deze apparaatklasse voor jaloezieën, zowel horizontaal als verticaal."}}')},5898:e=>{"use strict";e.exports=function(e,t,a){var r,i=" ",n=e.level,s=e.dataLevel,o=e.schema[t],l=e.schemaPath+e.util.getProperty(t),d=e.errSchemaPath+"/"+t,u=!e.opts.allErrors,m="data"+(s||""),p="valid"+n,c=e.opts.$data&&o&&o.$data;if(c?(i+=" var schema"+n+" = "+e.util.getData(o.$data,s,e.dataPathArr)+"; ",r="schema"+n):r=o,(o||c)&&!1!==e.opts.uniqueItems){c&&(i+=" var "+p+"; if ("+r+" === false || "+r+" === undefined) "+p+" = true; else if (typeof "+r+" != 'boolean') "+p+" = false; else { "),i+=" var i = "+m+".length , "+p+" = true , j; if (i > 1) { ";var g=e.schema.items&&e.schema.items.type,h=Array.isArray(g);if(!g||"object"==g||"array"==g||h&&(g.indexOf("object")>=0||g.indexOf("array")>=0))i+=" outer: for (;i--;) { for (j = i; j--;) { if (equal("+m+"[i], "+m+"[j])) { "+p+" = false; break outer; } } } ";else{i+=" var itemIndices = {}, item; for (;i--;) { var item = "+m+"[i]; ";var v="checkDataType"+(h?"s":"");i+=" if ("+e.util[v](g,"item",e.opts.strictNumbers,!0)+") continue; ",h&&(i+=" if (typeof item == 'string') item = '\"' + item; "),i+=" if (typeof itemIndices[item] == 'number') { "+p+" = false; j = itemIndices[item]; break; } itemIndices[item] = i; } "}i+=" } ",c&&(i+=" } "),i+=" if (!"+p+") { ";var f=f||[];f.push(i),i="",!1!==e.createErrors?(i+=" { keyword: 'uniqueItems' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(d)+" , params: { i: i, j: j } ",!1!==e.opts.messages&&(i+=" , message: 'should NOT have duplicate items (items ## ' + j + ' and ' + i + ' are identical)' "),e.opts.verbose&&(i+=" , schema: ",i+=c?"validate.schema"+l:""+o,i+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),i+=" } "):i+=" {} ";var k=i;i=f.pop(),!e.compositeRule&&u?e.async?i+=" throw new ValidationError(["+k+"]); ":i+=" validate.errors = ["+k+"]; return false; ":i+=" var err = "+k+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",i+=" } ",u&&(i+=" else { ")}else u&&(i+=" if (true) { ");return i}},5899:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Freeze Risk Alarm","ar":"إنذار خطر التجمد","da":"Fryserisikoalarm","de":"Alarm für Einfriergefahr","es":"Alarma de riesgo de congelación","fr":"Alarme de risque de gel","it":"Allarme rischio di congelamento","ko":"동파 위험 알람","nl":"Vriesgevaaralarm","no":"Frostrisikoalarm","pl":"Alarm ryzyka zamarznięcia","ru":"Сигнализация риска замораживания","sv":"Frysrisklarm"},"titleShort":{"en":"Freeze Risk","ar":"خطر التجمد","da":"Fryserisiko","de":"Einfriergefahr","es":"Riesgo de congelación","fr":"Risque de gel","it":"Rischio di congelamento","ko":"동파 위험","nl":"Vriesgevaar","no":"Frostrisiko","pl":"Ryzyko zamarznięcia","ru":"Риск замораживания","sv":"Frysrisk"},"desc":{"en":"True when in the current ambient conditions water could potentially freeze.","ar":"صحيح عند إمكانية تجمد الماء في الظروف المحيطة الحالية.","da":"Sandt, når vandet under de nuværende forhold potentielt kan fryse.","de":"Wahr, wenn bei den aktuellen Umgebungsbedingungen Wasser gefrieren könnte.","es":"Verdadero cuando el agua podría congelarse debido a las condiciones ambientales.","fr":"Se déclenche lorsque, dans les conditions ambiantes actuelles, l\'eau peut potentiellement geler.","it":"È vero quando nelle attuali condizioni ambientali l\'acqua potrebbe potenzialmente congelare.","ko":"현재 주변 조건에서 물이 얼 가능성이 있을 때 참입니다.","nl":"Waar als in de huidige omgevingsomstandigheden water zou kunnen bevriezen.","no":"Sann når vann under de nåværende miljøforholdene potensielt kan fryse.","pl":"Prawda, gdy w obecnych warunkach otoczenia woda mogłaby zamarznąć.","ru":"Истина, когда при текущих условиях окружающей среды вода потенциально может замерзнуть.","sv":"Sant när vattnet under de rådande förhållandena potentiellt kan frysa."},"insights":true,"insightsTitleTrue":{"en":"Freeze risk alarm turned on","ar":"تم تشغيل إنذار خطر التجمد","da":"Fryserisikoalarm slået til","de":"Alarm für Einfriergefahr ist aktiviert","es":"Alarma de riesgo de congelación activada","fr":"Alarme de risque de gel activée","it":"Allarme rischio di congelamento attivato","ko":"동파 위험 알람 켜짐","nl":"Vriesgevaaralarm ingeschakeld","no":"Frostrisikoalarm aktivert","pl":"Alarm ryzyka zamarznięcia włączony","ru":"Сигнализация риска замораживания включена","sv":"Larmet för frysrisk aktiverat"},"insightsTitleFalse":{"en":"Freeze risk alarm turned off","ar":"تم إيقاف تشغيل إنذار خطر التجمد","da":"Fryserisikoalarm slået fra","de":"Alarm für Einfriergefahr ausgeschaltet","es":"Alarma de riesgo de congelación desactivada","fr":"Alarme de risque de gel désactivée","it":"Allarme rischio di congelamento disattivato","ko":"동파 위험 알람 꺼짐","nl":"Vriesgevaaralarm uitgeschakeld","no":"Frostrisikoalarm deaktivert","pl":"Alarm ryzyka zamarznięcia wyłączony","ru":"Сигнализация риска замораживания выключена","sv":"Larmet för frysrisk avstängt"},"color":"#0091FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_freeze_risk_true","highlight":true,"title":{"en":"The freeze risk alarm turned on","ar":"تم تشغيل إنذار خطر التجمد","da":"Fryserisikoalarmen er slået til","de":"Der Alarm für Einfriergefahr wurde aktiviert","es":"La alarma de riesgo de congelación se ha activado","fr":"L\'alarme de risque de gel s\'est activée","it":"L\'allarme di rischio di congelamento si è attivato","ko":"동파 위험 알람이 켜져 있으면","nl":"Het vriesgevaaralarm aan gaat","no":"Frostrisikoalarmen ble aktivert","pl":"Włączył się alarm ryzyka zamarznięcia","ru":"Сигнализация риска замораживания включена","sv":"Larmet för frysrisk aktiverat"}},{"id":"alarm_freeze_risk_false","title":{"en":"The freeze risk alarm turned off","ar":"تم إيقاف تشغيل إنذار خطر التجمد","da":"Fryserisikoalarmen er slået fra","de":"Der Alarm für Einfriergefahr ist ausgeschaltet","es":"La alarma de riesgo de congelación se ha desactivado","fr":"L\'alarme de risque de gel s\'est désactivée","it":"L\'allarme di rischio di congelamento si è disattivato","ko":"동파 위험 알람이 꺼져 있으면","nl":"Het vriesgevaaralarm uit gaat","no":"Frostrisikoalarmen ble deaktivert","pl":"Wyłączył się alarm ryzyka zamarznięcia","ru":"Сигнализация риска замораживания выключена","sv":"Larmet för frysrisk avstängt"}}],"conditions":[{"id":"alarm_freeze_risk","title":{"en":"The freeze risk alarm is !{{on|off}}","ar":"إنذار خطر التجميد !{{يعمل|لا يعمل}}","da":"Fryserisikoalarmen er !{{tændt|slukket}}","de":"Alarm für Einfriergefahr ist !{{an|aus}}","es":"La alarma de riesgo de congelación está !{{activada|desactivada}}","fr":"L\'alarme de risque de gel est !{{activée|désactivée}}","it":"L\'allarme di rischio di congelamento è !{{attivo|non attivo}}","ko":"동파 위험 알람이 !{{켜져|꺼져}} 있으면","nl":"Het vriesgevaaralarm staat !{{aan|uit}}","no":"Frostrisikoalarmen er !{{på|av}}","pl":"Alarm ryzyka zamarznięcia jest !{{włączony|wyłączony}}","ru":"Сигнализация риска замораживания !{{включена|выключена}}","sv":"Larmet för frysrisk är !{{på|av}}"}}]},"minCompatibility":"12.11.0"}')},5905:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Kettle","nl":"Waterkoker","de":"Wasserkocher","fr":"Bouilloire","it":"Bollitore","sv":"Vattenkokare","no":"Vannkoker","es":"Hervidor","da":"Elkedel","ru":"Чайник","pl":"Czajnik","ko":"주전자","ar":"غلاية"},"description":{"en":"Use this device class for kettle devices, that can heat water.","de":"Nutze diese Geräteklasse für Kessel-Geräte, die Wasser kochen können.","fr":"Utilisez cette classe d\'appareil pour les bouilloires qui peuvent faire chauffer de l\'eau.","it":"Utilizza questa classe di dispositivi per i bollitori, che possono riscaldare l\'acqua.","sv":"Använd den här enhetsklassen för vattenkokare, som kan värma vatten.","no":"Bruk denne enhetsklassen for vannkokere som kan varme opp vann.","es":"Utiliza esta clase de dispositivo para los hervidores que calientan agua.","da":"Brug denne enhedsklasse til elkedelenheder, der kan opvarme vand.","ru":"Используйте этот класс устройств для чайников, которые могут нагревать воду.","pl":"Użyj tej klasy urządzeń dla czajników, które ogrzewają wodę.","ko":"이 디바이스 클래스는 물을 데울 수 있는 주전자에 사용합니다.","ar":"استخدم فئة الجهاز هذه لأجهزة الغلاية التي يمكنها تسخين الماء.","nl":"Gebruik deze apparaatklasse voor waterkokers die water kunnen verwarmen."}}')},5932:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Combi Microwave Oven","da":"Kombimikrobølgeovn","de":"Kombi-Mikrowellenherd","es":"Horno-microondas","fr":"Four à micro-ondes combiné","it":"Forno a microonde combinato","ko":"전자레인지 겸 오븐","nl":"Combimagnetron","no":"Kombi-mikrobølgeovn","pl":"Kuchenka mikrofalowa combi","ru":"Комбинированная микроволновая печь","sv":"Kombimikrovågsugn","ar":"فرن ميكروويف مدمج"},"description":{"en":"Use this device class for combination microwave ovens.","da":"Brug denne enhedsklasse til kombimikrobølgeovne.","de":"Verwenden Sie diese Geräteklasse für Kombi-Mikrowellenherde.","es":"Utilice esta clase de dispositivo para equipos que combinan funciones de horno y microondas.","fr":"Utilisez cette classe d\'appareils pour les fours à micro-ondes combinés.","it":"Utilizza questa classe di dispositivi per i forni a microonde combinati.","ko":"이 디바이스 클래스는 전자레인지와 오븐 기능을 합친 콤비오븐에 사용합니다.","nl":"Gebruik deze apparaatklasse voor combimagnetrons.","no":"Bruk denne enhetsklassen for kombiovner med mikrobølgeovn.","pl":"Tej klasy urządzeń należy używać w przypadku kuchenkach mikrofalowych combi.","ru":"Используйте этот класс устройств для комбинированных микроволновых печей.","sv":"Använd den här enhetsklassen för kombinerade mikrovågsugnar.","ar":"استخدم فئة الجهاز هذه لأفران الميكروويف المدمجة."},"minCompatibility":"12.0.0"}')},5934:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Button","nl":"Knop","de":"Taste","fr":"Bouton","it":"Pulsante","sv":"Knapp","no":"Knapp","es":"Botón","da":"Knap","ru":"Кнопка","pl":"Przycisk","ko":"버튼","ar":"زر"},"description":{"en":"Use this device class for buttons, such as a remote.","de":"Nutze diese Geräteklasse für Tasten wie z. B. eine Fernbedienung.","fr":"Utilisez cette classe d\'appareil pour les boutons, comme pour une télécommande.","it":"Utilizza questa classe di dispositivi per i pulsanti, come ad esempio un telecomando.","sv":"Använd den här enhetsklassen för knappar, som en fjärrkontroll.","no":"Bruk denne enhetsklassen for knapper, f.eks. en fjernkontroll.","es":"Utiliza esta clase de dispositivo para los botones, p. ej., mandos a distancia.","da":"Brug denne enhedsklasse til knapper, f-eks. en fjernbetjening.","ru":"Используйте этот класс устройств для устройств с кнопками, например пультов.","pl":"Użyj tej klasy urządzeń dla przycisków, np. pilota.","ko":"이 디바이스 클래스는 리모컨 등 버튼이 있는 것에 사용합니다.","ar":"استخدم فئة الجهاز هذه للأزرار، مثل جهاز التحكم عن بعد.","nl":"Gebruik deze apparaatklasse voor knoppen, zoals een afstandsbediening."}}')},5948:e=>{"use strict";e.exports=JSON.parse('{"homey:manager:geolocation":{"title":{"en":"Read Homey\'s location","nl":"Homey\'s locatie uitlezen","de":"Homeys Standort lesen","fr":"Lire la position de Homey","it":"Leggi la posizione di Homey","sv":"Läs av Homeys plats","no":"Les av Homeys posisjon","es":"Leer la posición de Homey","da":"Læs Homeys placering","ru":"Читать местонахождение Homey","pl":"Odczytaj lokalizację Homey","ko":"Homey 위치 읽기","ar":"قراءة موقع Homey"}},"homey:manager:ledring":{"title":{"en":"Control Homey\'s LED ring","nl":"Homey\'s LED ring besturen","de":"Homeys LED-Ring steuern","fr":"Contrôler l\'anneau LED de Homey","it":"Controlla l\'anello LED di Homey","sv":"Kontrollera Homeys LED-ring","no":"Kontroller Homeys LED-ring","es":"Controlar el anillo LED de Homey","da":"Kontroller Homeys LED-ring","ru":"Управлять светодиодным кольцом Homey","pl":"Steruj lampą pierścieniową Homey","ko":"Homey LED 링 제어","ar":"التحكم في حلقة LED الخاصة بـ Homey"}},"homey:manager:media":{"title":{"en":"Control Homey\'s Music","nl":"Homey\'s Muziek besturen","de":"Homeys Musik steuern","fr":"Contrôler la musique de Homey","it":"Controlla la musica di Homey","sv":"Styr Homeys musik","no":"Kontroller Homeys musikk","es":"Controlar la música de Homey","da":"Kontroller Homeys musik","ru":"Управлять музыкой Homey","pl":"Steruj muzyką Homey","ko":"Homey의 음악 제어","ar":"التحكم في موسيقى Homey"}},"homey:manager:speech-input":{"title":{"en":"React to speech","nl":"Reageren op spraak","de":"Auf Sprache reagieren","fr":"Réagir au discours","it":"Reagisci al parlato","sv":"Reagera på tal","no":"Reager på tale","es":"Reaccionar al habla","da":"Reager på tale","ru":"Реагировать на голос","pl":"Reaguj na mowę","ko":"음성에 반응","ar":"الاستجابة للكلام"}},"homey:manager:speech-output":{"title":{"en":"Let Homey talk","nl":"Homey laten praten","de":"Homey sprechen lassen","fr":"Laisser Homey parler","it":"Permetti a Homey di parlare","sv":"Låt Homey prata","no":"La Homey snakke","es":"Deja que Homey hable","da":"Lad Homey tale","ru":"Разрешить Homey говорить","pl":"Pozwól Homey mówić","ko":"Homey의 음성 안내","ar":"جعل Homey يتكلم"}},"homey:wireless:433":{"title":{"en":"Send and receive on the 433 MHz frequency","nl":"Verzenden en ontvangen op de 433 MHz frequentie","de":"Auf der 433MHz-Frequenz senden und empfangen","fr":"Envoyer et recevoir sur la fréquence 433 MHz","it":"Invia e ricevi sulla frequenza 433 MHz","sv":"Skicka och ta emot på frekvensen 433 MHz","no":"Send og motta på frekvensen 433 MHz","es":"Enviar y recibir en la frecuencia de 433 MHz","da":"Send, og modtag på 433 MHz-frekvensen","ru":"Отправка и получение сигналов на частоте 433 МГц","pl":"Wysyłaj i odbieraj sygnały o częstotliwości 433 MHz","ko":"433MHz 주파수 송수신","ar":"إرسال واستقبال على تردد 433 MHz"}},"homey:wireless:868":{"title":{"en":"Send and receive on the 868 MHz frequency","nl":"Verzenden en ontvangen op de 868 MHz frequentie","de":"Auf der 868MHz-Frequenz senden und empfangen","fr":"Envoyer et recevoir sur la fréquence 868 MHz","it":"Invia e ricevi sulla frequenza 868 MHz","sv":"Skicka och ta emot på frekvensen 468 MHz","no":"Send og motta på frekvensen 468 MHz","es":"Enviar y recibir en la frecuencia de 868 MHz","da":"Send, og modtag på 868 MHz-frekvensen","ru":"Отправка и получение сигналов на частоте 868 МГц","pl":"Wysyłaj i odbieraj sygnały o częstotliwości 868 MHz","ko":"868MHz 주파수 송수신","ar":"إرسال واستقبال على تردد 868 MHz"}},"homey:wireless:ir":{"title":{"en":"Send and receive Infrared","nl":"Infrarood verzenden en ontvangen","de":"Infrarot senden und empfangen","fr":"Envoyer et recevoir en infrarouge","it":"Invia e ricevi in infrarossi","sv":"Skicka och ta emot infrarött","no":"Send og motta infrarødt","es":"Enviar y recibir en infrarrojos","da":"Send, og modtag på infrarød","ru":"Отправка и получение ИК-сигналов","pl":"Wysyłaj i odbieraj podczerwień","ko":"적외선 송수신","ar":"إرسال واستقبال الأشعة تحت الحمراء"}},"homey:wireless:zwave":{"title":{"en":"Send and receive Z-Wave for specific devices","nl":"Z-Wave verzenden en ontvangen voor specifieke apparaten","de":"Z-Wave für spezifische Geräte senden und empfangen","fr":"Envoyer et recevoir Z-Wave pour les appareils spécifiques","it":"Invia e ricevi Z-Wave per dispositivi specifici","sv":"Skicka och ta emot Z-Wave för specifika enheter","no":"Send og motta Z-Wave for spesifikke enheter","es":"Enviar y recibir Z-Wave para dispositivos específicos","da":"Send, og modtag på Z-Wave for specifikke enheder","ru":"Отправлять и получать сигналы Z-Wave для определенных устройств","pl":"Wysyłaj i odbieraj Z-Wave dla określonych urządzeń","ko":"특정 제품용 Z-Wave 송수신","ar":"إرسال واستقبال Z-Wave لأجهزة محددة"}},"homey:wireless:zigbee":{"title":{"en":"Send and receive Zigbee for specific devices","nl":"Zigbee verzenden en ontvangen voor specifieke apparaten","de":"Zigbee für spezifische Geräte senden und empfangen","fr":"Envoyer et recevoir Zigbee pour les appareils spécifiques","it":"Invia e ricevi Zigbee per dispositivi specifici","sv":"Skicka och ta emot Zigbee för specifika enheter","no":"Send og motta Zigbee for spesifikke enheter","es":"Enviar y recibir Zigbee para dispositivos específicos","da":"Send, og modtag på Zigbee for specifikke enheder","ru":"Отправлять и получать сигналы Zigbee для определенных устройств","pl":"Wysyłaj i odbieraj Zigbee dla określonych urządzeń","ko":"특정 제품용 Zigbee 송수신","ar":"إرسال واستقبال Zigbee لأجهزة محددة"}},"homey:wireless:nfc":{"title":{"en":"Read and write NFC tags","nl":"NFC tags lezen en schrijven","de":"NFC-Tags lesen und schreiben","fr":"Lire et écrire les tags NFC","it":"Leggi e scrivi i tag NFC","sv":"Läs och skriv NFC-taggar","no":"Les og skriv NFC-tagger","es":"Leer y escribir etiquetas NFC","da":"Læs, og skriv NFC-tags","ru":"Чтение и запись тегов NFC","pl":"Odczytuj i twórz tagi NFC","ko":"NFC 태그 읽기 및 쓰기","ar":"قراءة وكتابة علامات NFC"}},"homey:manager:api":{"title":{"en":"Gain full access to Homey to control everything on behalf of the user","nl":"Volledige toegang tot Homey om alles te bedienen namens de gebruiker","de":"Erhalte vollen Zugriff auf Homey, um alles im Namen des Benutzers zu steuern","fr":"Obtenir l\'accès complet à Homey pour contrôler tout au nom de l\'utilisateur","it":"Ottieni l\'accesso completo a Homey per controllare tutto a nome dell\'utente","sv":"Få full åtkomst till Homey för att styra allt åt användaren","no":"Få full tilgang til Homey for å kontrollere alt på vegne av brukeren","es":"Acceso completo a Homey para controlarlo todo en nombre del usuario","da":"Få fuld adgang til Homey for at kontrollere alt på brugerens vegne","ru":"Получите полный доступ к Homey, чтобы контролировать все от имени пользователя","pl":"Zdobądź pełny dostęp do Homey, aby sterować wszystkim w imieniu użytkownika","ko":"사용자를 대신해 모든 것을 제어할 수 있도록 Homey에 대한 전체 액세스 권한 얻기","ar":"الحصول على وصول كامل إلى Homey للتحكم في كل شيء نيابة عن المستخدم"}},"homey:wireless:ble":{"title":{"en":"Communicate with Bluetooth Low Energy devices","nl":"Communiceren met Bluetooth Low Energy apparaten","de":"Mit Bluetooth-Low-Energy-Geräten kommunizieren","fr":"Communiquer avec les appareils Bluetooth à faible énergie","it":"Comunica con i dispositivi Bluetooth Low Energy","sv":"Kommunicera med Bluetooth låg energi-enheter","no":"Kommuniser med Bluetooth Low Energy-enheter","es":"Comunicarse con dispositivos de Bluetooth Low Energy","da":"Kommuniker med Bluetooth low energy-enheder","ru":"Связываться с устройствами Bluetooth с низким энергопотреблением","pl":"Porozumiewaj się z urządzeniami Bluetooth Low Energy","ko":"블루투스 LE 제품과 통신","ar":"التواصل مع أجهزة Bluetooth Low Energy"}}}')},5950:(e,t,a)=>{"use strict";var r=a(6740),i=/^(\d\d\d\d)-(\d\d)-(\d\d)$/,n=[0,31,28,31,30,31,30,31,31,30,31,30,31],s=/^(\d\d):(\d\d):(\d\d)(\.\d+)?(z|[+-]\d\d(?::?\d\d)?)?$/i,o=/^(?=.{1,253}\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\.?$/i,l=/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,d=/^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i,u=/^(?:(?:http[s\u017F]?|ftp):\/\/)(?:(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+(?::(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?@)?(?:(?!10(?:\.[0-9]{1,3}){3})(?!127(?:\.[0-9]{1,3}){3})(?!169\.254(?:\.[0-9]{1,3}){2})(?!192\.168(?:\.[0-9]{1,3}){2})(?!172\.(?:1[6-9]|2[0-9]|3[01])(?:\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-?)*(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)(?:\.(?:(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+-?)*(?:[0-9KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+)*(?:\.(?:(?:[KSa-z\xA1-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\/(?:[\0-\x08\x0E-\x1F!-\x9F\xA1-\u167F\u1681-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u2FFF\u3001-\uD7FF\uE000-\uFEFE\uFF00-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*)?$/i,m=/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,p=/^(?:\/(?:[^~/]|~0|~1)*)*$/,c=/^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,g=/^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/;function h(e){return e="full"==e?"full":"fast",r.copy(h[e])}function v(e){var t=e.match(i);if(!t)return!1;var a=+t[1],r=+t[2],s=+t[3];return r>=1&&r<=12&&s>=1&&s<=(2==r&&function(e){return e%4==0&&(e%100!=0||e%400==0)}(a)?29:n[r])}function f(e,t){var a=e.match(s);if(!a)return!1;var r=a[1],i=a[2],n=a[3],o=a[5];return(r<=23&&i<=59&&n<=59||23==r&&59==i&&60==n)&&(!t||o)}e.exports=h,h.fast={date:/^\d\d\d\d-[0-1]\d-[0-3]\d$/,time:/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,"date-time":/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,uri:/^(?:[a-z][a-z0-9+-.]*:)(?:\/?\/)?[^\s]*$/i,"uri-reference":/^(?:(?:[a-z][a-z0-9+-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i,"uri-template":d,url:u,email:/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,hostname:o,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:w,uuid:m,"json-pointer":p,"json-pointer-uri-fragment":c,"relative-json-pointer":g},h.full={date:v,time:f,"date-time":function(e){var t=e.split(k);return 2==t.length&&v(t[0])&&f(t[1],!0)},uri:function(e){return y.test(e)&&l.test(e)},"uri-reference":/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,"uri-template":d,url:u,email:/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,hostname:o,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/,ipv6:/^\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(?:%.+)?\s*$/i,regex:w,uuid:m,"json-pointer":p,"json-pointer-uri-fragment":c,"relative-json-pointer":g};var k=/t|\s/i,y=/\/|:/,b=/[^\\]\\Z/;function w(e){if(b.test(e))return!1;try{return new RegExp(e),!0}catch(e){return!1}}},6015:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Position","nl":"Positie","de":"Position","fr":"Position","it":"Posizione","sv":"Position","no":"Posisjon","es":"Posición","da":"Position","ru":"Позиция","pl":"Pozycja","ko":"동작 제어","ar":"الموضع"},"desc":{"en":"Set the position of window coverings. 0% is closed, 100% is open","de":"Die Position der Jalousien setzen. 0% ist geschlossen, 100% ist offen","fr":"Définir la position des stores. 0% est fermé, 100% est ouvert","it":"Imposta la posizione delle tapparelle. 0% è chiuse, 100% è aperte","sv":"Ställ in positionen för fönsterskydden. 0 % är stängd, 100 % är öppet","no":"Innstill vindusbeskyttelsens posisjon. 0 % er lukket, 100 % er åpen","es":"Configura la posición de los cobertores de ventanas. 0 % es \'cerrados\', 100 % es \'abiertos\'","da":"Indstil positionen af dækket for vinduet. 0% er lukket, 100% er åben","ru":"Установите позицию оконных навесов. 0% означает закрыто, 100% означает открыто","pl":"Ustaw pozycję osłon okiennych. 0% oznacza zasunięte, 100% rozchylone","ko":"창문 커버 위치를 설정합니다. 0%는 닫힘, 100%는 열림입니다.","ar":"ضبط موضع أغطية النوافذ. 0% مغلق، 100% مفتوح","nl":"Stel de positie van de raambekleding in. 0% is gesloten, 100% is open"},"chartType":"stepLine","min":0,"max":1,"decimals":2,"units":{"en":"%","ko":"%","no":"%","ru":"%","ar":"%","da":"%","de":"%","es":"%","fr":"%","it":"%","nl":"%","pl":"%","sv":"%"},"color":"#F5B207","getable":true,"setable":true,"uiComponent":"slider","$flow":{"triggers":[{"id":"windowcoverings_set_changed","title":{"en":"The position changed","nl":"De positie is veranderd","de":"Position hat sich geändert","fr":"La position a changé","it":"La posizione è cambiata","sv":"Position ändrad","no":"Posisjonen ble endret","es":"La posición ha cambiado","da":"Position ændret","ru":"Позиция изменилась","pl":"Zmieniła się pozycja","ko":"창문 가림 %가 변경되면","ar":"تم تغيير الموضع"},"tokens":[{"name":"windowcoverings_set","type":"number","title":{"en":"Position","nl":"Positie","de":"Position","fr":"Position","it":"Posizione","sv":"Position","no":"Posisjon","es":"Posición","da":"Position","ru":"Позиция","pl":"Pozycja","ko":"창문 가림 %가 다음이면","ar":"الموضع"},"example":0.5}]}],"actions":[{"id":"windowcoverings_set","highlight":true,"title":{"en":"Set the position to","nl":"Zet de positie naar","de":"Setze die Position auf","fr":"Mettre la position sur","it":"Imposta la posizione su","sv":"Ställ in positionen till","no":"Innstill posisjonen til","es":"Configurar la posición como","da":"Indstil positionen til","ru":"Установите позицию на","pl":"Ustaw pozycję na","ko":"창문 가림 %를 다음으로 설정","ar":"ضبط الموضع على"},"hint":{"en":"Change the position to open (100%), closed (0%), or a value in between.","nl":"Verander de positie naar open (100%), gesloten (0%), of een waarde daartussen.","ru":"Измените позицию на открытую (100%), закрытую (0%) или между этими значениями.","pl":"Zmień pozycję na rozchylone (100%), zasunięte (0%) lub wartość pomiędzy.","ko":"위치를 열림(100%), 닫힘(0%) 또는 그 사이의 값으로 변경해요.","no":"Endre posisjonen til åpen (100 %), lukket (0 %) eller en verdi mellom disse.","ar":"تغيير الموضع إلى مفتوح (100%) أو مغلق (0%)، أو قيمة بينهما.","da":"Skift position til åben (100 %), lukket (0 %) eller en værdi midt imellem.","de":"Ändere die Position auf offen (100 %), geschlossen (0 %) oder einen Wert dazwischen.","es":"Cambia la posición a abierto (100 %), cerrado (0 %) o un valor intermedio.","fr":"Réglez la position sur ouvert (100 %), fermé (0 %) ou une valeur intermédiaire.","it":"Modifica la posizione su aperto (100%), chiuso (0%) o su un valore intermedio.","sv":"Ändra positionen till öppen (100 %), stängd (0 %) eller ett värde däremellan."},"args":[{"name":"windowcoverings_set","type":"range","min":0,"max":1,"step":0.01,"value":0.5,"label":"%","labelMultiplier":100,"labelDecimals":0}]}]}}')},6036:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Pump","ar":"المضخة","da":"Pumpe","de":"Pumpe","es":"Bomba","fr":"Pompe","it":"Pompa","ko":"펌프","nl":"Pompen","no":"Pumpe","pl":"Pompa","ru":"Насос","sv":"Pump"},"description":{"en":"Use this device class for pumps.","ar":"استخدم فئة الجهاز هذه للمضخات.","da":"Brug denne enhedsklasse til pumper.","de":"Verwende diese Geräteklasse für Pumpen.","es":"Usa esta clase de dispositivo para las bombas.","fr":"Utilisez cette classe d\'appareils pour les pompes.","it":"Utilizza questa classe di dispositivi per le pompe.","ko":"펌프에 이 제품 클래스를 사용합니다.","nl":"Gebruik deze apparaatklasse voor pompen.","no":"Bruk denne enhetsklassen for pumper.","pl":"Tej klasy urządzeń należy używać dla pomp.","ru":"Используйте этот класс устройств для насосов.","sv":"Använd denna enhetsklass för pumpar."},"minCompatibility":"12.11.0"}')},6038:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Swing mode","nl":"Zwenkmodus","da":"Svingtilstand","it":"Modalità oscillazione","ko":"스윙 모드","pl":"Tryb wahania","ru":"Режим поворота","sv":"Svängläge","es":"Modo oscilante","fr":"Mode de balancement","no":"Svingmodus","ar":"وضع التأرجح","de":"Schwenkmodus"},"values":[{"id":"vertical","title":{"en":"Vertical","nl":"Verticaal","da":"Lodret","it":"Verticale","ko":"상하","pl":"Pionowe","ru":"Вертикальный","sv":"Vertikalt","es":"Vertical","fr":"Vertical","no":"Vertikal","ar":"عمودي","de":"Vertikal"}},{"id":"horizontal","title":{"en":"Horizontal","nl":"Horizontaal","da":"Vandret","it":"Orizzontale","ko":"좌우","pl":"Poziome","ru":"Горизонтальный","sv":"Horisontellt","es":"Horizontal","fr":"Horizontal","no":"Horisontal","ar":"أفقي","de":"Horizontal"}},{"id":"both","title":{"en":"Both","nl":"Beide","da":"Begge","it":"Entrambi","ko":"상하좌우","pl":"Oba","ru":"Оба","sv":"Båda","es":"Ambos","fr":"Les deux","no":"Begge","ar":"كلاهما","de":"Beide"}}],"color":"#6236FF","getable":true,"setable":true,"uiComponent":"picker","$flow":{"triggers":[{"id":"swing_mode_changed","title":{"en":"The swing mode changed to","nl":"De zwenkstand is veranderd naar","da":"Svingtilstanden er ændret til","it":"La modalità oscillazione è passata a","ko":"스윙 모드가 다음으로 변경되면","no":"Svingmodusen ble endret til","pl":"Tryb wahania zmienił się na","ru":"Режим поворота изменен на:","sv":"Svängläget har ändrats till","es":"El modo de giro ha cambiado a","fr":"Le mode d\'oscillation est passé à","ar":"تم تغيير وضع التأرجح إلى","de":"Der Schwenkmodus wurde geändert auf"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"swing_mode_is","title":{"en":"The swing mode !{{is|is not}}","nl":"De zwenkstand !{{is|is niet}}","da":"Svingtilstanden !{{er|er ikke}}","it":"La modalità oscillazione !{{è|non è}}","ko":"스윙 모드가 다음!{{과 같으면|이 아니면}}","pl":"Tryb wahania !{{jest|nie jest}}","ru":"Режим поворота !{{|не}}","sv":"Svängläget !{{är|är inte}}","es":"El modo de oscilación !{{está|no está}}","fr":"Le mode de balancement !{{est|n\'est pas}}","no":"Svingmodusen !{{er|er ikke}}","ar":"وضع التأرجح !{{هو|ليس}}","de":"Der Schwenkmodus !{{ist|ist nicht}}"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}],"actions":[{"id":"set_swing_mode","title":{"en":"Set the swing mode to","nl":"Stel de zwenkstand in op","da":"Indstil svingtilstanden til","it":"Imposta la modalità oscillazione su","ko":"스윙 모드를 다음으로 설정","pl":"Ustaw tryb wahania na","ru":"Установить режим поворота на:","sv":"Ställ in svängläget till","es":"Ajustar el modo de oscilación en","fr":"Définir le mode d\'oscillation sur","no":"Sett svingmodusen til","ar":"ضبط وضع التأرجح على","de":"Stelle den Schwenkmodus auf"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.2.0"}')},6074:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Light","nl":"Lamp","de":"Lampe","fr":"Lampe","it":"Lampada","sv":"Lampa","no":"Lampe","es":"Lámpara","da":"Lys","ru":"Лампа","pl":"Oświetlenie","ko":"조명","ar":"ضوء"},"description":{"en":"Use this device class for lights, usually together with the `onoff`, `dim` and `light_*` capabilities.","de":"Nutze diese Geräteklasse für Lampen - normalerweise zusammen mit den `onoff`-, `dim`- und `light_*`-Fähigkeiten.","fr":"Utilisez cette classe d\'appareil pou les lampes, habituellement avec les capacités `onoff`, `dim` et `light_*`.","it":"Utilizza questa classe di dispositivi per le lampade, generalmente insieme alle funzioni \'onoff\', `dim` e `light_*`.","sv":"Använd den här enhetsklassen för lampor, oftast tillsammans med funktionerna `onoff`, `dim` och `light_*`.","no":"Bruk denne enhetsklassen for lamper, ofte sammen med funksjonene `onoff`, `dim` och `light_*`.","es":"Utiliza esta clase de dispositivo para las luces, generalmente junto con las capacidades de \'onoff\', `dim`, y `light_*`.","da":"Brug denne enhedsklasse til lys, normalt sammen med `onoff`, `dim` og `light_*` funktionerne.","ru":"Используйте этот класс устройств для ламп, обычно вместе с функциями `onoff`,`dim` и `light_ *`.","pl":"Użyj tej klasy urządzeń dla oświetlenia, zwykle razem ze zdolnościami `onoff`, `dim` oraz `light_*`.","ko":"이 디바이스 클래스는 보통 \'onoff\', \'dim\', \'light_*\' 기능을 갖춘 조명에 사용합니다.","ar":"استخدم فئة الجهاز هذه للأضواء، عادةً مع إمكانيات \'onoff\' (تشعيل/إيقاف) و\'dim\' (تعتيم) و\'light_*\' (الضوء).","nl":"Gebruik deze apparaatklasse voor lichten, meestal samen met de opties \'onoff\', \'dim\' en \'light_*\'."}}')},6081:(e,t,a)=>{var r={"./alarm_battery.json":1997,"./alarm_bin_full.json":1615,"./alarm_bin_missing.json":5686,"./alarm_cleaning_pad_missing.json":6962,"./alarm_co.json":4522,"./alarm_co2.json":212,"./alarm_cold.json":8114,"./alarm_connectivity.json":7667,"./alarm_contact.json":1080,"./alarm_door_fault.json":6291,"./alarm_fire.json":2544,"./alarm_freeze_risk.json":5899,"./alarm_gas.json":9981,"./alarm_generic.json":2477,"./alarm_heat.json":7530,"./alarm_light.json":7008,"./alarm_lost.json":1366,"./alarm_moisture.json":7122,"./alarm_motion.json":570,"./alarm_night.json":8006,"./alarm_noise.json":6410,"./alarm_occupancy.json":9509,"./alarm_open.json":8364,"./alarm_pm01.json":7800,"./alarm_pm1.json":1530,"./alarm_pm10.json":7110,"./alarm_pm25.json":2190,"./alarm_power.json":5633,"./alarm_presence.json":7741,"./alarm_problem.json":9091,"./alarm_pump_device.json":4525,"./alarm_pump_supply.json":3816,"./alarm_rain.json":8142,"./alarm_running.json":7099,"./alarm_safety.json":9894,"./alarm_smoke.json":9073,"./alarm_stuck.json":6312,"./alarm_tamper.json":77,"./alarm_tank_empty.json":8390,"./alarm_tank_missing.json":2123,"./alarm_tank_open.json":601,"./alarm_vibration.json":7250,"./alarm_water.json":1275,"./audio_output.json":868,"./battery_charging_state.json":5777,"./button.json":4946,"./channel_down.json":5366,"./channel_up.json":295,"./cooking_time.json":1574,"./dim.json":3872,"./dishwasher_program.json":9337,"./docked.json":2744,"./ev_charging_state.json":3415,"./evcharger_charging.json":6929,"./evcharger_charging_state.json":7363,"./fan_mode.json":8187,"./fan_speed.json":9331,"./garagedoor_closed.json":2752,"./heater_operation_mode.json":3573,"./homealarm_state.json":140,"./hot_water_mode.json":9249,"./laundry_dryer_dryness.json":7975,"./laundry_washer_cycles.json":4346,"./laundry_washer_program.json":4355,"./laundry_washer_speed.json":8504,"./level_aqi.json":714,"./level_carbon_filter.json":5391,"./level_ch2o.json":7073,"./level_co.json":2139,"./level_co2.json":4195,"./level_hepa_filter.json":7920,"./level_nox.json":8686,"./level_o3.json":5003,"./level_pm01.json":1417,"./level_pm1.json":2621,"./level_pm10.json":8627,"./level_pm25.json":759,"./level_radon.json":1169,"./level_so2.json":6355,"./level_tvoc.json":4345,"./light_hue.json":6983,"./light_mode.json":8272,"./light_saturation.json":6907,"./light_temperature.json":4131,"./lock_mode.json":6797,"./locked.json":4096,"./measure_aqi.json":3808,"./measure_battery.json":2524,"./measure_carbon_filter.json":4173,"./measure_ch2o.json":9975,"./measure_co.json":3597,"./measure_co2.json":5165,"./measure_content_volume.json":7951,"./measure_current.json":104,"./measure_data_rate.json":6478,"./measure_data_size.json":7893,"./measure_distance.json":1832,"./measure_frequency.json":9183,"./measure_gust_angle.json":1288,"./measure_gust_strength.json":6656,"./measure_hepa_filter.json":9450,"./measure_humidity.json":8878,"./measure_luminance.json":3387,"./measure_moisture.json":17,"./measure_monetary.json":2940,"./measure_noise.json":9819,"./measure_nox.json":3940,"./measure_o3.json":7557,"./measure_odor.json":9581,"./measure_ph.json":9735,"./measure_pm01.json":795,"./measure_pm1.json":51,"./measure_pm10.json":2517,"./measure_pm25.json":3741,"./measure_power.json":9792,"./measure_pressure.json":1036,"./measure_radon.json":3803,"./measure_rain.json":593,"./measure_rain_intensity.json":3383,"./measure_rotation.json":8013,"./measure_signal_strength.json":2269,"./measure_so2.json":6957,"./measure_speed.json":2254,"./measure_temperature.json":5771,"./measure_tvoc.json":9415,"./measure_tvoc_index.json":596,"./measure_ultraviolet.json":8724,"./measure_voltage.json":287,"./measure_water.json":1482,"./measure_weight.json":6171,"./measure_wind_angle.json":517,"./measure_wind_strength.json":3651,"./media_input.json":2501,"./meter_gas.json":4966,"./meter_power.json":3789,"./meter_rain.json":5858,"./meter_water.json":2823,"./microwave_mode.json":2391,"./mower_state.json":8062,"./onoff.json":8220,"./operational_state.json":8324,"./oscillating.json":4267,"./oven_mode.json":5150,"./power_boost.json":5643,"./power_level.json":8434,"./progress.json":4861,"./pump_mode.json":3598,"./pump_setpoint.json":2843,"./refrigerator_mode.json":3278,"./speaker_album.json":831,"./speaker_artist.json":7067,"./speaker_duration.json":432,"./speaker_next.json":2917,"./speaker_playing.json":4482,"./speaker_position.json":1227,"./speaker_prev.json":4049,"./speaker_repeat.json":6999,"./speaker_shuffle.json":965,"./speaker_stop.json":5248,"./speaker_track.json":4631,"./swing_mode.json":6038,"./target_humidity.json":993,"./target_humidity_max.json":3456,"./target_humidity_min.json":5062,"./target_power.json":2861,"./target_power_mode.json":2362,"./target_temperature.json":4078,"./target_temperature_level.json":2519,"./target_temperature_max.json":1247,"./target_temperature_min.json":5493,"./thermostat_mode.json":1419,"./vacuumcleaner_job_mode.json":8037,"./vacuumcleaner_state.json":5091,"./valve_position.json":9514,"./volume_down.json":4249,"./volume_mute.json":7364,"./volume_set.json":3907,"./volume_up.json":1491,"./windowcoverings_closed.json":4541,"./windowcoverings_set.json":6015,"./windowcoverings_state.json":3822,"./windowcoverings_tilt_down.json":8395,"./windowcoverings_tilt_set.json":7593,"./windowcoverings_tilt_up.json":6774};function i(e){var t=n(e);return a(t)}function n(e){if(!a.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}i.keys=function(){return Object.keys(r)},i.resolve=n,e.exports=i,i.id=6081},6171:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Weight","nl":"Gewicht","da":"Vægt","it":"Peso","ko":"무게","pl":"Waga","ru":"Вес","sv":"Vikt","es":"Peso","fr":"Poids","no":"Vekt","ar":"الوزن","de":"Gewicht"},"units":{"en":"g","nl":"g","da":"g","it":"g","ko":"g","pl":"g","ru":"г","sv":"g","es":"g","fr":"g","no":"g","ar":"جرام","de":"g"},"desc":{"en":"Generic mass in grams; weight is used instead of mass to fit with everyday language.","nl":"Generieke massa in grammen; gewicht wordt gebruikt in plaats van massa om aan te sluiten bij het alledaagse taalgebruik.","da":"Generisk masse i gram; vægt bruges i stedet for masse for at passe til hverdagssproget.","it":"Massa generica in grammi; il peso è usato al posto della massa per adattarsi al linguaggio quotidiano.","ko":"그램은 일반적으로 질량 단위이지만, 일상 언어에 맞게 질량 대신 무게라는 용어를 사용합니다.","pl":"Ogólna masa w gramach; słowo „waga” jest użyte zamiast „masa”, aby pasowało do codziennego języka.","ru":"Общая масса в граммах; вес используется вместо массы, с учетом сложившейся традиции в повседневной речи.","sv":"Generisk massa i gram; vikt används i stället för massa för att passa in i vardagsspråket.","es":"Masa genérica en gramos; se utiliza el peso en lugar de la masa para facilitar la comprensión.","fr":"Masse générique en grammes ; le terme \\"poids\\" est utilisé au lieu de \\"masse\\" pour s\'ajuster au langage courant.","no":"Generisk masse i gram – vekt brukes i stedet for masse siden det brukes i dagligtalen.","ar":"الكتلة العامة بالجرام؛ يتم استخدام الوزن بدلًا من الكتلة ليتناسب مع اللغة اليومية.","de":"Allgemeine Masse in Gramm; aus Gründen der Alltagssprache wird anstelle von Masse „Gewicht“ verwendet."},"insights":true,"chartType":"spline","decimals":2,"color":"#FFA07A","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_weight_changed","title":{"en":"The weight changed","nl":"Het gewicht is veranderd","da":"Vægten ændrede sig","it":"Il peso è cambiato","ko":"무게가 변경되면","pl":"Zmieniła się waga","ru":"Вес изменился","sv":"Vikten ändrades","es":"El peso ha cambiado","fr":"Le poids a changé","no":"Vekten ble endret","ar":"تغير الوزن","de":"Das Gewicht hat sich geändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":2}]}]},"minCompatibility":"12.2.0"}')},6175:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Shutter Blinds","da":"Persienner","de":"Jalousien","es":"Persianas","fr":"Volets roulants","it":"Tapparelle","ko":"셔터 블라인드","nl":"Jaloezieën","no":"Persienner","pl":"Żaluzje","ru":"Жалюзи","sv":"Persienner","ar":"ستائر متحركة"},"description":{"en":"Use this device class for shutter blinds.","da":"Brug denne enhedsklasse til persienner.","de":"Verwenden Sie diese Geräteklasse für Jalousien.","es":"Utiliza esta clase de dispositivo para persianas.","fr":"Utiliser cette classe d\'appareils pour les volets roulants.","it":"Utilizza questa classe di dispositivi per le tapparelle.","ko":"이 디바이스 클래스는 셔터 블라인드에 사용합니다.","nl":"Gebruik deze apparaatklasse voor jaloezieën.","no":"Bruk denne enhetsklassen for persienner.","pl":"Tej klasy urządzeń należy używać w przypadku żaluzji.","ru":"Используйте этот класс устройств для жалюзи.","sv":"Använd den här enhetsklassen för persienner.","ar":"استخدم فئة الجهاز هذه للستائر المتحركة."},"minCompatibility":"12.0.0"}')},6192:(e,t,a)=>{"use strict";const r=a(3532);let i;class n{static getClasses(){if(i)return i;const e=a(8293);return i=e.reduce(((e,t)=>(e[t]=a(1013)(`./${t}.json`),e)),{}),i}static getClass(e){const t=n.getClasses()[e];if(!t)throw new Error("invalid_class");return t}static getCapabilities(){return r.getCapabilities()}}e.exports=n},6207:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Microwave","da":"Mikrobølgeovn","de":"Mikrowelle","es":"Microondas","fr":"Micro-ondes","it":"Microonde","ko":"전자레인지","nl":"Magnetron","no":"Mikrobølgeovn","pl":"Mikrofalówka","ru":"Микроволновая печь","sv":"Mikrovågsugn","ar":"ميكروويف"},"description":{"en":"Use this device class for any kind of microwave, if it is a combi unit use \'oven_and_microwave\'.","da":"Brug denne enhedsklasse til enhver form for mikrobølgeovn, hvis det er en kombi-enhed, skal du bruge \'combi_microwave\'.","de":"Verwenden Sie diese Geräteklasse für jede Art von Mikrowelle. Wenn es sich um ein Kombigerät handelt, verwenden Sie „oven_and_microwave“.","es":"Utiliza esta clase de dispositivo para cualquier tipo de microondas. Si se trata de un equipo que combina horno y microondas, utiliza la clase \'oven_and_microwave\'.","fr":"Utilisez cette classe d\'appareils pour tout type de micro-ondes. S\'il s\'agit d\'une unité combinée, utilisez \\"oven_and_microwave\\".","it":"Utilizza questa classe di dispositivi per qualsiasi tipo di microonde; se si tratta di un\'unità combinata, utilizza \\"oven_and_microwave\\".","nl":"Gebruik deze apparaatklasse voor elke soort magnetron, als het een combimagnetron is gebruik dan \'oven_and_microwave\'.","no":"Bruk denne enhetsklassen for alle slags mikrobølgeovner. For kombienheter, bruk «combi_microwave».","pl":"Tej klasy urządzeń należy używać dla każdego rodzaju kuchenki mikrofalowej, jeśli jest to urządzenie combi, należy użyć klasy \\"oven_and_microwave\\".","ru":"Используйте этот класс устройств для микроволновых печей любого типа; в случае комбинированного устройства используйте oven_and_microwave.","sv":"Använd den här enhetsklassen för alla typer av mikrovågsugnar, om det är en kombienhet ska du använda \'oven_and_microwave\'.","ko":"이 디바이스 클래스는 모든 종류의 전자레인지에 사용하되, 콤비오븐의 경우 \'combi_microwave\'를 사용합니다.","ar":"استخدم فئة الجهاز هذه لأي نوع من أجهزة الميكروويف، إذا كانت وحدة مدمجة فاستخدم \'oven_and_microwave\' (فرن وميكروويف)."},"minCompatibility":"12.0.0"}')},6282:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Vehicle","da":"Køretøj","de":"Fahrzeug","es":"Vehículo","fr":"Véhicule","it":"Veicolo","ko":"차량","nl":"Voertuig","no":"Kjøretøy","pl":"Pojazd","ru":"Транспортное средство","sv":"Fordon","ar":"مركبة"},"description":{"en":"Use this device class for any type of vehicle, when the `car`, `bicycle` or `scooter` device class doesn\'t apply.","da":"Brug denne enhedsklasse til alle typer køretøjer, når enhedsklassen `bil`, `cykel` eller `scooter` ikke gælder.","de":"Verwenden Sie diese Geräteklasse für jede Art von Fahrzeug, wenn die Geräteklassen „Auto“, „Fahrrad“ oder „Motorroller“ nicht zutreffen.","es":"Utiliza esta clase de dispositivo para cualquier tipo de vehículo que no pertenezca a las clases \\"Coche\\", \\"Bicicleta\\" o \\"Scooter\\".","fr":"Utilisez cette classe d\'appareils pour tout type de véhicule, lorsque la classe d\'appareils \\"voiture\\", \\"vélo\\" ou \\"trotinette\\" ne s\'applique pas.","it":"Utilizza questa classe di dispositivi per qualsiasi tipo di veicolo, quando la classe \\"automobile\\", \\"bicicletta\\" o \\"scooter\\" non è applicabile.","ko":"이 디바이스 클래스는 \'car\', \'bicycle\', \'scooter\' 디바이스가 적용되지 않는 모든 종류의 탈것에 사용합니다.","nl":"Gebruik deze apparaatklasse voor elk type voertuig, wanneer de apparaatklasse \'auto\', \'fiets\' of \'scooter\' niet van toepassing is.","no":"Bruk denne enhetsklassen for alle typer kjøretøy som ikke dekkes av enhetsklassene\\n«bil», «sykkel» eller «scooter».","pl":"Tej klasy urządzeń należy używać dla dowolnego typu pojazdu, gdy klasa urządzeń „samochód”, „rower” lub „skuter” nie ma zastosowania.","ru":"Используйте этот класс устройств для транспортных средств любого типа, которые не относятся к классу устройств «автомобиль», «велосипед» или «самокат».","sv":"Använd den här enhetsklassen för alla typer av fordon, när enhetsklassen \\"bil\\", \\"cykel\\" eller \\"skoter\\" inte är tillämplig.","ar":"استخدم فئة الجهاز هذه لأي نوع من المركبات، عندما لا تنطبق فئة الجهاز \'سيارة\' أو \'دراجة هوائية\' أو \'سكوتر\'."},"virtualTitle":{"en":"What\'s the type?","da":"Hvad er typen?","de":"Um welchen Typ handelt es sich?","es":"¿De qué tipo es?","fr":"Quel est le type ?","it":"Di che tipo è?","ko":"어떤 유형인가요?","nl":"Wat is het type?","no":"Hvilken type er det?","pl":"Jaki to typ?","ru":"Какой тип?","sv":"Vad är det för typ?","ar":"ما هو النوع؟"},"allowedVirtual":["bicycle","car","scooter"],"minCompatibility":"12.0.0"}')},6291:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Door Fault Alarm","nl":"Deur-probleemalarm","da":"Alarm for dørfejl","fr":"Alarme de défaut de porte","it":"Allarme guasto porta","ko":"도어 에러 감지","no":"Dørfeilalarm","pl":"Alarm usterki drzwi","ru":"Сигнал о неисправности двери","sv":"Larm för dörrfel","es":"Alarma de fallo en puerta","ar":"إنذار عطل الباب","de":"Türstörungsalarm"},"titleShort":{"en":"Door Fault","nl":"Deurfout","da":"Dørfejl","fr":"Défaut de porte","it":"Guasto porta","ko":"도어 결함","no":"Dørfeil","pl":"Usterka drzwi","ru":"Неисправность двери","sv":"Dörrfel","es":"Fallo en puerta","ar":"عطل بالباب","de":"Störung der Tür"},"desc":{"en":"True when there is an issue with the door or lock.","nl":"Wordt geactiveerd wanneer er een probleem is met de deur of het slot.","da":"Sandt, når der er et problem med døren eller låsen.","fr":"Se déclenche lorsque la porte ou la serrure présente un problème.","it":"Vero quando c\'è un problema con la porta o la serratura.","ko":"도어 또는 록에 문제가 있으면 참입니다.","no":"Sann når det er et problem med døren eller låsen.","pl":"Prawda, gdy występuje problem z drzwiami lub zamkiem.","ru":"Значение «истина», когда обнаружена проблема с дверью или замком.","sv":"Sant när det finns ett problem med dörren eller låset.","es":"Activado cuando hay un problema con la puerta o la cerradura.","ar":"صحيح عند وجود مشكلة في الباب أو القفل.","de":"Wahr, wenn es ein Problem mit der Tür oder dem Schloss gibt."},"insights":true,"insightsTitleTrue":{"en":"Door fault alarm turned on","nl":"Waarschuwing bij defect aan deur geactiveerd","da":"Alarm for dørfejl slået til","fr":"Alarme de défaut de porte activée","it":"Allarme guasto porta acceso","ko":"도어 에러 감지됨","no":"Dørfeilalarm aktivert","pl":"Alarm usterki drzwi włączony","ru":"Сигнал о неисправности двери включен","sv":"Larm för dörrfel aktiverat","es":"Alarma de fallo en puerta activada","ar":"تم تشغيل إنذار عطل الباب","de":"Türstörungsalarm eingeschaltet"},"insightsTitleFalse":{"en":"Door fault alarm turned off","nl":"Waarschuwing bij defect aan deur gedeactiveerd","da":"Alarm for dørfejl slået fra","fr":"Alarme de défaut de porte désactivée","it":"Allarme guasto porta spento","ko":"도어 에러 감지되지 않음","no":"Dørfeilalarm deaktivert","pl":"Alarm usterki drzwi wyłączony","ru":"Сигнал о неисправности двери выключен","sv":"Larm för dörrfel inaktiverat","es":"Alarma de fallo en puerta desactivada","ar":"تم إيقاف إنذار عطل الباب","de":"Türstörungsalarm ausgeschaltet"},"color":"#0082FA","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_door_fault_true","highlight":true,"title":{"en":"The door alarm turned on","nl":"De deurwaarschuwing is geactiveerd","da":"Døralarmen slået til","fr":"L\'alarme de la porte s\'est activée","it":"L\'allarme della porta si è acceso","ko":"도어 에러가 감지되면","no":"Døralarmen ble aktivert","pl":"Włączył się alarm drzwi","ru":"Сигнал о неисправности двери включен","sv":"Dörrlarmet aktiverat","es":"La alarma de la puerta se ha activado","ar":"تم تشغيل إنذار الباب","de":"Der Türalarm wurde eingeschaltet"}},{"id":"alarm_door_fault_false","title":{"en":"The door alarm turned off","nl":"De deurwaarschuwing is gedeactiveerd","da":"Døralarmen slået fra","fr":"L\'alarme de la porte s\'est désactivée","it":"L\'allarme della porta si è spento","ko":"도어 에러가 감지되지 않으면","no":"Døralarmen ble deaktivert","pl":"Wyłączył się alarm drzwi","ru":"Сигнал о неисправности двери выключен","sv":"Dörrlarmet inaktiverat","es":"La alarma de la puerta se ha desactivado","ar":"تم إيقاف إنذار الباب","de":"Der Türalarm wurde ausgeschaltet"}}],"conditions":[{"id":"alarm_door_fault","title":{"en":"The door alarm is !{{on|off}}","nl":"De deurwaarschuwing is !{{geactiveerd|gedeactiveerd}}","da":"Døralarmen er slået !{{til|fra}}","it":"L\'allarme della porta è !{{acceso|spento}}","ko":"도어 에러가 !{{감지되면|감지되지 않으면}}","no":"Døralarmen er !{{på|av}}","pl":"Alarm drzwi jest !{{włączony|wyłączony}}","ru":"Сигнал о неисправности двери !{{включен|выключен}}","sv":"Dörrlarmet är aktiverat !{{på|av}}","es":"La alarma de la puerta está !{{activada|desactivada}}","fr":"L\'alarme de porte est !{{activée|désactivée}}","ar":"إنذار الباب !{{يعمل|لا يعمل}}","de":"Der Türalarm ist !{{an|aus}}"}}]},"minCompatibility":"12.2.0"}')},6312:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Stuck Alarm","nl":"Vastgelopen-alarm","da":"Fastlåst alarm","it":"Allarme dispositivo bloccato","ko":"기기 막힘 감지","no":"Fastkjøringsalarm","pl":"Alarm zablokowania","ru":"Сигнал о заклинивании","sv":"Larm om att något fastnat","es":"Alarma de atasco","fr":"Alarme d\'appareil bloqué","ar":"إنذار التعلق","de":"„Blockiert“-Alarm"},"titleShort":{"en":"Stuck","nl":"Vast","da":"Fastlåst","it":"Dispositivo bloccato","ko":"막힘","no":"Fastkjøring","pl":"Zablokowanie","ru":"Заклинивание","sv":"Fastnat","es":"Atasco","fr":"Appareil bloqué","ar":"عالق","de":"Blockiert"},"desc":{"en":"True when the device is stuck.","nl":"Gaat af als het apparaat is vastgelopen.","da":"Sandt, når enheden sidder fast.","it":"Vero quando il dispositivo è bloccato.","ko":"디바이스가 막히면 참입니다.","no":"Sann når enheten sitter fast.","pl":"Prawda, gdy urządzenie jest zablokowane.","ru":"Значение «истина», когда устройство заклинило.","sv":"Sant när enheten har fastnat.","es":"Activado cuando el dispositivo está atascado.","fr":"Se déclenche lorsque l\'appareil est bloqué.","ar":"صحيح عندما يكون الجهاز عالقًا.","de":"Wahr, wenn das Gerät blockiert ist."},"insights":true,"insightsTitleTrue":{"en":"Was stuck","nl":"Zat vast","da":"Sad fast","it":"Era bloccato","ko":"기기 막힘 감지됨","no":"Satt fast","pl":"Było zablokowane","ru":"Заклинило","sv":"Var fast","es":"Estaba atascado","fr":"Était bloqué","ar":"كان عالقًا","de":"War blockiert"},"insightsTitleFalse":{"en":"Was no longer stuck","nl":"Zat niet meer vast","da":"Sad ikke længere fast","it":"Non era più bloccato","ko":"정상","no":"Satt ikke lenger fast","pl":"Nie było już zablokowane","ru":"Больше не заклинено","sv":"Var inte längre fast","es":"Ya no estaba atascado","fr":"N\'était plus bloqué","ar":"لم يعد عالقًا","de":"War nicht mehr blockiert"},"color":"#9033FC","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_stuck_true","highlight":true,"title":{"en":"Is stuck","nl":"Zit vast","da":"Sidder fast","it":"È bloccato","ko":"기기 막힘이 감지되면","no":"Sitter fast","pl":"Jest zablokowane","ru":"Заклинено","sv":"Är fast","es":"Está atascado","fr":"Est bloqué","ar":"عالق","de":"Ist blockiert"}},{"id":"alarm_stuck_false","title":{"en":"Is no longer stuck","nl":"Zit niet meer vast","da":"Sidder ikke længere fast","it":"Non è più bloccato","ko":"기기 막힘 감지가 정상 상태이면","no":"Sitter ikke lenger fast","pl":"Nie jest już zablokowane","ru":"Больше не заклинено","sv":"Är inte längre fast","es":"Ya no está atascado","fr":"N\'est plus bloqué","ar":"لم يعد عالقًا","de":"Ist nicht mehr blockiert"}}],"conditions":[{"id":"alarm_stuck","title":{"en":"Is !{{stuck|not stuck}}","nl":"Zit !{{vast|niet vast}}","da":"Er !{{fastlåst|ikke fastlåst}}","it":"È !{{bloccato|sbloccato}}","ko":"!{{기기 막힘이 감지되면|기기 막힘 감지가 정상 상태이면}}","no":"Sitter !{{fast|ikke fast}}","pl":"Jest !{{zablokowane|niezablokowane}}","ru":"Устройство !{{заклинено|не заклинено}}","sv":"Är !{{fast|inte fast}}","es":"!{{Está atascado|No está atascado}}","fr":"Est !{{connectée|déconnectée}}","ar":"هو !{{عالق|غير عالق}}","de":"Ist !{{blockiert|nicht blockiert}}"}}]},"minCompatibility":"12.2.0"}')},6346:(e,t,a)=>{"use strict";const{validate:r,genericValidator:i,irValidator:n,rfValidator:s,rf433Validator:o,rf868Validator:l,modulationValidator:d,prontoValidator:u}=a(5075);e.exports=class{constructor(e,{frequency:t}={}){this._signal=e,this._frequency=t,this._check=this._check.bind(this)}debug(...e){this._debug&&console.log("[dbg]",...e)}_check(e,t){if(!0!==t)throw new Error(e)}async validate({debug:e=!1}={}){if(this._debug=e,this.debug("Validating signal"),!this._signal)throw new Error("Invalid Signal");if("prontohex"===this._signal.type)this._validateProntohex();else{if(void 0!==this._signal.type)throw new Error("Invalid Signal type");this._validateRegular()}if("433"===this._frequency)this._validate433();else if("868"===this._frequency)this._validate868();else{if("ir"!==this._frequency)throw new Error("Invalid Frequency");this._validateInfrared()}this.debug("Validated successfully")}_validateWithEngine(e){return r(e,this._check,this._signal)}_validateProntohex(){this._check("mandatory_fields",this._signal.hasOwnProperty("cmds")),this._validateWithEngine(u)}_validateRegular(){this._check("mandatory_fields",this._signal.hasOwnProperty("sof")||this._signal.hasOwnProperty("eof")||this._signal.hasOwnProperty("words")),this._validateWithEngine(i),this._validateWithEngine(s)}_validate433(){this._validateWithEngine(d),this._validateWithEngine(o)}_validate868(){this._validateWithEngine(d),this._validateWithEngine(l)}_validateInfrared(){this._validateWithEngine(n)}}},6355:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"SO₂ Level","nl":"SO₂-niveau","da":"SO₂-niveau","it":"Livello di SO₂","ko":"SO₂ 수준","pl":"Poziom SO₂","ru":"Уровень SO₂","sv":"SO₂-nivå","es":"Nivel de SO₂","fr":"Niveau de SO₂","no":"SO₂-nivå","ar":"مستوى ثاني أكسيد الكبريت","de":"SO₂-Gehalt"},"desc":{"en":"The level of sulfur dioxide in the air.","nl":"De mate van zwaveldioxide in de lucht.","da":"Niveauet af svovldioxid i luften.","it":"Il livello di anidride solforosa nell\'aria.","ko":"공기 중 이산화황의 수준입니다.","pl":"Poziom dwutlenku siarki w powietrzu.","ru":"Уровень содержания диоксида серы в воздухе.","sv":"Halten av svaveldioxid i luften.","es":"El nivel de dióxido de azufre en el aire.","fr":"Le niveau de dioxyde de soufre dans l\'air.","no":"Nivået av svoveldioksid i luften.","ar":"مستوى ثاني أكسيد الكبريت في الهواء.","de":"Der Schwefeldioxidgehalt in der Luft."},"values":[{"id":"low","title":{"en":"Low","nl":"Laag","da":"Lavt","it":"Basso","ko":"낮음","pl":"Niski","ru":"Низкий","sv":"Låg","es":"Bajo","fr":"Faible","no":"Lavt","ar":"منخفض","de":"Niedrig"}},{"id":"medium","title":{"en":"Medium","nl":"Gemiddeld","da":"Medium","it":"Medio","ko":"보통","pl":"Średni","ru":"Средний","sv":"Medium","es":"Intermedio","fr":"Moyen","no":"Middels","ar":"متوسط","de":"Mittel"}},{"id":"high","title":{"en":"High","nl":"Hoog","da":"Højt","it":"Alto","ko":"높음","pl":"Wysoki","ru":"Высокий","sv":"Hög","es":"Alto","fr":"Élevé","no":"Høyt","ar":"عالي","de":"Hoch"}},{"id":"critical","title":{"en":"Critical","nl":"Kritiek","da":"Kritisk","it":"Critico","ko":"위험","pl":"Krytyczny","ru":"Критический","sv":"Kritisk","es":"Crítico","fr":"\\n","no":"Kritisk","ar":"حرج","de":"Kritisch"}}],"color":"#FA6400","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"level_so2_changed","highlight":true,"title":{"en":"The SO₂ level changed to","nl":"Het SO₂-niveau is veranderd naar","da":"SO₂-niveauet blev ændret til","it":"Il livello di SO₂ è passato a","ko":"SO₂ 수준이 다음으로 변경되면","pl":"Poziom SO₂ zmienił się na","ru":"Уровень SO₂ изменился на","sv":"SO₂-nivån ändrades till","es":"El nivel de SO₂ ha cambiado a","fr":"Le niveau de SO₂ est passé à","no":"SO₂-nivået ble endret til","ar":"تغير مستوى ثاني أكسيد الكبريت إلى","de":"Der SO₂-Gehalt hat sich geändert auf"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"level_so2_is","title":{"en":"The SO₂ level !{{is|is not}}","nl":"Het SO₂-niveau !{{is|is niet}}","da":"SO₂-niveauet !{{er|er ikke}}","it":"Il livello di SO₂ !{{è|non è}}","ko":"SO₂ 수준이 다음!{{이면|이 아니면}}","pl":"Poziom SO₂ !{{jest|nie jest}}","ru":"Уровень SO₂ !{{|не}}","sv":"SO₂-nivån !{{är|är inte}}","es":"El nivel de SO₂ !{{es|no es}}","fr":"Le niveau de SO₂ !{{est|n\'est pas}}","no":"SO₂-nivået !{{er|er ikke}}","ar":"مستوى ثاني أكسيد الكبريت !{{هو|ليس}}","de":"Der SO₂-Gehalt !{{ist|ist nicht}}"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.2.0"}')},6410:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Noise Alarm","nl":"Geluidswaarschuwing","da":"Støjalarm","it":"Allarme rumore","ko":"소음 감지","no":"Støyalarm","pl":"Alarm hałasu","ru":"Сигнал шума","sv":"Bullerlarm","es":"Alarma de ruido","fr":"Alarme sonore","ar":"إنذار الضوضاء","de":"Geräuschalarm"},"titleShort":{"en":"Noise","nl":"Geluid","da":"Støj","it":"Rumore","ko":"소음","no":"Støy","pl":"Hałas","ru":"Шум","sv":"Buller","es":"Ruido","fr":"Son","ar":"الضوضاء","de":"Geräusch"},"desc":{"en":"True when sound is detected.","nl":"Wordt geactiveerd wanneer geluid wordt gedetecteerd.","da":"Sandt, når der registreres lyd.","it":"Vero quando viene rilevato un suono.","ko":"소리가 감지되면 참입니다.","no":"Sann når lyd registreres.","pl":"Prawda, gdy wykryty jest dźwięk.","ru":"Значение «истина» при обнаружении звука.","sv":"Sant när ljud detekteras.","es":"Activado cuando se detecta sonido.","fr":"Se déclenche lorsque du son est détecté.","ar":"صحيح عند اكتشاف صوت.","de":"Wahr, wenn Ton erkannt wird."},"insights":true,"insightsTitleTrue":{"en":"Noise Alarm turned on","nl":"Geluidswaarschuwing geactiveerd","da":"Støjalarm slået til","it":"Allarme rumore acceso","ko":"소음 감지됨","no":"Støyalarm aktivert","pl":"Alarm hałasu włączony","ru":"Сигнал шума включен","sv":"Bullerlarm aktiverat","es":"Alarma de ruido activada","fr":"Alarme sonore activée","ar":"تم تشغيل إنذار الضوضاء","de":"Geräuschalarm eingeschaltet"},"insightsTitleFalse":{"en":"Noise Alarm turned off","nl":"Geluidswaarschuwing gedeactiveerd","da":"Støjalarm slået fra","it":"Allarme rumore spento","ko":"소음 감지되지 않음","no":"Støyalarm deaktivert","pl":"Alarm hałasu wyłączony","ru":"Сигнал шума выключен","sv":"Bullerlarm inaktiverat","es":"Alarma de ruido desactivada","fr":"Alarme sonore désactivée","ar":"تم إيقاف إنذار الضوضاء","de":"Geräuschalarm ausgeschaltet"},"color":"#F7B500","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_noise_true","highlight":true,"title":{"en":"The noise alarm turned on","nl":"De geluidswaarschuwing is geactiveerd","da":"Støjalarmen er slået til","it":"L\'allarme rumore si è acceso","ko":"소음이 감지되면","no":"Støyalarmen ble aktivert","pl":"Włączył się alarm hałasu","ru":"Сигнал шума включен","sv":"Bullerlarm aktiverat","es":"La alarma de ruido se ha activado","fr":"L\'alarme sonore s\'est activée","ar":"تم تشغيل إنذار الضوضاء","de":"Der Lärmalarm hat sich eingeschaltet"}},{"id":"alarm_noise_false","title":{"en":"The noise alarm turned off","nl":"De geluidswaarschuwing is gedeactiveerd","da":"Støjalarmen slået fra","it":"L\'allarme rumore si è spento","ko":"소음이 감지되지 않으면","no":"Støyalarmen ble deaktivert","pl":"Wyłączył się alarm hałasu","ru":"Сигнал шума выключен","sv":"Bullerlarm inaktiverat","es":"La alarma de ruido se ha desactivado","fr":"L\'alarme sonore s\'est désactivée","ar":"تم إيقاف إنذار الضوضاء","de":"Der Lärmalarm hat sich ausgeschaltet"}}],"conditions":[{"id":"alarm_noise","title":{"en":"The noise alarm is !{{on|off}}","nl":"De geluidswaarschuwing is !{{geactiveerd|gedeactiveerd}}","da":"Støjalarmen er slået !{{til|fra}}","it":"L\'allarme rumore è !{{acceso|spento}}","ko":"소음이 감지!{{되면|되지 않으면}}","no":"Støyalarmen er !{{på|av}}","pl":"Alarm hałasu jest !{{włączony|wyłączony}}","ru":"Сигнал шума !{{включен|выключен}}","sv":"Bullerlarmet är aktiverat !{{på|av}}","es":"La alarma de ruido está !{{activada|desactivada}}","fr":"L\'alarme sonore est !{{activée|désactivée}}","ar":"إنذار الضوضاء !{{يعمل|لا يعمل}}","de":"Der Geräuschalarm ist !{{an|aus}}"}}]},"minCompatibility":"12.2.0"}')},6459:e=>{"use strict";function t(e,t){var a=e.readUInt8(t);return 0===a?256:a}function a(e,a){var r=6+16*a;return{width:t(e,r),height:t(e,r+1)}}e.exports={detect:function(e){return 0===e.readUInt16LE(0)&&1===e.readUInt16LE(2)},calculate:function(e){var t,r=e.readUInt16LE(4),i=a(e,0);if(1===r)return i;for(i.images=[{width:i.width,height:i.height}],t=1;t{"use strict";e.exports=JSON.parse('{"title":{"en":"Fireplace","da":"Ildsted","de":"Kamin","es":"Chimenea","fr":"Cheminée","it":"Camino","ko":"난로","nl":"Open haard","no":"Peis","pl":"Kominek","ru":"Камин","sv":"Öppen spis","ar":"مدفأة"},"description":{"en":"Use this device class for fireplaces.","da":"Brug denne enhedsklasse til ildsteder.","de":"Verwenden Sie diese Geräteklasse für Kamine.","es":"Utiliza esta clase de dispositivo para chimeneas.","fr":"Utilisez cette classe d\'appareils pour les cheminées.","it":"Utilizza questa classe di dispositivi per i camini.","ko":"이 디바이스 클래스는 난로에 사용합니다.","nl":"Gebruik deze apparaatklasse voor open haarden.","no":"Bruk denne enhetsklassen for peiser.","pl":"Tej klasy urządzeń należy używać w przypadku kominków.","ru":"Используйте этот класс устройств для каминов.","sv":"Använd den här enhetsklassen för öppna spisar.","ar":"استخدم فئة الجهاز هذه للمدافئ."},"minCompatibility":"12.0.0"}')},6478:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Data Rate","nl":"Gegevenssnelheid","da":"Datahastighed","it":"Velocità di trasmissione dei dati","ko":"데이터 전송률","pl":"Szybkość transmisji danych","ru":"Скорость передачи данных","sv":"Datahastighet","es":"Velocidad de datos","fr":"Débits de données","no":"Bitrate","ar":"معدل البيانات","de":"Datenrate"},"units":{"en":"b/s","nl":"b/s","da":"b/s","it":"b/s","ko":"b/s","pl":"b/s","ru":"бит/с","sv":"b/s","es":"b/s","fr":"b/s","no":"b/s","ar":"بت/ثانية","de":"b/s"},"desc":{"en":"The data rate in bits per second.","nl":"De gegevenssnelheid in bits per seconde.","da":"Datahastigheden i bits pr. sekund.","it":"La velocità di trasmissione dei dati in bit al secondo.","ko":"초당 비트 단위의 데이터 전송률입니다.","pl":"Szybkość transmisji danych w bitach na sekundę.","ru":"Скорость передачи данных в битах в секунду.","sv":"Datahastigheten i bitar per sekund.","es":"La velocidad de transmisión de datos en bits por segundo.","fr":"Le débit de données en bits par seconde.","no":"Bitrate i bits per sekund.","ar":"معدل البيانات بالبت في الثانية.","de":"Die Datenrate in Bits pro Sekunde."},"insights":true,"chartType":"spline","decimals":0,"color":"#6236FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_data_rate_changed","title":{"en":"The data rate changed","nl":"De gegevenssnelheid is veranderd","da":"Datahastigheden ændrede sig","it":"La velocità di trasmissione dei dati è cambiata","ko":"데이터 전송률이 변경되면","pl":"Zmieniła się szybkość transmisji danych","ru":"Скорость передачи данных изменилась","sv":"Datahastigheten ändrades","es":"La velocidad de datos ha cambiado","fr":"Le débit de données a changé","no":"Bitraten ble endret","ar":"تغير معدل البيانات","de":"Die Datenrate hat sich geändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":200}]}]},"minCompatibility":"12.2.0"}')},6488:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Water Heater","da":"Vandvarmer","de":"Warmwasserbereiter","es":"Calentador de agua","fr":"Chauffe-eau","it":"Scaldabagno","ko":"온수기","nl":"Boiler","no":"Varmtvannsbereder","pl":"Podgrzewacz wody","ru":"Водонагреватель","sv":"Varmvattenberedare","ar":"سخان مياه"},"description":{"en":"Use this device class for water heaters.","da":"Brug denne enhedsklasse til vandvarmere.","de":"Verwenden Sie diese Geräteklasse für Warmwasserbereiter.","es":"Utiliza esta clase de dispositivo para calentadores de agua.","fr":"Utilisez cette classe d\'appareils pour les chauffe-eau.","it":"Utilizza questa classe di dispositivi per gli scaldabagno.","ko":"이 디바이스 클래스는 온수기에 사용합니다.","nl":"Gebruik deze apparaatklasse voor boilers.","no":"Bruk denne enhetsklassen for varmtvannsberedere.","pl":"Tej klasy urządzeń należy używać do podgrzewaczy wody.","ru":"Используйте этот класс устройств для водонагревателей.","sv":"Använd den här enhetsklassen för varmvattenberedare.","ar":"استخدم فئة الجهاز هذه لسخانات المياه."},"minCompatibility":"12.0.0"}')},6507:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Heater","nl":"Heater","de":"Heizung","fr":"Radiateur","it":"Termosifone","sv":"Element","no":"Varmeelement","es":"Calefactor","da":"Varmeapparat","ru":"Обогреватель","pl":"Grzejnik","ko":"히터","ar":"مدفأة"},"description":{"en":"Use this device class for heaters, that warm your home.","de":"Nutze diese Geräteklasse für Heizungen, die dein Heim wärmen.","fr":"Utilisez cette classe d\'appareil pour les radiateurs qui chauffent votre maison.","it":"Utilizza questa classe di dispositivi per i termosifoni, che riscaldano la tua casa.","sv":"Använd den här enhetsklassen för element, som värmer upp hemmet.","no":"Bruk denne enhetsklassen for varmeelement som varmer opp hjemmet ditt.","es":"Utiliza esta clase de dispositivo para los calefactores que calientan tu casa.","da":"Brug denne enhedsklasse til varmeapparater, som opvarmer dit hjem.","ru":"Используйте этот класс устройств для обогревателей, которые обогревают ваш дом.","pl":"Użyj tej klasy urządzeń dla grzejników, które ogrzewają dom.","ko":"이 디바이스 클래스는 집을 따뜻하게 해주는 히터에 사용합니다.","ar":"استخدم فئة الجهاز هذه للمدافئ التي تدفئ منزلك.","nl":"Gebruik deze apparaatklasse voor verwarmingen die je huis verwarmen."},"virtualTitle":{"en":"What\'s the type?","da":"Hvad er typen?","de":"Um welchen Typ handelt es sich?","es":"¿De qué tipo es?","fr":"Quel est le type ?","it":"Di che tipo è?","ko":"어떤 유형인가요?","nl":"Wat is het type?","no":"Hvilken type er det?","pl":"Jaki to typ?","ru":"Какой тип?","sv":"Vad är det för typ?","ar":"ما هو النوع؟"},"allowedVirtual":["radiator"]}')},6570:e=>{"use strict";e.exports=JSON.parse('{"USD":"$","CAD":"$","EUR":"€","AED":"د.إ.‏","AFN":"؋","ALL":"Lek","AMD":"դր.","ARS":"$","AUD":"$","AZN":"ман.","BAM":"KM","BDT":"৳","BGN":"лв.","BHD":"د.ب.‏","BIF":"FBu","BND":"$","BOB":"Bs","BRL":"R$","BWP":"P","BYR":"BYR","BZD":"$","CDF":"FrCD","CHF":"CHF","CLP":"$","CNY":"CN¥","COP":"$","CRC":"₡","CVE":"CV$","CZK":"Kč","DJF":"Fdj","DKK":"kr","DOP":"RD$","DZD":"د.ج.‏","EEK":"kr","EGP":"ج.م.‏","ERN":"Nfk","ETB":"Br","GBP":"£","GEL":"GEL","GHS":"GH₵","GNF":"FG","GTQ":"Q","HKD":"$","HNL":"L","HRK":"kn","HUF":"Ft","IDR":"Rp","ILS":"₪","INR":"টকা","IQD":"د.ع.‏","IRR":"﷼","ISK":"kr","JMD":"$","JOD":"د.أ.‏","JPY":"¥","KES":"Ksh","KHR":"៛","KMF":"FC","KRW":"₩","KWD":"د.ك.‏","KZT":"тңг.","LBP":"ل.ل.‏","LKR":"SL Re","LTL":"Lt","LVL":"Ls","LYD":"د.ل.‏","MAD":"د.م.‏","MDL":"MDL","MGA":"MGA","MKD":"MKD","MMK":"K","MOP":"MOP$","MUR":"MURs","MXN":"$","MYR":"RM","MZN":"MTn","NAD":"N$","NGN":"₦","NIO":"C$","NOK":"kr","NPR":"नेरू","NZD":"$","OMR":"ر.ع.‏","PAB":"B/.","PEN":"S/.","PHP":"₱","PKR":"₨","PLN":"zł","PYG":"₲","QAR":"ر.ق.‏","RON":"RON","RSD":"дин.","RUB":"руб.","RWF":"FR","SAR":"ر.س.‏","SDG":"SDG","SEK":"kr","SGD":"$","SOS":"Ssh","SYP":"ل.س.‏","THB":"฿","TND":"د.ت.‏","TOP":"T$","TRY":"TL","TTD":"$","TWD":"NT$","TZS":"TSh","UAH":"₴","UGX":"USh","UYU":"$","UZS":"UZS","VEF":"Bs.F.","VND":"₫","XAF":"FCFA","XOF":"CFA","YER":"ر.ي.‏","ZAR":"R","ZMK":"ZK"}')},6579:function(e,t){!function(e){"use strict";function t(){for(var e=arguments.length,t=Array(e),a=0;a1){t[0]=t[0].slice(0,-1);for(var r=t.length-1,i=1;i= 0x80 (not a basic code point)","invalid-input":"Invalid input"},h=Math.floor,v=String.fromCharCode;function f(e){throw new RangeError(g[e])}function k(e,t){var a=e.split("@"),r="";return a.length>1&&(r=a[0]+"@",e=a[1]),r+function(e,t){for(var a=[],r=e.length;r--;)a[r]=t(e[r]);return a}((e=e.replace(c,".")).split("."),t).join(".")}function y(e){for(var t=[],a=0,r=e.length;a=55296&&i<=56319&&a>1,e+=h(e/t);e>455;r+=u)e=h(e/35);return h(r+36*e/(e+38))},z=function(e){var t,a=[],r=e.length,i=0,n=128,s=72,o=e.lastIndexOf("-");o<0&&(o=0);for(var l=0;l=128&&f("not-basic"),a.push(e.charCodeAt(l));for(var m=o>0?o+1:0;m=r&&f("invalid-input");var v=(t=e.charCodeAt(m++))-48<10?t-22:t-65<26?t-65:t-97<26?t-97:u;(v>=u||v>h((d-i)/c))&&f("overflow"),i+=v*c;var k=g<=s?1:g>=s+26?26:g-s;if(vh(d/y)&&f("overflow"),c*=y}var b=a.length+1;s=w(i-p,b,0==p),h(i/b)>d-n&&f("overflow"),n+=h(i/b),i%=b,a.splice(i++,0,n)}return String.fromCodePoint.apply(String,a)},P=function(e){var t=[],a=(e=y(e)).length,r=128,i=0,n=72,s=!0,o=!1,l=void 0;try{for(var m,p=e[Symbol.iterator]();!(s=(m=p.next()).done);s=!0){var c=m.value;c<128&&t.push(v(c))}}catch(e){o=!0,l=e}finally{try{!s&&p.return&&p.return()}finally{if(o)throw l}}var g=t.length,k=g;for(g&&t.push("-");k=r&&jh((d-i)/C)&&f("overflow"),i+=(z-r)*C,r=z;var O=!0,L=!1,T=void 0;try{for(var D,M=e[Symbol.iterator]();!(O=(D=M.next()).done);O=!0){var x=D.value;if(xd&&f("overflow"),x==r){for(var $=i,F=u;;F+=u){var I=F<=n?1:F>=n+26?26:F-n;if($>6|192).toString(16).toUpperCase()+"%"+(63&t|128).toString(16).toUpperCase():"%"+(t>>12|224).toString(16).toUpperCase()+"%"+(t>>6&63|128).toString(16).toUpperCase()+"%"+(63&t|128).toString(16).toUpperCase()}function j(e){for(var t="",a=0,r=e.length;a=194&&i<224){if(r-a>=6){var n=parseInt(e.substr(a+4,2),16);t+=String.fromCharCode((31&i)<<6|63&n)}else t+=e.substr(a,6);a+=6}else if(i>=224){if(r-a>=9){var s=parseInt(e.substr(a+4,2),16),o=parseInt(e.substr(a+7,2),16);t+=String.fromCharCode((15&i)<<12|(63&s)<<6|63&o)}else t+=e.substr(a,9);a+=9}else t+=e.substr(a,3),a+=3}return t}function C(e,t){function a(e){var a=j(e);return a.match(t.UNRESERVED)?a:e}return e.scheme&&(e.scheme=String(e.scheme).replace(t.PCT_ENCODED,a).toLowerCase().replace(t.NOT_SCHEME,"")),void 0!==e.userinfo&&(e.userinfo=String(e.userinfo).replace(t.PCT_ENCODED,a).replace(t.NOT_USERINFO,E).replace(t.PCT_ENCODED,i)),void 0!==e.host&&(e.host=String(e.host).replace(t.PCT_ENCODED,a).toLowerCase().replace(t.NOT_HOST,E).replace(t.PCT_ENCODED,i)),void 0!==e.path&&(e.path=String(e.path).replace(t.PCT_ENCODED,a).replace(e.scheme?t.NOT_PATH:t.NOT_PATH_NOSCHEME,E).replace(t.PCT_ENCODED,i)),void 0!==e.query&&(e.query=String(e.query).replace(t.PCT_ENCODED,a).replace(t.NOT_QUERY,E).replace(t.PCT_ENCODED,i)),void 0!==e.fragment&&(e.fragment=String(e.fragment).replace(t.PCT_ENCODED,a).replace(t.NOT_FRAGMENT,E).replace(t.PCT_ENCODED,i)),e}function O(e){return e.replace(/^0*(.*)/,"$1")||"0"}function L(e,t){var a=e.match(t.IPV4ADDRESS)||[],r=l(a,2)[1];return r?r.split(".").map(O).join("."):e}function T(e,t){var a=e.match(t.IPV6ADDRESS)||[],r=l(a,3),i=r[1],n=r[2];if(i){for(var s=i.toLowerCase().split("::").reverse(),o=l(s,2),d=o[0],u=o[1],m=u?u.split(":").map(O):[],p=d.split(":").map(O),c=t.IPV4ADDRESS.test(p[p.length-1]),g=c?7:8,h=p.length-g,v=Array(g),f=0;f1){var b=v.slice(0,k.index),w=v.slice(k.index+k.length);y=b.join(":")+"::"+w.join(":")}else y=v.join(":");return n&&(y+="%"+n),y}return e}var D=/^(?:([^:\/?#]+):)?(?:\/\/((?:([^\/?#@]*)@)?(\[[^\/?#\]]+\]|[^\/?#:]*)(?:\:(\d*))?))?([^?#]*)(?:\?([^#]*))?(?:#((?:.|\n|\r)*))?/i,M=void 0==="".match(/(){0}/)[1];function x(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a={},r=!1!==t.iri?o:s;"suffix"===t.reference&&(e=(t.scheme?t.scheme+":":"")+"//"+e);var i=e.match(D);if(i){M?(a.scheme=i[1],a.userinfo=i[3],a.host=i[4],a.port=parseInt(i[5],10),a.path=i[6]||"",a.query=i[7],a.fragment=i[8],isNaN(a.port)&&(a.port=i[5])):(a.scheme=i[1]||void 0,a.userinfo=-1!==e.indexOf("@")?i[3]:void 0,a.host=-1!==e.indexOf("//")?i[4]:void 0,a.port=parseInt(i[5],10),a.path=i[6]||"",a.query=-1!==e.indexOf("?")?i[7]:void 0,a.fragment=-1!==e.indexOf("#")?i[8]:void 0,isNaN(a.port)&&(a.port=e.match(/\/\/(?:.|\n)*\:(?:\/|\?|\#|$)/)?i[4]:void 0)),a.host&&(a.host=T(L(a.host,r),r)),void 0!==a.scheme||void 0!==a.userinfo||void 0!==a.host||void 0!==a.port||a.path||void 0!==a.query?void 0===a.scheme?a.reference="relative":void 0===a.fragment?a.reference="absolute":a.reference="uri":a.reference="same-document",t.reference&&"suffix"!==t.reference&&t.reference!==a.reference&&(a.error=a.error||"URI is not a "+t.reference+" reference.");var n=A[(t.scheme||a.scheme||"").toLowerCase()];if(t.unicodeSupport||n&&n.unicodeSupport)C(a,r);else{if(a.host&&(t.domainHost||n&&n.domainHost))try{a.host=_(a.host.replace(r.PCT_ENCODED,j).toLowerCase())}catch(e){a.error=a.error||"Host's domain name can not be converted to ASCII via punycode: "+e}C(a,s)}n&&n.parse&&n.parse(a,t)}else a.error=a.error||"URI can not be parsed.";return a}var $=/^\.\.?\//,F=/^\/\.(\/|$)/,I=/^\/\.\.(\/|$)/,N=/^\/?(?:.|\n)*?(?=\/|$)/;function B(e){for(var t=[];e.length;)if(e.match($))e=e.replace($,"");else if(e.match(F))e=e.replace(F,"/");else if(e.match(I))e=e.replace(I,"/"),t.pop();else if("."===e||".."===e)e="";else{var a=e.match(N);if(!a)throw new Error("Unexpected dot segment condition");var r=a[0];e=e.slice(r.length),t.push(r)}return t.join("")}function H(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=t.iri?o:s,r=[],i=A[(t.scheme||e.scheme||"").toLowerCase()];if(i&&i.serialize&&i.serialize(e,t),e.host)if(a.IPV6ADDRESS.test(e.host));else if(t.domainHost||i&&i.domainHost)try{e.host=t.iri?S(e.host):_(e.host.replace(a.PCT_ENCODED,j).toLowerCase())}catch(a){e.error=e.error||"Host's domain name can not be converted to "+(t.iri?"Unicode":"ASCII")+" via punycode: "+a}C(e,a),"suffix"!==t.reference&&e.scheme&&(r.push(e.scheme),r.push(":"));var n=function(e,t){var a=!1!==t.iri?o:s,r=[];return void 0!==e.userinfo&&(r.push(e.userinfo),r.push("@")),void 0!==e.host&&r.push(T(L(String(e.host),a),a).replace(a.IPV6ADDRESS,(function(e,t,a){return"["+t+(a?"%25"+a:"")+"]"}))),"number"!=typeof e.port&&"string"!=typeof e.port||(r.push(":"),r.push(String(e.port))),r.length?r.join(""):void 0}(e,t);if(void 0!==n&&("suffix"!==t.reference&&r.push("//"),r.push(n),e.path&&"/"!==e.path.charAt(0)&&r.push("/")),void 0!==e.path){var l=e.path;t.absolutePath||i&&i.absolutePath||(l=B(l)),void 0===n&&(l=l.replace(/^\/\//,"/%2F")),r.push(l)}return void 0!==e.query&&(r.push("?"),r.push(e.query)),void 0!==e.fragment&&(r.push("#"),r.push(e.fragment)),r.join("")}function V(e,t){var a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r={};return arguments[3]||(e=x(H(e,a),a),t=x(H(t,a),a)),!(a=a||{}).tolerant&&t.scheme?(r.scheme=t.scheme,r.userinfo=t.userinfo,r.host=t.host,r.port=t.port,r.path=B(t.path||""),r.query=t.query):(void 0!==t.userinfo||void 0!==t.host||void 0!==t.port?(r.userinfo=t.userinfo,r.host=t.host,r.port=t.port,r.path=B(t.path||""),r.query=t.query):(t.path?("/"===t.path.charAt(0)?r.path=B(t.path):(void 0===e.userinfo&&void 0===e.host&&void 0===e.port||e.path?e.path?r.path=e.path.slice(0,e.path.lastIndexOf("/")+1)+t.path:r.path=t.path:r.path="/"+t.path,r.path=B(r.path)),r.query=t.query):(r.path=e.path,void 0!==t.query?r.query=t.query:r.query=e.query),r.userinfo=e.userinfo,r.host=e.host,r.port=e.port),r.scheme=e.scheme),r.fragment=t.fragment,r}function R(e,t){return e&&e.toString().replace(t&&t.iri?o.PCT_ENCODED:s.PCT_ENCODED,j)}var U={scheme:"http",domainHost:!0,parse:function(e,t){return e.host||(e.error=e.error||"HTTP URIs must have a host."),e},serialize:function(e,t){var a="https"===String(e.scheme).toLowerCase();return e.port!==(a?443:80)&&""!==e.port||(e.port=void 0),e.path||(e.path="/"),e}},q={scheme:"https",domainHost:U.domainHost,parse:U.parse,serialize:U.serialize};function G(e){return"boolean"==typeof e.secure?e.secure:"wss"===String(e.scheme).toLowerCase()}var W={scheme:"ws",domainHost:!0,parse:function(e,t){var a=e;return a.secure=G(a),a.resourceName=(a.path||"/")+(a.query?"?"+a.query:""),a.path=void 0,a.query=void 0,a},serialize:function(e,t){if(e.port!==(G(e)?443:80)&&""!==e.port||(e.port=void 0),"boolean"==typeof e.secure&&(e.scheme=e.secure?"wss":"ws",e.secure=void 0),e.resourceName){var a=e.resourceName.split("?"),r=l(a,2),i=r[0],n=r[1];e.path=i&&"/"!==i?i:void 0,e.query=n,e.resourceName=void 0}return e.fragment=void 0,e}},K={scheme:"wss",domainHost:W.domainHost,parse:W.parse,serialize:W.serialize},J={},Z="[A-Za-z0-9\\-\\.\\_\\~\\xA0-\\u200D\\u2010-\\u2029\\u202F-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]",Q="[0-9A-Fa-f]",Y=a(a("%[EFef]"+Q+"%"+Q+Q+"%"+Q+Q)+"|"+a("%[89A-Fa-f]"+Q+"%"+Q+Q)+"|"+a("%"+Q+Q)),X=t("[\\!\\$\\%\\'\\(\\)\\*\\+\\,\\-\\.0-9\\<\\>A-Z\\x5E-\\x7E]",'[\\"\\\\]'),ee=new RegExp(Z,"g"),te=new RegExp(Y,"g"),ae=new RegExp(t("[^]","[A-Za-z0-9\\!\\$\\%\\'\\*\\+\\-\\^\\_\\`\\{\\|\\}\\~]","[\\.]",'[\\"]',X),"g"),re=new RegExp(t("[^]",Z,"[\\!\\$\\'\\(\\)\\*\\+\\,\\;\\:\\@]"),"g"),ie=re;function ne(e){var t=j(e);return t.match(ee)?t:e}var se={scheme:"mailto",parse:function(e,t){var a=e,r=a.to=a.path?a.path.split(","):[];if(a.path=void 0,a.query){for(var i=!1,n={},s=a.query.split("&"),o=0,l=s.length;o{"use strict";e.exports={detect:function(e){var t="RIFF"===e.toString("ascii",0,4),a="WEBP"===e.toString("ascii",8,12),r="VP8"===e.toString("ascii",12,15);return t&&a&&r},calculate:function(e){var t=e.toString("ascii",12,16);if(e=e.slice(20,30),"VP8X"===t){var a=e[0];return!(192&a||1&a)&&function(e){return{width:1+e.readUIntLE(4,3),height:1+e.readUIntLE(7,3)}}(e)}if("VP8 "===t&&47!==e[0])return function(e){return{width:16383&e.readInt16LE(6),height:16383&e.readInt16LE(8)}}(e);var r=e.toString("hex",3,6);return"VP8L"===t&&"9d012a"!==r&&function(e){return{width:1+((63&e[2])<<8|e[1]),height:1+((15&e[4])<<10|e[3]<<2|(192&e[2])>>6)}}(e)}}},6656:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Gust strength","nl":"Windstootkracht","de":"Böenstärke","fr":"Force d\'un coup de vent","it":"Intensità delle raffiche","sv":"Byvind","no":"Vindkast","es":"Fuerza del aire","da":"Vindstyrke","ru":"Сила порывов ветра","pl":"Siła porywu wiatru","ko":"돌풍 세기","ar":"شدة العاصفة"},"units":{"en":"km/h","ru":"км/ч","ko":"km/h","no":"km/t","ar":"كم/ساعة","da":"km/t","de":"km/h","es":"km/h","fr":"km/h","it":"km/h","nl":"km/u","pl":"km/h","sv":"km/h"},"insights":true,"desc":{"en":"Gust strength in kilometer per hour (km/h)","nl":"Windstoot snelheid in kilometer per uur (km/u)","de":"Böenstärke in Kilometer pro Stunde (km/h)","fr":"Force du coup de vent en kilomètres par heure (km/h)","it":"Intensità delle raffiche in chilometri orari (km/h)","sv":"Byvind i kilometer per timme (km/h)","no":"Vindkaststyrke i kilometer per time (km/t)","es":"Fuerza del aire en kilómetros por hora (km/h)","da":"Vindstyrke i kilometer i timen (km/t)","ru":"Сила порывов ветра в км в час (км/ч)","pl":"Siła porywu wiatru w kilometrach na godzinę (km/h)","ko":"돌풍 세기 시간당 킬로미터(km/h)","ar":"شدة العاصفة بالكيلومتر في الساعة (km/h)"},"chartType":"stepLine","decimals":2,"color":"#32C5FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_gust_strength_changed","title":{"en":"The gust strength changed","nl":"De windstootkracht is veranderd","de":"Die Böenstärke hat sich geändert","fr":"La force du coup de vent a changé","it":"L\'intensità delle raffiche è cambiata","sv":"Byvinden ändrades","no":"Vindstyrken ble endret","es":"La fuerza del aire ha cambiado","da":"Vindstyrken skiftede","ru":"Сила порывов ветра изменилась","pl":"Zmiana siły porywu wiatru","ko":"돌풍 세기가 변경되면","ar":"تغيرت شدة العاصفة"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":15}]}]}}')},6740:(e,t,a)=>{"use strict";function r(e,t,a,r){var i=r?" !== ":" === ",n=r?" || ":" && ",s=r?"!":"",o=r?"":"!";switch(e){case"null":return t+i+"null";case"array":return s+"Array.isArray("+t+")";case"object":return"("+s+t+n+"typeof "+t+i+'"object"'+n+o+"Array.isArray("+t+"))";case"integer":return"(typeof "+t+i+'"number"'+n+o+"("+t+" % 1)"+n+t+i+t+(a?n+s+"isFinite("+t+")":"")+")";case"number":return"(typeof "+t+i+'"'+e+'"'+(a?n+s+"isFinite("+t+")":"")+")";default:return"typeof "+t+i+'"'+e+'"'}}e.exports={copy:function(e,t){for(var a in t=t||{},e)t[a]=e[a];return t},checkDataType:r,checkDataTypes:function(e,t,a){if(1===e.length)return r(e[0],t,a,!0);var i="",s=n(e);for(var o in s.array&&s.object&&(i=s.null?"(":"(!"+t+" || ",i+="typeof "+t+' !== "object")',delete s.null,delete s.array,delete s.object),s.number&&delete s.integer,s)i+=(i?" && ":"")+r(o,t,a,!0);return i},coerceToTypes:function(e,t){if(Array.isArray(t)){for(var a=[],r=0;r=t)throw new Error("Cannot access property/index "+r+" levels up, current level is "+t);return a[t-r]}if(r>t)throw new Error("Cannot access data "+r+" levels up, current level is "+t);if(n="data"+(t-r||""),!i)return n}for(var o=n,d=i.split("/"),u=0;u{"use strict";e.exports=JSON.parse('{"title":{"en":"Window coverings tilt up","nl":"Raambekleding kantelt omhoog","de":"Jalousien nach oben gekippt","fr":"Stores levés","it":"Tapparelle alzate","sv":"Fönsterskydd öppna","no":"Vindusbeskyttelser åpne","es":"Cobertores de ventanas inclinados hacia arriba","da":"Vinduesdække opad","ru":"Приподнять оконные навесы","pl":"Rozchylenie osłon okiennych","ko":"위로 틸트","ar":"إمالة أغطية النوافذ للأعلى"},"type":"boolean","color":"#F5B207","getable":false,"setable":true,"uiComponent":"button","$flow":{"actions":[{"id":"tilt_up","title":{"en":"Tilt up","da":"Vip op","it":"Inclina verso l\'alto","ko":"창문 가림 기울기 위로 틸팅","nl":"Omhoog kantelen","pl":"Odchylenie w górę","ru":"Наклон вверх","sv":"Luta upp","es":"Inclinar hacia arriba","fr":"Inclinaison vers le haut","no":"Vipp opp","ar":"إمالة للأعلى","de":"Nach oben neigen"}}]}}')},6782:e=>{"use strict";e.exports=JSON.parse('{"homey:codec:mp3":{},"homey:codec:ogg":{},"homey:codec:flac":{}}')},6796:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Sensor","nl":"Sensor","de":"Sensor","fr":"Capteur","it":"Sensore","sv":"Sensor","no":"Sensor","es":"Sensor","da":"Sensor","ru":"Датчик","pl":"Czujnik","ko":"센서","ar":"مستشعر"},"description":{"en":"Use this device class for sensors, e.g. a contact or motion sensor.","de":"Nutze diese Geräteklasse für Sensoren, z. B. ein Kontakt- oder Bewegungssensor.","fr":"Utilisez cette classe d\'appareil pour les capteurs, par ex. un capteur de contact ou de mouvement.","it":"Utilizza questa classe di dispositivi per i sensori, ad es. un sensore di contatto o di movimento.","sv":"Använd den här enhetsklassen för sensorer, t.ex. en kontakt eller rörelsesensor.","no":"Bruk denne enhetsklassen for sensorer, f.eks. en kontakt- eller bevegelsessensor.","es":"Utiliza esta clase de dispositivo para los sensores; p. ej., sensores de contacto o movimiento.","da":"Brug denne enhedsklasse til sensorer, f-eks en kontakt- eller bevægelsessensor.","ru":"Используйте этот класс устройства для датчиков, например датчиков контакта или движения.","pl":"Użyj tej klasy urządzeń dla czujników, np. czujnika otwarcia lub ruchu.","ko":"이 디바이스 클래스는 접촉 또는 모션 센서 등 센서류에 사용합니다.","ar":"استخدم فئة الجهاز هذه للمستشعرات، مثل مستشعر الاتصال أو الحركة.","nl":"Gebruik deze apparaatklasse voor sensoren, bijvoorbeeld een contact- of bewegingssensor."}}')},6797:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Lock mode","nl":"Vergrendelmodus","de":"Schloss-Modus","fr":"Mode verrou","it":"Modalità serratura","sv":"Låsläge","no":"Låsemodus","es":"Modo de la cerradura","da":"Lås-tilstand","ru":"Режим замка","pl":"Tryb zamknięcia","ko":"잠금 모드","ar":"وضع القفل"},"values":[{"id":"always_locked","title":{"en":"Always locked","nl":"Altijd op slot","de":"Immer verriegelt","fr":"Toujours verrouillé","it":"Sempre chiusa","sv":"Alltid låst","no":"Alltid låst","es":"Siempre cerrada","da":"Altid låst","ru":"Всегда закрыт","pl":"Zawsze zablokowane","ko":"항상 잠김","ar":"مغلق دائمًا"}},{"id":"always_unlocked","title":{"en":"Always unlocked","nl":"Altijd open","de":"Immer entriegelt","fr":"Toujours déverrouillé","it":"Sempre aperta","sv":"Alltid olåst","no":"Alltid ulåst","es":"Siempre abierta","da":"Altid ulåst","ru":"Всегда открыт","pl":"Zawsze odblokowane","ko":"항상 잠금 해제됨","ar":"مفتوح دائمًا"}},{"id":"locked_until_unlock","title":{"en":"Locked until unlocked","nl":"Op slot tot geopend","de":"Verriegelt, bis entriegelt wird","fr":"Verrouillé jusqu\'à déverrouillé","it":"Chiusa finché non viene sbloccata","sv":"Låst tills upplåst","no":"Låst til opplåst","es":"Cerrada hasta que se abra","da":"Låst indtil ulåst","ru":"Закрыт, пока не будет открыт","pl":"Zablokowane aż do odblokowania","ko":"잠금 해제할 때까지 잠김","ar":"مغلق حتى يتم فتحه"}}],"color":"#0091FF","getable":true,"setable":true,"uiComponent":"picker","$flow":{"triggers":[{"id":"lock_mode_changed","title":{"en":"The lock mode changed to","nl":"De vergrendelingsstand is veranderd naar","de":"Der Sperrmodus wurde geändert auf","fr":"Le mode de verrouillage est passé à","it":"La modalità di chiusura è passata a","sv":"Låsläget har ändrats till","no":"Låsemodusen ble endret til","es":"El modo de la cerradura ha cambiado a","da":"Låstilstanden er ændret til","ru":"Режим работы замка изменен на:","pl":"Tryb zamka zmienił się na","ko":"잠금 모드가 다음으로 변경되면","ar":"تم تغيير وضع القفل إلى"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"lock_mode_is","title":{"en":"The lock mode !{{is|is not}}","nl":"De vergrendelingsstand !{{is|is niet}}","de":"Der Sperrmodus !{{ist|ist nicht}}","fr":"Le mode de verrouillage !{{est|n\'est pas}}","it":"La modalità di chiusura !{{è|non è}}","sv":"Låsläget !{{är|är inte}}","no":"Låsemodusen !{{er|er ikke}}","es":"El modo de la cerradura !{{está|no está}}","da":"Låstilstanden !{{er|er ikke}}","ru":"Режим работы замка !{{|не}}","pl":"Tryb zamka !{{jest|nie jest}}","ko":"잠금 모드가 다음!{{과 같으면|이 아니면}}","ar":"وضع القفل !{{هو|ليس}}"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}],"actions":[{"id":"mode","title":{"en":"Set the lock mode to","nl":"Stel de vergrendelingsstand in op","de":"Stelle den Sperrmodus auf","fr":"Définir le mode de verrouillage sur","it":"Imposta la modalità di chiusura su","sv":"Ställ in låsläget till","no":"Sett låsemodusen til","es":"Ajustar el modo de la cerradura en","da":"Indstil låstilstanden til","ru":"Установить режим работы замка на:","pl":"Ustaw tryb zamka na","ko":"잠금 모드를 다음으로 설정","ar":"ضبط وضع القفل على"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}]}}')},6891:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Speaker","nl":"Speaker","de":"Lautsprecher","fr":"Haut-parleur","it":"Altoparlante","sv":"Högtalare","no":"Høyttaler","es":"Altavoz","da":"Højttaler","ru":"Колонка","pl":"Głośnik","ko":"스피커","ar":"سماعة"},"description":{"en":"Use this device class for devices that can play music, usually together with the `speaker_*` capabilities.","de":"Nutze diese Geräteklasse für Geräte, die Musik spielen können - normalerweise zusammen mit den `speaker_*`-Fähigkeiten.","fr":"Utilisez cette classe d\'appareil pour les appareils qui peuvent jouer de la musique, généralement avec la capacité `speaker_*`.","it":"Utilizza questa classe di dispositivi per i dispositivi che possono riprodurre musica, generalmente insieme alla funzione `speaker_*`.","sv":"Använd den här enhetsklassen för enheter som kan spela musik, oftast tilsammans med funktionerna `speaker_*`.","no":"Bruk denne enhetsklassen for enheter som kan spille musikk, ofte sammen med funksjonen `speaker_*`.","es":"Utiliza esta clase de dispositivo para los aparatos capaces de reproducir música, generalmente junto con las capacidades `speaker_*`.","da":"Brug denne enhedsklasse til enheder, der kan afspille musik, normalt sammen med `speaker_*` funktionerne.","ru":"Используйте этот класс устройств для устройств, воспроизводящих музыку, обычно вместе с функцией `speaker_*`.","pl":"Użyj tej klasy urządzeń dla produktów, które mogą odtwarzać muzykę, zwykle razem ze zdolnością `speaker_*`.","ko":"이 디바이스 클래스는 음악을 재생할 수 있고 보통 \'speaker_*\' 기능을 갖춘 디바이스에 사용합니다.","ar":"استخدم فئة الجهاز هذه للأجهزة التي يمكنها تشغيل الموسيقى، عادةً مع إمكانيات \'speaker_*\'.","nl":"Gebruik deze apparaatklasse voor apparaten die muziek kunnen afspelen, meestal samen met de opties voor \'speaker_*\'."}}')},6892:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"TV","nl":"TV","de":"TV","fr":"TV","it":"TV","sv":"TV","no":"TV","es":"TV","da":"TV","ru":"Телевизор","pl":"Telewizor","ko":"TV","ar":"تلفزيون"},"description":{"en":"Use this device class for TVs.","de":"Nutze diese Geräteklasse für TVs","fr":"Utilisez cette classe d\'appareil pour les TV","it":"Utilizza questa classe di dispositivi per i televisori.","sv":"Använd den här enhetsklassen för TV-apparater.","no":"Bruk denne enhetsklassen for TV-apparater.","es":"Utiliza esta clase de dispositivo para los televisores.","da":"Brug denne enhedsklasse til TV-apparater.","ru":"Используйте этот класс устройств для телевизоров.","pl":"Użyj tej klasy urządzeń dla telewizorów.","ko":"이 디바이스 클래스는 TV에 사용합니다.","ar":"استخدم فئة الجهاز هذه لأجهزة التلفزيون.","nl":"Gebruik deze apparaatklasse voor tv\'s."}}')},6907:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Color saturation","nl":"Kleurverzadiging","de":"Farbsättigung","fr":"Saturation de couleur","it":"Saturazione colore","sv":"Färggmättnad","no":"Fargemetning","es":"Saturación del color","da":"Farvemætning","ru":"Насыщенность цвета","pl":"Nasycenie barwy","ko":"채도","ar":"تشبع اللون"},"min":0,"chartType":"stepLine","max":1,"decimals":2,"color":"#F7B500","getable":true,"setable":true,"$flow":{"actions":[{"id":"saturation","title":{"en":"Set the saturation","nl":"Verander kleurverzadiging","de":"Die Sättigung setzen","fr":"Définir la saturation","it":"Imposta la saturazione","sv":"Ställ in mättnad","no":"Innstill metningen","es":"Configurar la saturación","da":"Indstil farvemætningen","ru":"Установить насыщенность","pl":"Ustaw nasycenie","ko":"채도 설정","ar":"ضبط التشبع"},"args":[{"name":"saturation","type":"range","min":0,"max":1,"step":0.01,"value":0.5,"label":"%","labelMultiplier":100,"labelDecimals":0}]}]},"uiComponent":"color"}')},6929:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Charging","nl":"Opladen","da":"Oplader","de":"Wird aufgeladen","es":"Carga","fr":"Charge en cours","it":"In ricarica","ko":"전기차 충전기","no":"Lader","pl":"Ładowanie","ru":"Заряжается","sv":"Laddning","ar":"قيد الشحن"},"type":"boolean","color":"#6DD400","getable":true,"setable":true,"insights":true,"minCompatibility":"12.4.5","insightsTitleTrue":{"en":"Started charging","nl":"Begonnen met opladen","da":"Begyndte at oplade","de":"Ladevorgang hat begonnen","es":"Carga iniciada","fr":"Charge démarrée","it":"Ricarica avviata","ko":"충전 시작됨","no":"Startet lading","pl":"Rozpoczęto ładowanie","ru":"Зарядка началась","sv":"Började ladda","ar":"بدأ الشحن"},"insightsTitleFalse":{"en":"Stopped charging","nl":"Gestopt met opladen","da":"Stoppede med at oplade","de":"Ladevorgang wurde gestoppt","es":"Carga detenida","fr":"Charge arrêtée","it":"Ricarica interrotta","ko":"충전 중지됨","no":"Stoppet lading","pl":"Zatrzymano ładowanie","ru":"Зарядка остановлена","sv":"Slutade ladda","ar":"توقف الشحن"},"uiComponent":"toggle","$flow":{"triggers":[{"id":"evcharger_charging_true","highlight":true,"title":{"en":"Started charging","nl":"Begonnen met opladen","da":"Begyndte at oplade","de":"Ladevorgang hat begonnen","es":"Carga iniciada","fr":"Charge démarrée","it":"Ricarica avviata","ko":"충전이 시작되면","no":"Startet lading","pl":"Rozpoczęto ładowanie","ru":"Зарядка началась","sv":"Började ladda","ar":"بدأ الشحن"}},{"id":"evcharger_charging_false","highlight":true,"title":{"en":"Stopped charging","nl":"Gestopt met opladen","da":"Stoppede med at oplade","de":"Ladevorgang wurde gestoppt","es":"Carga detenida","fr":"Charge arrêtée","it":"Ricarica interrotta","ko":"충전이 중지되면","no":"Stoppet lading","pl":"Zatrzymano ładowanie","ru":"Зарядка остановлена","sv":"Slutade ladda","ar":"توقف الشحن"}}],"conditions":[{"id":"evcharger_charging","title":{"en":"Is !{{|not}} charging","nl":"Is !{{|niet}} aan het opladen","da":"Oplader !{{|ikke}}","de":"Wird !{{|nicht}} geladen","es":"!{{|No}} está cargando","fr":"N\'est !{{|pas}} en cours de charge","it":"!{{|Non}} è in ricarica","ko":"충전 중!{{이면|이 아니면}}","no":"Lader !{{|ikke}}","pl":"!{{Jest|Nie jest}} w trakcie ładowania","ru":"!{{|не}} заряжается","sv":"Laddar !{{|inte}}","ar":"هو !{{|ليس}} في حالة شحن"}}],"actions":[{"id":"evcharger_charging_start","highlight":true,"title":{"en":"Start charging","nl":"Begin met opladen","da":"Begynd at oplade","de":"Ladevorgang starten","es":"Iniciar carga","fr":"Démarrer la charge","it":"Avvia la ricarica","ko":"충전 시작","no":"Start lading","pl":"Rozpoczęcie ładowania","ru":"Начать зарядку","sv":"Starta laddning","ar":"بدء الشحن"}},{"id":"evcharger_charging_stop","highlight":true,"title":{"en":"Stop charging","nl":"Stop met opladen","da":"Stop med at oplade","de":"Ladevorgang stoppen","es":"Detener carga","fr":"Arrêter la charge","it":"Interrompi la ricarica","ko":"충전 중지","no":"Stopp lading","pl":"Zatrzymanie ładowania","ru":"Остановить зарядку","sv":"Avsluta laddning","ar":"إيقاف الشحن"}}]}}')},6957:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"SO₂","nl":"SO₂","da":"SO₂","it":"SO₂","ko":"SO₂","pl":"SO₂","ru":"SO₂","sv":"SO₂","es":"SO₂","fr":"SO₂","no":"SO₂","ar":"ثاني أكسيد الكبريت","de":"SO₂"},"units":{"en":"μg/m³","nl":"μg/m³","da":"μg/m³","it":"μg/m³","ko":"μg/m³","pl":"μg/m³","ru":"мкг/м³","sv":"μg/m³","es":"μg/m³","fr":"μg/m³","no":"μg/m³","ar":"ميكروجرام/م³","de":"μg/m³"},"insights":true,"desc":{"en":"Sulfur dioxide in micrograms per cubic meter (μg/m³)","nl":"Zwaveldioxide in microgram per kubieke meter (μg/m³)","da":"Svovldioxid i mikrogram pr. kubikmeter (μg/m³)","it":"Anidride solforosa in microgrammi per metro cubo (μg/m³)","ko":"입방미터당 마이크로그램(μg/m³) 단위의 이산화황","pl":"Dwutlenek siarki w mikrogramach na metr sześcienny (μg/m³)","ru":"Диоксид серы в микрограммах на кубический метр (мкг/м³)","sv":"Svaveldioxid i mikrogram per kubikmeter (μg/m³)","es":"Dióxido de azufre en microgramos por metro cúbico (μg/m³)","fr":"Dioxyde de soufre en microgrammes par mètre cube (μg/m³)","no":"Svoveldioksid i mikrogram per kubikkmeter (μg/m³)","ar":"ثاني أكسيد الكبريت بالميكروجرام لكل متر مكعب (μg/m³)","de":"Schwefeldioxid in Mikrogramm pro Kubikmeter (μg/m³)"},"chartType":"spline","decimals":2,"color":"#FA6400","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_so2_changed","title":{"en":"The SO₂ level has changed","nl":"Het SO₂-niveau is veranderd","da":"SO₂-værdien har ændret sig","it":"Il livello di SO₂ è cambiato","ko":"SO₂ 수준이 변경되면","no":"SO₂-nivået er endret","pl":"Zmienił się poziom SO₂","ru":"Уровень SO₂ изменился","sv":"SO₂-nivån har ändrats","es":"El nivel de SO₂ ha cambiado","fr":"Le niveau de SO₂ a changé","ar":"تغير مستوى ثاني أكسيد الكبريت","de":"Der SO₂-Gehalt hat sich geändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":2}]}]},"minCompatibility":"12.2.0"}')},6962:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Cleaning Pad Missing Alarm","nl":"Reinigingspad-ontbreekt-alarm","da":"Rengøringspad mangler alarm","es":"Alarma de mopa de limpieza no instalada","fr":"Alarme de lingette de nettoyage manquante","it":"Allarme panno pulente mancante","ko":"물걸레 분리 감지","pl":"Alarm braku podkładki czyszczącej","ru":"Сигнал об отсутствии чистящей губки","sv":"Rengöringsdyna saknar larm","no":"Alarm om manglende vaskeklut","ar":"إنذار فقد وسادة التنظيف","de":"Alarm bei fehlendem Reinigungspad"},"titleShort":{"en":"Cleaning Pad Missing","nl":"Reinigingspad ontbreekt","da":"Rengøringspude mangler","es":"Mopa de limpieza no instalada","fr":"Lingette de nettoyage manquante","it":"Panno pulente mancante","ko":"물걸레 누락","pl":"Brak podkładki czyszczącej","ru":"Чистящая губка отсутствует","sv":"Rengöringsdyna saknas","no":"Manglende vaskeklut","ar":"وسادة التنظيف غير موجودة","de":"Reinigungspad fehlt"},"desc":{"en":"True when the cleaning pad is missing.","nl":"Wordt geactiveerd wanneer de reinigingspad ontbreekt.","da":"Sandt, når rengøringspad mangler.","es":"Activado cuando la almohadilla no está presente","fr":"Se déclenche lorsque la lingette de nettoyage est manquante.","it":"Vero quando manca il panno pulente.","ko":"클리닝 패드가 누락되면 참입니다.","pl":"Prawda, gdy brakuje podkładki czyszczącej.","ru":"Значение «истина», когда чистящая губка отсутствует.","sv":"Sant när rengöringsdynan saknas.","no":"Sann når vaskekluten mangler.","ar":"صحيح عند فقد وسادة التنظيف.","de":"Wahr, wenn das Reinigungspad fehlt."},"insights":true,"insightsTitleTrue":{"en":"The cleaning pad was removed","nl":"De reinigingspad was verwijderd","da":"Rengøringspad blev fjernet","es":"La almohadilla de limpieza se ha retirado","fr":"La lingette de nettoyage a été enlevée","it":"Il panno pulente è stato rimosso","ko":"물걸레 분리됨","pl":"Podkładka czyszcząca została usunięta","ru":"Чистящая губка была удалена","sv":"Rengöringsdynan togs bort","no":"Vaskekluten ble fjernet","ar":"تمت إزالة وسادة التنظيف","de":"Das Reinigungspad wurde entfernt"},"insightsTitleFalse":{"en":"The cleaning pad was placed","nl":"De reinigingspad was geplaatst","da":"Rengøringspad blev placeret","es":"La almohadilla de limpieza se ha colocado","fr":"La lingette de nettoyage a été placée","it":"Il panno pulente è stato posizionato","ko":"물걸레 장착됨","pl":"Podkładka czyszcząca została umieszczona","ru":"Чистящая губка была размещена","sv":"Rengöringsdynan placerades","no":"Vaskekluten ble satt på plass","ar":"تم وضع وسادة التنظيف","de":"Das Reinigungspad wurde platziert"},"color":"#9033FC","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_cleaning_pad_missing_true","highlight":true,"title":{"en":"The cleaning pad was removed","nl":"De reinigingspad is verwijderd","da":"Rengøringspad blev fjernet","es":"La almohadilla de limpieza se ha retirado","fr":"La lingette de nettoyage a été enlevée","it":"Il panno pulente è stato rimosso","ko":"물걸레가 분리되면","pl":"Podkładka czyszcząca została usunięta","ru":"Чистящая губка была удалена","sv":"Rengöringsdynan togs bort","no":"Vaskekluten ble fjernet","ar":"تمت إزالة وسادة التنظيف","de":"Das Reinigungspad wurde entfernt"}},{"id":"alarm_cleaning_pad_missing_false","title":{"en":"The cleaning pad was placed","nl":"De reinigingspad is geplaatst","da":"Rengøringspad blev placeret","es":"La almohadilla de limpieza se ha colocado","fr":"La lingette de nettoyage a été placée","it":"Il panno pulente è stato posizionato","ko":"물걸레가 장착되면","pl":"Podkładka czyszcząca została umieszczona","ru":"Чистящая губка была размещена","sv":"Rengöringsdynan placerades","no":"Vaskekluten ble satt på plass","ar":"تم وضع وسادة التنظيف","de":"Das Reinigungspad wurde platziert"}}],"conditions":[{"id":"alarm_cleaning_pad_missing","title":{"en":"The cleaning pad is !{{missing|present}}","nl":"De reiningingspad !{{ontbreekt|is aangebracht}}","da":"Rengøringspad !{{mangler|er tilstede}}","es":"Almohadilla de limpieza !{{no presente|presente}}","it":"Il panno pulente è !{{assente|presente}}","ko":"물걸레가 !{{분리되면|장착되면}}","pl":"Podkładka czyszcząca jest !{{brakująca|obecna}}","ru":"Чистящая губка !{{отсутствует|в наличии}}","sv":"Rengöringsdynan !{{saknas|är på plats}}","fr":"La lingette de nettoyage est !{{manquante|présente}}","no":"Vaskekluten !{{mangler|er på plass}}","ar":"وسادة التنظيف !{{مفقودة|موجودة}}","de":"Das Reinigungspad !{{fehlt|ist vorhanden}}"}}]},"minCompatibility":"12.2.0"}')},6983:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Hue","nl":"Tint","de":"Farbton","fr":"Teinte","it":"Tonalità","sv":"Nyans","no":"Fargetone","es":"Tonalidad","da":"Farvetone","ru":"Оттенок","pl":"Odcień","ko":"색상","ar":"درجة اللون"},"min":0,"chartType":"stepLine","max":1,"decimals":2,"color":"#F7B500","getable":true,"setable":true,"uiComponent":"color","$flow":{"actions":[{"id":"hue","title":{"en":"Set the hue","nl":"Verander kleurtint","de":"Den Farbton setzen","fr":"Définir la teinte","it":"Imposta la tonalità","sv":"Ställ in nyans","no":"Innstill fargetone","es":"Configurar la tonalidad","da":"Indstil farvetonen","ru":"Установить оттенок","pl":"Ustaw odcień","ko":"색조 설정","ar":"ضبط درجة اللون"},"hint":{"en":"Select a color from the hue scale, for example red (0°/360°), yellow (60°), or blue (180°).","nl":"Selecteer een kleurtint van de hue schaal, bijvoorbeeld rood (0°/360°), geel (60°), of blauw (180°).","ru":"Выберите цвет из шкалы оттенков, например красный (0°/360°), желтый (60°) или синий (180°).","pl":"Wybierz barwę ze skali odcieni: np. czerwień (0°/360°), żółty (60°) lub niebieski (180°).","ko":"색조 스케일에서 색상을 선택하세요. 빨간색은 (0°/360°), 노란색은 (60°), 파란색은 (180°)이에요.","no":"Velg en farge fra fargeskalaen, for eksempel rød (0°/360°), gul (60°) eller blå (180°).","ar":"اختر لونًا من مقياس درجات الألوان، على سبيل المثال أحمر (0°/360°)، أصفر (60°)، أو أزرق (180°).","da":"Vælg en farve fra nuanceskalaen, f.eks. rød (0°/360°), gul (60°) eller blå (180°).","de":"Wähle eine Farbe aus der Farbtonskala aus, zum Beispiel Rot (0°/360°), Gelb (60°) oder Blau (180°).","es":"Selecciona un color de la escala cromática [por ej.: rojo (0°/360°), amarillo (60°) o azul (180°)].","fr":"Sélectionnez une couleur dans l\'échelle des teintes, par exemple rouge (0°/360°), jaune (60°) ou bleu (180°).","it":"Seleziona un colore dalla scala di tonalità, ad esempio rosso (0°/360°), giallo (60°) o blu (180°).","sv":"Välj en färg från nyansskalan, t.ex. röd (0°/360°), gul (60°) eller blå (180°)."},"args":[{"name":"hue","type":"range","min":0,"max":1,"step":0.01,"value":0,"label":"°","labelMultiplier":360,"labelDecimals":0}]},{"id":"color","title":{"en":"Set a color","nl":"Verander naar kleur","de":"Eine Farbe setzen","fr":"Définir la couleur","it":"Imposta un colore","sv":"Ställ in en färg","no":"Innstill fargetone","es":"Configurar un color","da":"Indstil en farve","ru":"Установить цвет","pl":"Ustaw barwę","ko":"색상 설정","ar":"ضبط لون"},"args":[{"name":"color","type":"color"}]},{"id":"color_random","title":{"en":"Set a random color","nl":"Verander naar een willekeurige kleur","de":"Eine zufällige Farbe setzen","fr":"Définir une couleur aléatoire","it":"Imposta un colore casuale","sv":"Ställ in en slumpvis färg","no":"Innstill en tilfeldig farge","es":"Configurar un color aleatorio","da":"Indstil en tilfældig farve","ru":"Установить случайный цвет","pl":"Ustaw losową barwę","ko":"무작위 색상 설정","ar":"ضبط لون عشوائي"}}]}}')},6990:e=>{"use strict";e.exports=function(e,t,a){var r,i,n=" ",s=e.level,o=e.dataLevel,l=e.schema[t],d=e.errSchemaPath+"/"+t,u=!e.opts.allErrors,m="data"+(o||""),p="valid"+s;if("#"==l||"#/"==l)e.isRoot?(r=e.async,i="validate"):(r=!0===e.root.schema.$async,i="root.refVal[0]");else{var c=e.resolveRef(e.baseId,l,e.isRoot);if(void 0===c){var g=e.MissingRefError.message(e.baseId,l);if("fail"==e.opts.missingRefs){e.logger.error(g),(k=k||[]).push(n),n="",!1!==e.createErrors?(n+=" { keyword: '$ref' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(d)+" , params: { ref: '"+e.util.escapeQuotes(l)+"' } ",!1!==e.opts.messages&&(n+=" , message: 'can\\'t resolve reference "+e.util.escapeQuotes(l)+"' "),e.opts.verbose&&(n+=" , schema: "+e.util.toQuotedString(l)+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),n+=" } "):n+=" {} ";var h=n;n=k.pop(),!e.compositeRule&&u?e.async?n+=" throw new ValidationError(["+h+"]); ":n+=" validate.errors = ["+h+"]; return false; ":n+=" var err = "+h+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",u&&(n+=" if (false) { ")}else{if("ignore"!=e.opts.missingRefs)throw new e.MissingRefError(e.baseId,l,g);e.logger.warn(g),u&&(n+=" if (true) { ")}}else if(c.inline){var v=e.util.copy(e);v.level++;var f="valid"+v.level;v.schema=c.schema,v.schemaPath="",v.errSchemaPath=l,n+=" "+e.validate(v).replace(/validate\.schema/g,c.code)+" ",u&&(n+=" if ("+f+") { ")}else r=!0===c.$async||e.async&&!1!==c.$async,i=c.code}if(i){var k;(k=k||[]).push(n),n="",e.opts.passContext?n+=" "+i+".call(this, ":n+=" "+i+"( ",n+=" "+m+", (dataPath || '')",'""'!=e.errorPath&&(n+=" + "+e.errorPath);var y=n+=" , "+(o?"data"+(o-1||""):"parentData")+" , "+(o?e.dataPathArr[o]:"parentDataProperty")+", rootData) ";if(n=k.pop(),r){if(!e.async)throw new Error("async schema referenced by sync schema");u&&(n+=" var "+p+"; "),n+=" try { await "+y+"; ",u&&(n+=" "+p+" = true; "),n+=" } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; ",u&&(n+=" "+p+" = false; "),n+=" } ",u&&(n+=" if ("+p+") { ")}else n+=" if (!"+y+") { if (vErrors === null) vErrors = "+i+".errors; else vErrors = vErrors.concat("+i+".errors); errors = vErrors.length; } ",u&&(n+=" else { ")}return n}},6995:(e,t,a)=>{"use strict";var r=a(8287).hp,i=a(9081),n=a(1946);function s(e,t){var a=n(e,16,8,t);return(n(e,16,10,t)<<16)+a}function o(e){if(e.length>24)return e.slice(12)}e.exports={detect:function(e){var t=e.toString("hex",0,4);return"49492a00"===t||"4d4d002a"===t},calculate:function(e,t){if(!t)throw new TypeError("Tiff doesn't support buffer");var a="BE"===function(e){var t=e.toString("ascii",0,2);return"II"===t?"LE":"MM"===t?"BE":void 0}(e),l=function(e,t){for(var a,r,i,l={};e&&e.length&&(a=n(e,16,0,t),r=n(e,16,2,t),i=n(e,32,4,t),0!==a);)1!==i||3!==r&&4!==r||(l[a]=s(e,t)),e=o(e);return l}(function(e,t,a){var s=n(e,32,4,a),o=1024,l=i.statSync(t).size;s+o>l&&(o=l-s-10);var d=new r(o),u=i.openSync(t,"r");return i.readSync(u,d,0,o,s),d.slice(2)}(e,t,a),a),d=l[256],u=l[257];if(!d||!u)throw new TypeError("Invalid Tiff, missing tags");return{width:d,height:u}}}},6999:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Repeat","nl":"Herhalen","de":"Wiederholen","fr":"Répéter","it":"Ripeti","sv":"Upprepa","no":"Gjenta","es":"Repetir","da":"Gentag","ru":"Повторить","pl":"Powtórz","ko":"반복","ar":"تكرار"},"type":"enum","values":[{"id":"none","title":{"en":"Off","nl":"Uit","de":"Aus","fr":"Arrêt","it":"Spegni","sv":"Av","no":"Av","es":"Apagar","da":"Fra","ru":"выкл","pl":"wył","ko":"끔","ar":"إيقاف"}},{"id":"track","title":{"en":"Repeat Track","de":"Titel wiederholen","fr":"Répéter le titre","it":"Ripeti traccia","sv":"Upprepa spår","no":"Gjenta spor","es":"Repetir pista","da":"Gentag spor","ru":"Повторить трек","pl":"Powtórz utwór","ko":"트랙 반복","ar":"تكرار المسار","nl":"Nummer herhalen"}},{"id":"playlist","title":{"en":"Repeat Playlist","de":"Playlist wiederholen","fr":"Répéter la playlist","it":"Ripeti playlist","sv":"Upprepa spellista","no":"Gjenta spilleliste","es":"Repetir lista de reproducción","da":"Gentag afspilningsliste","ru":"Повторить плейлист","pl":"Powtórz składankę","ko":"재생목록 반복","ar":"تكرار قائمة التشغيل","nl":"Afspeellijst herhalen"}}],"color":"#9033FC","getable":true,"setable":true,"uiComponent":"media","$flow":{"actions":[{"id":"set_repeat","title":{"en":"Repeat","de":"Wiederholen","fr":"Répéter","it":"Ripeti","sv":"Upprepa","no":"Gjenta","es":"Repetir","da":"Gentag","ru":"Повторить","pl":"Powtórz","ko":"반복","ar":"تكرار","nl":"Herhalen"},"args":[{"name":"value","type":"dropdown","values":"$values"}]}]}}')},7008:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Light Alarm","nl":"Lichtalarm","da":"Lysalarm","it":"Allarme luce","ko":"빛 감지","no":"Lysalarm","pl":"Alarm światła","ru":"Сигнал освещения","sv":"Belysningslarm","es":"Alarma de luz","fr":"Alarme de lumière","ar":"إنذار الضوء","de":"Lichtalarm"},"titleShort":{"en":"Light","nl":"Licht","da":"Lys","it":"Luce","ko":"조명","no":"Lys","pl":"Światło","ru":"Освещение","sv":"Belysning","es":"Luz","fr":"Lumière","ar":"الضوء","de":"Licht"},"desc":{"en":"True when light is detected.","nl":"Wordt geactiveerd wanneer licht wordt gedetecteerd.","da":"Sandt, når der registreres lys.","it":"Vero quando viene rilevata la luce.","ko":"빛이 감지되면 참입니다.","no":"Sann når lys er registrert.","pl":"Prawda, gdy wykryte jest światło.","ru":"Значение «истина» при обнаружении элемента освещения.","sv":"Sant när ljus detekteras.","es":"Activado cuando se detecta luz.","fr":"Se déclenche lorsque de la lumière est détectée.","ar":"صحيح عند اكتشاف ضوء.","de":"Wahr, wenn Licht erkannt wird."},"insights":true,"insightsTitleTrue":{"en":"Light was detected","nl":"Er werd licht gedetecteerd","da":"Lys blev registreret","it":"La luce è stata rilevata","ko":"빛 감지됨","no":"Lys ble registrert","pl":"Światło było wykryte","ru":"Элемент освещения был обнаружен","sv":"Ljus detekterades","es":"Se ha detectado luz","fr":"De la lumière a été détectée","ar":"تم اكتشاف ضوء","de":"Licht wurde erkannt"},"insightsTitleFalse":{"en":"Light was no longer detected","nl":"Er werd geen licht meer gedetecteerd","da":"Lyset blev ikke længere registreret","it":"La luce non è più rilevata","ko":"빛 감지되지 않음","no":"Lys ble ikke lenger registrert","pl":"Światło nie było już wykryte","ru":"Элемент освещения больше не обнаруживался","sv":"Ljus detekterades inte längre","es":"No hay luz detectada","fr":"La lumière n\'est plus détectée","ar":"لم يعد يتم اكتشاف ضوء","de":"Licht wurde nicht mehr erkannt"},"getable":true,"setable":false,"color":"#F7B500","uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_light_true","highlight":true,"title":{"en":"Light is detected","nl":"Er wordt licht gedetecteerd","da":"Der er registreret lys","it":"Luce rilevata","ko":"빛이 감지되면","no":"Lys er registrert","pl":"Światło jest wykryte","ru":"Элемент освещения обнаружен","sv":"Ljus detekteras","es":"Se detecta luz","fr":"De la lumière est détectée","ar":"تم اكتشاف ضوء","de":"Licht wird erkannt"}},{"id":"alarm_light_false","title":{"en":"Light is no longer detected","nl":"Er wordt geen licht meer gedetecteerd","da":"Lyset registreres ikke længere","it":"La luce non è più rilevata","ko":"빛이 감지되지 않으면","no":"Lys registreres ikke lenger","pl":"Światło nie jest już wykryte","ru":"Элемент освещения больше не обнаруживается","sv":"Ljus detekteras inte längre","es":"Ya no se detecta luz","fr":"La lumière n\'est plus détectée","ar":"لم يعد يتم اكتشاف ضوء","de":"Licht wird nicht mehr erkannt"}}],"conditions":[{"id":"alarm_light","title":{"en":"Light !{{is|is not}} detected","nl":"Er !{{wordt|wordt geen}} licht gedetecteerd","da":"Lys !{{er|er ikke}} registreret","it":"La luce !{è|non è}} rilevata","ko":"빛이 감지!{{되면|되지 않으면}}","no":"Lys !{{er|er}} ikke registrert","pl":"Światło !{{jest|nie jest}} wykryte","ru":"Элемент освещения !{{обнаружен|не обнаружен}}","sv":"Ljus !{{har|har inte}} detekterats","es":"!{{Se detecta|No se detecta}} luz","fr":"Lumière !{{détectée|non détectée}}","ar":"!{{تم|لم يتم}} اكتشاف ضوء","de":"Licht !{{wird|wird nicht}} erkannt"}}]},"minCompatibility":"12.2.0"}')},7021:(e,t,a)=>{var r;!function(i){var n=/^\s+/,s=/\s+$/,o=0,l=i.round,d=i.min,u=i.max,m=i.random;function p(e,t){if(t=t||{},(e=e||"")instanceof p)return e;if(!(this instanceof p))return new p(e,t);var a=function(e){var t,a,r,o={r:0,g:0,b:0},l=1,m=null,p=null,c=null,g=!1,h=!1;return"string"==typeof e&&(e=function(e){e=e.replace(n,"").replace(s,"").toLowerCase();var t,a=!1;if(O[e])e=O[e],a=!0;else if("transparent"==e)return{r:0,g:0,b:0,a:0,format:"name"};return(t=R.rgb.exec(e))?{r:t[1],g:t[2],b:t[3]}:(t=R.rgba.exec(e))?{r:t[1],g:t[2],b:t[3],a:t[4]}:(t=R.hsl.exec(e))?{h:t[1],s:t[2],l:t[3]}:(t=R.hsla.exec(e))?{h:t[1],s:t[2],l:t[3],a:t[4]}:(t=R.hsv.exec(e))?{h:t[1],s:t[2],v:t[3]}:(t=R.hsva.exec(e))?{h:t[1],s:t[2],v:t[3],a:t[4]}:(t=R.hex8.exec(e))?{r:x(t[1]),g:x(t[2]),b:x(t[3]),a:N(t[4]),format:a?"name":"hex8"}:(t=R.hex6.exec(e))?{r:x(t[1]),g:x(t[2]),b:x(t[3]),format:a?"name":"hex"}:(t=R.hex4.exec(e))?{r:x(t[1]+""+t[1]),g:x(t[2]+""+t[2]),b:x(t[3]+""+t[3]),a:N(t[4]+""+t[4]),format:a?"name":"hex8"}:!!(t=R.hex3.exec(e))&&{r:x(t[1]+""+t[1]),g:x(t[2]+""+t[2]),b:x(t[3]+""+t[3]),format:a?"name":"hex"}}(e)),"object"==typeof e&&(U(e.r)&&U(e.g)&&U(e.b)?(t=e.r,a=e.g,r=e.b,o={r:255*D(t,255),g:255*D(a,255),b:255*D(r,255)},g=!0,h="%"===String(e.r).substr(-1)?"prgb":"rgb"):U(e.h)&&U(e.s)&&U(e.v)?(m=F(e.s),p=F(e.v),o=function(e,t,a){e=6*D(e,360),t=D(t,100),a=D(a,100);var r=i.floor(e),n=e-r,s=a*(1-t),o=a*(1-n*t),l=a*(1-(1-n)*t),d=r%6;return{r:255*[a,o,s,s,l,a][d],g:255*[l,a,a,o,s,s][d],b:255*[s,s,l,a,a,o][d]}}(e.h,m,p),g=!0,h="hsv"):U(e.h)&&U(e.s)&&U(e.l)&&(m=F(e.s),c=F(e.l),o=function(e,t,a){var r,i,n;function s(e,t,a){return a<0&&(a+=1),a>1&&(a-=1),a<1/6?e+6*(t-e)*a:a<.5?t:a<2/3?e+(t-e)*(2/3-a)*6:e}if(e=D(e,360),t=D(t,100),a=D(a,100),0===t)r=i=n=a;else{var o=a<.5?a*(1+t):a+t-a*t,l=2*a-o;r=s(l,o,e+1/3),i=s(l,o,e),n=s(l,o,e-1/3)}return{r:255*r,g:255*i,b:255*n}}(e.h,m,c),g=!0,h="hsl"),e.hasOwnProperty("a")&&(l=e.a)),l=T(l),{ok:g,format:e.format||h,r:d(255,u(o.r,0)),g:d(255,u(o.g,0)),b:d(255,u(o.b,0)),a:l}}(e);this._originalInput=e,this._r=a.r,this._g=a.g,this._b=a.b,this._a=a.a,this._roundA=l(100*this._a)/100,this._format=t.format||a.format,this._gradientType=t.gradientType,this._r<1&&(this._r=l(this._r)),this._g<1&&(this._g=l(this._g)),this._b<1&&(this._b=l(this._b)),this._ok=a.ok,this._tc_id=o++}function c(e,t,a){e=D(e,255),t=D(t,255),a=D(a,255);var r,i,n=u(e,t,a),s=d(e,t,a),o=(n+s)/2;if(n==s)r=i=0;else{var l=n-s;switch(i=o>.5?l/(2-n-s):l/(n+s),n){case e:r=(t-a)/l+(t>1)+720)%360;--t;)r.h=(r.h+i)%360,n.push(p(r));return n}function C(e,t){t=t||6;for(var a=p(e).toHsv(),r=a.h,i=a.s,n=a.v,s=[],o=1/t;t--;)s.push(p({h:r,s:i,v:n})),n=(n+o)%1;return s}p.prototype={isDark:function(){return this.getBrightness()<128},isLight:function(){return!this.isDark()},isValid:function(){return this._ok},getOriginalInput:function(){return this._originalInput},getFormat:function(){return this._format},getAlpha:function(){return this._a},getBrightness:function(){var e=this.toRgb();return(299*e.r+587*e.g+114*e.b)/1e3},getLuminance:function(){var e,t,a,r=this.toRgb();return e=r.r/255,t=r.g/255,a=r.b/255,.2126*(e<=.03928?e/12.92:i.pow((e+.055)/1.055,2.4))+.7152*(t<=.03928?t/12.92:i.pow((t+.055)/1.055,2.4))+.0722*(a<=.03928?a/12.92:i.pow((a+.055)/1.055,2.4))},setAlpha:function(e){return this._a=T(e),this._roundA=l(100*this._a)/100,this},toHsv:function(){var e=g(this._r,this._g,this._b);return{h:360*e.h,s:e.s,v:e.v,a:this._a}},toHsvString:function(){var e=g(this._r,this._g,this._b),t=l(360*e.h),a=l(100*e.s),r=l(100*e.v);return 1==this._a?"hsv("+t+", "+a+"%, "+r+"%)":"hsva("+t+", "+a+"%, "+r+"%, "+this._roundA+")"},toHsl:function(){var e=c(this._r,this._g,this._b);return{h:360*e.h,s:e.s,l:e.l,a:this._a}},toHslString:function(){var e=c(this._r,this._g,this._b),t=l(360*e.h),a=l(100*e.s),r=l(100*e.l);return 1==this._a?"hsl("+t+", "+a+"%, "+r+"%)":"hsla("+t+", "+a+"%, "+r+"%, "+this._roundA+")"},toHex:function(e){return h(this._r,this._g,this._b,e)},toHexString:function(e){return"#"+this.toHex(e)},toHex8:function(e){return function(e,t,a,r,i){var n=[$(l(e).toString(16)),$(l(t).toString(16)),$(l(a).toString(16)),$(I(r))];return i&&n[0].charAt(0)==n[0].charAt(1)&&n[1].charAt(0)==n[1].charAt(1)&&n[2].charAt(0)==n[2].charAt(1)&&n[3].charAt(0)==n[3].charAt(1)?n[0].charAt(0)+n[1].charAt(0)+n[2].charAt(0)+n[3].charAt(0):n.join("")}(this._r,this._g,this._b,this._a,e)},toHex8String:function(e){return"#"+this.toHex8(e)},toRgb:function(){return{r:l(this._r),g:l(this._g),b:l(this._b),a:this._a}},toRgbString:function(){return 1==this._a?"rgb("+l(this._r)+", "+l(this._g)+", "+l(this._b)+")":"rgba("+l(this._r)+", "+l(this._g)+", "+l(this._b)+", "+this._roundA+")"},toPercentageRgb:function(){return{r:l(100*D(this._r,255))+"%",g:l(100*D(this._g,255))+"%",b:l(100*D(this._b,255))+"%",a:this._a}},toPercentageRgbString:function(){return 1==this._a?"rgb("+l(100*D(this._r,255))+"%, "+l(100*D(this._g,255))+"%, "+l(100*D(this._b,255))+"%)":"rgba("+l(100*D(this._r,255))+"%, "+l(100*D(this._g,255))+"%, "+l(100*D(this._b,255))+"%, "+this._roundA+")"},toName:function(){return 0===this._a?"transparent":!(this._a<1)&&(L[h(this._r,this._g,this._b,!0)]||!1)},toFilter:function(e){var t="#"+v(this._r,this._g,this._b,this._a),a=t,r=this._gradientType?"GradientType = 1, ":"";if(e){var i=p(e);a="#"+v(i._r,i._g,i._b,i._a)}return"progid:DXImageTransform.Microsoft.gradient("+r+"startColorstr="+t+",endColorstr="+a+")"},toString:function(e){var t=!!e;e=e||this._format;var a=!1,r=this._a<1&&this._a>=0;return t||!r||"hex"!==e&&"hex6"!==e&&"hex3"!==e&&"hex4"!==e&&"hex8"!==e&&"name"!==e?("rgb"===e&&(a=this.toRgbString()),"prgb"===e&&(a=this.toPercentageRgbString()),"hex"!==e&&"hex6"!==e||(a=this.toHexString()),"hex3"===e&&(a=this.toHexString(!0)),"hex4"===e&&(a=this.toHex8String(!0)),"hex8"===e&&(a=this.toHex8String()),"name"===e&&(a=this.toName()),"hsl"===e&&(a=this.toHslString()),"hsv"===e&&(a=this.toHsvString()),a||this.toHexString()):"name"===e&&0===this._a?this.toName():this.toRgbString()},clone:function(){return p(this.toString())},_applyModification:function(e,t){var a=e.apply(null,[this].concat([].slice.call(t)));return this._r=a._r,this._g=a._g,this._b=a._b,this.setAlpha(a._a),this},lighten:function(){return this._applyModification(b,arguments)},brighten:function(){return this._applyModification(w,arguments)},darken:function(){return this._applyModification(z,arguments)},desaturate:function(){return this._applyModification(f,arguments)},saturate:function(){return this._applyModification(k,arguments)},greyscale:function(){return this._applyModification(y,arguments)},spin:function(){return this._applyModification(P,arguments)},_applyCombination:function(e,t){return e.apply(null,[this].concat([].slice.call(t)))},analogous:function(){return this._applyCombination(j,arguments)},complement:function(){return this._applyCombination(_,arguments)},monochromatic:function(){return this._applyCombination(C,arguments)},splitcomplement:function(){return this._applyCombination(E,arguments)},triad:function(){return this._applyCombination(S,arguments)},tetrad:function(){return this._applyCombination(A,arguments)}},p.fromRatio=function(e,t){if("object"==typeof e){var a={};for(var r in e)e.hasOwnProperty(r)&&(a[r]="a"===r?e[r]:F(e[r]));e=a}return p(e,t)},p.equals=function(e,t){return!(!e||!t)&&p(e).toRgbString()==p(t).toRgbString()},p.random=function(){return p.fromRatio({r:m(),g:m(),b:m()})},p.mix=function(e,t,a){a=0===a?0:a||50;var r=p(e).toRgb(),i=p(t).toRgb(),n=a/100;return p({r:(i.r-r.r)*n+r.r,g:(i.g-r.g)*n+r.g,b:(i.b-r.b)*n+r.b,a:(i.a-r.a)*n+r.a})},p.readability=function(e,t){var a=p(e),r=p(t);return(i.max(a.getLuminance(),r.getLuminance())+.05)/(i.min(a.getLuminance(),r.getLuminance())+.05)},p.isReadable=function(e,t,a){var r,i,n,s,o,l=p.readability(e,t);switch(i=!1,(n=a,"AA"!==(s=((n=n||{level:"AA",size:"small"}).level||"AA").toUpperCase())&&"AAA"!==s&&(s="AA"),"small"!==(o=(n.size||"small").toLowerCase())&&"large"!==o&&(o="small"),r={level:s,size:o}).level+r.size){case"AAsmall":case"AAAlarge":i=l>=4.5;break;case"AAlarge":i=l>=3;break;case"AAAsmall":i=l>=7}return i},p.mostReadable=function(e,t,a){var r,i,n,s,o=null,l=0;i=(a=a||{}).includeFallbackColors,n=a.level,s=a.size;for(var d=0;dl&&(l=r,o=p(t[d]));return p.isReadable(e,o,{level:n,size:s})||!i?o:(a.includeFallbackColors=!1,p.mostReadable(e,["#fff","#000"],a))};var O=p.names={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"0ff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000",blanchedalmond:"ffebcd",blue:"00f",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",burntsienna:"ea7e5d",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"0ff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkgrey:"a9a9a9",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkslategrey:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dimgrey:"696969",dodgerblue:"1e90ff",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"f0f",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",grey:"808080",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgray:"d3d3d3",lightgreen:"90ee90",lightgrey:"d3d3d3",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslategray:"789",lightslategrey:"789",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"0f0",limegreen:"32cd32",linen:"faf0e6",magenta:"f0f",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370db",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"db7093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",rebeccapurple:"663399",red:"f00",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",slategrey:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",wheat:"f5deb3",white:"fff",whitesmoke:"f5f5f5",yellow:"ff0",yellowgreen:"9acd32"},L=p.hexNames=function(e){var t={};for(var a in e)e.hasOwnProperty(a)&&(t[e[a]]=a);return t}(O);function T(e){return e=parseFloat(e),(isNaN(e)||e<0||e>1)&&(e=1),e}function D(e,t){(function(e){return"string"==typeof e&&-1!=e.indexOf(".")&&1===parseFloat(e)})(e)&&(e="100%");var a=function(e){return"string"==typeof e&&-1!=e.indexOf("%")}(e);return e=d(t,u(0,parseFloat(e))),a&&(e=parseInt(e*t,10)/100),i.abs(e-t)<1e-6?1:e%t/parseFloat(t)}function M(e){return d(1,u(0,e))}function x(e){return parseInt(e,16)}function $(e){return 1==e.length?"0"+e:""+e}function F(e){return e<=1&&(e=100*e+"%"),e}function I(e){return i.round(255*parseFloat(e)).toString(16)}function N(e){return x(e)/255}var B,H,V,R=(H="[\\s|\\(]+("+(B="(?:[-\\+]?\\d*\\.\\d+%?)|(?:[-\\+]?\\d+%?)")+")[,|\\s]+("+B+")[,|\\s]+("+B+")\\s*\\)?",V="[\\s|\\(]+("+B+")[,|\\s]+("+B+")[,|\\s]+("+B+")[,|\\s]+("+B+")\\s*\\)?",{CSS_UNIT:new RegExp(B),rgb:new RegExp("rgb"+H),rgba:new RegExp("rgba"+V),hsl:new RegExp("hsl"+H),hsla:new RegExp("hsla"+V),hsv:new RegExp("hsv"+H),hsva:new RegExp("hsva"+V),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/});function U(e){return!!R.CSS_UNIT.exec(e)}e.exports?e.exports=p:void 0===(r=function(){return p}.call(t,a,t,e))||(e.exports=r)}(Math)},7067:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Artist","nl":"Artiest","de":"Künstler","fr":"Artiste","it":"Artista","sv":"Artist","no":"Artist","es":"Artista","da":"Kunstner","ru":"Исполнитель","pl":"Wykonawca","ko":"아티스트","ar":"الفنان"},"type":"string","color":"#9033FC","getable":true,"setable":false,"uiComponent":"media","$flow":{"triggers":[{"id":"speaker_artist_changed","title":{"en":"The artist changed","nl":"De artiest is veranderd","de":"Der Künstler hat sich verändert","fr":"L\'artiste a été modifié","it":"L\'artista è cambiato","sv":"Artisten ändrades","no":"Artisten ble endret","es":"El artista ha cambiado","da":"Kunstneren skiftede","ru":"Исполнитель изменен","pl":"Zmiana wykonawcy","ko":"아티스트가 변경되면","ar":"تغير الفنان"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":"Johnny S."}]}]}}')},7073:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Formaldehyde Level","nl":"Formaldehydeniveau","da":"Formaldehydniveau","it":"Livello di formaldeide","ko":"포름알데히드 수준","pl":"Poziom formaldehydu","ru":"Уровень формальдегида","sv":"Formaldehydnivå","es":"Nivel de formaldehído","fr":"Niveau de formaldéhyde","no":"Formaldehydnivå","ar":"مستوى الفورمالديهيد","de":"Formaldehydgehalt"},"desc":{"en":"The level of formaldehyde in the air.","nl":"De mate van formaldehyde in de lucht.","da":"Niveauet af formaldehyd i luften.","it":"Il livello di formaldeide nell\'aria.","ko":"공기 중 포름알데히드의 수준입니다.","pl":"Poziom formaldehydu w powietrzu.","ru":"Уровень содержания формальдегида в воздухе.","sv":"Halten av formaldehyd i luften.","es":"El nivel de formaldehído en el aire.","fr":"Le niveau de formaldéhyde dans l\'air.","no":"Nivået av formaldehyd i luften.","ar":"مستوى الفورمالديهيد في الهواء.","de":"Der Formaldehydgehalt in der Luft."},"values":[{"id":"low","title":{"en":"Low","nl":"Laag","da":"Lavt","it":"Basso","ko":"낮음","pl":"Niski","ru":"Низкий","sv":"Låg","es":"Bajo","fr":"Faible","no":"Lavt","ar":"منخفض","de":"Niedrig"}},{"id":"medium","title":{"en":"Medium","nl":"Gemiddeld","da":"Medium","it":"Medio","ko":"보통","pl":"Średni","ru":"Средний","sv":"Medium","es":"Intermedio","fr":"Moyen","no":"Middels","ar":"متوسط","de":"Mittel"}},{"id":"high","title":{"en":"High","nl":"Hoog","da":"Højt","it":"Alto","ko":"높음","pl":"Wysoki","ru":"Высокий","sv":"Hög","es":"Alto","fr":"Élevé","no":"Høyt","ar":"عالي","de":"Hoch"}},{"id":"critical","title":{"en":"Critical","nl":"Kritiek","da":"Kritisk","it":"Critico","ko":"위험","pl":"Krytyczny","ru":"Критический","sv":"Kritisk","es":"Crítico","fr":"Critique","no":"Kritisk","ar":"حرج","de":"Kritisch"}}],"color":"#8B0000","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"level_ch2o_changed","highlight":true,"title":{"en":"The formaldehyde level changed to","nl":"Het formaldehydeniveau is veranderd naar","da":"Formaldehydniveauet blev ændret til","it":"Il livello di formaldeide è passato a","ko":"포름알데히드 수준이 다음으로 변경되면","pl":"Poziom formaldehydu zmienił się na","ru":"Уровень формальдегида изменился на","sv":"Formaldehydnivån ändrades till","es":"El nivel de formaldehído ha cambiado a","fr":"Le niveau de formaldéhyde est passé à","no":"Formaldehydnivået ble endret til","ar":"تم تغيير مستوى الفورمالديهيد إلى","de":"Der Formaldehydgehalt hat sich geändert auf"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"level_ch2o_is","title":{"en":"The formaldehyde level !{{is|is not}}","nl":"Het formaldehydeniveau !{{is|is niet}}","da":"Niveauet af formaldehyd !{{er|er ikke}}","it":"Il livello di formaldeide !{{è|non è}}","ko":"포름알데히드 수준이 다음!{{이면|이 아니면}}","pl":"Poziom formaldehydu !{{jest|nie jest}}","ru":"Уровень формальдегида !{{|не}}","sv":"Nivån av formaldehyd !{{är|är inte}}","es":"El nivel de formaldehído !{{es|no es}}","fr":"Le taux de formaldéhyde !{{est|n\'est pas}}","no":"Formaldehydnivået !{{er|er ikke}}","ar":"مستوى الفورمالديهيد !{{هو|ليس}}","de":"Der Formaldehydgehalt !{{ist|ist nicht}}"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.2.0"}')},7099:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Running Alarm","nl":"Werkzaamheidsalarm","da":"Løbende alarm","it":"Allarme in esecuzione","ko":"작동 감지","no":"Kjøringsalarm","pl":"Alarm pracy urządzenia","ru":"Сигнал о процессе","sv":"Larm körs","es":"Alarma de funcionamiento","fr":"Alarme de fonctionnement","ar":"إنذار التشغيل","de":"Laufender Alarm"},"titleShort":{"en":"Running","nl":"Actief","da":"I gang","it":"In esecuzione","ko":"작동 중","no":"Kjøring","pl":"Praca urządzenia","ru":"Выполняется","sv":"Körs","es":"Funcionamiento","fr":"En marche","ar":"قيد التشغيل","de":"Läuft"},"desc":{"en":"True when the device is busy (e.g., printer is printing).","nl":"Waar wanneer het apparaat bezig is (bijv. printer is aan het printen).","da":"Sandt, når enheden er optaget (f.eks. printeren er i gang med at udskrive).","it":"Vero quando il dispositivo è occupato (ad esempio, la stampante sta stampando).","ko":"디바이스가 바쁜 상태(예: 프린터가 인쇄 중)면 참입니다.","pl":"Prawda, gdy urządzenie jest zajęte (np. drukarka drukuje).","ru":"Значение «истина», когда устройство занято (например, принтер печатает документ).","sv":"Sant när enheten är upptagen (t.ex. skrivaren skriver ut).","es":"Activado cuando el dispositivo está en funcionamiento (por ejemplo, la impresora está imprimiendo).","fr":"Se déclenche lorsque l\'appareil est utilisé (par exemple, l\'imprimante est en train d\'imprimer).","no":"Sann når enheten er i bruk (f.eks. en skriver som skriver ut noe).","ar":"صحيح عندما يكون الجهاز مشغولًا (مثل، قيام الطابعة بالطباعة).","de":"Wahr, wenn das Gerät arbeitet (z. B. wenn der Drucker druckt)."},"insights":true,"insightsTitleTrue":{"en":"Running alarm turned on","nl":"Werkzaamheidsalarm ging aan","da":"Løbende alarm slået til","it":"Allarme elaborazione in corso acceso","ko":"작동 감지됨","pl":"Alarm pracy urządzenia włączony","ru":"Сигнал о процессе включен","sv":"Körlarm aktiverat","es":"Alarma de funcionamiento activada","fr":"Alarme de fonctionnement activée","no":"Kjøringsalarm aktivert","ar":"تم تشغيل إنذار التشغيل","de":"Laufender Alarm eingeschaltet"},"insightsTitleFalse":{"en":"Running alarm turned off","nl":"Werkzaamheidsalarm ging uit","da":"Løbende alarm slået fra","it":"Allarme elaborazione in corso spento","ko":"작동 안 함","pl":"Alarm pracy urządzenia wyłączony","ru":"Сигнал о процессе выключен","sv":"Körlarm inaktiverat","es":"Alarma de funcionamiento desactivada","fr":"Alarme de fonctionnement désactivée","no":"Kjøringsalarm deaktivert","ar":"تم إيقاف إنذار التشغيل","de":"Laufender Alarm ausgeschaltet"},"color":"#32C5FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_running_true","highlight":true,"title":{"en":"The running alarm turned on","nl":"Het werkzaamheidsalarm gaat aan","da":"Den løbende alarm er slået til","it":"L\'allarme di elaborazione in corso si è acceso","ko":"작동 중이면","pl":"Włączył się alarm pracy urządzenia","ru":"Сигнал о процессе включен","sv":"Körlarmet aktiverat","es":"La alarma de funcionamiento se ha activado","fr":"L\'alarme de fonctionnement s\'est activée","no":"Kjøringsalarmen ble aktivert","ar":"تم تشغيل إنذار التشغيل","de":"Der Laufende Alarm wurde eingeschaltet"}},{"id":"alarm_running_false","title":{"en":"The running alarm turned off","nl":"Het werkzaamheidsalarm gaat uit","da":"Den løbende alarm er slået fra","it":"L\'allarme di elaborazione in corso si è spento","ko":"작동하지 않으면","pl":"Alarm pracy urządzenia wyłączony","ru":"Сигнал о процессе выключен","sv":"Körlarmet inaktiverat","es":"La alarma de funcionamiento se ha desactivado","fr":"L\'alarme de fonctionnement s\'est désactivée","no":"Kjøringsalarmen ble deaktivert","ar":"تم إيقاف إنذار التشغيل","de":"Der laufende Alarm wurde ausgeschaltet"}}],"conditions":[{"id":"alarm_running","title":{"en":"Is !{{busy|not busy}}","nl":"Is !{{bezig|niet bezig}}","da":"Er !{{optaget|ikke optaget}}","it":"È !{{occupato|non occupato}}","ko":"!{{작동 중이면|작동하지 않으면}}","pl":"!{{Jest zajęte|Nie jest zajęte}}","ru":"Устройство !{{занято|не занято}}","sv":"Är !{{upptaget|inte upptaget}}","es":"!{{Está en funcionamiento|No está en funcionamiento}}","fr":"Est !{{connectée|déconnectée}}","no":"Er !{{i bruk|ikke i bruk}}","ar":"!{{مشغول|غير مشغول}}","de":"!{{Arbeitet|Arbeitet nicht}}"}}]},"minCompatibility":"12.2.0"}')},7101:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Camera","nl":"Camera","de":"Kamera","fr":"Caméra","it":"Telecamera","sv":"Kamera","no":"Kamera","es":"Cámara","da":"Kamera","ru":"Камера","pl":"Kamera","ko":"카메라","ar":"كاميرا"},"description":{"en":"Security camera","nl":"Beveiligingscamera","de":"Überwachungskamera","fr":"Caméra de sécurité","it":"Telecamera di sicurezza","sv":"Säkerhetskamera","no":"Sikkerhetskamera","es":"Cámara de seguridad","da":"Overvågningskamera","ru":"Камера наблюдения","pl":"Kamera bezpieczeństwa","ko":"보안 카메라","ar":"كاميرا أمنية"}}')},7106:e=>{"use strict";var t=e.exports=function(e,t,r){"function"==typeof t&&(r=t,t={}),a(t,"function"==typeof(r=t.cb||r)?r:r.pre||function(){},r.post||function(){},e,"",e)};function a(e,r,i,n,s,o,l,d,u,m){if(n&&"object"==typeof n&&!Array.isArray(n)){for(var p in r(n,s,o,l,d,u,m),n){var c=n[p];if(Array.isArray(c)){if(p in t.arrayKeywords)for(var g=0;g{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"PM10 Alarm","nl":"PM10-waarschuwing","de":"PM10-Alarm","fr":"Alarme PM10","it":"Allarme PM10","sv":"PM10-larm","no":"PM10-alarm","es":"Alarma de PM10","da":"PM10-alarm","ru":"Сигнал ТЧ10","pl":"Alarm PM10","ko":"미세먼지(PM10) 알람","ar":"إنذار PM10"},"titleShort":{"en":"PM10","nl":"PM10","de":"PM10","fr":"PM10","it":"PM10","sv":"PM10","no":"PM10","es":"PM10","da":"PM10","ru":"ТЧ10","pl":"PM10","ko":"PM10","ar":"PM10"},"desc":{"en":"True when PM10 values exceeds threshold","nl":"Wordt geactiveerd wanneer PM10-waarden de drempel overschrijden","de":"True, wenn PM10-Werte die Schwelle überschreiten","fr":"Se déclenche lorsque les valeurs PM10 excèdent un seuil","it":"Vero quando i valori PM10 superano la soglia","sv":"Sant när PM10-värdena överstiger gränsvärdet","no":"Sann når PM10-verdiene overskrider grenseverdien","es":"Activado cuando los valores de PM10 superan el límite","da":"Sandt, når PM10-værdier overskrider grænseværdien","ru":"Значение «истина» при превышении контрольного значения ТЧ10","pl":"Prawda, gdy wartości PM10 przekraczają próg","ko":"PM10 값이 임계값을 초과하면 참","ar":"صحيح عندما تتجاوز قيم PM10 الحد"},"insights":true,"insightsTitleTrue":{"en":"PM10 alarm turned on","nl":"PM10-waarschuwing geactiveerd","de":"PM10-Alarm ist angegangen","fr":"Alarme PM10 activée","it":"Allarme PM10 acceso","sv":"PM10-larm aktiverat","no":"PM10-alarm aktivert","es":"Alarma de PM10 activada","da":"PM10-alarm blev aktiveret","ru":"Сигнал ТЧ10 включен","pl":"Alarm PM10 włączony","ko":"미세먼지(PM10) 알람 켜짐","ar":"تم تشغيل إنذار PM10"},"insightsTitleFalse":{"en":"PM10 alarm turned off","nl":"PM10-waarschuwing gedeactiveerd","de":"PM10-Alarm ist ausgegangen","fr":"Alarme PM10 désactivée","it":"Allarme PM10 spento","sv":"PM10-larm inaktiverat","no":"PM10-alarm deaktivert","es":"Alarma de PM10 desactivada","da":"PM10-alarm blev deaktiveret","ru":"Сигнал ТЧ10 выключен","pl":"Alarm PM10 wyłączony","ko":"미세먼지(PM10) 알람 꺼짐","ar":"تم إيقاف إنذار PM10"},"color":"#E02020","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_pm10_true","highlight":true,"title":{"en":"The PM10 alarm turned on","nl":"De PM10-waarschuwing is geactiveerd","de":"Der PM10-Alarm ist angegangen","fr":"L\'alarme PM10 s\'est activée","it":"L\'allarme PM10 si è acceso","sv":"PM10-larmet aktiverat","no":"PM10-alarmen ble aktivert","es":"La alarma de PM10 se ha activado","da":"PM10-alarmen blev aktiveret","ru":"Сигнал ТЧ10 включен","pl":"Włączył się alarm PM10","ko":"미세먼지(PM10) 알람이 \'예\'이면","ar":"تم تشغيل إنذار PM10"}},{"id":"alarm_pm10_false","title":{"en":"The PM10 alarm turned off","nl":"De PM10-waarschuwing is gedeactiveerd","de":"Der PM10-Alarm ist ausgegangen","fr":"L\'alarme PM10 s\'est désactivée","it":"L\'allarme PM10 si è spento","sv":"PM10-larmet inaktiverat","no":"PM10-alarmen ble deaktivert","es":"La alarma de PM10 se ha desactivado","da":"PM10-alarmen blev deaktiveret","ru":"Сигнал ТЧ10 выключен","pl":"Wyłączył się alarm PM10","ko":"미세먼지(PM10) 알람이 \'아니요\'이면","ar":"تم إيقاف إنذار PM10"}}],"conditions":[{"id":"alarm_pm10","title":{"en":"The PM10 alarm is !{{on|off}}","nl":"De PM10-waarschuwing is !{{geactiveerd|gedeactiveerd}}","de":"Der PM10-Alarm ist !{{an|aus}}","fr":"L\'alarme PM10 est !{{activée|désactivée}}","it":"L\'allarme PM10 è !{{acceso|spento}}","sv":"PM10-larmet är !{{på|av}}","no":"PM10-alarmen er !{{på|av}}","es":"La alarma de PM10 está !{{activada|desactivada}}","da":"PM10-alarmen er !{{tændt|slukket}}","ru":"Сигнал ТЧ10 !{{включен|выключен}}","pl":"Alarm PM10 jest !{{włączony|wyłączony}}","ko":"미세먼지(PM10) 알람이 !{{\'예\'|\'아니요\'}}이면","ar":"إنذار PM10 !{{يعمل|لا يعمل}}"}}]},"minCompatibility":"12.2.0"}')},7122:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Moisture Alarm","nl":"Vochtwaarschuwing","da":"Fugtalarm","it":"Allarme umidità","ko":"습기 감지","no":"Fuktalarm","pl":"Alarm wilgoci","ru":"Сигнал влаги","sv":"Fuktlarm","es":"Alarma de humedad","fr":"Alarme d\'humidité","ar":"إنذار الرطوبة","de":"Feuchtigkeitsalarm"},"titleShort":{"en":"Moisture","nl":"Vocht","da":"Fugt","it":"Umidità","ko":"습도","no":"Fukt","pl":"Wilgoć","ru":"Влага","sv":"Fukt","es":"Humedad","fr":"Humidité","ar":"الرطوبة","de":"Feuchtigkeit"},"desc":{"en":"True when moisture is detected.","nl":"Wordt geactiveerd wanneer vocht wordt gedetecteerd.","da":"Sandt, når der registreres fugt.","it":"Vero quando viene rilevata umidità.","ko":"습기가 감지되면 참입니다.","no":"Sann når fuktighet er oppdaget.","pl":"Prawda, gdy wykryta jest wilgoć.","ru":"Значение «истина» при обнаружении влаги.","sv":"Sant när fukt detekteras.","es":"Activado cuando se detecta humedad.","fr":"Se déclenche lorsque de l\'humidité est détectée.","ar":"صحيح عند اكتشاف رطوبة.","de":"Wahr, wenn Feuchtigkeit erkannt wird."},"insights":true,"insightsTitleTrue":{"en":"Moisture Alarm turned on","nl":"Vochtwaarschuwing geactiveerd","da":"Fugtalarm slået til","it":"Allarme umidità acceso","ko":"습기 감지됨","no":"Fuktalarm aktivert","pl":"Alarm wilgoci włączony","ru":"Сигнал влаги включен","sv":"Fuktlarm aktiverat","es":"Alarma de humedad activada","fr":"Alarme d\'humidité activée","ar":"تم تشغيل إنذار الرطوبة","de":"Feuchtigkeitsalarm eingeschaltet"},"insightsTitleFalse":{"en":"Moisture Alarm turned off","nl":"Vochtwaarschuwing gedeactiveerd","da":"Fugtalarm slået fra","it":"Allarme umidità spento","ko":"습기 감지되지 않음","no":"Fuktalarm deaktivert","pl":"Alarm wilgoci wyłączony","ru":"Сигнал влаги выключен","sv":"Fuktlarmet inaktiverat","es":"Alarma de humedad desactivada","fr":"Alarme d\'humidité désactivée","ar":"تم إيقاف إنذار الرطوبة","de":"Feuchtigkeitsalarm ausgeschaltet"},"color":"#0091FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_moisture_true","highlight":true,"title":{"en":"The moisture alarm turned on","nl":"De vochtwaarschuwing is geactiveerd","da":"Fugtalarmen er slået til","it":"L\'allarme umidità si è acceso","ko":"습기가 감지되면","no":"Fuktalarmen ble aktivert","pl":"Włączył się alarm wilgoci","ru":"Сигнал влаги включен","sv":"Fuktlarmet är aktiverat","es":"La alarma de humedad se ha activado","fr":"L\'alarme d\'humidité s\'est activée","ar":"تم تشغيل إنذار الرطوبة","de":"Der Feuchtigkeitsalarm hat sich eingeschaltet"}},{"id":"alarm_moisture_false","title":{"en":"The moisture alarm turned off","nl":"De vochtwaarschuwing is gedeactiveerd","da":"Fugtalarmen er slået fra","it":"L\'allarme umidità si è spento","ko":"습기가 감지되지 않으면","no":"Fuktalarmen ble deaktivert","pl":"Wyłączył się alarm wilgoci","ru":"Сигнал влаги выключен","sv":"Fuktlarmet inaktiverat","es":"La alarma de humedad se ha desactivado","fr":"L\'alarme d\'humidité s\'est désactivée","ar":"تم إيقاف إنذار الرطوبة","de":"Der Feuchtigkeitsalarm hat sich ausgeschaltet"}}],"conditions":[{"id":"alarm_moisture","title":{"en":"The moisture alarm is !{{on|off}}","nl":"De vochtwaarschuwing is !{{geactiveerd|gedeactiveerd}}","da":"Fugtalarmen er slået !{{til|fra}}","it":"L\'allarme umidità è !{{acceso|spento}}","ko":"습기가 감지!{{되면|되지 않으면}}","no":"Fuktalarmen er !{{på|av}}","pl":"Alarm wilgoci jest !{{włączony|wyłączony}}","ru":"Сигнал влаги !{{включен|выключен}}","sv":"Fuktlarmet är aktiverat !{{på|av}}","es":"La alarma de humedad está !{{activada|desactivada}}","fr":"L\'alarme d\'humidité est !{{activée|désactivée}}","ar":"إنذار الرطوبة !{{يعمل|لا يعمل}}","de":"Der Feuchtigkeitsalarm ist !{{an|aus}}"}}]},"minCompatibility":"12.2.0"}')},7177:()=>{},7181:e=>{"use strict";e.exports={detect:function(e){return"8BPS"===e.toString("ascii",0,4)},calculate:function(e){return{width:e.readUInt32BE(18),height:e.readUInt32BE(14)}}}},7224:e=>{"use strict";e.exports=JSON.parse('{"title":"Capability","type":"object","definitions":{"i18nObject":{"oneOf":[{"type":"string","minLength":1},{"type":"object","required":["en"],"patternProperties":{"^.*$":{"type":"string"}},"additionalProperties":false}]}},"required":["title","type"],"anyOf":[{"required":["getable"]},{"required":["setable"]}],"properties":{"title":{"$ref":"#/definitions/i18nObject"},"titleShort":{"$ref":"#/definitions/i18nObject"},"desc":{"$ref":"#/definitions/i18nObject"},"type":{"type":"string","enum":["boolean","number","string","enum"]},"getable":{"type":"boolean","default":true},"setable":{"type":"boolean","default":true},"icon":{"type":"string"},"insights":{"type":"boolean"},"insightsTitleTrue":{"$ref":"#/definitions/i18nObject"},"insightsTitleFalse":{"$ref":"#/definitions/i18nObject"},"chartType":{"type":"string","enum":["line","area","stepLine","column","spline","splineArea","scatter"]},"decimals":{"type":"number"},"min":{"type":"number"},"max":{"type":"number"},"step":{"type":"number","minimum":0},"units":{"$ref":"#/definitions/i18nObject"},"values":{"type":"array","items":{"type":"object","required":["id","title"],"properties":{"id":{"type":"string"},"title":{"$ref":"#/definitions/i18nObject"}}}},"uiComponent":{"oneOf":[{"type":"string","enum":["thermostat","media","toggle","slider","ternary","button","color","picker","sensor","battery"]},{"type":"null"}]},"uiState":{"type":"boolean"}},"_comment":"Require `values` array when `type` is `enum`","oneOf":[{"properties":{"type":{"type":"string","enum":["enum"]}},"required":["values"]},{"properties":{"type":{"type":"string","enum":["boolean","number","string"]}}}]}')},7243:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Fan","nl":"Ventilator","de":"Ventilator","fr":"Ventilateur","it":"Ventilatore","sv":"Fläkt","no":"Vifte","es":"Ventilador","da":"Ventilator","ru":"Вентилятор","pl":"Wentylator","ko":"팬","ar":"مروحة"},"description":{"en":"Use this device class for fans that cool your home.","de":"Nutze diese Geräteklasse für Ventilatoren, die dein Heim kühlen.","fr":"Utilisez cette classe d\'appareil pour les ventilateurs qui refroidissent votre maison.","it":"Utilizza questa classe di dispositivi per i ventilatori che rinfrescano la tua casa.","sv":"Använd den här enhetsklassen för fläktar som kyler ned hemmet.","no":"Bruk denne enhetsklassen for vifter som avkjøler boligen din.","es":"Utiliza esta clase de dispositivo para los ventiladores que enfrían la casa.","da":"Brug denne enhedsklasse til ventilatorer, der køler dit hjem ned.","ru":"Используйте этот класс устройств для вентиляторов, которые охлаждают ваш дом.","pl":"Użyj tej klasy urządzeń dla wentylatorów, które chłodzą dom.","ko":"이 디바이스 클래스는 집에서 시원하게 지내게 해주는 선풍기에 사용합니다.","ar":"استخدم فئة الجهاز هذه للمراوح التي تبرّد منزلك.","nl":"Gebruik deze apparaatklasse voor ventilatoren die je huis koelen."}}')},7250:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Vibration Alarm","nl":"Trilwaarschuwing","da":"Vibrationsalarm","it":"Allarme vibrazione","ko":"진동 감지","no":"Vibrasjonsalarm","pl":"Alarm wibracji","ru":"Сигнал вибрации","sv":"Vibrationslarm","es":"Alarma de vibración","fr":"Alarme de vibration","ar":"إنذار الاهتزاز","de":"Vibrationsalarm"},"titleShort":{"en":"Vibration","nl":"Vibratie","da":"Vibration","it":"Vibrazione","ko":"진동","no":"Vibrasjon","pl":"Wibracje","ru":"Вибрация","sv":"Vibration","es":"Vibración","fr":"Vibration","ar":"اهتزاز","de":"Vibration"},"desc":{"en":"True when vibration is detected.","nl":"Wordt geactiveerd wanneer trilling wordt gedetecteerd.","da":"Sandt, når der registreres vibration.","it":"Vero quando viene rilevata una vibrazione.","ko":"진동이 감지되면 참입니다.","no":"Sann når vibrasjon registreres.","pl":"Prawda, gdy wykryta jest wibracja.","ru":"Значение «истина» при обнаружении вибрации.","sv":"Sant när vibrationer detekteras.","es":"Activado cuando se detecta vibración.","fr":"Se déclenche lorsque des vibrations sont détectées.","ar":"صحيح عند اكتشاف اهتزاز.","de":"Wahr, wenn eine Vibration erkannt wird."},"insights":true,"insightsTitleTrue":{"en":"Vibration alarm turned on","nl":"Trilwaarschuwing geactiveerd","da":"Vibrationsalarm slået til","it":"Allarme vibrazione acceso","ko":"진동 감지됨","no":"Vibrasjonsalarm aktivert","pl":"Alarm wibracji włączony","ru":"Сигнал о вибрации включен","sv":"Vibrationslarmet aktiverat","es":"Alarma de vibración activada","fr":"Alarme de vibration activée","ar":"تم تشغيل إنذار الاهتزاز","de":"Vibrationsalarm eingeschaltet"},"insightsTitleFalse":{"en":"Vibration alarm turned off","nl":"Trilwaarschuwing gedeactiveerd","da":"Vibrationsalarm slået fra","it":"Allarme vibrazione spento","ko":"진동 감지되지 않음","no":"Vibrasjonsalarm deaktivert","pl":"Alarm wibracji wyłączony","ru":"Сигнал о вибрации выключен","sv":"Vibrationslarmet inaktiverat","es":"Alarma de vibración desactivada","fr":"Alarme de vibration désactivée","ar":"تم إيقاف إنذار الاهتزاز","de":"Vibrationsalarm ausgeschaltet"},"color":"#32C5FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_vibration_true","highlight":true,"title":{"en":"The vibration alarm turned on","nl":"De trilwaarschuwing is geactiveerd","da":"Vibrationsalarmen slået til","it":"L\'allarme vibrazione si è acceso","ko":"진동이 감지되면","no":"Vibrasjonsalarmen ble aktivert","pl":"Włączył się alarm wibracji","ru":"Сигнал о вибрации включен","sv":"Vibrationslarmet aktiverat","es":"La alarma de vibración se ha activado","fr":"L\'alarme de vibration s\'est activée","ar":"تم تشغيل إنذار التلاعب","de":"Der Vibrationsalarm wurde eingeschaltet"}},{"id":"alarm_vibration_false","title":{"en":"The vibration alarm turned off","nl":"De trilwaarschuwing is gedeactiveerd","da":"Vibrationsalarmen slået fra","it":"L\'allarme vibrazione si è spento","ko":"진동이 감지되지 않으면","no":"Vibrasjonsalarmen ble deaktivert","pl":"Wyłączył się alarm wibracji","ru":"Сигнал о вибрации выключен","sv":"Vibrationslarmet inaktiverat","es":"La alarma de vibración se ha desactivado","fr":"L\'alarme de vibration s\'est désactivée","ar":"تم إيقاف إنذار الاهتزاز","de":"Der Vibrationsalarm wurde ausgeschaltet"}}],"conditions":[{"id":"alarm_vibration","title":{"en":"The vibration alarm is !{{on|off}}","nl":"De trilwaarschuwing is !{{geactiveerd|gedeactiveerd}}","da":"Vibrationsalarmen er !{{tændt|slukket}}","it":"L\'allarme vibrazione è !{{acceso|spento}}","ko":"진동이 감지!{{되면|되지 않으면}}","no":"Vibrasjonsalarmen er !{{på|av}}","pl":"Alarm wibracji jest !{{włączony|wyłączony}}","ru":"Сигнал о вибрации !{{включен|выключен}}","sv":"Vibrationslarmet är !{{av|på}}","es":"La alarma de vibración está !{{activada|desactivada}}","fr":"L\'alarme de vibration est !{{activée|désactivée}}","ar":"إنذار الاهتزاز !{{يعمل|لا يعمل}}","de":"Der Vibrationsalarm ist !{{an|aus}}"}}]},"minCompatibility":"12.2.0"}')},7269:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Scooter","da":"Scooter","de":"Motorroller","es":"Scooter","fr":"Trottinette","it":"Scooter","ko":"스쿠터","nl":"Scooter","no":"Scooter","pl":"Skuter","ru":"Самокат","ar":"سكوتر","sv":"Skoter"},"description":{"en":"Use this device class for scooters.","da":"Brug denne enhedsklasse til scootere.","de":"Verwenden Sie diese Geräteklasse für Motorroller.","es":"Utilice esta clase de dispositivo para scooters.","fr":"Utilisez cette classe d\'appareils pour les trottinettes.","it":"Utilizza questa classe di dispositivi per gli scooter.","ko":"이 디바이스 클래스는 스쿠터에 사용합니다.","nl":"Gebruik deze apparaatklasse voor scooters.","no":"Bruk denne enhetsklassen for scootere.","pl":"Tej klasy urządzeń należy używać w przypadku skuterów.","ru":"Используйте этот класс устройств для самокатов.","sv":"Använd den här enhetsklassen för skotrar.","ar":"استخدم فئة الجهاز هذه للسكوترات."},"minCompatibility":"12.0.0"}')},7354:(e,t,a)=>{"use strict";var r=a(1030),i=a(6740),n=a(4551),s=a(2492),o=a(1873),l=i.ucs2length,d=a(2017),u=n.Validation;function m(e,t,a){var r=c.call(this,e,t,a);return r>=0?{index:r,compiling:!0}:(r=this._compilations.length,this._compilations[r]={schema:e,root:t,baseId:a},{index:r,compiling:!1})}function p(e,t,a){var r=c.call(this,e,t,a);r>=0&&this._compilations.splice(r,1)}function c(e,t,a){for(var r=0;r{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Charging state","nl":"Oplaadstatus","da":"Opladningstilstand","de":"Ladezustand","es":"Estado de carga","fr":"État de charge","it":"Stato di carica","ko":"전기차 충전기 상태","no":"Ladestatus","pl":"Stan ładowania","ru":"Состояние зарядки","sv":"Laddningstillstånd","ar":"حالة الشحن"},"desc":{"en":"The current charging state of the EV charger.","da":"Elbilopladerens aktuelle opladningstilstand.","de":"Der aktuelle Ladezustand der Ladestation für Elektrofahrzeuge.","es":"El estado de carga actual del cargador del VE.","fr":"L\'état de charge actuel du chargeur VE","it":"Lo stato di carica attuale dell’alimentatore per veicoli elettrici.","ko":"전기차 충전기의 현재 충전 상태입니다.","nl":"De huidige oplaadstatus van de EV-lader.","no":"Gjeldende ladestatus for elbilladeren.","pl":"Bieżący stan ładowania ładowarki EV.","ru":"Текущее состояние зарядки зарядного устройства для электромобилей.","sv":"EV-laddarens aktuella laddningsstatus.","ar":"حالة الشحن الحالية لشاحن السيارة الكهربائية."},"color":"#6DD400","getable":true,"setable":false,"uiComponent":"sensor","minCompatibility":"12.4.5","values":[{"id":"plugged_in_charging","title":{"en":"Charging","nl":"Opladen","da":"Oplader","it":"In ricarica","ko":"충전 중","pl":"Ładowanie","ru":"Заряжается","sv":"Laddning\\n","es":"Carga","fr":"Charge en cours","no":"Lader","de":"Wird aufgeladen","ar":"قيد الشحن"}},{"id":"plugged_in_discharging","title":{"en":"Discharging","nl":"Ontladen","da":"Aflader","it":"Si sta scaricando","ko":"외부 전원 공급 중","pl":"Rozładowywanie","ru":"Разряжается","sv":"Urladdning\\n","es":"Descarga","fr":"Décharge en cours","no":"Lades ut","de":"Wird entladen","ar":"قيد التفريغ"}},{"id":"plugged_in_paused","title":{"en":"Paused","da":"På pause","it":"In pausa","ko":"일시 중지됨","nl":"Gepauzeerd","pl":"Wstrzymane","ru":"На паузе","sv":"Pausad\\n","es":"En pausa","fr":"En pause","no":"Satt på pause","de":"Pausiert","ar":"متوقف مؤقتًا"}},{"id":"plugged_in","title":{"en":"Plugged in","nl":"Aangesloten","da":"Tilsluttet","it":"Cavo collegato","ko":"충전구 연결됨","pl":"Podłączone do gniazdka","ru":"Подключено","sv":"Ansluten","es":"Enchufado","fr":"Branché","no":"Tilkoblet","de":"Eingesteckt","ar":"موصول"}},{"id":"plugged_out","title":{"en":"Not plugged in","nl":"Niet aangesloten","da":"Ikke tilsluttet","it":"Cavo non collegato","ko":"충전구 연결되지 않음","pl":"Niepodłączone do gniazdka","ru":"Не подключено","sv":"Inte ansluten","es":"No enchufado","fr":"Non branché","no":"Ikke tilkoblet","de":"Nicht eingesteckt","ar":"غير موصول"}}],"$flow":{"triggers":[{"id":"evcharger_charging_state_changed","title":{"en":"The EV charger charging state changed","da":"Elbilopladerens opladningstilstand er ændret","de":"Der Ladezustand der Ladestation für Elektrofahrzeuge hat sich geändert.","es":"El estado de carga del cargador del VE ha cambiado","fr":"L\'état de charge du chargeur VE a changé","it":"Lo stato di carica dell’alimentatore per veicoli elettrici è cambiato","ko":"전기차 충전기 충전 상태가 변경되면","nl":"De oplaadstatus van de EV-lader is veranderd","no":"Elbilladerens ladestatus ble endret","pl":"Stan ładowania ładowarki EV uległ zmianie","ru":"Состояние зарядки зарядного устройства для электромобилей изменилось","sv":"Laddningsstatus för EV-laddaren har ändrats","ar":"تم تغيير حالة شحن شاحن السيارة الكهربائية"},"args":[{"name":"state","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"evcharger_charging_state_is","title":{"en":"The EV charger charging state !{{is|is not}}","da":"Elbilopladerens opladningstilstand !{{er|er ikke}}","de":"Der Ladezustand der Ladestation für Elektrofahrzeuge !{{ist|ist nicht}}","es":"El estado de carga del cargador del VE !{{es|no es}}","fr":"L\'état de charge du chargeur VE !{{est|n\'est pas}}","it":"Lo stato di carica dell’alimentatore per veicoli elettrici !{{è|non è}}","ko":"전기차 충전기 충전 상태가 다음!{{과 같음|이 아님}}","nl":"De oplaadstatus van de EV-lader !{{is|is niet}}","no":"Elbilladerens ladestatus !{{er|er ikke}}","pl":"Stan ładowania ładowarki EV !{{to|to nie}}","ru":"Состояние зарядки зарядного устройства для электромобилей !{{|не}}","sv":"Laddningsstatus för EV-laddaren !{{är|är inte}}","ar":"حالة شحن شاحن السيارة الكهربائية !{{هي|ليست}}"},"args":[{"name":"state","type":"dropdown","values":"$values"}]}]}}')},7364:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Volume muted","nl":"Gedempt volume","de":"Lautstärke stumm","fr":"Volume sourdine","it":"Volume disattivato","sv":"Volym inaktiverad","no":"Volym dempet","es":"Silenciar volumen","da":"Lyd slået fra","ru":"Звук выключен","pl":"Głośność wyciszona","ko":"음소거","ar":"الصوت مكتوم"},"type":"boolean","color":"#9033FC","getable":true,"setable":true,"uiComponent":"button","$flow":{"actions":[{"id":"volume_mute","title":{"en":"Mute the volume","nl":"Demp het geluid","de":"Lautstärke stummschalten","fr":"Mettre le volume en sourdine","it":"Disattiva il volume","sv":"Inaktivera volymen","no":"Demp volumet","es":"Silenciar el volumen","da":"Slå lyden fra","ru":"Выключить звук","pl":"Wycisz głośność","ko":"볼륨 음소거","ar":"كتم الصوت"}},{"id":"volume_unmute","title":{"en":"Unmute the volume","nl":"Demp het geluid niet meer","de":"Lautstärke nicht mehr stummschalten","fr":"Réactiver le son","it":"Riattiva il volume","sv":"Aktivera volymen","no":"Opphev demping av volum","es":"Activar el volumen","da":"Slå lyden til","ru":"Включить звук","pl":"Włącz głośność","ko":"볼륨 음소거 해제","ar":"إلغاء كتم الصوت"}},{"id":"volume_mute_toggle","title":{"en":"Toggle muted volume on or off","nl":"Gedempt volume in- of uitschakelen","de":"Stummschaltung ein- oder ausschalten","fr":"Activer ou désactiver le son coupé","it":"Attiva o disattiva il volume disattivato","sv":"Slå på eller av avstängd volym","no":"Slå dempet volum på eller av","es":"Activar el volumen o silenciar","da":"Slå dæmpet lydstyrke til eller fra","ko":"볼륨 켬/끔 상태 전환하기","ru":"Включить или выключить приглушенный звук","ar":"تبديل كتم الصوت بين التشغيل والإيقاف","pl":"Włącz lub wyłącz wyciszenie głośności"}}]}}')},7403:(e,t,a)=>{"use strict";e.exports={$ref:a(6990),allOf:a(353),anyOf:a(9480),$comment:a(4278),const:a(224),contains:a(5674),dependencies:a(1926),enum:a(598),format:a(400),if:a(8532),items:a(4371),maximum:a(4667),minimum:a(4667),maxItems:a(2119),minItems:a(2119),maxLength:a(7935),minLength:a(7935),maxProperties:a(1298),minProperties:a(1298),multipleOf:a(9294),not:a(8914),oneOf:a(5326),pattern:a(8317),properties:a(1374),propertyNames:a(3032),required:a(7850),uniqueItems:a(5898),validate:a(1873)}},7419:e=>{"use strict";e.exports=JSON.parse('{"title":"App","type":"object","definitions":{"i18nObject":{"oneOf":[{"type":"string","minLength":1},{"type":"object","required":["en"],"patternProperties":{"^.*$":{"type":"string"}},"additionalProperties":false}]},"i18nArray":{"type":"object","patternProperties":{"^.*$":{"type":"array","items":{"type":"string"}}},"additionalProperties":false},"integrity":{"type":"string","pattern":"^(blake2b512|blake2s256|sha256|sha384|sha512|sha512-256|sha3-256|sha3-384|sha3-512):[0-9a-fA-F]+$"},"zigbee-firmware-update-device":{"type":"object","required":["manufacturerName","productId"],"additionalProperties":false,"properties":{"manufacturerName":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"productId":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},"zigbee-firmware-update-file":{"type":"object","required":["fileVersion","size","imageType","manufacturerCode","name","integrity"],"additionalProperties":false,"properties":{"fileVersion":{"type":"number"},"imageType":{"type":"number"},"manufacturerCode":{"type":"number"},"minFileVersion":{"type":"number"},"maxFileVersion":{"type":"number"},"minHardwareVersion":{"type":"number"},"maxHardwareVersion":{"type":"number"},"size":{"type":"number"},"name":{"type":"string"},"integrity":{"$ref":"#/definitions/integrity"}}},"zigbee-firmware-update":{"type":"object","required":["changelog","device","files"],"additionalProperties":false,"properties":{"changelog":{"$ref":"#/definitions/i18nObject"},"device":{"$ref":"#/definitions/zigbee-firmware-update-device"},"files":{"type":"array","minItems":1,"items":{"$ref":"#/definitions/zigbee-firmware-update-file"}}}},"zigbee-firmware-updates":{"type":"object","additionalProperties":false,"required":["updates"],"properties":{"wakeInstruction":{"$ref":"#/definitions/i18nObject"},"queryNextImageTimeout":{"type":"number"},"minImageBlockPeriod":{"type":"number"},"maxImageBlockSize":{"type":"number"},"imageBlockRequestTimeout":{"type":"number"},"upgradeEndRequestTimeout":{"type":"number"},"upgradeEndDelay":{"type":"number"},"postUpgradeAnnounceTimeout":{"type":"number"},"updates":{"type":"array","minItems":1,"items":{"$ref":"#/definitions/zigbee-firmware-update"}}}},"zwave-firmware-update-device":{"type":"object","required":["manufacturerId","productTypeId","productId"],"additionalProperties":false,"properties":{"manufacturerId":{"oneOf":[{"type":"number"},{"type":"array","items":{"type":"number"}}]},"productId":{"oneOf":[{"type":"number"},{"type":"array","items":{"type":"number"}}]},"productTypeId":{"oneOf":[{"type":"number"},{"type":"array","items":{"type":"number"}}]},"hardwareVersion":{"oneOf":[{"type":"number"},{"type":"array","items":{"type":"number"}}]}}},"zwave-firmware-update-file":{"type":"object","required":["targetId","name","size","integrity"],"additionalProperties":false,"properties":{"region":{"type":"string"},"targetId":{"type":"number"},"name":{"type":"string"},"size":{"type":"number"},"integrity":{"$ref":"#/definitions/integrity"}}},"zwave-firmware-update":{"type":"object","required":["version","changelog","device","files"],"additionalProperties":false,"properties":{"version":{"type":"string"},"changelog":{"$ref":"#/definitions/i18nObject"},"applicableTo":{"type":"string"},"device":{"$ref":"#/definitions/zwave-firmware-update-device"},"files":{"type":"array","minItems":1,"items":{"$ref":"#/definitions/zwave-firmware-update-file"}}}},"zwave-firmware-updates":{"type":"object","additionalProperties":false,"required":["updates"],"properties":{"wakeInstruction":{"$ref":"#/definitions/i18nObject"},"reportTimeout":{"type":"number"},"minWaitTime":{"type":"number"},"verifyPostUpdateWithNop":{"type":"boolean","enum":[false]},"nopRetryInterval":{"type":"number"},"nopMaxRetries":{"type":"number"},"updates":{"type":"array","minItems":1,"items":{"$ref":"#/definitions/zwave-firmware-update"}}}},"generic-firmware-updates":{"type":"object","additionalProperties":false,"required":["enabled"],"properties":{"enabled":{"type":"boolean"},"wakeInstruction":{"$ref":"#/definitions/i18nObject"}}},"author":{"required":["name"],"properties":{"name":{"type":"string"},"email":{"type":"string"},"website":{"type":"string"}}},"images":{"required":["large","small"],"additionalProperties":false,"properties":{"large":{"type":"string"},"small":{"type":"string"},"xlarge":{"type":"string"}}},"flowCard":{"type":"object","required":["id","title"],"properties":{"id":{"type":"string"},"title":{"$ref":"#/definitions/i18nObject"},"titleFormatted":{"$ref":"#/definitions/i18nObject"},"deprecated":{"type":"boolean","enum":[true]},"highlight":{"type":"boolean","enum":[true]},"advanced":{"type":"boolean","enum":[true]},"platforms":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["cloud","local"]}},"droptoken":{"oneOf":[{"type":"string","enum":["boolean","number","string","image"]},{"type":"array","items":{"type":"string","enum":["boolean","number","string","image"]}}]},"tokens":{"type":"array","items":{"type":"object","required":["name","title"],"properties":{"name":{"type":"string"},"type":{"type":"string","enum":["boolean","number","string","image"],"default":"string"},"title":{"$ref":"#/definitions/i18nObject"},"example":{"oneOf":[{"$ref":"#/definitions/i18nObject"},{"type":"number"},{"type":"boolean"}]}}}},"args":{"type":"array","items":{"anyOf":[{"type":"object","required":["name","type","filter"],"properties":{"name":{"type":"string"},"type":{"type":"string","enum":["device"]},"filter":{"oneOf":[{"type":"string"},{"type":"object"}]}}},{"type":"object","required":["name","type"],"properties":{"title":{"$ref":"#/definitions/i18nObject"},"name":{"type":"string"},"type":{"type":"string","enum":["text","autocomplete","device","date","time","color","checkbox","code"]},"placeholder":{"$ref":"#/definitions/i18nObject"},"filter":{"oneOf":[{"type":"string"},{"type":"object"}]},"items":{"type":"string","enum":["variable","flow_or_advanced_flow","user"]}}},{"type":"object","required":["name","type"],"properties":{"title":{"$ref":"#/definitions/i18nObject"},"name":{"type":"string"},"type":{"type":"string","enum":["number","range"]},"min":{"type":"number"},"max":{"type":"number"},"step":{"type":"number","minimum":0},"label":{"$ref":"#/definitions/i18nObject"},"labelMultiplier":{"type":"number"},"labelDecimals":{"type":"number","mimimum":0,"maximum":10}}},{"type":"object","required":["name","type","values"],"properties":{"title":{"$ref":"#/definitions/i18nObject"},"name":{"type":"string"},"type":{"type":"string","enum":["dropdown"]},"values":{"type":"array","items":{"type":"object","required":["id"],"properties":{"id":{"type":"string"},"title":{"$ref":"#/definitions/i18nObject"}}}}}},{"type":"object","required":["name","type","values","conjunction"],"properties":{"title":{"$ref":"#/definitions/i18nObject"},"name":{"type":"string"},"type":{"type":"string","enum":["multiselect"]},"conjunction":{"type":"string","enum":["and","or"]},"values":{"type":"array","items":{"type":"object","required":["id","title"],"properties":{"id":{"type":"string"},"title":{"$ref":"#/definitions/i18nObject"}}}}}}]}}}},"appSettings":{"type":"array","items":{"oneOf":[{"type":"object","required":["id","type","title"],"properties":{"type":{"type":"string","enum":["text","password","textarea","label"]},"id":{"type":"string"},"title":{"$ref":"#/definitions/i18nObject"},"hint":{"$ref":"#/definitions/i18nObject"},"value":{"type":"string"},"pattern":{"type":"string"}}},{"type":"object","required":["id","type","title"],"properties":{"type":{"type":"string","enum":["number","slider"]},"id":{"type":"string"},"title":{"$ref":"#/definitions/i18nObject"},"hint":{"$ref":"#/definitions/i18nObject"},"value":{"type":"number"},"units":{"$ref":"#/definitions/i18nObject"},"min":{"type":"number"},"max":{"type":"number"},"step":{"type":"number","minimum":0}}},{"type":"object","required":["id","type","title","values"],"properties":{"type":{"type":"string","enum":["radio","dropdown"]},"id":{"type":"string"},"title":{"$ref":"#/definitions/i18nObject"},"hint":{"$ref":"#/definitions/i18nObject"},"value":{"type":"string"},"values":{"type":"array","items":{"type":"object","required":["id","title"],"properties":{"id":{"type":"string"},"title":{"$ref":"#/definitions/i18nObject"}}}}}},{"type":"object","required":["id","type","title"],"properties":{"type":{"type":"string","enum":["checkbox"]},"id":{"type":"string"},"title":{"$ref":"#/definitions/i18nObject"},"hint":{"$ref":"#/definitions/i18nObject"},"value":{"type":"boolean"}}},{"type":"object","required":["type","title","children"],"properties":{"type":{"type":"string","enum":["group"]},"title":{"$ref":"#/definitions/i18nObject"},"children":{"$ref":"#/definitions/appSettings"}}}]}},"driverSettings":{"type":"array","items":{"oneOf":[{"type":"object","required":["id","type","label"],"properties":{"type":{"type":"string","enum":["text","password","textarea","label"]},"id":{"oneOf":[{"type":"string"},{"type":"number"}]},"label":{"$ref":"#/definitions/i18nObject"},"hint":{"$ref":"#/definitions/i18nObject"},"value":{"type":"string"},"pattern":{"type":"string"},"highlight":{"type":"boolean","enum":[true]},"zwave":{"$ref":"#/definitions/zwaveSetting"}}},{"type":"object","required":["id","type","label"],"properties":{"type":{"type":"string","enum":["number","slider"]},"id":{"oneOf":[{"type":"string"},{"type":"number"}]},"label":{"$ref":"#/definitions/i18nObject"},"hint":{"$ref":"#/definitions/i18nObject"},"value":{"type":"number"},"units":{"$ref":"#/definitions/i18nObject"},"attr":{"type":"object","properties":{"min":{"type":"number"},"max":{"type":"number"},"step":{"type":"number","minimum":0}}},"min":{"type":"number"},"max":{"type":"number"},"step":{"type":"number","minimum":0},"highlight":{"type":"boolean","enum":[true]},"zwave":{"$ref":"#/definitions/zwaveSetting"}}},{"type":"object","required":["id","type","label","values"],"properties":{"type":{"type":"string","enum":["radio","dropdown"]},"id":{"oneOf":[{"type":"string"},{"type":"number"}]},"label":{"$ref":"#/definitions/i18nObject"},"hint":{"$ref":"#/definitions/i18nObject"},"value":{"type":"string"},"values":{"type":"array","items":{"type":"object","required":["id","label"],"properties":{"id":{"type":"string"},"label":{"$ref":"#/definitions/i18nObject"}}}},"highlight":{"type":"boolean","enum":[true]},"zwave":{"$ref":"#/definitions/zwaveSetting"}}},{"type":"object","required":["id","type","label"],"properties":{"type":{"type":"string","enum":["checkbox"]},"id":{"oneOf":[{"type":"string"},{"type":"number"}]},"label":{"$ref":"#/definitions/i18nObject"},"hint":{"$ref":"#/definitions/i18nObject"},"value":{"type":"boolean"},"highlight":{"type":"boolean","enum":[true]},"zwave":{"$ref":"#/definitions/zwaveSetting"}}},{"type":"object","required":["type","label","children"],"properties":{"type":{"type":"string","enum":["group"]},"label":{"$ref":"#/definitions/i18nObject"},"children":{"$ref":"#/definitions/driverSettings"},"highlight":{"type":"boolean","enum":[true]},"zwave":{"$ref":"#/definitions/zwaveSetting"}}}]}},"matterDevice":{"type":"object","required":["vendorId","productId"],"properties":{"vendorId":{"oneOf":[{"type":"number","minimum":1,"maximum":65520},{"type":"array","items":{"type":"number","minimum":1,"maximum":65520}}]},"productId":{"oneOf":[{"type":"number","minimum":1,"maximum":65535},{"type":"array","items":{"type":"number","minimum":1,"maximum":65535}}]},"deviceVendorId":{"oneOf":[{"type":"number","minimum":1,"maximum":65520},{"type":"array","items":{"type":"number","minimum":1,"maximum":65520}}]},"deviceProductName":{"oneOf":[{"type":"string","minLength":1,"maxLength":32},{"type":"array","items":{"type":"string","minLength":1,"maxLength":32}}]},"learnmode":{"type":"object","required":["instruction"],"properties":{"image":{"type":"string"},"instruction":{"$ref":"#/definitions/i18nObject"}}}}},"zigbeeDevice":{"type":"object","required":["manufacturerName","productId","endpoints"],"properties":{"manufacturerName":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"productId":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"endpoints":{"type":"object","propertyNames":{"type":"string","pattern":"^[0-9]+$"},"additionalProperties":{"type":"object","additionalProperties":false,"properties":{"clusters":{"type":"array","items":{"type":"number"}},"bindings":{"type":"array","items":{"type":"number"}}}}},"learnmode":{"type":"object","required":["instruction"],"properties":{"image":{"type":"string"},"instruction":{"$ref":"#/definitions/i18nObject"}}}}},"zwaveDevice":{"type":"object","required":["manufacturerId","productTypeId","productId"],"properties":{"manufacturerId":{"oneOf":[{"type":"number"},{"type":"array","items":{"type":"number"}}]},"productTypeId":{"oneOf":[{"type":"number"},{"type":"array","items":{"type":"number"}}]},"productId":{"oneOf":[{"type":"number"},{"type":"array","items":{"type":"number"}}]},"learnmode":{"type":"object","required":["instruction"],"properties":{"image":{"type":"string"},"instruction":{"$ref":"#/definitions/i18nObject"}}},"associationGroups":{"type":"array","items":{"type":"number"}},"associationGroupsMultiChannel":{"type":"array","items":{"type":"number"}},"associationGroupsOptions":{"type":"object","properties":{"hint":{"$ref":"#/definitions/i18nObject"}}},"wakeUpInterval":{"type":"number"},"defaultConfiguration":{"type":"array","items":{"type":"object","required":["id","size","value"],"properties":{"id":{"type":"number"},"size":{"type":"number","enum":[1,2,4]},"value":{"oneOf":[{"type":"number"},{"type":"string"}]},"multiChannelNodes":{"type":"object","items":{"type":"object","required":["class","capabilities","name"],"properties":{"class":{"type":"string"},"capabilities":{"type":"array","items":{"type":"string"}},"icon":{"type":"string"},"name":{"$ref":"#/definitions/i18nObject"}}}}}}}}},"zwaveSetting":{"type":"object","required":["index","size"],"properties":{"index":{"type":"number"},"size":{"type":"number","enum":[1,2,4]},"signed":{"type":"boolean"}}}},"required":["id","name","version","compatibility","author"],"properties":{"id":{"type":"string"},"name":{"$ref":"#/definitions/i18nObject"},"description":{"$ref":"#/definitions/i18nObject"},"author":{"$ref":"#/definitions/author"},"images":{"$ref":"#/definitions/images"},"version":{"type":"string"},"compatibility":{"type":"string"},"sdk":{"type":"number","default":3,"minimum":1,"maximum":3},"platforms":{"type":"array","items":{"type":"string","enum":["cloud","local"]}},"platformLocalRequiredFeatures":{"type":"array","items":{"type":"string","enum":["nfc","speaker","ledring","matter","camera-streaming"]}},"platformLocalOptionalFeatures":{"type":"array","items":{"type":"string","enum":["nfc","speaker","ledring","matter","camera-streaming"]}},"runtime":{"type":"string","enum":["nodejs","python"]},"pythonVersion":{"type":"string"},"pythonPackages":{"type":"array","items":{"type":"string"}},"tags":{"$ref":"#/definitions/i18nArray"},"permissions":{"type":"array","uniqueItems":true,"items":{"type":"string"}},"bugs":{"type":"object","properties":{"url":{"type":"string","pattern":"^https?://"}}},"homepage":{"type":"string","pattern":"^https://"},"support":{"type":"string","pattern":"^(https://|mailto:)"},"source":{"type":"string","pattern":"^https://"},"athomForumDiscussionId":{"type":"number"},"homeyCommunityTopicId":{"type":"number"},"category":{"oneOf":[{"type":"string"},{"type":"array","uniqueItems":true,"items":{"type":"string"}}]},"contributors":{"type":"object","patternProperties":{"^(developers|translators)$":{"type":"array","items":{"$ref":"#/definitions/author"}}},"additionalProperties":false},"contributing":{"type":"object","properties":{"donate":{"type":"object","additionalProperties":false,"properties":{"githubSponsors":{"type":"object","additionalProperties":false,"properties":{"username":{"type":"string"}}},"bunq":{"type":"object","additionalProperties":false,"properties":{"username":{"type":"string"}}},"patreon":{"type":"object","additionalProperties":false,"properties":{"username":{"type":"string"}}},"paypal":{"type":"object","additionalProperties":false,"properties":{"username":{"type":"string"},"email":{"type":"string"},"fundraiserCharityId":{"type":"number"},"currency":{"type":"string"}}}}}}},"screensavers":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"title":{"$ref":"#/definitions/i18nObject"}}}},"capabilities":{"type":"object","patternProperties":{"^.*$":{"type":"object"}},"additionalProperties":false},"drivers":{"type":"array","items":{"type":"object","required":["id","name","class","capabilities"],"properties":{"id":{"type":"string"},"name":{"$ref":"#/definitions/i18nObject"},"class":{"type":"string"},"capabilities":{"type":"array","uniqueItems":true,"items":{"type":"string"}},"capabilitiesOptions":{"type":"object"},"images":{"$ref":"#/definitions/images"},"deprecated":{"type":"boolean","enum":[true]},"discovery":{"type":"string"},"energy":{"type":"object","properties":{"approximation":{"oneOf":[{"required":["usageOn","usageOff"],"additionalProperties":false,"properties":{"usageOn":{"type":"number"},"usageOff":{"type":"number"}}},{"required":["usageConstant"],"additionalProperties":false,"properties":{"usageConstant":{"type":"number"}}}]},"cumulative":{"type":"boolean","enum":[true]},"cumulativeImportedCapability":{"type":"string"},"cumulativeExportedCapability":{"type":"string"},"electricCar":{"type":"boolean","enum":[true]},"evCharger":{"type":"boolean","enum":[true]},"homeBattery":{"type":"boolean","enum":[true]},"meterPowerImportedCapability":{"type":"string"},"meterPowerExportedCapability":{"type":"string"},"batteries":{"type":"array","minItems":1,"items":{"type":"string"}}}},"pair":{"type":"array","items":{"type":"object","required":["id"],"properties":{"id":{"type":"string"},"template":{"type":"string"},"options":{"type":"object"},"navigation":{"type":"object","properties":{"prev":{"type":"string"},"next":{"type":"string"}}}}}},"settings":{"$ref":"#/definitions/driverSettings"},"firmwareUpdates":{"oneOf":[{"$ref":"#/definitions/zigbee-firmware-updates"},{"$ref":"#/definitions/zwave-firmware-updates"},{"$ref":"#/definitions/generic-firmware-updates"}]},"gtin":{"oneOf":[{"type":"string"},{"type":"array","uniqueItems":true,"items":{"type":"string"}}]},"matter":{"$ref":"#/definitions/matterDevice"},"zwave":{"$ref":"#/definitions/zwaveDevice"},"zigbee":{"$ref":"#/definitions/zigbeeDevice"},"rf433":{"type":"object","properties":{"satelliteMode":{"type":"boolean"}}},"infrared":{"type":"object","properties":{"satelliteMode":{"type":"boolean"}}},"platforms":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["cloud","local"]}},"connectivity":{"type":"array","uniqueItems":true,"items":{"type":"string","enum":["lan","cloud","ble","zwave","zigbee","infrared","rf433","rf868","matter"]}}}}},"flow":{"type":"object","properties":{"triggers":{"type":"array","items":{"$ref":"#/definitions/flowCard"}},"conditions":{"type":"array","items":{"$ref":"#/definitions/flowCard"}},"actions":{"type":"array","items":{"$ref":"#/definitions/flowCard"}}}},"signals":{"type":"object","patternProperties":{"^(433|868|ir)$":{"type":"object"}},"additionalProperties":false},"brandColor":{"type":"string","minLength":7,"maxLength":7,"pattern":"^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$"},"discovery":{"type":"object","patternProperties":{"^.*$":{"type":"object","required":["type"],"additionalProperties":false,"properties":{"type":{"type":"string","enum":["mdns-sd","ssdp","mac"]},"id":{"type":"string","minLength":1},"conditions":{"type":"array","items":{"type":"array","items":{"type":"object","required":["field","match"],"additionalProperties":false,"properties":{"field":{"type":"string"},"match":{"type":"object","required":["type","value"],"additionalProperties":false,"properties":{"type":{"type":"string","enum":["string","regex"]},"value":{"type":"string"}}}}}}},"mdns-sd":{"type":"object","required":["name","protocol"],"additionalProperties":false,"properties":{"name":{"type":"string","minLength":1},"protocol":{"type":"string","enum":["tcp","udp"]}}},"ssdp":{"type":"object","required":["search"],"additionalProperties":false,"properties":{"search":{"type":"string","minLength":1}}},"mac":{"type":"object","required":["manufacturer"],"additionalProperties":false,"properties":{"manufacturer":{"type":"array","uniqueItems":true,"minItems":1,"maxItems":32,"items":{"type":"array","minItems":3,"maxItems":3,"items":{"type":"integer","minimum":0,"maximum":255}}}}}}}}},"widgets":{"type":"object","patternProperties":{"^.*$":{"type":"object","properties":{"name":{"$ref":"#/definitions/i18nObject"},"height":{"type":["number","string"]},"transparent":{"type":"boolean"},"settings":{"type":"array"},"devices":{"type":"object","properties":{"type":{"type":"string","enum":["global","app"]},"singular":{"type":"boolean"},"filter":{"type":"object","properties":{"class":{"type":"string"},"capabilities":{"type":"string"}}}},"required":["type","singular"]},"api":{"type":"object","patternProperties":{"^.*$":{"type":"object","properties":{"method":{"type":"string","enum":["GET","POST","PUT","DELETE"]},"path":{"type":"string"}},"required":["method","path"]}}},"id":{"type":"string"},"deprecated":{"type":"boolean"}},"required":["name","id"]}},"additionalProperties":false},"settings":{"$ref":"#/definitions/appSettings"}}}')},7526:(e,t)=>{"use strict";t.byteLength=function(e){var t=o(e),a=t[0],r=t[1];return 3*(a+r)/4-r},t.toByteArray=function(e){var t,a,n=o(e),s=n[0],l=n[1],d=new i(function(e,t,a){return 3*(t+a)/4-a}(0,s,l)),u=0,m=l>0?s-4:s;for(a=0;a>16&255,d[u++]=t>>8&255,d[u++]=255&t;return 2===l&&(t=r[e.charCodeAt(a)]<<2|r[e.charCodeAt(a+1)]>>4,d[u++]=255&t),1===l&&(t=r[e.charCodeAt(a)]<<10|r[e.charCodeAt(a+1)]<<4|r[e.charCodeAt(a+2)]>>2,d[u++]=t>>8&255,d[u++]=255&t),d},t.fromByteArray=function(e){for(var t,r=e.length,i=r%3,n=[],s=16383,o=0,d=r-i;od?d:o+s));return 1===i?(t=e[r-1],n.push(a[t>>2]+a[t<<4&63]+"==")):2===i&&(t=(e[r-2]<<8)+e[r-1],n.push(a[t>>10]+a[t>>4&63]+a[t<<2&63]+"=")),n.join("")};for(var a=[],r=[],i="undefined"!=typeof Uint8Array?Uint8Array:Array,n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",s=0;s<64;++s)a[s]=n[s],r[n.charCodeAt(s)]=s;function o(e){var t=e.length;if(t%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var a=e.indexOf("=");return-1===a&&(a=t),[a,a===t?0:4-a%4]}function l(e,t,r){for(var i,n,s=[],o=t;o>18&63]+a[n>>12&63]+a[n>>6&63]+a[63&n]);return s.join("")}r["-".charCodeAt(0)]=62,r["_".charCodeAt(0)]=63},7530:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Heat Alarm","nl":"Hitte-alarm","de":"Hitzealarm","fr":"Alarme de chaleur","it":"Allarme calore","sv":"Värmelarm","no":"Varmealarm","es":"Alarma de calor","da":"Varmealarm","ru":"Сигнал тепла","pl":"Alarm gorąca","ko":"과열 감지","ar":"إنذار الحرارة"},"titleShort":{"en":"Heat","nl":"Hitte","de":"Hitze","fr":"Chaleur","it":"Calore","sv":"Värme","no":"Varme","es":"Calor","da":"Varme","ru":"Тепло","pl":"Gorąco","ko":"과열","ar":"الحرارة"},"desc":{"en":"True when extreme heat has been detected","nl":"Gaat af als er extreme hitte gedetecteerd wordt","de":"True, wenn extreme Hitze erkannt wurde","fr":"Vrai si une chaleur extrême a été détectée","it":"Vero quando è stato rilevato un calore estremo","sv":"Sant när extrem hetta upptäckts","no":"Sann når ekstrem varme har blitt påvist","es":"Activado cuando se detecta calor extremo","da":"Sandt, når ekstrem varme er blevet opdaget","ru":"Значение «истина» при обнаружении экстремально высокой температуры","pl":"Adekwatny, kiedy wykryta zostanie ekstremalnie wysoka temperatura","ko":"과도한 열이 감지되면 참","ar":"صحيح عند اكتشاف حرارة شديدة"},"insights":true,"insightsTitleTrue":{"en":"Heat alarm turned on","nl":"Hittealarm ging af","de":"Hitze-Alarm ist angegangen","fr":"Alarme chaleur s\'est activée","it":"Allarme di calore attivato","sv":"Värmelarm aktiverat","no":"Varmealarm aktivert","es":"Alarma de calor activada","da":"Varmealarm blev aktiveret","ru":"Сигнал перегрева включен","pl":"Alarm termiczny włączony","ko":"과열 감지됨","ar":"تم تشغيل إنذار الحرارة"},"insightsTitleFalse":{"en":"Heat alarm turned off","nl":"Hittealarm ging uit","de":"Hitze-Alarm ist ausgegangen","fr":"Alarme chaleur s\'est désactivée","it":"Allarme di calore disattivato","sv":"Värmelarm inaktiverat","no":"Varmealarm deaktivert","es":"Alarma de calor desactivada","da":"Varmealarm blev deaktiveret","ru":"Сигнал перегрева выключен","pl":"Alarm termiczny wyłączony","ko":"정상","ar":"تم إيقاف إنذار الحرارة"},"color":"#FA6400","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_heat_true","highlight":true,"title":{"en":"The heat alarm turned on","nl":"Het hitte-alarm gaat aan","de":"Der Hitze-Alarm ist angegangen","fr":"L\'alarme chaleur s\'est activée","it":"L\'allarme di calore è stato attivato","sv":"Värmelarmet aktiverat","no":"Varmealarmen ble aktivert","es":"La alarma de calor se ha activado","da":"Varmealarmen blev aktiveret","ru":"Сигнал перегрева включен","pl":"Alarm termiczny włączony","ko":"과열이 감지되면","ar":"تم تشغيل إنذار الحرارة"}},{"id":"alarm_heat_false","title":{"en":"The heat alarm turned off","nl":"Het hitte-alarm gaat uit","de":"Der Hitze-Alarm ist ausgegangen","fr":"L\'alarme chaleur s\'est désactivée","it":"L\'allarme di calore è stato disattivato","sv":"Värmelarmet inaktiverat","no":"Varmealarmen ble deaktivert","es":"La alarma de calor se ha desactivado","da":"Varmealarmen blev deaktiveret","ru":"Сигнал перегрева выключен","pl":"Alarm termiczny wyłączony","ko":"과열 감지가 정상 상태이면","ar":"تم إيقاف إنذار الحرارة"}}],"conditions":[{"id":"alarm_heat","title":{"en":"The heat alarm is !{{on|off}}","nl":"Het hitte-alarm is !{{aan|uit}}","de":"Der Hitze-Alarm ist !{{an|aus}}","fr":"L\'alarme chaleur est !{{en marche|arrêtée}}","it":"L\'allarme di calore è !{{acceso|spento}}","sv":"Värmelarmet är !{{på|av}}","no":"Varmealarmen er !{{på|av}}","es":"La alarma de calor está !{{activada|desactivada}}","da":"Varmealarmen er !{{tændt|slukket}}","ru":"Сигнал перегрева !{{вкл.|выкл.}}","pl":"Alarm termiczny jest !{{włączony|wyłączony}}","ko":"!{{과열이 감지되면|과열 감지가 정상 상태이면}}","ar":"إنذار الحرارة !{{يعمل|لا يعمل}}"}}]}}')},7557:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Ozone","nl":"Ozon","da":"Ozon","it":"Ozono","ko":"오존","no":"Ozon","pl":"Ozon","ru":"Озон","sv":"Ozon","es":"Ozono","fr":"Ozone","ar":"الأوزون","de":"Ozon"},"units":{"en":"μg/m³","nl":"μg/m³","da":"μg/m³","it":"μg/m³","ko":"μg/m³","no":"μg/m³","pl":"μg/m³","ru":"мкг/м³","sv":"μg/m³","es":"μg/m³","fr":"μg/m³","ar":"ميكروجرام/م³","de":"μg/m³"},"insights":true,"desc":{"en":"Ozone in micrograms per cubic meter (μg/m³)","nl":"Ozon in microgram per kubieke meter (μg/m³)","da":"Ozon i mikrogram pr. kubikmeter (μg/m³)","it":"Ozono in microgrammi per metro cubo (μg/m³)","ko":"입방미터당 마이크로그램(μg/m³) 단위의 오존","no":"Ozon i mikrogram per kubikkmeter (μg/m³)","pl":"Ozon w mikrogramach na metr sześcienny (μg/m³)","ru":"Озон в микрограммах на кубический метр (мкг/м³)","sv":"Ozon i mikrogram per kubikmeter (μg/m³)","es":"Ozono en microgramos por metro cúbico (μg/m³)","fr":"Ozone en microgrammes par mètre cube (μg/m³)","ar":"الأوزون بالميكروجرام لكل متر مكعب (μg/m³)","de":"Ozon in Mikrogramm pro Kubikmeter (μg/m³)"},"chartType":"spline","decimals":2,"color":"#E02020","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_o3_changed","title":{"en":"The ozone level changed","nl":"Het ozonniveau is veranderd","da":"Ozonværdien ændrede sig","it":"Il livello di ozono è cambiato","ko":"오존 수준이 변경되면","no":"Ozonnivået ble endret","pl":"Zmienił się poziom ozonu","ru":"Значение озона изменилось","sv":"Ozonvärdet ändrades","es":"El nivel de ozono ha cambiado","fr":"La valeur de l\'ozone a changé","ar":"تغير مستوى الأوزون","de":"Der Ozonwert hat sich geändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":2}]}]},"minCompatibility":"12.2.0"}')},7589:()=>{},7593:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Window coverings tilt set","nl":"Kanteling van raambekleding ingesteld","de":"Jalousien-Kippstellung setzen","fr":"Définir l\'inclinaison des stores","it":"Imposta l\'inclinazione delle tapparelle","sv":"Ställ in lutning för fönsterskydd","no":"Innstill helning for vindusbeskyttelse","es":"Configurar la inclinación de los cobertores de ventanas","da":"Indstil hældning for vinduesdække","ru":"Угол наклона оконных навесов установлен","pl":"Ustawienie osłon okiennych","ko":"기울기","ar":"ضبط إمالة أغطية النوافذ"},"type":"number","min":0,"max":1,"units":{"en":"%","ko":"%","no":"%","ru":"%","ar":"%","da":"%","de":"%","es":"%","fr":"%","it":"%","nl":"%","pl":"%","sv":"%"},"decimals":2,"color":"#F5B207","getable":true,"setable":true,"uiComponent":"slider","$flow":{"triggers":[{"id":"windowcoverings_tilt_set_changed","title":{"en":"The tilt position changed","da":"Hældningspositionen ændrede sig","it":"L\'inclinazione è cambiata","ko":"창문 가림 기울기 위치가 변경되면","nl":"De kantelpositie is veranderd","pl":"Zmieniła się pozycja odchylenia","ru":"Положение наклона изменено","sv":"Lutningsläget ändrades","es":"La inclinación ha cambiado","fr":"La position d\'inclinaison a changé","no":"Vippeposisjonen ble endret","ar":"تم تغيير موضع الإمالة","de":"Die Neigungsposition wurde geändert"},"tokens":[{"name":"windowcoverings_tilt_set","type":"number","title":{"en":"Position","da":"Position","it":"Posizione","ko":"창문 가림 기울기 위치가 다음이면","nl":"Positie","pl":"Pozycja","ru":"Положение","sv":"Position","es":"Posición","fr":"Position","no":"Posisjon","ar":"الموضع","de":"Position"},"example":0.5}]}],"actions":[{"id":"windowcoverings_tilt_set","highlight":true,"title":{"en":"Set the tilt position to","da":"Indstil hældningsposition til","it":"Imposta l\'inclinazione su","ko":"창문 가림 기울기 위치를 다음으로 설정","nl":"De kantelpositie instellen op","pl":"Ustaw pozycję odchylenia na","ru":"Установить положение наклона на","sv":"Ställ in lutningsläget på","es":"Ajustar la inclinación a","fr":"Définir la position d\'inclinaison sur","no":"Sett vippeposisjonen til","ar":"ضبط موضع الإمالة على","de":"Stelle die Neigungsposition auf"},"hint":{"en":"Change the tilt position to open (100%), closed (0%), or a value in between.","da":"Skift hældningsposition til åben (100 %), lukket (0 %) eller en værdi midt imellem.","it":"Modifica l\'inclinazione su aperto (100%), chiuso (0%) o su un valore intermedio.","ko":"창문 가림 기울기 위치를 열림(100%), 닫힘(0%) 또는 그 사이의 값으로 변경해요.","nl":"Wijzig de kantelpositie in open (100%), gesloten (0%) of een waarde ertussenin.","pl":"Zmień pozycję odchylenia na otwartą (100%), zamkniętą (0%) lub wartość pośrednią.","ru":"Изменить положение наклона на «открыто» (100%), «закрыто» (0%) или выбрать промежуточное значение.","sv":"Ändra lutningsläget till öppet (100 %), stängt (0 %) eller ett värde däremellan.","es":"Cambia la inclinación a abierta (100%), cerrada (0%) o un valor intermedio.","fr":"Modifier la position de l\'inclinaison pour qu\'elle soit ouverte (100 %), fermée (0 %) ou une valeur intermédiaire.","no":"Endre vippeposisjonen til åpen (100 %), lukket (0 %) eller en mellomliggende verdi.","ar":"تغيير موضع الإمالة إلى مفتوح (100%) أو مغلق (0%)، أو قيمة بينهما.","de":"Ändere die Neigungsposition auf offen (100 %), geschlossen (0 %) oder einen Wert dazwischen."},"args":[{"name":"windowcoverings_tilt_set","type":"range","min":0,"max":1,"step":0.01,"value":0.5,"label":"%","labelMultiplier":100,"labelDecimals":0}]}]}}')},7667:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Connectivity Alarm","nl":"Verbindingswaarschuwing","da":"Tilslutningsalarm","fr":"Alarme de connectivité","it":"Allarme connessione","ko":"연결 해제 감지","no":"Tilkoblingsalarm","pl":"Alarm łączności","ru":"Сигнал подключения","sv":"Anslutningslarm","es":"Alarma de conectividad","ar":"إنذار الاتصال","de":"Verbindungsalarm"},"titleShort":{"en":"Connectivity","nl":"Connectiviteit","da":"Tilslutning","fr":"Connectivité","it":"Connettività","ko":"연결성","no":"Tilkobling","pl":"Łączność","ru":"Подключение","sv":"Anslutning","es":"Conectividad","ar":"الاتصال","de":"Konnektivität"},"desc":{"en":"True when disconnected from the network.","nl":"Wordt geactiveerd wanneer het apparaat niet meer verbonden is met het netwerk.","da":"Sandt, når forbindelsen til netværket er afbrudt.","fr":"Se déclenche lorsque le réseau est déconnecté.","it":"Vero quando si è disconnessi dalla rete.","ko":"네트워크에서 연결 해제되면 참입니다.","no":"Sann når koblet fra nettverket.","pl":"Prawda, gdy nastąpiło odłączenie od sieci.","ru":"Значение «истина», когда устройство отключено от сети.","sv":"Sant när den är frånkopplad från nätverket.","es":"Activado cuando se desconecta de la red.","ar":"صحيح عند قطع الاتصال بالشبكة.","de":"Wahr, wenn die Verbindung zum Netz getrennt ist."},"insights":true,"insightsTitleTrue":{"en":"Disconnected","nl":"Niet verbonden","da":"Afbrudt","fr":"Déconnecté","it":"Disconnesso","ko":"연결 해제됨","no":"Frakoblet","pl":"Odłączone","ru":"Отключено","sv":"Frånkopplad","es":"Desconectado","ar":"تم قطع الاتصال","de":"Getrennt"},"insightsTitleFalse":{"en":"Connected","nl":"Verbonden","da":"Tilsluttet","fr":"Connecté","it":"Connesso","ko":"연결됨","no":"Tilkoblet","pl":"Połączone","ru":"Подключено","sv":"Ansluten","es":"Conectado","ar":"متصل","de":"Verbunden"},"color":"#9033FC","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_connectivity_true","highlight":true,"title":{"en":"Is disconnected","nl":"Is niet verbonden","da":"Er afbrudt","fr":"Est déconnectée","it":"È disconnesso","ko":"연결이 해제되면","no":"Er frakoblet","pl":"Odłączony","ru":"Отключено","sv":"Frånkopplad","es":"Está desconectado","ar":"مفصول","de":"Ist nicht verbunden"}},{"id":"alarm_connectivity_false","title":{"en":"Is connected","nl":"Is verbonden","da":"Er tilsluttet","fr":"Est connectée","it":"È connesso","ko":"연결되면","no":"Er tilkoblet","pl":"Połączony","ru":"Подключено","sv":"Ansluten","es":"Está conectado","ar":"متصل","de":"Ist verbunden"}}],"conditions":[{"id":"alarm_connectivity","title":{"en":"Is !{{connected|disconnected}}","nl":"Is !{{verbonden|niet verbonden}}","da":"Er !{{tilsluttet|afbrudt}}","it":"È !{{connesso|disconnesso}}","ko":"!{{연결되면|연결이 해제되면}}","no":"Er !{{frakoblet|tilkoblet}}","pl":"Jest !{{połączony|niepołączony}}","ru":"Устройство !{{подключено|отключено}}","sv":"Är !{{ansluten|frånkopplad}}","es":"Está !{{conectado|desconectado}}","fr":"Est !{{connectée|déconnectée}}","ar":"هو !{{متصل|غير متصل}}","de":"Ist !{{verbunden|nicht verbunden}}"}}]},"minCompatibility":"12.2.0"}')},7741:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Presence Alarm","nl":"Aanwezigheidswaarschuwing","da":"Tilstedeværelsesalarm","it":"Allarme di presenza","ko":"재실 감지","no":"Tilstedeværelsesalarm","pl":"Alarm obecności","ru":"Сигнал присутствия","sv":"Närvarolarm","es":"Alarma de presencia","fr":"Alarme de présence","ar":"إنذار التواجد","de":"Anwesenheitsalarm"},"titleShort":{"en":"Presence","nl":"Aanwezigheid","da":"Tilstedeværelse","it":"Presenza","ko":"존재감지","no":"Tilstedeværelse","pl":"Obecność","ru":"Присутствие","sv":"Närvaro","es":"Presencia","fr":"Présence","ar":"التواجد","de":"Anwesenheit"},"desc":{"en":"True when presence has been detected.","nl":"Wordt geactiveerd wanneer aanwezigheid wordt gedetecteerd","da":"True, når der er registreret tilstedeværelse.","it":"Vero quando viene rilevata una presenza.","ko":"존재가 감지되면 참입니다.","no":"Sann når tilstedeværelse har blitt påvist.","pl":"Prawda, gdy wykryta została obecność.","ru":"Значение «истина» при обнаружении присутствия.","sv":"True när närvaro har detekterats.","es":"Activado cuando se detecta presencia.","fr":"Se déclenche lorsqu\'une présence a été détectée.","ar":"صحيح عند اكتشاف تواجد.","de":"Wahr, wenn Anwesenheit erkannt wurde."},"insights":true,"insightsTitleTrue":{"en":"Presence Alarm turned on","nl":"Aanwezigheidswaarschuwing geactiveerd","da":"Tilstedeværelsesalarm slået til","it":"Allarme di presenza acceso","ko":"재실 감지됨","no":"Tilstedeværelsesalarm aktivert","pl":"Alarm obecności włączony","ru":"Сигнал присутствия включен","sv":"Närvarolarm aktiverat","es":"Alarma de presencia activada","fr":"Alarme de présence activée","ar":"تم تشغيل إنذار التواجد","de":"Anwesenheitsalarm eingeschaltet"},"insightsTitleFalse":{"en":"Presence Alarm turned off","nl":"Aanwezigheidswaarschuwing gedeactiveerd","da":"Tilstedeværelsesalarm slået fra","it":"Allarme di presenza spento","ko":"재실 감지되지 않음","no":"Tilstedeværelsesalarm deaktivert","pl":"Alarm obecności wyłączony","ru":"Сигнал присутствия выключен","sv":"Närvarolarm inaktiverat","es":"Alarma de presencia desactivada","fr":"Alarme de présence désactivée","ar":"تم إيقاف إنذار التواجد","de":"Anwesenheitsalarm ausgeschaltet"},"color":"#32C5FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_presence_true","highlight":true,"title":{"en":"The presence alarm turned on","nl":"De aanwezigheidswaarschuwing is geactiveerd","da":"Tilstedeværelsesalarmen er slået til","it":"L\'allarme di presenza si è acceso","ko":"재실이면","no":"Tilstedeværelsesalarmen ble aktivert","pl":"Włączył się alarm obecności","ru":"Сигнал присутствия включен","sv":"Närvarolarmet aktiverat","es":"La alarma de presencia se ha activado","fr":"L\'alarme de présence s\'est activée","ar":"تم تشغيل إنذار التواجد","de":"Der Anwesenheitsalarm ist eingeschaltet"}},{"id":"alarm_presence_false","title":{"en":"The presence alarm turned off","nl":"De aanwezigheidswaarschuwing is gedeactiveerd","da":"Tilstedeværelsesalarm slået fra","it":"L\'allarme di presenza si è spento","ko":"부재이면","no":"Tilstedeværelsesalarmen ble deaktivert","pl":"Wyłączył się alarm obecności","ru":"Сигнал присутствия выключен","sv":"Närvarolarmet inaktiverat","es":"La alarma de presencia se ha desactivado","fr":"L\'alarme de présence s\'est désactivée","ar":"تم إيقاف إنذار التواجد","de":"Der Anwesenheitsalarm ist ausgeschaltet"}}],"conditions":[{"id":"alarm_presence","title":{"en":"The presence alarm is !{{on|off}}","nl":"De aanwezigheidswaarschuwing is !{{geactiveerd|gedeactiveerd}}","da":"Tilstedeværelsesalarmen er !{{tændt|slukket}}","it":"L\'allarme di presenza è !{{acceso|spento}}","ko":"!{{재실|부재}}이면","no":"Tilstedeværelsesalarmen er !{{på|av}}","pl":"Alarm obecności jest !{{włączony|wyłączony}}","ru":"Сигнал присутствия !{{включен|выключен}}","sv":"Närvarolarmet är !{{på|av}}","es":"La alarma de presencia está !{{activada|desactivada}}","fr":"L\'alarme de présence est !{{activée|désactivée}}","ar":"إنذار التواجد !{{يعمل|لا يعمل}}","de":"Der Anwesenheitsalarm ist !{{an|aus}}"}}]},"minCompatibility":"12.2.0"}')},7800:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"PM0.1 Alarm","nl":"PM0.1-waarschuwing","de":"PM0.1-Alarm","fr":"Alarme PM0.1","it":"Allarme PM0.1","sv":"PM0.1-larm","no":"PM0.1-alarm","es":"Alarma de PM0,1","da":"PM0.1-alarm","ru":"Сигнал ТЧ0.1","pl":"Alarm PM0.1","ko":"나노미세먼지(PM0.1) 알람","ar":"إنذار PM0.1"},"titleShort":{"en":"PM0.1","nl":"PM0.1","de":"PM0.1","fr":"PM0.1","it":"PM0.1","sv":"PM0.1","no":"PM0.1","es":"PM0,1","da":"PM0,1","ru":"ТЧ0,1","pl":"PM0,1","ko":"PM0.1","ar":"PM0.1"},"desc":{"en":"True when PM0.1 values exceeds threshold","nl":"Wordt geactiveerd wanneer PM0.1-waarden de drempel overschrijden","de":"True, wenn PM0.1-Werte die Schwelle überschreiten","fr":"Se déclenche lorsque les valeurs PM0.1 excèdent un seuil","it":"Vero quando i valori PM0.1 superano la soglia","sv":"Sant när PM0.1-värdena överstiger gränsvärdet","no":"Sann når PM0.1-verdiene overskrider grenseverdien","es":"Activado cuando los valores de PM0,1 superan el límite","da":"Sandt, når PM0.1-værdier overskrider grænseværdien","ru":"Значение «истина» при превышении контрольного значения ТЧ0.1","pl":"Prawda, gdy wartości PM0.1 przekraczają próg","ko":"PM0.1 값이 임계값을 초과하면 참","ar":"صحيح عندما تتجاوز قيم PM0.1 الحد"},"insights":true,"insightsTitleTrue":{"en":"PM0.1 alarm turned on","nl":"PM0.1-waarschuwing geactiveerd","de":"PM0.1-Alarm ist angegangen","fr":"Alarme PM0.1 activée","it":"Allarme PM0.1 acceso","sv":"PM0.1-larm aktiverat","no":"PM0.1-alarm aktivert","es":"Alarma de PM0,1 activada","da":"PM0.1-alarm blev aktiveret","ru":"Сигнал ТЧ0.1 включен","pl":"Alarm PM0.1 włączony","ko":"나노미세먼지(PM0.1) 알람 켜짐","ar":"تم تشغيل إنذار PM0.1"},"insightsTitleFalse":{"en":"PM0.1 alarm turned off","nl":"PM0.1-waarschuwing gedeactiveerd","de":"PM0.1-Alarm ist ausgegangen","fr":"Alarme PM0.1 désactivée","it":"Allarme PM0.1 spento","sv":"PM0.1-larm inaktiverat","no":"PM0.1-alarm deaktivert","es":"Alarma de PM0,1 desactivada","da":"PM0.1-alarm blev deaktiveret","ru":"Сигнал ТЧ0.1 выключен","pl":"Alarm PM0.1 wyłączony","ko":"나노미세먼지(PM0.1) 알람 꺼짐","ar":"تم إيقاف إنذار PM0.1"},"color":"#E02020","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_pm01_true","highlight":true,"title":{"en":"The PM0.1 alarm turned on","nl":"De PM0.1-waarschuwing is geactiveerd","de":"Der PM0.1-Alarm ist angegangen","fr":"L\'alarme PM0.1 s\'est activée","it":"L\'allarme PM0.1 si è acceso","sv":"PM0.1-larmet aktiverat","no":"PM0.1-alarmen ble aktivert","es":"La alarma de PM0,1 se ha activado","da":"PM0.1-alarmen blev aktiveret","ru":"Сигнал ТЧ0.1 включен","pl":"Włączył się alarm PM0.1","ko":"나노미세먼지(PM0.1) 알람이 \'예\'이면","ar":"تم تشغيل إنذار PM0.1"}},{"id":"alarm_pm01_false","title":{"en":"The PM0.1 alarm turned off","nl":"De PM0.1-waarschuwing is gedeactiveerd","de":"Der PM0.1-Alarm ist ausgegangen","fr":"L\'alarme PM0.1 s\'est désactivée","it":"L\'allarme PM0.1 si è spento","sv":"PM0.1-larmet inaktiverat","no":"PM0.1-alarmen ble deaktivert","es":"La alarma de PM0,1 se ha desactivado","da":"PM0.1-alarmen blev deaktiveret","ru":"Сигнал ТЧ0.1 выключен","pl":"Wyłączył się alarm PM0.1","ko":"나노미세먼지(PM0.1) 알람이 \'아니요\'이면","ar":"تم إيقاف إنذار PM0.1"}}],"conditions":[{"id":"alarm_pm01","title":{"en":"The PM0.1 alarm is !{{on|off}}","nl":"De PM0.1-waarschuwing is !{{geactiveerd|gedeactiveerd}}","de":"Der PM0.1-Alarm ist !{{an|aus}}","fr":"L\'alarme PM0.1 est !{{activée|désactivée}}","it":"L\'allarme PM0.1 è !{{acceso|spento}}","sv":"PM0.1-larmet är !{{på|av}}","no":"PM0.1-alarmen er !{{på|av}}","es":"La alarma de PM0,1 está !{{activada|desactivada}}","da":"PM0.1-alarmen er !{{tændt|slukket}}","ru":"Сигнал ТЧ0.1 !{{включен|выключен}}","pl":"Alarm PM0.1 jest !{{włączony|wyłączony}}","ko":"나노미세먼지(PM0.1) 알람이 !{{\'예\'|\'아니요\'}}이면","ar":"إنذار PM0.1 !{{يعمل|لا يعمل}}"}}]},"minCompatibility":"12.2.0"}')},7850:e=>{"use strict";e.exports=function(e,t,a){var r=" ",i=e.level,n=e.dataLevel,s=e.schema[t],o=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+"/"+t,d=!e.opts.allErrors,u="data"+(n||""),m="valid"+i,p=e.opts.$data&&s&&s.$data;p&&(r+=" var schema"+i+" = "+e.util.getData(s.$data,n,e.dataPathArr)+"; ");var c="schema"+i;if(!p)if(s.length0:e.util.schemaHasRules(y,e.RULES.all))||(g[g.length]=v)}}else g=s;if(p||g.length){var b=e.errorPath,w=p||g.length>=e.opts.loopRequired,z=e.opts.ownProperties;if(d)if(r+=" var missing"+i+"; ",w){p||(r+=" var "+c+" = validate.schema"+o+"; ");var P="' + "+(C="schema"+i+"["+(E="i"+i)+"]")+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(b,C,e.opts.jsonPointers)),r+=" var "+m+" = true; ",p&&(r+=" if (schema"+i+" === undefined) "+m+" = true; else if (!Array.isArray(schema"+i+")) "+m+" = false; else {"),r+=" for (var "+E+" = 0; "+E+" < "+c+".length; "+E+"++) { "+m+" = "+u+"["+c+"["+E+"]] !== undefined ",z&&(r+=" && Object.prototype.hasOwnProperty.call("+u+", "+c+"["+E+"]) "),r+="; if (!"+m+") break; } ",p&&(r+=" } "),r+=" if (!"+m+") { ",(S=S||[]).push(r),r="",!1!==e.createErrors?(r+=" { keyword: 'required' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { missingProperty: '"+P+"' } ",!1!==e.opts.messages&&(r+=" , message: '",e.opts._errorDataPathProperty?r+="is a required property":r+="should have required property \\'"+P+"\\'",r+="' "),e.opts.verbose&&(r+=" , schema: validate.schema"+o+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),r+=" } "):r+=" {} ";var _=r;r=S.pop(),!e.compositeRule&&d?e.async?r+=" throw new ValidationError(["+_+"]); ":r+=" validate.errors = ["+_+"]; return false; ":r+=" var err = "+_+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+=" } else { "}else{r+=" if ( ";var S,A=g;if(A)for(var E=-1,j=A.length-1;E{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Data Size","nl":"Gegevensgrootte","da":"Datastørrelse","it":"Dimensione dei dati","ko":"데이터 크기","pl":"Rozmiar danych","ru":"Размер данных","sv":"Datastorlek","es":"Tamaño de los datos","fr":"Taille des données","no":"Datastørrelse","ar":"حجم البيانات","de":"Datengröße"},"units":{"en":"bytes","nl":"bytes","da":"bytes","it":"byte","ko":"bytes ","pl":"bajty","ru":"байты","sv":"byte","es":"bytes","fr":"octets","no":"byte","ar":"بايت","de":"Bytes"},"desc":{"en":"The data size in bytes.","nl":"De gegevensgrootte in bytes.","da":"Datastørrelsen i bytes.","it":"La dimensione dei dati in byte.","ko":"바이트 단위의 데이터 크기입니다.","pl":"Rozmiar danych w bajtach.","ru":"Размер данных в байтах.","sv":"Datastorlek i byte.","es":"El tamaño de los datos en bytes.","fr":"La taille des données en octets.","no":"Datastørrelsen i byte.","ar":"حجم البيانات بالبايت.","de":"Die Datengröße in Bytes."},"insights":true,"chartType":"spline","decimals":0,"color":"#6236FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_data_size_changed","title":{"en":"The data size changed","nl":"De gegevensgrootte is veranderd","da":"Datastørrelsen er ændret","it":"La dimensione dei dati è cambiata","ko":"데이터 크기가 변경되면","pl":"Zmienił się rozmiar danych","ru":"Размер данных изменился","sv":"Datastorleken ändrades","es":"El tamaño de los datos ha cambiado","fr":"La taille des données a changé","no":"Datastørrelsen ble endret","ar":"تغير حجم البيانات","de":"Die Datengröße hat sich geändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":200}]}]},"minCompatibility":"12.2.0"}')},7920:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"HEPA filter level","nl":"HEPA-filterniveau","da":"Niveau for HEPA-filter","it":"Livello del filtro HEPA","ko":"헤파 필터 상태","pl":"Poziom filtra HEPA","ru":"Уровень HEPA-фильтра","sv":"HEPA-filternivå","es":"Nivel del filtro HEPA","fr":"Niveau du filtre HEPA","no":"HEPA-filternivå","ar":"مستوى فلتر HEPA","de":"HEPA-Filterwert"},"desc":{"en":"The level of degredation on the HEPA filter.","nl":"De mate van aantasting van het HEPA-filter.","da":"Niveauet af nedbrydning på HEPA-filteret.","it":"Il livello di degradazione del filtro HEPA.","ko":"HEPA 필터의 오염 수준입니다.","pl":"Poziom degradacji filtra HEPA.","ru":"Уровень снижения производительности HEPA-фильтра.","sv":"Graden av nedbrytning på HEPA-filtret.","es":"El nivel de degradación del filtro HEPA.","fr":"Le niveau de dégradation du filtre HEPA.","no":"Nedbrytingsnivået for HEPA-filteret.","ar":"مستوى التدهور في فلتر HEPA.","de":"Der Verschleißgrad des HEPA-Filters."},"values":[{"id":"ok","title":{"en":"OK","nl":"OK","da":"OK","it":"OK","ko":"좋음","pl":"OK","ru":"Нормальный","sv":"OK","es":"Correcto","fr":"OK","no":"OK","ar":"جيد","de":"OK"}},{"id":"warning","title":{"en":"Warning","nl":"Waarschuwing","da":"Advarsel","it":"Attenzione","ko":"주의","pl":"Ostrzeżenie","ru":"Требующий внимания","sv":"Varning","es":"Advertencia","fr":"Avertissement","no":"Advarsel","ar":"تحذير","de":"Warnung"}},{"id":"critical","title":{"en":"Critical","nl":"Kritiek","da":"Kritisk","it":"Critico","ko":"교체 필요","pl":"Krytyczny","ru":"Критический","sv":"Kritisk","es":"Crítico","fr":"Critique","no":"Kritisk","ar":"حرج","de":"Kritisch"}}],"color":"#E02020","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"level_hepa_filter_changed","highlight":true,"title":{"en":"The HEPA filter level changed to","nl":"Het HEPA-filterniveau is veranderd naar","da":"HEPA-filterets niveau blev ændret til","it":"Il livello del filtro HEPA è passato a","ko":"헤파 필터 상태가 다음으로 변경되면","pl":"Poziom filtra HEPA zmienił się na","ru":"Уровень HEPA-фильтра изменился на","sv":"HEPA-filternivån ändrades till","es":"El filtro HEPA ha cambiado a","fr":"Le niveau du filtre HEPA est passé à","no":"HEPA-filternivået ble endret til","ar":"تغير مستوى فلتر HEPA إلى","de":"Der HEPA-Filterwert hat sich geändert auf"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"level_hepa_filter_is","title":{"en":"The HEPA filter level !{{is|is not}}","nl":"Het HEPA-filterniveau !{{is|is niet}}","da":"HEPA-filterets niveau !{{er|er ikke}}","it":"Il livello del filtro HEPA !{{è|non è}}","ko":"헤파 필터 상태가 다음!{{이면|이 아니면}}","pl":"Poziom filtra HEPA !{{jest|nie jest}}","ru":"Уровень фильтра HEPA !{{|не}}","sv":"HEPA-filternivån !{{är|är inte}}","es":"El nivel del filtro HEPA !{{es|no es}}","fr":"Le niveau du filtre HEPA !{{est|n\'est pas}}","no":"HEPA-filternivået !{{er|er ikke}}","ar":"مستوى فلتر HEPA !{{هو|ليس}}","de":"Der HEPA-Filterwert !{{ist|ist nicht}}"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.2.0"}')},7935:e=>{"use strict";e.exports=function(e,t,a){var r,i=" ",n=e.level,s=e.dataLevel,o=e.schema[t],l=e.schemaPath+e.util.getProperty(t),d=e.errSchemaPath+"/"+t,u=!e.opts.allErrors,m="data"+(s||""),p=e.opts.$data&&o&&o.$data;if(p?(i+=" var schema"+n+" = "+e.util.getData(o.$data,s,e.dataPathArr)+"; ",r="schema"+n):r=o,!p&&"number"!=typeof o)throw new Error(t+" must be number");var c="maxLength"==t?">":"<";i+="if ( ",p&&(i+=" ("+r+" !== undefined && typeof "+r+" != 'number') || "),!1===e.opts.unicode?i+=" "+m+".length ":i+=" ucs2length("+m+") ",i+=" "+c+" "+r+") { ";var g=t,h=h||[];h.push(i),i="",!1!==e.createErrors?(i+=" { keyword: '"+(g||"_limitLength")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(d)+" , params: { limit: "+r+" } ",!1!==e.opts.messages&&(i+=" , message: 'should NOT be ",i+="maxLength"==t?"longer":"shorter",i+=" than ",i+=p?"' + "+r+" + '":""+o,i+=" characters' "),e.opts.verbose&&(i+=" , schema: ",i+=p?"validate.schema"+l:""+o,i+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),i+=" } "):i+=" {} ";var v=i;return i=h.pop(),!e.compositeRule&&u?e.async?i+=" throw new ValidationError(["+v+"]); ":i+=" validate.errors = ["+v+"]; return false; ":i+=" var err = "+v+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",i+="} ",u&&(i+=" else { "),i}},7937:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Lock","nl":"Slot","de":"Schloss","fr":"Verrou","it":"Serratura","sv":"Lås","no":"Lås","es":"Cerradura","da":"Lås","ru":"Замок","pl":"Zamek","ko":"잠금 장치","ar":"قفل"},"description":{"en":"Use this device class for lock devices, usually together with the `locked` and `lock_mode` capabilities.","de":"Nutze diese Geräteklasse für Schloss-Geräte - normalerweise zusammen mit den `locked`- und `lock_mode`-Fähigkeiten.","fr":"Utilisez cette classe d\'appareil pour les appareils verrou, généralement avec les capacités `locked` et `lock_mode`.","it":"Utilizza questa classe di dispositivi per le serrature, generalmente insieme alle funzioni `locked` e `lock_mode`.","sv":"Använd den här enhetsklassen för att låsa enheter, oftast tillsammans med funktionerna `locked` och `lock_mode`.","no":"Bruk denne enhetsklassen for låseenheter, ofte sammen med funksjonene `locked` og `lock_mode`.","es":"Utiliza esta clase de dispositivo para las cerraduras, generalmente junto con las capacidades de `locked` y `lock_mode`.","da":"Brug denne enhedsklasse til låseenheder, normalt sammen med `locked` and `lock_mode` funktionerne.","ru":"Используйте этот класс устройств для замков, обычно вместе с функциями `locked` и `lock_mode`.","pl":"Użyj tej klasy urządzeń dla produktów z zamkiem, zwykle razem ze zdolnościami `locked` i `lock_mode`.","ko":"이 디바이스 클래스는 보통 \'locked\' 및 \'lock_mode\' 기능을 갖춘 잠금장치인 록 디바이스에 사용합니다.","ar":"استخدم فئة الجهاز هذه لأجهزة القفل، عادةً مع إمكانيات \'locked\' (مقفل) و\'lock_mode\' (وضع القفل).","nl":"Gebruik deze apparaatklasse voor vergrendelde apparaten, meestal samen met de opties \'locked\' en \'lock_mode\'."}}')},7951:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Volume","nl":"Volume","da":"Volumen","it":"Volume","ko":"부피","pl":"Objętość","ru":"Объем","sv":"Volym","es":"Volumen","fr":"Volume","no":"Volum","ar":"الحجم","de":"Volumen"},"units":{"en":"L","nl":"L","da":"L","it":"L","ko":"L","pl":"l","ru":"Л","sv":"L","es":"L","fr":"L","no":"L","ar":"لتر","de":"L"},"desc":{"en":"The volume of the content in liters.","nl":"Het volume van de inhoud in liters.","da":"Indholdets volumen i liter.","it":"Il volume del contenuto in litri.","ko":"리터 단위의 내용물 부피입니다.","pl":"Objętość zawartości w litrach.","ru":"Объем содержимого в литрах.","sv":"Innehållets volym i liter.","es":"El volumen del contenido en litros.","fr":"Le volume du contenu en litres.","no":"Volumet av innholdet i liter.","ar":"حجم المحتوى باللتر.","de":"Das Volumen des Inhalts in Litern."},"insights":true,"chartType":"spline","decimals":2,"color":"#9033FC","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_content_volume_changed","title":{"en":"The volume changed","nl":"Het volume is veranderd","da":"Lydstyrken ændrede sig","it":"Il volume è cambiato","ko":"부피가 변경되면","pl":"Zmieniła się objętość","ru":"Объем изменился","sv":"Volymen ändrades","es":"El volumen ha cambiado","fr":"Le volume a changé\\n","no":"Volumet ble endret","ar":"تغير الحجم","de":"Das Volumen hat sich geändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":2}]}]},"minCompatibility":"12.2.0"}')},7975:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Laundry dryer dryness","ar":"جفاف مجفف الغسيل","da":"Tørretumblerens tørhed","de":"Trocknung des Wäschetrockners","es":"Secado en secadora","fr":"Séchage du linge","it":"Asciugatura del bucato","ko":"건조기 건조도","nl":"Droogte van wasdroger","no":"Tørkenivå for tørketrommel","pl":"Suchość suszarki do prania","ru":"Степень сухости сушильной машины","sv":"Torktumlarens torrhet"},"desc":{"en":"The dryness setting of the laundry dryer.","ar":"إعداد الجفاف في مجفف الغسيل.","da":"Tørretumblerens indstilling af tørhed.","de":"Die Trocknungseinstellung des Wäschetrockners.","es":"El ajuste de secado de la secadora.","fr":"Le réglage de séchage du sèche-linge.","it":"L\'impostazione di asciugatura dell\'asciugatrice.","ko":"건조기의 건조도 설정입니다.","nl":"De droogte-instelling van de wasdroger.","no":"Tørkeinnstillingen på tørketrommelen.","pl":"Ustawienie suchości suszarki do prania","ru":"Настройка степени сухости сушильной машины.","sv":"Torktumlarens inställning för torrhet."},"values":[{"id":"low","title":{"en":"Low","nl":"Laag","da":"Lavt","it":"Basso","ko":"약하게","pl":"Niski","ru":"Низкая","sv":"Låg","es":"Bajo","fr":"Faible","no":"Lav","ar":"منخفض","de":"Niedrig"}},{"id":"normal","title":{"en":"Normal","nl":"Normaal","da":"Normal","it":"Normale","ko":"보통","pl":"Normalny","ru":"Стандарт","sv":"Normal","es":"Normal","fr":"Normal","no":"Standard","ar":"عادي","de":"Normal"}},{"id":"extra","title":{"en":"Extra","nl":"Extra","da":"Ekstra","it":"Extra","ko":"강력","pl":"Wyższy","ru":"Повышенная","sv":"Extra","es":"Extra","fr":"Extra","no":"Ekstra","ar":"إضافي","de":"Extra"}},{"id":"max","title":{"en":"Max","nl":"Max","da":"Maks","it":"Max","ko":"최대","pl":"Maksymalny","ru":"Максимальная","sv":"Max","es":"Máximo","fr":"Max","no":"Maks.","ar":"الحد الأقصى","de":"Max."}}],"color":"#0091FF","getable":true,"setable":true,"uiComponent":"picker","$flow":{"triggers":[{"id":"laundry_dryer_dryness_changed","title":{"en":"The dryness changed to","ar":"تم تغيير الجفاف إلى","da":"Tørheden ændrede sig til","de":"Die Trocknung wurde gestellt auf","es":"El secado ha cambiado a","fr":"Le séchage a changé pour","it":"L\'asciugatura è cambiata in","ko":"건조도가 다음으로 변경되면","nl":"De droogte veranderde naar","no":"Tørkenivået ble endret til","pl":"Suchość zmieniła się na","ru":"Степень сухости изменена на","sv":"Torrheten ändrades till"},"args":[{"name":"dryness","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"laundry_dryer_dryness_is","title":{"en":"The dryness !{{is|is not}}","ar":"الجفاف !{{هو|ليس}}","da":"Tørheden !{{is|is not}}","de":"Die Trocknung !{{ist|ist nicht}}","es":"El secado !{{está|no está}}","fr":"Le séchage {{est|n\'est pas}}","it":"L\'asciugatura !{{è|non è}}","ko":"건조도가 다음!{{이면|이 아니면}}","nl":"De droogte !{{is|is niet}}","no":"Tørkenivået !{{er|er ikke}}","pl":"Suchość !{{jest|nie jest}}","ru":"Степень сухости — !{{ | не}}","sv":"Torrheten !{{är|är inte}}"},"args":[{"name":"dryness","type":"dropdown","values":"$values"}]}],"actions":[{"id":"set_laundry_dryer_dryness","title":{"en":"Set the laundry dryer dryness to","ar":"اضبط درجة جفاف مجفف الغسيل على","da":"Indstil tørretumblerens tørhed til","de":"Stellen Sie den Trocknungsgrad des Wäschetrockners auf","es":"Establece el secado de la secadora en","fr":"Règlez le séchage du sèche-linge sur","it":"Imposta l\'asciugatura dell\'asciugatrice su","ko":"건조기 건조도를 다음으로 설정","nl":"Stel de droogte van de wasdroger in op","no":"Sett tørkenivået for tørketrommelen til","pl":"Ustaw suchość suszarki na","ru":"Установить степень сухости сушильной машины на","sv":"Ställ in torktumlarens torrhet på"},"args":[{"name":"dryness","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.11.0"}')},7992:e=>{"use strict";e.exports=function(e,t,a){var r,i,n=" ",s=e.level,o=e.dataLevel,l=e.schema[t],d=e.schemaPath+e.util.getProperty(t),u=e.errSchemaPath+"/"+t,m=!e.opts.allErrors,p="data"+(o||""),c="valid"+s,g="errs__"+s,h=e.opts.$data&&l&&l.$data;h?(n+=" var schema"+s+" = "+e.util.getData(l.$data,o,e.dataPathArr)+"; ",i="schema"+s):i=l;var v,f,k,y,b,w=this,z="definition"+s,P=w.definition,_="";if(h&&P.$data){b="keywordValidate"+s;var S=P.validateSchema;n+=" var "+z+" = RULES.custom['"+t+"'].definition; var "+b+" = "+z+".validate;"}else{if(!(y=e.useCustomRule(w,l,e.schema,e)))return;i="validate.schema"+d,b=y.code,v=P.compile,f=P.inline,k=P.macro}var A=b+".errors",E="i"+s,j="ruleErr"+s,C=P.async;if(C&&!e.async)throw new Error("async keyword in sync schema");if(f||k||(n+=A+" = null;"),n+="var "+g+" = errors;var "+c+";",h&&P.$data&&(_+="}",n+=" if ("+i+" === undefined) { "+c+" = true; } else { ",S&&(_+="}",n+=" "+c+" = "+z+".validateSchema("+i+"); if ("+c+") { ")),f)P.statements?n+=" "+y.validate+" ":n+=" "+c+" = "+y.validate+"; ";else if(k){var O=e.util.copy(e);_="",O.level++;var L="valid"+O.level;O.schema=y.validate,O.schemaPath="";var T=e.compositeRule;e.compositeRule=O.compositeRule=!0;var D=e.validate(O).replace(/validate\.schema/g,b);e.compositeRule=O.compositeRule=T,n+=" "+D}else{(F=F||[]).push(n),n="",n+=" "+b+".call( ",e.opts.passContext?n+="this":n+="self",v||!1===P.schema?n+=" , "+p+" ":n+=" , "+i+" , "+p+" , validate.schema"+e.schemaPath+" ",n+=" , (dataPath || '')",'""'!=e.errorPath&&(n+=" + "+e.errorPath);var M=o?"data"+(o-1||""):"parentData",x=o?e.dataPathArr[o]:"parentDataProperty",$=n+=" , "+M+" , "+x+" , rootData ) ";n=F.pop(),!1===P.errors?(n+=" "+c+" = ",C&&(n+="await "),n+=$+"; "):n+=C?" var "+(A="customErrors"+s)+" = null; try { "+c+" = await "+$+"; } catch (e) { "+c+" = false; if (e instanceof ValidationError) "+A+" = e.errors; else throw e; } ":" "+A+" = null; "+c+" = "+$+"; "}if(P.modifying&&(n+=" if ("+M+") "+p+" = "+M+"["+x+"];"),n+=""+_,P.valid)m&&(n+=" if (true) { ");else{var F;n+=" if ( ",void 0===P.valid?(n+=" !",n+=k?""+L:""+c):n+=" "+!P.valid+" ",n+=") { ",r=w.keyword,(F=F||[]).push(n),n="",(F=F||[]).push(n),n="",!1!==e.createErrors?(n+=" { keyword: '"+(r||"custom")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(u)+" , params: { keyword: '"+w.keyword+"' } ",!1!==e.opts.messages&&(n+=" , message: 'should pass \""+w.keyword+"\" keyword validation' "),e.opts.verbose&&(n+=" , schema: validate.schema"+d+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+p+" "),n+=" } "):n+=" {} ";var I=n;n=F.pop(),!e.compositeRule&&m?e.async?n+=" throw new ValidationError(["+I+"]); ":n+=" validate.errors = ["+I+"]; return false; ":n+=" var err = "+I+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ";var N=n;n=F.pop(),f?P.errors?"full"!=P.errors&&(n+=" for (var "+E+"="+g+"; "+E+"{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Night Alarm","nl":"Nachtalarm","de":"Nachtalarm","fr":"Alarme de nuit","it":"Allarme notturno","sv":"Nattlarm","no":"Nattalarm","es":"Alarma nocturna","da":"Natalarm","ru":"Ночной сигнал","pl":"Alarm nocny","ko":"야간 알람","ar":"إنذار الليل"},"titleShort":{"en":"Night","nl":"Nacht","de":"Nacht","fr":"Nuit","it":"Notte","sv":"Natt","no":"Natt","es":"Noche","da":"Nat","ru":"Ночь","pl":"Noc","ko":"밤","ar":"الليل"},"desc":{"en":"True when it is night","nl":"Gaat af als het nacht is","de":"True, wenn es Nacht ist","fr":"Vrai quand il fait nuit","it":"Vero quando è notte","sv":"Sant när det är natt","no":"Sant når det er natt","es":"Activado cuando es de noche","da":"Sandt, når det er nat","ru":"Значение «истина» ночью","pl":"Adekwatny, kiedy jest noc","ko":"밤이 되면 참","ar":"صحيح عند حلول الليل"},"insights":true,"insightsTitleTrue":{"en":"Night alarm turned on","nl":"Nachtalarm ging af","de":"Nacht-Alarm ist angegangen","fr":"Alarme nuit s\'est activée","it":"Allarme notturno attivato","sv":"Nattlarm aktiverat","no":"Nattalarm aktivert","es":"Alarma nocturna activada","da":"Natalarm blev aktiveret","ru":"Ночной сигнал включен","pl":"Alarm nocny włączony","ko":"야간 알람 켜짐","ar":"تم تشغيل إنذار الليل"},"insightsTitleFalse":{"en":"Night alarm turned off","nl":"Nachtalarm ging uit","de":"Nacht-Alarm ist ausgegangen","fr":"Alarme nuit s\'est désactivée","it":"Allarme notturno disattivato","sv":"Nattlarm inaktiverat","no":"Nattalarm deaktivert","es":"Alarma nocturna desactivada","da":"Natalarm blev deaktiveret","ru":"Ночной сигнал выключен","pl":"Alarm nocny wyłączony","ko":"야간 알람 꺼짐","ar":"تم إيقاف إنذار الليل"},"color":"#9033FC","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_night_true","title":{"en":"The night alarm turned on","nl":"Het nachtalarm gaat aan","de":"Der Nacht-Alarm ist angegangen","fr":"L\'alarme nuit s\'est activée","it":"L\'allarme notturno è stato attivato","sv":"Nattlarmet aktiverat","no":"Nattalarmen ble aktivert","es":"La alarma nocturna se ha activado","da":"Natalarmen blev aktiveret","ru":"Ночной сигнал включен","pl":"Alarm nocny włączony","ko":"야간이면","ar":"تم تشغيل إنذار الليل"}},{"id":"alarm_night_false","title":{"en":"The night alarm turned off","nl":"Het nachtalarm gaat uit","de":"Der Nacht-Alarm ist ausgegangen","fr":"L\'alarme nuit s\'est désactivée","it":"L\'allarme notturno è stato disattivato","sv":"Nattlarmet inaktiverat","no":"Nattalarmen ble deaktivert","es":"La alarma nocturna se ha desactivado","da":"Natalarmen blev deaktiveret","ru":"Ночной сигнал выключен","pl":"Alarm nocny wyłączony","ko":"야간이 아니면","ar":"تم إيقاف إنذار الليل"}}],"conditions":[{"id":"alarm_night","title":{"en":"The night alarm is !{{on|off}}","nl":"Het nachtalarm is !{{aan|uit}}","de":"Der Nacht-Alarm ist !{{an|aus}}","fr":"L\'alarme nuit est !{{en marche|arrêtée}}","it":"L\'allarme notturno è !{{acceso|spento}}","sv":"Nattlarmet är !{{på|av}}","no":"Nattalarmen er !{{på|av}}","es":"La alarma nocturna está !{{activada|desactivada}}","da":"Natalarmen er !{{tændt|slukket}}","ru":"Ночной сигнал !{{вкл.|выкл.}}","pl":"Alarm nocny jest !{{włączony|wyłączony}}","ko":"야간!{{이면|이 아니면}}","ar":"إنذار الليل !{{يعمل|لا يعمل}}"}}]}}')},8013:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Rotation","nl":"Rotatie","da":"Rotation","it":"Rotazione","ko":"회전각","pl":"Rotacja","ru":"Вращение","sv":"Rotation","es":"Rotación","fr":"Rotation","no":"Rotasjon","ar":"الدوران","de":"Rotation"},"units":{"en":"°","nl":"°","da":"°","it":"°","ko":"°","pl":"°","ru":"°","sv":"°","es":"°","fr":"°","no":"°","ar":"°","de":"°"},"desc":{"en":"The rotation in degrees.","nl":"De rotatie in graden.","da":"Rotationen i grader.","it":"La rotazione in gradi.","ko":"도 단위의 회전각입니다.","pl":"Obrót w stopniach.","ru":"Вращение в градусах.","sv":"Rotationen i grader.","es":"La rotación en grados.","fr":"La rotation en degrés.","no":"Rotasjonen i grader.","ar":"الدوران بالدرجات.","de":"Die Rotation in Grad."},"insights":true,"chartType":"spline","decimals":1,"color":"#6236FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_rotation_changed","title":{"en":"The rotation changed","nl":"De rotatie is veranderd","da":"Rotationen ændrede sig","it":"La rotazione è cambiata","ko":"회전각이 변경되면","pl":"Zmieniła się rotacja","ru":"Вращение изменилось","sv":"Rotationen ändrades","es":"La rotación ha cambiado","fr":"La rotation a changé","no":"Rotasjonen ble endret","ar":"تغير الدوران","de":"Die Rotation hat sich geändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":200}]}]},"minCompatibility":"12.2.0"}')},8019:(e,t,a)=>{"use strict";var r=a(7354),i=a(1030),n=a(4006),s=a(2585),o=a(2492),l=a(5950),d=a(3845),u=a(1897),m=a(6740);e.exports=f,f.prototype.validate=function(e,t){var a;if("string"==typeof e){if(!(a=this.getSchema(e)))throw new Error('no schema with key or ref "'+e+'"')}else{var r=this._addSchema(e);a=r.validate||this._compile(r)}var i=a(t);return!0!==a.$async&&(this.errors=a.errors),i},f.prototype.compile=function(e,t){var a=this._addSchema(e,void 0,t);return a.validate||this._compile(a)},f.prototype.addSchema=function(e,t,a,r){if(Array.isArray(e)){for(var n=0;n{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Vacuum cleaner job mode","nl":"Stofzuigermodus","da":"Støvsugerens jobtilstand","it":"Modalità di lavoro dell\'aspirapolvere","ko":"청소 모드","pl":"Tryb pracy odkurzacza","ru":"Режим работы пылесоса","sv":"Dammsugarens arbetsläge","es":"Modo de trabajo del aspirador","fr":"Mode de fonctionnement de l\'aspirateur","no":"Jobbmodus for støvsuger","ar":"وضع مهمة المكنسة الكهربائية","de":"Arbeitsmodus des Staubsaugers"},"values":[{"id":"off","title":{"en":"Off","nl":"Uit","da":"Fra","it":"Off","ko":"꺼짐","pl":"Wył","ru":"Выкл.","sv":"Av","es":"Desactivado","fr":"Désactivé","no":"Av","ar":"إيقاف التشغيل","de":"Aus"}},{"id":"normal","title":{"en":"Normal","nl":"Normaal","da":"Normal","it":"Normale","ko":"보통","pl":"Normalny","ru":"Нормальный","sv":"Normal","es":"Normal","fr":"Normal","no":"Normal","ar":"عادي","de":"Normal"}},{"id":"high","title":{"en":"High","nl":"Hoog","da":"Høj","it":"Alto","ko":"강력","pl":"Wysoki","ru":"Интенсивный","sv":"Hög","es":"Alto","fr":"Élevé","no":"Høy","ar":"عالي","de":"Hoch"}},{"id":"turbo","title":{"en":"Turbo","nl":"Turbo","da":"Turbo","it":"Turbo","ko":"터보","pl":"Turbo","ru":"Турбо","sv":"Turbo","es":"Turbo","fr":"Turbo","no":"Turbo","ar":"تربو","de":"Turbo"}},{"id":"mop","title":{"en":"Mop","nl":"Dweilen","da":"Moppe","it":"Lavaggio","ko":"물걸레","pl":"Mop","ru":"Швабра","sv":"Mopp","es":"Fregado","fr":"Serpillère","no":"Mopping","ar":"مسح","de":"Mopp"}},{"id":"auto","title":{"en":"Auto","nl":"Automatisch","da":"Auto","it":"Auto","ko":"자동","pl":"Auto","ru":"Авто\\n","sv":"Auto","es":"Automático","fr":"Automatique","no":"Automatisk","ar":"تلقائي","de":"Automatisch"}}],"color":"#0091FF","getable":true,"setable":true,"uiComponent":"picker","$flow":{"triggers":[{"id":"vacuumcleaner_job_mode_changed","title":{"en":"The job mode changed to","nl":"De modus is veranderd in","da":"Jobtilstanden er ændret til","it":"La modalità di lavoro è passata a","ko":"작업 모드가 다음으로 변경되면","no":"Jobbmodusen ble endret til","pl":"Tryb pracy zmienił się na","ru":"Режим работы изменен на:","sv":"Arbetsläget har ändrats till","es":"El modo de trabajo ha cambiado a","fr":"Le mode de fonctionnement est passé à","ar":"تم تغيير وضع المهمة إلى","de":"Der Auftragsmodus wurde geändert auf"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"vacuumcleaner_job_mode_is","title":{"en":"The job mode !{{is|is not}}","nl":"De modus !{{is|is niet}}","da":"Jobtilstanden !{{er|er ikke}}","it":"La modalità di lavoro !{{è|non è}}","ko":"작동 모드가 다음!{{이면|이 아니면}}","pl":"Tryb pracy !{{to|to nie}}","ru":"Режим работы !{{|не}}","sv":"Arbetsläget !{{är|är inte}}","es":"El modo de trabajo !{{está|no está}}","fr":"Le mode fonctionnement !{{est|n\'est pas}}","no":"Jobbmodusen !{{er|er ikke}}","ar":"وضع المهمة !{{هو|ليس}}","de":"Der Auftragsmodus !{{ist|ist nicht}}"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}],"actions":[{"id":"set_vacuumcleaner_job_mode","title":{"en":"Set the job mode to","nl":"Stel de modus in op","da":"Indstil jobtilstanden til","it":"Imposta la modalità di lavoro su","ko":"작동 모드를 다음으로 설정","pl":"Ustaw tryb pracy na","ru":"Установить режим работы на","sv":"Ställ in arbetsläget på","es":"Ajustar el modo de trabajo en","fr":"Définir le mode de fonctionnement sur","no":"Sett jobbmodusen til","ar":"ضبط وضع المهمة على","de":"Stelle den Auftragsmodus auf"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.2.0"}')},8062:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Mower state","nl":"Staat van de maaier","da":"Plæneklipperens tilstand","it":"Stato del tosaerba","ko":"잔디깎기 상태","pl":"Stan kosiarki","ru":"Состояние косилки","sv":"Gräsllipparens tillstånd","es":"Estado del cortacésped","fr":"État de la tondeuse","no":"Gressklipperstatus","ar":"حالة الجزازة","de":"Zustand des Rasenmähers"},"desc":{"en":"The current state of the lawnmower.","da":"Plæneklipperens nuværende tilstand.","it":"Lo stato attuale del tosaerba.","ko":"잔디 깎는 기계의 현재 상태입니다.","nl":"De huidige staat van de grasmaaier.","pl":"Aktualny stan kosiarki.","ru":"Текущее состояние газонокосилки.","sv":"Det aktuella tillståndet för gräsklipparen.","es":"El estado actual del cortacésped.","fr":"L\'état actuel de la tondeuse à gazon.","no":"Gressklipperens nåværende tilstand.","ar":"الحالة الحالية لجزازة العشب.","de":"Der aktuelle Zustand des Rasenmähers."},"values":[{"id":"mowing","title":{"en":"Mowing","da":"Klipper","it":"Falciatura in corso","ko":"작동 중","nl":"Maaien","pl":"W trakcie koszenia","ru":"Кошение","sv":"Klippning","es":"Segando","fr":"Tonte","no":"Klipper gress","ar":"القص","de":"Mähen"}},{"id":"docked","title":{"en":"Docked","da":"Forankret","it":"Alloggiato","ko":"거치됨","nl":"Gekoppeld","pl":"Zadokowana","ru":"На док-станции","sv":"Dockad","es":"En la base de carga","fr":"À la base","no":"I stasjonen","ar":"قيد الإرساء","de":"Angedockt"}},{"id":"paused","title":{"en":"Paused","da":"På pause","it":"In pausa","ko":"일시 정지","nl":"Gepauzeerd","pl":"Wstrzymana","ru":"На паузе","sv":"Pausad","es":"En pausa","fr":"En pause","no":"På pause","ar":"متوقف مؤقتًا","de":"Pausiert"}},{"id":"error","title":{"en":"Error","da":"Fejl","it":"Errore","ko":"에러","nl":"Fout","pl":"Błąd","ru":"Ошибка","sv":"Fel","es":"Error","fr":"Erreur","no":"Feil","ar":"خطأ","de":"Fehler"}}],"color":"#6DD400","getable":true,"setable":true,"uiComponent":"picker","$flow":{"triggers":[{"id":"mower_state_changed","title":{"en":"The lawnmower state changed","da":"Plæneklipperens tilstand ændrede sig","it":"Lo stato del tosaerba è cambiato","ko":"잔디깎기 상태가 변경되면","nl":"De staat van de grasmaaier is veranderd","pl":"Zmienił się stan kosiarki","ru":"Состояние газонокосилки изменилось","sv":"Läget för gräsklippare förändrades","es":"El estado del cortacésped ha cambiado","fr":"L\'état de la tondeuse à gazon a changé","no":"Gressklipperstatusen ble endret","ar":"تغيرت حالة جزازة العشب","de":"Der Zustand des Rasenmähers hat sich geändert"},"args":[{"name":"state","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"mower_state_is","title":{"en":"The lawnmower !{{is|is not}}","da":"Plæneklipperen !{{er|er ikke}}","it":"Il tosaerba !{{è|non è}}","ko":"잔디깎기 상태가 다음!{{이면|이 아니면}}","nl":"De grasmaaier !{{is|is niet}}","pl":"Kosiarka !{{jest|nie jest}}","ru":"Газонокосилка !{{|не}}","sv":"Gräsklipparen !{{är|är inte}}","es":"El cortacésped !{{está|no está}}","fr":"La tondeuse !{{est|n\'est pas}}","no":"Gressklipperen !{{er|er ikke}}","ar":"جزازة العشب !{{هي|ليست}}","de":"Der Rasenmäher !{{ist|ist nicht}}"},"args":[{"name":"state","type":"dropdown","values":"$values"}]}],"actions":[{"id":"mower_state_mow","title":{"en":"Start mowing","da":"Begynd at slå græs","it":"Inizia a falciare","ko":"잔디 깎기 시작","nl":"Beginnen met maaien","pl":"Rozpocznij koszenie","ru":"Начать косить","sv":"Börja klippa gräset","es":"Iniciar segado","fr":"Commencer à tondre","no":"Start gressklipping","ar":"بدء القص","de":"Mähen beginnen"}},{"id":"mower_state_pause","title":{"en":"Pause mowing","da":"Sæt plæneklipning på pause","it":"Sospendi la falciatura","ko":"잔디 깎기 일시중지","nl":"Maaien onderbreken","pl":"Wstrzymaj koszenie","ru":"Приостановить кошение","sv":"Pausa klippningen","es":"Pausar segado","fr":"Interrompre la tonte","no":"Sett gressklippingen på pause","ar":"إيقاف القص مؤقتًا","de":"Mähen unterbrechen"}},{"id":"mower_state_dock","title":{"en":"Return to dock","da":"Vend tilbage til base","it":"Torna all\'alloggiamento","ko":"도크로 복귀","nl":"Terug naar dok","pl":"Powrót do doku","ru":"Вернуться на док-станцию","sv":"Återgå till dockan","es":"Volver a la base de carga","fr":"Retour à la base","no":"Gå tilbake til stasjonen","ar":"العودة إلى المرساة","de":"Rückkehr zum Dock"}}]},"minCompatibility":"12.2.0"}')},8114:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Cold Alarm","nl":"Kou-alarm","da":"Kuldealarm","es":"Alarma de frío","fr":"Alarme de froid","it":"Allarme freddo","ko":"한파 알림","no":"Kuldealarm","pl":"Alarm zimna","ru":"Сигнал холода","sv":"Köldlarm","ar":"إنذار البرودة","de":"Kältealarm"},"titleShort":{"en":"Cold","nl":"Koud","da":"Kulde","es":"Frío","fr":"Froid","it":"Freddo","ko":"추움","no":"Kulde","pl":"Zimno","ru":"Холод","sv":"Kyla","ar":"برودة","de":"Kälte"},"desc":{"en":"True when the temperature is too low.","nl":"Wordt geactiveerd wanneer de temperatuur te laag is.","da":"Sandt, når temperaturen er for lav.","es":"Activado cuando la temperatura es muy baja.","fr":"Se déclenche lorsque la température est trop basse.","it":"Vero quando la temperatura è troppo bassa.","ko":"온도가 너무 낮으면 참입니다.","no":"Sann når temperaturen er for lav.","pl":"Prawda, gdy temperatura jest zbyt niska.","ru":"Значение «истина», когда температура слишком низкая.","sv":"Sant när temperaturen är för låg.","ar":"صحيح عندما تكون درجة الحرارة منخفضة جدًا.","de":"Wahr, wenn die Temperatur zu niedrig ist."},"insights":true,"insightsTitleTrue":{"en":"Cold alarm turned on","nl":"Waarschuwing bij kou geactiveerd","da":"Kuldealarm tændt","es":"Alarma de frío activada","fr":"Alarme de froid activée","it":"Allarme freddo acceso","ko":"한파 알림 켜짐","no":"Kuldealarm aktivert","pl":"Alarm zimna włączony","ru":"Сигнал холода включен","sv":"Köldlarm aktiverat","ar":"تم تشغيل إنذار البرودة","de":"Kältealarm eingeschaltet"},"insightsTitleFalse":{"en":"Cold alarm turned off","nl":"Waarschuwing bij kou gedeactiveerd","da":"Kuldealarm slukket","es":"Alarma de frío desactivada","fr":"Alarme de froid désactivée","it":"Allarme freddo spento","ko":"한파 알림 꺼짐","no":"Kuldealarm deaktivert","pl":"Alarm zimna wyłączony","ru":"Сигнал холода выключен","sv":"Köldlarm inaktiverat","ar":"تم إيقاف إنذار البرودة","de":"Kältealarm ausgeschaltet"},"color":"#0091FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_cold_true","highlight":true,"title":{"en":"The cold alarm turned on","nl":"De waarschuwing bij kou is geactiveerd","da":"Kuldealarm tændt","es":"Alarma de frío activada","fr":"L\'alarme de froid s\'est activée","it":"L\'allarme freddo si è acceso","ko":"한파 알림이 \'예\'이면","no":"Kuldealarmen ble aktivert","pl":"Włączył się alarm zimna","ru":"Сигнал холода включен","sv":"Köldlarmet aktiverat","ar":"تم تشغيل إنذار البرودة","de":"Der Kältealarm wurde eingeschaltet"}},{"id":"alarm_cold_false","title":{"en":"The cold alarm turned off","nl":"De waarschuwing bij kou is gedeactiveerd","da":"Kuldealarm slukket","es":"Alarma de frío desactivada","fr":"L\'alarme de froid s\'est désactivée","it":"L\'allarme freddo si è spento","ko":"한파 알림이 \'아니요\'이면","no":"Kuldealarmen ble deaktivert","pl":"Wyłączył się alarm zimna","ru":"Сигнал холода выключен","sv":"Köldlarmet inaktiverat","ar":"تم إيقاف إنذار البرودة","de":"Der Kältealarm ist ausgeschaltet"}}],"conditions":[{"id":"alarm_cold","title":{"en":"The cold alarm is !{{on|off}}","nl":"De waarschuwing bij kou is !{{geactiveerd|gedeactiveerd}}","da":"Kuldealarm er slået !{{til|fra}}","es":"La alarma de frío está !{{activada|desactivada}}","it":"L\'allarme freddo è !{{acceso|spento}}","ko":"한파 알림이 !{{\'예\'|\'아니요\'}}이면","no":"Kuldealarmen er !{{på|av}}","pl":"Alarm zimna jest !{{włączony|wyłączony}}","ru":"Сигнал холода !{{включен|выключен}}","sv":"Köldlarmet är !{{av|på}}","fr":"L\'alarme de froid est !{{activée|désactivée}}","ar":"إنذار البرودة !{{يعمل|لا يعمل}}","de":"Der Kältealarm ist !{{an|aus}}"}}]},"minCompatibility":"12.2.0"}')},8142:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Rain Alarm","ar":"إنذار المطر","da":"Regnalarm","de":"Regenalarm","es":"Alarma de lluvia","fr":"Alarme de pluie","it":"Allarme pioggia","ko":"강우 알람","nl":"Regenalarm","no":"Regnalarm","pl":"Alarm deszczu","ru":"Сигнализация дождя","sv":"Regnlarm"},"titleShort":{"en":"Rain","ar":"المطر","da":"Regn","de":"Regen","es":"Lluvia","fr":"Pluie","it":"Pioggia","ko":"비","nl":"Regen","no":"Regn","pl":"Deszcz","ru":"Дождь","sv":"Regn"},"desc":{"en":"True when rain is detected.","ar":"صحيح عند اكتشاف هطول الأمطار.","da":"Sandt, når der registreres regn.","de":"Wahr, wenn Regen erkannt wird.","es":"Verdadero cuando se detecta lluvia.","fr":"Se déclenche lorsque de la pluie est détectée.","it":"Vero quando viene rilevata la pioggia.","ko":"비가 감지되면 참입니다.","nl":"Waar wanneer regen wordt gedetecteerd.","no":"Sann når regn er påvist.","pl":"Prawda, gdy wykryto deszcz.","ru":"Истина, когда обнаружен дождь.","sv":"Sant när regn detekteras."},"insights":true,"insightsTitleTrue":{"en":"Rain alarm turned on","ar":"تم تشغيل إنذار المطر","da":"Regnalarm slået til","de":"Regenalarm ist eingeschaltet","es":"Alarma de lluvia desactivada","fr":"Alarme de pluie activée","it":"Allarme pioggia attivato","ko":"강우 알람 켜짐","nl":"Regenalarm ingeschakeld","no":"Regnalarm aktivert","pl":"Alarm deszczu włączony","ru":"Сигнализация дождя включена","sv":"Regnlarmet aktiverat"},"insightsTitleFalse":{"en":"Rain alarm turned off","ar":"تم إيقاف تشغيل إنذار المطر","da":"Regnalarm slået fra","de":"Regenalarm ausgeschaltet","es":"Alarma de lluvia desactivada","fr":"Alarme de pluie désactivée","it":"Allarme pioggia disattivato","ko":"강우 알람 꺼짐","nl":"Regenalarm uitgeschakeld","no":"Regnalarm deaktivert","pl":"Alarm deszczu wyłączony","ru":"Сигнализация дождя выключена","sv":"Regnlarmet avstängt"},"color":"#0091FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_rain_true","highlight":true,"title":{"en":"The rain alarm turned on","ar":"تم تشغيل إنذار المطر","da":"Regnalarmen blev slået til","de":"Der Regenalarm hat sich eingeschaltet","es":"La alarma de lluvia se ha activado","fr":"L\'alarme de pluie s\'est activée","it":"L\'allarme pioggia si è attivato","ko":"강우 알람이 켜져 있으면","nl":"Het regenalarm aan gaat","no":"Regnalarmen ble aktivert","pl":"Alarm deszczu włączył się","ru":"Сигнализация дождя включена","sv":"Regnlarmet aktiverat"}},{"id":"alarm_rain_false","title":{"en":"The rain alarm turned off","ar":"تم إيقاف تشغيل إنذار المطر","da":"Regnalarmen er slået fra","de":"Der Regenalarm wurde ausgeschaltet","es":"La alarma de lluvia se ha desactivado","fr":"L\'alarme de pluie s\'est désactivée","it":"L\'allarme pioggia si è disattivato","ko":"강우 알람이 꺼져 있으면","nl":"Het regenalarm uit gaat","no":"Regnalarmen ble deaktivert","pl":"Alarm deszczu wyłączył się","ru":"Сигнализация дождя выключена","sv":"Regnlarmet avstängt"}}],"conditions":[{"id":"alarm_rain","title":{"en":"The rain alarm is !{{on|off}}","ar":"إنذار المطر !{{يعمل|لا يعمل}}","da":"Regnalarmen er !{{tændt|slukket}}","de":"Der Regenalarm ist !{{an|aus}}","es":"La alarma de lluvia está !{{activada|desactivada}}","fr":"L\'alarme de pluie est !{{activée|désactivée}}","it":"L\'allarme pioggia è!{{attivo|non attivo}}","ko":"강우 알람이 !{{켜져|꺼져}} 있으면","nl":"Het regenalarm staat !{{aan|uit}}","no":"Regnalarmen er !{{på|av}}","pl":"Alarm deszczu jest!{{włączony|wyłączony}}","ru":"Сигнализация дождя !{{включена|выключена}}","sv":"Regnlarmet är !{{on|off}}"}}]},"minCompatibility":"12.11.0"}')},8148:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Car","da":"Bil","de":"Auto","es":"Coche","fr":"Voiture","it":"Automobile","ko":"자동차","nl":"Auto","no":"Bil","pl":"Samochód","ru":"Автомобиль","sv":"Bil","ar":"سيارة"},"description":{"en":"Use this device class for any kind of car.","da":"Brug denne enhedsklasse til enhver form for bil.","de":"Verwenden Sie diese Geräteklasse für jede Art von Auto.","es":"Utiliza esta clase de dispositivo para cualquier tipo de coche.","fr":"Cette classe d\'appareils peut être utilisée pour tout type de voiture.","it":"Utilizza questa classe di dispositivi per qualsiasi tipo di automobile.","ko":"이 디바이스는 모든 종류의 자동차에 사용합니다.","nl":"Gebruik deze apparaatklasse voor elk type auto.","no":"Bruk denne enhetsklassen for alle slags biler.","pl":"Ta klasa urządzeń jest przeznaczona do każdego rodzaju samochodu.","ru":"Используйте этот класс устройств для автомобилей любого типа.","sv":"Använd den här enhetsklassen för alla typer av bilar.","ar":"استخدم فئة الجهاز هذه لأي نوع من السيارات."},"minCompatibility":"12.0.0"}')},8184:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Radiator","da":"Radiator","de":"Heizkörper","es":"Radiador","fr":"Radiateur","it":"Radiatore","ko":"라디에이터","nl":"Radiator","no":"Radiator","pl":"Grzejnik","ru":"Обогреватель","sv":"Element","ar":"رادياتير"},"description":{"en":"Use this device class for radiators.","da":"Brug denne enhedsklasse til radiatorer.","de":"Verwenden Sie diese Geräteklasse für Heizkörper.","es":"Utiliza esta clase de dispositivo para radiadores.","fr":"Utiliser cette classe d\'appareils pour les radiateurs.","it":"Utilizza questa classe di dispositivi per i radiatori.","ko":"이 디바이스 클래스는 라디에이터에 사용합니다.","nl":"Gebruik deze apparaatklasse voor radiatoren.","no":"Bruk denne enhetsklassen for radiatorer.","pl":"Tej klasy urządzeń należy używać w przypadku grzejników.","ru":"Используйте этот класс устройств для обогревателей.","sv":"Använd den här enhetsklassen för element.","ar":"استخدم فئة الجهاز هذه للرادياتيرات."},"minCompatibility":"12.0.0"}')},8187:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Fan Mode","nl":"Ventilatormodus","da":"Ventilatortilstand","it":"Modalità ventola","ko":"팬 모드","pl":"Tryb wentylatora","ru":"Режим вентилятора","sv":"Fläktläge","es":"Modo ventilador","fr":"Mode de ventilation","no":"Viftemodus","ar":"وضع المروحة","de":"Lüftermodus"},"values":[{"id":"auto","title":{"en":"Auto","nl":"Automatisch","da":"Auto","it":"Auto","ko":"자동","pl":"Auto","ru":"Авто","sv":"Auto","es":"Automático","fr":"Automatique","no":"Automatisk","ar":"تلقائي","de":"Automatisch"}},{"id":"on","title":{"en":"On","nl":"Aan","da":"Til","it":"On","ko":"켜짐","no":"På","pl":"Wł","ru":"Включен","sv":"På","es":"Activado","fr":"Activé","ar":"تشغيل","de":"Ein"}},{"id":"off","title":{"en":"Off","nl":"Uit","da":"Fra","it":"Off","ko":"꺼짐","no":"Av","pl":"Wył","ru":"Выключен","sv":"Av","es":"Desactivado","fr":"Désactivé","ar":"إيقاف","de":"Aus"}}],"color":"#0091FF","getable":true,"setable":true,"uiComponent":"picker","$flow":{"triggers":[{"id":"fan_mode_changed","title":{"en":"The fan mode changed to","nl":"De ventilatorstand is veranderd naar","da":"Ventilatortilstanden er ændret til","it":"La modalità ventola è passata a","ko":"팬 모드가 다음으로 변경되면","no":"Viftemodusen ble endret til","pl":"Tryb wentylatora zmienił się na","ru":"Режим вентилятора изменен на:","sv":"Fläktläget har ändrats till","es":"El modo ventilador ha cambiado a","fr":"Le mode de ventilation est passé à","ar":"تم تغيير وضع المروحة إلى","de":"Der Lüftermodus wurde geändert auf"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"fan_mode_is","title":{"en":"The fan mode !{{is|is not}}","nl":"De ventilatormodus !{{is|is niet}}","da":"Ventilatortilstand !{{er|er ikke}}","it":"La modalità ventola !{{è|non è}}","ko":"팬 모드가 다음!{{이면|이 아니면}}","no":"Viftemodusen !{{er|er ikke}}","pl":"Tryb wentylatora !{{jest|nie jest}}","ru":"Режим вентилятора !{{|не}}","sv":"Fläktläge !{{är|är inte}}","es":"El modo ventilador !{{está|no está}}","fr":"Le mode de ventilation !{{est|n\'est pas}}","ar":"وضع المروحة !{{هو|ليس}}","de":"Der Lüftermodus !{{ist|ist nicht}}"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}],"actions":[{"id":"set_fan_mode","title":{"en":"Set the fan mode to","nl":"Stel de ventilatorstand in op","da":"Indstil ventilatortilstand til","it":"Imposta la modalità ventola su","ko":"팬 모드를 다음으로 설정","no":"Sett viftemodusen til","pl":"Ustaw tryb wentylatora na","ru":"Установить режим вентилятора на:","sv":"Ställ in fläktläget på","es":"Ajustar el modo de ventilador en","fr":"Définir le mode de ventilation sur","ar":"ضبط وضع المروحة على","de":"Stelle den Lüftermodus auf"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.2.0"}')},8198:e=>{"use strict";e.exports=JSON.parse('{"$schema":"http://json-schema.org/draft-07/schema#","$id":"http://json-schema.org/draft-07/schema#","title":"Core schema meta-schema","definitions":{"schemaArray":{"type":"array","minItems":1,"items":{"$ref":"#"}},"nonNegativeInteger":{"type":"integer","minimum":0},"nonNegativeIntegerDefault0":{"allOf":[{"$ref":"#/definitions/nonNegativeInteger"},{"default":0}]},"simpleTypes":{"enum":["array","boolean","integer","null","number","object","string"]},"stringArray":{"type":"array","items":{"type":"string"},"uniqueItems":true,"default":[]}},"type":["object","boolean"],"properties":{"$id":{"type":"string","format":"uri-reference"},"$schema":{"type":"string","format":"uri"},"$ref":{"type":"string","format":"uri-reference"},"$comment":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"default":true,"readOnly":{"type":"boolean","default":false},"examples":{"type":"array","items":true},"multipleOf":{"type":"number","exclusiveMinimum":0},"maximum":{"type":"number"},"exclusiveMaximum":{"type":"number"},"minimum":{"type":"number"},"exclusiveMinimum":{"type":"number"},"maxLength":{"$ref":"#/definitions/nonNegativeInteger"},"minLength":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"pattern":{"type":"string","format":"regex"},"additionalItems":{"$ref":"#"},"items":{"anyOf":[{"$ref":"#"},{"$ref":"#/definitions/schemaArray"}],"default":true},"maxItems":{"$ref":"#/definitions/nonNegativeInteger"},"minItems":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"uniqueItems":{"type":"boolean","default":false},"contains":{"$ref":"#"},"maxProperties":{"$ref":"#/definitions/nonNegativeInteger"},"minProperties":{"$ref":"#/definitions/nonNegativeIntegerDefault0"},"required":{"$ref":"#/definitions/stringArray"},"additionalProperties":{"$ref":"#"},"definitions":{"type":"object","additionalProperties":{"$ref":"#"},"default":{}},"properties":{"type":"object","additionalProperties":{"$ref":"#"},"default":{}},"patternProperties":{"type":"object","additionalProperties":{"$ref":"#"},"propertyNames":{"format":"regex"},"default":{}},"dependencies":{"type":"object","additionalProperties":{"anyOf":[{"$ref":"#"},{"$ref":"#/definitions/stringArray"}]}},"propertyNames":{"$ref":"#"},"const":true,"enum":{"type":"array","items":true,"minItems":1,"uniqueItems":true},"type":{"anyOf":[{"$ref":"#/definitions/simpleTypes"},{"type":"array","items":{"$ref":"#/definitions/simpleTypes"},"minItems":1,"uniqueItems":true}]},"format":{"type":"string"},"contentMediaType":{"type":"string"},"contentEncoding":{"type":"string"},"if":{"$ref":"#"},"then":{"$ref":"#"},"else":{"$ref":"#"},"allOf":{"$ref":"#/definitions/schemaArray"},"anyOf":{"$ref":"#/definitions/schemaArray"},"oneOf":{"$ref":"#/definitions/schemaArray"},"not":{"$ref":"#"}},"default":true}')},8220:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Turned on","nl":"Aangezet","de":"Eingeschaltet","fr":"Activé","it":"Attivato","sv":"Aktiverad","no":"Aktivert","es":"Encendido","da":"Tændt","ru":"Включено","pl":"Włączone","ko":"전원","ar":"مشغل"},"color":"#9033FC","getable":true,"setable":true,"insights":true,"insightsTitleTrue":{"en":"Turned on","nl":"Aangezet","de":"Eingeschaltet","fr":"Activé","it":"Attivato","sv":"Aktiverad","no":"Aktivert","es":"Encendido","da":"Tændt","ru":"Включено","pl":"Włączone","ko":"전원 켜짐","ar":"مشغل"},"insightsTitleFalse":{"en":"Turned off","nl":"Uitgezet","de":"Ausgeschaltet","fr":"Désactivé","it":"Disattivato","sv":"Inaktiverad","no":"Deaktivert","es":"Apagado","da":"Slukket","ru":"Выключено","pl":"Wyłączone","ko":"전원 꺼짐","ar":"متوقف"},"options":{"setOnDim":{"type":"boolean","default":true,"desc":{"en":"When a device has both an `onoff` and `dim` capability, and Homey wants to turn the device on AND to a specific dim value, set this capability to `false` to prevent Homey from sending a set command.","de":"Wenn ein Gerät sowohl \'An/Aus\'- als auch \'Dimm\'-Fähigkeit hat und Homey das Gerät anschalten UND auf einen bestimmten Wert dimmen will, setze diese Fähigkeit auf \'false\', um Homey am Senden eines Setzen-Befehls zu hindern.","fr":"Quand un appareil peut `allumer/éteindre` et `estomper`, et que Homey veut allumer l\'appareil ET sur une valeur d\'estompage spécifique, définissez cette capacité sur `faux` pour empêcher Homey d\'envoyer une commande de définition.","it":"Quando un dispositivo può \'accendersi\' e \'attenuarsi\' e Homey desidera attivare il dispositivo E definire un valore specifico, imposta questa funzione su \'falso\' per impedire a Homey di inviare un comando di definizione.","sv":"När en enhet har både en `på/av`- och `dim`-funktionalitet och Homey vill slå på enheten OCH till ett specifikt dimvärde, sätt den här funktionen till `falsk` för att förhindra att Homey skickar ett inställningskommando.","no":"Når en enhet har både en `på/av`- og en `dempe`-funksjon og Homey vil slå på enheten OG sette dempingen til en spesifikk verdi, sett denne egenskapen til `usann` for å forhindre at Homey sender en innstillingskommando.","es":"Cuando un dispositivo tiene tanto la capacidad \'encender/apagar\' como la de \'intensidad de la luz\', y Homey quiere encender el dispositivo Y ajustar una intensidad concreta, configura esta capacidad como \'falso\' para evitar que Homey envíe un comando de configuración.","da":"Når en enhed har både en `tænd/sluk`- og en `dæmpe`-funktion, og Homey vil tænde for enheden OG indstille til en specifik dæmpeværdi, skal denne funktion indstilles til `falsk` for at forhindre, at Homey sender en indstillingskommando.","ru":"Когда устройство имеет функции `onoff` и `dim`, и Homey хочет включить устройство ТАКЖЕ с определенным значением яркости, установите для этой функции значение `false`, чтобы Homey не отправил команду на установку.","pl":"Jeśli urządzenie ma zdolności „wł.wył.” i „przygaś”, a urządzenie Homey chce włączyć produkt ORAZ ustawić konkretną wartość przygaszenia, ustaw tę zdolność jako „nieadekwatne” – w ten sposób Homey nie będzie wysyłać ustawionych poleceń.","ko":"제품에 \'전원\' 및 \'밝기\' 기능이 모두 있는데 Homey가 제품을 켜는 동시에 특정한 조절값으로 설정하길 원한다면 이 기능을 \'거짓\'으로 설정해 Homey가 설정 명령을 보내지 않도록 하세요.","ar":"عندما يحتوي الجهاز على كل من إمكانية \'تشغيل/إيقاف\' و\'تعتيم\'، ويريد Homey تشغيل الجهاز وضبط قيمة تعتيم محددة، اضبط هذه الإمكانية على \'false\' (خطأ) لمنع Homey من إرسال أمر ضبط.","nl":"Wanneer een apparaat een mogelijkheid voor zowel \'onoff\' als \'dim\' heeft, en Homey wil het apparaat aanzetten EN op een specifieke dimwaarde instellen, stel deze mogelijkheid dan in op \'false\' om te voorkomen dat Homey een vast commando stuurt."}},"greyout":{"type":"boolean","default":false,"desc":{"en":"When this capability is false, give a visual hint to greyout the device.","de":"wenn diese Fähigkeit \'false\' ist, gibt es einen visuellenen Hinweis, um das Gerät auszugrauen.","fr":"Quand cette capacité est fausse, donnez un indice visuel pour griser cet appareil.","it":"Quando questa funzione è impostata su falso, dai un indizio visivo per far apparire questo dispositivo in grigio.","sv":"När den här funktionen är falsk, ge en ett visuellt tips för att gråa ut enheten.","no":"Når denne egenskapen er usann, gi et visuelt tips for å vise enheten i grått.","es":"Cuando esta capacidad es falsa, da una indicación visual para poner en gris el dispositivo.","da":"Når denne funktion er falsk, skal du give et visuelt tip for at vise enheden i grå.","ru":"Когда функция ложна, установите визуальную подсказку, чтобы выделить устройство серым цветом.","pl":"Jeśli zdolność jest nieadekwatna, użyj wizualnej wskazówki, aby wyświetlić urządzenie na szaro.","ko":"이 기능이 거짓으로 설정되면 제품이 회색으로 표시되어 쉽게 식별할 수 있어요.","ar":"عندما تكون هذه الإمكانية خاطئة، أعط تلميحًا مرئيًا لتغميق الجهاز.","nl":"Als deze mogelijkheid \'false\' is, geef dan een visuele hint om het apparaat grijs te maken."}}},"uiComponent":"toggle","uiQuickAction":true,"$flow":{"triggers":[{"id":"onoff_true","highlight":true,"title":{"en":"Turned on","nl":"Aangezet ","de":"Angeschaltet","fr":"Activé","it":"Attivato","sv":"Aktiverad","no":"Aktivert","es":"Encendido","da":"Tændt","ru":"Включено","pl":"Włączone","ko":"켜지면","ar":"مشغل"}},{"id":"onoff_false","highlight":true,"title":{"en":"Turned off","nl":"Uitgezet","de":"Ausgeschaltet","fr":"Désactivé","it":"Disattivato","sv":"Inaktiverad","no":"Deaktivert","es":"Apagado","da":"Slukket","ru":"Выключено","pl":"Wyłączone","ko":"꺼지면","ar":"متوقف"}}],"conditions":[{"id":"on","title":{"en":"Is turned !{{on|off}}","nl":"Is !{{aan|uit}}","de":"Ist !{{an|aus}}","fr":"Est !{{activé|désactivé}}","it":"È !{{attivato|disattivato}}","sv":"Är !{{på|av}}","no":"Er slått !{{på|av}}","es":"Está !{{encendido|apagado}}","da":"Er !{{tændt|slukket}}","ru":"!{{Вкл.|Выкл.}}","pl":"Jest !{{włączone|wyłączone}}","ko":"!{{켜지면|꺼지면}}","ar":"!{{قيد التشغيل|متوقف عن التشغيل}}"}},{"id":"open","title":{"en":"Is !{{open|closed}}","nl":"Is !{{geopend|gesloten}}","de":"Ist !{{offen|geschlossen}}","fr":"Est !{{ouvert|fermé}}","it":"È !{{aperto|chiuso}}","sv":"Är !{{öppen|stängd}}","no":"Er !{{åpen|lukket}}","es":"Está !{{abierto|cerrado}}","da":"Er !{{åben|lukket}}","ru":"!{{Открыто|Закрыто}}","pl":"Jest !{{otwarte|zamknięte}}","ko":"!{{열리면|닫히면}}","ar":"!{{مفتوح|مغلق}}"},"$filter":{"class":"windowcoverings|curtain|blinds|sunshade"}}],"actions":[{"id":"on","highlight":true,"title":{"en":"Turn on","nl":"Zet aan","de":"Einschalten","fr":"Activer","it":"Attiva","sv":"Aktivera","no":"Slå på","es":"Encender","da":"Tændt","ru":"Включить","pl":"Włącz","ko":"켜기","ar":"مشغل"}},{"id":"off","highlight":true,"title":{"en":"Turn off","nl":"Zet uit","de":"Ausschalten","fr":"Désactiver","it":"Disattiva","sv":"Stäng av","no":"Slå av","es":"Apagar","da":"Slukket","ru":"Выключить","pl":"Wyłącz","ko":"끄기","ar":"متوقف"}},{"id":"toggle","title":{"en":"Toggle on or off","nl":"Schakel aan of uit","de":"Ein- oder ausschalten","fr":"Alterner activé ou désactivé","it":"Attiva o disattiva","sv":"Växla på och av","no":"Veksle mellom på og av","es":"Encender o apagar","da":"Tænd eller sluk","ru":"Переключатель включить/выключить","pl":"Przełącz na wł. lub wył.","ko":"켬/끔 상태 전환하기","ar":"تبديل التشغيل أو الإيقاف"}},{"id":"open","title":{"en":"Open the curtain or blind","nl":"Open de gordijnen","de":"Vorhang oder Rollladen öffnen","fr":"Ouvrir le rideau ou le store","it":"Apri la tenda o le persiane","sv":"Öppna gardin eller persienn","no":"Åpne gardinen eller persiennen","es":"Abrir cortina o persiana","da":"Åbn gardiner eller persienner","ru":"Открыть штору или жалюзи","pl":"Rozchyl zasłonę lub roletę","ko":"커튼 또는 블라인드 열기","ar":"فتح الستارة أو الستارة الدوارة"},"$filter":{"class":"windowcoverings|curtain|blinds|sunshade"}},{"id":"close","title":{"en":"Close the curtain or blind","nl":"Sluit de gordijnen","de":"Vorhang oder Rollladen schließen","fr":"Fermer le rideau ou le store","it":"Chiudi la tenda o le persiane","sv":"Stäng gardin eller persienn","no":"Trekk for gardinen eller persiennen","es":"Cerrar cortina o persiana","da":"Luk gardiner eller persienner","ru":"Закрыть штору или жалюзи","pl":"Zasuń zasłonę lub roletę","ko":"커튼 또는 블라인드 닫기","ar":"إغلاق الستارة أو الستارة الدوارة"},"$filter":{"class":"windowcoverings|curtain|blinds|sunshade"}}]}}')},8272:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Light mode","nl":"Lamp modus","de":"Lichtmodus","fr":"Mode lumière","it":"Modalità luce","sv":"Lampläge","no":"Lysmodus","es":"Modo de la luz","da":"Lystilstand","ru":"Режим света","pl":"Tryb oświetlenia","ko":"라이트 모드","ar":"وضع الضوء"},"desc":{"en":"Switch between color or temperature mode","nl":"Schakel tussen kleur of temperatuur modus","de":"Zwischen Farb- und Temperaturmodus wechseln","fr":"Passer entre les modes couleur ou température","it":"Passa tra le modalità colore o temperatura","sv":"Växla mellan färg- och temperatur-läge","no":"Veksle mellom farge- og temperaturmodus","es":"Cambia entre los modos color y temperatura","da":"Skift mellem farve- eller temperaturtilstand","ru":"Переключение между цветовым или температурным режимом","pl":"Przełączaj między trybem barwy lub temperatury","ko":"색상 또는 온도 모드 간에 전환","ar":"التبديل بين وضع اللون أو درجة الحرارة"},"values":[{"id":"color","title":{"en":"Color","nl":"Kleur","de":"Farbe","fr":"Couleur","it":"Colore","sv":"Färg","no":"Farge","es":"Color","da":"Farve","ru":"Цвет","pl":"Barwa","ko":"색상","ar":"اللون"}},{"id":"temperature","title":{"en":"Temperature","nl":"Temperatuur","de":"Temperatur","fr":"Température","it":"Temperatura","sv":"Temperatur","no":"Temperatur","es":"Temperatura","da":"Temperatur","ru":"Температура","pl":"Temperatura","ko":"온도","ar":"درجة الحرارة"}}],"color":"#F7B500","getable":true,"setable":true,"uiComponent":"color"}')},8287:(e,t,a)=>{"use strict";const r=a(7526),i=a(251),n="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;t.hp=l,t.IS=50;const s=2147483647;function o(e){if(e>s)throw new RangeError('The value "'+e+'" is invalid for option "size"');const t=new Uint8Array(e);return Object.setPrototypeOf(t,l.prototype),t}function l(e,t,a){if("number"==typeof e){if("string"==typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return m(e)}return d(e,t,a)}function d(e,t,a){if("string"==typeof e)return function(e,t){if("string"==typeof t&&""!==t||(t="utf8"),!l.isEncoding(t))throw new TypeError("Unknown encoding: "+t);const a=0|h(e,t);let r=o(a);const i=r.write(e,t);return i!==a&&(r=r.slice(0,i)),r}(e,t);if(ArrayBuffer.isView(e))return function(e){if(J(e,Uint8Array)){const t=new Uint8Array(e);return c(t.buffer,t.byteOffset,t.byteLength)}return p(e)}(e);if(null==e)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(J(e,ArrayBuffer)||e&&J(e.buffer,ArrayBuffer))return c(e,t,a);if("undefined"!=typeof SharedArrayBuffer&&(J(e,SharedArrayBuffer)||e&&J(e.buffer,SharedArrayBuffer)))return c(e,t,a);if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type number');const r=e.valueOf&&e.valueOf();if(null!=r&&r!==e)return l.from(r,t,a);const i=function(e){if(l.isBuffer(e)){const t=0|g(e.length),a=o(t);return 0===a.length||e.copy(a,0,0,t),a}return void 0!==e.length?"number"!=typeof e.length||Z(e.length)?o(0):p(e):"Buffer"===e.type&&Array.isArray(e.data)?p(e.data):void 0}(e);if(i)return i;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof e[Symbol.toPrimitive])return l.from(e[Symbol.toPrimitive]("string"),t,a);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function u(e){if("number"!=typeof e)throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function m(e){return u(e),o(e<0?0:0|g(e))}function p(e){const t=e.length<0?0:0|g(e.length),a=o(t);for(let r=0;r=s)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+s.toString(16)+" bytes");return 0|e}function h(e,t){if(l.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||J(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);const a=e.length,r=arguments.length>2&&!0===arguments[2];if(!r&&0===a)return 0;let i=!1;for(;;)switch(t){case"ascii":case"latin1":case"binary":return a;case"utf8":case"utf-8":return G(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*a;case"hex":return a>>>1;case"base64":return W(e).length;default:if(i)return r?-1:G(e).length;t=(""+t).toLowerCase(),i=!0}}function v(e,t,a){let r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===a||a>this.length)&&(a=this.length),a<=0)return"";if((a>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return O(this,t,a);case"utf8":case"utf-8":return A(this,t,a);case"ascii":return j(this,t,a);case"latin1":case"binary":return C(this,t,a);case"base64":return S(this,t,a);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return L(this,t,a);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}function f(e,t,a){const r=e[t];e[t]=e[a],e[a]=r}function k(e,t,a,r,i){if(0===e.length)return-1;if("string"==typeof a?(r=a,a=0):a>2147483647?a=2147483647:a<-2147483648&&(a=-2147483648),Z(a=+a)&&(a=i?0:e.length-1),a<0&&(a=e.length+a),a>=e.length){if(i)return-1;a=e.length-1}else if(a<0){if(!i)return-1;a=0}if("string"==typeof t&&(t=l.from(t,r)),l.isBuffer(t))return 0===t.length?-1:y(e,t,a,r,i);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,a):Uint8Array.prototype.lastIndexOf.call(e,t,a):y(e,[t],a,r,i);throw new TypeError("val must be string, number or Buffer")}function y(e,t,a,r,i){let n,s=1,o=e.length,l=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;s=2,o/=2,l/=2,a/=2}function d(e,t){return 1===s?e[t]:e.readUInt16BE(t*s)}if(i){let r=-1;for(n=a;no&&(a=o-l),n=a;n>=0;n--){let a=!0;for(let r=0;ri&&(r=i):r=i;const n=t.length;let s;for(r>n/2&&(r=n/2),s=0;s>8,i=a%256,n.push(i),n.push(r);return n}(t,e.length-a),e,a,r)}function S(e,t,a){return 0===t&&a===e.length?r.fromByteArray(e):r.fromByteArray(e.slice(t,a))}function A(e,t,a){a=Math.min(e.length,a);const r=[];let i=t;for(;i239?4:t>223?3:t>191?2:1;if(i+s<=a){let a,r,o,l;switch(s){case 1:t<128&&(n=t);break;case 2:a=e[i+1],128==(192&a)&&(l=(31&t)<<6|63&a,l>127&&(n=l));break;case 3:a=e[i+1],r=e[i+2],128==(192&a)&&128==(192&r)&&(l=(15&t)<<12|(63&a)<<6|63&r,l>2047&&(l<55296||l>57343)&&(n=l));break;case 4:a=e[i+1],r=e[i+2],o=e[i+3],128==(192&a)&&128==(192&r)&&128==(192&o)&&(l=(15&t)<<18|(63&a)<<12|(63&r)<<6|63&o,l>65535&&l<1114112&&(n=l))}}null===n?(n=65533,s=1):n>65535&&(n-=65536,r.push(n>>>10&1023|55296),n=56320|1023&n),r.push(n),i+=s}return function(e){const t=e.length;if(t<=E)return String.fromCharCode.apply(String,e);let a="",r=0;for(;rr.length?(l.isBuffer(t)||(t=l.from(t)),t.copy(r,i)):Uint8Array.prototype.set.call(r,t,i);else{if(!l.isBuffer(t))throw new TypeError('"list" argument must be an Array of Buffers');t.copy(r,i)}i+=t.length}return r},l.byteLength=h,l.prototype._isBuffer=!0,l.prototype.swap16=function(){const e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let t=0;ta&&(e+=" ... "),""},n&&(l.prototype[n]=l.prototype.inspect),l.prototype.compare=function(e,t,a,r,i){if(J(e,Uint8Array)&&(e=l.from(e,e.offset,e.byteLength)),!l.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===t&&(t=0),void 0===a&&(a=e?e.length:0),void 0===r&&(r=0),void 0===i&&(i=this.length),t<0||a>e.length||r<0||i>this.length)throw new RangeError("out of range index");if(r>=i&&t>=a)return 0;if(r>=i)return-1;if(t>=a)return 1;if(this===e)return 0;let n=(i>>>=0)-(r>>>=0),s=(a>>>=0)-(t>>>=0);const o=Math.min(n,s),d=this.slice(r,i),u=e.slice(t,a);for(let e=0;e>>=0,isFinite(a)?(a>>>=0,void 0===r&&(r="utf8")):(r=a,a=void 0)}const i=this.length-t;if((void 0===a||a>i)&&(a=i),e.length>0&&(a<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");let n=!1;for(;;)switch(r){case"hex":return b(this,e,t,a);case"utf8":case"utf-8":return w(this,e,t,a);case"ascii":case"latin1":case"binary":return z(this,e,t,a);case"base64":return P(this,e,t,a);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return _(this,e,t,a);default:if(n)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),n=!0}},l.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};const E=4096;function j(e,t,a){let r="";a=Math.min(e.length,a);for(let i=t;ir)&&(a=r);let i="";for(let r=t;ra)throw new RangeError("Trying to access beyond buffer length")}function D(e,t,a,r,i,n){if(!l.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||te.length)throw new RangeError("Index out of range")}function M(e,t,a,r,i){V(t,r,i,e,a,7);let n=Number(t&BigInt(4294967295));e[a++]=n,n>>=8,e[a++]=n,n>>=8,e[a++]=n,n>>=8,e[a++]=n;let s=Number(t>>BigInt(32)&BigInt(4294967295));return e[a++]=s,s>>=8,e[a++]=s,s>>=8,e[a++]=s,s>>=8,e[a++]=s,a}function x(e,t,a,r,i){V(t,r,i,e,a,7);let n=Number(t&BigInt(4294967295));e[a+7]=n,n>>=8,e[a+6]=n,n>>=8,e[a+5]=n,n>>=8,e[a+4]=n;let s=Number(t>>BigInt(32)&BigInt(4294967295));return e[a+3]=s,s>>=8,e[a+2]=s,s>>=8,e[a+1]=s,s>>=8,e[a]=s,a+8}function $(e,t,a,r,i,n){if(a+r>e.length)throw new RangeError("Index out of range");if(a<0)throw new RangeError("Index out of range")}function F(e,t,a,r,n){return t=+t,a>>>=0,n||$(e,0,a,4),i.write(e,t,a,r,23,4),a+4}function I(e,t,a,r,n){return t=+t,a>>>=0,n||$(e,0,a,8),i.write(e,t,a,r,52,8),a+8}l.prototype.slice=function(e,t){const a=this.length;(e=~~e)<0?(e+=a)<0&&(e=0):e>a&&(e=a),(t=void 0===t?a:~~t)<0?(t+=a)<0&&(t=0):t>a&&(t=a),t>>=0,t>>>=0,a||T(e,t,this.length);let r=this[e],i=1,n=0;for(;++n>>=0,t>>>=0,a||T(e,t,this.length);let r=this[e+--t],i=1;for(;t>0&&(i*=256);)r+=this[e+--t]*i;return r},l.prototype.readUint8=l.prototype.readUInt8=function(e,t){return e>>>=0,t||T(e,1,this.length),this[e]},l.prototype.readUint16LE=l.prototype.readUInt16LE=function(e,t){return e>>>=0,t||T(e,2,this.length),this[e]|this[e+1]<<8},l.prototype.readUint16BE=l.prototype.readUInt16BE=function(e,t){return e>>>=0,t||T(e,2,this.length),this[e]<<8|this[e+1]},l.prototype.readUint32LE=l.prototype.readUInt32LE=function(e,t){return e>>>=0,t||T(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},l.prototype.readUint32BE=l.prototype.readUInt32BE=function(e,t){return e>>>=0,t||T(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},l.prototype.readBigUInt64LE=Y((function(e){R(e>>>=0,"offset");const t=this[e],a=this[e+7];void 0!==t&&void 0!==a||U(e,this.length-8);const r=t+256*this[++e]+65536*this[++e]+this[++e]*2**24,i=this[++e]+256*this[++e]+65536*this[++e]+a*2**24;return BigInt(r)+(BigInt(i)<>>=0,"offset");const t=this[e],a=this[e+7];void 0!==t&&void 0!==a||U(e,this.length-8);const r=t*2**24+65536*this[++e]+256*this[++e]+this[++e],i=this[++e]*2**24+65536*this[++e]+256*this[++e]+a;return(BigInt(r)<>>=0,t>>>=0,a||T(e,t,this.length);let r=this[e],i=1,n=0;for(;++n=i&&(r-=Math.pow(2,8*t)),r},l.prototype.readIntBE=function(e,t,a){e>>>=0,t>>>=0,a||T(e,t,this.length);let r=t,i=1,n=this[e+--r];for(;r>0&&(i*=256);)n+=this[e+--r]*i;return i*=128,n>=i&&(n-=Math.pow(2,8*t)),n},l.prototype.readInt8=function(e,t){return e>>>=0,t||T(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},l.prototype.readInt16LE=function(e,t){e>>>=0,t||T(e,2,this.length);const a=this[e]|this[e+1]<<8;return 32768&a?4294901760|a:a},l.prototype.readInt16BE=function(e,t){e>>>=0,t||T(e,2,this.length);const a=this[e+1]|this[e]<<8;return 32768&a?4294901760|a:a},l.prototype.readInt32LE=function(e,t){return e>>>=0,t||T(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},l.prototype.readInt32BE=function(e,t){return e>>>=0,t||T(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},l.prototype.readBigInt64LE=Y((function(e){R(e>>>=0,"offset");const t=this[e],a=this[e+7];void 0!==t&&void 0!==a||U(e,this.length-8);const r=this[e+4]+256*this[e+5]+65536*this[e+6]+(a<<24);return(BigInt(r)<>>=0,"offset");const t=this[e],a=this[e+7];void 0!==t&&void 0!==a||U(e,this.length-8);const r=(t<<24)+65536*this[++e]+256*this[++e]+this[++e];return(BigInt(r)<>>=0,t||T(e,4,this.length),i.read(this,e,!0,23,4)},l.prototype.readFloatBE=function(e,t){return e>>>=0,t||T(e,4,this.length),i.read(this,e,!1,23,4)},l.prototype.readDoubleLE=function(e,t){return e>>>=0,t||T(e,8,this.length),i.read(this,e,!0,52,8)},l.prototype.readDoubleBE=function(e,t){return e>>>=0,t||T(e,8,this.length),i.read(this,e,!1,52,8)},l.prototype.writeUintLE=l.prototype.writeUIntLE=function(e,t,a,r){e=+e,t>>>=0,a>>>=0,r||D(this,e,t,a,Math.pow(2,8*a)-1,0);let i=1,n=0;for(this[t]=255&e;++n>>=0,a>>>=0,r||D(this,e,t,a,Math.pow(2,8*a)-1,0);let i=a-1,n=1;for(this[t+i]=255&e;--i>=0&&(n*=256);)this[t+i]=e/n&255;return t+a},l.prototype.writeUint8=l.prototype.writeUInt8=function(e,t,a){return e=+e,t>>>=0,a||D(this,e,t,1,255,0),this[t]=255&e,t+1},l.prototype.writeUint16LE=l.prototype.writeUInt16LE=function(e,t,a){return e=+e,t>>>=0,a||D(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},l.prototype.writeUint16BE=l.prototype.writeUInt16BE=function(e,t,a){return e=+e,t>>>=0,a||D(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},l.prototype.writeUint32LE=l.prototype.writeUInt32LE=function(e,t,a){return e=+e,t>>>=0,a||D(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},l.prototype.writeUint32BE=l.prototype.writeUInt32BE=function(e,t,a){return e=+e,t>>>=0,a||D(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},l.prototype.writeBigUInt64LE=Y((function(e,t=0){return M(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))})),l.prototype.writeBigUInt64BE=Y((function(e,t=0){return x(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))})),l.prototype.writeIntLE=function(e,t,a,r){if(e=+e,t>>>=0,!r){const r=Math.pow(2,8*a-1);D(this,e,t,a,r-1,-r)}let i=0,n=1,s=0;for(this[t]=255&e;++i>>=0,!r){const r=Math.pow(2,8*a-1);D(this,e,t,a,r-1,-r)}let i=a-1,n=1,s=0;for(this[t+i]=255&e;--i>=0&&(n*=256);)e<0&&0===s&&0!==this[t+i+1]&&(s=1),this[t+i]=(e/n|0)-s&255;return t+a},l.prototype.writeInt8=function(e,t,a){return e=+e,t>>>=0,a||D(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},l.prototype.writeInt16LE=function(e,t,a){return e=+e,t>>>=0,a||D(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},l.prototype.writeInt16BE=function(e,t,a){return e=+e,t>>>=0,a||D(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},l.prototype.writeInt32LE=function(e,t,a){return e=+e,t>>>=0,a||D(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},l.prototype.writeInt32BE=function(e,t,a){return e=+e,t>>>=0,a||D(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},l.prototype.writeBigInt64LE=Y((function(e,t=0){return M(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),l.prototype.writeBigInt64BE=Y((function(e,t=0){return x(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),l.prototype.writeFloatLE=function(e,t,a){return F(this,e,t,!0,a)},l.prototype.writeFloatBE=function(e,t,a){return F(this,e,t,!1,a)},l.prototype.writeDoubleLE=function(e,t,a){return I(this,e,t,!0,a)},l.prototype.writeDoubleBE=function(e,t,a){return I(this,e,t,!1,a)},l.prototype.copy=function(e,t,a,r){if(!l.isBuffer(e))throw new TypeError("argument should be a Buffer");if(a||(a=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r=this.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t>>=0,a=void 0===a?this.length:a>>>0,e||(e=0),"number"==typeof e)for(i=t;i=r+4;a-=3)t=`_${e.slice(a-3,a)}${t}`;return`${e.slice(0,a)}${t}`}function V(e,t,a,r,i,n){if(e>a||e3?0===t||t===BigInt(0)?`>= 0${r} and < 2${r} ** ${8*(n+1)}${r}`:`>= -(2${r} ** ${8*(n+1)-1}${r}) and < 2 ** ${8*(n+1)-1}${r}`:`>= ${t}${r} and <= ${a}${r}`,new N.ERR_OUT_OF_RANGE("value",i,e)}!function(e,t,a){R(t,"offset"),void 0!==e[t]&&void 0!==e[t+a]||U(t,e.length-(a+1))}(r,i,n)}function R(e,t){if("number"!=typeof e)throw new N.ERR_INVALID_ARG_TYPE(t,"number",e)}function U(e,t,a){if(Math.floor(e)!==e)throw R(e,a),new N.ERR_OUT_OF_RANGE(a||"offset","an integer",e);if(t<0)throw new N.ERR_BUFFER_OUT_OF_BOUNDS;throw new N.ERR_OUT_OF_RANGE(a||"offset",`>= ${a?1:0} and <= ${t}`,e)}B("ERR_BUFFER_OUT_OF_BOUNDS",(function(e){return e?`${e} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"}),RangeError),B("ERR_INVALID_ARG_TYPE",(function(e,t){return`The "${e}" argument must be of type number. Received type ${typeof t}`}),TypeError),B("ERR_OUT_OF_RANGE",(function(e,t,a){let r=`The value of "${e}" is out of range.`,i=a;return Number.isInteger(a)&&Math.abs(a)>2**32?i=H(String(a)):"bigint"==typeof a&&(i=String(a),(a>BigInt(2)**BigInt(32)||a<-(BigInt(2)**BigInt(32)))&&(i=H(i)),i+="n"),r+=` It must be ${t}. Received ${i}`,r}),RangeError);const q=/[^+/0-9A-Za-z-_]/g;function G(e,t){let a;t=t||1/0;const r=e.length;let i=null;const n=[];for(let s=0;s55295&&a<57344){if(!i){if(a>56319){(t-=3)>-1&&n.push(239,191,189);continue}if(s+1===r){(t-=3)>-1&&n.push(239,191,189);continue}i=a;continue}if(a<56320){(t-=3)>-1&&n.push(239,191,189),i=a;continue}a=65536+(i-55296<<10|a-56320)}else i&&(t-=3)>-1&&n.push(239,191,189);if(i=null,a<128){if((t-=1)<0)break;n.push(a)}else if(a<2048){if((t-=2)<0)break;n.push(a>>6|192,63&a|128)}else if(a<65536){if((t-=3)<0)break;n.push(a>>12|224,a>>6&63|128,63&a|128)}else{if(!(a<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;n.push(a>>18|240,a>>12&63|128,a>>6&63|128,63&a|128)}}return n}function W(e){return r.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(q,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function K(e,t,a,r){let i;for(i=0;i=t.length||i>=e.length);++i)t[i+a]=e[i];return i}function J(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function Z(e){return e!=e}const Q=function(){const e="0123456789abcdef",t=new Array(256);for(let a=0;a<16;++a){const r=16*a;for(let i=0;i<16;++i)t[r+i]=e[a]+e[i]}return t}();function Y(e){return"undefined"==typeof BigInt?X:e}function X(){throw new Error("BigInt not supported")}},8293:e=>{"use strict";e.exports=JSON.parse('["airconditioning","airfryer","airpurifier","airtreatment","amplifier","battery","bicycle","blinds","boiler","bridge","button","camera","car","coffeemachine","cooktop","curtain","dehumidifier","diffuser","dishwasher","doorbell","dryer","evcharger","fan","faucet","fireplace","freezer","fridge_and_freezer","fridge","fryer","gameconsole","garagedoor","grill","heater","heatpump","homealarm","hood","humidifier","kettle","lawnmower","light","lock","mediaplayer","microwave","mop","multicooker","networkrouter","other","oven_and_microwave","oven","petfeeder","radiator","remote","scooter","sensor","service","settopbox","shutterblinds","siren","smokealarm","socket","solarpanel","speaker","sprinkler","sunshade","thermostat","tv","vacuumcleaner","vehicle","washer_and_dryer","washer","waterheater","waterpurifier","watervalve","windowcoverings","pump"]')},8317:e=>{"use strict";e.exports=function(e,t,a){var r,i=" ",n=e.level,s=e.dataLevel,o=e.schema[t],l=e.schemaPath+e.util.getProperty(t),d=e.errSchemaPath+"/"+t,u=!e.opts.allErrors,m="data"+(s||""),p=e.opts.$data&&o&&o.$data;p?(i+=" var schema"+n+" = "+e.util.getData(o.$data,s,e.dataPathArr)+"; ",r="schema"+n):r=o,i+="if ( ",p&&(i+=" ("+r+" !== undefined && typeof "+r+" != 'string') || "),i+=" !"+(p?"(new RegExp("+r+"))":e.usePattern(o))+".test("+m+") ) { ";var c=c||[];c.push(i),i="",!1!==e.createErrors?(i+=" { keyword: 'pattern' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(d)+" , params: { pattern: ",i+=p?""+r:""+e.util.toQuotedString(o),i+=" } ",!1!==e.opts.messages&&(i+=" , message: 'should match pattern \"",i+=p?"' + "+r+" + '":""+e.util.escapeQuotes(o),i+="\"' "),e.opts.verbose&&(i+=" , schema: ",i+=p?"validate.schema"+l:""+e.util.toQuotedString(o),i+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),i+=" } "):i+=" {} ";var g=i;return i=c.pop(),!e.compositeRule&&u?e.async?i+=" throw new ValidationError(["+g+"]); ":i+=" validate.errors = ["+g+"]; return false; ":i+=" var err = "+g+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",i+="} ",u&&(i+=" else { "),i}},8324:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Operational state","nl":"Operationele staat","da":"Driftstilstand","it":"Stato operativo","ko":"작동 상태","pl":"Stan działania","ru":"Рабочее состояние","sv":"Drifttillstånd","es":"Estado operativo","fr":"État opérationnel","no":"Driftstilstand","ar":"حالة التشغيل","de":"Betriebszustand"},"desc":{"en":"The operational state of the appliance.","nl":"De operationele staat van het apparaat.","da":"Apparatets driftstilstand.","it":"Lo stato operativo dell\'apparecchio.","ko":"가전의 작동 상태입니다.","pl":"Stan działania urządzenia.","ru":"Рабочее состояние прибора.","sv":"Apparatens drifttillstånd.","es":"El estado operativo del dispositivo.","fr":"L\'état de fonctionnement de l\'appareil.","no":"Apparatets driftstilstand.","ar":"حالة التشغيل للجهاز.","de":"Der Betriebszustand des Geräts."},"values":[{"id":"stopped","title":{"en":"Stopped","nl":"Gestopt","da":"Stoppet","it":"Interrotto","ko":"정지","pl":"Urządzenie zatrzymane","ru":"Остановлено","sv":"Stoppad","es":"Detenido","fr":"Arrêté","no":"Stoppet","ar":"متوقف","de":"Angehalten"}},{"id":"running","title":{"en":"Running","nl":"Bezig","da":"Kører","it":"In esecuzione","ko":"동작 중","pl":"Urządzenie pracuje","ru":"Работает","sv":"Körs","es":"En uso","fr":"En cours d\'exécution","no":"I gang","ar":"قيد التشغيل","de":"Läuft"}},{"id":"paused","title":{"en":"Paused","nl":"Gepauzeerd","da":"På pause","it":"In pausa","ko":"일시정지","pl":"Urządzenie wstrzymane","ru":"На паузе","sv":"Pausad","es":"En pausa","fr":"En pause","no":"På pause","ar":"متوقف مؤقتًا","de":"Pausiert"}},{"id":"error","title":{"en":"Error","nl":"Fout","da":"Fejl","it":"Errore","ko":"에러","pl":"Błąd","ru":"Ошибка","sv":"Fel","es":"Error","fr":"Erreur","no":"Feil","ar":"خطأ","de":"Fehler"}}],"color":"#6DD400","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"operational_state_changed","highlight":true,"title":{"en":"The operational state changed to","nl":"De operationele staat is veranderd naar","da":"Driftstilstanden blev ændret til","it":"Lo stato operativo è passato a","ko":"작동 상태가 다음으로 변경되면","pl":"Stan działania zmienił się na","ru":"Рабочее состояние изменилось на","sv":"Drifttillståndet ändrades till","es":"El estado operativo ha cambiado a","fr":"L\'état opérationnel est passé à","no":"Driftstilstanden ble endret til","ar":"تغيرت حالة التشغيل إلى","de":"Der Betriebszustand hat sich geändert in"},"args":[{"name":"state","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"operational_state_is","title":{"en":"The operational state !{{is|is not}}","nl":"De operationele staat !{{is|is niet}}","da":"Driftstilstanden !{{er|er ikke}}","it":"Lo stato operativo !{{è|non è}}","ko":"작동 상태가 다음!{{이면|이 아니면}}","pl":"Stan działania !{{jest|nie jest}}","ru":"Рабочее состояние !{{|не}}","sv":"Drifttillståndet !{{är|är inte}}","es":"El estado operativo !{{está|no está}}","fr":"L\'état opérationnel !{{est|n\'est pas}}","no":"Driftstilstanden !{{er|er ikke}}","ar":"حالة التشغيل !{{هي|ليست}}","de":"Der Betriebszustand !{{ist|ist nicht}}"},"args":[{"name":"state","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.2.0"}')},8364:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Open Alarm","ar":"إنذار الفتح","da":"Åben alarm","de":"Alarm „Geöffnet“","es":"Alarma de apertura","fr":"Alarme de détection d\'ouverture","it":"Allarme apertura","ko":"열림 알람","nl":"Open-alarm","no":"Åpen-alarm","pl":"Alarm otwarcia","ru":"Сигнализация открытия","sv":"Öppet larm"},"titleShort":{"en":"Open","ar":"فتح","da":"Åben","de":"Öffnen","es":"Apertura","fr":"Ouverture","it":"Apertura","ko":"열림","nl":"Open","no":"Åpen","pl":"Otwarcie","ru":"Открытие","sv":"Öppen"},"desc":{"en":"True when a door/window/etc... is open.","ar":"صحيح عند فتح الباب/النافذة/... إلخ....","da":"Sandt, når en dør/et vindue/etc... er åben.","de":"Wahr, wenn eine Tür/ein Fenster/etc… offen ist.","es":"Verdadero cuando una puerta/ventana/etc. está abierta.","fr":"Se déclenche lorsque une porte/fenêtre/etc. est ouverte.","it":"Vero quando una porta/finestra ecc. è aperta.","ko":"문/창문 등이 열려 있을 때 참입니다.","nl":"Waar als een deur/raam/etc... open is.","no":"Sann når en dør, et vindu o.l. er åpen(t).","pl":"Prawda, gdy drzwi/okno/etc... są otwarte.","ru":"Истина, когда дверь/окно и т. д. открыты.","sv":"Sant när en dörr/ett fönster/mm... är öppen."},"insights":true,"insightsTitleTrue":{"en":"Open alarm turned on","ar":"تم تشغيل إنذار الفتح","da":"Åben alarm slået til","de":"Alarm „Geöffnet“ ist eingeschaltet","es":"Alarma de apertura activada","fr":"Alarme de détection d\'ouverture activée","it":"Allarme apertura attivato","ko":"열림 알람 켜짐","nl":"Open-alarm ingeschakeld","no":"Åpen-alarm aktivert","pl":"Alarm otwarcia włączony","ru":"Сигнализация открытия включена","sv":"Öppet larm aktiverat"},"insightsTitleFalse":{"en":"Open alarm turned off","ar":"تم إيقاف تشغيل إنذار الفتح","da":"Åben alarm slået fra","de":"Alarm „Geöffnet“ ausgeschaltet","es":"Alarma de apertura desactivada","fr":"Alarme de détection d\'ouverture désactivée","it":"Allarme apertura disattivato","ko":"열림 알람 꺼짐","nl":"Open-alarm uitgeschakeld","no":"Åpen-alarm deaktivert","pl":"Alarm otwarcia wyłączony","ru":"Сигнализация открытия выключена","sv":"Öppet larm avstängt"},"color":"#0091FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_open_true","highlight":true,"title":{"en":"The open alarm turned on","ar":"تم تشغيل إنذار الفتح","da":"Den åbne alarm er slået til","de":"Der Alarm „Geöffnet“ hat sich eingeschaltet","es":"La alarma de apertura se ha activado","fr":"L\'alarme de détection d\'ouverture s\'est activée","it":"L\'allarme apertura si è attivato","ko":"열림 알람이 켜져 있으면","nl":"Het open-alarm aan gaat","no":"Åpen-alarmen ble aktivert","pl":"Alarm otwarcia włączył się","ru":"Сигнализация открытия включена","sv":"Det öppna larmet aktiverat"}},{"id":"alarm_open_false","title":{"en":"The open alarm turned off","ar":"تم إيقاف تشغيل إنذار الفتح","da":"Den åbne alarm er slået fra","de":"Der Alarm „Geöffnet“ wurde ausgeschaltet","es":"La alarma de apertura se ha desactivado","fr":"L\'alarme de détection d\'ouverture s\'est désactivée","it":"L\'allarme apertura si è disattivato","ko":"열림 알람이 꺼져 있으면","nl":"Het open-alarm uit gaat","no":"Åpen-alarmen ble deaktivert","pl":"Alarm otwarcia wyłączył się","ru":"Сигнализация открытия выключена","sv":"Det öppna larmet avstängt"}}],"conditions":[{"id":"alarm_open","title":{"en":"The open alarm is !{{on|off}}","ar":"إنذار الفتح !{{يعمل|لا يعمل}}","da":"Den åbne alarm er !{{tændt|slukket}}","de":"Der Alarm „Geöffnet“ ist !{{an|aus}}","es":"La alarma de apertura está !{{activada|desactivada}}","fr":"L\'alarme de détection d\'ouverture est !{{activée|désactivée}}","it":"L\'allarme apertura è !{{attivo|non attivo}}","ko":"열림 알람이 !{{켜져|꺼져}} 있으면","nl":"Het open-alarm staat !{{aan|uit}}","no":"Åpen-alarmen er !{{på|av}}","pl":"Alarm otwarcia jest !{{włączony|wyłączony}}","ru":"Сигнализация открытия !{{включена|выключена}}","sv":"Det öppna larmet är !{{på|av}}"}}]},"minCompatibility":"12.11.0"}')},8390:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Tank Empty Alarm","nl":"Waarschuwing voor lege tank","da":"Alarm for tom tank","it":"Allarme serbatoio vuoto","ko":"물통 물 부족 감지","no":"Alarm om tom tank","pl":"Alarm pustego zbiornika","ru":"Сигнал пустого резервуара","sv":"Larm om tom tank","es":"Alarma de depósito vacío","fr":"Alarme de réservoir vide","ar":"إنذار الخزان الفارغ","de":"Alarm Tank leer"},"titleShort":{"en":"Tank Empty","nl":"Lege tank","da":"Tom tank","it":"Serbatoio vuoto","ko":"물통 비어 있음","no":"Tom tank","pl":"Pusty zbiornik","ru":"Резервуар пустой","sv":"Tom tank","es":"Depósito vacío","fr":"Réservoir vide","ar":"الخزان فارغ","de":"Tank leer"},"desc":{"en":"True when the tank is empty.","nl":"Wordt geactiveerd wanneer de tank leeg is.","da":"Sandt, når tanken er tom.","it":"Vero quando il serbatoio è vuoto.","ko":"탱크가 비어 있으면 참입니다.","no":"Sann når tanken er tom.","pl":"Prawda, gdy zbiornik jest pusty.","ru":"Значение «истина», когда резервуар пустой.","sv":"Sant när tanken är tom.","es":"Activado cuando el depósito está vacío.","fr":"Se déclenche lorsque le réservoir est vide.","ar":"صحيح عندما يكون الخزان فارغًا.","de":"Wahr, wenn der Tank leer ist."},"insights":true,"insightsTitleTrue":{"en":"Tank was empty","nl":"Tank was leeg","da":"Tanken var tom","it":"Il serbatoio era vuoto","ko":"물 보충 필요","no":"Tanken var tom","pl":"Zbiornik był pusty","ru":"Резервуар был пуст","sv":"Tanken var tom","es":"El depósito estaba vacío","fr":"Le réservoir était vide","ar":"كان الخزان فارغًا","de":"Tank war leer"},"insightsTitleFalse":{"en":"Tank was not empty","nl":"Tank was niet leeg","da":"Tanken var ikke tom","it":"Il serbatoio non era vuoto","ko":"물 보충됨","no":"Tanken var ikke tom","pl":"Zbiornik nie był pusty","ru":"Резервуар не был пуст","sv":"Tanken var inte tom","es":"El depósito no estaba vacío","fr":"Le réservoir n\'était pas vide","ar":"لم يكن الخزان فارغًا","de":"Tank war nicht leer"},"color":"#0091FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_tank_empty_true","highlight":true,"title":{"en":"The tank is empty","nl":"De tank is leeg","da":"Tanken er tom","it":"Il serbatoio è vuoto","ko":"물 보충이 필요하면","no":"Tanken er tom","pl":"Zbiornik jest pusty","ru":"Резервуар пуст","sv":"Tanken är tom","es":"El depósito está vacío","fr":"Le réservoir est vide","ar":"الخزان فارغ","de":"Der Tank ist leer"}},{"id":"alarm_tank_empty_false","title":{"en":"The tank is no longer empty","nl":"De tank is niet meer leeg","da":"Tanken er ikke længere tom","it":"Il serbatoio non è più vuoto","ko":"물이 보충되어 있으면","no":"Tanken er ikke lenger tom","pl":"Zbiornik nie jest już pusty","ru":"Резервуар больше не пуст","sv":"Tanken är inte längre tom","es":"El depósito ya no está vacío","fr":"Le réservoir n\'est plus vide","ar":"لم يعد الخزان فارغًا","de":"Der Tank ist nicht mehr leer"}}],"conditions":[{"id":"alarm_tank_empty","title":{"en":"The tank is !{{empty|not empty}}","nl":"De tank is !{{leeg|niet leeg}}","da":"Tanken er !{{tom|ikke tom}}","it":"Il serbatoio !{{è vuoto|non è vuoto}}","ko":"!{{물 보충이 필요하면|물이 보충되어 있으면}}","no":"Tanken er !{{tom|ikke tom}}","pl":"Zbiornik !{{jest pusty|nie jest pusty}}","ru":"Резервуар !{{пуст|не пуст}}","sv":"Tanken är !{{tom|inte tom}}","es":"El depósito !{{está vacío|no está vacío}}","fr":"Le réservoir !{{est rempli|n\'est pas rempli}}","ar":"الخزان !{{فارغ|ليس فارغًا}}","de":"Der Tank ist !{{leer|nicht leer}}"}}]},"minCompatibility":"12.2.0"}')},8395:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Window coverings tilt down","nl":"Raambekleding kantelt omlaag","de":"Jalousien nach unten gekippt","fr":"Stores baissés","it":"Tapparelle abbassate","sv":"Fönsterskydd nedfällda","no":"Vindusbeskyttelser lukket","es":"Cobertores de ventanas inclinados hacia abajo","da":"Vinduesdække nedad","ru":"Наклонить вниз оконные навесы","pl":"Zasunięcie osłon okiennych","ko":"아래로 틸트","ar":"إمالة أغطية النوافذ للأسفل"},"type":"boolean","color":"#F5B207","getable":false,"setable":true,"uiComponent":"button","$flow":{"actions":[{"id":"tilt_down","title":{"en":"Tilt down","da":"Vip nedad","it":"Inclina verso il basso","ko":"창문 가림 기울기 아래로 틸팅","nl":"Omlaag kantelen","pl":"Odchylenie w dół","ru":"Наклон вниз","sv":"Luta ner","es":"Inclinar hacia abajo","fr":"Inclinaison vers le bas","no":"Vipp ned","ar":"إمالة للأسفل","de":"Nach unten neigen"}}]}}')},8434:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Power level","ar":"مستوى الطاقة","da":"Strømniveau","de":"Leistungsstufe","es":"Nivel de potencia","fr":"Niveau de puissance","it":"Livello di potenza","ko":"전력 수준","nl":"Vermogensniveau","no":"Effektnivå","pl":"Poziom mocy","ru":"Уровень мощности","sv":"Effektnivå"},"chartType":"stepLine","min":0,"max":1,"decimals":2,"units":{"en":"%","ko":"%","no":"%","ru":"%","ar":"%","da":"%","de":"%","es":"%","fr":" %","it":"%","nl":"%","pl":"%","sv":"%"},"color":"#6DD400","getable":true,"setable":true,"uiComponent":"slider","$flow":{"triggers":[{"id":"power_level_changed","title":{"en":"The power level changed","ar":"تغير مستوى الطاقة","da":"Strømniveauet ændrede sig","de":"Die Leistungsstufe hat sich geändert","es":"El nivel de potencia ha cambiado","fr":"Le niveau de puissance a changé","it":"Il livello di potenza è cambiato","ko":"전력 수준이 변경되면","nl":"Het vermogensniveau veranderde","no":"Effektnivået ble endret","pl":"Poziom mocy uległ zmianie","ru":"Уровень мощности изменен","sv":"Effektnivån förändrades"},"tokens":[{"name":"power_level","type":"number","title":{"en":"Level","nl":"Niveau","de":"Stufe","fr":"Niveau","it":"Livello","sv":"Nivå","no":"Nivå","es":"Nivel","da":"Niveau","ru":"Уровень","pl":"Poziom","ko":"수준","ar":"المستوى"},"example":0.5}]}],"actions":[{"id":"power_level","highlight":true,"title":{"en":"Set the power level to","ar":"ضبط مستوى الطاقة على","da":"Indstil strømniveauet til","de":"Stellen Sie die Leistungsstufe auf","es":"Establece el nivel de potencia en","fr":"Réglez le niveau de puissance sur","it":"Imposta il livello di potenza su","ko":"전력 수준을 다음으로 설정","nl":"Stel het vermogensniveau in op","no":"Sett effektnivået til","pl":"Ustaw poziom mocy na","ru":"Установить уровень мощности на","sv":"Ställ in effektnivån till"},"args":[{"name":"power_level","type":"range","min":0,"max":1,"step":0.01,"value":0.5,"label":"%","labelMultiplier":100,"labelDecimals":0}]},{"id":"power_level_relative","title":{"en":"Set relative power level","ar":"تعيين مستوى الطاقة النسبية","da":"Indstil relativt strømniveau","de":"Relative Leistungsstufe einstellen","es":"Establecer nivel de potencia relativo","fr":"Définir le niveau de puissance relative","it":"Imposta il livello di potenza relativo","ko":"상대 전력 수준 설정","nl":"Relatief vermogensniveau instellen","no":"Angi relativt effektnivå","pl":"Ustaw względny poziom mocy","ru":"Установить относительный уровень мощности","sv":"Ställ in relativ effektnivå"},"hint":{"en":"Increase or decrease with respect to the device\'s current power level.","ar":"الزيادة أو النقصان فيما يتعلق بمستوى الطاقة الحالي للجهاز.","da":"Øges eller mindskes i forhold til enhedens aktuelle strømniveau.","de":"Erhöhen oder verringern in Bezug auf die aktuelle Leistungsstufe des Geräts.","es":"Aumenta o disminuye con respecto al nivel de potencia actual del dispositivo.","fr":"Augmentez ou diminuez en fonction du niveau de puissance actuel de l\'appareil.","it":"Aumenta o diminuisci rispetto al livello di potenza attuale del dispositivo.","ko":"제품의 현재 전원 수준에 맞춰 증가 또는 감소합니다.","nl":"Verhoog of verlaag ten opzichte van het huidige vermogensniveau van het apparaat.","no":"Øk eller reduser i forhold til enhetens gjeldende effektnivå.","pl":"Zwiększ lub zmniejsz zależnie od bieżącego poziomu mocy urządzenia.","ru":"Увеличивайте или уменьшайте относительно текущего уровня мощности устройства.","sv":"Öka eller minska i förhållande till enhetens aktuella effektnivå."},"args":[{"name":"power_level","type":"range","min":-1,"max":1,"step":0.01,"value":0.5,"label":"%","labelMultiplier":100,"labelDecimals":0}]}]},"minCompatibility":"12.11.0"}')},8470:(e,t,a)=>{"use strict";const r=a(178),i=a(5354);class n{static getPlatformLocalFeatures(e){return n._platformLocalFeatures[e]||[]}static getMissingPlatformLocalFeatures(e,t){const a=n.getPlatformLocalFeatures(e);return t.filter((e=>!a.includes(e)))}static getIntegrity(e,t){return r.getIntegrity(e,t)}static validateIntegrity(e,t){return r.validateIntegrity(e,t)}static parseZigbeeOTAHeader(e){return i.parseZigbeeOTAHeader(e)}static validateZigbeeOTAHeader(e){return i.validateZigbeeOTAHeader(e)}static getOTAFilePath({appPath:e,driverId:t,fileName:a}){return r.getOTAFilePath({appPath:e,driverId:t,fileName:a})}static isZigbeeFirmwareUpdateFile(e){return"manufacturerCode"in e}static isZwaveFirmwareUpdateFile(e){return"targetId"in e}static isZigbeeFirmwareUpdate(e){return!(!Array.isArray(e.files)||0===e.files.length)&&n.isZigbeeFirmwareUpdateFile(e.files[0])}static isZwaveFirmwareUpdate(e){return!(!Array.isArray(e.files)||0===e.files.length)&&n.isZwaveFirmwareUpdateFile(e.files[0])}static isZigbeeFirmwareUpdates(e){return!!e&&!(!Array.isArray(e.updates)||0===e.updates.length)&&n.isZigbeeFirmwareUpdate(e.updates[0])}static isZwaveFirmwareUpdates(e){return!!e&&!(!Array.isArray(e.updates)||0===e.updates.length)&&n.isZwaveFirmwareUpdate(e.updates[0])}static isGenericFirmwareUpdates(e){return!!e&&"boolean"==typeof e.enabled}}n.FEATURE_SPEAKER="speaker",n.FEATURE_LED_RING="ledring",n.FEATURE_NFC="nfc",n.FEATURE_MATTER="matter",n.FEATURE_CAMERA_STREAMING="camera-streaming",n.FEATURE_BLE_ADVERTISEMENTS="ble-advertisements",n._platformLocalFeatures={homey1s:[n.FEATURE_SPEAKER,n.FEATURE_LED_RING,n.FEATURE_NFC],homey1d:[n.FEATURE_SPEAKER,n.FEATURE_LED_RING,n.FEATURE_NFC],homey1q:[n.FEATURE_SPEAKER,n.FEATURE_LED_RING,n.FEATURE_NFC],homey2s:[n.FEATURE_SPEAKER,n.FEATURE_LED_RING,n.FEATURE_NFC],homey2d:[n.FEATURE_SPEAKER,n.FEATURE_LED_RING,n.FEATURE_NFC],homey2q:[n.FEATURE_SPEAKER,n.FEATURE_LED_RING,n.FEATURE_NFC],homey3s:[n.FEATURE_SPEAKER,n.FEATURE_LED_RING],homey3d:[n.FEATURE_SPEAKER,n.FEATURE_LED_RING],homey4d:[n.FEATURE_SPEAKER,n.FEATURE_LED_RING],homey5q:[n.FEATURE_MATTER,n.FEATURE_CAMERA_STREAMING,n.FEATURE_BLE_ADVERTISEMENTS],homey6q:[n.FEATURE_MATTER,n.FEATURE_CAMERA_STREAMING,n.FEATURE_BLE_ADVERTISEMENTS],homey7q:[n.FEATURE_MATTER,n.FEATURE_CAMERA_STREAMING,n.FEATURE_BLE_ADVERTISEMENTS],shs:[n.FEATURE_MATTER,n.FEATURE_CAMERA_STREAMING,n.FEATURE_BLE_ADVERTISEMENTS]},e.exports=n},8504:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Laundry washer speed","nl":"Toerental van wasmachine","da":"Vaskemaskinens hastighed","it":"Velocità della lavatrice","ko":"세탁 속도","pl":"Prędkość prania","ru":"Скорость стиральной машины","sv":"Tvättmaskinens hastighet","es":"Velocidad de centrifugado","fr":"Vitesse du lave-linge","no":"Vaskehastighet","ar":"سرعة الغسالة","de":"Geschwindigkeit der Waschmaschine"},"desc":{"en":"The spin speed of the laundry washer.","nl":"De centrifugesnelheid van de wasmachine.","da":"Vaskemaskinens centrifugeringshastighed.","it":"La velocità di centrifuga della lavatrice.","ko":"세탁기의 회전 속도입니다.","pl":"Prędkość obrotów pralki.","ru":"Скорость отжима в стиральной машине.","sv":"Tvättmaskinens centrifugeringshastighet.","es":"La velocidad de centrifugado de la lavadora.","fr":"La vitesse d\'essorage du lave-linge.","no":"Vaskemaskinens sentrifugehastighet.","ar":"سرعة دوران الغسالة.","de":"Die Schleuderdrehzahl der Waschmaschine."},"values":[{"id":"low","title":{"en":"Low","nl":"Laag","da":"Lav","it":"Bassa","ko":"저속","pl":"Niska","ru":"Низкая","sv":"Låg","es":"Baja","fr":"Lente","no":"Lav","ar":"منخفض","de":"Niedrig"}},{"id":"medium","title":{"en":"Medium","nl":"Gemiddeld","da":"Medium","it":"Media","ko":"보통","pl":"Średnia","ru":"Средняя","sv":"Medium","es":"Intermedia","fr":"Moyenne","no":"Middels","ar":"متوسط","de":"Mittel"}},{"id":"high","title":{"en":"High","nl":"Hoog","da":"Høj","it":"Alta","ko":"고속","pl":"Wysoka","ru":"Высокая","sv":"Hög","es":"Alta","fr":"Rapide","no":"Høy","ar":"عالي","de":"Hoch"}}],"color":"#0091FF","getable":true,"setable":true,"uiComponent":"picker","$flow":{"triggers":[{"id":"laundry_washer_speed_changed","highlight":true,"title":{"en":"The speed changed to","nl":"Het toerental is veranderd in","da":"Hastigheden blev ændret til","it":"La velocità è passata a","ko":"세탁 속도가 다음으로 변경되면","pl":"Prędkość zmieniła się na","ru":"Скорость изменена на","sv":"Hastigheten ändrades till","es":"La velocidad ha cambiado a","fr":"La vitesse du lave-linge est passée à","no":"Hastigheten ble endret til","ar":"تم تغيير السرعة إلى","de":"Die Geschwindigkeit wurde geändert auf"},"args":[{"name":"speed","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"laundry_washer_speed_is","title":{"en":"The speed !{{is|is not}}","nl":"Het toerental !{{is|is niet}}","da":"Hastigheden !{{er|er ikke}}","it":"La velocità !{{è|non è}}","ko":"세탁 속도가 다음!{{이면|이 아니면}}","pl":"Prędkość !{{jest|nie jest}}","ru":"Скорость !{{|не}}","sv":"Hastigheten !{{är|är inte}}","es":"La velocidad !{{está|no está}}","fr":"La vitesse du lave-linge !{{est|n\'est pas}}","no":"Hastigheten !{{er|er ikke}}","ar":"السرعة !{{هي|ليست}}","de":"Die Geschwindigkeit !{{ist|ist nicht}}"},"args":[{"name":"speed","type":"dropdown","values":"$values"}]}],"actions":[{"id":"set_laundry_washer_speed","title":{"en":"Set the speed to","nl":"Het toerental instellen op","da":"Indstil hastigheden til","it":"Imposta la velocità su","ko":"세탁 속도를 다음으로 설정","pl":"Ustaw prędkość na","ru":"Установить скорость на","sv":"Ställ in hastigheten på","es":"Ajustar la velocidad a","fr":"Définir la vitesse du lave-linge sur","no":"Sett hastigheten til","ar":"ضبط السرعة على","de":"Stelle die Geschwindigkeit auf"},"args":[{"name":"speed","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.2.0"}')},8532:e=>{"use strict";e.exports=function(e,t,a){var r=" ",i=e.level,n=e.dataLevel,s=e.schema[t],o=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+"/"+t,d=!e.opts.allErrors,u="data"+(n||""),m="valid"+i,p="errs__"+i,c=e.util.copy(e);c.level++;var g="valid"+c.level,h=e.schema.then,v=e.schema.else,f=void 0!==h&&(e.opts.strictKeywords?"object"==typeof h&&Object.keys(h).length>0:e.util.schemaHasRules(h,e.RULES.all)),k=void 0!==v&&(e.opts.strictKeywords?"object"==typeof v&&Object.keys(v).length>0:e.util.schemaHasRules(v,e.RULES.all)),y=c.baseId;if(f||k){var b;c.createErrors=!1,c.schema=s,c.schemaPath=o,c.errSchemaPath=l,r+=" var "+p+" = errors; var "+m+" = true; ";var w=e.compositeRule;e.compositeRule=c.compositeRule=!0,r+=" "+e.validate(c)+" ",c.baseId=y,c.createErrors=!0,r+=" errors = "+p+"; if (vErrors !== null) { if ("+p+") vErrors.length = "+p+"; else vErrors = null; } ",e.compositeRule=c.compositeRule=w,f?(r+=" if ("+g+") { ",c.schema=e.schema.then,c.schemaPath=e.schemaPath+".then",c.errSchemaPath=e.errSchemaPath+"/then",r+=" "+e.validate(c)+" ",c.baseId=y,r+=" "+m+" = "+g+"; ",f&&k?r+=" var "+(b="ifClause"+i)+" = 'then'; ":b="'then'",r+=" } ",k&&(r+=" else { ")):r+=" if (!"+g+") { ",k&&(c.schema=e.schema.else,c.schemaPath=e.schemaPath+".else",c.errSchemaPath=e.errSchemaPath+"/else",r+=" "+e.validate(c)+" ",c.baseId=y,r+=" "+m+" = "+g+"; ",f&&k?r+=" var "+(b="ifClause"+i)+" = 'else'; ":b="'else'",r+=" } "),r+=" if (!"+m+") { var err = ",!1!==e.createErrors?(r+=" { keyword: 'if' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { failingKeyword: "+b+" } ",!1!==e.opts.messages&&(r+=" , message: 'should match \"' + "+b+" + '\" schema' "),e.opts.verbose&&(r+=" , schema: validate.schema"+o+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),r+=" } "):r+=" {} ",r+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",!e.compositeRule&&d&&(e.async?r+=" throw new ValidationError(vErrors); ":r+=" validate.errors = vErrors; return false; "),r+=" } ",d&&(r+=" else { ")}else d&&(r+=" if (true) { ");return r}},8570:(e,t,a)=>{"use strict";e.exports=class{static getCodecs(){return a(6782)}}},8621:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Game Console","da":"Spilkonsol","de":"Spielkonsole","es":"Consola de videojuegos","fr":"Console de jeux","it":"Console per videogiochi","ko":"게임 콘솔","nl":"Spelcomputer","no":"Spillkonsoll","pl":"Konsola do gier","ru":"Игровая консоль","sv":"Spelkonsol","ar":"وحدة تحكم ألعاب"},"description":{"en":"Use this device class for any type of game console.","da":"Brug denne enhedsklasse til alle typer spilkonsoller.","de":"Verwenden Sie diese Geräteklasse für alle Arten von Spielkonsolen.","es":"Utiliza esta clase de dispositivo para cualquier tipo de consola de videojuegos.","fr":"Utilisez cette classe d\'appareils pour tout type de console de jeu.","it":"Utilizza questa classe di dispositivi per qualsiasi tipo di console per videogiochi.","ko":"이 디바이스 클래스는 모든 종류의 게임 콘솔에 사용합니다.","nl":"Gebruik deze apparaatklasse voor elk type spelcomputer.","no":"Bruk denne enhetsklassen for alle typer spillkonsoller.","pl":"Tej klasy urządzeń należy używać w przypadku dowolnego typu konsoli do gier.","ru":"Используйте этот класс устройств для игровых консолей любого типа.","sv":"Använd den här enhetsklassen för alla typer av spelkonsoler.","ar":"استخدم فئة الجهاز هذه لأي نوع من وحدات تحكم الألعاب."},"minCompatibility":"12.0.0"}')},8627:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"PM10 level","nl":"PM10-niveau","da":"PM10-niveau","it":"Livello di PM10","ko":"미세먼지(PM10) 수준","pl":"Poziom PM10","ru":"Уровень ТЧ10","sv":"PM10-nivå","es":"Nivel de PM10","fr":"Niveau de PM10","no":"PM10-nivå","ar":"مستوى PM10","de":"PM10-Wert"},"desc":{"en":"The level of PM10 particles in the air.","nl":"De mate van PM10-deeltjes in de lucht.","da":"Niveauet af PM10-partikler i luften.","it":"Il livello di particelle PM10 nell\'aria.","ko":"공기 중 PM10 입자의 수준입니다.","pl":"Poziom cząstek PM10 w powietrzu.","ru":"Уровень содержания частиц ТЧ10 в воздухе.","sv":"Halten av PM10-partiklar i luften.","es":"El nivel de partículas PM10 en el aire.","fr":"Le niveau de particules PM10 dans l\'air.","no":"Nivået av PM10-partikler i luften.","ar":"مستوى جزيئات PM10 في الهواء.","de":"Der Gehalt an PM10-Partikeln in der Luft."},"values":[{"id":"low","title":{"en":"Low","nl":"Laag","da":"Lavt","it":"Basso","ko":"좋음","pl":"Niski","ru":"Низкий","sv":"Låg","es":"Bajo","fr":"Faible","no":"Lavt","ar":"منخفض","de":"Niedrig"}},{"id":"medium","title":{"en":"Medium","nl":"Gemiddeld","da":"Medium","it":"Medio","ko":"보통","pl":"Średni","ru":"Средний","sv":"Medium","es":"Intermedio","fr":"Moyen","no":"Middels","ar":"متوسط","de":"Mittel"}},{"id":"high","title":{"en":"High","nl":"Hoog","da":"Højt","it":"Alto","ko":"나쁨","pl":"Wysoki","ru":"Высокий","sv":"Hög","es":"Alto","fr":"Élevé","no":"Høyt","ar":"عالي","de":"Hoch"}},{"id":"critical","title":{"en":"Critical","nl":"Kritiek","da":"Kritisk","it":"Critico","ko":"매우 나쁨","pl":"Krytyczny","ru":"Критический","sv":"Kritisk","es":"Crítico","fr":"Critique","no":"Kritisk","ar":"حرج","de":"Kritisch"}}],"color":"#E02020","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"level_pm10_changed","highlight":true,"title":{"en":"The PM10 level changed to","nl":"Het PM10-niveau is veranderd naar","da":"PM10-niveauet blev ændret til","it":"Il livello di PM10 è passato a","ko":"미세먼지(PM10) 수준이 다음으로 변경되면","pl":"Poziom PM10 zmienił się na","ru":"Уровень ТЧ10 изменился на","sv":"PM10-nivån ändrades till","es":"El nivel de PM10 ha cambiado a","fr":"Le niveau de PM10 est passé à","no":"PM10-nivået ble endret til","ar":"تغير مستوى PM10 إلى","de":"Der PM10-Wert hat sich geändert auf"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"level_pm10_is","title":{"en":"The PM10 level !{{is|is not}}","nl":"Het PM10-niveau !{{is|is niet}}","da":"PM10-niveauet !{{er|er ikke}}","it":"Il livello di PM10 !{{è|non è}}","ko":"미세먼지(PM10) 수준이 다음!{{이면|이 아니면}}","pl":"Poziom PM10 !{{jest|nie jest}}","ru":"Уровень ТЧ10 !{{|не}}","sv":"PM10-nivån !{{är|är inte}}","es":"El nivel de PM10 !{{es|no es}}","fr":"Le niveau de PM10 !{{est|n\'est pas}}","no":"PM10-nivået !{{er|er ikke}}","ar":"مستوى PM10 !{{هو|ليس}}","de":"Der PM10-Wert !{{ist|ist nicht}}"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.2.0"}')},8686:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"NOx level","nl":"NOx-niveau","da":"NOx-niveau","it":"Livello di NOx","ko":"질소산화물 수준","pl":"Poziom NOx","ru":" Уровень NOx","sv":"NOx-nivå","es":"Nivel de NOx","fr":"Niveau de NOx","no":"NOx-nivå","ar":"مستوى أكسيد النيتروجين","de":"NOx-Wert"},"desc":{"en":"The level of nitrogen oxides in the air.","nl":"De mate van stikstofoxiden in de lucht.","da":"Niveauet af nitrogenoxider i luften.","it":"Il livello di ossidi di azoto nell\'aria.","ko":"공기 중 질소 산화물 수준입니다.","pl":"Poziom tlenków azotu w powietrzu.","ru":"Уровень содержания оксидов азота в воздухе.","sv":"Halten av kväveoxider i luften.","es":"El nivel de óxidos de nitrógeno en el aire.","fr":"Le niveau d\'oxydes d\'azote dans l\'air.","no":"Nitrogenoksidnivået i luften.","ar":"مستوى أكسيد النيتروجين في الهواء.","de":"Der Gehalt an Stickoxiden in der Luft."},"values":[{"id":"low","title":{"en":"Low","nl":"Laag","da":"Lavt","it":"Basso","ko":"낮음","pl":"Niski","ru":"Низкий","sv":"Låg","es":"Bajo","fr":"Faible","no":"Lavt","ar":"منخفض","de":"Niedrig"}},{"id":"medium","title":{"en":"Medium","nl":"Gemiddeld","da":"Medium","it":"Medio","ko":"보통","pl":"Średni","ru":"Средний","sv":"Medium","es":"Intermedio","fr":"Moyen","no":"Middels","ar":"متوسط","de":"Mittel"}},{"id":"high","title":{"en":"High","nl":"Hoog","da":"Højt","it":"Alto","ko":"높음","pl":"Wysoki","ru":"Высокий","sv":"Hög","es":"Alto","fr":"Élevé","no":"Høyt","ar":"عالي"}},{"id":"critical","title":{"en":"Critical","nl":"Kritiek","da":"Kritisk","it":"Critico","ko":"위험","pl":"Krytyczny","ru":"Критический","sv":"Kritisk","es":"Crítico","fr":"Critique","no":"Kritisk","ar":"حرج","de":"Kritisch"}}],"color":"#E02020","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"level_nox_changed","highlight":true,"title":{"en":"The NOx level changed to","nl":"Het NOx-niveau is veranderd naar","da":"NOx-niveauet blev ændret til","it":"Il livello di NOx è passato a","ko":"질소산화물 수준이 다음으로 변경되면","pl":"Poziom NOx zmienił się na","ru":"Уровень NOx изменился на","sv":"NOx-nivån ändrades till","es":"El nivel de NOx ha cambiado a","fr":"Le niveau de NOx est passé à","no":"NOx-nivået ble endret til","ar":"تغير مستوى أكسيد النيتروجين إلى","de":"Der NOx-Wert hat sich geändert auf"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"level_nox_is","title":{"en":"The NOx level !{{is|is not}}","nl":"Het NOx-niveau !{{is|is niet}}","da":"NOx-niveauet !{{er|er ikke}}","it":"Il livello di NOx !{{è|non è}}","ko":"질소산화물 수준이 다음!{{이면|이 아니면}}","pl":"Poziom NOx !{{jest|nie jest}}","ru":"Уровень NOx !{{|не}}","sv":"NOx-nivån !{{är|är inte}}","es":"El nivel de NOx !{{es|no es}}","fr":"Le niveau de NOx !{{est|n\'est pas}}","no":"NOx-nivået !{{er|er ikke}}","ar":"مستوى أكسيد النيتروجين !{{هو|ليس}}","de":"Der NOx-Wert !{{ist|ist nicht}}"},"args":[{"name":"level","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.2.0"}')},8724:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Ultraviolet","nl":"Ultraviolet","de":"Ultraviolett","fr":"Ultraviolet","it":"Ultravioletto","sv":"Ultraviolett","no":"Ultrafiolett","es":"Ultravioleta","da":"Ultraviolet","ru":"Ультрафиолетовое излучение","pl":"Promieniowanie UV","ko":"자외선","ar":"الأشعة فوق البنفسجية"},"units":{"en":"UVI","ru":"Индекс УФ-излучения","ko":"UVI","no":"UVI","ar":"UVI","da":"UVI","de":"UVI","es":"UVI","fr":"UVI","it":"UVI","nl":"UVI","pl":"UVI","sv":"UVI"},"desc":{"en":"Ultraviolet in UV index (UVI)","de":"Ultraviolett in UV-Index (UVI)","fr":"Ultraviolet en UV-Index (UVI)","it":"Ultravioletto nell\'indice UV (UVI)","sv":"Ultraviolett i UV-Index (UVI)","no":"Ultrafiolett på UV-indeks (UVI)","es":"Ultravioleta en índice UV (UV)","da":"Ultraviolet i UV-indeks (UV)","ru":"Индекс ультрафиолетового излучения","pl":"Promieniowanie UV w indeksie UV (UVI)","ko":"자외선 UV 지수(UVI)","ar":"الأشعة فوق البنفسجية بمؤشر الأشعة فوق البنفسجية (UVI)","nl":"Ultraviolet in UV-index (UVI)"},"insights":true,"chartType":"spline","decimals":2,"color":"#6236FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_ultraviolet_changed","title":{"en":"The ultraviolet value changed","nl":"De ultravioletwaarde is veranderd","de":"Der Ultraviolett-Wert hat sich geändert","fr":"La valeur d\'ultraviolet a changé","it":"Il valore dell\'ultravioletto è cambiato","sv":"Ultraviolettvärdet ändrades","no":"Ultrafiolettverdien ble endret","es":"La radiación ultravioleta ha cambiado","da":"UV-værdien ændrede sig","ru":"Значение УФ-излучения изменилось","pl":"Zmiana poziomu promieniowania UV","ko":"자외선 값이 변경되면","ar":"تغيرت قيمة الأشعة فوق البنفسجية"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":100}]}]}}')},8837:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Freezer","da":"Fryser","de":"Gefrierschrank","es":"Congelador","fr":"Congélateur","it":"Congelatore","ko":"냉동고","nl":"Diepvries","no":"Fryser","pl":"Zamrażarka","ru":"Морозильная камера","sv":"Frys","ar":"مجمد"},"description":{"en":"Use this device class for any kind of freezer, if it is a frigde/freezer use \'fridge_and_freezer\'.","da":"Brug denne enhedsklasse til enhver form for fryser. Hvis det er et køleskab/fryser, skal du bruge \'fridge_and_freezer\'.","de":"Verwenden Sie diese Geräteklasse für jede Art von Gefrierschränken. Für Kühl- und Gefrierschränke verwenden Sie „fridge_and_freezer“.","es":"Utiliza esta clase de dispositivo para cualquier tipo de congelador. Si se trata de un frigorífico con congelador, utiliza la clase \'fridge_and_freezer\'.","fr":"Utilisez cette classe d\'appareils pour tout type de congélateur, s\'il s\'agit d\'un réfrigérateur/congélateur, utilisez \\"fridge_and_freezer\\".","it":"Utilizza questa classe di dispositivi per qualsiasi tipo di congelatore, se si tratta di un frigorifero/congelatore utilizza \\"fridge_and_freezer\\".","ko":"이 디바이스 클래스는 모든 종류의 냉동고에 사용하며, 냉장/냉동고의 경우 \'fridge_and_freezer\'를 사용합니다.","nl":"Gebruik deze apparaatklasse voor elke soort vriezer, als het een koelkast/vriezer is gebruik dan \'fridge_and_freezer\'.","no":"Bruk denne enhetsklassen for alle slags frysere. For kombinert kjøleskap/fryser, bruk «fridge_and_freezer».","pl":"Tej klasy urządzeń należy używać dla każdego rodzaju zamrażarki, jeśli jest to lodówka/zamrażarka, należy użyć klasy „fridge_and_freezer”.","ru":"Используйте этот класс устройств для морозильных камер любого типа; в случае холодильника-морозильника используйте fridge_and_freezer.","sv":"Använd den här enhetsklassen för alla typer av frysar, om det är en kyl/frys ska du använda \'fridge_and_freezer\'.","ar":"استخدم فئة الجهاز هذه لأي نوع من المجمدات، إذا كانت ثلاجة/مجمد مدمج، فاستخدم \'fridge_and_freezer\'."},"minCompatibility":"12.0.0"}')},8841:e=>{"use strict";function t(e,t){return{height:e.readUInt16BE(t),width:e.readUInt16BE(t+2)}}function a(e,t){if(t>e.length)throw new TypeError("Corrupt JPG, exceeded buffer limits");if(255!==e[t])throw new TypeError("Invalid JPG, marker table corrupted")}e.exports={detect:function(e){return"ffd8"===e.toString("hex",0,2)},calculate:function(e){var r,i;for(e=e.slice(4);e.length;){if(r=e.readUInt16BE(0),a(e,r),192===(i=e[r+1])||193===i||194===i)return t(e,r+5);e=e.slice(r+2)}throw new TypeError("Invalid JPG, no size found")}}},8878:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Humidity","nl":"Luchtvochtigheid","de":"Luftfeuchtigkeit","fr":"Humidité","it":"Umidità","sv":"Luftfuktighet","no":"Luftfuktighet","es":"Humedad","da":"Luftfugtighed","ru":"Влажность","pl":"Wilgotność","ko":"습도","ar":"الرطوبة"},"units":{"en":"%","ko":"%","no":"%","ru":"%","ar":"%","da":"%","de":"%","es":"%","fr":"%","it":"%","nl":"%","pl":"%","sv":"%"},"insights":true,"desc":{"en":"Humidity in percent (%)","nl":"Relatieve luchtvochtigheid (%)","de":"Luftfeuchtigkeit in Prozent (%)","fr":"Humidité en pourcentage (%)","it":"Umidità in percentuale (%)","sv":"Luftfuktighet i procent (%)","no":"Luftfuktighet i prosent (%)","es":"Humedad en porcentaje (%)","da":"Luftfugtighed i procent (%)","ru":"Влажность в процентах (%)","pl":"Wilgotność w procentach (%)","ko":"습도(%)","ar":"الرطوبة بالنسبة المئوية (%)"},"chartType":"spline","decimals":2,"color":"#FFA07A","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_humidity_changed","title":{"en":"The humidity changed","nl":"De luchtvochtigheid is veranderd","de":"Die Luftfeuchtigkeit hat sich geändert","fr":"L\'humidité a changé","it":"L\'umidità è cambiata","sv":"Luftfuktigheten ändrades","no":"Luftfuktigheten ble endret","es":"La humedad ha cambiado","da":"Luftfugtigheden ændrede sig","ru":"Влажность изменилась","pl":"Zmiana wilgotności","ko":"습도가 변경되면","ar":"تغيرت الرطوبة"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":35}]}]}}')},8914:e=>{"use strict";e.exports=function(e,t,a){var r=" ",i=e.level,n=e.dataLevel,s=e.schema[t],o=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+"/"+t,d=!e.opts.allErrors,u="data"+(n||""),m="errs__"+i,p=e.util.copy(e);p.level++;var c="valid"+p.level;if(e.opts.strictKeywords?"object"==typeof s&&Object.keys(s).length>0:e.util.schemaHasRules(s,e.RULES.all)){p.schema=s,p.schemaPath=o,p.errSchemaPath=l,r+=" var "+m+" = errors; ";var g,h=e.compositeRule;e.compositeRule=p.compositeRule=!0,p.createErrors=!1,p.opts.allErrors&&(g=p.opts.allErrors,p.opts.allErrors=!1),r+=" "+e.validate(p)+" ",p.createErrors=!0,g&&(p.opts.allErrors=g),e.compositeRule=p.compositeRule=h,r+=" if ("+c+") { ";var v=v||[];v.push(r),r="",!1!==e.createErrors?(r+=" { keyword: 'not' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: {} ",!1!==e.opts.messages&&(r+=" , message: 'should NOT be valid' "),e.opts.verbose&&(r+=" , schema: validate.schema"+o+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),r+=" } "):r+=" {} ";var f=r;r=v.pop(),!e.compositeRule&&d?e.async?r+=" throw new ValidationError(["+f+"]); ":r+=" validate.errors = ["+f+"]; return false; ":r+=" var err = "+f+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",r+=" } else { errors = "+m+"; if (vErrors !== null) { if ("+m+") vErrors.length = "+m+"; else vErrors = null; } ",e.opts.allErrors&&(r+=" } ")}else r+=" var err = ",!1!==e.createErrors?(r+=" { keyword: 'not' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: {} ",!1!==e.opts.messages&&(r+=" , message: 'should NOT be valid' "),e.opts.verbose&&(r+=" , schema: validate.schema"+o+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),r+=" } "):r+=" {} ",r+="; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",d&&(r+=" if (false) { ");return r}},9005:(e,t,a)=>{"use strict";var r={bmp:a(2829),cur:a(4792),dds:a(3219),gif:a(9764),ico:a(6459),jpg:a(8841),png:a(2869),psd:a(7181),svg:a(3392),tiff:a(6995),webp:a(6622)};e.exports=r},9011:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Relay","nl":"Relais","de":"Relais","fr":"Relais","it":"Relé","sv":"Relä","no":"Relé","es":"Relé","da":"Relæ","ru":"Узел","pl":"Przekaźnik","ko":"릴레이","ar":"مرحل"},"description":{"en":"Use this device class for relays, which are connected to another device.","de":"Nutze diese Geräteklasse für Relais, die mit anderen Geräten verbunden sind.","fr":"Utilisez cette classe d\'appareil pour les relais qui sont connectés à d\'autres appareils.","it":"Utilizza questa classe di dispositivi per i relé, che sono connessi ad un altro dispositivo.","sv":"Använd den här enhetsklassen för relän, som är kopplade till en annan enhet","no":"Bruk denne enhetsklassen for reléer som er koblet til en annen enhet.","es":"Utiliza esta clase de dispositivo para los relés conectados a otros dispositivos.","da":"Brug denne enhedsklasse til relæer, som er koblet til en anden enhed.","ru":"Используйте этот класс устройств для узлов, которые подключены к другому устройству.","pl":"Użyj tej klasy urządzeń dla przekaźników niepołączonych z żadnym innym urządzeniem.","ko":"이 디바이스 클래스는 다른 디바이스에 연결된 릴레이에 사용합니다.","ar":"استخدم فئة الجهاز هذه للمرحلات، والتي تتصل بجهاز آخر.","nl":"Gebruik deze apparaatklasse voor relais die verbonden zijn met een ander apparaat."},"virtualTitle":{"en":"What\'s connected?","nl":"Wat is er verbonden?","de":"Was ist verbunden?","fr":"Qu\'est-ce qui est connecté ?","it":"Cos\'è connesso?","sv":"Relä","no":"Hva er tilkoblet?","es":"¿Qué está conectado?","da":"Hvad er tilkoblet?","ru":"Что подключено?","pl":"Co jest połączone?","ko":"어떤 것이 연결되어 있나요?","ar":"ما هو المتصل؟"},"allowedVirtual":["garagedoor","sunshade","blinds","curtain"]}')},9073:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Smoke Alarm","nl":"Rookmelder","de":"Rauchalarm","fr":"Alarme de fumée","it":"Allarme fumo","sv":"Röklarm","no":"Røykalarm","es":"Alarma de humo","da":"Røgalarm","ru":"Сигнал дыма","pl":"Alarm przeciwdymny","ko":"연기 감지","ar":"إنذار الدخان"},"titleShort":{"en":"Smoke","nl":"Rook","de":"Rauch","fr":"Fumée","it":"Fumo","sv":"Rök","no":"Røyk","es":"Humo","da":"Røg","ru":"Дым","pl":"Dym","ko":"연기","ar":"الدخان"},"desc":{"en":"True when smoke has been detected","nl":"Gaat af als er rook gedetecteerd wordt","de":"True, wenn Rauch erkannt wurde","fr":"Vrai quand de la fumée a été détectée","it":"Vero quando è stato rilevato del fumo","sv":"Sant när rök upptäcks","no":"Sann når røyk har blitt påvist","es":"Activado cuando se detecta humo","da":"Sandt, når røg er blevet opdaget","ru":"Значение «истина» при обнаружении дыма","pl":"Adekwatny, kiedy wykryty zostanie dym","ko":"연기가 감지되면 참","ar":"صحيح عند اكتشاف دخان"},"insights":true,"insightsTitleTrue":{"en":"Smoke alarm turned on","nl":"Rookmelder ging af","de":"Rauch-Alarm ist angegangen","fr":"Alarme fumée s\'est activée","it":"Allarme fumo attivato","sv":"Röklarm aktiverat","no":"Røykalarm aktivert","es":"Alarma de humo activada","da":"Røgalarm blev aktiveret","ru":"Сигнал дыма включен","pl":"Alarm przeciwdymny włączony","ko":"연기 감지됨","ar":"تم تشغيل إنذار الدخان"},"insightsTitleFalse":{"en":"Smoke alarm turned off","nl":"Rookmelder ging uit","de":"Rauch-Alarm ist ausgegangen","fr":"Alarme fumée s\'est désactivée","it":"Allarme fumo disattivato","sv":"Röklarm inaktiverat","no":"Røykalarm deaktivert","es":"Alarma de humo desactivada","da":"Røgalarm blev deaktiveret","ru":"Сигнал дыма выключен","pl":"Alarm przeciwdymny wyłączony","ko":"정상","ar":"تم إيقاف إنذار الدخان"},"color":"#FA6400","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_smoke_true","highlight":true,"title":{"en":"The smoke alarm turned on","nl":"De rookmelder gaat aan","de":"Der Rauch-Alarm ist angegangen","fr":"L\'alarme fumée s\'est activée","it":"L\'allarme fumo è stato attivato","sv":"Röklarmet aktiverat","no":"Røykalarmen ble aktivert","es":"La alarma de humo se ha activado","da":"Røgalarmen blev aktiveret","ru":"Сигнал дыма включен","pl":"Alarm przeciwdymny włączony","ko":"연기가 감지되면","ar":"تم تشغيل إنذار الدخان"}},{"id":"alarm_smoke_false","title":{"en":"The smoke alarm turned off","nl":"De rookmelder gaat uit","de":"Der Rauch-Alarm ist ausgegangen","fr":"L\'alarme fumée s\'est désactivée","it":"L\'allarme fumo è stato disattivato","sv":"Röklarmet inaktiverat","no":"Røykalarmen ble deaktivert","es":"La alarma de humo se ha desactivado","da":"Røgalarmen blev deaktiveret","ru":"Сигнал дыма выключен","pl":"Alarm przeciwdymny wyłączony","ko":"연기 감지가 정상 상태이면","ar":"تم إيقاف إنذار الدخان"}}],"conditions":[{"id":"alarm_smoke","title":{"en":"The smoke alarm is !{{on|off}}","nl":"De rookmelder is !{{aan|uit}}","de":"Der Rauch-Alarm ist !{{an|aus}}","fr":"L\'alarme fumée est !{{en marche|arrêtée}}","it":"L\'allarme fumo è !{{acceso|spento}}","sv":"Röklarmet är !{{på|av}}","no":"Røykalarmen er !{{på|av}}","es":"La alarma de humo está !{{activada|desactivada}}","da":"Røgalarmen er !{{tændt|slukket}}","ru":"Сигнал дыма !{{вкл.|выкл.}}","pl":"Alarm przeciwdymny jest !{{włączony|wyłączony}}","ko":"!{{연기가 감지되면|연기 감지가 정상 상태이면}}","ar":"إنذار الدخان !{{يعمل|لا يعمل}}"}}]}}')},9081:()=>{},9091:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Problem Alarm","nl":"Probleemwaarschuwing","da":"Problemalarm","it":"Allarme problema","ko":"이상 감지","no":"Problemalarm","pl":"Alarm problemu","ru":"Сигнал о проблеме","sv":"Problemlarm","es":"Alarma de problema","fr":"Alarme de problème","ar":"إنذار وجود مشكلة","de":"Problem-Alarm"},"titleShort":{"en":"Problem","nl":"Probleem","da":"Problem","it":"Problema","ko":"문제","no":"Problem","pl":"Problem","ru":"Проблема","sv":"Problem","es":"Problema","fr":"Problème","ar":"مشكلة","de":"Problem"},"desc":{"en":"True when a problem is detected.","nl":"Wordt geactiveerd wanneer een probleem wordt gedetecteerd.","da":"Sandt, når der opdages et problem.","it":"Vero quando viene rilevato un problema.","ko":"문제가 감지되면 참입니다.","no":"Sann når et problem registreres.","pl":"Prawda, gdy wykryty jest problem.","ru":"Значение «истина» при обнаружении проблемы.","sv":"Sant när ett problem upptäcks.","es":"Activado cuando se detecta un problema.","fr":"Se déclenche lorsqu\'un problème est détecté.","ar":"صحيح عند اكتشاف مشكلة.","de":"Wahr, wenn ein Problem erkannt wird."},"insights":true,"insightsTitleTrue":{"en":"Problem was detected","nl":"Probleem was gedetecteerd","da":"Problem blev opdaget","it":"Problema rilevato","ko":"이상 감지됨","no":"Problem ble registrert","pl":"Problem był wykryty","ru":"Была обнаружена проблема","sv":"Ett problem har upptäckts","es":"Problema detectado","fr":"Un problème a été détecté","ar":"تم اكتشاف مشكلة","de":"Problem wurde erkannt"},"insightsTitleFalse":{"en":"Problem solved","nl":"Probleem opgelost","da":"Problem løst","it":"Problema risolto","ko":"정상","no":"Problem løst","pl":"Problem rozwiązany","ru":"Проблема решена","sv":"Problemet är löst","es":"Problema resuelto","fr":"Problème résolu","ar":"تم حل المشكلة","de":"Problem gelöst"},"color":"#9033FC","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_problem_true","highlight":true,"title":{"en":"A problem is detected","nl":"Er is een probleem gedetecteerd","da":"Et problem er opdaget","it":"È stato rilevato un problema","ko":"이상이 감지되면","no":"Et problem er registrert","pl":"Problem jest wykryty","ru":"Обнаружена проблема","sv":"Ett problem har upptäckts","es":"Se ha detectado un problema","fr":"Un problème est détecté","ar":"تم اكتشاف مشكلة","de":"Ein Problem wird erkannt"}},{"id":"alarm_problem_false","title":{"en":"The problem is solved","nl":"Het probleem is opgelost","da":"Problemet er løst","it":"Il problema è risolto","ko":"이상 감지가 정상 상태이면","no":"Problemet er løst","pl":"Problem jest rozwiązany","ru":"Проблема решена","sv":"Problemet är löst","es":"Se ha resuelto el problema","fr":"Le problème est résolu","ar":"تم حل المشكلة","de":"Das Problem ist gelöst"}}],"conditions":[{"id":"alarm_problem","title":{"en":"There !{{is|isn\'t}} a problem","nl":"Er is !{{een|geen}} probleem","da":"Der !{{er|er ikke}} et problem","it":"!{{C\'è un|Non c\'è nessun}} problema","ko":"!{{이상이 감지되면|이상 감지가 정상 상태이면}}","no":"Det !{{er|er ikke}} et problem","pl":"!{{Problem jest|Problemu nie ma}}","ru":"!{{есть проблема|проблемы нет}}","sv":"Det !{{är|är inte}} ett problem","es":"!{{Hay un problema|No hay ningún problema}}","fr":"Il !{{y a un problème|n\'y a pas de problème}}","ar":"توجد !{{مشكلة|لا توجد مشكلة}}","de":"Es gibt !{{ein|kein}} Problem"}}]},"minCompatibility":"12.2.0"}')},9101:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Water Valve","da":"Vandventil","de":"Wasserventil","es":"Válvula de agua","fr":"Robinet d\'adduction d\'eau","it":"Valvola idraulica","ko":"워터 밸브","nl":"Waterklep","no":"Vannventil","pl":"Zawór wodny","ru":"Водяной клапан","sv":"Vattenventil","ar":"صمام مياه"},"description":{"en":"Use this device class for mechanical water valves.","da":"Brug denne enhedsklasse til mekaniske vandventiler.","de":"Verwenden Sie diese Geräteklasse für mechanische Wasserventile.","es":"Utiliza esta clase de dispositivo para válvulas mecánicas de agua.","fr":"Utilisez cette classe d\'appareils pour les robinet d\'adduction d\'eau mécaniques.","it":"Utilizza questa classe di dispositivi per le valvole idrauliche meccaniche.","ko":"이 디바이스 클래스는 기계식 워터 밸브에 사용합니다.","nl":"Gebruik deze apparaatklasse voor mechanische waterkleppen.","no":"Bruk denne enhetsklassen for mekaniske vannventiler.","pl":"Tej klasy urządzeń należy używać w przypadku mechanicznych zaworów wodnych.","ru":"Используйте этот класс устройств для механических водяных клапанов.","sv":"Använd den här apparatklassen för mekaniska vattenventiler.","ar":"استخدم فئة الجهاز هذه لصمامات المياه الميكانيكية."},"minCompatibility":"12.0.0"}')},9102:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Humidifier","da":"Luftfugter","de":"Luftbefeuchter","es":"Humidificador","fr":"Humidificateur","it":"Umidificatore","ko":"가습기","nl":"Luchtbevochtiger","no":"Luftfukter","pl":"Nawilżacz","ru":"Увлажнитель воздуха","sv":"Luftfuktare","ar":"مرطب هواء"},"description":{"en":"Use this device class for humidifiers.","da":"Brug denne enhedsklasse til luftfugtere.","de":"Verwenden Sie diese Geräteklasse für Luftbefeuchter.","es":"Utiliza esta clase de dispositivo para humidificadores.","fr":"Utiliser cette classe d\'appareils pour les humidificateurs.","it":"Utilizza questa classe di dispositivi per gli umidificatori.","ko":"이 디바이스 클래스는 가습기에 사용합니다.","nl":"Gebruik deze apparaatklasse voor luchtbevochtigers.","no":"Bruk denne enhetsklassen for luftfuktere.","pl":"Tej klasy urządzeń należy używać w przypadku nawilżaczy powietrza.","ru":"Используйте этот класс устройств для увлажнителей воздуха.","sv":"Använd den här enhetsklassen för luftfuktare.","ar":"استخدم فئة الجهاز هذه لأجهزة ترطيب الهواء."},"minCompatibility":"12.0.0"}')},9183:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Frequency","nl":"Frequentie","da":"Frekvens","it":"Frequenza","ko":"주파수","no":"Frekvens","pl":"Częstotliwość","ru":"Частота","sv":"Frekvens","es":"Frecuencia","fr":"Fréquence","ar":"التردد","de":"Frequenz"},"units":{"en":"Hz","nl":"Hz","da":"Hz","it":"Hz","ko":"Hz","no":"Hz","pl":"Hz","ru":"Гц","sv":"Hz","es":"Hz","fr":"Hz","ar":"هرتز","de":"Hz"},"desc":{"en":"The frequency in hertz.","nl":"De frequentie in hertz.","da":"Frekvensen i hertz.","it":"La frequenza in hertz.","ko":"헤르츠 단위의 주사율입니다.","no":"Frekvensen i hertz.","pl":"Częstotliwość w hercach.","ru":"Частота в герцах.","sv":"Frekvensen i hertz.","es":"La frecuencia en hercios.","fr":"La fréquence en hertz.","ar":"التردد بالهرتز.","de":"Die Frequenz in Hertz."},"insights":true,"chartType":"spline","decimals":2,"color":"#6236FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_frequency_changed","title":{"en":"The frequency changed","nl":"De frequentie is veranderd","da":"Frekvensen ændrede sig","it":"La frequenza è cambiata","ko":"주파수가 변경되면","no":"Frekvensen ble endret","pl":"Zmieniła się częstotliwość","ru":"Частота изменилась","sv":"Frekvensen ändrades","es":"La frecuencia ha cambiado","fr":"La fréquence a changé","ar":"تغير التردد","de":"Die Frequenz hat sich geändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":2}]}]},"minCompatibility":"12.2.0"}')},9249:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Hot water mode","nl":"Warmwatermodus","da":"Varmtvandstilstand","it":"Modalità acqua calda","ko":"온수 모드","pl":"Tryb ciepłej wody","ru":"Режим нагрева воды","sv":"Varmvattenläge","es":"Modo de agua caliente","fr":"Mode eau chaude","no":"Varmtvannsmodus","ar":"وضع الماء الساخن","de":"Warmwassermodus"},"values":[{"id":"on","title":{"en":"On","nl":"Aan","da":"Til","it":"On","ko":"켜짐","pl":"Wł","ru":"Включен","sv":"På","es":"Activado","fr":"Activé","no":"På","ar":"مشغل","de":"Ein"}},{"id":"off","title":{"en":"Off","nl":"Uit","da":"Fra","it":"Off","ko":"꺼짐","pl":"Wył","ru":"Выключен","sv":"Av","es":"Desactivado","fr":"Désactivé","no":"Av","ar":"متوقف","de":"Aus"}},{"id":"eco","title":{"en":"Eco","nl":"Eco","da":"Øko","it":"Eco","ko":"절약","pl":"Eko","ru":"Эко","sv":"Eco","es":"Eco","fr":"Économique","no":"Øko","ar":"اقتصادي","de":"Öko"}}],"color":"#FA6400","getable":true,"setable":true,"uiComponent":"picker","$flow":{"triggers":[{"id":"hot_water_mode_changed","title":{"en":"The hot water mode changed to","nl":"De warmwaterstand is veranderd naar","da":"Varmtvandstilstanden er ændret til","it":"La modalità acqua calda è passata a","ko":"온수 모드가 다음으로 변경되면","no":"Varmtvannsmodusen ble endret til","pl":"Tryb ciepłej wody zmienił się na","ru":"Режим нагрева воды изменен на:","sv":"Varmvattenläget har ändrats till","es":"El modo de agua caliente ha cambiado a","fr":"Le mode eau chaude est passé à","ar":"تم تغيير وضع الماء الساخن إلى","de":"Der Warmwassermodus wurde geändert auf"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"hot_water_mode_is","title":{"en":"The hot water mode !{{is|is not}}","nl":"De warmwatermodus !{{is|is niet}}","da":"Varmtvandstilstanden !{{er|er ikke}}","it":"La modalità acqua calda !{{è|non è}}","ko":"온수 모드가 다음!{{이면|이 아니면}}","pl":"Tryb gorącej wody !{{jest|nie jest}}","ru":"Режим нагрева воды !{{|не}}","sv":"Varmvattenläge !{{är|är inte}}","es":"El modo de agua caliente !{{está|no está}}","fr":"Le mode eau chaude !{{est|n\'est pas}}","no":"Varmtvannsmodusen !{{er|er ikke}}","ar":"وضع الماء الساخن !{{هو|ليس}}","de":"Der Warmwassermodus !{{ist|ist nicht}}"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}],"actions":[{"id":"set_hot_water_mode","title":{"en":"Set the hot water mode to","nl":"Stel de warmwaterstand in op","da":"Indstil varmtvandstilstanden til","it":"Imposta la modalità acqua calda su","ko":"온수 모드를 다음으로 설정","pl":"Ustaw tryb ciepłej wody na","ru":"Установить режим нагрева воды на","sv":"Ställ in varmvattenläget på","es":"Ajustar el modo de agua caliente en","fr":"Définir le mode eau chaude sur","no":"Sett varmtvannsmodusen til","ar":"ضبط وضع الماء الساخن على","de":"Stelle den Warmwassermodus auf"},"args":[{"name":"mode","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.2.0"}')},9294:e=>{"use strict";e.exports=function(e,t,a){var r,i=" ",n=e.level,s=e.dataLevel,o=e.schema[t],l=e.schemaPath+e.util.getProperty(t),d=e.errSchemaPath+"/"+t,u=!e.opts.allErrors,m="data"+(s||""),p=e.opts.$data&&o&&o.$data;if(p?(i+=" var schema"+n+" = "+e.util.getData(o.$data,s,e.dataPathArr)+"; ",r="schema"+n):r=o,!p&&"number"!=typeof o)throw new Error(t+" must be number");i+="var division"+n+";if (",p&&(i+=" "+r+" !== undefined && ( typeof "+r+" != 'number' || "),i+=" (division"+n+" = "+m+" / "+r+", ",e.opts.multipleOfPrecision?i+=" Math.abs(Math.round(division"+n+") - division"+n+") > 1e-"+e.opts.multipleOfPrecision+" ":i+=" division"+n+" !== parseInt(division"+n+") ",i+=" ) ",p&&(i+=" ) "),i+=" ) { ";var c=c||[];c.push(i),i="",!1!==e.createErrors?(i+=" { keyword: 'multipleOf' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(d)+" , params: { multipleOf: "+r+" } ",!1!==e.opts.messages&&(i+=" , message: 'should be multiple of ",i+=p?"' + "+r:r+"'"),e.opts.verbose&&(i+=" , schema: ",i+=p?"validate.schema"+l:""+o,i+=" , parentSchema: validate.schema"+e.schemaPath+" , data: "+m+" "),i+=" } "):i+=" {} ";var g=i;return i=c.pop(),!e.compositeRule&&u?e.async?i+=" throw new ValidationError(["+g+"]); ":i+=" validate.errors = ["+g+"]; return false; ":i+=" var err = "+g+"; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",i+="} ",u&&(i+=" else { "),i}},9331:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Fan speed","nl":"Ventilatorsnelheid","da":"Ventilatorhastighed","it":"Velocità della ventola","ko":"팬 속도","no":"Viftehastighet","pl":"Prędkość wentylatora","ru":"Скорость вентилятора","sv":"Fläkthastighet","es":"Velocidad del ventilador","fr":"Vitesse de ventilation","ar":"سرعة المروحة","de":"Lüftergeschwindigkeit"},"units":{"en":"%","da":"%","it":"%","ko":"%","nl":"%","no":"%","pl":"%","ru":"%","sv":"%","es":"%","fr":" %","ar":"%","de":"%"},"desc":{"en":"The fan speed in percentage.","nl":"De ventilatorsnelheid in procenten.","da":"Ventilatorhastigheden i procent.","it":"La velocità della ventola in percentuale.","ko":"백분율로 표현한 팬 속도입니다.","no":"Viftehastigheten i prosent.","pl":"Prędkość wentylatora w procentach.","ru":"Скорость работы вентилятора в процентах.","sv":"Fläkthastigheten i procent.","es":"La velocidad del ventilador en porcentaje.","fr":"Vitesse de ventilation en pourcentage.","ar":"سرعة المروحة بالنسبة المئوية.","de":"Die Lüftergeschwindigkeit in Prozent."},"insights":true,"chartType":"spline","min":0,"max":1,"decimals":2,"color":"#0091FF","getable":true,"setable":true,"uiComponent":"slider","$flow":{"triggers":[{"id":"fan_speed_changed","title":{"en":"The fan speed changed","nl":"De ventilatorsnelheid is veranderd","da":"Ventilatorhastigheden ændrede sig","it":"La velocità della ventola è cambiata","ko":"팬 속도가 변경되면","no":"Viftehastigheten ble endret","pl":"Prędkość wentylatora zmieniła się","ru":"Скорость вентилятора изменена","sv":"Fläkthastigheten ändrades","es":"La velocidad del ventilador ha cambiado","fr":"La vitesse de ventilation a changé","ar":"تم تغيير سرعة المروحة","de":"Die Lüftergeschwindigkeit wurde geändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":0.5}]}],"actions":[{"id":"set_fan_speed","title":{"en":"Set the fan speed to","nl":"De ventilatorsnelheid instellen op","da":"Indstil ventilatorhastigheden til","it":"Imposta la velocità della ventola su","ko":"팬 속도를 다음으로 설정","no":"Sett viftehastigheten til","pl":"Ustaw prędkość wentylatora na","ru":"Установить скорость вентилятора на","sv":"Ställ in fläkthastigheten på","es":"Ajustar la velocidad del ventilador a","fr":"Définir la vitesse de ventilation sur","ar":"ضبط سرعة المروحة على","de":"Stelle die Lüftergeschwindigkeit auf"},"args":[{"name":"fan_speed","type":"range","min":0,"max":1,"step":0.01,"value":0.5,"label":"%","labelMultiplier":100,"labelDecimals":0}]}]},"minCompatibility":"12.2.0"}')},9337:e=>{"use strict";e.exports=JSON.parse('{"type":"enum","title":{"en":"Dishwasher program","nl":"Vaatwasprogramma","da":"Program til opvaskemaskine","it":"Programma lavastoviglie","ko":"식기세척기 운전 모드","pl":"Program zmywarki","ru":"Программа посудомоечной машины","sv":"Diskmaskinsprogram","es":"Programa del lavavajillas","fr":"Programme lave-vaisselle","no":"Oppvaskmaskinprogram","ar":"برنامج غسالة الأطباق","de":"Geschirrspülprogramm"},"desc":{"en":"The current program of the dishwasher.","nl":"Het huidige programma van de vaatwasser.","da":"Opvaskemaskinens aktuelle program.","it":"Il programma attuale della lavastoviglie.","ko":"식기세척기의 현재 프로그램입니다.","pl":"Bieżący program zmywarki.","ru":"Текущая программа посудомоечной машины.","sv":"Diskmaskinens aktuella program.","es":"El programa actual del lavavajillas.","fr":"Le programme actuel du lave-vaisselle.","no":"Oppvaskmaskinens gjeldende program.","ar":"البرنامج الحالي لغسالة الأطباق.","de":"Das aktuelle Programm des Geschirrspülers."},"values":[{"id":"normal","title":{"en":"Normal","nl":"Normaal","da":"Normalt","it":"Normale","ko":"중","pl":"Normalny","ru":"Стандартная","sv":"Normal\\n","es":"Normal","fr":"Normal","no":"Normal","ar":"عادية","de":"Normal"}},{"id":"heavy","title":{"en":"Heavy","nl":"Zwaar","da":"Tungt","it":"Pesante","ko":"강","pl":"Intensywny","ru":"Интенсивная","sv":"Tung","es":"Intensivo","fr":"Intensif","no":"Kraftig","ar":"كبيرة","de":"Stark verschmutzt"}},{"id":"light","title":{"en":"Light","nl":"Licht","da":"Let","it":"Leggero","ko":"약","pl":"Lekki","ru":"Легкая","sv":"Lätt","es":"Rápido","fr":"Rapide","no":"Lett","ar":"خفيفة","de":"Leicht verschmutzt"}}],"color":"#0091FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"dishwasher_program_changed","highlight":true,"title":{"en":"The program changed to","nl":"Het programma is veranderd in","da":"Programmet blev ændret til","it":"Il programma è passato a","ko":"식기세척기 운전 모드가 다음으로 변경되면 ","pl":"Program zmienił się na","ru":"Программа изменена на","sv":"Programmet ändrades till","es":"El programa ha cambiado a","fr":"Le programme du lave-vaisselle est passé à","no":"Programmet ble endret til","ar":"تم تغيير البرنامج إلى","de":"Das Programm wurde geändert auf"},"args":[{"name":"program","type":"dropdown","values":"$values"}]}],"conditions":[{"id":"dishwasher_program_is","title":{"en":"The program is","nl":"Het programma is","da":"Programmet er","it":"Il programma è","ko":"식기세척기 운전 모드가 다음이면","pl":"Program to","ru":"Программа:","sv":"Programmet är","es":"El programa es","fr":"Le programme est","no":"Programmet er","ar":"البرنامج","de":"Das Programm ist"},"args":[{"name":"program","type":"dropdown","values":"$values"}]}]},"minCompatibility":"12.2.0"}')},9350:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Lawn Mower","da":"Plæneklipper","de":"Rasenmäher","es":"Cortacésped","fr":"Tondeuse à gazon","it":"Tagliaerba","ko":"잔디깎이","nl":"Grasmaaier","no":"Gressklipper","pl":"Kosiarka","ru":"Газонокосилка","sv":"Gräsklippare","ar":"جزازة العشب"},"description":{"en":"Use this device class for lawn mowers.","da":"Brug denne enhedsklasse til plæneklippere.","de":"Verwenden Sie diese Geräteklasse für Rasenmäher.","es":"Utiliza esta clase de dispositivo para cortadoras de césped.","fr":"Utilisez cette classe d\'appareils pour les tondeuses à gazon.","it":"Utilizza questa classe di dispositivi per i tagliaerba.","ko":"이 디바이스 클래스는 잔디깎이 등 예초기에 사용합니다.","nl":"Gebruik deze apparaatklasse voor grasmaaiers.","no":"Bruk denne enhetsklassen for gressklippere.","pl":"Tej klasy urządzeń należy używać w przypadku kosiarek do trawy.","ru":"Используйте этот класс устройств для газонокосилок.","sv":"Använd den här enhetsklassen för gräsklippare.","ar":"استخدم فئة الجهاز هذه لجزازات العشب."},"minCompatibility":"12.0.0"}')},9411:()=>{},9415:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"TVOC","nl":"VOS","da":"TVOC","it":"TVOC","ko":"총휘발성유기화합물","pl":"Wszystkie LZO","ru":"TVOC","sv":"TVOC","es":"TVOC","fr":"TVOC","no":"TVOC","ar":"المركبات العضوية المتطايرة الإجمالية","de":"TVOC"},"units":{"en":"μg/m³","nl":"μg/m³","da":"μg/m³","it":"μg/m³","ko":"μg/m³","pl":"μg/m³","ru":"мкг/м³","sv":"μg/m³","es":"μg/m³","fr":"μg/m³","no":"μg/m³","ar":"ميكروجرام/م³","de":"μg/m³"},"insights":true,"desc":{"en":"Total volatile organic compounds in micrograms per cubic meter (μg/m³)","nl":"Totale vluchtige organische stoffen in microgram per kubieke meter (μg/m³)","da":"Total mængde flygtige organiske forbindelser i mikrogram pr. kubikmeter (μg/m³)","it":"Composti organici volatili totali in microgrammi per metro cubo (μg/m³)","ko":"입방미터당 마이크로그램(μg/m³) 단위의 휘발성 유기 화합물 총량","pl":"Całkowita ilość lotnych związków organicznych w mikrogramach na metr sześcienny (μg/m³)","ru":"Общее количество летучих органических соединений в микрограммах на кубический метр (мкг/м³)","sv":"Totalt antal flyktiga organiska föreningar i mikrogram per kubikmeter (μg/m³)","es":"Compuestos orgánicos volátiles totales en microgramos por metro cúbico (μg/m³)","fr":"Total des composés organiques volatils en microgrammes par mètre cube (μg/m³)","no":"Total mengde flyktige organiske forbindelser i mikrogram per kubikkmeter (μg/m³)","ar":"المركبات العضوية المتطايرة الإجمالية بالميكروجرام لكل متر مكعب (μg/m³)","de":"Gesamte flüchtige organische Verbindungen in Mikrogramm pro Kubikmeter (μg/m³)"},"chartType":"spline","decimals":2,"color":"#E02020","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_tvoc_changed","title":{"en":"The TVOC level has changed","nl":"Het VOS-niveau is veranderd","da":"TVOC-værdien har ændret sig","it":"Il livello di TVOC è cambiato","ko":"총휘발성유기화합물 수준이 변경되면","no":"TVOC-nivået er endret","pl":"Zmieniła się wartość wszystkich LZO","ru":"Значение TVOC изменилось","sv":"TVOC-värdet har ändrats","es":"El nivel de TVOC ha cambiado","fr":"La valeur du TVOC a changé","ar":"تغير مستوى المركبات العضوية المتطايرة الإجمالية","de":"Der TVOC-Gehalt hat sich verändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":2}]}]},"minCompatibility":"12.2.0"}')},9416:()=>{},9423:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Coffee Machine","nl":"Koffiemachine","de":"Kaffemaschine","fr":"Machine à café","it":"Macchina per il caffè","sv":"Kaffemaskin","no":"Kaffemaskin","es":"Máquina de café","da":"Kaffemaskine","ru":"Кофемашина","pl":"Ekspres do kawy","ko":"커피머신","ar":"آلة تحضير القهوة"},"description":{"en":"Use this device class for coffee machines.","de":"Nutze diese Geräteklasse für Kaffeemaschinen.","fr":"Utilisez cette classe d\'appareil pour les machines à café.","it":"Utilizza questa classe di dispositivi per le macchine per il caffè.","sv":"Använd den här enhetsklassen för kaffemaskiner.","no":"Bruk denne enhetsklassen for kaffemaskiner.","es":"Utiliza esta clase de dispositivo para las máquinas de café.","da":"Brug denne enhedsklasse til kaffemaskiner.","ru":"Используйте этот класс устройств для кофемашин.","pl":"Użyj tej klasy urządzeń dla ekspresów do kawy.","ko":"이 디바이스 클래스는 커피머신에 사용합니다.","ar":"استخدم فئة الجهاز هذه لآلات تحضير القهوة.","nl":"Gebruik deze apparaatklasse voor koffiezetapparaten."}}')},9450:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"HEPA Filter","nl":"HEPA-filter","da":"HEPA-filter","it":"Filtro HEPA","ko":"헤파 필터 사용량","no":"HEPA-filter","pl":"Filtr HEPA","ru":"HEPA-фильтр","sv":"HEPA-filter","es":"Filtro HEPA","fr":"Filtre HEPA","ar":"فلتر HEPA","de":"HEPA-Filter"},"units":{"en":"%","nl":"%","da":"%","it":"%","ko":"%","no":"%","pl":"%","ru":"%","sv":"%","es":"%","fr":" %","ar":"%","de":"%"},"desc":{"en":"The HEPA filter level in percent.","nl":"Het HEPA-filterniveau in procenten.","da":"HEPA-filterets niveau i procent.","it":"Il livello del filtro HEPA in percentuale.","ko":"백분율로 표현한 HEPA 필터 수준입니다.","no":"HEPA-filternivået i prosent.","pl":"Poziom filtra HEPA w procentach.","ru":"Уровень HEPA-фильтра в процентах.","sv":"HEPA-filtrets nivå i procent.","es":"El nivel del filtro HEPA en porcentaje.","fr":"Le niveau du filtre HEPA en pourcentage.","ar":"مستوى فلتر HEPA بالنسبة المئوية.","de":"Der HEPA-Filterwert in Prozent."},"min":0,"max":100,"color":"#6236FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_hepa_filter_changed","highlight":true,"title":{"en":"The HEPA filter level changed","nl":"Het HEPA-filterniveau is veranderd","da":"HEPA-filterets niveau ændrede sig","it":"Il livello del filtro HEPA è cambiato","ko":"헤파 필터 수준이 변경되면","no":"HEPA-filternivået ble endret","pl":"Zmienił się poziom filtra HEPA","ru":"Уровень HEPA-фильтра изменился","sv":"HEPA-filternivån ändrades","es":"El nivel del filtro HEPA ha cambiado","fr":"Le niveau du filtre HEPA est passé à","ar":"تغير مستوى فلتر HEPA","de":"Der HEPA-Filterwert hat sich geändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":50}]}]},"minCompatibility":"12.2.0"}')},9480:e=>{"use strict";e.exports=function(e,t,a){var r=" ",i=e.level,n=e.dataLevel,s=e.schema[t],o=e.schemaPath+e.util.getProperty(t),l=e.errSchemaPath+"/"+t,d=!e.opts.allErrors,u="data"+(n||""),m="valid"+i,p="errs__"+i,c=e.util.copy(e),g="";c.level++;var h="valid"+c.level,v=s.every((function(t){return e.opts.strictKeywords?"object"==typeof t&&Object.keys(t).length>0:e.util.schemaHasRules(t,e.RULES.all)}));if(v){var f=c.baseId;r+=" var "+p+" = errors; var "+m+" = false; ";var k=e.compositeRule;e.compositeRule=c.compositeRule=!0;var y=s;if(y)for(var b,w=-1,z=y.length-1;w{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Occupancy Alarm","nl":"Bezettingsalarm","da":"Beboelsesalarm","it":"Allarme occupazione","ko":"점유 감지","no":"Bruksalarm","pl":"Alarm aktywności","ru":"Сигнал активности","sv":"Närvarolarm","es":"Alarma de ocupación","fr":"Alarme d\'occupation","ar":"إنذار الإشغال","de":"Belegungsalarm"},"titleShort":{"en":"Occupancy","nl":"Bezetting","da":"Beboelse","it":"Occupazione","ko":"재실","no":"Bruk","pl":"Zajętość","ru":"Занятость","sv":"Närvaro","es":"Ocupación","fr":"Occupation","ar":"الإشغال","de":"Belegung"},"desc":{"en":"True when occupancy is detected.","nl":"Wordt geactiveerd wanneer gebruik wordt gedetecteerd.","da":"Sandt, når tilstedeværelse registreres.","it":"Vero quando viene rilevata l\'occupazione.","ko":"내부에 사람이 감지되면 참입니다.","no":"Sann når bruk er registrert.","pl":"Prawda, gdy wykryta jest zajętość.","ru":"Значение «истина» при обнаружении занятости.","sv":"Sant när närvaro detekteras.","es":"Activado cuando se detecta ocupación.","fr":"Se déclenche lorsque une occupation est détectée.","ar":"صحيح عند اكتشاف إشغال.","de":"Wahr, wenn eine Belegung erkannt wird."},"insights":true,"insightsTitleTrue":{"en":"Occupancy alarm turned on","nl":"Waarschuwing bij gebruik geactiveerd","da":"Tilstedeværelsesalarm slået til","it":"Allarme occupazione acceso","ko":"점유 감지됨","no":"Bruksalarm aktivert","pl":"Alarm zajętości włączony","ru":"Сигнал о занятости включен","sv":"Närvarolarm aktiverat","es":"Alarma de ocupación activada","fr":"Alarme d\'occupation activée","ar":"تم تشغيل إنذار الإشغال","de":"Belegungsalarm eingeschaltet"},"insightsTitleFalse":{"en":"Occupancy alarm turned off","nl":"Waarschuwing bij gebruik gedeactiveerd","da":"Tilstedeværelsesalarm slået fra","it":"Allarme occupazione spento","ko":"점유 감지되지 않음","no":"Bruksalarm deaktivert","pl":"Alarm zajętości wyłączony","ru":"Сигнал о занятости выключен","sv":"Närvarolarm inaktiverat","es":"Alarma de ocupación desactivada","fr":"Alarme d\'occupation désactivée","ar":"تم إيقاف إنذار الإشغال","de":"Belegungsalarm ausgeschaltet"},"color":"#32C5FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_occupancy_true","highlight":true,"title":{"en":"The occupancy alarm turned on","nl":"De waarschuwing bij gebruik is geactiveerd","da":"Tilstedeværelsesalarmen er slået til","it":"L\'allarme occupazione si è acceso","ko":"점유가 감지되면","no":"Bruksalarmen ble aktivert","pl":"Włączył się alarm zajętości","ru":"Сигнал о занятости включен","sv":"Närvarolarmet aktiverat","es":"La alarma de ocupación se ha activado","fr":"L\'alarme d\'occupation s\'est activée","ar":"تم تشغيل إنذار الإشغال","de":"Der Belegungsalarm hat sich eingeschaltet"}},{"id":"alarm_occupancy_false","title":{"en":"The occupancy alarm turned off","nl":"De waarschuwing bij gebruik is gedeactiveerd","da":"Tilstedeværelsesalarmen er slået fra","it":"L\'allarme occupazione si è spento","ko":"점유가 감지되지 않으면","no":"Bruksalarmen ble deaktivert","pl":"Wyłączył się alarm zajętości","ru":"Сигнал о занятости выключен","sv":"Närvarolarmet inaktiverat","es":"La alarma de ocupación se ha desactivado","fr":"L\'alarme d\'occupation s\'est désactivée","ar":"تم إيقاف إنذار الإشغال","de":"Der Belegungsalarm hat sich ausgeschaltet"}}],"conditions":[{"id":"alarm_occupancy","title":{"en":"Is !{{occupied|not occupied}}","nl":"Wordt !{{gebruikt|niet gebruikt}}","da":"Er ! {{beboet|ikke beboet}}","it":"È !{{occupato|non occupato}}","ko":"점유가 감지!{{되면|되지 않으면}}","no":"Er !{{i bruk|ikke i bruk}}","pl":"Jest !{{zajęte|niezajęte}}","ru":"Устройство !{{занято|не занято}}","sv":"Är !{{närvarande|inte närvarande}}","es":"!{{Está ocupado|No está ocupado}}","fr":"Est !{{connectée|déconnectée}}","ar":"!{{مشغول|غير مشغول}}","de":"Ist !{{belegt|nicht belegt}}"}}]},"minCompatibility":"12.2.0"}')},9514:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Valve position","nl":"Kleppositie","da":"Ventilens position","it":"Posizione della valvola","ko":"밸브 열림 정도","pl":"Pozycja zaworu","ru":"Положение клапана","sv":"Ventilposition","es":"Posición de la válvula","fr":"Position de la vanne","no":"Ventilposisjon","ar":"وضع الصمام","de":"Ventilposition"},"units":{"en":"%","nl":"%","da":"%","it":"%","ko":"%","pl":"%","ru":"%","sv":"%","es":"%","fr":" %","no":"%","ar":"%","de":"%"},"desc":{"en":"The current position of the valve in percent.","nl":"De huidige positie van de klep in procenten.","da":"Ventilens aktuelle position i procent.","it":"La posizione attuale della valvola in percentuale.","ko":"백분율로 표현한 밸브의 현재 위치입니다.","pl":"Bieżąca pozycja zaworu w procentach.","ru":"Текущее положение клапана в процентах.","sv":"Ventilens aktuella position i procent.","es":"La posición actual de la válvula en porcentaje.","fr":"Position actuelle de la vanne en pourcentage.","no":"Ventilens nåværende posisjon i prosent.","ar":"الوضع الحالي للصمام بالنسبة المئوية.","de":"Die aktuelle Position des Ventils in Prozent."},"insights":true,"chartType":"spline","decimals":2,"min":0,"max":1,"color":"#0091FF","getable":true,"setable":true,"uiComponent":"slider","$flow":{"triggers":[{"id":"valve_position_changed","title":{"en":"The valve position changed","nl":"De kleppositie is veranderd","da":"Ventilens position er ændret","it":"La posizione della valvola è cambiata","ko":"밸브 열림이 변경되면","pl":"Zmieniła się pozycja zaworu","ru":"Положение клапана изменено","sv":"Ventilens position har ändrats","es":"La posición de la válvula la cambiado","fr":"La position de la vanne a changé","no":"Ventilposisjonen ble endret","ar":"تم تغيير وضع الصمام","de":"Die Position des Ventils wurde geändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":0.5}]}],"actions":[{"id":"set_valve_position","title":{"en":"Set the valve position","nl":"De kleppositie instellen","da":"Indstil ventilens position","it":"Imposta la posizione della valvola","ko":"밸브 열림 정도 변경","pl":"Ustaw pozycję zaworu","ru":"Установить положение клапана","sv":"Ställ in ventilens position","es":"Ajustar la posición de la válvula","fr":"Définir la position de la vanne","no":"Innstill ventilposisjonen","ar":"ضبط موضع الصمام","de":"Einstellen der Ventilposition"},"args":[{"name":"valve_position","type":"range","min":0,"max":1,"step":0.01,"value":0.5,"label":"%","labelMultiplier":100,"labelDecimals":0}]}]},"minCompatibility":"12.2.0"}')},9581:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Odor","nl":"Geur","da":"Lugt","it":"Odore","ko":"냄새","no":"Lukt","pl":"Zapach","ru":"Запах","sv":"Lukt","es":"Olor","fr":"Odeur","ar":"الرائحة","de":"Geruch"},"units":{"en":"OU","nl":"GE","da":"OU","it":"OU","ko":"OU","no":"OU","pl":"ou","ru":"Единицы интенсивности запаха","sv":"OU","es":"OU","fr":"UO","ar":"وحدات الرائحة","de":"OU"},"desc":{"en":"Odor concentration in odor units.","nl":"Geurconcentratie in geureenheden.","da":"Lugtkoncentration i lugtenheder.","it":"Concentrazione di odori in unità di odore.","ko":"OU(Odor Unit) 단위의 냄새 농도입니다.","no":"Luktkonsentrasjon i luktenheter.","pl":"Stężenie zapachowe w jednostkach zapachowych.","ru":"Концентрация запаха в единицах интенсивности запаха.","sv":"Luktkoncentration i luktenheter.","es":"Concentración de olor en unidades olfativas.","fr":"Concentration d\'odeur en unités d\'odeur.","ar":"تركيز الرائحة بوحدات الرائحة.","de":"Geruchskonzentration in Geruchseinheiten."},"insights":true,"chartType":"spline","decimals":0,"color":"#E02020","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_odor_changed","title":{"en":"The odor concentration changed","nl":"De geurconcentratie is veranderd","da":"Lugtkoncentrationen ændrede sig","it":"La concentrazione di odori è cambiata","ko":"냄새 농도 변경됨","pl":"Zmieniło się stężenie zapachowe","ru":"Концентрация запаха изменилась","sv":"Luktkoncentrationen förändrades","es":"La concentración de olor ha cambiado","fr":"La concentration d\'odeurs a changé","no":"Luktkonsentrasjonen ble endret","ar":"تغير تركيز الرائحة","de":"Die Geruchskonzentration hat sich geändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":200}]}]},"minCompatibility":"12.2.0"}')},9647:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Siren","da":"Sirene","de":"Sirene","es":"Alarma","fr":"Sirène","it":"Allarme","ko":"사이렌","nl":"Sirene","no":"Sirene","pl":"Syrena","ru":"Сирена","sv":"Siren","ar":"صفارة إنذار"},"description":{"en":"Use this device class for sirens.","da":"Brug denne enhedsklasse til sirener.","de":"Verwenden Sie diese Geräteklasse für Sirenen.","es":"Utiliza esta clase de dispositivo para alarmas.","fr":"Utilisez cette classe d\'appareils pour les sirènes.","it":"Utilizza questa classe di dispositivi per gli allarmi.","ko":"이 디바이스 클래스는 사이렌에 사용합니다.","nl":"Gebruik deze apparaatklasse voor sirenes.","no":"Bruk denne enhetsklassen for sirener.","pl":"Tej klasy urządzeń należy używać w przypadku syren.","ru":"Используйте этот класс устройств для сирен.","sv":"Använd den här enhetsklassen för sirener.","ar":"استخدم فئة الجهاز هذه لصفارات الإنذار."},"minCompatibility":"12.0.0"}')},9735:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"pH level","nl":"pH-waarde","da":"pH-niveau","it":"Livello di pH","ko":"산성도","no":"pH-nivå","pl":"Poziom pH","ru":"Уровень pH","sv":"pH-nivå","es":"nivel de PH","fr":"Niveau de pH","ar":"مستوى الحموضة","de":"pH-Wert"},"desc":{"en":"The pH level of a aqueous solution.","nl":"De pH-waarde van een waterige oplossing.","da":"PH-niveauet i en vandig opløsning.","it":"Il livello di pH di una soluzione acquosa.","ko":"수용액의 pH 수준입니다.","pl":"Poziom pH roztworu wodnego.","ru":"Уровень pH водного раствора.","sv":"pH-värdet i en vattenlösning.","es":"El nivel de pH de una solución acuosa.","fr":"Le pH d\'une solution aqueuse.","no":"pH-nivå for en vandig løsning.","ar":"مستوى الحموضة للمحلول المائي.","de":"Der pH-Wert einer wässrigen Lösung."},"insights":true,"chartType":"spline","decimals":2,"color":"#E02020","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_ph_changed","title":{"en":"The pH level changed","nl":"De pH-waarde is veranderd","da":"PH-niveauet ændrede sig","it":"Il livello di pH è cambiato","ko":"산성도가 변경되면","pl":"Zmienił się poziom pH","ru":"Уровень pH изменился","sv":"pH-nivån förändrades","es":"El nivel de pH ha cambiado","fr":"Le niveau de pH a changé","no":"pH-nivået ble endret","ar":"تغير مستوى الحموضة","de":"Der pH-Wert hat sich geändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":2}]}]},"minCompatibility":"12.2.0"}')},9738:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Sprinkler","da":"Sprinkler","de":"Sprinkleranlage","es":"Aspersor","fr":"Arrosage","it":"Irrigatore","ko":"스프링클러","nl":"Sprinkler","no":"Sprinkler","pl":"Zraszacz","ru":"Спринклер","sv":"Sprinkler","ar":"رشاش"},"description":{"en":"Use this device class for sprinkler systems.","da":"Brug denne enhedsklasse til sprinklersystemer.","de":"Verwenden Sie diese Geräteklasse für Sprinkleranlagen.","es":"Utiliza esta clase de dispositivo para sistemas de riego.","fr":"Utilisez cette classe d\'appareils pour les systèmes d\'arrosage.","it":"Utilizza questa classe di dispositivi per i sistemi di irrigazione.","ko":"이 디바이스 클래스는 스프링클러 시스템에 사용합니다.","nl":"Gebruik deze apparaatklasse voor sprinklersystemen.","no":"Bruk denne enhetsklassen for sprinkleranlegg.","pl":"Tej klasy urządzeń należy używać w instalacjach zraszaczy.","ru":"Используйте этот класс устройств для спринклерных систем.","sv":"Använd den här enhetsklassen för sprinklersystem.","ar":"استخدم فئة الجهاز هذه لأنظمة الرشاشات."},"minCompatibility":"12.0.0"}')},9764:e=>{"use strict";var t=/^GIF8[79]a/;e.exports={detect:function(e){var a=e.toString("ascii",0,6);return t.test(a)},calculate:function(e){return{width:e.readUInt16LE(6),height:e.readUInt16LE(8)}}}},9792:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Power","nl":"Vermogen","de":"Leistung","fr":"Puissance","it":"Potenza","sv":"Effekt","no":"Effekt","es":"Potencia","da":"Effekt","ru":"Электроэнергия","pl":"Moc","ko":"소비 전력","ar":"الطاقة"},"units":{"en":"W","ru":"Вт","ko":"W","ar":"واط","da":"W","de":"W","es":"W","it":"W","nl":"W","no":"W","pl":"W","sv":"W"},"insights":true,"desc":{"en":"Power in watt (W)","nl":"Vermogen in watt (W)","de":"Leistung in Watt (W)","fr":"Puissance en watt (W)","it":"Potenza in watt (W)","sv":"Effekt i watt (W)","no":"Effekt i watt (W)","es":"Potencia en vatios (W)","da":"Effekt i watt (W)","ru":"Электроэнергия (Вт)","pl":"Moc w watach (W)","ko":"전력 와트(W)","ar":"الطاقة بالواط (W)"},"options":{"isApproximated":{"type":"boolean","default":false,"desc":{"en":"This flag is used to determine that the device itself has no power measurement functionality, but that the driver calculates the energy use.","ru":"Этот флаг используется для определения того, что само устройство не имеет функции измерения электроэнергии, но драйвер рассчитывает потребление энергии.","pl":"Flaga oznacza, że samo urządzenie nie ma funkcji pomiaru mocy, ale sterownik oblicza zużycie energii.","ko":"이 플래그는 제품 자체에 전력 측정 기능이 없지만 드라이버가 에너지 사용량을 계산하는 경우에 사용돼요.","no":"Dette flagget brukes til å anmerke at enheten i seg selv ikke har noen funksjon for effektmåling, men at sjåføren beregner energibruken.","es":"Este aviso indica que el dispositivo no dispone de ninguna funcionalidad para medir la energía, sino que el controlador calcula el uso de energía.","ar":"تُستخدم هذه العلامة لتحديد أن الجهاز نفسه لا يحتوي على وظيفة قياس الطاقة، غير أن برنامج التشغيل يحسب استهلاك الطاقة.","da":"Dette flag bruges til at bestemme, at enheden ikke selv har nogen strømmålingsfunktionalitet, men at driveren beregner energiforbruget.","de":"Dieses Flag wird verwendet, um festzustellen, dass das Gerät selbst keine Strommessfunktion hat, sondern dass der Treiber den Energieverbrauch berechnet.","fr":"Cet indicateur sert à signaler que l\'appareil n\'intègre pas de fonction de mesure de la puissance et la consommation d\'énergie est calculée par le pilote.","it":"Questo flag viene utilizzato per indicare che il dispositivo in sé non dispone di una funzionalità di misurazione dell\'energia, ma che il driver calcola il consumo energetico.","nl":"Deze vlag wordt gebruikt om aan te geven dat het apparaat zelf geen functionaliteit voor vermogensmeting heeft, maar dat het stuurprogramma het energieverbruik berekent.","sv":"Denna flagga används för att fastställa att enheten i sig inte har någon funktion för effektmätning, men att drivrutinen beräknar energianvändningen."}}},"chartType":"stepLine","decimals":2,"color":"#6DD400","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_power_changed","highlight":true,"title":{"en":"The power changed","nl":"Het vermogen is veranderd","de":"Die Stromversorgung wurde geändert","fr":"L\'énergie a changé","it":"L\'energia è cambiata","sv":"Strömmen ändrades","no":"Strømmen ble endret","es":"La potencia ha cambiado","da":"Strømmen ændrede sig","ru":"Электроэнергия изменена","pl":"Zmiana mocy","ko":"소비 전력이 변경되면","ar":"تغيرت الطاقة"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":7.5}]}]}}')},9819:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Noise","nl":"Geluid","de":"Lärm","fr":"Bruit","it":"Rumore","sv":"Buller","no":"Støy","es":"Ruido","ru":"Шум","pl":"Hałas","ko":"소음","ar":"الضوضاء","da":"Støj"},"units":{"en":"dB","ru":"дБ","ko":"dB","no":"dB","ar":"ديسيبل","da":"dB","de":"dB","es":"dB","fr":"dB","it":"dB","nl":"dB","pl":"dB","sv":"dB"},"insights":true,"desc":{"en":"Noise in decibel (dB)","nl":"Geluid in decibel (dB)","de":"Lärm in Dezibel (dB)","fr":"Bruit en decibel (dB)","it":"Rumore in decibel (dB)","sv":"Buller i decibel (dB)","no":"Støy i decibel (dB)","es":"Ruido en decibelios (dB)","da":"Støj i decibel (dB)","ru":"Шум в децибелах (дБ)","pl":"Poziom hałasu w decybelach (dB)","ko":"소음 데시벨(dB)","ar":"الضوضاء بالديسيبل (dB)"},"chartType":"spline","decimals":2,"color":"#F7B500","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_noise_changed","title":{"en":"The noise changed","nl":"Het geluidsniveau is veranderd","de":"Der Lärm hat sich geändert","fr":"Le bruit a changé","it":"Il rumore è cambiato","sv":"Bullret ändrades","no":"Støyen ble endret","es":"El ruido ha cambiado","da":"Støjniveauet ændrede sig","ru":"Шум изменился","pl":"Zmiana poziomu hałasu","ko":"소음이 변경되면","ar":"تغيرت الضوضاء"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":43}]}]}}')},9848:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Pet Feeder","da":"Foderautomat til kæledyr","de":"Futterspender","es":"Comedero para mascotas","fr":"Mangeoire pour animaux","it":"Distributore di cibo per animali domestici","ko":"펫 급식기","nl":"Voerbak","no":"Kjæledyrmater","pl":"Karmnik dla zwierząt","ru":"Кормушка для животных","sv":"Foderautomat till husdjur","ar":"مغذية حيوانات أليفة"},"description":{"en":"Use this device class for pet feeders.","da":"Brug denne enhedsklasse til foderautomater til kæledyr.","de":"Verwenden Sie diese Geräteklasse für Futterspender für Haustiere.","es":"Utiliza esta clase de dispositivo para comederos de mascotas.","fr":"Utilisez cette classe d\'appareils pour les mangeoires pour animaux.","it":"Utilizza questa classe di dispositivi per i distributori di cibo per animali domestici.","ko":"이 디바이스 클래스는 사료 급여기에 사용합니다.","nl":"Gebruik deze apparaatklasse voor voerbakken.","no":"Bruk denne enhetsklassen for kjæledyrmatere.","pl":"Tej klasy urządzeń należy używać w przypadku karmników dla zwierząt.","ru":"Используйте этот класс устройств для кормушек для домашних животных.","sv":"Använd den här enhetsklassen för foderautomater till husdjur.","ar":"استخدم فئة الجهاز هذه لمغذيات الحيوانات الأليفة."},"minCompatibility":"12.0.0"}')},9853:e=>{"use strict";e.exports=function(e){for(var t,a=0,r=e.length,i=0;i=55296&&t<=56319&&i{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Safety Alarm","nl":"Veiligheidswaarschuwing","da":"Sikkerhedsalarm","it":"Allarme sicurezza","ko":"위험 감지","no":"Trygghetsalarm","pl":"Alarm bezpieczeństwa","ru":"Сигнал тревоги","sv":"Säkerhetslarm","es":"Alarma de seguridad","fr":"Alarme de sécurité","ar":"إنذار الأمان","de":"Sicherheitsalarm"},"titleShort":{"en":"Safety","nl":"Veiligheid","da":"Sikkerhed","it":"Sicurezza","ko":"안전","no":"Trygghet","pl":"Bezpieczeństwo","ru":"Безопасность","sv":"Säkerhet","es":"Seguridad","fr":"Sécurité","ar":"الأمان","de":"Sicherheit"},"desc":{"en":"True when unsafe.","nl":"Wordt geactiveerd wanneer het onveilig is.","da":"Sandt, når usikker.","it":"Vero quando non sicuro.","ko":"안전하지 않으면 참입니다.","no":"Sann ved utrygge forhold.","pl":"Prawda, gdy nie jest bezpieczne.","ru":"Значение «истина» при возникновении опасности.","sv":"Sant när det är osäkert.","es":"Activado cuando no es seguro.","fr":"Se déclenche en cas d\'insécurité.","ar":"صحيح عندما يكون غير آمن.","de":"Wahr, wenn unsicher."},"insights":true,"insightsTitleTrue":{"en":"Safety alarm turned on","nl":"Veiligheidswaarschuwing geactiveerd","da":"Sikkerhedsalarm slået til","it":"Allarme sicurezza acceso","ko":"위험","no":"Trygghetsalarm aktivert","pl":"Alarm bezpieczeństwa włączony","ru":"Сигнал тревоги включен","sv":"Säkerhetslarm aktiverat","es":"Alarma de seguridad activada","fr":"Alarme de sécurité activée","ar":"تم تشغيل إنذار الأمان","de":"Sicherheitsalarm eingeschaltet"},"insightsTitleFalse":{"en":"Safety alarm turned off","nl":"Veiligheidswaarschuwing gedeactiveerd","da":"Sikkerhedsalarm slået fra","it":"Allarme sicurezza spento","ko":"안전","no":"Trygghetsalarm deaktivert","pl":"Alarm bezpieczeństwa wyłączony","ru":"Сигнал тревоги выключен","sv":"Säkerhetslarm inaktiverat","es":"Alarma de seguridad desactivada","fr":"Alarme de sécurité désactivée","ar":"تم إيقاف إنذار الأمان","de":"Sicherheitsalarm ausgeschaltet"},"color":"#32C5FF","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_safety_true","highlight":true,"title":{"en":"The safety alarm turned on","nl":"De veiligheidswaarschuwing is geactiveerd","da":"Sikkerhedsalarmen er slået til","it":"L\'allarme sicurezza si è acceso","ko":"위험이면","no":"Trygghetsalarmen ble aktivert","pl":"Włączył się alarm bezpieczeństwa","ru":"Сигнал тревоги включен","sv":"Säkerhetslarmet aktiverat","es":"La alarma de seguridad se ha activado","fr":"L\'alarme de sécurité s\'est activée","ar":"تم تشغيل إنذار الأمان","de":"Der Sicherheitsalarm wurde eingeschaltet"}},{"id":"alarm_safety_false","title":{"en":"The safety alarm turned off","nl":"De veiligheidswaarschuwing is gedeactiveerd","da":"Sikkerhedsalarmen er slået fra","it":"L\'allarme sicurezza si è spento","ko":"안전이면","no":"Trygghetsalarmen ble deaktivert","pl":"Wyłączył się alarm bezpieczeństwa","ru":"Сигнал тревоги выключен","sv":"Säkerhetslarmet inaktiverat","es":"La alarma de seguridad se ha apagado","fr":"L\'alarme de sécurité s\'est désactivée","ar":"تم إيقاف إنذار الأمان","de":"Der Sicherheitsalarm wurde ausgeschaltet"}}],"conditions":[{"id":"alarm_safety","title":{"en":"The safety alarm is !{{on|off}}","nl":"De veiligheidswaarschuwing is !{{geactiveerd|gedeactiveerd}}","da":"Sikkerhedsalarmen er !{{tændt|slukket}}","it":"L\'allarme sicurezza è !{{acceso|spento}}","ko":"!{{위험|안전}}이면","no":"Trygghetsalarmen er !{{på|av}}","pl":"Alarm bezpieczeństwa jest !{{włączony|wyłączony}}","ru":"Сигнал тревоги !{{включен|выключен}}","sv":"Säkerhetslarmet är !{{på|av}}","es":"La alarma de seguridad está !{{activada|desactivada}}","fr":"L\'alarme de sécurité est !{{activée|désactivée}}","ar":"إنذار الأمان !{{يعمل|لا يعمل}}","de":"Der Sicherheitsalarm ist !{{an|aus}}"}}]},"minCompatibility":"12.2.0"}')},9922:e=>{"use strict";e.exports=JSON.parse('{"title":{"en":"Diffuser","da":"Aromalampe","de":"Zerstäuber","es":"Difusor","fr":"Diffuseur","it":"Diffusore","ko":"디퓨저","nl":"Diffuser","no":"Duftspreder","pl":"Dyfuzor","ru":"Диффузор","sv":"Diffusör","ar":"ناشر رائحة"},"description":{"en":"User this device class for diffusers.","da":"Brug denne enhedsklasse til aromalamper.","de":"Verwenden Sie diese Geräteklasse für Zerstäuber.","es":"Utiliza esta clase de dispositivo para difusores.","fr":"Utilisez cette classe d\'appareil pour les diffuseurs.","it":"Utilizza questa classe di dispositivi per i diffusori.","ko":"이 디바이스 클래스는 디퓨저에 사용합니다.","nl":"Gebruik deze apparaatklasse voor diffusers.","no":"Bruk denne enhetsklassen for duftspredere.","pl":"Tej klasy urządzeń należy używać w przypadku dyfuzorów.","ru":"Используйте этот класс устройств для диффузоров.","sv":"Använd den här enhetsklassen för diffusörer.","ar":"استخدم فئة الجهاز هذه لناشرات الرائحة."},"minCompatibility":"12.0.0"}')},9975:e=>{"use strict";e.exports=JSON.parse('{"type":"number","title":{"en":"Formaldehyde","nl":"Formaldehyde","da":"Formaldehyd","it":"Formaldeide","ko":"포름알데히드","pl":"Formaldehyd","ru":"Формальдегид","sv":"Formaldehyd","es":"Formaldehído","fr":"Formaldéhyde","no":"Formaldehyd","ar":"الفورمالديهيد","de":"Formaldehyd"},"units":{"en":"μg/m³","nl":"μg/m³","da":"μg/m³","it":"μg/m³","ko":"μg/m³","pl":"μg/m³","ru":"мкг/м³","sv":"μg/m³","es":"μg/m³","fr":"μg/m³","no":"μg/m³","ar":"ميكروجرام/م³","de":"μg/m³"},"insights":true,"desc":{"en":"Formaldehyde in micrograms per cubic meter (μg/m³)","nl":"Formaldehyde in microgram per kubieke meter (μg/m³)","da":"Formaldehyd i mikrogram pr. kubikmeter (μg/m³)","it":"Formaldeide in microgrammi per metro cubo (μg/m³)","ko":"입방미터당 마이크로그램(μg/m³) 단위의 포름알데히드","pl":"Formaldehyd w mikrogramach na metr sześcienny (μg/m³)","ru":"Формальдегид в микрограммах на кубический метр (мкг/м³)","sv":"Formaldehyd i mikrogram per kubikmeter (μg/m³)","es":"Formaldehído en microgramos por metro cúbico (μg/m³)","fr":"Formaldéhyde en microgrammes par mètre cube (μg/m³)","no":"Formaldehyd i mikrogram per kubikkmeter (μg/m³)","ar":"الفورمالديهيد بالميكروجرام لكل متر مكعب (μg/m³)","de":"Formaldehyd in Mikrogramm pro Kubikmeter (μg/m³)"},"chartType":"spline","decimals":2,"color":"#8B0000","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"measure_ch2o_changed","title":{"en":"The formaldehyde level changed","nl":"Het formaldehydeniveau is veranderd","da":"Formaldehydniveauet ændrede sig","it":"Il livello di formaldeide è cambiato","ko":"포름알데히드 수준이 변경되면","pl":"Zmienił się poziom formaldehydu","ru":"Уровень формальдегида изменился","sv":"Formaldehydnivån ändrades","es":"El nivel de formaldehído ha cambiado","fr":"Le niveau de formaldéhyde a changé","no":"Formaldehydnivået ble endret","ar":"تم تغيير مستوى الفورمالديهيد","de":"Der Formaldehydgehalt hat sich geändert"},"tokens":[{"name":"$id","title":"$title","type":"$type","example":2}]}]},"minCompatibility":"12.2.0"}')},9981:e=>{"use strict";e.exports=JSON.parse('{"type":"boolean","title":{"en":"Gas Alarm","nl":"Gasalarm","da":"Gasalarm","fr":"Alarme de gaz","it":"Allarme gas","ko":"가스 감지","no":"Gassalarm","pl":"Alarm gazu","ru":"Сигнал газа","sv":"Gaslarm","es":"Alarma de gas","ar":"إنذار الغاز","de":"Gasalarm"},"titleShort":{"en":"Gas","nl":"Gas","da":"Gas","fr":"Gaz","it":"Gas","ko":"가스","no":"Gass","pl":"Gaz","ru":"Газ","sv":"Gas","es":"Gas","ar":"الغاز","de":"Gas"},"description":{"en":"True when gas is detected","nl":"Wordt geactiveerd wanneer gas wordt gedetecteerd","da":"Sandt, når der registreres gas","fr":"Se déclenche lorsque du gaz est détecté","it":"Vero quando viene rilevato del gas","ko":"가스가 감지되면 참임","no":"Sann når gass er oppdaget","pl":"Prawda, gdy wykryty jest gaz","ru":"Значение «истина» при обнаружении газа","sv":"Sant när gas detekteras","es":"Activado cuando se detecta gas","ar":"صحيح عند اكتشاف غاز","de":"Wahr, wenn Gas erkannt wird"},"insights":true,"insightsTitleTrue":{"en":"Gas alarm turned on","nl":"Gaswaarschuwing geactiveerd","da":"Gasalarm slået til","fr":"Alarme de gaz activée","it":"Allarme gas acceso","ko":"가스 감지됨","no":"Gassalarm aktivert","pl":"Alarm gazu włączony","ru":"Сигнал об утечке газа включен","sv":"Gaslarm aktiverat","es":"Alarma de gas activada","ar":"تم تشغيل إنذار الغاز","de":"Gasalarm eingeschaltet"},"insightsTitleFalse":{"en":"Gas alarm turned off","nl":"Gaswaarschuwing gedeactiveerd","da":"Gasalarm slået fra","fr":"Alarme de gaz désactivée","it":"Allarme gas spento","ko":"정상","no":"Gassalarm deaktivert","pl":"Alarm gazu wyłączony","ru":"Сигнал об утечке газа выключен","sv":"Gaslarm inaktiverat","es":"Alarma de gas desactivada","ar":"تم إيقاف إنذار الغاز","de":"Gasalarm ausgeschaltet"},"color":"#F9236C","getable":true,"setable":false,"uiComponent":"sensor","$flow":{"triggers":[{"id":"alarm_gas_true","highlight":true,"title":{"en":"The gas alarm turned on","nl":"De gaswaarschuwing is geactiveerd","da":"Gasalarmen tændte","fr":"L\'alarme de gaz s\'est activée","it":"L\'allarme gas si è acceso","ko":"가스가 감지되면","no":"Gassalarmen ble aktivert","pl":"Włączył się alarm gazu","ru":"Сигнал об утечке газа включен","sv":"Gaslarmet aktiveras","es":"La alarma de gas se ha activado","ar":"تم تشغيل إنذار الغاز","de":"Der Gasalarm wurde eingeschaltet"}},{"id":"alarm_gas_false","title":{"en":"The gas alarm turned off","nl":"De gaswaarschuwing is gedeactiveerd","da":"Gasalarmen slukkede","it":"L\'allarme gas si è spento","ko":"가스 감지가 정상 상태이면","no":"Gassalarmen ble deaktivert","pl":"Wyłączył się alarm gazu","ru":"Сигнал об утечке газа выключен","sv":"Gaslarmet inaktiverat","es":"La alarma de gas se ha desactivado","fr":"L\'alarme de gaz s\'est désactivée","ar":"تم إيقاف إنذار الغاز","de":"Der Gasalarm wurde ausgeschaltet"}}],"conditions":[{"id":"alarm_gas","title":{"en":"The gas alarm is !{{on|off}}","nl":"De gaswaarschuwing is !{{geactiveerd|gedeactiveerd}}","da":"Gasalarmen er slået !{{til|fra}}","it":"L\'allarme gas è !{{acceso|spento}}","ko":"!{{가스가 감지되면|가스 감지가 정상 상태이면}}","no":"Gassalarmen er !{{på|av}}","pl":"Alarm gazu jest !{{włączony|wyłączony}}","ru":"Сигнал об утечке газа !{{включен|выключен}}","sv":"Gaslarmet är !{{på|av}}","es":"La alarma de gas está !{{activada|desactivada}}","fr":"L\'alarme de gaz est !{{activée|désactivée}}","ar":"إنذار الغاز !{{يعمل|لا يعمل}}","de":"Der Gasalarm ist !{{an|aus}}"}}]},"minCompatibility":"12.2.0"}')}},t={};function a(r){var i=t[r];if(void 0!==i)return i.exports;var n=t[r]={exports:{}};return e[r].call(n.exports,n,n.exports,a),n.exports}return a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a(5237)})())); \ No newline at end of file