[dsmr] Add support for capacity tariff for Belgium (#15038)

* Added support for capacity tafiff for Belgium

Signed-off-by: Lennert Coopman <github@coopman.org>
This commit is contained in:
coop-git 2024-03-12 05:33:39 +01:00 committed by GitHub
parent 100b0c154e
commit 7dfebd66ce
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 20 additions and 3 deletions

View File

@ -204,6 +204,8 @@ The following channels are supported:
| `emeter_active_import_power` | Number:Power | Aggregate active import power (W) | Y | - | - | - | - | - | - | - | - | - | - | | `emeter_active_import_power` | Number:Power | Aggregate active import power (W) | Y | - | - | - | - | - | - | - | - | - | - |
| `emeter_actual_delivery` | Number:Power | Current power delivery (kW) | - | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y | | `emeter_actual_delivery` | Number:Power | Current power delivery (kW) | - | Y | Y | Y | Y | Y | Y | Y | Y | Y | Y |
| `emeter_actual_production` | Number:Power | Current power production (kW) | - | - | - | Y | Y | Y | Y | Y | Y | Y | Y | | `emeter_actual_production` | Number:Power | Current power production (kW) | - | - | - | Y | Y | Y | Y | Y | Y | Y | Y |
| `emeter_actual_demand` | Number:Power | Current power delivery demand (kW) | - | - | - | Y | Y | Y | Y | Y | Y | Y | Y |
| `emeter_maximum_demand_current_month` | Number:Power | Maximum power delivery demand current month (kW) | - | - | - | Y | Y | Y | Y | Y | Y | Y | Y |
| `emeter_actual_reactive_delivery` | Number | Actual Reactive Power Delivery (kvar) | - | - | - | - | - | - | - | - | Y | - | Y | | `emeter_actual_reactive_delivery` | Number | Actual Reactive Power Delivery (kvar) | - | - | - | - | - | - | - | - | Y | - | Y |
| `emeter_actual_reactive_production` | Number | Actual Reactive Power Production (kvar) | - | - | - | - | - | - | - | - | Y | - | Y | | `emeter_actual_reactive_production` | Number | Actual Reactive Power Production (kvar) | - | - | - | - | - | - | - | - | Y | - | Y |
| `emeter_active_threshold_smax` | Number | Active threshold (SMAX) (kVA) | - | - | - | - | - | - | - | - | Y | - | - | | `emeter_active_threshold_smax` | Number | Active threshold (SMAX) (kVA) | - | - | - | - | - | - | - | - | Y | - | - |

View File

@ -35,6 +35,7 @@ import org.openhab.core.library.unit.Units;
* *
* @author M. Volaart - Initial contribution * @author M. Volaart - Initial contribution
* @author Hilbrand Bouwkamp - Cosem subclasses made into factory classes and introduced quantity type * @author Hilbrand Bouwkamp - Cosem subclasses made into factory classes and introduced quantity type
* @author Lennert Coopman - Added capacity tariff channels for Belgium: actual and current month
*/ */
@NonNullByDefault @NonNullByDefault
public enum CosemObjectType { public enum CosemObjectType {
@ -69,6 +70,8 @@ public enum CosemObjectType {
EMETER_TARIFF_INDICATOR(new OBISIdentifier(0, 96, 14, 0), CosemString.INSTANCE), EMETER_TARIFF_INDICATOR(new OBISIdentifier(0, 96, 14, 0), CosemString.INSTANCE),
EMETER_ACTIVE_IMPORT_POWER(new OBISIdentifier(1, 15, 7, 0), CosemQuantity.WATT), EMETER_ACTIVE_IMPORT_POWER(new OBISIdentifier(1, 15, 7, 0), CosemQuantity.WATT),
EMETER_ACTUAL_DELIVERY(new OBISIdentifier(1, 1, 7, 0), CosemQuantity.KILO_WATT), EMETER_ACTUAL_DELIVERY(new OBISIdentifier(1, 1, 7, 0), CosemQuantity.KILO_WATT),
EMETER_ACTUAL_DEMAND(new OBISIdentifier(1, 1, 4, 0), CosemQuantity.KILO_WATT),
EMETER_MAXIMUM_DEMAND_CURRENT_MONTH(new OBISIdentifier(1, 1, 6, 0), CosemDate.INSTANCE, CosemQuantity.KILO_WATT),
EMETER_ACTUAL_PRODUCTION(new OBISIdentifier(1, 2, 7, 0), CosemQuantity.KILO_WATT), EMETER_ACTUAL_PRODUCTION(new OBISIdentifier(1, 2, 7, 0), CosemQuantity.KILO_WATT),
EMETER_TRESHOLD_A_V2_1(new OBISIdentifier(1, 17, 0, 0), CosemQuantity.AMPERE), EMETER_TRESHOLD_A_V2_1(new OBISIdentifier(1, 17, 0, 0), CosemQuantity.AMPERE),
EMETER_TRESHOLD_A(new OBISIdentifier(0, 17, 0, 0, true), CosemQuantity.AMPERE), EMETER_TRESHOLD_A(new OBISIdentifier(0, 17, 0, 0, true), CosemQuantity.AMPERE),

View File

@ -36,6 +36,7 @@ import org.slf4j.LoggerFactory;
* Supported meters * Supported meters
* *
* @author M. Volaart - Initial contribution * @author M. Volaart - Initial contribution
* @author Lennert Coopman - Added capacity tariff channels for Belgium: actual and current month
*/ */
@NonNullByDefault @NonNullByDefault
public enum DSMRMeterType { public enum DSMRMeterType {
@ -341,7 +342,8 @@ public enum DSMRMeterType {
CosemObjectType.EMETER_INSTANT_POWER_PRODUCTION_L2, CosemObjectType.EMETER_INSTANT_POWER_PRODUCTION_L3, CosemObjectType.EMETER_INSTANT_POWER_PRODUCTION_L2, CosemObjectType.EMETER_INSTANT_POWER_PRODUCTION_L3,
CosemObjectType.EMETER_INSTANT_CURRENT_L1, CosemObjectType.EMETER_INSTANT_CURRENT_L2, CosemObjectType.EMETER_INSTANT_CURRENT_L1, CosemObjectType.EMETER_INSTANT_CURRENT_L2,
CosemObjectType.EMETER_INSTANT_CURRENT_L3, CosemObjectType.EMETER_INSTANT_VOLTAGE_L1, CosemObjectType.EMETER_INSTANT_CURRENT_L3, CosemObjectType.EMETER_INSTANT_VOLTAGE_L1,
CosemObjectType.EMETER_INSTANT_VOLTAGE_L2, CosemObjectType.EMETER_INSTANT_VOLTAGE_L3 CosemObjectType.EMETER_INSTANT_VOLTAGE_L2, CosemObjectType.EMETER_INSTANT_VOLTAGE_L3,
CosemObjectType.EMETER_ACTUAL_DEMAND, CosemObjectType.EMETER_MAXIMUM_DEMAND_CURRENT_MONTH
}), }),
/** Belgium Smart Gas Meter for the e-MUCS specification */ /** Belgium Smart Gas Meter for the e-MUCS specification */

View File

@ -133,6 +133,8 @@ channel-type.dsmr.activeImportPowerType.label = Aggregate Active Import Power
channel-type.dsmr.activeImportPowerType.description = The aggregate active import power. channel-type.dsmr.activeImportPowerType.description = The aggregate active import power.
channel-type.dsmr.activeThresholdSmax.label = Active Threshold channel-type.dsmr.activeThresholdSmax.label = Active Threshold
channel-type.dsmr.activeThresholdSmax.description = Active threshold (SMAX). channel-type.dsmr.activeThresholdSmax.description = Active threshold (SMAX).
channel-type.dsmr.actualDeliveryBelgiumType.label = Actual Power Delivery
channel-type.dsmr.actualDeliveryBelgiumType.description = The current power delivery.
channel-type.dsmr.actualDeliveryType.label = Actual Power Delivery channel-type.dsmr.actualDeliveryType.label = Actual Power Delivery
channel-type.dsmr.actualDeliveryType.description = The current power delivery. channel-type.dsmr.actualDeliveryType.description = The current power delivery.
channel-type.dsmr.actualFuseThresholdAType.label = Actual Fuse Threshold channel-type.dsmr.actualFuseThresholdAType.label = Actual Fuse Threshold
@ -321,7 +323,6 @@ addon.dsmr.error.configuration.invalidsmartykey = The given Smarty decyption key
addon.dsmr.error.configuration.invalid.decryptionKey = The given Smarty decyption key is invalid. It contains an illegal character: {0} addon.dsmr.error.configuration.invalid.decryptionKey = The given Smarty decyption key is invalid. It contains an illegal character: {0}
addon.dsmr.error.configuration.invalid.additionalKey = The given Smarty additional key is invalid. It contains an illegal character: {0} addon.dsmr.error.configuration.invalid.additionalKey = The given Smarty additional key is invalid. It contains an illegal character: {0}
addon.dsmr.error.thing.nodata = Not receiving data from meter. addon.dsmr.error.thing.nodata = Not receiving data from meter.
addon.dsmr.error.status.invalid_decryption_key = Failed to decrypt P1 telegram due to invalid encryption key addon.dsmr.error.status.invalid_decryption_key = Failed to decrypt P1 telegram due to invalid encryption key
addon.dsmr.error.status.port_dont_exists = Serial port does not exist. addon.dsmr.error.status.port_dont_exists = Serial port does not exist.
addon.dsmr.error.status.port_in_use = Serial port is already in use. addon.dsmr.error.status.port_in_use = Serial port is already in use.
@ -332,4 +333,3 @@ addon.dsmr.error.status.serial_data_read_error = Reading data from the serial po
addon.dsmr.error.status.telegram_crc_error = CRC checksum failed for received P1 telegram. addon.dsmr.error.status.telegram_crc_error = CRC checksum failed for received P1 telegram.
addon.dsmr.error.status.telegram_data_corruption = Received P1 telegram is corrupted. Possible bad/wrong P1 data cable? addon.dsmr.error.status.telegram_data_corruption = Received P1 telegram is corrupted. Possible bad/wrong P1 data cable?
addon.dsmr.error.status.telegram_no_data = Received telegram data, but after parsing no data is present. Possible all data corrupted. addon.dsmr.error.status.telegram_no_data = Received telegram data, but after parsing no data is present. Possible all data corrupted.

View File

@ -153,6 +153,12 @@
<description>The current power delivery.</description> <description>The current power delivery.</description>
<state pattern="%.3f %unit%" readOnly="true"/> <state pattern="%.3f %unit%" readOnly="true"/>
</channel-type> </channel-type>
<channel-type id="actualDeliveryBelgiumType">
<item-type>Number:Power</item-type>
<label>Actual Power Delivery</label>
<description>The current power delivery.</description>
<state pattern="%.3f %unit%" readOnly="true"/>
</channel-type>
<channel-type id="actualProductionType" advanced="true"> <channel-type id="actualProductionType" advanced="true">
<item-type>Number:Power</item-type> <item-type>Number:Power</item-type>
<label>Actual Power Production</label> <label>Actual Power Production</label>

View File

@ -21,6 +21,10 @@
<channel id="emeter_tariff_indicator" typeId="tariffIndicatorType"/> <channel id="emeter_tariff_indicator" typeId="tariffIndicatorType"/>
<channel id="emeter_actual_delivery" typeId="actualDeliveryType"/> <channel id="emeter_actual_delivery" typeId="actualDeliveryType"/>
<channel id="emeter_actual_production" typeId="actualProductionType"/> <channel id="emeter_actual_production" typeId="actualProductionType"/>
<channel id="emeter_actual_demand" typeId="actualDeliveryBelgiumType"/>
<channel id="emeter_maximum_demand_current_month" typeId="actualDeliveryBelgiumType">
<label>Power Delivery Current Month</label>
</channel>
<channel id="emeter_switch_position" typeId="switchPositionType"/> <channel id="emeter_switch_position" typeId="switchPositionType"/>
<channel id="emeter_fuse_threshold_a" typeId="actualFuseThresholdAType"/> <channel id="emeter_fuse_threshold_a" typeId="actualFuseThresholdAType"/>
<channel id="emeter_treshold_kw" typeId="actualTresholdkWType"/> <channel id="emeter_treshold_kw" typeId="actualTresholdkWType"/>