我的编程空间,编程开发者的网络收藏夹
学习永远不晚

thinkphp6.0连接mqtt进行通信

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

thinkphp6.0连接mqtt进行通信

一、引入mqtt库

git地址:https://github.com/bluerhinos/phpMQTT

我这边没用composer引入,直接把库里面的phpMQTT.php代码复制出来,改了个名字叫MqttNewService

二、thinkphp6.0创建一个接收数据的脚本

1、创建一个自定义命令类文件,运行指令

php think make:command Mqtt mqtt

2、配置config/console.php文件

return [    // 指令定义    'commands' => [        'mqtt' => 'app\command\Mqtt'    ],];

三、用到的php函数

bin2hex() 函数把 ASCII 字符的字符串转换为十六进制值。字符串可通过使用 pack() 函数再转换回去。
pack() 函数把数据装入一个二进制字符串。

因为我这边是和硬件通信,所有消息都是16进制的,所以需要用的这两个函数,如果你的业务使用string或者json,那就不需要使用这两个函数了,可以把下面代码里面对应的函数删掉

四、订阅接收消息

;use think\console\Command;use think\console\Input;use think\console\Output;use app\common\service\MqttNewService;class Mqtt extends Command{    protected function configure()    {        // 指令配置        $this->setName('mqtt')            ->setDescription('the mqtt command');    }    protected function execute(Input $input, Output $output)    {        $this->subscribe();    }    //订阅接收消息    protected function subscribe()    {        $server   = 'xx.com';        $port     = 1883;        $clientId = 'test_emqx'. rand(1000000, 99999999);        $topic    = "test-mqtt-12345";        $username = "";        $pwd      = "";        $mqtt = new MqttNewService($server, $port, $clientId);        if(!$mqtt->connect(true, NULL, $username, $pwd)) {            exit(1);        }        $mqtt->debug = true;        $topics[$topic] = array('qos' => 0, 'function' => array($this,"procMsg"));        $mqtt->subscribe($topics, 0);        while($mqtt->proc()) {        }        $mqtt->close();    }    function procMsg($topic, $msg){        $msg = bin2hex($msg);        echo $msg. "\n";    }}
在项目下使用php think mqtt将这个脚本运行起来,然后用MQTTX软件发送消息进行测试MQTTX是用来测试mqtt的软件,下载地址:https://www.emqx.com/zh/products/mqttx

在这里插入图片描述

在这里插入图片描述

可以看到脚本已经接收到了数据

五、发布消息

    //发布消息    public function publish()    {        $msg = input('msg');        $server = 'xx.com';        $port = 1883;        $username = '';        $password = '';        $clientId = 'test_emqx'. rand(1000000, 99999999);        $mqtt = new MqttNewService($server, $port, $clientId);        if ($mqtt->connect(true, NULL, $username, $password)) {            $mqtt->publish('test-mqtt-12345', pack('H*',$msg), 0, false);            $mqtt->close();        } else {            echo "Time out!\n";        }    }

在这里插入图片描述

在这里插入图片描述

使用postman测试这个接口,正常收到了数据,如有问题,可以下面留言

来源地址:https://blog.csdn.net/LuoHuaX/article/details/129286593

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

thinkphp6.0连接mqtt进行通信

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

小程序连接MQTT进行通信(保证能用)

一、MQTT通信介绍 MQTT 是一种基于客户端服务端架构的发布/订阅模式的消息传输协议。它的设计思想是轻巧、开放、 简单、规范,易于实现。这些特点使得它对很多场景来说都是很好的选择,特别是对于受限的环境如机器与机器的通信(M2M)以及物联
2023-08-17

如何进行socket通信

本篇文章为大家展示了如何进行socket通信,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、使用socket实现一对一的简单通信 socket就是一个开往网络应用必备的功能模块。通过这个模块我们
2023-06-04

Android进程间使用Intent进行通信

Android进程间通信(IPC,Inter-ProcessCommunication)底层采用的是Binder机制,具体到应用层有网友根据安卓四大组件将进程间通信方式分为对应的四种方式Activity,Broadcast,ContentProvider,Service
2023-02-28

如何进行OpenResty连接Mysql

本篇文章为大家展示了如何进行OpenResty连接Mysql,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。centos 安装myslCentos系统下安装mysql,先下载mysql-communi
2023-06-19

如何进行TCP通信实现

本篇文章给大家分享的是有关如何进行TCP通信实现,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。TCP是底层通讯协议,定义的是数据传输和连接方式的规范。TCP协议,传输控制协议(
2023-06-05

Java Socket通讯如何进行客户端的信息通信

本篇文章为大家展示了Java Socket通讯如何进行客户端的信息通信,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Java Socket通讯在实际的使用中有很多关键代码需要我们学习,那么首先我们就
2023-06-17

win10怎么进行宽带连接

这篇文章主要为大家展示了“win10怎么进行宽带连接”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“win10怎么进行宽带连接”这篇文章吧。1.鼠标右键点击桌面右下角的网络图标,然后点“打开网络和
2023-06-28

vue组件间如何进行通信

本篇内容介绍了“vue组件间如何进行通信”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!vue是数据驱动视图更新的框架, 我们平时开发,都会把
2023-06-21

Spring boot 整合RabbitMQ实现通过RabbitMQ进行项目的连接

RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,这篇文章主要介绍了Spring boot 整合RabbitMQ实现通过RabbitMQ进行项目的连接,需要的朋友可以参考下
2022-11-13

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录