So we get asked the question, “how easy is it to use Wizkers for my own sensor project” ? The answer is “very easy”. This post describes a new Wizkers project from start to finish, which took one Sunday to put together.
The goal of this project was to great a simple power monitoring dashboard for our house, and get a real time graph of whole house power usage.
The power monitor we picked for this project is the Blue Line Innovations Power Cost Monitor. This is a device which has been around for a long time, and is very reliable. More importantly, the US power grid being somewhat of an antiquity in most of the country, it is compatible with the old school ‘disc’ home power meters which disappeared about 20 years ago in the rest of the western world. No fear though, it also works with standard electronic meters with flashing/infrared LED lights. And it requires no fiddling with the meter at all either.
Yep, works with those old school meters too!
This power monitor sends its data as a pulse modulated signal over RF at 433MHz. The FCC filing from BlueLine innovationscontains all the information that is necessary to put together a simple receiver using off-the-shelf modules.
As a nice surprise, our job was made even easier by the fact a couple of people had already worked on the transmission protocol: Github contains a couple of attempts which we used as a base for our own receiver.
Using “Powermon433” as the base, we modified the Arduino sketch to output data over the serial link using the JSON format, and we added a couple of nifty features:
- Automatic discovery of transmitter ID (couldn’t resist the fun of doing a small CRC bruteforcing algorithm…)
- The receiver is able to narrow down the TX ID to sometimes two and most of the time one (correct) candidate.
- Saving of Transmitter ID in the Arduino’s eeprom, so that it is preserved between resets.
- Power factor calculations on the Arduino to output the correct power figure (saving the PF in eeprom as well).
- And a couple of simple serial commands to manage the features above.
This took a couple of hours to put together and get a serial stream to show up. As you can see below, this is pretty much as simple as I could make it, but it works surprisingly well!
Adding a new Wizkers device
As described in the documentation, adding a new Wizkers device is fairly straightforward:
- Create the front-end visualization.
- Create the front-end driver.
- Create a back-end driver for Chrome and/or server mode.
- Connect the new instrument to the front-end and server instrument managers.
The task is made easier by the fact you can use the “sample_instrument” template for most of the files. There are already a couple of devices on Wizkers which speak JSON, so getting the drivers to work literally just took a couple of minutes.
For most time visualizations, Wizkers provides a “flotplot” library, based on “Flot Charts”, which makes it super easy to add graphs in your screens: flotplot takes care of all formatting, data buffer and storage, etc. The only real task is to tell Wizkers the name of the json keys which you want to plot.
Likewise, our Ardiuno sketch outputs json data, so we can use nearly the same driver as some of the other instruments (USB geiger, Onyx, etc). A future revision of Wizkers might actually include a fully generic driver for any device that outputs JSON-formatted data, in order to make this even simpler.
Receiving the power monitor, installing it, researching online, adapting/programming a new Arduino sketch and soldering a simple radio receiver took about 3 hours.
Writing the basic visualization for a new “Power Monitor” instrument on Wizkers took about 2 hours from start to the first graph.
All in all, a good busy Sunday!
You can find all the code on the Wizkers Github repository. The implementation contains both a Chrome mode driver, and a server mode driver which is probably the most interesting, since it will let you log all the power data continuously.
Of course, this power graph is very basic: it will be more interesting to capture hour/day/month/year-level figures, make use of the “energy” field which is present in the sensor output, create better visualizations, etc. We will add those over time…
The point is, now that all the basics are in place, we can simply focus on creating those visualizations, knowing that all the data is flowing and getting logged. So stay tuned for new revisions to this home power monitor!