数码之家

 找回密码
 立即注册
搜索
查看: 1379|回复: 21

[Arduino] 求Arduino编程的8266 web绘制温度曲线的代码或者库

[复制链接]
发表于 2022-8-4 08:35:57 | 显示全部楼层 |阅读模式

爱科技、爱创意、爱折腾、爱极致,我们都是技术控

您需要 登录 才可以下载或查看,没有账号?立即注册

x
最近发现我们卧室的CH空调温度非常不准,实际温度和设定温度严重不符,室内温度受室外温度影响严重,温度波动大(变频空调用出了定频空调的感觉)。于是想写个程序利用8266模块记录开了空调后房间里温度的变化曲线,以此来简单检测下家里的几个不同牌子的空调倒地谁的温度更准确波动更小。

无奈自己技术烂的可以,所以在万能的论坛求教一下万能的坛友,有没有Arduino(我这个小白只会这个)编程的8266用的可以在web页面上绘制曲线的代码或者库?
不胜感激。
发表于 2022-8-11 10:32:06 | 显示全部楼层
本帖最后由 fryefryefrye 于 2022-8-11 10:45 编辑
lemontreenm 发表于 2022-8-11 09:32
效果很好啊。不过arduino 8266能用吗?

理论上可以。
先把一个模板html放在8266的文件系统,开web服务。
浏览器访问后,会打开这个html模板。
然后html有脚本通过web地址访问数据,你在web服务里做一下,某个地址,返回所有的数据。
图就能画出来了。

  1. <html>
  2. <head>
  3.    <title>测试标题</title>
  4.    <script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
  5.    <script src="http://code.highcharts.com/highcharts.js"></script>   
  6.    <script src="http://code.highcharts.com/modules/data.js"></script>
  7. </head>
  8. <body>
  9. <div id="container" style="width: 850px; height: 400px; margin: 0 auto"></div>
  10. <script language="JavaScript">
  11. $(document).ready(function() {
  12. var chart = {
  13.    //type: 'scatter',
  14.    zoomType: 'x'
  15. };
  16.    var title = {
  17.       text: '测试名称'   
  18.    };
  19.    var subtitle = {
  20.       text: 'Source: xxx'
  21.    };
  22.    var xAxis = {
  23.       tickInterval: 60 * 1000, // time interval of xAxis in ms
  24.       tickWidth: 0,
  25.       gridLineWidth: 1,
  26.       labels: {
  27.          align: 'left',
  28.          x: 3,
  29.          y: -3
  30.       }
  31.    };
  32. var yAxis = [{ // 左边 Y 轴
  33.       title: {
  34.          text: null
  35.       },
  36.       labels: {
  37.          align: 'left',
  38.          x: 3,
  39.          y: 16,
  40.          format: '{value:.,0f}'
  41.       },
  42.       showFirstLabel: false
  43.   },{ // 右边 Y 轴
  44.       linkedTo: 0,
  45.       gridLineWidth: 0,
  46.       opposite: true,
  47.       title: {
  48.          text: null
  49.       },
  50.       labels: {
  51.          align: 'right',
  52.          x: -3,
  53.          y: 16,
  54.          format: '{value:.,0f}'
  55.       },
  56.       showFirstLabel: false
  57.    }
  58. ];



  59.    var tooltip = {
  60.       shared: true,
  61.       crosshairs: true
  62.    }

  63.    var legend = {
  64.       align: 'left',
  65.       verticalAlign: 'top',
  66.       y: 20,
  67.       floating: true,
  68.       borderWidth: 0
  69.    };
  70.    

  71.    var json = {};

  72.    json.chart = chart;
  73.    json.title = title;
  74.    json.subtitle = subtitle;
  75.    json.xAxis = xAxis;
  76.    json.yAxis = yAxis;
  77.    json.tooltip = tooltip;
  78.    json.legend = legend;


  79.    $.get('dailychartdata', function (csv) {
  80.       var data = {
  81.          csv: csv
  82.       };
  83.       json.data = data;
  84.       $('#container').highcharts(json);
  85.    });   
  86. });
  87. </script>
  88. </body>
  89. </html>
