[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:
Daniel Rosengarten
2025-03-07 09:54:02 +01:00
committed by GitHub
parent 79a3c1b242
commit 02d33f1d24
16 changed files with 616 additions and 108 deletions
+4 -8
View File
@@ -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. |
@@ -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;
@@ -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;
}
@@ -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)) {
@@ -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]);
@@ -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 = "";
}
@@ -150,6 +150,7 @@ public abstract class VelbusBridgeHandler extends BaseBridgeHandler {
if (timeUpdateJob != null) {
timeUpdateJob.cancel(true);
}
this.timeUpdateJob = null;
disconnect();
}
@@ -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) {
@@ -74,6 +74,7 @@ public abstract class VelbusTemperatureSensorHandler extends VelbusSensorWithAla
if (refreshJob != null) {
refreshJob.cancel(true);
}
this.refreshJob = null;
super.dispose();
}
@@ -93,6 +93,7 @@ public class VelbusVMB4ANHandler extends VelbusSensorWithAlarmClockHandler {
if (refreshJob != null) {
refreshJob.cancel(true);
}
this.refreshJob = null;
super.dispose();
}
@@ -85,6 +85,7 @@ public class VelbusVMB7INHandler extends VelbusSensorWithAlarmClockHandler {
if (refreshJob != null) {
refreshJob.cancel(true);
}
this.refreshJob = null;
super.dispose();
}
@@ -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 = "";
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;
}
}
@@ -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) {
@@ -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³"></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³"></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³"></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=""></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>
@@ -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³ =
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³ =
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³ =
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³ =
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³ =
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³ =
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³ =
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³ =
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³ =
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³ =
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³ =
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³ =
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³ =
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 =
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 =
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 =
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 =
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 =
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 =
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 =
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 =
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³ =
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³ =
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³ =
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³ =
# 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
@@ -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">