C SDK

SDK获取

下载地址:C SDK

快速接入

环境要求

操作系统:linux

交叉编译工具:gcc-5.40及以上

C SDK目录结构

| - certs(私钥,设备证书和根CA)
| - external_libs(外部库 - jsmn,mbedTLS)
| - include(IoT设备SDK的头文件)
| - src(IoT设备SDK的源文件)
| - platform(平台特定文件)
| - samples(包含用于在mbedTLS上构建的makefile的样本)

C SDK文件夹及其内容的说明

certs:该目录最初是空的,需要包含私钥,客户端证书和根CA.客户端证书和私钥可以从IoT控制台下载。

external_libs:mbedTLS和jsmn源文件。jsmn源文件始终存在。只有在下载SDK的tarball版本时才会包含mbedTLS源文件。

include :该目录包含使用SDK的应用程序需要包含的头文件。

src :该目录包含SDK源代码,包括MQTT库,设备影子代码和实用程序。

platform:定时器,TLS和线程层的平台特定文件。包含使用mbedTLS和pthread的Linux的参考实现。

samples:该目录包含示例应用程序以及它们的makefile。这些示例包括发布和订阅IoT服务的简单MQTT示例以及显示设备影子功能示例用法的设备影子示例。

C SDK参数配置

  • 设置MQTT地址和端口,修改inspur_iot_config.h头文件

#define INSPUR_IOT_PROJECT_HOST "100.100.100.100"

#define INSPUR_IOT_PROJECT_PORT 30001

  • 设置证书名称

#define INSPUR_IOT_ROOT_CA_FILENAME "IoTRootCA.crt"

#define INSPUR_IOT_CERTIFICATE_FILENAME "principal-hncnocro.crt"

#define INSPUR_IOT_PRIVATE_KEY_FILENAME "principal-hncnocro.key"

  • 设置设备类型:网关:gateway 设备:device

#define INSPUR_IOT_DEVICE_TYPE "device"

  • 设置项目ID

#define INSPUR_IOT_PROJECT_CODE "iotsbyjkiau"

  • 设置产品ID

#define INSPUR_IOT_PRODUCT_CODE "hncnocro"

  • 设置设备名称

#define INSPUR_IOT_DEVICE_CODE "devicetest"

  • 设置证书路径,修改shadow_console_echo.c头文件

char certDirectory[PATH_MAX + 1] = "../../../certs";

编译运行

  • 编译生成可执行文件shadow_console_echo
cd ./sdk_c/samples/linux/shadow_sample_console_echo
make clean
make
  • 运行示例
./shadow_console_echo

C API接口

  1. 日志接口
序号 函数名 说明
1 IOT_ERROR 打印ERROR级别日志
2 IOT_WARN 打印WARNING级别日志
3 IOT_DEBUG 打印DEBUG级别日志
4 IOT_INFO 打印INFO级别日志
  1. MQTT接口
序号 函数名 说明
1 inspur_iot_mqtt_set_connect_params 设置MQTT连接参数
2 inspur_iot_mqtt_is_client_connected 判断MQTT客户端连接状态
3 inspur_iot_mqtt_get_client_state 获取客户端状态
4 inspur_iot_mqtt_init 初始化MQTT客户端
5 inspur_iot_mqtt_connect MQTT客户端连接
6 inspur_iot_mqtt_publish 发布 MQTT 消息
7 inspur_iot_mqtt_subscribe 订阅 MQTT消息
8 inspur_iot_mqtt_unsubscribe 取消订阅已订阅的 MQTT 主题
9 inspur_iot_mqtt_disconnect 断开 MQTT连接
10 inspur_iot_mqtt_yield 在当前线程为底层 MQTT 客户端让出一定 CPU 执行时间
  1. 设备影子接口
