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

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Node-RED是工业网物联网的重要组成部分,我最开始接触Node-RED,也算是一个偶然的机会吧,上班后领导安排我的第一个任务就是调研一下Node-RED,我之后上网查了一下,那个时候网上相对于Node-RED的资料也比较少,只知道它是IBM公司的一个开源项目。直到最近,发现许多大公司的产品都支持Node-RED,比如西门子公司的IoT2000,研华公司的WISE PaaS 网关,美国OPTO 22等设备中都安装了Node-RED,表明它在工业物联网和控制中已经广泛应用了。 那么工业物联网为什么要用它?它又处于工业物联网那个层次?它具有哪些特性?它帮助物联网解决了什么问题?为什么说它是柔性动态可重构的解决方案呢? ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 本门课程,老师将带领你从Node-RED的发展,工业物联网定位开始讲解,并带领着大家进行手把手安装Node-RED,实际操作演练Node-RED,并搭建一个物联网小平台,给大家带来更好的学习效果。  ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 为了能够让小伙伴们快速了解本门课程的结构,本门课程从以下几个方面展开:Node-RED入门Node-RED安装与配置Node-RED教学实战Node-RED的优势与不足Node-RED能为我们带来什么Node-RED总结与展望
Node-RED中使用Home Assistant组件和在Home Assistant中使用Node-RED插件有一些区别。这两种方法都可以实现Home Assistant与Node-RED之间的集成,但具体的实现方式和功能略有不同。 1. 在Node-RED中使用Home Assistant组件: - 使用Home Assistant组件可以在Node-RED中直接与Home Assistant进行通信和控制。你可以使用Home Assistant节点来读取和写入Home Assistant实体的状态,执行服务调用,接收事件以及发送命令。 - Node-RED提供了丰富的节点和工具,使你能够轻松地构建自定义的自动化逻辑和工作流程,并与Home Assistant的设备、传感器和服务进行交互。 2. 在Home Assistant中使用Node-RED插件: - 使用Node-RED插件可以将Node-RED嵌入到Home Assistant的界面中,以便直接在Home Assistant中编辑和管理Node-RED的工作流程。 - 通过将Node-RED集成到Home Assistant中,你可以利用Home Assistant的实体和服务来触发和控制Node-RED的流程。你可以使用Home Assistant中的触发器(如状态变化、时间等)来启动Node-RED流程,并通过调用Home Assistant服务来与设备进行交互。 - 这种方式更适合那些已经熟悉Home Assistant界面和配置的用户,可以更方便地在Home Assistant中管理和监控Node-RED的工作流程。 总的来说,选择使用哪种方法取决于你的需求和个人偏好。如果你更喜欢在Node-RED中构建和管理自动化逻辑,那么使用Home Assistant组件可能更适合你。如果你已经习惯了Home Assistant的界面并且想要在一个统一的界面中管理所有的自动化和服务,那么使用Node-RED插件可能更适合你。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小钻风巡山

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值