node-red-contrib-example-scada 1.0.2 → 1.0.4

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.
Files changed (3) hide show
  1. package/package.json +11 -9
  2. package/scada.html +64 -28
  3. package/scada.js +18 -23
package/package.json CHANGED
@@ -1,17 +1,19 @@
1
1
  {
2
2
  "name": "node-red-contrib-example-scada",
3
- "version": "1.0.2",
3
+ "node-red": {
4
+ "nodes": {
5
+ "scada": "scada.js"
6
+ }
7
+ },
8
+ "version": "1.0.4",
4
9
  "description": "",
5
10
  "main": "scada.js",
6
11
  "scripts": {
7
12
  "test": "echo \"Error: no test specified\" && exit 1"
8
13
  },
9
- "node-red" : {
10
- "nodes": {
11
- "scada": "scada.js"
12
- }
13
- },
14
14
  "author": "",
15
- "license": "ISC"
16
-
17
- }
15
+ "license": "ISC",
16
+ "dependencies": {
17
+ "axios": "^1.7.9"
18
+ }
19
+ }
package/scada.html CHANGED
@@ -3,19 +3,42 @@
3
3
  category: 'scada',
4
4
  color: '#a6bbcf',
5
5
  defaults: {
6
- broker: {type:"http-broker", required:true},
7
- name: { value: "" },
8
- id: { value: "", required: true },
9
- WriteType: { value: "", required: true },
10
- WriteDevCode: { value: "", required: true },
11
- WriteCommand: { value: "" , required: true},
12
- Value: { value: "", required: true },
13
- ValueType: { value: "Short" , required: true},
6
+ broker: {
7
+ type: "http-broker",
8
+ required: true
9
+ },
10
+ name: {
11
+ value: ""
12
+ },
13
+ id: {
14
+ value: "",
15
+ required: true
16
+ },
17
+ WriteType: {
18
+ value: "",
19
+ required: true
20
+ },
21
+ WriteDevCode: {
22
+ value: "",
23
+ required: true
24
+ },
25
+ WriteCommand: {
26
+ value: "",
27
+ required: true
28
+ },
29
+ Value: {
30
+ value: "",
31
+ required: true
32
+ },
33
+ ValueType: {
34
+ value: "Short",
35
+ required: true
36
+ },
14
37
 
15
38
  },
16
- inputs: 1, // 一个输入端口
17
- outputs: 1, // 一个输出端口
18
- icon: 'file.png', // 节点图标
39
+ inputs: 1, // 一个输入端口
40
+ outputs: 1, // 一个输出端口
41
+ icon: 'file.png', // 节点图标
19
42
  label: function() {
20
43
  return this.name || "设备标签写入";
21
44
  },
@@ -24,33 +47,46 @@
24
47
  });
25
48
 
26
49
 
