I’ve had a Unifi Mpower pro for a while and I thought it was destined to die forgotten in a closet since UBNT has abandonned it… They are not improving the software anymore, and it’s not really installable at this, plus they have massive security issues with the software controller…
But then I found out that someone had made an MQTT client for this power strip!
I’ve never really worked with MQTT before, but it’s actually quite easy.
First, I installed the software on the power strip, after connecting it to my iot-only wireless network (which doesn’t have internet access. After all, this hardware has no software update, I don’t want to get it into some botnet)
Then I configured it like this:
mqtthost=<ip of my mqtt broker>
topic=homeassistant/mpower1
The power strip publishes to MQTT much information about the state of the plugs.
What I was interested in was the ability to turn them on and off, and to use port1 to monitor our washing machine and alert me when it was finished (when the power usage goes below some value)
To allow me to do that, I defined some sensors to get the power usage of each port, a binary sensor that turns on if the power usage on port1 goes above a fixed value, and some switches to turn everything on or off
So in my configuration.yaml, I have:
sensor:
- platform: mqtt
name: "mpower port1 power"
unit_of_measurement: 'watts'
state_topic: "homeassistant/mpower1/port1/power"
- platform: mqtt
name: "mpower port2 power"
unit_of_measurement: 'watts'
state_topic: "homeassistant/mpower1/port2/power"
- platform: mqtt
name: "mpower port3 power"
unit_of_measurement: 'watts'
state_topic: "homeassistant/mpower1/port3/power"
- platform: mqtt
name: "mpower port4 power"
unit_of_measurement: 'watts'
state_topic: "homeassistant/mpower1/port4/power"
- platform: mqtt
name: "mpower port5 power"
unit_of_measurement: 'watts'
state_topic: "homeassistant/mpower1/port5/power"
- platform: mqtt
name: "mpower port6 power"
unit_of_measurement: 'watts'
state_topic: "homeassistant/mpower1/port6/power"
binary_sensor:
- platform: template
sensors:
washer_state:
friendly_name: "washer state"
value_template: >-
{{ states('sensor.mpower_port1_power')|float > 2 }}
switch:
- platform: mqtt
state_topic: "homeassistant/mpower1/port1/relay"
name: "mpower port1 switch"
command_topic: "homeassistant/mpower1/port1/relay/set"
payload_on: 1
payload_off: 0
availability_topic: 'homeassistant/mpower1/port1/lock/$settable'
payload_available: 'true'
payload_not_available: 'false'
- platform: mqtt
state_topic: "homeassistant/mpower1/port2/relay"
name: "mpower port2 switch"
command_topic: "homeassistant/mpower1/port2/relay/set"
payload_on: 1
payload_off: 0
availability_topic: 'homeassistant/mpower1/port2/lock/$settable'
payload_available: 'true'
payload_not_available: 'false'
- platform: mqtt
state_topic: "homeassistant/mpower1/port3/relay"
name: "mpower port3 switch"
command_topic: "homeassistant/mpower1/port3/relay/set"
payload_on: 1
payload_off: 0
availability_topic: 'homeassistant/mpower1/port3/lock/$settable'
payload_available: 'true'
payload_not_available: 'false'
- platform: mqtt
state_topic: "homeassistant/mpower1/port4/relay"
name: "mpower port4 switch"
command_topic: "homeassistant/mpower1/port4/relay/set"
payload_on: 1
payload_off: 0
availability_topic: 'homeassistant/mpower1/port4/lock/$settable'
payload_available: 'true'
payload_not_available: 'false'
- platform: mqtt
state_topic: "homeassistant/mpower1/port5/relay"
name: "mpower port5 switch"
command_topic: "homeassistant/mpower1/port5/relay/set"
payload_on: 1
payload_off: 0
availability_topic: 'homeassistant/mpower1/port5/lock/$settable'
payload_available: 'true'
payload_not_available: 'false'
- platform: mqtt
state_topic: "homeassistant/mpower1/port6/relay"
name: "mpower port6 switch"
command_topic: "homeassistant/mpower1/port6/relay/set"
payload_on: 1
payload_off: 0
availability_topic: 'homeassistant/mpower1/port6/lock/$settable'
payload_available: 'true'
payload_not_available: 'false'
And in my automations.yaml I have
- id: '1525140123407'
alias: alert if washer stops
trigger:
- platform: state
entity_id:
- binary_sensor.washer_state
from: 'on'
to: 'off'
action:
service: telegram_bot.send_message
data:
message: 'washing over'
target: 123456789
- id: '1525140123408'
alias: alert if washing starts
trigger:
- platform: state
entity_id:
- binary_sensor.washer_state
from: 'off'
to: 'on'
action:
service: telegram_bot.send_message
data:
message: 'washing starts'
target: 123456789
4 replies on “Home assistant and Unifi Mpower pro”
Hi,
Thanks for the write up. I had installed the mqtt client/server on my mPower Pro eight port power stip, but it only sees three outlets. I then noticed that the software’s git page doesn’t list the Pro as a supported device. Did you have to adapt the code, or implement some work around? I’m also seeing a:
sh: Pro: unknown operand, which I guess is the result of the type being specified as “mPower Pro”
Any pointers greatly appreciated!
No, I didn’t have to do anything special, you should open an issue on the github of the guy who developed it I guess
Awesome, thank you for the writeup. Worked first time. Glad to still be able to use the mpower pro hardware even after Ubiquiti abandoned it.
Hi,
Thanks for pointing in the right direction!
A few notes here, this has after githubs TLS/SSL enforcement been “unusable”, but for the sake of other I will leave this comment:
If possible clone it to your local machine (or a server if you have one).
Download webserver (apache2 ie.), put all files in the html folder and remove the index.html.
Change the comment in the readme to use your URL/host/ip and do the same in the install_script.
I did minor tweaks to get it to work with the homeassistant MQTT element.
Hope this helps somebody other than myself!
Cheers,
Ninjakurt93