Adding custom metric
维护者通常 1 天内回复
还没有人认领这个 Issue。
评估
- 难度
- 5/5
- 预计耗时
- 一周以上
- 新手友好度
- 25/100
- Issue 类型
- 功能
- 描述清晰度
- 需要澄清
- 活跃度
- 停滞
- 技术栈
- javascript, python
调研方向
首先定位 serverinfo 页面及其现有的指标入口,然后阅读 modem_signal.py,以了解所提议的 LTE 信号输入和输出。确定如何在页面上提供和呈现这些数据;当 LTE 调制解调器信号强度可作为 serverinfo 指标使用时,即视为完成。
由索引模型根据 Issue 内容生成。
描述
Hi! I would like to add LTE modem signal strength to the available data (metrics) provided on the page serverinfo.
I have a Python function which gets this data from LTE modem which can be run as modem_signal.py http://192.168.0.1 and provides the output like Orange PL LTE ▂▃▄.
#!/usr/bin/env python3
"""
Display 4G/5G modem signal strength using vertical bars and show operator + access mode.
Example usage:
python3 modem_signal.py http://admin:[email protected]/
"""
from argparse import ArgumentParser
from huawei_lte_api.Connection import Connection
from huawei_lte_api.Client import Client
import re
SIGNAL_LEVELS = {
0: " ",
1: "▂ ",
2: "▂▃ ",
3: "▂▃▄ ",
4: "▂▃▄▅ ",
5: "▂▃▄▅▇"
}
def parse_dbm(value):
if value is None:
return None
match = re.search(r'-?\d+', str(value))
return int(match.group()) if match else None
def get_signal_level(rsrp: int) -> int:
if rsrp is None:
return 0
if rsrp >= -80:
return 5
elif rsrp >= -90:
return 4
elif rsrp >= -100:
return 3
elif rsrp >= -110:
return 2
elif rsrp >= -120:
return 1
else:
return 0
def generate_signal_bars(level: int, total: int = 5) -> str:
"""
Create a vertical bar chart (like a phone signal icon).
Each bar grows higher from left to right.
"""
result = []
for row in range(total, 0, -1):
line = ""
for col in range(1, total + 1):
if col <= level and row <= col:
line += "▇ "
else:
line += " "
result.append(line.rstrip())
return "\n".join(result)
def main():
parser = ArgumentParser()
parser.add_argument('url', type=str)
parser.add_argument('--username', type=str)
parser.add_argument('--password', type=str)
args = parser.parse_args()
with Connection(args.url, username=args.username, password=args.password) as connection:
client = Client(connection)
# Get signal and network info
signal_info = client.device.signal()
status_info = client.monitoring.status()
network_type_raw = str(status_info.get('CurrentNetworkType', '0'))
network_type_map = {
'0': 'No Service',
'1': 'GSM', '2': 'GPRS', '3': 'EDGE',
'4': 'WCDMA', '5': 'HSDPA', '6': 'HSUPA', '7': 'HSPA',
'8': 'TDSCDMA', '9': 'HSPA+',
'10': 'EVDO Rev.0', '11': 'EVDO Rev.A', '12': 'EVDO Rev.B',
'13': '1xRTT', '14': 'UMB', '15': '1xEVDV', '16': '3xRTT',
'17': 'HSPA+ 64QAM', '18': 'HSPA+ MIMO',
'19': 'LTE', '41': 'LTE CA',
'101': 'NR5G NSA', '102': 'NR5G SA'
}
plmn_info = client.net.current_plmn()
# Parse and determine values
rsrp = parse_dbm(signal_info.get('rsrp'))
rsrq = signal_info.get('rsrq')
sinr = signal_info.get('sinr')
level = get_signal_level(rsrp)
# bars = generate_signal_bars(level)
bars = SIGNAL_LEVELS[level]
operator_name = plmn_info.get('FullName') or plmn_info.get('ShortName') or "Unknown"
# Map internal mode codes (if any) to readable labels
mode_map = {
"LTE": "4G",
"WCDMA": "3G",
"GSM": "2G",
"NR5G": "5G",
"NR": "5G"
}
readable_mode = network_type_map.get(network_type_raw, f"Unknown ({network_type_raw})")
# Display
print(f"{operator_name} {readable_mode} {bars}")
# print(bars)
# print(f"\n RSRP: {signal_info.get('rsrp')}")
# if rsrq: print(f" RSRQ: {rsrq}")
# if sinr: print(f" SINR: {sinr}")
if __name__ == "__main__":
main()
What is the best way to embed it to the serverinfo page?
- 主要语言
- JavaScript
- 星标
- 133
- 派生
- 67
- 平均合并
- 22 小时 55 分钟
- 30 天内合并 PR
- 53
环境准备
- 没有 Dockerfile 或 Docker Compose 文件
- 没有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
nextcloud/serverinfo 的其他 Issue
-
Database checks: `Select_full_join` warning is caused by the setup checks' own schema introspection未关闭
难度 4/5 3-5 天 新手友好度 45/100
nextcloud/serverinfo#1245 ·
维护者通常 1 天内回复
-
Database checks: ∞% reported as Failing when counter is zero; no way to acknowledge/mute a check未关闭0. Needs triage bug
难度 5/5 一周以上 新手友好度 35/100
nextcloud/serverinfo#1231 ·
维护者通常 1 天内回复
-
0. Needs triage enhancement
难度 4/5 3-5 天 新手友好度 48/100
nextcloud/serverinfo#1248 ·
维护者通常 1 天内回复
-
1. to develop bug
难度 4/5 3-5 天 新手友好度 48/100
nextcloud/serverinfo#1224 · 5 条评论 · 1 个 reaction ·
维护者通常 1 天内回复
-
0. Needs triage bug
难度 3/5 1-2 天 新手友好度 55/100
nextcloud/serverinfo#1223 ·
维护者通常 1 天内回复
查看 nextcloud/serverinfo 的全部 Issue
相似的 Issue
-
难度 1/5 1 小时以内 新手友好度 88/100
维护者通常 1 天内回复
-
help wanted
难度 2/5 1-3 小时 新手友好度 77/100
Aethelgard-Systems/agent-postbox#32 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 76/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 78/100
SamuelNDCE/plume#42 ·
维护者通常 1 天内回复
-
[UI] Theme Provider Props table overflows on mobile viewports可能已有人在做 @SajanBisht 今天认领。 未关闭framework/gatsby help wanted kind/bug
难度 2/5 1-3 小时 新手友好度 78/100
layer5io/layer5#8264 · 1 条评论 ·
维护者通常 3 天内回复