Recently I got a hold of an mPower powerstrip from Ubiquity networks. Pretty neat things,
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.
<Plugin curl>
<Page "mPower">
URL "file:///run/shm/mp1power"
<Match>
Regex "([0-9]*)"
DSType "GaugeLast"
Type "power"
Instance "Power1"
</Match>
</Page>
<Page "mPower">
URL "file:///run/shm/mp2power"
<Match>
Regex "([0-9]*)"
DSType "GaugeLast"
Type "power"
Instance "Power2"
</Match>
</Page>
<Page "mPower">
URL "file:///run/shm/mp3power"
<Match>
Regex "([0-9]*)"
DSType "GaugeLast"
Type "power"
Instance "Power3"
</Match>
</Page>
<Page "mCurrent">
URL "file:///run/shm/mp1current"
<Match>
Regex "([0-9]*\\.[0-9]+)"
DSType "GaugeLast"
Type "current"
Instance "Current1"
</Match>
</Page>
<Page "mCurrent">
URL "file:///run/shm/mp2current"
<Match>
Regex "([0-9]*\\.[0-9]+)"
DSType "GaugeLast"
Type "current"
Instance "Current2"
</Match>
</Page>
<Page "mCurrent">
URL "file:///run/shm/mp3current"
<Match>
Regex "([0-9]*\\.[0-9]+)"
DSType "GaugeLast"
Type "current"
Instance "Current3"
</Match>
</Page>
<Page "mVoltage">
URL "file:///run/shm/mp1voltage"
<Match>
Regex "([0-9]*)"
DSType "GaugeLast"
Type "voltage"
Instance "Voltage1"
</Match>
</Page>
<Page "mVoltage">
URL "file:///run/shm/mp2voltage"
<Match>
Regex "([0-9]*)"
DSType "GaugeLast"
Type "voltage"
Instance "Voltage2"
</Match>
</Page>
<Page "mVoltage">
URL "file:///run/shm/mp3voltage"
<Match>
Regex "([0-9]*)"
DSType "GaugeLast"
Type "voltage"
Instance "Voltage3"
</Match>
</Page>
<Page "mPowerfactor">
URL "file:///run/shm/mp1powerfactor"
<Match>
Regex "([0-9]*\\.[0-9]+)"
DSType "GaugeLast"
Type "percent"
Instance "PowerFactor1"
</Match>
</Page>
<Page "mPowerfactor">
URL "file:///run/shm/mp2powerfactor"
<Match>
Regex "([0-9]*\\.[0-9]+)"
DSType "GaugeLast"
Type "percent"
Instance "PowerFactor2"
</Match>
</Page>
<Page "mPowerfactor">
URL "file:///run/shm/mp3powerfactor"
<Match>
Regex "([0-9]*\\.[0-9]+)"
DSType "GaugeLast"
Type "percent"
Instance "PowerFactor3"
</Match>
</Page>
</Plugin>
|
Once all that's done ...
... you get graphs !