From 4300c642c8f1b2e987e78b8e56e334f6e68b597a Mon Sep 17 00:00:00 2001 From: Jared <39014663+baku104788@users.noreply.github.com> Date: Fri, 16 Apr 2021 14:41:40 -0500 Subject: [PATCH] [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> --- bundles/org.openhab.binding.onkyo/README.md | 1 + .../onkyo/internal/OnkyoBindingConstants.java | 1 + .../binding/onkyo/internal/eiscp/EiscpCommand.java | 3 +++ .../onkyo/internal/handler/OnkyoHandler.java | 13 +++++++++++-- .../main/resources/OH-INF/thing/channel-groups.xml | 1 + .../src/main/resources/OH-INF/thing/channels.xml | 5 +++++ 6 files changed, 22 insertions(+), 2 deletions(-) diff --git a/bundles/org.openhab.binding.onkyo/README.md b/bundles/org.openhab.binding.onkyo/README.md index 18d82a739..241706544 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 11ccab65b..07b64c939 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 018c0b66b..41b1a8ab9 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 ab9f984b1..67fd63b00 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 03bb270fc..1c0df2383 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 49a3f8e45..505cf467f 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