Releases: Screaminlean/ha-microclimate
Release list
Release Notes - v0.0.10
🎨 UX Improvement Release
Enhanced Time Display - Duplicate Removal
Issue: When packed time values contained duplicate times, they were displayed redundantly (e.g., "07:30, 07:30" instead of just "07:30"), creating visual clutter in the UI.
Resolution: Implemented intelligent deduplication that detects and removes duplicate time values while preserving order for genuinely different times.
What's Changed
- 🎯 Cleaner Display: Identical time values are now shown once instead of repeated
- ✅ Smart Deduplication: Preserves order and shows all unique times when they differ
- 🔧 Order Preservation: When multiple distinct times exist, they're displayed in the correct sequence
- 💡 Simplified UX: Less visual noise when viewing time configuration fields
Example Improvements
Single Time (Most Common):
- Raw Data:
27000\027000\0Europe/London\00 - Before:
07:30, 07:30 - After:
07:30✨
Multiple Different Times:
- Raw Data:
27000\068400\0Europe/London\00 - Before:
07:30, 19:00 - After:
07:30, 19:00(unchanged, both are unique)
Mixed Duplicates:
- Raw Data:
27000\027000\068400\0Europe/London\00 - Before:
07:30, 07:30, 19:00 - After:
07:30, 19:00(duplicate removed)
Technical Details
- Deduplication Logic: Uses order-preserving list to track unique values
- Fallback Handling: If all times are identical, displays single value
- Multiple Distinct Times: Comma-separated format maintained when genuinely different
- State Attributes: Full decoded_times array still visible for debugging
Affected Entities
All packed time text entities benefit from this improvement:
- V32, V34, V36, V38, V40, V42, V44, V46 (Yellow Channel Season Times)
- V92, V94, V96, V98, V100, V102, V104, V106 (Blue Channel Season Times)
Files Modified
- text.py - Enhanced
native_valueproperty with deduplication logic - const.py - Version bump
- manifest.json - Version bump
How to Update
-
Via HACS:
- Go to HACS → Integrations
- Find "HA Microclimate"
- Click "Update" to v0.0.10
- Restart Home Assistant
-
Changes Take Effect Immediately:
- After restart, time displays will automatically deduplicate
- No integration reconfiguration needed
Upgrade Path
- From v0.0.8: Update to v0.0.9 first (fixes null-byte parsing), or directly to v0.0.10
- From v0.0.9: Direct upgrade, fully compatible
Release Notes - v0.0.9
🐛 Bug Fix Release
Fixed Packed Time Display Format
Issue: Time entities (V32, V34, V36, V38, V40, V42, V44, V46, V92, V94, V96, V98, V100, V102, V104, V106) were showing "Unable to decode" instead of displaying times in a human-friendly format.
Root Cause: The packed time format from the Blynk API uses null byte (\0) separators between fields, not simple string concatenation. The original implementation expected 2700027000Europe/London0 but the actual format is 27000\027000\0Europe/London\00.
Resolution: Updated the packed_time_text parser to correctly handle null-byte-separated values.
What's Changed
- ✅ Time Display: Time entities now show clean
HH:MMformat (e.g.,07:30instead of raw packed values) - ✅ Regex Pattern: Updated to match
time\0time\0timezone\0flagformat with null byte separators - ✅ Decoding Logic: Split times on null bytes instead of fixed 5-digit chunks
- ✅ Encoding Logic: Join times with
\0separators when writing values back to device - ✅ Debug Logging: Added comprehensive logging to troubleshoot format issues
Example
Before:
- State:
2700027000Europe/London0 - Friendly Format:
Unable to decode
After:
- State:
07:30 - State Attributes:
decoded_times:['07:30', '07:30']timezone:Europe/Londonfriendly_format:07:30, 07:30 (Europe/London)
User Experience Improvements
- Time fields are now editable in simple HH:MM format (e.g., just type
08:00) - Preserved timezone and flag values when editing times
- Multiple input formats supported:
07:30- Simple time (preserves existing timezone/flag)07:30 | Europe/London | 0- Full format with timezone07:30, 19:00 | Europe/London | 0- Multiple times
How to Update
-
Via HACS:
- Go to HACS → Integrations
- Find "HA Microclimate"
- Click "Update" to v0.0.9
- Restart Home Assistant
-
For Existing Installations:
- If you already have v0.0.8 installed, delete and re-add the integration to ensure entities use the correct
packed_time_texttype - This will pick up the new decoder and display times correctly
- If you already have v0.0.8 installed, delete and re-add the integration to ensure entities use the correct
Technical Details
- Format Structure:
{time1}\x00{time2}\x00{timezone}\x00{flag} - Time Encoding: Seconds from midnight (0-86399)
- Example:
27000seconds = 7.5 hours = 07:30 - Regex Pattern:
^(?P<times>[\d\x00]+)(?P<tz>[A-Za-z_/]+)\x00(?P<flag>\d+)$
Release Notes - v0.0.8
🎉 What's New
User-Friendly Time Display
Packed time fields now display in clean, readable HH:MM format instead of raw encoded values!
Before: 2700027000Europe/London0
After: 07:30
Users can now easily view and edit schedule times without needing to understand the device's internal encoding format.
🐛 Bug Fixes
Fixed Blocking I/O Warning
Resolved Home Assistant warning about blocking file I/O operations in the event loop:
- Pin map data is now pre-loaded asynchronously using executor threads
- No more
read_textandopenblocking warnings in logs - Improved integration startup performance
✨ Improvements
Enhanced Time Field Editing
- Simple Input: Just type
07:30to set a time - Automatic Preservation: Timezone and flag values are automatically preserved when editing
- Flexible Formats: Accepts multiple input formats:
07:30- Simple time (recommended)07:30 | Europe/London | 0- Full format2700027000Europe/London0- Raw format (backward compatible)
Better Debugging
New state attributes for packed time fields:
decoded_times: Human-readable time valuestimezone: Configured timezoneflag: Device flag valuefriendly_format: Combined display formatraw_value: Original encoded value
🔧 Technical Details
Time Encoding
- Format: Seconds from midnight (0-86399)
- Example: 27000 seconds = 7.5 hours = 07:30
- Chunk Size: 5 digits per time value
- Bidirectional: Automatic conversion between display and device formats
Files Changed
- pin_map_loader.py - Added async pre-loading helper
- config_flow.py - Pre-load pin map before entity creation
- select.py - Pre-load pin map before entity creation
- text.py - Complete rewrite of
BlynkPackedTimeTextclass - manifest.json - Version bump to 0.0.8
- const.py - Version bump to 0.0.8
📦 Installation
HACS (Recommended)
- Open HACS → Integrations
- Find "HA Microclimate"
- Click "Update" to version 0.0.8
- Restart Home Assistant
Manual
Download from GitHub Releases and copy to ha_microclimate
⚠️ Breaking Changes
None - This release is fully backward compatible with 0.0.7
🙏 Contributors
Thank you to everyone who reported the blocking I/O warning and provided feedback on time field usability!
v0.0.7: Chore: bump integration version to 0.0.7
HA Microclimate v0.0.7
This release focuses on stronger Evo pin metadata, cleaner setup UX, and safer runtime behavior for text inputs.
Highlights
- Setup now only shows pins that are explicitly mapped and visible.
- Unmapped or hidden discovered pins are still created, but as disabled-by-default entities.
- Pin metadata pipeline was upgraded from basic expose logic to structured Type + Hidden fields.
- Text entities now support regex validation at runtime, not just during initial setup.
- Season start date text pins include DD/MM validation defaults.
- Extensive Evo pin map updates were applied from frame-driven verification.
- Temperature units toggle command was mapped as:
- V25: Temperature Units Toggle Trigger
- Type: switch
- Hidden: false
Breaking Changes
- Backward compatibility with the previous CSV expose-style schema is no longer required for normal use.
- The preferred source format is now:
PIN, Description, Type, Hidden
Pin Mapping and UX Improvements
- Multiple control pins were reclassified to correct entity domains (especially switch and input_number cases).
- Blue channel season power toggles are now modeled as latched switches (0/1 behavior).
- Config flow behavior is now more intentional:
- Users choose only curated visible pins.
- Internal/utility pins can still exist without cluttering onboarding.
Validation and Reliability
- Generator enforces pin type handling with aliases and validation.
- Hidden flag handling is explicit and consistent across CSV -> JSON -> config flow -> entity creation.
- Text writes now reject invalid values immediately when a pattern is present.
Developer Notes
- Pin map generation remains the same command:
python generate_pin_map_json.py --csv Evo_Blynk_Pins.csv --out custom_components/ha_microclimate/pin_map.json - Regeneration and targeted file diagnostics were verified clean for this release.
Pre-Release 0.0.6
This release focuses on simplifying pin setup, improving pin metadata control, and adding scoped validation for season date fields.
Highlights
-
Setup flow is now cleaner:
- Only mapped pins marked visible are shown during setup.
- Hidden/unmapped discovered pins are auto-created as entities, disabled by default.
-
Pin map schema has been improved:
- Added CSV columns:
TypeandHidden. Typenow explicitly controls default entity type.Hiddencontrols whether a mapped pin appears in setup UI.
- Added CSV columns:
-
Pin metadata generation is more robust:
- CSV generator validates and normalizes pin types.
Hiddenis converted into runtimeshow_in_uimetadata.- pin_map.json is regenerated from the updated schema.
Entity and Config Improvements
- Added support for per-entity default enable state:
- Hidden/auto-created entities are registered as disabled by default.
- Applied this behavior consistently across all entity platforms:
- sensor, binary_sensor, switch, number, select, button, text.
Numeric and Date Field Updates
- Updated several mapped pins to better-fit types:
- Ramp, setpoint, and alarm-style values now use
input_numberwhere appropriate.
- Ramp, setpoint, and alarm-style values now use
- Season start date pins (
V20–V23) now useinput_textforDD/MMvalues. - Added scoped DD/MM validation for those season start date pins:
- Regex metadata generated only for the matching date pins.
- Pattern is prefilled in config flow.
- Runtime text writes enforce the pattern when configured.
Notes
- Validation is scoped: only pins with an explicit pattern are affected.
- Existing entities/config entries may need reconfiguration to pick up newly introduced pattern metadata.
Pre-Release 0.0.5
HA Microclimate v0.0.5
Highlights
- Simplified onboarding: setup now focuses on mapped, user-facing pins instead of showing every discovered pin.
- Added smarter default handling for non-UI pins: unmapped/hidden pins are auto-created as entities but disabled by default.
- Improved pin metadata model for cleaner control over behavior and visibility.
New Pin Map Schema
- Added
Typecolumn in the CSV to explicitly define pin entity type. - Added
Hiddencolumn in the CSV to control whether a mapped pin should appear in setup UI. - JSON generation now derives
show_in_uifromHiddenand supports strict type normalization.
Behavior Changes
- Config flow now:
- Shows only mapped pins marked as visible.
- Auto-configures hidden/unmapped discovered pins with safe defaults.
- Entity creation now supports per-entity default enablement, allowing hidden pins to exist without cluttering the UI.
Docs and Tooling
- Pin map generator updated to parse the new schema and validate values.
- Documentation updated to reflect
Type+Hiddenusage.
Notes
- Version bumped to
0.0.5. - Recommended workflow remains: edit CSV → regenerate pin_map.json with the generator script.
Pre-Release 0.0.4
Bump version due to HACS cache issue.
Pre-Release 0.0.3
Bump version due to HACS cache issue.
Pre-Release 0.0.2
Just getting things ready for the HACS ecosystem. Not tested or fully operational yet.