-
Notifications
You must be signed in to change notification settings - Fork 163
Closed
Description
Summary
ESPHome has added a new make_entity_preference<T>() helper on EntityBase (PR #13505) that encapsulates preference creation and will handle automatic preference migration when the hash algorithm is updated to fix collisions.
This component uses get_object_id_hash() for preference keys, which is the old API that predates even get_preference_hash() (which added device-awareness to avoid collisions across devices). Components using get_object_id_hash() directly are vulnerable to hash collisions when different entity names sanitize to the same string (e.g. "Living Room" and "living_room" both become "living_room"), and will not participate in automatic preference migration.
Current usage
In components/ratgdo/number/ratgdo_number.cpp:
this->pref_ = global_preferences->make_preference<float>(this->get_object_id_hash());Recommended migration
// Before:
this->pref_ = global_preferences->make_preference<float>(this->get_object_id_hash());
// After:
this->pref_ = this->make_entity_preference<float>();References
- Encapsulation PR: [core] Encapsulate entity preference creation to prepare for hash migration esphome/esphome#13505
- Hash collision issue: Fix Home Assistant object id collisions esphome/backlog#85
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels