Reference Pages:
This page describes the renewable energy monitoring system whose output is visible here (use credentials ‘guest’ and ‘password’).
Monitor solar/wind powered battery banks, micro-generators, diverse low-power and related environmental parameters with the accuracy, capacity and speed with which the IT industry monitors servers.
Sends email alerts to owners of remote renewable energy devices and batteries when parameters like voltage, current, temperature, etc, go out of pre-set ranges.
Two methods:
1. At the remote site, sensor data from '1wire' sensors is periodically gathered and pre-processed by a low-power Linux device, formatted, and then securely copied across the Internet to a central monitoring server. There, each new payload of sensor data is checked against pre-set thresholds to determine if a warning or critical condition exists. The results are piped into Nagios, which displays status on a web page and produces notification emails if necessary. This method is used to monitor sites 'lee' and 'site01 at the link below. Copy of the NSLU2 sensor processing script is here.
2. At the remote site, sensor data is gathered and pre-processed by an Arduino microcontroller, then posted across the Internet to the monitoring server using standard Web protocols. There, the incoming data is re-formatted into a datafile. Each new file of sensor output is checked against pre-set thresholds to determine if a warning or critical condition exists. The results are piped into Nagios, which handles status display and notification emails. This method is used to monitor sites 'site02' and 'site03' at the link below. Copy of the Arduino sensor processing code is here.
There is.
The system has to handle many problems – some old, some new. Eg:
So that you can balance price, power and flexibility according to your requirements.
Method 1 above - NSLU2 + 1wire sensors - lets you pre-process the sensor data as much as you want before sending it to the monitoring server. Using 1wire sensors and a re-flashed Linksys NSLU2 opens up the range of 1wire sensors for a cost typically under £100. Here are the scripts
Method 2 above - Arduino + sensors - is even cheaper and the microcontroller's digital and analog input pins accept input from most cheap, common electronic sensors - even passive resistor dividers. Pre-processing is as easy with, for example, Arduino's Wiring language and programming interface.
Here is the result, updating in real-time… (use credentials ‘guest’ and ‘password’).
At the site named ‘lee’, Nagios is monitoring the voltages and temperatures of three separate battery banks. This is a real site and real data.
At the site named ‘site01’, Nagios is monitoring the voltages and temperatures of various power generators. This site is a software simulation that I wrote to provide varying data against which to test solutions to the many challenges power device monitoring presents to ‘off the shelf’ systems like Nagios.
At site02, an Arduino reports the voltage and current measured in a 12V diversion/dump controller by an AttoPilot Current and Voltage Sensor.
At site03, an Arduino reports the voltage and current measured in a 24V diversion/dump controller by an AttoPilot Current and Voltage Sensor.
It works well, though I’m developing both the software and hardware further, naturally. Within days of getting the first version running, it warned me of a dislodged battery charger lead. It has since warned me several times of power outages and dislodged leads.
That varies slightly depending what type of sensors you are using.
NSLU2 + 1wire sensors
Device01, [timestamp (in either UT or Unix epoch formats], 26.35, volts, 7, Amps, 'Wind Generator' Device02, [timestamp (in either UT or Unix epoch formats], 25.02, volts, 19.34, deg C, 'Battery bank'
Arduino + electronics sensors
HEAD /cgi-bin/post.py?s=site02&p=<PASSWORD>&d=Device01&t=<TIME>&&Volts=26.350053&Amps=15.769345&n="'Wind+Generator'" HTTP/1.1\nHost: domain.com
In both cases, the uploaded data is now on the Nagios server, where:
It’s clear from the above that the perl script does the hard work. Much of that hard work is about determining the cause of any timing delays and passing a reasonable judgement to Nagios of the cause. It is trying to address the ‘connectivity breaks’ challenge described in the Design Decisions discussion and, in test, is proving surprisingly successful.
The 1wire approach works well, its sensors well-documented, and is relatively quick to deploy. However, to free the system of the limitations of 1wire sensors – for measuring current for example – I’ve moved on to building an Arduino-based sensor network.
Arduinos offer much broader electrical connectivity options at the expense of precision, restricted TCP/IP connection security, and the need to write custom Wiring code (C code variant). I’ll discuss how that is working after further testing.
…
…
In more detail that means:
Discussion