序号 函数名 说明
1 inspur_iot_shadow_init 初始化设备影子
2 inspur_iot_shadow_connect 连接到设备影子服务端
3 inspur_iot_shadow_yield 在当前线程为底层 Shadow 客户端让出一定 CPU 执行时间
4 inspur_iot_shadow_disconnect 断开影子服务连接
5 inspur_iot_shadow_update 更新影子数据
6 inspur_iot_shadow_get 获取影子数据
7 inspur_iot_shadow_online 子设备上线
8 inspur_iot_shadow_offline 子设备下线
  1. 设备接口
序号 函数名 说明
1 inspur_iot_shadow_topoGet 获取拓扑结构
2 inspur_iot_shadow_dsltemplateGet 获取dsl物模型
  1. 通用接口
序号 函数名 说明
1 inspur_iot_custom_subscribe_control 注册control接口
2 inspur_iot_custom_event 用户自定义消息发布

C SDK代码详解

设备连接

  1. 设备初始化:用于设备初始化相关参数,包括目标IP、端口和证书信息等。

    参数:

    ​ pclient:mqtt client结构体变量指针

    ​ pParams:初始参数结构体变量指针

    返回值:

    ​ IoT_Error_t:枚举类型,返回操作结果

    注:pParams结构体成员变量包括:

    ​ pHost:mqtt地址

    ​ port:mqtt端口号

    ​ pRootCA:根证书

    ​ pClientCRT:crt证书

    ​ pClientKey:key证书

    ​ enableAutoReconnect:自动重连

    ​ disconnectHandler:连接中断回调函数

IoT_Error_t inspur_iot_shadow_init(INSPUR_IoT_Client *pClient, ShadowInitParameters_t *pParams) {
    IoT_Client_Init_Params mqttInitParams;
    IoT_Error_t rc;

    FUNC_ENTRY;
    if(NULL == pClient || NULL == pParams) {
        FUNC_EXIT_RC(NULL_VALUE_ERROR);
    }
    mqttInitParams.enableAutoReconnect = pParams->enableAutoReconnect;
    mqttInitParams.pHostURL = pParams->pHost;
    mqttInitParams.port = pParams->port;
    mqttInitParams.pRootCALocation = pParams->pRootCA;
    mqttInitParams.pDeviceCertLocation = pParams->pClientCRT;
    mqttInitParams.pDevicePrivateKeyLocation = pParams->pClientKey;
    mqttInitParams.mqttPacketTimeout_ms = 5000;
    mqttInitParams.mqttCommandTimeout_ms = 20000;
    mqttInitParams.tlsHandshakeTimeout_ms = 5000;
    mqttInitParams.isSSLHostnameVerify = true;
    mqttInitParams.disconnectHandler = pParams->disconnectHandler;
    rc = inspur_iot_mqtt_init(pClient, &mqttInitParams);
    if(SUCCESS != rc) {
        FUNC_EXIT_RC(rc);
    }
    resetClientTokenSequenceNum();
    inspur_iot_shadow_reset_last_received_version();
    initDeltaTokens();

    FUNC_EXIT_RC(SUCCESS);
}
  1. 设备连接:配置client ID,进行mqtt连接。

    参数:

    ​ pclient:mqtt client结构体变量指针

    ​ pParams:连接参数结构体变量指针

    返回值:

    ​ IoT_Error_t:枚举类型,返回操作结果

