Repository navigation
Releases: itsjustdeepred/alterego
Releases · itsjustdeepred/alterego
Release list
v1.2.0
This release fixes several reliability bugs, brings the integration in line with
current Home Assistant guidelines and removes about a third of the code.
All entity unique IDs are unchanged, so existing entities, automations and
history are kept.
⚠️ Breaking changes
- Minimum Home Assistant version is now 2024.12.0 (was 2024.1.0).
- Entity display names changed. Entities now use Home Assistant's
has_entity_namenaming and translated names, so a friendly name is the
device name plus a short, translated suffix (e.g. Living Summer comfort
setpoint, or Soggiorno Setpoint comfort estate in Italian). Entity IDs are
not changed for existing installations; only the names shown in the UI are. - The empty
switchplatform was removed (it never created any entity).
Fixed
- Options flow broken on recent Home Assistant versions. The options flow
setconfig_entryexplicitly, which Home Assistant deprecated and then
stopped supporting. - Changes took up to 5 minutes to show up. Global status and timers were
only re-read every 5 minutes (dehumidifiers every 60 s), even right after
a change made from Home Assistant, so the season, timer slots, boost timer and
dehumidifier override jumped back to the old value in the UI. A write now
forces an immediate re-read of the resource it changed. - Stale data shown as current when the API is down. When the zones request
failed, entities fell back to the values captured at startup, possibly
hours old, and never became unavailable. Now:- if zones or global status cannot be read, the update fails and the entities
become unavailable until the API answers again; - if dehumidifiers or timers cannot be read, their last known values are kept
and the request is retried on the next poll; - if the API is unreachable at startup, setup is retried automatically
(ConfigEntryNotReady) instead of loading with no entities.
- if zones or global status cannot be read, the update fails and the entities
- Timeouts were not handled. An API timeout (
asyncio.TimeoutError, not an
aiohttp.ClientError) aborted the whole update and caused unhandled
exceptions in the config flow. Timeouts are now handled like any other
connection error. - Custom station name was overwritten. Station-level entities re-registered
the station device asAlterego <station id>, replacing the name chosen during
setup. Renaming the station from the options now also updates the device. - Entities ignored the connection state. The dehumidifier override select
was always available; the humidity setpoint, boost timer and timer slot time
entities also ignored failed updates. They now become unavailable with the
rest of the integration. - Selecting
N/Uon an active timer slot sentN/U hh:mminstead ofN/U. - Selecting heat/cool on a zone in COMFORT or ECONOMY reset it to AUTO. It
now only changes the forcing when the zone is OFF. - Target temperature parsing. A
0.0setpoint (no active setpoint) was only
ignored when sent as a string; numeric values are now handled too. - Authentication errors. A server error (5xx) during login is no longer
reported as "invalid credentials", and a 401 that persists after
re-authentication is now treated as an authentication error. - Translations. The options and reconfigure forms had no labels because
their translations were in the wrong place;strings.jsonwas out of date;
the station ID form mentioned a comma-separated list of stations that was
never supported; reconfiguring showed "Re-authentication completed" instead
of "Reconfiguration completed". - Dehumidifier device model switched between
deumandDeumidificatore
depending on which platform loaded last; it is now alwaysDehumidifier.
Added
- Re-authentication flow. If the Alterego credentials stop working, Home
Assistant shows a repair notification asking for the new password instead of
failing silently. - Climate
turn_on/turn_off(ClimateEntityFeature.TURN_ON/
TURN_OFF). - Clear error messages in the UI when a change cannot be sent to the API,
or when a summer-only setting is changed in winter. - Italian and English names for all entities, including timer slots
(Monday slot 1 / Lunedì fascia 1). - Boost timer now has a unit (minutes).
- Test suite (
tests/, pytest +pytest-homeassistant-custom-component)
covering setup, polling, failures, writes, config/reauth/reconfigure/options
flows and the API client. - CI workflow running hassfest, HACS validation and the tests.
Changed
- Uses Home Assistant's shared HTTP session instead of creating its own.
- Uses
entry.runtime_data,_get_reauth_entry/_get_reconfigure_entryand
async_update_reload_and_abortinstead of the older patterns. - Uses
via_device_idon Home Assistant 2026.8+ (thevia_devicekey is
deprecated there and will be removed in 2027.8), and still usesvia_device
on older versions. PARALLEL_UPDATES = 1on platforms that write to the API, to avoid
concurrent writes to the cloud.- Refactor: new
entity.pywith shared base classes (station, zone,
dehumidifier, timer slot) and coordinator helpers replace code that was
duplicated in every platform; the API client uses a single request path for
all endpoints. manifest.json: removed the unnecessaryaiohttprequirement (shipped with
Home Assistant), fixedcodeowners(@itsjustdeepred), added
issue_tracker.hacs.json: removed keys HACS no longer uses.
Full changelog: v1.1.2...v1.2.0
v1.1.2
Bug fix critico
Scrittura API non funzionante (read-only)
Le chiamate POST per impostare temperatura, modalità e forcing non avevano effetto perché l'API accetta solo ID numerici (1, 2...) mentre il codice usava gli ID prefissati restituiti dal GET (Z1, T1, D2...). L'API rispondeva silenziosamente con un errore interno senza sollevare eccezioni. Fix: strip automatico del prefisso letterale prima di ogni chiamata di scrittura.
Fix precedenti inclusi
- HVAC modalità
coolin estate /heatin inverno - Coordinator: dati globali preservati tra i refresh
- Timer: entità ridotte da 420 a 70, naming corretto per fascia
- LICENSE Apache 2.0 standard
- Logo HACS
v1.1.1
Bug fix
- HVAC modalità raffreddamento: in estate le zone mostrano ora
coolinvece diheat;hvac_modesè dinamico in base alla stagione - Coordinator: fix perdita dati globali tra un refresh e l'altro — ogni aggiornamento zone (30s) azzerava
global_season, causando il fallback a WINTER su tutte le entità stagionali - Timer: ridotte le entità da 420 a 70, saltando gli slot
N/U; corretto il bug di naming che assegnava lo stesso nome a più slot dello stesso giorno (ora: "Timer Giorno Fascia 1 / Fascia 2") - API: il controllo autenticazione verifica ora anche la scadenza del token, non solo se è
None - LICENSE: testo Apache 2.0 ufficiale, riconosciuto correttamente da GitHub
- Logo: aggiunto
logo.pngalla root per la thumbnail HACS; aggiornati i riferimenti immagine a URL assoluti
v1.0.0 - Hello World!
v1.0.0 - Hello World!
First Release!