等待设备上报 status…
雷达 · {{ selectedDevId }}
Shift+单击标题,或三击右上角 FPS 行 · 当前 {{ (effectiveMaxRangeMm / 1000).toFixed(2) }} m({{ rangeSourceText }})
设备已上报 max_range_mm,本地设置暂不生效
mm 或 m
{{ presenceLabel(devPresenceState(currentDevice)) }}
{{ devRangeText(currentDevice) }}{{ devAzimuthText(currentDevice) }}
人体存在时间线
暂无检测记录
{{ hoverTip.time }}
{{ hoverTip.state }} · {{ hoverTip.range }}
抓拍照片
暂无照片(检测到大动作或手动抓拍后显示)
音频管理 · {{ selectedDevId }}
支持 MP3/WAV 等,服务端自动转 16kHz mono WAV,单文件 ≤256KB,文件名仅 [A-Za-z0-9_-.] 且以 .wav 结尾
{{ ttsStatus.message }}
{{ ttsStatus.message }}
{{ ttsStatus.message }}
留空文件名时自动取文本前 N 字(可设长度);支持中文名,下发设备若失败请先重命名为英文
云端音频库
| 文件名 | 大小 | 时长 | 操作 |
|---|---|---|---|
| {{ f.name }} | {{ formatAudioSize(f.size) }} | {{ formatDuration(f.duration_ms) }} |
|
云端暂无音频,请先上传
设备 Flash
| 文件名 | 大小 | 采样率 | 操作 |
|---|---|---|---|
| {{ f.name }} | {{ formatAudioSize(f.size) }} | {{ f.rate ? f.rate + ' Hz' : '-' }} |
|
{{ currentDevice && !currentDevice.online ? '设备离线' : '设备 Flash 暂无音频(请先下发)' }}
运动前检测 · 监控观察 · {{ selectedDevId }}
测试目的:记录{{ selectedDevId }} 各机构(堆垛机 / 加解锁平台 / 接驳机)每次从静止启动前是否误报有人。下表一行 = 一轮运动;若运动前有人,会标注提前多久出现信号,并区分可能未停稳与疑似误报。
{{ plcMonitorVerdict.title }}
{{ plcMonitorVerdict.detail }}
毫米波雷达(实时)
{{ plcRadarPersonLabel(currentDevice) }}
{{ presenceLabel(devPresenceState(currentDevice)) }}
· {{ devRangeText(currentDevice) }}{{ devAzimuthText(currentDevice) }}
PLC 人员判定(设备上报)
{{ plcSnapshot.person ? '判定有人' : '判定无人' }}
工作模式 {{ plcWorkModeLabel(plcSnapshot) }}
堆垛机 · motion={{ plcSnapshot.motion_flags != null ? plcSnapshot.motion_flags : '-' }}
平移
升降
货叉
加解锁平台
平移
举升
接驳机
电池传送
调试 · 原始站点字段
msg_id {{ plcSnapshot.msg_id || '-' }}
· tick {{ plcSnapshot.tick_ms != null ? plcSnapshot.tick_ms : '-' }}
safety_state
{{ plcSnapshot.safety_state || '—' }}
plc_ready
{{ plcSnapshot.plc_ready ? 'true' : 'false' }}
allow_start
{{ plcSnapshot.allow_start ? 'true' : 'false' }}
运动测试记录(静止 → 运动 · {{ selectedDevId }})
| 运动时间 | 监测设备 | 运动前判定 | 提前量 | 雷达 / PLC | 原因分析 | 说明 |
|---|---|---|---|---|---|---|
|
开始 {{ formatTimeShort(r.startTime) }}
最近 {{ formatTimeShort(r.lastMotionTime) }}
至 {{ formatTimeShort(r.endTime) }}
进行中 / 未记录结束
距上轮结束 {{ formatDurationSec(r.lastMotionGapSec) }}
|
{{ r.motionDevice }}
{{ r.motionLabel }}
|
{{ plcPreMotionPersonText(r) }} | {{ plcPreMotionTimingText(r) }} — |
雷达 {{ plcPersonBadgeText(r.preRadar) }}
PLC {{ plcPersonBadgeText(r.prePlc) }}
雷达记录 {{ formatTimeShort(r.preRadarAt) }}
|
{{ plcCauseLabel(r) }} | {{ r.preVerdict.detail }} |
暂无「静止→运动」切换记录。请操作机械并等待 PLC 状态入库。
部件边沿时间线(各机构开始/结束)
- {{ formatTimeShort(ev.created_at) }} {{ plcMotionActionLabel(ev) }} {{ plcMotionPartTitle(ev) }}
原始状态变更流水(调试)
| 时间 | 机械 | 运动前 | 雷达 | PLC | 堆垛机 | 加解锁平台 | 接驳机 |
|---|---|---|---|---|---|---|---|
| {{ formatTimeShort(e.created_at) }} | {{ plcAnyMotion(e) ? '动' : '静' }} | {{ plcHistoryPreMotionText(e) }} | {{ plcHistoryRadarLabel(e) }} | {{ e.person ? '有' : '无' }} | {{ plcMotionStacker(e) }} | {{ plcMotionPlatform(e) }} | {{ plcMotionTransfer(e) }} |
暂无 PLC 上报(设备 Phase 1 开启后自动入库)
加载 PLC 数据…
语音包 · {{ selectedDevId }}
应有 {{ voicePackSummary.expected }} 条 · 下发成功 {{ voicePackSummary.deployed_ok }} · 待同步 {{ voicePackSummary.pending }}
· 设备 Flash {{ deviceAudioFiles.length }} 个
· 文件名固定英文别名(boot_ok.wav 等)
· 本地列表按下发记录推断(固件 ack 未带 JSON)
· 同步中…
| 中文标题 | device_name | event | 云端 | 下发状态 | 设备本地 | 操作 |
|---|---|---|---|---|---|---|
| {{ a.title }} | {{ a.device_name }} |
{{ a.event_key }} | {{ a.size_kb ? a.size_kb + ' KB' : '-' }} | {{ voiceDeployLabel(a.deploy_status) }} | {{ voiceOnDeviceLabel(a.device_name) }} |
|
加载语音包…
设备 Flash 音频列表
| 文件名 | 大小 | 采样率 | 语音包 |
|---|---|---|---|
{{ f.name }} |
{{ formatAudioSize(f.size) }} | {{ f.rate ? f.rate + ' Hz' : '-' }} | {{ voicePackTitleForFile(f.name) }} |
设备 Flash 暂无音频 · 点「刷新」查询本地列表