11.Arduino基础入门— 8.Arduino通过MQTT客户端推送信息

两个库的引用,

其中,PubSubClient可以在Arduino IDE的库管理器中找到:

#include <WiFi.h> 本来是#include <ESP8266WiFi.h> 改成Wifi.h即可。

#include <WiFi.h>
#include <PubSubClient.h>

//设置设备ID
const String deviceID = "tempDevice1";

// 设置wifi连接用户密码
const char* ssid = "KMWL003";
const char* password = "abcd1234";

//设置mqtt服务器
const char* mqtt_server = "192.168.0.101";

WiFiClient espClient;//创建tcp/ip连接
PubSubClient client(espClient);//mqtt使用的tcp连接

//mqtt连接到服务器
void reconnect() {
    while (!client.connected()) {
        Serial.print("Attempting MQTT connection...");
        String clientId = "ESP8266Client-";
        clientId += deviceID ;//String(random(0xffff), HEX);//生成随机客户端id
        if (client.connect(clientId.c_str())) {
            Serial.println("connected");
        }
        else {
            Serial.print("failed, rc=");
            Serial.print(client.state());
            Serial.println(" try again in 5 seconds");  //5秒后重试
            delay(5000);
        }
    }
}

void setup()
{
    Serial.begin(115200);
    //连接到wifi
    Serial.println(ssid);
    WiFi.begin(ssid, password);
    while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
    }
    Serial.println("");
    Serial.println("WiFi connected");
    Serial.println("IP address: ");
    Serial.println(WiFi.localIP());

    //设置mqtt服务器和端口,默认为1883
    client.setServer(mqtt_server, 1883);

}

void loop()
{
   //如果没有连接到mqtt,自动连接
    if (!client.connected()) {
        reconnect();
    }
    Serial.println("begin push");
    //把长文本做拆解
    String msg1 = "1111111111111111333333333333333333";
    String msg2 = "2222222222222333333333333333333333";
    String msg3 = "3333333333333333333333333333333333";
    //计算文本总长度
    int msgLen = msg1.length() + msg2.length() + msg3.length();
    //开始发送长文件参数分别为  主题,长度,是否持续
    client.beginPublish("homeassitant/config", msgLen, false);
    //发送文本
    client.print(msg1);
    client.print(msg2);
    client.print(msg3);
    client.endPublish();
    //结束发送文本
    Serial.println("sub push");
    //每隔1秒发一次
    delay(1000);
}

原文地址:https://www.cnblogs.com/Bruce_H21/p/11573727.html

时间: 2024-10-29 11:23:58

11.Arduino基础入门— 8.Arduino通过MQTT客户端推送信息的相关文章

Arduino基础入门套件教程PDF

Arduino基础入门套件教程PDF:上期分享了<Arduino+Android互动智作:初入物联网>高清书签中文版,这期分享<Arduino基础入门套件教程PDF>都是在闯客网技术论坛可以免费下载的,更多的物联网,MTK,嵌入式,单片机等最新资料,毕业设计,项目案例,电路分析的等应有尽有,学到你怕,够胆的就进裙交流学习:613377058此文档下载地址:https://bbs.usoftchina.com/thread-210867-1-1.html 目录内容:什么是Arduin

C# 接受MQTT服务器推送的消息

前言: MQTT是IBM开发的一个即时通讯协议.MQTT是面向M2M和物联网的连接协议,采用轻量级发布和订阅消息传输机制. 大家可以直接上GitHub下载MQQT服务的源码,源码地址:https://github.com/mqtt/mqtt.github.io/wiki/libraries 主要内容: 官方文档翻译: M2Mqtt库提供了一个主类MqttClient,代表连接到代理的MQTT客户端.您可以连接到提供其IP地址或主机名的代理,以及可选的与MQTT协议相关的一些参数. 连接到代理后,

MQTT&amp;Mosquitto 推送服务

