当前位置: 首页 > news >正文

网站建设代理哪个好免费建网站程序

网站建设代理哪个好,免费建网站程序,孝义网站建设,sdcms网站源码文章目录 目的基础说明示例代码总结 目的 MQTT是比较常用在物联网设备中的通讯协议#xff0c;这篇文章将使用 Arudino ESP32 作为MQTT客户端进行通讯使用演示。目前Arduino的MQTT客户端库中最常使用的是 PubSubClient #xff0c;所以本文也将以此进行说明。 主页#xf… 文章目录 目的基础说明示例代码总结 目的 MQTT是比较常用在物联网设备中的通讯协议这篇文章将使用 Arudino ESP32 作为MQTT客户端进行通讯使用演示。目前Arduino的MQTT客户端库中最常使用的是 PubSubClient 所以本文也将以此进行说明。 主页https://pubsubclient.knolleary.net/ 项目地址https://github.com/knolleary/pubsubclient 目前 PubSubClient 库版本为 v2.8 主要基于 MQTT 3.1.1 不支持 MQTT 5.0 的新增特性订阅主题只支持 Qos 0 和 1。 This library provides a client for doing simple publish/subscribe messaging with a server that supports MQTT. 基础说明 MQTT的一些基础内容可以参考下面文章 《MQTT基础入门与资料收集》 因为测试需要有 MQTT Broker服务器 可以参考上面文章进行启动或者也可以申请一个免费的在线的云服务使用。 PubSubClient 库使用很简单主要就是分为下面几步 声明 PubSubClient 对象因为MQTT需要在TCP之上工作所以需要给 PubSubClient 对象一个TCP对象使用 setServer 方法设置MQTT服务器的地址和端口号使用 setCallback 方法设置通讯消息回调函数 void callback(char *topic, byte *payload, unsigned int length)如果不需要订阅消息则无需此步骤使用 connect 方法启动连接使用 subscribe 方法订阅主题或使用 publish 方法向某个主题发布消息 上面步骤中 2、3、4 步顺序并无要求并且可以在第一步声明对象的构造函数中直接传入。 在使用 connect 方法进行连接时可以选择填入 Will Qos Will Retain Will Message cleanSession 信息默认为 0 0 0 1 。发送消息时可以选择填入 retained 默认为 false 。 默认情况下发送和接收数据都会依赖buffer当发送或者接收的消息比buffer可容纳的空间默认256字节大的时候将会忽略这条消息。可以使用 setBufferSize 方法来设置buffer大小。 上面的 publish 方法发送消息时会先将消息拷贝到缓存这在大数据发送时效率并不好可以先使用 beginPublish 方法启动传输然后单次或多次使用 write 方法写数据也可以使用 print 等方法最后使用 endPublish 完成本次消息发送减少一次拷贝效率上会高很多。 可以使用 setKeepAlive 方法来设置 Keep Alive 时间默认为15s。 使用 disconnect 方法可以关闭连接使用 connected 方法可以检查是否连接。使用 unsubscribe 方法可以取消订阅消息。 使用 state 方法可以获得 PubSubClient 对象当前的状态状态定义如下 // Possible values for client.state() #define MQTT_CONNECTION_TIMEOUT -4 #define MQTT_CONNECTION_LOST -3 #define MQTT_CONNECT_FAILED -2 #define MQTT_DISCONNECTED -1 #define MQTT_CONNECTED 0 #define MQTT_CONNECT_BAD_PROTOCOL 1 #define MQTT_CONNECT_BAD_CLIENT_ID 2 #define MQTT_CONNECT_UNAVAILABLE 3 #define MQTT_CONNECT_BAD_CREDENTIALS 4 #define MQTT_CONNECT_UNAUTHORIZED 5示例代码 #include WiFi.h #include PubSubClient.h// WiFi相关配置信息 const char *wifi_ssid ********; const char *wifi_password ********;// MQTT相关配置信息 const char *mqtt_broker_addr ********; // 服务器地址 const uint16_t mqtt_broker_port 1883; // 服务端口号 const char *mqtt_username ********; // 账号非必须 const char *mqtt_password ********; // 密码非必须 const uint16_t mqtt_client_buff_size 4096; // 客户端缓存大小非必须 String mqtt_client_id esp32_client; // 客户端ID const char *mqtt_topic_pub esp32/test; // 需要发布到的主题 const char *mqtt_topic_sub esp32/test; // 需要订阅的主题WiFiClient tcpClient; PubSubClient mqttClient;// MQTT消息回调函数该函数会在PubSubClient对象的loop方法中被调用 void mqtt_callback(char *topic, byte *payload, unsigned int length) {Serial.printf(Message arrived in topic %s, length %d\n, topic, length);Serial.print(Message:);for (int i 0; i length; i){Serial.print((char)payload[i]);}Serial.println(\n----------------END----------------); }void setup() {Serial.begin(115200);Serial.println();// 连接网络Serial.printf(\nConnecting to %s, wifi_ssid);WiFi.begin(wifi_ssid, wifi_password);while (WiFi.status() ! WL_CONNECTED){delay(500);Serial.print(.);}Serial.println(ok.);Serial.print(IP address: );Serial.println(WiFi.localIP());// 设置MQTT客户端mqttClient.setClient(tcpClient);mqttClient.setServer(mqtt_broker_addr, mqtt_broker_port);mqttClient.setBufferSize(mqtt_client_buff_size);mqttClient.setCallback(mqtt_callback); }unsigned long previousConnectMillis 0; // 毫秒时间记录 const long intervalConnectMillis 5000; // 时间间隔 unsigned long previousPublishMillis 0; // 毫秒时间记录 const long intervalPublishMillis 5000; // 时间间隔void loop() {unsigned long currentMillis millis(); // 读取当前时间// 连接MQTT服务器if (!mqttClient.connected()) // 如果未连接{if (currentMillis - previousConnectMillis intervalConnectMillis){previousConnectMillis currentMillis;mqtt_client_id String(WiFi.macAddress()); // 每个客户端需要有唯一的ID不然上线时会把其他相同ID的客户端踢下线if (mqttClient.connect(mqtt_client_id.c_str())) // 尝试连接服务器// if (mqttClient.connect(mqtt_client_id.c_str(), mqtt_username, mqtt_password)){mqttClient.publish(mqtt_topic_pub, hello mqtt!); // 连接成功后可以发送消息mqttClient.subscribe(mqtt_topic_sub); // 连接成功后可以订阅主题}}}// 定期发送消息if (mqttClient.connected()){if (currentMillis - previousPublishMillis intervalPublishMillis) // 如果和前次时间大于等于时间间隔{previousPublishMillis currentMillis;mqttClient.publish(mqtt_topic_pub, naisu 233~~~);}}// 处理MQTT事务mqttClient.loop(); }上面代码示例演示的是非加密的mqtt实际业务中更多的可能会使用加密的mqtts这个时候TCP客户端就需要使用 #include WiFiClientSecure.h 库中的 WiFiClientSecure 对象了。TCP客户端需要使用 setCACert 或者 getFingerprintSHA256 等方法设置证书或者指纹另外可能需要从NTP服务器获取时间。 WiFiClientSecure对象可以使用 setInsecure 方法可以不用管证书这些测试使用没问题实际使用中可能会有安全风险 总结 MQTT作为客户端使用本身比较简单PubSubClient用起来也非常简单基本上一般的使用有上面内容就够了。
http://www.dnsts.com.cn/news/19404.html

