Skip to content

Commit bd313ea

Browse files
authored
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
1 parent 0d2424b commit bd313ea

File tree

5 files changed

+151
-43
lines changed

5 files changed

+151
-43
lines changed

CHANGELOG.md

+10
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,15 @@
11
# Changelog
22

3+
## [0.4.1] Media Mystique: The Great Data Disappearing Act!
4+
5+
### Fixed
6+
7+
- Made media data (*track title*, *artist*, *length*) optional to acoomodate soundbars that don't provide this information (🥲)
8+
9+
### Added
10+
11+
- Add translations for the english translation file
12+
313
## [0.4.0] Started with an "ick", but is now packed with new features 💪
414

515
> ⚠️ Please read the following carefully:

README.md

+2-15
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,8 @@
22

33
Welcome to YASSI, the Home Assistant integration designed to bring comprehensive control over your Samsung Soundbar into your smart home ecosystem.
44

5-
> [!CAUTION]
6-
> **Soundbar Integration Issues**:
7-
>
8-
> Samsung changed (un)intentionally? something in the SmartThings API. Therefore it is currently not possible to retrieve a status update for
9-
> custom capabilities like *Soundmode, EQ, Woofer and Advanced Audio settings (Nightmode, Bassmode, Voice-enhancer).
10-
> Other than this, the integration is working as expected.
11-
>
12-
> **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
13-
> process, and therefore the error logs will disappear.**
14-
>
15-
> It is still possible to adjust all settings of the custom capabilties, therefore the beta version features service calls for each of those.
16-
> For more and updated information please refer to [#26](https://github.com/samuelspagl/ha_samsung_soundbar/issues/26).
17-
>
18-
> Best Samuel ✌️
19-
5+
> [!NOTE]
6+
> Please use service calls for setting the attribute of a custom capability instead of the entity. (See #43 for more information)
207
218
**Table of Contents:**
229
<!-- TOC -->

custom_components/samsung_soundbar/api_extension/SoundbarDevice.py

+19-14
Original file line numberDiff line numberDiff line change
@@ -72,18 +72,19 @@ async def update(self):
7272
await self._update_equalizer()
7373

7474
async def _update_media(self):
75-
self.__media_artist = self.device.status._attributes["audioTrackData"].value[
76-
"artist"
77-
]
78-
self.__media_title = self.device.status._attributes["audioTrackData"].value[
79-
"title"
80-
]
81-
if self.__media_title != self.__old_media_title:
82-
self.__old_media_title = self.__media_title
83-
self.__media_cover_url_update_time = datetime.datetime.now()
84-
self.__media_cover_url = await self.get_song_title_artwork(
85-
self.__media_artist, self.__media_title
86-
)
75+
if "audioTrackData" in self.device.status._attributes:
76+
self.__media_artist = self.device.status._attributes["audioTrackData"].value[
77+
"artist"
78+
]
79+
self.__media_title = self.device.status._attributes["audioTrackData"].value[
80+
"title"
81+
]
82+
if self.__media_title != self.__old_media_title:
83+
self.__old_media_title = self.__media_title
84+
self.__media_cover_url_update_time = datetime.datetime.now()
85+
self.__media_cover_url = await self.get_song_title_artwork(
86+
self.__media_artist, self.__media_title
87+
)
8788

8889
async def _update_soundmode(self):
8990
await self.update_execution_data(["/sec/networkaudio/soundmode"])
@@ -372,11 +373,15 @@ def media_coverart_url(self):
372373

373374
@property
374375
def media_duration(self) -> int | None:
375-
return self.device.status.attributes.get("totalTime").value
376+
attr = self.device.status.attributes.get("totalTime", None)
377+
if attr:
378+
return attr.value
376379

377380
@property
378381
def media_position(self) -> int | None:
379-
return self.device.status.attributes.get("elapsedTime").value
382+
attr = self.device.status.attributes.get("elapsedTime", None)
383+
if attr:
384+
return attr.value
380385

381386
async def media_play(self):
382387
await self.device.play(True)

custom_components/samsung_soundbar/translations/de.json

+18-2
Original file line numberDiff line numberDiff line change
@@ -107,11 +107,27 @@
107107
},
108108
"set_speaker_level":{
109109
"name": "Lautsprecher level verändern",
110-
"description": "Verändere die Lautstärke der einzelnen Lautsprecher"
110+
"description": "Verändere die Lautstärke der einzelnen Lautsprecher",
111+
"fields":{
112+
"speaker_identifier": {
113+
"name": "Lautsprecher",
114+
"description": "Auszuwählender Lautsprecher"
115+
},
116+
"level": {
117+
"name": "Lautstärke Level",
118+
"description": "Lautstärke Level zwischen -6 und 6."
119+
}
120+
}
111121
},
112122
"set_rear_speaker_mode":{
113123
"name": "Modus der hinteren Lautsprecher setzen",
114-
"description": "Nutze deine Rücklautsprecher, als 'Vorder-' oder 'Rücklautsprecher'."
124+
"description": "Nutze deine Rücklautsprecher, als 'Vorder-' oder 'Rücklautsprecher'.",
125+
"fields":{
126+
"speaker_mode": {
127+
"name": "Lautsprecher Modus",
128+
"description": "Nutze den Lautsprecher als Front oder Rear Speaker."
129+
}
130+
}
115131
},
116132
"set_active_voice_amplifier":{
117133
"name": "Stimmenverstärker setzen",

custom_components/samsung_soundbar/translations/en.json

+102-12
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
{
2-
"config":{
3-
"step":{
4-
"user":{
2+
"config": {
3+
"step": {
4+
"user": {
55
"data": {
66
"api_key": "SmartThings API Token",
77
"device_id": "Device ID",
8-
"device_name":"Device Name",
8+
"device_name": "Device Name",
99
"device_volume": "Max Volume (int)"
10-
},
11-
"description": "Please enter your credentials.",
12-
"title": "Authentication"
10+
},
11+
"description": "Please enter your credentials.",
12+
"title": "Authentication"
1313
},
14-
"device":{
15-
"data" : {
14+
"device": {
15+
"data": {
1616
"settings_advanced_audio": "Enable 'Advanced Audio switches' capabilities (NightMode, BassMode, VoiceEnhancer)",
1717
"settings_eq": "Enable 'EQ selector' capabilities",
1818
"settings_soundmode": "Enable 'Soundmode selector' capabilities",
@@ -21,8 +21,8 @@
2121
"description": "Some soundbars have a different featureset than others. Please the features supported by your soundbar (visible in the SmartThings App).",
2222
"title": "Device Settings"
2323
},
24-
"reconfigure_confirm":{
25-
"data" : {
24+
"reconfigure_confirm": {
25+
"data": {
2626
"settings_advanced_audio": "Enable 'Advanced Audio switches' capabilities (NightMode, BassMode, VoiceEnhancer)",
2727
"settings_eq": "Enable 'EQ selector' capabilities",
2828
"settings_soundmode": "Enable 'Soundmode selector' capabilities",
@@ -59,5 +59,95 @@
5959
"Front": "Front"
6060
}
6161
}
62-
}
62+
},
63+
"services": {
64+
"select_soundmode": {
65+
"name": "Select Sound Mode",
66+
"description": "Choose between 'Standard', 'Surround', 'Game', and 'Adaptive Sound'."
67+
},
68+
"set_woofer_level": {
69+
"name": "Set Subwoofer Level",
70+
"description": "Change the volume of your subwoofer.",
71+
"fields": {
72+
"level": {
73+
"name": "Volume Level",
74+
"description": "Subwoofer level, from -12 to +6"
75+
}
76+
}
77+
},
78+
"set_night_mode": {
79+
"name": "Set Night Mode",
80+
"description": "Turn 'Night Mode' on/off.",
81+
"fields": {
82+
"enabled": {
83+
"name": "On/Off",
84+
"description": "See name."
85+
}
86+
}
87+
},
88+
"set_bass_enhancer": {
89+
"name": "Set Bass Mode",
90+
"description": "Turn 'Bass Mode' on/off.",
91+
"fields": {
92+
"enabled": {
93+
"name": "On/Off",
94+
"description": "See name."
95+
}
96+
}
97+
},
98+
"set_voice_enhancer": {
99+
"name": "Set Voice Enhancer",
100+
"description": "Turn 'Voice Enhancer' on/off.",
101+
"fields": {
102+
"enabled": {
103+
"name": "On/Off",
104+
"description": "See name."
105+
}
106+
}
107+
},
108+
"set_speaker_level": {
109+
"name": "Change Speaker Level",
110+
"description": "Change the volume of individual speakers.",
111+
"fields":{
112+
"speaker_identifier": {
113+
"name": "Speaker Identifier",
114+
"description": "Identifier of the speaker."
115+
},
116+
"level": {
117+
"name": "Level",
118+
"description": "Level of the Speaker from -6 to 6."
119+
}
120+
}
121+
},
122+
"set_rear_speaker_mode": {
123+
"name": "Set Rear Speaker Mode",
124+
"description": "Use your rear speakers as 'Front' or 'Rear' speakers.",
125+
"fields":{
126+
"speaker_mode": {
127+
"name": "Speaker mode",
128+
"description": "Weather the speaker are used as rear / front speakers."
129+
}
130+
}
131+
},
132+
"set_active_voice_amplifier": {
133+
"name": "Set Voice Amplifier",
134+
"description": "Turn 'Voice Amplifier' on/off.",
135+
"fields": {
136+
"enabled": {
137+
"name": "On/Off",
138+
"description": "See name."
139+
}
140+
}
141+
},
142+
"set_space_fit_sound": {
143+
"name": "Set SpaceFitSound",
144+
"description": "Turn 'SpaceFitSound' on/off.",
145+
"fields": {
146+
"enabled": {
147+
"name": "On/Off",
148+
"description": "See name."
149+
}
150+
}
151+
}
152+
}
63153
}

0 commit comments

Comments
 (0)