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.types.EventItem;
20 import org.openhab.binding.digitalstrom.internal.lib.structure.devices.deviceparameters.DeviceSceneSpec;
21 import org.openhab.binding.digitalstrom.internal.lib.structure.devices.deviceparameters.DeviceStateUpdate;
22 import org.openhab.binding.digitalstrom.internal.lib.structure.devices.deviceparameters.constants.ApplicationGroup;
23 import org.openhab.binding.digitalstrom.internal.lib.structure.devices.deviceparameters.constants.DeviceBinarayInputEnum;
24 import org.openhab.binding.digitalstrom.internal.lib.structure.devices.deviceparameters.constants.OutputChannelEnum;
25 import org.openhab.binding.digitalstrom.internal.lib.structure.devices.deviceparameters.constants.OutputModeEnum;
26 import org.openhab.binding.digitalstrom.internal.lib.structure.devices.deviceparameters.constants.SensorEnum;
27 import org.openhab.binding.digitalstrom.internal.lib.structure.devices.deviceparameters.impl.DSID;
28 import org.openhab.binding.digitalstrom.internal.lib.structure.devices.deviceparameters.impl.DeviceBinaryInput;
29 import org.openhab.binding.digitalstrom.internal.lib.structure.devices.deviceparameters.impl.DeviceSensorValue;
30 import org.openhab.binding.digitalstrom.internal.lib.structure.scene.InternalScene;
33 * The {@link Device} represents a digitalSTROM internal stored device.
35 * @author Alexander Betker - Initial contribution
36 * @author Michael Ochel - add methods for ESH, new functionalities and JavaDoc
37 * @author Mathias Siegele - add methods for ESH, new functionalities and JavaDoc
39 public interface Device extends GeneralDeviceInformation {
42 * Returns the id of the dS-Meter in which the device is registered.
49 * Sets the id of the dS-Meter in which the device is registered.
51 * @param meterDSID to set
54 void setMeterDSID(String meterDSID);
57 * Returns the hardware info of this device.
58 * You can see all available hardware info at
59 * http://www.digitalstrom.com/Partner/Support/Techn-Dokumentation/
61 * @return hardware info
66 * Returns the zone id in which this device is in.
73 * Sets the zoneID of this device.
75 * @param zoneID to set
77 void setZoneId(int zoneID);
80 * Returns true, if this device is on, otherwise false.
82 * @return is on (true = on | false = off)
87 * Adds an on command as {@link DeviceStateUpdate}, if the flag is true or off command, if it is false to the list
89 * outstanding commands.
91 * @param flag (true = on | false = off)
93 void setIsOn(boolean flag);
96 * Returns true, if this shade device is open, otherwise false.
98 * @return is on (true = open | false = closed)
103 * Adds an open command as {@link DeviceStateUpdate}, if the flag is true or closed command, if it is false to the
104 * list of outstanding commands.
106 * @param flag (true = open | false = closed)
108 void setIsOpen(boolean flag);
111 * Returns true, if this device is dimmable, otherwise false.
113 * @return is dimmable (true = yes | false = no)
115 boolean isDimmable();
118 * Returns true, if this device is a shade device (grey), otherwise false.
120 * @return is shade (true = yes | false = no)
125 * Returns true, if the device output mode isn't disabled.
127 * @return have output mode (true = yes | false = no)
129 boolean isDeviceWithOutput();
132 * Returns the current functional color group of this device.
133 * For more informations please have a look at {@link ApplicationGroup}.
135 * @return current functional color group
137 ApplicationGroup getFunctionalColorGroup();
140 * Sets the functional color group of this device.
142 * @param fuctionalColorGroup to set
144 void setFunctionalColorGroup(ApplicationGroup fuctionalColorGroup);
147 * Returns the current output mode of this device.
148 * Some devices are able to have different output modes e.g. the device GE-KM200 is able to
149 * be in dimm mode, switch mode or disabled.
150 * For more informations please have a look at {@link OutputModeEnum}.
152 * @return the current output mode of this device
154 OutputModeEnum getOutputMode();
156 List<OutputChannelEnum> getOutputChannels();
159 * Adds an increase command as {@link DeviceStateUpdate} to the list of outstanding commands.
164 * Adds a decrease command as {@link DeviceStateUpdate} to the list of outstanding commands.
169 * Returns the current slat position of this device.
171 * @return current slat position
173 int getSlatPosition();
176 * Adds a set slat position command as {@link DeviceStateUpdate} with the given slat position to the list of
177 * outstanding commands.
179 * @param slatPosition to set
181 void setSlatPosition(int slatPosition);
184 * Returns the maximal slat position value of this device.
186 * @return maximal slat position value
188 int getMaxSlatPosition();
191 * Returns the minimal slat position value of this device.
193 * @return minimal slat position value
195 int getMinSlatPosition();
198 * Returns the current output value of this device.
199 * This can be the slat position or the brightness of this device.
201 * @return current output value
203 short getOutputValue();
206 * Adds a set output value command as {@link DeviceStateUpdate} with the given output value to the list of
207 * outstanding commands.
209 * @param outputValue to set
211 void setOutputValue(short outputValue);
214 * Returns the maximal output value of this device.
216 * @return maximal output value
218 short getMaxOutputValue();
221 * Returns a list with group ids which the device is part of.
223 * @return List of group ids
225 List<Short> getGroups();
228 * Adds the given groupID to the group list.
230 * @param groupID to add
232 void addGroup(Short groupID);
235 * Overrides the existing group list with the given new.
237 * @param newGroupList to set
239 void setGroups(List<Short> newGroupList);
242 * Returns the scene output value of this device of the given scene id as {@link Integer} array. The first field is
243 * the output value and the second is the angle value or -1 if no angle value exists.
244 * If the method returns null, this scene id isn't read yet.
246 * @param sceneID of the scene
247 * @return scene output value and scene angle value or null, if it isn't read out yet
249 Integer[] getSceneOutputValue(short sceneID);
252 * Sets the scene output value of this device for the given scene id and scene output value.
254 * @param sceneId to set
255 * @param sceneOutputValue to set
257 void setSceneOutputValue(short sceneId, int sceneOutputValue);
260 * This configuration is very important. The devices can
261 * be configured to not react to some commands (scene calls).
262 * So you can't imply that a device automatically turns on (by default yes,
263 * but if someone configured his own scenes, then maybe not) after a
264 * scene call. This method returns true or false, if the configuration
265 * for this sceneID already has been read
267 * @param sceneId the sceneID
268 * @return true if this device has the configuration for this specific scene
270 boolean containsSceneConfig(short sceneId);
273 * Add the config for this scene. The config has the configuration
274 * for the specific sceneID.
276 * @param sceneId scene call id
277 * @param sceneSpec config for this sceneID
279 void addSceneConfig(short sceneId, DeviceSceneSpec sceneSpec);
282 * Get the config for this scene. The config has the configuration
283 * for the specific sceneID.
285 * @param sceneId scene call id
286 * @return sceneSpec config for this sceneID
288 DeviceSceneSpec getSceneConfig(short sceneId);
291 * Should the device react on this scene call or not .
293 * @param sceneId scene call id
294 * @return true, if this device should react on this sceneID
296 boolean doIgnoreScene(short sceneId);
298 // follow methods added by Michael Ochel and Matthias Siegele
300 * Returns true, if all sensor data are up to date or false if some have to be updated.
302 * @return is up to date (true = yes | false = no)
304 boolean isSensorDataUpToDate();
307 * Sets the priority to refresh the data of the sensors to the given priorities.
308 * They can be never, low, medium or high.
310 * @param powerConsumptionRefreshPriority to set
311 * @param electricMeterRefreshPriority to set
312 * @param energyMeterRefreshPriority to set
314 void setSensorDataRefreshPriority(String powerConsumptionRefreshPriority, String electricMeterRefreshPriority,
315 String energyMeterRefreshPriority);
318 * Returns true, if the device is up to date.
320 * @return digitalSTROM-Device is up to date (true = yes | false = no)
322 boolean isDeviceUpToDate();
325 * Returns the next {@link DeviceStateUpdate} to update the digitalSTROM-Device on the digitalSTROM-Server.
327 * @return DeviceStateUpdate for digitalSTROM-Device
329 DeviceStateUpdate getNextDeviceUpdateState();
332 * Update the internal stored device object.
334 * @param deviceStateUpdate to update
336 void updateInternalDeviceState(DeviceStateUpdate deviceStateUpdate);
339 * Call the given {@link InternalScene} on this {@link Device} and updates it.
341 * @param scene to call
343 void callInternalScene(InternalScene scene);
346 * Undo the given {@link InternalScene} on this {@link Device} and updates it.
348 * @param scene to undo
350 void undoInternalScene(InternalScene scene);
353 * Initial a call scene for the given scene number.
355 * @param sceneNumber to call
357 void callScene(Short sceneNumber);
360 * Returns the current active {@link InternalScene}, otherwise null.
362 * @return active {@link InternalScene} or null
364 InternalScene getAcitiveScene();
367 * Undo the active scene if a scene is active.
372 * Checks the scene configuration for the given scene number and initial a scene configuration reading with the
373 * given priority if no scene configuration exists.
375 * @param sceneNumber to check
376 * @param prio to update
378 void checkSceneConfig(Short sceneNumber, short prio);
381 * Sets the given output mode as new output mode of this {@link Device}.
383 * @param newOutputMode to set
385 void setOutputMode(OutputModeEnum newOutputMode);
388 * Returns a {@link List} of all saved scene-IDs configurations.
390 * @return a {@link List} of all saved scene-IDs
392 List<Short> getSavedScenes();
395 * Initializes an internal device update as call scene for the given scene number.
397 * @param sceneNumber to call
399 void internalCallScene(Short sceneNumber);
402 * Initializes an internal device update as undo scene.
404 void internalUndoScene();
407 * Returns true, if this {@link Device} is a device with a switch output mode.
409 * @return true, if it is a switch otherwise false
414 * Sets the given {@link Config} as new {@link Config}.
416 * @param config to set
418 void setConfig(Config config);
421 * Returns the current angle position of the {@link Device}.
423 * @return current angle position
425 short getAnglePosition();
428 * Adds a set angle value command as {@link DeviceStateUpdate} with the given angle value to the list of
429 * outstanding commands.
431 * @param angle to set
433 void setAnglePosition(int angle);
436 * Sets the scene output value and scene output angle of this device for the given scene id, scene output value and
437 * scene output angle.
439 * @param sceneId to set
440 * @param value to set
441 * @param angle to set
443 void setSceneOutputValue(short sceneId, int value, int angle);
446 * Returns the max angle value of the slat.
448 * @return max slat angle
450 int getMaxSlatAngle();
453 * Returns the min angle value of the slat.
455 * @return min slat angle
457 int getMinSlatAngle();
460 * Returns true, if it is a blind device.
462 * @return is blind (true = yes | false = no
467 * Saves scene configurations from the given sceneProperties in the {@link Device}. <br>
468 * The {@link Map} has to be like the following format:
470 * <li><b>Key:</b> scene[sceneID]</li>
471 * <li><b>Value:</b> {Scene: [sceneID], dontcare: [don't care flag], localPrio: [local prio flag], specialMode:
472 * [special mode flag]}(0..1), {sceneValue: [scene value], sceneAngle: [scene angle]}(0..1))</li>
475 * @param sceneProperties to save
477 void saveConfigSceneSpecificationIntoDevice(Map<String, String> sceneProperties);
480 * Returns the min output value.
482 * @return min output value
484 short getMinOutputValue();
487 * Adds a slat increase command as {@link DeviceStateUpdate} to the list of outstanding commands.
489 void increaseSlatAngle();
492 * Adds a slat decrease command as {@link DeviceStateUpdate} to the list of outstanding commands.
494 void decreaseSlatAngle();
497 * Saves scene configurations from the given sceneProperties in the {@link Device}. <br>
499 * <b>The {@link String} has to be like the following format:</b><br>
500 * {[sceneID] = }(1){Scene: [sceneID], dontcare: [don't care flag], localPrio: [local prio flag], specialMode:
501 * [special mode flag]}(0..1), {sceneValue: [sceneValue]{, sceneAngle: [scene angle]}(0..1)}{\n}(0..1)<br>
503 * e.g. "10 = Scene: PRESET_4, dontcare: false, localPrio: false, specialMode: false, flashMode: false, sceneValue:
506 * @param propertries to save
508 void saveConfigSceneSpecificationIntoDevice(String propertries);
511 * Returns true, if this {@link Device} is a sensor device. That means, that this {@link Device} has no output
513 * ({@link OutputModeEnum#DISABLED}), but climate sensors.
515 * @return true, if it is a sensor device
517 boolean isSensorDevice();
520 * Returns true, if this {@link Device} is a heating device. That means, that the output mode of this {@link Device}
521 * is one of the following modes {@link OutputModeEnum#PWM} or {@link OutputModeEnum#SWITCH} and the
522 * {@link ApplicationGroup} is {@link ApplicationGroup#HEATING}.
524 * @return true, if it is a heating device
526 boolean isHeatingDevice();
529 * Sets the refresh priority for the given power sensor as {@link SensorEnum}. <br>
531 * 1. The device must have this sensor type, otherwise the set has no effect.<br>
533 * 2. Valid priorities are:<br>
534 * - {@link Config#REFRESH_PRIORITY_NEVER}<br>
535 * - {@link Config#REFRESH_PRIORITY_LOW}<br>
536 * - {@link Config#REFRESH_PRIORITY_MEDIUM}<br>
537 * - {@link Config#REFRESH_PRIORITY_HIGH}<br>
539 * 3. Valid sensor types are:<br>
540 * - {@link SensorEnum#POWER_CONSUMPTION}<br>
541 * - {@link SensorEnum#OUTPUT_CURRENT}<br>
542 * - {@link SensorEnum#ELECTRIC_METER}<br>
543 * - {@link SensorEnum#ACTIVE_POWER}<br>
545 * @param powerSensorType the power sensor to set
546 * @param refreshPriority the new refresh priority
548 void setSensorDataRefreshPriority(SensorEnum powerSensorType, String refreshPriority);
551 * Returns the refresh priority of the given power sensor type as {@link SensorEnum}. If the sensor type is not
553 * this {@link Device} or it is not a power sensor it will be returned null.
555 * @param powerSensorType of the sensor
556 * @return the refresh priority
558 String getPowerSensorRefreshPriority(SensorEnum powerSensorType);
561 * Returns a {@link List} with all power sensors, which are supported by this {@link Device}.
563 * @return all supported power sensors
565 List<SensorEnum> getPowerSensorTypes();
568 * Returns a {@link List} with all climate sensors, which are supported by this {@link Device}.
570 * @return all supported climate sensors
572 List<SensorEnum> getClimateSensorTypes();
575 * Returns all {@link DeviceSensorValue}'s of this {@link Device}.
577 * @return list of all {@link DeviceSensorValue}'s
579 List<DeviceSensorValue> getDeviceSensorValues();
582 * Sets the given {@link DeviceSensorValue}. That means the given {@link DeviceSensorValue} will be added, if this
583 * type of {@link DeviceSensorValue} does not exist before, otherwise the existing {@link DeviceSensorValue} will be
585 * if the given {@link DeviceSensorValue} is newer.
587 * @param deviceSensorValue the new device sensor value
589 void setDeviceSensorValue(DeviceSensorValue deviceSensorValue);
592 * Returns the {@link DeviceSensorValue} of the given sensor type as {@link SensorEnum} or null, if no
593 * {@link DeviceSensorValue} exists for the given sensor type.
595 * @param sensorType of the sensor
596 * @return the {@link DeviceSensorValue} or null
598 DeviceSensorValue getDeviceSensorValue(SensorEnum sensorType);
601 * Returns the {@link DeviceSensorValue} of the given sensor index as {@link Short} or null, if no
602 * {@link DeviceSensorValue} exists for the given sensor index.
604 * @param sensorIndex of the sensor
605 * @return the {@link DeviceSensorValue} or null
607 DeviceSensorValue getDeviceSensorValue(Short sensorIndex);
610 * Returns the sensor index for the given sensor type as {@link SensorEnum} of the {@link Device} or null, if the
611 * sensor type does not exist. It will be needed to readout the current sensor value of the digitalSTROM device.
613 * @param sensorType of the sensor
614 * @return sensor index for the sensor type
616 Short getSensorIndex(SensorEnum sensorType);
619 * Returns the sensor type as {@link SensorEnum} of the given sensor index or null, if the given sensor type does
622 * @param sensorIndex of the sensor
623 * @return the sensor type or null
625 SensorEnum getSensorType(Short sensorIndex);
628 * Returns the internal digitalSTROM sensor value for the given sensor type as {@link SensorEnum}, if the sensor
629 * type exists and the value is valid. The resolution can be found at {@link SensorEnum}.
631 * @param sensorType of the sensor
632 * @return the internal digitalSTROM sensor value or null
634 Integer getDsSensorValue(SensorEnum sensorType);
637 * Returns the internal digitalSTROM sensor value for the given sensor index as {@link Short}, if the sensor
638 * index exists and the value is valid. The resolution can be found at {@link SensorEnum}.
640 * @param sensorIndex of the sensor
641 * @return the internal digitalSTROM sensor value or null
643 Integer getDsSensorValue(Short sensorIndex);
646 * Returns the float sensor value for the given sensor type as {@link SensorEnum}, if the sensor
647 * type exists and the value is valid. The resolution can be found at {@link SensorEnum}.
649 * @param sensorType of the sensor
650 * @return the float sensor value or null
652 Float getFloatSensorValue(SensorEnum sensorType);
655 * Returns the float sensor value for the given sensor index as {@link Short}, if the sensor
656 * index exists and the value is valid. The resolution can be found at {@link SensorEnum}.
658 * @param sensorIndex of the sensor
659 * @return the float sensor value or null
661 Float getFloatSensorValue(Short sensorIndex);
664 * Sets the float sensor value for a given sensor type as {@link SensorEnum}. If the sensor type does not exist, it
665 * will be returned false.
667 * @param sensorType of the sensor
668 * @param floatSensorValue the new float sensor value
669 * @return true, if it was successful, otherwise false
671 boolean setFloatSensorValue(SensorEnum sensorType, Float floatSensorValue);
674 * Sets the float sensor value for a given sensor index as {@link Short}. If the sensor type does not exist, it
675 * will be returned false.
677 * @param sensorIndex of the sensor
678 * @param floatSensorValue the new float sensor value
679 * @return true, if it was successful, otherwise false
681 boolean setFloatSensorValue(Short sensorIndex, Float floatSensorValue);
684 * Sets the internal digitalSTROM sensor value for a given sensor index as {@link Short}. If the sensor index does
685 * not exist, it will be returned false.
687 * @param sensorIndex of the sensor
688 * @param dSSensorValue the new internal digitalSTROM sensor value
689 * @return true, if it was successful, otherwise false
691 boolean setDsSensorValue(Short sensorIndex, Integer dSSensorValue);
694 * Sets the internal digitalSTROM sensor value for a given sensor type as {@link SensorEnum}. If the sensor type
696 * not exist, it will be returned false.
698 * @param sensorType of the sensor
699 * @param dSSensorValue the new internal digitalSTROM sensor value
700 * @return true, if it was successful, otherwise false
702 boolean setDsSensorValue(SensorEnum sensorType, Integer dSSensorValue);
705 * Sets the internal digitalSTROM and float sensor value for a given sensor index as {@link Short}. If the sensor
706 * index does not exist, it will be returned false.
708 * @param sensorIndex of the sensor
709 * @param dSSensorValue the new internal digitalSTROM sensor value
710 * @param floatSensorValue the new float sensor value
711 * @return true, if it was successful, otherwise false
713 boolean setDsSensorValue(Short sensorIndex, Integer dSSensorValue, Float floatSensorValue);
716 * Sets the internal digitalSTROM and float sensor value for a given sensor type as {@link SensorEnum}. If the
717 * sensor type does not exist, it will be returned false.
719 * @param sensorType of the sensor
720 * @param dSSensorValue the new internal digitalSTROM sensor value
721 * @param floatSensorValue the new float sensor value
722 * @return true, if it was successful, otherwise false
724 boolean setDsSensorValue(SensorEnum sensorType, Integer dSSensorValue, Float floatSensorValue);
727 * Returns true, if this {@link Device} has sensors, otherwise false.
729 * @return true, if device has sensors
731 boolean hasSensors();
734 * Returns true, if this {@link Device} has climate sensors, otherwise false.
736 * @return true, if device has climate sensors
738 boolean hasClimateSensors();
741 * Returns true, if this {@link Device} has power sensors, otherwise false.
743 * @return true, if device has power sensors
745 boolean hasPowerSensors();
749 * {@link org.openhab.binding.digitalstrom.internal.lib.sensorjobexecutor.sensorjob.impl.DeviceConsumptionSensorJob}'s.
750 * 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
760 * {@link org.openhab.binding.digitalstrom.internal.lib.event.constants.EventNames#DEVICE_SENSOR_VALUE} events.
762 void enableSensorEchoBox();
765 * Disables the internal sensor echo box for
766 * {@link org.openhab.binding.digitalstrom.internal.lib.event.constants.EventNames#DEVICE_SENSOR_VALUE} events.
768 void disableSensorEchoBox();
771 * Returns true, if the internal sensor echo box is enabled, otherwise false.
773 * @return true, if the internal sensor echo box is enabled
775 boolean isSensorEchoBoxEnabled();
778 * Sets the {@link DeviceSensorValue} through an
779 * {@link EventItem} of the type
780 * {@link org.openhab.binding.digitalstrom.internal.lib.event.constants.EventNames#DEVICE_SENSOR_VALUE}.
782 * @param event of the sensor update
784 void setDeviceSensorByEvent(EventItem event);
787 * Returns true, if the refresh priority of the given power sensor type as {@link SensorEnum} is equals
788 * {@link Config#REFRESH_PRIORITY_NEVER}, otherwise false.
790 * @param powerSensorType of the sensor
791 * @return true, if refresh priority is never
793 boolean checkPowerSensorRefreshPriorityNever(SensorEnum powerSensorType);
796 * Returns true, if the given sensor type as {@link SensorEnum} is supported by this {@link Device}, otherwise
799 * @param sensorType of the sensor
800 * @return true, if the sensor type is supported
802 boolean supportsSensorType(SensorEnum sensorType);
805 * Returns true, if this {@link Device} is a temperature controlled device, otherwise false. That means, that the
806 * output mode is one of the output modes in
807 * {@link OutputModeEnum#outputModeIsTemperationControlled(OutputModeEnum)}.
809 * @return true, if this {@link Device} is a temperature controlled
811 boolean isTemperatureControlledDevice();
814 * Returns true, if this {@link Device} is a binary input device. That means it have no output mode
815 * ({@link OutputModeEnum#DISABLED}), but {@link DeviceBinaryInput}'s.
817 * @return true, if this {@link Device} is a binary input device
819 boolean isBinaryInputDevice();
822 * Returns a {@link List} which contains all currently configured {@link DeviceBinaryInput}'s.
824 * @return list with all configured {@link DeviceBinaryInput}'s
826 List<DeviceBinaryInput> getBinaryInputs();
829 * Returns the {@link DeviceBinaryInput} of the given binary input type as {@link DeviceBinarayInputEnum}} or null,
830 * if the binary input type does not exist.
832 * @param binaryInputType of the {@link DeviceBinaryInput}
833 * @return the {@link DeviceBinaryInput} or null
835 DeviceBinaryInput getBinaryInput(DeviceBinarayInputEnum binaryInputType);
838 * Returns the state of the given binary input type as {@link DeviceBinarayInputEnum}} or null, if the binary input
839 * type does not exist.
841 * @param binaryInputType of the {@link DeviceBinaryInput}
842 * @return state of the given binary input type or null
844 Short getBinaryInputState(DeviceBinarayInputEnum binaryInputType);
847 * Sets the state of an existing {@link DeviceBinaryInput}. If the given {@link DeviceBinarayInputEnum} does not
848 * exist, it will returned false, otherwise true.
850 * @param binaryInputType of the {@link DeviceBinaryInput}
851 * @param newState the new state
852 * @return true, if it was successful, otherwise false
854 boolean setBinaryInputState(DeviceBinarayInputEnum binaryInputType, Short newState);
857 * Sets the given {@link List} of {@link DeviceBinaryInput}'s as supported binary inputs.
859 * @param newBinaryInputs to set
861 void setBinaryInputs(List<DeviceBinaryInput> newBinaryInputs);
864 * Returns true, if the given power sensor type as {@link SensorEnum} is up to date and does not need a refresh,
865 * otherwise it will returned false.
867 * @param powerSensorType of the sensor
868 * @return true, if the power sensor is up to date
870 boolean isPowerSensorUpToDate(SensorEnum powerSensorType);
873 * Returns a {@link List} of all supported sensor types as {@link SensorEnum}.
875 * @return all supported sensor types
877 List<SensorEnum> getSensorTypes();