Merge pull request #1167 from kk7ds/mfi-improvements

Mfi improvements
This commit is contained in:
Paulus Schoutsen 2016-02-07 14:40:47 -08:00
commit 779188ad27
3 changed files with 31 additions and 8 deletions

View File

@ -14,14 +14,24 @@ from homeassistant.components.sensor import DOMAIN
from homeassistant.helpers.entity import Entity from homeassistant.helpers.entity import Entity
from homeassistant.helpers import validate_config from homeassistant.helpers import validate_config
REQUIREMENTS = ['mficlient==0.2'] REQUIREMENTS = ['mficlient==0.2.2']
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
STATE_ON = 'on'
STATE_OFF = 'off'
DIGITS = {
'volts': 1,
'amps': 1,
'active_power': 0,
'temperature': 1,
}
SENSOR_MODELS = [ SENSOR_MODELS = [
'Ubiquiti mFi-THS', 'Ubiquiti mFi-THS',
'Ubiquiti mFi-CS', 'Ubiquiti mFi-CS',
'Outlet', 'Outlet',
'Input Analog',
'Input Digital',
] ]
@ -69,7 +79,11 @@ class MfiSensor(Entity):
@property @property
def state(self): def state(self):
return self._port.value if self._port.model == 'Input Digital':
return self._port.value > 0 and STATE_ON or STATE_OFF
else:
digits = DIGITS.get(self._port.tag, 0)
return round(self._port.value, digits)
@property @property
def unit_of_measurement(self): def unit_of_measurement(self):
@ -77,6 +91,8 @@ class MfiSensor(Entity):
return TEMP_CELCIUS return TEMP_CELCIUS
elif self._port.tag == 'active_pwr': elif self._port.tag == 'active_pwr':
return 'Watts' return 'Watts'
elif self._port.model == 'Input Digital':
return 'State'
return self._port.tag return self._port.tag
def update(self): def update(self):

View File

@ -12,12 +12,15 @@ from homeassistant.components.switch import DOMAIN, SwitchDevice
from homeassistant.const import CONF_USERNAME, CONF_PASSWORD from homeassistant.const import CONF_USERNAME, CONF_PASSWORD
from homeassistant.helpers import validate_config from homeassistant.helpers import validate_config
REQUIREMENTS = ['mficlient==0.2'] REQUIREMENTS = ['mficlient==0.2.2']
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
SWITCH_MODELS = [ SWITCH_MODELS = [
'Outlet', 'Outlet',
'Output 5v',
'Output 12v',
'Output 24v',
] ]
@ -56,6 +59,7 @@ class MfiSwitch(SwitchDevice):
""" An mFi switch-able device. """ """ An mFi switch-able device. """
def __init__(self, port): def __init__(self, port):
self._port = port self._port = port
self._target_state = None
@property @property
def should_poll(self): def should_poll(self):
@ -75,14 +79,17 @@ class MfiSwitch(SwitchDevice):
def update(self): def update(self):
self._port.refresh() self._port.refresh()
if self._target_state is not None:
self._port.data['output'] = float(self._target_state)
self._target_state = None
def turn_on(self): def turn_on(self):
self._port.control(True) self._port.control(True)
self._port.data['output'] = 1.0 self._target_state = True
def turn_off(self): def turn_off(self):
self._port.control(False) self._port.control(False)
self._port.data['output'] = 0.0 self._target_state = False
@property @property
def current_power_mwh(self): def current_power_mwh(self):
@ -91,6 +98,6 @@ class MfiSwitch(SwitchDevice):
@property @property
def device_state_attributes(self): def device_state_attributes(self):
attr = {} attr = {}
attr['volts'] = self._port.data.get('v_rms', 0) attr['volts'] = round(self._port.data.get('v_rms', 0), 1)
attr['amps'] = self._port.data.get('i_rms', 0) attr['amps'] = round(self._port.data.get('i_rms', 0), 1)
return attr return attr

View File

@ -107,7 +107,7 @@ limitlessled==1.0.0
# homeassistant.components.sensor.mfi # homeassistant.components.sensor.mfi
# homeassistant.components.switch.mfi # homeassistant.components.switch.mfi
mficlient==0.2 mficlient==0.2.2
# homeassistant.components.discovery # homeassistant.components.discovery
netdisco==0.5.2 netdisco==0.5.2