@zwave-js/config 8.5.1 → 8.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/Logger.d.ts +3 -2
- package/build/Logger.d.ts.map +1 -1
- package/build/Logger.js +1 -0
- package/build/Logger.js.map +1 -1
- package/build/Logic.d.ts.map +1 -1
- package/build/Logic.js +6 -6
- package/build/Logic.js.map +1 -1
- package/build/utils.d.ts +0 -2
- package/build/utils.d.ts.map +1 -1
- package/build/utils.js +3 -8
- package/build/utils.js.map +1 -1
- package/config/devices/0x001d/dzs15.json +4 -0
- package/config/devices/0x007a/506219.json +5 -1
- package/config/devices/0x0085/fvs.json +52 -0
- package/config/devices/0x0109/{zse40.json → zp3111-5.json} +3 -3
- package/config/devices/0x010a/01e06s263.json +32 -186
- package/config/devices/0x010a/templates/vitrum_template.json +218 -0
- package/config/devices/0x010a/vitrium_ii_roller_blinds.json +3 -3
- package/config/devices/0x010a/vitrum_i_dimmer.json +15 -3
- package/config/devices/0x010a/vitrum_i_eu_boiler.json +3 -3
- package/config/devices/0x010a/vitrum_i_switch.json +33 -0
- package/config/devices/0x010a/vitrum_ii_dimmer.json +19 -3
- package/config/devices/0x010a/vitrum_ii_switch.json +37 -0
- package/config/devices/0x010a/vitrum_iii_eu_dimmer.json +12 -6
- package/config/devices/0x010a/vitrum_satellite_i.json +28 -0
- package/config/devices/0x010a/vitrum_satellite_iv.json +13 -11
- package/config/devices/0x010a/vitrum_satellite_vi.json +14 -9
- package/config/devices/0x010a/vitrum_scenario.json +3 -3
- package/config/devices/0x010f/fgs212.json +6 -1
- package/config/devices/0x010f/fgs223.json +10 -0
- package/config/devices/0x010f/fgt001.json +4 -1
- package/config/devices/0x013c/pan06_0.0-1.7.json +29 -2
- package/config/devices/0x0258/nas-ds01z.json +4 -0
- package/config/devices/0x0344/he-ft01.json +780 -0
- package/config/devices/0x0344/he-ht01.json +2 -2
- package/config/devices/0x0371/{zwa009.json → zwa009_0.0_1.255.json} +2 -2
- package/config/devices/0x0371/zwa009_11.1_11.1.json +226 -0
- package/config/devices/0x0371/zwa039.json +282 -0
- package/package.json +9 -9
- package/config/devices/0x010a/vitrum_i_eu_switch.json +0 -21
- package/config/devices/0x010a/vitrum_ii_eu_switch.json +0 -17
package/build/Logger.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { ZWaveLogContainer, ZWaveLoggerBase } from "@zwave-js/core";
|
|
1
|
+
import { LogContext, ZWaveLogContainer, ZWaveLoggerBase } from "@zwave-js/core";
|
|
2
2
|
export declare const CONFIG_LABEL = "CONFIG";
|
|
3
|
-
export declare
|
|
3
|
+
export declare type ConfigLogContext = LogContext<"config">;
|
|
4
|
+
export declare class ConfigLogger extends ZWaveLoggerBase<ConfigLogContext> {
|
|
4
5
|
constructor(loggers: ZWaveLogContainer);
|
|
5
6
|
/**
|
|
6
7
|
* Logs a message
|
package/build/Logger.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Logger.d.ts","sourceRoot":"","sources":["../src/Logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,iBAAiB,EACjB,eAAe,EACf,MAAM,gBAAgB,CAAC;AAExB,eAAO,MAAM,YAAY,WAAW,CAAC;AAGrC,qBAAa,YAAa,SAAQ,eAAe;
|
|
1
|
+
{"version":3,"file":"Logger.d.ts","sourceRoot":"","sources":["../src/Logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,UAAU,EACV,iBAAiB,EACjB,eAAe,EACf,MAAM,gBAAgB,CAAC;AAExB,eAAO,MAAM,YAAY,WAAW,CAAC;AAGrC,oBAAY,gBAAgB,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;AAEpD,qBAAa,YAAa,SAAQ,eAAe,CAAC,gBAAgB,CAAC;gBACtD,OAAO,EAAE,iBAAiB;IAItC;;;OAGG;IACI,KAAK,CACX,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GACrD,IAAI;CAWP"}
|
package/build/Logger.js
CHANGED
package/build/Logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Logger.js","sourceRoot":"","sources":["../src/Logger.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"Logger.js","sourceRoot":"","sources":["../src/Logger.ts"],"names":[],"mappings":";;;AAAA,yCAKwB;AAEX,QAAA,YAAY,GAAG,QAAQ,CAAC;AACrC,MAAM,eAAe,GAAG,OAAO,CAAC;AAIhC,MAAa,YAAa,SAAQ,sBAAiC;IAClE,YAAY,OAA0B;QACrC,KAAK,CAAC,OAAO,EAAE,oBAAY,CAAC,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACI,KAAK,CACX,OAAe,EACf,KAAuD;QAEvD,MAAM,WAAW,GAAG,KAAK,IAAI,eAAe,CAAC;QAC7C,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,WAAW,CAAC;YAAE,OAAO;QAE3D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;YACf,KAAK,EAAE,WAAW;YAClB,OAAO;YACP,SAAS,EAAE,IAAA,yBAAkB,EAAC,MAAM,CAAC;YACrC,OAAO,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE;SAC7B,CAAC,CAAC;IACJ,CAAC;CACD;AAvBD,oCAuBC"}
|
package/build/Logic.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Logic.d.ts","sourceRoot":"","sources":["../src/Logic.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Logic.d.ts","sourceRoot":"","sources":["../src/Logic.ts"],"names":[],"mappings":"AACA,OAAO,EAAwB,UAAU,EAAE,MAAM,eAAe,CAAC;AAsCjE,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAEpD;AAED,wBAAgB,QAAQ,CACvB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,OAAO,GACd,MAAM,GAAG,MAAM,GAAG,OAAO,CAG3B"}
|
package/build/Logic.js
CHANGED
|
@@ -20,10 +20,10 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
20
20
|
};
|
|
21
21
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
22
|
exports.evaluate = exports.parseLogic = void 0;
|
|
23
|
+
const shared_1 = require("@zwave-js/shared");
|
|
23
24
|
const json_logic_js_1 = require("json-logic-js");
|
|
24
25
|
const semver = __importStar(require("semver"));
|
|
25
26
|
const LogicParser_1 = require("./LogicParser");
|
|
26
|
-
const utils_1 = require("./utils");
|
|
27
27
|
function tryOr(operation, onError) {
|
|
28
28
|
return ((...args) => {
|
|
29
29
|
try {
|
|
@@ -34,11 +34,11 @@ function tryOr(operation, onError) {
|
|
|
34
34
|
}
|
|
35
35
|
});
|
|
36
36
|
}
|
|
37
|
-
(0, json_logic_js_1.add_operation)("ver >=", tryOr((a, b) => semver.gte((0,
|
|
38
|
-
(0, json_logic_js_1.add_operation)("ver >", tryOr((a, b) => semver.gt((0,
|
|
39
|
-
(0, json_logic_js_1.add_operation)("ver <=", tryOr((a, b) => semver.lte((0,
|
|
40
|
-
(0, json_logic_js_1.add_operation)("ver <", tryOr((a, b) => semver.lt((0,
|
|
41
|
-
(0, json_logic_js_1.add_operation)("ver ===", tryOr((a, b) => semver.eq((0,
|
|
37
|
+
(0, json_logic_js_1.add_operation)("ver >=", tryOr((a, b) => semver.gte((0, shared_1.padVersion)(a), (0, shared_1.padVersion)(b)), false));
|
|
38
|
+
(0, json_logic_js_1.add_operation)("ver >", tryOr((a, b) => semver.gt((0, shared_1.padVersion)(a), (0, shared_1.padVersion)(b)), false));
|
|
39
|
+
(0, json_logic_js_1.add_operation)("ver <=", tryOr((a, b) => semver.lte((0, shared_1.padVersion)(a), (0, shared_1.padVersion)(b)), false));
|
|
40
|
+
(0, json_logic_js_1.add_operation)("ver <", tryOr((a, b) => semver.lt((0, shared_1.padVersion)(a), (0, shared_1.padVersion)(b)), false));
|
|
41
|
+
(0, json_logic_js_1.add_operation)("ver ===", tryOr((a, b) => semver.eq((0, shared_1.padVersion)(a), (0, shared_1.padVersion)(b)), false));
|
|
42
42
|
function parseLogic(logic) {
|
|
43
43
|
return (0, LogicParser_1.parse)(logic);
|
|
44
44
|
}
|
package/build/Logic.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Logic.js","sourceRoot":"","sources":["../src/Logic.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAiE;AACjE,+CAAiC;AACjC,+CAAsC;
|
|
1
|
+
{"version":3,"file":"Logic.js","sourceRoot":"","sources":["../src/Logic.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA8C;AAC9C,iDAAiE;AACjE,+CAAiC;AACjC,+CAAsC;AAEtC,SAAS,KAAK,CACb,SAAY,EACZ,OAAsB;IAEtB,OAAO,CAAC,CAAC,GAAG,IAAW,EAAE,EAAE;QAC1B,IAAI;YACH,OAAO,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC;SAC1B;QAAC,MAAM;YACP,OAAO,OAAO,CAAC;SACf;IACF,CAAC,CAAa,CAAC;AAChB,CAAC;AAED,IAAA,6BAAa,EACZ,QAAQ,EACR,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAA,mBAAU,EAAC,CAAC,CAAC,EAAE,IAAA,mBAAU,EAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAChE,CAAC;AACF,IAAA,6BAAa,EACZ,OAAO,EACP,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAA,mBAAU,EAAC,CAAC,CAAC,EAAE,IAAA,mBAAU,EAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAC/D,CAAC;AACF,IAAA,6BAAa,EACZ,QAAQ,EACR,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAA,mBAAU,EAAC,CAAC,CAAC,EAAE,IAAA,mBAAU,EAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAChE,CAAC;AACF,IAAA,6BAAa,EACZ,OAAO,EACP,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAA,mBAAU,EAAC,CAAC,CAAC,EAAE,IAAA,mBAAU,EAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAC/D,CAAC;AACF,IAAA,6BAAa,EACZ,SAAS,EACT,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAA,mBAAU,EAAC,CAAC,CAAC,EAAE,IAAA,mBAAU,EAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAC/D,CAAC;AAEF,SAAgB,UAAU,CAAC,KAAa;IACvC,OAAO,IAAA,mBAAK,EAAC,KAAK,CAAC,CAAC;AACrB,CAAC;AAFD,gCAEC;AAED,SAAgB,QAAQ,CACvB,KAAa,EACb,OAAgB;IAEhB,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IAChC,OAAO,IAAA,qBAAK,EAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAC9B,CAAC;AAND,4BAMC"}
|
package/build/utils.d.ts
CHANGED
|
@@ -9,8 +9,6 @@ export declare const hexKeyRegex4Digits: RegExp;
|
|
|
9
9
|
export declare const hexKeyRegex2Digits: RegExp;
|
|
10
10
|
export declare function throwInvalidConfig(which: string, reason?: string): never;
|
|
11
11
|
export declare function getDeviceEntryPredicate(manufacturerId: number, productType: number, productId: number, firmwareVersion?: string): (entry: DeviceConfigIndexEntry) => boolean;
|
|
12
|
-
/** Pads a firmware version string, so it can be compared with semver */
|
|
13
|
-
export declare function padVersion(version: string): string;
|
|
14
12
|
export declare function getEmbeddedConfigVersion(): Promise<string>;
|
|
15
13
|
export declare type SyncExternalConfigDirResult = {
|
|
16
14
|
success: false;
|
package/build/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE7C,gEAAgE;AAChE,eAAO,MAAM,SAAS,QAAuC,CAAC;AAC9D,0EAA0E;AAC1E,wBAAgB,iBAAiB,IAAI,MAAM,GAAG,SAAS,CAEtD;AAED,eAAO,MAAM,kBAAkB,QAAkB,CAAC;AAClD,eAAO,MAAM,kBAAkB,QAAoB,CAAC;AACpD,eAAO,MAAM,kBAAkB,QAAoB,CAAC;AAEpD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,CAMxE;AAED,wBAAgB,uBAAuB,CACtC,cAAc,EAAE,MAAM,EACtB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,eAAe,CAAC,EAAE,MAAM,GACtB,CAAC,KAAK,EAAE,sBAAsB,KAAK,OAAO,CAoB5C;AAED,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE7C,gEAAgE;AAChE,eAAO,MAAM,SAAS,QAAuC,CAAC;AAC9D,0EAA0E;AAC1E,wBAAgB,iBAAiB,IAAI,MAAM,GAAG,SAAS,CAEtD;AAED,eAAO,MAAM,kBAAkB,QAAkB,CAAC;AAClD,eAAO,MAAM,kBAAkB,QAAoB,CAAC;AACpD,eAAO,MAAM,kBAAkB,QAAoB,CAAC;AAEpD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,KAAK,CAMxE;AAED,wBAAgB,uBAAuB,CACtC,cAAc,EAAE,MAAM,EACtB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,eAAe,CAAC,EAAE,MAAM,GACtB,CAAC,KAAK,EAAE,sBAAsB,KAAK,OAAO,CAoB5C;AAED,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,MAAM,CAAC,CAEhE;AAED,oBAAY,2BAA2B,GACpC;IACA,OAAO,EAAE,KAAK,CAAC;CACd,GACD;IACA,OAAO,EAAE,IAAI,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACf,CAAC;AAEL;;GAEG;AACH,wBAAsB,qBAAqB,CAC1C,MAAM,EAAE,YAAY,GAClB,OAAO,CAAC,2BAA2B,CAAC,CAsEtC"}
|
package/build/utils.js
CHANGED
|
@@ -22,7 +22,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
22
22
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
23
23
|
};
|
|
24
24
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
25
|
-
exports.syncExternalConfigDir = exports.getEmbeddedConfigVersion = exports.
|
|
25
|
+
exports.syncExternalConfigDir = exports.getEmbeddedConfigVersion = exports.getDeviceEntryPredicate = exports.throwInvalidConfig = exports.hexKeyRegex2Digits = exports.hexKeyRegex4Digits = exports.hexKeyRegexNDigits = exports.externalConfigDir = exports.configDir = void 0;
|
|
26
26
|
const core_1 = require("@zwave-js/core");
|
|
27
27
|
const shared_1 = require("@zwave-js/shared");
|
|
28
28
|
const fs = __importStar(require("fs-extra"));
|
|
@@ -53,18 +53,13 @@ function getDeviceEntryPredicate(manufacturerId, productType, productId, firmwar
|
|
|
53
53
|
return false;
|
|
54
54
|
if (firmwareVersion != undefined) {
|
|
55
55
|
// A firmware version was given, only look at files with a matching firmware version
|
|
56
|
-
return (semver.lte(padVersion(entry.firmwareVersion.min), padVersion(firmwareVersion)) &&
|
|
57
|
-
semver.gte(padVersion(entry.firmwareVersion.max), padVersion(firmwareVersion)));
|
|
56
|
+
return (semver.lte((0, shared_1.padVersion)(entry.firmwareVersion.min), (0, shared_1.padVersion)(firmwareVersion)) &&
|
|
57
|
+
semver.gte((0, shared_1.padVersion)(entry.firmwareVersion.max), (0, shared_1.padVersion)(firmwareVersion)));
|
|
58
58
|
}
|
|
59
59
|
return true;
|
|
60
60
|
};
|
|
61
61
|
}
|
|
62
62
|
exports.getDeviceEntryPredicate = getDeviceEntryPredicate;
|
|
63
|
-
/** Pads a firmware version string, so it can be compared with semver */
|
|
64
|
-
function padVersion(version) {
|
|
65
|
-
return version + ".0";
|
|
66
|
-
}
|
|
67
|
-
exports.padVersion = padVersion;
|
|
68
63
|
async function getEmbeddedConfigVersion() {
|
|
69
64
|
return (await fs.readJSON(path_1.default.join(__dirname, "../package.json"))).version;
|
|
70
65
|
}
|
package/build/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAA6D;AAC7D,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
{
|
|
2
|
+
"manufacturer": "Fakro",
|
|
3
|
+
"manufacturerId": "0x0085",
|
|
4
|
+
"label": "FVS",
|
|
5
|
+
"description": "Solar Powered Skylight",
|
|
6
|
+
"devices": [
|
|
7
|
+
{
|
|
8
|
+
"productType": "0x0002",
|
|
9
|
+
"productId": "0x0014"
|
|
10
|
+
}
|
|
11
|
+
],
|
|
12
|
+
"firmwareVersion": {
|
|
13
|
+
"min": "0.0",
|
|
14
|
+
"max": "255.255"
|
|
15
|
+
},
|
|
16
|
+
"associations": {
|
|
17
|
+
"1": {
|
|
18
|
+
"label": "Lifeline",
|
|
19
|
+
"maxNodes": 1,
|
|
20
|
+
"isLifeline": true
|
|
21
|
+
},
|
|
22
|
+
"2": {
|
|
23
|
+
"label": "Basic Repeat",
|
|
24
|
+
"maxNodes": 5
|
|
25
|
+
},
|
|
26
|
+
"3": {
|
|
27
|
+
"label": "Basic Rain",
|
|
28
|
+
"maxNodes": 5
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"paramInformation": [
|
|
32
|
+
{
|
|
33
|
+
"#": "75",
|
|
34
|
+
"label": "Chain Outreach Length",
|
|
35
|
+
"valueSize": 1,
|
|
36
|
+
"minValue": 1,
|
|
37
|
+
"maxValue": 2,
|
|
38
|
+
"defaultValue": 1,
|
|
39
|
+
"allowManualEntry": false,
|
|
40
|
+
"options": [
|
|
41
|
+
{
|
|
42
|
+
"label": "17 cm",
|
|
43
|
+
"value": 1
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"label": "27 cm",
|
|
47
|
+
"value": 2
|
|
48
|
+
}
|
|
49
|
+
]
|
|
50
|
+
}
|
|
51
|
+
]
|
|
52
|
+
}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"manufacturer": "Vision Security",
|
|
3
3
|
"manufacturerId": "0x0109",
|
|
4
|
-
"label": "
|
|
5
|
-
"description": "
|
|
4
|
+
"label": "ZP3111-5",
|
|
5
|
+
"description": "4-in-1 Sensor",
|
|
6
6
|
"devices": [
|
|
7
7
|
{
|
|
8
8
|
"productType": "0x2021",
|
|
9
9
|
"productId": "0x2101",
|
|
10
|
-
"zwaveAllianceId": [1572, 2479]
|
|
10
|
+
"zwaveAllianceId": [1572, 1744, 2479]
|
|
11
11
|
}
|
|
12
12
|
],
|
|
13
13
|
"firmwareVersion": {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
|
-
"manufacturer": "
|
|
2
|
+
"manufacturer": "Vitrum",
|
|
3
3
|
"manufacturerId": "0x010a",
|
|
4
4
|
"label": "01E06S263",
|
|
5
|
-
"description": "
|
|
5
|
+
"description": "VI On-Off 6 Triac",
|
|
6
6
|
"devices": [
|
|
7
7
|
{
|
|
8
8
|
"productType": "0x8161",
|
|
@@ -17,281 +17,127 @@
|
|
|
17
17
|
"paramInformation": [
|
|
18
18
|
{
|
|
19
19
|
"#": "7",
|
|
20
|
-
"
|
|
21
|
-
"description": "Led is off: 0: LED is off; 1: red; 2: green; 3: blue; 4: yellow; 5: magenta; 6: cyan; 7; white",
|
|
22
|
-
"valueSize": 1,
|
|
23
|
-
"minValue": 0,
|
|
24
|
-
"maxValue": 7,
|
|
25
|
-
"defaultValue": 3,
|
|
26
|
-
"unsigned": true
|
|
20
|
+
"$import": "templates/vitrum_template.json#button_1_off_color"
|
|
27
21
|
},
|
|
28
22
|
{
|
|
29
23
|
"#": "8",
|
|
30
|
-
"
|
|
31
|
-
"description": "0: LED is off; 1: red; 2: green; 3: blue; 4: yellow; 5: magenta; 6: cyan; 7; white",
|
|
32
|
-
"valueSize": 1,
|
|
33
|
-
"minValue": 0,
|
|
34
|
-
"maxValue": 7,
|
|
35
|
-
"defaultValue": 3,
|
|
36
|
-
"unsigned": true
|
|
24
|
+
"$import": "templates/vitrum_template.json#button_2_off_color"
|
|
37
25
|
},
|
|
38
26
|
{
|
|
39
27
|
"#": "9",
|
|
40
|
-
"
|
|
41
|
-
"description": "0: LED is off; 1: red; 2: green; 3: blue; 4: yellow; 5: magenta; 6: cyan; 7; white",
|
|
42
|
-
"valueSize": 1,
|
|
43
|
-
"minValue": 0,
|
|
44
|
-
"maxValue": 7,
|
|
45
|
-
"defaultValue": 3,
|
|
46
|
-
"unsigned": true
|
|
28
|
+
"$import": "templates/vitrum_template.json#button_3_off_color"
|
|
47
29
|
},
|
|
48
30
|
{
|
|
49
31
|
"#": "10",
|
|
50
|
-
"
|
|
51
|
-
"description": "0: LED is off; 1: red; 2: green; 3: blue; 4: yellow; 5: magenta; 6: cyan; 7; white",
|
|
52
|
-
"valueSize": 1,
|
|
53
|
-
"minValue": 0,
|
|
54
|
-
"maxValue": 7,
|
|
55
|
-
"defaultValue": 3,
|
|
56
|
-
"unsigned": true
|
|
32
|
+
"$import": "templates/vitrum_template.json#button_4_off_color"
|
|
57
33
|
},
|
|
58
34
|
{
|
|
59
35
|
"#": "11",
|
|
60
|
-
"
|
|
61
|
-
"description": "0: LED is off; 1: red; 2: green; 3: blue; 4: yellow; 5: magenta; 6: cyan; 7; white",
|
|
62
|
-
"valueSize": 1,
|
|
63
|
-
"minValue": 0,
|
|
64
|
-
"maxValue": 7,
|
|
65
|
-
"defaultValue": 3,
|
|
66
|
-
"unsigned": true
|
|
36
|
+
"$import": "templates/vitrum_template.json#button_5_off_color"
|
|
67
37
|
},
|
|
68
38
|
{
|
|
69
39
|
"#": "12",
|
|
70
|
-
"
|
|
71
|
-
"description": "0: LED is off; 1: red; 2: green; 3: blue; 4: yellow; 5: magenta; 6: cyan; 7; white",
|
|
72
|
-
"valueSize": 1,
|
|
73
|
-
"minValue": 0,
|
|
74
|
-
"maxValue": 7,
|
|
75
|
-
"defaultValue": 3,
|
|
76
|
-
"unsigned": true
|
|
40
|
+
"$import": "templates/vitrum_template.json#button_6_off_color"
|
|
77
41
|
},
|
|
78
42
|
{
|
|
79
43
|
"#": "13",
|
|
80
|
-
"
|
|
81
|
-
"description": "0: LED is off; 1: red; 2: green; 3: blue; 4: yellow; 5: magenta; 6: cyan; 7; white",
|
|
82
|
-
"valueSize": 1,
|
|
83
|
-
"minValue": 0,
|
|
84
|
-
"maxValue": 7,
|
|
85
|
-
"defaultValue": 4,
|
|
86
|
-
"unsigned": true
|
|
44
|
+
"$import": "templates/vitrum_template.json#button_1_on_color"
|
|
87
45
|
},
|
|
88
46
|
{
|
|
89
47
|
"#": "14",
|
|
90
|
-
"
|
|
91
|
-
"description": "0: LED is off; 1: red; 2: green; 3: blue; 4: yellow; 5: magenta; 6: cyan; 7; white",
|
|
92
|
-
"valueSize": 1,
|
|
93
|
-
"minValue": 0,
|
|
94
|
-
"maxValue": 7,
|
|
95
|
-
"defaultValue": 4,
|
|
96
|
-
"unsigned": true
|
|
48
|
+
"$import": "templates/vitrum_template.json#button_2_on_color"
|
|
97
49
|
},
|
|
98
50
|
{
|
|
99
51
|
"#": "15",
|
|
100
|
-
"
|
|
101
|
-
"description": "0: LED is off; 1: red; 2: green; 3: blue; 4: yellow; 5: magenta; 6: cyan; 7; white",
|
|
102
|
-
"valueSize": 1,
|
|
103
|
-
"minValue": 0,
|
|
104
|
-
"maxValue": 7,
|
|
105
|
-
"defaultValue": 4,
|
|
106
|
-
"unsigned": true
|
|
52
|
+
"$import": "templates/vitrum_template.json#button_3_on_color"
|
|
107
53
|
},
|
|
108
54
|
{
|
|
109
55
|
"#": "16",
|
|
110
|
-
"
|
|
111
|
-
"description": "0: LED is off; 1: red; 2: green; 3: blue; 4: yellow; 5: magenta; 6: cyan; 7; white",
|
|
112
|
-
"valueSize": 1,
|
|
113
|
-
"minValue": 0,
|
|
114
|
-
"maxValue": 7,
|
|
115
|
-
"defaultValue": 4,
|
|
116
|
-
"unsigned": true
|
|
56
|
+
"$import": "templates/vitrum_template.json#button_4_on_color"
|
|
117
57
|
},
|
|
118
58
|
{
|
|
119
59
|
"#": "17",
|
|
120
|
-
"
|
|
121
|
-
"description": "0: LED is off; 1: red; 2: green; 3: blue; 4: yellow; 5: magenta; 6: cyan; 7; white",
|
|
122
|
-
"valueSize": 1,
|
|
123
|
-
"minValue": 0,
|
|
124
|
-
"maxValue": 7,
|
|
125
|
-
"defaultValue": 4,
|
|
126
|
-
"unsigned": true
|
|
60
|
+
"$import": "templates/vitrum_template.json#button_5_on_color"
|
|
127
61
|
},
|
|
128
62
|
{
|
|
129
63
|
"#": "18",
|
|
130
|
-
"
|
|
131
|
-
"description": "0: LED is off; 1: red; 2: green; 3: blue; 4: yellow; 5: magenta; 6: cyan; 7; white",
|
|
132
|
-
"valueSize": 1,
|
|
133
|
-
"minValue": 0,
|
|
134
|
-
"maxValue": 7,
|
|
135
|
-
"defaultValue": 4,
|
|
136
|
-
"unsigned": true
|
|
64
|
+
"$import": "templates/vitrum_template.json#button_6_on_color"
|
|
137
65
|
},
|
|
138
66
|
{
|
|
139
67
|
"#": "25",
|
|
140
|
-
"
|
|
141
|
-
"description": "0: disconnected; 1: button connected to output port 1; 2: button connected to output port 2; 3: button connected to output port 3; 4: button connected to output port 4; 5: button connected to output port 5; 6: button connected to output port 6",
|
|
142
|
-
"valueSize": 1,
|
|
143
|
-
"minValue": 0,
|
|
144
|
-
"maxValue": 6,
|
|
145
|
-
"defaultValue": 1,
|
|
146
|
-
"unsigned": true
|
|
68
|
+
"$import": "templates/vitrum_template.json#button_1_output_6ch"
|
|
147
69
|
},
|
|
148
70
|
{
|
|
149
71
|
"#": "26",
|
|
150
|
-
"
|
|
151
|
-
"description": "0: disconnected; 1: button connected to output port 1; 2: button connected to output port 2; 3: button connected to output port 3; 4: button connected to output port 4; 5: button connected to output port 5; 6: button connected to output port 6",
|
|
152
|
-
"valueSize": 1,
|
|
153
|
-
"minValue": 0,
|
|
154
|
-
"maxValue": 6,
|
|
155
|
-
"defaultValue": 2,
|
|
156
|
-
"unsigned": true
|
|
72
|
+
"$import": "templates/vitrum_template.json#button_2_output_6ch"
|
|
157
73
|
},
|
|
158
74
|
{
|
|
159
75
|
"#": "27",
|
|
160
|
-
"
|
|
161
|
-
"description": "0: disconnected; 1: button connected to output port 1; 2: button connected to output port 2; 3: button connected to output port 3; 4: button connected to output port 4; 5: button connected to output port 5; 6: button connected to output port 6",
|
|
162
|
-
"valueSize": 1,
|
|
163
|
-
"minValue": 0,
|
|
164
|
-
"maxValue": 6,
|
|
165
|
-
"defaultValue": 3,
|
|
166
|
-
"unsigned": true
|
|
76
|
+
"$import": "templates/vitrum_template.json#button_3_output_6ch"
|
|
167
77
|
},
|
|
168
78
|
{
|
|
169
79
|
"#": "28",
|
|
170
|
-
"
|
|
171
|
-
"description": "0: disconnected; 1: button connected to output port 1; 2: button connected to output port 2; 3: button connected to output port 3; 4: button connected to output port 4; 5: button connected to output port 5; 6: button connected to output port 6",
|
|
172
|
-
"valueSize": 1,
|
|
173
|
-
"minValue": 0,
|
|
174
|
-
"maxValue": 6,
|
|
175
|
-
"defaultValue": 4,
|
|
176
|
-
"unsigned": true
|
|
80
|
+
"$import": "templates/vitrum_template.json#button_4_output_6ch"
|
|
177
81
|
},
|
|
178
82
|
{
|
|
179
83
|
"#": "29",
|
|
180
|
-
"
|
|
181
|
-
"description": "0: disconnected; 1: button connected to output port 1; 2: button connected to output port 2; 3: button connected to output port 3; 4: button connected to output port 4; 5: button connected to output port 5; 6: button connected to output port 6",
|
|
182
|
-
"valueSize": 1,
|
|
183
|
-
"minValue": 0,
|
|
184
|
-
"maxValue": 6,
|
|
185
|
-
"defaultValue": 5,
|
|
186
|
-
"unsigned": true
|
|
84
|
+
"$import": "templates/vitrum_template.json#button_5_output_6ch"
|
|
187
85
|
},
|
|
188
86
|
{
|
|
189
87
|
"#": "30",
|
|
190
|
-
"
|
|
191
|
-
"description": "0: disconnected; 1: button connected to output port 1; 2: button connected to output port 2; 3: button connected to output port 3; 4: button connected to output port 4; 5: button connected to output port 5; 6: button connected to output port 6",
|
|
192
|
-
"valueSize": 1,
|
|
193
|
-
"minValue": 0,
|
|
194
|
-
"maxValue": 6,
|
|
195
|
-
"defaultValue": 6,
|
|
196
|
-
"unsigned": true
|
|
88
|
+
"$import": "templates/vitrum_template.json#button_6_output_6ch"
|
|
197
89
|
},
|
|
198
90
|
{
|
|
199
91
|
"#": "31",
|
|
200
92
|
"label": "Basic Set On From Group 2",
|
|
201
|
-
"
|
|
202
|
-
"valueSize": 1,
|
|
203
|
-
"minValue": 0,
|
|
204
|
-
"maxValue": 1,
|
|
205
|
-
"defaultValue": 1,
|
|
206
|
-
"unsigned": true
|
|
93
|
+
"$import": "templates/vitrum_template.json#basic_set_type"
|
|
207
94
|
},
|
|
208
95
|
{
|
|
209
96
|
"#": "32",
|
|
210
97
|
"label": "Basic Set On From Group 3",
|
|
211
|
-
"
|
|
212
|
-
"valueSize": 1,
|
|
213
|
-
"minValue": 0,
|
|
214
|
-
"maxValue": 1,
|
|
215
|
-
"defaultValue": 1,
|
|
216
|
-
"unsigned": true
|
|
98
|
+
"$import": "templates/vitrum_template.json#basic_set_type"
|
|
217
99
|
},
|
|
218
100
|
{
|
|
219
101
|
"#": "33",
|
|
220
102
|
"label": "Basic Set On From Group 4",
|
|
221
|
-
"
|
|
222
|
-
"valueSize": 1,
|
|
223
|
-
"minValue": 0,
|
|
224
|
-
"maxValue": 1,
|
|
225
|
-
"defaultValue": 1,
|
|
226
|
-
"unsigned": true
|
|
103
|
+
"$import": "templates/vitrum_template.json#basic_set_type"
|
|
227
104
|
},
|
|
228
105
|
{
|
|
229
106
|
"#": "34",
|
|
230
107
|
"label": "Basic Set On From Group 5",
|
|
231
|
-
"
|
|
232
|
-
"valueSize": 1,
|
|
233
|
-
"minValue": 0,
|
|
234
|
-
"maxValue": 1,
|
|
235
|
-
"defaultValue": 1,
|
|
236
|
-
"unsigned": true
|
|
108
|
+
"$import": "templates/vitrum_template.json#basic_set_type"
|
|
237
109
|
},
|
|
238
110
|
{
|
|
239
111
|
"#": "35",
|
|
240
112
|
"label": "Basic Set On From Group 6",
|
|
241
|
-
"
|
|
242
|
-
"valueSize": 1,
|
|
243
|
-
"minValue": 0,
|
|
244
|
-
"maxValue": 1,
|
|
245
|
-
"defaultValue": 1,
|
|
246
|
-
"unsigned": true
|
|
113
|
+
"$import": "templates/vitrum_template.json#basic_set_type"
|
|
247
114
|
},
|
|
248
115
|
{
|
|
249
116
|
"#": "36",
|
|
250
117
|
"label": "Basic Set On From Group 7",
|
|
251
|
-
"
|
|
252
|
-
"valueSize": 1,
|
|
253
|
-
"minValue": 0,
|
|
254
|
-
"maxValue": 1,
|
|
255
|
-
"defaultValue": 1,
|
|
256
|
-
"unsigned": true
|
|
118
|
+
"$import": "templates/vitrum_template.json#basic_set_type"
|
|
257
119
|
},
|
|
258
120
|
{
|
|
259
121
|
"#": "206",
|
|
260
122
|
"label": "Buttons Maximum Brightness",
|
|
261
|
-
"
|
|
262
|
-
"
|
|
263
|
-
"maxValue": 100,
|
|
264
|
-
"defaultValue": 100,
|
|
265
|
-
"unsigned": true
|
|
123
|
+
"$import": "~/templates/master_template.json#base_0-100_nounit",
|
|
124
|
+
"defaultValue": 100
|
|
266
125
|
},
|
|
267
126
|
{
|
|
268
127
|
"#": "207",
|
|
269
128
|
"label": "Buttons Minimum Brightness",
|
|
270
|
-
"
|
|
271
|
-
"
|
|
272
|
-
"maxValue": 100,
|
|
273
|
-
"defaultValue": 5,
|
|
274
|
-
"unsigned": true
|
|
129
|
+
"$import": "~/templates/master_template.json#base_0-100_nounit",
|
|
130
|
+
"defaultValue": 5
|
|
275
131
|
},
|
|
276
132
|
{
|
|
277
133
|
"#": "209",
|
|
278
134
|
"label": "Buzzer",
|
|
279
|
-
"
|
|
280
|
-
"valueSize": 1,
|
|
281
|
-
"minValue": 0,
|
|
282
|
-
"maxValue": 1,
|
|
283
|
-
"defaultValue": 1,
|
|
284
|
-
"unsigned": true
|
|
135
|
+
"$import": "~/templates/master_template.json#base_enable_disable"
|
|
285
136
|
},
|
|
286
137
|
{
|
|
287
138
|
"#": "218",
|
|
288
139
|
"label": "Front-end Buttons Lock",
|
|
289
|
-
"
|
|
290
|
-
"valueSize": 1,
|
|
291
|
-
"minValue": 0,
|
|
292
|
-
"maxValue": 1,
|
|
293
|
-
"defaultValue": 0,
|
|
294
|
-
"unsigned": true
|
|
140
|
+
"$import": "~/templates/master_template.json#base_enable_disable"
|
|
295
141
|
}
|
|
296
142
|
],
|
|
297
143
|
"metadata": {
|