Skip to content
This repository has been archived by the owner on Mar 19, 2024. It is now read-only.

Commit

Permalink
Merge pull request #5 from thomasgermain/release_1_2_0
Browse files Browse the repository at this point in the history
Release 1 2 0
  • Loading branch information
thomasgermain authored Apr 4, 2020
2 parents 1bb490f + b711c3e commit 425b4a6
Show file tree
Hide file tree
Showing 27 changed files with 79 additions and 38 deletions.
5 changes: 4 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,10 @@ First release using config flow
- Removed boiler temperature and boiler water pressure in favor of `report` entity (breaking change)
- Better error handling
- Automatic re-authentication in case of error

### [1.2.0](https://github.com/thomasgermain/vaillant-component/releases/tag/1.2.0)
- Adding a way to specify serial number in case you have multiple
- some error log improvement/fix
- adding some none check

## Provided entities
- 1 water_heater entity, if any water heater: `water_heater.vaillant_<water heater id>`, basically `water_heater.vaillant_control_dhw`
Expand Down
3 changes: 2 additions & 1 deletion vaillant/.translations/bg.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
"user": {
"data": {
"password": "Password",
"username": "Username"
"username": "Username",
"serial_number": "Serial number"
},
"title": "Connection information (same as multiMATIC application)"
}
Expand Down
3 changes: 2 additions & 1 deletion vaillant/.translations/ca.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
"user": {
"data": {
"password": "Password",
"username": "Username"
"username": "Username",
"serial_number": "Serial number"
},
"title": "Connection information (same as multiMATIC application)"
}
Expand Down
3 changes: 2 additions & 1 deletion vaillant/.translations/cs.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
"user": {
"data": {
"password": "Password",
"username": "Username"
"username": "Username",
"serial_number": "Serial number"
},
"title": "Connection information (same as multiMATIC application)"
}
Expand Down
3 changes: 2 additions & 1 deletion vaillant/.translations/da.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
"user": {
"data": {
"password": "Password",
"username": "Username"
"username": "Username",
"serial_number": "Serial number"
},
"title": "Connection information (same as multiMATIC application)"
}
Expand Down
3 changes: 2 additions & 1 deletion vaillant/.translations/de.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
"user": {
"data": {
"password": "Password",
"username": "Username"
"username": "Username",
"serial_number": "Serial number"
},
"title": "Connection information (same as multiMATIC application)"
}
Expand Down
3 changes: 2 additions & 1 deletion vaillant/.translations/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
"user": {
"data": {
"password": "Password",
"username": "Username"
"username": "Username",
"serial_number": "Serial number"
},
"title": "Connection information (same as multiMATIC application)"
}
Expand Down
3 changes: 2 additions & 1 deletion vaillant/.translations/es.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
"user": {
"data": {
"password": "Password",
"username": "Username"
"username": "Username",
"serial_number": "Serial number"
},
"title": "Connection information (same as multiMATIC application)"
}
Expand Down
3 changes: 2 additions & 1 deletion vaillant/.translations/fr.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@
"user": {
"data": {
"password": "Mot de passe",
"username": "Nom d'utilisateur"
"username": "Nom d'utilisateur",
"serial_number": "Numéro de série"
},
"title": "Remplissez vos informations de connexion (les mêmes que l'application multiMATIC)"
}
Expand Down
3 changes: 2 additions & 1 deletion vaillant/.translations/it.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
"user": {
"data": {
"password": "Password",
"username": "Username"
"username": "Username",
"serial_number": "Serial number"
},
"title": "Connection information (same as multiMATIC application)"
}
Expand Down
3 changes: 2 additions & 1 deletion vaillant/.translations/ko.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
"user": {
"data": {
"password": "Password",
"username": "Username"
"username": "Username",
"serial_number": "Serial number"
},
"title": "Connection information (same as multiMATIC application)"
}
Expand Down
3 changes: 2 additions & 1 deletion vaillant/.translations/lb.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
"user": {
"data": {
"password": "Password",
"username": "Username"
"username": "Username",
"serial_number": "Serial number"
},
"title": "Connection information (same as multiMATIC application)"
}
Expand Down
3 changes: 2 additions & 1 deletion vaillant/.translations/nl.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
"user": {
"data": {
"password": "Password",
"username": "Username"
"username": "Username",
"serial_number": "Serial number"
},
"title": "Connection information (same as multiMATIC application)"
}
Expand Down
3 changes: 2 additions & 1 deletion vaillant/.translations/nn.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
"user": {
"data": {
"password": "Password",
"username": "Username"
"username": "Username",
"serial_number": "Serial number"
},
"title": "Connection information (same as multiMATIC application)"
}
Expand Down
3 changes: 2 additions & 1 deletion vaillant/.translations/no.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
"user": {
"data": {
"password": "Password",
"username": "Username"
"username": "Username",
"serial_number": "Serial number"
},
"title": "Connection information (same as multiMATIC application)"
}
Expand Down
3 changes: 2 additions & 1 deletion vaillant/.translations/pl.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
"user": {
"data": {
"password": "Hasło",
"username": "Nazwa użytkownika"
"username": "Nazwa użytkownika",
"serial_number": "Serial number"
},
"title": "Informacje o połączeniu (takie same jak w aplikacji multiMATIC)"
}
Expand Down
3 changes: 2 additions & 1 deletion vaillant/.translations/pt-BR.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
"user": {
"data": {
"password": "Password",
"username": "Username"
"username": "Username",
"serial_number": "Serial number"
},
"title": "Connection information (same as multiMATIC application)"
}
Expand Down
3 changes: 2 additions & 1 deletion vaillant/.translations/pt.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
"user": {
"data": {
"password": "Password",
"username": "Username"
"username": "Username",
"serial_number": "Serial number"
},
"title": "Connection information (same as multiMATIC application)"
}
Expand Down
3 changes: 2 additions & 1 deletion vaillant/.translations/ru.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
"user": {
"data": {
"password": "Password",
"username": "Username"
"username": "Username",
"serial_number": "Serial number"
},
"title": "Connection information (same as multiMATIC application)"
}
Expand Down
3 changes: 2 additions & 1 deletion vaillant/.translations/sl.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
"user": {
"data": {
"password": "Password",
"username": "Username"
"username": "Username",
"serial_number": "Serial number"
},
"title": "Connection information (same as multiMATIC application)"
}
Expand Down
3 changes: 2 additions & 1 deletion vaillant/.translations/zh-Hant.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
"user": {
"data": {
"password": "Password",
"username": "Username"
"username": "Username",
"serial_number": "Serial number"
},
"title": "Connection information (same as multiMATIC application)"
}
Expand Down
5 changes: 3 additions & 2 deletions vaillant/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from homeassistant.const import CONF_PASSWORD, CONF_USERNAME, EVENT_HOMEASSISTANT_STOP
from homeassistant.core import HomeAssistant