IoT_Error_t inspur_iot_shadow_connect(INSPUR_IoT_Client *pClient, ShadowConnectParameters_t *pParams) {
    IoT_Error_t rc = SUCCESS;
    uint16_t deleteAcceptedTopicLen;
    IoT_Client_Connect_Params ConnectParams = iotClientConnectParamsDefault;

    FUNC_ENTRY;
    if(NULL == pClient || NULL == pParams || NULL == pParams->pMqttClientId) {
        FUNC_EXIT_RC(NULL_VALUE_ERROR);
    }

    snprintf(myThingName, MAX_SIZE_OF_THING_NAME, "%s", pParams->pMyThingName);
    snprintf(mqttClientID, MAX_SIZE_OF_UNIQUE_CLIENT_ID_BYTES, "%s", pParams->pMqttClientId);
    ConnectParams.isWillMsgPresent = false;
    ConnectParams.pClientID = pParams->pMqttClientId;
    ConnectParams.clientIDLen = pParams->mqttClientIdLen;

    rc = inspur_iot_mqtt_connect(pClient, &ConnectParams);
    if(SUCCESS != rc) {
        FUNC_EXIT_RC(rc);
    }
    IOT_INFO("inspur_iot_mqtt_connect finish");
    initializeRecords(pClient);
    if(NULL != pParams->deleteActionHandler) {
        snprintf(deleteAcceptedTopic, MAX_SHADOW_TOPIC_LENGTH_BYTES, "iot/things/%s/shadow/delete/accepted", myThingName);
        deleteAcceptedTopicLen = (uint16_t) strlen(deleteAcceptedTopic);
        rc = inspur_iot_mqtt_subscribe(pClient, deleteAcceptedTopic, deleteAcceptedTopicLen, QOS1,pParams->deleteActionHandler, (void *) myThingName);}

    FUNC_EXIT_RC(rc);
}

设备影子

  1. 更新影子:更新设备影子数据,主要包括设备上报的自定义参数及指标

    参数:

    ​ pclient:mqtt client结构体变量指针

    ​ pThingName:设备名指针

    ​ pmodel:设备模型指针

    ​ pJsonString:设备上报的数据,json字符串指针

    ​ callback:回调函数

    ​ pContextData:回调函数上下文信息

    ​ timeout_seconds:设备上报超时时间

    ​ isPersistentSubscribe:是否持久订阅,bool型

    返回值:

    ​ IoT_Error_t:枚举类型,返回操作结果

IoT_Error_t inspur_iot_shadow_update(INSPUR_IoT_Client *pClient, const char *pThingName, const char *pmodel, char *pJsonString, fpActionCallback_t callback, void *pContextData, uint8_t timeout_seconds, bool isPersistentSubscribe) {
    IoT_Error_t rc;

    if(NULL == pClient) {
        FUNC_EXIT_RC(NULL_VALUE_ERROR);
    }

    if(!inspur_iot_mqtt_is_client_connected(pClient)) {
        FUNC_EXIT_RC(MQTT_CONNECTION_ERROR);
    }

    rc = inspur_iot_shadow_internal_action(pThingName, pmodel, SHADOW_UPDATE, pJsonString, callback, pContextData, timeout_seconds, isPersistentSubscribe);

    FUNC_EXIT_RC(rc);
}
  1. 获取设备影子:用于获取当前影子状态。

    参数:

    ​ pclient:mqtt client结构体变量指针

    ​ pThingName:设备名指针

    ​ pmodel:设备模型指针

    ​ pJsonString:设备上报的数据,json字符串指针

    ​ callback:回调函数

    ​ pContextData:回调函数上下文信息

    ​ timeout_seconds:设备上报超时时间

    ​ isPersistentSubscribe:是否持久订阅,bool型

    返回值:

    ​ IoT_Error_t:枚举类型,返回操作结果

IoT_Error_t inspur_iot_shadow_get(INSPUR_IoT_Client *pClient, const char *pThingName, const char *pmodel, fpActionCallback_t callback, void *pContextData, uint8_t timeout_seconds, bool isPersistentSubscribe) {
    char getRequestJsonBuf[MAX_SIZE_CLIENT_TOKEN_CLIENT_SEQUENCE];
    IoT_Error_t rc;

    FUNC_ENTRY;
    if(NULL == pClient) {
        FUNC_EXIT_RC(NULL_VALUE_ERROR);
    }

    if(!inspur_iot_mqtt_is_client_connected(pClient)) {
        FUNC_EXIT_RC(MQTT_CONNECTION_ERROR);
    }

    inspur_iot_shadow_internal_get_request_json(getRequestJsonBuf);
    rc = inspur_iot_shadow_internal_action(pThingName, pmodel, SHADOW_GET, getRequestJsonBuf, callback, pContextData, timeout_seconds, isPersistentSubscribe);
    FUNC_EXIT_RC(rc);
}
  1. 删除影子:清空当前影子数据。

    参数:

    ​ pclient:mqtt client结构体变量指针

    ​ pThingName:设备名指针

    ​ pmodel:设备模型指针

    ​ callback:回调函数

    ​ pContextData:回调函数上下文信息

    ​ timeout_seconds:删除超时时间

    ​ isPersistentSubscribe:是否持久订阅,bool型

    返回值:

    ​ IoT_Error_t:枚举类型,返回操作结果

