Arduino based home electricity and temperature monitoring These libraries are based on much of the work from the Open Energy Monitor project which in turn was based on the JeeNode and JeeLib libraries for low power and RFM12b/RFM69 support.
Data is captured on sensors connected to multiple Arduino based devices and transmitted by RF12b/RF69W 915MHz radios. Data is used in the following ways
- Immeditely within the RF network for display on LCD devices.
- Logged to SD card for archive and historic data processing
- Posted to external IoT dataa store (Thingspeak) for mobile phone and internet charting
- Published on MQTT for Raspberry Pi consumption and Node-Red usage
Definitions for packet data, print, store and parse routines
Definitions and routines for storing and retreiving node settings (subnode, relay, relay Nodes) from EEPROM
This is the hub receiver connected to the internet that receives NTP time and pushes data to Thingspeak.com . Based on the Nanode using the ENC28J60 it receives NTP time to provide current time to required nodes.
Stores all received packets in text format to an SD caard. This allows archive and historic data processing
THis receives the serial log information from any of the nodes, parses the packet and logs to an SD card. It may collect the data from multiple serial inputs (if required)
This is the display unit for household monitoring of energy, temperature, rain and water usage. The 2x16 LCD also displays node network diagnostics. The display also has a DS18B20 temperature sensor (room temperature).
Measures pulse inputs from multiple mains power monitors. These also transmit a total pulse count since installation that allows simple day/month/year totals to be calculated.
This is used to configure the subnode and relay capability of the nextwork. Multiple nodes for sensors are supported (temperature, watre, display, scales). The subnode number is configured using this utility. Becuase of the limited range of the RF packets within a large house, nodes can be configured to relay other node's packets. to prevent flooding of the network, each relay node has an id (maximum of 8) and so does not relay a packet is has already seen. A nodes relay id and the range of nodes it may relay are configured using emon_EEPROMConfig.
This sketch captures the serial data from a HeatTrap solar and heatpump hot water system and transmits the data on the network.
An Arduino connected to loadcells through a HX711 can monitor scale usage and transmit when a reading has been made.
An Arduino based water measure. Supports the DS1603L non-intrusive water level sensor. This provides water height in a tank. It also supports pulse counts from a inline water sensor. The pulse value is a lifetime accumulative value.
Supports up to 4 DS18B20 temperaature sensors and transmits on the network.
Supports a rain guage with 0.2mm per pulse sensor. Also captures a DS18B20 temperature (outside temperature) and transmits on the network.
These additional libraries allow integration with Raspberry Pi based monitoring and display software.
Takes packet data afrom a serial port and publishes on MQTT. C++ sources suitable for Windows and Linux
Read logged daily text files and convert to .json ready for display of daily, monthly and annual charts.