From 0ea2955c830a4740c33dc285270a278cd75c2fc2 Mon Sep 17 00:00:00 2001 From: zhongjin Date: Tue, 25 Sep 2018 09:26:58 +0800 Subject: [PATCH] new --- io-package.json | 46 +++++++++++++++++++++-- main.js | 99 +++++++++++++++++++++++++++++++++++++++++++++++++ package.json | 2 +- 3 files changed, 142 insertions(+), 5 deletions(-) diff --git a/io-package.json b/io-package.json index b0c5377..db75182 100644 --- a/io-package.json +++ b/io-package.json @@ -1,8 +1,8 @@ { "common": { "name": "rest", - "version": "0.1.1", - "title": "Javascript/Node.js based rest adapter", + "version": "0.1.2", + "title": "云控 REST 服务", "desc": { "en": "yunkong2 rest Adapter", "cn": "云控 REST Adapter" @@ -23,7 +23,7 @@ }, "native": { "test1": true, - "test2": 42, + "test2": 41, "port": 9090, "auth": false, @@ -41,11 +41,49 @@ "leUpdate": false, "leCheckPort": 80, - "doorInputs": [], + "doorInputs": [ + + { + "type": "state", + "common": { + "role": "button", + "name": "Shuts the system running Kodi down", + "type": "boolean", + "read": false, + "write": true, + "def": false + }, + "native": {} + } + + ], "doorOutputs": [] }, "objects": [ + ], + "instanceObjects": [ + { + "_id": "info", + "type": "channel", + "common": { + "name": "Information" + }, + "native": {} + }, + { + "_id": "info.connection", + "type": "state", + "common": { + "role": "indicator.connected", + "name": "If master connected", + "type": "boolean", + "read": true, + "write": false, + "def": false + }, + "native": {} + } ] } diff --git a/main.js b/main.js index 6dcf95a..cb76cdf 100644 --- a/main.js +++ b/main.js @@ -243,8 +243,106 @@ function pollData() { }); } +//zhongjin add + +function createExtendObject(id, objData, callback) { + adapter.getObject(id, function (err, oldObj) { + if (!err && oldObj) { + adapter.extendObject(id, objData, callback); + } else { + adapter.setObjectNotExists(id, objData, callback); + } + }); +} + +function processTasks(tasks, callback) { + if (!tasks || !tasks.length) { + if (typeof callback === 'function') callback(); + return; + } + let task = tasks.shift(); + if (task.name === 'add') { + createExtendObject(task.id, task.obj, function () { + setTimeout(processTasks, 0, tasks, callback); + }); + } else if (task.name === 'del') { + adapter.delObject(task.id, function () { + setTimeout(processTasks, 0, tasks, callback); + }); + } else if (task.name === 'syncEnums') { + syncEnums('rooms', task.id, task.obj, function () { + setTimeout(processTasks, 0, tasks, callback); + }); + } else { + throw 'Unknown task'; + } +} + +function checkObjects(options, regType, regName, regFullName, tasks, newObjects) { + let params = config.params; + + let options = { + config: { + type: params.type || 'tcp', + slave: params.slave, + round: parseInt(params.round, 10) || 0, + timeout: parseInt(params.timeout, 10) || 5000, + defaultDeviceId: (params.deviceId === undefined || params.deviceId === null) ? 1 : (parseInt(params.deviceId, 10) || 0), + }, + devices: {} + }; + options.config.round = Math.pow(10, options.config.round); + + +} + +function prepareConfig(config) { + + +} + +function parseConfig(callback) { + let options = prepareConfig(adapter.config); + const params = adapter.config.params; + + let tasks = []; + + tasks.push({ + id: 'info.pollTime', + name: 'add', + obj: { + type: 'state', + common: { + name: 'Poll time', + type: 'number', + role: '', + write: false, + read: true, + def: 0, + unit: 'ms' + }, + native: {} + } + }); + + processTasks(tasks, function () { +// oldObjects = []; +// newObjects = []; + adapter.subscribeStates('*'); + callback(options); + }); + } + function main() { + //zhongjin add + + parseConfig(options => { + + }); + + //end zhongjin + // The adapters config (in the instance object everything under the attribute "native") is accessible via // adapter.config: adapter.log.info('config test1: ' + adapter.config.test1); @@ -316,3 +414,4 @@ function main() { timer = setInterval(pollData, adapter.config.interval); } } + diff --git a/package.json b/package.json index 7345cc5..668d346 100644 --- a/package.json +++ b/package.json @@ -43,4 +43,4 @@ "url": "https://git.spacen.net/yunkong2/yunkong2.rest/issues" }, "readmeFilename": "README.md" -} \ No newline at end of file +}