2 * Copyright (c) 2010-2023 Contributors to the openHAB project
4 * See the NOTICE file(s) distributed with this work for additional
7 * This program and the accompanying materials are made available under the
8 * terms of the Eclipse Public License 2.0 which is available at
9 * http://www.eclipse.org/legal/epl-2.0
11 * SPDX-License-Identifier: EPL-2.0
13 package org.openhab.binding.digitalstrom.internal.lib.structure.devices;
15 import java.util.List;
18 import org.openhab.binding.digitalstrom.internal.lib.config.Config;
19 import org.openhab.binding.digitalstrom.internal.lib.event.constants.EventNames;
20 import org.openhab.binding.digitalstrom.internal.lib.event.types.EventItem;
21 import org.openhab.binding.digitalstrom.internal.lib.sensorjobexecutor.sensorjob.impl.DeviceConsumptionSensorJob;
22 import org.openhab.binding.digitalstrom.internal.lib.structure.devices.deviceparameters.DeviceSceneSpec;
23 import org.openhab.binding.digitalstrom.internal.lib.structure.devices.deviceparameters.DeviceStateUpdate;
24 import org.openhab.binding.digitalstrom.internal.lib.structure.devices.deviceparameters.constants.ApplicationGroup;
25 import org.openhab.binding.digitalstrom.internal.lib.structure.devices.deviceparameters.constants.DeviceBinarayInputEnum;
26 import org.openhab.binding.digitalstrom.internal.lib.structure.devices.deviceparameters.constants.OutputChannelEnum;
27 import org.openhab.binding.digitalstrom.internal.lib.structure.devices.deviceparameters.constants.OutputModeEnum;
28 import org.openhab.binding.digitalstrom.internal.lib.structure.devices.deviceparameters.constants.SensorEnum;
29 import org.openhab.binding.digitalstrom.internal.lib.structure.devices.deviceparameters.impl.DSID;
30 import org.openhab.binding.digitalstrom.internal.lib.structure.devices.deviceparameters.impl.DeviceBinaryInput;
31 import org.openhab.binding.digitalstrom.internal.lib.structure.devices.deviceparameters.impl.DeviceSensorValue;
32 import org.openhab.binding.digitalstrom.internal.lib.structure.scene.InternalScene;
35 * The {@link Device} represents a digitalSTROM internal stored device.
37 * @author Alexander Betker - Initial contribution
38 * @author Michael Ochel - add methods for ESH, new functionalities and JavaDoc
39 * @author Mathias Siegele - add methods for ESH, new functionalities and JavaDoc
41 public interface Device extends GeneralDeviceInformation {
44 * Returns the id of the dS-Meter in which the device is registered.
51 * Sets the id of the dS-Meter in which the device is registered.
53 * @param meterDSID to set
56 void setMeterDSID(String meterDSID);
59 * Returns the hardware info of this device.
60 * You can see all available hardware info at
61 * http://www.digitalstrom.com/Partner/Support/Techn-Dokumentation/
63 * @return hardware info
68 * Returns the zone id in which this device is in.
75 * Sets the zoneID of this device.
77 * @param zoneID to set
79 void setZoneId(int zoneID);
82 * Returns true, if this device is on, otherwise false.
84 * @return is on (true = on | false = off)
89 * Adds an on command as {@link DeviceStateUpdate}, if the flag is true or off command, if it is false to the list
91 * outstanding commands.
93 * @param flag (true = on | false = off)
95 void setIsOn(boolean flag);
98 * Returns true, if this shade device is open, otherwise false.
100 * @return is on (true = open | false = closed)
105 * Adds an open command as {@link DeviceStateUpdate}, if the flag is true or closed command, if it is false to the
106 * list of outstanding commands.
108 * @param flag (true = open | false = closed)
110 void setIsOpen(boolean flag);
113 * Returns true, if this device is dimmable, otherwise false.
115 * @return is dimmable (true = yes | false = no)
117 boolean isDimmable();
120 * Returns true, if this device is a shade device (grey), otherwise false.
122 * @return is shade (true = yes | false = no)
127 * Returns true, if the device output mode isn't disabled.
129 * @return have output mode (true = yes | false = no)
131 boolean isDeviceWithOutput();
134 * Returns the current functional color group of this device.
135 * For more informations please have a look at {@link FunctionalColorGroupEnum}.
137 * @return current functional color group
139 ApplicationGroup getFunctionalColorGroup();
142 * Sets the functional color group of this device.
144 * @param fuctionalColorGroup to set
146 void setFunctionalColorGroup(ApplicationGroup fuctionalColorGroup);
149 * Returns the current output mode of this device.
150 * Some devices are able to have different output modes e.g. the device GE-KM200 is able to
151 * be in dimm mode, switch mode or disabled.
152 * For more informations please have a look at {@link OutputModeEnum}.
154 * @return the current output mode of this device
156 OutputModeEnum getOutputMode();
158 List<OutputChannelEnum> getOutputChannels();
161 * Adds an increase command as {@link DeviceStateUpdate} to the list of outstanding commands.
166 * Adds a decrease command as {@link DeviceStateUpdate} to the list of outstanding commands.
171 * Returns the current slat position of this device.
173 * @return current slat position
175 int getSlatPosition();
178 * Adds a set slat position command as {@link DeviceStateUpdate} with the given slat position to the list of
179 * outstanding commands.
181 * @param slatPosition to set
183 void setSlatPosition(int slatPosition);
186 * Returns the maximal slat position value of this device.
188 * @return maximal slat position value
190 int getMaxSlatPosition();
193 * Returns the minimal slat position value of this device.
195 * @return minimal slat position value
197 int getMinSlatPosition();
200 * Returns the current output value of this device.
201 * This can be the slat position or the brightness of this device.
203 * @return current output value
205 short getOutputValue();
208 * Adds a set output value command as {@link DeviceStateUpdate} with the given output value to the list of
209 * outstanding commands.
211 * @param outputValue to set
213 void setOutputValue(short outputValue);
216 * Returns the maximal output value of this device.
218 * @return maximal output value
220 short getMaxOutputValue();
223 * Returns a list with group ids which the device is part of.
225 * @return List of group ids
227 List<Short> getGroups();
230 * Adds the given groupID to the group list.
232 * @param groupID to add
234 void addGroup(Short groupID);
237 * Overrides the existing group list with the given new.
239 * @param newGroupList to set
241 void setGroups(List<Short> newGroupList);
244 * Returns the scene output value of this device of the given scene id as {@link Integer} array. The first field is
245 * the output value and the second is the angle value or -1 if no angle value exists.
246 * If the method returns null, this scene id isn't read yet.
248 * @param sceneID of the scene
249 * @return scene output value and scene angle value or null, if it isn't read out yet
251 Integer[] getSceneOutputValue(short sceneID);
254 * Sets the scene output value of this device for the given scene id and scene output value.
256 * @param sceneId to set
257 * @param sceneOutputValue to set
259 void setSceneOutputValue(short sceneId, int sceneOutputValue);
262 * This configuration is very important. The devices can
263 * be configured to not react to some commands (scene calls).
264 * So you can't imply that a device automatically turns on (by default yes,
265 * but if someone configured his own scenes, then maybe not) after a
266 * scene call. This method returns true or false, if the configuration
267 * for this sceneID already has been read
269 * @param sceneId the sceneID
270 * @return true if this device has the configuration for this specific scene
272 boolean containsSceneConfig(short sceneId);
275 * Add the config for this scene. The config has the configuration
276 * for the specific sceneID.
278 * @param sceneId scene call id
279 * @param sceneSpec config for this sceneID
281 void addSceneConfig(short sceneId, DeviceSceneSpec sceneSpec);
284 * Get the config for this scene. The config has the configuration
285 * for the specific sceneID.
287 * @param sceneId scene call id
288 * @return sceneSpec config for this sceneID
290 DeviceSceneSpec getSceneConfig(short sceneId);
293 * Should the device react on this scene call or not .
295 * @param sceneId scene call id
296 * @return true, if this device should react on this sceneID
298 boolean doIgnoreScene(short sceneId);
300 // follow methods added by Michael Ochel and Matthias Siegele
302 * Returns true, if all sensor data are up to date or false if some have to be updated.
304 * @return is up to date (true = yes | false = no)
306 boolean isSensorDataUpToDate();
309 * Sets the priority to refresh the data of the sensors to the given priorities.
310 * They can be never, low, medium or high.
312 * @param powerConsumptionRefreshPriority to set
313 * @param electricMeterRefreshPriority to set
314 * @param energyMeterRefreshPriority to set
316 void setSensorDataRefreshPriority(String powerConsumptionRefreshPriority, String electricMeterRefreshPriority,
317 String energyMeterRefreshPriority);
320 * Returns true, if the device is up to date.
322 * @return digitalSTROM-Device is up to date (true = yes | false = no)
324 boolean isDeviceUpToDate();
327 * Returns the next {@link DeviceStateUpdate} to update the digitalSTROM-Device on the digitalSTROM-Server.
329 * @return DeviceStateUpdate for digitalSTROM-Device
331 DeviceStateUpdate getNextDeviceUpdateState();
334 * Update the internal stored device object.
336 * @param deviceStateUpdate to update
338 void updateInternalDeviceState(DeviceStateUpdate deviceStateUpdate);
341 * Call the given {@link InternalScene} on this {@link Device} and updates it.
343 * @param scene to call
345 void callInternalScene(InternalScene scene);
348 * Undo the given {@link InternalScene} on this {@link Device} and updates it.
350 * @param scene to undo
352 void undoInternalScene(InternalScene scene);
355 * Initial a call scene for the given scene number.
357 * @param sceneNumber to call
359 void callScene(Short sceneNumber);
362 * Returns the current active {@link InternalScene}, otherwise null.
364 * @return active {@link InternalScene} or null
366 InternalScene getAcitiveScene();
369 * Undo the active scene if a scene is active.
374 * Checks the scene configuration for the given scene number and initial a scene configuration reading with the
375 * given priority if no scene configuration exists.
377 * @param sceneNumber to check
378 * @param prio to update
380 void checkSceneConfig(Short sceneNumber, short prio);
383 * Sets the given output mode as new output mode of this {@link Device}.
385 * @param newOutputMode to set
387 void setOutputMode(OutputModeEnum newOutputMode);
390 * Returns a {@link List} of all saved scene-IDs configurations.
392 * @return a {@link List} of all saved scene-IDs
394 List<Short> getSavedScenes();
397 * Initializes an internal device update as call scene for the given scene number.
399 * @param sceneNumber to call
401 void internalCallScene(Short sceneNumber);
404 * Initializes an internal device update as undo scene.
406 void internalUndoScene();
409 * Returns true, if this {@link Device} is a device with a switch output mode.
411 * @return true, if it is a switch otherwise false
416 * Sets the given {@link Config} as new {@link Config}.
418 * @param config to set
420 void setConfig(Config config);
423 * Returns the current angle position of the {@link Device}.
425 * @return current angle position
427 short getAnglePosition();
430 * Adds a set angle value command as {@link DeviceStateUpdate} with the given angle value to the list of
431 * outstanding commands.
433 * @param angle to set
435 void setAnglePosition(int angle);
438 * Sets the scene output value and scene output angle of this device for the given scene id, scene output value and
439 * scene output angle.
441 * @param sceneId to set
442 * @param value to set
443 * @param angle to set
445 void setSceneOutputValue(short sceneId, int value, int angle);
448 * Returns the max angle value of the slat.
450 * @return max slat angle
452 int getMaxSlatAngle();
455 * Returns the min angle value of the slat.
457 * @return min slat angle
459 int getMinSlatAngle();
462 * Returns true, if it is a blind device.
464 * @return is blind (true = yes | false = no
469 * Saves scene configurations from the given sceneProperties in the {@link Device}. <br>
470 * The {@link Map} has to be like the following format:
472 * <li><b>Key:</b> scene[sceneID]</li>
473 * <li><b>Value:</b> {Scene: [sceneID], dontcare: [don't care flag], localPrio: [local prio flag], specialMode:
474 * [special mode flag]}(0..1), {sceneValue: [scene value], sceneAngle: [scene angle]}(0..1))</li>
477 * @param sceneProperties to save
479 void saveConfigSceneSpecificationIntoDevice(Map<String, String> sceneProperties);
482 * Returns the min output value.
484 * @return min output value
486 short getMinOutputValue();
489 * Adds a slat increase command as {@link DeviceStateUpdate} to the list of outstanding commands.
491 void increaseSlatAngle();
494 * Adds a slat decrease command as {@link DeviceStateUpdate} to the list of outstanding commands.
496 void decreaseSlatAngle();
499 * Saves scene configurations from the given sceneProperties in the {@link Device}. <br>
501 * <b>The {@link String} has to be like the following format:</b><br>
502 * {[sceneID] = }(1){Scene: [sceneID], dontcare: [don't care flag], localPrio: [local prio flag], specialMode:
503 * [special mode flag]}(0..1), {sceneValue: [sceneValue]{, sceneAngle: [scene angle]}(0..1)}{\n}(0..1)<br>
505 * e.g. "10 = Scene: PRESET_4, dontcare: false, localPrio: false, specialMode: false, flashMode: false, sceneValue:
508 * @param propertries to save
510 void saveConfigSceneSpecificationIntoDevice(String propertries);
513 * Returns true, if this {@link Device} is a sensor device. That means, that this {@link Device} has no output
515 * ({@link OutputModeEnum#DISABLED}), but climate sensors.
517 * @return true, if it is a sensor device
519 boolean isSensorDevice();
522 * Returns true, if this {@link Device} is a heating device. That means, that the output mode of this {@link Device}
523 * is one of the following modes {@link OutputModeEnum#PWM} or {@link OutputModeEnum#SWITCH} and the
524 * {@link FuncNameAndColorGroupEnum} is {@link FuncNameAndColorGroupEnum#HEATING}.
526 * @return true, if it is a heating device
528 boolean isHeatingDevice();
531 * Sets the refresh priority for the given power sensor as {@link SensorEnum}. <br>
533 * 1. The device must have this sensor type, otherwise the set has no effect.<br>
535 * 2. Valid priorities are:<br>
536 * - {@link Config#REFRESH_PRIORITY_NEVER}<br>
537 * - {@link Config#REFRESH_PRIORITY_LOW}<br>
538 * - {@link Config#REFRESH_PRIORITY_MEDIUM}<br>
539 * - {@link Config#REFRESH_PRIORITY_HIGH}<br>
541 * 3. Valid sensor types are:<br>
542 * - {@link SensorEnum#POWER_CONSUMPTION}<br>
543 * - {@link SensorEnum#OUTPUT_CURRENT}<br>
544 * - {@link SensorEnum#ELECTRIC_METER}<br>
545 * - {@link SensorEnum#ACTIVE_POWER}<br>
547 * @param powerSensorType the power sensor to set
548 * @param refreshPriority the new refresh priority
550 void setSensorDataRefreshPriority(SensorEnum powerSensorType, String refreshPriority);
553 * Returns the refresh priority of the given power sensor type as {@link SensorEnum}. If the sensor type is not
555 * this {@link Device} or it is not a power sensor it will be returned null.
557 * @param powerSensorType of the sensor
558 * @return the refresh priority
560 String getPowerSensorRefreshPriority(SensorEnum powerSensorType);
563 * Returns a {@link List} with all power sensors, which are supported by this {@link Device}.
565 * @return all supported power sensors
567 List<SensorEnum> getPowerSensorTypes();
570 * Returns a {@link List} with all climate sensors, which are supported by this {@link Device}.
572 * @return all supported climate sensors
574 List<SensorEnum> getClimateSensorTypes();
577 * Returns all {@link DeviceSensorValue}'s of this {@link Device}.
579 * @return list of all {@link DeviceSensorValue}'s
581 List<DeviceSensorValue> getDeviceSensorValues();
584 * Sets the given {@link DeviceSensorValue}. That means the given {@link DeviceSensorValue} will be added, if this
585 * type of {@link DeviceSensorValue} does not exist before, otherwise the existing {@link DeviceSensorValue} will be
587 * if the given {@link DeviceSensorValue} is newer.
589 * @param deviceSensorValue the new device sensor value
591 void setDeviceSensorValue(DeviceSensorValue deviceSensorValue);
594 * Returns the {@link DeviceSensorValue} of the given sensor type as {@link SensorEnum} or null, if no
595 * {@link DeviceSensorValue} exists for the given sensor type.
597 * @param sensorType of the sensor
598 * @return the {@link DeviceSensorValue} or null
600 DeviceSensorValue getDeviceSensorValue(SensorEnum sensorType);
603 * Returns the {@link DeviceSensorValue} of the given sensor index as {@link Short} or null, if no
604 * {@link DeviceSensorValue} exists for the given sensor index.
606 * @param sensorIndex of the sensor
607 * @return the {@link DeviceSensorValue} or null
609 DeviceSensorValue getDeviceSensorValue(Short sensorIndex);
612 * Returns the sensor index for the given sensor type as {@link SensorEnum} of the {@link Device} or null, if the
613 * sensor type does not exist. It will be needed to readout the current sensor value of the digitalSTROM device.
615 * @param sensorType of the sensor
616 * @return sensor index for the sensor type
618 Short getSensorIndex(SensorEnum sensorType);
621 * Returns the sensor type as {@link SensorEnum} of the given sensor index or null, if the given sensor type does
624 * @param sensorIndex of the sensor
625 * @return the sensor type or null
627 SensorEnum getSensorType(Short sensorIndex);
630 * Returns the internal digitalSTROM sensor value for the given sensor type as {@link SensorEnum}, if the sensor
631 * type exists and the value is valid. The resolution can be found at {@link SensorEnum}.
633 * @param sensorType of the sensor
634 * @return the internal digitalSTROM sensor value or null
636 Integer getDsSensorValue(SensorEnum sensorType);
639 * Returns the internal digitalSTROM sensor value for the given sensor index as {@link Short}, if the sensor
640 * index exists and the value is valid. The resolution can be found at {@link SensorEnum}.
642 * @param sensorIndex of the sensor
643 * @return the internal digitalSTROM sensor value or null
645 Integer getDsSensorValue(Short sensorIndex);
648 * Returns the float sensor value for the given sensor type as {@link SensorEnum}, if the sensor
649 * type exists and the value is valid. The resolution can be found at {@link SensorEnum}.
651 * @param sensorType of the sensor
652 * @return the float sensor value or null
654 Float getFloatSensorValue(SensorEnum sensorType);
657 * Returns the float sensor value for the given sensor index as {@link Short}, if the sensor
658 * index exists and the value is valid. The resolution can be found at {@link SensorEnum}.
660 * @param sensorIndex of the sensor
661 * @return the float sensor value or null
663 Float getFloatSensorValue(Short sensorIndex);
666 * Sets the float sensor value for a given sensor type as {@link SensorEnum}. If the sensor type does not exist, it
667 * will be returned false.
669 * @param sensorType of the sensor
670 * @param floatSensorValue the new float sensor value
671 * @return true, if it was successful, otherwise false
673 boolean setFloatSensorValue(SensorEnum sensorType, Float floatSensorValue);
676 * Sets the float sensor value for a given sensor index as {@link Short}. If the sensor type does not exist, it
677 * will be returned false.
679 * @param sensorIndex of the sensor
680 * @param floatSensorValue the new float sensor value
681 * @return true, if it was successful, otherwise false
683 boolean setFloatSensorValue(Short sensorIndex, Float floatSensorValue);
686 * Sets the internal digitalSTROM sensor value for a given sensor index as {@link Short}. If the sensor index does
687 * not exist, it will be returned false.
689 * @param sensorIndex of the sensor
690 * @param dSSensorValue the new internal digitalSTROM sensor value
691 * @return true, if it was successful, otherwise false
693 boolean setDsSensorValue(Short sensorIndex, Integer dSSensorValue);
696 * Sets the internal digitalSTROM sensor value for a given sensor type as {@link SensorEnum}. If the sensor type
698 * not exist, it will be returned false.
700 * @param sensorType of the sensor
701 * @param dSSensorValue the new internal digitalSTROM sensor value
702 * @return true, if it was successful, otherwise false
704 boolean setDsSensorValue(SensorEnum sensorType, Integer dSSensorValue);
707 * Sets the internal digitalSTROM and float sensor value for a given sensor index as {@link Short}. If the sensor
708 * index does not exist, it will be returned false.
710 * @param sensorIndex of the sensor
711 * @param dSSensorValue the new internal digitalSTROM sensor value
712 * @param floatSensorValue the new float sensor value
713 * @return true, if it was successful, otherwise false
715 boolean setDsSensorValue(Short sensorIndex, Integer dSSensorValue, Float floatSensorValue);
718 * Sets the internal digitalSTROM and float sensor value for a given sensor type as {@link SensorEnum}. If the
719 * sensor type does not exist, it will be returned false.
721 * @param sensorType of the sensor
722 * @param dSSensorValue the new internal digitalSTROM sensor value
723 * @param floatSensorValue the new float sensor value
724 * @return true, if it was successful, otherwise false
726 boolean setDsSensorValue(SensorEnum sensorType, Integer dSSensorValue, Float floatSensorValue);
729 * Returns true, if this {@link Device} has sensors, otherwise false.
731 * @return true, if device has sensors
733 boolean hasSensors();
736 * Returns true, if this {@link Device} has climate sensors, otherwise false.
738 * @return true, if device has climate sensors
740 boolean hasClimateSensors();
743 * Returns true, if this {@link Device} has power sensors, otherwise false.
745 * @return true, if device has power sensors
747 boolean hasPowerSensors();
750 * Only needed for {@link DeviceConsumptionSensorJob}'s. To set the internal digitalSTROM sensor value please use
751 * {@link #setDsSensorValue(SensorEnum, Integer)}.
753 * @param sensorType of the sensor
754 * @param value new value
756 void setDeviceSensorDsValueBySensorJob(SensorEnum sensorType, Integer value);
759 * Enables the internal sensor echo box for {@link EventNames#DEVICE_SENSOR_VALUE} events.
761 void enableSensorEchoBox();
764 * Disables the internal sensor echo box for {@link EventNames#DEVICE_SENSOR_VALUE} events.
766 void disableSensorEchoBox();
769 * Returns true, if the internal sensor echo box is enabled, otherwise false.
771 * @return true, if the internal sensor echo box is enabled
773 boolean isSensorEchoBoxEnabled();
776 * Sets the {@link DeviceSensorValue} through an {@link EventItem} of the type
777 * {@link EventNames#DEVICE_SENSOR_VALUE}.
779 * @param event of the sensor update
781 void setDeviceSensorByEvent(EventItem event);
784 * Returns true, if the refresh priority of the given power sensor type as {@link SensorEnum} is equals
785 * {@link Config#REFRESH_PRIORITY_NEVER}, otherwise false.
787 * @param powerSensorType of the sensor
788 * @return true, if refresh priority is never
790 boolean checkPowerSensorRefreshPriorityNever(SensorEnum powerSensorType);
793 * Returns true, if the given sensor type as {@link SensorEnum} is supported by this {@link Device}, otherwise
796 * @param sensorType of the sensor
797 * @return true, if the sensor type is supported
799 boolean supportsSensorType(SensorEnum sensorType);
802 * Returns true, if this {@link Device} is a temperature controlled device, otherwise false. That means, that the
803 * output mode is one of the output modes in
804 * {@link OutputModeEnum#outputModeIsTemperationControlled(OutputModeEnum)}.
806 * @return true, if this {@link Device} is a temperature controlled
808 boolean isTemperatureControlledDevice();
811 * Returns true, if this {@link Device} is a binary input device. That means it have no output mode
812 * ({@link OutputModeEnum#DISABLED}), but {@link DeviceBinaryInput}'s.
814 * @return true, if this {@link Device} is a binary input device
816 boolean isBinaryInputDevice();
819 * Returns a {@link List} which contains all currently configured {@link DeviceBinaryInput}'s.
821 * @return list with all configured {@link DeviceBinaryInput}'s
823 List<DeviceBinaryInput> getBinaryInputs();
826 * Returns the {@link DeviceBinaryInput} of the given binary input type as {@link DeviceBinarayInputEnum}} or null,
827 * if the binary input type does not exist.
829 * @param binaryInputType of the {@link DeviceBinaryInput}
830 * @return the {@link DeviceBinaryInput} or null
832 DeviceBinaryInput getBinaryInput(DeviceBinarayInputEnum binaryInputType);
835 * Returns the state of the given binary input type as {@link DeviceBinarayInputEnum}} or null, if the binary input
836 * type does not exist.
838 * @param binaryInputType of the {@link DeviceBinaryInput}
839 * @return state of the given binary input type or null
841 Short getBinaryInputState(DeviceBinarayInputEnum binaryInputType);
844 * Sets the state of an existing {@link DeviceBinaryInput}. If the given {@link DeviceBinarayInputEnum} does not
845 * exist, it will returned false, otherwise true.
847 * @param binaryInputType of the {@link DeviceBinaryInput}
848 * @param newState the new state
849 * @return true, if it was successful, otherwise false
851 boolean setBinaryInputState(DeviceBinarayInputEnum binaryInputType, Short newState);
854 * Sets the given {@link List} of {@link DeviceBinaryInput}'s as supported binary inputs.
856 * @param newBinaryInputs to set
858 void setBinaryInputs(List<DeviceBinaryInput> newBinaryInputs);
861 * Returns true, if the given power sensor type as {@link SensorEnum} is up to date and does not need a refresh,
862 * otherwise it will returned false.
864 * @param powerSensorType of the sensor
865 * @return true, if the power sensor is up to date
867 boolean isPowerSensorUpToDate(SensorEnum powerSensorType);
870 * Returns a {@link List} of all supported sensor types as {@link SensorEnum}.
872 * @return all supported sensor types
874 List<SensorEnum> getSensorTypes();