mirror of
https://github.com/home-assistant/core.git
synced 2025-04-26 10:17:51 +00:00
Add support for SAJ inverters connected via WiFi (#27742)
* Add support for SAJ inverters connected via WiFi * Changes after review for saj
This commit is contained in:
parent
65d8c70377
commit
b6fd191dc4
@ -3,7 +3,7 @@
|
|||||||
"name": "SAJ",
|
"name": "SAJ",
|
||||||
"documentation": "https://www.home-assistant.io/integrations/saj",
|
"documentation": "https://www.home-assistant.io/integrations/saj",
|
||||||
"requirements": [
|
"requirements": [
|
||||||
"pysaj==0.0.9"
|
"pysaj==0.0.12"
|
||||||
],
|
],
|
||||||
"dependencies": [],
|
"dependencies": [],
|
||||||
"codeowners": [
|
"codeowners": [
|
||||||
|
@ -9,6 +9,9 @@ import voluptuous as vol
|
|||||||
from homeassistant.components.sensor import PLATFORM_SCHEMA
|
from homeassistant.components.sensor import PLATFORM_SCHEMA
|
||||||
from homeassistant.const import (
|
from homeassistant.const import (
|
||||||
CONF_HOST,
|
CONF_HOST,
|
||||||
|
CONF_PASSWORD,
|
||||||
|
CONF_TYPE,
|
||||||
|
CONF_USERNAME,
|
||||||
DEVICE_CLASS_POWER,
|
DEVICE_CLASS_POWER,
|
||||||
DEVICE_CLASS_TEMPERATURE,
|
DEVICE_CLASS_TEMPERATURE,
|
||||||
ENERGY_KILO_WATT_HOUR,
|
ENERGY_KILO_WATT_HOUR,
|
||||||
@ -31,6 +34,8 @@ MAX_INTERVAL = 300
|
|||||||
|
|
||||||
UNIT_OF_MEASUREMENT_HOURS = "h"
|
UNIT_OF_MEASUREMENT_HOURS = "h"
|
||||||
|
|
||||||
|
INVERTER_TYPES = ["ethernet", "wifi"]
|
||||||
|
|
||||||
SAJ_UNIT_MAPPINGS = {
|
SAJ_UNIT_MAPPINGS = {
|
||||||
"W": POWER_WATT,
|
"W": POWER_WATT,
|
||||||
"kWh": ENERGY_KILO_WATT_HOUR,
|
"kWh": ENERGY_KILO_WATT_HOUR,
|
||||||
@ -40,16 +45,24 @@ SAJ_UNIT_MAPPINGS = {
|
|||||||
"": None,
|
"": None,
|
||||||
}
|
}
|
||||||
|
|
||||||
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({vol.Required(CONF_HOST): cv.string})
|
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(
|
||||||
|
{
|
||||||
|
vol.Required(CONF_HOST): cv.string,
|
||||||
|
vol.Optional(CONF_TYPE, default=INVERTER_TYPES[0]): vol.In(INVERTER_TYPES),
|
||||||
|
vol.Inclusive(CONF_USERNAME, "credentials"): cv.string,
|
||||||
|
vol.Inclusive(CONF_PASSWORD, "credentials"): cv.string,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
async def async_setup_platform(hass, config, async_add_entities, discovery_info=None):
|
async def async_setup_platform(hass, config, async_add_entities, discovery_info=None):
|
||||||
"""Set up SAJ sensors."""
|
"""Set up SAJ sensors."""
|
||||||
|
|
||||||
remove_interval_update = None
|
remove_interval_update = None
|
||||||
|
wifi = config[CONF_TYPE] == INVERTER_TYPES[1]
|
||||||
|
|
||||||
# Init all sensors
|
# Init all sensors
|
||||||
sensor_def = pysaj.Sensors()
|
sensor_def = pysaj.Sensors(wifi)
|
||||||
|
|
||||||
# Use all sensors by default
|
# Use all sensors by default
|
||||||
hass_sensors = []
|
hass_sensors = []
|
||||||
@ -57,7 +70,25 @@ async def async_setup_platform(hass, config, async_add_entities, discovery_info=
|
|||||||
for sensor in sensor_def:
|
for sensor in sensor_def:
|
||||||
hass_sensors.append(SAJsensor(sensor))
|
hass_sensors.append(SAJsensor(sensor))
|
||||||
|
|
||||||
saj = pysaj.SAJ(config[CONF_HOST])
|
kwargs = {}
|
||||||
|
|
||||||
|
if wifi:
|
||||||
|
kwargs["wifi"] = True
|
||||||
|
if config.get(CONF_USERNAME) and config.get(CONF_PASSWORD):
|
||||||
|
kwargs["username"] = config[CONF_USERNAME]
|
||||||
|
kwargs["password"] = config[CONF_PASSWORD]
|
||||||
|
|
||||||
|
try:
|
||||||
|
saj = pysaj.SAJ(config[CONF_HOST], **kwargs)
|
||||||
|
await saj.read(sensor_def)
|
||||||
|
except pysaj.UnauthorizedException:
|
||||||
|
_LOGGER.error("Username and/or password is wrong.")
|
||||||
|
return
|
||||||
|
except pysaj.UnexpectedResponseException as err:
|
||||||
|
_LOGGER.error(
|
||||||
|
"Error in SAJ, please check host/ip address. Original error: %s", err
|
||||||
|
)
|
||||||
|
return
|
||||||
|
|
||||||
async_add_entities(hass_sensors)
|
async_add_entities(hass_sensors)
|
||||||
|
|
||||||
|
@ -1420,7 +1420,7 @@ pyrepetier==3.0.5
|
|||||||
pysabnzbd==1.1.0
|
pysabnzbd==1.1.0
|
||||||
|
|
||||||
# homeassistant.components.saj
|
# homeassistant.components.saj
|
||||||
pysaj==0.0.9
|
pysaj==0.0.12
|
||||||
|
|
||||||
# homeassistant.components.sony_projector
|
# homeassistant.components.sony_projector
|
||||||
pysdcp==1
|
pysdcp==1
|
||||||
|
Loading…
x
Reference in New Issue
Block a user