from .const import DOMAIN, PLATFORMS
from .const import CONF_SERIAL_NUMBER, DOMAIN, PLATFORMS
from .hub import ApiHub, DomainData
from .service import SERVICES, VaillantServiceHandler

Expand All @@ -23,7 +23,8 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry):

username = entry.data[CONF_USERNAME]
password = entry.data[CONF_PASSWORD]
api: ApiHub = ApiHub(hass, username, password)
serial = entry.data.get(CONF_SERIAL_NUMBER)
api: ApiHub = ApiHub(hass, username, password, serial)
await api.authenticate()
await api.update_system()

Expand Down
35 changes: 26 additions & 9 deletions vaillant/config_flow.py
Original file line number Diff line number Diff line change
@@ -1,17 +1,24 @@
"""Config flow for vaillant integration."""
import logging

from pymultimatic.api import ApiError
import voluptuous as vol

from homeassistant import config_entries, core, exceptions
from homeassistant.const import CONF_PASSWORD, CONF_USERNAME

from . import ApiHub
from .const import DOMAIN # pylint:disable=unused-import
from .const import CONF_SERIAL_NUMBER, DOMAIN # pylint:disable=unused-import

_LOGGER = logging.getLogger(__name__)

# TODO adjust the data schema to the data that you need
DATA_SCHEMA = vol.Schema({"username": str, "password": str})
DATA_SCHEMA = vol.Schema(
{
vol.Required(CONF_USERNAME): str,
vol.Required(CONF_PASSWORD): str,
vol.Optional(CONF_SERIAL_NUMBER): str,
}
)