相关文章:

  • 大连好的网站建设公司郑州自助建站软件
  • 17做网站广州沙河地址广东省建设工程金匠奖公布网站
  • 网页设计好的网站企业微信crm
  • 网站搭建多少钱购物平台排行榜2021
  • 北京朝阳网站设计做ps的素材哪个网站
  • 承接做网站的网站南京网站设计网站建设
  • 天眼查官网入口网页版百度关键词优化企业
  • 大理 网站建设建设银行手机app下载
  • 求个网站填空题购物网站开发总结报告
  • 精品网站建设公自我介绍html网页模板
  • 便宜的做网站网站建设文字
  • 云南安宁做网站的公司个人简介代码网页制作模板
  • 网站icp备案需要多久企业管理软件erp系统有哪些
  • 建设公益网站多少钱wordpress放gif图片怎么变静态
  • 网站服务器怎么收费网站建设推进情况
  • 合肥品牌型网站建设地址网站建设与安全管理
  • 怎样设置默认网站河北省住房与建设厅网站首页
  • 高端网站开发环境做网站推广价格
  • 订餐网站建设网站关于我们怎么做单页面
  • 旅游网站建设受众分析怎么做网上网站的网站
  • 山东聊城建设学校网站安庆做网站哪个公司好
  • 学网站建设 赚钱东莞百度搜索优化
  • 民治做网站联系电话免费网站建设网站推广
  • 深圳网站建设公司有哪些做购物网站的数据库
  • 上海 网站设计 公司wordpress 调取分类
  • 建网站要花多少钱网页设计怎么运行
  • 工信部网站备案文件山东川畅科技网站设计
  • 网站程序开发教程做购物网站费用
  • 商业网站案例教程深圳商业网站建设哪家专业
  • 幸福宝推广app网站下载wordpress文档chm