Fix 'audiotrackdata' (#42)

## [0.4.1] Media Mystique: The Great Data Disappearing Act!

### Fixed

- Made media data (*track title*, *artist*, *length*) optional to acoomodate soundbars that don't provide this information (🥲)

### Added

- Add translations for the english translation file
This commit is contained in:
Samuel Spagl 2024-10-14 21:46:14 +02:00 committed by GitHub
parent 0d2424b578
commit bd313ea27a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 151 additions and 43 deletions

View File

@ -1,5 +1,15 @@
# Changelog # Changelog
## [0.4.1] Media Mystique: The Great Data Disappearing Act!
### Fixed
- Made media data (*track title*, *artist*, *length*) optional to acoomodate soundbars that don't provide this information (🥲)
### Added
- Add translations for the english translation file
## [0.4.0] Started with an "ick", but is now packed with new features 💪 ## [0.4.0] Started with an "ick", but is now packed with new features 💪
> ⚠️ Please read the following carefully: > ⚠️ Please read the following carefully:

View File

@ -2,21 +2,8 @@
Welcome to YASSI, the Home Assistant integration designed to bring comprehensive control over your Samsung Soundbar into your smart home ecosystem. Welcome to YASSI, the Home Assistant integration designed to bring comprehensive control over your Samsung Soundbar into your smart home ecosystem.
> [!CAUTION] > [!NOTE]
> **Soundbar Integration Issues**: > Please use service calls for setting the attribute of a custom capability instead of the entity. (See #43 for more information)
>
> Samsung changed (un)intentionally? something in the SmartThings API. Therefore it is currently not possible to retrieve a status update for
> custom capabilities like *Soundmode, EQ, Woofer and Advanced Audio settings (Nightmode, Bassmode, Voice-enhancer).
> Other than this, the integration is working as expected.
>
> **I released a new beta version where you can select for which custom capability entities should be created. If one is disabled so is the update
> process, and therefore the error logs will disappear.**
>
> It is still possible to adjust all settings of the custom capabilties, therefore the beta version features service calls for each of those.
> For more and updated information please refer to [#26](https://github.com/samuelspagl/ha_samsung_soundbar/issues/26).
>
> Best Samuel ✌️
**Table of Contents:** **Table of Contents:**
<!-- TOC --> <!-- TOC -->

View File

@ -72,18 +72,19 @@ class SoundbarDevice:
await self._update_equalizer() await self._update_equalizer()
async def _update_media(self): async def _update_media(self):
self.__media_artist = self.device.status._attributes["audioTrackData"].value[ if "audioTrackData" in self.device.status._attributes:
"artist" self.__media_artist = self.device.status._attributes["audioTrackData"].value[
] "artist"
self.__media_title = self.device.status._attributes["audioTrackData"].value[ ]
"title" self.__media_title = self.device.status._attributes["audioTrackData"].value[
] "title"
if self.__media_title != self.__old_media_title: ]
self.__old_media_title = self.__media_title if self.__media_title != self.__old_media_title:
self.__media_cover_url_update_time = datetime.datetime.now() self.__old_media_title = self.__media_title
self.__media_cover_url = await self.get_song_title_artwork( self.__media_cover_url_update_time = datetime.datetime.now()
self.__media_artist, self.__media_title self.__media_cover_url = await self.get_song_title_artwork(
) self.__media_artist, self.__media_title
)
async def _update_soundmode(self): async def _update_soundmode(self):
await self.update_execution_data(["/sec/networkaudio/soundmode"]) await self.update_execution_data(["/sec/networkaudio/soundmode"])
@ -372,11 +373,15 @@ class SoundbarDevice:
@property @property
def media_duration(self) -> int | None: def media_duration(self) -> int | None:
return self.device.status.attributes.get("totalTime").value attr = self.device.status.attributes.get("totalTime", None)
if attr:
return attr.value
@property @property
def media_position(self) -> int | None: def media_position(self) -> int | None:
return self.device.status.attributes.get("elapsedTime").value attr = self.device.status.attributes.get("elapsedTime", None)
if attr:
return attr.value
async def media_play(self): async def media_play(self):
await self.device.play(True) await self.device.play(True)

View File

@ -107,11 +107,27 @@
}, },
"set_speaker_level":{ "set_speaker_level":{
"name": "Lautsprecher level verändern", "name": "Lautsprecher level verändern",
"description": "Verändere die Lautstärke der einzelnen Lautsprecher" "description": "Verändere die Lautstärke der einzelnen Lautsprecher",
"fields":{
"speaker_identifier": {
"name": "Lautsprecher",
"description": "Auszuwählender Lautsprecher"
},
"level": {
"name": "Lautstärke Level",
"description": "Lautstärke Level zwischen -6 und 6."
}
}
}, },
"set_rear_speaker_mode":{ "set_rear_speaker_mode":{
"name": "Modus der hinteren Lautsprecher setzen", "name": "Modus der hinteren Lautsprecher setzen",
"description": "Nutze deine Rücklautsprecher, als 'Vorder-' oder 'Rücklautsprecher'." "description": "Nutze deine Rücklautsprecher, als 'Vorder-' oder 'Rücklautsprecher'.",
"fields":{
"speaker_mode": {
"name": "Lautsprecher Modus",
"description": "Nutze den Lautsprecher als Front oder Rear Speaker."
}
}
}, },
"set_active_voice_amplifier":{ "set_active_voice_amplifier":{
"name": "Stimmenverstärker setzen", "name": "Stimmenverstärker setzen",

View File

@ -1,18 +1,18 @@
{ {
"config":{ "config": {
"step":{ "step": {
"user":{ "user": {
"data": { "data": {
"api_key": "SmartThings API Token", "api_key": "SmartThings API Token",
"device_id": "Device ID", "device_id": "Device ID",
"device_name":"Device Name", "device_name": "Device Name",
"device_volume": "Max Volume (int)" "device_volume": "Max Volume (int)"
}, },
"description": "Please enter your credentials.", "description": "Please enter your credentials.",
"title": "Authentication" "title": "Authentication"
}, },
"device":{ "device": {
"data" : { "data": {
"settings_advanced_audio": "Enable 'Advanced Audio switches' capabilities (NightMode, BassMode, VoiceEnhancer)", "settings_advanced_audio": "Enable 'Advanced Audio switches' capabilities (NightMode, BassMode, VoiceEnhancer)",
"settings_eq": "Enable 'EQ selector' capabilities", "settings_eq": "Enable 'EQ selector' capabilities",
"settings_soundmode": "Enable 'Soundmode selector' capabilities", "settings_soundmode": "Enable 'Soundmode selector' capabilities",
@ -21,8 +21,8 @@
"description": "Some soundbars have a different featureset than others. Please the features supported by your soundbar (visible in the SmartThings App).", "description": "Some soundbars have a different featureset than others. Please the features supported by your soundbar (visible in the SmartThings App).",
"title": "Device Settings" "title": "Device Settings"
}, },
"reconfigure_confirm":{ "reconfigure_confirm": {
"data" : { "data": {
"settings_advanced_audio": "Enable 'Advanced Audio switches' capabilities (NightMode, BassMode, VoiceEnhancer)", "settings_advanced_audio": "Enable 'Advanced Audio switches' capabilities (NightMode, BassMode, VoiceEnhancer)",
"settings_eq": "Enable 'EQ selector' capabilities", "settings_eq": "Enable 'EQ selector' capabilities",
"settings_soundmode": "Enable 'Soundmode selector' capabilities", "settings_soundmode": "Enable 'Soundmode selector' capabilities",
@ -59,5 +59,95 @@
"Front": "Front" "Front": "Front"
} }
} }
} },
"services": {
"select_soundmode": {
"name": "Select Sound Mode",
"description": "Choose between 'Standard', 'Surround', 'Game', and 'Adaptive Sound'."
},
"set_woofer_level": {
"name": "Set Subwoofer Level",
"description": "Change the volume of your subwoofer.",
"fields": {
"level": {
"name": "Volume Level",
"description": "Subwoofer level, from -12 to +6"
}
}
},
"set_night_mode": {
"name": "Set Night Mode",
"description": "Turn 'Night Mode' on/off.",
"fields": {
"enabled": {
"name": "On/Off",
"description": "See name."
}
}
},
"set_bass_enhancer": {
"name": "Set Bass Mode",
"description": "Turn 'Bass Mode' on/off.",
"fields": {
"enabled": {
"name": "On/Off",
"description": "See name."
}
}
},
"set_voice_enhancer": {
"name": "Set Voice Enhancer",
"description": "Turn 'Voice Enhancer' on/off.",
"fields": {
"enabled": {
"name": "On/Off",
"description": "See name."
}
}
},
"set_speaker_level": {
"name": "Change Speaker Level",
"description": "Change the volume of individual speakers.",
"fields":{
"speaker_identifier": {
"name": "Speaker Identifier",
"description": "Identifier of the speaker."
},
"level": {
"name": "Level",
"description": "Level of the Speaker from -6 to 6."
}
}
},
"set_rear_speaker_mode": {
"name": "Set Rear Speaker Mode",
"description": "Use your rear speakers as 'Front' or 'Rear' speakers.",
"fields":{
"speaker_mode": {
"name": "Speaker mode",
"description": "Weather the speaker are used as rear / front speakers."
}
}
},
"set_active_voice_amplifier": {
"name": "Set Voice Amplifier",
"description": "Turn 'Voice Amplifier' on/off.",
"fields": {
"enabled": {
"name": "On/Off",
"description": "See name."
}
}
},
"set_space_fit_sound": {
"name": "Set SpaceFitSound",
"description": "Turn 'SpaceFitSound' on/off.",
"fields": {
"enabled": {
"name": "On/Off",
"description": "See name."
}
}
}
}
} }