『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 134668|回复: 499

[教程系列] 自定义设备通过Node-red接入HA--MQTT

  [复制链接]

9

主题

127

帖子

1072

积分

金牌会员

Rank: 6Rank: 6

积分
1072
金钱
940
HASS币
20
发表于 2018-1-14 19:44:09 | 显示全部楼层 |阅读模式
本帖最后由 lanhemeng 于 2018-1-14 19:44 编辑

1.先参考囧神的帖子安装MQTTUbuntu安装Mosquitto也就是MQTT(无坑版)
2.在configuration.yaml添加如下代码:

mqtt:
  broker: 127.0.0.1
  port: 1883
  client_id: home-assistant-1
  keepalive: 60
  username: mqtt
  password: MQTT
  discovery: true


3.在configuration.yaml中添加sensor, 这里以攀藤G5S PM2.5,甲醛,温湿度三合一传感器为例;参考了大神的帖子
攀藤G5+WidoraAIR(ESP32) 空气质量检测 接入HomeAssistant

sensor:

  - platform: mqtt
    state_topic: 'dev/ptg5s'
    name: 'HCHO'
    unit_of_measurement: 'mg/m3'
    value_template: '{{ value_json.HCHO}}'
  - platform: mqtt
    state_topic: 'dev/ptg5s'
    name: 'PM2.5'
    unit_of_measurement: 'μg/m3'
    value_template: '{{ value_json.pm2p5}}'
  - platform: mqtt
    state_topic: 'dev/ptg5s'
    name: 'PM1.0'
    unit_of_measurement: 'μg/m3'
    value_template: '{{ value_json.pm1p0}}'
  - platform: mqtt
    state_topic: 'dev/ptg5s'
    name: 'PM10'
    unit_of_measurement: 'μg/m3'
    value_template: '{{ value_json.pm10}}' 


4.Node FL程序
捕获1.PNG

A.添加serial 串口节点,并设置串口
捕获2.PNG

B.添加Function节点,并填充以下JS代码;
arry = new Uint8Array(msg.payload);
PM1CF=arry[4]*256+arry[5];
PM25CF=arry[6]*256+arry[7];
PM10CF=arry[8]*256+arry[9];
PM1DQ=arry[10]*256+arry[11];
PM25DQ=arry[12]*256+arry[13];
PM10DQ=arry[14]*256+arry[15];
HCHO=(arry[28]*256+arry[29])/1000;
T=(arry[30]*256+arry[31])/10;
H=(arry[32]*256+arry[33])/10;
Version=arry[36];
Err=arry[37];

global.set("PM1CF",PM1CF);
global.set("PM25CF",PM25CF);
global.set("PM10CF",PM10CF);
global.set("PM1DQ",PM1DQ);
global.set("PM25DQ",PM25DQ);
global.set("PM10DQ",PM10DQ);
global.set("HCHO",HCHO);
global.set("T",T);
global.set("H",H);
global.set("Version",Version);
global.set("Err",Err);

var msg1 = { payload:PM1CF};
var msg2 = { payload:PM25CF};
var msg3 = { payload:PM10CF};
var msg4 = { payload:PM1DQ};
var msg5 = { payload:PM25DQ};
var msg6 = { payload:PM10DQ};
var msg7 = { payload:HCHO};
var msg8 = { payload:T};
var msg9 = { payload:H};
var msg10 = { payload:Version};
var msg11 = { payload:Err};

return [msg1,msg2,msg3,msg4,msg5,msg6,msg7,msg8,msg9,msg10,msg11];


C.以甲醛为例,再添加一个Function,添加如下代码;
msg.payload={"HCHO": parseFloat(msg.payload)}
return msg;


C.添加一个MQTT输出节点,并新添加一个MQTT Server
捕获3.PNG 捕获4.PNG 捕获5.PNG

D.依次添加其他Sensor,部署,完成接入
捕获6.PNG

这里只是以串口设备为例,其他设备如485 modbus,WebSocket等设备也可以通过这种方法接入,非常简单;

完整Node FL 如下:
游客,如果您要查看本帖隐藏内容请回复




评分

参与人数 1金钱 +5 收起 理由
xwesley + 5

查看全部评分

回复

使用道具 举报

4

主题

208

帖子

1408

积分

金牌会员

Rank: 6Rank: 6

积分
1408
金钱
1199
HASS币
0
发表于 2018-1-14 20:41:50 | 显示全部楼层
谢谢大神,我马上去试试
回复

使用道具 举报

23

主题

656

帖子

4621

积分

元老级技术达人

积分
4621
金钱
3950
HASS币
30

教程狂人

QQ
发表于 2018-1-14 22:22:52 | 显示全部楼层
终于有干货了
回复

使用道具 举报

1

主题

89

帖子

559

积分

论坛积极会员

积分
559
金钱
470
HASS币
0
发表于 2018-1-14 22:46:30 | 显示全部楼层
LZ是通过什么设备接传感器的啊?
回复

使用道具 举报

9

主题

127

帖子

1072

积分

金牌会员

Rank: 6Rank: 6

积分
1072
金钱
940
HASS币
20
 楼主| 发表于 2018-1-15 11:45:34 | 显示全部楼层
superz_xp 发表于 2018-1-14 22:46
LZ是通过什么设备接传感器的啊?

树莓派,接的传感器,HA装在服务器里了
回复

使用道具 举报

3

主题

215

帖子

669

积分

高级会员

Rank: 4

积分
669
金钱
454
HASS币
0
发表于 2018-1-15 17:24:14 | 显示全部楼层
学习以下
回复

使用道具 举报

25

主题

416

帖子

3027

积分

元老级技术达人

积分
3027
金钱
2601
HASS币
40
发表于 2018-1-16 09:24:34 | 显示全部楼层
感谢大神分享
回复

使用道具 举报

0

主题

103

帖子

315

积分

中级会员

Rank: 3Rank: 3

积分
315
金钱
212
HASS币
0
发表于 2018-1-17 11:21:01 | 显示全部楼层
学习学习,提高高
回复

使用道具 举报

2

主题

90

帖子

632

积分

高级会员

Rank: 4

积分
632
金钱
542
HASS币
0
发表于 2018-1-17 15:34:53 | 显示全部楼层
谢谢分享
回复

使用道具 举报

5

主题

140

帖子

448

积分

中级会员

Rank: 3Rank: 3

积分
448
金钱
308
HASS币
0
发表于 2018-1-18 17:03:31 | 显示全部楼层
学习以下
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-12-4 01:20 , Processed in 0.060545 second(s), 37 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表