OpenEnergyMonitor
- 1. 系统框架
- 2.项目组成
- 2.1 emonPi模块:
- 2.1.1 emonpi的安装:
- 2.1.2 emonTx & emonBase 安装
- 2.1.3 emonTx Wifi 安装:
- 2.1.4 添加额外的 emonTx 节点:
- 2.1.5 添加额外的emonTx-节点监控三项电源
- 2.1.6 添加 emonTH 温度节点
- 2.1.7 添加脉冲计数 plus counting
- 2.1.8 添加 温度传感器
1. 系统框架
MQTT:(消息队列遥测传输)是一个基于客户端-服务器的消息发布/订阅传输协议
Arduino:开源电子原型平台,包含硬件(各种型号的Arduino板)和软件(ArduinoIDE),可以在Windows、Macintosh OS(Mac OS)、Linux三大主流操作系统上运行。Arduino能**通过各种各样的传感器来感知环境**,通过控制灯光、马达和其他的装置来反馈、影响环境。板子上的微控制器可以通过Arduino的编程语言来编写程序,编译成二进制文件,烧录进微控制器。对Arduino的编程是通过 Arduino编程语言 (基于 Wiring)和Arduino开发环境(基于 Processing)来实现的。基于Arduino的项目,可以只包含Arduino,也可以包含Arduino和其他一些在PC上运行的软件,它们之间进行通信 (比如 Flash, Processing, MaxMSP)来实现。
Arduino-emonpi:基于树莓派的能源监测
ttyAMA0: ttyAMA0是树莓派上gpio里的串口,就是tx rx两个针,ttyUSB0是usb转ttl的串口
emonhub: 远程服务器监控应用程序, Python服务将输入链接和解码到MQTT和Emoncms,基于在所述配置- emonHub在OpenEnergyMonitor系统用来读取从任一EmonPi板或RFM12 / 69Pi适配器板后,转发接收的数据通过串行到emonCMS在解码准备使用的形式的数据 更一般而言:Emonhub由一系列接口组成,这些接口可以从/从多个服务读取/订阅或发送/发布数据。 EmonHub支持解码以下数据: Emonhub包含在EmonPi和Emonbase都使用的。
树莓派:RPi,外表“娇小”,内“芯”却很强大,只有信用卡大小的微型电脑,其系统基于Linux。它是基于ARM的微型电脑主板,以SD/MicroSD卡为内存硬盘,卡片主板周围有1/2/4个USB接口和一个10/100 以太网接口(A型没有网口),可连接键盘、鼠标和网线,同时拥有视频模拟信号的电视输出接口和HDMI高清视频输出接口,以上部件全部整合在一张仅比信用卡稍大的主板上,具备所有PC的基本功能。
CMS:内容管理系统(content management system,CMS),Emoncms是一个open-source
的web应用程序,用于处理、记录和可视化能源、温度和其他环境数据,是OpenEnergyMonitor
项目的一部分。
AC-DC:直流电、交流电:DC是指直流电源,一般常用的有30V,6.0V,90V,12V等几个常见电压; AC指的是交流电源,输出电压有220V和380V。
2.项目组成
项目官网
OpenEnergyMonitor
系统能够监控电能的使用/产生、温度和湿度。
该系统由五个主要单元组成。这些可以配置为适用于各种应用。该系统是完全开源的,包括硬件和软件。所有硬件都基于Arduino和Raspberry Pi平台。
-
emonPi: 一个2路一体式能量监测器和基站,用于收集数据、托管emonCMS软件,还可以接收来自其他传感器节点的数据。emonPi是一款基于Raspberry Pi的多功能一体式能量监测装置,可在电表位置安装以太网或WiFi,实现简单安装。
-
emonBase:接收无线传感器节点发送的数据的简单基站。托管emonCMS软件,以实现完整的本地数据记录和可视化功能。
-
emonTx:一个4路能量监测节点。通过内置的433MHz收音机将数据传输至emonBase或emonPi。它还可以通过ESP8266
WiFi适配器或直接通过串行连接发送数据。 -
emonTh:电池供电的无线室内温湿度监控节点。通过433MHz无线电将数据传输至emonBase或emonPi。
2.1 emonPi模块:
- 特征:
-
2个CT传感器输入,用于单相交流电监测,设计用于100A SCT-013-000 CT传感器
-
使用插入式AC-AC适配器进行1x AC电压测量,以计算实际功率,同时测量CT传感器的电流。设计用于9V交流输出电压适配器
-
通过RJ45插座支持多个有线单线DS18B20温度传感器
-
支持有线或通过光学脉冲传感器进行脉冲计数
-
433 MHz RFM69无线电收发机,用于接收来自额外能源监测或温度和湿度节点的数据。
-
emonPi测量板基于Arduino(Atmega328)。这是一个集成的Raspberry Pi,它在SD卡上运行我们的emonSD软件堆栈。
-
使用emonSD Emoncms软件堆栈实现完整的本地数据记录和可视化功能。数据还可以发送到远程emoncms服务器,如emoncms。组织。
-
按钮:用于关闭和启用/禁用SSH访问。
-
通过以太网或WiFi进行网络连接。
-
LCD显示屏:为便于设置,显示网络IP地址和传感器状态。
- 内部结构
emonPi= RaspberryPi + emonPi测量板 ,其中 emonPi测量板是基于运行Arduino固件的ATmega328p 8位微控制器。
- emonPi 系统框架
以上系统图显示了构成emonPi的主要硬件和软件组件。左边是基于ATmega328微控制器的emonPi测量板,带有来自不同传感器的输入、RFM69 433 MHz收发器、按钮以及与LCD的I2C连接。Atmega328微处理器通过内部UART串行端口(/dev/ttyam0)与 Raspberry Pi通信。
1. RF 射频
emonPi使用HopeRF RFM69CW射频模块**以433 MHz的频率从其他无线节点(emonTx、emonTH等)接收数据。**我们使用 JeeLib packet format 据包格式。每个RF节点都有一个唯一的节点ID,但有一个公共网络组(默认为210)。ATmega328运行一个改进版的JeeLabs RFM12演示草图,以接收来自无线节点的数据。接收到的无线数据包通过串口转发,并使用EmonHub在RaspberryPi上解码。
2. 能源监测
emonPi测量板包括输入电路,用于将来自ACAC适配器和CT传感器的输出转换为与模数转换器(ADC)兼容的信号。ATmega328的10位ADC按顺序对电压和电流通道进行采样。ATmega328上运行的固件计算每个通道的实际功率、视在功率、功率因数、VRM和IRM。然后每隔5秒将真实功率读数推送到RaspberryPi进行记录和可视化。
要了解更多有关电力监控工作原理的信息,请访问我们的学习网站:
-
Learn: AC Power Theory
-
Learn: CT Sensors, interfacing with an Arduino
-
Learn: Measuring AC Voltage with an AC to AC power adapter
可在此处访问和下载完整的emonPi测量板固件:
- emonPi Discrete Sampling Firmware
- The firmware uses the EmonLib Discrete Sampling Library
- 脉冲计数 Pulse Counting
emonPi上的脉冲计数使用ATmega328上的硬件中断IRQ1。RFM69CW使用第一个硬件中断IRQ0。每个emonTx/emonPi只能有一个脉冲计数器输入。
- emonPi Raspberry Pi And emonSD
emonPi Raspberry Pi运行基于Raspbian Buster Lite的emonSD软件堆栈。可以购买或下载预构建的emonSD映像,也可以使用我们的自动构建脚本自己构建映像,请参阅EmonScripts。
EmonSD包括emonHub,它从emonPi测量板读取串行数据,并充当代理,通过MQTT将这些数据转发到emoncms的本地安装或远程服务器,如emoncms.org通过HTTP。
Emoncms是我们的开源网络应用程序,用于处理、记录和可视化能源、温度和其他环境数据。它作为emonSD软件堆栈的一部分安装,并提供完整的本地数据记录和可视化功能。
2.1.1 emonpi的安装:
https://guide.openenergymonitor.org/setup/install/
2.1.2 emonTx & emonBase 安装
以2个CT传感器和一个ACAC电压传感器为例,该传感器用于监控房屋中的两个交流电路,并允许计算实际功率以及emonTx装置本身的功率。emonTx最多支持4个CT传感器,因此可以轻松扩展以下步骤,以监控其他电路。
在本例中,emonTx每隔10秒通过433 MHz无线电将交流电源、电压和温度传感器测量值(如果已连接)传输至emonBase基站。emonBase基站由一个RaspberryPi和一个RFM69Pi适配器板组成,用于接收来自emonTx的433 MHz无线数据包。emonBase运行我们的emonSD软件,包括用于完整本地数据记录和可视化功能的emonCMS。
典型的emonTx和emonBase系统包括:
- 1个emonTx(包括天线和壁挂式支架)
- 1-4x 100A CT传感器
- 1个ACAC电压传感器
- 1x USB电源和微型USB电缆
- 1个emonBase(RaspberryPi+RFM69Pi适配器板+机柜+emonSD卡)
emonTx传感器节点安装示例:
在本示例安装中,使用连接到棕色电缆(房屋主馈线)的CT传感器测量房屋总用电量。另一个CT传感器位于主用电设备内部,在这种情况下监测热泵的供电。为AC-AC电压传感器和组合电源安装了专用插座。连接了一个RFM69 433 MHz天线,还有一个DS18B20温度传感器连接到emonTx RJ45温度和脉冲输入插座。emonTx每10秒通过RFM69无线电将实际功率、累计瓦时、电源电压和温度测量值传输到一个通过以太网连接到客厅互联网路由器的emonBase。
- emonTx:
将emonTx安装在所需位置,必要时使用壁挂式支架,连接天线。首先将CT传感器插入emonTx,然后夹住要测量的交流电路的线路或中性线。如果功率读数为负值,则反转CT传感器方向。安装前请阅读CT安装指南。根据需要安装温度传感器或/和脉冲传感器。参见指南:+添加温度节点+添加光脉冲传感器。插入并连接AC-AC适配器,以提供电压测量和电源。这可能需要安装新插座或扩展现有插座。
- emonBase
- 如果使用以太网,请在给emonBase通电之前连接以太网。
- 插入USB电源并连接微型USB电缆。
硬件设置完成了!下一步是配置网络连接,并将emonBase设置为在本地记录数据或/或将数据发布到远程服务器(如emoncms)。组织。
2.1.3 emonTx Wifi 安装:
https://guide.openenergymonitor.org/setup/esp8266-adapter-emontx/
使用带有ESP8266 Huzzah WIFI模块的emonTx V3
这是一个关于如何使用Adafruit ESP8266 Huzzah WiFi模块和emonTx v3制作一个简单的支持WiFi的能量监测器的指南,该监测器可以直接发送到emoncms.org或任何其他Emoncms安装本地或远程。
适用于只需要将数据从一个emonTx基本发布到远程服务器(如Emoncms)的应用程序。与安装emonBase或emonPi基站相比,使用此WiFi模块的emonTx提供的路由成本更低。
对于需要本地存储和/或安装有多个传感器和控制节点的更复杂应用,建议使用emonBase或emonPi。emonPi/emonBase系统允许更大的可扩展性和定制性。
emonTx V3:+CT、AC-AC适配器、温度和脉冲传感器,根据您的应用程序的要求。要将ESP8266与emonTx三相固件一起使用,需要将EmonESP波特率设置为9600
emonTx的5V USB直流电源:在正常运行时为emonTx供电的AC-AC电压适配器无法提供足够的电源来运行ESP8266 Huzzah WiFi模块,因此需要额外的5V USB电源。使用ESP8266时,电池无法工作。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-crjZ3dMD-1670642785047)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220516154226811.png)]
注意:应该只连接RX引脚,不需连接Tx引脚。
设置程序
- 1) 如上图所示,将ESP8266 Huzzah WIFI模块插入emonTx。
- 2) 根据需要连接所有CT传感器、用于电压感应的AC-AC适配器和其他传感器,并将USB电源插入emonTx上的USB迷你插座。
- 3) 卸下(打开)emonTx PCB上的跳线JP2,然后同时连接5V直流USB电源和AC-AC适配器,以确保emonTx启动时检测到AC-AC适配器,并向ESP8266 Huzzah WiFi模块提供足够的电源以供启动。
- 注意:务必拆下/断开跳线JP2,将交流和直流电源分开,以确保emonTx通过直流供电,且交流仅用于提供交流参考电压。
- 4) ESP8266 WiFi模块现在将创建一个用于配置的WiFi接入点。使用笔记本电脑或手机扫描WIFI网络,你应该会看到一个网络SSID,比如: emonESP_1679732
- 5) 成功连接后,导航至IP地址192.168.4.1以访问配置页面:
- 6) 选择要连接的WiFi网络,输入密钥,然后单击“连接”。等待大约30秒,等待模块连接。一旦连接,模块将在界面上显示其IP地址(在屏幕截图中用红色下划线)。
- 7) 单击IP地址将浏览器更改为新位置。重新连接到您的家庭WiFi网络。刷新页面以通过家庭局域网WiFi而不是接入点加载emonESP配置页面。
- 8) 如果您希望将数据发布到Emoncms.org,输入你的表情。在您的emoncs上找到org write apikey。组织账户页面。
- 9) 单击保存,大约10-20秒后,界面应报告成功的数据包已发送到EMONCM。组织。现在,您可以查看emoncm上的输入页面。组织帐户,应如下所示:
- 10) 配置emoncm。正常情况下,请参阅指南的emoncms文档部分。
如果您的本地网络上有emonBase或emonPi,默认设置为:
hostname: emonpi
username: emonpi
password: emonpimqtt2016
base topic: emon/emontx
2.1.4 添加额外的 emonTx 节点:
https://guide.openenergymonitor.org/setup/emontx/
添加额外的节点可实现:
-
扩展可以测量的交流电路的数量。(每个EmonTx增加+4个CT传感器输入)
-
监视建筑物中不同位置的电路
-
监控交流插座不可用的电路(使用电池电源)
-
监控三相电源(使用三相emonTx固件,请参阅emonTx技术)
数据通过标准的低功率433MHz无线电传输到emonPi或emonBase,或者在433MHz无线电范围不足的应用中,通过WiFi使用ESP8266 WiFi适配器。
A) 向emonPi系统添加一个emonTx
如果您已经按照emonPi安装指南安装了emonPi。emonTx和emonBase安装指南中介绍了安装emonTx的步骤。在本例中,emonPi的工作方式与emonBase基本相同。
B) 向emonPi或emonBase系统添加多个emonTx
除了《emonTx和emonBase安装指南》中所述的标准emonTx安装之外:当在同一基站上使用两个或多个emonTx单元时,每个单元上的节点ID必须是唯一的。如果同一网络上需要两个以上的emonTx,则可以通过RF node ID serial config设置更多的nodeID值。
串口配置:
可以通过串口设置emonTx无线电设置、传感器校准和其他属性。请参阅** Github PDF: Configuration of RF Module & on-line calibration **,了解完整详细信息。如果设置了自定义节点ID,则需要在emonhub中设置相应的节点解码器。conf 对 emonTx无线数据包进行解码。见 emonhub.conf configuration guide.
注意:使用Arduino IDE通过串行设置固件属性时,确保串行监视器设置为NL/CR,波特率设置为115200。更改线路结束选择后,可能需要重新启动串行监视器。
2.1.5 添加额外的emonTx-节点监控三项电源
https://guide.openenergymonitor.org/setup/emontx-3phase/
可以将运行三相固件的其他EmonTx能量监控节点添加到emonPi或emonBase系统中,以:
监控三相电源(使用三相emonTx固件,请参阅emonTx技术)数据通过标准的低功率433MHz无线电传输到emonPi或emonBase,或者在433MHz无线电范围不足的应用中,通过WiFi使用ESP8266 WiFi适配器。可以将运行三相固件的其他EmonTx能量监控节点添加到emonPi或emonBase系统中,以:监控三相电源(使用三相emonTx固件,请参阅emonTx技术)
数据通过标准的低功率433MHz无线电传输到emonPi或emonBase,或者在433MHz无线电范围不足的应用中,通过WiFi使用ESP8266 WiFi适配器。
2.1.6 添加 emonTH 温度节点
https://guide.openenergymonitor.org/setup/emonth/ (待续)
无线温湿度监测节点,通过射频(433Mhz)与emonPi和emonBase通信,单个emonPi最多和4个emonTH通信。通过手动更改RF nodeID,单个emonPi/emonBase可以连接超过4个emonTH单元。
2.1.7 添加脉冲计数 plus counting
很多仪器仪表都有脉冲输出,这些仪表可以直接与两根电线连接,通常可以切换监控硬件提供的电压。
2.1.8 添加 温度传感器
emonPi和emonTx都支持使用DS18B20单线数字温度传感器进行温度感应。emonPi上的标准固件最多支持6个温度传感器,emonTx最多支持3个温度传感器。emonPi和emonTx都有一个特殊的RJ45插座,可以直接连接一个RJ45 DS18B20温度传感器,也可以通过RJ45分接板或端子块分接板连接多个传感器。或者,emonTx上的接线板可用于有线连接。