From: Jared <39014663+baku104788@users.noreply.github.com> Date: Fri, 16 Apr 2021 19:41:40 +0000 (-0500) Subject: [onkyo] Add audio info channel (IFA Eiscp command) (#10483) X-Git-Url: https://git.basschouten.com/?a=commitdiff_plain;h=4300c642c8f1b2e987e78b8e56e334f6e68b597a;p=openhab-addons.git [onkyo] Add audio info channel (IFA Eiscp command) (#10483) * Add audio info channel Signed-off-by: Jared <39014663+baku104788@users.noreply.github.com> * Audio Info Channel implementation Signed-off-by: Jared <39014663+baku104788@users.noreply.github.com> * remove extra backup file Signed-off-by: Jared <39014663+baku104788@users.noreply.github.com> * Update readme info for audioinfo Signed-off-by: Jared <39014663+baku104788@users.noreply.github.com> --- diff --git a/bundles/org.openhab.binding.onkyo/README.md b/bundles/org.openhab.binding.onkyo/README.md index 18d82a7398..2417065446 100644 --- a/bundles/org.openhab.binding.onkyo/README.md +++ b/bundles/org.openhab.binding.onkyo/README.md @@ -150,6 +150,7 @@ The Onkyo AVR supports the following channels (some channels are model specific) | player#artist | String | Artist name of the current song (available if playing from Network or USB) | | player#currentPlayingTime | String | Current playing time of the current song (available if playing from Network or USB) | | player#listenmode | Number | Current listening mode e.g. Stereo, 5.1ch Surround, ... | +| player#audioinfo | String | Current audio info (Refresh timer must be configured for updates) | | player#playuri | String | Plays the URI provided to the channel | | player#albumArt | Image | Image of the current album art of the current song | | player#albumArtUrl | String | URL to the current album art of the current song | diff --git a/bundles/org.openhab.binding.onkyo/src/main/java/org/openhab/binding/onkyo/internal/OnkyoBindingConstants.java b/bundles/org.openhab.binding.onkyo/src/main/java/org/openhab/binding/onkyo/internal/OnkyoBindingConstants.java index 11ccab65bc..07b64c9391 100644 --- a/bundles/org.openhab.binding.onkyo/src/main/java/org/openhab/binding/onkyo/internal/OnkyoBindingConstants.java +++ b/bundles/org.openhab.binding.onkyo/src/main/java/org/openhab/binding/onkyo/internal/OnkyoBindingConstants.java @@ -73,6 +73,7 @@ public class OnkyoBindingConstants { public static final String CHANNEL_ALBUM_ART = "player#albumArt"; public static final String CHANNEL_ALBUM_ART_URL = "player#albumArtUrl"; public static final String CHANNEL_LISTENMODE = "player#listenmode"; + public static final String CHANNEL_AUDIOINFO = "player#audioinfo"; public static final String CHANNEL_PLAY_URI = "player#playuri"; public static final String CHANNEL_NET_MENU_TITLE = "netmenu#title"; diff --git a/bundles/org.openhab.binding.onkyo/src/main/java/org/openhab/binding/onkyo/internal/eiscp/EiscpCommand.java b/bundles/org.openhab.binding.onkyo/src/main/java/org/openhab/binding/onkyo/internal/eiscp/EiscpCommand.java index 018c0b66be..41b1a8ab9b 100644 --- a/bundles/org.openhab.binding.onkyo/src/main/java/org/openhab/binding/onkyo/internal/eiscp/EiscpCommand.java +++ b/bundles/org.openhab.binding.onkyo/src/main/java/org/openhab/binding/onkyo/internal/eiscp/EiscpCommand.java @@ -38,6 +38,9 @@ public enum EiscpCommand { VOLUME_SET("MVL", "%02X"), VOLUME("MVL", ""), + AUDIOINFO("IFA", ""), + AUDIOINFO_QUERY("IFA", "QSTN"), + SOURCE_UP("SLI", "UP"), SOURCE_DOWN("SLI", "DOWN"), SOURCE_QUERY("SLI", "QSTN"), diff --git a/bundles/org.openhab.binding.onkyo/src/main/java/org/openhab/binding/onkyo/internal/handler/OnkyoHandler.java b/bundles/org.openhab.binding.onkyo/src/main/java/org/openhab/binding/onkyo/internal/handler/OnkyoHandler.java index ab9f984b13..67fd63b00b 100644 --- a/bundles/org.openhab.binding.onkyo/src/main/java/org/openhab/binding/onkyo/internal/handler/OnkyoHandler.java +++ b/bundles/org.openhab.binding.onkyo/src/main/java/org/openhab/binding/onkyo/internal/handler/OnkyoHandler.java @@ -122,6 +122,7 @@ public class OnkyoHandler extends UpnpAudioSinkHandler implements OnkyoEventList updateStatus(ThingStatus.ONLINE); sendCommand(EiscpCommand.INFO_QUERY); + sendCommand(EiscpCommand.AUDIOINFO_QUERY); } }); @@ -324,7 +325,11 @@ public class OnkyoHandler extends UpnpAudioSinkHandler implements OnkyoEventList sendCommand(EiscpCommand.NETUSB_TITLE_QUERY); } break; - + case CHANNEL_AUDIOINFO: + if (command.equals(RefreshType.REFRESH)) { + sendCommand(EiscpCommand.AUDIOINFO_QUERY); + } + break; /* * MISC */ @@ -477,7 +482,10 @@ public class OnkyoHandler extends UpnpAudioSinkHandler implements OnkyoEventList /* * MISC */ - + case AUDIOINFO: + updateState(CHANNEL_AUDIOINFO, convertDeviceValueToOpenHabState(data.getValue(), StringType.class)); + logger.debug("audioinfo message: '{}'", data.getValue()); + break; case INFO: processInfo(data.getValue()); logger.debug("Info message: '{}'", data.getValue()); @@ -797,6 +805,7 @@ public class OnkyoHandler extends UpnpAudioSinkHandler implements OnkyoEventList sendCommand(EiscpCommand.NETUSB_TITLE_QUERY); sendCommand(EiscpCommand.LISTEN_MODE_QUERY); sendCommand(EiscpCommand.INFO_QUERY); + sendCommand(EiscpCommand.AUDIOINFO_QUERY); if (isChannelAvailable(CHANNEL_POWERZONE2)) { sendCommand(EiscpCommand.ZONE2_POWER_QUERY); diff --git a/bundles/org.openhab.binding.onkyo/src/main/resources/OH-INF/thing/channel-groups.xml b/bundles/org.openhab.binding.onkyo/src/main/resources/OH-INF/thing/channel-groups.xml index 03bb270fcd..1c0df2383e 100644 --- a/bundles/org.openhab.binding.onkyo/src/main/resources/OH-INF/thing/channel-groups.xml +++ b/bundles/org.openhab.binding.onkyo/src/main/resources/OH-INF/thing/channel-groups.xml @@ -45,6 +45,7 @@ + diff --git a/bundles/org.openhab.binding.onkyo/src/main/resources/OH-INF/thing/channels.xml b/bundles/org.openhab.binding.onkyo/src/main/resources/OH-INF/thing/channels.xml index 49a3f8e457..505cf467f2 100644 --- a/bundles/org.openhab.binding.onkyo/src/main/resources/OH-INF/thing/channels.xml +++ b/bundles/org.openhab.binding.onkyo/src/main/resources/OH-INF/thing/channels.xml @@ -107,6 +107,11 @@ Plays a given URI + + String + + Detailed audio info + String