《ESP32 物联网全栈实战-11》小程序进阶
第 11 篇小程序进阶——ECharts 图表 历史查询 告警推送上篇做了一个能看能控的基础版。这篇加上三个进阶功能温度曲线ECharts、历史数据查询HTTP API InfluxDB、阈值告警推送。1. 集成 ECharts 温度曲线微信小程序用echarts-for-weixin组件。这是 ECharts 官方适配的小程序版。安装# 项目根目录npminstallec-canvas# 然后开发者工具 → 工具 → 构建 npm页面中引入pages/history/history.json{usingComponents:{ec-canvas:../../ec-canvas/ec-canvas},navigationBarTitleText:温度历史}pages/history/history.wxmlviewclasscontainerviewclasschart-boxec-canvasidtempChartcanvas-idtempChartec{{ec}}/ec-canvas/viewviewclasstime-tabsbuttonsizeminibindtaploadHistorydata-range1h近1小时/buttonbuttonsizeminibindtaploadHistorydata-range6h近6小时/buttonbuttonsizeminibindtaploadHistorydata-range24h近24小时/button/view/viewpages/history/history.jsimport*asechartsfrom../../ec-canvas/echarts;Page({data:{ec:{// 懒加载canvas 渲染完成后才初始化 EChartslazyLoad:true,},tempData:[],humiData:[],},onLoad(){// 获取 ec-canvas 组件实例this.ecComponentthis.selectComponent(#tempChart);this.initChart();this.loadHistory(1h);},initChart(){this.ecComponent.init((canvas,width,height,dpr){constchartecharts.init(canvas,null,{width:width,height:height,devicePixelRatio:dpr,});chart.setOption(this.getChartOption());this.chartchart;returnchart;});},getChartOption(){return{color:[#ff6b6b,#48dbfb],legend:{data:[温度,湿度],bottom:0},grid:{top:20,bottom:40,left:50,right:20},xAxis:{type:time,axisLabel:{fontSize:10}},yAxis:[{type:value,name:°C,min:0,max:50},{type:value,name:%,min:0,max:100},],tooltip:{trigger:axis},series:[{name:温度,type:line,smooth:true,data:[],yAxisIndex:0,},{name:湿度,type:line,smooth:true,data:[],yAxisIndex:1,},],};},asyncloadHistory(range){wx.showLoading({title:加载中...});try{constresawaitwx.request({url:https://api.your-server.com/history?range${range},method:GET,});consttempDatares.data.temp.map(d[newDate(d.time),d.value]);consthumiDatares.data.humi.map(d[newDate(d.time),d.value]);this.chart.setOption({series:[{data:tempData},{data:humiData},],});}catch(err){wx.showToast({title:加载失败,icon:error});}finally{wx.hideLoading();}},});2. 后端 API——从 InfluxDB 查历史数据小程序不能直接连数据库需要一个中间 API 服务。最简单的方案用 Node.js/Express 写一个轻量 API跑在服务器上。// api-server.js (Node.js Express)constexpressrequire(express);const{InfluxDB}require(influxdata/influxdb-client);constappexpress();constinfluxnewInfluxDB({url:http://localhost:8086,token:my-super-secret-token,});app.get(/history,async(req,res){constrangereq.query.range||1h;// 1h / 6h / 24hconstqueryApiinflux.getQueryApi(iot-org);constqueryfrom(bucket: sensor-data) | range(start: -${range}) | filter(fn: (r) r._measurement mqtt_consumer) | filter(fn: (r) r._field temp or r._field humi) | aggregateWindow(every:${range1h?30s:5m}, fn: mean);consttemp[],humi[];forawait(const{values,row}ofqueryApi.iterateRows(query)){constpoint{time:row[2],value:row[5]};if(row[4]temp)temp.push(point);elsehumi.push(point);}res.json({temp,humi});});app.listen(3000,()console.log(API Server on :3000));3. 阈值告警推送方案 A小程序内告警// 在 MQTT message 回调中this.client.on(message,(topic,payload){constdataJSON.parse(payload.toString());if(data.temp40){wx.showModal({title:⚠️ 高温警告,content:当前温度${data.temp}°C超过阈值 40°C,showCancel:false,});// 播放提示音小程序支持wx.vibrateLong();}this.setData({temperature:data.temp.toFixed(1),humidity:data.humi.toFixed(1),});});方案 B微信服务通知需要订阅消息流程 1. 用户点击订阅告警按钮 → 调用 wx.requestSubscribeMessage 2. 用户同意 → 拿到一次推送权限 3. 后端检测到温度超标 → 调用微信 API 推送模板消息// 小程序端订阅wx.requestSubscribeMessage({tmplIds:[模板ID_高温告警],success(res){if(res[模板ID_高温告警]accept){// 保存用户 openid → 后端用于推送}},});4. 增加刷新与重连机制IoT 小程序最大的痛点是不知道数据为什么不更新了。增强健壮性Page({data:{connected:false,lastUpdate:},onLoad(){this.connectMQTT();// 每 30 秒检查一次 MQTT 心跳this.heartbeatTimersetInterval((){if(!this.data.connected){console.log(重连中...);this.connectMQTT();}},30000);},// 记录最后更新时间updateLastTime(){constnownewDate();this.setData({lastUpdate:${now.getHours()}:${now.getMinutes()}:${now.getSeconds()},});},// 手动刷新refreshData(){this.client.publish(device/refresh/cmd,1);},onUnload(){clearInterval(this.heartbeatTimer);if(this.client)this.client.end();},});5. 调试技巧问题排查方法MQTT 连不上检查wss://域名是否已配置到白名单数据不更新打开开发者工具 → Console → 看有没有message日志ECharts 白屏检查ec-canvas组件路径是否正确API 请求失败检查服务器域名白名单request合法域名真机不显示预览时勾选不校验合法域名仅开发有效真机必须配置下一篇完整项目——智能 WiFi 插座从硬件到小程序全链路

