Arduino D1 使用mqtt 上传服务器数据 上传字符串

Arduino D1 使用mqtt  上传服务器数据 上传字符串  

     本实例 是自己做的服务器  用的mqtt进行数据传输   因为这个协议是长连接的 方便收发数据  mqtt是基于TCP的  Copa是基于UDP的   所以有的时候买的模块  不管是WIFI NB  有一点是自己要想清楚就是用的什么协议  万变不离其宗吗 

     这个就是自己上传mqtt 总结的案例   奈何 网上的案例 不加注释  很多都是只有他们的一个功能 不能复用 上传个字符串都难 这个还有几行代码没有搞清楚  但是也发现很多好案例   分享一下   可以参考

     自己到时候要把  上传的几个必要条件写一下   总结

wemos d1 采集温度数据上传到mqtt服务器

https://blog.youkuaiyun.com/xiaobai2018/article/details/86656728

Arduino实现真正的物联网-通过MQTT服务器-两块板子远程通信

https://blog.youkuaiyun.com/qq_44350275/article/details/89406527

#include <ESP8266WiFi.h>
#include <PubSubClient.h>

const char* ssid = "你的路由器";
const char* password = "你的路由器密码";
const char* mqtt_server = "你要连接的服务器地址"; // 服务器地址
const int port = 1883;//服务器端口号
const char* topic_name = "你要上传消息的主题";
const char*client_id = "wemos001";//这个是板子的编号  我没有懂 但是不影响使用

unsigned long lastSend;
WiFiClient espclient;
PubSubClient client(espclient);

//获取传感器数据进行发送
void gettemp()
{
//上传的字符串进行拼接转义
  String payload = "{\"type\":1,\"data\":[{\"index\":1,\"value\":6}]}"; 
  char attributes[100];
  payload.toCharArray( attributes, 100 );
  client.publish(topic_name, attributes );
  
}
//初始化wifi
void setup_wifi(){
  delay(10);
  WiFi.begin(ssid,password);
  while(WiFi.status() != WL_CONNECTED){
    delay(500);
    Serial.print("...");
  }
}
//连接服务器
void reconnect(){
  while(!client.connected()){//如果没有连上
    if (client.connect(client_id)){//接入时本设备id
      Serial.println("connect success");
    }else{
      Serial.print("failed,rc=");
      Serial.print(client.state());
      Serial.print("try 5 seconds later");
      delay(5000);
      }
  }
}
//设备初始化
void setup(){
  Serial.begin(9600);
  setup_wifi();
  client.setServer(mqtt_server,port);
  lastSend = 0;
}
void loop(){
 reconnect();  //1.首先进行服务器的连接  因为这是循环函数 所以执行一次后判断就行了
 if (millis() - lastSend > 10000){
    gettemp();
    lastSend = millis();
 } 
  client.loop();
 }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值