Remember the remote controlled powertrips from the early 2000's with infrared ? In comes wifi ... And in these days of global warming, they also give you power-measurements for each of the three plugs.
(http://www.ubnt.com/mfi/mpower/)
Anyway, enough marketing talk, ...
When you buy your strip you can go 2 routes, either install the bundled software (windlows, osx, and linux), or you can start tinkering. Obviously I want for the second option.
Plug the thing in, and look for a wifi network called ubnt, connect to it.
Open a browser and go to https://192.168.2.20 ; your'll get a certificate warning, ignore it ...
This is where you configure the wifi settings. Once thats done , reboot the mpower and you should see a new client on your lan. Give it a static DHCP reservation , this'll save you a ton of headaches lateron.
Setting username and password was in there somewhere too :)
Next you can surf to your new mPower strip and you should be able to check the measurements.
Now the magic part ... getting this data into Collectd:
First of , CollectD has a datatype for everything we're measuring here. There's voltage(V) Current(A) power(W), the last one is the power factor, there's no unit for that one , but its a cosine of the angle between U(v) and I(a), so it is always between 0and 1, perfect for a percentage.
After some googling I founf out you can curl yourself past the login, and get to the data, It looks like json but the collectd curl_json plugin didn't work for me , so i parsed it using a small bash script.
This script is loaded into cron, but as cron has a maximum resolution of 1 minute. i have it sleep half a minute and do it's thing again. This way collectd has data every 30 secs.
#!/bin/bash
MPOWERHOST=192.168.1.100 curl -X POST -d "username=admin&password=mypassword" -b "AIROS_SESSIONID=01234567890123456789012345678901" $MPOWERHOST/login.cgi for i in 1 2 do for MP in 1 2 3 do SENSOR=$(curl -b "AIROS_SESSIONID=01234567890123456789012345678901" $MPOWERHOST/sensors$MP) echo $SENSOR | cut -d "," -f3 | cut -d ":" -f2 > /run/shm/mp${MP}power echo $SENSOR | cut -d "," -f5 | cut -d ":" -f2 > /run/shm/mp${MP}current echo $SENSOR | cut -d "," -f6 | cut -d ":" -f2 > /run/shm/mp${MP}voltage echo "scale=2 ; ($(echo $SENSOR | cut -d "," -f7 | cut -d ":" -f2 )*100)" | bc > /run/shm/mp${MP}powerfactor done sleep 20 done |
That's the data parsed ready for collectd to ingest it with the next piece of config for the curl plugin.
... you get graphs !