# 2. 物模型接入指引
开发者首先应该阅读以下文档,以便了解物模型数据结构
# 2.1 标准库
标准库是按照品类维度定义了各个品类的标准功能。这些标准功能包括标准品类模板、标准模块、标准属性、标准操作以及标准事件。在这些标准功能中,标准模块由标准属性、操作和事件组成,而标准品类则由标准模块构成。
# 2.2 创建物模型实例
物模型实例(产品实例)是根据物模型规范和引用产品所属品类标准库的定义而描述的,用以定义一款产品实际功能。具体来说:
- 一个产品的产品物模型实例由多个模块组成,每个模块包含多个设备功能。
- 产品实例中的功能是从标准库中定义的标准功能中引用的,然后在标准库规范的范围内进行差异化功能描述。
配置指引:开发者平台创建物模型实例 (opens new window)
# 2.3 物模型脚本开发
由于设备端的协议和物模型协议不同,所以需要将物模型协议转为设备能识别的协议指令。这里我们选择使用动态脚本lua做为转换脚本。
Lua基本语法:https://www.runoob.com/lua/lua-basic-syntax.html?from=singlemessage&isappinstalled=0
我们采用Lua 5.1版本,这里需要注意。
我们的物模型 Lua 分为 Thing Lua、Convert Lua、Mcu Lua,但 Convert Lua 并不是必须的。
Thing Lua:在 Thing Lua 中,定义了物模型的五个函数,用于接收外部的请求,需要实现以下五个 Lua 函数,分别表示 Action 执行、属性控制、属性查询、全属性查询、以及设备状态上报处理。
function _M:invokeAction(sn, applianceCode, spid, method, params)
function _M:setProperty(sn, applianceCode, spid, params)
function _M:getProperty(sn, applianceCode, spid, params)
function _M:getAllProperties(sn, applianceCode, spid)
function _M:reportData(sn, applianceCode, spid, msgType, msgBody)
Convert Lua:作为桥接层,非必需,在内部用于将物模型 JSON 转换为 profile JSON,以便可以复用事业部现有的插件 Lua,需要实现以下两个函数。分别表示将物模型Json转为profile JSON、profile JSON转为物模型json。如果非美的内部wifi设备,则无需此部分,可以直接在Mcu层将物模型json和电控指令进行转换
function _M:thingJsonToMcuJson(thingJson)
function _M:mcuJsonToThingJson(mcuJson)
Mcu Lua:用于将物模型属性 / profile JSON 和电控指令进行互转,需要实现以下两个函数。encodeMcu表示将物模型属性转为电控指令,decodeMcu表示将电控指令转换为物模型属性。
function _M:encodeMcu(sn, applianceCode, spid, cmdType, params)
function _M:decodeMcu(sn, applianceCode, spid, mcu)
以上三个Lua之间的调用关系示例图:
开发者可以使用物模型本地工具中,创建一个脚手架demo。
物模型本地调试工具(请联系美的内部人员提供)
最终生成的demo路径下有package.json和src文件夹,src文件夹下有Thing lua、Convert lua、Mcu lua的demo。
# 2.4 本地调试
开发者可以通过物模型本地调试工具在自己的计算机上方便地调试物模型 Lua 代码的正确性。
在自己的windows机器上,点击 “一键启动.bat” 即可自动启动并打开浏览器(其他操作系统上可以执行对应的可执行文件)
(物模型本地调试工具下载请联系美的内部人员提供)
打开浏览器后,使用对应环境的美居App扫码登陆,登录完成后跳转到首页可以看到扫码账号下的所有设备信息:
填写本地包管理路径:
然后开发者可以在本地调试Thing lua中的五个函数了
在本地开发完成之后,需要将开发的代码&配置打成zip包上传到开发者平台,具体打包方式如下:
# 2.5 发布SIT
上述步骤将代码打包为了zip文件,将此文件上传到开发者平台,操作如下:
将实例模板和物模型包关联起来
将实例模板和产品关联起来,最终记得需要点击“生成数据”。经过此步骤后,就可以在SIT环境进行调试了。
将代码发布到sit之后,可以在开发者平台调试物模型代码,并可以看到代码中输出的详细日志,开发者在lua中输出的日志也会在调试台展示,有助于根据日志进行问题排查。
也可以直接调用云端接口进行测试
# 2.6 发布生产环境
在sit进行调试 & 验证完成后,点击“发布”进行上线操作。