node-red-contrib-3dm-space 0.0.7 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/3dm-cloud-config.html +80 -16
- package/3dm-cloud-config.js +197 -192
- package/3dm-cloud-in.html +27 -14
- package/3dm-cloud-in.js +115 -115
- package/3dm-cloud-out.html +23 -10
- package/3dm-cloud-out.js +736 -669
- package/README.md +29 -102
- package/package.json +6 -2
package/README.md
CHANGED
|
@@ -1,126 +1,53 @@
|
|
|
1
1
|
# node-red-contrib-3dm-space
|
|
2
2
|
|
|
3
|
-
Node-RED nodes for
|
|
3
|
+
Node-RED nodes for connecting Smithtek PassPort gateways to **3DM.space SCADA Cloud**.
|
|
4
4
|
|
|
5
|
-
This package is designed for
|
|
5
|
+
This package is designed to make 3DM.space cloud communication simple for users. The cloud connection, formatting, timing, storage and recovery handling are managed inside the nodes.
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Users only need to copy the device credentials from 3DM.space into Node-RED.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
---
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
## What This Package Does
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
This package allows a PassPort gateway to:
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
- Send telemetry values to 3DM.space
|
|
16
|
+
- Receive cloud commands or control updates from 3DM.space
|
|
17
|
+
- Store telemetry locally if the cloud connection is unavailable
|
|
18
|
+
- Automatically send stored telemetry when the connection returns
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
---
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
## Nodes Included
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
### 3DM Cloud Login
|
|
25
25
|
|
|
26
|
-
The node
|
|
26
|
+
The shared login node used by the 3DM input and output nodes.
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
* Formats the payload for 3DM Cloud time-series data
|
|
30
|
-
* Publishes to the correct cloud endpoint
|
|
31
|
-
* Applies a publish rate limit
|
|
32
|
-
* Stores messages locally if the cloud connection is offline
|
|
33
|
-
* Replays stored messages when the connection returns
|
|
28
|
+
The settings match the credential order shown in 3DM.space:
|
|
34
29
|
|
|
35
|
-
|
|
30
|
+
1. **Client ID**
|
|
31
|
+
2. **User Name***
|
|
32
|
+
3. **Password**
|
|
33
|
+
4. **Node Name**
|
|
36
34
|
|
|
37
|
-
|
|
38
|
-
{
|
|
39
|
-
"pump_run": true,
|
|
40
|
-
"flow_lpm": 125.5,
|
|
41
|
-
"tank_level_percent": 64,
|
|
42
|
-
"dc_voltage": 24.1
|
|
43
|
-
}
|
|
44
|
-
```
|
|
35
|
+
The **Node Name** is only used inside Node-RED to make the login easier to identify.
|
|
45
36
|
|
|
46
|
-
|
|
37
|
+
---
|
|
47
38
|
|
|
48
|
-
|
|
39
|
+
### 3DM Out
|
|
49
40
|
|
|
50
|
-
|
|
41
|
+
Sends telemetry data from Node-RED to 3DM.space.
|
|
51
42
|
|
|
52
|
-
|
|
53
|
-
* Filter by a single key
|
|
54
|
-
* Output the selected value only
|
|
55
|
-
* Output an object containing the selected key and value
|
|
43
|
+
The input must be a JSON object.
|
|
56
44
|
|
|
57
|
-
Example
|
|
45
|
+
Example:
|
|
58
46
|
|
|
59
47
|
```json
|
|
60
48
|
{
|
|
61
|
-
"
|
|
49
|
+
"pump_run": true,
|
|
50
|
+
"flow_lpm": 125.5,
|
|
51
|
+
"tank_level_percent": 64,
|
|
52
|
+
"dc_voltage": 24.1
|
|
62
53
|
}
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
## Store and Forward
|
|
66
|
-
|
|
67
|
-
The 3DM Out node includes built-in store and forward.
|
|
68
|
-
|
|
69
|
-
If the cloud connection is lost, valid telemetry messages are stored locally using a persistent queue. Each message is timestamped when it arrives at the node, not when it is replayed.
|
|
70
|
-
|
|
71
|
-
When the cloud connection returns, stored messages are replayed automatically.
|
|
72
|
-
|
|
73
|
-
Default replay speed:
|
|
74
|
-
|
|
75
|
-
```text
|
|
76
|
-
250 ms per packet
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
This equals approximately:
|
|
80
|
-
|
|
81
|
-
```text
|
|
82
|
-
4 packets per second
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
## Rate Limiting
|
|
86
|
-
|
|
87
|
-
The 3DM Out node includes a live publish throttle to prevent users from publishing too quickly.
|
|
88
|
-
|
|
89
|
-
Default live publish limit:
|
|
90
|
-
|
|
91
|
-
```text
|
|
92
|
-
1 message every 10 seconds
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
If valid telemetry arrives faster than the live publish limit, it is queued rather than discarded.
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
## Installation
|
|
99
|
-
|
|
100
|
-
From the Node-RED user directory:
|
|
101
|
-
|
|
102
|
-
```bash
|
|
103
|
-
cd ~/.node-red
|
|
104
|
-
npm install ./node-red-contrib-3dm-space
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
Or from inside the development folder:
|
|
108
|
-
|
|
109
|
-
```bash
|
|
110
|
-
cd ~/.node-red/node-red-contrib-3dm-space
|
|
111
|
-
npm install
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
Restart Node-RED after installation:
|
|
115
|
-
|
|
116
|
-
```bash
|
|
117
|
-
node-red-restart
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
## License
|
|
121
|
-
|
|
122
|
-
GPL-3.0-or-later
|
|
123
|
-
|
|
124
|
-
## Author
|
|
125
|
-
|
|
126
|
-
Smithtek
|
package/package.json
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "node-red-contrib-3dm-space",
|
|
3
|
-
"version": "0.0
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"description": "Node-RED nodes for 3DM.space SCADA Cloud telemetry and attributes",
|
|
5
5
|
"main": "3dm-cloud-config.js",
|
|
6
6
|
"license": "GPL-3.0-or-later",
|
|
7
7
|
"keywords": [
|
|
8
8
|
"node-red",
|
|
9
|
+
"node-red-contrib",
|
|
9
10
|
"3dm",
|
|
10
11
|
"3dm.space",
|
|
12
|
+
"smithtek",
|
|
11
13
|
"scada",
|
|
12
14
|
"telemetry",
|
|
13
15
|
"store-and-forward"
|
|
@@ -20,7 +22,9 @@
|
|
|
20
22
|
}
|
|
21
23
|
},
|
|
22
24
|
"dependencies": {
|
|
23
|
-
"mqtt": "~4.3.7"
|
|
25
|
+
"mqtt": "~4.3.7"
|
|
26
|
+
},
|
|
27
|
+
"optionalDependencies": {
|
|
24
28
|
"node-persistent-queue": "^0.3.1"
|
|
25
29
|
}
|
|
26
30
|
}
|