IoT_Error_t inspur_iot_shadow_delete(INSPUR_IoT_Client *pClient, const char *pThingName, const char *pmodel, fpActionCallback_t callback, void *pContextData, uint8_t timeout_seconds, bool isPersistentSubscribe) {
    char deleteRequestJsonBuf[MAX_SIZE_CLIENT_TOKEN_CLIENT_SEQUENCE];
    IoT_Error_t rc;

    FUNC_ENTRY;

    if(NULL == pClient) {
        FUNC_EXIT_RC(NULL_VALUE_ERROR);
    }

    if(!inspur_iot_mqtt_is_client_connected(pClient)) {
        FUNC_EXIT_RC(MQTT_CONNECTION_ERROR);
    }

    inspur_iot_shadow_internal_delete_request_json(deleteRequestJsonBuf);
    rc = inspur_iot_shadow_internal_action(pThingName, pmodel, SHADOW_DELETE, deleteRequestJsonBuf, callback, pContextData, timeout_seconds, isPersistentSubscribe);

    FUNC_EXIT_RC(rc);
}

发布订阅

  1. mqtt订阅主题:用户可自行调用该函数订阅自定义主题。

    参数:

    ​ pclient:mqtt client结构体变量指针

    ​ pTopicName:订阅的主题指针

    ​ topicNameLen:订阅主题长度变量

    ​ pApplicationHandler:回调函数指针

    返回值:

    ​ IoT_Error_t:枚举类型,返回操作结果

IoT_Error_t inspur_iot_mqtt_subscribe(INSPUR_IoT_Client *pClient, const char *pTopicName, uint16_t topicNameLen, QoS qos, pApplicationHandler_t pApplicationHandler, void *pApplicationHandlerData) {
    ClientState clientState;
    IoT_Error_t rc, subRc;

    FUNC_ENTRY;

    if(NULL == pClient || NULL == pTopicName || NULL == pApplicationHandler) {
        FUNC_EXIT_RC(NULL_VALUE_ERROR);
    }

    if(!inspur_iot_mqtt_is_client_connected(pClient)) {
        FUNC_EXIT_RC(NETWORK_DISCONNECTED_ERROR);
    }

    clientState = inspur_iot_mqtt_get_client_state(pClient);
    if(CLIENT_STATE_CONNECTED_IDLE != clientState && CLIENT_STATE_CONNECTED_WAIT_FOR_CB_RETURN != clientState) {
        FUNC_EXIT_RC(MQTT_CLIENT_NOT_IDLE_ERROR);
    }

    rc = inspur_iot_mqtt_set_client_state(pClient, clientState, CLIENT_STATE_CONNECTED_SUBSCRIBE_IN_PROGRESS);
    if(SUCCESS != rc) {
        FUNC_EXIT_RC(rc);
    }

    IOT_DEBUG("Sub Topic: %s", pTopicName);
    subRc = _inspur_iot_mqtt_internal_subscribe(pClient, pTopicName, topicNameLen, qos, pApplicationHandler, pApplicationHandlerData);

    rc = inspur_iot_mqtt_set_client_state(pClient, CLIENT_STATE_CONNECTED_SUBSCRIBE_IN_PROGRESS, clientState);
    if(SUCCESS == subRc && SUCCESS != rc) {
        subRc = rc;
    }

    FUNC_EXIT_RC(subRc);
}
  1. mqtt发布主题:用户可自行调用该函数发布自定义主题。

    参数:

    ​ pclient:mqtt client结构体变量指针

    ​ pTopicName:发布主题指针

    ​ topicNameLen:发布主题长度变量

    ​ pParams:发布消息结构体指针

    返回值:

    ​ IoT_Error_t:枚举类型,返回操作结果

