iobroker.tapo 0.2.0 → 0.2.2
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/README.md +0 -6
- package/build/lib/utils/camera/onvifCamera.js.map +2 -2
- package/build/lib/utils/camera/tapoCamera.js +25 -11
- package/build/lib/utils/camera/tapoCamera.js.map +2 -2
- package/build/lib/utils/l530.js +1 -1
- package/build/lib/utils/l530.js.map +2 -2
- package/build/lib/utils/p100.js +24 -11
- package/build/lib/utils/p100.js.map +2 -2
- package/build/main.js +20 -10
- package/build/main.js.map +2 -2
- package/io-package.json +6 -2
- package/package.json +15 -17
- package/build/lib/json2iob.js +0 -279
- package/build/lib/json2iob.js.map +0 -7
- package/build/lib/utils/camera.js +0 -97
- package/build/lib/utils/camera.js.map +0 -7
package/build/lib/json2iob.js
DELETED
|
@@ -1,279 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __create = Object.create;
|
|
3
|
-
var __defProp = Object.defineProperty;
|
|
4
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
-
var __export = (target, all) => {
|
|
9
|
-
for (var name in all)
|
|
10
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
-
};
|
|
12
|
-
var __copyProps = (to, from, except, desc) => {
|
|
13
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
-
for (let key of __getOwnPropNames(from))
|
|
15
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
-
}
|
|
18
|
-
return to;
|
|
19
|
-
};
|
|
20
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
22
|
-
mod
|
|
23
|
-
));
|
|
24
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
25
|
-
var json2iob_exports = {};
|
|
26
|
-
__export(json2iob_exports, {
|
|
27
|
-
default: () => Json2iob
|
|
28
|
-
});
|
|
29
|
-
module.exports = __toCommonJS(json2iob_exports);
|
|
30
|
-
var import_json_bigint = __toESM(require("json-bigint"));
|
|
31
|
-
({ storeAsString: true });
|
|
32
|
-
class Json2iob {
|
|
33
|
-
constructor(adapter) {
|
|
34
|
-
this.adapter = adapter;
|
|
35
|
-
this.alreadyCreatedObjects = {};
|
|
36
|
-
}
|
|
37
|
-
async parse(path, element, options) {
|
|
38
|
-
try {
|
|
39
|
-
if (element === null || element === void 0) {
|
|
40
|
-
this.adapter.log.debug("Cannot extract empty: " + path);
|
|
41
|
-
return;
|
|
42
|
-
}
|
|
43
|
-
const objectKeys = Object.keys(element);
|
|
44
|
-
if (!options || !options.write) {
|
|
45
|
-
if (!options) {
|
|
46
|
-
options = { write: false };
|
|
47
|
-
} else {
|
|
48
|
-
options["write"] = false;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
if (typeof element === "string" || typeof element === "number") {
|
|
52
|
-
let name = element;
|
|
53
|
-
if (typeof element === "number") {
|
|
54
|
-
name = element.toString();
|
|
55
|
-
}
|
|
56
|
-
if (!this.alreadyCreatedObjects[path]) {
|
|
57
|
-
await this.adapter.setObjectNotExistsAsync(path, {
|
|
58
|
-
type: "state",
|
|
59
|
-
common: {
|
|
60
|
-
name,
|
|
61
|
-
role: this.getRole(element, options.write),
|
|
62
|
-
type: element !== null ? typeof element : "mixed",
|
|
63
|
-
write: options.write,
|
|
64
|
-
read: true
|
|
65
|
-
},
|
|
66
|
-
native: {}
|
|
67
|
-
}).then(() => {
|
|
68
|
-
}).catch((error) => {
|
|
69
|
-
this.adapter.log.error(error);
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
this.adapter.setState(path, element, true);
|
|
73
|
-
return;
|
|
74
|
-
}
|
|
75
|
-
if (!this.alreadyCreatedObjects[path]) {
|
|
76
|
-
await this.adapter.setObjectNotExistsAsync(path, {
|
|
77
|
-
type: "channel",
|
|
78
|
-
common: {
|
|
79
|
-
name: options.channelName || "",
|
|
80
|
-
write: false,
|
|
81
|
-
read: true
|
|
82
|
-
},
|
|
83
|
-
native: {}
|
|
84
|
-
}).then(() => {
|
|
85
|
-
options.channelName = void 0;
|
|
86
|
-
}).catch((error) => {
|
|
87
|
-
this.adapter.log.error(error);
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
if (Array.isArray(element)) {
|
|
91
|
-
await this.extractArray(element, "", path, options);
|
|
92
|
-
return;
|
|
93
|
-
}
|
|
94
|
-
for (const key of objectKeys) {
|
|
95
|
-
if (this.isJsonString(element[key]) && options.autoCast) {
|
|
96
|
-
element[key] = (0, import_json_bigint.default)({ storeAsString: true }).parse(element[key]);
|
|
97
|
-
}
|
|
98
|
-
if (Array.isArray(element[key])) {
|
|
99
|
-
await this.extractArray(element, key, path, options);
|
|
100
|
-
} else if (element[key] !== null && typeof element[key] === "object") {
|
|
101
|
-
await this.parse(path + "." + key, element[key], options);
|
|
102
|
-
} else {
|
|
103
|
-
if (!this.alreadyCreatedObjects[path + "." + key]) {
|
|
104
|
-
let objectName = key;
|
|
105
|
-
if (options.descriptions && options.descriptions[key]) {
|
|
106
|
-
objectName = options.descriptions[key];
|
|
107
|
-
}
|
|
108
|
-
const type = element[key] !== null ? typeof element[key] : "mixed";
|
|
109
|
-
const common = {
|
|
110
|
-
name: objectName,
|
|
111
|
-
role: this.getRole(element[key], options.write),
|
|
112
|
-
type,
|
|
113
|
-
write: options.write,
|
|
114
|
-
read: true
|
|
115
|
-
};
|
|
116
|
-
await this.adapter.setObjectNotExistsAsync(path + "." + key, {
|
|
117
|
-
type: "state",
|
|
118
|
-
common,
|
|
119
|
-
native: {}
|
|
120
|
-
}).then(() => {
|
|
121
|
-
}).catch((error) => {
|
|
122
|
-
this.adapter.log.error(error);
|
|
123
|
-
});
|
|
124
|
-
}
|
|
125
|
-
this.adapter.setState(path + "." + key, element[key], true);
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
} catch (error) {
|
|
129
|
-
this.adapter.log.error("Error extract keys: " + path + " " + JSON.stringify(element));
|
|
130
|
-
this.adapter.log.error(error);
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
async extractArray(element, key, path, options) {
|
|
134
|
-
try {
|
|
135
|
-
if (key) {
|
|
136
|
-
element = element[key];
|
|
137
|
-
}
|
|
138
|
-
for (let index in element) {
|
|
139
|
-
const arrayElement = element[index];
|
|
140
|
-
index = parseInt(index) + 1;
|
|
141
|
-
if (index < 10) {
|
|
142
|
-
index = "0" + index;
|
|
143
|
-
}
|
|
144
|
-
let arrayPath = key + index;
|
|
145
|
-
if (typeof arrayElement === "string") {
|
|
146
|
-
await this.parse(path + "." + key + "." + arrayElement, arrayElement, options);
|
|
147
|
-
continue;
|
|
148
|
-
}
|
|
149
|
-
if (typeof arrayElement[Object.keys(arrayElement)[0]] === "string") {
|
|
150
|
-
arrayPath = arrayElement[Object.keys(arrayElement)[0]];
|
|
151
|
-
}
|
|
152
|
-
for (const keyName of Object.keys(arrayElement)) {
|
|
153
|
-
if (keyName.endsWith("Id") && arrayElement[keyName] !== null) {
|
|
154
|
-
if (arrayElement[keyName] && arrayElement[keyName].replace) {
|
|
155
|
-
arrayPath = arrayElement[keyName].replace(/\./g, "");
|
|
156
|
-
} else {
|
|
157
|
-
arrayPath = arrayElement[keyName];
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
for (const keyName in Object.keys(arrayElement)) {
|
|
162
|
-
if (keyName.endsWith("Name")) {
|
|
163
|
-
if (arrayElement[keyName] && arrayElement[keyName].replace) {
|
|
164
|
-
arrayPath = arrayElement[keyName].replace(/\./g, "");
|
|
165
|
-
} else {
|
|
166
|
-
arrayPath = arrayElement[keyName];
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
if (arrayElement.id) {
|
|
171
|
-
if (arrayElement.id.replace) {
|
|
172
|
-
arrayPath = arrayElement.id.replace(/\./g, "");
|
|
173
|
-
} else {
|
|
174
|
-
arrayPath = arrayElement.id;
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
if (arrayElement.name) {
|
|
178
|
-
arrayPath = arrayElement.name.replace(/\./g, "");
|
|
179
|
-
}
|
|
180
|
-
if (arrayElement.label) {
|
|
181
|
-
arrayPath = arrayElement.label.replace(/\./g, "");
|
|
182
|
-
}
|
|
183
|
-
if (arrayElement.labelText) {
|
|
184
|
-
arrayPath = arrayElement.labelText.replace(/\./g, "");
|
|
185
|
-
}
|
|
186
|
-
if (arrayElement.start_date_time) {
|
|
187
|
-
arrayPath = arrayElement.start_date_time.replace(/\./g, "");
|
|
188
|
-
}
|
|
189
|
-
if (options.preferedArrayName && options.preferedArrayName.indexOf("+") !== -1) {
|
|
190
|
-
const preferedArrayNameArray = options.preferedArrayName.split("+");
|
|
191
|
-
if (arrayElement[preferedArrayNameArray[0]]) {
|
|
192
|
-
const element0 = arrayElement[preferedArrayNameArray[0]].replace(/\./g, "").replace(/\ /g, "");
|
|
193
|
-
let element1 = "";
|
|
194
|
-
if (preferedArrayNameArray[1].indexOf("/") !== -1) {
|
|
195
|
-
const subArray = preferedArrayNameArray[1].split("/");
|
|
196
|
-
const subElement = arrayElement[subArray[0]];
|
|
197
|
-
if (subElement && subElement[subArray[1]] !== void 0) {
|
|
198
|
-
element1 = subElement[subArray[1]];
|
|
199
|
-
} else if (arrayElement[subArray[1]] !== void 0) {
|
|
200
|
-
element1 = arrayElement[subArray[1]];
|
|
201
|
-
}
|
|
202
|
-
} else {
|
|
203
|
-
element1 = arrayElement[preferedArrayNameArray[1]].replace(/\./g, "").replace(/\ /g, "");
|
|
204
|
-
}
|
|
205
|
-
arrayPath = element0 + "-" + element1;
|
|
206
|
-
}
|
|
207
|
-
} else if (options.preferedArrayName && options.preferedArrayName.indexOf("/") !== -1) {
|
|
208
|
-
const preferedArrayNameArray = options.preferedArrayName.split("/");
|
|
209
|
-
const subElement = arrayElement[preferedArrayNameArray[0]];
|
|
210
|
-
if (subElement) {
|
|
211
|
-
arrayPath = subElement[preferedArrayNameArray[1]].replace(/\./g, "").replace(/\ /g, "");
|
|
212
|
-
}
|
|
213
|
-
} else if (options.preferedArrayName && arrayElement[options.preferedArrayName]) {
|
|
214
|
-
arrayPath = arrayElement[options.preferedArrayName].replace(/\./g, "");
|
|
215
|
-
}
|
|
216
|
-
if (options.forceIndex) {
|
|
217
|
-
arrayPath = key + index;
|
|
218
|
-
}
|
|
219
|
-
if (!options.forceIndex && Object.keys(arrayElement).length === 2 && typeof Object.keys(arrayElement)[0] === "string" && typeof Object.keys(arrayElement)[1] === "string" && typeof arrayElement[Object.keys(arrayElement)[0]] !== "object" && typeof arrayElement[Object.keys(arrayElement)[1]] !== "object" && arrayElement[Object.keys(arrayElement)[0]] !== "null") {
|
|
220
|
-
let subKey = arrayElement[Object.keys(arrayElement)[0]];
|
|
221
|
-
const subValue = arrayElement[Object.keys(arrayElement)[1]];
|
|
222
|
-
const subName = Object.keys(arrayElement)[0] + " " + Object.keys(arrayElement)[1];
|
|
223
|
-
if (key) {
|
|
224
|
-
subKey = key + "." + subKey;
|
|
225
|
-
}
|
|
226
|
-
if (!this.alreadyCreatedObjects[path + "." + subKey]) {
|
|
227
|
-
await this.adapter.setObjectNotExistsAsync(path + "." + subKey, {
|
|
228
|
-
type: "state",
|
|
229
|
-
common: {
|
|
230
|
-
name: subName,
|
|
231
|
-
role: this.getRole(subValue, options.write),
|
|
232
|
-
type: subValue !== null ? typeof subValue : "mixed",
|
|
233
|
-
write: options.write,
|
|
234
|
-
read: true
|
|
235
|
-
},
|
|
236
|
-
native: {}
|
|
237
|
-
}).then(() => {
|
|
238
|
-
});
|
|
239
|
-
}
|
|
240
|
-
this.adapter.setState(path + "." + subKey, subValue, true);
|
|
241
|
-
continue;
|
|
242
|
-
}
|
|
243
|
-
await this.parse(path + "." + arrayPath, arrayElement, options);
|
|
244
|
-
}
|
|
245
|
-
} catch (error) {
|
|
246
|
-
this.adapter.log.error("Cannot extract array " + path);
|
|
247
|
-
this.adapter.log.error(error);
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
isJsonString(str) {
|
|
251
|
-
try {
|
|
252
|
-
JSON.parse(str);
|
|
253
|
-
} catch (e) {
|
|
254
|
-
return false;
|
|
255
|
-
}
|
|
256
|
-
return true;
|
|
257
|
-
}
|
|
258
|
-
getRole(element, write) {
|
|
259
|
-
if (typeof element === "boolean" && !write) {
|
|
260
|
-
return "indicator";
|
|
261
|
-
}
|
|
262
|
-
if (typeof element === "boolean" && write) {
|
|
263
|
-
return "switch";
|
|
264
|
-
}
|
|
265
|
-
if (typeof element === "number" && !write) {
|
|
266
|
-
return "value";
|
|
267
|
-
}
|
|
268
|
-
if (typeof element === "number" && write) {
|
|
269
|
-
return "level";
|
|
270
|
-
}
|
|
271
|
-
if (typeof element === "string") {
|
|
272
|
-
return "text";
|
|
273
|
-
}
|
|
274
|
-
return "state";
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
278
|
-
0 && (module.exports = {});
|
|
279
|
-
//# sourceMappingURL=json2iob.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/lib/json2iob.ts"],
|
|
4
|
-
"sourcesContent": ["//v1.5\n/*\noptions:\nwrite //set common write variable to true\nforceIndex //instead of trying to find names for array entries, use the index as the name\nchannelName //set name of the root channel\npreferedArrayName //set key to use this as an array entry name\nautoCast (true false) // make JSON.parse to parse numbers correctly\ndescriptions: Object of names for state keys\n*/\nimport JSONbig from \"json-bigint\";\n({ storeAsString: true });\nexport default class Json2iob {\n adapter: any;\n alreadyCreatedObjects: any;\n constructor(adapter: any) {\n this.adapter = adapter;\n this.alreadyCreatedObjects = {};\n }\n\n async parse(\n path: string,\n element: string | null | undefined,\n options?: {\n [x: string]: any;\n write?: any;\n channelName?: any;\n autoCast?: any;\n descriptions?: any;\n preferedArrayName?: any;\n forceIndex?: any;\n },\n ): Promise<void> {\n try {\n if (element === null || element === undefined) {\n this.adapter.log.debug(\"Cannot extract empty: \" + path);\n return;\n }\n\n const objectKeys = Object.keys(element);\n\n if (!options || !options.write) {\n if (!options) {\n options = { write: false };\n } else {\n options[\"write\"] = false;\n }\n }\n\n if (typeof element === \"string\" || typeof element === \"number\") {\n let name = element;\n if (typeof element === \"number\") {\n name = element.toString();\n }\n if (!this.alreadyCreatedObjects[path]) {\n await this.adapter\n .setObjectNotExistsAsync(path, {\n type: \"state\",\n common: {\n name: name,\n role: this.getRole(element, options.write),\n type: element !== null ? typeof element : \"mixed\",\n write: options.write,\n read: true,\n },\n native: {},\n })\n .then(() => {\n // this.alreadyCreatedObjects[path] = true;\n })\n .catch((error: any) => {\n this.adapter.log.error(error);\n });\n }\n\n this.adapter.setState(path, element, true);\n\n return;\n }\n if (!this.alreadyCreatedObjects[path]) {\n await this.adapter\n .setObjectNotExistsAsync(path, {\n type: \"channel\",\n common: {\n name: options.channelName || \"\",\n write: false,\n read: true,\n },\n native: {},\n })\n .then(() => {\n // this.alreadyCreatedObjects[path] = true;\n options.channelName = undefined;\n })\n .catch((error: any) => {\n this.adapter.log.error(error);\n });\n }\n if (Array.isArray(element)) {\n await this.extractArray(element, \"\", path, options);\n return;\n }\n\n for (const key of objectKeys) {\n if (this.isJsonString(element[key]) && options.autoCast) {\n element[key] = JSONbig({ storeAsString: true }).parse(element[key]);\n }\n\n if (Array.isArray(element[key])) {\n await this.extractArray(element, key, path, options);\n } else if (element[key] !== null && typeof element[key] === \"object\") {\n await this.parse(path + \".\" + key, element[key], options);\n } else {\n if (!this.alreadyCreatedObjects[path + \".\" + key]) {\n let objectName = key;\n if (options.descriptions && options.descriptions[key]) {\n objectName = options.descriptions[key];\n }\n const type = element[key] !== null ? typeof element[key] : \"mixed\";\n const common = {\n name: objectName,\n role: this.getRole(element[key], options.write),\n type: type,\n write: options.write,\n read: true,\n };\n\n await this.adapter\n .setObjectNotExistsAsync(path + \".\" + key, {\n type: \"state\",\n common: common,\n native: {},\n })\n .then(() => {\n // this.alreadyCreatedObjects[path + \".\" + key] = true;\n })\n .catch((error: any) => {\n this.adapter.log.error(error);\n });\n }\n this.adapter.setState(path + \".\" + key, element[key], true);\n }\n }\n } catch (error) {\n this.adapter.log.error(\"Error extract keys: \" + path + \" \" + JSON.stringify(element));\n this.adapter.log.error(error);\n }\n }\n async extractArray(\n element: any,\n key: string,\n path: string,\n options?: {\n [x: string]: any;\n write: any;\n channelName?: any;\n autoCast?: any;\n descriptions?: any;\n preferedArrayName?: any;\n forceIndex?: any;\n },\n ): Promise<void> {\n try {\n if (key) {\n element = element[key];\n }\n for (let index in element) {\n const arrayElement = element[index];\n index = parseInt(index) + 1;\n if (index < 10) {\n index = \"0\" + index;\n }\n let arrayPath = key + index;\n if (typeof arrayElement === \"string\") {\n await this.parse(path + \".\" + key + \".\" + arrayElement, arrayElement, options);\n continue;\n }\n if (typeof arrayElement[Object.keys(arrayElement)[0]] === \"string\") {\n arrayPath = arrayElement[Object.keys(arrayElement)[0]];\n }\n for (const keyName of Object.keys(arrayElement)) {\n if (keyName.endsWith(\"Id\") && arrayElement[keyName] !== null) {\n if (arrayElement[keyName] && arrayElement[keyName].replace) {\n arrayPath = arrayElement[keyName].replace(/\\./g, \"\");\n } else {\n arrayPath = arrayElement[keyName];\n }\n }\n }\n for (const keyName in Object.keys(arrayElement)) {\n if (keyName.endsWith(\"Name\")) {\n if (arrayElement[keyName] && arrayElement[keyName].replace) {\n arrayPath = arrayElement[keyName].replace(/\\./g, \"\");\n } else {\n arrayPath = arrayElement[keyName];\n }\n }\n }\n\n if (arrayElement.id) {\n if (arrayElement.id.replace) {\n arrayPath = arrayElement.id.replace(/\\./g, \"\");\n } else {\n arrayPath = arrayElement.id;\n }\n }\n if (arrayElement.name) {\n arrayPath = arrayElement.name.replace(/\\./g, \"\");\n }\n if (arrayElement.label) {\n arrayPath = arrayElement.label.replace(/\\./g, \"\");\n }\n if (arrayElement.labelText) {\n arrayPath = arrayElement.labelText.replace(/\\./g, \"\");\n }\n if (arrayElement.start_date_time) {\n arrayPath = arrayElement.start_date_time.replace(/\\./g, \"\");\n }\n if (options.preferedArrayName && options.preferedArrayName.indexOf(\"+\") !== -1) {\n const preferedArrayNameArray = options.preferedArrayName.split(\"+\");\n if (arrayElement[preferedArrayNameArray[0]]) {\n const element0 = arrayElement[preferedArrayNameArray[0]].replace(/\\./g, \"\").replace(/\\ /g, \"\");\n let element1 = \"\";\n if (preferedArrayNameArray[1].indexOf(\"/\") !== -1) {\n const subArray = preferedArrayNameArray[1].split(\"/\");\n const subElement = arrayElement[subArray[0]];\n if (subElement && subElement[subArray[1]] !== undefined) {\n element1 = subElement[subArray[1]];\n } else if (arrayElement[subArray[1]] !== undefined) {\n element1 = arrayElement[subArray[1]];\n }\n } else {\n element1 = arrayElement[preferedArrayNameArray[1]].replace(/\\./g, \"\").replace(/\\ /g, \"\");\n }\n arrayPath = element0 + \"-\" + element1;\n }\n } else if (options.preferedArrayName && options.preferedArrayName.indexOf(\"/\") !== -1) {\n const preferedArrayNameArray = options.preferedArrayName.split(\"/\");\n const subElement = arrayElement[preferedArrayNameArray[0]];\n if (subElement) {\n arrayPath = subElement[preferedArrayNameArray[1]].replace(/\\./g, \"\").replace(/\\ /g, \"\");\n }\n } else if (options.preferedArrayName && arrayElement[options.preferedArrayName]) {\n arrayPath = arrayElement[options.preferedArrayName].replace(/\\./g, \"\");\n }\n\n if (options.forceIndex) {\n arrayPath = key + index;\n }\n //special case array with 2 string objects\n if (\n !options.forceIndex &&\n Object.keys(arrayElement).length === 2 &&\n typeof Object.keys(arrayElement)[0] === \"string\" &&\n typeof Object.keys(arrayElement)[1] === \"string\" &&\n typeof arrayElement[Object.keys(arrayElement)[0]] !== \"object\" &&\n typeof arrayElement[Object.keys(arrayElement)[1]] !== \"object\" &&\n arrayElement[Object.keys(arrayElement)[0]] !== \"null\"\n ) {\n let subKey = arrayElement[Object.keys(arrayElement)[0]];\n const subValue = arrayElement[Object.keys(arrayElement)[1]];\n const subName = Object.keys(arrayElement)[0] + \" \" + Object.keys(arrayElement)[1];\n if (key) {\n subKey = key + \".\" + subKey;\n }\n if (!this.alreadyCreatedObjects[path + \".\" + subKey]) {\n await this.adapter\n .setObjectNotExistsAsync(path + \".\" + subKey, {\n type: \"state\",\n common: {\n name: subName,\n role: this.getRole(subValue, options.write),\n type: subValue !== null ? typeof subValue : \"mixed\",\n write: options.write,\n read: true,\n },\n native: {},\n })\n .then(() => {\n // this.alreadyCreatedObjects[path + \".\" + subKey] = true;\n });\n }\n this.adapter.setState(path + \".\" + subKey, subValue, true);\n continue;\n }\n await this.parse(path + \".\" + arrayPath, arrayElement, options);\n }\n } catch (error) {\n this.adapter.log.error(\"Cannot extract array \" + path);\n this.adapter.log.error(error);\n }\n }\n isJsonString(str: string): boolean {\n try {\n JSON.parse(str);\n } catch (e) {\n return false;\n }\n return true;\n }\n getRole(element: string, write: any): string {\n if (typeof element === \"boolean\" && !write) {\n return \"indicator\";\n }\n if (typeof element === \"boolean\" && write) {\n return \"switch\";\n }\n if (typeof element === \"number\" && !write) {\n return \"value\";\n }\n if (typeof element === \"number\" && write) {\n return \"level\";\n }\n if (typeof element === \"string\") {\n return \"text\";\n }\n return \"state\";\n }\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["JSONbig"]
|
|
7
|
-
}
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __create = Object.create;
|
|
3
|
-
var __defProp = Object.defineProperty;
|
|
4
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
-
var __export = (target, all) => {
|
|
9
|
-
for (var name in all)
|
|
10
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
-
};
|
|
12
|
-
var __copyProps = (to, from, except, desc) => {
|
|
13
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
-
for (let key of __getOwnPropNames(from))
|
|
15
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
-
}
|
|
18
|
-
return to;
|
|
19
|
-
};
|
|
20
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
22
|
-
mod
|
|
23
|
-
));
|
|
24
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
25
|
-
var camera_exports = {};
|
|
26
|
-
__export(camera_exports, {
|
|
27
|
-
default: () => camera
|
|
28
|
-
});
|
|
29
|
-
module.exports = __toCommonJS(camera_exports);
|
|
30
|
-
var import_p100 = __toESM(require("./p100"));
|
|
31
|
-
class camera extends import_p100.default {
|
|
32
|
-
constructor(log, ipAddress, email, password, timeout) {
|
|
33
|
-
super(log, ipAddress, email, password, timeout);
|
|
34
|
-
this.log = log;
|
|
35
|
-
this.ipAddress = ipAddress;
|
|
36
|
-
this.email = email;
|
|
37
|
-
this.password = password;
|
|
38
|
-
this.timeout = timeout;
|
|
39
|
-
this.log.debug("Constructing Camera on host: " + ipAddress);
|
|
40
|
-
}
|
|
41
|
-
async getDeviceInfo() {
|
|
42
|
-
return super.getDeviceInfo().then(() => {
|
|
43
|
-
return this.getSysInfo();
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
async setAlertConfig(enabled) {
|
|
47
|
-
const enabledString = enabled ? "on" : "off";
|
|
48
|
-
const payload = `{
|
|
49
|
-
"method": "multipleRequest",
|
|
50
|
-
"params": {
|
|
51
|
-
"requests": [
|
|
52
|
-
{
|
|
53
|
-
"method": "setAlertConfig",
|
|
54
|
-
"params": {
|
|
55
|
-
"msg_alarm": {
|
|
56
|
-
"chn1_msg_alarm_info": {
|
|
57
|
-
"alarm_type": "0",
|
|
58
|
-
"alarm_mode": ["sound"],
|
|
59
|
-
"enabled": "${enabledString}",
|
|
60
|
-
"light_type": "1"
|
|
61
|
-
}
|
|
62
|
-
},
|
|
63
|
-
"requestTimeMils": ${Math.round(Date.now() * 1e3)}
|
|
64
|
-
}
|
|
65
|
-
}]}}`;
|
|
66
|
-
return this.sendRequest(payload);
|
|
67
|
-
}
|
|
68
|
-
async setLensMaskConfig(enabled) {
|
|
69
|
-
const enabledString = enabled ? "on" : "off";
|
|
70
|
-
const payload = `{
|
|
71
|
-
"method": "multipleRequest",
|
|
72
|
-
"params": {
|
|
73
|
-
"requests": [
|
|
74
|
-
{
|
|
75
|
-
"method": "setLensMaskConfig",
|
|
76
|
-
"params": {
|
|
77
|
-
"lens_mask": {
|
|
78
|
-
"lens_mask_info": {
|
|
79
|
-
"enabled": "${enabledString}"
|
|
80
|
-
}
|
|
81
|
-
},
|
|
82
|
-
"requestTimeMils": ${Math.round(Date.now() * 1e3)}
|
|
83
|
-
}
|
|
84
|
-
}]}}`;
|
|
85
|
-
return this.sendRequest(payload);
|
|
86
|
-
}
|
|
87
|
-
setSysInfo(sysInfo) {
|
|
88
|
-
this._lightSysInfo = sysInfo;
|
|
89
|
-
this._lightSysInfo.last_update = Date.now();
|
|
90
|
-
}
|
|
91
|
-
getSysInfo() {
|
|
92
|
-
return this._lightSysInfo;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
96
|
-
0 && (module.exports = {});
|
|
97
|
-
//# sourceMappingURL=camera.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/lib/utils/camera.ts"],
|
|
4
|
-
"sourcesContent": ["import P100 from \"./p100\";\nimport { LightSysinfo } from \"./types\";\n\nexport default class camera extends P100 {\n constructor(\n public readonly log: any,\n public readonly ipAddress: string,\n public readonly email: string,\n public readonly password: string,\n public readonly timeout: number,\n ) {\n super(log, ipAddress, email, password, timeout);\n this.log.debug(\"Constructing Camera on host: \" + ipAddress);\n }\n\n async getDeviceInfo(): Promise<LightSysinfo> {\n return super.getDeviceInfo().then(() => {\n return this.getSysInfo();\n });\n }\n\n async setAlertConfig(enabled: boolean): Promise<boolean> {\n const enabledString = enabled ? \"on\" : \"off\";\n const payload = `{\n \"method\": \"multipleRequest\",\n \"params\": {\n \"requests\": [\n {\n \"method\": \"setAlertConfig\",\n \"params\": {\n \"msg_alarm\": {\n \"chn1_msg_alarm_info\": {\n \"alarm_type\": \"0\",\n \"alarm_mode\": [\"sound\"],\n \"enabled\": \"${enabledString}\",\n \"light_type\": \"1\"\n }\n },\n \"requestTimeMils\": ${Math.round(Date.now() * 1000)}\n }\n }]}}`;\n return this.sendRequest(payload);\n }\n async setLensMaskConfig(enabled: boolean): Promise<boolean> {\n const enabledString = enabled ? \"on\" : \"off\";\n const payload = `{\n \"method\": \"multipleRequest\",\n \"params\": {\n \"requests\": [\n {\n \"method\": \"setLensMaskConfig\",\n \"params\": {\n \"lens_mask\": {\n \"lens_mask_info\": {\n \"enabled\": \"${enabledString}\"\n }\n },\n \"requestTimeMils\": ${Math.round(Date.now() * 1000)}\n }\n }]}}`;\n return this.sendRequest(payload);\n }\n\n protected setSysInfo(sysInfo: LightSysinfo) {\n this._lightSysInfo = sysInfo;\n this._lightSysInfo.last_update = Date.now();\n }\n\n public getSysInfo(): LightSysinfo {\n return this._lightSysInfo;\n }\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAAiB;AAGjB,MAAO,eAA6B,YAAAA,QAAK;AAAA,EACvC,YACkB,KACA,WACA,OACA,UACA,SAChB;AACA,UAAM,KAAK,WAAW,OAAO,UAAU,OAAO;AAN9B;AACA;AACA;AACA;AACA;AAGhB,SAAK,IAAI,MAAM,kCAAkC,SAAS;AAAA,EAC5D;AAAA,EAEA,MAAM,gBAAuC;AAC3C,WAAO,MAAM,cAAc,EAAE,KAAK,MAAM;AACtC,aAAO,KAAK,WAAW;AAAA,IACzB,CAAC;AAAA,EACH;AAAA,EAEA,MAAM,eAAe,SAAoC;AACvD,UAAM,gBAAgB,UAAU,OAAO;AACvC,UAAM,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAWM;AAAA;AAAA;AAAA;AAAA,6BAIG,KAAK,MAAM,KAAK,IAAI,IAAI,GAAI;AAAA;AAAA;AAGrD,WAAO,KAAK,YAAY,OAAO;AAAA,EACjC;AAAA,EACA,MAAM,kBAAkB,SAAoC;AAC1D,UAAM,gBAAgB,UAAU,OAAO;AACvC,UAAM,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BASM;AAAA;AAAA;AAAA,6BAGG,KAAK,MAAM,KAAK,IAAI,IAAI,GAAI;AAAA;AAAA;AAGrD,WAAO,KAAK,YAAY,OAAO;AAAA,EACjC;AAAA,EAEU,WAAW,SAAuB;AAC1C,SAAK,gBAAgB;AACrB,SAAK,cAAc,cAAc,KAAK,IAAI;AAAA,EAC5C;AAAA,EAEO,aAA2B;AAChC,WAAO,KAAK;AAAA,EACd;AACF;",
|
|
6
|
-
"names": ["P100"]
|
|
7
|
-
}
|