初级
解析Arduino精简JSON上报
未完成
初级参考
完整示例代码供参考,建议自己理解后重新输入
def solve():
from pyodide.http import open_url
from io import StringIO
import pandas as pd, json
devs_csv = open_url("https://data.zuihe.com/dbd/ms-devhub/state_00/devices.csv").read()
devs = pd.read_csv(StringIO(devs_csv))
def parse_arduino(payload_str):
p = json.loads(payload_str)
result = {'device_id':p['id'],'timestamp':p['ts'],'readings':[]}
mapping = {'t':'temperature','h':'humidity','p':'pressure','l':'light'}
units = {'t':'degC','h':'%','p':'hPa','l':'lux'}
for abbrev, full in mapping.items():
if abbrev in p:
result['readings'].append({'metric':full,'value':p[abbrev],'unit':units[abbrev]})
return result
payloads = [
'{"id":"ARD-001","ts":1748736001,"t":25.4,"h":60.2,"p":1013}',
'{"id":"ARD-003","ts":1748736002,"l":3200}',
'{"id":"ARD-002","ts":1748736003,"t":26.1,"h":58.0}',
]
for p in payloads:
r = parse_arduino(p)
print(r['device_id'] + ": " + str([x['metric']+'='+str(x['value']) for x in r['readings']]))
示例
输入
solve()
期望输出
ARD-001: ['temperature=25.4', 'humidity=60.2', 'pressure=1013'] ARD-003: ['light=3200'] ARD-002: ['temperature=26.1', 'humidity=58.0']
👑
升级 VIP
解锁全部题目,畅通无阻地学习
- ✓ 解锁全部训练包所有题目
- ✓ 查看完整参考代码和提示
- ✓ 浏览器内直接运行 Python 代码
- ✓ 自动批改 + 进度追踪
30天
¥18
1年
¥99
2年
¥158
3年
¥199