请选择 进入手机版 | 继续访问电脑版

『瀚思彼岸』» 智能家居第一站

 找回密码
 立即注册
查看: 199|回复: 4

[教程系列] 小白教小白-通过百度云物联的mqtt连接node-red和手机tasker

[复制链接]

9

主题

94

帖子

339

积分

论坛分享达人

积分
339
金钱
245
HASS币
10
发表于 2019-5-15 15:09:45 | 显示全部楼层 |阅读模式
小白教小白-通过百度云物联的mqtt连接node-red和手机tasker
起因:家里宽带没有公网ip,也不想把hass、node-red挂到外网,但是想通过简单的方式用手机来遥控操作家里的ha或者将ha信息反馈到手机,想了很多办法,包括用企业微信等,现在又有了一个新的思路和解决办法。
思路:用安卓手机的tasker软件配合MQTT Client(这个软件可以在tasker中生成插件,软件下载地址,应用汇,再通过百度云的物接入lot hub mqtt方式连接家里的node-red教程如下:第一步,拥有百度云的物接入lothub1、到百度云的网站注册账号,地址:https://cloud.baidu.com/,注意,要使用lot hub需要实名制验证,然后按图片进行操作: 1.png 2.png 3.png 4.png

我选择的是每月100万条消息,3个月,免费,你需要多少?
5.png

上图中,项目名称和描述随便填,但是项目类型选择我红框的“数据型

6.png
上图中,名称和用户名随意填
7.png
上图中,身份随意填,后面一步忘了截图了,应该是设置策略,涉及到mqtt的“标题”内容,忘了怎么填了,但无所谓,后面可以修改。但是注意了,最后会生成一个身份密钥,一定要复制下来保存后,否则只能通过重置来取得新的秘钥。所有都好了以后,你就可以在网页中看到你的项目了,在项目列表中点击及所注册的项目,可以看到“用户列表”、“身份列表”、“策略列表”的相关信息,如下面几张图
8.png 9.png 10.png


我这里创建了1个项目,对应了2个用户,2个身份,1个策略。这里我也不是很懂,我是node-red用了一个用户,在后面node-red中的mqtt节点中输入了这个用户的相关资料,手机用了另一个用户。(我不知道手机和node-red用同一个用户的资料是否可以,反正我是不行,一个上去另一个就断开了)接下来,你可以直接在网页上测试一下mqtt是否可以了,百度云给了你一个网页端的mqtt的测试方式,见下图




11.png
在“身份列表”中,找到你创建的“用户名”,右侧有一个“连接测试”,点进去
12.png


上图中,“步骤一”中除了输入“身份秘钥”以外,什么都不要改,主机名称和用户名可以复制下来,然后点击“connect”,点击“步骤二”的右侧的“Add new topic subscription”按键,输入你需要订阅的主题,比如“ceshi/#”以及“Qos”,比如1,对于mqtt的主题,你可以参考以下网址http://itindex.net/detail/58722-mqtt-topic-%E9%80%9A%E9%85%8D%E7%AC%A6在上图中左侧的红框中输入“主题”和“信息”,点击“publish”,就可以在步骤三中看到你发送的信息了。注意,这里输入的主题一定要和你订阅的主题相符合,比如我刚才订阅的主题是“ceshi/#”,那么你发布的主题一定要是“ceshi/***”,比如“ceshi/测试”“ceshi/测试1/测试2.最后你返回一下项目列表,可以看到如下图
13.png


红框中的信息记下来,就是你的设备需要连接的主机名称,连接方式和对应的端口,以上步骤,你的百度云mqtt就好了,按照上面我让你复制的东西,就有了主机名称,用户名称,连接方式(tcpsslwss),对应的端口号,用户秘钥。下面是node-red第二步:node-red的操作1、在node-red中,新建一个mqtt in节点,按以下图片配置:


14.png


上图中,“主题”填写需要订阅的主题内容,Qos按你所需填写,“服务器端”选择添加新的mqtt broker节点,点右侧的笔,
15.png


上图中,名称随意,在“连接”下面的“服务端”填写你获得的百度云的信息,比如你获得的是abc123.mqtt.iot.gz.baidubce.com,就填tcp:// abc123.mqtt.iot.gz.baidubce.com,“端口”填1883,(注意将这里填的和你百度云获得的tcpsslwss的相关信息对应起来。)


16.png


在“安全”下面的用户名和密码填入你获得的“用户名”和“身份秘钥”。
这个节点设置好以后,在这个mqtt节点后面拖一个“debug”节点,部署一下,然后就可以到百度云的“连接测试”中试一下,看看node-red中是否可以收到信息了。
要在node-red中发布mqtt,只要加一个mqtt out的节点就可以了。
第三步,用安卓手机发布或者订阅mqtt消息。
安卓手机安装MQTT Client这款软件,你可以在google市场找到5.4.1版本的,免费但有广告,我在应用汇找到一个5.4版本的,这个软件好在可以在tasker的插件中调用。配合tasker完成自动化。
18.png


安装好以后,按照以下图片配置:
19.png
从左到右4张图片,一张张来,第一张,右下角点“+”,第二张,“Enabled”点击开启,“Nick name”随意,“Enable SSL”点击开启,“use mqttv3.1”点击开启,“Host”填入你的百度服务端,比如“abc123.mqtt.iot.gz.baidubce.com”(注意,这里的服务端设置和node-red不一样,node-red中要在你的服务端前输入连接方式,比如tcp:// abc123.mqtt.iot.gz.baidubce.com,这里不需要),“port”输入“1884”,“username”输入你百度云mqtt的用户名,“password”输入用户秘钥,“Keep Alive interval”输入60,“Client id”随意,其他不用该,最右边一张图,输入你要订阅的主题和qos,点击“subscribe”
到这,这个软件就告一段落了。
使用tasker软件,对收到订阅的消息进行判定后制操作,
tasker中新建一个事件,如下图:
20.png
新建一个事件,在“选择事件类别”中选择“插件”,选择“mqtt”,选择最下面的“Message Arrived”,在“事件修改”的配置中,点右侧的笔,在“topic”中选择你订阅的主题,下面是重点,“varmessage”“varmqttopic”输入变量名称,随意,但要符合变量名称的格式,比如我是这么输入的,在“varmqttopic”中输入“%mqtttp1”,在“varmessage”中输入“%mqttms1”

下面就我的tasker操作做一个说明
比如,我要在node-red中发布三个mqtt信息,主题和内容分别是1)主题“家/反馈/灯”,内容是“家里卧室的灯已经打开了”,2)主题“家/安防/监控”,内容是“家里大门口的摄像头已经关闭了”,3)主题“家/安防/监控”,内容是“家里防盗门打开了”。需要我的手机分别对应以下操作:1)震动,2)发一段铃声,3)给家里人打电话。
那么在手机的MQTT Client软件订阅的主题是“家/#”,
在tasker软件中,事件就按照上面的操作,对应该事件的任务就是这样(不放图了):
新建一个任务,
1)在“任务编辑”中,点右下角的+,在“选择操作类别”选择“任务”-if”,在“操作修改”的“条件”下,左侧填写变量名称,即“%mqtttp1”,当中选择“匹配”,右侧输入“反馈”,返回后,
2)再点+,在“选择操作类别”选择“警报”-“震动”,返回
3)再点+,在“选择操作类别”选择“任务”-end if”,返回
4)点+,在“选择操作类别”选择“任务”-if”,在“操作修改”的“条件”下,左侧填写变量名称,即“%mqtttp1”,当中选择“匹配”,右侧输入“安防”,在“条件”右侧点+,新建一个变量,左侧填写变量名称,即“%mqttms1”,当中选择“匹配”,右侧输入“监控”,返回(两个之间是“与”),返回
5)再点+,在“选择操作类别”选择“媒体”-“播放铃声”,选择铃声,返回
6)再点+,在“选择操作类别”选择“任务”-end if”,返回
7)点+,在“选择操作类别”选择“任务”-if”,在“操作修改”的“条件”下,左侧填写变量名称,即“%mqtttp1”,当中选择“匹配”,右侧输入“安防”,在“条件”右侧点+,新建一个变量,左侧填写变量名称,即“%mqttms1”,当中选择“匹配”,右侧输入“防盗门”,返回(两个之间是“与”),返回
8)再点+,在“选择操作类别”选择“电话”-“拨打电话”,输入电话号码,返回
9)再点+,在“选择操作类别”选择“任务”-end if”,返回
至于通过taker来新建一个任务,调用mqtt插件来发送mqtt消息,再用node-red来接收mqtt消息,判定后执行自动化,大同小异了,就不再啰嗦了。







