From c517a332389915ceb90e7baa0ea7fd3653bc0c45 Mon Sep 17 00:00:00 2001 From: Thijs Walcarius Date: Wed, 20 Oct 2021 17:16:04 +0200 Subject: [PATCH] Add component files --- README.md | 21 ++++ __init__.py | 38 +++++++ config_flow.py | 101 +++++++++++++++++ const.py | 198 ++++++++++++++++++++++++++++++++++ hacs.json | 5 + images/energy-config.png | Bin 0 -> 77082 bytes images/sensors-screenshot.png | Bin 0 -> 19691 bytes manifest.json | 18 ++++ sensor.py | 91 ++++++++++++++++ strings.json | 21 ++++ translations/en.json | 21 ++++ 11 files changed, 514 insertions(+) create mode 100644 README.md create mode 100644 __init__.py create mode 100644 config_flow.py create mode 100644 const.py create mode 100644 hacs.json create mode 100644 images/energy-config.png create mode 100644 images/sensors-screenshot.png create mode 100644 manifest.json create mode 100644 sensor.py create mode 100644 strings.json create mode 100644 translations/en.json diff --git a/README.md b/README.md new file mode 100644 index 0000000..9d55989 --- /dev/null +++ b/README.md @@ -0,0 +1,21 @@ +# Huawei Solar Sensors + +This integration splits out the various values that are fetched from your +Huawei Solar inverter into separate HomeAssistant sensors. These are properly +configured to allow immediate integration into the HA Energy view. + +![sensors](images/sensors-screenshot.png) +![energy-config](images/energy-config.png) + +## Installation + +1. Install this integration with HACS, or copy the contents of this +repository into the `custom_components/huawei_solar` directory +2. Restart HA +3. Go to `Configuration` -> `Integrations` and click the `+ Add Integration` +button +4. Select `Huawei Solar` from the list +5. Enter the IP address of your inverter (192.168.200.1 if you are connected to +its WiFi AP). Select if you have a battery and/or optimizers. The slave id is +typically 0. + diff --git a/__init__.py b/__init__.py new file mode 100644 index 0000000..3e65eae --- /dev/null +++ b/__init__.py @@ -0,0 +1,38 @@ +"""The Huawei Solar integration.""" +from __future__ import annotations + +from homeassistant.config_entries import ConfigEntry +from homeassistant.core import HomeAssistant +from homeassistant.const import CONF_HOST + +from .const import DOMAIN, CONF_SLAVE, DATA_MODBUS_CLIENT + +from huawei_solar import HuaweiSolar, ConnectionException + +# TODO List the platforms that you want to support. +# For your initial PR, limit it to 1 platform. +PLATFORMS: list[str] = ["sensor"] + + +async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: + """Set up Huawei Solar from a config entry.""" + # TODO Store an API object for your platforms to access + hass.data.setdefault(DOMAIN, {})[entry.entry_id] = { + DATA_MODBUS_CLIENT: HuaweiSolar( + host=entry.data[CONF_HOST], slave=entry.data[CONF_SLAVE] + ) + } + + hass.config_entries.async_setup_platforms(entry, PLATFORMS) + + return True + + +async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: + """Unload a config entry.""" + unload_ok = await hass.config_entries.async_unload_platforms(entry, PLATFORMS) + if unload_ok: + hass.data[DOMAIN].pop(entry.entry_id) + + return unload_ok +"""Huawei Solar integration which connects to the local Modbus TCP endpoint""" \ No newline at end of file diff --git a/config_flow.py b/config_flow.py new file mode 100644 index 0000000..cb47766 --- /dev/null +++ b/config_flow.py @@ -0,0 +1,101 @@ +"""Config flow for Huawei Solar integration.""" +from __future__ import annotations + +import logging +from typing import Any + +import voluptuous as vol + +from homeassistant import config_entries +from homeassistant.core import HomeAssistant +from homeassistant.data_entry_flow import FlowResult +from homeassistant.exceptions import HomeAssistantError + +from homeassistant.const import CONF_HOST +from .const import ( + DOMAIN, + CONF_BATTERY, + CONF_OPTIMIZERS, + CONF_SLAVE, + ATTR_MODEL_ID, + ATTR_SERIAL_NUMBER, +) + +from huawei_solar import HuaweiSolar, ConnectionException + +_LOGGER = logging.getLogger(__name__) + +STEP_USER_DATA_SCHEMA = vol.Schema( + { + vol.Required(CONF_HOST): str, + vol.Optional(CONF_OPTIMIZERS, default=False): bool, + vol.Optional(CONF_BATTERY, default=False): bool, + vol.Optional(CONF_SLAVE, default=0): int, + } +) + + +async def validate_input(hass: HomeAssistant, data: dict[str, Any]) -> dict[str, Any]: + """Validate the user input allows us to connect. + + Data has the keys from STEP_USER_DATA_SCHEMA with values provided by the user. + """ + # TODO validate the data can be used to set up a connection. + + # If your PyPI package is not built with async, pass your methods + # to the executor: + # await hass.async_add_executor_job( + # your_validate_func, data["username"], data["password"] + # ) + + inverter = HuaweiSolar(host=data[CONF_HOST]) + + try: + model_name = inverter.get(ATTR_MODEL_ID).value + serial_number = inverter.get(ATTR_SERIAL_NUMBER).value + + # Return info that you want to store in the config entry. + return dict(model_name=model_name, serial_number=serial_number) + except ConnectionException as ex: + raise CannotConnect from ex + + +class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN): + """Handle a config flow for Huawei Solar.""" + + VERSION = 1 + + async def async_step_user( + self, user_input: dict[str, Any] | None = None + ) -> FlowResult: + """Handle the initial step.""" + if user_input is None: + return self.async_show_form( + step_id="user", data_schema=STEP_USER_DATA_SCHEMA + ) + + errors = {} + + try: + info = await validate_input(self.hass, user_input) + except CannotConnect: + errors["base"] = "cannot_connect" + except InvalidAuth: + errors["base"] = "invalid_auth" + except Exception: # pylint: disable=broad-except + _LOGGER.exception("Unexpected exception") + errors["base"] = "unknown" + else: + return self.async_create_entry(title=info["model_name"], data=user_input) + + return self.async_show_form( + step_id="user", data_schema=STEP_USER_DATA_SCHEMA, errors=errors + ) + + +class CannotConnect(HomeAssistantError): + """Error to indicate we cannot connect.""" + + +class InvalidAuth(HomeAssistantError): + """Error to indicate there is invalid auth.""" diff --git a/const.py b/const.py new file mode 100644 index 0000000..de5bfc6 --- /dev/null +++ b/const.py @@ -0,0 +1,198 @@ +"""Constants for the Huawei Solar integration.""" +from dataclasses import dataclass + +from homeassistant.const import ( + DEVICE_CLASS_BATTERY, + POWER_WATT, + ENERGY_KILO_WATT_HOUR, + DEVICE_CLASS_ENERGY, + DEVICE_CLASS_POWER, + DEVICE_CLASS_POWER_FACTOR, + PERCENTAGE, +) + +from homeassistant.components.sensor import ( + STATE_CLASS_MEASUREMENT, + STATE_CLASS_TOTAL, + STATE_CLASS_TOTAL_INCREASING, + SensorEntityDescription, +) + +DOMAIN = "huawei_solar" + +DATA_MODBUS_CLIENT = "client" + + +ATTR_MODEL_ID = "model_id" +ATTR_SERIAL_NUMBER = "serial_number" + +CONF_OPTIMIZERS = "optimizers" +CONF_BATTERY = "battery" +CONF_SLAVE = "slave" + +ATTR_DAILY_YIELD = "daily_yield_energy" +ATTR_TOTAL_YIELD = "accumulated_yield_energy" + +ATTR_POWER_FACTOR = "power_factor" + +ATTR_STORAGE_TOTAL_CHARGE = "storage_total_charge" +ATTR_STORAGE_TOTAL_DISCHARGE = "storage_total_discharge" + +ATTR_STORAGE_DAY_CHARGE = "storage_current_day_charge_capacity" +ATTR_STORAGE_DAY_DISCHARGE = "storage_current_day_discharge_capacity" + +ATTR_STORAGE_STATE_OF_CAPACITY = "storage_state_of_capacity" +ATTR_STORAGE_CHARGE_DISCHARGE_POWER = "storage_charge_discharge_power" + +ATTR_GRID_EXPORTED = "grid_exported_energy" +ATTR_GRID_ACCUMULATED = "grid_accumulated_energy" + +ATTR_ACTIVE_POWER = "active_power" +ATTR_INPUT_POWER = "input_power" +ATTR_POWER_METER_ACTIVE_POWER = "power_meter_active_power" + +ATTR_NB_OPTIMIZERS = "nb_optimizers" +ATTR_NB_ONLINE_OPTIMIZERS = "nb_online_optimizers" + +ATTR_NB_PV_STRINGS = "nb_pv_strings" +ATTR_RATED_POWER = "rated_power" +ATTR_GRID_STANDARD = "grid_standard" +ATTR_GRID_COUNTRY = "grid_country" + +ATTR_DAY_POWER_PEAK = "day_active_power_peak" +ATTR_REACTIVE_POWER = "reactive_power" +ATTR_EFFICIENCY = "efficiency" +ATTR_GRID_FREQUENCY = "grid_frequency" +ATTR_GRID_VOLTAGE = "grid_voltage" +ATTR_GRID_CURRENT = "grid_current" +ATTR_STARTUP_TIME = "startup_time" +ATTR_SHUTDOWN_TIME = "shutdown_time" +ATTR_INTERNAL_TEMPERATURE = "internal_temperature" +ATTR_DEVICE_STATUS = "device_status" +ATTR_SYSTEM_TIME = "system_time" + + +@dataclass +class HuaweiSolarSensorEntityDescription(SensorEntityDescription): + pass + + +SENSOR_TYPES: tuple[HuaweiSolarSensorEntityDescription] = ( + HuaweiSolarSensorEntityDescription( + key=ATTR_DAILY_YIELD, + name="Daily Yield", + icon="mdi:solar-power", + native_unit_of_measurement=ENERGY_KILO_WATT_HOUR, + device_class=DEVICE_CLASS_ENERGY, + state_class=STATE_CLASS_TOTAL_INCREASING, + ), + HuaweiSolarSensorEntityDescription( + key=ATTR_TOTAL_YIELD, + name="Total Yield", + native_unit_of_measurement=ENERGY_KILO_WATT_HOUR, + device_class=DEVICE_CLASS_ENERGY, + state_class=STATE_CLASS_TOTAL, + ), + HuaweiSolarSensorEntityDescription( + key=ATTR_ACTIVE_POWER, + name="Active Power", + native_unit_of_measurement=POWER_WATT, + device_class=DEVICE_CLASS_POWER, + state_class=STATE_CLASS_MEASUREMENT, + ), + HuaweiSolarSensorEntityDescription( + key=ATTR_INPUT_POWER, + name="Input Power", + native_unit_of_measurement=POWER_WATT, + device_class=DEVICE_CLASS_POWER, + state_class=STATE_CLASS_MEASUREMENT, + ), + HuaweiSolarSensorEntityDescription( + key=ATTR_POWER_METER_ACTIVE_POWER, + name="Power Meter Active Power", + native_unit_of_measurement=POWER_WATT, + device_class=DEVICE_CLASS_POWER, + state_class=STATE_CLASS_MEASUREMENT, + ), + HuaweiSolarSensorEntityDescription( + key=ATTR_POWER_FACTOR, + name="Power Factor", + device_class=DEVICE_CLASS_POWER_FACTOR, + state_class=STATE_CLASS_MEASUREMENT, + ), + HuaweiSolarSensorEntityDescription( + key=ATTR_GRID_ACCUMULATED, + name="Grid Consumption", + native_unit_of_measurement=ENERGY_KILO_WATT_HOUR, + device_class=DEVICE_CLASS_ENERGY, + state_class=STATE_CLASS_TOTAL_INCREASING, + ), + HuaweiSolarSensorEntityDescription( + key=ATTR_GRID_EXPORTED, + name="Grid Exported", + native_unit_of_measurement=ENERGY_KILO_WATT_HOUR, + device_class=DEVICE_CLASS_ENERGY, + state_class=STATE_CLASS_TOTAL_INCREASING, + ), +) + +BATTERY_SENSOR_TYPES = ( + HuaweiSolarSensorEntityDescription( + key=ATTR_STORAGE_TOTAL_CHARGE, + name="Battery Total Charge", + icon="mdi:battery-plus-variant", + native_unit_of_measurement=ENERGY_KILO_WATT_HOUR, + state_class=STATE_CLASS_TOTAL, + device_class=DEVICE_CLASS_ENERGY, + ), + HuaweiSolarSensorEntityDescription( + key=ATTR_STORAGE_DAY_CHARGE, + name="Battery Day Charge", + icon="mdi:battery-plus-variant", + native_unit_of_measurement=ENERGY_KILO_WATT_HOUR, + state_class=STATE_CLASS_TOTAL_INCREASING, + device_class=DEVICE_CLASS_ENERGY, + ), + HuaweiSolarSensorEntityDescription( + key=ATTR_STORAGE_TOTAL_DISCHARGE, + name="Battery Total Discharge", + icon="mdi:battery-minus-variant", + native_unit_of_measurement=ENERGY_KILO_WATT_HOUR, + state_class=STATE_CLASS_TOTAL, + device_class=DEVICE_CLASS_ENERGY, + ), + HuaweiSolarSensorEntityDescription( + key=ATTR_STORAGE_DAY_DISCHARGE, + name="Battery Day Discharge", + icon="mdi:battery-minus-variant", + native_unit_of_measurement=ENERGY_KILO_WATT_HOUR, + state_class=STATE_CLASS_TOTAL_INCREASING, + device_class=DEVICE_CLASS_ENERGY, + ), + HuaweiSolarSensorEntityDescription( + key=ATTR_STORAGE_STATE_OF_CAPACITY, + name="Battery State of Capacity", + icon="mdi:home-battery", + native_unit_of_measurement=PERCENTAGE, + state_class=STATE_CLASS_MEASUREMENT, + ), + HuaweiSolarSensorEntityDescription( + key=ATTR_STORAGE_CHARGE_DISCHARGE_POWER, + name="Charge/Discharge Power", + icon="mdi:flash", + native_unit_of_measurement=POWER_WATT, + state_class=STATE_CLASS_MEASUREMENT, + device_class=DEVICE_CLASS_POWER, + ), +) + +OPTIMIZER_SENSOR_TYPES = ( + HuaweiSolarSensorEntityDescription( + key=ATTR_NB_ONLINE_OPTIMIZERS, + name="Optimizers Online", + icon="mdi:solar-panel", + native_unit_of_measurement="optimizers", + state_class=STATE_CLASS_MEASUREMENT, + device_class=DEVICE_CLASS_ENERGY, + ), +) diff --git a/hacs.json b/hacs.json new file mode 100644 index 0000000..b35c066 --- /dev/null +++ b/hacs.json @@ -0,0 +1,5 @@ +{ + "name": "Huawei Solar", + "content_in_root": true, + "render_readme": true +} \ No newline at end of file diff --git a/images/energy-config.png b/images/energy-config.png new file mode 100644 index 0000000000000000000000000000000000000000..e711d833dc7f0adc1f0429af8c9f7e3669e6d6df GIT binary patch literal 77082 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
C1ziP1SCJYO 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 DECH*E literal 0 HcmV?d00001 diff --git a/manifest.json b/manifest.json new file mode 100644 index 0000000..8f60806 --- /dev/null +++ b/manifest.json @@ -0,0 +1,18 @@ +{ + "domain": "huawei_solar", + "name": "Huawei Solar", + "config_flow": true, + "documentation": "https://www.home-assistant.io/integrations/huawei_solar", + "requirements": [ + "huawei_solar==1.1.0" + ], + "ssdp": [], + "zeroconf": [], + "homekit": {}, + "dependencies": [], + "codeowners": [ + "@wlcrs" + ], + "iot_class": "local_polling", + "version": "2.0.0-alpha1" +} \ No newline at end of file diff --git a/sensor.py b/sensor.py new file mode 100644 index 0000000..41df798 --- /dev/null +++ b/sensor.py @@ -0,0 +1,91 @@ +"""Support for Huawei inverter monitoring API.""" +import logging +import backoff + +from huawei_solar import HuaweiSolar, ConnectionException, ReadException + +from .const import ( + DOMAIN, + DATA_MODBUS_CLIENT, + CONF_BATTERY, + CONF_OPTIMIZERS, + OPTIMIZER_SENSOR_TYPES, + HuaweiSolarSensorEntityDescription, + SENSOR_TYPES, + BATTERY_SENSOR_TYPES, +) + +import homeassistant.helpers.config_validation as cv +from homeassistant.components.sensor import SensorEntity + + +async def async_setup_entry(hass, entry, async_add_entities): + """Add Huawei Solar entry""" + inverter = hass.data[DOMAIN][entry.entry_id][DATA_MODBUS_CLIENT] + + serial_number = inverter.get("serial_number").value + name = inverter.get("model_name").value + + device_info = { + "identifiers": {(DOMAIN, name, serial_number)}, + "name": name, + "manufacturer": "Huawei", + "serial_number": serial_number, + } + + async_add_entities( + [HuaweiSolarSensor(inverter, descr, device_info) for descr in SENSOR_TYPES], + True, + ) + + if entry.data[CONF_BATTERY]: + async_add_entities( + [ + HuaweiSolarSensor(inverter, descr, device_info) + for descr in BATTERY_SENSOR_TYPES + ], + True, + ) + + if entry.data[CONF_OPTIMIZERS]: + async_add_entities( + [ + HuaweiSolarSensor(inverter, descr, device_info) + for descr in OPTIMIZER_SENSOR_TYPES + ], + True, + ) + + +class HuaweiSolarSensor(SensorEntity): + + entity_description: HuaweiSolarSensorEntityDescription + + def __init__( + self, + inverter: HuaweiSolar, + description: HuaweiSolarSensorEntityDescription, + device_info, + ): + + self._inverter = inverter + self.entity_description = description + + self._attr_device_info = device_info + self._attr_unique_id = f"{device_info['serial_number']}_{description.key}" + + self._state = None + + @property + def state(self): + """Return the state of the sensor.""" + return self._state + + def update(self): + """Get the latest data from the Huawei solar inverter.""" + + @backoff.on_exception(backoff.expo, (ConnectionException, ReadException), max_time=120) + def _get_value(): + return self._inverter.get(self.entity_description.key).value + + self._state = _get_value() diff --git a/strings.json b/strings.json new file mode 100644 index 0000000..7db32d1 --- /dev/null +++ b/strings.json @@ -0,0 +1,21 @@ +{ + "config": { + "step": { + "user": { + "data": { + "host": "[%key:common::config_flow::data::host%]", + "battery": "Battery Present", + "optimizers": "Optimizers present" + } + } + }, + "error": { + "cannot_connect": "[%key:common::config_flow::error::cannot_connect%]", + "invalid_auth": "[%key:common::config_flow::error::invalid_auth%]", + "unknown": "[%key:common::config_flow::error::unknown%]" + }, + "abort": { + "already_configured": "[%key:common::config_flow::abort::already_configured_device%]" + } + } +} \ No newline at end of file diff --git a/translations/en.json b/translations/en.json new file mode 100644 index 0000000..8991f41 --- /dev/null +++ b/translations/en.json @@ -0,0 +1,21 @@ +{ + "config": { + "abort": { + "already_configured": "Device is already configured" + }, + "error": { + "cannot_connect": "Failed to connect", + "invalid_auth": "Invalid authentication", + "unknown": "Unexpected error" + }, + "step": { + "user": { + "data": { + "battery": "Battery Present", + "host": "Host", + "optimizers": "Optimizers present" + } + } + } + } +} \ No newline at end of file