## 智能台灯开发样例

### 样例简介

智能台灯设备不仅接收数字管家应用下发的指令来控制台灯的开关及亮度,而且还可以加入到数字管家的日程管理中。通过日程可以设定台灯开关的时间段,使其在特定的时间段内,台灯自动打开或者熄灭,并能自动调节相应时间段台灯的亮度;通过日程管家还可以实现台灯和其他的智能设备联动。

#### 运行效果

当设备应用启动之后,操作效果如下:

 ![运行效果](media/run.gif)

#### 样例原理

 ![原理示意图](./media/principle.png)

如上图所示,智能台灯整体方案原理图可以大致分成:智能台灯设备、数字管家应用、云平台三部分。智能台灯通过MQTT协议连接华为IOT物联网平台,从而实现命令的接收和属性上报。 关于智能设备接入华为云IoT平台的详细细节可以参考 [连接IOT云平台指南](../iot_huawei/README.md);智能设备同数字管家应用之间的设备模型定义可以参考[智能台灯profile定义](../DistShedule_Profile/智能台灯profile定义.md) .

#### 工程版本

+ 系统版本/API版本:OpenHarmony 1.0.1 release
+ IDE版本:DevEco Device Tool Release 3.0.0.401

### 快速上手

#### 准备硬件环境

+ BearPi-HM Nano套件一套

+ 预装HarmonyOS手机一台   

  **注:HarmonyOS是华为基于开源项目OpenHarmony开发的面向多种全场景智能设备的商用版本**

#### 准备开发环境

开发环境安装配置参照文档:[DevEco Device Tool 环境搭建](../南向IDE环境搭建/README.md)

#### 准备工程

本用例采DevEco Device Tool工具进行开发,当配置完开发环境后,我们可以在IDE上进行工程的配置下载。

- 打开DevEco Device Tool,连接远程linux服务器:参考[DevEco Device Tool 环境搭建](../南向IDE环境搭建/README.md)

- 点击左下角DevEco插件图标,然后点击左边框出现的主页,弹出主页界面,主页中选择新建项目,如下图:

  ![main_config](media/main_config.png)

- 配置下载工程

   ![config && download](media/config_download.png)

  如上图所示,填写对应样例工程的名称,选择对应的样例组件和样例工程存放路径后,点击创建即可进行样例工程的下载。下载界面如下:

   ![download](media/download.png)

  当三个进度条都为100%即下载完成。

#### 准备工具链

- 在Projects中,点击Settings按钮,进入cleaner配置界面。

   ![进入工程配置页面](media/config_toolchain1.png)

- 在toolchain页签中,DevEco Device Tool会自动检测依赖的编译工具链是否完备,如果提示部分工具缺失,可点击SetUp按钮,自动安装所需工具链。

- 如果出现安装pip组件失败,可参考[修改Python源的方法](https://gitee.com/link?target=http%3A%2F%2Fdevice.harmonyos.com%2Fcn%2Fdocs%2Fdocumentation%2Fguide%2Fide-set-python-source-0000001227639986)进行修改,完成尝试重新安装。

   ![工具链配置界面](media/config_toolchain2.png)

- 工具链自动安装完成后如下图所示。

   ![工具链配置成功](media/config_toolchain3.png)

#### 编译

样例代码下载完成后,DevEco Device Tool会重新要求连接远程服务器,输入密码连接后会进入对应的代码编辑界面,此时点击左下角DevEco插件图标,选择PROJECT TASKS可以查看到对应的样例工程,点击build选项进行编译,并可在终端查看对应的编译结果。

![build ok](media/build_ok.png)

固件生成在对应工程目录的out/bearpi_hm_nano/smart_lamp/目录下。

![dirm](media/firm.png)

#### 烧录/安装

编译完成后可以通过DevEco Device Tool进行烧录,在烧录前需要做一些烧录的配置:

##### 配置准备

在配置烧录前需要先查看DevEco Device Tool是否可以正常识别串口。

- 点击左边栏"REMOTE DEVELOPMENT",找到 并点击” Local PC “ 选项。

- 查看 Local PC右边图标

  如若图标为![方型图标](media/zhengfang_icon.png),则代表DevEco Device Tool已连接本地,可以正常识别串口。

  如若图标为![箭头图标](media/sanjiao_icon.png),则代表DevEco Device Tool未连接本地,不能识别串口,此时需要点击该绿色图标进行连接,连接成功后图标会变为![方型图标](media/zhengfang_icon.png)。

   ![check local pc](media/check_local_pc.png)

- 点击主页,在主页选择对应工程,点击配置工程进入到配置页面

  ![config project](media/config_project.png)

##### 配置串口

配置页面选择的板级配置页面,在该页面查找到烧录选项,配置烧录选项中的upload_port和upload_protocol,upload_port选择开发板对应的串口号,upload_protocol默认选择hiburn-serial,最后点击右上角的保存按钮进行保存。

![config serail port](media/config_serial.png)

##### 烧录

当配置完串口以及固件后,直接点击左边栏工程管理中的upload即可,此时下方终端会出现对应烧录的信息,当终端出现BootromDownloadBoot字样,复位开发板即可。

![burn](media/burn.png)

#### 操作体验

##### 设备配网

- 在设备上电前需准备好安装了数字管家应用的HarmonyOS手机,详情见[数字管家应用开发](../digital_housekeeper_application/README_zh.md), 并在设置中开启手机的NFC功能;

- 写设备NFC标签,详细操作见设备[NFC标签指导文档](../NFC_label_definition/README.md);

- 烧录完成后,上电。开发者在观察开发板上状态LED灯以8Hz的频率闪烁时,将手机上半部靠近开发板NFC标签处;

- 无需任何操作手机将自动拉起数字管家应用并进入配网状态,配网过程中无需输入热点账号密码。 具体无感配网相关流程参考 [无感配网指南](../net_config/README.md)

  无感配网操作如下图所示

   ![无感配网](media/nan_net.gif)



##### 设备控制

配网完成后,数字管家应用会自动进入智能台灯的控制页面,通过控制页面可以实现对智能台灯开关、亮度控制的操作。

 ![控制设备](./media/control.gif)



##### 添加日程

使用者可以进入数字管家的日程管理页面中添加智能台灯的相关日程,具体步骤如下:

- 在输入日程名称后,选择相关通知成员和台灯设备;

- 选择期待执行的台灯操作,例如:设置台灯在特定时间段内亮灯或关灯;

- 设置日程的重复日期,例如:可以设置单次日程(仅在当天执行),或者重复日程(设置日程在设定的 星期几重复执行)

 ![create_shedule](./media/create_shedule.gif)

### 参考资料

+ [DevEco Device Tool 环境搭建](../南向IDE环境搭建/README.md)
+ [无感配网指南](../net_config/README.md)
+ [连接华为IoT云](../iot_huawei/README.md)
+ [NFC标签指导文档](../NFC_label_definition/README.md)
+ [数字管家应用开发](../digital_housekeeper_application/README_zh.md)
+ [知识体系](https://gitee.com/openharmony-sig/knowledge)