
动检/人形告警推送到自建服务乐橙 setMessageCallback 3 分钟验收清单现行 OpenAPI · 勿用 旧版本协议不再维护 · 回调见 事件消息推送我给乐橙门口机写了一个自建通知服务——动检推 Telegram人形推 Home Assistant打算周末搞定。周五晚上在 乐橙开放平台 拿到的accessToken和listDeviceDetailsByPage都通了。我在镜头前挥手乐橙 App 立刻弹「有人」。自建服务日志一行都没有。周六我把 MD5 签名对了八遍周日才发现——从没调过setMessageCallback。App 通知走厂商通道你的 HTTPS 服务乐橙云不知道往哪 POST。改完回调按下面清单3 分钟跑通第一条human进日志。动检和人形为什么必须走推送而不是轮询方式延迟配额能否进自建服务乐橙 App 推送低—否定时getAlarmMessage30s分钟级烧 API易漏、难扩展HTTP 回调通常 13s友好正路setMessageCallback在乐橙云产生videoMotion/human时主动 POST到你的公网 URL。callbackFlag 与 msgTypecallbackFlag msgType回调 JSON ────────────────────────────────────────────────── alarm → videoMotion动检 → human人形 deviceStatus → online / offline faceAnalysis可选 → aiPerLine 等行业 AI视机型家用乐橙 IPC常见AlarmMDAiHuman→callbackFlag: alarm即可不必误订faceAnalysis设备不支持则永远收不到。能力字段分页接口返回期望 msgType设备端AlarmMDvideoMotion开移动侦测AiHumanhuman开人形检测POST乐橙 IPC乐橙云 OpenAPIsetMessageCallback桥接 200Telegram / HA / 工单边界回调仅针对开发者主账号资产池设备列表用listDeviceDetailsByPage勿用停维护的deviceList方法。计时从「桥接 HTTPS 已部署、设备 online」开始。任一步失败即停。第 0 分钟 · 调用壳国内网关// lib/platform-call.jsimportcryptofromnode:crypto;import{randomUUID}fromnode:crypto;exportfunctioncalcSign(time,nonce,appSecret){constrawtime:${time},nonce:${nonce},appSecret:${appSecret};returncrypto.createHash(md5).update(raw,utf8).digest(hex);}exportasyncfunctionplatformCall(method,params{}){constappIdprocess.env.APP_ID;constappSecretprocess.env.APP_SECRET;constbaseprocess.env.OPENAPI_BASE;consttimeMath.floor(Date.now()/1000);constnoncerandomUUID();constbody{system:{ver:1.0,appId,sign:calcSign(time,nonce,appSecret),time,nonce},id:randomUUID(),params,};constresawaitfetch(${base}/${method},{method:POST,headers:{Content-Type:application/json},body:JSON.stringify(body),});constjsonawaitres.json();if(json.result?.code!0)thrownewError([${json.result.code}]${json.result.msg});returnjson.result.data;}exportasyncfunctionadminToken(){const{accessToken}awaitplatformCall(accessToken,{});returnaccessToken;}APP_IDlcdxxxxxxxxxxxxAPP_SECRETyour_secretOPENAPI_BASEhttps://openapi.lechange.cn/openapiCALLBACK_URLhttps://your-bridge.example.com/imou/events签名规则开发规范 ·accessToken约 3 天有效生产 Redis 缓存。第 1 分钟 · 资产 能力验收// scripts/minute-1-verify-device.jsimportdotenv/config;import{platformCall,adminToken}from../lib/platform-call.js;consttokenawaitadminToken();constpageawaitplatformCall(listDeviceDetailsByPage,{token,pageSize:10,page:1,source:bindAndShare,});constdevpage.deviceList?.[0];if(!dev)thrownewError(资产池为空开发者主账号绑定设备);constabilitydev.channelList?.[0]?.channelAbility??dev.deviceAbility??;console.log({deviceId:dev.deviceId,deviceStatus:dev.deviceStatus,hasMotion:ability.includes(AlarmMD),hasHuman:/AiHuman|AiHumanCar/.test(ability),});✅ 通过deviceList ≥ 1·online· 含AlarmMD和/或AiHuman踩坑 A乐橙 App 能看、列表 0 → 私人号绑定换 开发者主账号 重新添加。第 2 分钟 · setMessageCallback 读回// scripts/minute-2-set-callback.jsimportdotenv/config;import{platformCall,adminToken}from../lib/platform-call.js;consttokenawaitadminToken();awaitplatformCall(setMessageCallback,{token,status:on,callbackUrl:process.env.CALLBACK_URL,callbackFlag:alarm,deviceStatus,basePush:2,});console.log(awaitplatformCall(getMessageCallback,{token}));参数说明callbackUrlHTTPS 公网callbackFlagalarm,deviceStatusbasePush: 2业务接管避免与乐橙 App 重复推送getMessageCallback读回验收踩坑 BHTTP / 自签证书 → 校验失败。踩坑 C漏alarm→ 收不到videoMotion/human。第 3 分钟 · 桥接 实机触发// src/alarm-bridge.jsimportexpressfromexpress;constappexpress();app.use(express.json());functionclassify(msg){if(msg.msgTypehuman)returnhuman;if(msg.msgTypevideoMotion)returnmotion;if(msg.msgTypeonline||msg.msgTypeoffline)returnstatus;returnother;}app.post(/imou/events,(req,res){res.status(200).send(ok);queueMicrotask((){constmsgreq.body;console.log(JSON.stringify({kind:classify(msg),msgType:msg.msgType,deviceId:msg.did,alarmId:msg.id,}));});});app.listen(8080);镜头前走动或站立日志应出现{msgType:videoMotion,did:DOOR_CAM_001,cid:0,id:2447736561}或msgType: human。踩坑 D业务逻辑放在200之前 → 超时后平台停推我们丢过一周告警。踩坑 EApp 有人形、日志只有动检 → 乐橙 App 开人形侦测或机型无AiHuman。验收后 · 分流与留证asyncfunctiondispatch(msg){if(msg.msgTypehuman){/* 高优先级推 HA / 电话提醒 */}elseif(msg.msgTypevideoMotion){/* 普通动检 */}}constdetailawaitplatformCall(getAlarmMessageById,{token:awaitadminToken(),deviceId:msg.did,channelId:0,alarmId:String(msg.id),msgType:msg.msgType,});告警缩略图 URL 约1 天有效重要场景转存 OSS。3 分钟 Checklist可打印【0′】 open.imou.com 应用 openapi.lechange.cn 桥接 HTTPS 【1′】 listDeviceDetailsByPage ≥1 onlineAlarmMD/AiHuman 对齐需求 【2′】 setMessageCallback(on) getMessageCallback 读回一致 【3′】 实机触发 → videoMotion 或 human ≥1200 500ms幂等与补洞asyncfunctiononce(alarmId,fn){constokawaitredis.set(imou:alarm:${alarmId},1,{NX:true,EX:86400});if(ok)awaitfn();}每小时getAlarmMessage与本地 diff补source: backfill。轮询改回调后我的资源 配额通常明显下降。排错速查现象处理3 分钟无 POSTcallback on HTTPS 可达收几天就停必须先 200只有动检无人形开人形查 AiHumanApp 有、服务无未 setMessageCallback与 Home AssistantHA Core Imou 集成 约 2 分钟轮询毫秒联动仍建议本回调 → MQTT → automation。见同系列 HA Core 接入文。小结乐橙动检/人形进自建服务最短路径listDeviceDetailsByPage 验收 → setMessageCallback(alarm) → 桥接 200 → msgType 分流 → 3 分钟实机验收App 能弹「有人」只说明检测正常Telegram、HA、工单要响必须让乐橙云知道你的 callbackUrl。延伸阅读事件消息推送分页查询设备详情自建全屋智能 · 列表与回调需 MQTT 扇出到多下游时在桥接层publish即可工单 / HA / 大屏各订 topic开始接入在乐橙开放平台 open.imou.com注册并创建应用领取免费设备接入与媒体带宽。平台以视频技术与安全为核心提供 OpenAPI、OpenSDK 与告警 HTTP 推送帮助开发者快速把乐橙 IPC 动检/人形事件接进自建自动化。建议今天setMessageCallback 配好 → 镜头前走一圈 → 日志里看到第一条human或videoMotion。比写 200 行轮询任务值。你卡在回调 URL、200 响应还是只有动检没有人形评论区说说。