diff --git a/bls-rcu-action-backend/.env b/bls-rcu-action-backend/.env index c05b01b..65dfdcb 100644 --- a/bls-rcu-action-backend/.env +++ b/bls-rcu-action-backend/.env @@ -52,4 +52,10 @@ REDIS_CONNECT_TIMEOUT_MS=5000 ACTION_TYPE_DEV_TYPE_RULES='[{"action_type": "无效", "dev_type": 0, "name": "无效设备(也可以被认为是场景)"}, {"action_type": "设备回路状态", "dev_type": 1, "name": "强电继电器(输出状态)"}, {"action_type": "用户操作", "dev_type": 2, "name": "弱电输入(输入状态)"}, {"action_type": "设备回路状态", "dev_type": 3, "name": "弱电输出(输出状态)"}, {"action_type": "设备回路状态", "dev_type": 4, "name": "服务信息"}, {"action_type": "设备回路状态", "dev_type": 5, "name": "干节点窗帘"}, {"action_type": "用户操作", "dev_type": 6, "name": "开关"}, {"action_type": "用户操作", "dev_type": 7, "name": "空调"}, {"action_type": "用户操作", "dev_type": 8, "name": "红外感应"}, {"action_type": "设备回路状态", "dev_type": 9, "name": "空气质量检测设备"}, {"action_type": "用户操作", "dev_type": 10, "name": "插卡取电"}, {"action_type": "用户操作", "dev_type": 11, "name": "地暖"}, {"action_type": "", "dev_type": 12, "name": "RCU 设备网络 - 没使用"}, {"action_type": "设备回路状态", "dev_type": 13, "name": "窗帘"}, {"action_type": "设备回路状态", "dev_type": 14, "name": "继电器"}, {"action_type": "设备回路状态", "dev_type": 15, "name": "红外发送"}, {"action_type": "设备回路状态", "dev_type": 16, "name": "调光驱动"}, {"action_type": "设备回路状态", "dev_type": 17, "name": "可控硅调光(可控硅状态)"}, {"action_type": "设备状态", "dev_type": 18, "name": "灯带(灯带状态) --2025-11-24 取消"}, {"action_type": "设备状态", "dev_type": 19, "name": "中控"}, {"action_type": "设备状态", "dev_type": 20, "name": "微信锁 (福瑞狗的蓝牙锁 默认 0 地址)"}, {"action_type": "设备回路状态", "dev_type": 21, "name": "背景音乐(背景音乐状态)"}, {"action_type": "云端操作", "dev_type": 22, "name": "房态下发"}, {"action_type": "设备状态", "dev_type": 23, "name": "主机本地 调光"}, {"action_type": "设备状态", "dev_type": 24, "name": "485PWM 调光( PWM 调光状态)"}, {"action_type": "设备状态", "dev_type": 25, "name": "总线调光( PBLED 调光状态) - 没使用 -"}, {"action_type": "云端操作", "dev_type": 26, "name": "RCU 电源"}, {"action_type": "用户操作", "dev_type": 27, "name": "A9IO 开关"}, {"action_type": "设备回路状态", "dev_type": 28, "name": "A9IO 扩展"}, {"action_type": "设备回路状态", "dev_type": 29, "name": "A9IO 电源"}, {"action_type": "回路状态", "dev_type": 30, "name": "无线网关轮询(用于轮询控制轮询设备;给无线网关下发配置和询问网关状态)"}, {"action_type": "回路状态", "dev_type": 31, "name": "无线网关主动(用于主动控制主动设备)"}, {"action_type": "用户操作", "dev_type": 32, "name": "无线门磁"}, {"action_type": "设备回路状态", "dev_type": 33, "name": "空气参数显示设备"}, {"action_type": "设备回路状态", "dev_type": 34, "name": "无线继电器红外"}, {"action_type": "设备回路状态", "dev_type": 35, "name": "时间同步"}, {"action_type": "云端操作", "dev_type": 36, "name": "监控控制"}, {"action_type": "用户操作", "dev_type": 37, "name": "旋钮开关控制"}, {"action_type": "设备回路状态", "dev_type": 38, "name": "CSIO - 类型"}, {"action_type": "设备回路状态", "dev_type": 39, "name": "插卡状态虚拟设备"}, {"action_type": "用户操作", "dev_type": 40, "name": "485 新风设备"}, {"action_type": "用户操作", "dev_type": 41, "name": "485 人脸机"}, {"action_type": "回路状态", "dev_type": 42, "name": "中控"}, {"action_type": "回路状态", "dev_type": 43, "name": "域控"}, {"action_type": "设备回路状态", "dev_type": 44, "name": "LCD"}, {"action_type": "回路状态", "dev_type": 45, "name": "无卡断电 --2025-11-24 取消"}, {"action_type": "用户操作", "dev_type": 46, "name": "无卡取电 2"}, {"action_type": "设备回路状态", "dev_type": 47, "name": "虚拟时间设备"}, {"action_type": "设备回路状态", "dev_type": 48, "name": "PLC 总控"}, {"action_type": "设备回路状态", "dev_type": 49, "name": "PLC 设备 - 恒流调光设备"}, {"action_type": "设备回路状态", "dev_type": 50, "name": "PLC 设备 - 恒压调光设备"}, {"action_type": "设备回路状态", "dev_type": 51, "name": "PLC 设备 - 继电器设备"}, {"action_type": "设备回路状态", "dev_type": 52, "name": "色温调节功能"}, {"action_type": "设备回路状态", "dev_type": 53, "name": "蓝牙音频"}, {"action_type": "用户操作", "dev_type": 54, "name": "碳达人"}, {"action_type": "用户操作", "dev_type": 55, "name": "场景还原"}, {"action_type": "设备回路状态", "dev_type": 56, "name": "全局设置"}, {"action_type": "设备回路状态", "dev_type": 57, "name": "能耗检测"}, {"action_type": "设备回路状态", "dev_type": 241, "name": "CSIO - 类型"}]' -ENABLE_LOOP_NAME_AUTO_GENERATION=false \ No newline at end of file +ENABLE_LOOP_NAME_AUTO_GENERATION=false + +# Write control switches +WRITE_TO_G4_ACTION=true +WRITE_TO_G4_STATUS=true +WRITE_TO_G5_ACTION=true +WRITE_TO_G5_STATUS=true \ No newline at end of file diff --git a/bls-rcu-action-backend/src/config/config.js b/bls-rcu-action-backend/src/config/config.js index fab58a4..8c06588 100644 --- a/bls-rcu-action-backend/src/config/config.js +++ b/bls-rcu-action-backend/src/config/config.js @@ -90,5 +90,9 @@ export const config = { schema: process.env.ROOM_STATUS_DB_SCHEMA_G5 || 'room_status', table: process.env.ROOM_STATUS_DB_TABLE_G5 || 'room_status_moment_g5' }, - enableLoopNameAutoGeneration: process.env.ENABLE_LOOP_NAME_AUTO_GENERATION === 'true' + enableLoopNameAutoGeneration: process.env.ENABLE_LOOP_NAME_AUTO_GENERATION === 'true', + writeToG4Action: process.env.WRITE_TO_G4_ACTION !== 'false', + writeToG4Status: process.env.WRITE_TO_G4_STATUS !== 'false', + writeToG5Action: process.env.WRITE_TO_G5_ACTION !== 'false', + writeToG5Status: process.env.WRITE_TO_G5_STATUS !== 'false' }; diff --git a/bls-rcu-action-backend/src/index.js b/bls-rcu-action-backend/src/index.js index b653505..93c498c 100644 --- a/bls-rcu-action-backend/src/index.js +++ b/bls-rcu-action-backend/src/index.js @@ -102,10 +102,10 @@ const bootstrap = async () => { try { const statusUpdate = extractStatusUpdate(payload); if (statusUpdate) { - if (config.roomStatusDb.enabled) { + if (config.roomStatusDb.enabled && config.writeToG4Status) { statusBatchProcessorG4.add(statusUpdate); } - if (statusBatchProcessorG5 && config.roomStatusDbG5.enabled) { + if (statusBatchProcessorG5 && config.roomStatusDbG5.enabled && config.writeToG5Status) { statusBatchProcessorG5.add(statusUpdate); } } @@ -115,10 +115,10 @@ const bootstrap = async () => { let inserted = 0; const dbActions = []; - if (config.db.enabled) { + if (config.db.enabled && config.writeToG4Action) { dbActions.push(batchProcessorG4.add({ rows }).then(c => { inserted = Math.max(inserted, c); })); } - if (batchProcessorG5 && config.dbG5.enabled) { + if (batchProcessorG5 && config.dbG5.enabled && config.writeToG5Action) { dbActions.push(batchProcessorG5.add({ rows }).then(c => { inserted = Math.max(inserted, c); })); }