Skip to content

IoT_JS应用编程

概述

  1. itee和istickiot, 都是基于家庭下的房间进行编程。
  2. itee和istickiot通过codeserver是在线编程环境进行代码编程。
  3. 此外,itee支持界面可视化编程。

名词说明

场所:房间的类型,指特定的活动空间,一个房间只有一个类型,如卧室、书房、会议室、办公室等。 模式:对多个设备进行组合控制,一个房间下有多个模式。

codeserver在线代码编程

1.切换家庭下的房间

切换房间后,codeserver会自动拉取房间仓库下的代码. alt text

2.认识房间仓库

  • 房间仓库截图 alt text
  • 仓库说明
    • 房间源码仓:源代码
      ①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

itee代码编程

对应源码仓库:itee-1-script

  • 操作流程如下:
uml diagram
    1. 源码仓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:消息携带数据
        }
    1. 编辑修改源码仓的代码,源码仓代码产生有两种方式:
    • 通过可视化编程操作后自动生成 【需要特别处理时推荐这种方式】 在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文件。
    1. 提交代码: 参见第5点截图打开源码仓命令行终端窗口, 执行 gita push "修改说明" 提交源码仓代码.
    1. 打开模拟器验证 打开main.js在编辑窗口,右键“打开模拟器”,选择对应的房间、加载房间脚本,模拟iTee按键。
      注意检查房间id是否正确。
    1. 打开源码仓命令行终端窗口,编译发布版本 Alt text
    • 执行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发布仓,查看编译日志版本
      1. 右键弹出框中点击菜单项"查看编译日志",可以编译日志以及编译的新版本tag
        Alt text
      2. 右键弹出框中点击"open in Integrated terminal",打开命令行终端窗口,输入git ls-remote查看最新版本号。
    1. itee上电在线,iTee会自动检测最新版本进行升级,进行验证.

itee可视化编程

  • 可视化编程流程
    1. 进入可视化操作页面
    2. 进行各分块内容配置
    3. 点击 "提交并生成iTee JS新版本", 等待成功提示。
    4. 终端iTee上电升级新的A分区版本.
  • 可视化编程操作界面 Alt text
  • 各项内容配置
    • 是否启用日志:配置日志输出方式及打印级别
    • 关联iStick iot遥控器或iTone小音箱:配置itee关联的遥控器或小音箱mac地址,做联合编程)
    • 已启用的场景列表:增加场景、删除场景、配置
    • 场景触发器配置:1个场景延迟多长时间后切到下一个场景,以及1个场景同时触发其他房间的哪些场景执行.
    • iTee关联的场景:配置iTee有哪些场景
    • 场景触发器: 在指定时间情况下,触发某个场景执行,触发后冷却时长内不再触发。
    • 信号发生器(随意贴、呼叫器、传感器等)功能配置:配置随意贴、呼叫器、传感器的场景或控制功能
    • 被控设备启用配置:配置哪些设备可以在场景中进行控制及在手机远程进行控制
    • 设备状态智能场景条件配置:配置具体场景对哪些启用设备进行何种控制
    • 电视观影联动场景配置: 电视观影时同步触发iTee切换到相应场景
    • 默认储物间(运动健康等)设备关联房间配置: 配置默认储物间的设备是否关联到当前房间或全部房间
    • 其他配置: iTee断电重启后是否进入全关模式

istick_iot代码编程

源码仓:istickiot-1-script

  • 操作流程:
uml diagram
    1. 源码仓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() {
            //
        }
    1. 手动生成代码并修改:
    • 在编辑页面,右键点击“生成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
    1. 提交 选中istickiot-1-script,右键点击"open in Integrated terminal",打开源码仓终端输入并执行命令:gita push "修改说明"
    1. 打开模拟器验证 选中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!
    1. 打开源码仓命令行终端窗口,编译发布版本
    • 执行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发布仓,查看编译日志及新编译的版本
      1. 右键弹出框中点击菜单项"查看编译日志",可以编译日志以及编译的新版本tag
      2. 右键弹出框中点击"open in Integrated terminal",打开命令行终端窗口,输入git ls-remote查看最新版本号。
    1. 升级遥控器验证 itee上电在线,iTee会自动检测最新版本进行升级,进行验证. 验证前对窗帘等需要配码设备进行配码。