相关新闻

【机器学习入门】多元线性回归超详细教程 —— 从原理到 sklearn 代码全实现

【机器学习入门】多元线性回归超详细教程 —— 从原理到 sklearn 代码全实现

文章目录前言一、线性回归是什么?二、数据集介绍三、sklearn LinearRegression API 详解3.1 构造函数参数3.2 常用属性3.3 常用方法四、代码案例:多元线性回归预测血压五、结果分析5.1 回归方程5.2 系数解读5.3 模型评估六、避坑指南:那些年我…

2026/8/5 23:55:04 阅读更多 →
【MV】Stereo Vision 1: Fundamentals of Multiple View Geometry

【MV】Stereo Vision 1: Fundamentals of Multiple View Geometry

文章目录1、多视几何2、三角化(Triangulation)3、双目立体视觉原理1、多视几何 图注: 同一三维点 (X) 在不同相机中的投影满足 (xiKi[Ri∣ti]X)(x_iK_i[R_i\mid t_i]X)(xi​Ki​[Ri​∣ti​]X),每幅图像对应独立的内参与外参。 图…

2026/8/5 23:55:04 阅读更多 →
元初混沌体系架构 第二卷 第六篇 7G通–时–空–频–能 五维统一底层架构

元初混沌体系架构 第二卷 第六篇 7G通–时–空–频–能 五维统一底层架构

第六篇 7G通–时–空–频–能 五维统一底层架构承启前置 四维壁垒终结与大一统架构开篇本卷前五篇已依次完成7G顶层公理立论、三代代际断层界定、地星两域边界切割、时空畸变扰动公理搭建、光速时延壁垒与鸿蒙补偿模型落地,彻底拆解星际通信两大核心物理桎梏&#…

2026/8/5 23:55:04 阅读更多 →

最新新闻

JMeter教程|0到1学会接口性能压测第12课-JMeter并发测试

JMeter教程|0到1学会接口性能压测第12课-JMeter并发测试

JMeter是一款开源免费的接口性能压测工具,在企业中用的较为广泛,上节我们学习了JMeter常用监听器。今天分享JMeter并发测试,后续文章都会系统分享干货,带大家从0到1学会JMeter,另外还有教程等同步资料,文末…

2026/8/6 0:54:24 阅读更多 →
ncmdump终极指南:专业解密网易云音乐NCM格式的完整方案

ncmdump终极指南:专业解密网易云音乐NCM格式的完整方案

