标签:MqttClient 网关 密码 MQTT Mosquitto 服务器 输入
MQTT服务器Mosquitto的部署和应用
项目目的
利用MQTT协议实现信号远程监控。
传感器->信号收集->lora网关->服务器->客户端
应用环境
操作系统 Windows 10
硬件配置 Lora网关ND65-L01CE-470M-EA
IoT 开关传感器
平台搭建
1.搭建MQTT服务器
1.本项目使用Mosquitto来搭建服务器。从官网下载Mosquitto,请注意版本。
https://mosquitto.org/download/
2.安装完成后,打开安装目录下的 配置文件mosquitto.conf中,任意位置加入下面文本,保存退出
#设置不允许匿名登录
allow_anonymous false
#设置账户密码文件位置为C:\MosquittoTest\pwfile.example
password_file /MosquittoTest/pwfile.example
在安装目录下打开cmd控制台
执行以下命令
./mosquitto_passwd -c pwfile.example user
会弹出对话框输入密码,(密码不会显示)
3.配置地址和端口号
如果又多个需要绑定IP和端口可以多次使用listener.
4.保存完成后,重启服务 cmd里运行 service.msc或者再任务管理器里打开服务对话栏目
重新启动即可。
5.测试服务器
常用的测试软件包括MQTTFx.MQTT Box
http://mqttfx.jensd.de/index.php/download
现在已MQTTFx为例介绍
也可以在控制太直接进行调试,可以参考文件开头的链接。
打开MQTTfx,点击设置按钮,输入服务器地址和端口号
选择User Credentials输入第二步注册的账号和密码
然后选择连接。
publish 发布主题
订阅服务
服务器安装完毕。
2.配置LoRa网关
连接LoRa网关。
打开Network Server
输入应用名称,“数据传输”中点击“ ”添加第三方 MQTT/HTTP/HTTPS 服务器信息,网关即可将数据传输到对应
的服务器。
输入服务器地址 端口 用户名 密码保存后会显示连接状态
在“Profile”页面根据 LoRaWAN节点类型添加一个设备配置文件
在“设备”页面点击“添加”即可逐一添加 LoRaWAN节点设备。
设备EUI请参考3.配置控制器。
3.配置LoRa控制器
本次使用的LoRa控制器为NC502-470M星纵,为实现开关量信号远程监控。
A. 将UC11-N1连接到电脑,连接方式参见手册3.3。
B. 在星纵物联官网下载本地配置软件Toolbox。下载后运行其中的exe程序进入配置界面。选择对应的串口后输入登录密码(默认密码为123456),其他参数保持默认。
Toolbox下载链接:下载链接
输入密码。
查看状态和对应的EUI地址供网关使用。
设置上传频率
设置通道和高低电平触发
4. C# .net 编程
本项目使用MVVM架构使用 4.5.2.NET FRAMEWORK
使用NUGET下载M2MQTT
具体代码请参考如下
在主函数中添加MQTT链接和初始化。
public Main(object para)
{
_viewModel = (MenuViewModel)para;
//mqtt connect
try
{
MqttClient = new MqttClient(System.Net.IPAddress.Parse(Properties.Settings.Default.Server));
MqttClient.MqttMsgPublishReceived += Client_MqttMsgPublishReceived;
string clientId = Guid.NewGuid().ToString();
MqttClient.Connect(clientId, "admin", "123");
MqttClient.Subscribe(new string[] { "/platform_1/uplink" }, new byte[] { MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE });
}
catch (Exception e)
{
MessageBox.Show("Mqtt服务器链接错误" + e.Message);
_viewModel.CloseSystem();
}
}
接收订阅消息
void Client_MqttMsgPublishReceived(object sender, MqttMsgPublishEventArgs e)
{
//处理接收到的消息
string msg = System.Text.Encoding.Default.GetString(e.Message);
UplinkTelegram telegram = JsonConvert.DeserializeObject<UplinkTelegram>(msg, _serializerSettings);
switch(telegram.ApplicationName)
{
case "Platform_1":
Plantform_1Execute(telegram);
break;
}
}
标签:MqttClient,网关,密码,MQTT,Mosquitto,服务器,输入 来源: https://blog.csdn.net/qq_33996939/article/details/117259032
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。