wemos D1 arduino项目实战2-设备连接Tlink平台

前言

上一节,我们完成了Tlink云端创建项目,并使用网络助手连接Tlink云服务器,本节,我们开始学习使用Wemos D1连接Tlink平台。

一、实例

1.通信流程

首先连接tcp.tlink.io:8647,然后发送设备序列号给平台,如果平台不断开连接,或者返回错误信息,那么鉴权成功,接着定期发送心跳数据(“Q”)给平台,平台回复A说明心跳正常。

2.通信协议

点击设置连接,进入设备连接信息配置页面
在这里插入图片描述

自定义协议类型,选择如下数据传输协议
在这里插入图片描述

协议说明,本项目选用[H:数据] + [D? ] + [S:数据] + [D? ] + [T:数据];其中,[H:数据]为数据头,本项目为’#’,[T:数据]为数据头,本项目为’#’,[S:数据]为数据分隔符,本项目为’,’ ,两个[D? ]分别表示传感器DHT11数据和开关状态数据。

详细协议说明如下:
在这里插入图片描述
在这里插入图片描述

3.获取设备序列号

device1的设备序列号为:UVKY765HR848JGNM
在这里插入图片描述

4.wemos D1程序

#include <Arduino.h>
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#include <Ticker.h>

#define DEVICE_ID "UVKY765HR848JGNM"
#define DEVICE_DATA  "#22,1#"

char* ssid = "sand";
char* passwd = "12345678";

const uint16_t port = 8647;
const char * host = "tcp.tlink.io"; // ip or dns
WiFiClient client;//创建一个tcp client连接
int  heartbeart_flag = 0;

Ticker tk;

void time_coming_cicyle_cb(void)
{
  heartbeart_flag = 1;
}

// 复位或上电后运行一次:
void setup() {
    //在这里加入初始化相关代码,只运行一次:
    Serial.begin(115200);
     
    WiFi.mode(WIFI_STA);
    WiFi.begin(ssid, passwd);
    
    Serial.println("connecting to router... ");
    //等待wifi连接成功
    while (WiFi.status() != WL_CONNECTED) {
        Serial.print(".");
        delay(500);
    }
    Serial.println("");

    Serial.print("WiFi connected, local IP address:");
    Serial.println(WiFi.localIP());
    delay(500);
    Serial.print("connecting to ");
    Serial.println(host);
    if (!client.connect(host, port)) {
        Serial.println("connection failed");
        Serial.println("wait 5 sec...");
        delay(5000);
        return;
    }else
    {
        Serial.println("connect to tcp server success.");
        Serial.println("Send this data to tcp server");
        client.print(DEVICE_ID);
        delay(500);
        client.print(DEVICE_DATA);
         // call time_coming_cicyle_cb every 30s
         tk.attach(30, time_coming_cicyle_cb);
    }
}
 
void loop() {

    if (1 == heartbeart_flag)
    {
      client.print("Q");
      String recv_heart_data= client.readString();
      Serial.print("Receive heartbeat data : ");
      Serial.println(recv_heart_data);
      heartbeart_flag = 0;
    }
    
    String recv_data = client.readString(); //   client.readStringUntil('\r');
    if (recv_data != NULL)
    {
      Serial.print("Receive data : ");
      Serial.println(recv_data);
    }
    delay(200);
}

上述程序实现当设备上电的时候,模块首先连接热点,然后开始连接远程Tlink服务器,并发送序列号进行认证,认证通过后发送一条上报数据状态的指令,同时使用Ticker开启一个30S的定时器设置心跳标志位,loop函数循环检测心跳标志位,定期发送心跳数据给云端,同时实时接收云端下发的数据。

二、下载运行

点击上传图标,开始下载程序到wemos D1
在这里插入图片描述

设备下载完成重新启动,并上传数据,后台结果如下:
在这里插入图片描述

通过后台发送数据
在这里插入图片描述

设备Log如下:
在这里插入图片描述

可以看到云端下发了#24,0#,而设备刚好也受到了,此外,设备上发了’Q’心跳数据,平台返回了’A’应答数据。

四、结语

(1)TCP通信协议

设备和云端的协议可以自行编辑,也可以采用帧头+数据长度+数据+校验位+帧尾这种更加可靠的通信方式。

(2)获取资料

如您在使用过程中有任何问题,请加QQ群进一步交流。

QQ交流群:906015840 (备注:物联网项目交流)

公众号:物联网客栈,扫码关注,回复wemos即可。
在这里插入图片描述
一叶孤沙出品:一沙一世界,一叶一菩提

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

物联网客栈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值