new
This commit is contained in:
parent
d1436af18d
commit
9260e8e0ae
@ -12,7 +12,7 @@ before_script:
|
||||
- 'if [[ $NPMVERSION == 5 ]]; then npm install -g npm@5; fi'
|
||||
- npm -v
|
||||
- npm install winston@2.3.1
|
||||
- 'npm install https://github.com/ioBroker/ioBroker.js-controller/tarball/master --production'
|
||||
- 'npm install https://git.spacen.net/yunkong2/yunkong2.js-controller/tarball/master --production'
|
||||
env:
|
||||
- CXX=g++-4.8
|
||||
addons:
|
||||
|
26
Gruntfile.js
26
Gruntfile.js
@ -9,7 +9,7 @@ module.exports = function (grunt) {
|
||||
|
||||
var srcDir = __dirname + '/';
|
||||
var pkg = grunt.file.readJSON('package.json');
|
||||
var adaptName = pkg.name.substring('iobroker.'.length);
|
||||
var adaptName = pkg.name.substring('yunkong2.'.length);
|
||||
var iopackage = grunt.file.readJSON('io-package.json');
|
||||
var version = (pkg && pkg.version) ? pkg.version : iopackage.common.version;
|
||||
var newname = grunt.option('name');
|
||||
@ -32,17 +32,17 @@ module.exports = function (grunt) {
|
||||
console.log('Name must be lower case.');
|
||||
process.exit();
|
||||
}
|
||||
if (fs.existsSync(__dirname + '/admin/template-rest.png')) {
|
||||
fs.renameSync(__dirname + '/admin/template-rest.png', __dirname + '/admin/' + newname + '.png');
|
||||
if (fs.existsSync(__dirname + '/admin/rest.png')) {
|
||||
fs.renameSync(__dirname + '/admin/rest.png', __dirname + '/admin/' + newname + '.png');
|
||||
}
|
||||
if (fs.existsSync(__dirname + '/widgets/template-rest.html')) {
|
||||
fs.renameSync(__dirname + '/widgets/template-rest.html', __dirname + '/widgets/' + newname + '.html');
|
||||
if (fs.existsSync(__dirname + '/widgets/rest.html')) {
|
||||
fs.renameSync(__dirname + '/widgets/rest.html', __dirname + '/widgets/' + newname + '.html');
|
||||
}
|
||||
if (fs.existsSync(__dirname + '/widgets/template/js/template-rest.js')) {
|
||||
fs.renameSync(__dirname + '/widgets/template/js/template-rest.js', __dirname + '/widgets/template/js/' + newname + '.js');
|
||||
if (fs.existsSync(__dirname + '/widgets/template/js/rest.js')) {
|
||||
fs.renameSync(__dirname + '/widgets/template/js/rest.js', __dirname + '/widgets/template/js/' + newname + '.js');
|
||||
}
|
||||
if (fs.existsSync(__dirname + '/widgets/template-rest')) {
|
||||
fs.renameSync(__dirname + '/widgets/template-rest', __dirname + '/widgets/' + newname);
|
||||
if (fs.existsSync(__dirname + '/widgets/rest')) {
|
||||
fs.renameSync(__dirname + '/widgets/rest', __dirname + '/widgets/' + newname);
|
||||
}
|
||||
}
|
||||
|
||||
@ -105,7 +105,7 @@ module.exports = function (grunt) {
|
||||
},
|
||||
{
|
||||
match: /Template\-rest/g,
|
||||
replacement: newname ? (newname[0].toUpperCase() + newname.substring(1)) : 'Template-rest'
|
||||
replacement: newname ? (newname[0].toUpperCase() + newname.substring(1)) : 'rest'
|
||||
},
|
||||
{
|
||||
match: /@@Author@@/g,
|
||||
@ -175,19 +175,19 @@ module.exports = function (grunt) {
|
||||
http: {
|
||||
get_hjscs: {
|
||||
options: {
|
||||
url: 'https://raw.githubusercontent.com/ioBroker/ioBroker.js-controller/master/tasks/jscs.js'
|
||||
url: 'https://raw.githubusercontent.com/yunkong2/yunkong2.js-controller/master/tasks/jscs.js'
|
||||
},
|
||||
dest: 'tasks/jscs.js'
|
||||
},
|
||||
get_jshint: {
|
||||
options: {
|
||||
url: 'https://raw.githubusercontent.com/ioBroker/ioBroker.js-controller/master/tasks/jshint.js'
|
||||
url: 'https://raw.githubusercontent.com/yunkong2/yunkong2.js-controller/master/tasks/jshint.js'
|
||||
},
|
||||
dest: 'tasks/jshint.js'
|
||||
},
|
||||
get_jscsRules: {
|
||||
options: {
|
||||
url: 'https://raw.githubusercontent.com/ioBroker/ioBroker.js-controller/master/tasks/jscsRules.js'
|
||||
url: 'https://raw.githubusercontent.com/yunkong2/yunkong2.js-controller/master/tasks/jscsRules.js'
|
||||
},
|
||||
dest: 'tasks/jscsRules.js'
|
||||
}
|
||||
|
36
README.md
36
README.md
@ -1,19 +1,19 @@
|
||||
![Logo](admin/template-rest.png)
|
||||
# ioBroker.template-rest
|
||||
![Logo](admin/rest.png)
|
||||
# yunkong2.rest
|
||||
=================
|
||||
|
||||
This adapter is a template for the creation of an ioBroker adapter. You do not need it, at least that you plan developing your own adapter.
|
||||
This adapter is a template for the creation of an yunkong2 adapter. You do not need it, at least that you plan developing your own adapter.
|
||||
|
||||
This is extension of [ioBroker.template](https://github.com/ioBroker/ioBroker.template) adapter with REST service.
|
||||
This is extension of [yunkong2.template](https://git.spacen.net/yunkong2/yunkong2.template) adapter with REST service.
|
||||
By default the WEB server will be started to serve HTTP GET/POST requests. It can be started as secure(https) or unsecure(http) and with authentication or without.
|
||||
|
||||
Additionally is shown how to poll some other URL for JSON data and parse them.
|
||||
|
||||
##Steps
|
||||
1. download and unpack this packet from github ```https://github.com/ioBroker/ioBroker.template/archive/master.zip```
|
||||
or clone git repository ```git clone https://github.com/ioBroker/ioBroker.template.git```
|
||||
1. download and unpack this packet from github ```https://git.spacen.net/yunkong2/yunkong2.template/archive/master.zip```
|
||||
or clone git repository ```git clone https://git.spacen.net/yunkong2/yunkong2.template.git```
|
||||
|
||||
2. download required npm packets. Write in ioBroker.template directory:
|
||||
2. download required npm packets. Write in yunkong2.template directory:
|
||||
|
||||
```npm install```
|
||||
|
||||
@ -27,29 +27,29 @@ Additionally is shown how to poll some other URL for JSON data and parse them.
|
||||
|
||||
```npm install -g grunt-cli```
|
||||
|
||||
4. rename directory from *ioBroker.template* (can be *ioBroker.template-master*) to *iobroker.mynewname*
|
||||
4. rename directory from *yunkong2.template* (can be *yunkong2.template-master*) to *yunkong2.mynewname*
|
||||
|
||||
5. to use this template you should copy it into *.../iobroker/node_modules* directory and then create an instance for it with iobroker.admin
|
||||
5. to use this template you should copy it into *.../yunkong2/node_modules* directory and then create an instance for it with yunkong2.admin
|
||||
|
||||
6. create your adapter:
|
||||
|
||||
* you might want to start with main.js (code running within iobroker) and admin/index.html (the adapter settings page).
|
||||
* you might want to start with main.js (code running within yunkong2) and admin/index.html (the adapter settings page).
|
||||
|
||||
* [Adapter-Development-Documentation](https://github.com/ioBroker/ioBroker/wiki/Adapter-Development-Documentation),
|
||||
* [Adapter-Development-Documentation](https://git.spacen.net/yunkong2/yunkong2/wiki/Adapter-Development-Documentation),
|
||||
|
||||
* [Installation, setup and first steps with an ioBroker Development Environment](https://github.com/ioBroker/ioBroker/wiki/Installation,-setup-and-first-steps-with-an-ioBroker-Development-Environment)
|
||||
* [Installation, setup and first steps with an yunkong2 Development Environment](https://git.spacen.net/yunkong2/yunkong2/wiki/Installation,-setup-and-first-steps-with-an-yunkong2-Development-Environment)
|
||||
|
||||
* [Write and debug vis widgets](https://github.com/ioBroker/ioBroker/wiki/How-to-debug-vis-and-to-write-own-widget-set)
|
||||
* [Write and debug vis widgets](https://git.spacen.net/yunkong2/yunkong2/wiki/How-to-debug-vis-and-to-write-own-widget-set)
|
||||
|
||||
* files under the www folders are made available under http://<iobrokerIP>:8082/<adapter-name>/
|
||||
* for this to work the iobroker.vis adapter has to be installed
|
||||
* files under the www folders are made available under http://<yunkong2IP>:8082/<adapter-name>/
|
||||
* for this to work the yunkong2.vis adapter has to be installed
|
||||
* delete this folder if you do not plan to export any files this way
|
||||
* call ```iobroker upload <adapter-name>``` after you change files in the www folder to get the new files uploaded to vis
|
||||
* call ```yunkong2 upload <adapter-name>``` after you change files in the www folder to get the new files uploaded to vis
|
||||
* the widget folder contains an example of a vis widget
|
||||
* you might want to start with *widget/<adapter-name>.html* and *widget/js/<adapter-name>.js*
|
||||
* call ```iobroker visdebug <adapter-name>``` to enable debugging and upload widget to "vis". (This works only from V0.7.15 of js-controller)
|
||||
* call ```yunkong2 visdebug <adapter-name>``` to enable debugging and upload widget to "vis". (This works only from V0.7.15 of js-controller)
|
||||
* If you do not plan to export any widget then delete the whole widget folder and remove the ```"restartAdapters": ["vis"]``` statement from *io-package.json*
|
||||
* After admin/index.html is changed you must execute ```iobroker upload mynewname``` to see changes in admin console. The same is valid for any files in *admin* and *www* directory
|
||||
* After admin/index.html is changed you must execute ```yunkong2 upload mynewname``` to see changes in admin console. The same is valid for any files in *admin* and *www* directory
|
||||
|
||||
7. change version: edit package.json and then call ```grunt p``` in your adapter directory.
|
||||
|
||||
|
@ -29,7 +29,7 @@
|
||||
|
||||
// Dictionary (systemDictionary is global variable from adapter-settings.js)
|
||||
systemDictionary = {
|
||||
"template-rest adapter settings": {"de": "Beispiel", "ru": "Пример"},
|
||||
"rest adapter settings": {"de": "Beispiel", "ru": "Пример"},
|
||||
"test1": {"en": "Test 1", "de": "Test 1", "ru": "Тест 1"},
|
||||
"test2": {"en": "Test 2", "de": "Test 2", "ru": "Тест 2"},
|
||||
|
||||
@ -173,8 +173,8 @@
|
||||
<div id="adapter-container">
|
||||
|
||||
<table><tr>
|
||||
<td><img src="template-rest.png"/></td>
|
||||
<td><h3 class="translate">template-rest adapter settings</h3></td>
|
||||
<td><img src="rest.png"/></td>
|
||||
<td><h3 class="translate">rest adapter settings</h3></td>
|
||||
</tr></table>
|
||||
<table>
|
||||
<tr><td class="translate">test1</td><td> <input class="value" id="test1"/></td></tr>
|
||||
|
@ -16,7 +16,7 @@ install:
|
||||
- ps: npm --version
|
||||
- npm install
|
||||
- npm install winston@2.3.1
|
||||
- 'npm install https://github.com/ioBroker/ioBroker.js-controller/tarball/master --production'
|
||||
- 'npm install https://git.spacen.net/yunkong2/yunkong2.js-controller/tarball/master --production'
|
||||
test_script:
|
||||
- echo %cd%
|
||||
- node --version
|
||||
|
@ -1,12 +1,12 @@
|
||||
{
|
||||
"common": {
|
||||
"name": "template-rest",
|
||||
"name": "rest",
|
||||
"version": "0.1.0",
|
||||
"title": "Javascript/Node.js based template-rest adapter",
|
||||
"title": "Javascript/Node.js based rest adapter",
|
||||
"desc": {
|
||||
"en": "ioBroker template-rest Adapter",
|
||||
"de": "ioBroker template-rest Adapter",
|
||||
"ru": "ioBroker template-rest драйвер как образец"
|
||||
"en": "yunkong2 rest Adapter",
|
||||
"de": "yunkong2 rest Adapter",
|
||||
"ru": "yunkong2 rest драйвер как образец"
|
||||
},
|
||||
"news": {
|
||||
"0.1.0" :{
|
||||
@ -30,11 +30,11 @@
|
||||
],
|
||||
"platform": "Javascript/Node.js",
|
||||
"mode": "daemon",
|
||||
"icon": "template-rest.png",
|
||||
"icon": "rest.png",
|
||||
"enabled": true,
|
||||
"extIcon": "https://raw.githubusercontent.com/ioBroker/ioBroker.template-rest/master/admin/template-rest.png",
|
||||
"keywords": ["template-rest", "REST"],
|
||||
"readme": "https://github.com/ioBroker/ioBroker.template-rest/blob/master/README.md",
|
||||
"extIcon": "https://git.spacen.net/yunkong2/yunkong2.rest/raw/master/admin/rest.png",
|
||||
"keywords": ["rest", "REST"],
|
||||
"readme": "https://git.spacen.net/yunkong2/yunkong2.rest/blob/master/README.md",
|
||||
"loglevel": "info",
|
||||
"type": "communication",
|
||||
"dependencies": [{"js-controller": ">=0.12.0"}]
|
||||
|
@ -27,8 +27,8 @@ let appName;
|
||||
function getControllerDir(isInstall) {
|
||||
// Find the js-controller location
|
||||
const possibilities = [
|
||||
'iobroker.js-controller',
|
||||
'ioBroker.js-controller',
|
||||
'yunkong2.js-controller',
|
||||
'yunkong2.js-controller',
|
||||
];
|
||||
/** @type {string} */
|
||||
let controllerPath;
|
||||
|
12
main.js
12
main.js
@ -27,11 +27,11 @@
|
||||
* "auth": false, // if basic authentication is required. If enabled, the secure connection should be used.
|
||||
* "secure": false, // If SSL communication must be used. Should has the name "secure", because it can be changed from console.
|
||||
* "bind": "0.0.0.0", // Specific address, where the server will be started. "0.0.0.0" means that it will be available for all addresses. Should has the name "bind", because it can be changed from console.
|
||||
* "defaultUser": "admin", // If authentication is disabled, here can be specified as which user the requests will be done to iobroker DB.
|
||||
* "certPublic": "defaultPublic",// Required for SSL communication: name of some public certificate from iobroker DB
|
||||
* "certPrivate": "defaultPrivate"// Required for SSL communication: name of some private key from iobroker DB
|
||||
* "defaultUser": "admin", // If authentication is disabled, here can be specified as which user the requests will be done to yunkong2 DB.
|
||||
* "certPublic": "defaultPublic",// Required for SSL communication: name of some public certificate from yunkong2 DB
|
||||
* "certPrivate": "defaultPrivate"// Required for SSL communication: name of some private key from yunkong2 DB
|
||||
*
|
||||
* "pollURL": "", // Request all 30 seconds the JSON from this URL, parse it and store in ioBroker
|
||||
* "pollURL": "", // Request all 30 seconds the JSON from this URL, parse it and store in yunkong2
|
||||
* "interval": 30000 // polling interval
|
||||
* }
|
||||
* }
|
||||
@ -53,7 +53,7 @@ var request = null; // will be initialized later if polling enabled
|
||||
// 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
|
||||
var adapter = utils.Adapter('template-rest');
|
||||
var adapter = utils.Adapter('rest');
|
||||
var LE = require(utils.controllerDir + '/lib/letsencrypt.js');
|
||||
|
||||
// REST server
|
||||
@ -176,7 +176,7 @@ function initWebServer(settings) {
|
||||
var login = loginPass[0];
|
||||
var password = loginPass[1];
|
||||
|
||||
// Check in ioBroker user and password
|
||||
// Check in yunkong2 user and password
|
||||
adapter.checkPassword(login, password, function (result) {
|
||||
if (!result) {
|
||||
adapter.log.error('Wrong user or password: ' + login);
|
||||
|
14
package.json
14
package.json
@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "iobroker.template-rest",
|
||||
"name": "yunkong2.rest",
|
||||
"version": "0.1.0",
|
||||
"description": "ioBroker template-rest Adapter",
|
||||
"description": "yunkong2 rest Adapter",
|
||||
"author": {
|
||||
"name": "@@Author@@",
|
||||
"email": "@@email@@"
|
||||
@ -12,16 +12,16 @@
|
||||
"email": "@@email@@"
|
||||
}
|
||||
],
|
||||
"homepage": "https://github.com/ioBroker/ioBroker.template-rest",
|
||||
"homepage": "https://git.spacen.net/yunkong2/yunkong2.rest",
|
||||
"license": "MIT",
|
||||
"keywords": [
|
||||
"ioBroker",
|
||||
"template-rest",
|
||||
"yunkong2",
|
||||
"rest",
|
||||
"REST API"
|
||||
],
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/ioBroker/ioBroker.template-rest"
|
||||
"url": "https://git.spacen.net/yunkong2/yunkong2.rest"
|
||||
},
|
||||
"dependencies": {
|
||||
"express": "^4.13.4",
|
||||
@ -41,7 +41,7 @@
|
||||
"test": "node node_modules/mocha/bin/mocha --exit"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://github.com/ioBroker/ioBroker.template-rest/issues"
|
||||
"url": "https://git.spacen.net/yunkong2/yunkong2.rest/issues"
|
||||
},
|
||||
"readmeFilename": "README.md"
|
||||
}
|
@ -321,7 +321,7 @@ function installJsController(cb) {
|
||||
if (!fs.existsSync(rootDir + 'tmp/node_modules/' + appName + '.js-controller')) {
|
||||
console.log('installJsController: no js-controller => install from git');
|
||||
|
||||
child_process.execSync('npm install https://github.com/' + appName + '/' + appName + '.js-controller/tarball/master --prefix ./ --production', {
|
||||
child_process.execSync('npm install https://git.spacen.net/' + appName + '/' + appName + '.js-controller/tarball/master --prefix ./ --production', {
|
||||
cwd: rootDir + 'tmp/',
|
||||
stdio: [0, 1, 2]
|
||||
});
|
||||
@ -415,7 +415,7 @@ function clearControllerLog() {
|
||||
}
|
||||
|
||||
function clearDB() {
|
||||
var dirPath = rootDir + 'tmp/iobroker-data/sqlite';
|
||||
var dirPath = rootDir + 'tmp/yunkong2-data/sqlite';
|
||||
var files;
|
||||
try {
|
||||
if (fs.existsSync(dirPath)) {
|
||||
|
@ -49,7 +49,7 @@ describe('Test RESTful API', function() {
|
||||
});
|
||||
|
||||
it('Test RESTful API: get /api/id - must return value', function (done) {
|
||||
request('http://127.0.0.1:18183/api/system.adapter.template-rest.0.alive', function (error, response, body) {
|
||||
request('http://127.0.0.1:18183/api/system.adapter.rest.0.alive', function (error, response, body) {
|
||||
console.log('get /api => ' + body);
|
||||
expect(error).to.be.not.ok;
|
||||
var data = JSON.parse(body);
|
||||
@ -59,7 +59,7 @@ describe('Test RESTful API', function() {
|
||||
});
|
||||
|
||||
it('Test RESTful API: get /api/plain/id - must return value', function (done) {
|
||||
request('http://127.0.0.1:18183/api/plain/system.adapter.template-rest.0.alive', function (error, response, body) {
|
||||
request('http://127.0.0.1:18183/api/plain/system.adapter.rest.0.alive', function (error, response, body) {
|
||||
console.log('get /api => ' + body);
|
||||
expect(error).to.be.not.ok;
|
||||
expect(body).to.be.equal('Value: true');
|
||||
|
@ -52,12 +52,12 @@ describe('Test package.json and io-package.json', function() {
|
||||
console.log();
|
||||
}
|
||||
if (
|
||||
ioPackage.common.title.indexOf('iobroker') !== -1 ||
|
||||
ioPackage.common.title.indexOf('ioBroker') !== -1 ||
|
||||
ioPackage.common.title.indexOf('yunkong2') !== -1 ||
|
||||
ioPackage.common.title.indexOf('yunkong2') !== -1 ||
|
||||
ioPackage.common.title.indexOf('adapter') !== -1 ||
|
||||
ioPackage.common.title.indexOf('Adapter') !== -1
|
||||
) {
|
||||
console.log('WARNING: title contains Adapter or ioBroker. It is clear anyway, that it is adapter for ioBroker.');
|
||||
console.log('WARNING: title contains Adapter or yunkong2. It is clear anyway, that it is adapter for yunkong2.');
|
||||
console.log();
|
||||
}
|
||||
|
||||
|
@ -35,7 +35,7 @@ describe('Test RESTful API SSL', function() {
|
||||
});
|
||||
|
||||
it('Test RESTful API SSL: get /api/plain - must return welcome text', function (done) {
|
||||
request('https://admin:iobroker@127.0.0.1:18184/api/plain', function (error, response, body) {
|
||||
request('https://admin:yunkong2@127.0.0.1:18184/api/plain', function (error, response, body) {
|
||||
console.log('get /api/plain => ' + body);
|
||||
expect(error).to.be.not.ok;
|
||||
expect(body).to.be.equal('Welcome to our text REST api!');
|
||||
@ -44,7 +44,7 @@ describe('Test RESTful API SSL', function() {
|
||||
});
|
||||
|
||||
it('Test RESTful API SSL: get /api - must return welcome text', function (done) {
|
||||
request('https://admin:iobroker@127.0.0.1:18184/api', function (error, response, body) {
|
||||
request('https://admin:yunkong2@127.0.0.1:18184/api', function (error, response, body) {
|
||||
console.log('get /api => ' + body);
|
||||
expect(error).to.be.not.ok;
|
||||
expect(body).to.be.equal('{"message":"Welcome to our JSON REST api!"}');
|
||||
@ -53,7 +53,7 @@ describe('Test RESTful API SSL', function() {
|
||||
});
|
||||
|
||||
it('Test RESTful API SSL: get /api/id - must return value', function (done) {
|
||||
request('https://admin:iobroker@127.0.0.1:18184/api/system.adapter.template-rest.0.alive', function (error, response, body) {
|
||||
request('https://admin:yunkong2@127.0.0.1:18184/api/system.adapter.rest.0.alive', function (error, response, body) {
|
||||
console.log('get /api => ' + body);
|
||||
expect(error).to.be.not.ok;
|
||||
var data = JSON.parse(body);
|
||||
@ -63,7 +63,7 @@ describe('Test RESTful API SSL', function() {
|
||||
});
|
||||
|
||||
it('Test RESTful API SSL: get /api/plain/id - must return value', function (done) {
|
||||
request('https://admin:iobroker@127.0.0.1:18184/api/plain/system.adapter.template-rest.0.alive', function (error, response, body) {
|
||||
request('https://admin:yunkong2@127.0.0.1:18184/api/plain/system.adapter.rest.0.alive', function (error, response, body) {
|
||||
console.log('get /api => ' + body);
|
||||
expect(error).to.be.not.ok;
|
||||
expect(body).to.be.equal('Value: true');
|
||||
|
Loading…
Reference in New Issue
Block a user