复制代码
  1. 模板文件第87行的URL地址,请求数据的时候,按以下格式返回数据即可。

  2. 一根线数据格式示例:

  3. 2021-08-20 23:59:01,1
  4. 2021-08-21 23:59:00,2
  5. 2021-08-22 23:59:01,2
  6. 2021-08-23 23:59:00,1
  7. 2021-08-24 23:59:01,1
  8. 2021-08-25 23:59:00,1
复制代码


回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-8-11 09:32:34 | 显示全部楼层
fryefryefrye 发表于 2022-8-10 22:37
还是highchart效果好,还能随意放大,看任意一点数据。这是空调功率:

效果很好啊。不过arduino 8266能用吗?
回复 支持 反对

使用道具 举报

发表于 2022-8-11 08:08:42 | 显示全部楼层
空调小白,难怪家里空调设定同一个温度,不同时候的体感温度不同,原来不是自己感觉的问题。
回复 支持 反对

使用道具 举报

发表于 2022-8-10 22:37:52 | 显示全部楼层
本帖最后由 fryefryefrye 于 2022-8-10 22:41 编辑

还是highchart效果好,还能随意放大,看任意一点数据。这是空调功率:


这是房间温度湿度

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-8-10 18:08:59 | 显示全部楼层
zipcord 发表于 2022-8-5 09:41
这个host应该是主机名,只是标识而已,不好意思啊,这个好久以前看到的,我的研究也不是很深,昨天给你说 ...

对,我要的就是这么个效果。
回复 支持 反对

使用道具 举报

发表于 2022-8-10 15:04:04 | 显示全部楼层
我感觉你应该研究的是js
回复 支持 反对

使用道具 举报

发表于 2022-8-5 19:36:04 | 显示全部楼层
zipcord 发表于 2022-8-5 09:41
这个host应该是主机名,只是标识而已,不好意思啊,这个好久以前看到的,我的研究也不是很深,昨天给你说 ...

瞬间解决问题了,好评。
回复 支持 1 反对 0

使用道具 举报

发表于 2022-8-5 11:38:11 | 显示全部楼层
zipcord 发表于 2022-8-5 09:41
这个host应该是主机名,只是标识而已,不好意思啊,这个好久以前看到的,我的研究也不是很深,昨天给你说 ...

谢谢,支持一下,跟学。
回复 支持 反对

使用道具 举报

发表于 2022-8-5 09:41:25 | 显示全部楼层
lemontreenm 发表于 2022-8-4 16:39
M给了。另外问下,这个例程里面除了wifi信号名称和密码以外还有个host = "graph"需要修改,这个是什么内 ...

这个host应该是主机名,只是标识而已,不好意思啊,这个好久以前看到的,我的研究也不是很深,昨天给你说的那个示例有点难,你看看示例里面的AdvancedWebServer示例,这个好像更简单点。 你要的效果应该是这个样子吧,

下面是画图的关键代码,里面的x,y,y2 替换成你的数据应该就可以了,具体要试试吧
void drawGraph() {
  String out;
  out.reserve(2600);
  char temp[70];
  out += "<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" width=\"400\" height=\"150\">\n";
  out += "<rect width=\"400\" height=\"150\" fill=\"rgb(250, 230, 210)\" stroke-width=\"1\" stroke=\"rgb(0, 0, 0)\" />\n";
  out += "<g stroke=\"black\">\n";
  int y = rand() % 130;
  for (int x = 10; x < 390; x += 10) {
    int y2 = rand() % 130;
    sprintf(temp, "<line x1=\"%d\" y1=\"%d\" x2=\"%d\" y2=\"%d\" stroke-width=\"1\" />\n", x, 140 - y, x + 10, 140 - y2);
    out += temp;
    y = y2;
  }
  out += "</g>\n</svg>\n";

  server.send(200, "image/svg+xml", out);
}
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-8-5 09:27:07 | 显示全部楼层
40560335 发表于 2022-8-4 23:08
咋跟我想法一样,我也是一直想做个,但是实在是懒得动,一个是冬天暖气不给力,一个和你一样,感觉空调不对 ...

