Watt Eye has a simple purpose - monitor pulses that comes from the home electric meter, measure the interval between the pulses and compute the real-time energy being consumed, broadcast that onto the network using UDP packets so that CouchCalendar has something to do and display, and publish the data to a web server, where it can be used (graphed or placed into a db).
Dependencies: IniManager mbed HTTPClient SWUpdate StatisticQueue mbed-rtos NTPClient Watchdog SW_HTTPServer EthernetInterface TimeInterface
Features:
- Reads the time between pulses (which the home electric meter emits as IR for each Watt consumed).
- Once every 5 seconds, it broadcasts this via UDP to the network, so other nodes can listen to this real-time data.
- Once every 5 minutes, it posts statistics to a web server for logging.
- Once a day, it checks the web server to see if there is a SW update (and if so it downloads, installs, and activates it).
- It syncs to a configured NTP server, but doesn't actually use this information for anything.
- It hosts a web server, but this is not being used at this time.
So, this is a rather expensive piece of hardware to monitor a single pulse, and yet it is easy to imagine enhancing this:
- Read the water meter in a similar manner.
- Read the gas meter in a similar manner.
And even then, there will be many left-over port pins for other uses.
Diff: main.cpp
- Revision:
- 3:5c3ba12d155b
- Parent:
- 2:649d91b93824
- Child:
- 4:0a7567195e4b
--- a/main.cpp Mon Jan 18 21:30:15 2016 +0000 +++ b/main.cpp Mon Jan 18 21:50:17 2016 +0000 @@ -15,9 +15,8 @@ #ifdef WIFLY #include "WiflyInterface.h" #else -#include "EthernetInterface.h" // ver 41 +#include "EthernetInterface.h" // ver 51 #endif -#include "EthStatus.h" #include "SW_HTTPServer.h" @@ -308,11 +307,7 @@ bool NetworkIsConnected(void) { -#ifdef WIFLY return eth.is_connected(); -#else - return get_link_status(); -#endif } void PulseRisingISR(void) @@ -487,11 +482,8 @@ if (0 == eth.connect()) { linkup = true; ShowIPAddress(true); -#ifdef WIFLY -#else - int speed = get_connection_speed(); + int speed = eth.get_connection_speed(); pc.printf("Connected at %d Mb/s\r\n", speed); -#endif SoftwareUpdateCheck(true); SyncToNTPServer(); // we hope to have the right time of day now wait(5);