Advanced indoor climate monitoring for Home Assistant with multi-room support, intelligent severity scoring, trend analysis, and ventilation recommendations.
Current Version: 2.3.2
Quality Scale: Silver Tier ⭐
- Indoor/Outdoor Classification - Distinguish between outdoor windows and internal doors
- Smart Window Detection - Outdoor windows used for ventilation recommendations
- Air Circulation Tracking - Internal doors used for air circulation calculation
- Flexible Configuration - Easy to specify which openings lead outdoors
- Air Circulation Sensor - Monitor air circulation between rooms (Good/Moderate/Poor)
- Severity Bonus - 5% reduction in severity score with good air circulation
- Real-time Monitoring - See which internal doors are open
- Room-by-room Status - Each room shows number of open doors and windows
- Multi-room monitoring - Track humidity, temperature, CO2, VOC, and formaldehyde
- Intelligent severity scoring - Automatic indoor climate quality calculation (0-100)
- Multiple sensors per room - Use multiple sensors of same type - average calculated automatically
- Season-based thresholds - Different limits for summer and winter
- 30-minute trends - Rising/Falling/Stable for humidity, CO2, and severity
- Historical tracking - Automatic history with 6 data points
- Smart alerts - Get notified when trends are negative
- Smart recommendations - Yes/No/Optional based on indoor climate and weather
- Weather integration - Takes outdoor temperature and humidity into account
- Room-specific - Shows precisely which rooms need ventilation
- Reasoning - Explains why you should or shouldn't ventilate
- Per-room configuration - Add, edit, and delete rooms individually
- Full options flow - Manage everything after installation via UI
- Device organization - Modern hub + room device structure
- Multi-language - Danish and English support
- Automation Blueprint - Ready-made notification automation with cooldown (v2.1)
- Dehumidifier support - Ready for future automatic control
- Fan/Ventilator support - Ready for future automatic control
- Smart cooldown - Avoid too many notifications with last_notified tracking
- English Constants - All code uses English, translations via JSON files
- Per-Room Metric Sensors - Separate temperature, humidity, CO2 sensors per room
- Better Device Classes - Proper HA device classes for perfect UI integration
- Backward Compatible - Status sensor attributes preserved for existing dashboards
- 📱 Automatic device control (dehumidifiers, fans)
- 🎯 Diagnostics platform (Gold tier)
- 🔗 Integration with ventilation systems
- 🧠 Machine learning patterns
- ⚡ Energy optimization
- Open HACS in Home Assistant
- Go to "Integrations"
- Click the three dots in top right corner
- Select "Custom repositories"
- Add repository URL:
https://github.com/kingpainter/indeklima - Category: "Integration"
- Click "Add"
- Find "Indeklima" in the list and click "Download"
- Restart Home Assistant (required for new integrations)
- Download latest release from GitHub Releases
- Unpack the zip file
- Copy the entire
custom_components/indeklimafolder to your Home Assistantconfig/custom_components/directory - Your folder structure should be:
config/custom_components/indeklima/ - Restart Home Assistant
- Go to Settings → Devices & Services
- Click + Add Integration (bottom right)
- Search for "Indeklima"
- Follow the setup wizard:
- Give your integration a name (e.g., "Indeklima")
- Add rooms one by one (you can add more later)
- Select sensors for each room
- Configure which windows/doors lead outdoors
- Optionally select devices (dehumidifier, fan)
For each room you configure, you can select:
- Room Name - Give the room a descriptive name (e.g., "Living Room", "Master Bedroom")
- Humidity sensors - Average calculated automatically if multiple sensors
- Temperature sensors - Average calculated automatically if multiple sensors
- CO2 sensors - Average calculated automatically if multiple sensors
- VOC sensors - Average calculated automatically if multiple sensors
- Formaldehyde sensors - Average calculated automatically if multiple sensors
- Window/Door sensors - Select all windows and doors for this room
- After selecting, you'll classify each as Outdoor or Internal
- Outdoor = Leads to fresh air (windows, balcony doors)
- Internal = Between rooms (bathroom door, closet door)
- Dehumidifier - Will be used for automatic control in future versions
- Fan/Ventilator - Will be used for automatic control in future versions
- Notification targets - Who should receive alerts for this room
Critical for accurate air circulation and ventilation:
After selecting window/door sensors, you specify which lead outdoors:
✅ Mark as Outdoor (✓):
- Living room window
- Bedroom window
- Balcony door
- Front door (if monitored)
❌ Mark as Internal (leave unchecked):
- Bathroom door (between rooms)
- Bedroom door (between rooms)
- Walk-in closet door (between rooms)
- Kitchen door (between rooms)
Why this matters:
- Outdoor windows → Used for ventilation recommendations
- Internal doors → Used for air circulation calculation
- Get this right for accurate climate monitoring!
Located under the Indeklima Hub device, these sensors aggregate data from all rooms:
| Sensor Entity ID | Description | Unit | Example Value |
|---|---|---|---|
sensor.indeklima_hub_severity_score |
Overall indoor climate quality | 0-100 | 25.5 |
sensor.indeklima_hub_status |
Overall status | - | good |
sensor.indeklima_hub_average_humidity |
Average across all rooms | % | 55.2 |
sensor.indeklima_hub_average_temperature |
Average across all rooms | °C | 21.3 |
sensor.indeklima_hub_average_co2 |
Average across all rooms | ppm | 850 |
sensor.indeklima_hub_average_voc |
Average across all rooms | ppb | 120 |
sensor.indeklima_hub_average_formaldehyde |
Average across all rooms | µg/m³ | 45 |
sensor.indeklima_hub_open_windows |
Number of open OUTDOOR windows | count | 2 |
sensor.indeklima_hub_air_circulation |
Air circulation status | - | moderate |
sensor.indeklima_hub_humidity_trend |
30-minute humidity trend | - | stable |
sensor.indeklima_hub_co2_trend |
30-minute CO2 trend | - | rising |
sensor.indeklima_hub_severity_trend |
30-minute severity trend | - | stable |
sensor.indeklima_hub_ventilation_recommendation |
Should you ventilate? | - | yes |
For each configured room, you get a dedicated device with multiple sensors:
Example: sensor.indeklima_living_room_status
State: good / warning / critical
Attributes (backward compatible):
humidity: 55.5 # Average if multiple sensors
humidity_sensors_count: 2 # Number of sensors used
temperature: 21.3
temperature_sensors_count: 1
co2: 850
co2_sensors_count: 1
voc: 120
voc_sensors_count: 1
formaldehyde: 45
formaldehyde_sensors_count: 1
outdoor_windows_open: 0 # Number of outdoor windows open
internal_doors_open: 1 # Number of internal doors open
air_circulation_bonus: true # Has 5% severity bonus
last_notified: "2025-01-18T14:30:00+00:00" # For cooldown trackingIf the room has sensors configured, you also get separate metric sensors:
Temperature Sensor:
sensor.indeklima_living_room_temperature
- State:
21.3°C - Device class:
temperature - Attributes:
sensors_used: 2
Humidity Sensor:
sensor.indeklima_living_room_humidity
- State:
55.5% - Device class:
humidity - Attributes:
sensors_used: 2
CO2 Sensor:
sensor.indeklima_living_room_co2
- State:
850ppm - Device class:
carbon_dioxide - Attributes:
sensors_used: 1
Benefits of separate sensors:
- Use directly in automations (numeric_state triggers)
- Better graphs in HA (correct device classes)
- Voice assistant compatible ("Alexa, what's the temperature in the living room?")
- Long-term statistics automatically tracked
The air circulation feature monitors how well air flows between your rooms based on internal doors being open.
How it works:
- You classify each door/window as Outdoor or Internal during setup
- Indeklima counts how many internal doors are currently open
- Air circulation status is calculated:
- Good (3+ internal doors open) → Green icon
- Moderate (1-2 internal doors open) → Orange icon
- Poor (0 internal doors open) → Red icon
Severity Bonus:
- Good air circulation gives 5% reduction in severity score
- Better air distribution = lower risk of local climate problems
- Encourages keeping internal doors open when appropriate
Entity: sensor.indeklima_hub_air_circulation
States: good / moderate / poor
Attributes:
internal_doors_open: 2
rooms_with_open_doors: "Living Room, Bathroom"type: custom:mushroom-template-card
primary: |
{% set circ = states('sensor.indeklima_hub_air_circulation') %}
{% if circ == 'good' %}
🌬️ Good Air Circulation
{% elif circ == 'moderate' %}
🌀 Moderate Air Circulation
{% else %}
🚪 Poor Air Circulation - Open Doors
{% endif %}
secondary: |
{{ state_attr('sensor.indeklima_hub_air_circulation', 'internal_doors_open') }} internal doors open
{% set rooms = state_attr('sensor.indeklima_hub_air_circulation', 'rooms_with_open_doors') %}
{% if rooms != 'Ingen' %}
Rooms: {{ rooms }}
{% endif %}
icon: |
{% set circ = states('sensor.indeklima_hub_air_circulation') %}
{% if circ == 'good' %}mdi:fan
{% elif circ == 'moderate' %}mdi:fan-speed-2
{% else %}mdi:fan-off{% endif %}
icon_color: |
{% set circ = states('sensor.indeklima_hub_air_circulation') %}
{% if circ == 'good' %}green
{% elif circ == 'moderate' %}orange
{% else %}red{% endif %}The ventilation recommendation sensor analyzes both indoor climate AND outdoor weather to give smart ventilation advice.
Decision Process:
-
Check Outdoor Windows
- Already open? → Status:
optional(you're already ventilating)
- Already open? → Status:
-
Analyze Indoor Climate
- Humidity > max threshold? → Problem detected
- CO2 > max threshold? → Problem detected
- VOC > max threshold? → Problem detected
-
Check Weather (if configured)
- Temperature < 5°C? →
optional(too cold, your choice) - Outdoor humidity > indoor max? →
no(will make it worse) - Otherwise →
yes(good conditions)
- Temperature < 5°C? →
-
Final Recommendation
- Problems + Good weather =
yes✅ - Problems + Bad weather =
no❌ - No problems =
no(not needed)
- Problems + Good weather =
Entity: sensor.indeklima_hub_ventilation_recommendation
States: yes / no / optional
Attributes:
reason: "High humidity, High CO2" # Why this recommendation
rooms: "Living Room, Kitchen" # Which rooms need ventilation
outdoor_temperature: 12.5 # Current outdoor temp (if configured)
outdoor_humidity: 65 # Current outdoor humidity (if configured)Example 1: Should Ventilate
state: yes
reason: "High humidity, High CO2"
rooms: "Living Room, Bedroom"
outdoor_temperature: 15.0
outdoor_humidity: 55Interpretation: Indoor climate is poor (high humidity AND CO2), outdoor conditions are good (15°C, 55% humidity). Open windows now!
Example 2: Should NOT Ventilate
state: no
reason: "High humidity, Too humid outside"
rooms: "Bathroom"
outdoor_temperature: 18.0
outdoor_humidity: 75Interpretation: Bathroom has high humidity, BUT outdoor air is also very humid (75%). Opening windows won't help. Use dehumidifier instead.
Example 3: Optional
state: optional
reason: "Windows already open"
rooms: "None specific"
outdoor_temperature: 12.0
outdoor_humidity: 60Interpretation: Outdoor windows are already open, so you're already ventilating. Keep monitoring.
type: custom:mushroom-template-card
primary: |
{% set status = states('sensor.indeklima_hub_ventilation_recommendation') %}
{% if status == 'yes' %}
🌬️ Ventilate Now!
{% elif status == 'optional' %}
🤔 Optional - Your Choice
{% else %}
⏳ Wait to Ventilate
{% endif %}
secondary: |
{{ state_attr('sensor.indeklima_hub_ventilation_recommendation', 'reason') }}
{% set rooms = state_attr('sensor.indeklima_hub_ventilation_recommendation', 'rooms') %}
{% if rooms and rooms not in ['None specific', 'Ingen specifikke'] %}
**Rooms:** {{ rooms }}
{% endif %}
{% set temp = state_attr('sensor.indeklima_hub_ventilation_recommendation', 'outdoor_temperature') %}
{% set hum = state_attr('sensor.indeklima_hub_ventilation_recommendation', 'outdoor_humidity') %}
{% if temp %}
Outdoor: {{ temp }}°C, {{ hum }}%
{% endif %}
icon: |
{% set status = states('sensor.indeklima_hub_ventilation_recommendation') %}
{% if status == 'yes' %}mdi:window-open-variant
{% elif status == 'optional' %}mdi:window-open
{% else %}mdi:window-closed{% endif %}
icon_color: |
{% set status = states('sensor.indeklima_hub_ventilation_recommendation') %}
{% if status == 'yes' %}green
{% elif status == 'optional' %}orange
{% else %}red{% endif %}
multiline_secondary: trueIndeklima includes a ready-made automation blueprint for smart per-room notifications.
Features:
- ✅ Per-room configuration
- ✅ Smart cooldown (avoid notification spam)
- ✅ Time control (only during waking hours)
- ✅ Severity threshold (only Warning or Critical)
- ✅ Includes ventilation tips
- ✅ Compatible with v2.3.1+ (English constants)
Step 1: Copy Blueprint File
Copy: blueprints/automation/indeklima/room_notification_v2.3.1.yaml
To: config/blueprints/automation/indeklima/room_notification.yaml
Step 2: Reload Blueprints
- Go to: Settings → Automations & Scenes → Blueprints
- Click ⋮ (top right) → Reload blueprints
Step 3: Create Automation
- Click + Create Automation
- Select "Use a blueprint"
- Find "Indeklima - Rum Notifikation (v2.3.1)"
- Configure:
Configuration Options:
- Rum Sensor - Select the room status sensor (e.g.,
sensor.indeklima_living_room_status) - Notifikations Service - Your notification service (e.g.,
notify.mobile_app_your_phone) - Alvorligheds Tærskel - When to notify:
- Advarsel (Warning) - Notify at Warning OR Critical
- Dårlig (Critical) - Notify ONLY at Critical
- Cooldown Timer - Hours between notifications (default: 2 hours)
- Aktiv Fra - Start time (default: 09:00)
- Aktiv Til - End time (default: 21:00)
- Inkluder Ventilations Tip - Add ventilation advice to message (default: yes)
🏠 Indeklima: Living Room
Status: Advarsel
🌡️ Fugtighed: 62%
💨 CO2: 1200 ppm
🌡️ Temperatur: 22.5°C
💡 Ventilation: Ja
High humidity, High CO2
Problem: Not receiving notifications
Check:
- Verify notification service is correct
- Check automation is enabled
- Look at automation traces: Settings → Automations → [Your automation] → Traces
- Verify cooldown hasn't been triggered recently
Problem: Getting too many notifications
Increase cooldown:
- Edit automation
- Increase "Cooldown Timer" (e.g., from 2 to 4 hours)
Problem: Getting notifications at night
Adjust time window:
- Edit automation
- Change "Aktiv Fra" and "Aktiv Til" times
type: vertical-stack
cards:
# Header
- type: custom:mushroom-title-card
title: 🏠 Indoor Climate Status
subtitle: v2.3.2
# Overall Status Card
- type: horizontal-stack
cards:
- type: custom:mushroom-entity-card
entity: sensor.indeklima_hub_severity_score
name: Severity Score
icon: mdi:alert-decagram
icon_color: |
{% set score = states('sensor.indeklima_hub_severity_score') | float(0) %}
{% if score < 30 %}green
{% elif score < 60 %}orange
{% else %}red{% endif %}
- type: custom:mushroom-entity-card
entity: sensor.indeklima_hub_status
name: Overall Status
icon: mdi:home-thermometer
# Air Circulation Card
- type: custom:mushroom-template-card
primary: |
{% set circ = states('sensor.indeklima_hub_air_circulation') %}
{% if circ == 'good' %}🌬️ Good Air Circulation
{% elif circ == 'moderate' %}🌀 Moderate Air Circulation
{% else %}🚪 Poor Air Circulation{% endif %}
secondary: |
{{ state_attr('sensor.indeklima_hub_air_circulation', 'internal_doors_open') }} internal doors open
{% set rooms = state_attr('sensor.indeklima_hub_air_circulation', 'rooms_with_open_doors') %}
{% if rooms not in ['Ingen', 'None'] %}
Rooms: {{ rooms }}
{% endif %}
icon: mdi:fan
icon_color: |
{% set circ = states('sensor.indeklima_hub_air_circulation') %}
{% if circ == 'good' %}green
{% elif circ == 'moderate' %}orange
{% else %}red{% endif %}
multiline_secondary: true
# Ventilation Recommendation
- type: custom:mushroom-template-card
primary: |
{% set status = states('sensor.indeklima_hub_ventilation_recommendation') %}
{% if status == 'yes' %}🌬️ Ventilate Now!
{% elif status == 'optional' %}🤔 Consider Ventilating
{% else %}⏳ Wait to Ventilate{% endif %}
secondary: |
{{ state_attr('sensor.indeklima_hub_ventilation_recommendation', 'reason') }}
{% set rooms = state_attr('sensor.indeklima_hub_ventilation_recommendation', 'rooms') %}
{% if rooms and rooms not in ['None specific', 'Ingen specifikke'] %}
**Rooms:** {{ rooms }}
{% endif %}
icon: mdi:window-open-variant
icon_color: |
{% set status = states('sensor.indeklima_hub_ventilation_recommendation') %}
{% if status == 'yes' %}green
{% elif status == 'optional' %}orange
{% else %}red{% endif %}
multiline_secondary: true
# Windows Status
- type: entities
title: 🪟 Windows & Doors
entities:
- entity: sensor.indeklima_hub_open_windows
name: Outdoor Windows Open
icon: mdi:window-open
- type: attribute
entity: sensor.indeklima_hub_open_windows
attribute: rooms
name: Rooms with open windows
# Averages
- type: entities
title: 📊 Average Values
entities:
- sensor.indeklima_hub_average_humidity
- sensor.indeklima_hub_average_temperature
- sensor.indeklima_hub_average_co2
# Trends
- type: entities
title: 📈 Trends (30 min)
entities:
- sensor.indeklima_hub_humidity_trend
- sensor.indeklima_hub_co2_trend
- sensor.indeklima_hub_severity_trendtype: entities
title: 🏠 Living Room Climate
entities:
- entity: sensor.indeklima_living_room_status
name: Status
- type: divider
- entity: sensor.indeklima_living_room_temperature
name: Temperature
- entity: sensor.indeklima_living_room_humidity
name: Humidity
- entity: sensor.indeklima_living_room_co2
name: CO2
- type: divider
- type: attribute
entity: sensor.indeklima_living_room_status
attribute: outdoor_windows_open
name: Outdoor Windows Open
- type: attribute
entity: sensor.indeklima_living_room_status
attribute: internal_doors_open
name: Internal Doors Opentype: history-graph
title: 📈 Living Room - Last 24 Hours
entities:
- entity: sensor.indeklima_living_room_temperature
name: Temperature
- entity: sensor.indeklima_living_room_humidity
name: Humidity
- entity: sensor.indeklima_living_room_co2
name: CO2
hours_to_show: 24
refresh_interval: 0type: grid
columns: 2
square: false
cards:
- type: custom:mushroom-entity-card
entity: sensor.indeklima_living_room_temperature
name: Living Room
icon: mdi:thermometer
- type: custom:mushroom-entity-card
entity: sensor.indeklima_bedroom_temperature
name: Bedroom
icon: mdi:bed
- type: custom:mushroom-entity-card
entity: sensor.indeklima_kitchen_temperature
name: Kitchen
icon: mdi:fridge
- type: custom:mushroom-entity-card
entity: sensor.indeklima_bathroom_temperature
name: Bathroom
icon: mdi:showerCustomize threshold values to match your preferences and climate:
Access: Settings → Integrations → Indeklima → Configure → ⚙️ Thresholds
| Parameter | Range | Default (Summer/Winter) | Notes |
|---|---|---|---|
| Max Humidity Summer | 40-80% | 60% | Higher in summer due to outdoor conditions |
| Max Humidity Winter | 30-70% | 55% | Lower in winter to prevent condensation |
| Max CO2 | 800-2000 ppm | 1000 ppm | 800 = strict, 1200 = relaxed |
| Max VOC | 1.0-10.0 mg/m³ | 3.0 mg/m³ | Depends on sensor sensitivity |
| Max Formaldehyde | 0.05-0.5 mg/m³ | 0.15 mg/m³ | WHO guideline: 0.1 mg/m³ |
When to adjust:
- Stricter limits (lower values) → More alerts, healthier air
- Relaxed limits (higher values) → Fewer alerts, more tolerance
- After renovation → Lower VOC/formaldehyde limits temporarily
Configure a weather sensor for better ventilation recommendations:
Access: Settings → Integrations → Indeklima → Configure → 🌤️ Weather Integration
- Select your preferred weather entity (e.g.,
weather.home) - Or leave empty to use Home Assistant's default weather
- Save
Benefits:
- Takes outdoor temperature into account
- Considers outdoor humidity
- Prevents bad ventilation advice (e.g., don't ventilate when it's too humid outside)
Add New Room:
- Settings → Integrations → Indeklima → Configure
- Select "🏠 Manage rooms"
- Select "Add new room"
- Configure sensors and devices
- Save
Edit Existing Room:
- Settings → Integrations → Indeklima → Configure
- Select "🏠 Manage rooms"
- Select room name to edit
- Update configuration
- Save (integration will reload automatically)
Delete Room:
- Settings → Integrations → Indeklima → Configure
- Select "🏠 Manage rooms"
- Select "Delete [Room Name]"
- Confirm (this removes all sensors for that room)
Problem: Sensor displays "unknown" or "unavailable" instead of a value
Possible Causes:
- Underlying sensor is unavailable
- Sensor doesn't return numeric value
- Integration hasn't updated yet
Solution:
-
Check underlying sensors:
- Go to: Developer Tools → States
- Search for your sensor (e.g.,
sensor.living_room_humidity) - Verify it shows a numeric value (not "unknown" or "unavailable")
-
Check sensor configuration:
- Settings → Integrations → Indeklima → Configure → Manage rooms
- Edit the affected room
- Verify correct sensors are selected
-
Check logs:
- Settings → System → Logs
- Filter on "indeklima"
- Look for errors like "ValueError" or "TypeError"
-
Force update:
- Restart Home Assistant
- Wait 5 minutes for coordinator to update
-
Still broken?
- Try removing and re-adding the room
- Check that sensor entity ID hasn't changed
Problem: Windows show as closed when they're actually open (or vice versa)
Solution:
-
Verify sensor state:
- Go to: Developer Tools → States
- Find your window sensor (e.g.,
binary_sensor.living_room_window) - Check current state:
on= Open ✅off= Closed ✅- If reversed, your sensor uses non-standard states
-
Check sensor type:
- Indeklima expects binary_sensor entities
- State must be
onoroff - Some sensors use
open/closedinstead (won't work)
-
Fix reversed sensors:
- If your sensor reports
offwhen open andonwhen closed - Create a template sensor to reverse it:
# configuration.yaml template: - binary_sensor: - name: "Living Room Window Fixed" state: > {{ is_state('binary_sensor.living_room_window', 'off') }} device_class: window
- If your sensor reports
-
Use the fixed sensor:
- Settings → Integrations → Indeklima → Configure
- Edit room → Select the new "Fixed" sensor
Problem: Even with doors open, air circulation shows "Poor"
Causes:
- Doors are marked as "Outdoor" instead of "Internal"
- Door sensors aren't reporting correctly
- No door sensors configured at all
Solution:
-
Verify door classification:
- Settings → Integrations → Indeklima → Configure
- Select "🏠 Manage rooms"
- Edit each room with doors
- Click through to window/door configuration
- Internal doors should NOT have checkmark (not outdoor)
-
Check door sensor states:
- Developer Tools → States
- Find door sensors
- Verify they show
onwhen open
-
Expected behavior:
- 0 internal doors open =
poor - 1-2 internal doors open =
moderate - 3+ internal doors open =
good
- 0 internal doors open =
-
Example setup:
Living Room: - Living room window → ✓ Outdoor - Living room balcony door → ✓ Outdoor - Living room to hallway door → ✗ Internal Bathroom: - Bathroom window → ✓ Outdoor - Bathroom door → ✗ Internal
Problem: Sensor always shows "No" or "unknown"
Solution:
-
Check room configuration:
- At least ONE room must have sensors configured
- Verify rooms have humidity or CO2 sensors
-
Configure weather entity:
- Settings → Integrations → Indeklima → Configure
- Select "🌤️ Weather Integration"
- Choose your weather entity
- Without weather, recommendations are basic
-
Verify thresholds:
- Settings → Integrations → Indeklima → Configure
- Select "⚙️ Thresholds"
- Check values are reasonable
- If thresholds are too high, you'll never trigger recommendations
-
Check sensor attributes:
- Developer Tools → States
- Find:
sensor.indeklima_hub_ventilation_recommendation - Look at attributes for "reason"
- This explains why recommendation is what it is
-
Expected behavior:
no= Indoor climate is OK, or outdoor conditions are badyes= Indoor climate has problems AND outdoor conditions are goodoptional= Windows already open, or borderline conditions
Problem: Created new room but sensors don't appear
Solution:
-
Restart Home Assistant:
- Settings → System → Restart
- New sensors require restart to appear
-
Check device registry:
- Settings → Devices & Services → Devices
- Search for "Indeklima"
- Find your new room device
- Click it to see all sensors
-
Verify room has sensors configured:
- If room has NO sensors of any type
- Only status sensor will be created
- Add at least temperature, humidity, or CO2 sensors
-
Check for errors:
- Settings → System → Logs
- Filter on "indeklima"
- Look for errors mentioning the room name
Problem: Created automation but not receiving notifications
Solution:
-
Check automation is enabled:
- Settings → Automations & Scenes
- Find your automation
- Verify it has no warning icon
-
Check trigger conditions:
- Edit automation
- Verify room status sensor is correct
- Check time window (Aktiv Fra/Til)
- Verify severity threshold
-
Check cooldown:
- Look at room status sensor attributes
- Check
last_notifiedtimestamp - If recently notified, cooldown prevents spam
-
Test manually:
- Edit automation
- Click "Run" (play button top right)
- Should trigger immediately if conditions met
-
View traces:
- Automation page → Your automation
- Click "Traces" tab
- See exactly why automation didn't trigger
Problem: Multiple "Indeklima" devices with same rooms
Cause: This was a bug in v2.3.0 (encoding issue)
Solution:
-
If on v2.3.0:
- Upgrade to v2.3.1 or v2.3.2 (fixes encoding)
-
Remove duplicates:
- Settings → Devices & Services → Integrations
- Remove ALL Indeklima entries
- Restart Home Assistant
- Re-add Indeklima integration (now with v2.3.1+)
-
Prevention:
- Always use v2.3.1 or newer
- Don't downgrade to v2.3.0
Problem: Severity shows 60+ but all values seem normal
Solution:
-
Check ALL metrics:
- Not just the main ones
- Look at VOC and formaldehyde too
- One high value can spike severity
-
Verify thresholds:
- Settings → Configure → Thresholds
- Ensure they match your sensors and preferences
- Default thresholds might not suit your situation
-
Understand severity calculation:
Severity = 0-100 (lower is better) - Humidity excess: 0-30 points - CO2 excess: 0-30 points - VOC excess: 0-20 points - Formaldehyde excess: 0-20 points - Air circulation bonus: -5% if good -
Check room-by-room:
- Look at each room's status sensor
- Find which room(s) are causing high severity
- Focus on fixing those specific rooms
See CHANGELOG.md for full version history.
- 📚 Documentation Updates - Improved accuracy and clarity
- ✅ Enhanced troubleshooting section
- ✅ Better configuration examples
- ✅ Improved dashboard examples
- ✅ More detailed sensor explanations
- 🔧 Complete Encoding Cleanup - All English constants
- ✅ Fixed Danish character handling (æ, ø, å)
- ✅ State translations via strings.json/da.json
- ✅ Blueprint fixed for v2.3.1
- 📊 Per-room metric sensors (temperature, humidity, CO2)
- ✅ Better device classes
- ✅ Backward compatible attributes
- 🪟 Indoor/Outdoor window classification
- 🌬️ Air circulation sensor
- 🎯 Severity bonus for good air circulation
- ✅ Fixed window state logic
- 🌬️ Ventilation recommendations
- 📱 Automation Blueprint
- 🔔 Last notified tracking
- 🏠 Device organization
- ✨ Modern entity naming
- 📈 Trend analysis
- 🎉 Initial release
Contributions are very welcome!
- Fork the project on GitHub
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to your branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Before contributing:
- Read the code standards in project documentation
- Test your changes thoroughly
- Update documentation if needed
- Follow Home Assistant coding guidelines
This project is licensed under the MIT License - see LICENSE file for details.
- Home Assistant community for support and inspiration
- HACS team for making custom integrations easy
- All users who report issues and suggest improvements
- Contributors who help improve the code
Need help? Here's where to get it:
- Issues: GitHub Issues - Bug reports and feature requests
- Discussions: GitHub Discussions - General questions and ideas
- Documentation: GitHub Wiki - Extended guides and tutorials
Before creating an issue:
- Check existing issues (open and closed)
- Review troubleshooting section above
- Check Home Assistant logs
- Provide relevant details (version, configuration, logs)
Made with ❤️ by KingPainter
Star ⭐ this repo if you find it useful!
