制作树莓派电子墨水屏日历 – 提供黑白色天气日历图片服务的node程序

这是基于NodeJS的提供黑白色天气日历图片服务的程序,用于制作树莓派墨水屏日历,也可以在oled屏幕、lcd屏幕或者其他任何屏幕上使用,理论上兼容任何分辨率(看不看得清楚是另一回事)

demo

基本说明

做这个项目之时,我想做的是一个墨水屏展示当前天气、24小时温度曲线及日历的小玩具。市面上可以买到的、提供开发资料墨水屏不外乎大连的、微雪的(其实也是大连的),无论哪一种,作为一个电路苦手,我都不想深入了解其驱动和底层实现,我的思路是:

  1. 给树莓派接一个 DS18B20 或者别的基于 1-wired 的温度传感器,因为这类传感器只用接一根GPIO线、并且只需要读取文件就能获取数据,不需要额外写底层代码;
  2. 做一个基于 NodeJS 的程序,用于记录温度变化信息、获取天气预报数据,然后生成一张黑白的图片,开启一个 WEB 服务器提供这张图片;
  3. 稍微修改一下墨水屏提供的示例程序,让它定时从上一步写的服务中获取图片,然后直接在墨水屏上显示图片,这样一来,无论墨水屏提供的示例代码是基于什么语言的,都不难实现;

怎样部署

我设计了两种部署方案:

  1. 在树莓派上部署当前项目;
  2. 在树莓派上部署一个上报温度数据的服务,然后在另一台服务器上部署当前项目;

程序运行时,会检查当前机器(不论是不是树莓派)上有没有DS18B20传感器,如果有的话会每十秒钟读取一次温度,如果没有会继续运行剩下的服务,包括等待其他设备向它上报温度信息;

如果要使用天气预报的服务,你需要去和风天气中注册一个账号,获取一个key写入配置文件.env中

.env的配置项如下:

# 服务监听端口 SERIVCE_PORT=3000 # 天气预报的城市或者地区 WEATHER_LOCATION=guangzhou # 和风天气的key WEATHER_KEY=

如果你选择在一个树莓派中完成所有事情,那么你可以跳过下面的内容,直接去下一章节。

如果你选择把上报天气的程序部署在别的树莓派上,那么你可以在接入了 DS18B20 的树莓派上部署我的另一个项目:

rasp-w1-temp

然后在它的.env中配置:

REPORT_URL=http://当前服务地址:当前服务端口/set

如果你选择自己写一个上报温度的程序,或者用其他的、ESP32之类的设备去代替树莓派,那么你需要做的是写一个程序或者SHELL脚本定时向上述配置地址发起一个POST请求,在里边传递一个如下的JSON数据:

{"temp": 27000}

表示上报一个27.000度的数据,当然,temp这个键值是可配置的,只需要在.env中添加:

TEMP_KEY=foobar

甚至,你可以在获取图片的时候才传递这个参数,程序会同时记录多个不同值的变化信息,来实现同一个程序记录多个设备上报的信息,程序默认会记录最近的8640个数据,8640这个值的配置项为:

CHANGES_LIMIT=8640

DS18B20 的安装方法

DS18B20只有三根线,一根连接3.3v的VCC,一根连接GND,剩下的数据线连接一个GPIO口,默认是GPIO.7,也就是树莓派左边一排GPIO插针从上往下数的第4个;

执行以下的命令启用单总线协议:

sudo modprobe w1-gpio
sudo modprobe w1-therm

编辑/boot/config.txt,在最下面添加一行:

dtoverlay=w1-gpio

然后重启树莓派,你能在/sys/bus/w1/devices/中看到它;

本程序的安装方法

本程序用到了node-canvas,因此建议你先运行下面的命令去装一些库:

sudo apt-get install build-essential libcairo2-dev libpango1.0-dev libjpeg-dev libgif-dev librsvg2-dev

然后 clone 本项目,执行 npm install 或者 yarn 去安装依赖的 node 包

然后 node index 运行此程序

然后你就能在浏览器上打开 http://树莓派的IP:部署端口/calendar 看到一个日历:

demo

这个接口接受以下参数:

参数 说明 示例 默认值
width 图片宽度 400 640
height 图片高度 300 384
bit 是否显示为单色BMP 1 0
hideWeather 是否隐藏天气信息 1 0
hideTemp 是否隐藏温度曲线 1 0
tempKey 温度曲线使用的键值 foobar temp

譬如把尺寸改为400×300:

http://树莓派的IP:部署端口/calendar?width=400&height=300

demo

使用单色的BMP输出(可直接加载到墨水屏):

http://树莓派的IP:部署端口/calendar?width=400&height=300&bit=1

