米家拓展程序开发试用

米家扩展程序是米家 APP 中用于查看硬件产品实时信息和控制硬件产品的子程序。

小米 IoT 平台基于 React Native 框架 (简称 RN 框架)。

平台提供了使用 JavaScript 语言开发成的扩展程序框架 SDK(地址: miot-plugin-sdk ,下文简称 SDK)。
这个 SDK 是一个本地 npm 包。
开发者可以根据产品实际的功能,通过调用 SDK 中的模块(JavaScript 接口集合),开发维护硬件产品的扩展程序。

以上内容来自 小米 IoT 开发者社区 ,有删改。

前言

开发者可以使用 JavaScript 编写米家拓展程序,项目基于 React Native。

米家 APP 在其基础上提供了包括但不限于
基础 UI 组件、设备管理(Device)、调用终端资源(System)、使用米家 APP(Host)、与小米IoT 平台交互(Service)
等能力。

明白了这些就可以开始第一次米家拓展程序的开发。

开发环境

  1. 安装 git

  2. 安装 NodeJS

    可以手动安装,也可以根据下文小米提供的一键安装脚本安装。

miot-plugin-sdk

SDK 下载

访问 miot-plugin-sdk 项目地址,
克隆项目以安装扩展程序框架 SDK。

git clone git clone git@github.com:MiEcosystem/miot-plugin-sdk.git

注:如果没有配置 github SSH 秘钥,需要先配置 SSH 秘钥,或者使用 https 的方式进行克隆。

git clone https://github.com/MiEcosystem/miot-plugin-sdk.git

环境安装

如果没有安装相关的环境(见上文 开发环境 ),可以使用小米提供的一键安装脚本安装。

命令行进入开发环境根目录:

cd miot-plugin-sdk

Windows 电脑执行:

bin/install_mihome_dev.bat

Mac/Linux 电脑执行:

chmod +x bin/install_mihome_dev.sh
bin/install_mihome_dev.sh

安装 SDK 依赖基础库

项目基本上就是一个 NodeJS 项目,进入项目根目录执行 npm install:

cd miot-plugin-sdk
npm install
  1. 网络问题

注意:在安装依赖过程中可能会报以下错误:

connect ECONNREFUSED 0.0.0.0:443

基本上就是因为中国大陆网络问题导致依赖下载失败,请自行解决网络问题并重试。

  1. fsevents 报错

如果 Windows 下 fsevents 报错,可忽略。

Mac/Linux 下报错,可执行以下命令解决:

npm install fsevents@latest

手机安装米家 APP 调试包

参考 miot-plugin-sdk 中小米提供的下载链接进行下载安装:

https://github.com/MiEcosystem/miot-plugin-sdk#%E8%B0%83%E8%AF%95%E7%8E%AF%E5%A2%83

这是米家 APP 的测试安装包,该安装包作为拓展程序的原生载体,
用以承载运行开发者编写的 RN 版本的米家拓展程序。

运行小米提供的 Demo 插件

由于小米提供的是本地 npm 包,故插件项目需要和 miot-plugin-sdk
放在一起。

插件项目位于 miot-plugin-sdk/projects

这个目录下的所有插件都以包名命名,作为 miot-plugin-sdk
的子 NodeJS 项目存在。

由于每一个插件都是一个 NodeJS 项目,故插件项目如有依赖额外的 npm 包的话也需要 install。

  1. 运行 demo 项目

进入 demo 项目安装依赖:

cd projects
cd com.xiaomi.demo
npm install

返回根目录执行运行插件命令:

cd ../..
npm run com.xiaomi.demo

如无意外的话,插件项目编译成功后会在终端上打印出一个二维码:

实际上这个二维码就是简单的 json 文本:

{
"ip": "192.168.2.104",
"package": "com.xiaomi.demo"
}

开发者也可以自己根据电脑本地 ip 和包名生成二维码。

  1. 手机扫码体验

现在可以使用手机打开上文中安装的米家 APP。

确保手机和电脑处于一个 wifi 环境,且无线路由器没有开启 AP 隔离。

然后扫描上面的二维码。

此时手机会提示出于 debug 模式:

此时打开任何已经安装的米家插件都将打开开发者运行的项目。

如果你和我一样暂时并没有关联任何米家产品的话,可以手动添加:

点击右上角加号 -> 添加设备 -> 滑动到最下方 “其他” 分组 -> 选择 “红外遥控” -> 选择 “自定义遥控”

此时 APP 会提示你出于开发者模式,点击确定即可打开运行的插件:

此时开发者电脑的终端会实时编译 JS 文件到 RN bundle 文件:

编译完成后就可以在手机上看到 demo 插件的预览界面:

现阶段请暂时忽略 APP 提示的插件代码里面的黄色警告信息。

自行编写插件

TBD

文章作者: chengww
文章链接: https://chengww.com/archives/miot-extension-development-trial.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 chengww's blog