Skip to content

Releases: Screaminlean/ha-microclimate

Release Notes - v0.0.10

Pre-release

Choose a tag to compare

@Screaminlean Screaminlean released this 29 May 13:57

🎨 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

How to Update

  1. Via HACS:

    • Go to HACS → Integrations
    • Find "HA Microclimate"
    • Click "Update" to v0.0.10
    • Restart Home Assistant
  2. 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

Pre-release

Choose a tag to compare

@Screaminlean Screaminlean released this 29 May 13:44

🐛 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:MM format (e.g., 07:30 instead of raw packed values)
  • Regex Pattern: Updated to match time\0time\0timezone\0flag format with null byte separators
  • Decoding Logic: Split times on null bytes instead of fixed 5-digit chunks
  • Encoding Logic: Join times with \0 separators 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/London
    • friendly_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 timezone
    • 07:30, 19:00 | Europe/London | 0 - Multiple times

How to Update

  1. Via HACS:

    • Go to HACS → Integrations
    • Find "HA Microclimate"
    • Click "Update" to v0.0.9
    • Restart Home Assistant
  2. 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_text type
    • This will pick up the new decoder and display times correctly

Technical Details

  • Format Structure: {time1}\x00{time2}\x00{timezone}\x00{flag}
  • Time Encoding: Seconds from midnight (0-86399)
  • Example: 27000 seconds = 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

Pre-release

Choose a tag to compare

@Screaminlean Screaminlean released this 29 May 13:15

🎉 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_text and open blocking warnings in logs
  • Improved integration startup performance

✨ Improvements

Enhanced Time Field Editing

  • Simple Input: Just type 07:30 to 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 format
    • 2700027000Europe/London0 - Raw format (backward compatible)

Better Debugging

New state attributes for packed time fields:

  • decoded_times: Human-readable time values
  • timezone: Configured timezone
  • flag: Device flag value
  • friendly_format: Combined display format
  • raw_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 BlynkPackedTimeText class
  • manifest.json - Version bump to 0.0.8
  • const.py - Version bump to 0.0.8

📦 Installation

HACS (Recommended)

  1. Open HACS → Integrations
  2. Find "HA Microclimate"
  3. Click "Update" to version 0.0.8
  4. 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

Choose a tag to compare

@Screaminlean Screaminlean released this 29 May 05:27

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

Pre-Release 0.0.6 Pre-release
Pre-release

Choose a tag to compare

@Screaminlean Screaminlean released this 29 May 03:20

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: Type and Hidden.
    • Type now explicitly controls default entity type.
    • Hidden controls whether a mapped pin appears in setup UI.
  • Pin metadata generation is more robust:

    • CSV generator validates and normalizes pin types.
    • Hidden is converted into runtime show_in_ui metadata.
    • 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_number where appropriate.
  • Season start date pins (V20V23) now use input_text for DD/MM values.
  • 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

Pre-Release 0.0.5 Pre-release
Pre-release

Choose a tag to compare

@Screaminlean Screaminlean released this 29 May 00:38

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 Type column in the CSV to explicitly define pin entity type.
  • Added Hidden column in the CSV to control whether a mapped pin should appear in setup UI.
  • JSON generation now derives show_in_ui from Hidden and 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 + Hidden usage.

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

Pre-Release 0.0.4 Pre-release
Pre-release

Choose a tag to compare

@Screaminlean Screaminlean released this 28 May 20:56

Bump version due to HACS cache issue.

Pre-Release 0.0.3

Pre-Release 0.0.3 Pre-release
Pre-release

Choose a tag to compare

@Screaminlean Screaminlean released this 28 May 20:19

Bump version due to HACS cache issue.

Pre-Release 0.0.2

Pre-Release 0.0.2 Pre-release
Pre-release

Choose a tag to compare

@Screaminlean Screaminlean released this 28 May 19:59

Just getting things ready for the HACS ecosystem. Not tested or fully operational yet.