Skip to content

Commit

Permalink
Add power view to sunsynk intergration
Browse files Browse the repository at this point in the history
  • Loading branch information
MorneSaunders360 committed Apr 11, 2024
1 parent 3353fc9 commit b28ea3d
Show file tree
Hide file tree
Showing 5 changed files with 26 additions and 12 deletions.
16 changes: 11 additions & 5 deletions custom_components/solar_sunsynk/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,22 +4,28 @@
from .sunsynkapi import sunsynk_api

from homeassistant.config_entries import ConfigEntry
from homeassistant.const import CONF_PASSWORD, CONF_USERNAME,CONF_SCAN_INTERVAL
from homeassistant.const import CONF_PASSWORD, CONF_USERNAME,CONF_REGION,CONF_SCAN_INTERVAL
from homeassistant.core import HomeAssistant
from .const import DOMAIN, PLATFORMS,SetSolarSettingsSchema
from .coordinator import SunsynkDataUpdateCoordinator

# import logging
# _LOGGER = logging.getLogger(__name__)
#import logging
#_LOGGER = logging.getLogger(__name__)
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
"""Set up Sunsynk from a config entry."""
scan_interval = 0
try:
scan_interval = entry.data[CONF_SCAN_INTERVAL]
except Exception as e:
scan_interval = 60

client = sunsynk_api(entry.data[CONF_USERNAME],entry.data[CONF_PASSWORD],scan_interval,hass)

region=''
try:
region = entry.data[CONF_REGION]
except Exception as e:
region = 'Sunsynk'

client = sunsynk_api(region,entry.data[CONF_USERNAME],entry.data[CONF_PASSWORD],scan_interval,hass)
coordinator = SunsynkDataUpdateCoordinator(hass, client=client)
await coordinator.async_config_entry_first_refresh()

Expand Down
7 changes: 4 additions & 3 deletions custom_components/solar_sunsynk/config_flow.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import voluptuous as vol
from datetime import timedelta
from homeassistant import config_entries
from homeassistant.const import CONF_PASSWORD, CONF_USERNAME,CONF_SCAN_INTERVAL
from homeassistant.const import CONF_PASSWORD, CONF_USERNAME,CONF_REGION,CONF_SCAN_INTERVAL
from homeassistant.core import HomeAssistant
from homeassistant.data_entry_flow import FlowResult
from homeassistant.exceptions import HomeAssistantError
Expand All @@ -19,14 +19,15 @@
{
vol.Required(CONF_USERNAME): str,
vol.Required(CONF_PASSWORD): str,
vol.Optional(CONF_SCAN_INTERVAL, default=60): int
vol.Optional(CONF_SCAN_INTERVAL, default=60): int,
vol.Required(CONF_REGION): vol.In(['PowerView', 'Sunsynk']),
}
)


async def validate_input(hass: HomeAssistant, data: dict[str, Any]) -> dict[str, Any]:
"""Validate the user input allows us to connect."""
client = sunsynk_api(data[CONF_USERNAME],data[CONF_PASSWORD],data[CONF_SCAN_INTERVAL],hass)
client = sunsynk_api(data[CONF_REGION],data[CONF_USERNAME],data[CONF_PASSWORD],data[CONF_SCAN_INTERVAL],hass)
try:
await client.authenticate(data[CONF_USERNAME], data[CONF_PASSWORD])

Expand Down
3 changes: 2 additions & 1 deletion custom_components/solar_sunsynk/enums.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@
@unique
class SunsynkApiNames(str, Enum):
"""Device names used by Sunsynk."""

PowerView = "PowerView"
Sunsynk = "Sunsynk"

@unique
class SunsynkNames(str, Enum):
Expand Down
1 change: 1 addition & 0 deletions custom_components/solar_sunsynk/strings.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
"data": {
"username": "[%key:common::config_flow::data::username%]",
"password": "[%key:common::config_flow::data::password%]",
"region": "[%key:common::config_flow::data::region%]",
"scan_interval": "[%key:common::config_flow::data::scan_interval%]"
}
},
Expand Down
11 changes: 8 additions & 3 deletions custom_components/solar_sunsynk/sunsynkapi.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@
import logging
_LOGGER = logging.getLogger(__name__)
class sunsynk_api:
def __init__(self, username, password,scan_interval, hass: HomeAssistant):
def __init__(self, region, username, password,scan_interval, hass: HomeAssistant):
self.region = region
self.hass = hass
self.username = username
self.password = password
Expand All @@ -31,8 +32,12 @@ async def request(self, method, path, body, autoAuth):
headers = {
'Content-Type': 'application/json',
}

host = 'https://api.sunsynk.net/'

_LOGGER.error(self.region)
if self.region == SunsynkApiNames.PowerView or self.region == 'Region 1':
host = 'https://pv.inteless.com/'
elif self.region == SunsynkApiNames.Sunsynk or self.region == 'Region 2':
host = 'https://api.sunsynk.net/'
url = host + path
response = await self.hass.async_add_executor_job(
partial(self._send_request, method, url, headers, body)
Expand Down

0 comments on commit b28ea3d

Please sign in to comment.