Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[miele] Add laundry weight channel for washing machine #16514

Merged
merged 1 commit into from
Mar 12, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions bundles/org.openhab.binding.miele/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -370,6 +370,7 @@ See oven.
| spinningspeed | String | Read | Spinning speed in the program running on the appliance |
| energyConsumption | Number:Energy | Read | Energy consumption by the currently running program on the appliance |
| waterConsumption | Number:Volume | Read | Water consumption by the currently running program on the appliance |
| laundryWeight | Number:Mass | Read | Weight of the laundry inside the appliance |

##### Programs

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ public class MieleBindingConstants {
public static final String FINISH_CHANNEL_ID = "finish";
public static final String ENERGY_CONSUMPTION_CHANNEL_ID = "energyConsumption";
public static final String WATER_CONSUMPTION_CHANNEL_ID = "waterConsumption";
public static final String LAUNDRY_WEIGHT_CHANNEL_ID = "laundryWeight";

// List of all Thing Type UIDs
public static final ThingTypeUID THING_TYPE_XGW3000 = new ThingTypeUID(BINDING_ID, "xgw3000");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,8 @@ public State getState(String s, @Nullable DeviceMetaData dmd, MieleTranslationPr
ENERGY_CONSUMPTION(EXTENDED_DEVICE_STATE_PROPERTY_NAME, ENERGY_CONSUMPTION_CHANNEL_ID, QuantityType.class, false,
true),
WATER_CONSUMPTION(EXTENDED_DEVICE_STATE_PROPERTY_NAME, WATER_CONSUMPTION_CHANNEL_ID, QuantityType.class, false,
true);
true),
LAUNDRY_WEIGHT(EXTENDED_DEVICE_STATE_PROPERTY_NAME, LAUNDRY_WEIGHT_CHANNEL_ID, QuantityType.class, false, true);

private final Logger logger = LoggerFactory.getLogger(WashingMachineChannelSelector.class);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import org.openhab.core.i18n.TranslationProvider;
import org.openhab.core.library.types.OnOffType;
import org.openhab.core.library.types.QuantityType;
import org.openhab.core.library.unit.SIUnits;
import org.openhab.core.library.unit.Units;
import org.openhab.core.thing.ChannelUID;
import org.openhab.core.thing.Thing;
Expand All @@ -47,6 +48,7 @@
public class WashingMachineHandler extends MieleApplianceHandler<WashingMachineChannelSelector>
implements ExtendedDeviceStateListener {

private static final int LAUNDRY_WEIGHT_BYTE_POSITION = 44;
private static final int ENERGY_CONSUMPTION_BYTE_POSITION = 51;
private static final int WATER_CONSUMPTION_BYTE_POSITION = 53;
private static final int EXTENDED_STATE_MIN_SIZE_BYTES = 54;
Expand Down Expand Up @@ -136,5 +138,11 @@ public void onApplianceExtendedStateChanged(byte[] extendedDeviceState) {
var litres = new QuantityType<>(BigDecimal.valueOf(extendedDeviceState[WATER_CONSUMPTION_BYTE_POSITION] & 0xff),
Units.LITRE);
updateExtendedState(WATER_CONSUMPTION_CHANNEL_ID, litres);

var weight = new QuantityType<>(
BigDecimal.valueOf(256 * (extendedDeviceState[LAUNDRY_WEIGHT_BYTE_POSITION] & 0xff)
+ (extendedDeviceState[LAUNDRY_WEIGHT_BYTE_POSITION + 1] & 0xff)),
SIUnits.GRAM);
updateExtendedState(LAUNDRY_WEIGHT_CHANNEL_ID, weight);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,8 @@ channel-type.miele.heat.label = Remaining Heat
channel-type.miele.heat.description = Remaining heat level of the heating zone/plate
channel-type.miele.info.label = Signal Information
channel-type.miele.info.description = Signals information, check appliance for details
channel-type.miele.laundry-weight.label = Laundry Weight
channel-type.miele.laundry-weight.description = Weight of the laundry inside the appliance
channel-type.miele.phase.label = Phase
channel-type.miele.phase.description = Current phase of the program running on the appliance
channel-type.miele.plates.label = Plates
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -263,4 +263,11 @@
<state readOnly="true" pattern="%.1f l"/>
</channel-type>

<channel-type id="laundry-weight" advanced="true">
<item-type>Number:Mass</item-type>
<label>Laundry Weight</label>
<description>Weight of the laundry inside the appliance</description>
<state readOnly="true" pattern="%.3f %unit%"/>
</channel-type>

</thing:thing-descriptions>
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,11 @@
<channel id="spinningspeed" typeId="spinningspeed"/>
<channel id="energyConsumption" typeId="energy-consumption"/>
<channel id="waterConsumption" typeId="water-consumption"/>
<channel id="laundryWeight" typeId="laundry-weight"/>
</channels>

<properties>
<property name="thingTypeVersion">2</property>
<property name="thingTypeVersion">3</property>
</properties>

<representation-property>uid</representation-property>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,11 @@
<type>miele:failure</type>
</add-channel>
</instruction-set>
<instruction-set targetVersion="3">
<add-channel id="laundryWeight">
<type>miele:laundry-weight</type>
</add-channel>
</instruction-set>
</thing-type>

</update:update-descriptions>