评分

参与人数 2金钱 +40 HASS币 +10 收起 理由
咸味土豆 + 20 感谢楼主分享!
Jones + 20 + 10 厉害了word楼主!

查看全部评分

回复

使用道具 举报

9

主题

94

帖子

339

积分

论坛分享达人

积分
339
金钱
245
HASS币
10
 楼主| 发表于 2019-5-15 15:22:26 | 显示全部楼层
群里的lidicn大侠曾经发过一个教程,https://bbs.hassbian.com/forum.p ... mp;highlight=tasker[流程系列] node-red控制Tasker【黑科技】【开门播报手机电量】,是通过tasker的插件Tasker Network Event Server来实现的,我用这个插件实现自动朗读,但不知怎么回事手机一直不定时的无规律自动进行朗读,也不知道是http://thacthab.herokuapp.com/ 的问题还是tasker的问题,后来想到通过mqtt插件来实现,找到了MQTT Client这款软件,发现也很不错,而且如果是在局域网内,可以通过局域网内的mqtt服务器来实现订阅和发送,无需外网。但还是不死心,想试试外网的mqtt,网上找了百度和阿里云的物联mqtt教程,阿里云的我这个小白实在搞不定,还好百度云的可以了,所以就有了这个教程。
回复

使用道具 举报

9

主题

94

帖子

339

积分

论坛分享达人

积分
339
金钱
245
HASS币
10
 楼主| 发表于 2019-5-15 15:33:32 | 显示全部楼层
我这用tasker建立了几个任务来遥控ha的开关灯,用tasker的桌面小组件,直接在桌面操作,这两天也不知道怎么回事,灯一直乱开关,从tasker、node-red,一直到mosquitto一路排查,因为不知道怎么看node-red发送、接收命令的日志和mosquitto发送接收信息的日志(都是群晖docker安装),搞了很长时间,现在初步怀疑可能是黑群晖下docker安装的mosquitto(MQTT)套件出现问题,(因为手机端的MQTT Client显示收到了很多订阅的消息)。不知道有人碰到过这个问题吗?另外哪位朋友能出一个群晖docker下安装emqtt的教程(就是在下载安装时卷和变量怎么设置?),考虑要不要换一个mqtt服务器软件。
回复

使用道具 举报

4

主题

462

帖子

1396

积分

金牌会员

Rank: 6Rank: 6

积分
1396
金钱
934
HASS币
20
发表于 2019-5-15 15:57:43 | 显示全部楼层
火钳刘明
回复

使用道具 举报

0

主题

42

帖子

246

积分

中级会员

Rank: 3Rank: 3

积分
246
金钱
204
HASS币
0
发表于 2019-5-15 19:11:59 | 显示全部楼层
支持!教程很详细
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2019-5-27 05:27 , Processed in 0.482228 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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