kopia lustrzana https://github.com/weetmuts/wmbusmeters
Add on_time_h and batter_pct to qualcosonic driver. Add Percentage unit. Add 'keep open' tag and update workflow.
rodzic
378c367475
commit
4d3e306f30
|
@ -17,6 +17,6 @@ jobs:
|
|||
days-before-stale: 60
|
||||
days-before-close: 30
|
||||
operations-per-run: 1000
|
||||
exempt-issue-labels: 'enhancement, Work in progress, Planned'
|
||||
exempt-issue-labels: 'enhancement, work in progress, planned, keep open'
|
||||
days-before-pr-stale: -1
|
||||
days-before-pr-close: -1
|
||||
|
|
|
@ -39,7 +39,7 @@ namespace
|
|||
|
||||
Driver::Driver(MeterInfo &mi, DriverInfo &di) : MeterCommonImplementation(mi, di)
|
||||
{
|
||||
addOptionalCommonFields("software_version");
|
||||
addOptionalLibraryFields("software_version");
|
||||
|
||||
addStringField(
|
||||
"status",
|
||||
|
|
|
@ -237,7 +237,7 @@ XMQProceed DriverDynamic::add_detect(XMQDoc *doc, XMQNode *detect, DriverInfo *d
|
|||
XMQProceed DriverDynamic::add_use(XMQDoc *doc, XMQNode *field, DriverDynamic *dd)
|
||||
{
|
||||
string name = xmqGetString(doc, field, ".");
|
||||
dd->addOptionalCommonFields(name);
|
||||
dd->addOptionalLibraryFields(name);
|
||||
return XMQ_CONTINUE;
|
||||
}
|
||||
|
||||
|
|
|
@ -40,7 +40,7 @@ namespace
|
|||
"Meter status. Includes both meter error field and tpl status field.",
|
||||
PrintProperty::STATUS | PrintProperty::INCLUDE_TPL_STATUS);
|
||||
|
||||
addOptionalCommonFields("on_time_h");
|
||||
addOptionalLibraryFields("on_time_h");
|
||||
|
||||
addNumericFieldWithExtractor(
|
||||
"total_energy_consumption",
|
||||
|
|
|
@ -237,7 +237,7 @@ namespace
|
|||
.set(StorageNr(1))
|
||||
);
|
||||
|
||||
addOptionalCommonFields("operating_time_h,on_time_h,meter_datetime");
|
||||
addOptionalLibraryFields("operating_time_h,on_time_h,meter_datetime");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -37,7 +37,7 @@ namespace
|
|||
|
||||
Driver::Driver(MeterInfo &mi, DriverInfo &di) : MeterCommonImplementation(mi, di)
|
||||
{
|
||||
addOptionalCommonFields("fabrication_no,enhanced_id,location");
|
||||
addOptionalLibraryFields("fabrication_no,enhanced_id,location");
|
||||
|
||||
addStringFieldWithExtractor(
|
||||
"location_hex",
|
||||
|
|
|
@ -59,8 +59,8 @@ namespace
|
|||
},
|
||||
});
|
||||
|
||||
addOptionalCommonFields("fabrication_no");
|
||||
addOptionalFlowRelatedFields("total_m3");
|
||||
addOptionalLibraryFields("fabrication_no");
|
||||
addOptionalLibraryFields("total_m3");
|
||||
|
||||
addNumericFieldWithExtractor(
|
||||
"consumption_at_set_date",
|
||||
|
|
|
@ -38,8 +38,8 @@ namespace
|
|||
|
||||
Driver::Driver(MeterInfo &mi, DriverInfo &di) : MeterCommonImplementation(mi, di)
|
||||
{
|
||||
addOptionalCommonFields("actuality_duration_s");
|
||||
addOptionalFlowRelatedFields("total_m3,target_m3,target_date");
|
||||
addOptionalLibraryFields("actuality_duration_s");
|
||||
addOptionalLibraryFields("total_m3,target_m3,target_date");
|
||||
|
||||
addStringField(
|
||||
"status",
|
||||
|
|
|
@ -44,8 +44,8 @@ namespace
|
|||
|
||||
Driver::Driver(MeterInfo &mi, DriverInfo &di) : MeterCommonImplementation(mi, di)
|
||||
{
|
||||
addOptionalCommonFields("operating_time_h,actuality_duration_s,meter_datetime,customer");
|
||||
addOptionalFlowRelatedFields("flow_temperature_c,external_temperature_c");
|
||||
addOptionalLibraryFields("operating_time_h,actuality_duration_s,meter_datetime,customer");
|
||||
addOptionalLibraryFields("flow_temperature_c,external_temperature_c");
|
||||
|
||||
addStringField(
|
||||
"status",
|
||||
|
|
|
@ -38,7 +38,7 @@ namespace
|
|||
|
||||
Driver::Driver(MeterInfo &mi, DriverInfo &di) : MeterCommonImplementation(mi, di)
|
||||
{
|
||||
addOptionalCommonFields("firmware_version,manufacturer,meter_datetime,model_version");
|
||||
addOptionalLibraryFields("firmware_version,manufacturer,meter_datetime,model_version");
|
||||
|
||||
addStringField(
|
||||
"status",
|
||||
|
|
|
@ -45,8 +45,8 @@ namespace
|
|||
|
||||
addLinkMode(LinkMode::T1);
|
||||
|
||||
addOptionalCommonFields("enhanced_id,meter_datetime");
|
||||
addOptionalFlowRelatedFields("total_m3,total_backward_m3,volume_flow_m3h");
|
||||
addOptionalLibraryFields("enhanced_id,meter_datetime");
|
||||
addOptionalLibraryFields("total_m3,total_backward_m3,volume_flow_m3h");
|
||||
|
||||
addStringFieldWithExtractorAndLookup(
|
||||
"status",
|
||||
|
|
|
@ -38,8 +38,8 @@ namespace
|
|||
|
||||
Driver::Driver(MeterInfo &mi, DriverInfo &di) : MeterCommonImplementation(mi, di)
|
||||
{
|
||||
addOptionalCommonFields("meter_datetime");
|
||||
addOptionalFlowRelatedFields("total_m3");
|
||||
addOptionalLibraryFields("meter_datetime");
|
||||
addOptionalLibraryFields("total_m3");
|
||||
|
||||
addStringField(
|
||||
"status",
|
||||
|
|
|
@ -59,8 +59,8 @@ namespace
|
|||
|
||||
Driver::Driver(MeterInfo &mi, DriverInfo &di) : MeterCommonImplementation(mi, di)
|
||||
{
|
||||
addOptionalCommonFields("fabrication_no,meter_datetime,on_time_h,on_time_at_error_h");
|
||||
addOptionalFlowRelatedFields("flow_return_temperature_difference_c");
|
||||
addOptionalLibraryFields("fabrication_no,meter_datetime,on_time_h,on_time_at_error_h");
|
||||
addOptionalLibraryFields("flow_return_temperature_difference_c");
|
||||
|
||||
// Technical Description Multical 603 page 116 section 7.7.2 Information code types on serial communication.
|
||||
addStringFieldWithExtractorAndLookup(
|
||||
|
|
|
@ -36,7 +36,7 @@ namespace
|
|||
|
||||
Driver::Driver(MeterInfo &mi, DriverInfo &di) : MeterCommonImplementation(mi, di)
|
||||
{
|
||||
addOptionalCommonFields("on_time_h");
|
||||
addOptionalLibraryFields("on_time_h");
|
||||
setMfctTPLStatusBits(
|
||||
Translate::Lookup()
|
||||
.add(Translate::Rule("TPL_STS", Translate::Type::BitToString)
|
||||
|
|
|
@ -36,8 +36,8 @@ namespace
|
|||
|
||||
Driver::Driver(MeterInfo &mi, DriverInfo &di) : MeterCommonImplementation(mi, di)
|
||||
{
|
||||
addOptionalCommonFields("meter_datetime,model_version,parameter_set");
|
||||
addOptionalFlowRelatedFields("flow_temperature_c,return_temperature_c");
|
||||
addOptionalLibraryFields("meter_datetime,model_version,parameter_set");
|
||||
addOptionalLibraryFields("flow_temperature_c,return_temperature_c");
|
||||
|
||||
addStringFieldWithExtractorAndLookup(
|
||||
"status",
|
||||
|
|
|
@ -39,8 +39,8 @@ namespace
|
|||
|
||||
Driver::Driver(MeterInfo &mi, DriverInfo &di) : MeterCommonImplementation(mi, di)
|
||||
{
|
||||
addOptionalCommonFields("meter_date,fabrication_no,operating_time_h,on_time_h,on_time_at_error_h,meter_datetime");
|
||||
addOptionalFlowRelatedFields("total_m3,total_backward_m3,volume_flow_m3h");
|
||||
addOptionalLibraryFields("meter_date,fabrication_no,operating_time_h,on_time_h,on_time_at_error_h,meter_datetime");
|
||||
addOptionalLibraryFields("total_m3,total_backward_m3,volume_flow_m3h");
|
||||
|
||||
/* If the meter is recently commissioned, the target water consumption value is bogus.
|
||||
The bits store 0xffffffff. Should we deal with this? Now a very large value is printed in the json.
|
||||
|
|
|
@ -36,7 +36,7 @@ namespace
|
|||
|
||||
Driver::Driver(MeterInfo &mi, DriverInfo &di) : MeterCommonImplementation(mi, di)
|
||||
{
|
||||
addOptionalCommonFields("fabrication_no,software_version");
|
||||
addOptionalLibraryFields("fabrication_no,software_version");
|
||||
|
||||
addStringField(
|
||||
"status",
|
||||
|
|
|
@ -179,7 +179,7 @@ namespace
|
|||
.set(StorageNr(1))
|
||||
);
|
||||
|
||||
addOptionalCommonFields("operating_time_h,on_time_h,on_time_at_error_h,meter_datetime");
|
||||
addOptionalLibraryFields("operating_time_h,on_time_h,on_time_at_error_h,meter_datetime");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -36,8 +36,8 @@ namespace
|
|||
|
||||
Driver::Driver(MeterInfo &mi, DriverInfo &di) : MeterCommonImplementation(mi, di)
|
||||
{
|
||||
addOptionalCommonFields("meter_datetime");
|
||||
addOptionalFlowRelatedFields("total_m3,total_forward_m3,total_backward_m3,flow_temperature_c,volume_flow_m3h");
|
||||
addOptionalLibraryFields("meter_datetime");
|
||||
addOptionalLibraryFields("total_m3,total_forward_m3,total_backward_m3,flow_temperature_c,volume_flow_m3h");
|
||||
|
||||
addStringField(
|
||||
"status",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
Copyright (C) 2022 Fredrik Öhrström (gpl-3.0-or-later)
|
||||
Copyright (C) 2022-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
|
||||
|
@ -38,8 +38,8 @@ namespace
|
|||
|
||||
Driver::Driver(MeterInfo &mi, DriverInfo &di) : MeterCommonImplementation(mi, di)
|
||||
{
|
||||
addOptionalCommonFields("fabrication_no,operating_time_h,on_time_h,meter_datetime,meter_datetime_at_error");
|
||||
addOptionalFlowRelatedFields("total_m3,flow_temperature_c,return_temperature_c,flow_return_temperature_difference_c,volume_flow_m3h");
|
||||
addOptionalLibraryFields("fabrication_no,on_time_h,operating_time_h,on_time_h,meter_datetime,meter_datetime_at_error");
|
||||
addOptionalLibraryFields("total_m3,flow_temperature_c,return_temperature_c,flow_return_temperature_difference_c,volume_flow_m3h");
|
||||
|
||||
addStringFieldWithExtractorAndLookup(
|
||||
"status",
|
||||
|
@ -135,6 +135,17 @@ namespace
|
|||
.set(StorageNr(16))
|
||||
);
|
||||
|
||||
addNumericFieldWithExtractor(
|
||||
"battery",
|
||||
"Percentage of battery remaining.",
|
||||
DEFAULT_PRINT_PROPERTIES,
|
||||
Quantity::Dimensionless,
|
||||
VifScaling::None,
|
||||
FieldMatcher::build()
|
||||
.set(DifVifKey("01FD74")),
|
||||
Unit::PERCENTAGE
|
||||
);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -152,3 +163,8 @@ namespace
|
|||
// telegram=|9A440907859449980C0D7A8C000000_046D3201E122346D0000010134FD17000000000420BB776802042490776802048E3BF2190000048E3C00000000041329860100042B6A010000043B0B0000000259F615025D1E0B0261D80A0C788594499884086D3B17FF21820859BC1382085D720B840824915D680284088E3BED19000084088E3C00000000840813028601008408BE5800000000027F00AD|
|
||||
// {"media":"heat/cooling load","meter":"qualcosonic","name":"qualcoe4long","id":"98499485","fabrication_no":"98499485","operating_time_h":11222.44,"on_time_h":11222.451944,"meter_datetime":"2023-02-01 01:50","meter_datetime_at_error":"2000-01-01 00:00","total_m3":99.881,"flow_temperature_c":56.22,"return_temperature_c":28.46,"flow_return_temperature_difference_c":27.76,"volume_flow_m3h":0.011,"status":"OK","total_heat_energy_kwh":1845,"total_cooling_energy_kwh":0,"power_kw":0.362,"target_datetime":"2023-01-31 23:59","target_heat_energy_kwh":1843.611111,"target_cooling_energy_kwh":0,"timestamp":"1111-11-11T11:11:11Z"}
|
||||
// |qualcoe4long;98499485;OK;1845;0;0.362;2023-01-31 23:59;1843.611111;0;1111-11-11 11:11.11
|
||||
|
||||
// Test: M qualcosonic 05829163 NOKEY
|
||||
// telegram=|544409076391820510077ABF100000046D2A0DC62C0420E80F430104130000000004933B0000000004933C00000000023B00000259F0D8446D0000C12C44130000000044933B0000000044933C0000000001FD7461|
|
||||
// {"flow_temperature_c": 555.36,"id": "05829163","media": "water","meter": "qualcosonic","meter_datetime": "2022-12-06 13:42","name": "M","on_time_h": 5881.166667,"status": "TEMPORARY_ERROR","timestamp": "1111-11-11T11:11:11Z","total_m3": 0,"volume_flow_m3h": 0,"battery_pct": 97}
|
||||
// |M;05829163;TEMPORARY_ERROR;null;null;null;null;null;null;1111-11-11 11:11.11
|
||||
|
|
|
@ -52,8 +52,8 @@ namespace
|
|||
Driver::Driver(MeterInfo &mi, DriverInfo &di) :
|
||||
MeterCommonImplementation(mi, di)
|
||||
{
|
||||
addOptionalCommonFields("meter_datetime");
|
||||
addOptionalFlowRelatedFields("total_m3");
|
||||
addOptionalLibraryFields("meter_datetime");
|
||||
addOptionalLibraryFields("total_m3");
|
||||
|
||||
addStringField(
|
||||
"status",
|
||||
|
|
|
@ -41,7 +41,7 @@ namespace
|
|||
|
||||
Driver::Driver(MeterInfo &mi, DriverInfo &di) : MeterCommonImplementation(mi, di)
|
||||
{
|
||||
addOptionalCommonFields("operating_time_h");
|
||||
addOptionalLibraryFields("operating_time_h");
|
||||
|
||||
addStringFieldWithExtractorAndLookup(
|
||||
"status",
|
||||
|
|
|
@ -37,8 +37,8 @@ namespace
|
|||
|
||||
Driver::Driver(MeterInfo &mi, DriverInfo &di) : MeterCommonImplementation(mi, di)
|
||||
{
|
||||
addOptionalCommonFields("software_version");
|
||||
addOptionalFlowRelatedFields("total_m3");
|
||||
addOptionalLibraryFields("software_version");
|
||||
addOptionalLibraryFields("total_m3");
|
||||
|
||||
addStringFieldWithExtractorAndLookup(
|
||||
"status",
|
||||
|
|
|
@ -60,7 +60,7 @@ namespace
|
|||
|
||||
Driver::Driver(MeterInfo &mi, DriverInfo &di) : MeterCommonImplementation(mi, di)
|
||||
{
|
||||
addOptionalFlowRelatedFields("total_m3,access_counter");
|
||||
addOptionalLibraryFields("total_m3,access_counter");
|
||||
|
||||
addNumericFieldWithExtractor(
|
||||
"temperature",
|
||||
|
|
|
@ -35,7 +35,7 @@ namespace
|
|||
|
||||
Driver::Driver(MeterInfo &mi, DriverInfo &di) : MeterCommonImplementation(mi, di)
|
||||
{
|
||||
addOptionalCommonFields("meter_datetime,fabrication_no");
|
||||
addOptionalLibraryFields("meter_datetime,fabrication_no");
|
||||
|
||||
addNumericFieldWithExtractor(
|
||||
"heat",
|
||||
|
|
|
@ -37,7 +37,7 @@ namespace
|
|||
|
||||
Driver::Driver(MeterInfo &mi, DriverInfo &di) : MeterCommonImplementation(mi, di)
|
||||
{
|
||||
addOptionalCommonFields("fabrication_no");
|
||||
addOptionalLibraryFields("fabrication_no");
|
||||
|
||||
addStringFieldWithExtractorAndLookup(
|
||||
"status",
|
||||
|
|
|
@ -36,7 +36,7 @@ namespace
|
|||
|
||||
Driver::Driver(MeterInfo &mi, DriverInfo &di) : MeterCommonImplementation(mi, di)
|
||||
{
|
||||
addOptionalCommonFields("software_version,meter_datetime");
|
||||
addOptionalLibraryFields("software_version,meter_datetime");
|
||||
|
||||
addStringFieldWithExtractorAndLookup(
|
||||
"status",
|
||||
|
|
|
@ -39,7 +39,7 @@ namespace
|
|||
|
||||
Driver::Driver(MeterInfo &mi, DriverInfo &di) : MeterCommonImplementation(mi, di)
|
||||
{
|
||||
addOptionalCommonFields("meter_datetime,model_version");
|
||||
addOptionalLibraryFields("meter_datetime,model_version");
|
||||
|
||||
addNumericField(
|
||||
"total",
|
||||
|
|
|
@ -15,12 +15,12 @@
|
|||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
// Generated 2024-02-12_00:51
|
||||
// Generated 2024-02-12_01:46
|
||||
|
||||
BuiltinDriver builtins_[] =
|
||||
{
|
||||
{ "elster", "driver{name=elster meter_type=GasMeter default_fields=name,id,total_m3,timestamp detect{mvt=ELS,81,03}use=actuality_duration_s field{name=total quantity=Volume match{measurement_type=Instantaneous vif_range=Volume}about{de='Der Gesamtwasserverbrauch.'en='The total water consumption.'fr='''La consommation totale d'eau.'''sv='Den totala vattenförbrukningen.'}}test{args='Gas elster 05105025 NOKEY'telegram=3644A511640010253837722550100593158103E70020052F2F_0374E602000C137034220302FD74EE0F2F2F2F2F2F2F2F2F2F2F2F2F2F2F json='{\"media\":\"gas\",\"meter\":\"elster\",\"name\":\"Gas\",\"id\":\"05105025\",\"actuality_duration_s\":742,\"total_m3\":3223.47,\"timestamp\":\"1111-11-11T11:11:11Z\"}'fields='Gas;05105025;3223.47;1111-11-11 11:11.11'}}", false },
|
||||
{ "iperl", "driver{name=iperl meter_type=WaterMeter default_fields=name,id,total_m3,max_flow_m3h,timestamp detect{mvt=SEN,68,06 mvt=SEN,68,07 mvt=SEN,7c,07}field{name=total quantity=Volume match{measurement_type=Instantaneous vif_range=Volume}about{de='Der Gesamtwasserverbrauch.'en='The total water consumption.'fr='''La consommation totale d'eau.'''sv='Den totala vattenförbrukningen.'}}field{name=max_flow quantity=Flow match{measurement_type=Instantaneous vif_range=VolumeFlow}about{en='The maximum flow recorded during previous period.'}}test{args='MoreWater iperl 12345699 NOKEY'coment='Test iPerl T1 telegram, that after decryption, has 2f2f markers.'telegram=1E44AE4C9956341268077A36001000_2F2F0413181E0000023B00002F2F2F2F json='{\"media\":\"water\",\"meter\":\"iperl\",\"name\":\"MoreWater\",\"id\":\"12345699\",\"total_m3\":7.704,\"max_flow_m3h\":0,\"timestamp\":\"1111-11-11T11:11:11Z\"}'fields='MoreWater;12345699;7.704;0;1111-11-11 11:11.11'}test{args='WaterWater iperl 33225544 NOKEY'comment='Test iPerl T1 telegram not encrypted, which has no 2f2f markers.'telegram=1844AE4C4455223368077A55000000_041389E20100023B0000 json='{\"media\":\"water\",\"meter\":\"iperl\",\"name\":\"WaterWater\",\"id\":\"33225544\",\"total_m3\":123.529,\"max_flow_m3h\":0,\"timestamp\":\"1111-11-11T11:11:11Z\"}'fields='WaterWater;33225544;123.529;0;1111-11-11 11:11.11'}}", false },
|
||||
{ "elster", "driver{name=elster meter_type=GasMeter default_fields=name,id,total_m3,timestamp detect{mvt=ELS,81,03}use=actuality_duration_s field{name=total quantity=Volume match{measurement_type=Instantaneous vif_range=Volume}about{de='Der Gesamtwasserverbrauch.'en='The total water consumption.'fr='''La consommation totale d'eau.'''sv='Den totala vattenförbrukningen.'}}}", false },
|
||||
{ "iperl", "driver{name=iperl meter_type=WaterMeter default_fields=name,id,total_m3,max_flow_m3h,timestamp detect{mvt=SEN,68,06 mvt=SEN,68,07 mvt=SEN,7c,07}field{name=total quantity=Volume match{measurement_type=Instantaneous vif_range=Volume}about{de='Der Gesamtwasserverbrauch.'en='The total water consumption.'fr='''La consommation totale d'eau.'''sv='Den totala vattenförbrukningen.'}}field{name=max_flow quantity=Flow match{measurement_type=Instantaneous vif_range=VolumeFlow}about{en='The maximum flow recorded during previous period.'}}}", false },
|
||||
};
|
||||
|
||||
MapToDriver builtins_mvts_[] =
|
||||
|
|
|
@ -2692,7 +2692,7 @@ void checkFieldsEmpty(set<string> &fields, string name)
|
|||
}
|
||||
}
|
||||
|
||||
void MeterCommonImplementation::addOptionalCommonFields(string field_names)
|
||||
void MeterCommonImplementation::addOptionalLibraryFields(string field_names)
|
||||
{
|
||||
set<string> fields = splitStringIntoSet(field_names, ',');
|
||||
|
||||
|
@ -2923,13 +2923,6 @@ void MeterCommonImplementation::addOptionalCommonFields(string field_names)
|
|||
);
|
||||
}
|
||||
|
||||
checkFieldsEmpty(fields, name());
|
||||
}
|
||||
|
||||
void MeterCommonImplementation::addOptionalFlowRelatedFields(string field_names)
|
||||
{
|
||||
set<string> fields = splitStringIntoSet(field_names, ',');
|
||||
|
||||
if (checkIf(fields,"total_m3"))
|
||||
{
|
||||
addNumericFieldWithExtractor(
|
||||
|
@ -3087,12 +3080,7 @@ void MeterCommonImplementation::addOptionalFlowRelatedFields(string field_names)
|
|||
.set(MeasurementType::Instantaneous)
|
||||
.set(VIFRange::AccessNumber)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
void MeterCommonImplementation::addHCARelatedFields(string field_names)
|
||||
{
|
||||
set<string> fields = splitStringIntoSet(field_names, ',');
|
||||
}
|
||||
|
||||
if (checkIf(fields,"consumption_hca"))
|
||||
{
|
||||
|
|
|
@ -204,9 +204,7 @@ protected:
|
|||
|
||||
std::string decodeTPLStatusByte(uchar sts);
|
||||
|
||||
void addOptionalCommonFields(string fields);
|
||||
void addOptionalFlowRelatedFields(string fields);
|
||||
void addHCARelatedFields(string fields);
|
||||
void addOptionalLibraryFields(string fields);
|
||||
|
||||
vector<string> &selectedFields() { return selected_fields_; }
|
||||
void setSelectedFields(vector<string> &f) { selected_fields_ = f; }
|
||||
|
|
|
@ -121,6 +121,7 @@ LIST_OF_QUANTITIES
|
|||
X(COUNTER,counter,"counter",Dimensionless,"counter") \
|
||||
X(FACTOR,factor,"factor",Dimensionless,"factor") \
|
||||
X(NUMBER,nr,"number",Dimensionless,"number") \
|
||||
X(PERCENTAGE,pct,"percentage",Dimensionless,"percentage") \
|
||||
|
||||
enum class Unit
|
||||
{
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
//2024-02-12_00:51
|
||||
// Generated 2024-02-12_08:58
|
||||
test {
|
||||
args = 'Gas elster 05105025 NOKEY'
|
||||
telegram = 3644A511640010253837722550100593158103E70020052F2F_0374E602000C137034220302FD74EE0F2F2F2F2F2F2F2F2F2F2F2F2F2F2F
|
||||
|
|
Ładowanie…
Reference in New Issue