A custom Home Assistant integration for Prana WiFi ventilation/recuperator units. Control your Prana devices directly from Home Assistant with full support for fan speeds, presets, sensors, and more.
If you use this, open an issue and submit feedback. This is the only way to improve it.
Nearly all controls from the mobile app. Only the scheduler is missing, but it doesn't make sense to add it, you can just create automations in homeassistant.
- Climate Control: Turn your Prana unit on/off, set fan speeds (0-5), and activate presets
- Environmental Sensors: Monitor temperature (in/out), humidity, CO2 equivalent, TVOC, and atmospheric pressure
- Preset Modes: Night, Boost, Heating, Winter, Auto, and Auto+ modes
- Individual Fan Control: Set input and output fan speeds independently
- Display Brightness: Adjust the device display brightness (1-6)
- Real-time Updates: Device state is polled every 15 seconds
- Ensure HACS is installed in your Home Assistant instance
- Open HACS in the Home Assistant sidebar
- Search for "Prana WiFi" in HACS
- Click Download
- Restart Home Assistant
- Download the
custom_components/prana_wififolder from this repository - Copy the
prana_wififolder to your Home Assistantcustom_componentsdirectory<config>/custom_components/prana_wifi/ - Restart Home Assistant
- Go to Settings > Devices & Services in Home Assistant
- Click + Add Integration
- Search for "Prana WiFi"
- Enter your Prana cloud account credentials (the same you use in the Prana mobile app)
- Click Submit
The integration will automatically discover all Prana devices associated with your account.
This integration communicates with Prana devices through the Prana cloud API. It uses a polling mechanism to fetch device state every 15 seconds and sends commands through the cloud when you interact with entities.
Home Assistant <---> Prana Cloud API <---> Prana WiFi Device
The integration authenticates with the Prana cloud using your account credentials. Tokens are automatically refreshed as needed to maintain the connection.
- Polling: The integration polls each device's state every 15 seconds
- State Parsing: Raw device data is parsed into meaningful sensor values and entity states
- Commands: When you change a setting (speed, preset, etc.), the command is sent to the cloud API
- Optimistic Updates: The UI updates immediately while the command is being processed
- Base URL:
https://iot.sensesaytech.com/api - Protocol: HTTPS with token-based authentication
- Polling Interval: 15 seconds
For each Prana device, the following entities are created:
| Entity | Description |
|---|---|
climate.{device_name} |
Main climate entity for fan control |
Features:
- HVAC modes: Off, Fan Only
- Fan speeds: 0, 1, 2, 3, 4, 5
- Preset modes: Boost, Auto, Auto+, Night
| Entity | Description | Unit |
|---|---|---|
sensor.{device_name}_tvoc |
Volatile Organic Compounds | ppb |
sensor.{device_name}_co2_equivalent |
CO2 equivalent | ppm |
sensor.{device_name}_humidity |
Humidity | % |
sensor.{device_name}_atmospheric_pressure |
Atmospheric pressure | hPa |
sensor.{device_name}_inside_temperature_in |
Inside temperature in | °C |
sensor.{device_name}_inside_temperature_out |
Inside temperature out | °C |
sensor.{device_name}_outside_temperature |
Outside temperature | °C |
| Entity | Description | Range |
|---|---|---|
number.{device_name}_display_brightness |
Display brightness | 1-6 |
number.{device_name}_fan_input_speed |
Input fan speed | 0-5 |
number.{device_name}_fan_output_speed |
Output fan speed | 0-5 |
| Entity | Description |
|---|---|
switch.{device_name}_power |
Power on/off |
switch.{device_name}_heating_mode |
Toggle heating mode |
switch.{device_name}_winter_mode |
Toggle winter mode |
switch.{device_name}_night_mode |
Toggle night mode |
switch.{device_name}_boost_mode |
Toggle boost mode |
switch.{device_name}_auto_mode |
Toggle auto mode |
switch.{device_name}_auto_plus_mode |
Toggle auto+ mode |
Contributions are welcome! Here's how you can help:
- Check if the issue already exists in the GitHub Issues
- If not, create a new issue with:
- A clear description of the problem
- Steps to reproduce
- Home Assistant version
- Integration version
- Relevant log entries (enable debug logging if needed)
- Fork the repository
- Clone your fork:
git clone https://github.com/YOUR_USERNAME/prana-wifi.git cd prana-wifi - Create a virtual environment:
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
- Install dependencies:
pip install -r requirements.txt pip install -r requirements.test.txt
pytest tests/This project uses:
- Ruff for linting
- MyPy for type checking
Run linting:
ruff check .Run type checking:
mypy custom_components/prana_wifi- Create a new branch for your feature/fix:
git checkout -b feature/your-feature-name
- Make your changes
- Ensure tests pass and code style is correct
- Commit with a descriptive message
- Push to your fork
- Open a Pull Request against the
mainbranch
To enable debug logging for troubleshooting, add to your configuration.yaml:
logger:
default: info
logs:
custom_components.prana_wifi: debug- Home Assistant 2025.12.1 or newer
- A Prana WiFi ventilation unit
- A Prana cloud account (same credentials as the mobile app)
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.
This integration is not officially affiliated with or endorsed by Prana. Use at your own risk. The integration relies on the Prana cloud API, which may change without notice.
This module is licensed under GPL v3. This means you are free to use in non-commercial projects. The GPL license clearly explains that there is no warranty for this free software. Please see the included LICENSE file for details.
- Device state parsing: prana_rc project with its authors and contributors
- Code Owner: @boot-nyxpoint