node-red 插件使用教程


一 java 編寫 coap 客戶端與服務端

概述:

CoAP是為物聯網而生,短小精悍,它底層基於UDP協議的,其它具體參考百度百科,本例子是基於Californium框架。

1、先決條件
java環境

eclipse工具

Maven插件(有最好,不需要手動下載jar引入,沒有的話手動引入)

2、下載Californium框架核心jar
californium-core.jar : 包括CoAP核心部分

element-connector.jar 包括適用於UDP和DTLS的java套接字抽象層

scandium.jar: 包括DTLS

<dependency>
        <groupId>org.eclipse.californium</groupId>
        <artifactId>californium-core</artifactId>
        <version>2.0.0-M7</version>
    </dependency>
    <dependency>
        <groupId>org.eclipse.californium</groupId>
        <artifactId>element-connector</artifactId>
        <version>2.0.0-M7</version>
    </dependency>
  <dependency>
        <groupId>org.eclipse.californium</groupId>
        <artifactId>scandium</artifactId>
        <version>2.0.0-M7</version>
    </dependency>

3、創建java工程或Maven工程,創建一個Server類

import org.eclipse.californium.core.CoapResource;
import org.eclipse.californium.core.CoapServer;
import org.eclipse.californium.core.coap.CoAP.ResponseCode;
import org.eclipse.californium.core.server.resources.CoapExchange;
 
public class HelloCoAPServer {
 
    public static void main(String[] args) {
        CoapServer server = new CoapServer();//主機為localhost 端口為默認端口5683
        server.add(new CoapResource("hello"){//創建一個資源為hello 請求格式為 主機:端口\hello
 
            @Override
            public void handleGET(CoapExchange exchange) { //重寫處理GET請求的方法
                exchange.respond(ResponseCode.CONTENT, "Hello CoAP!");  
            }
            
        });
        server.add(new CoapResource("time"){ //創建一個資源為time 請求格式為 主機:端口\time
 
            @Override
            public void handleGET(CoapExchange exchange) {
                Date date = new Date();
                exchange.respond(ResponseCode.CONTENT,
                        new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date));
            }
            
        });
        server.start();
    }
}


4、創建一個客戶端:

public class GETClient {
 
    public static void main(String[] args) throws URISyntaxException {
        URI uri = null;
        uri = new URI("localhost:5683/hello");  //創建一個資源請求hello資源,注意默認端口為5683
        CoapClient client = new CoapClient(uri);
        CoapResponse response = client.get();
        if(response !=null){
            System.out.println(response.getCode());  //打印請求狀態碼
            System.out.println(response.getOptions());  //選項參數
            System.out.println(response.getResponseText());  //獲取內容文本信息
            System.out.println("\nAdvanced\n");    // 
            System.out.println(Utils.prettyPrint(response));  //打印格式良好的輸出
        }
    }
}


5、測試
先運行HelloCoAPServer的main方法

然后運行GETClient的main方法

6、日志:

2.05
{"Content-Format":"text/plain"}
Hello CoAP!
 
Advanced
 
==[ CoAP Response ]============================================
MID    : 10763
Token  : [aab3ac5818d1e598]
Type   : ACK
Status : 2.05
Options: {"Content-Format":"text/plain"}
RTT    : 26 ms
Payload: 11 Bytes
---------------------------------------------------------------
Hello CoAP!
===============================================================

二 node-red安裝node-red-contrib-coap

 

 

安裝之后拖拽配置

coap請求節點配置如下

 

 

coap 服務端節點配置如下

 

服務端響應節點配置如下,獲取get請求參數

可以自定義響應的格式,注意訪問coap服務器的時候,如果有配置hosts,應該使用hosts訪問這個地址

 

三 msyql插件 node-red-node-mysql

1. 安裝

2.配置調試

找到mysql組件,然后編輯節點

配置新的節點

設置參數

組件連接

sql編寫組件

內容

 

 

三 kafka組件

 

輸入輸出kafka組件

配置添加節點

 

四 http

 

 

部署后訪問nodered端口的/test路徑

http://127.0.0.1:1880/test?a=1&b=3

 

 

串口插件

使用方式如下博客

https://blog.csdn.net/geek_monkey/article/details/80755719

串口安裝權限異常等問題失敗 使用離線安裝

sudo npm install node-pre-gyp --save
sudo npm install serialport --unsafe-perm --build-from-source --save
npm i npm to update 
npm install -g serialport

 

node-red 自定義插件

先找到對應的自定義插件所在的目錄

 

將后綴的demo刪除后重啟nodered,輸入組件中會多一個sample,即為自定義組件

修改自定義組件內容 99-sample.js

核心部分

 

編碼格式為js語法,但是部分api不存在.例如數組遍歷map不存在

按照自己的要求修改好之后,重啟node-red

 

 

node-red全局變量

使用函數組件

編輯內容

if (local.action===undefined)//獲取全局變量,如果不存在,賦默認值
{
  local.action="站立";
  local.x=0;
  local.y=0;
}else{//如果存在,進入計算
    switch(msg.payload.token){
        case "move_x":
            local.x+=parseInt(msg.payload.value)
            break;
        case "move_y":
             local.y+=parseInt(msg.payload.value)
            break;
    }
}
context.set('data',local);//保存全局變量

函數節點使用16進制字節數組

msg.payload = Buffer.from([0x12,0x22,0xd3,0x23])

 

node-red的用戶權限與密碼配置

首先找到配置文件,啟動node-red的時候,啟動日志會顯示配置文件位置,如下圖所示

修改配置文件

找到這個位置,放開注釋

password是經過加密處理的

permissions 表示用戶權限,分為 讀寫 -> * 只讀 -> read

獲取加密后的秘鑰

首先進入找到加密工具所在的目錄

進入開始轉化秘鑰

node -e "console.log(require('bcryptjs').hashSync(process.argv[1], 8));" mypassword

 

得到的$2a$08$Dk6dTjxEPi85sObY1HRYZ.QDoB53m/J5M1MFulhgKTvpwuuC5AzOW表示新的秘鑰,將他寫入配置文件setting中的pasword中,即下一次登錄使用的密碼為mypassword


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM