Appearance
IoT_JS应用编程
概述
- itee和istickiot, 都是基于家庭下的房间进行编程。
- itee和istickiot通过codeserver是在线编程环境进行代码编程。
- 此外,itee支持界面可视化编程。
名词说明
场所:房间的类型,指特定的活动空间,一个房间只有一个类型,如卧室、书房、会议室、办公室等。 模式:对多个设备进行组合控制,一个房间下有多个模式。
codeserver在线代码编程
1.切换家庭下的房间
切换房间后,codeserver会自动拉取房间仓库下的代码. 
2.认识房间仓库
- 房间仓库截图

- 仓库说明
- 房间源码仓:源代码
①iot-info:设备信息
②istick-script:iot 源码
③itee-1-script:iTee源码 - 发布仓:后缀为.release, 用来存放同名源码仓编译、打包、发布后的版本。特别说明,constant是iot-info.release这个发布仓里的一部分。
- 房间源码仓:源代码
- 房间仓库js文件
- iot-info/device_list.jsonc
设备列表(包括分组)数据, 包含同一个房间内部所有设备的信息。 //每个设备信息包括: id:标识一个房间里的每个设备,1-65535,在一个房间内部是唯一的。 class:设备类型,例如,”switch”,JS代码里使用,与sub1g.jsonc文件的device_type用途相同。 title:设备名称,显示用的名称,方便用户查看。 name:与title相对应的设备名称,JS代码里使用。 device_id:该设备的唯一编号,与sub1g.jsonc文件的device_id相同,且用途相同。在我们云端系统内部(包含所有类型的设备)是唯一的。 attr:该设备的一组属性。 switch_usage: 通断器用途 light_usage: 灯饰用途 group:是否为分组 - iot-info/sub1g.jsonc 包含同一个房间内部多类433设备的码值信息。 //每个设备信息包括: id:32个字符,在我们云端系统内部(包含所有类型的设备)是唯一的。例如,"007d76b9705544a2892b152f999dd05a"。 device_type:设备类别,例如”switch”。 control_id,与sub1g设备厂商有关,每个设备厂商的一个型号有一个control_id,control_id决定了具体的物理编码格式: head的格式。 tail的格式。 逻辑比特个数。 逻辑0的格式。 逻辑1的格式。 该设备有多少个keys,每个key有1个fcode和1个data数组。
- iot-info/scene_itee_config_1.jsonc 可视化编程生成的itee的场景配置信息.
- constant/device_const.js //房间设备标识常量 自动构建生成,不允许人为修改。为一个房间内每个设备定义了一对常数。
//例如: D_SWITCH_TEST_ID:一个房间内部每个设备的编号,与device_list.jsonc文件里的id相同,且用途相同。 D_SWITCH_TEST_SUB1G、D_SWITCH_TEST_IR、D_SWITCH_TEST_BLE:一个房间内部每类设备里的每个设备的编号。 D_GROUP_SWITCH_LIGHT_JXR_ID:一个房间内部每个分组的编号,与device_list.jsonc文件里的id相同,且用途相同。 D_GROUP_SWITCH_LIGHT_JXR_SUB1G:一个房间内部每类设备里的每个设备的编号。 - constant/fcode_const.js //设备按键键值定义常量 定义了一组按键功能代码fcode的值,自动构建生成,不允许人为修改。 //例如: const FCODE_FAN_POWER = 1513; //风扇--开关 const FCODE_FAN_SPEED_1 = 1514; //风扇--风速1
- iot-info/device_list.jsonc
itee代码编程
对应源码仓库:itee-1-script
- 操作流程如下:
- 源码仓itee-1-script中的main.js为itee的入口文件 相关事件:
//iTee按键事件 function onKey(key) { //key.code 键值 //key.status:按键状态 //key.count: 按键计数值 ...... } //系统事件 function onSystem(event) { //event.type:事件类型 //event.p1:事件P1值 //event.p2:事件P2值 ...... } //消息事件 function onMessage(event) { //event.type:消息类型 //event.__name:消息名称 //event.data:消息携带数据 }- 编辑修改源码仓的代码,源码仓代码产生有两种方式:
- 通过可视化编程操作后自动生成 【需要特别处理时推荐这种方式】 在itee-1-script打开源码仓命令行终端(参照第3步):执行git pull, 同步可视化配置后生成的代码。
- 手动生成: 包括以下步骤
- 源码仓的代码编辑窗口右键点击"生成itee main.js代码模板配置文件(alpha版)", 会根据房间设备信息自动生成默认的config.js文件
- 按需修改config.js中的配置
- 点击打开itee-1-script/main.js ,在编辑窗口右键"生成itee main.js代码(alpha版)",根据config.js生成main.js文件。
- 提交代码: 参见第5点截图打开源码仓命令行终端窗口, 执行 gita push "修改说明" 提交源码仓代码.
- 打开模拟器验证 打开main.js在编辑窗口,右键“打开模拟器”,选择对应的房间、加载房间脚本,模拟iTee按键。
注意检查房间id是否正确。
- 打开模拟器验证 打开main.js在编辑窗口,右键“打开模拟器”,选择对应的房间、加载房间脚本,模拟iTee按键。
- 打开源码仓命令行终端窗口,编译发布版本

- 执行git ls-remote, 查看源码仓的tag
- 执行git tag v1.0.xx (xx为最新tag,在已有tag基础上加1), 打新tag
- 执行gita push origin v1.0.xx, 将新打的tag推送到远程,push成功后会触发a.bin的自动构建编译。
- 切换到itee-1-script.release发布仓,查看编译日志版本
- 右键弹出框中点击菜单项"查看编译日志",可以编译日志以及编译的新版本tag

- 右键弹出框中点击"open in Integrated terminal",打开命令行终端窗口,输入git ls-remote查看最新版本号。
- 右键弹出框中点击菜单项"查看编译日志",可以编译日志以及编译的新版本tag
- 打开源码仓命令行终端窗口,编译发布版本
- itee上电在线,iTee会自动检测最新版本进行升级,进行验证.
itee可视化编程
- 可视化编程流程
- 进入可视化操作页面
- 进行各分块内容配置
- 点击 "提交并生成iTee JS新版本", 等待成功提示。
- 终端iTee上电升级新的A分区版本.
- 可视化编程操作界面

- 各项内容配置
- 是否启用日志:配置日志输出方式及打印级别
- 关联iStick iot遥控器或iTone小音箱:配置itee关联的遥控器或小音箱mac地址,做联合编程)
- 已启用的场景列表:增加场景、删除场景、配置
- 场景触发器配置:1个场景延迟多长时间后切到下一个场景,以及1个场景同时触发其他房间的哪些场景执行.
- iTee关联的场景:配置iTee有哪些场景
- 场景触发器: 在指定时间情况下,触发某个场景执行,触发后冷却时长内不再触发。
- 信号发生器(随意贴、呼叫器、传感器等)功能配置:配置随意贴、呼叫器、传感器的场景或控制功能
- 被控设备启用配置:配置哪些设备可以在场景中进行控制及在手机远程进行控制
- 设备状态智能场景条件配置:配置具体场景对哪些启用设备进行何种控制
- 电视观影联动场景配置: 电视观影时同步触发iTee切换到相应场景
- 默认储物间(运动健康等)设备关联房间配置: 配置默认储物间的设备是否关联到当前房间或全部房间
- 其他配置: iTee断电重启后是否进入全关模式
istick_iot代码编程
源码仓:istickiot-1-script
- 操作流程:
- 源码仓istickiot-1-script中的main.js为istickiot的入口文件 相关事件:
//istickIot按键事件 function onKey(key) { //key.code 键值 //key.code2 键值2 //key.status:按键状态 //key.count: 按键计数值 ...... } //系统事件: 包含蓝牙配对、充电、服务、红外、433状态等消息事件 function onSystem(event) { //event.type:事件类型 //event.p1:子类型 //event.p2:参数值 ...... } //蓝牙消息 function onBle(arr) { //arr:蓝牙消息内容数组 } // 休眠前先将需要持久性保存的数据缓存起来 function onSleep() { // }- 手动生成代码并修改:
- 在编辑页面,右键点击“生成main.js代码模板配置文件”。
注意:当iot_info的设备列表有变化且已发布,那么config.js需要重新生成。 - 按需修改config.js中的配置. module.exports下的lights,配置灯光模式;
features.name 设备名称tts,只能引用tts引用词库中的短语!在代码行独行敲"tts()",可以查支持的tts。
ISC 配置灯光在不同灯光模式下为开或关 - 选中istickiot-1-script/main.js ,右键“生成main.js代码” 注意:config.js 修改后,需重新生成main.js。
- 按需修改main.js
- 提交 选中istickiot-1-script,右键点击"open in Integrated terminal",打开源码仓终端输入并执行命令:gita push "修改说明"
- 打开模拟器验证 选中istickiot-1-script/main.js ,在代码编辑页面,右键“打开模拟器”,选择对应的房间、加载房间脚本,模拟遥控器按键。
注意检查房间id是否正确。
可忽视的模拟器报错如下:
[ERROR] [PORT_BLE]: [elk_porting_ble_advertising_stop] device FFFFFFFF0002 not found. [ERR] task_sub1gtx_fcode: get flash buf error!- 打开模拟器验证 选中istickiot-1-script/main.js ,在代码编辑页面,右键“打开模拟器”,选择对应的房间、加载房间脚本,模拟遥控器按键。
- 打开源码仓命令行终端窗口,编译发布版本
- 执行git ls-remote, 查看源码仓的tag
- 执行git tag v1.0.xx (xx为最新tag,在已有tag基础上加1), 打新tag
- 执行gita push origin v1.0.xx, 将新打的tag推送到远程,push成功后会触发a.bin的自动构建编译。
- 切换到istickiot-1-script.release发布仓,查看编译日志及新编译的版本
- 右键弹出框中点击菜单项"查看编译日志",可以编译日志以及编译的新版本tag
- 右键弹出框中点击"open in Integrated terminal",打开命令行终端窗口,输入git ls-remote查看最新版本号。
- 升级遥控器验证 itee上电在线,iTee会自动检测最新版本进行升级,进行验证. 验证前对窗帘等需要配码设备进行配码。