Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
c08601b
[Jenkins] Updated translation
Jan 19, 2026
2c79f03
Add image SYMFONISK_TABLE_LAMP.png for IKEA Symfonisk Table Lamp v2
Caelion Jan 25, 2026
0f14c1e
Merge pull request #67 from Caelion/beta
Mips2648 Jan 26, 2026
8440005
compress img
Mips2648 Jan 26, 2026
3ee54c2
adapt changelog
Mips2648 Jan 26, 2026
6e379e0
Update changelog date for Ikea Table Lamp image addition
Mips2648 Jan 26, 2026
c6b1bd3
[Jenkins] Updated translation
Jan 27, 2026
d7590f3
Add channel command
Mips2648 Apr 10, 2026
d01d49e
Add info command for current radio station in changelog
Mips2648 Apr 10, 2026
39d511e
[Jenkins] Updated translation
Apr 10, 2026
2e249d2
add translations WF
Mips2648 May 17, 2026
183b97e
remove PHP version check from configuration form
Mips2648 May 17, 2026
f90510e
type hint & bugfix on tts command
Mips2648 May 17, 2026
67b251d
changelog
Mips2648 May 17, 2026
1d89fbf
Auto update translation done by jeedom/jeetranslate workflow
Mips2648 May 17, 2026
6a0c731
Merge pull request #68 from jeedom/translations
Mips2648 May 17, 2026
9f82e3d
add new images
Mips2648 Oct 5, 2026
6db6eaa
add dependabot configuration and GitHub Actions workflow for document…
Mips2648 Oct 6, 2026
8a2516e
Update soco requirement from ~=0.30.4 to ~=0.31.4 in /resources
dependabot[bot] Oct 6, 2026
eaaa854
update dependabot
Mips2648 Oct 6, 2026
6f694de
Merge pull request #69 from jeedom/dependabot/pip/resources/beta/soco…
Mips2648 Oct 6, 2026
40e6d48
chore(docs): update translations
Mips2648 Oct 6, 2026
89c684c
Merge pull request #70 from jeedom/docs-translations
Mips2648 Oct 6, 2026
09f7960
add weekly schedule for pip updates in dependabot configuration
Mips2648 Oct 20, 2026
d01cae0
Merge branch 'beta' of https://github.com/jeedom/plugin-sonos into beta
Mips2648 Oct 20, 2026
81aad3b
Update soco requirement from ~=0.31.4 to ~=0.32.0 in /resources
dependabot[bot] Oct 20, 2026
532b8ec
Remove obsolete JavaScript files and documentation for the Sonos plug…
Mips2648 Oct 20, 2026
0543e7f
Merge pull request #71 from jeedom/dependabot/pip/resources/beta/soco…
Mips2648 Oct 20, 2026
1b53ec3
fix(docs): standardize date format in changelog
Mips2648 Oct 20, 2026
b681490
Merge branch 'beta' of https://github.com/jeedom/plugin-sonos into beta
Mips2648 Oct 20, 2026
28f1dee
chore(docs): update translations
Mips2648 Oct 20, 2026
b89cd5f
Merge pull request #72 from jeedom/docs-translations
Mips2648 Oct 20, 2026
2c7f7c1
fix: update changelog and documentation URLs in info.json
Mips2648 Oct 21, 2026
6c1be62
Merge branch 'beta' of https://github.com/jeedom/plugin-sonos into beta
Mips2648 Oct 21, 2026
a48b77c
Update permissions in translations.yml
Mips2648 Oct 21, 2026
44e8a18
reorg changelog for stable
Mips2648 Oct 21, 2026
d4e9421
Merge branch 'beta' of https://github.com/jeedom/plugin-sonos into beta
Mips2648 Oct 21, 2026
658642c
chore(docs): update translations
Mips2648 Oct 21, 2026
56b895e
Merge pull request #74 from jeedom/docs-translations
Mips2648 Oct 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# depandabot to update your package.json or requirements.txt - remove useless sections
# check all configuration options :
# https://docs.github.com/fr/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file
# also works with private repository
# https://docs.github.com/fr/code-security/dependabot/working-with-dependabot/configuring-access-to-private-registries-for-dependabot
version: 2
updates:
- package-ecosystem: "composer"
# Files stored in repository root
directory: "/"
schedule:
interval: "monthly"
target-branch: "beta"

