同步设备期望音量并补发音量指令
This commit is contained in:
@@ -20,6 +20,7 @@ from services.device_identity_initializer import (
|
||||
device_identity_initializer,
|
||||
)
|
||||
from services.device_update_manager import device_firmware_update_manager
|
||||
from services.device_volume_manager import device_volume_manager
|
||||
from services.offline_audio_cache import offline_audio_cache
|
||||
from services.task_manager import task_manager
|
||||
from utils.logger import session_logger as logger
|
||||
@@ -120,8 +121,29 @@ class TalkingQMQTTService:
|
||||
task_type="persistence",
|
||||
)
|
||||
|
||||
async def _sync_desired_volume(self, device_id: str, current_level) -> None:
|
||||
if current_level is None:
|
||||
return
|
||||
try:
|
||||
current_level_int = int(current_level)
|
||||
except (TypeError, ValueError):
|
||||
logger.warning(device_id, "volume", f"invalid current volume level: {current_level}")
|
||||
return
|
||||
|
||||
desired_level = await device_volume_manager.get_configured_volume(device_id)
|
||||
if desired_level is None or desired_level == current_level_int:
|
||||
return
|
||||
|
||||
logger.info(
|
||||
device_id,
|
||||
"volume",
|
||||
f"当前音量 {current_level_int} 与期望音量 {desired_level} 不一致,补发音量指令",
|
||||
)
|
||||
await self.send_volume_command(device_id, desired_level)
|
||||
|
||||
async def _handle_device_info(self, device_id: str, payload: dict):
|
||||
data = payload.get("data", {})
|
||||
current_volume = data.get("voice")
|
||||
await self._schedule_persistence(
|
||||
device_id,
|
||||
"device_info",
|
||||
@@ -130,9 +152,10 @@ class TalkingQMQTTService:
|
||||
power=data.get("power"),
|
||||
signal_strength=data.get("signal"),
|
||||
version_str=data.get("version"),
|
||||
volume=data.get("voice"),
|
||||
volume=current_volume,
|
||||
),
|
||||
)
|
||||
await self._sync_desired_volume(device_id, current_volume)
|
||||
await self._publish(f"device/{device_id}/event_resp", {"msg_id": "000", "status": "success"})
|
||||
|
||||
async def _handle_gps_response(self, device_id: str, payload: dict):
|
||||
@@ -187,6 +210,7 @@ class TalkingQMQTTService:
|
||||
version_str=None,
|
||||
),
|
||||
)
|
||||
await self._sync_desired_volume(device_id, current_level)
|
||||
|
||||
async def _handle_ota_response(self, device_id: str, payload: dict):
|
||||
status = payload.get("status")
|
||||
|
||||
Reference in New Issue
Block a user