没装挡风板。空调装的位置都不是直吹人的位置,而且可以通过改变出风口朝向不直接吹人,挡风板完全没用。
回复 支持 反对

使用道具 举报

发表于 2022-8-5 09:21:05 | 显示全部楼层
lemontreenm 发表于 2022-8-4 16:39
M给了。另外问下,这个例程里面除了wifi信号名称和密码以外还有个host = "graph"需要修改,这个是什么内 ...

这里的host 应该是主机名,相当于一个标识而已,这个可改可不改,不影响
回复 支持 反对

使用道具 举报

发表于 2022-8-4 23:08:01 | 显示全部楼层
咋跟我想法一样,我也是一直想做个,但是实在是懒得动,一个是冬天暖气不给力,一个和你一样,感觉空调不对劲,忽冷忽热,有时候设置26度就很凉快,有时候设置25度还总是把人热醒,一看温度计都28度了,外机还不启动,但是听你这么一说,我就更懒得做了,因为我家也是长虹空调。。。。这下我就知道了,我家的长虹空调温度不准、启停温差大并不是个例。另外问下,你家空调是不是安装了挡风板?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-8-4 16:39:34 | 显示全部楼层
zipcord 发表于 2022-8-4 11:24
对你有用了记得给点m币,这个论坛对看帖的人太苛刻了。

M给了。另外问下,这个例程里面除了wifi信号名称和密码以外还有个host = "graph"需要修改,这个是什么内容?不知道怎么修改了
回复 支持 反对

使用道具 举报

发表于 2022-8-4 11:24:00 | 显示全部楼层
对你有用了记得给点m币,这个论坛对看帖的人太苛刻了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-8-4 11:12:45 | 显示全部楼层
zipcord 发表于 2022-8-4 10:48
你开始没说啊,我记得esp8266里面有个标准例程,可以直接显示到页面的。改一下就可以用。

...

好的,我看下这个例程
回复 支持 反对

使用道具 举报

发表于 2022-8-4 10:48:41 | 显示全部楼层
你开始没说啊,我记得esp8266里面有个标准例程,可以直接显示到页面的。改一下就可以用。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

打赏

参与人数 1家元 +40 收起 理由
lemontreenm + 40 熱心助人

查看全部打赏

回复 支持 1 反对 0

使用道具 举报

发表于 2022-8-4 10:47:46 | 显示全部楼层
lemontreenm 发表于 2022-8-4 09:57
存数据我会的。我就是没搞过把数据在web上以曲线的形式显示出来。或者说关于web的我基本都不会 ...

你准备怎么存储,怎么读取,我是对于以什么格式存储在SPIFSS,再如何读取比较没信心,之前以文本方式存储在tf卡,经常遇到存储出错
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-8-4 09:57:09 | 显示全部楼层
本帖最后由 lemontreenm 于 2022-8-4 09:59 编辑
muyan 发表于 2022-8-4 09:50
你先存储数据,读取显示那是多简单的事情

highcharts https://www.highcharts.com.cn/demo/highcharts ...

存数据我会的。我就是没搞过把数据在web上以曲线的形式显示出来。或者说关于web的我基本都不会
回复 支持 反对

使用道具 举报

发表于 2022-8-4 09:50:24 | 显示全部楼层
lemontreenm 发表于 2022-8-4 09:36
就是不想用点灯或者贝壳所以才发这个帖子的

你先存储数据,读取显示那是多简单的事情

highcharts https://www.highcharts.com.cn/demo/highcharts
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-6-9 21:02 , Processed in 0.218401 second(s), 13 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

快速回复 返回顶部 返回列表