/* Copyright (C) 2018-2022 Fredrik Öhrström (gpl-3.0-or-later)
Copyright (C) 2020 Janus Bo Andersen (gpl-3.0-or-later)
Implemented October 2020 Janus Bo Andersen:
Implements Kamstrup OmniPower, energy meter.
This C1 WM-Bus meter broadcasts:
- Accumulated energy consumption (A+, kWh)
- Accumulated energy production (A-, kWh)
- Current power consumption (P+, kW)
- Current power production (P-, kW)
According to Kamstrup doc. 58101496_C1_GB_05.2018
(Wireless M-Bus Module for OMNIPOWER), the single-phase,
three-phase and CT meters send the same datagram.
Meter version. Implementation tested against meter:
Kamstrup one-phase with firmware version 0x30.
Meter uses AES-128 in CTR mode, which is the only mode supported by
the extended link layer (wm-bus), see EN 13757-4:2019. */
driver {
name = omnipower
meter_type = ElectricityMeter
default_fields = name,id,total_energy_consumption_kwh,total_energy_production_kwh,current_power_consumption_kw,current_power_production_kw,timestamp
detect {
mvt = KAM,30,02
}
compact_frame_formats {
difvif = 040404843C042B04AB3C
}
fields {
field {
name = total_energy_consumption
info = 'The total energy consumption recorded by this meter.'
quantity = Energy
match {
measurement_type = Instantaneous
vif_range = AnyEnergyVIF
}
}
field {
name = total_energy_production
info = 'The total energy backward (production) recorded by this meter.'
quantity = Energy
match {
measurement_type = Instantaneous
vif_range = AnyEnergyVIF
add_combinable = BackwardFlow
}
}
field {
name = current_power_consumption
info = 'The current power consumption.'
quantity = Power
match {
measurement_type = Instantaneous
vif_range = AnyPowerVIF
}
}
field {
name = current_power_production
info = 'The current power production.'
quantity = Power
match {
measurement_type = Instantaneous
vif_range = AnyPowerVIF
add_combinable = BackwardFlow
}
}
}
tests {
test {
comment = 'Long Frame'
args = 'myomnipower omnipower 32666857 NOKEY'
telegram = 2D442D2C5768663230028D20E4E2C81C20878C78_04041A03000004843C00000000042B0300000004AB3C00000000
json = '{"_":"telegram","media":"electricity","meter":"omnipower","name":"myomnipower","id":"32666857","total_energy_consumption_kwh":7.94,"total_energy_production_kwh":0,"current_power_consumption_kw":0.003,"current_power_production_kw":0,"timestamp":"1111-11-11T11:11:11Z"}'
fields = 'myomnipower;32666857;7.94;0;0.003;0;1111-11-11 11:11.11'
}
test {
comment = 'Compact Frame'
args = 'myomnipower omnipower 32666857 NOKEY'
telegram = 27442D2C5768663230028D20E900C91C2011BA79138CCCFB_1A030000000000000300000000000000
json = '{"_":"telegram","media":"electricity","meter":"omnipower","name":"myomnipower","id":"32666857","total_energy_consumption_kwh":7.94,"total_energy_production_kwh":0,"current_power_consumption_kw":0.003,"current_power_production_kw":0,"timestamp":"1111-11-11T11:11:11Z"}'
fields = 'myomnipower;32666857;7.94;0;0.003;0;1111-11-11 11:11.11'
}
}
}