OpenHAB+MQTT+NodeMCU实现远程控制
开发环境基于之前的VSCode环境
OpenHAB简介:
全称为open Home Automation Bus,即开放式家庭自动化总线,该项目旨在为家庭自动化构建提供一个通用的集成平台。其是一个纯Java打造的开源项目,完全基于OSGi(Open Service Gateway Initiative),并使用Jetty作为web服务器。Jetty和Equinox OSGi运行时一起构成了OpenHAB的核心基础。
nodemcu简介:
很便宜的wifi开发版,可以使用Arduino的库以及IDE编程,本教程使用之前搭好的VSCode来进行测试。
MQTT协议:(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,
NodeMCU开发版通过MQTT协议与外界通信。以下测试中用到了两个mqtt客户端的库,一个是.Net Core的,一个是ESP8266的。然后OpenHAB托管在Myopenhab上,实现远程控制。
MQTT服务端选择(以win系统为例)
MQTT的服务端选择国内的开源实现方案——EMQ,官网上下载下来开箱即用,默认不开启验证,下载后解压,命令行运行emqttd console即可开始运行。
E:\emqttd\bin>emqttd console #以控制台启动emqttd服务
在这之前,先把其中一个Emqtt HTTP API服务占用的端口改成8081,与OpenHAB默认的web管理端口冲突,否则后面OpenHAB启动之后无法进入后台,反之改OpenHAB的配置也是可以的。
EMQTT服务开启
服务启动后就可以进入EMQTT的控制台查看所有的后台控制,后台默认的地址是http://localhost:18083/
默认用户名是admin
密码是public
。
后面测试用到的基本上有Topics和Clients两个模块,非常简单的就可以监控到连接到的Mqtt的客户端。
既然是用VSCode,就干脆找一找有没有.net的mqtt客户端的实现,一找居然发现github上都已经有.Net Core通过.Net Core写个简单的测试来连接刚刚启动MQTT服务器。
很简单,直接命令行dotnet new console
一个新的控制台应用(.Net Core的环境很简单,直接下一个SDK装下,然后装C#的插件,就可以了。),然后用Nuget插件,在VSCode中的命令面板里Add Package 搜索M2MqttDotnetCore,选择最新版本就可以了。然后detnet restore
就完成了添加引用。
添加好引用后,按github中的介绍写一个pub和sub就能测试了。
//发布端
using System;
using System.Text;
using uPLibrary.Networking.M2Mqtt;
using uPLibrary.Networking.M2Mqtt.Messages;
namespace _1212
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
MqttClient client = new MqttClient("127.0.0.1");
byte x = client.Connect("Pubtest");//连接成功为0
Console.WriteLine(x.ToString());
while (