1.目标:测试Mosquitto使用MQTT协议发消息的相关性能指标,包含发送速度,并发负载能力,资源占用,消息到达率. 2.MQTT协议简介: 1).建立长连接.客户端发起请求和服务端建立长连接,建立成功后,服务端会返回ACK(CONNACK) 2).客户端订阅:客户端发起订阅,订阅成功后,服务端会返回ACK(SUBACK) 3).发消息:发布者会给服务端发消息,服务端在把消息给合适的客户端. Qos=0(服务质量):客户端消息收到后,不会发出ACK给服务端(PUBACK). Qos =1:服

Android Mqtt 消息推送使用

初始化SDK: /** * 初始化SDK * * @param context context */ public void initSDK(Context context) { String clientId = String.valueOf(System.currentTimeMillis()+userId); mqttAndroidClient = new MqttAndroidClient(mContext, serverUri, clientId); subscriptionTopic

Android基础入门教程——5.2.3 Fragment实例精讲——底部导航栏的实现(方法3)

Android基础入门教程--5.2.3 Fragment实例精讲--底部导航栏的实现(方法3) 标签(空格分隔): Android基础入门教程 本节引言 前面我们已经跟大家讲解了实现底部导航栏的两种方案,但是这两种方案只适合普通的情况,如果 是像新浪微博那样的,想在底部导航栏上的item带有一个红色的小点,然后加上一个消息数目这样, 前面两种方案就显得无力了,我们来看看别人的APP是怎么做的,打开手机的开发者选项,勾选里面的: 显示布局边界,然后打开我们参考的那个App,可以看到底部导航栏是这

Socket.IO学习之基础入门

原文:http://blog.csdn.net/weichuang_1/article/details/48831957 这里贴出Socket.IO官网 一.Socket.IO的介绍 Socket.IO支持及时.双向与基于事件的交流.它可以在每个平台.每个浏览器和每个设备上工作,可靠性和速度同样稳定. 实时分析:将数据推送到客户端,这些客户端会被表示为实时计数器,图表或日志客户. 实时通信和聊天:只需几行代码便可写成一个Socket.IO的”Hello,World”聊天应用. 二进制流传输:从1

【Android应用开发】 推送原理解析 极光推送使用详解 (零基础精通推送)

作者 : octopus_truth 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/45046283 推送技术产生场景 : -- 服务器端主动性 : 客户端与服务器交互都是客户端主动的, 服务器一般不能主动与客户端进行数据交互, 因为服务器端无法得知客户端的 IP 地址 及 状态; -- 数据实时性 : 如果服务器端有紧急数据要传递给客户端, 就必须主动向客户端发送数据; -- 基本原理 : 使客户端实时获取服务器端消息,

iOS10 推送必看(基础篇)

来源:徐不同 链接:http://www.jianshu.com/p/f5337e8f336d iOS10更新之后,推送也是做了一些小小的修改,下面我就给大家仔细说说.希望看完我的这篇文章,对大家有所帮助. 一.简单入门篇—看完就可以简单适配完了 相对简单的推送证书以及环境的问题,我就不在这里讲啦,我在这里说的,是指原有工程的适配. 1.首先我们需要打开下面的开关.所有的推送平台,不管是极光还是什么的,要想收到推送,这个是必须打开的哟~ 之后,系统会生成一个我们以前没见过的文件,如图: 可能产生

mqtt推送实践

最近公司开发项目,用到了推送技术,这里不分析各种推送技术的优劣了,网上内容一大堆,通过查看别人的对比资料以及实践,最后选择了mqtt这个推送协议. mqtt既然是一个协议,自然就有它的实现了,相关的客户端和服务器端实现可以在这个网址下找到:https://github.com/mqtt/mqtt.github.io/wiki/software?id=software,这里服务器端实现我选择了mosquitto,客户端嘛就不止选择一个了,由于项目涉及到Android.ios以及mtk平台以及浏览器