- package-ecosystem: "pip"
directory: "/resources"
target-branch: "beta"
schedule:
interval: "weekly"

# Maintain any github-actions workflow
# https://docs.github.com/en/code-security/dependabot/working-with-dependabot/keeping-your-actions-up-to-date-with-dependabot
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "monthly"
target-branch: "beta"
54 changes: 54 additions & 0 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
name: Docs

on:
push:
branches:
- beta
- master
paths:
- docs/**
workflow_dispatch:

permissions:
contents: write
pull-requests: write

jobs:
changes:
runs-on: ubuntu-latest
outputs:
fr_fr: ${{ steps.filter.outputs.fr_fr }}
translated: ${{ steps.filter.outputs.translated }}
images: ${{ steps.filter.outputs.images }}
manual: ${{ github.event_name == 'workflow_dispatch' }}
steps:
- uses: actions/checkout@v7
- uses: dorny/paths-filter@v4
id: filter
with:
base: ${{ github.ref_name }}
filters: |
fr_fr:
- 'docs/fr_FR/**'
translated:
- 'docs/en_US/**'
- 'docs/es_ES/**'
- 'docs/de_DE/**'
images:
- 'docs/images/**'

translate:
needs: changes
if: needs.changes.outputs.fr_fr == 'true' || needs.changes.outputs.manual == 'true'
runs-on: ubuntu-latest
steps:
- uses: jeedom/jeetranslate-docs@main
with:
deepl_api_key: ${{ secrets.DEEPL_API_KEY }}

publish:
needs: changes
if: needs.changes.outputs.translated == 'true' || needs.changes.outputs.images == 'true' || needs.changes.outputs.manual == 'true'
Comment thread
Mips2648 marked this conversation as resolved.
uses: jeedom/workflows/.github/workflows/docs-publish.yml@main
Comment thread
Mips2648 marked this conversation as resolved.
secrets:
docs_repo_token: ${{ secrets.DOCS_REPO_TOKEN }}
22 changes: 22 additions & 0 deletions .github/workflows/translations.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
name: translate

on:
workflow_dispatch:
push:
branches:
- beta

permissions:
contents: write
pull-requests: write

jobs:
auto-translate:
Comment thread
Copilot marked this conversation as resolved.
runs-on: ubuntu-latest
steps:
- uses: jeedom/jeetranslate@main
with:
deepl_api_key: ${{ secrets.DEEPL_API_KEY }}
include_empty_translation: false
target_languages: "en_US,es_ES,de_DE,it_IT,pt_PT"
use_core_translations: true
2 changes: 1 addition & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,4 @@
"php": "7.4"
}
}
}
}
30 changes: 21 additions & 9 deletions core/class/sonos3.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ protected static function getSocketPort() {
return config::byKey('socketport', __CLASS__, 42042);;
}

public static function sendToDaemon($params) {
public static function sendToDaemon(array $params) {
$deamon_info = self::deamon_info();
if ($deamon_info['state'] != 'ok') {
throw new RuntimeException("Le démon n'est pas démarré");
Expand Down Expand Up @@ -125,7 +125,7 @@ public static function deamon_stop() {
// system::fuserk(config::byKey('socketport', __CLASS__));
}

public static function interact($_query, $_parameters = array()) {
public static function interact(string $_query, array $_parameters = array()) {
if (trim(config::byKey('interact::sentence', __CLASS__)) == '') {
return null;
}
Expand Down Expand Up @@ -239,14 +239,14 @@ public static function createSonos(array $controllers) {
$eqLogic->getCmd('action', 'join')->setDisplay('title_possibility_list', json_encode(array_values($speakers_array)))->save(true);
$eqLogic->getCmd('action', 'unjoin')->setDisplay('title_possibility_list', json_encode(array_values($speakers_array)))->save(true);
}
log::add(__CLASS__, 'info', __('Sonos controllers synchronized: ', __FILE__) . count($controllers));
log::add(__CLASS__, 'info', 'Sonos controllers synchronized: ' . count($controllers), __FILE__);
}

private static function getShuffleState($playModeState) {
private static function getShuffleState(string $playModeState) {
return in_array($playModeState, ['SHUFFLE_NOREPEAT', 'SHUFFLE', 'SHUFFLE_REPEAT_ONE']);
}

private static function getRepeatState($playModeState) {
private static function getRepeatState(string $playModeState) {
return in_array($playModeState, ['SHUFFLE', 'REPEAT_ALL', 'SHUFFLE_REPEAT_ONE', 'REPEAT_ONE']);
}

Expand Down Expand Up @@ -275,7 +275,7 @@ public static function getImageContent(string $imageUrl) {
return $imageContent;
}

public static function updateSpeakers($speakers) {
public static function updateSpeakers(array $speakers) {
foreach ($speakers as $uid => $data) {
/** @var sonos3 */
$eqLogic = self::byLogicalId($uid, __CLASS__);
Expand Down Expand Up @@ -307,6 +307,7 @@ public static function updateSpeakers($speakers) {
$changed = $eqLogic->checkAndUpdateCmd('track_artist', $data['media']['artist']) || $changed;
$changed = $eqLogic->checkAndUpdateCmd('track_title', $data['media']['title']) || $changed;
$changed = $eqLogic->checkAndUpdateCmd('track_image', $data['media']['image_url']) || $changed;
$changed = $eqLogic->checkAndUpdateCmd('channel', $data['media']['channel']) || $changed;
$changed = $eqLogic->checkAndUpdateCmd('group_state', $data['grouped']) || $changed;
$changed = $eqLogic->checkAndUpdateCmd('group_name', $data['group_name']) || $changed;
$changed = $eqLogic->checkAndUpdateCmd('next_alarm', $data['next_alarm']) || $changed;
Expand All @@ -328,7 +329,7 @@ public static function updateSpeakers($speakers) {
}
}

