修复定时器重复的错误

This commit is contained in:
shaonianzhentan 2023-11-17 15:26:45 +08:00
parent 3522241b14
commit d07ab62ed7
3 changed files with 11 additions and 5 deletions

View File

@ -73,7 +73,7 @@ class OptionsFlowHandler(OptionsFlow):
entity_id = state.entity_id
value = f'{friendly_name}{entity_id}'
if platform != 'cloud_music':
if platform != 'cloud_music' and state.state != 'unavailable':
media_entities.append({ 'label': value, 'value': entity_id })
DATA_SCHEMA = vol.Schema({

View File

@ -1,7 +1,7 @@
{
"domain": "ha_cloud_music",
"name": "\u4E91\u97F3\u4E50",
"version": "2023.11.15",
"version": "2023.11.17",
"config_flow": true,
"documentation": "https://github.com/shaonianzhentan/ha_cloud_music",
"requirements": [

View File

@ -3,7 +3,7 @@ import logging, time, datetime
from homeassistant.core import HomeAssistant
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.config_entries import ConfigEntry
from homeassistant.helpers.event import track_time_interval
from homeassistant.helpers.event import async_track_time_interval
from homeassistant.components.media_player import MediaPlayerEntity, MediaPlayerDeviceClass
from homeassistant.components.media_player.const import (
SUPPORT_BROWSE_MEDIA,
@ -55,6 +55,7 @@ SUPPORT_FEATURES = SUPPORT_VOLUME_STEP | SUPPORT_VOLUME_MUTE | SUPPORT_VOLUME_SE
# 定时器时间
TIME_BETWEEN_UPDATES = datetime.timedelta(seconds=2)
UNSUB_INTERVAL = None
async def async_setup_entry(
hass: HomeAssistant,
@ -63,14 +64,19 @@ async def async_setup_entry(
) -> None:
entities = []
for source_media_player in entry.options.get('media_player'):
for source_media_player in entry.options.get('media_player', []):
entities.append(CloudMusicMediaPlayer(hass, source_media_player))
def media_player_interval(now):
for mp in entities:
mp.interval(now)
await hass.async_add_executor_job(track_time_interval, hass, media_player_interval, TIME_BETWEEN_UPDATES)
# 开启定时器
global UNSUB_INTERVAL
if UNSUB_INTERVAL is not None:
UNSUB_INTERVAL()
UNSUB_INTERVAL = async_track_time_interval(hass, media_player_interval, TIME_BETWEEN_UPDATES)
async_add_entities(entities, True)
class CloudMusicMediaPlayer(MediaPlayerEntity):