Add support for logger info in fronius integration (#54795)

Co-authored-by: Franck Nijhof <frenck@frenck.nl>
This commit is contained in:
Niels Mündler 2021-08-22 18:57:18 +02:00 committed by GitHub
parent b6a1153d42
commit 6d049c724c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 28 additions and 7 deletions

View file

@ -2,7 +2,7 @@
"domain": "fronius",
"name": "Fronius",
"documentation": "https://www.home-assistant.io/integrations/fronius",
"requirements": ["pyfronius==0.5.5"],
"requirements": ["pyfronius==0.6.0"],
"codeowners": ["@nielstron"],
"iot_class": "local_polling"
}

View file

@ -4,6 +4,7 @@ from __future__ import annotations
import copy
from datetime import timedelta
import logging
from typing import Any
from pyfronius import Fronius
import voluptuous as vol
@ -32,6 +33,7 @@ from homeassistant.const import (
from homeassistant.core import callback
from homeassistant.helpers.aiohttp_client import async_get_clientsession
import homeassistant.helpers.config_validation as cv
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.helpers.event import async_track_time_interval
_LOGGER = logging.getLogger(__name__)
@ -42,6 +44,7 @@ TYPE_INVERTER = "inverter"
TYPE_STORAGE = "storage"
TYPE_METER = "meter"
TYPE_POWER_FLOW = "power_flow"
TYPE_LOGGER_INFO = "logger_info"
SCOPE_DEVICE = "device"
SCOPE_SYSTEM = "system"
@ -50,7 +53,13 @@ DEFAULT_DEVICE = 0
DEFAULT_INVERTER = 1
DEFAULT_SCAN_INTERVAL = timedelta(seconds=60)
SENSOR_TYPES = [TYPE_INVERTER, TYPE_STORAGE, TYPE_METER, TYPE_POWER_FLOW]
SENSOR_TYPES = [
TYPE_INVERTER,
TYPE_STORAGE,
TYPE_METER,
TYPE_POWER_FLOW,
TYPE_LOGGER_INFO,
]
SCOPE_TYPES = [SCOPE_DEVICE, SCOPE_SYSTEM]
PREFIX_DEVICE_CLASS_MAPPING = [
@ -138,6 +147,8 @@ async def async_setup_platform(hass, config, async_add_entities, discovery_info=
adapter_cls = FroniusMeterDevice
elif sensor_type == TYPE_POWER_FLOW:
adapter_cls = FroniusPowerFlow
elif sensor_type == TYPE_LOGGER_INFO:
adapter_cls = FroniusLoggerInfo
else:
adapter_cls = FroniusStorage
@ -161,16 +172,18 @@ async def async_setup_platform(hass, config, async_add_entities, discovery_info=
class FroniusAdapter:
"""The Fronius sensor fetching component."""
def __init__(self, bridge, name, device, add_entities):
def __init__(
self, bridge: Fronius, name: str, device: int, add_entities: AddEntitiesCallback
) -> None:
"""Initialize the sensor."""
self.bridge = bridge
self._name = name
self._device = device
self._fetched = {}
self._fetched: dict[str, Any] = {}
self._available = True
self.sensors = set()
self._registered_sensors = set()
self.sensors: set[str] = set()
self._registered_sensors: set[SensorEntity] = set()
self._add_entities = add_entities
@property
@ -289,6 +302,14 @@ class FroniusPowerFlow(FroniusAdapter):
return await self.bridge.current_power_flow()
class FroniusLoggerInfo(FroniusAdapter):
"""Adapter for the fronius power flow."""
async def _update(self):
"""Get the values for the current state."""
return await self.bridge.current_logger_info()
class FroniusTemplateSensor(SensorEntity):
"""Sensor for the single values (e.g. pv power, ac power)."""

View file

@ -1472,7 +1472,7 @@ pyfreedompro==1.1.0
pyfritzhome==0.6.2
# homeassistant.components.fronius
pyfronius==0.5.5
pyfronius==0.6.0
# homeassistant.components.ifttt
pyfttt==0.3