diff --git a/.github/workflows/test-and-release.yml b/.github/workflows/test-and-release.yml index fe4c915..339a611 100644 --- a/.github/workflows/test-and-release.yml +++ b/.github/workflows/test-and-release.yml @@ -56,7 +56,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - node-version: [10.x, 12.x, 14.x] + node-version: [12.x, 14.x, 16.x] os: [ubuntu-latest, windows-latest, macos-latest] steps: diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index a5e7521..0000000 --- a/.travis.yml +++ /dev/null @@ -1,21 +0,0 @@ -os: - - linux - - osx - - windows -language: node_js -node_js: - - '10' - - '12' - - '14' -before_script: - - export NPMVERSION=$(echo "$($(which npm) -v)"|cut -c1) - - 'if [[ $NPMVERSION == 5 ]]; then npm install -g npm@5; fi' - - npm -v -env: - - CXX=g++-6 -addons: - apt: - sources: - - ubuntu-toolchain-r-test - packages: - - g++-6 diff --git a/README.md b/README.md index 28e5470..eb77dcf 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,13 @@ ![Logo](admin/node-red.png) # ioBroker node-red Adapter -![Number of Installations](http://iobroker.live/badges/node-red-installed.svg) ![Number of Installations](http://iobroker.live/badges/node-red-stable.svg) [![NPM version](http://img.shields.io/npm/v/iobroker.node-red.svg)](https://www.npmjs.com/package/iobroker.node-red) -[![Downloads](https://img.shields.io/npm/dm/iobroker.node-red.svg)](https://www.npmjs.com/package/iobroker.node-red) -[![Tests](https://travis-ci.org/ioBroker/ioBroker.node-red.svg?branch=master)](https://travis-ci.org/ioBroker/ioBroker.node-red) +![Number of Installations](http://iobroker.live/badges/node-red-installed.svg) +![Number of Installations](http://iobroker.live/badges/node-red-stable.svg) +[![NPM version](http://img.shields.io/npm/v/iobroker.node-red.svg)](https://www.npmjs.com/package/iobroker.node-red) -[![NPM](https://nodei.co/npm/iobroker.node-red.png?downloads=true)](https://nodei.co/npm/iobroker.node-red/) +![Test and Release](https://github.com/ioBroker/ioBroker.node-red/workflows/Test%20and%20Release/badge.svg) +[![Translation status](https://weblate.iobroker.net/widgets/adapters/-/node-red/svg-badge.svg)](https://weblate.iobroker.net/engage/adapters/?utm_source=widget) +[![Downloads](https://img.shields.io/npm/dm/iobroker.node-red.svg)](https://www.npmjs.com/package/iobroker.node-red) Starts node-red instance and communicates with it. @@ -26,6 +28,11 @@ This adapter uses the node-red server from https://github.com/node-red/node-red ## Changelog +### __WORK IN PROGRESS__ +* (Apollon77) update to node-red 1.3.5 +* (Apollon77) Optimize for js-controller 3.3 +* (Apollon77) Add option to override the default ack flag in the message for OutNode + ### 2.3.0 (2021-04-17) * (Apollon77) BREAKING update from node-red-contrib-aggregator: topic is NOT converted to lowercase anymore! * (Apollon77) update to node-red 1.3.2 diff --git a/appveyor.yml b/appveyor.yml deleted file mode 100644 index a004962..0000000 --- a/appveyor.yml +++ /dev/null @@ -1,21 +0,0 @@ -version: 'test-{build}' -environment: - matrix: - - nodejs_version: '10' - - nodejs_version: '12' -platform: - - x86 - - x64 -clone_folder: 'c:\projects\%APPVEYOR_PROJECT_NAME%' -install: - - ps: 'Update-NodeJsInstallation (Get-NodeJsLatestBuild $env:nodejs_version) $env:platform' - - ps: '$NpmVersion = (npm -v).Substring(0,1)' - - ps: 'if($NpmVersion -eq 5) { npm install -g npm@5 }' - - ps: npm --version - - npm install -test_script: - - echo %cd% - - node --version - - npm --version - - npm test -build: 'off' diff --git a/io-package.json b/io-package.json index f23b766..650bb6a 100644 --- a/io-package.json +++ b/io-package.json @@ -3,6 +3,18 @@ "name": "node-red", "version": "2.3.0", "title": "node-red", + "titleLang": { + "en": "node-red", + "de": "node-red", + "ru": "node-red", + "pt": "node-red", + "nl": "node-red", + "fr": "node-red", + "it": "node-red", + "es": "node-red", + "pl": "node-red", + "zh-cn": "node-red" + }, "news": { "2.3.0": { "en": "BREAKING update from node-red-contrib-aggregator: topic is NOT converted to lowercase anymore!\nupdate to node-red 1.3.2\nAdd done calls to OutNode", @@ -267,7 +279,9 @@ "js-controller": ">=2.0.0" } ], - "tier": 1 + "tier": 1, + "connectionType": "none", + "dataSource": "none" }, "native": { "bind": "0.0.0.0", diff --git a/nodes/ioBroker.html b/nodes/ioBroker.html index db49009..41f693b 100644 --- a/nodes/ioBroker.html +++ b/nodes/ioBroker.html @@ -239,6 +239,7 @@

