diff --git a/Makefile b/Makefile index 2bda17e..44c1e3d 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -# Copyright (C) 2017-2023 Fredrik Öhrström (gpl-3.0-or-later) +# Copyright (C) 2017-2024 Fredrik Öhrström (gpl-3.0-or-later) # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by diff --git a/src/driver_kamheat.cc b/src/driver_kamheat.cc index 69bd153..779ec42 100644 --- a/src/driver_kamheat.cc +++ b/src/driver_kamheat.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2018-2022 Fredrik Öhrström (gpl-3.0-or-later) + Copyright (C) 2018-2024 Fredrik Öhrström (gpl-3.0-or-later) Copyright (C) 2020 Eric Bus (gpl-3.0-or-later) Copyright (C) 2022 thecem (gpl-3.0-or-later) @@ -354,3 +354,8 @@ namespace // telegram=|68c9c96808e672323232322d2c35041900000004fB006083000004ff074006010004ff08299400000416984e010084401400000000848040140000000004225043000034221c0000000259c91f025d4f1102617a0e042e30020000142e65030000043c24050000143ce308000004ff2200000000046d2e2B0f3144fB00007d000044ff07Bdf9000044ff08308d00004416B73f0100c4401400000000c480401400000000542ed9020000543ce8090000426c013102ff1a011B0c783032858404ff16e5841e0004ff17c1d5B400a516| // {"fabrication_no": "84853230", "flow_return_temperature_difference_c": 37.06, "forward_energy_m3c": 67136, "id": "32323232", "max_flow_m3h": 22.75, "max_power_kw": 869, "media": "heat", "meter": "kamheat", "meter_datetime": "2024-01-15 11:46", "name": "Kamstrup_MC603_mbus", "on_time_at_error_h": 28, "on_time_h": 17232, "power_kw": 560, "return_energy_m3c": 37929, "status": "OK", "t1_temperature_c": 81.37, "t2_temperature_c": 44.31, "target_date": "2024-01-01", "target_energy_kwh": 3200000, "target_volume_m3": 81847, "timestamp": "1111-11-11T11:11:11Z", "total_energy_consumption_kwh": 3363200, "total_volume_m3": 85656, "volume_flow_m3h": 13.16} // |Kamstrup_MC603_mbus;32323232;3363200;85656;OK;1111-11-11 11:11.11 + +// Test: KMHEAT kamheat 85412440 NOKEY +// telegram=|5e442d2c4024418535047ae10050252f2f04fB091300000004167500000004ff2200000000043ca301000002599c1d025dB00e844014000000008480401400000000042eB9000000026c0534426c013444fB0900000000543c000000002f2f| +// {"id": "85412440","media": "heat","meter": "kamheat","meter_date": "2024-04-05","name": "KMHEAT","power_kw": 185,"status": "OK","t1_temperature_c": 75.8,"t2_temperature_c": 37.6,"target_date": "2024-04-01","target_energy_kwh": 0,"timestamp": "1111-11-11T11:11:11Z","total_energy_consumption_kwh": 5277.777778,"total_volume_m3": 117,"volume_flow_m3h": 4.19} +// |KMHEAT;85412440;5277.777778;117;OK;1111-11-11 11:11.11 diff --git a/src/dvparser.cc b/src/dvparser.cc index 9373990..dd87d88 100644 --- a/src/dvparser.cc +++ b/src/dvparser.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2018-2022 Fredrik Öhrström (gpl-3.0-or-later) + Copyright (C) 2018-2024 Fredrik Öhrström (gpl-3.0-or-later) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -135,7 +135,8 @@ bool isInsideVIFRange(Vif vif, VIFRange vif_range) return isInsideVIFRange(vif, VIFRange::EnergyWh) || isInsideVIFRange(vif, VIFRange::EnergyMJ) || - isInsideVIFRange(vif, VIFRange::EnergyMWh); + isInsideVIFRange(vif, VIFRange::EnergyMWh) || + isInsideVIFRange(vif, VIFRange::EnergyGJ); } if (vif_range == VIFRange::AnyPowerVIF) { diff --git a/src/dvparser.h b/src/dvparser.h index ebc5962..5ab7efd 100644 --- a/src/dvparser.h +++ b/src/dvparser.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2018-2022 Fredrik Öhrström (gpl-3.0-or-later) + Copyright (C) 2018-2024 Fredrik Öhrström (gpl-3.0-or-later) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -48,6 +48,7 @@ X(FabricationNo,0x78,0x78, Quantity::Text, Unit::TXT) \ X(EnhancedIdentification,0x79,0x79, Quantity::Text, Unit::TXT) \ X(EnergyMWh,0x7B00,0x7B01, Quantity::Energy, Unit::KWH) \ + X(EnergyGJ,0x7B09,0x7B0A, Quantity::Energy, Unit::MJ) \ X(RelativeHumidity,0x7B1A,0x7B1B, Quantity::RH, Unit::RH) \ X(AccessNumber,0x7D08,0x7D08, Quantity::Counter, Unit::COUNTER) \ X(Medium,0x7D09,0x7D09, Quantity::Text, Unit::TXT) \ diff --git a/src/wmbus.cc b/src/wmbus.cc index fc29461..9a8520a 100644 --- a/src/wmbus.cc +++ b/src/wmbus.cc @@ -2818,6 +2818,12 @@ double vifScale(int vif) case 0x7b00: case 0x7b01: { double exp = (vif & 0x1)+2; return pow(10.0, -exp); } + // Active energy 0.1 or 1 GJ normalize to 100 MJ or 1000 MJ + // 7b09 19 -> 1.9 G -> 1 900 KWh + // 7b0A 19 -> 19 GJ -> 19 000 MJ + case 0x7b09: + case 0x7b0A: { double exp = (vif & 0x1)+2; return pow(10.0, -exp); } + // relative humidity is a dimensionless value. case 0x7b1a: return 10.0; // Relative humidity 0.1 % case 0x7b1b: return 1.0; // Relative humidity 1 %