# MQTT.fx **Repository Path**: wave_14/mqtt.fx ## Basic Information - **Project Name**: MQTT.fx - **Description**: MQTT 实现发布功能,可以通过本地安装服务 mosquitto-2.0.22来测试发布、订阅功能。 - **Primary Language**: C# - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-10-31 - **Last Updated**: 2025-10-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 深圳MQTT上位机 - 设备状态发布器 基于.NET Framework 4.8 + WinForms + MQTTnet开发的工业设备状态MQTT消息发布上位机应用程序。 ## 功能特性 - 连接到深圳MQTT服务器 (172.16.62.80:1883) - 支持用户名密码认证 (admin/admin123) - 发布设备状态消息到动态主题 (/{type}/sensor/data) - 支持多种设备类型 (mirror/fac/fl/sac) - 标准化的设备状态数据格式 - 支持自定义JSON数据发布 - 实时连接状态显示 - 消息发送日志记录 - 自动生成事务ID ## 系统要求 - .NET Framework 4.8 - Windows操作系统 - Visual Studio 2019或更高版本 / .NET SDK ## 依赖包 - MQTTnet 4.3.1.873 - Newtonsoft.Json 13.0.3 ## 安装和运行 ### 使用Visual Studio 1. 克隆或下载项目到本地 2. 使用Visual Studio打开 `MqttPublisher.sln` 3. 还原NuGet包 4. 编译并运行项目 ### 使用命令行 1. 克隆或下载项目到本地 2. 打开命令提示符或PowerShell 3. 导航到项目目录 4. 运行以下命令: ```bash dotnet restore dotnet build dotnet run --project MqttPublisher ``` ## 使用说明 ### 连接设置 1. 输入MQTT Broker的IP地址 (默认: 127.0.0.1) 2. 输入端口号 (默认: 1883) 3. 点击"连接"按钮 ### 发布消息 #### 发送设备状态数据 1. 选择设备类型 (mirror/fac/fl/sac) 2. 填写资产编号和设备名称 3. 设置各项状态参数: - 在线状态 (onlineState) - 设备状态 (deviceStatus) - 设备状态类型 (deviceStatusType) - 安全状态 (safeState) - 彩灯状态 (colorLightState) - 操作模式 (operationMode) 4. 点击"发送设备状态"按钮 标准设备状态JSON格式: ```json { "messageName": "eqpStateRequest", "deviceCode": "DEV001", "equipmentName": "测试设备", "transactionID": "202407271646354129378", "timeStamp": "2024-07-27 16:46:35.412", "parameters": { "onlineState": 1, "deviceStatus": 1, "deviceStatusType": 0, "safeState": 1, "colorLightState": 1, "operationMode": 1 } } ``` #### 发送自定义数据 1. 选择设备类型以确定发布主题 2. 在自定义JSON文本框中输入有效的JSON数据 3. 点击"发送自定义"按钮 #### Topic格式 - mirror设备: `/mirror/sensor/data` - fac设备: `/fac/sensor/data` - fl设备: `/fl/sensor/data` - sac设备: `/sac/sensor/data` ### 日志查看 - 应用程序会在日志区域显示连接状态和消息发送记录 - 可以点击"清空日志"按钮清除日志内容 ## 项目结构 ``` MqttPublisher/ ├── MqttPublisher.sln # 解决方案文件 ├── MqttPublisher/ │ ├── MqttPublisher.csproj # 项目文件 │ ├── Program.cs # 程序入口 │ ├── MainForm.cs # 主窗体逻辑 │ ├── MainForm.Designer.cs # 主窗体设计 │ ├── MainForm.resx # 主窗体资源 │ ├── MqttService.cs # MQTT服务类 │ ├── App.config # 应用配置 │ ├── packages.config # NuGet包配置 │ └── Properties/ # 项目属性文件 └── README.md # 说明文档 ``` ## 开发说明 ### MqttService类 - 封装了MQTT客户端的连接、断开、发布功能 - 支持用户名密码认证 - 提供事件通知机制 - 支持异步操作 - 自动生成事务ID和构建动态主题 ### EquipmentStateRequest类 - 定义了设备状态请求的标准格式 - 包含消息名称、设备编码、设备名称、事务ID、时间戳和参数对象 ### EquipmentParameters类 - 定义了设备状态参数的标准格式 - 包含在线状态、设备状态、安全状态等工业设备标准参数 ### DeviceType枚举 - 定义了支持的设备类型:mirror、fac、fl、sac ## 深圳MQTT服务器配置 - **服务器地址**: 172.16.62.80 - **端口**: 1883 - **用户名**: admin - **密码**: admin123 - **Topic格式**: /{type}/sensor/data ## 注意事项 1. 确保深圳MQTT服务器 (172.16.62.80:1883) 可访问 2. 检查网络连接和防火墙设置 3. 确保用户名密码正确 (admin/admin123) 4. JSON数据格式必须正确,否则发送会失败 5. 设备类型选择会影响消息发布的主题 6. 事务ID会自动生成,格式为yyyyMMddHHmmssfff+4位随机数 7. 应用程序关闭时会自动断开MQTT连接 ## 故障排除 - 如果连接失败,请检查服务器地址、端口和认证信息 - 如果发送失败,请检查JSON格式是否有效 - 确保选择了正确的设备类型 - 查看日志区域获取详细的错误信息 - 检查网络是否能访问172.16.62.80:1883 ======= # MQTT.fx #### 介绍 MQTT 实现发布功能,可以通过本地安装服务 mosquitto-2.0.22来测试发布、订阅功能。 #### 软件架构 软件架构说明 #### 安装教程 1. xxxx 2. xxxx 3. xxxx #### 使用说明 1. xxxx 2. xxxx 3. xxxx #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)