IoT_Error_t inspur_iot_mqtt_publish(INSPUR_IoT_Client *pClient, const char *pTopicName, uint16_t topicNameLen, IoT_Publish_Message_Params *pParams) {
    IoT_Error_t rc, pubRc;
    ClientState clientState;

    FUNC_ENTRY;

    if(NULL == pClient || NULL == pTopicName || 0 == topicNameLen || NULL == pParams){
        FUNC_EXIT_RC(NULL_VALUE_ERROR);
    }

    if(!inspur_iot_mqtt_is_client_connected(pClient)) {
        FUNC_EXIT_RC(NETWORK_DISCONNECTED_ERROR);
    }

    clientState = inspur_iot_mqtt_get_client_state(pClient);
    if(CLIENT_STATE_CONNECTED_IDLE != clientState && CLIENT_STATE_CONNECTED_WAIT_FOR_CB_RETURN != clientState) {
        FUNC_EXIT_RC(MQTT_CLIENT_NOT_IDLE_ERROR);
    }

    rc = inspur_iot_mqtt_set_client_state(pClient, clientState, CLIENT_STATE_CONNECTED_PUBLISH_IN_PROGRESS);
    if(SUCCESS != rc) {
        FUNC_EXIT_RC(rc);
    }

    pubRc = _inspur_iot_mqtt_internal_publish(pClient, pTopicName, topicNameLen, pParams);

    rc = inspur_iot_mqtt_set_client_state(pClient, CLIENT_STATE_CONNECTED_PUBLISH_IN_PROGRESS, clientState);
    if(SUCCESS == pubRc && SUCCESS != rc) {
        pubRc = rc;
    }

    FUNC_EXIT_RC(pubRc);
}

拓扑关系

获取拓扑结构:由网关发起,用于获取该网关下绑定的子设备列表。

参数:

​ pclient:mqtt client结构体变量指针

​ callback:回调函数指针

返回值:

​ IoT_Error_t:枚举类型,返回操作结果

IoT_Error_t inspur_iot_shadow_topoGet(INSPUR_IoT_Client *pClient, void *callback){
    IoT_Error_t rc = SUCCESS;

    rc = inspur_iot_shadow_subscribe_topoReply(pClient, callback);

    if (strcmp(INSPUR_IOT_DEVICE_TYPE, INSPUR_IOT_TYPE_GATEWAY) == 0){    //网关
        int i;
        char topoPubTopic[MAX_SHADOW_TOPIC_LENGTH_BYTES] = {0};
        snprintf(topoPubTopic, sizeof(topoPubTopic), "iot/%s/%s/%s/thing/topo/get", INSPUR_IOT_PROJECT_CODE, INSPUR_IOT_PRODUCT_CODE, INSPUR_IOT_DEVICE_CODE);
        IOT_INFO("publish topoGet topic: %s", topoPubTopic);
        cJSON *json_topoGet = cJSON_CreateObject();
        cJSON_AddNumberToObject(json_topoGet, "id", 1);
        cJSON_AddStringToObject(json_topoGet, "version", "1.0");
        cJSON_AddStringToObject(json_topoGet, "params", "");
        cJSON_AddStringToObject(json_topoGet, "method", "");
        rc = inspur_iot_shadow_publishToTopic(pClient, topoPubTopic, cJSON_Print(json_topoGet), QOS0);
        if(SUCCESS != rc) {
            IOT_ERROR("publish To topoGet Topic Error  %d", rc);
        }
        IOT_DEBUG("topoGet payload: %s", cJSON_Print(json_topoGet));
        cJSON_Delete(json_topoGet);
    }
    return rc;
}

物模型

获取物模型:用于获取设备模型数据。

参数:

​ pclient:mqtt client结构体变量指针

​ thingName:设备名称指针

​ callback:回调函数指针

返回值:

​ IoT_Error_t:枚举类型,返回操作结果

