]> git.basschouten.com Git - openhab-addons.git/commitdiff
[yamahamusiccast] Fix DecimalType commands for volumeDB channel (#15124)
authorFlorian Hotze <florianh_dev@icloud.com>
Sun, 25 Jun 2023 10:14:58 +0000 (12:14 +0200)
committerGitHub <noreply@github.com>
Sun, 25 Jun 2023 10:14:58 +0000 (12:14 +0200)
* [yamahamusiccast] Fix volumeDB channel doesn't accept DecimalType and QuantityType commands

Signed-off-by: Florian Hotze <florianh_dev@icloud.com>
bundles/org.openhab.binding.yamahamusiccast/src/main/java/org/openhab/binding/yamahamusiccast/internal/YamahaMusiccastHandler.java

index d0ddb81dabe1d842cf6928d2007a33b071d0abcd..a42eba855b7ffa71e0c737355e69e72c14eb6683 100644 (file)
@@ -228,7 +228,16 @@ public class YamahaMusiccastHandler extends BaseThingHandler {
                     }
                     break;
                 case CHANNEL_VOLUMEDB:
-                    setVolumeDb(((QuantityType<?>) command).floatValue(), zone, this.host);
+                    float volumeDb;
+                    if (command instanceof QuantityType<?> qt) {
+                        volumeDb = qt.toUnit(Units.DECIBEL).floatValue();
+                    } else if (command instanceof DecimalType dt) {
+                        volumeDb = dt.floatValue();
+                    } else {
+                        logger.debug("Command has wrong type, QuantityType or DecimalType required!");
+                        return;
+                    }
+                    setVolumeDb(volumeDb, zone, this.host);
                     localSyncVolume = Boolean.parseBoolean(getThing().getConfiguration().get("syncVolume").toString());
                     if (localSyncVolume == Boolean.TRUE) {
                         tmpString = getDistributionInfo(this.host);
@@ -238,7 +247,7 @@ public class YamahaMusiccastHandler extends BaseThingHandler {
                             if ("server".equals(localRole)) {
                                 for (JsonElement ip : distributioninfo.getClientList()) {
                                     JsonObject clientObject = ip.getAsJsonObject();
-                                    setVolumeDbLinkedDevice(((DecimalType) command).floatValue(), zone,
+                                    setVolumeDbLinkedDevice(volumeDb, zone,
                                             clientObject.get("ip_address").getAsString());
                                 }
                             }