async def validate_input(hass: core.HomeAssistant, data):
Expand All @@ -20,17 +27,27 @@ async def validate_input(hass: core.HomeAssistant, data):
Data has the keys from DATA_SCHEMA with values provided by the user.
"""

await validate_authentication(hass, data["username"], data["password"])
await validate_authentication(
hass, data[CONF_USERNAME], data[CONF_PASSWORD], data.get(CONF_SERIAL_NUMBER)
)

# TODO Return info that you want to store in the config entry.
return {"title": "Vaillant"}


async def validate_authentication(hass, username, password):
async def validate_authentication(hass, username, password, serial):
"""Ensure provided credentials are working."""
hub: ApiHub = ApiHub(hass, username, password)
if not await hub.authenticate():
raise InvalidAuth
hub: ApiHub = ApiHub(hass, username, password, serial)
try:
if not await hub.authenticate():
raise InvalidAuth
except ApiError as err:
resp = await err.response.json()
_LOGGER.exception(
"Unable to authenticate, API says: %s, status: %s",
resp,
err.response.status,
)
raise InvalidAuth from err


class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
Expand Down
1 change: 1 addition & 0 deletions vaillant/const.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
# configuration keys
CONF_QUICK_VETO_DURATION = "quick_veto_duration"
CONF_SMARTPHONE_ID = "smartphoneid"
CONF_SERIAL_NUMBER = "serial_number"

# constants for states_attributes
ATTR_VAILLANT_MODE = "vaillant_mode"
Expand Down
6 changes: 2 additions & 4 deletions vaillant/hub.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,14 @@
class ApiHub:
"""Vaillant entry point for home-assistant."""

def __init__(self, hass, username, password):
def __init__(self, hass, username, password, serial):
"""Initialize hub."""
from pymultimatic.systemmanager import SystemManager
from pymultimatic.model import System

session = async_create_clientsession(hass)
self._manager = SystemManager(
username, password, session, DEFAULT_SMART_PHONE_ID
username, password, session, DEFAULT_SMART_PHONE_ID, serial
)
self.system: System = None
self.update_system = Throttle(DEFAULT_SCAN_INTERVAL)(self._update_system)
Expand Down Expand Up @@ -62,7 +62,6 @@ async def _hvac_update(self, trigger=None) -> None:

async def _update_system(self):
"""Fetch vaillant system."""
from pymultimatic.api import ApiError

try:
self.system = await self._manager.get_system()
Expand All @@ -82,7 +81,6 @@ async def _update_system(self):

async def logout(self):
"""Logout from API."""
from pymultimatic.api import ApiError

try:
await self._manager.logout()
Expand Down
2 changes: 1 addition & 1 deletion vaillant/sensor.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ def __init__(self, report: Report):
"""Init entity."""
device_class = UNIT_TO_DEVICE_CLASS.get(report.unit, None)
if not device_class:
_LOGGER.warning("No device class for {}", report.unit)
_LOGGER.warning("No device class for %s", report.unit)
VaillantEntity.__init__(
self, DOMAIN, device_class, report.id, report.name, False
)
Expand Down
3 changes: 2 additions & 1 deletion vaillant/strings.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
"user": {
"data": {
"password": "Password",
"username": "Username"
"username": "Username",
"serial_number": "Serial number"
},
"title": "Connection information (same as multiMATIC application)"
}
Expand Down

0 comments on commit 425b4a6

Please sign in to comment.