Initial commit
This commit is contained in:
@@ -0,0 +1,158 @@
|
||||
/**
|
||||
*
|
||||
* template adapter
|
||||
*
|
||||
*
|
||||
* file io-package.json comments:
|
||||
*
|
||||
* {
|
||||
* "common": {
|
||||
* "name": "template", // name has to be set and has to be equal to adapters folder name and main file name excluding extension
|
||||
* "version": "0.0.0", // use "Semantic Versioning"! see http://semver.org/
|
||||
* "title": "Node.js template Adapter", // Adapter title shown in User Interfaces
|
||||
* "authors": [ // Array of authord
|
||||
* "name <mail@template.com>"
|
||||
* ]
|
||||
* "desc": "template adapter", // Adapter description shown in User Interfaces. Can be a language object {de:"...",ru:"..."} or a string
|
||||
* "platform": "Javascript/Node.js", // possible values "javascript", "javascript/Node.js" - more coming
|
||||
* "mode": "daemon", // possible values "daemon", "schedule", "subscribe"
|
||||
* "materialize": true, // support of admin3
|
||||
* "schedule": "0 0 * * *" // cron-style schedule. Only needed if mode=schedule
|
||||
* "loglevel": "info" // Adapters Log Level
|
||||
* },
|
||||
* "native": { // the native object is available via adapter.config in your adapters code - use it for configuration
|
||||
* "test1": true,
|
||||
* "test2": 42,
|
||||
* "mySelect": "auto"
|
||||
* }
|
||||
* }
|
||||
*
|
||||
*/
|
||||
|
||||
/* jshint -W097 */// jshint strict:false
|
||||
/*jslint node: true */
|
||||
'use strict';
|
||||
|
||||
// you have to require the utils module and call adapter function
|
||||
const utils = require(__dirname + '/lib/utils'); // Get common adapter utils
|
||||
|
||||
// you have to call the adapter function and pass a options object
|
||||
// name has to be set and has to be equal to adapters folder name and main file name excluding extension
|
||||
// adapter will be restarted automatically every time as the configuration changed, e.g system.adapter.template.0
|
||||
const adapter = new utils.Adapter('template');
|
||||
|
||||
/*Variable declaration, since ES6 there are let to declare variables. Let has a more clearer definition where
|
||||
it is available then var.The variable is available inside a block and it's childs, but not outside.
|
||||
You can define the same variable name inside a child without produce a conflict with the variable of the parent block.*/
|
||||
let variable = 1234;
|
||||
|
||||
// is called when adapter shuts down - callback has to be called under any circumstances!
|
||||
adapter.on('unload', function (callback) {
|
||||
try {
|
||||
adapter.log.info('cleaned everything up...');
|
||||
callback();
|
||||
} catch (e) {
|
||||
callback();
|
||||
}
|
||||
});
|
||||
|
||||
// is called if a subscribed object changes
|
||||
adapter.on('objectChange', function (id, obj) {
|
||||
// Warning, obj can be null if it was deleted
|
||||
adapter.log.info('objectChange ' + id + ' ' + JSON.stringify(obj));
|
||||
});
|
||||
|
||||
// is called if a subscribed state changes
|
||||
adapter.on('stateChange', function (id, state) {
|
||||
// Warning, state can be null if it was deleted
|
||||
adapter.log.info('stateChange ' + id + ' ' + JSON.stringify(state));
|
||||
|
||||
// you can use the ack flag to detect if it is status (true) or command (false)
|
||||
if (state && !state.ack) {
|
||||
adapter.log.info('ack is not set!');
|
||||
}
|
||||
});
|
||||
|
||||
// Some message was sent to adapter instance over message box. Used by email, pushover, text2speech, ...
|
||||
adapter.on('message', function (obj) {
|
||||
if (typeof obj === 'object' && obj.message) {
|
||||
if (obj.command === 'send') {
|
||||
// e.g. send email or pushover or whatever
|
||||
console.log('send command');
|
||||
|
||||
// Send response in callback if required
|
||||
if (obj.callback) adapter.sendTo(obj.from, obj.command, 'Message received', obj.callback);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// is called when databases are connected and adapter received configuration.
|
||||
// start here!
|
||||
adapter.on('ready', function () {
|
||||
main();
|
||||
});
|
||||
|
||||
function main() {
|
||||
|
||||
// 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);
|
||||
adapter.log.info('config test1: ' + adapter.config.test2);
|
||||
adapter.log.info('config mySelect: ' + adapter.config.mySelect);
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* For every state in the system there has to be also an object of type state
|
||||
*
|
||||
* Here a simple template for a boolean variable named "testVariable"
|
||||
*
|
||||
* Because every adapter instance uses its own unique namespace variable names can't collide with other adapters variables
|
||||
*
|
||||
*/
|
||||
|
||||
adapter.setObject('testVariable', {
|
||||
type: 'state',
|
||||
common: {
|
||||
name: 'testVariable',
|
||||
type: 'boolean',
|
||||
role: 'indicator'
|
||||
},
|
||||
native: {}
|
||||
});
|
||||
|
||||
// in this template all states changes inside the adapters namespace are subscribed
|
||||
adapter.subscribeStates('*');
|
||||
|
||||
|
||||
/**
|
||||
* setState examples
|
||||
*
|
||||
* you will notice that each setState will cause the stateChange event to fire (because of above subscribeStates cmd)
|
||||
*
|
||||
*/
|
||||
|
||||
// the variable testVariable is set to true as command (ack=false)
|
||||
adapter.setState('testVariable', true);
|
||||
|
||||
// same thing, but the value is flagged "ack"
|
||||
// ack should be always set to true if the value is received from or acknowledged from the target system
|
||||
adapter.setState('testVariable', {val: true, ack: true});
|
||||
|
||||
// same thing, but the state is deleted after 30s (getState will return null afterwards)
|
||||
adapter.setState('testVariable', {val: true, ack: true, expire: 30});
|
||||
|
||||
|
||||
|
||||
// examples for the checkPassword/checkGroup functions
|
||||
adapter.checkPassword('admin', 'iobroker', function (res) {
|
||||
console.log('check user admin pw ioboker: ' + res);
|
||||
});
|
||||
|
||||
adapter.checkGroup('admin', 'admin', function (res) {
|
||||
console.log('check group user admin group admin: ' + res);
|
||||
});
|
||||
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user