]> git.basschouten.com Git - openhab-addons.git/commitdiff
[squeezebox] Add new channels for additional tags (#14201)
authorMark Hilbush <mark@hilbush.com>
Wed, 11 Jan 2023 12:56:40 +0000 (07:56 -0500)
committerGitHub <noreply@github.com>
Wed, 11 Jan 2023 12:56:40 +0000 (13:56 +0100)
* New channels for additional tags

Signed-off-by: Mark Hilbush <mark@hilbush.com>
bundles/org.openhab.binding.squeezebox/README.md
bundles/org.openhab.binding.squeezebox/src/main/java/org/openhab/binding/squeezebox/internal/SqueezeBoxBindingConstants.java
bundles/org.openhab.binding.squeezebox/src/main/java/org/openhab/binding/squeezebox/internal/discovery/SqueezeBoxPlayerDiscoveryParticipant.java
bundles/org.openhab.binding.squeezebox/src/main/java/org/openhab/binding/squeezebox/internal/handler/SqueezeBoxNotificationListener.java
bundles/org.openhab.binding.squeezebox/src/main/java/org/openhab/binding/squeezebox/internal/handler/SqueezeBoxPlayerEventListener.java
bundles/org.openhab.binding.squeezebox/src/main/java/org/openhab/binding/squeezebox/internal/handler/SqueezeBoxPlayerHandler.java
bundles/org.openhab.binding.squeezebox/src/main/java/org/openhab/binding/squeezebox/internal/handler/SqueezeBoxServerHandler.java
bundles/org.openhab.binding.squeezebox/src/main/resources/OH-INF/thing/thing-types.xml

index 6f147252b27c96fdab6d6eb69b4248f04d5a8442..0d374bd4eefe24af31d9d77cf2915653a5a08f40 100644 (file)
@@ -115,6 +115,11 @@ All devices support some of the following channels:
 | artist                 | String    | Artist name of the current song                                                              |
 | year                   | String    | Release year of the current song                                                             |
 | genre                  | String    | Genre name of the current song                                                               |
+| albumArtist            | String    | Main artist of the entire album                                                              |
+| trackArtist            | String    | Main artist of the track                                                                     |
+| band                   | String    | Band/orchestra that performed the work                                                       |
+| composer               | String    | Original composer of the work                                                                |
+| conductor              | String    | Person who conducted the performance                                                         |
 | coverartdata           | Image     | Image data of cover art of the current song                                                  |
 | ircode                 | String    | Received IR code                                                                             |
 | numberPlaylistTracks   | Number    | Number of playlist tracks                                                                    |
index da8b5144731b9bf52c211c854a33d92f1472bfee..f1b5e6bddb8405e438095a2b765a55042a2073be 100644 (file)
@@ -59,6 +59,11 @@ public class SqueezeBoxBindingConstants {
     public static final String CHANNEL_ARTIST = "artist";
     public static final String CHANNEL_YEAR = "year";
     public static final String CHANNEL_GENRE = "genre";
+    public static final String CHANNEL_ALBUM_ARTIST = "albumArtist";
+    public static final String CHANNEL_TRACK_ARTIST = "trackArtist";
+    public static final String CHANNEL_BAND = "band";
+    public static final String CHANNEL_COMPOSER = "composer";
+    public static final String CHANNEL_CONDUCTOR = "conductor";
     public static final String CHANNEL_COVERART_DATA = "coverartdata";
     public static final String CHANNEL_IRCODE = "ircode";
     public static final String CHANNEL_IP = "ip";
index 1e095cad4078957c62c4c1a04428eeaf551e741f..c831fe25631f991af8c35767ee332fe58f7df611 100644 (file)
@@ -191,6 +191,26 @@ public class SqueezeBoxPlayerDiscoveryParticipant extends AbstractDiscoveryServi
     public void genreChangeEvent(String mac, String genre) {
     }
 
+    @Override
+    public void albumArtistChangeEvent(String mac, String albumArtist) {
+    }
+
+    @Override
+    public void trackArtistChangeEvent(String mac, String trackArtist) {
+    }
+
+    @Override
+    public void bandChangeEvent(String mac, String band) {
+    }
+
+    @Override
+    public void composerChangeEvent(String mac, String composer) {
+    }
+
+    @Override
+    public void conductorChangeEvent(String mac, String conductor) {
+    }
+
     @Override
     public void remoteTitleChangeEvent(String mac, String title) {
     }
index da9d356bf0affd2eb8f5185ad1631ceff26f723b..d75bca01e0109837bc69604a54334e3b6ce0037d 100644 (file)
@@ -201,6 +201,26 @@ public final class SqueezeBoxNotificationListener implements SqueezeBoxPlayerEve
     public void genreChangeEvent(String mac, String genre) {
     }
 
+    @Override
+    public void albumArtistChangeEvent(String mac, String albumArtist) {
+    }
+
+    @Override
+    public void trackArtistChangeEvent(String mac, String trackArtist) {
+    }
+
+    @Override
+    public void bandChangeEvent(String mac, String band) {
+    }
+
+    @Override
+    public void composerChangeEvent(String mac, String composer) {
+    }
+
+    @Override
+    public void conductorChangeEvent(String mac, String conductor) {
+    }
+
     @Override
     public void remoteTitleChangeEvent(String mac, String title) {
     }
index 50735f6b920a4fad33b7ef1acaf0252357a9e5e3..4e9044331fcf678cc49d7a728930e9ff2c7a0906 100644 (file)
@@ -73,6 +73,16 @@ public interface SqueezeBoxPlayerEventListener {
 
     void genreChangeEvent(String mac, String genre);
 
+    void albumArtistChangeEvent(String mac, String albumArtist);
+
+    void trackArtistChangeEvent(String mac, String trackArtist);
+
+    void bandChangeEvent(String mac, String band);
+
+    void composerChangeEvent(String mac, String composer);
+
+    void conductorChangeEvent(String mac, String conductor);
+
     void remoteTitleChangeEvent(String mac, String title);
 
     void irCodeChangeEvent(String mac, String ircode);
index 9e5e2511554036828af7f26db063d6e1fbc7751f..217544e3a7927669688c5602d692bc545ae02316 100644 (file)
@@ -436,6 +436,31 @@ public class SqueezeBoxPlayerHandler extends BaseThingHandler implements Squeeze
         updateChannel(mac, CHANNEL_ARTIST, new StringType(artist));
     }
 
+    @Override
+    public void albumArtistChangeEvent(String mac, String albumArtist) {
+        updateChannel(mac, CHANNEL_ALBUM_ARTIST, new StringType(albumArtist));
+    }
+
+    @Override
+    public void trackArtistChangeEvent(String mac, String trackArtist) {
+        updateChannel(mac, CHANNEL_TRACK_ARTIST, new StringType(trackArtist));
+    }
+
+    @Override
+    public void bandChangeEvent(String mac, String band) {
+        updateChannel(mac, CHANNEL_BAND, new StringType(band));
+    }
+
+    @Override
+    public void composerChangeEvent(String mac, String composer) {
+        updateChannel(mac, CHANNEL_COMPOSER, new StringType(composer));
+    }
+
+    @Override
+    public void conductorChangeEvent(String mac, String conductor) {
+        updateChannel(mac, CHANNEL_CONDUCTOR, new StringType(conductor));
+    }
+
     @Override
     public void coverArtChangeEvent(String mac, String coverArtUrl) {
         updateChannel(mac, CHANNEL_COVERART_DATA, createImage(downloadImage(mac, coverArtUrl)));
index ae2aa2896b07c6df36712bfe158d68ba24ccf290..3fc0ac8959771fd7fb86a706453772ebcc580b39 100644 (file)
@@ -576,7 +576,7 @@ public class SqueezeBoxServerHandler extends BaseBridgeHandler {
                     players.put(macAddress, player);
                     updatePlayer(listener -> listener.playerAdded(player));
                     // tell the server we want to subscribe to player updates
-                    sendCommand(player.macAddress + " status - 1 subscribe:10 tags:yagJlNKjc");
+                    sendCommand(player.macAddress + " status - 1 subscribe:10 tags:yagJlNKjcA");
                 }
             }
             for (final SqueezeBoxPlayer player : players.values()) {
@@ -674,7 +674,8 @@ public class SqueezeBoxServerHandler extends BaseBridgeHandler {
         }
 
         private void handleStatusMessage(final String mac, String[] messageParts) {
-            String remoteTitle = "", artist = "", album = "", genre = "", year = "";
+            String remoteTitle = "", artist = "", album = "", genre = "", year = "", albumArtist = "", trackArtist = "",
+                    band = "", composer = "", conductor = "";
             boolean coverart = false;
             String coverid = null;
             String artworkUrl = null;
@@ -745,6 +746,26 @@ public class SqueezeBoxServerHandler extends BaseBridgeHandler {
                     else if ("genre".equals(entry.key)) {
                         genre = entry.value;
                     }
+                    // Parameter Album Artist
+                    else if ("albumartist".equals(entry.key)) {
+                        albumArtist = entry.value;
+                    }
+                    // Parameter Track Artist
+                    else if ("trackartist".equals(entry.key)) {
+                        trackArtist = entry.value;
+                    }
+                    // Parameter Band
+                    else if ("band".equals(entry.key)) {
+                        band = entry.value;
+                    }
+                    // Parameter Composer
+                    else if ("composer".equals(entry.key)) {
+                        composer = entry.value;
+                    }
+                    // Parameter Conductor
+                    else if ("conductor".equals(entry.key)) {
+                        conductor = entry.value;
+                    }
                     // Parameter Year
                     else if ("year".equals(entry.key)) {
                         year = entry.value;
@@ -776,6 +797,11 @@ public class SqueezeBoxServerHandler extends BaseBridgeHandler {
             final String finalAlbum = album;
             final String finalGenre = genre;
             final String finalYear = year;
+            final String finalAlbumArtist = albumArtist;
+            final String finalTrackArtist = trackArtist;
+            final String finalBand = band;
+            final String finalComposer = composer;
+            final String finalConductor = conductor;
 
             updatePlayer(listener -> {
                 listener.coverArtChangeEvent(mac, finalUrl);
@@ -784,6 +810,11 @@ public class SqueezeBoxServerHandler extends BaseBridgeHandler {
                 listener.albumChangeEvent(mac, finalAlbum);
                 listener.genreChangeEvent(mac, finalGenre);
                 listener.yearChangeEvent(mac, finalYear);
+                listener.albumArtistChangeEvent(mac, finalAlbumArtist);
+                listener.trackArtistChangeEvent(mac, finalTrackArtist);
+                listener.bandChangeEvent(mac, finalBand);
+                listener.composerChangeEvent(mac, finalComposer);
+                listener.conductorChangeEvent(mac, finalConductor);
             });
         }
 
index ea22fe691f3829a0735bbd33f64af05f980bed41..b381f5138d6d4fb7d856d23a5ad9977d44a7916e 100644 (file)
                        <channel id="artist" typeId="artist"/>
                        <channel id="year" typeId="year"/>
                        <channel id="genre" typeId="genre"/>
+                       <channel id="albumArtist" typeId="albumArtist"/>
+                       <channel id="trackArtist" typeId="trackArtist"/>
+                       <channel id="band" typeId="band"/>
+                       <channel id="composer" typeId="composer"/>
+                       <channel id="conductor" typeId="conductor"/>
                        <channel id="coverartdata" typeId="coverartdata"/>
                        <channel id="ircode" typeId="ircode"/>
                        <channel id="numberPlaylistTracks" typeId="numberPlaylistTracks"/>
                <description>Genre name of the current song</description>
                <state readOnly="true" pattern="%s"></state>
        </channel-type>
+       <channel-type id="albumArtist" advanced="true">
+               <item-type>String</item-type>
+               <label>Album Artist</label>
+               <description>Main artist for the album</description>
+               <state readOnly="true" pattern="%s"></state>
+       </channel-type>
+       <channel-type id="trackArtist" advanced="true">
+               <item-type>String</item-type>
+               <label>Track Artist</label>
+               <description>Main artist for the track</description>
+               <state readOnly="true" pattern="%s"></state>
+       </channel-type>
+       <channel-type id="band" advanced="true">
+               <item-type>String</item-type>
+               <label>Band/Orchestra</label>
+               <description>Band/orchestra performing the work</description>
+               <state readOnly="true" pattern="%s"></state>
+       </channel-type>
+       <channel-type id="composer" advanced="true">
+               <item-type>String</item-type>
+               <label>Composer</label>
+               <description>Original composer of the work</description>
+               <state readOnly="true" pattern="%s"></state>
+       </channel-type>
+       <channel-type id="conductor" advanced="true">
+               <item-type>String</item-type>
+               <label>Conductor</label>
+               <description>Conductor</description>
+               <state readOnly="true" pattern="%s"></state>
+       </channel-type>
        <channel-type id="coverartdata">
                <item-type>Image</item-type>
                <label>Cover Art</label>