You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Arduino气象站ThingSpeak数据自定义图表可视化方案咨询

嘿,刚好我之前折腾过类似的Arduino气象站+ThingSpeak的可视化需求,给你几个靠谱的方向:

一、用前端可视化库自己搭(最灵活,完全自定义)

这是我最推荐的方式,自由度最高,能轻松实现你要的时间区间选择和点选详情功能,常用的库有两个:

Chart.js(轻量易上手)

它是个轻量级的JavaScript图表库,自带tooltip(点选显示详情)功能,配合ThingSpeak的API就能快速实现需求。

  • 核心步骤:
    1. 写个简单的HTML页面,引入Chart.js的CDN
    2. 添加时间选择按钮/下拉框,监听点击事件
    3. 通过ThingSpeak的REST API拉取对应时间范围的数据(API支持按天/小时/分钟筛选)
    4. 把数据传入Chart.js生成折线图,配置tooltip显示详细数据

给你个极简示例代码(替换成你的频道ID和API密钥就行):

<!DOCTYPE html>
<html>
<head>
    <title>我的气象站仪表盘</title>
    <script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
</head>
<body>
    <div style="margin: 20px;">
        <button onclick="loadData('day')">今日数据</button>
        <button onclick="loadData('week')">本周数据</button>
        <button onclick="loadData('month')">本月数据</button>
    </div>
    <canvas id="weatherChart" style="width:80%;height:400px;margin:0 auto;"></canvas>

    <script>
        // 替换成你的ThingSpeak频道信息
        const CHANNEL_ID = "123456";
        const READ_API_KEY = "ABCDEFGHIJKLMNOP";
        let weatherChart;

        function loadData(range) {
            let timeQuery = "";
            switch(range) {
                case "day":
                    timeQuery = "&days=1"; // 拉取最近1天数据
                    break;
                case "week":
                    timeQuery = "&days=7";
                    break;
                case "month":
                    timeQuery = "&days=30";
                    break;
            }

            // 调用ThingSpeak API获取数据
            fetch(`https://api.thingspeak.com/channels/${CHANNEL_ID}/feeds.json?api_key=${READ_API_KEY}${timeQuery}`)
                .then(res => res.json())
                .then(data => {
                    // 格式化数据:提取时间、温度、湿度(根据你的字段调整)
                    const labels = data.feeds.map(item => new Date(item.created_at).toLocaleString());
                    const tempData = data.feeds.map(item => item.field1); // field1对应温度
                    const humidityData = data.feeds.map(item => item.field2); // field2对应湿度

                    // 销毁旧图表,创建新图表
                    if(weatherChart) weatherChart.destroy();
                    weatherChart = new Chart(document.getElementById("weatherChart"), {
                        type: "line",
                        data: {
                            labels: labels,
                            datasets: [
                                {
                                    label: "温度(°C)",
                                    data: tempData,
                                    borderColor: "#ff6384",
                                    fill: false
                                },
                                {
                                    label: "湿度(%)",
                                    data: humidityData,
                                    borderColor: "#36a2eb",
                                    fill: false
                                }
                            ]
                        },
                        options: {
                            responsive: true,
                            plugins: {
                                tooltip: {
                                    // 自定义tooltip显示内容
                                    callbacks: {
                                        label: function(context) {
                                            return `${context.dataset.label}: ${context.raw}`;
                                        }
                                    }
                                }
                            }
                        }
                    });
                });
        }

        // 页面加载默认显示今日数据
        window.onload = () => loadData("day");
    </script>
</body>
</html>

Plotly.js(更强大的交互)

如果需要更复杂的交互(比如框选缩放、多图表联动),可以用Plotly.js,它默认就支持点选显示详细数据,配置起来也不难,步骤和Chart.js类似,只是图表初始化的代码略有不同。

二、现成的低代码工具(快速搭建,不用写太多代码)

如果不想自己写代码,试试这些工具:

  • Grafana:这是个专业的监控仪表盘工具,能直接把ThingSpeak作为数据源导入,拖拽就能创建交互式图表,自带时间范围选择器(日/周/月/自定义),点选数据点也能显示详情,免费版足够个人使用。
  • ThingsBoard:开源物联网平台,可以导入ThingSpeak数据,然后自定义仪表盘,配置门槛略高,但功能更全面。
三、实用教程思路

如果想跟着教程一步步做:

  1. 先看ThingSpeak的官方文档,熟悉它的REST API怎么调用(重点看feeds.json接口的参数)
  2. 再看Chart.js或Plotly的官方教程,学会基础的折线图和tooltip配置
  3. 把两者结合起来,先实现拉取数据,再添加时间选择的交互逻辑

提醒一下:ThingSpeak免费版有API调用次数限制(每分钟最多15次),所以不要频繁刷新数据哦。

内容的提问来源于stack exchange,提问作者x-fox

火山引擎 最新活动