FMO 魔方
小爱版
📡 {{ currentStation.name }}
{{ connected ? '已连接' : '未连接' }}
📡
{{ connecting ? '正在连接...' : '未连接 FMO 设备' }}
请确保设备与 FMO 盒子在同一局域网
连接设备
QSO 交换成功
{{ qsoCelebrateInfo.from }} ⇄ {{ qsoCelebrateInfo.to }}
✦
{{ currentSpeaker || '—' }}
我
★
新
{{ qsoIcons(speakerQsoCount) }}
{{ currentSpeaker ? (speakerQth || currentGrid || '—') : '方位未知' }}
{{ speakerDeviceInfo }}
N
{{ currentSpeaker ? speakerBearing+(speakerDistance?' · '+distanceText(speakerDistance):'') : '等待呼叫位置' }}
📡 新的QSO: {{ newQsoNotice }}
{{ aprsEventNow.callsign }}
{{ aprsEventNow.text }}
暂无相关动态
当前中继
{{ (currentStation&& currentStation.name) || '—' }}
★
上个发言
{{ timeAgo(lastContact.time) }}
{{ lastContact.callsign }}
{{ lastContact.deviceInfo || '—' }}
{{ lastContact.qth || '—' }}
{{ lastContact.bearing || '—' }}
· {{ distanceText(lastContact.distance) }}
暂无发言记录
🏠 首页
📡 中继
⭐ QSO
🌙 值守屏
⚙️ 设置
QSO 通联记录
{{ qsoCardLoading ? '加载中...' : '刷新' }}
{{ item.callsign===(userInfo&& userInfo.callsign)?'您':item.callsign }}
{{ qsoIcons(item.count) }}
{{ item.lastGrid || '—' }}
· {{ qthCache[item.lastGrid.toUpperCase()]||gridToLocation(item.lastGrid) }}
· {{ timeAgo(item.lastTime) }}
已加载全部
向下滚动加载更多...
{{ !connected ? '请先连接' : (qsoCardLoading ? '加载中...' : (qsoCardStatus||'暂无 QSO 记录,点击刷新加载')) }}
音频:
{{ isMuted ? '🔇' : '🔊' }}
{{ volume.toFixed(1) }}
{{ audioCtxState==='running' ? '⏸ 暂停监听' : '▶ 开始监听' }}
{{ audioStatusText }}
{{ speakerDistance }} km
{{ userInfo&& userInfo.callsign ? userInfo.callsign : '我' }} · 我
{{ deviceQth }}
{{ currentSpeaker }}
{{ speakerQth }}
{{ currentSpeaker }}
{{ speakerDistance ? speakerDistance + ' km' : '' }}{{ speakerDistance&& speakerBearing ? ' · ' : '' }}{{ speakerBearing || '' }}
{{ speakerQth }}
🎧 正在守听
等待有人发言…
{{ audioCtxState==='running' ? '⏸ 暂停监听' : '▶ 开始监听' }}
+
-
◎
活跃
收藏
全部
当前:
{{ currentStation.name || currentStation.uid }}
{{ s.name || '未命名' }}
收藏
UID: {{ s.uid }}
获取中继信息中...
{{ !connected ? '请先连接' : stationTab==='active' ? '暂无活跃中继' : stationTab==='pinned' ? '暂无收藏中继' : '点击加载' }}
◀ 上一个
下一个 ▶
刷新当前
刷新收藏
这个QSO 通联记录
{{ qsoCardLoading ? '加载中...' : '刷新' }}
{{ item.callsign===(userInfo&& userInfo.callsign)?'我':item.callsign }}
{{ qsoIcons(item.count) }}
{{ item.lastGrid || '—' }}
· {{ qthCache[item.lastGrid.toUpperCase()]||gridToLocation(item.lastGrid) }}
· {{ timeAgo(item.lastTime) }}
已加载全部
向下滚动加载更多...
{{ !connected ? '请先连接' : (qsoCardLoading ? '加载中...' : (qsoCardStatus||'暂无 QSO 记录,点击刷新加载')) }}
通联历史(实时推送)
触发推送
{{ h.callsign || h.fromCallsign || '—' }}
→
{{ (userInfo&& userInfo.callsign) || '本地' }}
{{ h.grid || '' }} · {{ formatDateTime(h.utcTime || h.timestamp) }}
等待推送...
通联详情
{{ JSON.stringify(qsoDetail, null, 2) }}
关闭
💬
消息
收件箱
发送
{{ m.from }}
{{ formatDateTime(m.timestamp) }}
{{ m.preview || '点击查看详情' }}
{{ connected ? '点击加载' : '请先连接' }}
加载更多
发送
消息详情
{{ JSON.stringify(msgDetail, null, 2) }}
标为已读
关闭
📡
连接设置
{{ protocol }}://{{ address }}
{{ connected ? '已连接到 FMO 设备' : '未连接' }}
修改
打开页面时自动连接
📻
本地电台
模式:
正常
待机
呼号
{{ (userInfo&& userInfo.callsign) || '—' }}
UID
{{ ((userInfo&& userInfo.uid)||'—') }}
设备
{{ deviceName || '—' }}
WLAN IP
{{ (userInfo&& userInfo.wlanIP) || '—' }}
天线型号
{{ antennaModel || '—' }}
天线高度
{{ antennaHeight || '—' }}M
位置
{{ deviceQth || '—' }}
中继数
{{ stationList.length }}
通联次数
{{ qsoTotalCount }}
MQTT 主机
{{ (userInfo&& userInfo.mqttHost) || '—' }}
MQTT 端口
{{ ((userInfo&& userInfo.mqttPort)||'—') }}
证书指纹
{{ (userInfo&& userInfo.certFingerprint) || '—' }}
颁发者SN
{{ ((userInfo&& userInfo.issuerSn)||'—') }}
屏幕模式
{{ screenMode===1 ? '待机' : '正常' }}
📟
设备信息
设备名称
保存
天线型号
保存
天线高度(M)
保存
工作频率
保存
🛰️
APRS 配置
登录呼号
保存
个性化备注
保存
APRS 类型
类型 {{ n }}
保存
读取全部配置
重启 APRS 服务
📝
QSO 与广播
QSO 祝福语
保存
{{ qsoBlessBytes }}/63字节
全服广播
用户广播
📍
坐标管理
FMO 存储坐标
{{ fmoCoord ? fmoCoord.latitude.toFixed(6)+', '+fmoCoord.longitude.toFixed(6) : '—' }}
读取坐标
获取当前位置
设置坐标
👤
当前角色
当前角色:
{{ cfgRole || '—' }}
⚙️
系统控制
🔄 软重启设备
🚨 紧急模式
{{ formatTime(l.ts) }}
{{ l.msg }}
暂无操作记录
📢
发布活动
主题
内容
发布
📜
活动历史
刷新
清空全部
{{ a.topic || '无主题' }}
来自 UID: {{ a.fromUID }} · {{ formatDateTime(a.timestamp) }}
{{ a.content || '' }}
{{ connected ? '点击刷新加载' : '请先连接' }}
🚫
屏蔽用户
刷新
UID: {{ b.uid }}
{{ b.name || b.callsign || '' }}
解除
暂无屏蔽用户
🔄
固件升级
升级通道
稳定版
内测版
查询更新
{{ upgradeStatus }}
{{ upgradeProgress }}%
开始升级
🖥️ 服务器:
{{ s.name || s.address }}
✕
+ 添加
ws
wss
添加
取消
📡 连接 FMO
✕
ws://
wss://
📋
{{ connected ? '断开连接' : '连接设备' }}
打开页面时自动连接
📋 FMO 地址
✕
还没有保存的地址。连接成功后会自动记住当前地址,也可以在下方手动添加。
{{ a.name || a.addr }}
{{ a.proto }}://{{ a.addr }}
✏️
🗑️
{{ addrEditIdx>=0 ? '编辑地址' : '添加地址' }}
ws://
wss://
不同使用环境(家/外网/中继旁)可各存一个地址,点击列表即可切换。
取消编辑
确定
🎵 波形样式
✕
{{ s.name }}
-12.0 dBFS
📡 中继列表
{{ stationModalLoading ? '刷新中...' : '刷新' }}
✕
{{ s.name || '未命名' }}
UID: {{ s.uid }}
收藏
暂无中继数据,点击刷新加载
加载中...
{{ qsoCardDetailCallsign===(userInfo&& userInfo.callsign)?'您':qsoCardDetailCallsign }}
⭐ {{ qsoCardDetailRecords.length }} 次通联
✕
日期:
{{ formatDateTime(rec.timestamp) }}
接收方:
{{ rec.toCallsign||'—' }}
/ {{ rec.toGrid||'—' }}
{{ qthCache[rec.toGrid.toUpperCase()]||gridToLocation(rec.toGrid) }}
发送方:
{{ rec.fromCallsign||'—' }}
/ {{ rec.fromGrid||'—' }}
{{ qthCache[rec.fromGrid.toUpperCase()]||gridToLocation(rec.fromGrid) }}
频率:
{{ rec.freqHz?(rec.freqHz/1e6).toFixed(4)+' MHz':'—' }}
中继:
{{ rec.relayName||'—' }}
({{ rec.relayAdmin }})
留言:
{{ rec.toComment }}
加载中...