mirror of
https://github.com/danieldemus/openhab-addons
synced 2026-07-31 13:34:22 +02:00
[velbus] VMB8IN-20 implementation rewrite (#18365)
* [velbus] update README Module VMBPIR-20 is missing in the readme. Signed-off-by: Daniel Rosengarten <github@praetorians.be>
This commit is contained in:
@@ -250,21 +250,17 @@ xidel -e 'let $refs := (
|
||||
|
||||
| Property | Supported modules | Description |
|
||||
|---------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------|
|
||||
| `counter1PulseMultiplier` | `vmb7in`, `vmb8in-20` | The pulse multiplier for counter 1 |
|
||||
| `counter1PulseMultiplier` | `vmb7in` | The pulse multiplier for counter 1 |
|
||||
| `counter1Unit` | `vmb7in`, `vmb8in-20` | The unit for Counter 1. |
|
||||
| `counter2PulseMultiplier` | `vmb7in`, `vmb8in-20` | The pulse multiplier for counter 2 |
|
||||
| `counter2PulseMultiplier` | `vmb7in` | The pulse multiplier for counter 2 |
|
||||
| `counter2Unit` | `vmb7in`, `vmb8in-20` | The unit for Counter 2. |
|
||||
| `counter3PulseMultiplier` | `vmb7in`, `vmb8in-20` | The pulse multiplier for counter 3 |
|
||||
| `counter3PulseMultiplier` | `vmb7in` | The pulse multiplier for counter 3 |
|
||||
| `counter3Unit` | `vmb7in`, `vmb8in-20` | The unit for Counter 3. |
|
||||
| `counter4PulseMultiplier` | `vmb7in`, `vmb8in-20` | The pulse multiplier for counter 4 |
|
||||
| `counter4PulseMultiplier` | `vmb7in` | The pulse multiplier for counter 4 |
|
||||
| `counter4Unit` | `vmb7in`, `vmb8in-20` | The unit for Counter 4. |
|
||||
| `counter5PulseMultiplier` | `vmb8in-20` | The pulse multiplier for counter 5 |
|
||||
| `counter5Unit` | `vmb8in-20` | The unit for Counter 5. |
|
||||
| `counter6PulseMultiplier` | `vmb8in-20` | The pulse multiplier for counter 6 |
|
||||
| `counter6Unit` | `vmb8in-20` | The unit for Counter 6. |
|
||||
| `counter7PulseMultiplier` | `vmb8in-20` | The pulse multiplier for counter 7 |
|
||||
| `counter7Unit` | `vmb8in-20` | The unit for Counter 7. |
|
||||
| `counter8PulseMultiplier` | `vmb8in-20` | The pulse multiplier for counter 8 |
|
||||
| `counter8Unit` | `vmb8in-20` | The unit for Counter 8. |
|
||||
| `dimspeed` | `vmb1dm`, `vmb1led`, `vmb4dc`, `vmbdme`, `vmbdmi`, `vmbdmir` | The time (in seconds) needed for dimming from 0 to 100%. |
|
||||
| `refresh` | `vmb1ts`, `vmb4an`, `vmb7in`, `vmbel1`, `vmbel2`, `vmbel4`, `vmbelpir`, `vmbgp1`, `vmbgp1-2`, `vmbgp2`, `vmbgp2-2`, `vmbgp4`, `vmbgp4-2`, `vmbgp4pir`, `vmbgp4pir-2`, `vmbmeteo`, `vmbpiro`, `vmb8in-20` | Refresh interval for sensors or counters (in seconds), default 300. If set to 0 or left empty, no refresh will be scheduled. |
|
||||
|
||||
+2
@@ -221,6 +221,7 @@ public class VelbusBindingConstants {
|
||||
public static final byte COMMAND_BLIND_POS = 0x1C;
|
||||
public static final byte COMMAND_SET_DIMSCENE = (byte) 0x1D;
|
||||
public static final byte COMMAND_SET_COLOR = (byte) 0x1E;
|
||||
public static final byte COMMAND_COUNTER_VALUE = (byte) 0xA4;
|
||||
public static final byte COMMAND_DIMVALUE_STATUS = (byte) 0xA5;
|
||||
public static final byte COMMAND_SUBTYPE_3 = (byte) 0xA6;
|
||||
public static final byte COMMAND_SUBTYPE_2 = (byte) 0xA7;
|
||||
@@ -228,6 +229,7 @@ public class VelbusBindingConstants {
|
||||
public static final byte COMMAND_LIGHT_VALUE_REQUEST = (byte) 0xAA;
|
||||
public static final byte COMMAND_POWER_UP = (byte) 0xAB;
|
||||
public static final byte COMMAND_TEXT = (byte) 0xAC;
|
||||
public static final byte COMMAND_RESET_COUNTER = (byte) 0xAD;
|
||||
public static final byte COMMAND_DAYLIGHT_SAVING_STATUS = (byte) 0xAF;
|
||||
public static final byte COMMAND_SUBTYPE = (byte) 0xB0;
|
||||
public static final byte COMMAND_SET_REALTIME_DATE = (byte) 0xB7;
|
||||
|
||||
+2
-1
@@ -70,8 +70,9 @@ public class VelbusColorChannel {
|
||||
* @param brightness the brightness to set
|
||||
*/
|
||||
public void setBrightness(int brightness) {
|
||||
if (this.curveType == CURVE_TYPE_EXPONENTIAL)
|
||||
if (this.curveType == CURVE_TYPE_EXPONENTIAL) {
|
||||
brightness = adaptBrightnessValue(brightness);
|
||||
}
|
||||
this.brightness = (brightness < BRIGHTNESS_MIN_VALUE) ? BRIGHTNESS_MIN_VALUE : brightness;
|
||||
this.brightness = (brightness > BRIGHTNESS_MAX_VALUE) ? BRIGHTNESS_MAX_VALUE : brightness;
|
||||
}
|
||||
|
||||
+3
@@ -29,6 +29,7 @@ import org.openhab.binding.velbus.internal.handler.VelbusSerialBridgeHandler;
|
||||
import org.openhab.binding.velbus.internal.handler.VelbusVMB1TSHandler;
|
||||
import org.openhab.binding.velbus.internal.handler.VelbusVMB4ANHandler;
|
||||
import org.openhab.binding.velbus.internal.handler.VelbusVMB7INHandler;
|
||||
import org.openhab.binding.velbus.internal.handler.VelbusVMB8INHandler;
|
||||
import org.openhab.binding.velbus.internal.handler.VelbusVMBDALIHandler;
|
||||
import org.openhab.binding.velbus.internal.handler.VelbusVMBELHandler;
|
||||
import org.openhab.binding.velbus.internal.handler.VelbusVMBELOHandler;
|
||||
@@ -101,6 +102,8 @@ public class VelbusHandlerFactory extends BaseThingHandlerFactory {
|
||||
thingHandler = new VelbusVMBPIROHandler(thing);
|
||||
} else if (VelbusVMB7INHandler.SUPPORTED_THING_TYPES.contains(thingTypeUID)) {
|
||||
thingHandler = new VelbusVMB7INHandler(thing);
|
||||
} else if (VelbusVMB8INHandler.SUPPORTED_THING_TYPES.contains(thingTypeUID)) {
|
||||
thingHandler = new VelbusVMB8INHandler(thing);
|
||||
} else if (VelbusVMBELHandler.SUPPORTED_THING_TYPES.contains(thingTypeUID)) {
|
||||
thingHandler = new VelbusVMBELHandler(thing);
|
||||
} else if (VelbusVMBELOHandler.SUPPORTED_THING_TYPES.contains(thingTypeUID)) {
|
||||
|
||||
+2
-1
@@ -145,8 +145,9 @@ public class VelbusModule {
|
||||
Integer key = CHANNEL_NAME_IDX_FROM_BYTE_THING_TYPES.contains(thingTypeUID)
|
||||
? channelIdentifier.getChannelByte() - 1
|
||||
: velbusModuleAddress.getChannelIndex(channelIdentifier);
|
||||
if (key == 0 && PIR_WITH_SENSOR_THING_TYPES.contains(thingTypeUID))
|
||||
if (key == 0 && PIR_WITH_SENSOR_THING_TYPES.contains(thingTypeUID)) {
|
||||
key = key + 8;
|
||||
}
|
||||
|
||||
if (!channelNames.containsKey(key)) {
|
||||
channelNames.put(key, new String[3]);
|
||||
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
/*
|
||||
* Copyright (c) 2010-2025 Contributors to the openHAB project
|
||||
*
|
||||
* See the NOTICE file(s) distributed with this work for additional
|
||||
* information.
|
||||
*
|
||||
* This program and the accompanying materials are made available under the
|
||||
* terms of the Eclipse Public License 2.0 which is available at
|
||||
* http://www.eclipse.org/legal/epl-2.0
|
||||
*
|
||||
* SPDX-License-Identifier: EPL-2.0
|
||||
*/
|
||||
package org.openhab.binding.velbus.internal.config;
|
||||
|
||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||
|
||||
/**
|
||||
* The {@link VelbusVMB8INConfig} class represents the configuration of a Velbus VMB8IN module.
|
||||
*
|
||||
* @author Daniel Rosengarten - Initial contribution
|
||||
*/
|
||||
@NonNullByDefault
|
||||
public class VelbusVMB8INConfig extends VelbusSensorConfig {
|
||||
public String counter1Unit = "";
|
||||
public String counter2Unit = "";
|
||||
public String counter3Unit = "";
|
||||
public String counter4Unit = "";
|
||||
public String counter5Unit = "";
|
||||
public String counter6Unit = "";
|
||||
public String counter7Unit = "";
|
||||
public String counter8Unit = "";
|
||||
}
|
||||
+1
@@ -150,6 +150,7 @@ public abstract class VelbusBridgeHandler extends BaseBridgeHandler {
|
||||
if (timeUpdateJob != null) {
|
||||
timeUpdateJob.cancel(true);
|
||||
}
|
||||
this.timeUpdateJob = null;
|
||||
disconnect();
|
||||
}
|
||||
|
||||
|
||||
+2
-1
@@ -119,8 +119,9 @@ public class VelbusNewDimmerHandler extends VelbusSensorWithAlarmClockHandler {
|
||||
final ScheduledFuture<?> refreshJob = this.refreshJob;
|
||||
if (refreshJob != null) {
|
||||
refreshJob.cancel(true);
|
||||
this.refreshJob = null;
|
||||
}
|
||||
this.refreshJob = null;
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
private void startAutomaticRefresh(int refreshInterval) {
|
||||
|
||||
+1
@@ -74,6 +74,7 @@ public abstract class VelbusTemperatureSensorHandler extends VelbusSensorWithAla
|
||||
if (refreshJob != null) {
|
||||
refreshJob.cancel(true);
|
||||
}
|
||||
this.refreshJob = null;
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
|
||||
+1
@@ -93,6 +93,7 @@ public class VelbusVMB4ANHandler extends VelbusSensorWithAlarmClockHandler {
|
||||
if (refreshJob != null) {
|
||||
refreshJob.cancel(true);
|
||||
}
|
||||
this.refreshJob = null;
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
|
||||
+1
@@ -85,6 +85,7 @@ public class VelbusVMB7INHandler extends VelbusSensorWithAlarmClockHandler {
|
||||
if (refreshJob != null) {
|
||||
refreshJob.cancel(true);
|
||||
}
|
||||
this.refreshJob = null;
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
|
||||
+298
@@ -0,0 +1,298 @@
|
||||
/*
|
||||
* Copyright (c) 2010-2025 Contributors to the openHAB project
|
||||
*
|
||||
* See the NOTICE file(s) distributed with this work for additional
|
||||
* information.
|
||||
*
|
||||
* This program and the accompanying materials are made available under the
|
||||
* terms of the Eclipse Public License 2.0 which is available at
|
||||
* http://www.eclipse.org/legal/epl-2.0
|
||||
*
|
||||
* SPDX-License-Identifier: EPL-2.0
|
||||
*/
|
||||
package org.openhab.binding.velbus.internal.handler;
|
||||
|
||||
import static org.openhab.binding.velbus.internal.VelbusBindingConstants.*;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.ScheduledFuture;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import javax.measure.quantity.Energy;
|
||||
import javax.measure.quantity.Power;
|
||||
import javax.measure.quantity.Volume;
|
||||
|
||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||
import org.eclipse.jdt.annotation.Nullable;
|
||||
import org.openhab.binding.velbus.internal.VelbusChannelIdentifier;
|
||||
import org.openhab.binding.velbus.internal.config.VelbusVMB8INConfig;
|
||||
import org.openhab.binding.velbus.internal.packets.VelbusCounterStatusRequestPacket;
|
||||
import org.openhab.binding.velbus.internal.packets.VelbusPacket;
|
||||
import org.openhab.core.library.types.QuantityType;
|
||||
import org.openhab.core.library.unit.Units;
|
||||
import org.openhab.core.thing.ChannelUID;
|
||||
import org.openhab.core.thing.Thing;
|
||||
import org.openhab.core.thing.ThingStatus;
|
||||
import org.openhab.core.thing.ThingStatusDetail;
|
||||
import org.openhab.core.thing.ThingTypeUID;
|
||||
import org.openhab.core.types.Command;
|
||||
import org.openhab.core.types.RefreshType;
|
||||
|
||||
/**
|
||||
* The {@link VelbusVMB8INHandler} is responsible for handling commands, which are
|
||||
* sent to one of the channels.
|
||||
*
|
||||
* @author Daniel Rosengarten - Initial contribution
|
||||
*/
|
||||
@NonNullByDefault
|
||||
public class VelbusVMB8INHandler extends VelbusSensorWithAlarmClockHandler {
|
||||
public static final Set<ThingTypeUID> SUPPORTED_THING_TYPES = new HashSet<>(Arrays.asList(THING_TYPE_VMB8IN_20));
|
||||
|
||||
private final ChannelUID counter1Channel = new ChannelUID(thing.getUID(), "counter", "counter1");
|
||||
private final ChannelUID counter1ChannelCurrent = new ChannelUID(thing.getUID(), "counter", "counter1Current");
|
||||
private final ChannelUID counter2Channel = new ChannelUID(thing.getUID(), "counter", "counter2");
|
||||
private final ChannelUID counter2ChannelCurrent = new ChannelUID(thing.getUID(), "counter", "counter2Current");
|
||||
private final ChannelUID counter3Channel = new ChannelUID(thing.getUID(), "counter", "counter3");
|
||||
private final ChannelUID counter3ChannelCurrent = new ChannelUID(thing.getUID(), "counter", "counter3Current");
|
||||
private final ChannelUID counter4Channel = new ChannelUID(thing.getUID(), "counter", "counter4");
|
||||
private final ChannelUID counter4ChannelCurrent = new ChannelUID(thing.getUID(), "counter", "counter4Current");
|
||||
private final ChannelUID counter5Channel = new ChannelUID(thing.getUID(), "counter", "counter5");
|
||||
private final ChannelUID counter5ChannelCurrent = new ChannelUID(thing.getUID(), "counter", "counter5Current");
|
||||
private final ChannelUID counter6Channel = new ChannelUID(thing.getUID(), "counter", "counter6");
|
||||
private final ChannelUID counter6ChannelCurrent = new ChannelUID(thing.getUID(), "counter", "counter6Current");
|
||||
private final ChannelUID counter7Channel = new ChannelUID(thing.getUID(), "counter", "counter7");
|
||||
private final ChannelUID counter7ChannelCurrent = new ChannelUID(thing.getUID(), "counter", "counter7Current");
|
||||
private final ChannelUID counter8Channel = new ChannelUID(thing.getUID(), "counter", "counter8");
|
||||
private final ChannelUID counter8ChannelCurrent = new ChannelUID(thing.getUID(), "counter", "counter8Current");
|
||||
|
||||
private static final String COUNTER_UNIT_KWH = "kWh";
|
||||
private static final String COUNTER_UNIT_M3 = "m³";
|
||||
private static final String COUNTER_UNIT_LITERS = "liters";
|
||||
|
||||
public @NonNullByDefault({}) VelbusVMB8INConfig vmb8inConfig;
|
||||
|
||||
private @Nullable ScheduledFuture<?> refreshJob;
|
||||
|
||||
public VelbusVMB8INHandler(Thing thing) {
|
||||
super(thing, 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initialize() {
|
||||
this.vmb8inConfig = getConfigAs(VelbusVMB8INConfig.class);
|
||||
|
||||
super.initialize();
|
||||
|
||||
initializeAutomaticRefresh();
|
||||
}
|
||||
|
||||
private void initializeAutomaticRefresh() {
|
||||
int refreshInterval = vmb8inConfig.refresh;
|
||||
|
||||
if (refreshInterval > 0) {
|
||||
startAutomaticRefresh(refreshInterval);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void dispose() {
|
||||
final ScheduledFuture<?> refreshJob = this.refreshJob;
|
||||
if (refreshJob != null) {
|
||||
refreshJob.cancel(true);
|
||||
}
|
||||
this.refreshJob = null;
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
private void startAutomaticRefresh(int refreshInterval) {
|
||||
VelbusBridgeHandler velbusBridgeHandler = getVelbusBridgeHandler();
|
||||
if (velbusBridgeHandler == null) {
|
||||
updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.BRIDGE_OFFLINE);
|
||||
return;
|
||||
}
|
||||
|
||||
refreshJob = scheduler.scheduleWithFixedDelay(() -> {
|
||||
sendCounterStatusRequest(velbusBridgeHandler, ALL_CHANNELS);
|
||||
}, 0, refreshInterval, TimeUnit.SECONDS);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handleCommand(ChannelUID channelUID, Command command) {
|
||||
super.handleCommand(channelUID, command);
|
||||
|
||||
VelbusBridgeHandler velbusBridgeHandler = getVelbusBridgeHandler();
|
||||
if (velbusBridgeHandler == null) {
|
||||
updateStatus(ThingStatus.OFFLINE, ThingStatusDetail.BRIDGE_OFFLINE);
|
||||
return;
|
||||
}
|
||||
|
||||
if (command instanceof RefreshType) {
|
||||
if (channelUID.equals(counter1Channel)) {
|
||||
sendCounterStatusRequest(velbusBridgeHandler, (byte) 0x01);
|
||||
} else if (channelUID.equals(counter2Channel)) {
|
||||
sendCounterStatusRequest(velbusBridgeHandler, (byte) 0x02);
|
||||
} else if (channelUID.equals(counter3Channel)) {
|
||||
sendCounterStatusRequest(velbusBridgeHandler, (byte) 0x04);
|
||||
} else if (channelUID.equals(counter4Channel)) {
|
||||
sendCounterStatusRequest(velbusBridgeHandler, (byte) 0x08);
|
||||
} else if (channelUID.equals(counter5Channel)) {
|
||||
sendCounterStatusRequest(velbusBridgeHandler, (byte) 0x10);
|
||||
} else if (channelUID.equals(counter6Channel)) {
|
||||
sendCounterStatusRequest(velbusBridgeHandler, (byte) 0x20);
|
||||
} else if (channelUID.equals(counter7Channel)) {
|
||||
sendCounterStatusRequest(velbusBridgeHandler, (byte) 0x40);
|
||||
} else if (channelUID.equals(counter8Channel)) {
|
||||
sendCounterStatusRequest(velbusBridgeHandler, (byte) 0x80);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected void sendCounterStatusRequest(VelbusBridgeHandler velbusBridgeHandler, byte channel) {
|
||||
VelbusCounterStatusRequestPacket packet = new VelbusCounterStatusRequestPacket(
|
||||
new VelbusChannelIdentifier(getModuleAddress().getAddress(), channel));
|
||||
|
||||
byte[] packetBytes = packet.getBytes();
|
||||
velbusBridgeHandler.sendPacket(packetBytes);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onPacketReceived(byte[] packet) {
|
||||
if (!super.onPacketReceived(packet)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (packet[0] == VelbusPacket.STX && packet.length >= 5) {
|
||||
byte command = packet[4];
|
||||
|
||||
if (command == COMMAND_COUNTER_VALUE && packet.length >= 12) {
|
||||
int counterChannel = (packet[5] >> 4) & 0x07;
|
||||
|
||||
double counterValue = ((double) (((packet[8] & 0xff) << 24) | ((packet[9] & 0xff) << 16)
|
||||
| ((packet[10] & 0xff) << 8) | (packet[11] & 0xff)));
|
||||
double currentValue = ((double) (((packet[6] & 0xff) << 8) | (packet[7] & 0xff)));
|
||||
|
||||
switch (counterChannel) {
|
||||
case 0x00:
|
||||
if (COUNTER_UNIT_KWH.equals(vmb8inConfig.counter1Unit)) {
|
||||
updateState(counter1Channel,
|
||||
new QuantityType<Energy>(counterValue / 1000, Units.KILOWATT_HOUR));
|
||||
updateState(counter1ChannelCurrent, new QuantityType<Power>(currentValue, Units.WATT));
|
||||
} else if (COUNTER_UNIT_M3.equals(vmb8inConfig.counter1Unit)) {
|
||||
updateState(counter1Channel, new QuantityType<Volume>(counterValue, Units.LITRE));
|
||||
updateState(counter1ChannelCurrent, new QuantityType<Volume>(currentValue, Units.LITRE));
|
||||
} else if (COUNTER_UNIT_LITERS.equals(vmb8inConfig.counter1Unit)) {
|
||||
updateState(counter1Channel, new QuantityType<Volume>(counterValue / 1000, Units.LITRE));
|
||||
updateState(counter1ChannelCurrent,
|
||||
new QuantityType<Volume>(currentValue / 1000, Units.LITRE));
|
||||
}
|
||||
break;
|
||||
case 0x01:
|
||||
if (COUNTER_UNIT_KWH.equals(vmb8inConfig.counter2Unit)) {
|
||||
updateState(counter2Channel,
|
||||
new QuantityType<Energy>(counterValue / 1000, Units.KILOWATT_HOUR));
|
||||
updateState(counter2ChannelCurrent, new QuantityType<Power>(currentValue, Units.WATT));
|
||||
} else if (COUNTER_UNIT_M3.equals(vmb8inConfig.counter2Unit)) {
|
||||
updateState(counter2Channel, new QuantityType<Volume>(counterValue, Units.LITRE));
|
||||
updateState(counter2ChannelCurrent, new QuantityType<Volume>(currentValue, Units.LITRE));
|
||||
} else if (COUNTER_UNIT_LITERS.equals(vmb8inConfig.counter2Unit)) {
|
||||
updateState(counter2Channel, new QuantityType<Volume>(counterValue / 1000, Units.LITRE));
|
||||
updateState(counter2ChannelCurrent,
|
||||
new QuantityType<Volume>(currentValue / 1000, Units.LITRE));
|
||||
}
|
||||
break;
|
||||
case 0x02:
|
||||
if (COUNTER_UNIT_KWH.equals(vmb8inConfig.counter3Unit)) {
|
||||
updateState(counter3Channel,
|
||||
new QuantityType<Energy>(counterValue / 1000, Units.KILOWATT_HOUR));
|
||||
updateState(counter3ChannelCurrent, new QuantityType<Power>(currentValue, Units.WATT));
|
||||
} else if (COUNTER_UNIT_M3.equals(vmb8inConfig.counter3Unit)) {
|
||||
updateState(counter3Channel, new QuantityType<Volume>(counterValue, Units.LITRE));
|
||||
updateState(counter3ChannelCurrent, new QuantityType<Volume>(currentValue, Units.LITRE));
|
||||
} else if (COUNTER_UNIT_LITERS.equals(vmb8inConfig.counter3Unit)) {
|
||||
updateState(counter3Channel, new QuantityType<Volume>(counterValue / 1000, Units.LITRE));
|
||||
updateState(counter3ChannelCurrent,
|
||||
new QuantityType<Volume>(currentValue / 1000, Units.LITRE));
|
||||
}
|
||||
break;
|
||||
case 0x03:
|
||||
if (COUNTER_UNIT_KWH.equals(vmb8inConfig.counter4Unit)) {
|
||||
updateState(counter4Channel,
|
||||
new QuantityType<Energy>(counterValue / 1000, Units.KILOWATT_HOUR));
|
||||
updateState(counter4ChannelCurrent, new QuantityType<Power>(currentValue, Units.WATT));
|
||||
} else if (COUNTER_UNIT_M3.equals(vmb8inConfig.counter4Unit)) {
|
||||
updateState(counter4Channel, new QuantityType<Volume>(counterValue, Units.LITRE));
|
||||
updateState(counter4ChannelCurrent, new QuantityType<Volume>(currentValue, Units.LITRE));
|
||||
} else if (COUNTER_UNIT_LITERS.equals(vmb8inConfig.counter4Unit)) {
|
||||
updateState(counter4Channel, new QuantityType<Volume>(counterValue / 1000, Units.LITRE));
|
||||
updateState(counter4ChannelCurrent,
|
||||
new QuantityType<Volume>(currentValue / 1000, Units.LITRE));
|
||||
}
|
||||
break;
|
||||
case 0x04:
|
||||
if (COUNTER_UNIT_KWH.equals(vmb8inConfig.counter5Unit)) {
|
||||
updateState(counter5Channel,
|
||||
new QuantityType<Energy>(counterValue / 1000, Units.KILOWATT_HOUR));
|
||||
updateState(counter5ChannelCurrent, new QuantityType<Power>(currentValue, Units.WATT));
|
||||
} else if (COUNTER_UNIT_M3.equals(vmb8inConfig.counter5Unit)) {
|
||||
updateState(counter5Channel, new QuantityType<Volume>(counterValue, Units.LITRE));
|
||||
updateState(counter5ChannelCurrent, new QuantityType<Volume>(currentValue, Units.LITRE));
|
||||
} else if (COUNTER_UNIT_LITERS.equals(vmb8inConfig.counter5Unit)) {
|
||||
updateState(counter5Channel, new QuantityType<Volume>(counterValue / 1000, Units.LITRE));
|
||||
updateState(counter5ChannelCurrent,
|
||||
new QuantityType<Volume>(currentValue / 1000, Units.LITRE));
|
||||
}
|
||||
break;
|
||||
case 0x05:
|
||||
if (COUNTER_UNIT_KWH.equals(vmb8inConfig.counter6Unit)) {
|
||||
updateState(counter6Channel,
|
||||
new QuantityType<Energy>(counterValue / 1000, Units.KILOWATT_HOUR));
|
||||
updateState(counter6ChannelCurrent, new QuantityType<Power>(currentValue, Units.WATT));
|
||||
} else if (COUNTER_UNIT_M3.equals(vmb8inConfig.counter6Unit)) {
|
||||
updateState(counter6Channel, new QuantityType<Volume>(counterValue, Units.LITRE));
|
||||
updateState(counter6ChannelCurrent, new QuantityType<Volume>(currentValue, Units.LITRE));
|
||||
} else if (COUNTER_UNIT_LITERS.equals(vmb8inConfig.counter6Unit)) {
|
||||
updateState(counter6Channel, new QuantityType<Volume>(counterValue / 1000, Units.LITRE));
|
||||
updateState(counter6ChannelCurrent,
|
||||
new QuantityType<Volume>(currentValue / 1000, Units.LITRE));
|
||||
}
|
||||
break;
|
||||
case 0x06:
|
||||
if (COUNTER_UNIT_KWH.equals(vmb8inConfig.counter7Unit)) {
|
||||
updateState(counter7Channel,
|
||||
new QuantityType<Energy>(counterValue / 1000, Units.KILOWATT_HOUR));
|
||||
updateState(counter7ChannelCurrent, new QuantityType<Power>(currentValue, Units.WATT));
|
||||
} else if (COUNTER_UNIT_M3.equals(vmb8inConfig.counter7Unit)) {
|
||||
updateState(counter7Channel, new QuantityType<Volume>(counterValue, Units.LITRE));
|
||||
updateState(counter7ChannelCurrent, new QuantityType<Volume>(currentValue, Units.LITRE));
|
||||
} else if (COUNTER_UNIT_LITERS.equals(vmb8inConfig.counter7Unit)) {
|
||||
updateState(counter7Channel, new QuantityType<Volume>(counterValue / 1000, Units.LITRE));
|
||||
updateState(counter7ChannelCurrent,
|
||||
new QuantityType<Volume>(currentValue / 1000, Units.LITRE));
|
||||
}
|
||||
break;
|
||||
case 0x07:
|
||||
if (COUNTER_UNIT_KWH.equals(vmb8inConfig.counter8Unit)) {
|
||||
updateState(counter8Channel,
|
||||
new QuantityType<Energy>(counterValue / 1000, Units.KILOWATT_HOUR));
|
||||
updateState(counter8ChannelCurrent, new QuantityType<Power>(currentValue, Units.WATT));
|
||||
} else if (COUNTER_UNIT_M3.equals(vmb8inConfig.counter8Unit)) {
|
||||
updateState(counter8Channel, new QuantityType<Volume>(counterValue, Units.LITRE));
|
||||
updateState(counter8ChannelCurrent, new QuantityType<Volume>(currentValue, Units.LITRE));
|
||||
} else if (COUNTER_UNIT_LITERS.equals(vmb8inConfig.counter8Unit)) {
|
||||
updateState(counter8Channel, new QuantityType<Volume>(counterValue / 1000, Units.LITRE));
|
||||
updateState(counter8ChannelCurrent,
|
||||
new QuantityType<Volume>(currentValue / 1000, Units.LITRE));
|
||||
}
|
||||
break;
|
||||
default:
|
||||
throw new IllegalArgumentException(
|
||||
"The given channel is not a counter channel: " + counterChannel);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
+2
-1
@@ -126,8 +126,9 @@ public class VelbusVMBDALIHandler extends VelbusSensorWithAlarmClockHandler {
|
||||
final ScheduledFuture<?> refreshJob = this.refreshJob;
|
||||
if (refreshJob != null) {
|
||||
refreshJob.cancel(true);
|
||||
this.refreshJob = null;
|
||||
}
|
||||
this.refreshJob = null;
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
private void startAutomaticRefresh(int refreshInterval) {
|
||||
|
||||
+109
-51
@@ -211,7 +211,102 @@
|
||||
</options>
|
||||
<advanced>true</advanced>
|
||||
</parameter>
|
||||
<parameter name="counter5Unit" type="text">
|
||||
</config-description>
|
||||
|
||||
<config-description uri="thing-type:velbus:8channelDeviceWith8Counters">
|
||||
<parameter name="address" type="text" required="true">
|
||||
<label>Address</label>
|
||||
<description>The velbus address of the device</description>
|
||||
</parameter>
|
||||
<parameter name="refresh" type="integer" unit="s">
|
||||
<label>Refresh Interval</label>
|
||||
<description>Refresh interval for the counters (in seconds), default 300. If set to 0 or left empty, no refresh will
|
||||
be scheduled.</description>
|
||||
<default>300</default>
|
||||
<advanced>true</advanced>
|
||||
</parameter>
|
||||
<parameter name="CH1" type="text">
|
||||
<label>CH1 Name</label>
|
||||
<description>The name of CH1.</description>
|
||||
<default>CH1</default>
|
||||
<advanced>true</advanced>
|
||||
</parameter>
|
||||
<parameter name="CH2" type="text">
|
||||
<label>CH2 Name</label>
|
||||
<description>The name of CH2.</description>
|
||||
<default>CH2</default>
|
||||
<advanced>true</advanced>
|
||||
</parameter>
|
||||
<parameter name="CH3" type="text">
|
||||
<label>CH3 Name</label>
|
||||
<description>The name of CH3.</description>
|
||||
<default>CH3</default>
|
||||
<advanced>true</advanced>
|
||||
</parameter>
|
||||
<parameter name="CH4" type="text">
|
||||
<label>CH4 Name</label>
|
||||
<description>The name of CH4.</description>
|
||||
<default>CH4</default>
|
||||
<advanced>true</advanced>
|
||||
</parameter>
|
||||
<parameter name="CH5" type="text">
|
||||
<label>CH5 Name</label>
|
||||
<description>The name of CH5.</description>
|
||||
<default>CH5</default>
|
||||
<advanced>true</advanced>
|
||||
</parameter>
|
||||
<parameter name="CH6" type="text">
|
||||
<label>CH6 Name</label>
|
||||
<description>The name of CH6.</description>
|
||||
<default>CH6</default>
|
||||
<advanced>true</advanced>
|
||||
</parameter>
|
||||
<parameter name="CH7" type="text">
|
||||
<label>CH7 Name</label>
|
||||
<description>The name of CH7.</description>
|
||||
<default>CH7</default>
|
||||
<advanced>true</advanced>
|
||||
</parameter>
|
||||
<parameter name="CH8" type="text">
|
||||
<label>CH8 Name</label>
|
||||
<description>The name of CH8.</description>
|
||||
<default>CH8</default>
|
||||
<advanced>true</advanced>
|
||||
</parameter>
|
||||
<parameter name="counter1Unit" type="text">
|
||||
<label>Counter 1 Unit</label>
|
||||
<description>The unit for Counter 1.</description>
|
||||
<default>kWh</default>
|
||||
<options>
|
||||
<option value="kWh">kWh</option>
|
||||
<option value="liters">liters</option>
|
||||
<option value="m³">m³</option>
|
||||
</options>
|
||||
<advanced>true</advanced>
|
||||
</parameter>
|
||||
<parameter name="counter2Unit" type="text">
|
||||
<label>Counter 2 Unit</label>
|
||||
<description>The unit for Counter 2.</description>
|
||||
<default>kWh</default>
|
||||
<options>
|
||||
<option value="kWh">kWh</option>
|
||||
<option value="liters">liters</option>
|
||||
<option value="m³">m³</option>
|
||||
</options>
|
||||
<advanced>true</advanced>
|
||||
</parameter>
|
||||
<parameter name="counter3Unit" type="text">
|
||||
<label>Counter 3 Unit</label>
|
||||
<description>The unit for Counter 3.</description>
|
||||
<default>kWh</default>
|
||||
<options>
|
||||
<option value="kWh">kWh</option>
|
||||
<option value="liters">liters</option>
|
||||
<option value="m³">m³</option>
|
||||
</options>
|
||||
<advanced>true</advanced>
|
||||
</parameter>
|
||||
<parameter name="counter4Unit" type="text">
|
||||
<label>Counter 4 Unit</label>
|
||||
<description>The unit for Counter 4.</description>
|
||||
<default>kWh</default>
|
||||
@@ -222,21 +317,20 @@
|
||||
</options>
|
||||
<advanced>true</advanced>
|
||||
</parameter>
|
||||
<parameter name="counter5PulseMultiplier" type="decimal">
|
||||
<label>Counter 4 Pulse Multiplier</label>
|
||||
<description>The pulse multiplier for counter 4.</description>
|
||||
<default>1</default>
|
||||
<parameter name="counter5Unit" type="text">
|
||||
<label>Counter 5 Unit</label>
|
||||
<description>The unit for Counter 5.</description>
|
||||
<default>kWh</default>
|
||||
<options>
|
||||
<option value="1">x1</option>
|
||||
<option value="2.5">x2.5</option>
|
||||
<option value="0.05">x0.05</option>
|
||||
<option value="0.01">x0.01</option>
|
||||
<option value="kWh">kWh</option>
|
||||
<option value="liters">liters</option>
|
||||
<option value="m³">m³</option>
|
||||
</options>
|
||||
<advanced>true</advanced>
|
||||
</parameter>
|
||||
<parameter name="counter6Unit" type="text">
|
||||
<label>Counter 4 Unit</label>
|
||||
<description>The unit for Counter 4.</description>
|
||||
<label>Counter 6 Unit</label>
|
||||
<description>The unit for Counter 6.</description>
|
||||
<default>kWh</default>
|
||||
<options>
|
||||
<option value="kWh">kWh</option>
|
||||
@@ -245,21 +339,9 @@
|
||||
</options>
|
||||
<advanced>true</advanced>
|
||||
</parameter>
|
||||
<parameter name="counter6PulseMultiplier" type="decimal">
|
||||
<label>Counter 4 Pulse Multiplier</label>
|
||||
<description>The pulse multiplier for counter 4.</description>
|
||||
<default>1</default>
|
||||
<options>
|
||||
<option value="1">x1</option>
|
||||
<option value="2.5">x2.5</option>
|
||||
<option value="0.05">x0.05</option>
|
||||
<option value="0.01">x0.01</option>
|
||||
</options>
|
||||
<advanced>true</advanced>
|
||||
</parameter>
|
||||
<parameter name="counter7Unit" type="text">
|
||||
<label>Counter 4 Unit</label>
|
||||
<description>The unit for Counter 4.</description>
|
||||
<label>Counter 7 Unit</label>
|
||||
<description>The unit for Counter 7.</description>
|
||||
<default>kWh</default>
|
||||
<options>
|
||||
<option value="kWh">kWh</option>
|
||||
@@ -268,21 +350,9 @@
|
||||
</options>
|
||||
<advanced>true</advanced>
|
||||
</parameter>
|
||||
<parameter name="counter7PulseMultiplier" type="decimal">
|
||||
<label>Counter 4 Pulse Multiplier</label>
|
||||
<description>The pulse multiplier for counter 4.</description>
|
||||
<default>1</default>
|
||||
<options>
|
||||
<option value="1">x1</option>
|
||||
<option value="2.5">x2.5</option>
|
||||
<option value="0.05">x0.05</option>
|
||||
<option value="0.01">x0.01</option>
|
||||
</options>
|
||||
<advanced>true</advanced>
|
||||
</parameter>
|
||||
<parameter name="counter8Unit" type="text">
|
||||
<label>Counter 4 Unit</label>
|
||||
<description>The unit for Counter 4.</description>
|
||||
<label>Counter 8 Unit</label>
|
||||
<description>The unit for Counter 8.</description>
|
||||
<default>kWh</default>
|
||||
<options>
|
||||
<option value="kWh">kWh</option>
|
||||
@@ -291,18 +361,6 @@
|
||||
</options>
|
||||
<advanced>true</advanced>
|
||||
</parameter>
|
||||
<parameter name="counter8PulseMultiplier" type="decimal">
|
||||
<label>Counter 4 Pulse Multiplier</label>
|
||||
<description>The pulse multiplier for counter 4.</description>
|
||||
<default>1</default>
|
||||
<options>
|
||||
<option value="1">x1</option>
|
||||
<option value="2.5">x2.5</option>
|
||||
<option value="0.05">x0.05</option>
|
||||
<option value="0.01">x0.01</option>
|
||||
</options>
|
||||
<advanced>true</advanced>
|
||||
</parameter>
|
||||
</config-description>
|
||||
|
||||
</config-description:config-descriptions>
|
||||
|
||||
+155
-44
@@ -610,6 +610,66 @@ thing-type.config.velbus.8channelDevice.CH8.label = CH8 Name
|
||||
thing-type.config.velbus.8channelDevice.CH8.description = The name of CH8.
|
||||
thing-type.config.velbus.8channelDevice.address.label = Address
|
||||
thing-type.config.velbus.8channelDevice.address.description = The velbus address of the device
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.CH1.label = CH1 Name
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.CH1.description = The name of CH1.
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.CH2.label = CH2 Name
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.CH2.description = The name of CH2.
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.CH3.label = CH3 Name
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.CH3.description = The name of CH3.
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.CH4.label = CH4 Name
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.CH4.description = The name of CH4.
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.CH5.label = CH5 Name
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.CH5.description = The name of CH5.
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.CH6.label = CH6 Name
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.CH6.description = The name of CH6.
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.CH7.label = CH7 Name
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.CH7.description = The name of CH7.
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.CH8.label = CH8 Name
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.CH8.description = The name of CH8.
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.address.label = Address
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.address.description = The velbus address of the device
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter1Unit.label = Counter 1 Unit
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter1Unit.description = The unit for Counter 1.
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter1Unit.option.kWh = kWh
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter1Unit.option.liters = liters
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter1Unit.option.m³ = m³
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter2Unit.label = Counter 2 Unit
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter2Unit.description = The unit for Counter 2.
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter2Unit.option.kWh = kWh
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter2Unit.option.liters = liters
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter2Unit.option.m³ = m³
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter3Unit.label = Counter 3 Unit
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter3Unit.description = The unit for Counter 3.
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter3Unit.option.kWh = kWh
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter3Unit.option.liters = liters
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter3Unit.option.m³ = m³
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter4Unit.label = Counter 4 Unit
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter4Unit.description = The unit for Counter 4.
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter4Unit.option.kWh = kWh
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter4Unit.option.liters = liters
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter4Unit.option.m³ = m³
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter5Unit.label = Counter 5 Unit
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter5Unit.description = The unit for Counter 5.
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter5Unit.option.kWh = kWh
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter5Unit.option.liters = liters
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter5Unit.option.m³ = m³
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter6Unit.label = Counter 6 Unit
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter6Unit.description = The unit for Counter 6.
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter6Unit.option.kWh = kWh
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter6Unit.option.liters = liters
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter6Unit.option.m³ = m³
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter7Unit.label = Counter 7 Unit
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter7Unit.description = The unit for Counter 7.
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter7Unit.option.kWh = kWh
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter7Unit.option.liters = liters
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter7Unit.option.m³ = m³
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter8Unit.label = Counter 8 Unit
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter8Unit.description = The unit for Counter 8.
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter8Unit.option.kWh = kWh
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter8Unit.option.liters = liters
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter8Unit.option.m³ = m³
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.refresh.label = Refresh Interval
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.refresh.description = Refresh interval for the counters (in seconds), default 300. If set to 0 or left empty, no refresh will be scheduled.
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.CH1.label = CH1 Name
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.CH1.description = The name of CH1.
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.CH2.label = CH2 Name
|
||||
@@ -672,50 +732,6 @@ thing-type.config.velbus.8channelDeviceWithCounters.counter4Unit.description = T
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter4Unit.option.kWh = kWh
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter4Unit.option.liters = liters
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter4Unit.option.m³ = m³
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter5PulseMultiplier.label = Counter 4 Pulse Multiplier
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter5PulseMultiplier.description = The pulse multiplier for counter 4.
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter5PulseMultiplier.option.1 = x1
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter5PulseMultiplier.option.2.5 = x2.5
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter5PulseMultiplier.option.0.05 = x0.05
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter5PulseMultiplier.option.0.01 = x0.01
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter5Unit.label = Counter 4 Unit
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter5Unit.description = The unit for Counter 4.
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter5Unit.option.kWh = kWh
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter5Unit.option.liters = liters
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter5Unit.option.m³ = m³
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter6PulseMultiplier.label = Counter 4 Pulse Multiplier
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter6PulseMultiplier.description = The pulse multiplier for counter 4.
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter6PulseMultiplier.option.1 = x1
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter6PulseMultiplier.option.2.5 = x2.5
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter6PulseMultiplier.option.0.05 = x0.05
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter6PulseMultiplier.option.0.01 = x0.01
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter6Unit.label = Counter 4 Unit
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter6Unit.description = The unit for Counter 4.
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter6Unit.option.kWh = kWh
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter6Unit.option.liters = liters
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter6Unit.option.m³ = m³
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter7PulseMultiplier.label = Counter 4 Pulse Multiplier
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter7PulseMultiplier.description = The pulse multiplier for counter 4.
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter7PulseMultiplier.option.1 = x1
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter7PulseMultiplier.option.2.5 = x2.5
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter7PulseMultiplier.option.0.05 = x0.05
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter7PulseMultiplier.option.0.01 = x0.01
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter7Unit.label = Counter 4 Unit
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter7Unit.description = The unit for Counter 4.
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter7Unit.option.kWh = kWh
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter7Unit.option.liters = liters
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter7Unit.option.m³ = m³
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter8PulseMultiplier.label = Counter 4 Pulse Multiplier
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter8PulseMultiplier.description = The pulse multiplier for counter 4.
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter8PulseMultiplier.option.1 = x1
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter8PulseMultiplier.option.2.5 = x2.5
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter8PulseMultiplier.option.0.05 = x0.05
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter8PulseMultiplier.option.0.01 = x0.01
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter8Unit.label = Counter 4 Unit
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter8Unit.description = The unit for Counter 4.
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter8Unit.option.kWh = kWh
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter8Unit.option.liters = liters
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter8Unit.option.m³ = m³
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.refresh.label = Refresh Interval
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.refresh.description = Refresh interval for the counters (in seconds), default 300. If set to 0 or left empty, no refresh will be scheduled.
|
||||
thing-type.config.velbus.9channelDeviceWithTemperatureSensor.CH1.label = CH1 Name
|
||||
@@ -971,6 +987,101 @@ channel-type.velbus.windspeed.description = Currently measured wind speed
|
||||
|
||||
# thing types config
|
||||
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter1Unit.option.kwh = kWh
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter1Unit.option.m3 = m³
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter1Unit.option.l = liters
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter2Unit.option.kwh = kWh
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter2Unit.option.m3 = m³
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter2Unit.option.l = liters
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter3Unit.option.kwh = kWh
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter3Unit.option.m3 = m³
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter3Unit.option.l = liters
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter4Unit.option.kwh = kWh
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter4Unit.option.m3 = m³
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter4Unit.option.l = liters
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter5Unit.option.kwh = kWh
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter5Unit.option.m3 = m³
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter5Unit.option.l = liters
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter6Unit.option.kwh = kWh
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter6Unit.option.m3 = m³
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter6Unit.option.l = liters
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter7Unit.option.kwh = kWh
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter7Unit.option.m3 = m³
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter7Unit.option.l = liters
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter8Unit.option.kwh = kWh
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter8Unit.option.m3 = m³
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter8Unit.option.l = liters
|
||||
|
||||
# thing types config
|
||||
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter1Unit.option.Wh = Wh
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter1Unit.option.ml = ml
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter2Unit.option.Wh = Wh
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter2Unit.option.ml = ml
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter3Unit.option.Wh = Wh
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter3Unit.option.ml = ml
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter4Unit.option.Wh = Wh
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter4Unit.option.ml = ml
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter5Unit.option.Wh = Wh
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter5Unit.option.ml = ml
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter6Unit.option.Wh = Wh
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter6Unit.option.ml = ml
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter7Unit.option.Wh = Wh
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter7Unit.option.ml = ml
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter8Unit.option.Wh = Wh
|
||||
thing-type.config.velbus.8channelDeviceWith8Counters.counter8Unit.option.ml = ml
|
||||
|
||||
# thing types config
|
||||
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter2Unit.option.Wh = Wh
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter4Unit.option.Wh = kWh
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter5PulseMultiplier.label = Counter 5 Pulse Multiplier
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter5PulseMultiplier.description = The pulse multiplier for counter 5.
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter5PulseMultiplier.option.1 = x1
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter5PulseMultiplier.option.2.5 = x2.5
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter5PulseMultiplier.option.0.05 = x0.05
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter5PulseMultiplier.option.0.01 = x0.01
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter5Unit.label = Counter 5 Unit
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter5Unit.description = The unit for Counter 5.
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter5Unit.option.kWh = kWh
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter5Unit.option.liters = liters
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter5Unit.option.m³ = m³
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter6PulseMultiplier.label = Counter 6 Pulse Multiplier
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter6PulseMultiplier.description = The pulse multiplier for counter 6.
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter6PulseMultiplier.option.1 = x1
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter6PulseMultiplier.option.2.5 = x2.5
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter6PulseMultiplier.option.0.05 = x0.05
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter6PulseMultiplier.option.0.01 = x0.01
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter6Unit.label = Counter 6 Unit
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter6Unit.description = The unit for Counter 6.
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter6Unit.option.kWh = kWh
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter6Unit.option.liters = liters
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter6Unit.option.m³ = m³
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter7PulseMultiplier.label = Counter 7 Pulse Multiplier
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter7PulseMultiplier.description = The pulse multiplier for counter 7.
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter7PulseMultiplier.option.1 = x1
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter7PulseMultiplier.option.2.5 = x2.5
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter7PulseMultiplier.option.0.05 = x0.05
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter7PulseMultiplier.option.0.01 = x0.01
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter7Unit.label = Counter 7 Unit
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter7Unit.description = The unit for Counter 7.
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter7Unit.option.kWh = kWh
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter7Unit.option.liters = liters
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter7Unit.option.m³ = m³
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter8PulseMultiplier.label = Counter 8 Pulse Multiplier
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter8PulseMultiplier.description = The pulse multiplier for counter 8.
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter8PulseMultiplier.option.1 = x1
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter8PulseMultiplier.option.2.5 = x2.5
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter8PulseMultiplier.option.0.05 = x0.05
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter8PulseMultiplier.option.0.01 = x0.01
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter8Unit.label = Counter 8 Unit
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter8Unit.description = The unit for Counter 8.
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter8Unit.option.kWh = kWh
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter8Unit.option.liters = liters
|
||||
thing-type.config.velbus.8channelDeviceWithCounters.counter8Unit.option.m³ = m³
|
||||
|
||||
# thing types config
|
||||
|
||||
thing-type.config.velbus.7channelDeviceWithCounters.CH1.label = CH1 Name
|
||||
thing-type.config.velbus.7channelDeviceWithCounters.CH1.description = The name of CH1.
|
||||
thing-type.config.velbus.7channelDeviceWithCounters.CH2.label = CH2 Name
|
||||
|
||||
+1
-1
@@ -141,7 +141,7 @@
|
||||
<channel-group id="clockAlarm" typeId="clockAlarm"/>
|
||||
</channel-groups>
|
||||
|
||||
<config-description-ref uri="thing-type:velbus:8channelDeviceWithCounters"/>
|
||||
<config-description-ref uri="thing-type:velbus:8channelDeviceWith8Counters"/>
|
||||
</thing-type>
|
||||
|
||||
<thing-type id="vmb8ir">
|
||||
|
||||
Reference in New Issue
Block a user