标签存档: DIY

玩玩智能家居4:InfluxDB & Grafana

在接入了很多传感器到 Domoticz 之后,终于可以全面监控家里的各种环境参数了,例如温度、湿度、PM 2.5、二氧化碳浓度等等。

Domoticz 虽然已经自带了传感器数据日志,但是一来详细数据最多只能保存七天,二来只能单独查看每个传感器的数据,而不能将多个传感器数据放在一起对比查看,所以就需要使用其他方式去保存和展示传感器历史数据。

InfluxDB

InfluxDB 是一个时序数据库,很方便用来保存时间序列数据,而各种传感器数据其实就是一个时间序列化数据,InfluxDB 的介绍页面也说了很适合于 IoT Sensors 数据的保存。

使用 InfluxDB 最方便的方式就是用 Docker 了,直接在 DSM 的 Docker 中添加 influxdb 镜像,然后启动一个容器就可以了。

当然这里要记得添加一下端口映射,后面在配置 Domoticz Data Push 的时候需要用到。

Domoticz Data Push

部署好了 InfluxDB,就可以在 Domoticz 里面配置把接收到的传感器数据同时推送到 InfluxDB 中保存了。

Domoticz 提供了两种方式可以用来将传感器数据推送到 InfluxDB 中,一种使用 HTTP 调用 InfluxDB 的 HTTP API,还有一种是直接使用 Domoticz 内建的 InfluxDB 支持。

使用内建 InfluxDB 支持

使用内建 InfluxDB 的功能很简单,直接填写好 InfluxDB 服务器的 IP 和端口以及数据库名称就可以了

使用 InfluxDB HTTP API

使用 HTTP API 来向 InfluxDB 来写入数据稍微麻烦一点,需要自己定义一下发送数据的格式,但是其实这样更有利于控制写入 InfluxDB 中数据的名称。

URL 需要填写 InfluxDB 的 API 地址:

http://192.168.9.16:9800/write?db=domoticz&u=root&p=root&precision=ms

其中:

  • 192.168.9.16:9800 需要替换为实际的 InfluxDB 服务器地址和端口
  • db=domoticz 需要将数据库名称替换为实际的数据库名称

Data 填写:

device_%V value=%v %t3

配置需要 Push 的数据

在设置完 InfluxDB 推送,还需要选择需要推送哪些传感器的数据到 InfluxDB,这个在 Data Push 页面中直接选择添加就可以了。

Grafana

有了数据,就可以来展示了。Grafana 是一个很好的展示时序数据的工具,它直接支持读取 InfluxDB 的数据,可以提供多种形式的展示方式,例如曲线图、柱状图等。

Grafana 同样可以直接使用 Docker 来安装部署。

在 Grafana 中配置好 InfluxDB 数据源,就可以开始使用 Grafana 的面板来展示数据了。

在 Dashboard 中创建一个 Graph Panel,然后直接选择一下需要显示的数据字段,填一下采样的时间间隔,就可以显示出好看的曲线啦。如果需要对比多个数据,可以直接添加,选择不同的字段就可以了。

Grafana 还有其他很强大的图表显示功能,这个就可以根据自己的需要去组合排布,也可以创建多个 Dashboard 来展示不同类型的数据。如果有条件,还可以用一个 iPad 来展示 Dashboard,可以直接看到数据而不用去电脑上打开网页了。

参考资料

  1. Influxdb
  2. Grafana
  3. Domoticz HTTP Link

— EOF —

玩玩智能家居3:PlatformIO

ESPEasy 虽然方便,但是毕竟很久没有维护了,里面对硬件的支持也不是很完全,并且在使用有些模块时,与 Domoticz 对接可能会有一些问题,例如 CO2 传感器在发送数据到 Domoticz 时,发送的数据字段就不正确。

在这个时候就需要自己来修改 ESPEasy 代码,重新编译并烧录到 NodeMCU 中,而修改代码就需要用到 IDE 了。ESPEasy 是一个 Arduino 项目,自然用 Arduino IDE 来开发是最直接的。

但是 Arduino IDE 是一个相当古老的程序了,虽然版本号更新到了 1.8,但是在使用的时候有很多功能都不够完善,例如代码自动补全、符号定位、语法着色等。

这个时候就在网上找到了 PlatformIO 这个项目,它提供了基于 Atom 或者 Visual Studio Code 的 IDE 项目 PlatforIO IDE。

PlatformIO IDE

要安装 PlatformIO IDE 很简单,在 Atom 的设置中打开 Packages,直接搜索 platformio ,安装platformio-ide 扩展即可。

项目开发

安装完 PlatformIO IDE,就可以开始用 Atom 来开发 Arduino 项目啦,使用 Atom 侧边工具栏里面的 Home 图标即可打开 PlatformIO IDE 首页。

