文档中心
DOCUMENT CENTER
TCP/UDP 接入

接入介绍

针对一些带网关型或无法直接连接网络的设备,格物云定义了一套 Givelink 协议。

设备使用透传型通讯模块或网关,将基于 Givelink 协议的数据包,通过 TCP/UDP 与格物云进行交互。

接入方案

#include "givelink.h"

char product_key[] = "you_product_key";
char device_token[] = "you_device_token";

givelink_init(product_key, device_token);
givelink_t * data = givelink_new();

uint16_t id = 0;

接收数据包

通过 givelink_recv 来接收来自 uart/tcp/udp/bluetooth 的数据;

uint8_t payload[200];
uint16_t len = 0;

while(true) {
    // read from uart or tcp or udp or bluetooth or others
    uint8_t c = some_read();
    if (givelink_recv(payload, &len, c)) {
        break;
    }
}

处理接收到的数据包

当接收到数据包后,使用 givelink_from_binary 进行处理。

givelink_from_binary(data, payload, len);

注册设备

SDK 需要注册来获取地址码

发送 AUTHREQ 数据包,成功后接收到 AUTHRES 数据包,失败接收到 ERROR 数据包。

if (!givelink_authed()) {
    givelink_reset(data);
    givelink_set_type(data, AUTHREQ);
    givelink_to_binary(data, payload);
    // write to uart or tcp or udp or bluetooth or others
    some_write(payload, givelink_get_length(data));

    while(true) {
        // read from uart or tcp or udp or bluetooth or others
        uint8_t c = some_read();
        if (givelink_recv(payload, &len, c)) {
            givelink_from_binary(data, payload, len);
            if (data -> type == AUTHRES) {
                uint8_t addr = data -> data;
                break;
            }
            if (data -> type == ERROR) {
                // do error
                break;
            }

        }
    }
}

处理请求数据包

当接收到 REQUEST 数据包, 必须反馈 RESPONSE 数据包

if (data -> type == REQUEST) {
    givelink_reset(data);
    givelink_set_type(data, RESPONSE);
    givelink_set_data(data, "{\"\result": \"OK\"}", 16);
    givelink_to_binary(data, payload);
    // write to uart or tcp or udp or bluetooth or others
    some_write(payload, givelink_get_length(data));
}

发布实时数据

发送 TELEMETRY 数据包,成功后接收到 SUCCESS 数据包,失败接收到 ERROR 数据包。

id ++;
givelink_reset(data);
givelink_set_id(data, id);
givelink_set_type(data, TELEMETRY);
givelink_set_data(data, "{\"temperature\": 20.7}", 21);
givelink_to_binary(data, payload);
// write to uart or tcp or udp or bluetooth or others
some_write(payload, givelink_get_length(data));

发布实时属性

发送 ATTRIBUTE 数据包,成功后接收到 SUCCESS 数据包,失败接收到 ERROR 数据包。

id ++;
givelink_reset(data);
givelink_set_id(data, id);
givelink_set_type(data, ATTRIBUTE);
givelink_set_data(data, "{\"switch_1_state\": true}", 24);
givelink_to_binary(data, payload);
// write to uart or tcp or udp or bluetooth or others
some_write(payload, givelink_get_length(data));

发布心跳包

发送 PING 数据包,成功后接收到 SUCCESS 数据包,失败接收到 ERROR 数据包。

id ++;
givelink_reset(data);
givelink_set_id(data, id);
givelink_set_type(data, PING);
givelink_to_binary(data, payload);
// write to uart or tcp or udp or bluetooth or others
some_write(payload, givelink_get_length(data));
平台介绍
  • 平台概况
    平台概况
    格物云IoT开发者平台面向智能家居、智能家电、健康可穿戴、出行车载等领域, 开放智能硬件接入、智能硬件控制、自动化场景、AI技术、 新零售渠道等优质资源,与合作伙伴一起打造极致的物联网体验。
  • 技术方案
    技术方案
    智能硬件接入
    格物云IoT开发者平台为智能硬件的接入提供两类技术方案:
    方案一:设备直接接入
    设备直连接入,即智能硬件通过嵌入格物云智能模组或集成SDK的方式直接连接到格物云IoT平台。
    方案二:云对云接入
    云对云接入,即开发者自有智能云与格物云IoT平台对接,其智能硬件连接自有智能云后,也间接实现了与格物云IoT平台的接入。
  • 接入流程
    接入流程
    智能硬件接入流程
    Step 1:成为开发者
    开发者需先在格物云IoT开发者平台递交企业开发者申请,已审核通过的企业即成为平台的开发者,可获得平台的开发使用权限。
    Step 2:创建产品
    对于拟接入平台的产品,建议开发者先行规划产品功能和技术方案,并根据产品规划在平台创建产品。成功创建产品过后可获得产品在平台的唯一标识等参数,用于产品开发使用。
    Step 3:研发产品
    完成产品创建后,即可按照开发文档引导进行配置、开发、调试工作。 针对直连接入产品,开发者可视产品功能和性能需要选用对应的格物云智能模组或设备SDK,产品开发内容主要包括固件开发和小螃蟹APP扩展程序开发。 针对云接入产品,产品开发内容主要是在自有智能云上按格物云IoT设备通信标准与自有协议进行适配。
    Step 4:认证产品
    产品在开发过程中仅支持有限数量的格物云账号进行开发和调试使用(即开发测试人员)。若开发者希望产品上线被全部用户所使用,需向平台申请产品上线并提交相关检验用材料。 平台的检验内容主要涉及与平台相关的软件和物料部分,包括平台配置、小螃蟹扩展程序、设备固件等,也会包括整体的用户交互体验;但对于硬件本身的质量、包材质量、与平台无关的软件功能等不在平台的检验范围之内,由开发者自行保证。
    Step 5:发布产品
    对于已通过平台检验的产品,平台会与开发者就产品签订商务协议,并将产品相关配置正式上线。同时,平台会向产品正式授权使用“已接入小螃蟹”商标,该商标代表该产品可以通过小螃蟹APP控制,可用于产品的包装、说明书、电商页面、宣传物料等地方。 在完成产品上线相关事宜后,产品即可在市场上进行销售和推广。
设备接入
  • MQTT 接入
    MQTT 接入介绍
    针对实时行要求高的智能硬件, 格物云IoT平台定义了一套 MQTT 接入的协议, 该协议实现了对设备进行实时请求和反馈, 也包含的实时数据的收集,和属性的反馈。
    MQTT 接入