IoT_Error_t inspur_iot_shadow_dsltemplateGet(INSPUR_IoT_Client *pClient, char* thingName, void *clalback){
    IoT_Error_t rc = SUCCESS;
    int i;
    char dsltemplatePubTopic[MAX_SHADOW_TOPIC_LENGTH_BYTES] = {0};

    inspur_iot_shadow_subscribe_dsltemplateReply(pClient, thingName, clalback);

    snprintf(dsltemplatePubTopic, sizeof(dsltemplatePubTopic), "iot/%s/%s/%s/thing/dsltemplate/get", INSPUR_IOT_PROJECT_CODE, INSPUR_IOT_PRODUCT_CODE, thingName);
    IOT_INFO("publish dsltemplateGet topic: %s\n", dsltemplatePubTopic);
    cJSON *json_dsltemplateGet = cJSON_CreateObject();
    cJSON_AddNumberToObject(json_dsltemplateGet, "id", 1);
    cJSON_AddStringToObject(json_dsltemplateGet, "version", "1.0");
    cJSON_AddStringToObject(json_dsltemplateGet, "params", "");
    cJSON_AddStringToObject(json_dsltemplateGet, "method", "thing.dsltemplate.get");

    rc = inspur_iot_shadow_publishToTopic(pClient, dsltemplatePubTopic, cJSON_Print(json_dsltemplateGet), QOS0);
    if(SUCCESS != rc) {
        IOT_ERROR("publish To dsltemplateGet Topic Error  %d", rc);
    }
    IOT_DEBUG("dsltemplateGet payload: %s", cJSON_Print(json_dsltemplateGet));
    cJSON_Delete(json_dsltemplateGet);

    return rc;
}

Python SDK

下载

下载地址:Python SDK

环境要求

操作系统:Windows或linux

Python版本:Python 2.7+ or Python 3.3+

库:使用Python可执行文件编译的OpenSSL版本1.0.1+(TLS版本1.2)

Python API接口

  1. MQTT接口 - INSPURIoTMQTTClient
序号 方法名 说明
1 connect MQTT 连接
2 disconnect 断开MQTT连接
3 publish 发布 MQTT 消息
4 subscribe 订阅 MQTT 主题
5 unsubscribe 取消订阅MQTT主题
  1. 设备影子客户端 - INSPURIoTMQTTShadowClient
序号 方法名 说明
1 configureEndpoint 配置server地址和端口
2 configureCredentials 配置证书路径
3 configureAutoReconnectBackoffTime 配置自动重连时间
4 configureConnectDisconnectTimeout 配置连接超时时间
5 configureMQTTOperationTimeout 配置操作超时时间
6 connect MQTT 连接
7 disconnect 断开MQTT连接
8 createShadowHandlerWithName 创建设备影子
9 getMQTTConnection 获取MQTT连接句柄
  1. 设备影子接口 - deviceShadow
序号 方法名 说明
1 shadowUpdate 设备影子更新
2 shadowGet 获取影子数据
3 shadowDelete 删除影子
  1. 网关接口 - Gateway
序号 方法名 说明
1 getTopo 获取拓扑结构
2 devicesOnline 发布子设备上线消息
3 deviceOffline 发布子设备下线消息
  1. 设备接口 - Device
序号 方法名 说明
1 listenOnDelta 订阅delta主题
2 listenOnOnline 订阅online_replay主题
3 getToken 获取发布消息的token
4 JsonString json报文打包
5 dsltemplateSubscribe 订阅dsl物模型主题
6 dsltemplateGet 获取物模型请求
  1. 子设备接口 - subDevice
序号 方法名 说明
1 setAlive 设置是否激活上报
  1. 通用接口 - Custom
序号 方法名 说明
1 subControl 订阅control主题
2 pubEvent 发布自定义消息

Python SDK运行示例