27
- RED.nodes.registerType('http-broker',{
50
+ RED.nodes.registerType('http-broker', {
28
51
  category: 'config',
29
52
  defaults: {
30
- host: {value:"localhost",required:true},
31
- port: {value:1234,required:true,validate:RED.validators.number()},
53
+ host: {
54
+ value: "localhost",
55
+ required: true
56
+ },
57
+ port: {
58
+ value: 1234,
59
+ required: true,
60
+ validate: RED.validators.number()
61
+ },
32
62
  },
33
63
  label: function() {
34
- return this.host+":"+this.port;
64
+ return this.host + ":" + this.port;
35
65
  }
36
66
  });
37
67
 
38
68
  RED.nodes.registerType('获取单个设备采集值', {
39
- category: 'scada', // 节点类别
40
- color: '#a6bbcf', // 节点颜色
69
+ category: 'scada', // 节点类别
70
+ color: '#a6bbcf', // 节点颜色
41
71
  defaults: {
42
- broker: {type:"http-broker", required:true},
43
- name: { value: '' }, // 节点名称
44
- deviceCode: { value: '' } // 用户输入的 deviceCode
72
+ broker: {
73
+ type: "http-broker",
74
+ required: true
75
+ },
76
+ name: {
77
+ value: ''
78
+ }, // 节点名称
79
+ deviceCode: {
80
+ value: ''
81
+ } // 用户输入的 deviceCode
45
82
  },
46
- inputs: 1, // 一个输入端口
47
- outputs: 1, // 一个输出端口
48
- icon: 'file.png', // 节点图标
49
- label: function() { // 标签显示
50
- return this.name || '获取单个设备采集值'; // 如果有名称,则显示名称,否则显示默认名称
83
+ inputs: 1, // 一个输入端口
84
+ outputs: 1, // 一个输出端口
85
+ icon: 'file.png', // 节点图标
86
+ label: function() { // 标签显示
87
+ return this.name || '获取单个设备采集值'; // 如果有名称,则显示名称,否则显示默认名称
51
88
  }
52
89
  });
53
-
54
90
  </script>
55
91
 
56
92
  <script type="text/html" data-template-name="设备标签写入">
@@ -71,7 +107,7 @@
71
107
 
72
108
  <div class="form-row">
73
109
  <label for="node-input-id"><i class="fa fa-tag"></i> ID格式:</label>
74
- <select id="node-input-id" class="node-input" >
110
+ <select id="node-input-id" class="node-input">
75
111
  <option value="YYYYMMDD">YYYYMMDD</option>
76
112
  <option value="HHmmss">HHmmss</option>
77
113
  <option value="YYYYMMDDHHmmss">YYYYMMDDHHmmss</option>
@@ -80,7 +116,7 @@
80
116
 
81
117
  <div class="form-row">
82
118
  <label for="node-input-WriteType"><i class="fa fa-tag"></i> ID格式:</label>
83
- <select id="node-input-WriteType" class="node-input" >
119
+ <select id="node-input-WriteType" class="node-input">
84
120
  <option value="1">标签写入</option>
85
121
  <option value="2">地址写入</option>
86
122
  </select>
package/scada.js CHANGED
@@ -1,9 +1,9 @@
1
-
2
1
  module.exports = function(RED) {
3
2
 
4
3
  //设备标签写入配置
5
4
  // 创建请求
6
5
  const axios = require('axios');
6
+
7
7
  function WriteDeviceConfigNode(config) {
8
8
  RED.nodes.createNode(this, config);
9
9
  var node = this;
@@ -33,7 +33,7 @@ module.exports = function(RED) {
33
33
 
34
34
  // 处理输入消息
35
35
  this.on('input', function(msg) {
36
- var id1 = msg.id || config.id;
36
+ var id1 = msg.id || config.id;
37
37
  var id = getCurrentFormattedDate(id1);
38
38
  var WriteType = msg.WriteType || config.WriteType;
39
39
  var WriteDevCode = msg.WriteDevCode || config.WriteDevCode;
@@ -53,20 +53,20 @@ module.exports = function(RED) {
53
53
 
54
54
 
55
55
  // 设置 API 请求的 URL
56
- var broker = RED.nodes.getNode(config.broker);
56
+ var broker = RED.nodes.getNode(config.broker);
57
57
  const url = "http://" + broker.host + ":" + broker.port + "/api/ScadaConfig/WriteDevices";
58
58
  axios.post(url, payload)
59
59
  .then(response => {
60
- if(response.data.code == 200){
60
+ if (response.data.code == 200) {
61
61
  msg.payload = response.data;
62
62
  node.send(msg);
63
63
  node.status({ fill: "green", shape: "dot", text: "Success" });
64
64
 
65
- }else {
65
+ } else {
66
66
  node.error("Request failed: " + response.data.message);
67
- node.status({fill: "red", shape: "ring", text: "Error"});
67
+ node.status({ fill: "red", shape: "ring", text: "Error" });
68
68
  }
69
- })
69
+ })
70
70
  .catch(error => {
71
71
  // 请求失败,记录错误
72
72
  node.error("Request failed: " + error.message, msg);
@@ -80,20 +80,16 @@ module.exports = function(RED) {
80
80
  RED.nodes.registerType('设备标签写入', WriteDeviceConfigNode);
81
81
 
82
82
 
83
-
84
-
85
-
86
-
87
-
88
- //http-broker配置
83
+ //http-broker配置
89
84
  function RemoteServerNode(n) {
90
- RED.nodes.createNode(this,n);
85
+ RED.nodes.createNode(this, n);
91
86
  this.host = n.host;
92
87
  this.port = n.port;
93
88
  }
94
- RED.nodes.registerType("http-broker",RemoteServerNode);
95
89
 
96
- //获取单个设备采集值配置
90
+ RED.nodes.registerType("http-broker", RemoteServerNode);
91
+
92
+ //获取单个设备采集值配置
97
93
  function MyHttpNode(config) {
98
94
  RED.nodes.createNode(this, config);
99
95
  var node = this;
@@ -103,7 +99,7 @@ module.exports = function(RED) {
103
99
 
104
100
 
105
101
  // 设置 API 请求的 URL
106
- var broker = RED.nodes.getNode(config.broker);
102
+ var broker = RED.nodes.getNode(config.broker);
107
103
  var baseURL = "http://" + broker.host + ":" + broker.port + '/api/ScadaConfig/GetDevice?deviceCode={{deviceCode}}';
108
104
 
109
105
  // 从消息中获取 deviceCode 或从节点配置中获取
@@ -121,14 +117,14 @@ module.exports = function(RED) {
121
117
  // 使用 axios 发送 GET 请求
122
118
  axios.get(url)
123
119
  .then(response => {
124
- if(response.data.code == 200 && response.data.msg != "null"){
120
+ if (response.data.code == 200 && response.data.msg != "null") {
125
121
  msg.payload = response.data;
126
122
  node.send(msg);
127
123
  node.status({ fill: "green", shape: "dot", text: "Success" });
128
124
 
129
- }else {
130
- node.error("Request failed: 找不到该设备" );
131
- node.status({fill: "red", shape: "ring", text: "Error"});
125
+ } else {
126
+ node.error("Request failed: 找不到该设备");
127
+ node.status({ fill: "red", shape: "ring", text: "Error" });
132
128
  }
133
129
  })
134
130
  .catch(error => {
@@ -146,5 +142,4 @@ module.exports = function(RED) {
146
142
  // 注册自定义节点
147
143
  RED.nodes.registerType("获取单个设备采集值", MyHttpNode);
148
144
 
149
- };
150
-
145
+ };