Compare commits

..

6 Commits

Author SHA1 Message Date
orkun c113688986 Update custom_components/samsung_soundbar/manifest.json 2025-04-10 19:37:48 +03:00
orkun 8cd2aa3d51 Update custom_components/samsung_soundbar/manifest.json 2025-04-10 19:36:41 +03:00
Samuel Spagl bd313ea27a
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
2024-10-14 21:46:14 +02:00
Samuel Spagl 0d2424b578
Feature: Add more fine grained configuration steps (#28)
> ⚠️ Please read the following carefully:
> This release is a bit special. As "something" on Samsung's side changed,
> it is currently not possible to retrieve the status of "custom capabilities", eg.
> woofer, soundmode, eq, and others. Therefore I decided to give the option to
> disable the entities of these features as the value of these entities is not trustworthy.
> Instead I implemented all of these and more (thanks to @whitebearded) as service calls.
> Have fun using them!

### Added

- Configuration flow options for enable / disable
  - "advanced audio" features (NightMode, Bassmode, VoiceEnhancer)
  - "woofer" feature
  - "soundmode" feature
  - "eq" feature
- added `media_player` support for next and previous track
- Service calls for:
  - "advanced audio" features (NightMode, Bassmode, VoiceEnhancer)
  - "woofer" feature
  - "soundmode" feature
  - "speaker_level"
  - "rear_speaker_mode"
  - "space_fit_sound"
  - "active_voice_amplifier"

### Changed

- Fixed state, also displaying "playing" and "paused" values

---------

Co-authored-by: Samuel Spagl <samuel.spagl@kobil.com>
2024-06-09 17:13:38 +02:00
Samuel Spagl 9bc8be7861
Add MIT LICENSE 2024-04-08 21:53:29 +02:00
Samuel Spagl 14e30ba970
Update README.md
Add note about current API issues
2024-04-05 16:58:44 +02:00
7 changed files with 263 additions and 32 deletions

View File

@ -1,6 +1,24 @@
# Changelog
## [0.4.0] Add more fine grained configuration flow
## [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 💪
> ⚠️ Please read the following carefully:
> This release is a bit special. As "something" on Samsung's side changed,
> it is currently not possible to retrieve the status of "custom capabilities", eg.
> woofer, soundmode, eq, and others. Therefore I decided to give the option to
> disable the entities of these features as the value of these entities is not trustworthy.
> Instead I implemented all of these and more (thanks to @whitebearded) as service calls.
> Have fun using them!
### Added

21
LICENSE Normal file
View File

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2024 Samuel Spagl
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@ -2,6 +2,9 @@
Welcome to YASSI, the Home Assistant integration designed to bring comprehensive control over your Samsung Soundbar into your smart home ecosystem.
> [!NOTE]
> Please use service calls for setting the attribute of a custom capability instead of the entity. (See #43 for more information)
**Table of Contents:**
<!-- TOC -->
* [Why YASSI](#why-yassi)
@ -81,4 +84,4 @@ Contributions are what make the open-source community such an amazing place to l
## General Thanks
- Like already mentioned, thanks to @PiotrMachowski / @thierryBourbon for the general idea on how to do things.
- Like already mentioned, thanks to @PiotrMachowski / @thierryBourbon for the general idea on how to do things.

View File

@ -72,18 +72,19 @@ class SoundbarDevice:
await self._update_equalizer()
async def _update_media(self):
self.__media_artist = self.device.status._attributes["audioTrackData"].value[
"artist"
]
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
self.__media_cover_url_update_time = datetime.datetime.now()
self.__media_cover_url = await self.get_song_title_artwork(
self.__media_artist, self.__media_title
)
if "audioTrackData" in self.device.status._attributes:
self.__media_artist = self.device.status._attributes["audioTrackData"].value[
"artist"
]
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
self.__media_cover_url_update_time = datetime.datetime.now()
self.__media_cover_url = await self.get_song_title_artwork(
self.__media_artist, self.__media_title
)
async def _update_soundmode(self):
await self.update_execution_data(["/sec/networkaudio/soundmode"])
@ -372,11 +373,15 @@ class SoundbarDevice:
@property
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
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):
await self.device.play(True)

View File

@ -1,12 +1,16 @@
{
"domain": "samsung_soundbar",
"name": "Samsung Soundbar",
"codeowners": ["@samuelspagl"],
"codeowners": [
"@samuelspagl"
],
"config_flow": true,
"documentation": "https://www.example.com",
"integration_type": "hub",
"iot_class": "cloud_polling",
"issue_tracker": "https://github.com/samuelspagl/ha_samsung_soundbar/issues",
"requirements": ["pysmartthings"],
"version": "0.4.0"
}
"requirements": [
"pysmartthings==0.7.8"
],
"version": "0.4.1"
}

View File

@ -59,5 +59,95 @@
"Front": "Front"
}
}
},
"services":{
"select_soundmode":{
"name": "SoundMode auswählen",
"description": "Wähle hier zwischen, 'Standard', 'Surround', 'Game' und 'Adaptive Sound'."
},
"set_woofer_level":{
"name": "Subwoofer Level setzen",
"description": "Verändere die Lautstärke deines Subwoofers.",
"fields":{
"level":{
"name": "Volume Level",
"description": "Subwoofer Level, von -12 bis +6"
}
}
},
"set_night_mode":{
"name": "Nachtmodus setzen",
"description": "Schalte den 'Nachtmodus' an / aus.",
"fields":{
"enabled":{
"name": "An / ausschalten",
"description": "Siehe Name."
}
}
},
"set_bass_enhancer":{
"name": "Bassmodus setzen",
"description": "Schalte den 'Bassmodus' an / aus.",
"fields":{
"enabled":{
"name": "An / ausschalten",
"description": "Siehe Name."
}
}
},
"set_voice_enhancer":{
"name": "Stimmenverbesserer setzen",
"description": "Schalte den 'Stimmenverbesserer' an / aus.",
"fields":{
"enabled":{
"name": "An / ausschalten",
"description": "Siehe Name."
}
}
},
"set_speaker_level":{
"name": "Lautsprecher level verändern",
"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":{
"name": "Modus der hinteren Lautsprecher setzen",
"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":{
"name": "Stimmenverstärker setzen",
"description": "Schalte den 'Stimmenverstärker' an / aus.",
"fields":{
"enabled":{
"name": "An / ausschalten",
"description": "Siehe Name."
}
}
},
"set_space_fit_sound":{
"name": "SpaceFitSound setzen",
"description": "Schalte den 'SpaceFitSound' an / aus.",
"fields":{
"enabled":{
"name": "An / ausschalten",
"description": "Siehe Name."
}
}
}
}
}

View File

@ -1,18 +1,18 @@
{
"config":{
"step":{
"user":{
"config": {
"step": {
"user": {
"data": {
"api_key": "SmartThings API Token",
"device_id": "Device ID",
"device_name":"Device Name",
"device_name": "Device Name",
"device_volume": "Max Volume (int)"
},
"description": "Please enter your credentials.",
"title": "Authentication"
},
"description": "Please enter your credentials.",
"title": "Authentication"
},
"device":{
"data" : {
"device": {
"data": {
"settings_advanced_audio": "Enable 'Advanced Audio switches' capabilities (NightMode, BassMode, VoiceEnhancer)",
"settings_eq": "Enable 'EQ 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).",
"title": "Device Settings"
},
"reconfigure_confirm":{
"data" : {
"reconfigure_confirm": {
"data": {
"settings_advanced_audio": "Enable 'Advanced Audio switches' capabilities (NightMode, BassMode, VoiceEnhancer)",
"settings_eq": "Enable 'EQ selector' capabilities",
"settings_soundmode": "Enable 'Soundmode selector' capabilities",
@ -59,5 +59,95 @@
"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."
}
}
}
}
}