demo

隐藏温度:

http://树莓派的IP:部署端口/calendar?width=400&height=300&hideTemp=1

demo

隐藏天气:

http://树莓派的IP:部署端口/calendar?width=400&height=300&hideWeather=1

demo

隐藏天气和温度:

http://树莓派的IP:部署端口/calendar?width=400&height=300&hideWeather=1&hideTemp=1

demo

关于数据

程序获取到的数据默认备份在data目录下,每次程序运行时将读取到内存中,可通过配置项DATA_DIR进行修改,默认每分钟备份一次,备份间隔可通过配置项BACKUP_INTERVAL修改

其他的一些接口和说明

除了/calendar外,这个程序附带了一些其他接口

更新若干个键值

接口:/set

方法:POST

数据格式:json

参数示例:

{ "foo": 123, "bar": "456" }

获取某个键的最新值

接口:/get/{key}

方法:GET

调用示例:/get/foo

返回值示例:

{ "value": 123, "updated": 12345678901 }

获取某个键最近8640个值

接口:/changes/{key}

方法:GET

返回值示例:

{ "changes": [
        { "value": 123, "updated": 12345678901 },
        { "value": 122, "updated": 12345678900 }
    ]
}

获取某个值今天的所有值:

接口:/today/{key}

方法:GET

返回值示例:

{ "changes": [
        { "value": 123, "updated": 12345678901 },
        { "value": 122, "updated": 12345678900 }
    ]

}

本文转自:https://www.ctolib.com/lxrmido-node-paper-calendar.html

电子纸行业网版权所有,转载请注明出处:https://www.e-paper.org.cn/?p=10783

(0)
上一篇 2020年3月2日 上午10:48
下一篇 2020年3月3日 上午10:44

相关推荐

  • New Onyx Boox Note Pro and Nova Pro Have Frontlights and Dual Touch (Videos)

    Onyx is demoing some new products at this year’s CES in Las Vegas, where they’re showing off some interesting new E Ink ereaders for a change (new E Ink devices used to show up at …

    2019年2月11日
  • 2023年5月刊 | 电子纸行业重要动态速览

    “奇新光电杯”电子纸高球队5月高尔夫邀请赛在桂林成功举办! 5月27日-28日,“奇新光电杯”电子纸高球队5月高尔夫邀请赛在桂林乐满地高尔夫俱乐部成功举办。赛事由奇新光电股份有限公司冠名赞助,EInk元太科技/刘森华、双禹盛泰/王绍斌、吉顺电子/黄易绅、九洲集团/张天勇赞助活动。队长刘森华、副队长周爱军、奇新光电代表王佩姝、双禹盛泰王绍斌、吉顺电子黄易绅、京…

    2023年6月2日
  • SONY DPT系列是一张什么样的纸,居然能“征服”一位大学教授?

    相信提起索尼电子纸,有很多朋友会把它当成电子书一样的数码产品。其实不然,它是索尼针对专业人士(律师、学术研究者等需要阅读大量文献资料的人士)而研发的一款产品。 为了获得更真实的体验感受,耐撕科技邀请到了复旦大学的秦教授来进行体验,以下内容根据秦教授的口述反馈整理而成。 因为家里有亲戚是索尼的粉丝,所以我也一直会听到索大好这句话,在知道索尼为专业人士推出了电子…

    2019年12月28日
  • 惠科长沙8.6代线第10条产线点亮投产;戴尔推出两款4K显示器;OLED智能手机显示屏的普及速度将放缓

    // 惠科长沙8.6代线第10条产线点亮投产 2月7日,春节后上班第一天,长沙惠科光电迎来新年开门红,第10条产线正式点亮投产,在业界创造了建设和点亮的最快速度。长沙市委常委、浏阳市委书记、浏阳经开区党工委第一书记朱东铁宣布产线点亮。 上午8点,长沙惠科光电展示厅的大屏幕成为这一刻的焦点,通过视频连线,长沙惠科光电有限公司制造总厂高级总监李坤原在车间展示并报…

    2022年2月21日
  • 新品|青萍 × 李宗盛:一个有意思的电子墨水屏小东西

    青萍又推出了一款新品:李吉他蓝牙温湿度计。 这款产品是我们和李宗盛老师及其团队合作完成的,对我们来说,和李宗盛老师合作是一件挺出圈的事。 青萍一直专注于环境IoT领域,出品的空气质量检测仪和蓝牙温湿度计都取得了不错的口碑和销量,得到了一些关注,李宗盛老师就是我们的用户之一。 去年我们有幸收到李宗盛老师的合作邀请,一起研发适合木质吉他使用的温湿度计产品。 简单…

    2020年10月9日