[yamahamusiccast] Fix DecimalType commands for volumeDB channel (#15124)

* [yamahamusiccast] Fix volumeDB channel doesn't accept DecimalType and QuantityType commands

Signed-off-by: Florian Hotze <florianh_dev@icloud.com>
This commit is contained in:
Florian Hotze 2023-06-25 12:14:58 +02:00 committed by GitHub
parent d62c006c47
commit 6dff1ffa63
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View 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());
}
}