步骤

  • 创建一个目录来保存您的应用程序,例如(/home/inspur_iot/my_app)

  • 切换到此新目录

  • 将SDK下载到设备并放入新创建的目录中

  • 解压SDK(tar -xvf

  • 下载证书,将证书解压并放入python_sdk/certs路径下

  • 编译运行

    • 切换至python_sdk路径

    • 执行python setup.py install

    • 切换至demo路径:cd ./samples/ThingShadowEcho

    • 修改配置文件user.conf如下,对应参数值在"设备 - 配置信息”中获取

      [param]
      projecthost = 10.110.25.114
      projectport = 30576
      devicetype = device
      projectcode = iotol9592xu
      productcode = z49j2ntm
      devicecode = deviceForFee
      rootca = certs/IoTRootCA.crt
      cert = certs/iotol9592xu-z49j2ntm-deviceForFee.crt
      key = certs/iotol9592xu-z49j2ntm-deviceForFee.key
      
    • 启动程序:python ThingShadowEcho.py

Java SDK

下载

下载地址:Java SDK

环境要求

操作系统:Windows或linux

JDK版本: JDK 1.8.0及以上

Java SDK目录结构

sdk文件路径位于:src\main\java\com\inspur\iot\client

| - core
| - mqtt (MQTT相关类)
| - sample( 示例demo)
| - shadow(shadow相关类)
| - util (公用工具类)

Java SDK文件夹及其内容的说明

core:该目录包含iot异常定义、iot回调接口等文件。

mqtt:MQTT相关类,包含MQTT连接和监听等。

sample :示例dome,包括发布和订阅IoT服务的简单MQTT示例以及显示设备影子功能示例用法的设备影子示例等。

shadow :shadow相关类,包含shadow规范格式代码、设备命令的监听和管理等。

util:SDK中使用到的工具类

Java SDK参数配置

参数配置文件位于src\main\resources\com\inspur\iot\client\sample\sampleUtil目录下的iot-sdk-device.properties(设备)iot-sdk-gateway.properties(网关)

  • 设置客户端接入点(即MQTT访问地址)

ProjectAddr=XXX

  • 指定根CA证书路径

IoTRootCaCrt=XXX

  • 指定客户端证书路径

IotClientDevCrt=XXX

  • 指定客户端私钥

IotClientDevKey=XXX

  • 设置项目名称

ProjectCode=XXX

  • 设置产品名称

ProductCode=XXX

  • 设置设备名称

DeviceCode=XXX

Java API接口

  1. MQTT接口 - IotMqttClient
序号 函数名 说明
1 createClient 创建MQTT客户端
2 getIotEndpointCode 获取EndpointCode
3 getIotModelCode 获取ModelCode
4 getIotDeviceCode 获取DeviceCode
5 setIotEndpointCode 设置EndpointCode
6 setIotModelCode 设置ModelCode
7 setIotDeviceCode 设置DeviceCode
8 attach 将影子设备附加到客户端
9 connect MQTT连接
10 disconnect 断开 MQTT连接
11 subscribe 订阅 MQTT 主题
12 subscribe subscribe(IotTopic)
13 publish 发布 MQTT 消息
  1. 设备影子接口 - IotDevice
序号 函数名 说明
1 getReportInterval 获取影子更新周期
2 setReportInterval(long) 设置影子更新周期
3 get 获取设备影子文档
4 update 更新设备影子文档
5 delete 删除设备影子文档

Java SDK运行示例

1.将Java SDK导入Java运行环境

2.编辑SDK参数配置文件,详见 Java SDK 参数配置

3.运行示例:

设备示例位于src\main\java\com\inspur\iot\client\sample\device\MyDeviceMain.java

网关示例位于src\main\java\com\inspur\iot\client\sample\device\MyGatewayMain.java

MQTT Client SDK

物接入与Paho(即MQTT Client SDK)完全兼容,如果开发者需要开发MQTT客户端,可到Paho官方网站下载SDK并获取帮助文档,详情如下:

Client MQTT 3.1 MQTT 3.1.1 LWT SSL/TLS Automatic Reconnect Offline Buffering Message Persistence WebSocket Support Standard MQTT Support Blocking API Non-Blocking API High Availability
Java
Python
JavaScript
GoLang
C
.Net (C#)
Android Service
Embedded C/C++