全部产品
云市场

物模型编程接入LP-无TLS加密

更新时间:2019-05-03 10:21:52

概述

本文讲解如何移植Link Kit SDK到Windows操作系统,在Windows下运行demo程序连接到阿里云物联网平台,本文的示例中将涉及以下功能点:

  • 使用MQTT连接阿里云物联网平台,不使能TLS加密
  • 使用一机一密方式对设备进行认证
  • 属性上报、事件上报
  • 如何实现相关HAL

注:基于Link Kit SDK 3.0.1版本编写

开发环境描述

操作系统版本 Win7
IDE Eclipse IDE for C/C++ Developers,版本: 2019-03 (4.11.0)
包管理工具 MSYS2
Toolchain mingw-w64-x86_64-toolchain

注:若用户未安装Eclipse开发环境,可参考Eclipse开发环境安装了解如何安装Eclipse、MSYS2、MinGW来在Windows环境下编译C程序。

前置文档

在开始实际开发之前请务必阅读以下文档:

Example程序功能描述

示例程序(output\examples\linkkit_example_solo.c)连接到阿里云物联网平台之后,将会每2秒钟上报一次设备的属性,每10次上报一次事件到物联网平台。

云端操作

  • 创建以太网产品

可参见操作示例了解如何创建产品,并获取产品的ProductKey、ProductSecret。


为了快速创建与示例代码功能匹配的产品功能定义,用户可以将示例产品的物模型定义(src\dev_model\examples\model_for_examples.json)导入物联网平台,请参见“导入物模型”了解操作步骤。

  • 创建调试设备

可参见操作示例了解如何创建调试设备,并获取设备的DeviceName、DeviceSecret

设备端开发过程

SDK获取

点击此处获取Link Kit SDK3.0.1代码

SDK配置

因为不同的SDK功能依赖的HAL不一样,为了减少设备开发时对接HAL的数量,开发者只需要选中需要支持的功能即可。

运行SDK根目录下的config.bat,进行SDK功能配置:

请确保以下配置被选中:

  • PLATFORM_HAS_STDINT
  • PLATFORM_HAS_DYNMEM
  • PLATFORM_HAS_OS
  • FEATURE_MQTT_COMM_ENABLED
    • FEATURE_MQTT_DEFAULT_IMPL
    • FEATURE_MQTT_DIRECT
  • FEATURE_DEVICE_MODEL_ENABLED

功能配置之后,选择“Exit”,并进行配置保存

SDK代码抽取

运行SDK根目录下的extract.bat,将选中功能的代码抽取出来,如下图所示:

抽取出来的代码将放置在SDK的output目录下。

Eclipse工程创建与配置

在Eclipse IDE中创建一个Eclipse C工程:

点击Next按钮后,对工程进行命名,设置Toolchains,如下图所示:

点击Finish按钮,完成工程创建后,右键单击工程显示工程菜单:

点击“Import”按钮后跳出下面的“Import”窗口:

在“General”中选择“File System”,然后点击“Next”按钮:

点击上图中的“Browse…”按钮去选择SDK抽取出来的output目录,将output目录下的eng下的所有子目录均选中,如上图所示; output目录下的examples目录只选中linkkit_example_solo.c,如上图右边的橙色框所示。

点击“Finish”按钮后,Eclipse将把相关代码复制到Eclipse的工程下面,如下图所示:

在工程上右键单击显示菜单,并点击“Properties”按钮:

点击“Properties”按钮之后,将会显示如下图所示的窗口:

在窗口左边的树形菜单中选择“C/C++ Build”-> “Settings”,在右边的“Settings”中设置编译时头文件查找目录,将output/eng下的所有目录、output\eng下面的sdk_include.h加入进去,并点击窗口下方的“Apply”按钮保存配置。

继续点击“Settings”窗口中的“Libraries”菜单,把库“wsock32”加入,加入后的显示如下图所示:

然后点击窗口下方的“Apply and Close”结束配置

HAL实现

wrapper.c里面包含SDK运行时需要目标平台进行支持的HAL函数,这些函数需要开发者进行实现

本文提供了wrapper.c参考实现,需要注意的是开发者一定需要将下面的HAL进行修改来返回设备的身份信息:

  • HAL_GetProductKey()
  • HAL_GetProductSecret()
  • HAL_GetDeviceName()
  • HAL_GetDeviceSecret()

编译与调试

设备端

右键单击项目显示菜单,并点击其中的“Build Project”,如下图所示:

如果一切正常,编译完成之后在Eclipse的console中会显示:

然后在Eclipse之中将项目以“Local C/C++ Application”运行,下面是正确运行时的console中的显示:

其中:“mqtt Connect Success”表示MQTT连接云端成功,设备认证已通过

物联网平台端

开发者也可以在物联网平台上查看设备的运行状态,如果设备已正常连接云端,那么云端显示如下图所示:

点击“运行状态”,可以看见设备端上报属性的时间,以及当前counter的数值,如下图所示:

点击TAB“事件管理”,可以看见设备上报事件的时间以及内容,如下图所示

文档参考