濮阳文明网:怎样打造属于你的私家语音助手之MQTT开拓

新2备用网址/2020-04-09/ 分类:科技/阅读:

## 我是谁,谁又是我 Hi, 各人好,我是刘波,人在江湖行走的ID是:[IAMLIUBO](https://blogs.oopswow.com/)!受到电子芯吧客平台用户活泼度的感召,为了防备天下被粉碎,为了掩护天下的和平,于是我抉择也要来电子芯吧客平台混个脸熟了(我不会认可我是为了稿费才来的!绝对不会!有趣.gif)。 ## 媒介 各人还记得我们前面的树莓派私家语音助手的几篇文章吗?之前年底较量忙,没能持续更新,然后又在家渡过了一个漫长的假期,近来筹备抽时刻从头最先更新一下,本篇文章是我们将我们的私家语音助手打造成真正小助手的第一步,我们将会在树莓派上安装一个MQTT server,用来承载我们在局域网内装备间的交互,后头我们就可以通过语音操作MQTT来节制我们的其余装备了,我想你应该知道我在讲什么~ ## 筹备 在本篇文章中,你必要筹备以下内容: **硬件** * 树莓派(已经搭建好wukong的pi) * ESP8266(提议NodeMCU) **软件** * MQTT.fx(测试用,提议先下载安装,并学一下怎么用) 这就是进修本篇文章,你必要筹备的全部的对象了,虽然一个可以正常上网的前提也是必不能少的。 ## 安装MQTT server 也许有同窗对MQTT不是很认识,提议各人可以先去google一下,可能可以看一下我写的这两篇篇文章,以便对MQTT有大抵的熟悉,因为内容较量多,这里就不全贴过来了,各人可以点击下面链接去查看: [物联网标配MQTT初体会](https://zhuanlan.zhihu.com/p/55411234) [物联网标配MQTT处事端软件](https://zhuanlan.zhihu.com/p/56727359) ### Mosquitto简朴相识 这是一款Eclipse 团队开拓的超轻量级的软件,安装巨细仅有几百KB,虽然云云轻量级成果上是没有EMQX那么强盛了,仅支撑MQTT V3协议,不外做测试照旧较量好用的,不消在本身的呆板上起一个像EMQX那么大的处事,官网也没做太多的先容,只有一个简短的先容: >Eclipse Mosquitto is an open source (EPL/EDL licensed) message broker that implements the MQTT protocol versions 5.0, 3.1.1 and 3.1. Mosquitto is lightweight and is suitable for use on all devices from low power single board computers to full servers. >The MQTT protocol provides a lightweight method of carrying out messaging using a publish/subscribe model. This makes it suitable for Internet of Things messaging such as with low power sensors or mobile devices such as phones, embedded computers or microcontrollers. >The Mosquitto project also provides a C library for implementing MQTT clients, and the very popular mosquitto_pub and mosquitto_sub command line MQTT clients. 虽然这不是独一的选择,我们这里选择Mosquitto首要缘故起因照旧由于Mosquitto充足小巧,事实我们是在树莓派上跑着这个server的,以是像EMQTT这种较量专业的就有点吃力了。 ### 安装Mosquitto 安装也相对简朴,各人依次实行以下呼吁就可以了。 ```bash wget sudo apt-key add mosquitto-repo.gpg.key sudo wget sudo apt-get up<ickey>date sudo apt-get install mosquitto ``` 安装完成后,我们先来搜查一下,是否正常运行,输入以下呼吁,并看到跟下面的图片一样,声名你已经乐成安装并运行起来了: ```bash service mosquitto status ``` ![](https://b05.ickimg.com/202004/be35e29f39b6e5a36034afe5d3384cd5.png) ### 安装mosquitto-clients 上面我们已经安装好了处事端,这里我们再趁便安装一下客户端,安装好后我们就可以测试一下能不可正常行使了,安装也很简朴,直接输入下面呼吁就可以: ```bash sudo apt-get install mosquitto-clients ``` ![](https://b03.ickimg.com/202004/d8f5c398c26fe88aaf2289fa695c9dea.png) 输入**Y**就可以完成安装了,下面我们来举办测试。 ## 测试 这里我们通过下面三种方法去测试,以辅佐各人有更好的熟悉: * mosquitto-clients * MQTT.fx * ESP8266 第一种方法,我们是在树莓派上测试的,可以验证是否可以正常事变,然后第二种方法我们在Windows上通过MQTT软件举办测试,这里可以验证局域网通讯是否正常,然后第三种方法是通过ESP8266去测试,可以验证我们后头就可以舒畅的跟硬件交互了。 ### mosquitto-clients 这个测试相对简朴,不外各人必要行使putty相同的软件再打开一个窗口,然后我们在**窗口1**和**窗口2**别离输入以下呼吁: **窗口1** ```bash mosquitto_sub -t "/icxbk/IAMLIUBO" -v ``` **窗口2** ```bash mosquitto_pub -t "/icxbk/IAMLIUBO" -m "Hello,icxbk!" ``` 假如你看到跟下图一样的结果,就声名没题目了! ![](https://b05.ickimg.com/202004/49c19746139b328a59b11c56a37e0f09.png) 这里给各人简朴说一下这几个参数的寄义: * -t 这暗示主题,后头随着的参数就是我们宣布动静的主题,假如你不太大白什么是主题,可以看上面我贴出的两篇文章链接的第一篇。 * -v 暗示收到的动静内容是可见的,也就是通过节制台打印出来 * -m 暗示现实发送的动静内容,这里的动静主题要与我们通过mosquitto_sub订阅的主题保持同等 ### MQTT.fx 我们再在Windows上通过MQTT.fx软件测试一下,起首你必要设置一下MQTT broken,依次点击**Extras**->**Edit Connection Profiles**->**右下角加号**,然后设置一下IP,如下图: ![](https://b05.ickimg.com/202004/baa6cb0e8709931c331f1d315234b42f.png) 然后我们行使Pulish发送一条动静,如下图,可是不要健忘先点击Connect哦~ ![](https://b02.ickimg.com/202004/278b1d50e3bc81ef279c9f443923b5a3.png) 假如你配置没题目的画,就可以在putty窗口1中看到我们发的动静了,各人假若有不会行使MQTT.fx软件的,提议各人可以先去进修一下。 ### ESP8266 行使ESP8266也许对部门没有打仗过的同窗显得轻微有点贫困,这里我们行使Arduino来开拓ESP8266,各人假如还没搭建好开拓环境的话,可以参考我的下一篇文章,由于后头我们还会多次用到ESP8266,以是我会教各人怎样用Arduino IDE来开拓ESP8266,提议各人可以先去看一下文章,再返来这里继承。 下面直接贴上代码,代码也很简朴,我们这里行使的是**EspMQTTClient**这个库,各人可以通过库打点器来举办安装。 ```c #include "EspMQTTClient.h" void onConnectionEstablished(); EspMQTTClient client( "XXXXXXXXXX", // Wifi 名称 "XXXXXXXXXX", // Wifi 暗码 onConnectionEstablished, // MQTT connection established callback "XXX.XXX.XXX.XXX" // 树莓派IP ); void setup() { Serial.begin(115200); } void onConnectionEstablished() { // Subscribe to "mytopic/test" and display received message to Serial client.subscribe("/icxbk/IAMLIUBO", [](const String & payload) { Serial.println(payload); }); // Publish a message to "mytopic/test" client.publish("/icxbk/IAMLIUBO", "This is a message form ESP8266!"); } void loop() { client.loop(); } ``` 各人必要将代码中这一部门的内容替代为你本身的: ```c EspMQTTClient client( "XXXXXXXXXX", // Wifi 名称 "XXXXXXXXXX", // Wifi 暗码 onConnectionEstablished, // MQTT connection established callback "XXX.XXX.XXX.XXX" // 树莓派IP ); ``` 编辑好后,就可以编译下载了,下载乐成后你会在putty窗口1中看到我们发的动静了,如下图: ![](https://b03.ickimg.com/202004/7c5992f619631c4c5e4a6ae5f2942061.png) ## 跋文 本篇文章是我们后头继承开拓我们的私家语音助手的基本,请各人必然要细心做,也许会有部门代码由markdown名目渲染成html会呈现乱码,假若有不可正常实行的代码可以在评述区留言。

广告 330*360
广告 330*360

热门文章

HOT NEWS
  • 周榜
  • 月榜
阳光在线官网
微信二维码扫一扫
关注微信公众号
新闻自媒体 Copyright © 2002-2019 阳光在线官网 版权所有
二维码
意见反馈 二维码