An unofficial Home Assistant custom integration for Polish MySolid accounts. It polls the MySolid cloud service and exposes properties, alarms, suspensions, and transmitter relays as Home Assistant entities and actions.
Important
This project supports the Polish MySolid service only. It is not affiliated with or endorsed by Solid Security or Home Assistant.
- UI-based setup and reauthentication.
- Configurable cloud polling from 30 to 3600 seconds.
- Property, suspension, alarm, and relay entities.
- Alarm arm, disarm, and partial-arm controls.
- Actions for suspension management, relay control, alarm cancellation, and event history.
- Source-aware availability: a failed secondary request does not turn stale alarms or suspensions into a false safe state.
- Redacted diagnostics and translated user-facing errors.
| Platform | Entity | Purpose |
|---|---|---|
| Binary sensor | Armed | Current armed state of a property |
| Binary sensor | Suspended | Whether a property has an active suspension |
| Binary sensor | Active alarm | Whether a property has an active alarm |
| Sensor | Active alarm count | Number of active alarms for a property |
| Sensor | Suspension until | Latest active suspension end time |
| Switch | Relay | ON/OFF transmitter relay control |
| Alarm control panel | Alarm relay | Arm, disarm, and partial-arm control |
- Home Assistant 2026.7.0 or newer.
- A MySolid account for the Polish service.
- HACS for the recommended installation method.
- Open HACS in Home Assistant.
- Open the menu and select Custom repositories.
- Add
https://github.com/maeek/ha-solid-securitywith the Integration category. - Find MySolid, select Download, and restart Home Assistant.
- Go to Settings → Devices & services → Add integration, then search for MySolid.
- Copy
custom_components/mysolidinto thecustom_componentsdirectory in your Home Assistant configuration directory. - Restart Home Assistant.
- Go to Settings → Devices & services → Add integration, then search for MySolid.
The setup flow asks for the email address and password used by the MySolid app. The integration currently uses the Polish endpoint automatically.
The mobile API requires the password for credential login and token renewal, so Home Assistant stores it in the config entry. The integration creates a stable device ID for that entry. Action PINs are accepted only for the current action and are never stored.
The polling interval can be changed under Settings → Devices & services → MySolid → Configure. The default is 60 seconds.
All actions accept config_entry_id. It is required when Home Assistant cannot
unambiguously select one loaded MySolid account.
mysolid.create_suspensioncreates a timed suspension for one property.mysolid.delete_suspensiondeletes a suspension by ID or by an unambiguous property target.mysolid.set_relay_statesets a relay entity toON,OFF,ARM,DISARM, orPARTIAL_ARM.mysolid.cancel_alarmcancels an active alarm by event ID.mysolid.get_event_historyreturns historical events for one property as an action response.
A property action targets any MySolid entity belonging to that property.
create_suspension requires exactly one of duration_minutes or until.
Use the optional pin field only when the corresponding MySolid operation is
PIN-protected. For PIN-protected relays, prefer mysolid.set_relay_state over
the switch entity because switch actions cannot prompt for a PIN.
Property details are the primary account snapshot. Once they are available, the integration fetches relays and suspensions per property and active alarms for the account. Reads are limited to four concurrent requests, while mutations are serialized.
If a secondary source fails, the last known values for that source are retained and its dependent entities become unavailable. Successful writes request an immediate refresh. HTTP 401 starts reauthentication; HTTP 403 is treated as a permission error and does not discard the session token.
See Architecture for the full data flow and extension points.
- Passwords, session tokens, PINs, email addresses, device identifiers, and location fields are redacted from diagnostics.
- Action PINs are not persisted.
- The application authorization value in the source is a public identifier embedded in the mobile client, not an account credential.
- No decompiled application code, private certificates, Firebase credentials, or personal data are included in this repository.
- Invalid authentication: verify the same credentials in the MySolid mobile app, then reload the integration.
- PIN rejected or blocked: wait for the lockout period to expire before trying again.
- An alarm or suspension entity is unavailable: check the integration diagnostics. The source may have failed during the latest poll while its last known value was retained.
- HTTP 403: the account does not have permission for the requested action.
- Unexpected API behavior: enable debug logging, download diagnostics, and open an issue without including credentials, tokens, PINs, or personal data.
- The MySolid API is undocumented and may change without notice.
- Firebase push notifications are not implemented; updates use polling.
- PINs must be supplied for each protected action.
- Biometrics, invoices, authorized users, service ordering, schedule editing, camera streaming, and contact history are outside the current scope.
Contributions are welcome. Start with CONTRIBUTING.md, then read the architecture guide and the pinned mobile API contract.
The test suite uses sanitized synthetic fixtures and currently covers the API contract, coordinator failure behavior, configuration flows, services, and all entity platforms.
Use GitHub Issues for bug reports and feature requests. Include the Home Assistant version, integration version, relevant logs, and redacted diagnostics.
Remove MySolid from Settings → Devices & services, restart Home Assistant,
and delete custom_components/mysolid only if it was installed manually.
This project communicates with an undocumented third-party service and is provided without any guarantee that the service will remain compatible. Use it at your own risk, especially for security-sensitive automations.