ncmdump终极指南:专业解密网易云音乐NCM格式的完整方案 【免费下载链接】ncmdump ncmdump - 网易云音乐NCM转换 项目地址: https://gitcode.com/gh_mirrors/ncmdu/ncmdump 在数字音乐版权保护日益严格的今天,网易云音乐NCM格式转换成为众多音乐爱…

2026/8/6 0:54:24 阅读更多 →
AI写产品评测到底靠不靠谱?揭秘92%的评测文章被算法识别的3个致命破绽

AI写产品评测到底靠不靠谱?揭秘92%的评测文章被算法识别的3个致命破绽

更多请点击: https://codechina.net 第一章:AI写产品评测到底靠不靠谱?揭秘92%的评测文章被算法识别的3个致命破绽 当AI生成的评测文章在搜索引擎中批量涌现,平台反作弊系统正以前所未有的精度将其标记为“低信度内容”。第三方实…

2026/8/6 0:54:24 阅读更多 →
AI学日语到底靠不靠谱?实测12款工具+378小时数据对比,这3个模型真正改变学习轨迹

AI学日语到底靠不靠谱?实测12款工具+378小时数据对比,这3个模型真正改变学习轨迹

更多请点击: https://kaifayun.com 第一章:AI学日语到底靠不靠谱?实测12款工具378小时数据对比,这3个模型真正改变学习轨迹 过去三个月,我们对12款主流AI日语学习工具(含ChatGPT-4o、Claude 3.5 Sonnet、G…

2026/8/6 0:54:24 阅读更多 →
政务外网环境下视频监控资源整合:新增仓库接入实施方案

政务外网环境下视频监控资源整合:新增仓库接入实施方案

一、现状本项目处于政务外网严格的网络边界环境内。原仓库视频监控系统已稳定运行,包含13路存量监控点位,覆盖主要出入口及核心库区。二、需求接入策略与技术路线: 针对本次新建的12路监控摄像头,将严格遵循政务外网接入规范&…

2026/8/6 0:53:24 阅读更多 →
excel怎么转txt?盘点2026年7款PDF格式转换工具,覆盖单转与批量导出

excel怎么转txt?盘点2026年7款PDF格式转换工具,覆盖单转与批量导出

上个月给公司投标,好不容易把技术方案定稿,甲方突然说还得附一份单独的材料清单,格式必须是纯文本TXT。我手里只有一份完整的方案PDF,打开看着满屏的表格和条款,心里直犯嘀咕:难道要手动敲一遍?…

2026/8/6 0:52:23 阅读更多 →

日新闻

深入解析LimboAI C++内核:架构设计与性能优化实战

深入解析LimboAI C++内核:架构设计与性能优化实战

1. 项目概述:为什么我们需要深入LimboAI的C内核?如果你是一名使用Godot引擎的游戏开发者,尤其是对AI行为逻辑有较高要求的项目,那么LimboAI这个名字你大概率不会陌生。它作为Godot 4生态中一个备受瞩目的行为树与状态机插件&#…

2026/8/6 0:00:06 阅读更多 →
Unity 2D游戏敌人AI系统:基于PlayMaker状态机与2D Toolkit的实战开发

Unity 2D游戏敌人AI系统:基于PlayMaker状态机与2D Toolkit的实战开发

1. 项目概述与核心思路大家好,我是老张,一个在游戏开发一线摸爬滚打了十多年的老码农。今天咱们接着聊《空洞骑士》风格2D动作游戏的Demo制作。上一期我们搭好了基础框架,处理了角色移动和碰撞,这一期,我们要让游戏世界…

2026/8/6 0:00:06 阅读更多 →
被动防火门市场前景发展趋势

被动防火门市场前景发展趋势

被动防火门依靠材质结构、密闭构造阻隔烟火蔓延,无需电控启动,是建筑被动消防系统核心构件,行业依托新规管控、城市更新、工业安全升级迎来稳定扩容,整体朝着合规化、专项化、低碳化、智能化方向发展。现阶段 GB12955‑2024 新版国…

2026/8/6 0:00:06 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/5 15:00:43 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/5 13:13:56 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/5 10:20:36 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/5 23:28:39 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/5 21:00:14 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/5 23:46:51 阅读更多 →