C 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";

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运行示例

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

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目录结构

| - core
| - mqtt (MQTT相关类)
| - sample( 示例dome)
| - 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-samples.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\shadowEcho\ShadowEchoSample.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++