使用 C Link SDK 接入
更新时间:
目标
设备能通过 linksdk 及少量的修改就可以快速接入 Tuya 物联网平台阿里云版,使设备具有连云的能力。
前置条件
已准备好 环境说明
已获取设备认证信息
步骤
使用 IDE 打开下载好的工程文件
工程目录结构大致如下图所示(本文档仅旨在演示如何使用 LinkSDK 接入,因此未选其他附件能力)
本文档后续均使用demos>mqtt_basic_demo.c演示 LinkSDK 接入 hedv。该 demo 只提供最基础的 MQTT 连接功能,其他 pub / sub 的能力需要基于此 demo 开发或是选取其他 demo。
替换证书
在 IDE 中打开下载好的工程,找到external > ali_ca_cert.c 文件(该文件中提供了 CA 和自签两类证书供开发者选择),如下图所示:
复制下文代码,粘贴替换(下列文件中也同时提供了 CA 和 自签两类证书,开发者可以自行选择):
/* CA证书 */
#ifndef GLOBAL_SIGN
#define GLOBAL_SIGN \
"-----BEGIN CERTIFICATE-----\r\n" \
"MIIFgTCCBGmgAwIBAgIQOXJEOvkit1HX02wQ3TE1lTANBgkqhkiG9w0BAQwFADB7\r\n" \
"MQswCQYDVQQGEwJHQjEbMBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYD\r\n" \
"VQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEhMB8GA1UE\r\n" \
"AwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTE5MDMxMjAwMDAwMFoXDTI4\r\n" \
"MTIzMTIzNTk1OVowgYgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpOZXcgSmVyc2V5\r\n" \
"MRQwEgYDVQQHEwtKZXJzZXkgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBO\r\n" \
"ZXR3b3JrMS4wLAYDVQQDEyVVU0VSVHJ1c3QgUlNBIENlcnRpZmljYXRpb24gQXV0\r\n" \
"aG9yaXR5MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAgBJlFzYOw9sI\r\n" \
"s9CsVw127c0n00ytUINh4qogTQktZAnczomfzD2p7PbPwdzx07HWezcoEStH2jnG\r\n" \
"vDoZtF+mvX2do2NCtnbyqTsrkfjib9DsFiCQCT7i6HTJGLSR1GJk23+jBvGIGGqQ\r\n" \
"Ijy8/hPwhxR79uQfjtTkUcYRZ0YIUcuGFFQ/vDP+fmyc/xadGL1RjjWmp2bIcmfb\r\n" \
"IWax1Jt4A8BQOujM8Ny8nkz+rwWWNR9XWrf/zvk9tyy29lTdyOcSOk2uTIq3XJq0\r\n" \
"tyA9yn8iNK5+O2hmAUTnAU5GU5szYPeUvlM3kHND8zLDU+/bqv50TmnHa4xgk97E\r\n" \
"xwzf4TKuzJM7UXiVZ4vuPVb+DNBpDxsP8yUmazNt925H+nND5X4OpWaxKXwyhGNV\r\n" \
"icQNwZNUMBkTrNN9N6frXTpsNVzbQdcS2qlJC9/YgIoJk2KOtWbPJYjNhLixP6Q5\r\n" \
"D9kCnusSTJV882sFqV4Wg8y4Z+LoE53MW4LTTLPtW//e5XOsIzstAL81VXQJSdhJ\r\n" \
"WBp/kjbmUZIO8yZ9HE0XvMnsQybQv0FfQKlERPSZ51eHnlAfV1SoPv10Yy+xUGUJ\r\n" \
"5lhCLkMaTLTwJUdZ+gQek9QmRkpQgbLevni3/GcV4clXhB4PY9bpYrrWX1Uu6lzG\r\n" \
"KAgEJTm4Diup8kyXHAc/DVL17e8vgg8CAwEAAaOB8jCB7zAfBgNVHSMEGDAWgBSg\r\n" \
"EQojPpbxB+zirynvgqV/0DCktDAdBgNVHQ4EFgQUU3m/WqorSs9UgOHYm8Cd8rID\r\n" \
"ZsswDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0gBAowCDAG\r\n" \
"BgRVHSAAMEMGA1UdHwQ8MDowOKA2oDSGMmh0dHA6Ly9jcmwuY29tb2RvY2EuY29t\r\n" \
"L0FBQUNlcnRpZmljYXRlU2VydmljZXMuY3JsMDQGCCsGAQUFBwEBBCgwJjAkBggr\r\n" \
"BgEFBQcwAYYYaHR0cDovL29jc3AuY29tb2RvY2EuY29tMA0GCSqGSIb3DQEBDAUA\r\n" \
"A4IBAQAYh1HcdCE9nIrgJ7cz0C7M7PDmy14R3iJvm3WOnnL+5Nb+qh+cli3vA0p+\r\n" \
"rvSNb3I8QzvAP+u431yqqcau8vzY7qN7Q/aGNnwU4M309z/+3ri0ivCRlv79Q2R+\r\n" \
"/czSAaF9ffgZGclCKxO/WIu6pKJmBHaIkU4MiRTOok3JMrO66BQavHHxW/BBC5gA\r\n" \
"CiIDEOUMsfnNkjcZ7Tvx5Dq2+UUTJnWvu6rvP3t3O9LEApE9GQDTF1w52z97GA1F\r\n" \
"zZOFli9d31kWTz9RvdVFGD/tSo7oBmF0Ixa1DVBzJ0RHfxBdiSprhTEUxOipakyA\r\n" \
"vGp4z7h/jnZymQyd/teRCBaho1+V\r\n" \
"-----END CERTIFICATE-----\r\n"
#endif
/* 涂鸦自签证书 */
#ifndef TUYA_SIGN
#define TUYA_SIGN \
"-----BEGIN CERTIFICATE-----\r\n" \
"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\r\n" \
"-----END CERTIFICATE-----\r\n"
#endif
const char *ali_ca_cert = \
GLOBAL_SIGN \
TUYA_SIGN
;
填入自己的设备三元组信息
在demos>mqtt_basic_demo.c中填入自己设备的三元组信息
替换域名,选择端口
修改demos>mqtt_basic_demo.c中的 mqtt_host 为相应的域名。
修改demos>mqtt_basic_demo.c中的 port 为要连接的端口(使用自签证书时,选择 8883, 使用 tcp 连接 使用 1883)。
编译运行
在项目根目录下执行make 命令即可编译(如果缺少编译依赖的组件需要自行安装)。
编译完成后,输入./output/mqtt-basic-demo,即可运行 demo 程序,可以在控制台中看到 MQTT 连接成功
该文章对您有帮助吗?