Desmond-Dong commited on
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=TAP_THRESHOLD_G_DEFAULT, # 0.5g (most sensitive)
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