Add support for flow sensor metrics in RainMachine (#23221)

* Initial commit

* In the clear
This commit is contained in:
Aaron Bach 2019-05-02 01:45:51 -06:00 committed by Fabian Affolter
parent f3925b7ede
commit daa1d103d4
4 changed files with 86 additions and 34 deletions

View file

@ -5,9 +5,11 @@ from homeassistant.core import callback
from homeassistant.helpers.dispatcher import async_dispatcher_connect
from . import (
DATA_CLIENT, DOMAIN as RAINMACHINE_DOMAIN,
OPERATION_RESTRICTIONS_UNIVERSAL, SENSOR_UPDATE_TOPIC, SENSORS,
RainMachineEntity)
DATA_CLIENT, DOMAIN as RAINMACHINE_DOMAIN, PROVISION_SETTINGS,
RESTRICTIONS_UNIVERSAL, SENSOR_UPDATE_TOPIC, SENSORS,
TYPE_FLOW_SENSOR_CLICK_M3, TYPE_FLOW_SENSOR_CONSUMED_LITERS,
TYPE_FLOW_SENSOR_START_INDEX, TYPE_FLOW_SENSOR_WATERING_CLICKS,
TYPE_FREEZE_TEMP, RainMachineEntity)
_LOGGER = logging.getLogger(__name__)
@ -82,5 +84,25 @@ class RainMachineSensor(RainMachineEntity):
async def async_update(self):
"""Update the sensor's state."""
self._state = self.rainmachine.data[OPERATION_RESTRICTIONS_UNIVERSAL][
'freezeProtectTemp']
if self._sensor_type == TYPE_FLOW_SENSOR_CLICK_M3:
self._state = self.rainmachine.data[PROVISION_SETTINGS].get(
'flowSensorClicksPerCubicMeter')
elif self._sensor_type == TYPE_FLOW_SENSOR_CONSUMED_LITERS:
clicks = self.rainmachine.data[PROVISION_SETTINGS].get(
'flowSensorWateringClicks')
clicks_per_m3 = self.rainmachine.data[PROVISION_SETTINGS].get(
'flowSensorClicksPerCubicMeter')
if clicks and clicks_per_m3:
self._state = (clicks * 1000) / clicks_per_m3
else:
self._state = None
elif self._sensor_type == TYPE_FLOW_SENSOR_START_INDEX:
self._state = self.rainmachine.data[PROVISION_SETTINGS].get(
'flowSensorStartIndex')
elif self._sensor_type == TYPE_FLOW_SENSOR_WATERING_CLICKS:
self._state = self.rainmachine.data[PROVISION_SETTINGS].get(
'flowSensorWateringClicks')
elif self._sensor_type == TYPE_FREEZE_TEMP:
self._state = self.rainmachine.data[RESTRICTIONS_UNIVERSAL][
'freezeProtectTemp']