Commit ·
81ee9c6
1
Parent(s): 83f2d5a
持久化tap_sensitivity设置
Browse files- 在Preferences中添加tap_sensitivity字段
- 修改entity setter保存设置到preferences.json
- 启动时加载保存的tap_sensitivity值
- 重启后会记住ESPHome中设置的值
reachy_mini_ha_voice/entity_registry.py
CHANGED
|
@@ -746,10 +746,15 @@ class EntityRegistry:
|
|
| 746 |
return TAP_THRESHOLD_G_DEFAULT
|
| 747 |
|
| 748 |
def set_tap_sensitivity(value: float) -> None:
|
| 749 |
-
"""Set tap sensitivity threshold in g."""
|
| 750 |
if self.tap_detector:
|
| 751 |
self.tap_detector.threshold_g = value
|
| 752 |
_LOGGER.info("Tap sensitivity set to %.2fg", value)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 753 |
|
| 754 |
entities.append(NumberEntity(
|
| 755 |
server=self.server,
|
|
|
|
| 746 |
return TAP_THRESHOLD_G_DEFAULT
|
| 747 |
|
| 748 |
def set_tap_sensitivity(value: float) -> None:
|
| 749 |
+
"""Set tap sensitivity threshold in g and save to preferences."""
|
| 750 |
if self.tap_detector:
|
| 751 |
self.tap_detector.threshold_g = value
|
| 752 |
_LOGGER.info("Tap sensitivity set to %.2fg", value)
|
| 753 |
+
# Save to preferences for persistence across restarts
|
| 754 |
+
if self.state:
|
| 755 |
+
self.state.preferences.tap_sensitivity = value
|
| 756 |
+
self.state.save_preferences()
|
| 757 |
+
_LOGGER.debug("Tap sensitivity saved to preferences")
|
| 758 |
|
| 759 |
entities.append(NumberEntity(
|
| 760 |
server=self.server,
|
reachy_mini_ha_voice/models.py
CHANGED
|
@@ -48,6 +48,7 @@ class AvailableWakeWord:
|
|
| 48 |
@dataclass
|
| 49 |
class Preferences:
|
| 50 |
active_wake_words: List[str] = field(default_factory=list)
|
|
|
|
| 51 |
|
| 52 |
|
| 53 |
@dataclass
|
|
|
|
| 48 |
@dataclass
|
| 49 |
class Preferences:
|
| 50 |
active_wake_words: List[str] = field(default_factory=list)
|
| 51 |
+
tap_sensitivity: float = 0.5 # Tap detection threshold in g (0.5 = most sensitive)
|
| 52 |
|
| 53 |
|
| 54 |
@dataclass
|
reachy_mini_ha_voice/voice_assistant.py
CHANGED
|
@@ -174,12 +174,15 @@ class VoiceAssistantService:
|
|
| 174 |
# Start tap detector for "tap to wake" (Wireless version only)
|
| 175 |
if self.reachy_mini is not None:
|
| 176 |
from .tap_detector import TAP_THRESHOLD_G_DEFAULT
|
|
|
|
|
|
|
| 177 |
self._tap_detector = TapDetector(
|
| 178 |
reachy_mini=self.reachy_mini,
|
| 179 |
on_tap_callback=self._on_tap_detected,
|
| 180 |
-
threshold_g=
|
| 181 |
cooldown_seconds=1.0,
|
| 182 |
)
|
|
|
|
| 183 |
self._tap_detector.start()
|
| 184 |
# Store tap_detector in state for entity registry access
|
| 185 |
self._state.tap_detector = self._tap_detector
|
|
|
|
| 174 |
# Start tap detector for "tap to wake" (Wireless version only)
|
| 175 |
if self.reachy_mini is not None:
|
| 176 |
from .tap_detector import TAP_THRESHOLD_G_DEFAULT
|
| 177 |
+
# Use saved preference or default
|
| 178 |
+
tap_threshold = preferences.tap_sensitivity if preferences.tap_sensitivity > 0 else TAP_THRESHOLD_G_DEFAULT
|
| 179 |
self._tap_detector = TapDetector(
|
| 180 |
reachy_mini=self.reachy_mini,
|
| 181 |
on_tap_callback=self._on_tap_detected,
|
| 182 |
+
threshold_g=tap_threshold,
|
| 183 |
cooldown_seconds=1.0,
|
| 184 |
)
|
| 185 |
+
_LOGGER.info("Tap detector started with threshold: %.1fg", tap_threshold)
|
| 186 |
self._tap_detector.start()
|
| 187 |
# Store tap_detector in state for entity registry access
|
| 188 |
self._state.tap_detector = self._tap_detector
|