laravel集成MQTT

目录

EMQ X安装

EMQ X MQTT 服务器启用 SSL/TLS 安全连接

laravel集成

 MQTT Topic定义规范


EMQ X安装

文档地址:EMQ X 消息服务器简介 | EMQ Docs 

EMQ X R3.0 消息服务器默认占用的 TCP 端口包括:

1883 MQTT 协议端口
8883 MQTT/SSL 端口
8083 MQTT/WebSocket 端口
8080 HTTP API 端口
18083 Dashboard 管理控制台端口

Shell 脚本一键安装 (Linux) 

curl https://repos.emqx.io/install_emqx.sh | bash

 后台启动 EMQ X

emqx start

控制台 URL: http://pi.fogbow.cn:18083/ ,默认登录用户名: admin, 密码: public

EMQ X MQTT 服务器启用 SSL/TLS 安全连接

参考文档:EMQ X MQTT 服务器启用 SSL/TLS 安全连接 | EMQ

用的自签名认证方式

 

 

laravel集成

.env

#MQTT
MQTT_HOST=62.234.157.185
MQTT_PORT=1883
MQTT_ADMIN=publisher
MQTT_PASSWORD=publisher123456
 composer require bluerhinos/phpmqtt
use Bluerhinos\phpMQTT;

/**
 * Desc: 向EMQX发送MQTT消息
 * User: dl
 * Time: 2020/8/25
 * @param $topic
 * @param $msg
 * @return array
 */
function sendEmqxMsg($topic, $msg)
{
    //发送mqtt消息
    $server = env('MQTT_HOST','62.234.157.185');
    $port = env('MQTT_PORT','1883');
    $username = env('MQTT_ADMIN','publisher');
    $password = env('MQTT_PASSWORD','');
    $client_id = uniqid('mqtt_');
    $mqtt = new phpMQTT($server, $port, $client_id);
    //如果创建链接成功
    if ($mqtt->connect(true, NULL, $username, $password)) {
        $res = $mqtt->publish($topic,  $msg, 0);
        $mqtt->close();    //发送后关闭链接
    } else {
        Log::debug(json_encode($mqtt,'320'));
    }
}
// 发送
sendEmqxMsg("robotMsg/Yunji/$m_id", json_encode($msg_info, 320));  

MQTT Topic定义规范

主题
MQTT是通过主题对消息进行分类的,本质上就是一个UTF-8的字符串,不过可以通过反斜杠表示多个层级关系。主题并不需要创建,直接使用就是了。
主题还可以通过通配符进行过滤。其中,+可以过滤一个层级,而#只能出现在主题最后表示过滤任意级别的层级。

举个例子:
building-b/floor-5:代表B楼5层
+/floor-5:代表任何一个楼的5层
building-b/#:代表B楼所有数据

注意,MQTT允许使用通配符订阅主题,但是并不允许使用通配符广播。

客户端常用订阅场景示例

robotMsg/Yunji/{m_id} //机器人消息
deviceData/{h_id}/# //订阅某个酒店的所有设备数据
deviceData/{h_id}/kg //订阅某个酒店下所有开关设备的数据
deviceData/+/kg //订阅所有酒店下所有开关设备的数据

原则 

  • 从大方向往小方向
  • 严格区分大小写

基本方针    遵循  `场景/位置/分类`, 如:

deviceData/{m_id}/kg
deviceStatus/{m_id}/cube

如果需要下发到具体设备则需要在商户id后加入sn 如:

deviceData/{m_id}/{sn}/kg

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值