Compare commits

...

1532 Commits

Author SHA1 Message Date
Dave Conway-Jones 4c3e7bff91
Exif node improve popup info 2023-09-30 15:41:42 +01:00
Dave Conway-Jones bf03c11a94
bump version for dialog height PR 2023-09-18 18:44:10 +01:00
Kazuhito Yokoi 36d33b3268
Fix height of description editor in data generator node (#1031) 2023-09-18 18:42:19 +01:00
Dave Conway-Jones 8e2f8b60e0
bump sqlite3 libs and package
to include css bugfix
2023-09-16 19:16:35 +01:00
Kazuhito Yokoi 504bbda0a4
Fix height of description editor in sqlite node (#1030) 2023-09-16 19:12:20 +01:00
Chuan Khoo b67452d569
mlsentiment: allow custom tokenizers (#1026)
* allow custom tokenizers

allows use of tokens object to specifiy custom tokenizers

updated mlsentiment to v2.0.0 (with temporary fix for comparative score applied)

updated documentation

* update unit tests
2023-08-31 21:25:00 +01:00
Dave Conway-Jones 8a29f9e379
bump for PR #1024 2023-08-19 14:38:19 +01:00
Simon Walters d75beeebf4
Update 38-rpi-pibrella.js (#1024)
Update to work with python3 on Bullseye
2023-08-19 14:36:35 +01:00
Dave Conway-Jones 4805b3d13b
Update package.json
add Olivier as contributor
2023-08-11 15:35:50 +01:00
Dave Conway-Jones 5913e29086
Bump for PR.
to close #1021
2023-08-11 15:32:36 +01:00
Olivier Verhaegen 878694fa1c
STOMP: Improved error stated and logging (#1021)
* Improved error states and logging

* Fix misplaced reconnect error message

* No double logging of reconnecting event
2023-08-11 15:31:00 +01:00
Dave Conway-Jones 79b93f30ec
Bump for start/stop PR #1018 2023-08-05 17:15:43 +01:00
Giovanni Marzot b6f5ea812b
Support stop msg for daemon node (#1018)
* add msg.stop handler and docs, msg.start restarts process as per existing doc

* stop process using configured signal

* fix grunt complaint

* remove extra debug, make start only start and change doc to match
2023-08-05 17:14:22 +01:00
Dave Conway-Jones 74aeb2ddae
bump pushover for bugfix PR 2023-07-11 20:26:35 +01:00
wooferguy a058999f4c
Pushover ttl Bug Fix (#1017)
* TTL Functionality

Pick up msg.ttl and pass it to REST API, checking it is a positive integer first.

* Update help doc

Reference ttl parameter in api docs

* Fix: Warnings with no ttl

Check if ttl exists before sanitizing

* Add: Allow string ttl

If ttl is a string, parse to integer and check validity

---------

Co-authored-by: Dave Conway-Jones <dceejay@users.noreply.github.com>
2023-07-11 20:24:38 +01:00
Dave Conway-Jones 512697eec4
Bump for pin label PR 2023-07-11 20:17:55 +01:00
Li Huaqian 8bf15d7a63
Add user button label dynamically (#1016)
Not all platforms have the user button supported, so dynamic
to add the user button label.

Signed-off-by: Li Hua Qian <huaqian.li@siemens.com>
Signed-off-by: chao zeng <chao.zeng@siemens.com>
Co-authored-by: chao zeng <chao.zeng@siemens.com>
2023-07-11 20:12:25 +01:00
Dave Conway-Jones a4d9b48ac7
bump for bugfix pr 2023-07-11 20:00:17 +01:00
Olivier Verhaegen 45b43ebb21
STOMP bugfix: usage of multiple stomp in nodes (#1015)
* Bugfix: only execute node register callbacks after connection to the server has been made

* Bugfix: only execute direct callback of register node register when connected to STOMP server

* Doc: Add tip about reconnection to server
2023-07-11 19:58:51 +01:00
Dave Conway-Jones a2b7e1a30c
bump package for PR to add msg.ttl
to release #1013
2023-06-24 09:56:17 +01:00
wooferguy 51dc002a70
Pushover TTL (#1013)
* TTL Functionality

Pick up msg.ttl and pass it to REST API, checking it is a positive integer first.

* Update help doc

Reference ttl parameter in api docs
2023-06-24 09:54:34 +01:00
Dave Conway-Jones 21b92d4894
Bump package for PR #1010 2023-06-21 20:20:15 +01:00
Olivier Verhaegen 1216ee5296
STOMP: improved logging (#1010)
* Improvements to logging

* Subscribe log clarification

* Session id on connect fix
2023-06-21 20:18:59 +01:00
Dave Conway-Jones edd521f2e9
Bump for lPR to fix topic ack handling
to close #1009
2023-06-08 21:16:34 +01:00
Olivier Verhaegen 8743c2afa6
STOMP bugfix: msg.topic can't be used with STOMP out node and ack node (#1009)
* Bugfix: not responsive to msg.topic on input of STOMP out node

* Bugfix: not responsive to msg.topic on input of STOMP ack and out node

* Bugfix: backward compatible node.topic has prio + Docs: added info about msg.topic in ACK node docs

* Typo fix
2023-06-08 21:14:40 +01:00
Dave Conway-Jones 983cab970e
bump for username credential fix
to close #1006
2023-06-06 11:26:25 +01:00
Olivier Verhaegen 3fd14223ef
Bugfix: use of credentials in STOMP server (username property typo) (#1007)
* Bugfix: use of credentials in stomp server (username property typo)
2023-06-06 11:25:06 +01:00
Dave Conway-Jones 71a39ac16b
Bump stomp node for PR #988 2023-05-30 11:07:57 +01:00
Olivier Verhaegen 0d7f0cb16d
STOMP refactor in accordance with MQTT (shared connection using config node) + client ACK (#988)
* Bugfix: show connected state after reconnect

* Bugfix: show connected state for stomp out node after reconnect

* Add support for ACK messages

* Add optional subscription id

* Typo fix

* Subscription ID not required

* Bugfix "node.ack is not a fuction"

* Use shared client connection

* Bugfix shared connection

* Improvements & bugfixes to shared connection

* Bugfix connecting state

* Set connected state in connect callback

* Typo fix

* add server shared connection variables

* Bugfix for shared state

* WIP

* Complete refactor based on MQTT nodes to be able to share server connection between nodes

* Change address back to server for backwards compatibility

* Fixes for race conditions on node closing

* Add disconnect timeout of 2s to avoid "Error stopping node"

* If not connected, do not try to disconnect

* Fix for disconnecting log

* Styling fix for ack select form row

* Typo fixes

* Typo fix

* Bugfix: subscription before connected

* Bugfix: stringify payload before sending to be able to send numbers etc

* Bugfix: not saving ack field

* Bugfix: ack

* Bugfix: ack

* Bugfix: ack & better docs regardign ack

* BugFix: reconnect delay

* Improvements regarding cleanup on close

* Handle connect and reconnect event in the same way

* Typo fix

* Fix backwards compatibility
2023-05-30 11:05:25 +01:00
Dave Conway-Jones 490a3d8d37
Fix up readme - and bump deps
to close #1003
2023-05-29 21:59:40 +01:00
Dave Conway-Jones 0342a4b7ae
better fix for handling of high latitudes
to close #1002 again
2023-05-28 09:58:12 +01:00
Dave Conway-Jones ddaa9b24b8
let timeswitch handle high latitudes better
to close #1002
2023-05-27 19:40:19 +01:00
Dave Conway-Jones a5faf13c4d
Merge branch 'master' of https://github.com/node-red/node-red-nodes 2023-05-25 14:56:06 +01:00
Dave Conway-Jones c46c0fe4b4
Bump Sensehat for multi read and examples 2023-05-25 14:56:03 +01:00
Kazuhito Yokoi 72f7f5179a
Fix flow examples of Sense HAT simulator nodes (#991)
* Add indents to flow examples of Sense HAT simulator

* Fix flow examples of Sense HAT simulator nodes
2023-05-25 14:53:11 +01:00
Ben Hardill 612ff93161
Bump serial port (#999)
* Bump serial port dependency to 11.0.0

This "should" fix the broken binaries on Arm/Alpine (e.g. docker)
2023-05-25 09:59:05 +01:00
Dave Conway-Jones 9f9d293461
Add email option for no authentication
to close #989
Bump to v2 (remove external cred file hack)
2023-04-24 22:17:39 +01:00
Dave Conway-Jones dd6bfc6f51
Bump stomp for status PR #987 2023-04-11 14:37:47 +01:00
Olivier Verhaegen b4d80b86e3
node-red-node-stomp | Bugfix: show connected state after reconnect for stomp out node (#987)
* Bugfix: show connected state after reconnect

* Bugfix: show connected state for stomp out node after reconnect
2023-04-11 14:35:40 +01:00
Dave Conway-Jones 10ffd71b02
bump stomp for fix PR#986
to close #985
2023-04-07 08:49:08 +01:00
Olivier Verhaegen 471422adfe
Bugfix: show connected state after reconnect (#986) 2023-04-07 08:46:51 +01:00
Dave Conway-Jones 6d4c865611
update suncalc node for translation PR 2023-03-28 10:52:00 +01:00
Dave Conway-Jones 3e82a363b8
Bump overall package to update test libraries 2023-03-27 23:23:10 +01:00
Dave Conway-Jones bd23b5e3d3
Bump email to update mailparser as well 2023-03-27 23:18:14 +01:00
Dave Conway-Jones 8320571630
Fix defaulting of email auth value (and linting) 2023-03-27 20:34:46 +01:00
wooferguy 9a57958a1e
XOAuth2 for Email-In node (#975)
* Update PULL_REQUEST_TEMPLATE.md

* Add new UI elements to Email In node

Locale for en-US
Added Auth type and Token field to Email IN
Dynamically appear based on selection

* XOAUTH2 IMAP

Minor UI changes. Exposing only XOAuth2. Picks up raw access token from input message specified.

Only works for IMAP
Token formatted by node for Exchange and GMail, won't work on other providers.
Only works on trigger, not timer

TODO:
Add POP XOAUTH2 capability
Add SMTP XOAUTH2 capability
Add option to pass SASL XAOUTH2 token rather than raw OAUTH2 token

* SASL Format

Added checkbox to turn off SASL formatting if the user wants to do this themselves

* XOAuth2 forces input

Using XOauth2 forces triggered node, and automatic trigger sets auth to basic;
XOAuth2 needs token from flow

* Error reporting

Password missing error only occurs if set to basic authentication.

Token missing only occurs if set to XOAuth2.

* Unit tests

Make sure basic authentication is selected by default, and that an additional input is created and timed triggers are turned off for XOauth2

* Cleanup and README

Remove old code, update readme

* XOauth2 IMAP Release

Prevent XOAuth2 being used for POP. Update PR Template.
Updated help file.
Bumped version to 1.19-beta

* Update POP3 dependency

Removed dependency to poplib.js, moved to node-pop3. Re-wrote checkPOP3 function asynchronously using the new library. Added some node.status changes to mimic IMAP behaviour.

* XOAUTH2 POP3

Added checking for authentication type to allow XOauth2 tokens to be sent to POP server. Turned off UI restrictions for this functionality.

* XOAUTH2 POP3 Release

Updated help docs and version to reflect changes.

* Add new UI elements to Email Out node

Add option for XAouth2 for SMTP node

* XOAUTH2 SMTP

Exposing functionality for OAuth2 through Nodemailer. Added some error reporting if credentials are missing to match the Email-In node.

* XOAUTH2 SMTP Release

Updated help file to reflect changes.

* Unit Tests for Email Out

Modified tests to allow these unit tests to pass, but does not address the fault caused by the Node Test Helper - credentials only loaded after the flow has been loaded.

---------

Co-authored-by: Dave Conway-Jones <dceejay@users.noreply.github.com>
2023-03-27 20:27:47 +01:00
Paul Vivier 497270ba74
Fixed typo (#981) 2023-03-27 20:25:33 +01:00
Dave Conway-Jones 480ada0543
bump nodemailer version 2023-03-27 20:23:48 +01:00
Dave Conway-Jones c0496fc067
tidy up DS_stores 2023-03-26 13:20:13 +01:00
dodther a14ef95fb3
russian translate (#962)
add support internalization and russian translate.
2023-03-21 10:20:23 +00:00
Dave Conway-Jones a55be34bc0
major change to snmp node to not stringify octet string type. 2023-03-15 10:22:34 +00:00
Dave Conway-Jones bd15c5d6dd
fix pi gpio to catch close timing error 2023-03-15 10:21:31 +00:00
Dave Conway-Jones 553ae44ccb
B ump pusher to v1 due to large underlying library changes 2023-02-02 10:59:31 +00:00
Chad Gregory 0a0917b67a
Update pusher dependencies & code (#974)
* update pusher dependencies & code

* Update package.json

* update pusher icon

* Reverting some package.json changes

* add contributors

* Add padding to icon

* resize icon

* Updated available clusters

* update broken link to cluster option

* Update clusters for out node
2023-02-02 10:57:05 +00:00
Dave Conway-Jones a8edd0cb56
Add Serialport css to try to highlight blank inputs 2023-01-31 12:24:33 +00:00
Dave Conway-Jones 559ce050da
fix serialport to append chars to buffer correctly 2023-01-31 11:27:31 +00:00
Dave Conway-Jones f7f313c197
Fix timeswitch status to show time in timezone set in the properties
and bump library
2023-01-19 09:34:28 +00:00
Dave Conway-Jones 8553dc30f2
remove dubious use of rtl direction
to close #970
2023-01-13 11:42:06 +00:00
Dave Conway-Jones 9bae313b72
revert mailparser to fix node12 (for now) 2022-12-24 14:03:49 +00:00
Dave Conway-Jones b046740e7f
Update package.json 2022-12-22 11:45:00 +00:00
Dave Conway-Jones bb0a6fd272
bump email packages 2022-12-22 11:39:36 +00:00
Dave Conway-Jones b9053cf962
email - better cleanup of deleted messages ? 2022-12-22 11:38:00 +00:00
Dave Conway-Jones 2b50bf38ec
Fix tail to update status
and retry if file goes away and comes back
2022-12-14 11:45:33 +00:00
Dave Conway-Jones 2da42c9495
Let sensehat ignore colour sensor warning
to close #958
2022-11-28 11:50:08 +00:00
Dave Conway-Jones 074ca44b5f
Add specific daemons node stdin error handler
to address issue #960
2022-11-16 12:02:30 +00:00
Dave Conway-Jones c3a5716fe7
Let email node be able to send blank topic
and let msg.description be " also
to close #959
2022-11-08 13:52:37 +00:00
Dave Conway-Jones 4c0ecc70bc
add smtp keywords 2022-10-29 16:51:14 +01:00
Dave Conway-Jones 93614e09ee
bump daemon for PR to add msg.args 2022-10-26 15:23:57 +01:00
kaffetorsk 4c9afda6dd
node-red-daemon append arguments (#939)
* Allow msg.start to append arguments

* Update description

* Update README.md
2022-10-26 15:22:48 +01:00
Dave Conway-Jones c15fa79e95
Bump for PR 2022-10-26 15:19:57 +01:00
Chao Zeng 3ca4456c2b
Refact: Separate LED selection and state control (#957)
Separation of class LED selection and state control.
The label of the LED corresponds to the silk screen of the iot2050.

Before we use one list to enumerate all the led and its state.
like: User1 Led Red User1 Led Green User1 Led Orange
      User2 Led Red User2 Led Green User2 Led Orange
if we need to add or delete the LED, we should change this list
After Separation of class LED selection and state control
one is Led selection: USER1 USER2
the other is status selection: Green Red Orange

For this structure, if the led or status changes, We don't need
to enumerate all the states.

Also there is a problem with the old version:
When we use one node to control led show green, then we use another node to control
led show red. The result we expect is led red, but the actually result is led orange.
This is caused the previous green do not turn off. State change is wrong.
This refact would also fix it.

Signed-off-by: chao zeng <chao.zeng@siemens.com>

Signed-off-by: chao zeng <chao.zeng@siemens.com>
2022-10-26 15:17:28 +01:00
Dave Conway-Jones 06c9bd65a7
Let email node better report catchable connection errors
to close #956
2022-10-16 17:50:39 +01:00
Dave Conway-Jones 4a1f3dd749
Bump nodemailer lib to latest 2022-10-14 13:36:58 +01:00
Dave Conway-Jones 584590b9a6
Fix random node to handle to or from being 0
and add tests
to close #955
2022-10-12 09:20:09 +01:00
Dave Conway-Jones 5aa99eca73
ping - clone msg in order to fix handling arrays of multiple requests. 2022-10-02 10:33:25 +01:00
Dave Conway-Jones c8975019ad
Fix ping node to pass through properties. 2022-09-30 10:05:59 +01:00
Dave Conway-Jones 3dcf739c0d
snmp clean up fix 2022-09-14 15:21:14 +01:00
Dave Conway-Jones 75a4361435
snmp - ensure response defined. 2022-09-14 15:05:29 +01:00
Dave Conway-Jones 9164fc234c
fix scope of results for lists
to close #949 - thanks @echobops
2022-09-10 13:20:07 +01:00
Dave Conway-Jones e4dc3a2bcf
bump for 2050 update PR 2022-09-08 22:08:56 +01:00
Ivan Mikhaylov 721ccd2c15
mraa-gpio: sync iot2050 id with mraa library (#948)
Based on eclipse/mraa@a9f0ff22 iot2050 platform add.

Signed-off-by: Ivan Mikhaylov <ivan.mikhaylov@siemens.com>

Signed-off-by: Ivan Mikhaylov <ivan.mikhaylov@siemens.com>
2022-09-08 22:07:14 +01:00
Dave Conway-Jones 95e5e7341e
Bump intel mraa package for PR release 2022-09-06 13:26:57 +01:00
Ivan Mikhaylov 25d7d668ef
Add IOT2050 board into mraa Intel nodes (#940)
* mraa-gpio-led: add led

This patch introduces LED node in GPIO category.

Signed-off-by: zengchao <chao.zeng@siemens.com>
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Ivan Mikhaylov <ivan.mikhaylov@siemens.com>

* mraa-gpio-ain: add iot2050 board

Add IOT2050 board in list of possible boards.

Signed-off-by: zengchao <chao.zeng@siemens.com>
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Ivan Mikhaylov <ivan.mikhaylov@siemens.com>

* mraa-gpio-dout: add iot2050 board

Add IOT2050 board into list of possible boards.

Signed-off-by: zengchao <chao.zeng@siemens.com>
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Ivan Mikhaylov <ivan.mikhaylov@siemens.com>

* mraa-gpio-pwm: add iot2050 board

Add IOT2050 board into list of possible boards.

Signed-off-by: zengchao <chao.zeng@siemens.com>
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Ivan Mikhaylov <ivan.mikhaylov@siemens.com>

* mraa-gpio: clean up on close for ain, pwm, dout

Required as nodejs will only lazily delete the node objects, and we may
race with the next user requesting the resources.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Ivan Mikhaylov <ivan.mikhaylov@siemens.com>

* mraa-gpio-din: add USER button

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>

Signed-off-by: zengchao <chao.zeng@siemens.com>
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Ivan Mikhaylov <ivan.mikhaylov@siemens.com>
Co-authored-by: Jan Kiszka <jan.kiszka@siemens.com>
2022-09-06 13:19:28 +01:00
Dave Conway-Jones da094fa70f
Slight tidy of readme 2022-08-23 14:43:34 +01:00
Dave Conway-Jones bb53ef7137
bump for fixes from PR #945
to close #944
2022-08-23 14:34:24 +01:00
Dave Conway-Jones 543afd119a
bump to email libs and doc to remove old insecure access ref. 2022-08-23 14:32:34 +01:00
J.D. Mallen 29e0bed000
Address incorrect timestamps bug in node-red-node-timeswitch; increase readability (#945)
* Initial fixes before testing and reformatting

* Put sun event offset back in; reformat

* Tabs to spaces

* Fix "Start+X" OFF time; add more comments

* Undo some formatting changes

* Add contributors to package.json
2022-08-23 14:31:18 +01:00
Dave Conway-Jones ecb2849675
timeswitch, fix display status to local timezone.
to close #944
2022-08-22 10:27:49 +01:00
Dave Conway-Jones d913171f40
Pushbullet - Fix sms missing notifications issue
to close #936
2022-08-20 18:56:34 +01:00
Dave Conway-Jones e5e8a33d80
bump notify and timeswitch deps 2022-08-19 11:40:53 +01:00
Dave Conway-Jones 5bb8b4d968
add version/engine support metadata 2022-07-27 14:08:02 +01:00
Dave Conway-Jones a7b9380f25
fix mysql node error scope 2022-07-22 10:18:37 +01:00
Dave Conway-Jones 7a5c39ce7b
fix snmp node linting 2022-07-22 10:18:18 +01:00
Dave Conway-Jones 67611f6bb6
Add cbor object packing node
and test
2022-07-22 10:18:02 +01:00
Dave Conway-Jones 6830ce4fba
email node - add done capability to retrieving mail node. 2022-07-19 12:59:41 +01:00
Dave Conway-Jones 2b6fbcc5b0
bump sensehat version for python3 check fix 2022-07-15 14:13:51 +01:00
Sam Machin e7c0459a32
Update sensehat.js (#933)
check for sensehat python lib in 2.7 and 3 folders
2022-07-15 14:12:46 +01:00
Dave Conway-Jones c9f57afe22
gpio retry failing pin connection 2022-07-14 19:00:58 +01:00
Dave Conway-Jones c32823a85a
pi gpio close pins timeout 2022-07-14 11:28:20 +01:00
Dave Conway-Jones e133d01e53
bump mraa node for iot2050 PR 2022-07-12 10:14:21 +01:00
Ivan Mikhaylov 983dafff13
mraa gpio din features (#929)
* mraa-gpio-din: add iot2050 board

This patch adds iot2050 board in possible list of boards.

Signed-off-by: zengchao <chao.zeng@siemens.com>
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Ivan Mikhaylov <ivan.mikhaylov@siemens.com>

* mraa-gpio-din: add cleanup on close

Required as nodejs will only lazily delete the node objects, and we may
race with the next user requesting the resources. ISR thread release.

Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Ivan Mikhaylov <ivan.mikhaylov@siemens.com>

* mraa-gpio-din: extend GPIO lines

Signed-off-by: zengchao <chao.zeng@siemens.com>
Signed-off-by: Ivan Mikhaylov <ivan.mikhaylov@siemens.com>

* mraa-gpio-din: add configurable GPIO mode for DIN

GPIO mode wasn't set correctly, it was set from Pinmuxes modes instead
of GPIO. Add way to control GPIO modes on DINs from Node-RED with
possible values from mraa : Strong, Hiz, Pull-down, Pull-up.

Signed-off-by: Ivan Mikhaylov <ivan.mikhaylov@siemens.com>

* mraa-gpio-din: add support for initial message from digital input

This allows to send out an initial message with the current digital pin
state on startup, simplifying initializations of certain flows.

Based on siemens/meta-iot2000@5fc2bbe patch 0003.

Signed-off-by: Ivan Mikhaylov <ivan.mikhaylov@siemens.com>
2022-07-12 10:10:49 +01:00
Dave Conway-Jones 0b3b918528
mysql faster/tidier closing of pool if never connected. 2022-07-11 14:39:16 +01:00
Dave Conway-Jones 3ffd3f9fad
remove superfluous logging 2022-06-29 10:07:56 +01:00
Dave Conway-Jones 4cfbc6a32a
Add resource and separate out domain in XMPP node
to address #881
2022-06-29 10:06:24 +01:00
Dave Conway-Jones 8431e624f7
Bump email node dependencies 2022-06-29 10:01:16 +01:00
David D'Hauwe 13b839cfda
Smtp server security note and hide unrelevant fields (#924)
* Email Mta Node added security and authentication

* Documentation updated

* Original formatting restored

* email-mta added note for port security
hide fields when not relevant
2022-06-14 22:13:16 +01:00
David D'Hauwe 0fa0816506
Smtp server (#923)
* Email Mta Node added security and authentication

* Documentation updated

* Original formatting restored
2022-06-10 10:14:38 +01:00
Snyk bot dcfd055860
fix: upgrade node-ssdp from 3.2.5 to 3.3.0 (#922)
Snyk has created this PR to upgrade node-ssdp from 3.2.5 to 3.3.0.

See this package in npm:
https://www.npmjs.com/package/node-ssdp

See this project in Snyk:
https://app.snyk.io/org/dceejay/project/34c4615a-e656-449f-b5c4-62c59a9902ce?utm_source=github&utm_medium=referral&page=upgrade-pr
2022-06-04 22:07:04 +01:00
Dave Conway-Jones 3c18463024
fix: upgrade q from 1.4.1 to 1.5.1 (#921)
Snyk has created this PR to upgrade q from 1.4.1 to 1.5.1.

See this package in npm:
https://www.npmjs.com/package/q

See this project in Snyk:
https://app.snyk.io/org/dceejay/project/34c4615a-e656-449f-b5c4-62c59a9902ce?utm_source=github&utm_medium=referral&page=upgrade-pr

Co-authored-by: snyk-bot <snyk-bot@snyk.io>
2022-06-03 10:20:30 +01:00
Dave Conway-Jones bb7b9445bb
Merge branch 'master' of https://github.com/node-red/node-red-nodes 2022-06-02 17:35:12 +01:00
Dave Conway-Jones 63012a7ae3
Let feedparser ignore initial "old" stories 2022-06-02 17:35:09 +01:00
Dave Conway-Jones a113751317
fix: upgrade ip from 1.0.2 to 1.1.5 (#919)
Snyk has created this PR to upgrade ip from 1.0.2 to 1.1.5.

See this package in npm:
https://www.npmjs.com/package/ip

See this project in Snyk:
https://app.snyk.io/org/dceejay/project/34c4615a-e656-449f-b5c4-62c59a9902ce?utm_source=github&utm_medium=referral&page=upgrade-pr

Co-authored-by: snyk-bot <snyk-bot@snyk.io>
2022-05-29 16:10:10 +01:00
Snyk bot 58bb788f45
fix: upgrade util from 0.10.4 to 0.12.4 (#918)
Snyk has created this PR to upgrade util from 0.10.4 to 0.12.4.

See this package in npm:
https://www.npmjs.com/package/util

See this project in Snyk:
https://app.snyk.io/org/dceejay/project/34c4615a-e656-449f-b5c4-62c59a9902ce?utm_source=github&utm_medium=referral&page=upgrade-pr
2022-05-25 10:17:54 +01:00
Dave Conway-Jones 5cea0c2043
fix: upgrade request from 2.74.0 to 2.88.2 (#917)
Snyk has created this PR to upgrade request from 2.74.0 to 2.88.2.

See this package in npm:
https://www.npmjs.com/package/request

See this project in Snyk:
https://app.snyk.io/org/dceejay/project/34c4615a-e656-449f-b5c4-62c59a9902ce?utm_source=github&utm_medium=referral&page=upgrade-pr

Co-authored-by: snyk-bot <snyk-bot@snyk.io>
2022-05-23 09:18:17 +01:00
Snyk bot 7db260dcc3
fix: upgrade body-parser from 1.14.2 to 1.20.0 (#916)
Snyk has created this PR to upgrade body-parser from 1.14.2 to 1.20.0.

See this package in npm:
https://www.npmjs.com/package/body-parser

See this project in Snyk:
https://app.snyk.io/org/dceejay/project/34c4615a-e656-449f-b5c4-62c59a9902ce?utm_source=github&utm_medium=referral&page=upgrade-pr
2022-05-19 10:10:20 +01:00
Dave Conway-Jones aabba8fe89
bump unicorn package 2022-05-18 16:25:16 +01:00
Dave Conway-Jones 5a5856fced
fix: upgrade pngjs from 2.2.0 to 2.3.1 (#911)
Snyk has created this PR to upgrade pngjs from 2.2.0 to 2.3.1.

See this package in npm:
https://www.npmjs.com/package/pngjs

See this project in Snyk:
https://app.snyk.io/org/dceejay/project/d423d0d8-60aa-4eae-823a-1cbe4be8a581?utm_source=github&utm_medium=referral&page=upgrade-pr

Co-authored-by: snyk-bot <snyk-bot@snyk.io>
2022-05-18 13:27:35 +01:00
Stephen McLaughlin 041342d511
better inplace upgrade of pre v1 (#908)
fixes #907
2022-05-07 16:40:57 +01:00
Stephen McLaughlin c77f13a90f
Merge pull request #904 from Steve-Mcl/snmpv3_Add_smc
Add SNMPv3 to node-red-node-snmp
2022-04-28 20:36:29 +01:00
Steve-Mcl 484c4f9574 Update readme & bump to v1.0.0 2022-04-28 20:36:53 +01:00
Steve-Mcl 069ee071ad bump dep to 3.6.3 to handle "no callback" issue
- for issue https://github.com/markabrahams/node-net-snmp/issues/202
2022-04-26 14:49:23 +01:00
Steve-Mcl a7762ea91b Add SNMPv3 support and update to latest deps
closes #705
2022-04-21 16:49:03 +01:00
Ben Hardill c833709368
Fix typo in WeMo node (#903)
* Attempt to catch errors from wemo-lookup

This is to catch errors when device is offline

* Put request back

Will look at making it all http.request later

* Fix some messages

* Bump wemo version

* Fix typo
2022-04-18 18:24:06 +01:00
Ben Hardill 2f1f08b070
Bump Wemo version (#901)
* Attempt to catch errors from wemo-lookup

This is to catch errors when device is offline

* Put request back

Will look at making it all http.request later

* Fix some messages

* Bump wemo version
2022-04-18 13:28:48 +01:00
Ben Sykes 145983bc20
Include `Content-Length` header when POSTing to sockets (#900)
Newer sockets close the connection when starting to write data without this header.
2022-04-18 13:25:21 +01:00
Dave Conway-Jones 8ca551d4bd
Bump email libs 2022-04-08 13:27:54 +01:00
Dave Conway-Jones 9be0b56173
bump to get latest library patches 2022-04-08 12:13:08 +01:00
Dave Conway-Jones 996ddd06a7
bump for styling PR 2022-04-05 15:38:35 +01:00
Mauricio Bonani add039b163
Set text color on the RPi pinTable (#898) 2022-04-04 21:36:06 +01:00
Dave Conway-Jones 87165965d9
Update package.json 2022-04-02 13:38:09 +01:00
Dave Conway-Jones 757abe3209
Fix id handling to close #897 2022-04-01 22:51:40 +01:00
Dave Conway-Jones fb9c90f68c
fix email inreplyto to do the sensible thing 2022-03-19 10:31:40 +00:00
Dave Conway-Jones 637890309a
remove superfluous debug from junction polyfill 2022-03-12 12:30:53 +00:00
Mike Harsch f6eae7b905
fix python2 fallback check (#892) 2022-03-11 17:49:55 +00:00
Kazuhito Yokoi dbd7004ae5
Add Japanease translations for e-mail node (#890) 2022-03-10 22:27:26 +00:00
Dave Conway-Jones 14cff61d49
Add polyfill junction node 2022-03-01 11:40:56 +00:00
Dave Conway-Jones bc73218905
add python3.9 check to neopixel install 2022-02-24 17:15:43 +00:00
Dave Conway-Jones 1a7077c938
bump email node 2022-02-24 17:15:22 +00:00
Dave Conway-Jones 184140b18d
fixup serialport initialisation 2022-02-24 17:15:10 +00:00
Dave Conway-Jones 22d1ec2c19
bump for pr connection fix 2022-02-21 20:10:28 +00:00
Ben Hardill 87e50f2b76
Mysql fix (#886)
* Check if there is a connection before release

Fixes #885
2022-02-21 20:08:33 +00:00
Dave Conway-Jones 5c333db0dd
run snyk checks and lint packages, bump notify. 2022-01-22 22:23:41 +00:00
Dave Conway-Jones 328aa1fb52
Bump to pickup xmpp vuln 2022-01-22 17:46:49 +00:00
Dave Conway-Jones 456e573cd7
bump tail and xmpp packages 2022-01-17 09:54:38 +00:00
realgnark b92ca63f93
Issue #875 node red node tail potentially stops working (#877) 2022-01-16 17:23:45 +00:00
Dave Conway-Jones 28580c33ea
bump sqlite fro doc updates PR. 2022-01-05 16:23:01 +00:00
unborn-andy 7ff905d224
Sqlite Node - docs update (#869)
* Update README.md

1. Updated node readme to match node's html help.
2. Added Example clarifying the use of parameters in a msg.topic query.
2022-01-05 16:20:06 +00:00
Ben Hardill f9b4d2ec01
Sqlite3 fix (#872)
* Reset bind if msg.payload not an array
2022-01-05 11:43:16 +00:00
Dave Conway-Jones 3d750a59eb
mysql - update to 1.0.0 2022-01-05 10:59:40 +00:00
Dave Conway-Jones 8df7797eb0
Merge branch 'master' of https://github.com/node-red/node-red-nodes 2022-01-05 10:57:03 +00:00
Dave Conway-Jones fea47843d7
Change mysql library to mysql2 as it is more maintained and support latest mysql authention (#862)
* Use mysql2 lib

* fix pool on acquire event cause MaxListenersExceededWarning (#854)

before: every query need to register pool on acquire event to specify queryFormat based on payload type
will cause MaxListenersExceededWarning

after:
from https://www.npmjs.com/package/mysql#pooling-connections

pool.query is a shortcut for pool.getConnection() -> connection.query() -> connection.release()

so use pool.getConnection and then
set queryFormat before query method be called

Co-authored-by: Dave Conway-Jones <dceejay@users.noreply.github.com>

* fix mysql require

* Add decimalNumbers flag true to mysql beta

* mysql remove old Timeout option, clarify timezone options

* add mysqlConnectionLimit settings option.

Co-authored-by: saknarak <saknarak@gmail.com>
2022-01-05 10:56:14 +00:00
Dave Conway-Jones 8d8195ec02
Bump packages and tidy poplib linting 2022-01-03 17:33:14 +00:00
Dave Conway-Jones e6930274e2
Bump email
and include poplib to avoid example warning.
2022-01-01 19:11:01 +00:00
Dave Conway-Jones 4ee6e57111
let feedparser accept simple xml headers
to close #867
2021-12-23 10:59:21 +00:00
Dave Conway-Jones 1bb31ba7ad
set daemon node to use node.debug 2021-12-23 10:58:33 +00:00
Dave Conway-Jones fa69af298a
Bump to pickup PR and fix python 3 2021-12-12 17:06:24 +00:00
mw75 70ac42463c
fixed check for python2 module while using python3 (#866)
Excellent - thank for that.
2021-12-12 17:05:13 +00:00
Dave Conway-Jones 68ba586074
add check for python3 lib
to close #865
2021-12-08 09:38:50 +00:00
Dave Conway-Jones 1293a865c1
Let geohash handle null island
and add test
2021-11-29 21:26:24 +00:00
Olivier Girondel 121da5deae
Allow lat and lon to be 0 (#863)
Thanks
2021-11-29 21:16:06 +00:00
Dave Conway-Jones d4faa55ab8
tidy up mcp3008 init 2021-11-29 08:49:45 +00:00
Dave Conway-Jones 4868364860
Update package.json 2021-11-18 08:41:12 +00:00
Kazuhito Yokoi d1f04a74ad
Add Japanese translation to MySQL node (#849) 2021-11-18 08:23:57 +00:00
Dave Conway-Jones 8d0fdd9fbf
Fix mcp3xxx refs to new variables
to Close #856
2021-11-17 18:08:13 +00:00
Dave Conway-Jones 9f81067d7d
Fix Pi keyboard an mouse events 2021-11-16 22:57:09 +00:00
Dave Conway-Jones a5235c7d7d
bump datagenerator version 2021-11-16 10:59:50 +00:00
Dave Conway-Jones b0cc103f10
Add 230400 baud to default serialport options 2021-11-15 11:17:56 +00:00
Dave Conway-Jones ccdc125818
remove beta from pigpio 2021-11-13 13:50:03 +00:00
Sam Machin 2d28a2304f
Update package.jsons for mono-repo (#851)
Update the package.json for each node to point to the directory within the repo that hosts the code for the package in question.  as per https://docs.npmjs.com/cli/v7/configuring-npm/package-json#repository
2021-11-02 15:22:30 +00:00
Dave Conway-Jones 5db644bd57
bump some libs - email, annotate image, core 2021-10-27 14:03:49 +01:00
Dave Conway-Jones 9cb6255b16
bump for Ja language PR 2021-10-27 13:50:15 +01:00
Dave Conway-Jones d8e0a1803d
Bump for latest xmpp client lib 2021-10-27 13:50:02 +01:00
Dave Conway-Jones 29b8765de1
bump for multiple chip support PR 2021-10-27 13:49:15 +01:00
CD2468 ae4b6bb0bf
Problems with more than one MCP3008 (#823)
* Add files via upload

* Update pimcp3008.js

implementation of the discussion

* Update pimcp3008.js

Co-authored-by: Dave Conway-Jones <dceejay@users.noreply.github.com>
2021-10-27 13:46:00 +01:00
Wataru Sato b95ae5dc63
Add Japanese translations for mysql Node (#841) 2021-10-27 13:42:27 +01:00
Dave Conway-Jones 04465c1dca
tweak up exif node - nicer colours smaller icon 2021-10-25 16:11:22 +01:00
Dave Conway-Jones 70e04763da
bump mysql for PR fix 2021-10-21 15:11:47 +01:00
Nicolas Glassey b18c32f037
Fix #811 (#847) 2021-10-21 15:08:23 +01:00
Dave Conway-Jones c78ac48fa5
Fix MCP3xxx Readme 2021-10-19 20:34:08 +01:00
Dave Conway-Jones 9b2ba970de
Add 3201 to mc3008 node. 2021-10-18 21:21:44 +01:00
Dave Conway-Jones b44676ef3c
bump daemon for Ja translations
make exit standalone
2021-10-18 21:13:52 +01:00
Wataru Sato eec57351d0
Add Japanese translations for daemon Node (#843)
* Separate language resources

* Add Japanese translations for daemon Node
2021-10-18 21:12:00 +01:00
Trise e6b9da52aa
social-pushover | add tags parameter (#846)
* social-pushover: Add "tags" parameter.

Add "tags" for emergency prio (2) messages, so you're able to cancel them by tag. (see doc / Pushover API)

* Add msg.tags to readme.
2021-10-18 21:09:35 +01:00
Wataru Sato 3e67ce628f
Add local/ja/66-mongodb.html (#839) 2021-10-10 22:13:44 +01:00
Wataru Sato a4c5697820
Add Japanese translations for exif node (#840) 2021-10-10 22:09:03 +01:00
Dave Conway-Jones c6f37d19a8
fix sqlite array handling issue
to close #670
2021-09-13 11:10:04 +01:00
Dave Conway-Jones 1f2a25637b
bump pushover node to add callback PR 2021-08-30 12:12:45 +01:00
brianmangan 6ca70977d8
Social: pushover; add callback parameter w/ documentation (#832)
* adding callback parameter to pushover node.

* pushover: callback feature added

* social/pushover documentation

* PR: added callback parameter to pushover
2021-08-30 12:10:07 +01:00
Dave Conway-Jones 96fa500ad6
bump sqlite to latest library, which also drops nodejs <v12 2021-08-17 10:34:51 +01:00
Dave Conway-Jones c5bd7da8dc
bump for doc updates 2021-07-31 09:35:52 +01:00
meeki007 b12571527f
node-red-node-email: Added documentation use of: Use secure connection & update Readme documentation (#824)
Updated README,md to better reflect the updated documentation found in the node
2021-07-31 09:33:41 +01:00
Dave Conway-Jones e990b47c65
let discovery node not flag empty service type 2021-07-22 18:06:48 +01:00
crxporter 8604a783a4
Added to wol node: num_packets and interval options (#819) 2021-07-19 17:23:48 +01:00
Dave Conway-Jones 761bb30ada
Email node - better handling of criteria errors 2021-07-16 14:41:12 +01:00
JsBergbau 245109940c
PiSrf: Added decimal places option + stop bugfix + more keywords (#816)
* Added decimal places option + bugfix + keywords

Added option to output more decimal places. When no decimal places are configured output stays the same for full backward compatibility.

Fixed bug that on restart flows error "Error stopping node: Close timed out" occured. Also removed sudo, because no need to run code with root rights. On systems where you need password for sudo it wouldn't run then. 

Added Keywords for "HC-SR04" and "SR04", because this module is fully compatible with this node.

* Added decimal places option + bugfix + keywords

Added option to output more decimal places. When no decimal places are configured output stays the same for full backward compatibility.

Fixed bug that on restart flows error "Error stopping node: Close timed out" occured. Also removed sudo, because no need to run code with root rights. On systems where you need password for sudo it wouldn't run then. 

Added Keywords for "HC-SR04" and "SR04", because this module is fully compatible with this node.

* Added decimal places option + bugfix + keywords

Added option to output more decimal places. When no decimal places are configured output stays the same for full backward compatibility.

Fixed bug that on restart flows error "Error stopping node: Close timed out" occured. Also removed sudo, because no need to run code with root rights. On systems where you need password for sudo it wouldn't run then. 

Added Keywords for "HC-SR04" and "SR04", because this module is fully compatible with this node.
2021-07-08 08:32:55 +01:00
Dave Conway-Jones 4859a8bcc0
bump email deps for cve
to close #815
2021-06-30 09:08:09 +01:00
Ben Hardill ebd043cec6
fix for #813 (#814)
* Fix for #813

Ensure `msg.location` exists before populating

* Only add location data if location present
2021-06-29 09:03:46 +01:00
Dave Conway-Jones cdcafbad1d
remove old x-red style for better highlighting 2021-06-23 12:21:19 +01:00
Dennis Gaida eb8bae6782
blink1: added "blink1 in" node (#812)
* Added "blink1 in" node

* sets msg.payload to current RGB value or "off" if RGB = 0,0,0
* can also be used to pipe msg.payload to blink1 out
* blink1 category created
* blink1 label set to "blink1 out"
* Bumped version to 0.1.0
* Modified readme
2021-06-22 12:39:22 +01:00
Dave Conway-Jones 799eee3873
Mysql - Only call done if it exists. 2021-06-19 14:47:44 +01:00
Dave Conway-Jones 290b2ea790
fixup pilter and pisrf for python2/3 2021-06-18 08:56:15 +01:00
Dave Conway-Jones 7c4b2593ba
fixup gpio nodes to try to be 100% python 2/3 friendly 2021-06-18 08:28:54 +01:00
Dave Conway-Jones 14a8b3293b
improve xmpp presence detections 2021-06-09 23:28:51 +01:00
Dave Conway-Jones cf310adb07
remove xmpp surplus error messages 2021-06-09 22:28:34 +01:00
Dave Conway-Jones f35e4baaef
Add serialport config node id to debug log for info 2021-06-07 10:31:42 +01:00
Dave Conway-Jones bb6491942e
Merge Pool PR. 2021-05-18 09:11:41 +01:00
Eric Dum d8ba11ccdf
query by pool instead of using the connection directly (#806) 2021-05-18 09:09:33 +01:00
Dave Conway-Jones 0d1a41f18a
clarify email node tls? option flag 2021-05-11 09:22:09 +01:00
Dave Conway-Jones b37d215659
mysql - revert trying to fixup RowDataPackets introduced in 0.1.8 2021-05-10 08:53:08 +01:00
Dave Conway-Jones 2bd98c6887
add python 3 tests to most shell scripts 2021-05-09 17:42:26 +01:00
Dave Conway-Jones 93f6517d30
Fix name filtering for incoming messages
to close #492
2021-05-08 12:01:55 +01:00
Nathanaël Lécaudé 263031d6c7
node-red-node-physical-web: make it work with newer versions (#799)
* Added msg.advertising = true/false to enable/disable advertising

* Fixed comparison with bool

* physical- web: Added status
Added status (lost, updated, found) as msg.topic.  Added checkbox to allow duplicates or not.

* Re-added optional topic to avoid breaking compatibility

* Cleaner topic slection

* node-red-node-wol: added address field

* node-red-node-wol: remove warning

* node-red-node-wol: bump version

* node-red-node-wol: typo in version

* Ensure service is stopped before being created

* Bump version of node-red-node-discovery to 0.0.19

* node-red-node-discovery: correction to Readme

* node-red-node-discovery: Add stop method and show status

* node-red-node-discovery: bump version to 0.0.20

* node-red-node-discovery: remove status text

* serial: ensure serialReconnectTime has a default value

* physical-web: update dependencies to make it work with recent node versions

* physical-web: update package.json
2021-05-06 15:06:57 +01:00
Dave Conway-Jones c4cb92cd61
Increase xmpp connection timout 2021-05-06 14:48:43 +01:00
Dave Conway-Jones c890ca57d5
Let RBE node be able to use any property as key (not just topic)
(not for publish until 2.0)
2021-04-27 20:25:30 +01:00
Dave Conway-Jones 4bd657fcd8
bump serialport to add German translations 2021-04-27 15:10:59 +01:00
heikokue f78f5ff7bc
serial node: improved settings form and EN help, added DE help (#787) 2021-04-27 13:55:54 +01:00
Dave Conway-Jones f9e52c7d7f
add node16 to tests (allow fail) 2021-04-25 16:17:10 +01:00
Dave Conway-Jones 05c3f1edb6
bump base packages and remove node8 tests (add 16 allow fail) 2021-04-25 16:08:51 +01:00
Dave Conway-Jones fdfdbb17b7
Fix mysql multiple return queries type
to close #797
2021-04-23 22:23:16 +01:00
Dave Conway-Jones 246463752e
Add StartTLS option to email node 2021-04-15 10:32:40 +01:00
HiroP0 13d534ee54
added support for imap 'autotls' option to 'email in' node (#796)
* added support for imap 'autotls' option to 'email in' node
2021-04-14 17:28:03 +01:00
Dave Conway-Jones 8412beedf2
Bump tail node to pick up latest underlying library fixes for error handling
hopefully to address #795
2021-04-11 14:07:17 +01:00
Ben Hardill 874708dc0d
Fix crash when WeMo devices are powered off (#794)
* Big Update

Includes:
 - New lookup node to check state of a device
 - Fix dimming control for lights
 - Fix light group control
 - Set the node label to match the device name
 - The event now includes the text description of the light capability

* Add extra check for empty results in discovery

* Attempt to catch errors from wemo-lookup

This is to catch errors when device is offline

* Put request back

Will look at making it all http.request later

* Add more error handling and reporting

* Try and not crash with subscriptions

Failed subscriptions will try agian in 1 min

* Fix some messages

* Remove most of the console.logs

* Last of console.logs
2021-04-10 20:02:36 +01:00
Dave Conway-Jones 2c5cc5f70c
Fixup mysql node done calls 2021-04-08 17:07:23 +01:00
Dave Conway-Jones 915089f2fb
Tidy Ping to remove unnecessary errors,
to close #782
2021-04-08 17:07:05 +01:00
Daniele 040bf24c4b
node-red-node-mysq add done() callback (#793)
This fix adds the done() callback when the query has been executed.
2021-04-08 09:11:59 +01:00
Dave Conway-Jones 61a03d7cc3
Tidy email node README to remove false "only one mail" statement.
and tidy some other newer functionality. like plaintext.
to close #792
2021-04-03 16:55:45 +01:00
Dave Conway-Jones 1c256fd3b3
refix email attachments array 2021-04-01 09:36:36 +01:00
Maximilian Gutwein 4697636055
Add support for separate plaintext in outgoing mails (#788)
* Add support for separate plaintext in outgoing mails

* Rename msg.plain to msg.plaintext
2021-03-31 20:51:43 +01:00
Dave Conway-Jones ef8d5bd8ee
bump feedparser package for de translation updates 2021-03-28 18:25:59 +01:00
heikokue 4572535272
feedparser node: improved EN help and added DE help (#783) 2021-03-28 18:22:53 +01:00
Dave Conway-Jones c1e83bf06f
Email - nsure imap tries to disconnect nicely first.... then destroy
to close #784
2021-03-28 16:55:28 +01:00
Dave Conway-Jones 5dd03b7073
Merge branch 'master' of https://github.com/node-red/node-red-nodes 2021-03-25 09:52:08 +00:00
Dave Conway-Jones d6bfd48f51
bump rbe to add de translations 2021-03-25 09:52:00 +00:00
heikokue 534be72c36
rbe node: improved EN help and added DE help (#776) 2021-03-25 09:51:16 +00:00
Dave Conway-Jones 35fea0f1cc
bump tail for de translations 2021-03-25 09:49:52 +00:00
heikokue cb3b4c3c62
tail node: improved EN help and added DE help (#779) 2021-03-25 09:48:46 +00:00
Dave Conway-Jones ed45d5622b
bump email package for de translations 2021-03-25 09:48:03 +00:00
heikokue 14b1e3aefb
email node: improved EN help and added DE help (#781) 2021-03-25 09:45:45 +00:00
JsBergbau e05a3f3d4d
Added retry and expire setting for Prio 2 messages (#780) 2021-03-25 09:42:50 +00:00
Dave Conway-Jones 33bec5f2a2
bump gpiod for de translations 2021-03-25 09:38:21 +00:00
Dave Conway-Jones bfae27b7f0
Merge branch 'master' of https://github.com/node-red/node-red-nodes 2021-03-25 09:37:21 +00:00
heikokue 7186ee38ff
pi-gpiod: improved/fixed EN localisation and added DE help (#778) 2021-03-25 09:36:48 +00:00
Dave Conway-Jones 1552575388
bump pilcd for de translations 2021-03-25 09:35:29 +00:00
heikokue 57f552b7fc
PiLcd node: improved EN help and added DE help (#777) 2021-03-25 09:34:19 +00:00
Dave Conway-Jones c1c82a623e
mysql, actually make the if else do something sensible... 2021-03-21 17:30:14 +00:00
Dave Conway-Jones a194c56acb
refix copy results array 2021-03-21 10:10:45 +00:00
JsBergbau ef5b577f7f
Updated documentation for msg.html (#774) 2021-03-18 08:47:36 +00:00
Dave Conway-Jones 61025cc962
bump pushover for PR 2021-03-17 21:08:37 +00:00
Dave Conway-Jones 7ee8f032df
Merge branch 'master' of https://github.com/node-red/node-red-nodes 2021-03-17 21:08:24 +00:00
JsBergbau b87488df6d
Added support for msg.html (#773) 2021-03-17 21:07:35 +00:00
Dave Conway-Jones dceb33dc43
few remaining x-red to html tidy ups, both sentiment and redis nodes. 2021-03-16 09:57:46 +00:00
Dave Conway-Jones 868d641064
Update 68-mysql.js 2021-03-16 08:24:06 +00:00
Dave Conway-Jones fabd3753b4
undo mysql change again 2021-03-14 17:54:31 +00:00
Dave Conway-Jones 3330053a1c
bump sensehat , irc, and twitter nodes for German translation 2021-03-14 14:10:26 +00:00
Dave Conway-Jones c2613cfeb0
mysql test before releasing connection 2021-03-14 09:05:23 +00:00
Dave Conway-Jones e674f9ad97
cleanup some old x-red label - no new node versions 2021-03-13 14:25:45 +00:00
Dave Conway-Jones 169be33591
bump tail, sqlite, email, feedparser, pigpiod for German translations 2021-03-13 14:15:58 +00:00
Dave Conway-Jones 9e7701dc33
Update 68-mysql.js 2021-03-13 13:59:00 +00:00
Dave Conway-Jones 2a4e434406
add extra infor to daemon node 2021-03-12 22:08:57 +00:00
Dave Conway-Jones 6095723308
fix mysql array handling 2021-03-12 21:01:54 +00:00
Dave Conway-Jones 911348790c
bump rbe, random and base64 for translation 2021-03-12 20:52:40 +00:00
Dave Conway-Jones 23a95ec9da
bump datagenerator for translation 2021-03-12 20:46:19 +00:00
Dave Conway-Jones 0a3b8614a1
bump serialport for translation 2021-03-12 20:45:40 +00:00
Dave Conway-Jones f0beaeb0ba
bump ping package for ipv6 and translation 2021-03-12 20:45:18 +00:00
heikokue 80b9316d92
added/improved DE translation of forms (#765) 2021-03-12 13:23:26 +00:00
heikokue 400a2f8ec7
splitted datagenerator node help into locales (#769) 2021-03-12 13:18:58 +00:00
heikokue 0772b545ea
added i18n help files (#766) 2021-03-12 13:17:23 +00:00
meeki007 07460b9404
Add IPv6 support to node (#758) 2021-03-12 12:54:13 +00:00
Dave Conway-Jones f7be874e2c
fix linting for grunt 2021-03-12 09:36:20 +00:00
Dave Conway-Jones c4a32cdb58
Merge branch 'master' of https://github.com/node-red/node-red-nodes 2021-03-11 21:25:02 +00:00
Dave Conway-Jones 31b56e5740
tidy up serial error messages 2021-03-11 21:24:35 +00:00
heikokue 8bce52a2f4
fixed i18n of node pi-gpiod (wrong cross-reference to node PiGpio, moved "dual use" to i18n, seconds unit) (#764) 2021-03-11 20:30:57 +00:00
Dave Conway-Jones ae95fecc8f
add error objects to all node.errors so they can be caught.
to close #767
2021-03-11 19:36:37 +00:00
Dave Conway-Jones c66daa6220
remove superfluous console.log 2021-03-11 19:35:53 +00:00
Dave Conway-Jones fe42b69712
let daemon accept real json array of parameters
to close #768
2021-03-11 19:09:13 +00:00
Dave Conway-Jones 4d7ba48797
Add room password, better error / status reporting 2021-03-01 13:40:14 +00:00
Dave Conway-Jones 59361625cc
Add subject to chat if known 2021-02-28 17:32:49 +00:00
Dave Conway-Jones a9d1ca0491
xmpp disconnect more cleanly/correctly 2021-02-26 16:05:03 +00:00
Dave Conway-Jones 9db89f3ea1
RBE node - let topic handling be optional (#751)
* let rbe handle topics optional

and add tests

* fix text formatting

* Update package.json
2021-02-26 14:51:55 +00:00
Dave Conway-Jones 68e0b121ec
bump for PR 2021-02-26 14:42:11 +00:00
Pablo Acosta-Serafini d69da74843
timeswitch node: time zone support; do not mark as misconfigured when sunrise/sunset not used and lat/lon not given (#757)
* timeswitch node: a) do not mark node as misconfigured if sunrise and
sunset are not used and latitude/longitude are not given. b) support for
specifying time zone when on and/or off times are not specified as
sunrise and/or sunset.

* Replaced moment dependency with spacetime

* Timezone defaults to UTC for compatibility with previous node version
2021-02-26 14:38:28 +00:00
Dave Conway-Jones c368e3bcd4
xmpp auto create rooms correctly and auto join every 60 secs if required 2021-02-25 09:05:11 +00:00
Dave Conway-Jones cafdb26832
add info command to xmpp nodes 2021-02-23 22:15:57 +00:00
Dave Conway-Jones 40362ee985
Let xmpp in handle a list of rooms 2021-02-23 12:45:55 +00:00
Dave Conway-Jones 7485760db9
xmpp node - use empty field to signify all rooms 2021-02-23 11:37:53 +00:00
Dave Conway-Jones 3ad829d75a
Let xmpp input node join "ALL_ROOMS" automatically (if asked) 2021-02-23 09:04:12 +00:00
Dave Conway-Jones b1a2741fa0
fix pushover to handle false msg.payload
to close #756
2021-02-11 21:17:59 +00:00
Dave Conway-Jones 67fee810eb
fix topic to be clear what it is (gpio not pin) 2021-02-11 11:02:00 +00:00
Dave Conway-Jones 8fa4fbef5f
Change GPIO nodes to use BCM rather than pins 2021-02-09 11:44:11 +00:00
Dave Conway-Jones cef28d6231
bump for PR and linting 2021-02-07 22:36:07 +00:00
Brian Orpin fbe2078324
Return all feed data (#743) 2021-02-07 22:32:58 +00:00
Dave Conway-Jones a57bf5383f
Daemon node handle parameters with spaces
to close #754
2021-02-05 10:35:54 +00:00
Dave Conway-Jones bbf9a3b7e4
bump xmpp package 2021-02-02 19:21:28 +00:00
Andreas Martens 1c34e39d8a
XMPP: improve debugging and error handling (#753) 2021-02-02 16:55:55 +00:00
Dave Conway-Jones 7c96bffece
Merge branch 'master' of https://github.com/node-red/node-red-nodes 2021-02-02 10:12:36 +00:00
Dave Conway-Jones f99e52d1fa
Merge branch 'master' of https://github.com/node-red/node-red-nodes
merge upstream
2021-02-02 10:12:32 +00:00
Andreas Martens 886158485b
XMPP: ability to dynamically join chat rooms (#752)
* join a MUC if we're already connected to server and refactor error handling

* ability to dynamically join a MUC when provided as msg.topic
2021-02-02 09:14:11 +00:00
Dave Conway-Jones 778fd68354
add contributor 2021-01-29 16:53:50 +00:00
Dave Conway-Jones 77fac03319
bump xmpp 2021-01-29 16:48:54 +00:00
Andreas Martens fc2f6ed3c7
join a MUC if we're already connected to server and refactor error handling (#749) 2021-01-29 16:46:15 +00:00
bartbutenaers 0d0c88d19e
Wemo insight power parameters (#739)
* Insight power parameters

* Insight power parameters

* Insight power parameters

* Insight power parameters

* Insight power parameters

* Bump version 0.2.0
2021-01-29 16:28:04 +00:00
Dave Conway-Jones 3a007399f6
Add frequency select to pigpiod node 2021-01-26 18:52:41 +00:00
Dave Conway-Jones 4bdb6216d3
rename timeswitch dawn/dusk to sunrise/sunset
to close #741
2021-01-22 16:28:07 +00:00
Dave Conway-Jones 12c485faaf
bump mongo node for close PR 2021-01-22 13:50:37 +00:00
Adrien GILLON 4cfc7b39be
Fix MongoDB connection close on node close (#737)
closes #738
2021-01-22 13:48:01 +00:00
Dave Conway-Jones ea92f293e2
Bump annotate image version from PR. 2021-01-17 17:29:57 +00:00
Dave Conway-Jones 3bc16fbd55
Bump up libraries for "old" blinkstick 2021-01-17 17:29:15 +00:00
meeki007 54be2e679e
node-red-contrib-facial-recognition (enhancments) (#726)
* add labelLocation documentation

* Update README.md
2021-01-17 17:19:12 +00:00
Tod E. Kurt 010669037a
update node-blink1 library (#734) 2021-01-14 19:09:57 +00:00
Dave Conway-Jones f082306778
partially fix exif tests to fix overall grunt 2021-01-14 13:26:49 +00:00
Nathanaël Lécaudé 55de84772c
Ensure serial node has a default reconnect time (#733) 2021-01-13 10:13:46 +00:00
Dave Conway-Jones edc640be4d
Update 36-rpi-gpio.js 2021-01-12 12:42:41 +00:00
Dave Conway-Jones 14983c9722
mail - check attachment valid contents if possible
to close #728
2021-01-12 12:41:41 +00:00
Dave Conway-Jones c0c6d75535
Merge branch 'master' of https://github.com/node-red/node-red-nodes 2021-01-12 10:14:08 +00:00
Ben Hardill 9c805f43fa
Bump version number of pi-gpiod node (#732)
* Update pi-gpiod.html

Corrected URL for pigpiod web page (lines 174 / 420)

To close #729
2021-01-12 10:13:12 +00:00
Dave Conway-Jones 00fbae3ef6
fix random number returning strings ! 2021-01-05 22:12:21 +00:00
Kazuhito Yokoi fa2ea96e67
Add Japanese translations for sqlite node (#725)
* Add Japanese translations for sqlite node

* Improve Japanese translations for sqlite node

* Restructure message catalog
2020-12-17 08:26:32 +00:00
Kazuhito Yokoi cbcb3036be
Add Japanese translations for random node (#724) 2020-12-14 13:35:39 +00:00
Dave Conway-Jones 354370e6e0
Tidy up random node info. 2020-12-13 17:38:17 +00:00
juggledad 9eb031e912
Update node-red-random to add option to dynamically pass in 'To' and 'From' (#707)
* Add option to dynamically pass in 'From' and 'To' - fixed bug when 'From' was greater than 'To' by flipping the two

* Set initial values of 'From' and 'To to "" to allow dynamic overriding them
2020-12-13 12:58:13 +00:00
Dave Conway-Jones 0ac07a1c6f
update neopixel info 2020-12-12 17:18:18 +00:00
Dave Conway-Jones 8130f8c007
add extra gpoio support to neopixel node 2020-12-12 14:26:31 +00:00
Dave Conway-Jones c61e8b60b7
Add dedicated Worldmap mode
better handling of other types
2020-12-07 17:34:44 +00:00
Dave Conway-Jones 466b1c3deb
add worldmap features to exif node.
field of view, popup, filename, icon, etc.
2020-12-06 17:34:27 +00:00
Dave Conway-Jones 9e948b9fdf
bump gpio version 2020-12-04 13:48:40 +00:00
Dave Conway-Jones 8c7409d041
let pi keyboard to retry connection 2020-12-04 13:47:29 +00:00
Dave Conway-Jones 91217d6e62
allow mcp node to be visible when not in Pi
mark as inactive status
to close #718
2020-12-01 23:43:48 +00:00
Dave Conway-Jones 2d5d553c4d
revert ping changes for HA
to address #662
2020-11-20 18:07:35 +00:00
Dave Conway-Jones 4884550215
Tidy up pushbullet (no fixes)
remove old migration code)
2020-11-16 21:26:32 +00:00
Dave Conway-Jones e5f41880c3
ump mongo package for fix PR 2020-11-16 15:44:53 +00:00
Ross Cruickshank 8363a774e9
mongodb cusor handling #714 (#715)
match cursor handling with parameter
2020-11-16 15:43:53 +00:00
Dave Conway-Jones 9e7a8d5764
bummp twitter and pi-gpio packages for recent PRs 2020-11-16 14:58:54 +00:00
Takayoshi Kawamorita 906a48fa61
The problem that the input contents disappear when multiple keys are input at the same time. (#717) 2020-11-16 14:54:48 +00:00
Matt Borja 640a6d0cb2
Improve error handling for read-only applications (#709)
Applications pending approval will return a different response body than what is presently supported.

Below is a copy of the actual response that comes back in this scenario:
```
{"status":401,"rateLimitTimeout":null,"body":{"request":"/1.1/statuses/update.json","error":"Read-only application cannot POST."}}
```

Whereas the current implementation assumes the presence of an `errors` array, reading off the first element (i.e. `result.body.errors[0]`), the above scenario throws an exception as `result.body.errors` is now `undefined` and cannot be indexed).

The proposed update seeks to account for this while retaining existing functionality and has been tested (error message in debug now properly says "Read-only application cannot POST."
2020-11-11 11:26:56 +00:00
Dave Conway-Jones 3aab556d4a
bump serialport package for ja translations 2020-11-01 23:16:24 +00:00
1ft-seabass 4136b0f30f
Updated io\serialport\locales\ja\25-serial.json (#713) 2020-11-01 23:14:02 +00:00
Nick O'Leary e198c5d16f
Merge pull request #712 from node-red/annotate-image
Add annotate-image node
2020-10-30 09:51:47 +00:00
Nick O'Leary 056836d1e5
Tidy up edit dialog 2020-10-30 09:51:03 +00:00
Nick O'Leary 3d3841e651
Fix license 2020-10-29 22:47:30 +00:00
Nick O'Leary 58e8cdc8d3
Add annotate-image node 2020-10-29 22:45:02 +00:00
Dave Conway-Jones 395bf77441
bump mongo node for release 2020-10-28 11:25:03 +00:00
Kazuhito Yokoi e68a438bb0
Fix status error in mongoDB node (#711) 2020-10-28 11:22:03 +00:00
piyonakajima efcf91a6df
Add Japanese translations for mongoDB node (#710) 2020-10-28 11:21:14 +00:00
Dave Conway-Jones 07e5d9fd65
email node - add msg.priority and msg.headers options 2020-10-26 09:08:10 +00:00
Dave Conway-Jones 3b7fb0aa95
tidy up xmpp node 2020-10-24 15:02:45 +01:00
andres 4b99a5f4d1 Added support for V3
Added support for version 3.
All the existing issues with v1 and v2c are also with v3 e.g.
https://github.com/node-red/node-red-nodes/issues/679
snmp walker will not return more than 1000 objects, all following objects cannot be accessed
Incorrect encryption (privacy) passphrase gives a timeout and not an error (protocol limitation?)
Incorrect community string gives a timeout and not an error (protocol limitation?)
Changes to the node are made with following details:
Node-red v1.2.2
Node.js v12.6.0
Windows_NT 10.0.19841 x64 LE
2020-10-24 11:07:16 +10:00
Kazuhito Yokoi 770ad94e95
Add Japanese translations for Sense HAT node (#704) 2020-10-23 16:12:49 +01:00
Dave Conway-Jones eddeef9630
Update .travis.yml 2020-10-19 22:42:25 +01:00
Dave Conway-Jones ae75e7f7a8
Update .travis.yml 2020-10-19 22:38:31 +01:00
Dave Conway-Jones 789abedd96
Update .travis.yml 2020-10-19 22:30:36 +01:00
Dave Conway-Jones 43f7326c12
try nyc instead of instanbul 2020-10-19 21:33:50 +01:00
Dave Conway-Jones 6f351943cb
email node - remove promises for node8
and fixup tests
2020-10-19 21:33:32 +01:00
Dave Conway-Jones ffa5761756
add smtp-package for tests 2020-10-19 14:44:09 +01:00
Dave Conway-Jones ef1ebe7b44
Fix email tests and add one for MTA node 2020-10-19 14:32:09 +01:00
Dave Conway-Jones 14087a9f77
Add MTA node to email 2020-10-19 12:24:18 +01:00
Nick O'Leary 8f2c631410
Bump pushbullet node version 2020-10-13 22:38:18 +01:00
Nick O'Leary 1253e7b6be
Merge pull request #701 from guzba/patch-1
Attempt to mitigate stream server connect feedback loop
2020-10-13 22:36:19 +01:00
guzba ff9d21827d
Attempt to mitigate stream server connect feedback loop
Pushbullet dev here. Around 36 hours ago we started receiving around 750 additional requests per second to connect to our stream server. I blocked around 50 - 100 IP addresses to mitigate the spam. This spam traffic has continued unchanged since then.

I don't know for sure what caused this, but one user came forward reporting issues with their Node-Red setup after I banned the IPs (status code is my banned IP status code which is pretty compelling evidence). I can't be sure what is causing the issue since no User-Agent is included in the requests, but it for sure is at least partly Node-Red API users. I'd like to work on mitigating this since mitigating the spam traffic costs money.

My first theory here is in this PR. I am not aware of any guarantees that you'll never get multiple 'error' events, so it makes sense to clear the timeout before setting a new one to reconnect. Even if it is just defensive, it may not have much cost? If you do get multiple error events without this change, it is possible to trigger many connect() requests which can error out and then trigger many more connect() requests with lots of timeouts, which is not good.

Another thing to consider is that this library's dependency for PB (https://github.com/alexwhitman/node-pushbullet-api) already has code to reconnect if a websocket connection is lost without having been properly closed. I think an even better solution is verifying this works and then deleting the reconnect logic from here.

I'm not an expert on Node-Red though so I am only trying to offer suggestions to ensure everyone is a good citizen when using our API :) Thanks!
2020-10-13 16:27:30 -05:00
Dave Conway-Jones f599797144
bump for latest PRs 2020-10-05 09:45:38 +01:00
Ross Cruickshank 9cc61cb0f1
mongdb - move projection into find pipeline (#697)
new node.js client API moved projection into options object - switched to pipeline stage instead #695
2020-10-05 09:28:58 +01:00
Ross Cruickshank 4ae0818a4b
mongodb - dereference aggregateCursor (#696)
new node.js client library moved  aggregate response  - using toArray to  return result-set in msg.payload #693
2020-10-05 09:28:39 +01:00
Dave Conway-Jones aa45796a98
bump pushbullet package for PR 2020-09-27 12:59:02 +01:00
Frakke0 e980c8c04d
Fix not shown error (#692)
Fixed response to shown as string and not object
2020-09-27 12:57:09 +01:00
Dave Conway-Jones d3a3bc158c
email - show valid folders in error if fetch fails 2020-09-23 23:54:09 +01:00
Dave Conway-Jones 973fd8c6ec
bump email package version 2020-09-23 10:20:58 +01:00
Vincent Hou 606f9c71e7
Update 61-email.js (#689)
Fixed disposition issue caused by `this`.
2020-09-23 08:35:08 +01:00
Dave Conway-Jones fbad6e4c2d
clarify linting confusion 2020-09-17 10:02:54 +01:00
Dave Conway-Jones c21fb22918
Linting and bump package for new clustered PR. 2020-09-17 09:21:50 +01:00
Ross Cruickshank cde422f34a
mongodb: update to add support replicaset clusters (ICD4Mongo) (#688) 2020-09-17 09:17:43 +01:00
Dave Conway-Jones d26cb057f9
add host property to outgoing msg
to close #687
2020-09-15 16:12:03 +01:00
Ross Cruickshank 4becf68848
use mongodb 3.6.1 client, add clustering support (#685) 2020-09-14 17:21:41 +01:00
Dave Conway-Jones 7e8571af42
update lib versions for grunt 2020-09-11 22:21:52 +01:00
Dave Conway-Jones f95f0639f4
bump sqlite lib 2020-09-11 12:44:05 +01:00
Dave Conway-Jones 2625022fbc
bump pigpio package for env variable pin setting pr 2020-08-31 10:48:48 +01:00
Pablo Acosta-Serafini 0b4c1ff977
Enable the use of environment variables to define GPIO pin number (#676)
* Enable the use of environment variables to define GPIO pin number

* Pin field moved below table. Field width made the same as table. Restored
fa-icon and "Pin" label. Closed validation escapes.
2020-08-31 10:45:41 +01:00
Dave Conway-Jones 46f3dfc382
email don't retry connection while still busy. 2020-08-28 09:36:06 +01:00
Dave Conway-Jones 53ad00f165
bump serialport dependency, add ja translation for baudrate message, fix linting, bump package 2020-08-27 13:00:10 +01:00
Orfait 53f32ec521
[serialport] Allow baudrate change at run time (#675)
* Added baudrate change in serialport

* Added baudrate change to "serial request" (not only "serial out")

* Added doc
2020-08-27 09:20:09 +01:00
Dave Conway-Jones ea729546d4
add sms_changed to pushbullet handler 2020-08-24 12:12:32 +01:00
Ben Hardill 34262e2fb0
Adding extra error checking for response from devices (#672) 2020-08-17 21:43:12 +01:00
Dave Conway-Jones 4ed0cb84d9
add some words to snmp info/readme
to close #667
2020-08-06 18:10:09 +01:00
Dave Conway-Jones 81039eacbc
bump markdown node package version 2020-07-16 10:16:03 +01:00
Dave Conway-Jones 4cabe5ea30
bump xmpp node package version 2020-07-16 10:15:49 +01:00
Andreas Martens e334040dd7
replace xmpp-simple with @xmpp/client (#664)
* replace xmpp-simple with @xmpp/client

* indent at 4

* remove trailing commas
2020-07-16 10:00:27 +01:00
Dave Conway-Jones 2d0c8f0fb0
fix esversion for lint 2020-07-16 09:15:01 +01:00
Andreas Martens bf94d320a9
correctly join a chat room (#663) 2020-07-10 12:30:44 +01:00
Dave Conway-Jones 8919edf0e6
turn off allow node14 failures 2020-07-04 17:06:41 +01:00
Dave Conway-Jones 8e45b96ec1
do the x-red thing to smooth node 2020-07-01 11:17:00 +01:00
Dave Conway-Jones 5ba989f09d
tidy up ping node listeners 2020-07-01 11:16:20 +01:00
Dave Conway-Jones 41d9f18608
Daemon node - catch tiny possible escape with "\n " in command as label 2020-06-22 22:45:34 +01:00
Nick O'Leary 98d5df965c
[sensehatsim] Add support for scrolling text 2020-06-18 00:44:53 +01:00
Dave Conway-Jones 696a99eaa3
bump random node to pickup translations 2020-06-17 18:15:10 +01:00
Kazuhito Yokoi 7cec44d353
Add Japanese translations for random node (#658) 2020-06-17 09:02:47 +01:00
Dave Conway-Jones 34fc79ddb6
Bump piLcd package after tidy up 2020-06-15 23:20:46 +01:00
Dave Conway-Jones 6161df3380
Merge branch 'master' of https://github.com/node-red/node-red-nodes 2020-06-15 23:16:59 +01:00
Kazuhito Yokoi 84c5c6cb30
Add Japanese translations for pilcd node (#657) 2020-06-15 23:11:53 +01:00
Dave Conway-Jones a84658661d
fix comment 2020-06-15 15:31:44 +01:00
Dave Conway-Jones 24bd20ab21
Fix not triggering on waitfor character 2020-06-13 20:35:14 +01:00
Dave Conway-Jones cd85fe8df2
Fix RBE greater than change not emitting on first message
And fix missing close tags
2020-05-31 21:52:37 +01:00
Dave Conway-Jones 01d675b372
Merge branch 'master' of https://github.com/node-red/node-red-nodes 2020-05-24 16:42:42 +01:00
Dave Conway-Jones e2c9a6521e
pushover node - hide user id and well as api key 2020-05-24 16:42:28 +01:00
juggledad 3afc2622f3
Updated README to expand the way `msg.from` works (#654) 2020-05-23 07:57:31 +01:00
Dave Conway-Jones 18afc438da
bup version for npm to pick up error handling PR. 2020-05-20 14:07:26 +01:00
JsBergbau d4d2404578
On error sending pushover message throw a catchable exception (#653)
* On error throw a catchable 

Throws an catchable exception if there is any error in sending the message. So you can react to it with a catch node

* Updated errorhandling

Updated the error handling process to be in compliance with the Node-RED Api
2020-05-20 14:04:42 +01:00
Dave Conway-Jones 05a9312905
fix gpio initial read timing and order 2020-05-09 16:51:22 +01:00
Dave Conway-Jones c79bcfbd0e
bump serialport lib 2020-05-08 15:45:29 +01:00
Dave Conway-Jones 3caf92ffc3
fic link in pibrella readme
to close #652
2020-05-08 13:52:01 +01:00
Dave Conway-Jones 43bdfb9fe3
bump lib 2020-05-05 19:36:48 +01:00
Dave Conway-Jones cfc42d02e9
try nodejs14 in travis 2020-05-03 16:01:04 +01:00
Dave Conway-Jones 8972681656
line up versions 2020-04-30 20:27:05 +01:00
Dave Conway-Jones 89996016de
suncalc - add moon position and phases, and sun position - bump to 1.0 2020-04-30 11:11:11 +01:00
Dave Conway-Jones 055be01332
pi gpio - bump to include msg complete capability 2020-04-21 11:49:41 +01:00
Hiroyasu Nishiyama 67c3d251e4
add complete node support to gpio out node (#647) 2020-04-21 11:46:03 +01:00
Dave Conway-Jones 4641d10beb
mysql: add charset option (defaults as-is to old UTF8) 2020-04-18 18:03:59 +01:00
Dave Conway-Jones 667c7588f9
Add offsets to suncalc node. 2020-04-18 13:55:57 +01:00
Dave Conway-Jones 92adb10fb3
pushover: ensure handles missing payload. 2020-04-17 09:43:45 +01:00
Ben Hardill 436f169fd4
More Wemo update (#631)
* Reduce resubscription time

Halve the resubscrciption timeout to make sure event
subscriptions get renewed

* Big Update

Includes:
 - New lookup node to check state of a device
 - Fix dimming control for lights
 - Fix light group control
 - Set the node label to match the device name
 - The event now includes the text description of the light capability

* Fix groups properly

* Fix travis error with comparitor

* Bump node-ssdp version

* Add extra check for empty results in discovery

* Bump twitter to 280 chars

fixes #371

* Bump twitter node version

* Remove extra whitespace

* Add catch for HTTP timeout

If the device drops off line then with no catch for the timeout
Node-RED will crash

Should fix #616

* More timeout catch blocks

* Version bump

* Bump Wemo version
2020-04-11 10:47:47 +01:00
Dave Conway-Jones 397b7cdaec
bump mysql thanks to PR 2020-04-10 22:56:28 +01:00
Marco 0351441075
MySQL allows to pass named parameters as object (#565)
* add check isobj

* added example to readme.md

* edit if Syntax

* add Documentation link to readme.md

* fixed Syntax and edit readme.md
2020-04-10 22:53:17 +01:00
Dave Conway-Jones dfda66f415
Merge branch 'master' of https://github.com/node-red/node-red-nodes 2020-04-10 22:45:14 +01:00
Dave Conway-Jones bf1c5abd7d
Merge branch 'master' of https://github.com/node-red/node-red-nodes 2020-04-10 22:44:55 +01:00
Hiroyasu Nishiyama 7ccbb6fc9f
Update Japanese message catalogue of RPI-GPIO (#645) 2020-04-10 22:40:57 +01:00
Nick O'Leary a37fa35a8a
[groups] Add node-red-node-group node 2020-04-06 21:42:44 +01:00
Dave Conway-Jones fa8e174d0b
mysql - slightly overzealous closing of connections - causes crash. backed off slightly 2020-04-05 12:35:15 +01:00
Dave Conway-Jones 705dd1ffc1
mysql - ensure connection released back to pool more often
and try to ensure status is shown more correctly on error.
2020-04-05 11:44:27 +01:00
Hiroyasu Nishiyama ea3ed9ff5e
update japanese message of ping node (#644) 2020-04-04 13:47:58 +01:00
Dave Conway-Jones 0b590236a0
bump some node-red-node deps and packages
some due to  long outstanding doc PRs
2020-04-03 22:29:43 +01:00
Dave Conway-Jones 3d9b3823cc
suncalc rearrange sorti of times into time order
to close #633
2020-04-03 22:25:35 +01:00
arneman 3c4337f238
add an example for a prepared sql query (#621)
An example sql query for the given parameter example would help users to understand how they could use prepared statements.
2020-04-03 22:13:10 +01:00
Kazuhito Yokoi 7c759e10dd
Add and remove namespaces for i18n (#627)
* Add necessary name spaces for i18n

* Remove unnecessary name spaces for i18n
2020-04-03 22:12:22 +01:00
Dave Conway-Jones 9b1eeb2756
shorten ping label if more than one target 2020-04-03 17:55:30 +01:00
Dave Conway-Jones 7667de5ced
Tidy up ping notes for pub 2020-04-03 16:50:09 +01:00
Dave Conway-Jones f276de252e
Merge branch 'master' of https://github.com/node-red/node-red-nodes 2020-04-03 16:08:43 +01:00
Stephen McLaughlin 437c29525d
new features: Add Triggered Mode to Ping Node (#643) 2020-04-03 16:07:41 +01:00
Dave Conway-Jones 34c3beb430
bump daemon so npm update has a chance to update it in future 2020-04-01 17:51:51 +01:00
Dave Conway-Jones 3087e8e2a1
ensure clone msg for multi line output
to close #642
2020-03-31 17:07:22 +01:00
Dave Conway-Jones a57de3d8f2
Fix serialport to not try to log error and tell user instead
to close #637
2020-03-27 11:36:18 +00:00
Dave Conway-Jones e3e6c41030
Add Name field to mysql server config so can be made unique
to close #635
2020-03-20 14:59:08 +00:00
Dave Conway-Jones 73d2b7fb71
bump overall package to node-red 1.0.4 2020-03-01 17:06:48 +00:00
Dave Conway-Jones eb9d379014
bump mysql package and lib 2020-03-01 17:06:22 +00:00
Nick O'Leary 2631a7937a
Update github templates 2020-02-25 23:05:07 +00:00
Dave Conway-Jones 4efb7417df
Move base64, msgpack, and markdown nodes to parser category
to be consistent with other parsers, and change x-red to html
2020-02-25 17:41:45 +00:00
Dave Conway-Jones be5f79becc
Stop sqlite adding too many listeners
to close #630
2020-02-23 11:27:01 +00:00
Ben Hardill 6c446a96f2
Add HTTP timeout handler to Wemo nodes. (#629)
* Reduce resubscription time

Halve the resubscrciption timeout to make sure event
subscriptions get renewed

* Big Update

Includes:
 - New lookup node to check state of a device
 - Fix dimming control for lights
 - Fix light group control
 - Set the node label to match the device name
 - The event now includes the text description of the light capability

* Fix groups properly

* Fix travis error with comparitor

* Bump node-ssdp version

* Add extra check for empty results in discovery

* Bump twitter to 280 chars

fixes #371

* Bump twitter node version

* Remove extra whitespace

* Add catch for HTTP timeout

If the device drops off line then with no catch for the timeout
Node-RED will crash

Should fix #616
2020-02-19 12:21:44 +00:00
Dave Conway-Jones 3fff2c404e
Let LevelDB node handle json object (and binary) as well as text.
to close #626
2020-02-17 22:42:56 +00:00
dxdc a498bd16b5
Use latest release of node-prowl (#624) 2020-02-17 22:12:23 +00:00
Dave Conway-Jones 55f6609a4f
Fix email node timeout when triggered manually 2020-02-09 14:11:54 +00:00
Dave Conway-Jones bf089ec18c
bump mdns / discovery package 2020-02-04 19:12:43 +00:00
Dave Conway-Jones 03c4426189
add to mdns/discovery pre-reqs in readme 2020-02-04 19:09:53 +00:00
Dave Conway-Jones 5780b2a5c3
slight adjust email retry timeout 2020-01-31 21:46:42 +00:00
Dave Conway-Jones 90a00279c0
add note re criteria to email in node
and change x-red to html
2020-01-28 18:15:28 +00:00
Dave Conway-Jones a4844dc09c
remove smaz from catalogue 2020-01-28 18:12:15 +00:00
Dave Conway-Jones 878a709082
change pigpio text/x-red to text/html 2020-01-28 18:09:31 +00:00
Dave Conway-Jones f069788062
Fix Rbe menu option for NarrowbandEq
bump overall packages
2020-01-14 22:11:57 +00:00
Dave Conway-Jones c8370e6da5
make RBE info consistent with menu options
to close #620
2020-01-12 16:45:37 +00:00
Dave Conway-Jones d30ed78cb7
update sample to use test/html 2020-01-12 16:34:01 +00:00
Dave Conway-Jones f1ff7fe707
bump to catch PR re attachments and update libs 2020-01-08 09:26:46 +00:00
Kazuhito Yokoi 12be92e06f Unify file name for binary attachment in e-mail node (#619) 2020-01-08 09:13:05 +00:00
Dave Conway-Jones 9cc3d237fb
Update package.json 2020-01-04 10:29:36 +00:00
Ryoichi Obara 9478bfa14a [ja] Support i18n 28-tail node. (#615) 2020-01-04 10:25:35 +00:00
Dave Conway-Jones c5fed3fc4e
restore smpp node server field to config.
to close #613
2019-12-26 16:25:11 +00:00
Ryoichi Obara dda39a7867 Remove unused i18n key. (#614) 2019-12-26 15:52:56 +00:00
Dave Conway-Jones 54c52a7106
add comment re numerics to snmp set node. 2019-12-23 16:21:09 +00:00
Ryoichi Obara 698af48500 Fix sqlite repo link. (#612) 2019-12-10 15:24:58 +00:00
Nick O'Leary b1a80c9400
Revent senitment dependency to 2.1.0 2019-12-05 22:58:04 +00:00
Dave Conway-Jones 3d60aa4c00
bump sentiment, rbe, email, feedparser, twitter, tail nodes
Locale files moved out
2019-12-05 21:36:59 +00:00
Kazuhito Yokoi 870a2146c0 Move English help to en-US directory (#592)
* Move English help about e-mail node to en-US directory

* Move English help about rbe node to en-US directory

* Move English help about tail node to en-US directory

* Move English help about twitter node to en-US directory

* Move English help about feedparse node to en-US directory

* Move English help about sentiment node to en-US directory
2019-12-05 21:18:59 +00:00
Dave Conway-Jones 676ba58210
slight tidy to serialport PR and bump version
adds flags for fixing DSR, DTR, RTS, CTS
2019-12-04 15:06:40 +00:00
Dave Conway-Jones aa8dc4f7a1
Merge branch 'master' of https://github.com/node-red/node-red-nodes 2019-12-04 14:04:13 +00:00
d-tamm ae2d601b22 Add flow control switches to serialport (#579)
* Fix alignment of baud rate setting.

* Add flow control flags DTR and RTS.

* Add flags for flow control RTS and DTR.

* Add pin states for flow control flags

* Change pinstates to linestates

* Remove help text about DTR/RTS defaulting to low.

* Collect flow control setting into one single command.

* Add curly braces.

* Add more curly braces.

* Add CTS and DSR settings. Add default none option. Change settings layout for flow control.
2019-12-04 14:03:58 +00:00
Dave Conway-Jones 878f511d0e
Stop arduino nodes warning about MaxEmitters
when more than 10 nodes in use
2019-12-03 21:38:33 +00:00
Dave Conway-Jones 23f584268a
Fix serialport so can't report false addchar 2019-12-01 17:55:08 +00:00
Dave Conway-Jones 649ec33b80
tidy and republish WOL node 2019-11-25 14:30:42 +00:00
SillaRizzoli dfddf0645a Added UDP port option to node-red-node-wol (#606)
* Added udp port option

* Added UDP port validation and msg.udpport support
2019-11-25 14:17:36 +00:00
Dave Conway-Jones e814c676d2
bump pushover lib to pick up fix
to close #590
2019-11-13 21:53:58 +00:00
Dave Conway-Jones 61c0826261
update arduino node for node12 2019-11-13 21:52:01 +00:00
Dave Conway-Jones 0bef668028
fix button class and serial.list promise 2019-11-13 18:43:43 +00:00
Dave Conway-Jones 3ed1e72481
Bump serialport node to latest serialport lib 2019-11-13 13:31:41 +00:00
Dave Conway-Jones 8547f26a45
Fix sqlite repo link 2019-11-13 13:31:08 +00:00
Dave Conway-Jones 9f27cda34f
bump email version 2019-11-09 12:00:58 +00:00
Dave Conway-Jones 4c69d2277f
Merge branch 'master' of https://github.com/node-red/node-red-nodes 2019-11-09 12:00:07 +00:00
Hiroyuki Okada d53bd47f44 update mailparser & nodemailer (#599) 2019-11-09 11:58:53 +00:00
Dave Conway-Jones a146c8e28c
snmp set Add check if varbinds field may be empty 2019-11-06 09:30:46 +00:00
Dave Conway-Jones 17853b772e
Delete package-lock.json 2019-10-29 14:55:39 +00:00
Dave Conway-Jones 70a6b6b0ea
bump overall package.json versions 2019-10-28 17:50:20 +00:00
Dave Conway-Jones 150e7d5cde
bump package to include Ja translations 2019-10-28 17:45:31 +00:00
Dave Conway-Jones 735c54be8c
Merge branch 'master' of https://github.com/node-red/node-red-nodes 2019-10-28 17:41:25 +00:00
Ryoichi Obara 739b3e595c [ja] Support i18n 70-base64 node. (#591)
* [ja] Translate 70-base64 node.

* Fix PR review #591 "Buffer" -> "バッファ".

We have used Japanese katakana words of "buffer" in http-request and file-out nodes.

* Fix PR review #591 "Base64" -> "base64"

* Fix PR review #591 "Base64から文字列へデコード" -> "Base64から文字列へ変換"
2019-10-28 17:40:41 +00:00
Dave Conway-Jones 2ddabadbf2
bump leveldb package to 0.2 to include level 6.0 lib 2019-10-26 13:08:09 +01:00
Dave Conway-Jones b9cf6d88e9
bump ping package to 0.1 to include i18n 2019-10-26 13:07:44 +01:00
tmdoit 0f46364a55 Update level package in package.json (#588)
Update from 4.0.0 to 6.0.0 version. It fixes NR restarts (NR 502 errors) when trying to read from leveldb store after some time from writing.
2019-10-26 12:54:36 +01:00
Ryoichi Obara 97a1352afc [ja] Translate 88-ping help text. (#589) 2019-10-26 12:54:17 +01:00
Dave Conway-Jones ca88faa7ca
Fix arduino nodes servo/pwm output to reduce jitter
to close #584
2019-10-22 22:05:49 +01:00
Dave Conway-Jones 04daa5b97e
Let msgpack work on any msg property 2019-10-20 22:48:00 +01:00
Dave Conway-Jones e3ab387814
Move suncalc and timeswitch into time category 2019-10-20 22:43:32 +01:00
Dave Conway-Jones f2e28e715f
fix mysql node OkPacket handling
to close #583
2019-10-16 11:24:33 +01:00
Dave Conway-Jones b35daf6bb7
bump sqlite node deps for Node12 support 2019-10-12 11:37:44 +01:00
Dave Conway-Jones 27616df2dd
update feedparser test 2019-10-09 22:35:21 +01:00
Dave Conway-Jones 56e8df069d
knobble pushbullet test for now 2019-10-09 21:46:15 +01:00
Dave Conway-Jones 6583c43b01
bump package for tests 2019-10-09 21:43:48 +01:00
Dave Conway-Jones 3dfae60b2f
Fix pi-gpio pintable css 2019-10-06 11:59:13 +01:00
Dave Conway-Jones 4979ad8966
fix gpio node ok status label 2019-10-06 09:51:26 +01:00
Dave Conway-Jones b35de37ec1
bump markdown node library, and overal libs for test 2019-10-05 21:13:58 +01:00
Nick O'Leary 18f42be574
Fix snmp node to clone response before sending 2019-10-05 19:36:20 +01:00
Dave Conway-Jones aa2965f000
move serialport to new netwrok category (for 1.0) 2019-09-30 09:46:48 +01:00
Dave Conway-Jones 4168d48486
datagenerator - add space to label 2019-09-29 12:56:29 +01:00
Dave Conway-Jones 8c767709a5
fix serialport error message 2019-09-26 22:27:53 +01:00
Dave Conway-Jones a318dc56ff
better escape for node-red without done. 2019-09-26 13:39:25 +01:00
Dave Conway-Jones 1f0ab0937d
Add done/complete to email node
and fix .from field
2019-09-24 21:44:56 +01:00
Dave Conway-Jones e8a7af18d6
Tidy datagenerator, random and smaz nodes 2019-09-20 21:22:14 +01:00
Dave Conway-Jones 171f78ca5b
Add contributor to smooth node 2019-09-19 09:41:42 +01:00
Dave Conway-Jones 5b975d912b
Move Daemon to standard function category 2019-09-19 09:29:48 +01:00
Dave Conway-Jones 477b101b91
Update package.json
Bump What3 Words for PR with extra languages
2019-09-19 09:29:20 +01:00
Dave Conway-Jones d8782a133e
Merge branch 'master' of https://github.com/node-red/node-red-nodes 2019-09-19 09:27:47 +01:00
Takeshi Ueno 003655f1b3 update support languages (#578)
https://docs.what3words.com/api/v3/#available-languages
2019-09-19 09:27:07 +01:00
Dave Conway-Jones cabf2889e5
Bump Smooth node for PR and add output labels 2019-09-19 09:25:44 +01:00
Dave Conway-Jones 8bdc1529ca
Merge branch 'master' of https://github.com/node-red/node-red-nodes 2019-09-19 09:12:13 +01:00
Ola Tuvesson 38feb99072 Added "reduce" option to the Smooth function node (#577) 2019-09-19 09:11:23 +01:00
Dave Conway-Jones a266d372b2
Serial port only report close error once 2019-09-09 23:05:10 +01:00
Dave Conway-Jones 876c9a014e
add try catch to pushover node response 2019-09-08 15:30:49 +01:00
Dave Conway-Jones 1f0aa6908c
serialport addchar whenever needed - not only in char mode 2019-08-30 14:47:24 +01:00
Dave Conway-Jones b0c8b0f2c6
fix serialport additional char in request mode 2019-08-30 13:02:21 +01:00
Dave Conway-Jones 6682320c97
Add gmail access info to readme and info 2019-08-29 15:49:38 +01:00
Dave Conway-Jones d1cf309214
let tail node accept filename dynamically 2019-08-16 08:28:14 +01:00
zinen 78972a68ab Tail node add input filename (#557)
* Allow input

Added input point, removed requirement for data on data point 'filename' and added help text for new input parameter.

* Added filename parameter as an input

Handling of input msg add for parameter 'filename'. Monitoring will stop if no filename is defined either at the node level or as an input.

* Added 'state' to locale

Messages for node state added for en_US language

* Replaced messages with pointers to locale file

* Typo fixed

* Made inputs dynamic

Input bullet only available if filename is empty
2019-08-15 22:03:13 +01:00
Dave Conway-Jones e87c7947a8
Merge branch 'master' of https://github.com/node-red/node-red-nodes 2019-08-14 21:36:10 +01:00
Dave Conway-Jones 2e5b526c55
fix rbe edge case of sending when change = 0 in narrowband mode
and add test
to close #569
2019-08-14 21:35:45 +01:00
Nick O'Leary d20eaa1dce
Update forum link in pr template 2019-08-14 09:21:07 +01:00
Dave Conway-Jones 75df218a23
fix mcp3008 to close only the channels it has 2019-08-12 15:40:30 +01:00
Dave Conway-Jones e20cf97fce
A whole bunch of whitespace linting - no functional changes 2019-08-11 13:37:15 +01:00
Dave Conway-Jones 8e2352b08a
revert snmp lib back to previous working version. 2019-08-11 10:48:05 +01:00
Dave Conway-Jones bf02668228
Merge branch 'master' of https://github.com/node-red/node-red-nodes 2019-08-11 10:41:44 +01:00
Hiroyuki Okada c2efcc727c add test script (#560)
Thank you
2019-08-07 10:04:05 +01:00
Dave Conway-Jones 68178cd93c
Merge branch 'master' of https://github.com/node-red/node-red-nodes 2019-08-06 19:25:24 +01:00
Dave Conway-Jones d716924929
bump package level for boolean fix. 2019-08-03 19:55:00 +01:00
cymplecy 6efe530888 Send out (msg.payload converted to 1/0) instead of msg.payload (#562)
Re https://discourse.nodered.org/t/node-red-node-pi-gpiod-true-false-vs-0-1/13941/10?u=cymplecy
2019-08-03 19:52:50 +01:00
Dave Conway-Jones 5bd616eae6
Bump package to fix label PR 2019-07-20 09:59:48 +01:00
Hiroyuki Okada 42f411e25d fix label references (#558) 2019-07-20 09:58:13 +01:00
Dave Conway-Jones b644534f08
bump overall paclages for tests 2019-07-12 16:03:23 +01:00
Dave Conway-Jones 294e34da5c
bump markdown library package 2019-07-12 16:02:34 +01:00
Dave Conway-Jones f7fa242d4d
add ja translation for tail node 2019-07-12 16:02:12 +01:00
Dave Conway-Jones 55698e637d
Update tail node to accept/display regex.
To address Issue #555
2019-07-12 12:22:13 +01:00
Dave Conway-Jones 6030b45735
Add missing gpio en-US help file 2019-07-10 09:59:07 +01:00
Dave Conway-Jones 5c322cfd57
Add missing language files
bump package
2019-07-10 09:52:31 +01:00
Dave Conway-Jones 791321f1e9
fully disable gpio debounce if required 2019-07-10 09:52:09 +01:00
Dave Conway-Jones 52dcfdbd97
Add simple markdown example flow 2019-07-09 21:07:26 +01:00
Dave Conway-Jones fb96e552c2
bump lib versions 2019-07-06 19:32:06 +01:00
Dave Conway-Jones 84abd4bcb6
add tests for markdown node 2019-07-05 23:54:27 +01:00
Dave Conway-Jones fef734486f
Add initial markdown node
(not quite ready for prime time)
2019-07-05 18:53:25 +01:00
Dave Conway-Jones 1ea7885b58
bump wemo node
slight tidy of readme
2019-07-02 20:17:43 +01:00
Robert Leach d9ea55d3b2 Visually separated the list of control values from the example. (#552)
* Visually separated the list of control values from the example.

This will aid people who are quickly skimming the readme. There wasn't anything wrong in the doc. Everything would be clear if the reader is reading thoughtfully. But if they're skimming and looking for what to supply to the node for the first time, their eye is drawn to the JSON example.  Since many nodes accept JSON input, and supplying `{"state": "off"}`, `{"state": 0}`, or `{"state": 1}` works, it might take them awhile to realize their oversight.

* Clarification

* Update README.md

* Update README.md
2019-07-02 20:08:12 +01:00
Dave Conway-Jones 8cf3c8b990
remove node.done calls to tidy up
bump packages
2019-06-27 22:26:50 +01:00
Dave Conway-Jones f32f578c09
update gpio readme files 2019-06-24 22:19:24 +01:00
Dave Conway-Jones 822064ee0d
Merge branch 'master' of https://github.com/node-red/node-red-nodes 2019-06-24 21:58:03 +01:00
Dave Conway-Jones 8d5ec9b3f6
Add readme and better test for library 2019-06-24 21:57:57 +01:00
Nick O'Leary ff2801ca87
Remove rogue piece of text in random node html 2019-06-21 14:11:09 +01:00
Nick O'Leary cd21a5f3c8
Add twitter icon to twitter node to remove dependency on core icon 2019-06-21 14:09:50 +01:00
Dave Conway-Jones 587ff6b8e6
don't let through pusher error
to close #548
2019-06-18 08:52:55 +01:00
Dave Conway-Jones 88ee43186c
update email info to match actual implementation. 2019-06-14 16:37:31 -04:00
Luis Mario Domenzain 16130362fc email optionally uses criteria from message (#547)
* email optionally uses criteria from message

Allows for generation of detailed queries through flows when triggering an email
fetch in IMAP.

* use the same default as a new email node

When the criteria is set from a message, if there is no criteria use the same default as a new node.
2019-05-29 12:45:54 +01:00
Luis Mario Domenzain 877763aae9 use latest mailparser API (#546)
The API diverged between the original and mailparser-mit
2019-05-28 16:55:07 +01:00
Dave Conway-Jones b74aacd266
Let gpiod turn off output in servo mode by sending null or ""
to close #543
2019-05-26 15:39:55 +01:00
Dave Conway-Jones af4eefa5fb
revert changes to WOL node, bump package
to close #528
2019-05-26 14:52:19 +01:00
Dave Conway-Jones 2dfa1385c3
bump version for pr to get to npm 2019-05-26 14:24:45 +01:00
Hiroyuki Okada a226e6a308 add device filter (#545)
* add device filter

* fix jslint error of pushbullet

* fix pushbullet.js
2019-05-26 14:23:25 +01:00
Dave Conway-Jones f20d00a972
fix mailparser require 2019-05-23 12:35:13 +01:00
Dave Conway-Jones 3619971c57
bump email package for latest libs plus PR 2019-05-22 08:40:07 +01:00
Luis Mario Domenzain 75f9db8d8b add to email threading headers (#542)
and update documentation in all available locales

nodemailer already supports all of:
- msg.replyTo
- msg.inReplyTo
- msg.references
2019-05-21 19:30:32 +01:00
Dave Conway-Jones bd563a7217
update Pi gpio German translations 2019-05-20 21:07:53 +01:00
Dave Conway-Jones a172c8178d
Move Pi GPIO nodes to this repo 2019-05-20 19:35:05 +01:00
Dave Conway-Jones dcbe41bf83
Add SMAZ node (for simple text compression) 2019-05-20 19:33:37 +01:00
Dave Conway-Jones 2070a932be
let daemon node pass old msg properties 2019-05-20 19:32:11 +01:00
Dave Conway-Jones f5de5bc707
fix overall nodes test 2019-05-20 19:24:28 +01:00
Dave Conway-Jones 344d2bfdde
Fix serialport split on hex char
to close #541
2019-05-13 13:01:36 +01:00
Dave Conway-Jones e69d65667a
Bump sqlite and add wait times to readme 2019-04-25 12:40:49 +01:00
Dave Conway-Jones 002366844e
bit overoptimistic on package levels... backed off sentiment 2019-04-24 14:36:07 +01:00
Dave Conway-Jones c2273ac24b
bump packages 2019-04-24 14:27:55 +01:00
Dave Conway-Jones 741e0b7d53
try adding node12 2019-04-24 14:07:11 +01:00
Dave Conway-Jones cb6d147680
Arduino node tidy internal status 2019-04-24 14:07:01 +01:00
Dave Conway-Jones 8d45e85acf
arduino node - slight tidy, fix node declaration
to close #535
2019-04-15 17:28:55 +01:00
Dave Conway-Jones a475b67a19
reduce Arduino error messages on failed connect 2019-04-11 16:35:02 +01:00
Dave Conway-Jones d40f433332
remove extraneous debug messages from serialport 2019-04-11 16:33:17 +01:00
Dave Conway-Jones 41acbf5af7
Let Arduino node reconnect
To close #532
2019-04-10 09:57:16 +01:00
Dave Conway-Jones 0cb8e2594d
Merge branch 'master' of https://github.com/node-red/node-red-nodes 2019-04-10 09:01:11 +01:00
Dave Conway-Jones 6dd15d3335
add to email msg.status
and bump nodemailer version
2019-04-10 09:01:08 +01:00
Dave Conway-Jones 0b11d68c02
Let serialport wiatfor a char before starting output 2019-04-04 22:20:21 +01:00
Christoph Burgdorfer fa7ff87b49 Update Readme.md (#530)
Fix typo
2019-03-28 07:37:54 +00:00
Dave Conway-Jones 60af3ffa28
add libs to overall package for tests 2019-03-15 10:03:29 +00:00
Dave Conway-Jones a2269bb863
bump senitment node to include links to multi lang version 2019-03-15 10:03:05 +00:00
Dave Conway-Jones c1ac48d6a6
add multilang sentiment node as separate node 2019-03-15 10:01:27 +00:00
Dave Conway-Jones c691b4eaa1
update swearfilter 2019-03-14 14:04:06 +00:00
Dave Conway-Jones 3d12a5318f
fix pi-gpiod labels 2019-03-14 14:00:40 +00:00
Dave Conway-Jones 8c91f5c0d8
revert sentiment node to English only to save loads of space
both in memory and on disk
2019-03-13 14:25:23 +00:00
Dave Conway-Jones df24e56de8
fix xmpp node stanzas from 2019-03-06 17:46:28 +00:00
Dave Conway-Jones b91f61d56f
Add serialport request node to readme (docs only) 2019-03-06 17:45:45 +00:00
Dave Conway-Jones 8f5c8c2ad8
bump package.json 2019-03-06 17:44:58 +00:00
Dave Conway-Jones e8ee0a1801
fix datagenerator readme 2019-03-06 17:44:06 +00:00
Dave Conway-Jones 9bfce43b1f
Bump mdns package version for discovery node 2019-02-27 21:12:51 +00:00
Dave Conway-Jones 1f8ab3ebb7
Update email node readme to be less confusing
Bump pre-reqs as well
2019-02-24 23:07:38 +00:00
Dave Conway-Jones 3d06102d1e
Clarify tha snmp node oids must be numeric
docs only
2019-02-15 22:15:33 +00:00
Dave Conway-Jones c1650b5d47
Bump arduino node to latest firmata and serialport
shoudl work better with nodejs 10
2019-02-12 22:44:21 +00:00
Dave Conway-Jones 602586ad82
Bump serialport to latest 0.7 2019-02-12 13:31:06 +00:00
Dave Conway-Jones b08b12865b
Fixup email PR and push to npm 2019-02-11 20:10:31 +00:00
Wolfgang Rathgeb aa684240d8 add option to set criteria witch type of emails should be requested (#519) 2019-02-11 19:26:45 +00:00
Dave Conway-Jones 31b9cc1f61
bump what3words package on npm 2019-02-11 19:23:12 +00:00
Sam Machin ac2f9ad8c6 Fixed What3Words words>location method (#518)
* Fixed What3Words words>location method

* Update what3words.js

added fix to Oneword
2019-02-11 19:20:13 +00:00
Dave Conway-Jones 81781539f7
Merge branch 'master' of https://github.com/node-red/node-red-nodes 2019-02-01 22:15:24 +00:00
Dave Conway-Jones d153034232
slow down status updates from mysql to better handle fast updates
to close #515
2019-02-01 22:15:22 +00:00
tmdoit 52bd3c2873 [SQLite] Add help text in sqlitedb template (#503)
About path to the database file.
2019-02-01 08:57:01 +00:00
Dave Conway-Jones 9f0b46a9e1
Merge branch 'master' of https://github.com/node-red/node-red-nodes 2019-02-01 00:00:58 +00:00
Dave Conway-Jones 88f6784267
Stop email node producing duplicates on reconnect
to close #514
2019-02-01 00:00:16 +00:00
Dave Conway-Jones 2c8e4780e1
Allow email node to fetch node if required
to close #513
2019-01-31 21:00:31 +00:00
Nick O'Leary aa9dce207f
Update CONTRIBUTING.md 2018-12-28 19:55:55 +00:00
Dave Conway-Jones 2ca330fcb8
sqlite small doc update, and bump dep library 2018-12-19 19:37:13 +00:00
Damo ca0b01d10e Pushover image attachment feature (#509)
* Bugfix: node defaults not applying to messages

* Implemented pushover attachment feature
2018-12-13 09:33:50 +00:00
Dave Conway-Jones 73e4ae574c
Set WOL node to use more generic broadcast address byt default 2018-12-09 11:01:18 +00:00
Dave Conway-Jones 7113598098
Bump email deps 2018-12-07 23:30:57 +00:00
Dave Conway-Jones 20b2eac830
add sentiment and tail node translations
bump versions on npm
2018-12-07 17:11:09 +00:00
Dave Conway-Jones d0f36dcda1
update ping node readme
(how to run in snap)
2018-12-07 16:55:16 +00:00
Dave Conway-Jones 89d7853891
Better error catching in ping node for spawn errors... 2018-12-05 13:46:08 +00:00
Dave Conway-Jones 739e8cd9b6
bump stomp package to pick up PR fix for bad msg reuse 2018-11-28 18:42:44 +00:00
Arnaud Marchand d73d5f1af3 Save point (#506) 2018-11-28 18:39:52 +00:00
Dave Conway-Jones b75f12aced
piSRF - better handle timeouts, closing 2018-11-28 09:18:18 +00:00
Dave Conway-Jones b34338357f
neopixel - reallign tabs... 2018-11-26 08:30:22 +00:00
cymplecy 174c18a289 Update neopix.py (#505)
Remove waits inside loops if wait time == 0
2018-11-26 08:27:58 +00:00
Dave Conway-Jones 7f44a2af3d
Neopixel Add 0mS timeout option for instant updates
Thanks @cymplecy
2018-11-25 18:44:01 +00:00
Dave Conway-Jones f1066285ae
add some more tests to rbe 2018-11-11 22:36:55 +00:00
Dave Conway-Jones e1e5432ac6
revert srf node to not use edges
seems more reliable to me... :-)
2018-11-11 22:36:42 +00:00
Dave Conway-Jones 5f22603beb
Email node - Catch bad IMAP folder error to close #495 2018-10-26 17:00:27 +01:00
Dave Conway-Jones c835fe7cad
fix daemon node autorun
to close #494
2018-10-24 21:54:13 +01:00
Dave Conway-Jones a9a4ef9bf9
bump rbe, email, twitter nodes 2018-10-24 15:31:11 +01:00
Kazuhito Yokoi 8eaab69d04 Update Japanese translation for twitter node (#500) 2018-10-24 15:27:39 +01:00
Dave Conway-Jones 5b34702ac4
Add Tail node as separate node package - adds windows support 2018-10-24 15:08:42 +01:00
Kazuhito Yokoi 425f5c151f Use words and URL in new Twitter portal (#498) 2018-10-24 12:31:14 +01:00
Kazuhito Yokoi f97a59b3e3 Update Japanese messages (#499)
* Update Japanese messages

* Fix URL
2018-10-24 12:28:38 +01:00
Dave Conway-Jones f74f3402e3
let twitter node DM using D or d
to close #493
2018-10-01 17:31:18 +01:00
Dave Conway-Jones 6540439e5f
Further XMPP tidy - more accurate from field - more docs. 2018-09-29 15:17:18 +01:00
Dave Conway-Jones 7bd255a341
better filtering for XMPP messages, stop history when joining rooms 2018-09-28 21:42:36 +01:00
Dave Conway-Jones b856ee6439
Give XMPP node a serious kicking
try to sort out sharing single connections and better status
To close #438 and to close #492
2018-09-28 14:59:22 +01:00
Nick O'Leary 1f34239fbb
Merge branch 'master' of github.com:node-red/node-red-nodes 2018-09-26 16:06:38 +01:00
Nick O'Leary 010e8aa9b3
Fixup sensehat to not use sudo if not needed 2018-09-26 16:06:16 +01:00
Dave Conway-Jones 8480c42d87
update overal packages 2018-09-24 21:12:23 +01:00
Dave Conway-Jones 5dbeb23671
fix random readme 2018-09-24 20:03:23 +01:00
Dave Conway-Jones d32f11910b
clarify random node info language 2018-09-24 19:40:33 +01:00
Dave Conway-Jones b0d98cca01
check for correct version of neopixel library 2018-09-23 20:32:11 +01:00
Dave Conway-Jones 23ba609653
Add SPIdev choice to mcpxxxx node 2018-09-21 13:53:08 +01:00
Dave Conway-Jones eae67c7a6c
bump pushover packe for docs pr 2018-09-17 20:00:45 +01:00
Paul 7ca806f4d1 Update Pushover docs to include msg.sound (#491)
* Add msg.sound to node info

* Add msg.sound option to the readme
2018-09-17 19:58:24 +01:00
Dave Conway-Jones 15cab5a381
feedparser Add correct accept headers
to fix #489
2018-09-14 16:10:53 +01:00
Dave Conway-Jones a5f29e3445
bump wake on lan package 2018-09-13 12:00:53 -04:00
rappsi 8d77028b4a Update 39-wol.js (#488)
allow lowwercase letters in MAC adress
2018-09-13 11:53:50 -04:00
Dave Conway-Jones a893affbf4
update package.json 2018-09-12 17:49:07 -04:00
Dave Conway-Jones 28b143f0bf
move to MIT version of mailparser 2018-09-11 09:09:01 -04:00
Dave Conway-Jones 8acc5064d0
update notify package to use a more cross platform library 2018-09-10 11:37:20 -04:00
Dave Conway-Jones 949bbe95cd
couple of file permissions and rm node6 2018-09-06 21:33:14 +01:00
Dave Conway-Jones a2b9097613
Email node - report when on old node.js 2018-09-04 18:51:20 +01:00
Dave Conway-Jones 649f9f2fbf
Bump email node for pr attachment errors fix 2018-09-03 20:06:36 +01:00
Tom Brusehaver 337588e7ab Fix for Email In Node Crashed Node-RED (#471)
When attachments aren't correct.
2018-09-03 19:56:36 +01:00
Dave Conway-Jones 52df7cb30f
Fix email msg cloning
to close #442
to close  #461
2018-08-30 13:05:39 +01:00
Dave Conway-Jones a94157efe6
sqlite - fix fixed statement check 2018-08-24 15:23:37 +01:00
Dave Conway-Jones c59c05c693
Daemon - allow manual start rather than always auto
to close #479
2018-08-23 08:57:15 +01:00
Dave Conway-Jones 6d36f5db8a
sqlite - add test extension - half.c 2018-08-23 08:55:51 +01:00
Dave Conway-Jones 0b65cd8652
sqlite - better handle extensions timing 2018-08-22 23:47:03 +01:00
Dave Conway-Jones 665a8666ab
Merge branch 'master' of https://github.com/node-red/node-red-nodes 2018-08-22 13:58:58 +01:00
Dave Conway-Jones 1b0f573f4e
let sqlite add extensions 2018-08-22 13:58:55 +01:00
Schreck1985 45e4c6d9d4 Node red mail usetls (#480)
* Default value for tls, checking if tls is set to false
2018-08-22 13:57:42 +01:00
Nick O'Leary 35cbcb3345
Reset since_id if twitter tells us its invalid 2018-08-17 09:18:53 +01:00
Nick O'Leary 903a123049
Reset twitter polling on any api errors 2018-08-16 14:45:54 +01:00
Dave Conway-Jones 85ddffb98f
Ensure stomp retconnect retry default
to close #478
2018-08-15 22:17:32 +01:00
Dave Conway-Jones d1eaec49c8
and finally 2018-08-15 22:01:52 +01:00
Dave Conway-Jones 68ea7f0ff2
slight reorder 2018-08-15 21:50:59 +01:00
Dave Conway-Jones 94d18836c9
really tidy that .jshintrc 2018-08-15 21:40:59 +01:00
Dave Conway-Jones 5394991e80
and fix comma 2018-08-15 21:35:09 +01:00
Dave Conway-Jones 5cf3725b66
Merge branch 'master' of https://github.com/node-red/node-red-nodes 2018-08-15 21:33:53 +01:00
Dave Conway-Jones 6fd3a1b11d
Allow es6 2018-08-15 21:33:40 +01:00
Nick O'Leary 42cd6131b2
big twitter node update for api changes 2018-08-15 15:23:12 +01:00
Dave Conway-Jones 6613513d64
bump unicornhat package 2018-08-15 14:28:50 +01:00
cclauss e57223f1a8 Run flake8 linter on python code (#474)
* Run-flake8-linter-on-Python-code

* Remove hardware/unicorn/scripts/checklib.js
2018-08-15 14:18:33 +01:00
Dave Conway-Jones 6793fd2596
Don't allow node10 to fail 2018-08-15 13:59:17 +01:00
Dave Conway-Jones 120f88ef92
add lock file 2018-08-15 13:54:19 +01:00
Dave Conway-Jones 8aa4e49399
ensure npm up to date 2018-08-15 13:37:28 +01:00
Dave Conway-Jones 4c555db31e
Add node10 to travis but allow fail for now 2018-08-15 13:22:24 +01:00
Dave Conway-Jones 88574c71c9
bump pushover node version 2018-08-14 11:40:49 +01:00
Dave Conway-Jones 493061e6f0
bump mysql lib version 2018-08-13 12:30:52 +01:00
tmdoit 9c9af2952c Update to the latest mysql package (#476)
Updating from mysql 2.13 to 2.16 fixed for me a problem with error msg "Error: pool is closed" produced every few seconds in NR debug window.
2018-08-13 12:29:42 +01:00
cowchimp 771a49a8b0 support HTML-mode in Pushover node #467 (#468)
* support HTML-mode in Pushover node #467

* drop option to set whether Pushover uses HTML mode based on incoming node msg
2018-08-13 11:17:51 +01:00
Dave Conway-Jones b94e3eb5fd
bump packages with python 2/3 fix 2018-08-12 22:23:19 +01:00
cclauss 8fe2478a0b Define raw_input() in Python 3 (#473)
Many thanks
2018-08-12 18:58:11 +01:00
Dave Conway-Jones 335c46ac06
remove node10 test for now 2018-08-12 16:17:19 +01:00
Dave Conway-Jones ee2dc00ca6
update package.json deps 2018-08-12 16:15:04 +01:00
Dave Conway-Jones ff02114c67
add multilang-sentiment to dev deps for test 2018-08-12 16:10:22 +01:00
Dave Conway-Jones 73a7b2bc41
bump serialport version 2018-08-11 14:06:25 +01:00
Dave Conway-Jones 211988017f
Let sqlite open RO as well as RW
Also better reuse of connection object
2018-08-11 14:03:16 +01:00
Dave Conway-Jones f3b0e2277d
update blinkstick links to colors
To close #427
2018-08-11 14:00:26 +01:00
Dave Conway-Jones 50fc196c6f
Add multilingual sentiment node
(but not publish - yet)
2018-07-19 12:39:07 +01:00
Dave Conway-Jones 93584d8071
Bump sqlite package 2018-07-19 12:38:16 +01:00
tmdoit e308b0c1f9 Add support for batch of SQL statements (#466)
* Add support for batch of SQL statements
2018-07-19 12:33:43 +01:00
Dave Conway-Jones 911f739005
fix suncalc not handling summer nights.
to Close #463
2018-07-17 10:24:40 +01:00
Dave Conway-Jones 8f83e471b8
let snmp nodes specify optional :port
to close #462
2018-07-17 09:41:52 +01:00
iurly 27a1038993 Serial request (#426)
* serial: simplify serialPool.get

serialPool.get() has a lot of arguments.
Just pass the whole serialConfig object instead.
Also introduce early termination to remove one level of indentation.
(Just set your diff tool to ignore all whitespace changes to see
how very little this patch changes)

* serial: move splitting logic onto serialPool

All SerialIn and SerialOut nodes for a given port
share the same splitting logic as it is indeed
set by the common configuration node.

Move the code from SerialIn into serialPool so that
it can be reused by the serial request node.
Notice how the 'data' event will no longer carry
single bytes, but the whole payload instead.

Also move the output encoding logic into serialPool.

* serial: add serial request node

Add a "serial request" node to handle simple request/response
protocols. This node allows for multiple instances, all
sharing the same underlying device.
Responses coming from the serial line will only be propagated
to the output of the node where the request was originally received
(contrary to the "serial in" nodes which all emit the data
received from the serial line).

Every request received as an input to the node, is transmitted
to the serial line, and a matching response must be received
before the next one can be transmitted.
Any input message received in the meantime is internally enqueued.

The node is essentially a merge of serial in and serial out.
It shares the same configuration with serial in and serial out
for any given port and will not affect the behavior of the
existing nodes.
This means you can use, alongside with the request node:
- as many serial in nodes as you want -- e.g. to "sniff"
- serial out to inject mailicious/tampering data onto the serial
  line, skipping the queueing mechanism

* serial request: provide some visual feedback on the node

add status indication:
- yellow "waiting" when a message is enqueued for sending
- green "OK" after an answer is received
- red "timeout" after a timeout occurs

More sofisticated output would include an indication of the number of messages
enqueued and the actual timeout remaining after sending.

* serial request: make default response timeout configurable

Notice it's a global setting (i.e. stored in the configuration node)
as opposed to per-node, but it can be overridden by setting msg.timeout.

* serial request: cosmetic changes

- added documentation about msg.port
- timeout field made wider so to accommodate default value of 10000ms
- replaced harcoded text with localizable strings for
  "waiting" and "timeout" messages

* serial: cleanup: remove node.tout

this was probably some leftover code from previous implementations.
Now all timeouts are handled within the connection objects.

* serial: cleanup: set obj.tout to null after clearing it

clearing a Timeout without setting it back to null *might* have
adverse effects on later code which would check its null-ity.
Let's just do it.

* serial: cosmetic: add some comments

* serial request: fix "split on timeout" case

In the case of "split on timeout" case, we're reusing the same
.tout for two different purposes:
1) to send a timeout message, in case no answer is received at all [request]
2) to split messages, after receiving the first character [in+request]

So in the case of serial request, checking whether .tout is already
set is no longer a valid condition for 2).
Let's just check whether i === 1, and clear the timeout set up by 1)
if it's already there.

* serial: add "split on silence" behavior

add a fourth logic to split incoming data into messages.
The existing "split on timeout" logic starts the timeout upon
reception of the first character.
This might lead to unwanted behavior if for instance Node-RED is
restarted, as data might accumulate into OS buffers (see #410).
A different logic might be to only emit a message when enough time
has passed, without any new data being received (line silent), a.k.a.
interbyte timeout.
2018-07-09 11:14:08 +01:00
Dave Conway-Jones b4fca36ab6
let python sub processes use python3 2018-07-07 19:24:35 +01:00
Dave Conway-Jones 88f7f52f99
Add pullup option to Arduino digital input
to Close #455
2018-06-27 21:36:06 +01:00
Dave Conway-Jones 76a221919a
Update Readme to remove NMA node
and add 2018 to serialport copyright
2018-06-13 22:13:22 +01:00
Dave Conway-Jones 044d008e65
bump neopixel node version for npm
to go with pr #453
2018-06-13 22:12:33 +01:00
cymplecy c511cf6ae7 Change DMA from 5 to 10 (#453)
I mentioned this a while ago
Following changes to Pi firmware/kernel, the DMA channel 5 is not reliable for use anymore.  Other repositories have changed to use channel 10.  https://github.com/jgarff/rpi_ws281x/pull/266/commits

 I've been running 3 of my Pi on DMA 10 (1 new Pi3B+ and 2 older PiZeros running Jessie) for 2 months now without any issues so I'm making this pull request now
2018-06-13 22:09:55 +01:00
Nick O'Leary 1c1b53425f
Fix tweet with image 2018-06-08 12:55:19 +01:00
Nick O'Leary aaf93ab587
Handle upgrade from old to new twitter node better 2018-06-07 12:07:01 +01:00
Nick O'Leary 235831b464
Major update to twitter node for auth changes 2018-06-07 11:25:25 +01:00
Andrew Allen e91f3704fc fix twilio global credentials (#288) 2018-06-02 13:44:04 +01:00
Dave Conway-Jones a21e952d93
Deprecate NMA node prior to deletion 2018-06-02 13:41:22 +01:00
Dave Conway-Jones 997458c78e
Fix serial port add char logic
to close #450
2018-06-02 13:24:57 +01:00
Dave Conway-Jones 4d0360d94a
add done to sqlite close 2018-05-30 11:17:15 +01:00
Dave Conway-Jones 6b2b0738cb
bump sense hat package 2018-05-30 11:16:38 +01:00
Dave Conway-Jones 40c62db47b
bump levels node reqs 2018-05-30 11:15:11 +01:00
juggledad 318a75c41b Update the 'Node Help' for the pi-sense-hat node (#447)
*  Update the 'Node Help'

Expanded the explanation for using multiple commands.
Provided examples for Rotate, Flip and Display.

Added examples for rotate, flip and screen brightness and added line to multiple messages explaination.

changed the Flip format from 'R' to 'F'
2018-05-30 11:12:26 +01:00
Nick O'Leary 38e469464f
Add deprecation warnings to twitter node 2018-05-25 13:16:34 +01:00
Kazuhito Yokoi 6ebe49cd70 Fix space bug in Japanese node's information (#445) 2018-05-24 10:24:58 +01:00
Dave Conway-Jones 989c7147cb
lint catch es6 escapes in core nodes
to fix twitter node and sqlite node
2018-05-18 18:40:14 +01:00
Dave Conway-Jones 44b4f44988
update Issue template to point at discourse 2018-05-18 13:47:42 +01:00
Dave Conway-Jones a3d4f01587
clean up arduino node readme. Add hint re rate limit or rbe. 2018-05-13 17:26:32 +01:00
Dave Conway-Jones dca9dfccc1
bump serial port and arduino nodes 2018-05-09 22:04:29 +01:00
Dave Conway-Jones 5b69ab66aa
make daemon node kill/term/int selectable 2018-05-09 09:42:51 +01:00
Dave Conway-Jones 31cee79545
fix typo in intel readme 2018-05-07 09:40:42 +01:00
Dave Conway-Jones 805b53535a
make Node-red a dev rep 2018-05-04 19:11:49 +01:00
Dave Conway-Jones 77ecd76867
tidy package.json 2018-05-03 23:01:52 +01:00
Dave Conway-Jones 5d5e82c37b
clean out travis.yml 2018-05-03 22:51:07 +01:00
Dave Conway-Jones a03b060c9a
mixup tests for ninon v5 2018-05-02 13:53:04 +01:00
Dave Conway-Jones ba158a7745
revert sinon update 2018-05-02 12:21:26 +01:00
Dave Conway-Jones 34a1351edc
tidy overall readme 2018-05-02 10:11:49 +01:00
Dave Conway-Jones d89f5c6be0
update some other dependencies 2018-05-01 22:39:05 +01:00
Dave Conway-Jones ae6cfcec2d
update readme for email node 2018-05-01 22:06:54 +01:00
Christopher Hiller 360d71f84b upgrade nodemailer; closes #439 (#440)
* upgrade nodemailer
- update documentation(s)
- add/update `package-lock.json`(s)
- add `engines` field(s)
* remove Node.js v4 from build matrix
* bump major version of node-red-node-email to v1.0.0
2018-05-01 21:31:22 +01:00
Dave Conway-Jones 2e8ec73ef0
Readme typo
remove package-lock.json
2018-05-01 18:00:43 +01:00
Dave Conway-Jones 722a5121ae
Delete package-lock.json 2018-05-01 17:57:55 +01:00
Dave Conway-Jones 05f41f3df8
bump version thanks to Mike adding helper
update readme slightly
2018-05-01 17:45:07 +01:00
Mike Blackstock f275ea0bac use new test-helper add test to package.json (#441)
* use new test-helper add test to package.json

* try to fix travis build with new test helper

* install coveralls globally

* work around travis issue with adding node_modules/.bin in PATH
2018-05-01 17:33:05 +01:00
Dave Conway-Jones 5e0874ab44
Add stoppable to dev deps 2018-04-29 22:16:18 +01:00
Dave Conway-Jones 6a28ecfbc2
Fixup Base64 node and add better tests
Revert correct <-> behaviour, make encoding info clearer, added type
checking - to close #401 and close #437
2018-04-29 17:36:18 +01:00
Dave Conway-Jones 5019f68c9c
let Arduino node only send changes of values as stated in docs. 2018-04-29 17:36:18 +01:00
Nick O'Leary e57e2545d6
Add github templates 2018-04-19 13:19:52 +01:00
Dave Conway-Jones 8f17072176
fix unicorn hat command check 2018-04-18 17:45:19 +01:00
Nick O'Leary f033a383b9
Ensure email refresh interval doesn't exceed setInterval limit 2018-04-16 13:35:05 +01:00
Dave Conway-Jones 5358b29255
fix broken neopixel merge 2018-04-15 17:59:30 +01:00
Dave Conway-Jones acc2dc1a14
Allow a bunch of Pi nodes to be visible but not active when used not on a Pi 2018-04-15 11:24:56 +01:00
cymplecy ace67b0154 Neopixel node:Remove node.warn message and update README.md (#433) 2018-04-15 11:09:32 +01:00
cymplecy 0f55fc160e Add Gamma flag and Brightness control to node-red-node-pi-neopixel (#431) 2018-04-14 23:17:12 +01:00
Dave Conway-Jones 025f97206f
tidy some labels 2018-04-14 22:43:14 +01:00
borpin 99b83ea4bd io/emoncms - Modify HTTP Timeout (#430)
* Modify HTTP timeout

Increase the HTTP Timeout values from 1000 to 6000.
Modify error message.
2018-04-10 12:19:41 +01:00
Dave Conway-Jones d28c5291c0
bump daemon node package 2018-03-30 14:53:25 +01:00
Dave Conway-Jones 4679077760
Make extra node names more consistent i18n wise 2018-03-30 14:50:51 +01:00
Dave Conway-Jones b8b5a92ad1
update xmpp to keep working with open fire 2018-03-29 17:39:46 +01:00
Dave Conway-Jones 84a445d9d8
bump twitter node 2018-03-29 09:44:37 +01:00
eRudy 17744a51c0 temporary solution for direct messages (#415)
* DMs are coming back :)
2018-03-29 09:42:22 +01:00
Dave Conway-Jones 4a8f071c91
bump email, feed parser, twilio, sqlite, rbe packages 2018-03-29 09:34:31 +01:00
borpin cf48039427 Improve HTTP response handling and error reporting (#419)
Improve HTTP response handling and error reporting of emoncms node
2018-03-29 08:53:12 +01:00
Marc Buils 9ea27f94ef Upgrade to Twilio sdk v3 (#411) 2018-03-29 08:50:51 +01:00
Kazuhito Yokoi da96f9e869 Improve Japanese translation in rbe node (#422)
* Improve Japanese translation

* Empty commit to run travis again
2018-03-29 08:49:42 +01:00
Hiroyasu Nishiyama 8ea3969714 Japanese translation of info text for twitter/feedparse/email/rbe nodes (#421)
* add Japanese info text of twitter node

* add Japanese info text of feedparse node

* add Japanese info text of email node

* add Japanese info text of rbe node

* minor fix of Japanese info text of email node

* minor fix of Japanese info text of email node
2018-03-29 08:49:30 +01:00
Dave Conway-Jones 3decff0b1a
Bump sqlite node (now allows prepared statements) 2018-03-20 19:08:38 +00:00
Dave Conway-Jones 74d51f5a79
Tiny tidy of email node
really needs a proper re-write…
2018-03-20 19:04:42 +00:00
Dave Conway-Jones 34199142dd
Fix piLCD line 3 and 4 addressing
ti address #416
2018-03-20 19:04:42 +00:00
atsage babff3ff26 Added a few SQL modes (#360) 2018-03-20 19:04:23 +00:00
Dave Conway-Jones b9da5d87d8
slight increase in timings to sort pilcd
To address issue #413
2018-03-15 08:35:45 +00:00
Dave Conway-Jones f92f16fd08
Add warning of too large interval for feedparser
To close #408
2018-03-11 21:10:37 +00:00
Dave Conway-Jones 0253f67882
Add msg.port to serial port input node 2018-03-01 18:21:22 +00:00
Dave Conway-Jones 26458522dd
bump mongo node for new docs 2018-03-01 16:39:00 +00:00
Avraham H 6306587cce [ mongo documentation fixes]: fixing syntax (#412) 2018-03-01 16:33:37 +00:00
Dave Conway-Jones 127fb6ac0c
clarify serial port timeout doc info 2018-02-19 19:21:52 +00:00
Dave Conway-Jones c1d835c1ca
Tidy up gpiod node tips 2018-02-15 14:43:29 +00:00
Dave Conway-Jones 17614843da
add note re docker to pigpiod node 2018-02-15 14:04:03 +00:00
Dave Conway-Jones bb3d302bcb
Add try/catch to daemon 2018-02-09 12:51:42 +00:00
Dave Conway-Jones 3b20b804ae
add some icon love to extra parser nodes
base64, msgpack, geohash and what3words
2018-02-08 15:52:30 +00:00
Dave Conway-Jones 559edcf0f8
fix long standing rbe % change bug (should be abs change)
to close #312
2018-02-08 15:51:57 +00:00
Dave Conway-Jones a89379c631
add android platform to ping node
to close #402 by hand
2018-02-08 15:44:38 +00:00
Dave Conway-Jones f9ac210a41
Add fixed conversion modes to base64 node
to close #401
2018-02-03 15:08:05 +00:00
Dave Conway-Jones b406b32909
finish msg.property selector for geohash, msgpack and w3w 2018-02-02 23:38:26 +00:00
Dave Conway-Jones b2de928860
update rest of parsers to allow property to be selected 2018-01-31 11:18:30 +00:00
Dave Conway-Jones f664fa0e31
pin back net-snap version 2018-01-31 10:33:27 +00:00
Dave Conway-Jones 6da469e49b
fix missing timeout variable from SNMP node 2018-01-30 21:57:44 +00:00
Dave Conway-Jones be79b6a1c6
add msg.property option to rbe, randon, smooth and base64 nodes 2018-01-30 21:42:14 +00:00
Dave Conway-Jones 4ed7ab590d
reinstate feed parser useragent 2018-01-29 09:16:35 +00:00
Dave Conway-Jones b3fd755527
Add timeout option to snap nodes
to address #397
2018-01-28 17:50:41 +00:00
Dave Conway-Jones 17886b7296
don't add time value to output when not asked for
to Close #399
2018-01-28 17:00:48 +00:00
Dave Conway-Jones d8263eab25
tidy of travis to try to get nodes tests to pass 2018-01-21 16:24:41 +00:00
Dave Conway-Jones fe0e5cc62b
correct mcp3008 node to call methods correctly
to close #396
2018-01-21 14:39:44 +00:00
Dave Conway-Jones ecb545cf7e
Add device choice support to map node
to close #394
2018-01-13 16:42:22 +00:00
Dave Conway-Jones 9f290f651e
tidy and bump exif package to npm 2018-01-07 15:43:37 +00:00
Dave Conway-Jones 65c3c9c2ff
bump emoncms package to npm 2018-01-07 15:43:28 +00:00
borpin dbea8a484a Updates to match API changes (#392)
* Updates to match API changes

Update to the node to match the server API changes. An attempt has been made to leave a legacy path for existing installations that may have not updated the server side.

* Updated following comments.

Update following comments.

Output removed and node.warn or error used.

oneeditprepare added.

Name moved to last item.

In addition, a check added to ensure nodegroup has valid value.

Question: I have added a 'return' as I do not want data posted if there is not a valid nodegroup.  Is this the best way to exit the function?  Always taught that multiple exits was a bad idea.  I wondered about raising an error / exception and then catching it but not sure how to do that.

* Update documentation for revised node
2018-01-07 15:37:28 +00:00
JJ Cantillon 29694dd2cb make exif node add exif data even if gps missing (#393) 2018-01-07 15:26:57 +00:00
Dave Conway-Jones 032a9d6435
add reset capability to rue node 2017-12-20 16:28:32 +00:00
Dave Conway-Jones 51124f456d
bump serial package 2017-12-18 18:32:51 +00:00
1ft-seabass 98dd2b858f Update 25-serial.json (#381)
For serial.label.serial , I adapted the name to the current jp translate rule.
2017-12-18 18:31:50 +00:00
Stephen Houser f1c005707d Multiple NIC support for WeMo devices (#382)
* Update version of node-ssdp and use explicitSocketBind option to
work with multiple network interface cards. Based on discussion
in [node-ssdp issue #34](https://github.com/diversario/node-ssdp/issues/34)

* Bumping the version number
2017-12-02 10:54:47 +00:00
Nathanaël Lécaudé 22888cd8bd node-red-node-discovery: Add status information (#383) 2017-11-30 23:34:49 +00:00
Dave Conway-Jones 8c0c7ee272
bump serial port package 2017-11-23 20:58:56 +00:00
1ft-seabass d11e8d5b15 Update ja 25-serial.json (#377)
* Add English messages of serialport node
2017-11-23 21:58:10 +01:00
Nathanaël Lécaudé c153024c91 Corrections to node-red-node-discovery (#380)
1- Ensure we stop advertising before creating a new advertiser if the object exists
2- Allow bool false to stop advertising
3- Documentation correction (state is in msg.payload, not in msg)
2017-11-23 21:53:44 +01:00
Dave Conway-Jones ab99139ce3
bump emoncms version for nom 2017-11-18 23:34:39 +00:00
4f96a64d 72f6c03e00 changed nodegroup field validation (#376)
Allows letters, numbers, spaces, and ( _ . - ) to more closely align with node names in emoncms.
2017-11-18 23:33:05 +00:00
Dave Conway-Jones 0f83c8af54
update travis.yml to try to resolve grunt 2017-11-15 10:53:31 +00:00
Dave Conway-Jones 5018a3625f
bump package versions for ping, msg pack and base64 2017-11-10 15:25:49 +00:00
Kazuhito Yokoi 377cfbba92 Modify ping, base64 and msgpack node to support multi-language (#364)
Thanks again Yokoi-san

* Internationalize ping node

* Internationalize base64 node

* Internationalize msgpack node
2017-11-10 15:17:05 +00:00
Ben Hardill 482cfea1de Bump twitter to 280 chars (#372)
To close #371 

Thanks @hardillb
2017-11-10 15:15:53 +00:00
Dave Conway-Jones 4959d3854f
Friday 3 2017-11-10 13:38:31 +00:00
Dave Conway-Jones 34a4a1b1ea
Friday 2 2017-11-10 13:21:07 +00:00
Dave Conway-Jones ba3d6f33ac
friday testing time 2017-11-10 12:59:39 +00:00
Dave Conway-Jones 2e9f2f856e
bump arduino node format support
to include later serial port 4.x
2017-11-07 23:03:41 +00:00
Dave Conway-Jones 269f7a5272
try again 2017-11-07 10:31:33 +00:00
Dave Conway-Jones ddf20fda25
once again 2017-11-07 10:09:49 +00:00
Dave Conway-Jones 4de9e5d84a
try not global 2017-11-07 09:49:12 +00:00
Dave Conway-Jones c013cfe1a6
Fix travis 2017-11-07 09:00:45 +00:00
Dave Conway-Jones 5b6b0c132a
clean up Gruntfile to be more consistent 2017-11-06 22:53:40 +00:00
Dave Conway-Jones 78a994e439
tidy package.json and grunt file 2017-11-06 22:17:49 +00:00
Dave Conway-Jones 71be4500fc
Temporarily mask Pushbullet tests that fail to allow others to pass.
update travis to include node 8
2017-11-06 21:42:21 +00:00
Dave Conway-Jones 388ad11b72
Upgrade to latest underlying npm to support node8.x LTS 2017-11-04 17:12:48 +00:00
Dave Conway-Jones fce96ff196
don't remove daemon input listener on auto restart
to re close #365
2017-10-29 21:54:01 +00:00
Dave Conway-Jones cabf9ad00c
only register input listener once on daemon node
to close #365
2017-10-28 23:12:39 +01:00
Dave Conway-Jones 3e8353fa0e
bump waht3words package
add msg.payload{lat:lon} option
2017-10-22 11:00:48 +01:00
Dave Conway-Jones 2f14b17948
bump ledborg node package 2017-10-10 23:08:34 +01:00
Kazuhito Yokoi c41f367176 Fix typo in ledborg node (#363) 2017-10-10 23:07:24 +01:00
Dave Conway-Jones bb469fd710
small bump to emoncms pack to align with nom 2017-10-07 22:28:24 +01:00
Dave Conway-Jones 7864abd20b
bump redis for Japanese language support 2017-10-07 22:28:24 +01:00
Kazuhito Yokoi 3892bc248a Add Japanese translation file for redis node (65-redisout.json) (#362) 2017-10-07 22:26:39 +01:00
Dave Conway-Jones 9765439588
fixup mcp3008 readme 2017-09-24 19:46:51 +01:00
Dave Conway-Jones c62820a111
fix piliter byte mode 2017-09-14 12:13:28 +01:00
Dave Conway-Jones 605c2b0fe2
redo rbe fix #335
(no idea why it reverted)
2017-09-11 17:45:45 +01:00
Dave Conway-Jones e89861f4e3
Fix RBE payload changing downstream (needs cloning before storing) 2017-09-11 17:33:50 +01:00
Dave Conway-Jones 86ab73662b
Twilio creds could not be entered - to fix #357
(bad token object)
2017-09-11 11:58:04 +01:00
Dave Conway-Jones 8b53d09ad3
handle multi-line base64 strings 2017-09-11 11:58:04 +01:00
denisfrench e61da83d5d Improve restart upon timeout (#338) (#353)
* Print error on exception and tweak GPIO setup

* Restart script on timeout

* Add GPIO.cleanup to restart() function

* Use interrupts instead of polling input pin state
2017-09-07 21:12:33 +01:00
Dave Conway-Jones e376802ff4
fixes for noe-pixel to check more thoroughly for new libs
while supporting old ones also.
2017-09-01 15:22:35 +01:00
Dave Conway-Jones 39fd3b85cd
update neo-pixel and unicorn hat nodes to use later libs 2017-08-31 11:25:44 +01:00
Dave Conway-Jones ee852bf060
Bump event listener limit up to 100
to close #327
2017-08-27 18:21:14 +01:00
Dave Conway-Jones 9a17460b0e
fix as proposed to close #319
(assuming this node is still relevant :-)
2017-08-27 17:53:44 +01:00
Dave Conway-Jones 2413738082
update pusher nodes to later api
to close #347 and close #348
2017-08-27 14:00:20 +01:00
Dave Conway-Jones 5ac15e620a
ensure daemon node has a command to run
in order to prevent crash.
2017-08-22 15:49:31 +01:00
Dave Conway-Jones 363bb55b26
SRF node - add ability to set time interval
to close #338
2017-08-14 09:20:18 +01:00
Dave Conway-Jones 7950b7d39a
Move msg pack node to more supported lib msgpack-lite 2017-08-09 16:58:15 +01:00
Dave Conway-Jones dbff575e24
bump email package.json 2017-07-18 20:32:50 +01:00
Kazuhito Yokoi c6f8b7ee76 Modify messages in e-mail node to refer to language files (#343)
thanks @kazuhitoyokoi
2017-07-12 18:16:43 +01:00
Dave Conway-Jones f6e71bf962
"revert" serial port and base64 nodes forwards....
undo buffer syntax updates
2017-06-30 19:52:20 +01:00
Dave Conway-Jones 0609645375
bump snap node version for incoming PR 2017-06-26 23:04:20 +01:00
mscbpi 24b0cd60bb SNMP Set Node (#325)
* snmp set node

* updated readme

* readme

* added missing {}

* corrected naming in variables, removed unused ones

* Use snmpObjectType to map types in SnmpSNode

* added varbinds as node property

* edit priority between node and message

* edit help

* updated doc

* try catch JSON.parse§

* corrected typo in html

* Error message in case of JSON parsing error

* removing try/catch on JSON.parse for varbinds, as a wrong varbinds will be
catched/handled in Session.set() method

* edit doc for better presentation
2017-06-26 23:02:34 +01:00
Dave Conway-Jones 6c3c16f210
update "core" extra nodes to use newer Buffer syntax 2017-06-24 13:53:22 +01:00
Dave Conway-Jones a64d758e18
cleanup datagenerator editor instance 2017-06-24 12:17:18 +01:00
Dave Conway-Jones 1c30807be8
allow es6 linting 2017-06-24 12:16:55 +01:00
Dave Conway-Jones d39e033409
bump packages for nom 2017-06-16 07:16:42 +01:00
Kazuhito Yokoi 7bba1bee7e Add Japanese translation file for rbe node(rbe.json) (#336) 2017-06-16 07:15:15 +01:00
Dave Conway-Jones 3add95128d
bump rbe package for nom and fix test 2017-06-13 20:34:01 +01:00
jmikerq 652d857dd6 fix deadbandEQ mode in rbe.js (#335) 2017-06-13 20:32:13 +01:00
Dave Conway-Jones f6a05823a9
fix tweet.io links
to close #332
2017-06-13 00:11:30 +01:00
Dave Conway-Jones c19197f540
add ,msg to leveldb errors 2017-06-05 19:21:25 +01:00
Dave Conway-Jones 7af48ce10b
Tidy up / hide non-supported ways of doing twill crews 2017-06-05 17:26:05 +01:00
Dave Conway-Jones f1fa9524f6
revert snmp version mixup.
Apologies to all !
to close #326
2017-06-05 17:15:40 +01:00
Dave Conway-Jones 6a85e86a09
bump twilio package version for nom 2017-06-05 13:29:31 +01:00
Jon Sands 8614bb08ed Fix Twilio error message reporting (#328)
Thanks @Fohdeesha
2017-06-05 13:27:05 +01:00
Dave Conway-Jones b858df4770
Let sense hat single char not scroll as per docs
to close #266
2017-06-05 11:24:22 +01:00
Dave Conway-Jones fcdcbe4118
better error handling in mdns node
bump package for npm
2017-05-31 22:02:41 +01:00
Dave Conway-Jones 3c3b344942
bump packages on nom with Japanese translations 2017-05-31 20:44:33 +01:00
Dave Conway-Jones b18be401ec
bump snmp package (correctly) 2017-05-31 20:40:46 +01:00
Kazuhito Yokoi 412d71701d Add Japanese translation files(61-email.json, 27-twitter.json) (#323)
* Add Japanese translation file for e-mail(61-email.json)

* Add Japanese translation file for twitter(27-twitter.json)
2017-05-31 20:37:00 +01:00
Dave Conway-Jones 80760af36a
bump snmp package for nom 2017-05-31 20:25:43 +01:00
bimalyn-IBM 78a6af1770 Fix snmp community default issue (#324) 2017-05-31 20:24:01 +01:00
Kazuhito Yokoi d4d5b1f893 Add Japanese translation file for feedparse(32-feedparse.json) (#322) 2017-05-31 08:45:11 +01:00
Dave Conway-Jones 31769472fa
Bump package and publish to nom 2017-05-30 17:17:13 +01:00
bimalyn-IBM 2204d5835f Fix: SNMP fails to close/destroy sessions when it errors (#318)
* I've modified the snmp libraries so that the server and the community can be defined by the msg.
Error will be thrown if you try to override what was defined in the node.
Verified that the contents of msg is no longer clobbered.

Signed-off-by: Bryan Malyn <bimalyn@us.ibm.com>

* Replaced tabs with 4 spaces.
Signed-off-by: Bryan Malyn <bimalyn@us.ibm.com>

* fix extra spacing

Signed-off-by: Bryan Malyn <bimalyn@us.ibm.com>

* Standardise node.error to include msg so that errors can caught

Signed-off-by: Bryan Malyn <bimalyn@us.ibm.com>

* Update documentation for snmp nodes

fixed documentation as noted, removed conflict and iff from documention
remove node.warns if host or community are set in both the node config and msg

Signed-off-by: Bryan Malyn <bimalyn@us.ibm.com>

* FIX: Close net-snmp sessions
Signed-off-by: Bryan Malyn <bimalyn@us.ibm.com>

* Fix 2: The previous push did not cleanly address the problem.

This commit uses a singleton aproach to create socket.
It still needs to be tested to see if there is any issue to the never-close,
but reuse socket model. My only concern is if a socket dies, do we need to do something to reestablish it?

Signed-off-by: Bryan Malyn <bimalyn@us.ibm.com>
2017-05-30 17:15:36 +01:00
Dave Conway-Jones 4768ecc16c
pigpiod html lint === 2017-05-24 19:45:31 +01:00
Dave Conway-Jones a00fcb3726
Better label for piGPIOd node 2017-05-24 18:43:44 +01:00
Dave Conway-Jones 76e33acae5
add ignore first message option to rue node 2017-05-24 13:14:55 +01:00
Dave Conway-Jones 8799b1e85b
Try better pin picker for pigpiod 2017-05-14 23:05:52 +01:00
Dave Conway-Jones 6a56dc00d3
Add pinout to pigpiod config 2017-05-13 21:13:27 +01:00
Dave Conway-Jones d7e7756dcf
make Pi SRF topic editable/optional 2017-05-13 12:46:24 +01:00
Dave Conway-Jones 13fbfc4f22
bump PiSRF node to fix timeout
Thanks @bartbutenaers to Close #309
2017-05-08 09:01:45 +01:00
bartbutenaers 2700a2c300 Pisrf performance fix (#309)
* performance fix

* performance fix
2017-05-08 08:57:29 +01:00
Dave Conway-Jones 0fb8a1a2a0
add kill and start parameters to daemon node 2017-05-03 17:46:10 +01:00
bimalyn-IBM a3211a5e80 Update documentation for snmp nodes (#301)
* I've modified the snmp libraries so that the server and the community can be defined by the msg.
Error will be thrown if you try to override what was defined in the node.
Verified that the contents of msg is no longer clobbered.

Signed-off-by: Bryan Malyn <bimalyn@us.ibm.com>

* Replaced tabs with 4 spaces.
Signed-off-by: Bryan Malyn <bimalyn@us.ibm.com>

* fix extra spacing

Signed-off-by: Bryan Malyn <bimalyn@us.ibm.com>

* Standardise node.error to include msg so that errors can caught

Signed-off-by: Bryan Malyn <bimalyn@us.ibm.com>

* Update documentation for snmp nodes

fixed documentation as noted, removed conflict and iff from documention
remove node.warns if host or community are set in both the node config and msg

Signed-off-by: Bryan Malyn <bimalyn@us.ibm.com>
2017-04-22 15:53:04 +01:00
Dave Conway-Jones 2023bddf97
bump wen and mongoldb packages to pub to npm 2017-04-19 15:25:19 +01:00
Ben Hardill 6168f7ef34 Add extra check for empty results in discovery (#304) 2017-04-19 15:21:05 +01:00
Dave Conway-Jones d48644e16a
pigpiod - only allow send if actually connected. 2017-04-19 11:14:51 +01:00
Dave Conway-Jones a881a5c4af
bump mongoldb node for skip, limit default PR 2017-04-19 11:14:51 +01:00
Ben Hardill c17aac3b66 Make msg.limit and msg.skip optional as per the README (#303) 2017-04-19 11:11:47 +01:00
Dave Conway-Jones f2cc2bb321
correct maths and help for servo min/max timings 2017-04-18 16:39:56 +01:00
Dave Conway-Jones 63a873f1f1
fix pigpiod spelling
and fix overall package levels dev to match email node
2017-04-15 12:15:54 +01:00
Dave Conway-Jones 85498279b4
bump sweetie package to reflect PR 2017-04-15 12:14:57 +01:00
Dave Conway-Jones 4168fe7845
bump snap package to release PR 2017-04-15 12:14:34 +01:00
bimalyn-IBM 0f7e8385b8 Allow msg to set parameters for snmp nodes. (#299)
* I've modified the snmp libraries so that the server and the community can be defined by the msg.
Error will be thrown if you try to override what was defined in the node.
Verified that the contents of msg is no longer clobbered.

Signed-off-by: Bryan Malyn <bimalyn@us.ibm.com>

* Replaced tabs with 4 spaces.
Signed-off-by: Bryan Malyn <bimalyn@us.ibm.com>
2017-04-15 12:04:47 +01:00
Luke Wendling cdd3b04492 fix dweet.io href (#298) 2017-04-15 12:03:22 +01:00
Dave Conway-Jones dd43a7c4aa
update module pre-reqs, readme and grunt file. 2017-04-14 21:39:26 +01:00
Dave Conway-Jones 774bc50589
add greater and greater or equal modes to RBE bandgap mode 2017-04-14 21:38:42 +01:00
Dave Conway-Jones fc249b6792
Add PiGPIOd node
alternative to Pi GPIO nodes with remote access
2017-04-14 21:37:44 +01:00
Dave Conway-Jones ec96d3622b
patch mdns resolver sequence to stay working on Pi. 2017-04-12 20:33:55 +01:00
Dave Conway-Jones 4cfd216a0c
another kick to get node_modules ignored by lint 2017-04-12 13:44:04 +01:00
Dave Conway-Jones 38d16b8a4d
Tidy up listing for some nodes. No functional changes
to make listing task pass
2017-04-12 13:32:08 +01:00
Dave Conway-Jones 8abfd4841d
pin mins pre-req to old working level
new one breaks with a deprecation…
need to look for another library
2017-04-12 09:35:26 +01:00
Dave Conway-Jones a3e69d1a2f
update travis to remove v7 allow failure 2017-04-12 09:21:26 +01:00
Dave Conway-Jones 100cf9a38d
bump levels and mins dependancies 2017-04-12 09:21:05 +01:00
Ben Hardill 3f4261f3b7 Big WeMo node update (#295)
* Reduce resubscription time

Halve the resubscrciption timeout to make sure event
subscriptions get renewed

* Big Update

Includes:
 - New lookup node to check state of a device
 - Fix dimming control for lights
 - Fix light group control
 - Set the node label to match the device name
 - The event now includes the text description of the light capability

* Fix groups properly

* Fix travis error with comparitor

* Bump node-ssdp version
2017-04-06 11:21:33 +01:00
Dave Conway-Jones a06ad8f1a7 line up discovery node wording in docs
to close #290
Thanks @ukmoose
2017-04-03 19:51:49 +01:00
Dave Conway-Jones 47520ea5aa email node - put description before attached file. 2017-04-03 18:02:17 +01:00
Dave Conway-Jones d86cf60b06 bump sensortag pre-req 2017-03-29 17:01:53 +01:00
Dave Conway-Jones 1ca1492bc4 typo in sensehat info, R->F 2017-03-29 14:13:23 +01:00
Dave Conway-Jones 5a07f29ebd remove invalid error parameter from mysql callback 2017-03-17 13:45:47 +00:00
Nick O'Leary 9be6545739
Twitter node: remove auth requirement on oauth callback routes
Fixes #253
2017-03-15 09:58:14 +00:00
Dave Conway-Jones a63df3c41d tidy up some linting files 2017-03-09 23:18:22 +00:00
Dave Conway-Jones 2f218740c6 update What3Words node to latest library
and fix credentials issue
closes #285
2017-03-09 23:17:40 +00:00
Dave Conway-Jones 20f7cb0a3d remove console logging from mysql 2017-02-26 10:20:30 +00:00
Dave Conway-Jones c6d214fcfe mysql set to try to keep server connection alive 2017-02-26 10:18:07 +00:00
Dave Conway-Jones 5a85813a45 Bump to Twilio package
to close #282
2017-02-24 22:01:57 +00:00
Dave Conway-Jones dc1ca765ec add missing header property from email in node
to close #281
Thanks @obook
2017-02-22 17:55:46 +00:00
Dave Conway-Jones a4eaf55961 bump email package version on npm
better fix from @timolehto
2017-02-21 13:07:42 +00:00
timolehto f15f8598f3 Fixes smtp/auth bug: https://github.com/node-red/node-red-nodes/issues/279 (#280) 2017-02-21 13:00:21 +00:00
Dave Conway-Jones 6ace40c1f2 re-add auth to email out...
apologies all round
2017-02-21 12:23:47 +00:00
Dave Conway-Jones 80942c5da8 update travis node.js levels 2017-02-15 18:34:21 +00:00
Yohann Ciurlik 8e001fcd45 Adding No Auth support to social email out node (#277)
* Let email out node connect to SMTP without authentication

Add the possibility to connect to local SMTP without authentication.

* Adapt test to connect to SMTP without credentials

Adapt test to connect to SMTP without credentials

* Add coverage for social email out node

Add coverage for social email out node

* Add more coverage to email out node

Add more coverage to email out node
2017-02-15 18:33:05 +00:00
Dave Conway-Jones 367237d946 Let email out node set secure connection explicitly
to close #1148
2017-02-13 22:43:43 +00:00
Dave Conway-Jones 93c85ca7cd Allow Smooth node to be reset by msg.reset
to close #273
2017-02-07 21:41:18 +00:00
Dave Conway-Jones 7e421db642 emoncms - improve check for no input
to close #275
2017-02-06 22:30:00 +00:00
Julian Hille 0ad4a7bc4d Add freebsd as a valid platform (#274)
Freebsd ping command equals darwins ping command
2017-02-06 22:13:19 +00:00
wbchn fa781d6e1a fix email login error when using pop3 method (#272)
Thanks for spotting this (and fixing it !)
2017-02-04 17:06:19 +00:00
Dave Conway-Jones c064b88540 bump suncalc package 2017-01-29 17:47:06 +00:00
Dave Conway-Jones faba134e42 add lables to daemon node 2017-01-29 17:46:50 +00:00
Dave Conway-Jones 316a2fd272 Re-lint a load of nodes 2017-01-29 17:45:44 +00:00
Dave Conway-Jones 603189f123 Bump arduino package, thanks to PR 2017-01-29 17:43:48 +00:00
Bart f70f4c4fff remove firmata/node_modules path in require('serialport') (#271)
serialport is not found when installing the npm module local (instead of 'npm install node-red-node-arduino -g')
2017-01-29 17:39:44 +00:00
Dave Conway-Jones b2634ab4f2 fix error logging in snap node
to close #267
2017-01-18 18:55:10 +00:00
Dave Conway-Jones dcd2ede2c4 bump serial port package 2017-01-09 20:53:43 +00:00
Dave Conway-Jones 83ea35d0dd Let daemon node call done() so it has time to kill child process 2017-01-01 23:34:23 +00:00
Dave Conway-Jones 31cb3d1e46 fix random node initial value (and tests) 2016-12-27 21:25:57 +00:00
Dave Conway-Jones fa51c8fb36 Fix email read flag scoping issue
to close #265
2016-12-21 17:17:35 +00:00
Dave Conway-Jones a0b95fe659 set email default to read (as was previously happening) 2016-12-12 21:14:32 +00:00
Dave Conway-Jones 0d0df5cef9 Add to, cc and bcc fields to incoming msg
To close #258 and to fix #260
2016-12-12 21:10:36 +00:00
Nick O'Leary d4e0e9b302 Update CONTRIBUTING.md 2016-12-10 09:49:13 +00:00
Dave Conway-Jones 66d4991b5b bump demo package ver for npm 2016-12-03 11:28:11 +00:00
Ben Hardill 92520f7d57 Reduce resubscription time (#256)
Halve the resubscrciption timeout to make sure event
subscriptions get renewed
2016-12-03 11:26:16 +00:00
Dave Conway-Jones fe1a96d67d tidy up mysql some more
remove listeners on close and update status on partial deploy
2016-11-27 19:21:57 +00:00
Dave Conway-Jones 738eada16b Update Mysql Node status reporting 2016-11-27 17:03:03 +00:00
Dave Conway-Jones fcc1fcfca8 bump package versions (heatmiser, arduino, pushover) 2016-11-26 21:22:18 +00:00
GadgetUK c86fdc839a Update 100-heatmiser.js (#255)
Change to underlying nodejs module for addressing Neo and Wifi units
2016-11-26 21:17:20 +00:00
Dave Conway-Jones 7a39c6f70b reduce Mongo db connection retry warnings
only report on first attempt
to close issue 1052 on main project
2016-11-16 22:48:41 +00:00
Nathanaël Lécaudé 5c1edc641a node-red-node-wol: add host field to set target IP address (#252)
Thanks @nlecaude
2016-11-13 09:51:31 +00:00
Dave Conway-Jones 1bfda975ef Add events to Twitter node
to close #126
Thanks @ukmoose
(sorry had to do it manually)
2016-11-12 11:43:25 +00:00
Dave Conway-Jones a9d669411c fix mongo connection timeout call
to close #1045
Thanks @pelis
2016-11-11 10:07:26 +00:00
Dave Conway-Jones dd685209d9 fix MQlight out topic to close #251
Thanks @mkpurcell
2016-11-10 20:02:24 +00:00
Ben Hardill 2b6661c4f2 Test for broken XML in WeMo response (#250)
Thanks @hardillb
2016-11-09 08:44:07 +00:00
Dave Conway-Jones f2bac89911 Fix edits in sense hat and prowl nodes 2016-11-07 14:17:02 +00:00
Dave Conway-Jones 7917ca8dcf Fix missing httpAdmin permissions for Pushbullet, twitter what3words and sensehatsim
fixes #244
2016-11-06 20:27:21 +00:00
Dave Conway-Jones a7247e898a Update licenses and packages for all nodes 2016-11-06 20:26:19 +00:00
Dave Conway-Jones 791b246f19 Add notes that mcp3008 is and A/D Converter
to fix #248
Thanks @ukmoose
2016-11-02 21:16:48 +00:00
Dave Conway-Jones 1e31652073 Better handling of mongo ObjectId for updates 2016-11-02 15:25:35 +00:00
Dave Conway-Jones d52f9dcd30 detect Pi updates for LEDborg, mcp3008 and neopixel 2016-11-02 10:02:51 +00:00
Ben Hardill d9c551c026 Fix SensorTag node on Windows (#246)
Fix windows install 
(or rather - only run the postinstall if on Linux)
Thanks @hardillb
2016-11-02 09:55:06 +00:00
Dave Conway-Jones 3e3b9aa706 bump Arduino node firmata prereq 2016-10-27 17:41:25 +01:00
Dave Conway-Jones 6fce1f5622 Pushover, one letter spelling mistake in placeholder 2016-10-17 23:00:22 +01:00
Dave Conway-Jones 735f610730 Pushover, add support for url and url_title
to close #240
Thanks @eisbehr
2016-10-17 22:56:24 +01:00
Dave Conway-Jones f63d8d6343 Daemon node. Check payload length rather than trim to handle buffer
to close #242
thanks @gbrault
2016-10-17 21:35:12 +01:00
Dave Conway-Jones 8efc1e5fc8 bump request npm levels in wet and feed parser 2016-10-13 14:23:55 +01:00
Dave Conway-Jones 36e834fdf1 bump serial port to 4.0.3 library 2016-10-13 14:12:08 +01:00
Dave Conway-Jones cebeab02f9 toggle twitter limit rate status back if not limited anymore 2016-09-30 21:21:44 +01:00
Dave Conway-Jones 3ff0b6a761 More twitter rate fixes, Redo input pin logic 2016-09-30 20:38:05 +01:00
Dave Conway-Jones 8a03773567 better global handling of twitter rate limits
and make status messages i18n
2016-09-30 17:00:20 +01:00
Dave Conway-Jones 5d7d7e9d24 back off twitter retry to twitter recommended 60s 2016-09-30 11:13:38 +01:00
Dave Conway-Jones 741d3db06b clear twitter reconnect timeout to close #237 2016-09-30 08:54:55 +01:00
Dave Conway-Jones eeb1189092 Tidy up twitter node info
and re-order code to make more logical. (or at least readable)
2016-09-29 23:30:13 +01:00
Dave Conway-Jones c456f89441 twitter followed users now does what it says... 2016-09-28 17:09:58 +01:00
Dave Conway-Jones 437543e139 try to match twitter labels to reality
maybe
2016-09-27 22:07:01 +01:00
Dave Conway-Jones c04ca47804 fix twitter node to have 1 input :-(
and tidy up statuses
2016-09-27 21:21:28 +01:00
Dave Conway-Jones 2c49832bda injecting blank payload stops twitter stream 2016-09-27 18:03:54 +01:00
Dave Conway-Jones 4c5b75f30a Tidy up twitter node, add status, i18n etc 2016-09-27 17:56:35 +01:00
smchamberlin b0c93e44b8 Twitter node: Add support for search terms passed in through msg.payload (#235)
* Add support for search terms passed in through msg.payload

* Add support for dynamic left ping connector

* Suggestions from David Conway-Jones

* Better error message

* Add green status indicator when msg.payload is dynamically passed in and revised warning messages
2016-09-27 17:34:04 +01:00
Dave Conway-Jones 8e84e19cde add mcp3008 node and bump some packages 2016-09-20 08:19:45 +01:00
Dave Conway-Jones c91e22744f remove unnecessary logging from base64 node 2016-09-15 21:20:43 +01:00
Dave Conway-Jones afec508980 Catch "not connected" to database in Mysql node
also to close #172 - as multiple statements now also supported
2016-09-14 22:44:53 +01:00
Dave Conway-Jones f70cd1d640 snap node - remove extraneous console logging 2016-09-01 11:17:18 +01:00
Dave Conway-Jones 71c0a0c7cf add info to daemon node to point out python unbuffered 2016-08-28 11:37:51 +01:00
Dave Conway-Jones 216c8cca19 bump wemo node version 2016-08-17 09:14:56 +01:00
Ben Hardill 04b7ee9e1e Silence Listener leak warning (#229)
* Replacing the original wemo node with the wemo-ng node

* Added install instructions

* Fix name of wemo out node

* Fix some jshint errors

More jshint fixes

fix jshint

last jshint fix

Fix last jshint error

* Adds proper url length detection

* fix up the extra line added in the merge

* Fix some jshint errors

More jshint fixes

fix jshint

last jshint fix

Fix last jshint error

load of tiny listing fixes, undef, unused, etc

fix slight wrinkle in new Wemo node

Fix wemo package name for npm.

Add contribution.md to node-red-nodes

to make it more obvious.
correct spelling in readme.md
revert .jshintrc

Added subtree and walker nodes. (#200)

Thanks @mikakaraila  - very useful.

slight edits to snmp to pass jslint-ing

Bump underlying serial port nam version

correct BBB callback response to check exists

To Fix #198

* Adds proper url length detection

fix up the extra line added in the merge

* Added some more error checking in discovery

* Adds proper url length detection* fix up the extra line added in the merge

* Adds proper url length detection

* fix up the extra line added in the merge

Add line output mode for Daemon node

to address #202

Email rework (#195)

* Rework of Node-RED email nodes

tidy up email listing - no code changes

add latest email node dips

and update email node libs - bump version

update package version for nodes tests

add a few tests

geohash, smooth, base64, msgpack

correct path of source file

Thanks @Ltrlg

Fix typo in node-red-node-smooth (#205)

node-red-node-physical-web: Added msg.advertising = true/false to enable/disable advertising (#204)

* Added msg.advertising = true/false to enable/disable advertising

* Fixed comparison with bool

Don't use get_compass as it breaks get_orientation

add envelope to email node options

as part of node-red#875

Physical-web: Added status (found, updated and lost) as msg.topic (#206)

Added msg.advertising = true/false to enable/disable advertising
Added status (lost, updated, found) as msg.topic, if not already set
Added checkbox to allow duplicates or not.

* Re-added optional topic to avoid breaking compatibility

* Cleaner topic slection

add a v0.3 serial port to help with node5/6

let PI try to enable sensorTag access on install

Add cc and bcc options to email node

to close #209

updates to email node to better handle

different mail types. Still not great - but does the basics…  To close

Better email node parsing (again)

Fix indent

fixed formating

* Fix heading in README.md

Fix node name in README.md

* Silences warnings about too many listeners
2016-08-17 09:11:37 +01:00
Dave Conway-Jones eb6e35957b Let Mongo node auto retry initial connection
and add status indicator
to close #221
2016-08-16 11:43:36 +01:00
Dave Conway-Jones eb17e6533e clean up whitespace on daemon args
cause less errors if any trailing whitespace removed,
2016-08-16 10:12:31 +01:00
Dave Conway-Jones ba488aa4c1 bump Mongoldb pre-req version
to fix #228
2016-08-16 10:11:42 +01:00
Dave Conway-Jones b9b0e19f63 sensor tag - filter out "bad" values
to close #225
2016-08-10 10:26:20 +01:00
Dave Conway-Jones 4f90ccfcd4 Bump BBB node dependancies 2016-08-06 18:42:34 +01:00
Dave Conway-Jones 75787fa3c2 Update blinkstick neopixel modes 2016-08-06 18:42:10 +01:00
Dave Conway-Jones 677864482e Bump email node version 2016-08-03 09:01:28 +01:00
Mike Sparr 17255b7bbf Fixed #222 - RFC error with invalid FROM address with userid conf (#223)
* Fixed #222 - RFC error with invalide FROM address forcing userid config value

* Added user help text for #222 fix and pull request

* Fixing tab spacing for #222 fix before pull request acceptance
2016-08-03 08:55:39 +01:00
Dave Conway-Jones 69b471b0f1 let mysql node allow multiple statements 2016-07-20 20:11:50 +01:00
Dave Conway-Jones 4f4d2de45f Arduino nodes, reconnect on partial deploys 2016-07-15 14:45:32 +01:00
Dave Conway-Jones 0bfeb13abc Move Arduino nodes to use firmata nom
rather than arduino-firmata
2016-07-13 14:19:09 +01:00
Dave Conway-Jones 0b094cbfc7 bump physical-web package version for nom 2016-06-29 17:36:49 +01:00
Nathanaël Lécaudé 648d6438b1 Corrected error in power level (#217) 2016-06-29 17:32:50 +01:00
Nathanaël Lécaudé 14cfbf7b0b Update spinner to reflect new power range. (#218) 2016-06-29 17:32:27 +01:00
Dave Conway-Jones c830e461ea Bump email node package version
should have been part of previous fix…. darn.
2016-06-27 12:03:31 +01:00
Dave Conway-Jones 4c589f14f5 Allow Email node to select folder other than INBOX
Closes #215
Thanks to @aamol for spotting
2016-06-27 12:01:29 +01:00
Ben Hardill 46cc9bb906 Added more error checking in the discovery section (#214)
* Replacing the original wemo node with the wemo-ng node

* Added install instructions

* Fix name of wemo out node

* Fix some jshint errors

More jshint fixes

fix jshint

last jshint fix

Fix last jshint error

* Adds proper url length detection

* fix up the extra line added in the merge

* Fix some jshint errors

More jshint fixes

fix jshint

last jshint fix

Fix last jshint error

load of tiny listing fixes, undef, unused, etc

fix slight wrinkle in new Wemo node

Fix wemo package name for npm.

Add contribution.md to node-red-nodes

to make it more obvious.
correct spelling in readme.md
revert .jshintrc

Added subtree and walker nodes. (#200)

Thanks @mikakaraila  - very useful.

slight edits to snmp to pass jslint-ing

Bump underlying serial port nam version

correct BBB callback response to check exists

To Fix #198

* Adds proper url length detection

fix up the extra line added in the merge

* Added some more error checking in discovery

* Adds proper url length detection* fix up the extra line added in the merge

* Adds proper url length detection

* fix up the extra line added in the merge

Add line output mode for Daemon node

to address #202

Email rework (#195)

* Rework of Node-RED email nodes

tidy up email listing - no code changes

add latest email node dips

and update email node libs - bump version

update package version for nodes tests

add a few tests

geohash, smooth, base64, msgpack

correct path of source file

Thanks @Ltrlg

Fix typo in node-red-node-smooth (#205)

node-red-node-physical-web: Added msg.advertising = true/false to enable/disable advertising (#204)

* Added msg.advertising = true/false to enable/disable advertising

* Fixed comparison with bool

Don't use get_compass as it breaks get_orientation

add envelope to email node options

as part of node-red#875

Physical-web: Added status (found, updated and lost) as msg.topic (#206)

Added msg.advertising = true/false to enable/disable advertising
Added status (lost, updated, found) as msg.topic, if not already set
Added checkbox to allow duplicates or not.

* Re-added optional topic to avoid breaking compatibility

* Cleaner topic slection

add a v0.3 serial port to help with node5/6

let PI try to enable sensorTag access on install

Add cc and bcc options to email node

to close #209

updates to email node to better handle

different mail types. Still not great - but does the basics…  To close

Better email node parsing (again)

Fix indent

fixed formating

* Fix heading in README.md

Fix node name in README.md
2016-06-24 11:06:59 +01:00
Dave Conway-Jones 49692b3255 Better email node parsing (again) 2016-06-12 17:04:07 +01:00
Dave Conway-Jones f91b7c4630 updates to email node to better handle
different mail types. Still not great - but does the basics…  To close
#210 for now
2016-06-07 15:57:40 +01:00
Dave Conway-Jones b6f45ef8d4 Add cc and bcc options to email node
to close #209
2016-06-03 16:14:20 +01:00
Dave Conway-Jones 4248b580ee let PI try to enable sensorTag access on install 2016-05-26 19:42:22 +01:00
Dave Conway-Jones 0321bf8150 add a v0.3 serial port to help with node5/6 2016-05-26 19:41:47 +01:00
Nathanaël Lécaudé 966e7a520b Physical-web: Added status (found, updated and lost) as msg.topic (#206)
Added msg.advertising = true/false to enable/disable advertising
Added status (lost, updated, found) as msg.topic, if not already set
Added checkbox to allow duplicates or not.

* Re-added optional topic to avoid breaking compatibility

* Cleaner topic slection
2016-05-20 16:00:52 +01:00
Dave Conway-Jones b23cf0b788 add envelope to email node options
as part of node-red#875
2016-05-19 10:13:47 +01:00
Nick O'Leary 34c42eed61 Don't use get_compass as it breaks get_orientation 2016-05-09 15:15:15 +01:00
Nathanaël Lécaudé b0c5c8c8f4 node-red-node-physical-web: Added msg.advertising = true/false to enable/disable advertising (#204)
* Added msg.advertising = true/false to enable/disable advertising

* Fixed comparison with bool
2016-05-02 21:58:40 +01:00
Nathanaël Lécaudé 32282ec528 Fix typo in node-red-node-smooth (#205) 2016-05-02 21:55:18 +01:00
Dave Conway-Jones 14b1c3b123 correct path of source file
Thanks @Ltrlg
2016-05-02 19:21:39 +01:00
Dave Conway-Jones da8dd1dc30 add a few tests
geohash, smooth, base64, msgpack
2016-04-23 23:57:16 +01:00
Dave Conway-Jones d89a2bb7a1 update package version for nodes tests 2016-04-23 17:08:01 +01:00
Dave Conway-Jones ae3d6a6874 and update email node libs - bump version 2016-04-20 20:03:46 +01:00
Dave Conway-Jones 8065988e8d add latest email node dips 2016-04-20 20:02:12 +01:00
Dave Conway-Jones 1cfb5f403d tidy up email listing - no code changes 2016-04-20 19:54:44 +01:00
Neil Kolban 3107080b19 Email rework (#195)
* Rework of Node-RED email nodes
2016-04-20 19:47:23 +01:00
Dave Conway-Jones 8563624983 Add line output mode for Daemon node
to address #202
2016-04-18 21:40:43 +01:00
Ben Hardill d8cf46a4ec * Adds proper url length detection* fix up the extra line added in the merge
* Adds proper url length detection

* fix up the extra line added in the merge
2016-04-16 10:08:21 +01:00
Dave Conway-Jones 9300e81e3d correct BBB callback response to check exists
To Fix #198
2016-04-14 11:26:57 +01:00
Dave Conway-Jones 49b9277c26 Bump underlying serial port nam version 2016-04-14 09:17:40 +01:00
Dave Conway-Jones d087281a11 slight edits to snmp to pass jslint-ing 2016-04-12 19:18:48 +01:00
Mika Karaila 163345cf5c Added subtree and walker nodes. (#200)
Thanks @mikakaraila  - very useful.
2016-04-12 18:39:19 +01:00
Dave Conway-Jones cc9a6d887b Add contribution.md to node-red-nodes
to make it more obvious.
correct spelling in readme.md
revert .jshintrc
2016-04-12 15:12:37 +01:00
Dave Conway-Jones de304c8a76 Fix wemo package name for npm. 2016-04-10 09:57:22 +01:00
Dave Conway-Jones c54a019899 fix slight wrinkle in new Wemo node 2016-04-09 18:06:29 +01:00
Dave Conway-Jones 48bcd3c7df load of tiny listing fixes, undef, unused, etc 2016-04-09 18:00:20 +01:00
Ben Hardill 37ba29484a Update WeMo node to WeMo-NG (#199)
* Replacing the original wemo node with the wemo-ng node

* Added install instructions

* Fix name of wemo out node

* Fix some jshint errors

More jshint fixes

fix jshint

last jshint fix

Fix last jshint error
2016-04-09 17:59:36 +01:00
Dave Conway-Jones a8ec48553f sensor tag - only disconnect once...
still to close #196
2016-04-01 16:41:58 +01:00
Dave Conway-Jones 98d44004c9 let ti sensor tag try to reconnect
to close #196
2016-04-01 16:02:49 +01:00
Dave Conway-Jones 68bd4cc036 Add "other" baud rates to serialport
to Close #194
Uses typed widget so needs NR 0.13.4.
2016-04-01 08:55:58 +01:00
Nick O'Leary b5f0823bd4 Update sensehatsim readme 2016-04-01 01:03:16 +01:00
Nick O'Leary 76430a84f0 Add sensehat simulator node 2016-04-01 01:01:54 +01:00
Dave Conway-Jones 99e9c540ef add tick to Unicorn clock example 2016-03-29 10:10:26 +01:00
Nick O'Leary a4daf91a30 SenseHat: Add clock example and support for x0-x1 ranges 2016-03-28 22:53:56 +01:00
Dave Conway-Jones 73e84c7ff9 Add clock example to unicorn hat node 2016-03-28 17:43:00 +01:00
Dave Conway-Jones f64a17acd5 bump physical web node package to include pr from @natcl 2016-03-27 17:49:52 +01:00
Dave Conway-Jones c755442296 fix unicorn listing 2016-03-26 18:15:19 +00:00
Dave Conway-Jones be2199640e remove debug console.log from unicorn hat node 2016-03-26 17:38:37 +00:00
Dave Conway-Jones 6627d020ae Let unicorn node handle block sized sprites 2016-03-26 17:34:07 +00:00
Dave Conway-Jones 0651f6fdc0 Let Unicorn hat draw blocks and part lines
and add some examples
2016-03-22 22:42:31 +00:00
Dave Conway-Jones 3cb42712bc re-add line drawing to unicorn hat node 2016-03-22 20:25:20 +00:00
Nick O'Leary d17ac7eb2e Add runtime check for sensehat python libs 2016-03-21 10:43:07 +00:00
Dave Conway-Jones c3a8a4088d Let rbe node compare to previous input OR output
closes #192 and #193
Also update info and test.
2016-03-21 00:01:50 +00:00
Dave Conway-Jones 2ed8e5a306 Add data-generator node 2016-03-16 16:37:23 +00:00
Dave Conway-Jones 3314a80482 Merge pull request #188 from natcl/master
Added uid mode to node-red-node-physical
2016-03-15 21:03:23 +00:00
Nathanaël Lécaudé 6d41d33e80 node-red-node-physical-web: added documentation and exposed count property. 2016-03-14 17:30:50 -04:00
Nathanaël Lécaudé 71f9d3ad98 node-red-node-physical-web: Added uid mode 2016-03-14 16:24:22 -04:00
Dave Conway-Jones 7b72ecd99c add delay to eddystone scanner startup 2016-03-08 20:13:30 +00:00
Nick O'Leary 471840b868 Add better sensehat error handling 2016-03-08 15:28:40 +00:00
Dave Conway-Jones c9faed7876 Bump arduino pre-req and fix listing 2016-03-06 22:37:18 +00:00
Nick O'Leary 581477893e SenseHat bump version 2016-03-06 21:55:32 +00:00
Nick O'Leary d5446ee117 Add better error handling and update Compass 2016-03-06 21:54:30 +00:00
Nick O'Leary 53c9c834b9 Add Compass example and dont strip spaces on messages 2016-03-04 23:15:59 +00:00
Nick O'Leary 9301ab6c97 Add dim command 2016-03-04 22:23:43 +00:00
Nick O'Leary f4971aff69 Fix colour/color type and add set_letter for single char msg 2016-03-04 20:13:03 +00:00
Nick O'Leary a3e2365ab9 SenseHAT: accept number payload as text message 2016-03-04 17:26:21 +00:00
Nick O'Leary a2915b9a97 Update README.md 2016-03-04 17:15:42 +00:00
Nick O'Leary 18c89896b0 Update sensehat readme formatting 2016-03-04 17:15:06 +00:00
Nick O'Leary 295d62b25a bump version 2016-03-04 17:12:50 +00:00
Nick O'Leary 0cc33db58f Add out node 2016-03-04 17:12:50 +00:00
Dave Conway-Jones 20f14a698c More BLE node doc/info updates
for Sensortag and physical-web nodes.
Added info, and node Status.
2016-03-04 13:10:00 +00:00
Dave Conway-Jones ea9c5f8474 add validation to physical web node fields 2016-03-03 09:18:57 +00:00
Dave Conway-Jones ae670f0e69 update SensorTag node to add Pi instructions 2016-03-02 21:58:24 +00:00
Dave Conway-Jones 7da9f46c65 Update physical web node
add more Pi instructions
2016-03-02 21:57:53 +00:00
Dave Conway-Jones 7a25727a7e really bump arduino version... 2016-03-02 14:23:04 +00:00
Dave Conway-Jones dc3b220ec4 slight tidy to Arduino and bump version 2016-03-02 14:22:16 +00:00
Dave Conway-Jones f676005cad Merge pull request #184 from jpmanson/master
Arduino node - Added support for sending and receiving strings
thanks @jpmanson
2016-03-02 14:00:47 +00:00
Juan Pablo Manson 57445cdfd0 Added support for sending and receiving strings 2016-03-02 10:44:33 -03:00
Dave Conway-Jones 1ee031cad7 update parser and time nodes info style 2016-03-02 13:27:52 +00:00
Dave Conway-Jones 86049c20cb update storage nodes info style 2016-03-02 13:27:52 +00:00
Dave Conway-Jones b6116abce3 update social nodes info style 2016-03-02 13:27:52 +00:00
Dave Conway-Jones 0880ad3987 update io nodes info style 2016-03-02 13:27:52 +00:00
Dave Conway-Jones 81c532fdce update hardware nodes info style 2016-03-02 13:27:52 +00:00
Dave Conway-Jones 88985f4fe7 update analysis and utility nodes info style 2016-03-02 13:27:52 +00:00
Dave Conway-Jones eff8327971 Info/Doc style updates to core/pi nodes 2016-03-02 13:27:52 +00:00
Nick O'Leary 741c57e627 Bump sensehat version 2016-03-02 00:06:20 +00:00
Nick O'Leary 6447cf65f1 Fix formatting of sense hat readme 2016-03-01 23:52:31 +00:00
Nick O'Leary c3b08270ad Add initial Sense HAT Input node 2016-03-01 23:22:12 +00:00
Dave Conway-Jones cd047ceab1 Remove "extra" label from neopixel 2016-03-01 22:58:54 +00:00
Dave Conway-Jones 0d0ce5addf Up Travis testing to v4 for node-red-nodes
And fix some docs
2016-03-01 22:56:19 +00:00
Dave Conway-Jones d70ae82d10 Fix listing errors in node-red-nodes 2016-03-01 21:10:58 +00:00
Dave Conway-Jones ea9356a3cc update unicorn hat node for faster writing of pixels 2016-02-26 22:01:04 +00:00
Dave Conway-Jones 734fbe2adb Add mention of SSL to email nodes info 2016-02-26 22:01:04 +00:00
Dave Conway-Jones c01a1745db Merge pull request #179 from hardillb/master
Fix starting with a URL
2016-02-23 09:29:52 +00:00
Dave Conway-Jones 5e46a1dfb4 Add dev rules to Blinkstick README 2016-02-22 22:23:05 +00:00
Dave Conway-Jones 60e848c48d more qualifications for .jscsrc for nodes package 2016-02-22 18:59:03 +00:00
Dave Conway-Jones c000993be8 revert ping node package to remove dep not needed 2016-02-22 18:58:34 +00:00
Dave Conway-Jones 37ec987a34 revert blink1 prereq (wrong increment) 2016-02-22 18:57:40 +00:00
Dave Conway-Jones fa1453c0d4 point blinkstick to latest pre-req
and remove rtf tags
2016-02-22 18:56:42 +00:00
Ben Hardill 40f47ad729 Add message about URL length 2016-02-22 11:14:41 +00:00
Ben Hardill 4c6469f336 Added message about URL length 2016-02-21 21:23:33 +00:00
Ben Hardill 78d69656ea Bump version number and add TLM count to the standard options 2016-02-21 13:56:56 +00:00
Ben Hardill 71f1de7984 Fix starting with a URL 2016-02-20 17:50:37 +00:00
Dave Conway-Jones b33571b240 correct output for timeswitch
(simple typo)
Also tidied up info etc…
push to close #176
2016-02-15 11:12:29 +00:00
Dave Conway-Jones 952a794db5 add decimal places option to smooth node 2016-02-14 13:47:04 +00:00
Dave Conway-Jones 73269848ba revert ping node experimental changes
oops…
2016-02-13 11:15:02 +00:00
Dave Conway-Jones b0c8b1e83f more node-red-nodes hardware section info updates
and update Pibrella to use latest nrgpio debounce thinking
2016-02-12 21:27:02 +00:00
Dave Conway-Jones c60d62f27b update social nodes info 2016-02-12 14:05:10 +00:00
Dave Conway-Jones dd250a77bc core to Pi node-red-nodes info updates
to be more consistent style
2016-02-12 13:14:12 +00:00
Dave Conway-Jones 5a95e9c404 update snap node docs to make outputs more obvious 2016-02-11 22:50:30 +00:00
Dave Conway-Jones 9539c3674f fix blink node fade times... 2016-02-04 21:03:43 +00:00
Dave Conway-Jones 6c3dbbbfbb Update RBE to add object compare
and narrowband mode (thanks @nlecaude for the idea)
2016-02-02 13:39:37 +00:00
Dave Conway-Jones ed4b6b18ec Add debounce time to the to BBB input node 2016-02-02 12:36:27 +00:00
Dave Conway-Jones 7cb43208e6 Fix BBB node input interrupt attach failure 2016-02-01 10:26:04 +00:00
Dave Conway-Jones 32706ff92c set xmpp presence offline on close 2016-01-31 23:28:05 +00:00
Dave Conway-Jones f3b315ea7c Let Pushbullet in reconnect on errors
to fix #171
2016-01-31 23:27:37 +00:00
Dave Conway-Jones d457b68941 Tidy Arduino - make it use integers.
plus slight tidy of docs
2016-01-31 23:27:10 +00:00
Dave Conway-Jones 90878364ac Let neopixel node support GRB as well as RGB 2016-01-29 20:08:30 +00:00
Dave Conway-Jones 9ba84c4908 catch possible non-property in BBB node 2016-01-29 20:07:17 +00:00
Dave Conway-Jones d7be242477 update node-red-nodes package to remove v0.8 2016-01-29 18:16:07 +00:00
Dave Conway-Jones b443e85e44 XMPP node - missed error tidy on other node 2016-01-29 18:06:42 +00:00
Dave Conway-Jones be259a75fd tidy up xmpp node slightly
handle errors better, more consistent status indicators
2016-01-29 17:58:01 +00:00
Dave Conway-Jones aa15e67440 Bump XMPP node pre-reqs
to close #165
tested locally ok against ejabberd
2016-01-29 16:49:00 +00:00
Dave Conway-Jones 6a9cb79670 Add url field to Prowl node
Npm pub v 0.0.5 to Close #169
2016-01-24 18:30:45 +00:00
Dave Conway-Jones cf66edd35c bump sensorTag version and re-publish 2016-01-20 12:38:20 +00:00
Dave Conway-Jones 154339bf30 Merge pull request #168 from jthomas/master
Add SensorTag connection status notifications.
2016-01-18 22:57:48 +00:00
James Thomas a96138f927 Add SensorTag connection status notifications. 2016-01-18 18:16:18 +00:00
Dave Conway-Jones fbddfed42d remove xs console.log in neopixel
and more ready
2016-01-18 13:06:38 +00:00
Dave Conway-Jones 3bdacd26e7 neopixel, hide menu options when not red 2016-01-13 21:21:17 +00:00
Dave Conway-Jones 08164b5f9f Add needle mode to neopixel 2016-01-13 19:59:30 +00:00
Dave Conway-Jones d38c152983 Add Shift modes to neopixel node 2016-01-12 22:53:43 +00:00
Dave Conway-Jones 4ed955cecf Slight Unicorn hat READme changes 2016-01-12 22:53:24 +00:00
Dave Conway-Jones 705c7f76c4 apply analogue in patch
Thanks @mschm
to Close #166
2016-01-12 22:37:37 +00:00
Dave Conway-Jones f0867c5a01 update gitignore 2016-01-11 21:23:23 +00:00
Dave Conway-Jones 5ebbf546d2 Add Pi Neopixel node 2016-01-11 21:23:23 +00:00
Dave Conway-Jones ff8f95066b Add Pi Unicorn Hat node 2016-01-11 21:23:23 +00:00
Dave Conway-Jones 251d5c8be6 fix pilcd access to io (needs to be root) 2016-01-11 21:23:23 +00:00
Dave Conway-Jones d5b95cf7a7 flag current error with ping command on Pi 2016-01-11 21:23:23 +00:00
Dave Conway-Jones 2aee38e29d Merge pull request #158 from Shirk/feature/pushover-notification-sounds
Add support for pushover sound selection.
2016-01-11 21:13:52 +00:00
Dave Conway-Jones ae25111ccc update sqlite node pre-reqs
bump versions
2016-01-04 19:18:55 +00:00
Dave Conway-Jones 0648f4cc0d Add status indicators to PiFace node 2016-01-03 18:23:49 +00:00
Dave Conway-Jones 7408cf7674 Fix PiFace node initial state so it works...
(which it never did… oops! )
2016-01-03 12:25:08 +00:00
Dave Conway-Jones 0662354ec3 Update blink1 node to allow multiple blink1s 2016-01-02 12:27:57 +00:00
Dave Conway-Jones 681bdae576 Update BBB nodes to support Jessie
Fix to close #156
Now mandates octalbonescript so a minor version bump.
2016-01-01 14:38:39 +00:00
Dave Conway-Jones c2dc764965 Update LEDborg node to set status more correctly on error 2016-01-01 14:35:54 +00:00
Dave Conway-Jones 9e9a5e21be Updated mins node to use default resolve order
Should help remove issue #159
2016-01-01 14:31:55 +00:00
Dave Conway-Jones ce677d221b tidy up Ping node close 2015-12-26 19:21:24 +00:00
Dave Conway-Jones 617e6809b5 let LEDborg handle numeric numbers
just helps make it more resilient.
2015-12-24 14:29:37 +00:00
René Köcher f5ae0d2c75 Add available sounds to config view. 2015-12-23 13:42:22 +01:00
René Köcher 1557f53e1c Add support for pushover sound selection. 2015-12-23 11:11:04 +01:00
Dave Conway-Jones 5568238058 Update PiFace README
to include instructions to make it work on Jessie etc.
2015-12-20 11:39:59 +00:00
Nick O'Leary 97d7eea4bc bump twitter version 2015-12-18 16:30:52 +00:00
Nick O'Leary d19d05955e Merge pull request #157 from andypiper/master
Update links to Twitter docs
2015-12-18 16:29:16 +00:00
Andy Piper 37f08c0c5d Fix links to Twitter docs 2015-12-18 13:54:48 +00:00
Dave Conway-Jones 5fe8f83bc5 Let nam node actual create error event
(rather than just warn…)
2015-12-17 17:15:43 +00:00
Dave Conway-Jones 5f1513bed3 update Stomp to support v1.1
Thanks @ozomer - to close #141
2015-12-17 17:15:01 +00:00
Dave Conway-Jones f74a2f4d04 Revert emoncms label change 2015-12-13 09:47:26 +00:00
Dave Conway-Jones 1a9da583f1 Update Pi Hardware nodes that call python
Pibrella, PiLiter, PiLcd
2015-12-12 16:33:39 +00:00
Dave Conway-Jones 11dfcd4a46 Fix RBE node gap validation to allow floating point 2015-12-11 15:13:12 +00:00
Dave Conway-Jones c28f46ec9d Fix mins Name resolution ordering - thanks @PTS93
Fix to close #155
Pushed to npm as 0.0.10
2015-12-10 17:03:20 +00:00
Dave Conway-Jones d1e5025566 Finally upgrade serial port to serialport2
To address #139
2015-12-10 12:49:12 +00:00
Dave Conway-Jones 29cbd46b85 update piliter python script
(was well behind the curve)
2015-12-09 23:05:21 +00:00
Dave Conway-Jones e04f65040c Grammar correction in mongo readme
to close #152
2015-12-09 20:12:17 +00:00
Dave Conway-Jones bbed4bab9a Emoncms - drop time if not a number
and update docs.
2015-12-09 13:21:42 +00:00
Nick O'Leary 596736be75 Bump twitter version 2015-12-07 20:37:27 +00:00
Nick O'Leary 58107d5c8d Merge pull request #151 from andypiper/master
fix for OAuth on older browsers (e.g. Epiphany on Pi)
2015-12-07 20:36:13 +00:00
Andy Piper d54027e324 fix for OAuth on older browsers (e.g. Epiphany on Pi) 2015-12-07 17:41:42 +00:00
Dave Conway-Jones 8a4b0892b1 fix physics-web node package.son 2015-12-01 16:17:44 +00:00
Dave Conway-Jones 083d2841db add oldlace to ledborg docs, and try to make clearer.
to close #149
2015-11-30 16:58:02 +00:00
Dave Conway-Jones 25eab38abc bump emoncms package number 2015-11-30 16:56:53 +00:00
Dave Conway-Jones 396173525b let emoncms node accept simple objects 2015-11-30 14:23:52 +00:00
Dave Conway-Jones d8f1ecc629 Merge pull request #146 from hardillb/master
Pushing Physical-web node to node-red-nodes
2015-11-30 13:52:39 +00:00
Ben Hardill d9fb187cdd Pushing Physical-web node to node-red-nodes
Hopefully fixing jslint errors

And once more

Getting closer

I think I've finally squashed all the jshint errors
2015-11-23 16:31:30 +00:00
Dave Conway-Jones 59881386e8 Merge pull request #144 from endreszabo/master
Add topic event support for IRC node
2015-11-21 17:29:03 +00:00
Dave Conway-Jones 439a890688 Make LEDborg use more clear,
warn if more than one deployed at a time.
2015-11-21 16:36:27 +00:00
Dave Conway-Jones ddacd61ab0 Update LEDborg - to match Pi node colours and update python 2015-11-16 23:12:35 +00:00
git@end.re 304c379b0d Add topic event support for IRC node 2015-11-16 09:33:59 +01:00
Dave Conway-Jones b6bbcbd52f Stop serialport open loop 2015-11-09 15:57:10 +00:00
Dave Conway-Jones 601889a10f slight tidy of irc node config edit box 2015-11-04 08:41:01 +00:00
Dave Conway-Jones 08ddfac83c fix ternary assignment in timeswitch. 2015-11-03 19:21:12 +00:00
Dave Conway-Jones a0ff123673 Merge pull request #138 from d4rr3ll/master
Username and password server credentials.  
Thanks @d4rr3ll
2015-11-03 19:19:31 +00:00
Nick O'Leary d82ce7c58a Tidy up emoncms json parse on success 2015-11-03 11:03:02 +00:00
Nick O'Leary f5950211af Merge pull request #136 from glynhudson/master
Add 'Emoncms in' to fetch latest feed value from emoncms server
2015-11-03 10:52:10 +00:00
Dave Conway-Jones 805287cad9 Initial push of timeswitch node 2015-11-02 17:24:27 +00:00
Dave Conway-Jones fe2ae9c0a3 Let serialport node only report errors once
instead of repeating
2015-11-02 10:40:53 +00:00
Dave Conway-Jones e1b02c90dd let mysql report errors to catch node 2015-11-01 15:04:42 +00:00
Dave Conway-Jones 2ef447dfeb Add PiSRF node - reads SRF05 (or 04) Ultrasonic range module 2015-11-01 14:59:21 +00:00
Dave Conway-Jones 1e870d431f Add Pi LCD node for simple LCD modules 2015-11-01 14:58:24 +00:00
Darrell Taylor e4a9bca7d0 bump package version 2015-11-01 12:40:07 +00:00
Darrell Taylor c7e1a86502 Only set username and password in the irc options if they are actually set in serverConfig 2015-11-01 12:39:07 +00:00
Darrell Taylor bb43dd31a0 username and password for irc-out as well 2015-10-30 18:47:13 +00:00
Darrell Taylor 41f397add7 moved username and password into credentials, and upped the version of irc as ssl didn’t work with the older version. 2015-10-30 18:34:35 +00:00
Darrell Taylor 994039de15 Merge remote-tracking branch 'upstream/master' 2015-10-30 16:14:24 +00:00
Dave Conway-Jones 35aed787ae simplify tweet node object check for humans 2015-10-28 23:57:09 +00:00
Dave Conway-Jones be1e89bf31 fix dweetio node object checker. 2015-10-28 22:46:29 +00:00
Glyn Hudson 6bf034cabb don't log success and don't pass 'time' as an API parameter for emoncms-in 2015-10-27 15:24:45 +00:00
Glyn Hudson dc3c1b7cc4 Don't log when all is good, parse JSON retun 2015-10-26 00:47:55 +00:00
Nick O'Leary 9a45cce3b7 Fix lint error in twitter node 2015-10-25 21:35:14 +00:00
Glyn Hudson 1467575f6c change emoncms-out node name back to 'emoncms' to avoid breaking current user flows 2015-10-25 10:07:54 +00:00
Darrell Taylor d0ff3621c2 Username and password server credentials. Specifically to allow connection to slack IRC. 2015-10-22 19:00:03 +01:00
Glyn Hudson df6fe4b17c Add 'Emoncms in' to fetch latest feed value from emoncms server 2015-10-21 12:08:30 +01:00
Dave Conway-Jones 4121abf5d2 bump dweetio package to force republish 2015-10-21 08:13:53 +01:00
Dave Conway-Jones d330ce9da5 Update blink1 node to use done() on close. 2015-10-20 19:30:25 +01:00
Dave Conway-Jones 700d5e342a update sample to refer to fa-icons 2015-10-20 19:29:54 +01:00
Nick O'Leary d8ffba3338 Update mongodb dependency
Fixes #133
2015-10-11 21:11:39 +01:00
Nick O'Leary 6b6f90a006 Better validation of feedparser uri
Fixes #134
2015-10-11 21:05:55 +01:00
Dave Conway-Jones 5d4a255876 Add Standard Deviation calculation to smooth node 2015-10-11 17:47:08 +01:00
Dave Conway-Jones 5316ff715c Fix spelling in Intel Galileo node READme 2015-09-24 19:00:27 +01:00
Dave Conway-Jones ffb6d267ed Bump blink node to pickup newer dependancy
(should compile on node v0.12)
2015-09-24 18:59:50 +01:00
Dave Conway-Jones c5db30d0c4 Tidy up xmpp node formatting
(diff looks awful… it isn’t really)
2015-09-24 18:58:24 +01:00
Dave Conway-Jones 4e63566dbf bump sensor tag to use latest upstream lib
(to get mag switch function)
2015-09-23 09:45:20 +01:00
Dave Conway-Jones b7ed95f60f Add Intel Galileo/Edison Gpio nodes 2015-09-21 17:03:50 +01:00
Dave Conway-Jones 2b857cddf2 Move several nodes to "mobile" category
Nma, pushbullet, pusher, pushover, twilio
2015-09-16 22:38:38 +01:00
Dave Conway-Jones d00f4a7e32 Add basic info to feed parse info 2015-09-12 22:32:15 +01:00
Dave Conway-Jones 7de54b9af2 Remove accept-header from feed parser request... 2015-09-12 21:31:11 +01:00
Dave Conway-Jones d782a5afb6 Allow twitter out node to specify extra parameters
to close #119. Thanks @sacbhale
2015-09-04 09:20:37 +01:00
Dave Conway-Jones 059c7a2d67 slight update to daemon node words
to clarify arguments
2015-09-02 10:56:32 +01:00
Dave Conway-Jones 0f9bd05180 Add meg switch input to Ti Sensortag node 2015-08-27 10:56:43 +01:00
Dave Conway-Jones 4e6f76cc1d Add device target bailty to pushover node 2015-08-25 21:04:54 +01:00
Dave Conway-Jones 834115907c update serial port package ver so can republish 2015-08-25 21:04:27 +01:00
Dave Conway-Jones 2d5a71aec2 correct syntax for serial port standalone install 2015-08-25 14:04:46 +01:00
Dave Conway-Jones 56ff75a37d add priority -2 to pushover node.
to close #129
2015-08-15 20:00:40 +01:00
Dave Conway-Jones 7562df3035 Delete setenv.sh 2015-08-11 19:58:03 +01:00
Dave Conway-Jones 164c9bbfd9 Delete puball.sh 2015-08-11 19:57:54 +01:00
Dave Conway-Jones e3e2df935f fatten up rbe icon slightly 2015-08-11 19:56:23 +01:00
Nick O'Leary 285450523c Move to travis container service 2015-07-22 13:12:30 +01:00
Nick O'Leary ae469e8a72 Fix email test for i18n 2015-07-22 12:36:19 +01:00
Nick O'Leary 3e4cb4ea1d Install the git repo of NR, not npm package 2015-07-22 12:30:01 +01:00
Nick O'Leary 7bfc23b121 Fix path to grunt cli 2015-07-22 12:25:34 +01:00
Nick O'Leary af17bb62da restore npm install 2015-07-22 12:21:25 +01:00
Nick O'Leary 8576a9f1c0 Add node 0.12 and tidy up debug 2015-07-22 12:15:09 +01:00
Dave Conway-Jones 66572b2669 Merge pull request #125 from hardillb/master
fix typo in sensorTag type
2015-07-21 10:31:44 +01:00
Ben Hardill f7846c284b fix typo in sensorTag type 2015-07-21 09:17:31 +01:00
Nick O'Leary f1c8cb5e83 Fix twitter auth 2015-07-17 13:52:19 +01:00
Nick O'Leary 5dc0c0e968 Fix merge conflicts on i18n 2015-07-15 10:24:44 +01:00
Dave Conway-Jones f385c13d44 bump package versions of i18n nodes
twitter, feed parser, email, and rbe
2015-07-14 23:03:46 +01:00
Dave Conway-Jones b4fba0dd79 point rbe to correct icon 2015-07-14 22:10:18 +01:00
Dave Conway-Jones 463ad75357 fixes/updates to be i18n version 2015-07-14 22:01:08 +01:00
Dave Conway-Jones 1ff66443fb add be i118n version with test 2015-07-14 21:03:07 +01:00
dceejay 50c9a5f1e1 Fix RBE node to pass tests (and add % diff) test 2015-07-12 20:14:24 +01:00
dceejay c98d8a4baa Cleanup package.json and Gruntfile for v0.12 use 2015-07-12 20:13:41 +01:00
Dave Conway-Jones 322c996064 Let dweetio node send objects without alteration 2015-07-09 23:27:15 +01:00
Nick O'Leary ee5ff8b010 Send status message id to be nls'd in editor 2015-07-07 21:31:28 +01:00
Dave Conway-Jones 35eb6d71cd remove superflous console.log from rbe node 2015-07-05 22:44:09 +01:00
dceejay f57d8b388a Better fix for sensorTag node linting - as in actually still works... 2015-07-05 15:29:24 +01:00
dceejay ce315bfe84 fix sensorTag linting 2015-07-04 22:21:00 +01:00
dceejay c09c58d729 Add % mode to rbe node deadband mode 2015-07-04 12:59:18 +01:00
dceejay 6aa5500d34 Fix sensortag to still work with "old" tags ;-) 2015-07-02 13:29:13 +01:00
dceejay 91dc58d2b0 Update SensorTag to include Luxo and cleanup layout 2015-07-01 23:45:34 +01:00
Dave Conway-Jones a8cb187321 Merge pull request #120 from hardillb/master
fix the version of node-sensortag lib and bump version
2015-07-01 14:04:48 +01:00
Ben Hardill d87612eadf fix the version of node-sensortag lib and bump version 2015-07-01 10:38:27 +01:00
dceejay ec2da4b780 banging head on wall that is travis 2015-06-30 14:10:10 +01:00
dceejay b03358e515 travis.yml again... 2015-06-30 13:40:28 +01:00
Dave Conway-Jones 9eb340f83b still trying to find grunt 2015-06-30 11:18:47 +01:00
dceejay 0a52cfa606 travis grunt again.... 2015-06-30 10:56:06 +01:00
dceejay fedb221011 Still fighting travis... 2015-06-30 10:51:46 +01:00
dceejay 5e418e8147 Travis now needs to build node-red 2015-06-30 10:44:11 +01:00
dceejay 18047178ea Finally getting there with Travis. 2015-06-30 10:35:02 +01:00
dceejay 1f27be73fe once more with travis 2015-06-30 10:24:20 +01:00
dceejay 41eeb16ec7 Still fighting with Travis 2015-06-30 10:19:23 +01:00
dceejay 47052e5114 fix bad formatting in .travis.yml file 2015-06-30 09:57:48 +01:00
dceejay fd5419d364 add more debug to travis 2015-06-30 09:46:23 +01:00
dceejay 636be58cfb may as well install the version of npm travis knows about for testing with. 2015-06-30 09:38:59 +01:00
dceejay 129ebac5aa update email test
try to fix test runtime path
2015-06-29 22:41:06 +01:00
dceejay 3f08764dd4 Let RBE node handle multiple msg.topic at the same time. 2015-06-29 17:29:27 +01:00
Dave Conway-Jones 04f43851e5 fix incorrect test of email header
fix for #118 (mea culpa)
2015-06-19 22:38:44 +01:00
Dave Conway-Jones d21b24bbce check header properties in email node
to close #118
2015-06-19 22:34:07 +01:00
Dave Conway-Jones fc05ddd035 Re-enable email node basic tests...
it’s a start….
2015-06-19 16:54:07 +01:00
dceejay 56bb10642a Update Note(s) in READMEs for all moved out nodes.
redis, mongo, email, feedparse, twitter, irc, arduino, serialport
2015-06-16 21:37:22 +01:00
dceejay b33c6605b1 fix README for Twitter so it renders correctly in flows.nodered.org 2015-06-16 17:41:32 +01:00
Nick O'Leary fd4b319af9 Fix misnamed nls message in serial node 2015-06-16 16:13:55 +01:00
dceejay ba0e2c3796 Merge linting error fixes into i18n branch of n-r-n 2015-06-16 14:38:36 +01:00
Nick O'Leary da209a6b66 Update core nodes to pull common msgs from node-red ns 2015-06-16 11:16:29 +01:00
dceejay c63575e538 skip other email test also temporarily 2015-06-16 10:47:44 +01:00
Nick O'Leary 7d011dac99 Add i18n content for moved core nodes 2015-06-16 10:36:19 +01:00
dceejay 36bc2e6b06 Correct spellings in email readme,
skip test for now.
2015-06-16 09:17:06 +01:00
dceejay 8d7c00d247 corrections to recent package changes
to close #117
2015-06-16 08:36:30 +01:00
dceejay 351ac84dca Update twitter, feedparser and over pacakage.json for node-red-nodes
(to include correct dependencies)
2015-06-15 19:42:31 +01:00
dceejay 91cae31fc1 Add email test to node-red-nodes 2015-06-13 18:53:03 +01:00
dceejay 02c21c6e89 Add redis to node-red-nodes, fix lint etc 2015-06-13 18:53:03 +01:00
dceejay 909afe9fed Add mongo to node-red-node, fix lint etc 2015-06-13 18:53:03 +01:00
dceejay 8a83618618 Add Twitter to node-red-nodes. fix lint etc 2015-06-13 18:53:02 +01:00
dceejay 19b72a90cd Add feedparse to node-red-nodes, fix lint etc 2015-06-13 18:53:02 +01:00
dceejay 374a8efbf6 add email node to node-red-nodes, fix lint etc 2015-06-13 18:53:02 +01:00
dceejay 73319a20b9 add serialport to node-red-nodes, fix lint etc etc 2015-06-13 18:53:02 +01:00
Nick O'Leary cfb8ab7e92 Fix multiple mqlight node subscriber issue 2015-06-09 10:07:11 +01:00
dceejay d515deece1 Move Arduino node from core to external 2015-06-06 18:13:53 +01:00
dceejay 5e22eb2904 fix what3words jslint 2015-06-01 09:07:28 +01:00
dceejay 340d54e0ea beef up IRC node optional compile warnings note in readme 2015-05-30 09:38:30 +01:00
dceejay 76fe4123f6 Add what3words node 2015-05-29 17:49:19 +01:00
dceejay 76f55af264 Update Package.json file for all node-red-nodes to be Apache-2.0 2015-05-29 14:58:34 +01:00
dceejay 621b6a2bcf Update license in package.json to Apache-2.0 2015-05-28 22:07:55 +01:00
dceejay 8920b981ef leveldb reports not ready as error rather than warn,
so can be seen by catch node.
2015-05-21 14:12:49 +01:00
dceejay b03db617e2 make LevelDb node aware of db ready/not ready to reduce errors. 2015-05-21 12:37:48 +01:00
dceejay 17b1a9a785 bump pusher package to include fixed pusher npm
(had a security hole)
2015-05-21 12:36:58 +01:00
dceejay 64d3b11fd9 slightly nicer jscs style updates to several nodes
again not pushed to npm - still just whitespace.
2015-05-11 20:04:51 +01:00
dceejay f497b57b7d Apply consistent style to node-red-nodes
(not updating npm for this yet - just whitespace)
2015-05-11 19:25:39 +01:00
dceejay 84f61a0466 Add minimal code style to node-red-node (jscs)
Optional grunt task - grunt style
2015-05-11 16:17:47 +01:00
dceejay 36ac3817a7 Bump test coverage for Exif node.
Remove dependancy on actual jpg files.
2015-05-10 19:27:35 +01:00
dceejay 87c93dc925 Lint mistake - fix mdns node 2015-05-08 23:03:51 +01:00
dceejay 5dbf104048 Add basic announce capability to mdns node. 2015-05-08 20:57:15 +01:00
dceejay 68e639c98a Stomp - allow msg.headers to set headers on output node 2015-04-28 21:04:50 +01:00
dceejay dd79a64de9 remove old hue node and update README
(there is a better node-red-contrib-hue node on npm)
2015-04-27 22:24:47 +01:00
dceejay f4973cf189 Update project ReadMe to phycially point to contribution guidelines. 2015-04-27 17:52:14 +01:00
dceejay d060e0b301 remove snapchat node, update pusher node, grammer correct random node package.json 2015-04-24 21:17:02 +01:00
dceejay 578b010ab0 Add PID Controller node 2015-04-23 14:31:08 +01:00
dceejay 18c866b490 Stomp node - call close with callback correctly. 2015-04-23 10:06:09 +01:00
Nick O'Leary db0047379f Defer creation of Pushbullet eventemitter 2015-04-22 13:19:51 +01:00
Nick O'Leary e41893eccb Random node always returns floating point 2015-04-22 13:18:55 +01:00
Nick O'Leary 2de7a46bb9 Fix pushbullet test 2015-04-20 11:08:35 +01:00
Nick O'Leary 66581d71e1 Better error handling in PushBullet nodes 2015-04-20 10:50:36 +01:00
Nick O'Leary 889b62cf70 Pass message to error handler on MQlight send fail 2015-04-17 21:14:20 +01:00
Nick O'Leary 2c242c76c7 Add mqlight node error handler 2015-04-17 21:09:47 +01:00
dceejay a886b663f8 tweak Gruntfile - for some reason pointing actually at the .jshintrc file
works better than just saying "true".
2015-04-17 21:08:10 +01:00
dceejay 89dcdb2139 Add amber as a named colour to blinkstick 2015-04-17 21:07:25 +01:00
dceejay 97d271be2c make sure stomp client calls done on close. 2015-04-17 21:06:27 +01:00
dceejay 31318b03d7 Update stomp docs, fix json parse over-optimism. 2015-04-17 09:29:58 +01:00
dceejay 88ae31a6b8 Point Gruntfile to external .jshintrc 2015-04-16 11:56:30 +01:00
dceejay bb9d67f1ae Update node-red-nodes - clean up lint issues (mainly unused funcs and vars) 2015-04-16 10:58:34 +01:00
dceejay 1e7717ac8a Add jshintrc and inline lint checking to node-red-nodes 2015-04-16 10:56:22 +01:00
dceejay cd57346cae Update leveldb node to try to force topic to string for key.
Add extra "help" for blink1 users.
2015-04-14 17:23:31 +01:00
dceejay e56029b3e3 Tidy up node-red-nodes 2015-04-10 11:56:17 +01:00
dceejay 4dc2db2f95 Fix type in Discovery, add extra fields to IRC. 2015-04-09 11:26:07 +01:00
Nick O'Leary 1fda2d56ab Merge pull request #110 from hardillb/master
Updating doc to mention only 1 sensorTag can be used at any given time.
2015-04-08 14:07:36 +01:00
Ben Hardill 02e16f64ba Updating doc to mention only 1 sensorTag can be used at any given time. 2015-04-08 13:54:42 +01:00
dceejay 25c10cfd58 Add main IRC node to node-red-nodes in anticipation of deprecation from core 2015-04-08 09:57:09 +01:00
dceejay 6158aa2b73 Tidy up old snapchat node 2015-04-08 09:56:39 +01:00
dceejay 4dae7ece06 add ngeohash to package.json for tests... 2015-03-31 15:35:37 +01:00
dceejay 9b56b6f4c3 add some more tests (and fixes for resulting bugs :-) 2015-03-31 15:15:38 +01:00
dceejay 3c4d4b91d9 fixes for speeling mistooks in smooth and msgpack fixes. 2015-03-31 13:25:59 +01:00
dceejay b112f03a64 add rbe to missing payload compatible list. 2015-03-31 13:19:02 +01:00
dceejay 3896a82bd8 Start making non-red-nodes tolerant to missing payloads 2015-03-31 13:18:25 +01:00
dceejay 32f6dc0346 tart up Gruntfile 2015-03-26 19:43:30 +00:00
dceejay d511ee69fb lots of little node edits to clean up jsHint "errors" 2015-03-26 18:55:03 +00:00
dceejay 8eca22bdc3 update gruntfile to cover all files 2015-03-26 18:54:10 +00:00
dceejay 79a149dc17 update package.json 2015-03-25 08:52:57 +00:00
dceejay bd8b0678fd extra logging for exif test 2015-03-25 08:44:37 +00:00
dceejay 63abf0a8c3 Let blinkstick handle strings of neopixels 2015-03-25 08:33:02 +00:00
dceejay 24394c4b18 Initial test build framework for node-red-nodes 2015-03-24 19:42:32 +00:00
dceejay 903bbe505a nudge up level for xmpp node 2015-03-24 16:47:51 +00:00
dceejay 87a8814fe0 Fix for sqlite not retrying to open database (and crashing)
Fix for #106
2015-03-18 08:47:09 +00:00
dceejay 5a27ce17e8 fix fix for #105 2015-03-16 17:32:08 +00:00
dceejay 9d11a48cb1 Update to BBB node
Fixes #105
Thanks @maxwellhadley
2015-03-16 16:28:01 +00:00
dceejay 732a38e214 remove deprecated postgress node
now that npm search includes nodes
2015-03-16 16:25:57 +00:00
dceejay 96bfc5b672 update redmes and some colours for blink1, ledborg and digirgb 2015-03-12 13:54:20 +00:00
dceejay 7135bb3067 Make blink1 (and ledborg) consistent with both docs and cheerlight colours
Close #102
2015-03-12 11:12:44 +00:00
dceejay 7307891aee Fix for suncalc for non UTC timezones
Thanks to @pmscientist
2015-03-07 20:36:22 +00:00
dceejay 5b6cca1dd0 Move ping and wol nodes to network category 2015-03-04 19:57:22 +00:00
dceejay 8df7189058 Add discovery (mdns) and SNMP nodes 2015-03-04 19:55:53 +00:00
dceejay a5adbc2207 Catch blink1 missing device error 2015-02-24 17:29:51 +00:00
dceejay f550024bb2 bump nma, prowl, pushover package.json files to republish to npm 2015-02-19 12:59:07 +00:00
Nick O'Leary 85f541d346 Fix credential input field names 2015-02-17 22:11:07 +00:00
dceejay 207b5c6fc3 Tidy up msgpack node info 2015-02-14 18:23:36 +00:00
dceejay 7338a17991 Tiny tidy up of RBE node 2015-02-14 17:56:29 +00:00
dceejay ba557b93c1 bump swearfilter overall package version for npm publish 2015-02-13 14:57:17 +00:00
Nick O'Leary 4d0eb516db Merge pull request #98 from hardillb/master
Fix dependency on the badwords package
2015-02-13 14:45:14 +00:00
Ben Hardill d214a36e1a Fix dependency on the badwords package
Fix #97
2015-02-13 14:20:18 +00:00
Nick O'Leary e61fd93162 Add mqlight readme 2015-02-13 10:40:40 +00:00
Nick O'Leary 01cd2427d2 Add mqlight icon 2015-02-13 10:38:01 +00:00
Nick O'Leary 6e671e85f2 Fix another mqlight package.json typo 2015-02-13 10:34:12 +00:00
Nick O'Leary 085cd3d1d3 Fix mqlight package.json typo 2015-02-13 10:33:39 +00:00
Nick O'Leary 4fe2f82f2f Add mqlight license/package 2015-02-13 10:32:43 +00:00
Nick O'Leary 631f1528e9 Pushover credential fields incorrectly named 2015-02-08 22:52:11 +00:00
dceejay cba50b74a2 Add neopixel array capability to Blinkstick node 2015-02-07 19:31:37 +00:00
Dave Conway-Jones 4742e19202 Merge pull request #95 from dsundberg/pushbullet-enhance
Thanks @dsundberg. Updated pushbullet node with all push types, added new "pushbullet in" t...
2015-02-07 17:59:24 +00:00
dceejay fddfee59e6 Missing , on prowl node update 2015-02-07 12:18:42 +00:00
dsundberg 425858d94d Updated pushbullet node with all push types, added new "pushbullet in" that emits pushes. Added unit tests. 2015-02-07 12:36:30 +01:00
Nick O'Leary 08791f1914 Update all nodes to credentials system and auth middleware 2015-02-06 21:10:14 +00:00
dceejay f4fdebfba5 Misc tidy ups of jsHint "issues" for some node-red-nodes 2015-02-05 13:52:20 +00:00
dceejay 3644f16a89 Fix type in Notify node package.json
Thank @natcl
close #96
2015-02-03 18:24:14 +00:00
dceejay 1d90f7006f Update LEDborg node to use RPi.GPIO
Fix to Close #93
2015-01-30 08:43:55 +00:00
dceejay 9170cc6282 Little extra loading error handling for BBB node 2015-01-29 16:41:39 +00:00
dceejay 0a5b184dad Allow hue lamp to specify IP manually...
for those cases where discovery doesn't...
2015-01-29 16:41:06 +00:00
dceejay 102c4b4d6c Deprecate Rawserial node - no longer needed
as Windows now has binary support built in.
2015-01-29 16:37:50 +00:00
dceejay 5982da8495 Add bind capability to sqlite and mysql nodes
Thanks to Scott Penrose for the patch.
2015-01-26 10:57:13 +00:00
dceejay d7dc9dae20 Merge branch 'master' of github.com:node-red/node-red-nodes 2015-01-23 13:34:37 +00:00
dceejay 9c36a44545 Add simple RBE node 2015-01-23 13:34:10 +00:00
Nick O'Leary b7a1193d32 Update mysql to use credentials system
Fixes #86
2015-01-19 09:46:29 +00:00
dceejay fb7ccc7736 sync sample node with main sample
reduce exif error messages so false-positives don't keep getting reported
2015-01-12 19:14:04 +00:00
dceejay ac0aa40e24 Update Piliter node to use python library. 2015-01-06 14:54:45 +00:00
dceejay c4ab9cd6bb Publish notify node to npm (add package, license, etc) 2015-01-04 21:55:21 +00:00
dceejay 39bf90b506 Tidy up heatmiser node and publish as npm 2015-01-04 21:46:19 +00:00
dceejay c7c8a9bbe2 Correct emoncms package.json (remove extra ,)
Update sample nodes in line with main nodes directory
2015-01-04 21:14:00 +00:00
dceejay f6dc63953c Merge branch 'master' of github.com:node-red/node-red-nodes 2015-01-04 20:37:21 +00:00
dceejay 0065227c68 Fix emoncms spilling mistake
Also add it as an npm package node-red-node-emoncms
2015-01-04 20:34:12 +00:00
Dave Conway-Jones 84dd741165 Merge pull request #71 from wnagele/master
Moved node-red-node-ddb into own repo
2014-12-29 20:53:03 +00:00
dceejay 2469d25419 Remove DDB as now available direct from author on NPM
npm install node-red-node-ddb
2014-12-29 20:34:14 +00:00
dceejay ba7de5a383 Update BBB readme and package version - publish to npm 2014-12-29 20:33:24 +00:00
dceejay 50194c4d07 Merge branch 'master' of github.com:node-red/node-red-nodes 2014-12-29 20:21:03 +00:00
Dave Conway-Jones debfafb3fe Merge pull request #91 from maxwellhadley/master
BBB nodes will use octalbonescript if it is available

Thanks to @maxwellhadley
2014-12-29 20:20:34 +00:00
Maxwell Hadley ee341f7056 BBB nodes will now use octalbonescript if it is available 2014-12-29 18:15:57 +00:00
Max Hadley 7d541c38a7 Merge pull request #4 from node-red/master
Catch-up 2014-12-29
2014-12-29 17:59:13 +00:00
Dave C-J 0ff8648258 New Pibrella node - Can use softpwm on all outputs.
Buzzer no longer breaks audio.
2014-12-26 15:24:21 +00:00
Dave C-J 3d8a510bae Merge branch 'master' of https://github.com/node-red/node-red-nodes 2014-12-24 21:53:23 +00:00
Dave C-J 98a029bfd7 Slightly better hardware discrimination for Hummingboard Node 2014-12-24 21:53:00 +00:00
Dave C-J 3e21d7d730 New Daemon node to call and monitor long running external commands 2014-12-24 21:51:17 +00:00
Dave Conway-Jones a860f4606e Merge pull request #88 from hardillb/master
Fix digiRGB node
2014-12-23 13:13:54 +00:00
Ben Hardill 1ef562edbd Removed "use strict" as it breaks this node. I'm investigating why.
Also updated the package.json to reflect autors and bumped version number
2014-12-22 16:04:08 +00:00
Dave C-J 4a0608d2e9 slight speelling correction to sensortag package.json 2014-12-22 14:26:17 +00:00
Dave Conway-Jones 337c22e7f3 Merge pull request #87 from hardillb/master
Updated doc and added package.json
2014-12-22 14:21:17 +00:00
Ben Hardill c45c625872 Updated doc and added package.json 2014-12-22 13:12:34 +00:00
Dave C-J fb1bd83285 Merge branch 'master' of https://github.com/node-red/node-red-nodes 2014-12-12 23:17:28 +00:00
Dave C-J bad0142f61 Correct timezone param in mysql node 2014-12-12 23:16:40 +00:00
Dave C-J 5cd7a73baf Make Rawserial node fail more quietly 2014-12-12 23:15:42 +00:00
Dave C-J c128184d6a re-categorise Geohash node as location 2014-12-12 23:15:09 +00:00
Dave Conway-Jones a84555acab Merge pull request #85 from madeddie/master
New version of nma package available
Thanks @madeddie
Yes - nailing down the pre-reqs is a decision we have made... even if (as in this case) it does break us occasionally.
2014-12-12 16:58:40 +00:00
Edwin Hermans 3b6f0ae222 pinned version of nma dependency 2014-12-12 10:36:15 +01:00
Edwin Hermans 24282291f4 updates for new version of nma package 2014-12-12 01:01:18 +01:00
Edwin Hermans e5d75fbd9b Update package.json 2014-12-12 00:57:01 +01:00
Dave C-J 5f78aa10ad niggles in new Hummingboard GPIO node 2014-12-10 17:52:33 +00:00
Dave C-J 785f2dde16 Add initial GeoHash node 2014-12-10 09:30:20 +00:00
Dave C-J dbff1dc28c Add Hummingboard GPIO node 2014-12-10 09:29:18 +00:00
Dave C-J 139dcd67bc Attempt to clarify Info text for new Twilio features. 2014-12-06 16:42:59 +00:00
Dave Conway-Jones 49e9edaf39 Merge pull request #84 from thiseldo/master
Add Call capability to Twilio out node
thanks @thiseldo
2014-12-06 16:36:16 +00:00
Andrew Lindsay 5fc3bd80ba Updated to make calls 2014-11-26 20:41:26 +00:00
Andrew Lindsay d7cee30787 Updated to make calls 2014-11-26 20:37:54 +00:00
Dave C-J 317aaa1b64 Handle users of old Blinkstick npm a bit more nicely.
Don't  barf (quite so badly) on new API calls if they don't exist yet.
2014-11-20 08:44:05 +00:00
Dave C-J 74a470c22e Bump WOL package version number in anticipation of pub to npm 2014-11-19 21:44:29 +00:00
Dave C-J c646596a5d WOL fix again - this time with correct number of braces... 2014-11-19 20:52:10 +00:00
Dave C-J 661a50b123 Add try/catch to WOL node to try to grab socket error.
(Upstream fix requested).
2014-11-19 20:39:05 +00:00
Dave Conway-Jones 0a15d2d539 Merge pull request #81 from zobalogh/exif-node-tests
Adding exif node tests
2014-11-18 19:35:54 +00:00
Dave Conway-Jones 263465f010 Merge pull request #73 from arvydas/master
New features for BlinkStick node
includes animations and other cool features
Thanks @arvydas
2014-11-18 17:48:09 +00:00
Arvydas Juskevicius 61ac8fefae Improvements to BlinkStick node
* Ability to select BlinkStick by serial number
* Look up serial numbers of connected BlinkSticks
* Ability to set blink, morph and pulse animations
* Ability to control the parameters of those animations like duration,
* steps, repeats and delay
* Repeat blink and pulse animation until new payload is received
* Automatically find BlinkStick if it was removed and then plugged back in
* Connectivity status when "Node Status" is enabled in the menu
* Override parameters with payload object
* Improved text in the info pane
2014-11-18 17:16:19 +00:00
Dave C-J 6768c1b42b Update Pushbullet Node to allow use of Channels 2014-11-10 16:42:49 +00:00
zobalogh 748dbd47b6 Adding exif node tests 2014-11-10 14:53:46 +00:00
Dave C-J 7474905b08 Fix msgpack node to handle more than just objects...
Fix to close Issue #482 and #483
2014-11-09 14:28:09 +00:00
Dave C-J 8b689ca09b Add License and Readme to Exif node 2014-11-08 14:11:02 +00:00
Dave Conway-Jones b9d64b8200 Merge pull request #79 from zobalogh/exif-node
Adding Exif node.
2014-11-08 13:54:04 +00:00
zobalogh ce62e23cf2 Adding Exif node. 2014-11-07 15:29:25 +00:00
Dave C-J d47b7f57a2 re-re-fix Ping node to assemble full result before parsing.... 2014-11-07 11:44:04 +00:00
Dave C-J ebbd9f4494 Change regex for Ping node to work across languages...
(hopefully) Addresses Issue #80
2014-11-07 08:27:24 +00:00
Dave C-J f7c7c52578 Hide PiLiter node from non-Pi users 2014-11-07 08:25:53 +00:00
Dave C-J 067ece146b Add comment to Pibrella info about buzzer not sharing PWM
(kills 3.5mm audio output).
It's a Won'tfix  to close #75
2014-10-30 12:57:24 +00:00
Dave Conway-Jones 2577911b9f Merge pull request #74 from anna2130/mqlight
Added mqlight nodes with share property
2014-10-30 09:33:23 +00:00
Dave C-J 48b0c3a68b Update Pi nodes to allow initial read / level set.
More consitent use of icons
Move to Raspberry Pi category
2014-10-27 20:28:05 +00:00
Dave C-J ecbde5d3d5 Add Random number generator node. 2014-10-27 20:26:49 +00:00
Anna Thomas 9f900788f8 Added mqlight nodes with share property 2014-10-20 10:55:29 +01:00
Dave C-J 92b788155e Merge branch 'master' of https://github.com/node-red/node-red-nodes 2014-10-14 18:01:01 +01:00
Dave Conway-Jones 95a01356f5 Tweak Readme re DDB node
point out that you shouldn't have two versions installed.
2014-10-14 17:59:37 +01:00
Dave C-J c1032f9165 Add Warning to deprecated DDB node
Move to @wnagele 's version on npm.
2014-10-14 17:49:59 +01:00
Dave Conway-Jones a59a7b3d3c Update node-red-node-ddb to point to @wnagele 's version 2014-10-13 23:30:10 +01:00
Dave C-J 3e4c740b24 Add Base64 encode/decode parser node 2014-10-09 21:39:34 +01:00
Dave Conway-Jones e3c001d586 Merge pull request #72 from hindessm/remove-npm-debug-log
Remove npm debug log
2014-10-07 22:20:21 +01:00
Dave C-J 8d15e68b47 Change msgpack to use pure javascript npm implementation of lib 2014-10-02 19:38:23 +01:00
Dave C-J 2193eaab24 Update Smooth node to our more normal html layout.... 2014-10-02 19:35:07 +01:00
Mark Hindess 0825ba1dbb Add ignore file to avoid the problem in future. 2014-10-01 09:04:59 +01:00
Mark Hindess 0d2b89903d Remove Dave's npm-debug.log file. 2014-10-01 09:00:26 +01:00
Wolfgang Nagele 5cc33864e0 Prepare for submission to NPM repo 2014-09-29 14:56:28 +10:00
Dave Conway-Jones 71a02ebbce Update README.md 2014-09-26 21:30:44 +01:00
Dave C-J 4baf78e52b fix sqlite node typos 2014-09-22 20:50:25 +01:00
Dave C-J a5b3cf09e0 Add extra links to README.md 2014-09-22 20:47:06 +01:00
Dave C-J a36b6b053b Add npm info to RED.me 2014-09-22 20:00:26 +01:00
Dave C-J dc7da9680b Update README list to add smooth node to function category.
tweak Sample node to be inline with core sample node.
2014-09-21 11:17:49 +01:00
Dave C-J 410ef92166 Merge branch 'master' of https://github.com/node-red/node-red-nodes 2014-09-21 11:15:34 +01:00
Dave C-J 60dba00c73 Move Smooth node to function folder to better reflect it's category.
(as suggested by Paul)
2014-09-21 11:14:57 +01:00
Dave Conway-Jones 7d17a107d6 Update README.md 2014-09-20 23:20:28 +01:00
Dave Conway-Jones dc86a3b235 Update README.md 2014-09-20 09:29:51 +01:00
Dave Conway-Jones f08bde0e6f Added Smooth node to analysis 2014-09-20 09:26:49 +01:00
Dave C-J 328c04e390 Add smoothing node to Node-RED-nodes 2014-09-20 09:26:09 +01:00
Dave C-J 62db238294 Fix Dweetio npm package 2014-09-18 17:40:48 +01:00
Dave C-J 670ef479d6 Add Dweetio npm package 2014-09-17 21:27:56 +01:00
Dave C-J 5435a908c1 Add msgpack parser node to pack/unpack msgpack compressed buffers. 2014-09-17 21:03:10 +01:00
Dave C-J 6898b34e3b tweak packages for xmpp and suncalc - updates for npm 2014-09-17 21:03:10 +01:00
Nick O'Leary 01d1eadf65 Merge pull request #68 from hindessm/remove-redundant-null-checks
Remove redundant msg != null checks.
2014-09-08 21:53:47 +01:00
Mark Hindess b1ba8369d4 Remove redundant msg != null checks. 2014-09-08 21:42:16 +01:00
Dave C-J 68c9e2b41a Let suncalc node try to auto set geo location (if allowed) 2014-09-07 21:56:49 +01:00
Dave C-J e87eb2fb44 Update blink1 node so green is brighter 2014-09-04 11:30:52 +01:00
Dave C-J 6122dcd069 republish BBB npm 2014-09-03 22:35:00 +01:00
Dave C-J 1188f3ca3f Merge branch 'hindessm-migrate-to-fa-icons' 2014-09-03 22:19:24 +01:00
Dave C-J a2b1244d54 resolving merg conflicts with icons etc 2014-09-03 22:18:42 +01:00
Dave C-J fe44018250 Merge branch 'migrate-to-fa-icons' of https://github.com/hindessm/node-red-nodes into hindessm-migrate-to-fa-icons
Conflicts:
	io/ping/88-ping.html
	io/wol/39-wol.html
	social/nma/57-nma.html
	social/prowl/57-prowl.html
	social/pushover/57-pushover.html
	social/twilio/56-twilio.html
	storage/sqlite/sqlite.html
2014-09-03 22:16:02 +01:00
Mark Hindess fdb62b5485 Found fa icon equivalent to icon-resize-full 2014-09-03 20:52:29 +01:00
Mark Hindess f19ae71fb7 Migrate icons. 2014-09-03 16:12:26 +01:00
Dave C-J 0cd3d2cb6e spelling correction to ping node icon tag 2014-08-30 11:00:28 +01:00
Dave Conway-Jones 6b686736eb Merge pull request #65 from jhr007/patch-1
Update README.md
thanks jhr007 !
2014-08-30 10:48:40 +01:00
jhr007 d6cd5a6e32 Update README.md
Added links to npm packages
Added links to related sites, services, and products.
Changed link to Contribution Guide
Updated install instruction
2014-08-29 20:07:00 -05:00
Dave C-J 14d1cad846 Fix Suncalc nodes (strict failure). Closes Issue #64 2014-08-19 12:15:27 +01:00
Dave C-J 3a8e86d962 Tweak WOL node to display name correctly if set. Closes PR #63 2014-08-19 11:41:40 +01:00
Dave Conway-Jones 7545515b4d Update 55-dweetio.js 2014-08-07 09:52:16 +01:00
Dave C-J cef9e093e2 Update Twilio to fa -icons - correct minor spelling 2014-07-27 20:09:19 +01:00
Dave C-J 434d9808a9 Add stomp, ping, wol, wemo nodes to npm
and add fa icons
2014-07-27 18:05:23 +01:00
Dave C-J f21a08afe6 Add prowl, nma and pushover to npm, update all to fa icons 2014-07-27 16:09:50 +01:00
Dave C-J c95970a4ae Once again Dave's quality speeling causes a problem... 2014-07-25 12:30:00 +01:00
Dave C-J 2d44105ae6 Realign sqlite files to be similar to other nodes 2014-07-25 10:10:06 +01:00
Dave C-J f121f2683d Tidy ups to ping (doc), dweet (unrequired util) and ddbout (JSHint) 2014-07-25 10:09:35 +01:00
Dave C-J 2611853620 Add Pi-LITEr specific node for Pi users 2014-07-25 10:07:23 +01:00
Dave C-J 76d05dc2cd set makeymakey node to use the module.exports style 2014-07-18 21:20:14 +01:00
Dave C-J 232a11983b More tweaks to makey node - colours, jshint fixes, icons, readme etc. 2014-07-18 17:04:22 +01:00
Dave C-J 9d6d9917b8 tweak to makey udev rules file.... 2014-07-18 16:50:13 +01:00
Dave Conway-Jones 1c410476c6 Merge pull request #60 from hindessm/possible-wemo-bugs
Possible wemo node bugs? - confirmed !
2014-07-18 12:16:49 +01:00
Mark Hindess c4a7ec7ae9 Fix typo bugs. 2014-07-18 10:28:57 +01:00
Dave C-J 46b2327478 tweak MakeyMakey to add rules for USB access on Debian 2014-07-18 09:40:59 +01:00
Dave C-J a2553d69b8 add BBB, Twilio and Pushbullet as npms 2014-07-15 10:15:34 +01:00
Dave C-J 132ceaffc5 update suncalc to use fa icons 2014-07-15 10:15:04 +01:00
Dave C-J cdec6f842d Add npms for various hardware nodes, Blink1, DigiRGB, LEDBorg, PiFace 2014-07-08 22:57:42 +01:00
Dave C-J dc722f9ae0 Add MakeyMakey node and npm 2014-07-08 22:56:58 +01:00
Dave C-J 34b81c3c18 Move Heatmiser nodes into a single directory 2014-07-08 22:56:30 +01:00
Dave C-J c58ed99115 Update swearfilter and wordpos as npms 2014-07-06 21:29:30 +01:00
Dave C-J 647fe4f5d8 Add xmpp, suncalc and leveldb as npms... 2014-07-06 20:58:52 +01:00
Dave C-J dac2c7e778 Update MySQL node - fa icons, add timezone, make npm installable 2014-07-04 17:26:20 +01:00
Dave C-J 43de38453e Tweak Pibrella package.json (mis-spelt) 2014-07-04 17:25:47 +01:00
Dave C-J 10f40b0161 Add Pibrella npm 2014-07-04 16:12:19 +01:00
Dave C-J 7ef1759621 Add sqlite node to node-red-nodes (and npm) 2014-07-04 16:12:00 +01:00
Dave C-J cbaecd402a correct Blinkstick package.json 2014-07-04 16:11:34 +01:00
Dave C-J 96c3ba0282 Tweak blinkstick readme 2014-07-04 15:07:26 +01:00
Dave C-J 78d758bf85 Start moving nodes for npm install-ability
(split Blink nodes. and try blinkstick)
2014-07-04 14:51:55 +01:00
Dave C-J 999874f2b5 jsHint passing versions of BBB, scanBLE and wemo nodes.
Also fixe and in vs out issue on wemo... no way it could have been working previously..
2014-06-30 23:41:38 +01:00
Dave C-J c14364d752 Make Piface work with "strict" 2014-06-29 17:49:38 +01:00
Dave C-J ebf950d818 Update node-red-nodes sample, analysis, storage and time nodes to use strict and pass jshint scan 2014-06-28 23:37:19 +01:00
Dave C-J 43dfded402 Update node-red-nodes social nodes to use strict and pass jshint scan 2014-06-28 23:36:36 +01:00
Dave C-J 052a7d587d Update node-red-nodes io nodes to use strict and pass jshint scan 2014-06-28 23:35:33 +01:00
Dave C-J 9e0585a721 Update node-red-nodes hardware nodes to use strict and pass jshint scan 2014-06-28 23:35:21 +01:00
Dave C-J 62956b0bb8 Update node-red-nodes social nodes to use strict and pass jshint scan 2014-06-28 23:34:59 +01:00
Dave C-J 9b487098ae Tidy up rawserial node logging 2014-06-10 22:28:06 +01:00
Dave C-J 94d19b2a41 Update rawserial (roughly) in line with main serial node.
(Now has binary and timout modes)
2014-06-09 08:12:34 +01:00
Dave C-J c1357545ca Merge branch 'master' of https://github.com/node-red/node-red-nodes 2014-06-07 08:32:13 +01:00
Dave C-J 959b5401bb resize a couple of icons 2014-06-07 08:31:34 +01:00
Nick O'Leary 192c423153 Update some icons 2014-06-04 22:29:09 +01:00
Dave C-J be810be2e2 tweak node.status to be consistent with latest thinking
stomp, xmpp and suncalc.
2014-05-31 20:08:15 +01:00
Dave C-J f2dd4ae062 tidy up logging on Stomp node 2014-05-29 18:32:20 +01:00
Dave C-J 3691bc6294 XMPP node - now with credentials. And multiple connections and
clean disconnects.
2014-05-29 18:31:36 +01:00
Dave C-J ae22efb270 Updates to Stomp to enable auto reconnect, and node.status indicators 2014-05-26 10:07:20 +01:00
Dave C-J a320ddce23 Further tweaks to Pusher node - now sends objects ok,
and can receive what it sends...
Also slight rearrange of edit UI to make more like other nodes.
2014-05-24 18:29:27 +01:00
Dave C-J fe0222d498 Quick tidy up of pusher node - remove final key from flow,
fix in/out order on palette.
2014-05-24 16:38:35 +01:00
Dave C-J 6d7ecea8cd Merge branch 'master' of https://github.com/node-red/node-red-nodes 2014-05-24 16:33:30 +01:00
Dave Conway-Jones d503c12792 Merge pull request #56 from hdoukas/master
added pusher node
2014-05-24 16:32:23 +01:00
hdoukas 81f59a853d fixed credentials to never show up in the flow
removed credentials from the defaults section in pusher.html, added
oneditprepare to read them back from credentials.json when edited
2014-05-24 14:31:02 +02:00
Dave C-J 308d6cb873 New Stomp node 2014-05-19 21:07:20 +01:00
hdoukas f831f0f502 lower case node name and pusher in fixes
fixed lower case node name and replace input node to ‘pusher in’
2014-05-19 11:08:15 +02:00
hdoukas 863ff7f18b merged html and js
merged into a single html and single js file
fixed copyright typo
added credentials proper handling
2014-05-18 23:10:00 +02:00
Dave C-J f9ff63c346 updates to mpd node 2014-05-17 21:06:58 +01:00
Dave C-J 9adc2b2687 add some status to suncalc (to see how it looks) 2014-05-17 18:32:13 +01:00
Dave C-J 191f4412f6 can't spell yellow ... 2014-05-17 18:30:21 +01:00
hdoukas 3056b40ce9 added pusher node
Added nodes for pushing events to Pusher service and subscribing to
notifications from channels/events
2014-05-16 18:13:02 +02:00
Dave C-J 2b89241331 Tidied up Pi Peripheral nodes - should now work alongside base GPIO node 2014-05-06 21:00:09 +01:00
Dave C-J 3a4f870257 make Prowl consistent with Pushbullet 2014-04-27 16:39:09 +01:00
Dave C-J 2c80c90f84 Remove unnecessary console logging from Pushbullet node.
(now underlying npm has been updated... multiple nodes now work ok)
2014-04-24 18:37:11 +01:00
Dave C-J 5b28f06510 Pushbullet changes to make it more obvious what it is now doing...
(and fix a couple of things it wasn't)
2014-04-24 10:04:29 +01:00
Dave C-J 4be0e05c2a Add credentials capability to PushBullet node 2014-04-23 21:06:36 +01:00
Dave C-J a32e87ff96 Merge branch 'master' of https://github.com/node-red/node-red-nodes 2014-04-20 18:02:39 +01:00
Dave C-J 525b0aa7ac Add Notify My Android Node - with credentials support 2014-04-20 18:01:38 +01:00
Dave C-J 5962c0fe5b add pushover icon 2014-04-20 18:01:14 +01:00
Dave C-J e23be73090 Add Pushover Node - with credentials support. 2014-04-20 18:00:43 +01:00
Dave C-J 9cb153635f Disable unuseful menu option for Pibrella and Piface nodes 2014-04-20 17:58:04 +01:00
Max Hadley de655a6dde Merge pull request #2 from node-red/master
Re-sync
2014-04-15 20:55:06 +01:00
Dave C-J 03dd3bd8da tweak sample nodes to be consistent with ones in main repo 2014-04-15 15:22:06 +01:00
650 changed files with 44732 additions and 5446 deletions

34
.github/ISSUE_TEMPLATE.md vendored Normal file
View File

@ -0,0 +1,34 @@
<!--
## Before you hit that Submit button....
This issue tracker is for problems with the extra nodes maintained by the Node-RED project.
If your issue is:
- a general 'how-to' type question,
- a feature request or suggestion for a change,
- or problems with 3rd party (`node-red-contrib-`) nodes
please use the [Node-RED Forum](https://discourse.nodered.org) or [slack team](https://nodered.org/slack), or ask a question on [Stack Overflow](https://stackoverflow.com/questions/tagged/node-red) and tag it `node-red`.
That way the whole Node-RED user community can help, rather than rely on the core development team.
## So you have a real issue to raise...
To help us understand the issue, please fill-in as much of the following information as you can:
-->
### Which node are you reporting an issue on?
### What are the steps to reproduce?
### What happens?
### What do you expect to happen?
### Please tell us about your environment:
- [ ] Node-RED version:
- [ ] node.js version:
- [ ] npm version:
- [ ] Platform/OS:
- [ ] Browser:

37
.github/PULL_REQUEST_TEMPLATE.md vendored Normal file
View File

@ -0,0 +1,37 @@
<!--
## Before you hit that Submit button....
Please read our [contribution guidelines](https://github.com/node-red/node-red-nodes/blob/master/CONTRIBUTING.md)
before submitting a pull-request.
## Types of changes
What types of changes does your code introduce?
Put an `x` in the boxes that apply
-->
- [ ] Bugfix (non-breaking change which fixes an issue)
- [x] New feature (non-breaking change which adds functionality)
<!--
If you want to raise a pull-request with a new feature, or a refactoring
of existing code, it **may well get rejected** if it hasn't been discussed on
the [forum](https://discourse.nodered.org) or
[slack team](https://nodered.org/slack) first.
-->
## Proposed changes
<!-- Describe the nature of this change. What problem does it address? -->
Adds authentication option to the Email node (node-red-node-email) to use OAuth and XOAuth2
********** This version: IMAP ONLY **********
## Checklist
<!-- Put an `x` in the boxes that apply -->
- [x] I have read the [contribution guidelines](https://github.com/node-red/node-red-nodes/blob/master/CONTRIBUTING.md)
- [x] For non-bugfix PRs, I have discussed this change on the forum/slack team.
- [x] I have run `grunt` to verify the unit tests pass
- [x] I have added suitable unit tests to cover the new/changed functionality

11
.gitignore vendored Normal file
View File

@ -0,0 +1,11 @@
npm-debug.log
node_modules
.npm
coverage
puball.sh
setenv.sh
/.project
package-lock.json
social/xmpp/92-xmpp.old
*.tgz
.DS_Store

24
.jscsrc Normal file
View File

@ -0,0 +1,24 @@
{
"fileExtensions": [ ".js", "jscs" ],
"excludeFiles": [ "node_modules/**" ],
"validateIndentation": 4,
"disallowKeywordsOnNewLine": [],
"disallowMixedSpacesAndTabs": true,
"disallowMultipleSpaces": {"allowEOLComments": true},
"disallowNewlineBeforeBlockStatements": true,
"disallowTabs": true,
"disallowTrailingWhitespace": true,
"requireCurlyBraces": true,
//"requireKeywordsOnNewLine": ["else", "catch"],
//"requireSemicolons": true,
//"requireSpaceAfterBinaryOperators": true,
//"requireSpaceAfterComma": {"allExcept": ["trailing"]},
"requireSpaceAfterKeywords": ["do","for","if","else","switch","case","try","while"],
"requireSpaceBeforeBlockStatements": 1,
"requireSpaceBeforeObjectValues": false,
"requireSpacesInForStatement": true,
"requireSpacesInFunction": { "beforeOpeningCurlyBrace": true },
//"validateParameterSeparator": ", ",
//"validateQuoteMarks": false,
"maximumLineLength": 280
}

15
.jshintrc Normal file
View File

@ -0,0 +1,15 @@
{
"asi": true,
"curly": true,
"eqnull": true,
"freeze": true,
"indent": 4,
"forin": true,
"immed": true,
"nonbsp": true,
"loopfunc": true,
"shadow": true,
"sub": true,
"proto": true,
"esversion": 8
}

31
.travis.yml Normal file
View File

@ -0,0 +1,31 @@
sudo: false
language: node_js
matrix:
# allow_failures:
# - node_js: 16
include:
- node_js: 16
- node_js: 14
- node_js: 12
# - python: 2.7
# language: python
# before_script: pip install flake8
# script: flake8 . --count --select=E901,E999,F821,F822,F823 --show-source --statistics
- python: 3.7
language: python
dist: xenial # required for Python 3.7 (travis-ci/travis-ci#9069)
sudo: required # required for Python 3.7 (travis-ci/travis-ci#9069)
before_script: pip install flake8
script: flake8 . --count --select=E901,E999,F821,F822,F823 --show-source --statistics
before_install:
- npm i -g npm
before_script:
# Remove the './node_modules/.bin:' entry, see https://github.com/travis-ci/travis-ci/issues/8813
- export PATH=`echo ${PATH} | sed -re 's,(^|:)(./)?node_modules/.bin($|:),\1,'`
- npm install -g nyc grunt-cli coveralls
- npm install node-red
script:
# - istanbul cover grunt --report lcovonly && istanbul report text && ( cat coverage/lcov.info | $(npm get prefix)/bin/coveralls || true ) && rm -rf coverage
# - nyc --check-coverage --reporter=text --reporter=lcovonly --reporter=html grunt
# - nyc grunt && rm -rf coverage .nyc_output
- nyc grunt && nyc report --reporter=text-lcov | coveralls

View File

@ -1,50 +1,36 @@
<!--
Copyright 2013 IBM Corp.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<!-- Sample html file that corresponds to the 99-sample.js file -->
<!-- This creates and configures the onscreen elements of the node -->
<!-- If you use this as a template, replace IBM Corp. with your own name. -->
<!-- If you use this as a template, update the copyright with your own name. -->
<!-- First, the content of the edit dialog is defined. -->
<script type="text/x-red" data-template-name="sample">
<script type="text/html" data-template-name="sample">
<!-- data-template-name identifies the node type this is for -->
<!-- Each of the following divs creates a field in the edit dialog. -->
<!-- Generally, there should be an input for each property of the node. -->
<!-- The for and id attributes identify the corresponding property -->
<!-- (with the 'node-input-' prefix). -->
<!-- The available icon classes are defined in Twitter Bootstrap -->
<!-- The available icon classes are defined Font Awesome Icons (FA Icons) -->
<div class="form-row">
<label for="node-input-topic"><i class="icon-tasks"></i> Topic</label>
<label for="node-input-topic"><i class="fa fa-tasks"></i> Topic</label>
<input type="text" id="node-input-topic" placeholder="Topic">
</div>
<br/>
<!-- By convention, most nodes have a 'name' property. The following div -->
<!-- provides the necessary field. -->
<!-- provides the necessary field. Should always be the last option -->
<div class="form-row">
<label for="node-input-name"><i class="icon-tag"></i> Name</label>
<label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
<input type="text" id="node-input-name" placeholder="Name">
</div>
</script>
<!-- Next, some simple help text is provided for the node. -->
<script type="text/x-red" data-help-name="sample">
<script type="text/html" data-help-name="sample">
<!-- data-help-name identifies the node type this help is for -->
<!-- This content appears in the Info sidebar when a node is selected -->
<!-- The first <p> is used as the pop-up tool tip when hovering over a -->
@ -64,10 +50,11 @@
name: {value:""}, // along with default values.
topic: {value:"", required:true}
},
inputs:0, // set the number of inputs - only 0 or 1
outputs:1, // set the number of outputs - 0 to n
icon: "arrow-in.png", // set the icon (held in public/icons)
label: function() { // sets the default label contents
inputs:1, // set the number of inputs - only 0 or 1
outputs:1, // set the number of outputs - 0 to n
// set the icon (held in icons dir below where you save the node)
icon: "myicon.png", // saved in icons/myicon.png
label: function() { // sets the default label contents
return this.name||this.topic||"sample";
},
labelStyle: function() { // sets the class to apply to the label

View File

@ -1,52 +1,53 @@
/**
* Copyright 2013 IBM Corp.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
**/
// If you use this as a template, replace IBM Corp. with your own name.
// If you use this as a template, update the copyright with your own name.
// Sample Node-RED node file
// Require main module
var RED = require(process.env.NODE_RED_HOME+"/red/red");
// The main node definition - most things happen in here
function SampleNode(n) {
// Create a RED node
RED.nodes.createNode(this,n);
module.exports = function(RED) {
"use strict";
// require any external libraries we may need....
//var foo = require("foo-library");
// Store local copies of the node configuration (as defined in the .html)
this.topic = n.topic;
// The main node definition - most things happen in here
function SampleNode(n) {
// Create a RED node
RED.nodes.createNode(this,n);
// Do whatever you need to do in here - declare callbacks etc
// Note: this sample doesn't do anything much - it will only send
// this message once at startup...
// Look at other real nodes for some better ideas of what to do....
var msg = {};
msg.topic = this.topic;
msg.payload = "Hello world !"
// Store local copies of the node configuration (as defined in the .html)
this.topic = n.topic;
// send out the message to the rest of the workspace.
this.send(msg);
// copy "this" object in case we need it in context of callbacks of other functions.
var node = this;
// Do whatever you need to do in here - declare callbacks etc
// Note: this sample doesn't do anything much - it will only send
// this message once at startup...
// Look at other real nodes for some better ideas of what to do....
var msg = {};
msg.topic = this.topic;
msg.payload = "Hello world !"
// send out the message to the rest of the workspace.
// ... this message will get sent at startup so you may not see it in a debug node.
this.send(msg);
// respond to inputs....
this.on('input', function (msg) {
node.warn("I saw a payload: "+msg.payload);
// in this example just send it straight on... should process it here really
node.send(msg);
});
this.on("close", function() {
// Called when the node is shutdown - eg on redeploy.
// Allows ports to be closed, connections dropped etc.
// eg: node.client.disconnect();
});
}
// Register the node by name. This must be called before overriding any of the
// Node functions.
RED.nodes.registerType("sample",SampleNode);
this.on("close", function() {
// Called when the node is shutdown - eg on redeploy.
// Allows ports to be closed, connections dropped etc.
// eg: this.client.disconnect();
});
}
// Register the node by name. This must be called before overriding any of the
// Node functions.
RED.nodes.registerType("sample",SampleNode);

58
CONTRIBUTING.md Normal file
View File

@ -0,0 +1,58 @@
# Contributing to Node-RED
We welcome contributions, but request you follow these guidelines.
- [Raising issues](#raising-issues)
- [Feature requests](#feature-requests)
- [Pull-Requests](#pull-requests)
- [Contributor License Agreement](#contributor-license-agreement)
This project adheres to the [Contributor Covenant 1.4](http://contributor-covenant.org/version/1/4/).
By participating, you are expected to uphold this code. Please report unacceptable
behavior to any of the [project's core team](https://github.com/orgs/node-red/teams/core).
## Raising issues
Please raise any bug reports on the relevant project's issue tracker. Be sure to
search the list to see if your issue has already been raised.
A good bug report is one that make it easy for us to understand what you were
trying to do and what went wrong.
Provide as much context as possible so we can try to recreate the issue.
If possible, include the relevant part of your flow. To do this, select the
relevant nodes, press Ctrl-E and copy the flow data from the Export dialog.
At a minimum, please include:
- Version of Node-RED - either release number if you downloaded a zip, or the first few lines of `git log` if you are cloning the repository directly.
- Version of node.js - what does `node -v` say?
## Feature requests
For feature requests, please raise them on the [Node-RED Forum](https://discourse.nodered.org).
## Pull-Requests
If you want to raise a pull-request with a new feature, or a refactoring
of existing code, it may well get rejected if you haven't discussed it on
the [Node-RED Forum](https://discourse.nodered.org) first.
### Contributor License Agreement
All contributors need to sign the JS Foundation's Contributor License Agreement.
It is an online process and quick to do. You can read the details of the agreement
here: https://cla.js.foundation/node-red/node-red.
If you raise a pull-request without having signed the CLA, you will be prompted
to do so automatically.
### Coding standards
Please ensure you follow the coding standards used through-out the existing
code base. Some basic rules include:
- indent with 4-spaces, no tabs. No arguments.
- opening brace on same line as `if`/`for`/`function` and so on, closing brace
on its own line.
- There are .jshintrc and .jscsrc files included in the project which may help

68
Gruntfile.js Normal file
View File

@ -0,0 +1,68 @@
// Configuration for Node-RED-nodes project
module.exports = function(grunt) {
// Project configuration.
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
simplemocha: {
options: {
globals: ['expect'],
timeout: 3000,
ignoreLeaks: false,
ui: 'bdd',
reporter: 'spec'
},
all: { src: ['test/*/*/*_spec.js'] }
},
jshint: {
options: {
jshintrc:true // Use external jshinrc file configured as below
// http://www.jshint.com/docs/options/
//"asi": true, // allow missing semicolons
//"curly": true, // require braces
//"eqnull": true, // ignore ==null
//"forin": true, // require property filtering in "for in" loops
//"immed": true, // require immediate functions to be wrapped in ( )
//"nonbsp": true, // warn on unexpected whitespace breaking chars
////"strict": true, // commented out for now as it causes 100s of warnings, but want to get there eventually
//"loopfunc": true, // allow functions to be defined in loops
//"sub": true // don't warn that foo['bar'] should be written as foo.bar
},
all: {
src: ['*/*/*.js'],
filter: function(filepath) { // on some developer machines the test coverage HTML report utilities cause further failures
if ((filepath.indexOf("coverage/") !== -1) || (filepath.indexOf("node_modules") !== -1)) {
console.log( "\033[30m filtered out \033[32m:\033[37m " + filepath + "\033[0m");
return false;
} else {
return true;
}
}
},
},
inlinelint: {
html: ['*/*/*.html', '!node_modules/*/*.html', '!*/node_modules/*.html'],
options: {
jshintrc: ".jshintrc"
//,reporter: require('jshint-stylish')
}
},
jscs: {
src: "*/*/*.js",
options: {
config: ".jscsrc",
reporter: "inline"
//,fix: true
}
}
});
grunt.loadNpmTasks('grunt-simple-mocha');
grunt.loadNpmTasks('grunt-contrib-jshint');
grunt.loadNpmTasks('grunt-lint-inline');
grunt.loadNpmTasks('grunt-jscs');
grunt.registerTask('default', ['jshint:all', 'inlinelint:html', 'simplemocha:all']);
grunt.registerTask('style', ['jscs']);
};

199
LICENSE
View File

@ -1,191 +1,14 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
Copyright 2016 JS Foundation and other contributors, https://js.foundation/
Copyright 2013-2016 IBM Corp.
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
1. Definitions.
http://www.apache.org/licenses/LICENSE-2.0
"License" shall mean the terms and conditions for use, reproduction, and
distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by the copyright
owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all other entities
that control, are controlled by, or are under common control with that entity.
For the purposes of this definition, "control" means (i) the power, direct or
indirect, to cause the direction or management of such entity, whether by
contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity exercising
permissions granted by this License.
"Source" form shall mean the preferred form for making modifications, including
but not limited to software source code, documentation source, and configuration
files.
"Object" form shall mean any form resulting from mechanical transformation or
translation of a Source form, including but not limited to compiled object code,
generated documentation, and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or Object form, made
available under the License, as indicated by a copyright notice that is included
in or attached to the work (an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object form, that
is based on (or derived from) the Work and for which the editorial revisions,
annotations, elaborations, or other modifications represent, as a whole, an
original work of authorship. For the purposes of this License, Derivative Works
shall not include works that remain separable from, or merely link (or bind by
name) to the interfaces of, the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including the original version
of the Work and any modifications or additions to that Work or Derivative Works
thereof, that is intentionally submitted to Licensor for inclusion in the Work
by the copyright owner or by an individual or Legal Entity authorized to submit
on behalf of the copyright owner. For the purposes of this definition,
"submitted" means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems, and
issue tracking systems that are managed by, or on behalf of, the Licensor for
the purpose of discussing and improving the Work, but excluding communication
that is conspicuously marked or otherwise designated in writing by the copyright
owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity on behalf
of whom a Contribution has been received by Licensor and subsequently
incorporated within the Work.
2. Grant of Copyright License.
Subject to the terms and conditions of this License, each Contributor hereby
grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
irrevocable copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the Work and such
Derivative Works in Source or Object form.
3. Grant of Patent License.
Subject to the terms and conditions of this License, each Contributor hereby
grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
irrevocable (except as stated in this section) patent license to make, have
made, use, offer to sell, sell, import, and otherwise transfer the Work, where
such license applies only to those patent claims licensable by such Contributor
that are necessarily infringed by their Contribution(s) alone or by combination
of their Contribution(s) with the Work to which such Contribution(s) was
submitted. If You institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work or a
Contribution incorporated within the Work constitutes direct or contributory
patent infringement, then any patent licenses granted to You under this License
for that Work shall terminate as of the date such litigation is filed.
4. Redistribution.
You may reproduce and distribute copies of the Work or Derivative Works thereof
in any medium, with or without modifications, and in Source or Object form,
provided that You meet the following conditions:
You must give any other recipients of the Work or Derivative Works a copy of
this License; and
You must cause any modified files to carry prominent notices stating that You
changed the files; and
You must retain, in the Source form of any Derivative Works that You distribute,
all copyright, patent, trademark, and attribution notices from the Source form
of the Work, excluding those notices that do not pertain to any part of the
Derivative Works; and
If the Work includes a "NOTICE" text file as part of its distribution, then any
Derivative Works that You distribute must include a readable copy of the
attribution notices contained within such NOTICE file, excluding those notices
that do not pertain to any part of the Derivative Works, in at least one of the
following places: within a NOTICE text file distributed as part of the
Derivative Works; within the Source form or documentation, if provided along
with the Derivative Works; or, within a display generated by the Derivative
Works, if and wherever such third-party notices normally appear. The contents of
the NOTICE file are for informational purposes only and do not modify the
License. You may add Your own attribution notices within Derivative Works that
You distribute, alongside or as an addendum to the NOTICE text from the Work,
provided that such additional attribution notices cannot be construed as
modifying the License.
You may add Your own copyright statement to Your modifications and may provide
additional or different license terms and conditions for use, reproduction, or
distribution of Your modifications, or for any such Derivative Works as a whole,
provided Your use, reproduction, and distribution of the Work otherwise complies
with the conditions stated in this License.
5. Submission of Contributions.
Unless You explicitly state otherwise, any Contribution intentionally submitted
for inclusion in the Work by You to the Licensor shall be under the terms and
conditions of this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify the terms of
any separate license agreement you may have executed with Licensor regarding
such Contributions.
6. Trademarks.
This License does not grant permission to use the trade names, trademarks,
service marks, or product names of the Licensor, except as required for
reasonable and customary use in describing the origin of the Work and
reproducing the content of the NOTICE file.
7. Disclaimer of Warranty.
Unless required by applicable law or agreed to in writing, Licensor provides the
Work (and each Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied,
including, without limitation, any warranties or conditions of TITLE,
NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are
solely responsible for determining the appropriateness of using or
redistributing the Work and assume any risks associated with Your exercise of
permissions under this License.
8. Limitation of Liability.
In no event and under no legal theory, whether in tort (including negligence),
contract, or otherwise, unless required by applicable law (such as deliberate
and grossly negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special, incidental,
or consequential damages of any character arising as a result of this License or
out of the use or inability to use the Work (including but not limited to
damages for loss of goodwill, work stoppage, computer failure or malfunction, or
any and all other commercial damages or losses), even if such Contributor has
been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability.
While redistributing the Work or Derivative Works thereof, You may choose to
offer, and charge a fee for, acceptance of support, warranty, indemnity, or
other liability obligations and/or rights consistent with this License. However,
in accepting such obligations, You may act only on Your own behalf and on Your
sole responsibility, not on behalf of any other Contributor, and only if You
agree to indemnify, defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason of your
accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work
To apply the Apache License to your work, attach the following boilerplate
notice, with the fields enclosed by brackets "[]" replaced with your own
identifying information. (Don't include the brackets!) The text should be
enclosed in the appropriate comment syntax for the file format. We also
recommend that a file or class name and description of purpose be included on
the same "printed page" as the copyright notice for easier identification within
third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

258
README.md
View File

@ -4,110 +4,188 @@ A collection of nodes for [Node-RED](http://nodered.org). See below for a list.
## Installation
Eventually, the nodes will be npm-installable, but we're not there yet. Until then:
All of these nodes are available as individual npm packages. See the list below for the
npm package names, or [search npm](https://www.npmjs.org/search?q=node-red-node-).
This repository acts as an overall store for these nodes - and is not
intended as a way to install them - unless you really do want some development.
To install - either use the manage palette option in the editor, or change to your Node-RED user directory.
cd ~/.node-red
npm install node-red-node-{filename}
To manually install using this repo:
1. cd into the `nodes` directory of Node-RED
2. Either:
- download the zip of the repository and extract it
- run `git clone https://github.com/node-red/node-red-nodes.git`
3. npm install any of the individual node dependencies
- download the zip of the repository and extract it
- run `git clone https://github.com/node-red/node-red-nodes.git`
3. run `npm install` in any of the node subfolders to install individual node's dependencies
This is all too manual, so the sooner we npm-enable this stuff the better
## Running Tests
Node.js v6 or newer is required. To run tests on all of the nodes you will need the node-red runtime:
npm i node-red-nodes
npm test
## Contributing
Please read the Contributing section of the main project [README](https://github.com/node-red/node-red/blob/master/README.md)
The key points are:
- try to follow the conventions we use (all undocumented at the moment just to make it interesting)
- focus on the UX of the node - make it simple to do simple things and simple to do advanced things. Don't
force a user wanting to do simple things have to wade through the advanced things.
- avoid duplication
### Contributor License Agreement
In order for us to accept pull-requests, the contributor must first complete
a Contributor License Agreement (CLA). This clarifies the intellectual
property license granted with any contribution. It is for your protection as a
Contributor as well as the protection of IBM and its customers; it does not
change your rights to use your own Contributions for any other purpose.
Once you have created a pull-request, we'll provide a link to the appropriate
CLA document.
If you are an IBMer, please contact us directly as the contribution process is
slightly different.
Now that we support npm installation of nodes we recommend people post their own
nodes via [npm](https://www.npmjs.org/). Please read the
[packaging guide notes](http://nodered.org/docs/creating-nodes/packaging.html).
For simple typos and single line fixes please just raise an issue pointing out
our mistakes. If you need to raise a pull request please read our
[contribution guidelines](https://github.com/node-red/node-red/blob/master/CONTRIBUTING.md)
before doing so.
## Copyright and license
Copyright 2013 IBM Corp. under [the Apache 2.0 license](LICENSE).
Copyright JS Foundation and other contributors, http://js.foundation under [the Apache 2.0 license](LICENSE).
# Extra Node Information
### Analysis
**72-wordpos** - Analyses the payload and classifies the part-of-speech of each word. The resulting message has msg.pos added with the results. A word may appear in multiple categories (eg, 'great' is both a noun and an adjective).
**74-swearfilter** - Analyses the payload and tries to filter out any messages containing bad swear words. This only operates on payloads of type string. Everything else is blocked.
### Hardware
**37-rpi-piface** - Adds support for the PiFace interface module for Raspberry Pi.
**78-ledborg** - A simple driver for the LEDborg plug on module for Raspberry Pi.
**60-wemo** - Basic node to drive a WeMo socket and switch. Does not use discovery.
**76-blinkstick** - Provides support for the BlinkStick USB LED device.
**77-blink1** - Provides support for the Blink1 USB LED from ThingM.
**78-digiRGB** - Provides support for the DigiSpark RGB USB LED.
**79-sensorTag** - Reads data from the Ti BLE SensorTag device.
**100-heatmiser-in** - Writes settings for temperature and frost protection to Heatmiser thermostats.
**101-heatmiser-out** - Reads settings from Heatmiser thermostats at a polling interval.
**101-scanBLE** - Scans for a particular Bluetooth Low Energy (BLE) device.
**145-BBB-hardware** - A collection of analogue & digital input & output nodes for the Beaglebone Black
### IO
**26-rawserial** - Only really needed for Windows boxes without serialport npm module installed.
Uses a simple read of the serial port as a file to input data. You **must** set the baud rate etc externally *before* starting Node-RED. This node does not implement pooling of connections so only one instance of each port may be used - so in **or** out but **not** both.
**39-wol** - Sends a Wake-On-LAN magic packet to the mac address specified. You may instead set msg.mac to dynamically set the target device mac to wake up.
**88-ping** - Pings a machine and returns the trip time in mS. Returns false if no response received within 3 seconds, or if the host is unresolveable. Default ping is every 20 seconds but can be configured.
### Social
**69-mpd** - MPD music control nodes. Output node expects payload to be a valid mpc command. Currently only simple commands that expect no reply are supported. Input node creates a payload object with Artist, Album, Title, Genre and Date.
**57-notify** - Uses Growl to provide a desktop popup containing the payload. Only useful on the local machine.
**57-prowl** - Uses Prowl to push the payload to an Apple device that has the Prowl app installed.
**57-pushbullet** - Uses PushBullet to push the payload to an Android device that has the PushBullet app installed.
**92-xmpp** - Connects to an XMPP server to send and receive messages.
### Storage
**67-leveldb** - Uses LevelDB for a simple key value pair database.
**68-mysql** - Allows basic access to a MySQL database. This node uses the **query** operation against the configured database. This does allow both INSERTS and DELETES. By it's very nature it allows SQL injection... *so be careful out there...*
**69-ddbout** - Support output to Amazon DynamoDB.
### Time
**79-suncalc** - Uses the suncalc module to generate an output at sunrise and sunset based on a specified location. Several choices of definition of sunrise and sunset are available,
**NPM name** - *File-link* - Description
### Misc
**99-sample** - A sample node with more comments than most to try to help you get started without any other docs...
**N/A** - *[99-sample](./)* - A sample node with more comments than most to try to help you get started without any other docs...
### Analysis
**node-red-node-badwords** - *[74-swearfilter](analysis/swearfilter)* - Analyses the payload and tries to filter out any messages containing bad swear words. This only operates on payloads of type string. Everything else is blocked.
**node-red-node-wordpos** - *[72-wordpos](analysis/wordpos)* - Analyses the payload and classifies the part-of-speech of each word. The resulting message has msg.pos added with the results. A word may appear in multiple categories (eg, 'great' is both a noun and an adjective).
### Function
**node-red-node-datagenerater** - *[datagenerator](function/datagenerator)* - A node that can generate dummy data in various formats, names, addresses, emails, numbers, words, etc
**node-red-node-pidcontrol** - *[pidcontrol](function/PID)* - A PID control node for numeric inputs - provides simple contoll loop feedback capability.
**node-red-node-random** - *[random](function/random)* - A simple random number generator - can generate integers for x to y - or floats between x and y.
**node-red-node-rbe** - *[rbe](function/rbe)* - A simple node to provide report by exception and deadband / bandgap capability for simple inputs.
**node-red-node-smooth** - *[17-smooth](function/smooth)* - A simple node to provide various functions across several previous values, including max, min, mean, high and low pass filters.
### Hardware
**node-red-node-arduino** - *[35-arduino](hardware/Arduino)* - A collection of analogue & digital input & output nodes for the Arduino board - uses firmata protocol to talk to the board.
**node-red-node-beaglebone** - *[145-BBB-hardware](hardware/BBB)* - A collection of analogue & digital input & output nodes for the [Beaglebone Black](http://beagleboard.org/black).
**node-red-node-blink1** - *[77-blink1](hardware/blink1)* - Provides support for the [Blink1](http://blink1.thingm.com/) USB LED from ThingM.
**node-red-node-blinkstick** - *[76-blinkstick](hardware/blinkstick)* - Provides support for the [BlinkStick](http://www.blinkstick.com/) USB LED device.
**node-red-node-digirgb** - *[78-digiRGB](hardware/digiRGB)* - Provides support for the DigiSpark RGB USB LED.
**node-red-node-heatmiser** - *[100-heatmiser-in](hardware/heatmiser)* - Read and writes settings for temperature and frost protection to Heatmiser thermostats.
**node-red-node-intel-galileo** - *[mraa-spio](hardware/intel)* - A collection of analogue & digital input & output nodes for the Intel Galileo and Edison.
**node-red-node-ledborg** - *[78-ledborg](hardware/LEDborg)* - A simple driver for the [LEDborg](https://www.piborg.org/ledborg) plug on module for Raspberry Pi.
**node-red-node-makeymakey** - *[42-makey](hardware/makey)* - A Node-RED node to read from a [MakeyMakey](http://www.makeymakey.com/) input device.
**node-red-node-pi-gpiod** - *[pigpiod](hardware/pigpiod)* - An alternative to the default PI GPIO nodes that allows remote access - so a host machine can access a remote Pi (via network) and is better for driving multiple servos.
**node-red-node-pi-mcp3008** - *[pimcp3008](hardware/mcp3008)* - Allows A Raspberry Pi to node to read from MCP300x series Analogue to Digital Converter chips via the SPI bus.
**node-red-node-pi-neopixel** - *[neopixel](hardware/neopixel)* - Allows A Raspberry Pi to drive a strip of NeoPixels directly.
**node-red-node-pi-unicorn-hat** - *[unicorn](hardware/unicorn)* - Lets a Raspbeery Pi control a Pimorini Unicorn HAT 8x8 LED display.
**node-red-node-pibrella** - *[38-rpi-pibrella](hardware/Pibrella)* - Controls a [Pibrella](http://pibrella.com/) add-on board for a Raspberry-Pi.
**node-red-node-piface** - *[37-rpi-piface](hardware/PiFace)* - Adds support for the [PiFace](http://www.piface.org.uk/) interface module for Raspberry Pi.
**node-red-node-piliter** - *[39-rpi-piliter](hardware/PiLiter)* - Controls a Pimorini Pi-LITEr 8 LED add-on board for a Raspberry-Pi.
**node-red-node-sensortag** - *[79-sensorTag](hardware/sensorTag)* - Reads data from the Ti Bluetooh Low Energy (BLE) SensorTag device.
**node-red-node-wemo** - *[60-wemo](hardware/wemo)* - Basic node to drive a [WeMo](http://www.belkin.com/us/Products/home-automation/c/wemo-home-automation/) socket and switch. Does not use discovery.
**N/A** - *[101-scanBLE](hardware/scanBLE)* - Scans for a particular Bluetooth Low Energy (BLE) device.
### I/O
**node-red-node-discovery** - *[mdns](io/mdns)* - discovers other Avahi/Bonjour services on the network.
**node-red-node-emoncms** - *[88-emoncms](io/emoncms)* - Adds node to post to an [Emoncms](http://emoncms.org/) server.
**node-red-node-mqlight** - *[mqlight](io/mqlight)* - Adds nodes to send and receive using MQlight.
**node-red-node-ping** - *[88-ping](io/ping)* - Pings a machine and returns the trip time in mS. Returns false if no response received within 3 seconds, or if the host is unresolveable. Default ping is every 20 seconds but can be configured.
**node-red-node-serialport** - *[25-serial](io/serialport)* - Node to send messages to and receive messages from a physical serial port.
**node-red-node-snmp** - *[snmp](io/snmp)* - Adds simple snmp receivers for single OIDs or OID tables.
**node-red-node-stomp** - *[18-stomp](io/stomp)* - A Node-RED node to publish and subscribe to and from a [STOMP server](https://stomp.github.io/implementations.html#STOMP_Servers).
**node-red-node-wol** - *[39-wol](io/wol)* - Sends a Wake-On-LAN magic packet to the mac address specified. You may instead set msg.mac to dynamically set the target device mac to wake up.
### Parsers
**node-red-node-base64** - *[70-base64.js](parsers/base64)* - Converts a payload to/from base64 encoded format.
**node-red-node-geohash** - *[70-geohash.js](parsers/geohash)* - Converts a lat, lon payload to/from geohash format.
**node-red-node-msgpack** - *[70-msgpack.js](parsers/msgpack)* - Converts a payload to/from msgpack binary packed format.
**node-red-node-what3words** - *[what3words.js](parsers/what3words)* - Encodes or Decodes a lat, lon position into what3words text format.
### Social
**node-red-node-dweetio** - *[55-dweetio](social/dweetio)* - Uses [dweetio](https://dweet.io/) to send/receive messages.
**node-red-node-email** - *[61-email](social/email)* - Sends and receives simple emails from services like gmail or smtp or imap servers.
**node-red-node-feedparser** - *[32-feedparse](social/feedparser)* - Reads messages from an atom or rss feed.
**node-red-node-irc** - *[91-irc](social/irc)* - Connects to an IRC server to send and receive messages.
**node-red-node-nma** - *[57-nma](social/nma)* - DEPRECATED as NMA closed down operations.
**node-red-node-notify** - *[57-notify](social/notify)* - Uses [Growl](http://growl.info/) to provide a desktop popup containing the payload. Only useful on the local Apple machine.
**node-red-node-prowl** - *[57-prowl](social/prowl)* - Uses [Prowl](http://www.prowlapp.com/) to push the payload to an Apple device that has the Prowl app installed.
**node-red-node-pushbullet** - *[57-pushbullet](social/pushbullet)* - Uses [PushBullet](https://www.pushbullet.com/) to push the payload to an Android device that has the [PushBullet](https://www.pushbullet.com/) app installed.
**node-red-node-pusher** - *[114-pusher](social/pusher)* - Publish-Subscribe to a [Pusher](http://pusher.com/) channel/event.
**node-red-node-pushover** - *[57-pushover](social/pushover)* - Sends alerts via [Pushover](https://pushover.net/).
**node-red-node-twilio** - *[56-twilio](social/twilio)* - Uses [Twilio](https://www.twilio.com/) service to send/receive text messages.
**node-red-node-twitter** - *[27-twitter](social/twitter)* - Listens to Twitter feeds and can also send tweets. (**NOTE**: this will break soon when Twitter remove their streaming API)
**node-red-node-xmpp** - *[92-xmpp](social/xmpp)* - Connects to an XMPP server to send and receive messages.
### Storage
**node-red-node-leveldb** - *[67-leveldb](storage/leveldb)* - Uses LevelDB for a simple key value pair database.
**node-red-node-mysql** - *[68-mysql](storage/mysql)* - Allows basic access to a MySQL database. This node uses the **query** operation against the configured database. This does allow both INSERTS and DELETES. By it's very nature it allows SQL injection... *so be careful out there...*
**node-red-node-sqlite** - *[sqlite](storage/sqlite)* - Supports read and write to a local sqlite database.
### Time
**node-red-node-suncalc** - *[79-suncalc](time/suncalc)* - Uses the suncalc module to generate an output at sunrise and sunset based on a specified location. Several choices of definition of sunrise and sunset are available.
**node-red-node-timeswitch** - *[timeswitch](time/timeswitch)* - Lets the user set simple repeating timers for example for simple heating control, etc.
### Utility
**node-red-node-daemon** - *[daemon](utility/daemon)* - starts up (calls) a long running system program and pipes STDIN, STDOUT and STDERR to and from that process. Good for monitoring long running command line applications,
**node-red-node-exif** - *[94-exif](utility/exif)* - Extracts GPS and other EXIF information from a passed in jpeg image,

View File

@ -0,0 +1,13 @@
Copyright 2019 JS Foundation and other contributors, https://js.foundation/
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

View File

@ -0,0 +1,33 @@
node-red-node-multilang-sentiment
=================================
A <a href="http://nodered.org" target="new">Node-RED</a> node that scores incoming words
using the AFINN-165 wordlist and attaches a sentiment.score property to the msg.
This is similar to the default sentiment node but supports many more languages at the cost of using more disk space. (approx 11MB)
Install
-------
Either use the Menu - Manage palette - Install option in the editor or run the following command in your Node-RED user directory - typically `~/.node-red`
npm install node-red-node-multilang-sentiment
Usage
-----
Uses the AFINN-165 wordlist to attempt to assign scores to words in text.
Attaches `msg.sentiment` to the msg and within that `msg.sentiment.score` holds the score.
Supports multiple languages. These can be preselected in the node configuration. You can also set it so that `msg.lang` can be used to set the language dynamically if required. The cldr language codes supported are:
af, am, ar, az, be, bg, bn, bs, ca, ceb, co, cs, cy, da, de, el, en, eo, es, et, eu, fa, fi,
fr, fy, ga, gd, gl, gu, ha, haw, hi, hmn, hr, ht, hu, hy, id, ig, is, it, iw, ja, jw, ka, kk, km, kn, ko, ku, ky, la, lb, lo, lt,
lv, mg, mi, mk, ml, mn, mr, ms, mt, my, ne, nl, no, ny, pa, pl, ps, pt, ro, ru, sd, si, sk, sl, sm, sn, so, sq, sr, st, su, sv,
sw, ta, te, tg, th, tl, tr, uk, ur, uz, vi, xh, yi, yo, zh, zh-tw, zu
A score greater than zero is positive and less than zero is negative. The score typically ranges from -5 to +5, but can go higher and lower.
See the <a href="https://github.com/marcellobarile/multilang-sentiment/blob/develop/README.md" target="_blank">Multilang Sentiment docs here</a>.</p>

View File

@ -0,0 +1,8 @@
{
"mlsentiment": {
"sentiment": "sentiment",
"label": {
"language": "Sprache"
}
}
}

View File

@ -0,0 +1,31 @@
<script type="text/html" data-help-name="mlsentiment">
<p>Analyses the chosen property, default <code>payload</code>, and adds a <code>sentiment</code> object.</p>
<h3>Outputs</h3>
<dl class="message-properties">
<dt>sentiment <span class="property-type">object</span></dt>
<dd>contains the resulting AFINN-165 sentiment.</dd>
<dt>sentiment.score <span class="property-type">number</span></dt>
<dd>the sentiment score.</dd>
</dl>
<h3>Inputs</h3>
<dl class="message-properties">
<dt>words <span class="property-type">object</span></dt>
<dd>besides sending a raw string in msg.payload, an object of words and scores to override or add words can be supplied - <code>{ word:score,... }</code>.</dd>
<dt>tokens <span class="property-type">object</span></dt>
<dd>a `tokens` object allows custom tokenizers which may be required by some languages - <code>{ ['世界',...] }</code>.</dd>
</dl>
<dl class="message-properties">
<dt>lang <span class="property-type">string</span></dt>
<dd>Two letter cldr code to specify the language to use - from the list below</dd>
</dl>
<h3>Details</h3>
<p>A score greater than zero is positive and less than zero is negative.</p>
<p>The score typically ranges from -5 to +5, but can go higher and lower.</p>
<p>See <a href="https://github.com/marcellobarile/multilang-sentiment/blob/develop/README.md" target="_blank">the Sentiment docs here</a>.</p>
<p>The node can also be configured to let the language be specified by setting <code>msg.lang</code> to one of the codes below</p>
<p>The language codes supported are - af, am, ar, az, be, bg, bn, bs, ca, ceb, co, cs, cy, da, de, el, en, eo, es, et, eu, fa, fi,
fr, fy, ga, gd, gl, gu, ha, haw, hi, hmn, hr, ht, hu, hy, id, ig, is, it, iw, ja, jw, ka, kk, km, kn, ko, ku, ky, la, lb, lo, lt,
lv, mg, mi, mk, ml, mn, mr, ms, mt, my, ne, nl, no, ny, pa, pl, ps, pt, ro, ru, sd, si, sk, sl, sm, sn, so, sq, sr, st, su, sv,
sw, ta, te, tg, th, tl, tr, uk, ur, uz, vi, xh, yi, yo, zh, zh-tw, zu</p>
</script>

View File

@ -0,0 +1,8 @@
{
"mlsentiment": {
"sentiment": "sentiment",
"label": {
"language": "Language"
}
}
}

View File

@ -0,0 +1,22 @@
<script type="text/html" data-help-name="mlsentiment">
<p>指定したプロパティ(デフォルトは<code>payload</code>)を分析し、<code>sentiment</code>オブジェクトを追加します。</p>
<h3>出力</h3>
<dl class="message-properties">
<dt>sentiment <span class="property-type">オブジェクト</span></dt>
<dd>AFINN-165による感情分析の結果</dd>
<dt>sentiment.score <span class="property-type">数値</span></dt>
<dd>感情分析スコア</dd>
</dl>
<h3>入力</h3>
<dl class="message-properties">
<dt>words <span class="property-type">オブジェクト</span></dt>
<dd>単語スコアの上書きをするためのオブジェクト - <code>{ word:score,... }</code></dd>
<dt>tokens <span class="property-type">object</span></dt>
<dd>一部の言語で必要となるカスタム トークナイザーが可能になります - <code>{ ['世界',...] }</code>.</dd>
</dl>
<h3>詳細</h3>
<p>ゼロ以上のスコアはポジティブ、ゼロ以下はネガティブを意味します。</p>
<p>スコアの範囲は通常-5から+5ですが、より大きかったり小さかったりすることもあります。</p>
<p>詳細は<a href="https://github.com/marcellobarile/multilang-sentiment/blob/develop/README.md" target="_blank">the Multilang-Sentiment docs here</a>を参照してください。</p>
</script>

View File

@ -0,0 +1,8 @@
{
"mlsentiment": {
"sentiment": "sentiment",
"label": {
"language": "言語"
}
}
}

View File

@ -0,0 +1,147 @@
<script type="text/html" data-template-name="mlsentiment">
<div class="form-row">
<label for="node-input-lang"><i class="fa fa-language"></i> <span data-i18n="mlsentiment.label.language"></span></label>
<select type="text" id="node-input-lang" style="width:70%;">
<option value="">set by msg.lang</option>
<option value="af">Afrikaans</option>
<option value="sq">Albanian</option>
<option value="am">Amharic</option>
<option value="ar">Arabic</option>
<option value="hy">Armenian</option>
<option value="az">Azerbaijani</option>
<option value="bn">Bangla</option>
<option value="eu">Basque</option>
<option value="be">Belarusian</option>
<option value="bs">Bosnian</option>
<option value="bg">Bulgarian</option>
<option value="my">Burmese</option>
<option value="ca">Catalan</option>
<option value="ceb">Cebuano</option>
<option value="zh">Chinese</option>
<option value="zh-tw">Chinese (Taiwanese)</option>
<option value="co">Corsican</option>
<option value="hr">Croatian</option>
<option value="cs">Czech</option>
<option value="da">Danish</option>
<option value="nl">Dutch</option>
<option value="en">English</option>
<option value="eo">Esperanto</option>
<option value="et">Estonian</option>
<option value="fi">Finnish</option>
<option value="fr">French</option>
<option value="fy">Frisian</option>
<option value="gl">Galician</option>
<option value="ka">Georgian</option>
<option value="de">German</option>
<option value="el">Greek</option>
<option value="gu">Gujarati</option>
<option value="ht">Haitian Creole</option>
<option value="ha">Hausa</option>
<option value="haw">Hawaiian</option>
<option value="hi">Hindi</option>
<option value="hmn">Hmong</option>
<option value="hu">Hungarian</option>
<option value="is">Icelandic</option>
<option value="ig">Igbo</option>
<option value="id">Indonesian</option>
<option value="ga">Irish</option>
<option value="it">Italian</option>
<option value="ja">Japanese</option>
<option value="kn">Kannada</option>
<option value="kk">Kazakh</option>
<option value="km">Khmer</option>
<option value="ko">Korean</option>
<option value="ku">Kurdish</option>
<option value="ky">Kyrgyz</option>
<option value="lo">Lao</option>
<option value="la">Latin</option>
<option value="lv">Latvian</option>
<option value="lt">Lithuanian</option>
<option value="lb">Luxembourgish</option>
<option value="mk">Macedonian</option>
<option value="mg">Malagasy</option>
<option value="ms">Malay</option>
<option value="ml">Malayalam</option>
<option value="mt">Maltese</option>
<option value="mi">Maori</option>
<option value="mr">Marathi</option>
<option value="mn">Mongolian</option>
<option value="ne">Nepali</option>
<option value="no">Norwegian</option>
<option value="ny">Nyanja</option>
<option value="ps">Pashto</option>
<option value="fa">Persian</option>
<option value="pl">Polish</option>
<option value="pt">Portuguese</option>
<option value="pa">Punjabi</option>
<option value="ro">Romanian</option>
<option value="ru">Russian</option>
<option value="sm">Samoan</option>
<option value="gd">Scottish Gaelic</option>
<option value="sr">Serbian</option>
<option value="sn">Shona</option>
<option value="sd">Sindhi</option>
<option value="si">Sinhala</option>
<option value="sk">Slovak</option>
<option value="sl">Slovenian</option>
<option value="so">Somali</option>
<option value="st">Southern Sotho</option>
<option value="es">Spanish</option>
<option value="su">Sundanese</option>
<option value="sw">Swahili</option>
<option value="sv">Swedish</option>
<option value="tl">Tagalog</option>
<option value="tg">Tajik</option>
<option value="ta">Tamil</option>
<option value="te">Telugu</option>
<option value="th">Thai</option>
<option value="tr">Turkish</option>
<option value="uk">Ukrainian</option>
<option value="ur">Urdu</option>
<option value="uz">Uzbek</option>
<option value="vi">Vietnamese</option>
<option value="cy">Welsh</option>
<option value="xh">Xhosa</option>
<option value="yi">Yiddish</option>
<option value="yo">Yoruba</option>
<option value="zu">Zulu</option>
</select>
</div>
<div class="form-row">
<label for="node-input-property"><i class="fa fa-ellipsis-h"></i> <span data-i18n="node-red:common.label.property"></span></label>
<input type="text" id="node-input-property" style="width:70%;"/>
</div>
<div class="form-row">
<label for="node-input-name"><i class="fa fa-tag"></i> <span data-i18n="node-red:common.label.name"></span></label>
<input type="text" id="node-input-name" data-i18n="[placeholder]node-red:common.label.name">
</div>
</script>
<script type="text/javascript">
RED.nodes.registerType('mlsentiment',{
category: 'analysis-function',
color:"#E6E0F8",
defaults: {
name: {value:""},
property: {value:"payload",required:true},
lang: {value:"en"}
},
inputs:1,
outputs:1,
icon: "arrow-in.png",
paletteLabel: "multilang sentiment",
label: function() {
return this.name||"multilang sentiment";
},
labelStyle: function() {
return this.name?"node_label_italic":"";
},
oneditprepare: function() {
if (this.property === undefined) {
$("#node-input-property").val("payload");
}
$("#node-input-property").typedInput({default:'msg',types:['msg']});
}
});
</script>

View File

@ -0,0 +1,25 @@
module.exports = function (RED) {
"use strict";
var multilangsentiment = require('multilang-sentiment');
function MultiLangSentimentNode(n) {
RED.nodes.createNode(this, n);
this.lang = n.lang;
this.property = n.property || "payload";
var node = this;
this.on("input", function (msg) {
var value = RED.util.getMessageProperty(msg, node.property);
if (value !== undefined) {
multilangSentiment(value, node.lang || msg.lang || 'en', { 'words': msg.words || null, 'tokens': msg.tokens || null }, function (err, result) {
msg.sentiment = result;
msg.sentiment.comparative = msg.sentiment.score / msg.sentiment.tokens.length; // temporarily addresses an issue in v2.0.0: https://github.com/marcellobarile/multilang-sentiment/issues/10
node.send(msg);
});
}
else { node.send(msg); } // If no matching property - just pass it on.
});
}
RED.nodes.registerType("mlsentiment", MultiLangSentimentNode);
}

View File

@ -0,0 +1,34 @@
{
"name": "node-red-node-multilang-sentiment",
"version": "0.2.0",
"description": "A Node-RED node that uses the AFINN-165 wordlists for sentiment analysis of words translated into multiple languages including emoji.",
"dependencies": {
"multilang-sentiment": "^2.0.0"
},
"repository": {
"type": "git",
"url": "https://github.com/node-red/node-red-nodes.git",
"directory": "tree/master/analysis/mlsentiment"
},
"license": "Apache-2.0",
"keywords": [
"node-red",
"sentiment",
"anaylsis",
"AFINN",
"emoji"
],
"node-red": {
"nodes": {
"mlsentiment": "mlsentiment.js"
}
},
"author": {
"name": "Dave Conway-Jones",
"email": "ceejay@vnet.ibm.com",
"url": "http://nodered.org"
},
"contributors" : [
"Chuan Khoo <khoo.chuan@gmail.com> (https://chuank.com)"
]
}

View File

@ -0,0 +1,36 @@
<script type="text/html" data-template-name="sentiment">
<div class="form-row">
<label for="node-input-property"><i class="fa fa-ellipsis-h"></i> <span data-i18n="node-red:common.label.property"></span></label>
<input type="text" id="node-input-property" style="width:70%;"/>
</div>
<div class="form-row">
<label for="node-input-name"><i class="fa fa-tag"></i> <span data-i18n="node-red:common.label.name"></span></label>
<input type="text" id="node-input-name" data-i18n="[placeholder]node-red:common.label.name">
</div>
</script>
<script type="text/javascript">
RED.nodes.registerType('sentiment',{
category: 'analysis-function',
color:"#E6E0F8",
defaults: {
name: {value:""},
property: {value:"payload",required:true}
},
inputs:1,
outputs:1,
icon: "arrow-in.png",
label: function() {
return this.name||"sentiment";
},
labelStyle: function() {
return this.name?"node_label_italic":"";
},
oneditprepare: function() {
if (this.property === undefined) {
$("#node-input-property").val("payload");
}
$("#node-input-property").typedInput({default:'msg',types:['msg']});
}
});
</script>

View File

@ -0,0 +1,22 @@
module.exports = function(RED) {
"use strict";
var sentiment = require('sentiment');
function SentimentNode(n) {
RED.nodes.createNode(this,n);
this.property = n.property||"payload";
var node = this;
this.on("input", function(msg) {
var value = RED.util.getMessageProperty(msg,node.property);
if (value !== undefined) {
sentiment(value, msg.overrides || null, function (err, result) {
msg.sentiment = result;
node.send(msg);
});
}
else { node.send(msg); } // If no matching property - just pass it on.
});
}
RED.nodes.registerType("sentiment",SentimentNode);
}

View File

@ -0,0 +1,14 @@
Copyright 2016, 2019 JS Foundation and other contributors, https://js.foundation/
Copyright 2013-2016 IBM Corp.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

View File

@ -0,0 +1,26 @@
node-red-node-sentiment
========================
A <a href="http://nodered.org" target="new">Node-RED</a> node that scores incoming words
using the AFINN-165 wordlist and attaches a sentiment.score property to the msg.
NOTE: There is also a multi-language version available - **node-red-node-multilang-sentiment**.
Install
-------
This is a node that should be installed by default by Node-RED so you should not have to install it manually. If you do then run the following command in your Node-RED user directory - typically `~/.node-red`
npm install node-red-node-sentiment
Usage
-----
Uses the AFINN-165 wordlist to attempt to assign scores to words in text.
Attaches `msg.sentiment` to the msg and within that `msg.sentiment.score` holds the score.
A score greater than zero is positive and less than zero is negative. The score typically ranges from -5 to +5, but can go higher and lower.
See the <a href="https://github.com/thisandagain/sentiment/blob/develop/README.md" target="_blank">Sentiment docs here</a>.</p>

View File

@ -0,0 +1,8 @@
{
"sentiment": {
"sentiment": "sentiment",
"label": {
"language": "Sprache"
}
}
}

View File

@ -0,0 +1,20 @@
<script type="text/html" data-help-name="sentiment">
<p>Analyses the chosen property, default <code>payload</code>, and adds a <code>sentiment</code> object.</p>
<h3>Outputs</h3>
<dl class="message-properties">
<dt>sentiment <span class="property-type">object</span></dt>
<dd>contains the resulting AFINN-111 sentiment.</dd>
<dt>sentiment.score <span class="property-type">number</span></dt>
<dd>the sentiment score.</dd>
</dl>
<h3>Inputs</h3>
<dl class="message-properties">
<dt>overrides <span class="property-type">object</span></dt>
<dd>an object of word score overrides can be supplied - <code>{ word:score,... }</code>.</dd>
</dl>
<h3>Details</h3>
<p>A score greater than zero is positive and less than zero is negative.</p>
<p>The score typically ranges from -5 to +5, but can go higher and lower.</p>
<p>See <a href="https://github.com/thisandagain/sentiment/blob/master/README.md" target="_blank">the Sentiment docs here.</a>.</p>
<p><b>Note</b>: There is also a multi-language version available - <b>node-red-node-multilang-sentiment</b></p>
</script>

View File

@ -0,0 +1,8 @@
{
"sentiment": {
"sentiment": "sentiment",
"label": {
"language": "Language"
}
}
}

View File

@ -0,0 +1,35 @@
<!--
Copyright JS Foundation and other contributors, http://js.foundation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<script type="text/html" data-help-name="sentiment">
<p>指定したプロパティ(デフォルトは<code>payload</code>)を分析し、<code>sentiment</code>オブジェクトを追加します。</p>
<h3>出力</h3>
<dl class="message-properties">
<dt>sentiment <span class="property-type">オブジェクト</span></dt>
<dd>AFINN-111による感情分析の結果</dd>
<dt>sentiment.score <span class="property-type">数値</span></dt>
<dd>感情分析スコア</dd>
</dl>
<h3>入力</h3>
<dl class="message-properties">
<dt>overrides <span class="property-type">オブジェクト</span></dt>
<dd>単語スコアの上書きをするためのオブジェクト - <code>{ word:score,... }</code></dd>
</dl>
<h3>詳細</h3>
<p>ゼロ以上のスコアはポジティブ、ゼロ以下はネガティブを意味します。</p>
<p>スコアの範囲は通常-5から+5ですが、より大きかったり小さかったりすることもあります。</p>
<p>詳細は<a href="https://github.com/thisandagain/sentiment/blob/master/README.md" target="_blank">the Sentiment docs here</a>を参照してください。</p>
</script>

View File

@ -0,0 +1,8 @@
{
"sentiment": {
"sentiment": "sentiment",
"label": {
"language": "言語"
}
}
}

View File

@ -0,0 +1,25 @@
{
"name" : "node-red-node-sentiment",
"version" : "0.1.6",
"description" : "A Node-RED node that uses the AFINN-165 wordlists for sentiment analysis of words.",
"dependencies" : {
"sentiment" : "2.1.0"
},
"repository" : {
"type":"git",
"url":"https://github.com/node-red/node-red-nodes.git",
"directory" : "tree/master/analysis/sentiment"
},
"license": "Apache-2.0",
"keywords": [ "node-red", "sentiment", "anaylsis", "AFINN" ],
"node-red" : {
"nodes" : {
"sentiment": "72-sentiment.js"
}
},
"author": {
"name": "Dave Conway-Jones",
"email": "ceejay@vnet.ibm.com",
"url": "http://nodered.org"
}
}

View File

@ -1,28 +1,13 @@
<!--
Copyright 2013 IBM Corp.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<script type="text/x-red" data-template-name="badwords">
<script type="text/html" data-template-name="badwords">
<div class="form-row">
<label for="node-input-name"><i class="icon-tag"></i> Name</label>
<label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
<input type="text" id="node-input-name" placeholder="Name">
</div>
</script>
<script type="text/x-red" data-help-name="badwords">
<p>Analyses the <b>msg.payload</b> and tries to filter out any messages containing bad swear words...</p>
<script type="text/html" data-help-name="badwords">
<p>Analyses the <code>msg.payload</code> and tries to filter out any messages containing bad swear words...</p>
<p><b>Note:</b> this only operates on payloads of type <b>string</b>. Everything else is blocked.</p>
</script>

View File

@ -1,31 +1,17 @@
/**
* Copyright 2013 IBM Corp.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
**/
var RED = require(process.env.NODE_RED_HOME+"/red/red");
var badwords = require('badwords');
if (badwords.length == 0 ) { return; }
var badwordsRegExp = require('badwords/regexp');
module.exports = function(RED) {
"use strict";
function BadwordsNode(n) {
RED.nodes.createNode(this,n);
var node = this;
this.on("input", function(msg) {
if (typeof msg.payload === "string") {
if ( !badwordsRegExp.test(msg.payload) ) { node.send(msg); }
}
});
function BadwordsNode(n) {
RED.nodes.createNode(this,n);
var badwordsRegExp = require('badwords/regexp');
var node = this;
node.on("input", function(msg) {
if (typeof msg.payload === "string") {
badwordsRegExp.lastIndex = 0
if ( !badwordsRegExp.test(msg.payload) ) { node.send(msg); }
}
});
}
RED.nodes.registerType("badwords",BadwordsNode);
}
RED.nodes.registerType("badwords",BadwordsNode);

View File

@ -0,0 +1,14 @@
Copyright 2016 JS Foundation and other contributors, https://js.foundation/
Copyright 2013-2016 IBM Corp.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

View File

@ -0,0 +1,21 @@
node-red-node-badwords
======================
A <a href="http://nodered.org" target="_new">Node-RED</a> node that attempts to filter out messages containing swearwords.
Install
-------
Run the following command in your Node-RED user directory - typically `~/.node-red`
npm install node-red-node-badwords
Usage
-----
Uses the badwords npm to attempt to filter out messages containing swearwords.
Analyses the `msg.payload` and tries to filter out any messages containing bad swear words. If the payload contains a bad word then the whole message is blocked.
**Note** : this only operates on payloads of type <b>string</b>. Everything else is blocked.

View File

@ -0,0 +1,25 @@
{
"name" : "node-red-node-badwords",
"version" : "0.1.0",
"description" : "A Node-RED node that attempts to filter out messages containing swearwords.",
"dependencies" : {
"badwords" : "^1.0.0"
},
"repository" : {
"type":"git",
"url":"https://github.com/node-red/node-red-nodes.git",
"directory": "tree/master/analysis/swearfilter"
},
"license": "Apache-2.0",
"keywords": [ "node-red", "badwords", "swearfilter" ],
"node-red" : {
"nodes" : {
"badwords": "74-swearfilter.js"
}
},
"author": {
"name": "Dave Conway-Jones",
"email": "ceejay@vnet.ibm.com",
"url": "http://nodered.org"
}
}

View File

@ -1,31 +1,16 @@
<!--
Copyright 2013 IBM Corp.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<script type="text/x-red" data-template-name="wordpos">
<div class="form-row">
<label for="node-input-name"><i class="icon-tag"></i> Name</label>
<label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
<input type="text" id="node-input-name" placeholder="Name">
</div>
<div class="form-tips">Adds <b>msg.pos</b> as the anaylsis result.
<div class="form-tips">Adds <code>msg.pos</code> as the anaylsis result.
</div>
</script>
<script type="text/x-red" data-help-name="wordpos">
<p>Analyses <b>msg.payload</b> and classifies the part-of-speech of each word.</p>
<p>The resulting message has <b>msg.pos</b> added with the results:</p>
<p>Analyses <code>msg.payload</code> and classifies the part-of-speech of each word.</p>
<p>The resulting message has <code>msg.pos</code> added with the results:</p>
<pre>{
nouns:[],
verbs:[],

View File

@ -1,31 +1,18 @@
/**
* Copyright 2013 IBM Corp.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
**/
var RED = require(process.env.NODE_RED_HOME+"/red/red");
var WordPos = require('wordpos');
var wordpos = new WordPos();
module.exports = function(RED) {
"use strict";
var WordPos = require('wordpos');
var wordpos = new WordPos();
function WordPOSNode(n) {
RED.nodes.createNode(this,n);
this.on("input", function(msg) {
var node = this;
wordpos.getPOS(msg.payload, function (result) {
msg.pos = result;
node.send(msg);
function WordPOSNode(n) {
RED.nodes.createNode(this,n);
this.on("input", function(msg) {
var node = this;
wordpos.getPOS(msg.payload, function (result) {
msg.pos = result;
node.send(msg);
});
});
});
}
RED.nodes.registerType("wordpos",WordPOSNode);
}
RED.nodes.registerType("wordpos",WordPOSNode);

14
analysis/wordpos/LICENSE Normal file
View File

@ -0,0 +1,14 @@
Copyright 2016 JS Foundation and other contributors, https://js.foundation/
Copyright 2013-2016 IBM Corp.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

View File

@ -0,0 +1,27 @@
node-red-node-wordpos
=====================
A <a href="http://nodered.org" target="_new">Node-RED</a> node that breaks a sentence into the various parts of (English) speech.
Install
-------
Run the following command in your Node-RED user directory - typically `~/.node-red`
npm install node-red-node-wordpos
Usage
-----
Uses the wordpos npm to analyse the `msg.payload` and classify the part-of-speech of each word.
The resulting message has a `msg.pos` object added with the results split into the following:
nouns:[],
verbs:[],
adjectives:[],
adverbs:[],
rest:[]
**Note:** a word may appear in multiple POS (eg, 'great' is both a noun and an adjective).

View File

@ -0,0 +1,25 @@
{
"name" : "node-red-node-wordpos",
"version" : "0.0.4",
"description" : "A Node-RED node that breaks a sentence into the various parts of (English) speech.",
"dependencies" : {
"wordpos" : "0.1.*"
},
"repository" : {
"type":"git",
"url":"https://github.com/node-red/node-red-nodes.git",
"directory" : "tree/master/analysis/wordpos"
},
"license": "Apache-2.0",
"keywords": [ "node-red", "wordpos" ],
"node-red" : {
"nodes" : {
"wordpos": "72-wordpos.js"
}
},
"author": {
"name": "Dave Conway-Jones",
"email": "ceejay@vnet.ibm.com",
"url": "http://nodered.org"
}
}

3
coverall Executable file
View File

@ -0,0 +1,3 @@
# check coverage of tests... and browse report
nyc --check-coverage --reporter=html grunt
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome coverage/index.html

14
function/PID/LICENSE Normal file
View File

@ -0,0 +1,14 @@
Copyright 2016 JS Foundation and other contributors, https://js.foundation/
Copyright 2013-2016 IBM Corp.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

26
function/PID/README.md Normal file
View File

@ -0,0 +1,26 @@
node-red-node-pidcontrol
========================
A <a href="http://nodered.org" target="_new">Node-RED</a> node that provides a simple PID controller.
Install
-------
Run the following command in your Node-RED user directory - typically `~/.node-red`
npm i node-red-node-pidcontrol
Usage
-----
PID controller node.
This node ONLY expects a numeric `msg.payload` containing the current reading.
It will output the correction that needs to be applied in order to move to the preset **set point** value.
The damping factors are typically in the range 0 - 1.
See <a href="https://en.wikipedia.org/wiki/PID_controller" target="_new">Wikipedia</a> for more details on PID controllers.
The **set point** may be overridden by `msg.setpoint`. If you do so the edit box value can be used as the initial value.

View File

@ -0,0 +1,8 @@
<script type="text/html" data-help-name="PID control">
<p>A PID controller node.</p>
<p>This node ONLY expects a numeric <code>msg.payload</code> containing the current reading.
It will output the correction that needs to be applied in order to move to the preset <i>set point</i> value.</p>
<p>See <a href="https://en.wikipedia.org/wiki/PID_controller" target="_new">Wikipedia</a> for more details.</p>
<p>The <i>set point</i> may be overridden by <code>msg.setpoint</code>. If you do so the edit box value can be used as the initial value.</p>
</script>

25
function/PID/package.json Normal file
View File

@ -0,0 +1,25 @@
{
"name" : "node-red-node-pidcontrol",
"version" : "0.0.4",
"description" : "A Node-RED node that that provides a simple PID controller.",
"dependencies" : {
"node-pid-controller": "0.0.3"
},
"repository" : {
"type":"git",
"url":"https://github.com/node-red/node-red-nodes.git",
"directory": "tree/master/function/PID"
},
"license": "Apache-2.0",
"keywords": [ "node-red", "PID", "control" ],
"node-red" : {
"nodes" : {
"PID control": "pidcontrol.js"
}
},
"author": {
"name": "Dave Conway-Jones",
"email": "ceejay@vnet.ibm.com",
"url": "http://nodered.org"
}
}

View File

@ -0,0 +1,48 @@
<script type="text/html" data-template-name="PID control">
<div class="form-row">
<label for="node-input-target" style="width:120px;"><i class="fa fa-dot-circle-o"></i> Set Point</label>
<input type="text" id="node-input-target" placeholder="target value" style="width:60%;">
</div>
<div class="form-row">
<label for="node-input-kp" style="width:120px;"><font size=+1>K<sub>proportional</sub></font></label>
<input type="text" id="node-input-kp" placeholder="proportional gain constant - Kp" style="width:60%;">
</div>
<div class="form-row">
<label for="node-input-ki" style="width:120px;"><font size=+1>K<sub>integral</sub></font></label>
<input type="text" id="node-input-ki" placeholder="integral gain constant - Ki" style="width:60%;">
</div>
<div class="form-row">
<label for="node-input-kd" style="width:120px;"><font size=+1>K<sub>differential</sub></font></label>
<input type="text" id="node-input-kd" placeholder="differential gain constant - Kd" style="width:60%;">
</div>
<div class="form-row">
<label for="node-input-name" style="width:120px;"><i class="fa fa-tag"></i> Name</label>
<input type="text" id="node-input-name" placeholder="Name" style="width:60%;">
</div>
<div class="form-tips"><b>Tip:</b> This node ONLY works on numbers<br>
The damping factors are typically in the range 0 - 1.<br></div>
</script>
<script type="text/javascript">
RED.nodes.registerType('PID control',{
color:"#d6ba48",
category: 'function',
defaults: {
name: {value:""},
target: {value:"",validate:RED.validators.regex(/^(\d*|)$/)},
kp: {value:"",required:true,validate:RED.validators.number()},
ki: {value:"",required:true,validate:RED.validators.number()},
kd: {value:"",required:true,validate:RED.validators.number()}
},
inputs:1,
outputs:1,
icon: "function.png",
label: function() {
return this.name||"PID";
},
labelStyle: function() {
return this.name?"node_label_italic":"";
}
});
</script>

View File

@ -0,0 +1,33 @@
module.exports = function(RED) {
"use strict";
var Controller = require('node-pid-controller');
function PIDcontrolNode(n) {
RED.nodes.createNode(this,n);
this.target = n.target;
this.kp = n.kp;
this.ki = n.ki;
this.kd = n.kd;
var node = this;
node.ctr = new Controller(node.kp, node.ki, node.kd);
node.ctr.setTarget(node.target);
this.status({fill:"blue",shape:"dot",text:"set point:"+node.target});
var tgt = node.target;
this.on("input",function(msg) {
if (msg.hasOwnProperty("setpoint")) {
tgt = Number(msg.setpoint);
node.ctr.setTarget(tgt);
this.status({fill:"blue",shape:"dot",text:"set point:"+tgt});
}
else if (!isNaN(msg.payload)) {
msg.payload = node.ctr.update(Number(msg.payload));
msg.topic = "pid";
node.send(msg);
}
else { node.warn("Non numeric input"); }
});
}
RED.nodes.registerType("PID control",PIDcontrolNode);
}

View File

@ -0,0 +1,14 @@
Copyright 2016 JS Foundation and other contributors, https://js.foundation/
Copyright 2013-2016 IBM Corp.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

View File

@ -0,0 +1,53 @@
node-red-node-web-data-generator
================================
A <a href="http://nodered.org" target="_new">Node-RED</a> node to create dummy
data values from a template. Useful for building test-cases.
Install
-------
Either use the Manage Palette option in the Node-RED Editor menu, or run the following command in your Node-RED user directory - typically `~/.node-red`
npm i node-red-node-data-generator
Usage
-----
Creates dummy data based on a handlebars-style template.
Uses the <i><a href="https://github.com/webroo/dummy-json/blob/master/README.md" target="_new">dummy-json</a></i>
module, which can create rich sets of dummy data for testing or other uses.
It will build a **string**, or a **parsed JSON object**, creating values based
on the helper names below:
title, firstName, lastName, company, domain, tld, email,
street, city, country, countryCode, zipcode, postcode,
lat, long, phone "+xx (x) xxxx xxx xxx", color, hexColor, guid,
ipv4, ipv6, lorem nn, date, time,
lowercase (helper), uppercase (helper), int, float, boolean
Multiple values can be generated by use of the `repeat` syntax.
In addition any properties passed in on the `msg` object can also be used - for example {{payload}}.
Finally `msg.seed` can be used to preset the pseudo-random seed to ensure repeatability across calls.
Example
-------
The example flow below produces a JSON string which is then converted into an object, for example:
{
"name": "Theo Cumbie",
"work": "CoreXTS",
"email": "theo.cumbie@corexts.gov",
"address": "83 Sherman Road",
"country": "Angola",
"text": "Sagittis orci elementum e vel scelerisque. Amet ac tristique lectus. Morbi e suscipit scelerisque auctor curabitur velit metus gravida quis."
}
Example flow
[{"id":"325b6a4a.cf1706","type":"inject","z":"4affede3.af6f44","name":"","topic":"","payload":"","payloadType":"str","repeat":"","crontab":"","once":false,"x":110,"y":300,"wires":[["9d14acc0.c8d9d"]]},{"id":"96c9a04e.35232","type":"debug","z":"4affede3.af6f44","name":"","active":true,"console":"false","complete":"false","x":513,"y":300,"wires":[]},{"id":"9d14acc0.c8d9d","type":"data-generator","z":"4affede3.af6f44","name":"","field":"payload","fieldType":"msg","syntax":"json","template":"{\n \"name\": \"{{firstName}} {{lastName}}\",\n \"work\": \"{{company}}\",\n \"email\": \"{{email}}\",\n \"address\": \"{{int 1 100}} {{street}}\",\n \"country\": \"{{country}}\",\n \"countryCode\": \"{{countryCode}}\",\n \"text\":\"{{lorem 20}}\"\n}","x":280,"y":300,"wires":[["96c9a04e.35232"]]}]

View File

@ -0,0 +1,94 @@
<script type="text/html" data-template-name="data-generator">
<div class="form-row">
<label for="node-input-name"><i class="fa fa-tag"></i> <span data-i18n="node-red:common.label.name"></span></label>
<input type="text" id="node-input-name" data-i18n="[placeholder]node-red:common.label.name">
</div>
<div class="form-row">
<label for="node-input-field"><i class="fa fa-edit"></i> <span data-i18n="node-red:template.label.property"></span></label>
<input type="text" id="node-input-field" placeholder="payload" style="width:275px;">
<input type="hidden" id="node-input-fieldType">
</div>
<div class="form-row" style="position: relative; margin-bottom: 0px;">
<label for="node-input-template"><i class="fa fa-file-code-o"></i> <span data-i18n="node-red:template.label.template"></span></label>
<input type="hidden" id="node-input-template" autofocus="autofocus">
</div>
<div class="form-row node-text-editor-row">
<div style="height:250px;" class="node-text-editor" id="node-input-template-editor"></div>
</div>
<div class="form-row">
<label for="node-input-syntax"><i class="fa fa-code"></i> <span data-i18n="datagen.label.syntax"></span></label>
<select id="node-input-syntax" style="width:180px;">
<option value="text" data-i18n="datagen.label.text"></option>
<option value="json" data-i18n="datagen.label.json"></option>
</select>
</div>
</script>
<script type="text/javascript">
RED.nodes.registerType('data-generator',{
color:"rgb(243, 181, 103)",
category: 'function',
defaults: {
name: {value:""},
field: {value:"payload"},
fieldType: {value:"msg"},
syntax: {value:"text"},
template: {value:"{\n \"name\": \"{{firstName}} {{lastName}}\",\n \"work\": \"{{company}}\",\n \"email\": \"{{email}}\",\n \"address\": \"{{int 1 100}} {{street}}\",\n \"country\": \"{{country}}\"\n}"}
},
inputs:1,
outputs:1,
icon: "template.png",
paletteLabel: function() {
return this._("datagen.datagen");
},
label: function() {
return this.name || "data generator";
},
outputLabels: function() { return this.syntax === "json" ? "object" : "string"; },
oneditprepare: function() {
var that = this;
if (!this.fieldType) {
this.fieldType = 'msg';
}
$("#node-input-field").typedInput({
default: 'msg',
types: ['msg','flow','global'],
typeField: $("#node-input-fieldType")
});
this.editor = RED.editor.createEditor({
id: 'node-input-template-editor',
mode: 'ace/mode/handlebars',
value: $("#node-input-template").val()
});
RED.library.create({
url:"functions", // where to get the data from
type:"function", // the type of object the library is for
editor:that.editor, // the field name the main text body goes to
fields:['name','outputs']
});
this.editor.focus();
},
oneditsave: function() {
$("#node-input-template").val(this.editor.getValue());
this.editor.destroy();
delete this.editor;
},
oneditcancel: function() {
this.editor.destroy();
delete this.editor;
},
oneditresize: function(size) {
var rows = $("#dialog-form>div:not(.node-text-editor-row)");
var height = $("#dialog-form").height();
for (var i=0; i<rows.size(); i++) {
height -= $(rows[i]).outerHeight(true);
}
var editorRow = $("#dialog-form>div.node-text-editor-row");
height -= (parseInt(editorRow.css("marginTop"))+parseInt(editorRow.css("marginBottom")));
$("#dialog-form .node-text-editor").css("height",height+"px");
this.editor.resize();
}
});
</script>

View File

@ -0,0 +1,39 @@
module.exports = function(RED) {
"use strict";
var dummyjson = require('dummy-json');
function DataGeneratorNode(n) {
RED.nodes.createNode(this,n);
this.field = n.field || "payload";
this.template = n.template;
this.fieldType = n.fieldType || "msg";
this.syntax = n.syntax || "text";
var node = this;
node.on("input", function(msg) {
if (msg.seed) { dummyjson.seed = msg.seed; }
try {
var value = dummyjson.parse(node.template, {mockdata: msg});
if (node.syntax === "json") {
try { value = JSON.parse(value); }
catch(e) { node.error(RED._("datagen.errors.json-error")); }
}
if (node.fieldType === 'msg') {
RED.util.setMessageProperty(msg,node.field,value);
}
else if (node.fieldType === 'flow') {
node.context().flow.set(node.field,value);
}
else if (node.fieldType === 'global') {
node.context().global.set(node.field,value);
}
node.send(msg);
}
catch(e) {
node.error(e.message);
}
});
}
RED.nodes.registerType("data-generator",DataGeneratorNode);
RED.library.register("datagenerator");
}

View File

@ -0,0 +1,13 @@
{
"datagen": {
"datagen": "data generator",
"label": {
"syntax": "Rückgabe",
"text": "ein Text-String",
"json": "ein analysiertes (parsed) JSON-Objekt"
},
"errors": {
"json-error": "Fehler beim Versuch, String zu JSON zu analysieren (parsen)"
}
}
}

View File

@ -0,0 +1,11 @@
<script type="text/html" data-help-name="data-generator">
<p>Creates dummy data strings based on a handlebars-style template.</p>
<p>Uses the <i><a href="https://github.com/webroo/dummy-json/blob/master/README.md" target="_new">dummy-json</a></i>
module, which can create rich sets of dummy data for testing or other uses.</p>
<p>Will build a string or a parsed JSON object, creating values based on the helper names below:
<pre style="word-break:normal">title, firstName, lastName, company, domain, tld, email, street, city, country, countryCode, zipcode, postcode, lat, long, phone, color, hexColor, guid, ipv4, ipv6, lorem [nn], date, time, lowercase, uppercase, int, float, boolean</pre>
<p>Multiple values can be generated by use of the <i>repeat</i> syntax.</p>
<p>In addition any properties passed in on <code>msg</code> can also be used - for example <code>{{payload}}</code>.</p>
<p>Finally <code>msg.seed</code> can be used to preset the pseudo-random seed to ensure repeatability across calls.</p>
</script>

View File

@ -0,0 +1,13 @@
{
"datagen": {
"datagen": "data generator",
"label": {
"syntax": "Return",
"text": "a text string",
"json": "a parsed JSON object"
},
"errors": {
"json-error": "error trying to parse string to JSON"
}
}
}

View File

@ -0,0 +1,29 @@
{
"name": "node-red-node-data-generator",
"version": "1.0.2",
"description": "A Node-RED node to create a string of dummy data values from a template. Useful for test-cases.",
"dependencies": {
"dummy-json": "^3.0.5"
},
"repository": {
"type": "git",
"url": "https://github.com/node-red/node-red-nodes.git",
"directory": "tree/master/function/data-generator"
},
"license": "Apache-2.0",
"keywords": [
"node-red",
"data-generator",
"dummy-json"
],
"node-red": {
"nodes": {
"data-generator": "datagenerator.js"
}
},
"author": {
"name": "Dave Conway-Jones",
"email": "dceejay@gmail.com",
"url": "http://nodered.org"
}
}

14
function/random/LICENSE Normal file
View File

@ -0,0 +1,14 @@
Copyright 2016,2020 JS Foundation and other contributors, https://js.foundation/
Copyright 2013-2016 IBM Corp.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

24
function/random/README.md Normal file
View File

@ -0,0 +1,24 @@
# node-red-node-random
A <a href="http://nodered.org" target="_new">Node-RED</a> node that when triggered generates a random number between two values.
## Install
Either use the Manage Palette option in the Node-RED Editor menu, or run the following command in your Node-RED user directory - typically `~/.node-red`
npm i node-red-node-random
## Usage
A simple node to generate a random number when triggered.
If set to return an integer it can include both the low and high values.
`min <= n <= max` - so selecting 1 to 6 will return values 1,2,3,4,5 or 6.
If set to return a floating point value it will be from the low value, up to, but
**not** including the high value. `min <= n < max` - so selecting 1 to 6 will return values 1 <= n < 6 .
You can dynamically pass in the 'From' and 'To' values to the node using msg.to and/or msg.from. **NOTE:** hard coded values in the node **always take precedence**.
**Note:** This returns numbers - objects of type **number**.

View File

@ -0,0 +1,13 @@
{
"random": {
"label": {
"generate": "Generiere",
"wholeNumber": "eine Ganzzahl (integer)",
"realNumber": "eine reelle Zahl (floating point)",
"from": "Von",
"lowestNumber": "kleinste Zahl",
"to": "Bis",
"highestNumber": "größte Zahl"
}
}
}

View File

@ -0,0 +1,16 @@
<script type="text/html" data-help-name="random">
<p>Generates a random number between a low and high value. Defaults to 1 to 10.</p>
<p>If left blank <code>from</code> and <code>to</code> can be set dynamically as below.</p>
<h3>Inputs</h3>
<dl class="message-properties">
<dt>from <span class="property-type">number</span></dt>
<dd>containing the low value to be used.</dd>
<dt>to <span class="property-type">number</span></dt>
<dd>containing the high value to be used.</dd>
</dl>
<h3>Details</h3>
<p>If set to return an integer it can <i>include</i> both the low and high values.
<code>min <= n <= max</code></p>
<p>If set to return a floating point value it will be from the low value, up to, but
not including the high value. <code>min <= n < max</code></p>
</script>

View File

@ -0,0 +1,13 @@
{
"random": {
"label": {
"generate": "Generate",
"wholeNumber": "a whole number - integer",
"realNumber": "a real number - floating point",
"from": "From",
"lowestNumber": "lowest number",
"to": "To",
"highestNumber": "highest number"
}
}
}

View File

@ -0,0 +1,16 @@
<script type="text/html" data-help-name="random">
<p>最小値と最大値との間の乱数を生成します。デフォルトは1から10です。</p>
<p><code>最小</code><code>最大</code> を空にした場合は、以下の様に動的に値を設定できます。</p>
<h3>入力</h3>
<dl class="message-properties">
<dt>from <span class="property-type">数値</span></dt>
<dd>使用する最小値を含みます。</dd>
<dt>to <span class="property-type">数値</span></dt>
<dd>使用する最大値を含みます。</dd>
</dl>
<h3>詳細</h3>
<p>整数値を返すように設定した場合は、乱数には最大値と最小値の両方が<i>含まれます</i>
<code>min <= n <= max</code></p>
<p>浮動小数点値を返すように設定した場合、乱数は最小値から最大値未満の値を含み、最大値は含まれません。
<code>min <= n < max</code></p>
</script>

View File

@ -0,0 +1,13 @@
{
"random": {
"label": {
"generate": "生成",
"wholeNumber": "整数 - 整数値",
"realNumber": "実数 - 浮動小数点",
"from": "最小",
"lowestNumber": "最小値",
"to": "最大",
"highestNumber": "最大値"
}
}
}

View File

@ -0,0 +1,27 @@
{
"name" : "node-red-node-random",
"version" : "0.4.1",
"description" : "A Node-RED node that when triggered generates a random number between two values.",
"dependencies" : {
},
"repository" : {
"type":"git",
"url":"https://github.com/node-red/node-red-nodes.git",
"directory": "tree/master/function/random"
},
"license": "Apache-2.0",
"keywords": [ "node-red", "random" ],
"node-red" : {
"nodes" : {
"random": "random.js"
}
},
"author": {
"name": "Dave Conway-Jones",
"email": "ceejay@vnet.ibm.com",
"url": "http://nodered.org"
},
"contributors": [
{"name": "@zenofmud"}
]
}

View File

@ -0,0 +1,55 @@
<script type="text/html" data-template-name="random">
<div class="form-row">
<label for="node-input-property"><i class="fa fa-ellipsis-h"></i> <span data-i18n="node-red:common.label.property"></span></label>
<input type="text" id="node-input-property" style="width:70%;"/>
</div>
<div class="form-row">
<label for="node-input-inte"><i class="fa fa-random"></i> <span data-i18n="random.label.generate"></label>
<select type="text" id="node-input-inte" style="width:70%;">
<option value="true" data-i18n="random.label.wholeNumber"></option>
<option value="false" data-i18n="random.label.realNumber"></option>
</select>
</div>
<div class="form-row">
<label for="node-input-low"><i class="fa fa-arrow-down"></i> <span data-i18n="random.label.from"></label>
<input type="text" id="node-input-low" data-i18n="[placeholder]random.label.lowestNumber" style="width:70%;">
</div>
<div class="form-row">
<label for="node-input-high"><i class="fa fa-arrow-up"></i> <span data-i18n="random.label.to"></label>
<input type="text" id="node-input-high" data-i18n="[placeholder]random.label.highestNumber" style="width:70%;">
</div>
<br/>
<div class="form-row">
<label for="node-input-name"><i class="fa fa-tag"></i> <span data-i18n="node-red:common.label.name"></label>
<input type="text" id="node-input-name" data-i18n="[placeholder]node-red:common.label.name" style="width:70%;">
</div>
</script>
<script type="text/javascript">
RED.nodes.registerType('random',{
category: 'function',
color:"#E2D96E",
defaults: {
name: {value:""},
low: {value: 1,validate:function(v) { return !isNaN(v) || v.length === 0;} },
high: {value: 10,validate:function(v) { return !isNaN(v) || v.length === 0;} },
inte: {value:"true"},
property: {value:"payload",required:true}
},
inputs:1,
outputs:1,
icon: "debug.png",
label: function() {
return this.name||"random";
},
labelStyle: function() {
return this.name?"node_label_italic":"";
},
oneditprepare: function() {
if (this.property === undefined) {
$("#node-input-property").val("payload");
}
$("#node-input-property").typedInput({default:'msg',types:['msg']});
}
});
</script>

74
function/random/random.js Normal file
View File

@ -0,0 +1,74 @@
module.exports = function(RED) {
"use strict";
function RandomNode(n) {
RED.nodes.createNode(this,n);
this.low = n.low
this.high = n.high
this.inte = n.inte || false;
this.property = n.property||"payload";
var node = this;
var tmp = {};
this.on("input", function(msg) {
tmp.low = 1 // set this as the default low value
tmp.low_e = ""
if (node.low) { // if the the node has a value use it
tmp.low = Number(node.low);
} else if ('from' in msg) { // else see if a 'from' is in the msg
tmp.low = Number(msg.from);
if (isNaN(msg.from)) { // if it isn't a number setup NaN error
tmp.low = NaN;
tmp.low_e = " From: " + msg.from; // setup to show bad incoming msg.from
}
}
tmp.high = 10 // set this as the default high value
tmp.high_e = "";
if (node.high) { // if the the node has a value use it
tmp.high = Number(node.high);
} else if ('to' in msg) { // else see if a 'to' is in the msg
tmp.high = Number(msg.to);
if (isNaN(msg.to)) { // if it isn't a number setup NaN error
tmp.high = NaN
tmp.high_e = " To: " + msg.to // setup to show bad incoming msg.to
}
}
// if tmp.low or high are not numbers, send an error msg with bad values
if ( (isNaN(tmp.low)) || (isNaN(tmp.high)) ) {
this.error("Random: one of the input values is not a number. " + tmp.low_e + tmp.high_e);
} else {
// at this point we have valid values so now to generate the random number!
// flip the values if low > high so random will work
var value = 0;
if (tmp.low > tmp.high) {
value = tmp.low
tmp.low = tmp.high
tmp.high = value
}
// if returning an integer, do a math.ceil() on the low value and a
// Math.floor()high value before generate the random number. This must be
// done to insure the rounding doesn't round up if using something like 4.7
// which would end up with 5
if ( (node.inte == "true") || (node.inte === true) ) {
tmp.low = Math.ceil(tmp.low);
tmp.high = Math.floor(tmp.high);
// use this to round integers
value = Math.round(Math.random() * (tmp.high - tmp.low + 1) + tmp.low - 0.5);
} else {
// use this to round floats
value = (Math.random() * (tmp.high - tmp.low)) + tmp.low;
}
RED.util.setMessageProperty(msg,node.property,value);
node.send(msg);
}
});
}
RED.nodes.registerType("random",RandomNode);
}

14
function/rbe/LICENSE Normal file
View File

@ -0,0 +1,14 @@
Copyright 2016 JS Foundation and other contributors, https://js.foundation/
Copyright 2013-2016 IBM Corp.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

56
function/rbe/README.md Normal file
View File

@ -0,0 +1,56 @@
node-red-node-rbe
=================
A <a href="http://nodered.org" target="_new">Node-RED</a> node that
provides report-by-exception (RBE) and deadband capability.
The node blocks unless the incoming value changes - RBE mode, or
changes by more than a certain amount (absolute value or percentage) - bandgap modes.
Install
-------
Run the following command in your Node-RED user directory - typically `~/.node-red`
npm i node-red-node-rbe
Usage
-----
A simple node to provide report by exception (RBE) and bandgap functions
- only passes on data if it has changed.
This works on a per `msg.topic` basis. This means that a single rbe node can
handle multiple topics at the same time.
### RBE mode
The node doesn't send any output until the `msg.payload` is different to the previous one.
Works on numbers and strings. Useful for filtering out repeated messages of the
same value. Saves bandwidth, etc...
### Deadband and Narrowband modes
In deadband modes the incoming payload should contain a parseable *number* and is
output only if greater than + or - the *band gap* away from the previous output.
The narrowband modes will block if the incoming value change is greater than + or - the band gap
away from the previous value. Useful for ignoring outliers from a faulty sensor for example.
You can specify compare with *previous valid output value* or *previous input value*.
The former ignores any values outside the valid range, whereas the latter allows
two "bad" readings in a row to reset the range based on those values.
For example a valid step change.
The deadband value can be specified as a fixed number, or a percentage. E.g. 10
or 5% . If % mode is used then the output will only get sent if the input payload
value is equal or more than the specified % away from the previously sent value.
For example - if last sent value was 100, and deadband is set to 10% - a value
of 110 will pass - then the next value has to be 121 in order to pass (= 110 + 10% = 121).
This is mainly useful if you want to operate across multiple topics at the same
time that may have widely differing input ranges.
Will only accept numbers, or parseable strings like "18.4 C" or "$500"

BIN
function/rbe/icons/rbe.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 252 B

View File

@ -0,0 +1,40 @@
<script type="text/html" data-help-name="rbe">
<p>Report by Exception (RBE) - Daten-Weiterleitung nur bei Änderung der Nutzdaten (Payload).
Der Node kann auch blockieren oder weiterleiten, wenn die Wertänderung eine Grenze überschreitet (Totband- und Nahband-Modus).</p>
<h3>Eingangsdaten</h3>
<dl class="message-properties">
<dt>payload
<span class="property-type">number | string | (object)</span>
</dt>
<dd>Der RBE-Modus mit Prüfung auf Wertänderung akzeptiert Zahlen (numbers), Zeichenfolgen (string) und einfache Objekte (object).
Bei den anderen wertvergleichenden Modies müssen analysierbare (parseable) Zahlenwerte übergeben werden.</dd>
<dt class="optional">topic <span class="property-type">string</span>
</dt>
<dd>Wenn vorgegeben erfolgt die Auswertung separat für jedes Topic</dd>
<dt class="optional">reset<span class="property-type">any</span></dt>
<dd>Wenn gesetzt wird/werden der/die gespeicherte(n) Wert(e) rückgesetzt</dd>
</dl>
<h3>Ausgangsdaten</h3>
<dl class="message-properties">
<dt>payload
<span class="property-type">wie Eingangsdaten</span>
</dt>
<dd>Wenn Bedingung erfüllt, sind die Ausgangsdaten gleich den Eingangsdaten</dd>
</dl>
<h3>Details</h3>
<p>Im <i>RBE</i>-Modus mit Prüfung auf Wertänderung blockiert dieser Node die Datenweitergabe bis
<code>msg.payload</code> (oder die eingestellte Eigenschaft) verändert ist gegenüber dessen vorherigen Wert.
Wenn benötigt, wird der Anfangswert ignoriert, sodass beim Start nichts gesendet wird.</p>
<p>In den <i>Totband</i>-Modies werden die Eingangswerte geblockt,
<i>bis</i> die Wertänderung größer oder größer-gleich ist als &plusmn; des Bandes um den voherigen Wert.</p>
<p>In den <i>Nahband</i>-Modies werden die Eingangswerte geblockt,
<i>wenn</i> die Wertänderung größer oder größer-gleich ist als &plusmn; des Bandes um den voherigen Wert.
Dies ist beispielsweise nützlich, um Ausreißer eines fehlerhaften Sensors zu ignorieren.</p>
<p>In den Totband und Nahband-Modies müssen die Eingangswerte analysierbare (parseable) Zahlenwerte sein und
beide unterstützen auch % (prozentuale Angabe), d.h. der Node sendet nur, wenn der Eingangswert mehr als x% vom vorherigen Wert abweicht.</p>
<p>Die Totband- und Nahband-Modies erlauben den Vergleich entweder gegen den letzten gültigen Ausgangswert,
dieses zum Ignorieren von Werten außerhalb des gültigen Bereichs, oder gegen den des vorherigen Eingangswertes,
welches den Sollwert rücksetzt, was einen allmähligen Drift (Totband) oder einen eine schrittweise Veränderung (Nahband) ermöglicht.</p>
<p><b>Hinweis</b>: Dieser Node arbeitet auf per-<code>msg.topic</code>-Basis.
Dies bedeutet, dass ein einzelner rbe-Node mehrere verschiedene Topics parallel bearbeiten kann.</p>
</script>

View File

@ -0,0 +1,29 @@
{
"rbe": {
"rbe": "rbe",
"label": {
"func": "Modus",
"init": "Sende Anfangswert",
"start": "Startwert",
"name": "Name",
"septopics": "Modus für jedes msg.topic separat anwenden"
},
"placeholder":{
"bandgap": "z.B. 10 oder 5%",
"start": "Leer lassen, um erste empfangenen Daten zu nutzen"
},
"opts": {
"rbe": "Blockieren bis Wertänderung",
"rbei": "Blockieren bis Wertänderung (Anfangswert ignorieren)",
"deadband": "Blockieren bis Wertänderung ist größer als",
"deadbandEq": "Blockieren bis Wertänderung ist größer-gleich",
"narrowband": "Blockieren wenn Wertänderung ist größer als",
"narrowbandEq": "Blockieren wenn Wertänderung ist größer-gleich",
"in": "verglichen mit letzten Eingangswert",
"out": "verglichen mit letzten gültigen Ausgangswert"
},
"warn": {
"nonumber": "Keine Zahl gefunden in den Nutzdaten (Payload)"
}
}
}

View File

@ -0,0 +1,41 @@
<script type="text/html" data-help-name="rbe">
<p>Report by Exception (RBE) node - only passes on data if the payload has changed.
It can also block unless, or ignore if the value changes by a specified amount (Dead- and Narrowband mode).</p>
<h3>Inputs</h3>
<dl class="message-properties">
<dt>payload
<span class="property-type">number | string | (object)</span>
</dt>
<dd>RBE mode will accept numbers, strings, and simple objects.
Other modes must provide a parseable number.</dd>
<dt class="optional">topic <span class="property-type">string</span>
</dt>
<dd>if specified the function will work on a per topic basis. This property can be set by configuration.</dd>
<dt class="optional">reset<span class="property-type">any</span></dt>
<dd>if set clears the stored value for the specified msg.topic, or
all topics if msg.topic is not specified.</dd>
</dl>
<h3>Outputs</h3>
<dl class="message-properties">
<dt>payload
<span class="property-type">as per input</span>
</dt>
<dd>If triggered the output will be the same as the input.</dd>
</dl>
<h3>Details</h3>
<p>In RBE mode this node will block until the <code>msg.payload</code>,
(or selected property) value is different to the previous one.
If required it can ignore the intial value, so as not to send anything at start.</p>
<p>The <a href="https://en.wikipedia.org/wiki/Deadband" target="_blank">Deadband</a> modes will block the incoming value
<i>unless</i> its change is greater or greater-equal than &plusmn; the band gap away from a previous value.</p>
<p>The Narrowband modes will block the incoming value,
<i>if</i> its change is greater or greater-equal than &plusmn; the band gap away from the previous value.
It is useful for ignoring outliers from a faulty sensor for example.</p>
<p>Both in Deadband and Narrowband modes the incoming value must contain a parseable number and
both also supports % - only sends if/unless the input differs by more than x% of the original value.</p>
<p>Both Deadband and Narrowband allow comparison against either the previous valid output value, thus
ignoring any values out of range, or the previous input value, which resets the set point, thus allowing
gradual drift (deadband), or a step change (narrowband).</p>
<p><b>Note:</b> This works on a per <code>msg.topic</code> basis, though this can be changed to another property if desired.
This means that a single rbe node can handle multiple different topics at the same time.</p>
</script>

View File

@ -0,0 +1,29 @@
{
"rbe": {
"rbe": "rbe",
"label": {
"func": "Mode",
"init": "Send initial value",
"start": "Start value",
"name": "Name",
"septopics": "Apply mode separately for each "
},
"placeholder":{
"bandgap": "e.g. 10 or 5%",
"start": "leave blank to use first data received"
},
"opts": {
"rbe": "block unless value changes",
"rbei": "block unless value changes (ignore initial value)",
"deadband": "block unless value change is greater than",
"deadbandEq": "block unless value change is greater or equal to",
"narrowband": "block if value change is greater than",
"narrowbandEq": "block if value change is greater or equal to",
"in": "compared to last input value",
"out": "compared to last valid output value"
},
"warn": {
"nonumber": "no number found in payload"
}
}
}

View File

@ -0,0 +1,31 @@
<!-- Source revision: https://github.com/node-red/node-red-nodes/commit/467907776088422882076f46d85e25601449564d -->
<script type="text/html" data-help-name="rbe">
<p>Report by Exception(例外データの報告)ノード - ペイロードの値が変化した場合だけデータを送信。</p>
<p>値が指定した量変化するまでブロックすることもできます- 不感帯(deadband)モード。</p>
<h3>入力</h3> <dl class="message-properties">
<dt>payload
<span class="property-type">数値 | 文字列 | (オブジェクト)</span>
</dt>
<dd>RBEモードでは数値、文字列、シンプルなオブジェクトを受け付けます。他のモードではパース可能な数値を指定します。</dd>
<dt class="optional">topic <span class="property-type">文字列</span>
</dt>
<dd>指定すると、トピックごとに動作します。</dd>
<dt class="optional">reset<span class="property-type">任意</span></dt>
<dd>値を設定すると、保存した値をクリアします。msg.topicを指定した場合は対応する値、指定しなければ全てのトピックが対象となります。</dd>
</dl>
<h3>出力</h3>
<dl class="message-properties">
<dt>payload
<span class="property-type">入力と同じ</span>
</dt>
<dd>トリガー条件を満たした場合、入力を出力として送信。</dd>
</dl>
<h3>詳細</h3>
<p>RBEモードでは、<code>msg.payload</code>が前の値から変化するまでブロックします。</p>
<p>不感帯モードでは、入力データはパース可能な数値でなければなりません。以前の入力値に対する差分が指定値より大きな場合にのみメッセージを出力します。</p>
<p>不感帯モードでは%による指定もサポートしています。入力と前の値の差分がX%より大きな場合に出力を行います。</p>
<p>狭帯域(narrowband)モードでは、前の値に対する差分が一定値より大きな場合に入力ペイロードをブロックします。このモードは、故障したセンサから発生する外れ値を無視する時などに有用です。</p>
<p>不感帯モードと狭帯域モードでは、以前の有効出力値、もしくは、以前の入力値との比較ができます。有効出力値を用いると範囲外の値を無視することが、入力値を用いると設定点がリセットされるため漸次的変化(不感帯モード)もしくは段階的変化(狭帯域モード)が可能です。</p>
<p><b>注:</b> このノードは<code>msg.topic</code>毎に動作します。そのため、ひとつのrbeードで複数の異なるトピックを同時に扱うことができます。</p>
</script>

View File

@ -0,0 +1,27 @@
{
"rbe": {
"label": {
"func": "動作",
"init": "初期値を送付",
"start": "初期値",
"name": "名前"
},
"placeholder": {
"bandgap": "例:10、5%",
"start": "最初に受け取った値を用いる場合は空欄"
},
"opts": {
"rbe": "値が変化した時のみメッセージを中継",
"rbei": "値が変化した時のみメッセージを中継(初期値を無視)",
"deadband": "値が指定した変化量を超える時のみメッセージを中継",
"deadbandEq": "値が指定した変化量以上の時のみメッセージを中継",
"narrowband": "値が指定した変化量を超えない時のみメッセージを中継",
"narrowbandEq": "値が指定した変化量以上でない時のみメッセージを中継",
"in": "最後の入力値と比較",
"out": "最後の出力値と比較"
},
"warn": {
"nonumber": "ペイロードに数値が含まれていません"
}
}
}

24
function/rbe/package.json Normal file
View File

@ -0,0 +1,24 @@
{
"name" : "node-red-node-rbe",
"version" : "0.6.0",
"description" : "A Node-RED node that provides report-by-exception (RBE) and deadband capabilities.",
"dependencies" : {
},
"repository" : {
"type":"git",
"url":"https://github.com/node-red/node-red-nodes.git",
"directory": "tree/master/function/rbe"
},
"license": "Apache-2.0",
"keywords": [ "node-red", "rbe", "bandgap", "deadband" ],
"node-red" : {
"nodes" : {
"rbe": "rbe.js"
}
},
"author": {
"name": "Dave Conway-Jones",
"email": "ceejay@vnet.ibm.com",
"url": "http://nodered.org"
}
}

92
function/rbe/rbe.html Normal file
View File

@ -0,0 +1,92 @@
<script type="text/html" data-template-name="rbe">
<div class="form-row">
<label for="node-input-func"><i class="fa fa-wrench"></i> <span data-i18n="rbe.label.func"></span></label>
<select type="text" id="node-input-func" style="width:70%;">
<option value="rbe" data-i18n="rbe.opts.rbe"></option>
<option value="rbei" data-i18n="rbe.opts.rbei"></option>
<option value="deadbandEq" data-i18n="rbe.opts.deadbandEq"></option>
<option value="deadband" data-i18n="rbe.opts.deadband"></option>
<option value="narrowbandEq" data-i18n="rbe.opts.narrowbandEq"></option>
<option value="narrowband" data-i18n="rbe.opts.narrowband"></option>
</select>
</div>
<div class="form-row" id="node-bandgap">
<label for="node-input-gap">&nbsp;</label>
<input type="text" id="node-input-gap" data-i18n="[placeholder]rbe.placeholder.bandgap" style="width:95px;">
<select type="text" id="node-input-inout" style="width:54%;">
<option value="out" data-i18n="rbe.opts.out"></option>
<option value="in" data-i18n="rbe.opts.in"></option>
</select>
</div>
<div class="form-row" id="node-startvalue">
<label for="node-input-start"><i class="fa fa-thumb-tack"></i> <span data-i18n="rbe.label.start"></span></label>
<input type="text" id="node-input-start" data-i18n="[placeholder]rbe.placeholder.start" style="width:70%;">
</div>
<div class="form-row">
<label for="node-input-property"><i class="fa fa-ellipsis-h"></i> <span data-i18n="node-red:common.label.property"></span></label>
<input type="text" id="node-input-property" style="width:70%;"/>
</div>
<div class="form-row">
<label> </label>
<input type="checkbox" id="node-input-septopics" style="display:inline-block; width:20px; vertical-align:baseline;">
<span data-i18n="rbe.label.septopics"></span> <input type="text" id="node-input-topi" style="width:27%;"/>
</div>
<div class="form-row">
<label for="node-input-name"><i class="fa fa-tag"></i> <span data-i18n="rbe.label.name"></span></label>
<input type="text" id="node-input-name" data-i18n="[placeholder]rbe.label.name" style="width:70%;">
</div>
</script>
<script type="text/javascript">
RED.nodes.registerType("rbe", {
color:"#E2D96E",
category: 'function',
defaults: {
name: {value:""},
func: {value:"rbe"},
gap: {value:"",validate:RED.validators.regex(/^(\d*[.]*\d*|)(%|)$/)},
start: {value:""},
inout: {value:"out"},
septopics: {value:true},
property: {value:"payload",required:true},
topi: {value:"topic",required:true}
},
inputs:1,
outputs:1,
icon: "rbe.png",
label: function() {
var ll = (this.func||"").replace("Eq","").replace("rbei","rbe")||this._("rbe.rbe");
return this.name||ll||this._("rbe.rbe");
},
labelStyle: function() {
return this.name?"node_label_italic":"";
},
oneditprepare: function() {
if (this.property === undefined) {
$("#node-input-property").val("payload");
}
if (this.septopics === undefined) {
$("#node-input-septopics").prop('checked', true);
}
$("#node-input-property").typedInput({default:'msg',types:['msg']});
$("#node-input-topi").typedInput({default:'msg',types:['msg']});
//$( "#node-input-gap" ).spinner({min:0});
if ($("#node-input-inout").val() === null) {
$("#node-input-inout").val("out");
}
$("#node-input-func").on("change",function() {
if (($("#node-input-func").val() === "rbe")||($("#node-input-func").val() === "rbei")) {
$("#node-bandgap").hide();
} else {
$("#node-bandgap").show();
}
if (($("#node-input-func").val() === "narrowband")||($("#node-input-func").val() === "narrowbandEq")) {
$("#node-startvalue").show();
} else {
$("#node-startvalue").hide();
}
});
}
});
</script>

97
function/rbe/rbe.js Normal file
View File

@ -0,0 +1,97 @@
module.exports = function(RED) {
"use strict";
function RbeNode(n) {
RED.nodes.createNode(this,n);
this.func = n.func || "rbe";
this.gap = n.gap || "0";
this.start = n.start || '';
this.inout = n.inout || "out";
this.pc = false;
if (this.gap.substr(-1) === "%") {
this.pc = true;
this.gap = parseFloat(this.gap);
}
this.g = this.gap;
this.property = n.property || "payload";
this.topi = n.topi || "topic";
this.septopics = true;
if (n.septopics !== undefined && n.septopics === false) {
this.septopics = false;
}
var node = this;
node.previous = {};
this.on("input",function(msg) {
var topic;
try {
topic = RED.util.getMessageProperty(msg,node.topi);
}
catch(e) { }
if (msg.hasOwnProperty("reset")) {
if (node.septopics && topic && (typeof topic === "string") && (topic !== "")) {
delete node.previous[msg.topic];
}
else { node.previous = {}; }
}
var value = RED.util.getMessageProperty(msg,node.property);
if (value !== undefined) {
var t = "_no_topic";
if (node.septopics) { t = topic || t; }
if ((this.func === "rbe") || (this.func === "rbei")) {
var doSend = (this.func !== "rbei") || (node.previous.hasOwnProperty(t)) || false;
if (typeof(value) === "object") {
if (typeof(node.previous[t]) !== "object") { node.previous[t] = {}; }
if (!RED.util.compareObjects(value, node.previous[t])) {
node.previous[t] = RED.util.cloneMessage(value);
if (doSend) { node.send(msg); }
}
}
else {
if (value !== node.previous[t]) {
node.previous[t] = RED.util.cloneMessage(value);
if (doSend) { node.send(msg); }
}
}
}
else {
var n = parseFloat(value);
if (!isNaN(n)) {
if ((typeof node.previous[t] === 'undefined') && (this.func === "narrowband")) {
if (node.start === '') { node.previous[t] = n; }
else { node.previous[t] = node.start; }
}
if (node.pc) { node.gap = Math.abs(node.previous[t] * node.g / 100) || 0; }
else { node.gap = Number(node.gap); }
if ((node.previous[t] === undefined) && (node.func === "narrowbandEq")) { node.previous[t] = n; }
if (node.previous[t] === undefined) { node.previous[t] = n - node.gap - 1; }
if (Math.abs(n - node.previous[t]) === node.gap) {
if ((this.func === "deadbandEq")||(this.func === "narrowband")) {
if (node.inout === "out") { node.previous[t] = n; }
node.send(msg);
}
}
else if (Math.abs(n - node.previous[t]) > node.gap) {
if (this.func === "deadband" || this.func === "deadbandEq") {
if (node.inout === "out") { node.previous[t] = n; }
node.send(msg);
}
}
else if (Math.abs(n - node.previous[t]) < node.gap) {
if ((this.func === "narrowband")||(this.func === "narrowbandEq")) {
if (node.inout === "out") { node.previous[t] = n; }
node.send(msg);
}
}
if (node.inout === "in") { node.previous[t] = n; }
}
else {
node.warn(RED._("rbe.warn.nonumber"));
}
}
} // ignore msg with no payload property.
});
}
RED.nodes.registerType("rbe",RbeNode);
}

View File

@ -0,0 +1,100 @@
<script type="text/html" data-template-name="smooth">
<div class="form-row">
<label for="node-input-property"><i class="fa fa-ellipsis-h"></i> <span data-i18n="node-red:common.label.property"></span></label>
<input type="text" id="node-input-property" style="width:70%;"/>
</div>
<div class="form-row">
<label for="node-input-action"><i class="fa fa-bolt"></i> Action</label>
<select id="node-input-action" style="width:60%; margin-right:5px;">
<option value="max">Return the maximum value seen</option>
<option value="min">Return the minimum value seen</option>
<option value="mean">Return the mean value</option>
<option value="sd">Return the standard deviation</option>
<option value="low">Perform low pass filter</option>
<option value="high">Perform high pass filter</option>
</select>
</div>
<div class="form-row">
<label for="node-input-count">&nbsp;</label>
<span id="node-over">over the most recent </span>
<input type="text" id="node-input-count" placeholder="10" style="width:50px;"/>
<span id="node-over2"> values</span>
</div>
<div class="form-row">
<label for="node-input-round">(optionally)</label>
round to <input type="text" id="node-input-round" placeholder="ignore" style="width:50px;"/> decimal places
</div>
<div class="form-row">
<label for="node-input-mult">Treat</label>
<select id="node-input-mult" style="width:60%; margin-right:5px;">
<option value="single">All msg as one stream.</option>
<option value="multi">Different msg.topic as individual streams.</option>
</select>
</div>
<div class="form-row" id="row-input-reduce">
<label for="node-input-reduce"><i class="fa fa-compress"></i> Reduce</label>
<input type="checkbox" id="node-input-reduce" style="display:inline-block; width:20px; vertical-align:baseline;">
only emit one message per most recent N values
</div>
<br/>
<div class="form-row">
<label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
<input type="text" id="node-input-name" placeholder="Name">
</div>
<div class="form-tips" id="node-tip">Tip: This node ONLY works with numbers.</div>
</script>
<script type="text/javascript">
RED.nodes.registerType('smooth', {
color: "#E2D96E",
category: 'function',
defaults: {
name: {value:""},
property: {value:"payload",required:true},
action: {value:"mean"},
count: {value:"10",required:true,validate:RED.validators.number()},
round: {value:""},
mult: {value:"single"},
reduce: {value:false}
},
inputs: 1,
outputs: 1,
icon: "smooth.png",
label: function() {
return this.name || "smooth";
},
labelStyle: function() {
return this.name ? "node_label_italic" : "";
},
outputLabels: function() { return this.reduce === true ? (this.action+" of "+this.count) : (this.action); },
oneditprepare: function() {
if (this.property === undefined) {
$("#node-input-property").val("payload");
}
$("#node-input-property").typedInput({default:'msg',types:['msg']});
$("#node-input-count").spinner({
min:1
});
$("#node-input-round").spinner({
});
$("#node-input-action").change( function() {
var a = $("#node-input-action").val();
if ((a === "high") || ( a === "low" )) {
$("#node-over").html("with a smoothing factor of ");
$("#node-over2").html("");
$("#row-input-reduce").hide();
}
else {
$("#node-over").html("over the most recent ");
$("#node-over2").html(" values");
$("#row-input-reduce").show();
}
});
$("#node-input-action").change();
if ($("#node-input-round").val() === "true") {
$("#node-input-round").val(0);
}
}
});
</script>

View File

@ -0,0 +1,80 @@
module.exports = function(RED) {
"use strict";
function SmoothNode(n) {
RED.nodes.createNode(this, n);
this.action = n.action;
this.round = n.round || false;
if (this.round == "true") { this.round = 0; }
this.count = Number(n.count);
this.mult = n.mult || "single";
this.reduce = n.reduce || false;
this.property = n.property || "payload";
var node = this;
var v = {};
this.on('input', function (msg) {
var value = RED.util.getMessageProperty(msg,node.property);
var top = msg.topic || "_my_default_topic";
var reduce = node.reduce;
if (this.mult === "single") { top = "a"; }
if ((v.hasOwnProperty(top) !== true) || msg.hasOwnProperty("reset")) {
v[top] = {};
v[top].a = [];
v[top].tot = 0;
v[top].tot2 = 0;
v[top].pop = 0;
v[top].old = null;
v[top].count = this.count;
v[top].iter = 0;
}
if (value !== undefined) {
var n = Number(value);
if (!isNaN(n)) {
v[top].iter++;
if ((node.action === "low") || (node.action === "high")) {
if (v[top].old == null) { v[top].old = n; }
v[top].old = v[top].old + (n - v[top].old) / v[top].count;
if (node.action === "low") { value = v[top].old; }
else { value = n - v[top].old; }
reduce = false;
}
else {
v[top].a.push(n);
if (v[top].a.length > v[top].count) { v[top].pop = v[top].a.shift(); }
if (node.action === "max") {
value = Math.max.apply(Math, v[top].a);
}
if (node.action === "min") {
value = Math.min.apply(Math, v[top].a);
}
if (node.action === "mean") {
v[top].tot = v[top].tot + n - v[top].pop;
value = v[top].tot / v[top].a.length;
}
if (node.action === "sd") {
v[top].tot = v[top].tot + n - v[top].pop;
v[top].tot2 = v[top].tot2 + (n*n) - (v[top].pop * v[top].pop);
if (v[top].a.length > 1) {
value = Math.sqrt((v[top].a.length * v[top].tot2 - v[top].tot * v[top].tot)/(v[top].a.length * (v[top].a.length - 1)));
}
else { value = 0; }
}
}
if (node.round !== false) {
value = Math.round(value * Math.pow(10, node.round)) / Math.pow(10, node.round);
}
if (reduce == false || v[top].iter == v[top].count) {
v[top].iter = 0;
RED.util.setMessageProperty(msg,node.property,value);
node.send(msg);
}
}
else { node.log("Not a number: " + value); }
} // ignore msg with no payload property.
});
}
RED.nodes.registerType("smooth", SmoothNode);
}

14
function/smooth/LICENSE Normal file
View File

@ -0,0 +1,14 @@
Copyright 2016 JS Foundation and other contributors, https://js.foundation/
Copyright 2013-2016 IBM Corp.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

39
function/smooth/README.md Normal file
View File

@ -0,0 +1,39 @@
node-red-node-smooth
====================
A <a href="http://nodered.org" target="_new">Node-RED</a> node that provides
several simple smoothing algorithms for incoming data values. These include
- Minimum
- Maximum
- Mean
- Standard Deviation
- High Pass Smoothing
- Low Pass Smoothing
Install
-------
Run the following command in your Node-RED user directory - typically `~/.node-red`
npm install node-red-node-smooth
Usage
-----
A simple node to provide various functions across several previous values,
including max, min, mean, standard deviation, high and low pass filters.
Max, Min, Mean and Standard Deviation work over a rolling window, based on a
specified number of previous values.
The High and Low pass filters use a smoothing factor. The higher the number
the more the smoothing. E.g. a value of 10 is similar to an &alpha; of 0.1.
It is analogous to an RC time constant - but there is no time component to
this as the code is based on events arriving.
If `msg.reset` is received (with any value), all the counters and intermediate values are reset to an initial state.
**Note:** This node only operates on **numbers**. Anything else will try to be
made into a number and rejected if that fails.

Binary file not shown.

After

Width:  |  Height:  |  Size: 725 B

View File

@ -0,0 +1,10 @@
<script type="text/html" data-help-name="smooth">
<p>A simple node to provide various functions across several previous values, including max, min, mean, high and low pass filters.</p>
<p>Messages arriving with different <code>msg.topic</code> can be treated as separate streams if so configured.</p>
<p>Max, Min and Mean work over a specified number of previous values.</p>
<p>The High and Low pass filters use a smoothing factor. The higher the number the more the smoothing. E.g. a value of 10 is similar to an &alpha; of 0.1. It is analagous to an RC time constant - but there is no time component to this as the time is based on events arriving.</p>
<p>Enabling the Reduce option causes the node to only emit one message per N values (available for the Max, Min and Mean functions). E.g. if set to Mean over 10 values, there will only be one outgoing message per 10 incoming ones.</p>
<p>If <code>msg.reset</code> is received (with any value), all the counters and intermediate values are reset to an initial state.</p>
<p><b>Note:</b> This only operates on <b>numbers</b>. Anything else will try to be made into a number and rejected if that fails.</p>
</script>

View File

@ -0,0 +1,25 @@
{
"name" : "node-red-node-smooth",
"version" : "0.1.2",
"description" : "A Node-RED node that provides several simple smoothing algorithms for incoming data values.",
"dependencies" : {
},
"repository" : {
"type":"git",
"url":"https://github.com/node-red/node-red-nodes.git",
"directory": "tree/master/function/smooth"
},
"license": "Apache-2.0",
"keywords": [ "node-red", "smooth", "average", "standard deviation" ],
"node-red" : {
"nodes" : {
"smooth": "17-smooth.js"
}
},
"author": {
"name": "Dave Conway-Jones",
"email": "ceejay@vnet.ibm.com",
"url": "http://nodered.org"
},
"contributors" : [ "@clickworkorange" ]
}

View File

@ -0,0 +1,151 @@
<script type="text/html" data-template-name="arduino in">
<div class="form-row">
<label for="node-input-arduino"><i class="fa fa-tasks"></i> Arduino</label>
<input type="text" id="node-input-arduino">
</div>
<div class="form-row">
<label for="node-input-state"><i class="fa fa-wrench"></i> <span data-i18n="arduino.label.type"></span></label>
<select type="text" id="node-input-state" style="width:200px;">
<option value="INPUT" data-i18n="arduino.state.in.digital"></option>
<option value="PULLUP" data-i18n="arduino.state.in.pullup"></option>
<option value="ANALOG" data-i18n="arduino.state.in.analogue"></option>
<option value="STRING" data-i18n="arduino.state.in.string"></option>
</select>
</div>
<div class="form-row">
<label for="node-input-pin"><i class="fa fa-circle"></i> <span data-i18n="arduino.label.pin"></span></label>
<input type="text" id="node-input-pin" placeholder="2">
</div>
<div class="form-row">
<label for="node-input-name"><i class="fa fa-tag"></i> <span data-i18n="node-red:common.label.name"></span></label>
<input type="text" id="node-input-name" data-i18n="[placeholder]node-red:common.label.name">
</div>
<div class="form-tips"><span data-i18n="[html]arduino.tip.io"></span></div>
</script>
<script type="text/javascript">
RED.nodes.registerType('arduino in',{
category: 'Arduino',
color:"#3fadb5",
defaults: {
name: {value:""},
pin: {value:"",validate: function(v) {
var ct = $("#node-input-state").val() || this.state;
return ct === 'STRING' || (v !== '');
}},
state: {value:"INPUT",required:true},
arduino: {type:"arduino-board"}
},
inputs:0,
outputs:1,
icon: "arduino.png",
label: function() {
if (this.state === "STRING") { return "String"; }
var a = "";
if (this.state === "ANALOG") { a = "A"; }
return this.name||"Pin: "+a+this.pin;
},
labelStyle: function() {
return this.name?"node_label_italic":"";
}
});
</script>
<script type="text/html" data-template-name="arduino out">
<div class="form-row">
<label for="node-input-arduino"><i class="fa fa-tasks"></i> Arduino</label>
<input type="text" id="node-input-arduino">
</div>
<div class="form-row">
<label for="node-input-state"><i class="fa fa-wrench"></i> <span data-i18n="arduino.label.type"></span></label>
<select type="text" id="node-input-state" style="width:200px;">
<option value="OUTPUT" data-i18n="arduino.state.out.digital"></option>
<option value="PWM" data-i18n="arduino.state.out.analogue"></option>
<option value="SERVO" data-i18n="arduino.state.out.servo"></option>
<option value="STRING" data-i18n="arduino.state.out.string"></option>
</select>
</div>
<div class="form-row">
<label for="node-input-pin"><i class="fa fa-circle"></i> <span data-i18n="arduino.label.pin"></span></label>
<input type="text" id="node-input-pin" placeholder="13">
</div>
<div class="form-row">
<label for="node-input-name"><i class="fa fa-tag"></i> <span data-i18n="node-red:common.label.name"></span></label>
<input type="text" id="node-input-name" data-i18n="[placeholder]node-red:common.label.name">
</div>
<div class="form-tips"><span data-i18n="[html]arduino.tip.io"></span></div>
</script>
<script type="text/javascript">
RED.nodes.registerType('arduino out', {
category: 'Arduino',
color:"#3fadb5",
defaults: {
name: {value:""},
pin: {value:"",validate: function(v) {
var ct = $("#node-input-state").val() || this.state;
return ct === 'STRING' || (v !== '');
}},
state: {value:"",required:true},
arduino: {type:"arduino-board"}
},
inputs:1,
outputs:0,
icon: "arduino.png",
align: "right",
label: function() {
if (this.state === "STRING") { return "String"; }
return this.name||"Pin: "+this.pin;
},
labelStyle: function() {
return this.name?"node_label_italic":"";
}
});
</script>
<script type="text/html" data-template-name="arduino-board">
<div class="form-row">
<label for="node-config-input-device"><i class="fa fa-random"></i> <span data-i18n="arduino.label.port"></span></label>
<input type="text" id="node-config-input-device" style="width:60%;" data-i18n="[placeholder]arduino.placeholder.port"/>
<a id="node-config-lookup-serial" class="red-ui-button"><i id="node-config-lookup-serial-icon" class="fa fa-search"></i></a>
</div>
<div class="form-tips"><span data-i18n="[html]arduino.tip.conf"></span></div>
</script>
<script type="text/javascript">
RED.nodes.registerType('arduino-board',{
category: 'config',
defaults: {
device: {value:""}
},
label: function() {
return this.device||"arduino";
},
oneditprepare: function() {
try {
$("#node-config-input-device").autocomplete( "destroy" );
} catch(err) { }
$("#node-config-lookup-serial").click(function() {
$("#node-config-lookup-serial-icon").removeClass('fa-search');
$("#node-config-lookup-serial-icon").addClass('spinner');
$("#node-config-lookup-serial").addClass('disabled');
$.getJSON('arduinoports',function(data) {
$("#node-config-lookup-serial-icon").addClass('fa-search');
$("#node-config-lookup-serial-icon").removeClass('spinner');
$("#node-config-lookup-serial").removeClass('disabled');
var ports = data || [];
$("#node-config-input-device").autocomplete({
source:ports,
minLength:0,
close: function( event, ui ) {
$("#node-config-input-device").autocomplete( "destroy" );
}
}).autocomplete("search","");
});
});
}
});
</script>

View File

@ -0,0 +1,219 @@
module.exports = function(RED) {
"use strict";
var Board = require('firmata');
var SP = require('serialport');
// The Board Definition - this opens (and closes) the connection
function ArduinoNode(n) {
RED.nodes.createNode(this,n);
this.device = n.device || null;
this.running = false;
this.reported = false;
var node = this;
var startup = function() {
node.board = new Board(node.device, function(e) {
if ((e !== undefined) && (e.toString().indexOf("cannot open") !== -1) ) {
if (node.reported === false) {
node.error(RED._("arduino.errors.portnotfound",{device:node.device}));
node.reported = true;
}
}
else if (e === undefined) {
node.running = true;
node.reported = false;
node.board.once('ready', function() {
node.log(RED._("arduino.status.connected",{device:node.board.sp.path}));
if (RED.settings.verbose) {
node.log(RED._("arduino.status.version",{version:node.board.firmware.name+"-"+node.board.version.major+"."+node.board.version.minor}));
}
});
node.board.once('close', function() {
node.error(RED._("arduino.status.portclosed"));
});
node.board.once('disconnect', function() {
if (node.running === true) { setTimeout(function() { node.running = false; startup(); }, 5000); }
});
}
});
setTimeout(function() { if (node.running === false) { startup(); } }, 5000);
};
startup();
node.on('close', function(done) {
node.running = false;
if (node.board) {
try {
node.board.transport.close(function() {
if (RED.settings.verbose) { node.log(RED._("arduino.status.portclosed")); }
done();
});
}
catch(e) { done(); }
}
else { done(); }
});
}
RED.nodes.registerType("arduino-board",ArduinoNode);
// The Input Node
function DuinoNodeIn(n) {
RED.nodes.createNode(this,n);
this.buttonState = -1;
this.pin = n.pin;
this.state = n.state;
this.arduino = n.arduino;
this.serverConfig = RED.nodes.getNode(this.arduino);
this.running = false;
var node = this;
if (typeof this.serverConfig === "object") {
var startup = function() {
node.board = node.serverConfig.board;
node.board.setMaxListeners(0);
node.oldval = "";
node.status({fill:"grey",shape:"ring",text:"node-red:common.status.connecting"});
var doit = function() {
node.running = true;
if (node.state === "ANALOG") { node.board.pinMode(node.pin, 0x02); }
if (node.state === "INPUT") { node.board.pinMode(node.pin, 0x00); }
if (node.state === "PULLUP") { node.board.pinMode(node.pin, 0x0B); }
node.status({fill:"green",shape:"dot",text:"node-red:common.status.connected"});
if (node.state === "ANALOG") {
node.board.analogRead(node.pin, function(v) {
if (v !== node.oldval) {
node.oldval = v;
node.send({payload:v, topic:"A"+node.pin});
}
});
}
if (node.state === "INPUT") {
node.board.digitalRead(node.pin, function(v) {
if (v !== node.oldval) {
node.oldval = v;
node.send({payload:v, topic:node.pin});
}
});
}
if (node.state === "PULLUP") {
node.board.digitalRead(node.pin, function(v) {
if (v !== node.oldval) {
node.oldval = v;
node.send({payload:v, topic:node.pin});
}
});
}
if (node.state == "STRING") {
node.board.on('string', function(v) {
if (v !== node.oldval) {
node.oldval = v;
node.send({payload:v, topic:"string"});
}
});
}
node.board.once('disconnect', function() {
node.status({fill:"red",shape:"ring",text:"node-red:common.status.not-connected"});
if (node.running) { setTimeout(function() { node.running = false; startup(); }, 5500); }
});
}
if (node.board.isReady) { doit(); }
else { node.board.once("ready", function() { doit(); }); }
setTimeout(function() { if (node.running === false) { startup(); } }, 4500);
}
startup();
}
else {
node.warn(RED._("arduino.errors.portnotconf"));
}
node.on('close', function() {
node.running = false;
});
}
RED.nodes.registerType("arduino in",DuinoNodeIn);
// The Output Node
function DuinoNodeOut(n) {
RED.nodes.createNode(this,n);
this.buttonState = -1;
this.pin = n.pin;
this.state = n.state;
this.arduino = n.arduino;
this.serverConfig = RED.nodes.getNode(this.arduino);
this.running = false;
var node = this;
if (typeof node.serverConfig === "object") {
var startup = function() {
node.board = node.serverConfig.board;
node.board.setMaxListeners(0);
node.status({fill:"grey",shape:"ring",text:"node-red:common.status.connecting"});
var doit = function() {
node.running = true;
if (node.state === "OUTPUT") { node.board.pinMode(node.pin, 0x01); }
if (node.state === "PWM") { node.board.pinMode(node.pin, 0x03); }
if (node.state === "SERVO") { node.board.pinMode(node.pin, 0x04); }
node.status({fill:"green",shape:"dot",text:"node-red:common.status.connected"});
node.on("input", function(msg) {
if (node.board.isReady) {
if (node.state === "OUTPUT") {
if ((msg.payload === true)||(msg.payload.toString() == "1")||(msg.payload.toString().toLowerCase() == "on")) {
node.board.digitalWrite(node.pin, node.board.HIGH);
}
if ((msg.payload === false)||(msg.payload.toString() == "0")||(msg.payload.toString().toLowerCase() == "off")) {
node.board.digitalWrite(node.pin, node.board.LOW);
}
}
if (node.state === "PWM") {
msg.payload = parseInt((msg.payload * 1) + 0.5);
if ((msg.payload >= 0) && (msg.payload <= 255)) {
node.board.analogWrite(node.pin, msg.payload);
}
}
if (node.state === "SERVO") {
msg.payload = parseInt((msg.payload * 1) + 0.5);
if ((msg.payload >= 0) && (msg.payload <= 180)) {
node.board.servoWrite(node.pin, msg.payload);
}
}
if (node.state === "SYSEX") {
node.board.sysexCommand(msg.payload);
}
if (node.state === "STRING") {
node.board.sendString(msg.payload.toString());
}
}
});
node.board.once('disconnect', function() {
node.status({fill:"red",shape:"ring",text:"node-red:common.status.not-connected"});
if (node.running === true) { setTimeout(function() { node.running = false; startup(); }, 5500); }
});
}
if (node.board.isReady) { doit(); }
else { node.board.once("ready", function() { doit(); }); }
setTimeout(function() { if (node.running === false) { startup(); } }, 4500);
}
startup();
}
else {
node.warn(RED._("arduino.errors.portnotconf"));
}
node.on('close', function() {
node.running = false;
});
}
RED.nodes.registerType("arduino out",DuinoNodeOut);
RED.httpAdmin.get("/arduinoports", RED.auth.needsPermission("arduino.read"), function(req,res) {
SP.list().then(
ports => {
const a = ports.map(p => p.comName);
res.json(a);
},
err => {
this.log('Error listing serial ports', err)
}
)
});
}

14
hardware/Arduino/LICENSE Normal file
View File

@ -0,0 +1,14 @@
Copyright 2016 JS Foundation and other contributors, https://js.foundation/
Copyright 2013-2016 IBM Corp.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

View File

@ -0,0 +1,51 @@
node-red-node-arduino
=====================
A <a href="http://nodered.org" target="_new">Node-RED</a> node to talk to an
Arduino running standard firmata 2.2 or better.
Install
-------
Either use the Menu - Manage Palette option or run the following command in your Node-RED user directory - typically `~/.node-red`
npm i --unsafe-perm node-red-node-arduino
Usage
-----
The Firmata firmware must be loaded into the Arduino.
See the [main documentation](http://nodered.org/docs/hardware/arduino.html) for
details and examples of how to use this node.
### Input Node
Connects to local Arduino and monitors the selected pin for changes.
You can select either **Digital**, **Pullup**, **Analogue**, or **String** input type.
Outputs the value read as `msg.payload` and the pin number as `msg.topic`.
It only outputs on a change of value - fine for digital inputs, but you can get a lot of data from analogue pins which you must then handle. For example you could use a `delay` node set to rate limit and drop intermediate values, or an `rbe` node to only report when it changes by a certain amount.
### Output Node
Connects to local Arduino and writes to the selected pin.
You can select
- **Digital** - accepts 0, 1, true, false, on, off
- **Analogue** (PWM) - accepts Integer 0 to 255
- **Servo** - accepts Integer 0 - 180
- **String** - to send a *String* to the Arduino
Expects a numeric value in `msg.payload`. The pin number is set in the properties panel.
*Note* - some servos will not travel a full 180 degree range so may only accept 30 - 150 degrees for example.
Please use the `range` node to scale the input appropriately.
### Example
Simple flow to blink Pin 13
[{"id":"d7663aaf.47194","type":"arduino-board","device":""},{"id":"dae8234f.2517e","type":"inject","name":"0.5s tick","topic":"","payload":"","payloadType":"date","repeat":"0.5","crontab":"","once":false,"x":150,"y":100,"z":"359a4b52.ca65b4","wires":[["56a6f8f2.a95908"]]},{"id":"2db61802.d249e8","type":"arduino out","name":"","pin":"13","state":"OUTPUT","arduino":"d7663aaf.47194","x":570.5,"y":100,"z":"359a4b52.ca65b4","wires":[]},{"id":"56a6f8f2.a95908","type":"function","name":"Toggle output on input","func":"\n// If it does exist make it the inverse of what it was or else initialise it to false\n// (context variables persist between calls to the function)\ncontext.level = !context.level || false;\n\n// set the payload to the level and return\nmsg.payload = context.level;\nreturn msg;","outputs":1,"noerr":0,"x":358,"y":100,"z":"359a4b52.ca65b4","wires":[["2db61802.d249e8"]]}]

View File

@ -0,0 +1,42 @@
{
"arduino": {
"label": {
"pin": "Pin",
"type": "Typ",
"port": "Port"
},
"placeholder": {
"port": "z. B. /dev/ttyUSB0 COM1"
},
"status": {
"connectfirst": "Verbinde mit zuerst gefundenen Board",
"connect": "Verbinde mit __device__",
"connected": "Verbunden mit __device__",
"version": "Version: __version__",
"portclosed": "Serieller Arduino-Port geschlossen"
},
"state": {
"in": {
"digital": "Digitaler Pin",
"pullup": "Digitaler Pin mit Pullup",
"analogue": "Analoger Pin",
"string": "String"
},
"out": {
"digital": "Digital (0/1)",
"analogue": "Analog (0-255)",
"servo": "Servo (0-180)",
"string": "String"
}
},
"tip": {
"io": "<b>Hinweis:</b> Derselbe Pin kann nicht gleichzeitig als Ausgang und Eingang verwendet werden",
"conf": "<b>Tipp:</b> Zur automatischen Erkennung des seriellen Ports die Suche verwenden"
},
"errors": {
"portnotconf": "Port nicht konfiguriert",
"portnotfound": "Port nicht gefunden: __device__",
"devnotfound": "Device __dev__ nicht gefunden. Versuche Board zu finden."
}
}
}

View File

@ -0,0 +1,16 @@
<script type="text/html" data-help-name="arduino in">
<p>Arduino input node. Connects to a local Arduino and monitors the selected pin for changes. Uses <a href="http://firmata.org/" target="_new"><i>Firmata</i>.</a></p>
<p>The Arduino must be loaded with the Standard Firmata sketch available in the Arduino examples.</p>
<p>You can select either Digital or Analogue input. Outputs the value read as <code>msg.payload</code> and the pin number as <code>msg.topic</code>.</p>
<p>It only outputs on a change of value - fine for digital inputs, but you can get a lot of data from analogue pins which you must then handle.</p>
<p>For example you could use a <code>delay</code> node set to rate limit and drop intermediate values, or an <code>rbe</code> node to only report when it changes by a certain amount.</p>
</script>
<script type="text/html" data-help-name="arduino out">
<p>Arduino output node. Connects to local Arduino and writes to the selected digital
pin. Uses <a href="http://firmata.org/" target="_new"><i>Firmata</i>.</a></p>
<p>The Arduino must be loaded with the Standard Firmata sketch available in the Arduino examples.</p>
<p>You can select Digital, Analogue (PWM) or Servo type outputs. Expects an integer numeric
value in <code>msg.payload</code>. The pin number is set in the properties panel.</p>
</script>

View File

@ -0,0 +1,42 @@
{
"arduino": {
"label": {
"pin": "Pin",
"type": "Type",
"port": "Port"
},
"placeholder": {
"port": "e.g. /dev/ttyUSB0 COM1"
},
"status": {
"connectfirst": "connecting to first board found",
"connect": "connecting to __device__",
"connected": "connected to __device__",
"version": "version: __version__",
"portclosed": "Arduino serial port closed"
},
"state": {
"in": {
"digital": "Digital pin",
"pullup": "Digital pin with pullup",
"analogue": "Analogue pin",
"string": "String"
},
"out": {
"digital": "Digital (0/1)",
"analogue": "Analogue (0-255)",
"servo": "Servo (0-180)",
"string": "String"
}
},
"tip": {
"io": "<b>Note:</b> You cannot use the same pin for both output and input.",
"conf": "<b>Tip:</b> Use search to try to auto-detect serial port."
},
"errors": {
"portnotconf": "port not configured",
"portnotfound": "port not found : __device__",
"devnotfound": "device __dev__ not found. Trying to find board."
}
}
}

View File

@ -0,0 +1,32 @@
{
"name": "node-red-node-arduino",
"version": "0.3.1",
"description": "A Node-RED node to talk to an Arduino running firmata",
"dependencies": {
"firmata": "^2.3.0"
},
"repository": {
"type": "git",
"url": "https://github.com/node-red/node-red-nodes.git",
"directory": "tree/master/hardware/Arduino"
},
"license": "Apache-2.0",
"keywords": [
"node-red",
"arduino",
"firmata"
],
"node-red": {
"nodes": {
"arduino": "35-arduino.js"
}
},
"engines": {
"node": ">=8"
},
"author": {
"name": "Dave Conway-Jones",
"email": "ceejay@vnet.ibm.com",
"url": "http://nodered.org"
}
}

View File

@ -1,23 +1,8 @@
<!--
Copyright 2014 Maxwell R Hadley
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<!-- Edit dialog for bbb-analogue-in -->
<script type="text/x-red" data-template-name="bbb-analogue-in">
<div class="form-row">
<label for="node-input-pin"><i class="icon-asterisk"></i>Input pin</label>
<label for="node-input-pin"><i class="fa fa-asterisk"></i>Input pin</label>
<select type="text" id="node-input-pin" style="width: 150px;">
<option value="">select pin</option>
<option value="P9_39">AIN0 (P9 pin 39)</option>
@ -30,7 +15,7 @@
</select>
</div>
<div class="form-row">
<label for="node-input-topic"><i class="icon-tasks"></i> Topic</label>
<label for="node-input-topic"><i class="fa fa-tasks"></i> Topic</label>
<input type="text" id="node-input-topic" placeholder="Topic">
</div>
<div class="form-row">
@ -43,13 +28,13 @@
</div>
</div>
<div class="form-row">
<a href="#" class="btn btn-mini" id="node-input-add-breakpoint" style="margin-top: 4px;"><i class="icon-plus"></i> Add Breakpoint</a>
<a href="#" class="btn btn-mini" id="node-input-add-breakpoint" style="margin-top: 4px;"><i class="fa fa-plus"></i> Add Breakpoint</a>
<span style="float:right; margin-top:4px">
<input type="checkbox" id="node-input-averaging" style="display:inline-block; width:auto; vertical-align:top;"> Averaging&nbsp;
</span>
</span>
</div>
<div class="form-row">
<label for="node-input-name"><i class="icon-tag"></i> Name</label>
<label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
<input type="text" id="node-input-name" placeholder="Name">
</div>
</script>
@ -78,7 +63,7 @@ voltage ten times in rapid succession for each input message and output the mean
<!-- Register bbb-analogue-in node -->
<script type="text/javascript">
RED.nodes.registerType('bbb-analogue-in', {
category: 'advanced-input', // the palette category
category: 'Beaglebone', // the palette category
color:"#de7224",
defaults: { // defines the editable properties of the node
pin: { value:"", required:true },
@ -124,11 +109,11 @@ voltage ten times in rapid succession for each input message and output the mean
});
} else {
mutableFlag.attr("mutable", "false");
}
}
if (insert === true) {
var last = $("#node-input-breakpoint-container").children().last();
var prev = last.prev();
inputValueField.val((Number(last.find(".node-input-breakpoint-input-value").val()) +
inputValueField.val((Number(last.find(".node-input-breakpoint-input-value").val()) +
Number(prev.find(".node-input-breakpoint-input-value").val()))/2);
outputValueField.val((Number(last.find(".node-input-breakpoint-output-value").val()) +
Number(prev.find(".node-input-breakpoint-output-value").val()))/2);
@ -139,21 +124,21 @@ voltage ten times in rapid succession for each input message and output the mean
$("#node-input-breakpoint-container").append(container);
}
}
$("#node-input-add-breakpoint").click(function () {
generateBreakpoint({input:0, output:0, mutable:true}, true);
$("#node-input-breakpoint-container-div").scrollTop($("#node-input-breakpoint-container-div").get(0).scrollHeight);
});
for (var i = 0; i < this.breakpoints.length; i++) {
var breakpoint = this.breakpoints[i];
generateBreakpoint(breakpoint, false);
}
// Handle resizing the Input Scaling div when the dialog is resized - this isn't quite right!
function switchDialogResize(ev, ui) {
$("#node-input-breakpoint-container-div").css("height", (ui.size.height - 299) + "px");
};
}
$("#dialog").on("dialogresize", switchDialogResize);
$("#dialog").one("dialogopen", function (ev) {
@ -186,7 +171,7 @@ voltage ten times in rapid succession for each input message and output the mean
<!-- Edit dialog for bbb-discrete-in -->
<script type="text/x-red" data-template-name="bbb-discrete-in">
<div class="form-row">
<label for="node-input-pin"><i class="icon-asterisk"></i>Input pin</label>
<label for="node-input-pin"><i class="fa fa-asterisk"></i>Input pin</label>
<select type="text" id="node-input-pin" style="width: 200px;">
<option value="">select pin</option>
<option value="P8_7">GPIO2_2 (P8 pin 7)</option>
@ -228,7 +213,7 @@ voltage ten times in rapid succession for each input message and output the mean
</div>
<div class="form-row">
<label for="node-input-debounce">Debounce</label>
<input type="checkbox" id="node-input-debounce" style="display:inline-block; width:auto; vertical-align:top;">
<input type="text" id="node-input-debounce" placeholder="debounce time in mS" style="width: 160px"> mS
</div>
<div class="form-row">
<label for="node-input-outputOn">Output on</label>
@ -239,16 +224,16 @@ voltage ten times in rapid succession for each input message and output the mean
</select>
</div>
<div class="form-row">
<label for="node-input-updateInterval"><i class="icon-repeat"></i> Update at</label>
<label for="node-input-updateInterval"><i class="fa fa-repeat"></i> Update at</label>
<input id="node-input-updateInterval" type="text" style="width: 65px">
<label>sec intervals</label>
</div>
<div class="form-row">
<label for="node-input-topic"><i class="icon-tasks"></i> Topic</label>
<label for="node-input-topic"><i class="fa fa-tasks"></i> Topic</label>
<input type="text" id="node-input-topic" placeholder="Topic">
</div>
<div class="form-row">
<label for="node-input-name"><i class="icon-tag"></i> Name</label>
<label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
<input type="text" id="node-input-name" placeholder="Name">
</div>
</script>
@ -279,12 +264,12 @@ press. When using buttons or switches, enable debouncing to improve reliability.
<!-- Register bbb-discrete-in node -->
<script type="text/javascript">
RED.nodes.registerType('bbb-discrete-in', {
category: 'advanced-input', // the palette category
category: 'Beaglebone', // the palette category
color:"#de7224",
defaults: { // defines the editable properties of the node
pin: { value:"", required:true },
activeLow: { value:false, required:true },
debounce: { value:false, required:true },
debounce: { value:0, required:true },
outputOn: { value:"both", required:true },
updateInterval: { value:60, required:true, validate:RED.validators.number() },
topic: { value:"" },
@ -305,7 +290,7 @@ press. When using buttons or switches, enable debouncing to improve reliability.
<!-- Edit dialog for bbb-pulse-in -->
<script type="text/x-red" data-template-name="bbb-pulse-in">
<div class="form-row">
<label for="node-input-pin"><i class="icon-asterisk"></i>Input pin</label>
<label for="node-input-pin"><i class="fa fa-asterisk"></i>Input pin</label>
<select type="text" id="node-input-pin" style="width: 200px;">
<option value="">select pin</option>
<option value="P8_7">GPIO2_2 (P8 pin 7)</option>
@ -359,16 +344,16 @@ press. When using buttons or switches, enable debouncing to improve reliability.
<label style="width: 60%"> units per count/second</label>
</div>
<div class="form-row">
<label for="node-input-updateInterval"><i class="icon-repeat"></i> Update at</label>
<label for="node-input-updateInterval"><i class="fa fa-repeat"></i> Update at</label>
<input id="node-input-updateInterval" type="text" style="width: 65px">
<label>sec intervals</label>
</div>
<div class="form-row">
<label for="node-input-topic"><i class="icon-tasks"></i> Topic</label>
<label for="node-input-topic"><i class="fa fa-tasks"></i> Topic</label>
<input type="text" id="node-input-topic" placeholder="Topic">
</div>
<div class="form-row">
<label for="node-input-name"><i class="icon-tag"></i> Name</label>
<label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
<input type="text" id="node-input-name" placeholder="Name">
</div>
</script>
@ -390,7 +375,7 @@ any other input message will reset it to zero.
<!-- Register bbb-pulse-in node -->
<script type="text/javascript">
RED.nodes.registerType('bbb-pulse-in', {
category: 'advanced-input', // the palette category
category: 'Beaglebone', // the palette category
color:"#de7224",
defaults: { // defines the editable properties of the node
pin: { value:"", required:true },
@ -416,7 +401,7 @@ any other input message will reset it to zero.
<!-- Edit dialog for bbb-discrete-out -->
<script type="text/x-red" data-template-name="bbb-discrete-out">
<div class="form-row">
<label for="node-input-pin"><i class="icon-asterisk"></i>Output pin</label>
<label for="node-input-pin"><i class="fa fa-asterisk"></i>Output pin</label>
<select type="text" id="node-input-pin" style="width: 200px;">
<option value="">select pin</option>
<option value="P8_7">GPIO2_2 (P8 pin 7)</option>
@ -472,7 +457,7 @@ any other input message will reset it to zero.
</select>
</div>
<div class="form-row">
<label for="node-input-name"><i class="icon-tag"></i> Name</label>
<label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
<input type="text" id="node-input-name" placeholder="Name">
</div>
</script>
@ -501,7 +486,7 @@ the Inverting property is not applied to this value.
<!-- Register bbb-discrete-out node -->
<script type="text/javascript">
RED.nodes.registerType('bbb-discrete-out', {
category: 'advanced-input', // the palette category
category: 'Beaglebone', // the palette category
color:"#de7224",
defaults: { // defines the editable properties of the node
pin: { value:"", required:true },
@ -526,7 +511,7 @@ the Inverting property is not applied to this value.
<!-- Edit dialog for bbb-pulse-out -->
<script type="text/x-red" data-template-name="bbb-pulse-out">
<div class="form-row">
<label for="node-input-pin"><i class="icon-asterisk"></i>Output pin</label>
<label for="node-input-pin"><i class="fa fa-asterisk"></i>Output pin</label>
<select type="text" id="node-input-pin" style="width: 200px;">
<option value="">select pin</option>
<option value="P8_7">GPIO2_2 (P8 pin 7)</option>
@ -567,7 +552,7 @@ the Inverting property is not applied to this value.
</select>
</div>
<div class="form-row">
<label for="node-input-pulseTime"><i class="icon-repeat"></i> Pulse time</label>
<label for="node-input-pulseTime"><i class="fa fa-repeat"></i> Pulse time</label>
<input id="node-input-pulseTime" type="text" style="width: 65px">
<label> seconds</label>
</div>
@ -583,7 +568,7 @@ the Inverting property is not applied to this value.
</select>
</div>
<div class="form-row">
<label for="node-input-name"><i class="icon-tag"></i> Name</label>
<label for="node-input-name"><i class="fa fa-tag"></i> Name</label>
<input type="text" id="node-input-name" placeholder="Name">
</div>
</script>
@ -614,7 +599,7 @@ the pin changes state: its payload is the new state (0 or 1).
<!-- Register bbb-pulse-out node -->
<script type="text/javascript">
RED.nodes.registerType('bbb-pulse-out', {
category: 'advanced-input', // the palette category
category: 'Beaglebone', // the palette category
color:"#de7224",
defaults: { // defines the editable properties of the node
pin: { value:"", required:true },
@ -635,4 +620,3 @@ the pin changes state: its payload is the new state (0 or 1).
}
});
</script>

View File

@ -1,155 +1,185 @@
/**
* Copyright 2014 Maxwell R Hadley
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
**/
// Require main module
var RED = require(process.env.NODE_RED_HOME + "/red/red");
var bonescript = require("bonescript");
// Node constructor for bbb-analogue-in
function AnalogueInputNode(n) {
// Create a RED node
RED.nodes.createNode(this, n);
// Store local copies of the node configuration (as defined in the .html)
this.topic = n.topic;
this.pin = n.pin;
this.breakpoints = n.breakpoints;
this.averaging = n.averaging;
if (this.averaging) {
this.averages = 10;
} else {
this.averages = 1;
module.exports = function (RED) {
"use strict";
var bonescript, adjustName, setPinMode;
var analogInputPins = ["P9_39", "P9_40", "P9_37", "P9_38", "P9_33", "P9_36", "P9_35"];
var gpioPins = ["P8_7", "P8_8", "P8_9", "P8_10", "P8_11", "P8_12", "P8_13", "P8_14", "P8_15",
"P8_16", "P8_17", "P8_18", "P8_19", "P8_26", "P9_11", "P9_12", "P9_13", "P9_14",
"P9_15", "P9_16", "P9_17", "P9_18", "P9_21", "P9_22", "P9_23", "P9_24", "P9_26",
"P9_27", "P9_30", "P9_41", "P9_42"];
var usrLEDs = ["USR0", "USR1", "USR2", "USR3"];
// Load the hardware library and set up polymorphic functions to suit it. Prefer
// octalbonescript (faster & less buggy) but drop back to bonescript if not available
bonescript = require("octalbonescript");
adjustName = function (pin) {
if (pin === "P8_7") {
pin = "P8_07";
}
else if (pin === "P8_8") {
pin = "P8_08";
}
else if (pin === "P8_9") {
pin = "P8_09";
}
return pin;
};
setPinMode = function (pin, mode, callback) {
bonescript.pinMode(pin, mode, callback);
}
// Define 'node' to allow us to access 'this' from within callbacks
var node = this;
// Node constructor for bbb-analogue-in
function AnalogueInputNode(n) {
RED.nodes.createNode(this, n);
var node = this;
// Variables used for input averaging
var sum; // accumulates the input readings to be averaged
var count; // keep track of the number of measurements made
// Store local copies of the node configuration (as defined in the .html)
this.topic = n.topic;
this.pin = n.pin; // The Beaglebone Black pin identifying string
this._pin = adjustName(this.pin); // Adjusted for Octal if necessary
this.breakpoints = n.breakpoints;
this.averaging = n.averaging;
if (this.averaging) {
this.averages = 10;
}
else {
this.averages = 1;
}
// The callback function for analogRead. Accumulates the required number of
// measurements, then divides the total number, applies output scaling and
// sends the result
var analogReadCallback = function (x) {
sum = sum + x.value;
// Variables used for input averaging
var sum; // accumulates the input readings to be averaged
var count; // keep track of the number of measurements made
// The callback function for analogRead. Accumulates the required number of
// measurements, then divides the total number, applies output scaling and
// sends the result
var analogReadCallback = function (err, x) {
sum = sum + Number(x);
count = count - 1;
if (count > 0) {
bonescript.analogRead(node.pin, analogReadCallback);
} else {
bonescript.analogRead(node._pin, analogReadCallback);
}
else {
var msg = {};
msg.topic = node.topic;
sum = sum/node.averages;
// i is the index of the first breakpoint where the 'input' value is strictly
// greater than the measurement (note: a measurement can never be == 1)
var i = node.breakpoints.map(function (breakpoint) { return sum >= breakpoint.input; }).indexOf(false);
msg.payload = node.breakpoints[i-1].output + (node.breakpoints[i].output - node.breakpoints[i-1].output) *
(sum - node.breakpoints[i-1].input)/(node.breakpoints[i].input - node.breakpoints[i-1].input);
var i = node.breakpoints.map(function (breakpoint) {
return sum >= breakpoint.input;
}).indexOf(false);
msg.payload = node.breakpoints[i - 1].output + (node.breakpoints[i].output - node.breakpoints[i - 1].output)*
(sum - node.breakpoints[i - 1].input)/(node.breakpoints[i].input - node.breakpoints[i - 1].input);
node.send(msg);
}
};
// If we have a valid pin, set the input event handler to Bonescript's analogRead
if (["P9_39", "P9_40", "P9_37", "P9_38", "P9_33", "P9_36", "P9_35"].indexOf(node.pin) >= 0) {
node.on("input", function (msg) {
// If we have a valid pin, set the input event handler to Bonescript's analogRead
if (analogInputPins.indexOf(node.pin) >= 0) {
node.on("input", function () {
sum = 0;
count = node.averages;
bonescript.analogRead(node.pin, analogReadCallback);
bonescript.analogRead(node._pin, analogReadCallback);
});
} else {
node.error("Unconfigured input pin");
}
}
// Node constructor for bbb-discrete-in
function DiscreteInputNode(n) {
RED.nodes.createNode(this, n);
// Store local copies of the node configuration (as defined in the .html)
this.topic = n.topic; // the topic is not currently used
this.pin = n.pin; // The Beaglebone Black pin identifying string
if (n.activeLow) // Set the 'active' state 0 or 1 as appropriate
this.activeState = 0;
else
this.activeState = 1;
this.updateInterval = n.updateInterval * 1000; // How often to send totalActiveTime messages
this.debounce = n.debounce; // Enable switch contact debouncing algorithm
if (n.outputOn === "rising") {
this.activeEdges = [false, true];
} else if (n.outputOn === "falling") {
this.activeEdges = [true, false];
} else if (n.outputOn === "both") {
this.activeEdges = [true, true];
} else {
node.error("Invalid edge type: " + n.outputOn);
}
else {
node.error("Unconfigured input pin");
}
}
// Working variables
this.interruptAttached = false; // Flag: should we detach interrupt when we are closed?
this.intervalId = null; // Remember the timer ID so we can delete it when we are closed
this.currentState = 0; // The pin input state "1" or "0"
this.lastActiveTime = NaN; // The date (in ms since epoch) when the pin last went high
// switch to process.hrtime()
this.totalActiveTime = 0; // The total time in ms that the pin has been high (since reset)
this.starting = true;
this.debouncing = false; // True after a change of state while waiting for the 7ms debounce time to elapse
this.debounceTimer = null;
// Node constructor for bbb-discrete-in
function DiscreteInputNode(n) {
RED.nodes.createNode(this, n);
var node = this;
// Define 'node' to allow us to access 'this' from within callbacks
var node = this;
// Store local copies of the node configuration (as defined in the .html)
this.topic = n.topic; // the topic is not currently used
this.pin = n.pin; // The Beaglebone Black pin identifying string
this._pin = adjustName(this.pin); // Adjusted for Octal if necessary
if (n.activeLow) { // Set the 'active' state 0 or 1 as appropriate
this.activeState = 0;
}
else {
this.activeState = 1;
}
this.updateInterval = n.updateInterval*1000; // How often to send totalActiveTime messages
this.debounce = n.debounce || null; // Enable switch contact debouncing algorithm
if (n.outputOn === "rising") {
this.activeEdges = [false, true];
}
else if (n.outputOn === "falling") {
this.activeEdges = [true, false];
}
else if (n.outputOn === "both") {
this.activeEdges = [true, true];
}
else {
node.error("Invalid edge type: " + n.outputOn);
}
// This function is called by the input pin change-of-state interrupt. If
// debounce is disabled, send the output message. Otherwise, if we are
// currently debouncing, ignore this interrupt. If we are not debouncing,
// schedule a re-read of the input pin in 7ms time, and set the debouncing flag
// Note: this function gets called spuriously when the interrupt is first enabled:
// in this case x.value is undefined - we must test for this
var interruptCallback = function (x) {
if (x.value !== undefined && node.currentState !== Number(x.value)) {
// Working variables
this.interruptAttached = false; // Flag: should we detach interrupt when we are closed?
this.intervalId = null; // Remember the timer ID so we can delete it when we are closed
this.currentState = 0; // The pin input state "1" or "0"
this.lastActiveTime = NaN; // The date (in ms since epoch) when the pin last went high
// switch to process.hrtime()
this.totalActiveTime = 0; // The total time in ms that the pin has been high (since reset)
this.starting = true;
this.debouncing = false; // True after a change of state while waiting for the 7ms debounce time to elapse
this.debounceTimer = null;
// This function is called by the input pin change-of-state interrupt. If
// debounce is disabled, send the output message. Otherwise, if we are
// currently debouncing, ignore this interrupt. If we are not debouncing,
// schedule a re-read of the input pin in 7ms time, and set the debouncing flag
// Note: if x has an 'attached' field and no 'value' field, the callback is reporting
// the success or failure of attaching the interrupt - we must handle this
var interruptCallback = function (err, x) {
if (x === undefined) {
if (x.attached === true) {
node.interruptAttached = true;
node.on("input", inputCallback);
node.intervalId = setInterval(timerCallback, node.updateInterval);
}
else {
node.error("Failed to attach interrupt");
}
}
else if (node.currentState !== Number(x)) {
if (node.debounce) {
if (node.debouncing === false) {
node.debouncing = true;
node.debounceTimer = setTimeout(function () { bonescript.digitalRead(node.pin, debounceCallback); }, 7);
node.debounceTimer = setTimeout(function () {
bonescript.digitalRead(node._pin, debounceCallback);
}, Number(node.debounce));
}
} else {
}
else {
sendStateMessage(x);
}
}
};
// This function is called approx 7ms after a potential change-of-state which is
// being debounced. Terminate the debounce, and send a message if the state has
// actually changed
var debounceCallback = function (x) {
// This function is called approx 7ms after a potential change-of-state which is
// being debounced. Terminate the debounce, and send a message if the state has
// actually changed
var debounceCallback = function (err, x) {
node.debounceTimer = null;
node.debouncing = false;
if (x.value !== undefined && node.currentState !== Number(x.value)) {
if (x !== undefined && node.currentState !== Number(x)) {
sendStateMessage(x);
}
};
// This function is called when either the interruptCallback or the debounceCallback
// have determined we have a 'genuine' change of state. Update the currentState and
// ActiveTime variables, and send a message on the first output with the new state
var sendStateMessage = function (x) {
node.currentState = Number(x.value);
// This function is called when either the interruptCallback or the debounceCallback
// have determined we have a 'genuine' change of state. Update the currentState and
// ActiveTime variables, and send a message on the first output with the new state
var sendStateMessage = function (x) {
node.currentState = Number(x);
var now = Date.now();
if (node.currentState === node.activeState) {
node.lastActiveTime = now;
} else if (!isNaN(node.lastActiveTime)) {
}
else if (!isNaN(node.lastActiveTime)) {
node.totalActiveTime += now - node.lastActiveTime;
}
if (node.activeEdges[node.currentState]) {
@ -160,9 +190,9 @@ function DiscreteInputNode(n) {
}
};
// This function is called by the timer. It updates the ActiveTime variables, and sends a
// message on the second output with the latest value of the total active time, in seconds
var timerCallback = function () {
// This function is called by the timer. It updates the ActiveTime variables, and sends a
// message on the second output with the latest value of the total active time, in seconds
var timerCallback = function () {
if (node.currentState === node.activeState) {
var now = Date.now();
node.totalActiveTime += now - node.lastActiveTime;
@ -170,23 +200,24 @@ function DiscreteInputNode(n) {
}
var msg = {};
msg.topic = node.topic;
msg.payload = node.totalActiveTime / 1000;
msg.payload = node.totalActiveTime/1000;
node.send([null, msg]);
// Re-synchronise the pin state if we have missed a state change interrupt for some
// reason, and we are not in the process of debouncing one
if (node.debouncing === false) {
bonescript.digitalRead(node.pin, interruptCallback);
bonescript.digitalRead(node._pin, interruptCallback);
}
};
// This function is called when we receive an input message. If the topic contains
// 'load' (case insensitive) set the totalActiveTime to the numeric value of the
// payload, if possible. Otherwise clear the totalActiveTime (so we start counting
// from zero again)
var inputCallback = function (ipMsg) {
if (String(ipMsg.topic).search(/load/i) < 0 || isFinite(ipMsg.payload) == false) {
// This function is called when we receive an input message. If the topic contains
// 'load' (case insensitive) set the totalActiveTime to the numeric value of the
// payload, if possible. Otherwise clear the totalActiveTime (so we start counting
// from zero again)
var inputCallback = function (ipMsg) {
if (String(ipMsg.topic).search(/load/i) < 0 || isFinite(ipMsg.payload) === false) {
node.totalActiveTime = 0;
} else {
}
else {
node.totalActiveTime = Number(ipMsg.payload);
}
if (node.currentState === node.activeState) {
@ -198,305 +229,337 @@ function DiscreteInputNode(n) {
node.starting = false;
var msg;
if (node.activeEdges[0] && node.activeEdges[1]) {
msg = [{topic:node.topic}, {topic:node.topic}];
msg = [{topic: node.topic}, {topic: node.topic}];
msg[0].payload = node.currentState;
} else {
msg = [null, {topic:node.topic}];
}
else {
msg = [null, {topic: node.topic}];
}
msg[1].payload = node.totalActiveTime;
node.send(msg);
}
};
// If we have a valid pin, set it as an input and read the (digital) state
if (["P8_7", "P8_8", "P8_9", "P8_10", "P8_11", "P8_12", "P8_13", "P8_14", "P8_15",
"P8_16", "P8_17", "P8_18", "P8_19", "P8_26", "P9_11", "P9_12", "P9_13", "P9_14",
"P9_15", "P9_16", "P9_17", "P9_18", "P9_21", "P9_22", "P9_23", "P9_24", "P9_26",
"P9_27", "P9_30", "P9_41", "P9_42"].indexOf(node.pin) >= 0) {
// Don't set up interrupts & intervals until after the close event handler has been installed
bonescript.detachInterrupt(node.pin);
process.nextTick(function () {
bonescript.pinMode(node.pin, bonescript.INPUT);
bonescript.digitalRead(node.pin, function (x) {
// Initialise the currentState and lastActveTime variables based on the value read
node.currentState = Number(x.value);
if (node.currentState === node.activeState) {
node.lastActiveTime = Date.now();
// switch to process.hrtime()
}
// Attempt to attach a change-of-state interrupt handler to the pin. If we succeed,
// set the input event and interval handlers, then send an initial message with the
// pin state on the first output
if (bonescript.attachInterrupt(node.pin, true, bonescript.CHANGE, interruptCallback)) {
node.interruptAttached = true;
node.on("input", inputCallback);
node.intervalId = setInterval(timerCallback, node.updateInterval);
} else {
node.error("Failed to attach interrupt");
}
setTimeout(function () { node.emit("input", {}); }, 50);
});
// If we have a valid pin, set it as an input and read the (digital) state
if (gpioPins.indexOf(node.pin) >= 0) {
// Don't set up interrupts & intervals until after the close event handler has been installed
bonescript.detachInterrupt(node._pin);
process.nextTick(function () {
setPinMode(node._pin, bonescript.INPUT, function (response, pin) {
if (!response) {
bonescript.digitalRead(node._pin, function (err, x) {
// Initialise the currentState and lastActiveTime variables based on the value read
node.currentState = Number(x);
if (node.currentState === node.activeState) {
node.lastActiveTime = Date.now();
}
// Attempt to attach a change-of-state interrupt handler to the pin. If we succeed,
// the input event and interval handlers will be installed by interruptCallback
bonescript.attachInterrupt(node._pin, bonescript.CHANGE, interruptCallback);
// Send an initial message with the pin state on the first output
setTimeout(function () {
node.emit("input", {});
}, 50);
});
}
else {
node.error("Unable to set " + pin + " as input: " + response);
}
});
} else {
node.error("Unconfigured input pin");
});
}
else {
node.error("Unconfigured input pin");
}
}
}
// Node constructor for bbb-pulse-in
function PulseInputNode(n) {
RED.nodes.createNode(this, n);
// Node constructor for bbb-pulse-in
function PulseInputNode(n) {
RED.nodes.createNode(this, n);
var node = this;
// Store local copies of the node configuration (as defined in the .html)
this.topic = n.topic; // the topic is not currently used
this.pin = n.pin; // The Beaglebone Black pin identifying string
this.updateInterval = n.updateInterval * 1000; // How often to send output messages
this.countType = n.countType; // Sets either 'edge' or 'pulse' counting
this.countUnit = n.countUnit; // Scaling appling to count output
this.countRate = n.countRate; // Scaling applied to rate output
// Store local copies of the node configuration (as defined in the .html)
this.topic = n.topic; // the topic is not currently used
this.pin = n.pin; // The Beaglebone Black pin identifying string
this._pin = adjustName(this.pin); // Adjusted for Octal if necessary
this.updateInterval = n.updateInterval*1000; // How often to send output messages
this.countType = n.countType; // Sets either 'edge' or 'pulse' counting
this.countUnit = n.countUnit; // Scaling applied to count output
this.countRate = n.countRate; // Scaling applied to rate output
// Working variables
this.interruptAttached = false; // Flag: should we detach interrupt when we are closed?
this.intervalId = null; // Remember the timer ID so we can delete it when we are closed
this.pulseCount = 0; // (Unscaled) total pulse count
// Hold the hrtime of the last two pulses (with ns resolution)
this.pulseTime = [[NaN, NaN], [NaN, NaN]];
// Working variables
this.interruptAttached = false; // Flag: should we detach interrupt when we are closed?
this.intervalId = null; // Remember the timer ID so we can delete it when we are closed
this.pulseCount = 0; // (Unscaled) total pulse count
// Hold the hrtime of the last two pulses (with ns resolution)
this.pulseTime = [[NaN, NaN], [NaN, NaN]];
// Define 'node' to allow us to access 'this' from within callbacks
var node = this;
// Called by the edge or pulse interrupt. If this is a valid interrupt, record the
// pulse time and count the pulse
var interruptCallback = function (x) {
if (x.value !== undefined) {
// Called by the edge or pulse interrupt. Record the pulse time and count the pulse
// Note: if x has an 'attached' field and no 'value' field, the callback is reporting
// the success or failure of attaching the interrupt - we must handle this
var interruptCallback = function (x) {
if (x === undefined) {
if (x.attached === true) {
node.interruptAttached = true;
node.on("input", inputCallback);
node.intervalId = setInterval(timerCallback, node.updateInterval);
}
else {
node.error("Failed to attach interrupt");
}
}
else {
node.pulseTime = [node.pulseTime[1], process.hrtime()];
node.pulseCount = node.pulseCount + 1;
}
};
// Called when an input message arrives. If the topic contains 'load' (case
// insensitive) and the payload is a valid number, set the count to that
// number, otherwise set it to zero
var inputCallback = function (msg) {
if (String(msg.topic).search(/load/i) < 0 || isFinite(msg.payload) == false) {
// Called when an input message arrives. If the topic contains 'load' (case
// insensitive) and the payload is a valid number, set the count to that
// number, otherwise set it to zero
var inputCallback = function (msg) {
if (String(msg.topic).search(/load/i) < 0 || isFinite(msg.payload) === false) {
node.pulseCount = 0;
} else {
}
else {
node.pulseCount = Number(msg.payload);
}
};
// Called by the message timer. Send two messages: the scaled pulse count on
// the first output and the scaled instantaneous pulse rate on the second.
// The instantaneous pulse rate is the reciprocal of the larger of either the
// time interval between the last two pulses, or the time interval since the last pulse.
var timerCallback = function () {
// Called by the message timer. Send two messages: the scaled pulse count on
// the first output and the scaled instantaneous pulse rate on the second.
// The instantaneous pulse rate is the reciprocal of the larger of either the
// time interval between the last two pulses, or the time interval since the last pulse.
var timerCallback = function () {
var now = process.hrtime();
var lastTime = node.pulseTime[1][0] - node.pulseTime[0][0] + (node.pulseTime[1][1] - node.pulseTime[0][1]) / 1e9;
var thisTime = now[0] - node.pulseTime[1][0] + (now[1] - node.pulseTime[1][1]) / 1e9;
var msg = [{ topic:node.topic }, { topic:node.topic }];
msg[0].payload = node.countUnit * node.pulseCount;
var lastTime = node.pulseTime[1][0] - node.pulseTime[0][0] + (node.pulseTime[1][1] - node.pulseTime[0][1])/1e9;
var thisTime = now[0] - node.pulseTime[1][0] + (now[1] - node.pulseTime[1][1])/1e9;
var msg = [{topic: node.topic}, {topic: node.topic}];
msg[0].payload = node.countUnit*node.pulseCount;
// At startup, pulseTime contains NaN's: force the rate output to 0
msg[1].payload = node.countRate / Math.max(thisTime, lastTime) || 0;
msg[1].payload = node.countRate/Math.max(thisTime, lastTime) || 0;
node.send(msg);
};
// If we have a valid pin, set it as an input and read the (digital) state
if (["P8_7", "P8_8", "P8_9", "P8_10", "P8_11", "P8_12", "P8_13", "P8_14", "P8_15",
"P8_16", "P8_17", "P8_18", "P8_19", "P8_26", "P9_11", "P9_12", "P9_13", "P9_14",
"P9_15", "P9_16", "P9_17", "P9_18", "P9_21", "P9_22", "P9_23", "P9_24", "P9_26",
"P9_27", "P9_30", "P9_41", "P9_42"].indexOf(node.pin) >= 0) {
// Don't set up interrupts & intervals until after the close event handler has been installed
bonescript.detachInterrupt(node.pin);
process.nextTick(function () {
bonescript.pinMode(node.pin, bonescript.INPUT);
bonescript.digitalRead(node.pin, function (x) {
// Initialise the currentState based on the value read
node.currentState = Number(x.value);
// Attempt to attach an interrupt handler to the pin. If we succeed,
// set the input event and interval handlers
var interruptType;
if (node.countType === "pulse") {
// interruptType = bonescript.FALLING; <- doesn't work in v0.2.4
interruptType = bonescript.RISING;
} else {
interruptType = bonescript.CHANGE;
}
if (bonescript.attachInterrupt(node.pin, true, interruptType, interruptCallback)) {
node.interruptAttached = true;
node.on("input", inputCallback);
node.intervalId = setInterval(timerCallback, node.updateInterval);
} else {
node.error("Failed to attach interrupt");
}
});
// If we have a valid pin, set it as an input and read the (digital) state
if (gpioPins.indexOf(node.pin) >= 0) {
// Don't set up interrupts & intervals until after the close event handler has been installed
bonescript.detachInterrupt(node._pin);
process.nextTick(function () {
setPinMode(node._pin, bonescript.INPUT, function (response, pin) {
if (!response) {
bonescript.digitalRead(node._pin, function (err, x) {
// Initialise the currentState based on the value read
node.currentState = Number(x);
// Attempt to attach an interrupt handler to the pin. If we succeed,
// set the input event and interval handlers
var interruptType;
if (node.countType === "pulse") {
// interruptType = bonescript.FALLING; <- doesn't work in v0.2.4
interruptType = bonescript.RISING;
}
else {
interruptType = bonescript.CHANGE;
}
// Attempt to attach the required interrupt handler to the pin. If we succeed,
// the input event and interval handlers will be installed by interruptCallback
bonescript.attachInterrupt(node._pin, interruptType, interruptCallback)
});
}
else {
node.error("Unable to set " + pin + " as input: " + response);
}
});
});
} else {
node.error("Unconfigured input pin");
}
else {
node.error("Unconfigured input pin");
}
}
}
// Node constructor for bbb-discrete-out
function DiscreteOutputNode(n) {
RED.nodes.createNode(this, n);
// Node constructor for bbb-discrete-out
function DiscreteOutputNode(n) {
RED.nodes.createNode(this, n);
var node = this;
// Store local copies of the node configuration (as defined in the .html)
this.topic = n.topic; // the topic is not currently used
this.pin = n.pin; // The Beaglebone Black pin identifying string
this.defaultState = Number(n.defaultState); // What state to set up as
this.inverting = n.inverting;
this.toggle = n.toggle;
// Store local copies of the node configuration (as defined in the .html)
this.topic = n.topic; // the topic is not currently used
this.pin = n.pin; // The Beaglebone Black pin identifying string
this._pin = adjustName(this.pin); // Adjusted for Octal if necessary
this.defaultState = Number(n.defaultState); // What state to set up as
this.inverting = n.inverting;
this.toggle = n.toggle;
// Working variables
this.currentState = this.defaultState;
// Working variables
this.currentState = this.defaultState;
var node = this;
// If the input message paylod is numeric, values > 0.5 are 'true', otherwise use
// the truthiness of the payload. Apply the inversion flag before setting the output
var inputCallback = function (msg) {
// If the input message payload is numeric, values > 0.5 are 'true', otherwise use
// the truthiness of the payload. Apply the inversion flag before setting the output
var inputCallback = function (msg) {
var newState;
if (node.toggle) {
newState = node.currentState === 0 ? 1 : 0;
} else {
}
else {
if (isFinite(Number(msg.payload))) {
newState = Number(msg.payload) > 0.5 ? true : false;
} else if (msg.payload) {
newState = Number(msg.payload) > 0.5;
}
else if (msg.payload) {
newState = true;
} else {
}
else {
newState = false;
}
if (node.inverting) {
newState = !newState;
}
}
bonescript.digitalWrite(node.pin, newState ? 1 : 0);
node.send({ topic:node.topic, payload:newState });
node.currentState = newState;
bonescript.digitalWrite(node._pin, newState ? 1 : 0, function() {
node.send({topic: node.topic, payload: newState});
node.currentState = newState;
});
};
// If we have a valid pin, set it as an output and set the default state
if (["P8_7", "P8_8", "P8_9", "P8_10", "P8_11", "P8_12", "P8_13", "P8_14", "P8_15",
"P8_16", "P8_17", "P8_18", "P8_19", "P8_26", "P9_11", "P9_12", "P9_13", "P9_14",
"P9_15", "P9_16", "P9_17", "P9_18", "P9_21", "P9_22", "P9_23", "P9_24", "P9_26",
"P9_27", "P9_30", "P9_41", "P9_42", "USR0", "USR1", "USR2", "USR3"].indexOf(node.pin) >= 0) {
// Don't set up interrupts & intervals until after the close event handler has been installed
bonescript.detachInterrupt(node.pin);
process.nextTick(function () {
bonescript.pinMode(node.pin, bonescript.OUTPUT);
node.on("input", inputCallback);
setTimeout(function () { bonescript.digitalWrite(node.pin, node.defaultState); }, 50);
// If we have a valid pin, set it as an output and set the default state
if (gpioPins.concat(usrLEDs).indexOf(node.pin) >= 0) {
// Don't set up interrupts & intervals until after the close event handler has been installed
if (node._pin) { bonescript.detachInterrupt(node._pin); }
process.nextTick(function () {
setPinMode(node._pin, bonescript.OUTPUT, function (response, pin) {
if (response) {
node.error("Unable to set " + pin + " as output: " + response.err);
}
else {
node.on("input", inputCallback);
setTimeout(function () {
bonescript.digitalWrite(node._pin, node.defaultState, function() {});
}, 50);
}
});
});
} else {
node.error("Unconfigured output pin");
}
else {
node.error("Unconfigured output pin");
}
}
}
// Node constructor for bbb-pulse-out
function PulseOutputNode(n) {
RED.nodes.createNode(this, n);
// Node constructor for bbb-pulse-out
function PulseOutputNode(n) {
RED.nodes.createNode(this, n);
var node = this;
// Store local copies of the node configuration (as defined in the .html)
this.topic = n.topic; // the topic is not currently used
this.pin = n.pin; // The Beaglebone Black pin identifying string
this.pulseState = Number(n.pulseState); // What state the pulse will be..
this.defaultState = this.pulseState === 1 ? 0 : 1;
this.retriggerable = n.retriggerable;
this.pulseTime = n.pulseTime * 1000; // Pulse width in milliseconds
// Store local copies of the node configuration (as defined in the .html)
this.topic = n.topic; // the topic is not currently used
this.pin = n.pin; // The Beaglebone Black pin identifying string
this._pin = adjustName(this.pin); // Adjusted for Octal if necessary
this.pulseState = Number(n.pulseState); // What state the pulse will be..
this.defaultState = this.pulseState === 1 ? 0 : 1;
this.retriggerable = n.retriggerable;
this.pulseTime = n.pulseTime*1000; // Pulse width in milliseconds
// Working variables
this.pulseTimer = null; // Non-null while a pulse is being generated
// Working variables
this.pulseTimer = null; // Non-null while a pulse is being generated
var node = this;
// Generate a pulse in response to an input message. If the topic includes the text
// 'time' (case insensitive) and the payload is numeric, use this value as the
// pulse time. Otherwise use the value from the properties dialog.
// If the resulting pulse time is < 1ms, do nothing.
// If the pulse mode is not retriggerable, then if no pulseTimer is active, generate
// a pulse. If the pulse mode is retriggerable, and a pulseTimer is active, cancel it.
// If no timer is active, set the pulse output. In both cases schedule a new pulse
// timer.
var inputCallback = function (msg) {
// Generate a pulse in response to an input message. If the topic includes the text
// 'time' (case insensitive) and the payload is numeric, use this value as the
// pulse time. Otherwise use the value from the properties dialog.
// If the resulting pulse time is < 1ms, do nothing.
// If the pulse mode is not retriggerable, then if no pulseTimer is active, generate
// a pulse. If the pulse mode is retriggerable, and a pulseTimer is active, cancel it.
// If no timer is active, set the pulse output. In both cases schedule a new pulse
// timer.
var inputCallback = function (msg) {
var time = node.pulseTime;
if (String(msg.topic).search(/time/i) >= 0 && isFinite(msg.payload)) {
time = msg.payload * 1000;
time = msg.payload*1000;
}
if (time >= 1) {
if (node.retriggerable === false) {
if (node.pulseTimer === null) {
node.pulseTimer = setTimeout(endPulseCallback, time);
bonescript.digitalWrite(node.pin, node.pulseState);
node.send({ topic:node.topic, payload:node.pulseState });
bonescript.digitalWrite(node._pin, node.pulseState, function() {
node.send({topic: node.topic, payload: node.pulseState});
});
}
} else {
}
else {
if (node.pulseTimer !== null) {
clearTimeout(node.pulseTimer);
} else {
bonescript.digitalWrite(node.pin, node.pulseState);
node.send({ topic:node.topic, payload:node.pulseState });
}
else {
bonescript.digitalWrite(node._pin, node.pulseState, function() {
node.send({topic: node.topic, payload: node.pulseState});
});
}
node.pulseTimer = setTimeout(endPulseCallback, time);
}
}
};
// At the end of the pulse, restore the default state and set the timer to null
var endPulseCallback = function () {
// At the end of the pulse, restore the default state and set the timer to null
var endPulseCallback = function () {
node.pulseTimer = null;
bonescript.digitalWrite(node.pin, node.defaultState);
node.send({ topic:node.topic, payload:node.defaultState });
bonescript.digitalWrite(node._pin, node.defaultState, function() {
node.send({topic: node.topic, payload: node.defaultState});
});
};
// If we have a valid pin, set it as an output and set the default state
if (["P8_7", "P8_8", "P8_9", "P8_10", "P8_11", "P8_12", "P8_13", "P8_14", "P8_15",
"P8_16", "P8_17", "P8_18", "P8_19", "P8_26", "P9_11", "P9_12", "P9_13", "P9_14",
"P9_15", "P9_16", "P9_17", "P9_18", "P9_21", "P9_22", "P9_23", "P9_24", "P9_26",
"P9_27", "P9_30", "P9_41", "P9_42", "USR0", "USR1", "USR2", "USR3"].indexOf(node.pin) >= 0) {
// Don't set up interrupts & intervals until after the close event handler has been installed
bonescript.detachInterrupt(node.pin);
process.nextTick(function () {
bonescript.pinMode(node.pin, bonescript.OUTPUT);
node.on("input", inputCallback);
// Set the pin to the default stte once the dust settles
setTimeout(endPulseCallback, 50);
// If we have a valid pin, set it as an output and set the default state
if (gpioPins.concat(usrLEDs).indexOf(node.pin) >= 0) {
// Don't set up interrupts & intervals until after the close event handler has been installed
bonescript.detachInterrupt(node._pin);
process.nextTick(function () {
setPinMode(node._pin, bonescript.OUTPUT, function (response, pin) {
if (!response) {
node.on("input", inputCallback);
// Set the pin to the default state once the dust settles
setTimeout(endPulseCallback, 50);
}
else {
node.error("Unable to set " + pin + " as output: " + response.err);
}
});
});
} else {
node.error("Unconfigured output pin");
}
else {
node.error("Unconfigured output pin");
}
}
}
// Register the nodes by name. This must be called before overriding any of the Node functions.
RED.nodes.registerType("bbb-analogue-in", AnalogueInputNode);
RED.nodes.registerType("bbb-discrete-in", DiscreteInputNode);
RED.nodes.registerType("bbb-pulse-in", PulseInputNode);
RED.nodes.registerType("bbb-discrete-out", DiscreteOutputNode);
RED.nodes.registerType("bbb-pulse-out", PulseOutputNode);
// Register the nodes by name. This must be called before overriding any of the Node functions.
RED.nodes.registerType("bbb-analogue-in", AnalogueInputNode);
RED.nodes.registerType("bbb-discrete-in", DiscreteInputNode);
RED.nodes.registerType("bbb-pulse-in", PulseInputNode);
RED.nodes.registerType("bbb-discrete-out", DiscreteOutputNode);
RED.nodes.registerType("bbb-pulse-out", PulseOutputNode);
// On close, detach the interrupt (if we attached one) and clear any active timers
DiscreteInputNode.prototype.close = function () {
if (this.interruptAttached) {
bonescript.detachInterrupt(this.pin);
}
if (this.intervalId !== null) {
clearInterval(this.intervalId);
}
if (this.debounceTimer !== null) {
clearTimeout(this.debounceTimer);
}
};
// On close, detach the interrupt (if we attached one) and clear the interval (if we set one)
PulseInputNode.prototype.close = function () {
if (this.interruptAttached) {
bonescript.detachInterrupt(this.pin);
}
if (this.intervalId !== null) {
clearInterval(this.intervalId);
}
};
// On close, clear an active pulse timer
PulseOutputNode.prototype.close = function () {
if (this.pulseTimer !== null) {
clearTimeout(this.pulseTimer);
}
// On close, detach the interrupt (if we attached one) and clear any active timers
DiscreteInputNode.prototype.close = function () {
if (this.interruptAttached) {
bonescript.detachInterrupt(this._pin);
}
if (this.intervalId !== null) {
clearInterval(this.intervalId);
}
if (this.debounceTimer !== null) {
clearTimeout(this.debounceTimer);
}
};
// On close, detach the interrupt (if we attached one) and clear the interval (if we set one)
PulseInputNode.prototype.close = function () {
if (this.interruptAttached) {
bonescript.detachInterrupt(this._pin);
}
if (this.intervalId !== null) {
clearInterval(this.intervalId);
}
};
// On close, clear an active pulse timer
PulseOutputNode.prototype.close = function () {
if (this.pulseTimer !== null) {
clearTimeout(this.pulseTimer);
}
};
};

14
hardware/BBB/LICENSE Normal file
View File

@ -0,0 +1,14 @@
Copyright 2016 JS Foundation and other contributors, https://js.foundation/
Copyright 2013-2016 IBM Corp.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

101
hardware/BBB/README.md Normal file
View File

@ -0,0 +1,101 @@
node-red-node-beaglebone
========================
A set of <a href="http://nodered.org" target="_new">Node-RED</a> nodes to
interface with the GPIO pins of a <a href="http://http://beagleboard.org/black/" target="_new">Beaglebone Black</a>.
Pre-requisites
--------------
Only of use on a BeagleboneBlack board. Should ideally be running the
<a href="http://beagleboard.org/latest-images/" target="_new"> latest Debian</a>
images - as they have node.js v0.10.x preinstalled.
Install
-------
For Debian **Jessie** with kernel 4.1 run the following command in your
Node-RED user directory - typically `~/.node-red`
npm install node-red-node-beaglebone
For previous versions of Debian, for example **Wheezy** - use the older version
of this node.
npm install node-red-node-beaglebone@0.0.8
Usage
-----
This package provides 5 nodes for use with the BeagleboneBlack board.
### Analogue Input
Reads an analogue pin when triggered by
a message.
The output message topic is the node topic: the output message value is the
scaled analogue input or NaN if a read error occurs.
Simple linear scaling is defined by setting the output values required for input
values of 0 and 1. You can apply more complicated scaling, e.g. for sensor linearisation,
by defining breakpoints at intermediate input values, with the desired output for
each. Values between breakpoints are linearly interpolated.
To reduce the effect of noise, enable averaging. This will read the input pin
voltage ten times in rapid succession for each input message and output the mean value.
### Digital Input
Sends a message with payload 0 or 1 on the first output when the pin changes state, and logs the total time in the active state.
Sends a message with a payload of the current total active time
(in seconds) on the second output at selectable intervals. An input message with topic 'load'
and a numeric payload will set the total active time to that value: any other input message
will reset it to zero.
The active state may be set to be high or low: this only affects the calculation
of the active time, not the pin state value sent on the first output.
The pin state messages may be generated for both directions of change, or for just 0 to 1
or just 1 to 0 changes. This is useful to generate a single message from a button
press. When using buttons or switches, enable debouncing to improve reliability.
### Pulse Input
Pulse input for the Beaglebone Black. Counts input pulses or pulse edges: outputs
total counts and the rate of counts/sec, with scaling.
Sends the total count message on the first output, and the current count
rate message on the second output, at the chosen interval. An input message with topic 'load'
and a numeric payload will set the total count to that value (no scaling is applied):
any other input message will reset it to zero.
### Digital Output
Sets the output pin high or low depending on the payload of the input message. Numeric
payloads > 0.5 are 'high' (1), payloads <= 0.5 are 'low' (0). Other payloads which
evaluate to true are 'high', if not then 'low'. Selecting the Inverting checkbox will
switch the sense of the pin output.
If the Toggle state checkbox is checked, the message content is ignored: successive
messages cause the pin to toggle between 0 and 1.
The pin will be initially set to the given Startup state until the first message arrives:
the Inverting property is not applied to this value.
### Pulse Output
Pulses the output pin for the set time after receiving an input message, unless the
message has a topic including the text 'time' and a numeric payload. In this case, the
the pulse time will be the value of the payload in seconds. If the time from either
source is < 0.001 seconds, no pulse is generated.
In retriggerable mode, a second message within the pulse period will extend the duration
of the pulse by the time value: in non-retriggerable mode, input messages arriving during
the duration of the pulse are ignored.
The pin state of the pulse may be set to either 0 or 1: the output pin will switch
back to the other state after the pulse time. An output message is generated each time
the pin changes state: its payload is the new state (0 or 1).

Binary file not shown.

Before

Width:  |  Height:  |  Size: 719 B

After

Width:  |  Height:  |  Size: 1.3 KiB

24
hardware/BBB/package.json Normal file
View File

@ -0,0 +1,24 @@
{
"name" : "node-red-node-beaglebone",
"version" : "0.1.9",
"description" : "A set of Node-RED nodes to interface to the GPIO pins of a Beaglebone Black board",
"dependencies" : {
"octalbonescript":"^1.2.2"
},
"repository" : {
"type":"git",
"url":"https://github.com/node-red/node-red-nodes.git",
"directory": "tree/master/hardware/BBB"
},
"license": "Apache-2.0",
"keywords": [ "node-red", "beagleboneblack", "beaglebone", "bbb", "octalbonescript" ],
"node-red" : {
"nodes" : {
"bbb": "145-BBB-hardware.js"
}
},
"contributors": [
{"name": "Max Hadley"},
{"name": "Dave Conway-Jones"}
]
}

Some files were not shown because too many files have changed in this diff Show More