如果原来的项目是纯 Arduino IDE 项目,即项目文件都在一个文件夹并且扩展名为 .ino,可以使用 PlatformIO 的导入 Arduino 项目功能。PlatformIO IDE 会将项目文件组织方式转换为 PlatformIO 项目格式,这个转换操作会将所有源代码文件移动到 src 目录中,并且给每一个 .ino 文件头部加上 include <arduino .h>

导入完成之后,就可以直接使用 Atom 编译固件并烧录到 NodeMCU 上了。

串口监视器

当然 PlatformIO IDE 也提供了串口监视器功能,直接在左侧工具栏中找到插头图标,点击之后就会出现串口选择,选择 NodeMCU 对应的串口设备以及波特率,即可在终端中看到 NodeMCU 串口输出的数据。

PlatformIO 平台

当然 PlatformIO 并不是只有 IDE 功能,它同样还有库管理功能,在 PlatformIO 的平台上有超过 1800 多个开源库可以使用,进入 PlatformIO IDE 主页之后,在左侧菜单中找到 Libraries,就可以快速添加开源库到 Arduino 项目中。

使用 Arduino IDE 中安装的库

当然在 PlatformIO 中也可以使用在 Arduino IDE 中安装的开源库,因为有一些库可能只上传到了 Arduino 的平台,而没有提交 PlatformIO 生态。

要在 PlatformIO 项目中使用 Arduino IDE 安装的开源库,只需要在 platformio.ini 这个配置文件中加下以下两行就可以了:

[platformio]
lib_dir=~/Documents/Arduino/Libraries

参考资料

  1. PlatforIO
  2. PlatformIO IDE for Atom
  3. PlatformIO Libraries

— EOF —

路由器 DIY,加装液晶屏

嗯,这算是一个帖子引发的血案。之前在逛恩山的时候,看到一个帖子,《给tp-link wr941n增加一个液晶屏,散热片和USB口》,这就跨上了改造路由器的不归路。

先秀一下最终改造结果:

需要说明的是,改造路由器加装液晶屏,只能算是一个玩票的行为,实际意义不是特别大,成本相对路由器来说,也不低,所以只推荐喜欢折腾的人玩。

另外,这篇文章只介绍怎么去加装液晶屏,不涉及到加装 USB 口。

准备材料

要改造路由器,首先就需要去准备一个路由器,一般的路由器可不行。为了能在液晶屏是显示内容,需要有程序去控制液晶屏,而一般的路由器是不能运行自己的程序的,这就需要路由器可以刷机,可以刷 dd-wrt 或者 openwrt 等等的都可以。

我用的路由器是迅捷 fw300r,实惠,京东的价格在79左右浮动,比较便宜的另外一个好处就是折腾坏了不心疼,这篇文章的内容也是以 fw300r 为基础而写。我买的 fw300r 是 v2 版本,配置为 4M Flash 和 32M RAM。

加装液晶屏,再需要的当然就是液晶屏了。我这里选择的是 12864 液晶,分辨率是 128×64。

需要注意的是,一般买到的 12864 的接口都是并行或者SPI,并不能直接连接在路由器上使用。因此,在选购液晶的时候,要注意选择带 TTL 或者 UART 支持的,要不然还得加个单片机在路由器和液晶屏之间。如果是在淘宝上购买,可以找串口支持的 12864 液晶,但是特别注意,SPI 串口不是我们这里要用的串口,最好和卖家沟通之后再买。

液晶屏的电压也需要注意,路由器的 TTL 针脚一般也带电源输出,但是电压只有 3.3v,如果选购的液晶屏驱动电压是 5v 的话,那就需要安装额外的电源了。

液晶屏建议选择小屏,路由器本身体积不大,如果选择大屏的话,有可能装不下,要把液晶屏放在外面。

另外,路由器上需要加装 TTL 针,液晶屏一般也不带针脚,这就需要有电烙铁来焊针脚。如果不是买原厂的路由器,而是在淘宝上买那些已经被卖家改装过的,那很可能就是已经装了 TTL 针脚了。如果打算这个液晶屏就只在路由器上用了,也可以不用给液晶屏焊针脚,直接把线焊上去就行了。

如果路由器和液晶屏都有针脚,那就还需要杜邦线来连接,这个可以在买液晶屏的时候叫卖家送三根。

材料和成本清单:

  • 路由器 fw300r,79元
  • 12864 液晶屏,不同规格价格可能会在 45-60 元之间
  • 杜邦线,4根,0.8元不到,可以叫卖家送⋯⋯
  • 单排针,0.2元
  • 焊接设备,最初级的一套在 20 元左右
  • 如果要在电脑上测试的话,USB to TTL 是不可少的,12 元左右,要选择带有 3.3v 电源输出的
  • 如果可能的话,备一个万用表来测试插针是否焊接正确,以及从路由器输出的电压是否正确,一般 30 元左右

继续阅读 »