Add support for flow sensor metrics in RainMachine (#23221)
* Initial commit * In the clear
This commit is contained in:
parent
f3925b7ede
commit
daa1d103d4
4 changed files with 86 additions and 34 deletions
|
@ -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']
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue