基于HaaS 100搭建智能家居应用

本文介绍如何基于HaaS平台快速接入阿里云IoT,搭建智能生活应用场景。

步骤一:设备端环境搭建

参考HaaS快速开始。

步骤二:云端配置

  1. 登录生活物联网平台

    未注册阿里云账户的用户,请先完成账户注册。

  2. 创建项目。

    项目概览页面单击创建新项目,输入项目名称,例如HasS生活,类型选择自有品牌项目,单击确定

  3. 创建产品。

    在打开项目页面中,单击创建新产品。参数说明如下:

    分类

    参数

    说明

    产品信息

    产品名称

    用户自定义。

    所属品类

    生活物联网平台提供覆盖行业内大部分的产品种类的物模型,本文使用HaaS开发板模拟智能灯,此处选择电工照明 > 灯

    节点类型

    节点类型

    选择设备

    是否接入网关

    选择

    联网与数据

    连网方式

    选择Wi-Fi

    数据格式

    选择ICA标准数据格式(Alink JSON)

    用户也可根据需要选择透传/自定义模式,即对于不适合直接构造JSON数据与物联网平台通信,可将原数据透传到物联网平台。然后在物联网平台设置脚本,将二进制协议转换成ICA标准协议。

    使用ID²认证

    选择

    设备端默认不支持ID²认证。

  4. 完善产品信息,设置人机交互页面。

    1. 功能定义页面,单击下一步,进入人机交互页面。

    2. 勾选使用公版App控制产品

    3. 左侧导航树中显示为黄色惊叹号的项目,按照提示进行配置,对于有默认数值的按默认确认即可。

    4. 配网引导,在页面右上角单击我要自定义配网,并单击确认默认配网方式选择一键配网image

    5. 多语言管理,对于未设置的数值可以都填一个默认值,如0。

  5. 完善产品信息,设置设备调试页面。

    1. 人机交互页面,单击下一步,进入设备调试页面。

    2. 单击选择模组,单击左上角模组,进入模组页面。image

    3. 模组选择其他类型,单击确定image

    4. 测试设备区域,单击新增测试设备,输入DeviceName,DeviceName为用户自定义,拷贝设备证书ProductKey、DeviceName、DeviceSecret并关闭页面。

    5. 在页面右侧,单击ProductSecret(产品密钥)后面的显示,并拷贝ProductSecret,用于配置设备端配网。

  6. 完善产品信息,设置批量投产页面。

    1. 设备调试页面,单击下一步,进入批量投产页面。

    2. 发布产品步骤,勾选协议,单击开发完成

    3. 安装手机端APP,如图扫描二维码下载云智能APP

    4. 扫描页面中二维码下载云智能手机App。

  7. 至此,云端配置完成。

步骤三:设备端配置

  1. 修改设备端端上代码application/example/linkkit_demo/linkkit_example_solo.c 中设备证书信息,设备证书为上文中拷贝的ProductKey、DeviceName、DeviceSecret和ProductSecret。image

  2. 修改属性设置回调函数,可在此函数中加入自己的代码,如根据云端属性控制IO操作等。image

    更多教程可参考物模型编程

  3. 编译。

    aos make linkkit_demo@haas100 -c config
    aos make 
  4. 步骤二:云端配置的指导方式烧入固件。

步骤四:端云联调

  1. 配网与绑定

    1. 设备配网。

      通过命令行配网,串口输入如下指令可完成配网:

      1. 输入"netmgr -t wifi -b 1" 打开连网成功后会自动保存AP信息的功能。
      2. 输入"netmgr -t wifi -c {ssid} {password}" 连接名为ssid的路由器AP。
      3. 连网成功后,固件会自动保存当前的AP信息。
      4. 重启后,固件会自动会连上次连接成功并保存的AP。
      5. 如需切换新的AP连接,请重新输入命令"netmgr -t wifi -b 1"和"netmgr -t wifi -c {ssid} {password}",新AP连接成功后自动覆盖旧的AP信息并保存。
      注意: {ssid} {password}替换为自己的路由器配网信息,如netmgr -t wifi -c my_wifi 12345678。

      关键日志:

      ssid=aos_test_01
      ip_address=192.168.18.109
      address= 0:80:3d:64: 8:77
      wpa_state=COMPLETED

      获取到IP地址后程序会立即进行linkkit连云,连上云关键日志:

      [Jan 01 00:00:11.613]<I>HAL_TLS  ok
      [Jan 01 00:00:11.613]<I>HAL_TLS   . Setting up the SSL/TLS structure...
      [Jan 01 00:00:11.613]<I>HAL_TLS  ok
      [Jan 01 00:00:11.614]<I>HAL_TLS Performing the SSL/TLS handshake...
      [Jan 01 00:00:11.731]<I>HAL_TLS  ok
      [Jan 01 00:00:11.731]<I>HAL_TLS   . Verifying peer X.509 certificate..
      [Jan 01 00:00:11.731]<I>HAL_TLS certificate verification result: 0x00
      [Jan 01 00:00:11.731]<I>MQTT connect params: MQTTVersion=4, clientID=a1Oi7Q7h3LV.haas_01|timestamp=2524608000000,_v=sdk-c-3.0.1,securemode=2,signmethoV
      [Jan 01 00:00:11.772]<I>MQTT mqtt connect success!

      至此设备已经完成配网并使用前文中自己创建的设备证书连接到生活物联网平台。

      说明

      HaaS100开发板App配网功能还在开发中,请持续关注代码更新。

    2. 设备与云智能App绑定。

      打开安装的云智能App,单击右上角红色标注"+" 按钮,开始设备查找。约数秒钟后找到设备,单击添加,至此绑定完成。

      说明

      如果找不到设备,请检查创建的设备是否处于在线状态以及云端配置是否已完成。

  2. 控制测试

    设备绑定完成后,单击打开页面中不同的模块按钮进行命令下发。同时关注设备端日志打印。

    典型日志:

    [Jan 01 00:02:12.197]<I>MQTT Downstream Topic: '/sys/a1Oi7Q7h3LV/haas_01/thing/service/property/set'
    [Jan 01 00:02:12.197]<I>MQTT Downstream Payload:
    
    < {
    <     "method":"thing.service.property.set", 
    <     "id":"575303451", 
    <     "params":{ 
    <         "HSVColor":{ 
    <             "Saturation":84, 
    <             "Value":5, 
    <             "Hue":232 
    <         }
    <     },
    <     "version":"1.0.0" 
    < }
    
    [Jan 01 00:02:12.198]<I>DM thing/service/property/set
    [Jan 01 00:02:12.198]<I>DM Send URI: /sys/a1Oi7Q7h3LV/haas_01/thing/service/property/set_reply, Payload: {"id":"575303451","code":200,"data":{}}
    [Jan 01 00:02:12.200]<I>MQTT Upstream Topic: '/sys/a1Oi7Q7h3LV/haas_01/thing/service/property/set_reply'
    [Jan 01 00:02:12.200]<I>MQTT Upstream Payload:
    
    > {
    >     "id":"575303451", 
    >     "code":200, 
    >     "data":{ 
    >     }
    > }