• 301SLM130(NBIOT)CSDK(OpenCPU)学习开发官方MQTT代码测试


    <p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/LearnEC616_SLM130" frameborder="0" scrolling="auto" width="100%" height="1500"></iframe></p>

    说明

    这节测试一下官方提供的MQTT代码.

    如果想知道MQTT的实质大家伙一定要看完上一节,

    其实MQTT服务器就是个TCP服务器, 就是负责数据转发,

    不过要让MQTT服务器转发设备之间的数据,就需要按照MQTT协议来.

    现在各个厂商都有云平台,然后支持MQTT接入,大家伙只需要知道,

    连接MQTT实际上就是先使用TCP连接上TCP(MQTT)服务器,然后发送MQTT连接协议

    连接协议无非就是把ClientID(设备唯一码),用户名,密码等信息打包成协议发送给MQTT服务器.

    然后就连接上了,然后设备就靠订阅主题接收数据, 靠发布主题来发送数据.

    无论怎么着,实际上只是TCP通信, 只不过通信的数据格式是MQTT协议.

     

    一般单片机都是使用这个库(以前写的移植教程被我删了...后面补上)

    https://www.emqx.com/en/mqtt-client-sdk

    准备工作

    安装好NB卡和天线

    测试1

    1,找到mqtt的例程,点进去这函数

    2,提示

    大家伙不要被什么onenet啦,aliyun啦迷惑...始终记住连接MQTT无非就是先连接TCP,

    然后clientid,用户名,密码啥的,只不过各个平台组装这些参数规则不一样而已. 

    3,测试连接我的MQTT服务器(自建的服务器)

    根据下面的修改一下

    MQTT的IP地址填写的域名:mnif.cn 填写IP地址也可以:47.92.31.46

    3,发送数据改下(去掉官方那些花里胡哨的)

            len = sprintf(mqtt_payload,"%s", "1111111111111111111111111");//发送的数据
            message.payload = mqtt_payload; //发送的数据
            message.payloadlen = len;//发送的数据长度
            //发布消息; 发布的主题:11223344
            MQTTPublish(&mqttClient, "11223344", &message);

    4,编译

    KeilBuild.bat ec616_0h00-mqtt_example

    5,下载(我使用keil下载)

    6,打开个MQTT调试助手,连接同一个MQTT服务器, 订阅下11223344这个主题

    然后每隔一段时间就会收到模组发送的消息

    阿里云的demo

    这个后面会单独写教程, 现在官方提供的例程没有断线重连,测试了也没啥用,所以就不测试了

    测试2

    1,上面那个例程就只是简单的连接和发送数据

    下面这个demo更接近了点实际应用,接收和发送数据都单独使用的任务,发送数据使用了队列

    2,把测试函数替换为 mqtt_demo_send_task_init

    3,改为自己的服务器信息

    4,每隔一段时间发送数据是在这里(实际是把消息存储到队列)

    去掉花里胡哨的以后

    5,从队列提取消息并发送

    6,接收消息(这里面的例程都是调用的这个函数接收数据)

    咱最终处理数据就是在这个里面

        md->topicName = aTopicName;
        //主题长度是  md->topicName->lenstring.len

        md->message = aMessage;
        //消息长度是 md->message->payloadlen
     
     
  • 相关阅读:
    报表中的Excel操作之Aspose.Cells(Excel模板)
    .NET开源组件
    JSON 和 JSONP
    servlet 中getLastModified()
    spring mvc源码-》MultipartReques类-》主要是对文件上传进行的处理,在上传文件时,编码格式为enctype="multipart/form-data"格式,以二进制形式提交数据,提交方式为post方式。
    spring mvc dispatcherservlet处理request流程
    log显示error时的堆栈信息理解和分析
    web项目log日志查看分析->流程理解
    war包结构
    Spring Boot干货系列:(三)启动原理解析
  • 原文地址:https://www.cnblogs.com/yangfengwu/p/16364552.html
Copyright © 2020-2023  润新知