一、简述
本篇我们将基于Eclipse Mosquitto™ MQTT Broker,在一台手机或电脑上云点亮另一台嵌入式设备上的一颗LED。
二、环境准备
2.1 MQTT Subscriber
有几种方式可以打造一个MQTT的IoT终端:
1) 利用Linux Deploy,在一台安卓手机上部署一个Linux的执行环境,在该环境中安装mosquito client。我们将远程点亮手机上的闪光灯。这种方式可以让你家里的闲置安卓手机重新发挥作用,但是比较硬核。
安装Termux,通过SSH连接容器中的Linux:
在我所使用的红米Note2手机中,向/sys/class/leds/flashlight/brightness写入1或0可以打开或关闭手机上的闪光灯:
2) 在部署了Linux操作系统的Raspberry PI等开发板上,安装mosquito client。通过开发板上的GPIO驱动,点亮LED。
如果你拥有自己的云服务器,你可以部署自己的Mosquito MQTT Broker。如果你没有自己的服务器,有一些公共的测试服务器可以让你尝试:
Server | Broker | Port | Websocket |
iot.eclipse.org | Mosquitto | 1883/1883 | n/a |
broker.hivemq.com | HiveMQ | 1883 | 8000 |
test.mosquitto.org | Mosquitto | 1883/1883/8884 | 8080/8081 |
test.mosca.io | mosca | 1883 | 80 |
broker.mqttdashboard.com | HiveMQ | 1883 |
上面的建议只是让你可以通过公网IP去访问MQTT Broker以及和部署在世界上其他任何地方的IoT控制终端取得联系,在你自己的电脑上部署MQTT Broker并通过局域网访问也无碍于学习MQTT IoT的工作模式。
你需要一个终端来给你的LED控制板发送指令。其实它可以和以上两个设备之一同为一个设备,但为了体现我们是远程点亮的,最好它是一台不同的设备。
如果是IOS设备,可以安装MQTTTool:
如果是PC,可以安装MQTT.fx:
安装的软件用于提供MQTT消息发送用户界面。
(安卓上暂时没有找到类似的软件,感兴趣的同学可以尝试利用mosquito自己写一个)
三、装载程序
3.1 受控端
1. 将mqtt的broker服务器地址添加至/etc/hosts,名字即为mqtt,使用telnet查看mqtt broker是否可用;
2. git clone https://github.com/mobangjack/mqtt_led_iot,使用make命令编译代码;
3. 执行run_mqtt_led_new_state_sub_main.sh脚本,开始订阅LED状态控制命令。
3.2 控制端
在装了MQTT.fx的PC上,连接到mqtt broker,在topic输入框中填入led/newstate,在下方payload输入框中填入1,点击Publish按钮,受控机上的LED将被打开;在payload输入框中填入0,点击Publish按钮,受控机上的LED将被关闭:
你也可以使用IOS上的MQTTTool发布led/newstate主题的MQTT消息来控制LED:
四、结语
在IoT中点亮一颗LED就好比在编程语言中输出一句Hello World,揭露的是一个领域的一个入口,更多的高级应用还需要耕耘者的进一步挖掘。我们正处在一个波涛汹涌的时代,一个又一个的浪潮正推动着我们创下一个又一个的历史高峰。抓住机遇,踏浪而行。
附录
1)使用PC端MQTT.fx发布LED控制指令
2)使用IOS端MQTTTool发布LED控制指令
帮杰
疯狂于web和智能设备开发,专注人机互联。
HOW DO I DIY MY OWN REMOTE CONTROL SWITCH IN MY DORMITORY
THE SIMPLEST KALMAN FILTER IN THE WORLD
COMPUTING MEAN AND VARIANCE RECURSIVELY
LEARNING GOOGLE TENSORFLOW [L1: MAKE THE FIRST ACUAINTANCE]