public static function convertState($_state) {
public static function convertState(string $_state): string {
switch ($_state) {
case 'PLAYING':
return __('Lecture', __FILE__);
Expand Down Expand Up @@ -841,6 +842,17 @@ public function createCommands() {
$track_image->save();
}

$channel = $this->getCmd('info', 'channel');
if (!is_object($channel)) {
$channel = new sonos3Cmd();
$channel->setLogicalId('channel');
$channel->setName(__('Station', __FILE__));
$channel->setType('info');
$channel->setSubType('string');
$channel->setEqLogic_id($this->getId());
$channel->save();
}

$play_playlist = $this->getCmd(null, 'play_playlist');
if (!is_object($play_playlist)) {
$play_playlist = new sonos3Cmd();
Expand Down Expand Up @@ -1311,11 +1323,11 @@ public function execute($_options = array()) {
$serverFactory = new ServerFactory();
$auth = new BasicAuth(config::byKey('tts_username', 'sonos3'), null, config::byKey('tts_password', 'sonos3'));
$server = $serverFactory->createServer($host, $auth);
$share_name = sanitizeAccent(trim(config::byKey('tts_share', 'sonos3')), " \n\r\t\v\0/");
$share_name = sanitizeAccent(trim(config::byKey('tts_share', 'sonos3'), " \n\r\t\v\0/"));
$share = $server->getShare($share_name);

// push file to samba
$path_name = sanitizeAccent(trim(config::byKey('tts_path', 'sonos3')), " \n\r\t\v\0/");
$path_name = sanitizeAccent(trim(config::byKey('tts_path', 'sonos3'), " \n\r\t\v\0/"));
$fh = $share->write("{$path_name}/{$file_name}");
fwrite($fh, $file_content);
fclose($fh);
Expand Down
Loading
Loading