Connects to a ioBroker and publishes msg.payload either to the msg.topic or to the topic specified in the edit window. The value in the edit window has precedence.

If msg.payload contains an object it will be stringified before being sent.

If msg.payload contains "__create__", the object will be only created, but no value will be written.

+

If msg.ack if present (Boolean true/"true") overrides the default ack from the node config.

If msg.stateName is defined, the created object name will be set as this value. If msg.stateName is not defined, but Name is set, use this instead. If both node and msg do not set state name, the name will same as topic

If msg.stateRole is defined, the created object role will be set as this value. If msg.stateRole is not defined, but Role is set, use this instead.

If msg.stateType is defined, the created object common type will be set as this value. If msg.stateType is not defined, but Type is set, use this instead. If both node and msg do not set type, the type will be type of payload

diff --git a/nodes/ioBroker.js b/nodes/ioBroker.js index 1af02db..b89d733 100644 --- a/nodes/ioBroker.js +++ b/nodes/ioBroker.js @@ -388,6 +388,8 @@ module.exports = function(RED) { id = adapter.namespace + '.' + id; } + const msgAck = msg.ack !== undefined ? (msg.ack === 'true' || msg.ack === true) : node.ack + if (!ready) { //log('Message for "' + id + '" queued because ioBroker connection not initialized'); nodeSets.push({node, msg}); @@ -396,7 +398,7 @@ module.exports = function(RED) { // Create variable if not exists if (node.autoCreate && !node.idChecked) { if (!id.includes('*') && isValidID.test(id)) { - return checkState(node, id, assembleCommon(node, msg, id), {val: msg.payload, ack: node.ack}, isOk => { + return checkState(node, id, assembleCommon(node, msg, id), {val: msg.payload, ack: msgAck}, isOk => { if (isOk) { node.status({ fill: 'green', @@ -419,7 +421,7 @@ module.exports = function(RED) { // Check if state exists adapter.getForeignObject(id, (err, obj) => { if (!err && obj) { - adapter.setForeignState(id, {val: msg.payload, ack: node.ack}, (err, _id) => { + adapter.setForeignState(id, {val: msg.payload, ack: msgAck}, (err, _id) => { if (err) { node.status({ fill: 'red', @@ -456,7 +458,7 @@ module.exports = function(RED) { }); done(); } else { - setState(id, msg.payload, node.ack, (err, _id) => { + setState(id, msg.payload, msgAck, (err, _id) => { if (err) { node.status({ fill: 'red', diff --git a/package.json b/package.json index 6e57df5..32ace56 100644 --- a/package.json +++ b/package.json @@ -27,26 +27,26 @@ "js2xmlparser": "^4.0.1", "fs.notify": "^0.0.4", "feedparser": "^2.2.10", - "mongodb": "^3.6.9", - "node-red-contrib-os": "^0.2.0" + "mongodb": "^3.6.10", + "node-red-contrib-os": "^0.2.1" }, "dependencies": { "node-red": "^1.3.5", - "node-red-dashboard": "^2.29.1", + "node-red-dashboard": "^2.30.0", "node-red-contrib-aggregator": "^2.0.0", "node-red-contrib-polymer": "^0.0.22", - "node-red-node-email": "^1.12.1", + "node-red-node-email": "^1.12.2", "node-red-node-feedparser": "^0.2.1", "node-red-node-sentiment": "^0.1.6", "node-red-node-twitter": "^1.2.0", "@iobroker/adapter-core": "^2.5.0" }, "devDependencies": { - "@alcalzone/release-script": "^1.10.0", + "@alcalzone/release-script": "^2.2.0", "axios": "^0.21.1", "gulp": "^4.0.2", "request": "^2.88.2", - "mocha": "^8.4.0", + "mocha": "^9.0.2", "chai": "^4.3.4" }, "bugs": {