← 返回题库
初级

解析土壤七合一传感器上报

未完成
初级参考 完整示例代码供参考,建议自己理解后重新输入
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-greenfarm/state_00/devices.csv").read()
    devs = pd.read_csv(StringIO(devs_csv))
    def parse_soil_payload(payload_str):
        p = json.loads(payload_str)
        readings = p.get('readings', {})
        result = []
        for metric, value in readings.items():
            result.append({'device_id':p['device_id'],'zone':p.get('zone',''),'metric':metric,'value':value,'timestamp':p['timestamp']})
        return result
    payload = '{"device_id":"SOIL-A01","timestamp":1748736000,"zone":"A","readings":{"soil_moisture":72.5,"soil_temp":22.3,"soil_ec":2.1,"soil_ph":6.2,"nitrogen":145,"phosphorus":48,"potassium":220}}'
    rows = parse_soil_payload(payload)
    print("Parsed " + str(len(rows)) + " readings from SOIL-A01:")
    for r in rows:
        print("  " + r['metric'] + "=" + str(r['value']))
    soil_devs = devs[devs['device_type']=='soil_sensor']
    print("Soil sensors: " + str(len(soil_devs)))

示例

输入
solve()
期望输出
Parsed 7 readings from SOIL-A01:
  soil_moisture=72.5
  soil_temp=22.3
  soil_ec=2.1
  soil_ph=6.2
  nitrogen=145
  phosphorus=48
  potassium=220
Soil sensors: 6
Python 代码 🔒 登录后使用
🔒

登录后即可练习

注册免费账号,在浏览器中直接运行 Python 代码