kopia lustrzana https://github.com/weetmuts/wmbusmeters
Merge pull request #237 from CuBiC3D/fix-tch-dataiii
Fix parsing for Techem HCA with version 0x94pull/241/head
commit
daab1b303e
|
@ -55,6 +55,11 @@ telegram=|31446850226677116980A0119F27020480048300C408F709143C003D341A2B0B2A0707
|
|||
{"media":"heat cost allocator","meter":"fhkvdataiii","name":"Room","id":"11776622","current_hca":131,"current_date":"2021-02-08T02:00:00Z","previous_hca":1026,"previous_date":"2019-12-31T02:00:00Z","temp_room_c":22.44,"temp_radiator_c":25.51,"timestamp":"1111-11-11T11:11:11Z"}
|
||||
|Room;11776622;131.000000;2021-02-08T02:00:00Z;1026.000000;2019-12-31T02:00:00Z;22.440000;25.510000;1111-11-11 11:11.11
|
||||
|
||||
# FHKV radio 4 / EHKV vario 4
|
||||
telegram=|33446850341211119480A2|0F9F292D005024040011BD08380904000000070000000000000000000000000001000000000003140E|
|
||||
{"media":"heat cost allocator","meter":"fhkvdataiii","name":"Room","id":"11111234","current_hca":4,"current_date":"2021-02-05T02:00:00Z","previous_hca":45,"previous_date":"2020-12-31T02:00:00Z","temp_room_c":22.37,"temp_radiator_c":23.6,"timestamp":"1111-11-11T11:11:11Z"}
|
||||
|Room;11111234;4.000000;2021-02-05T02:00:00Z;45.000000;2020-12-31T02:00:00Z;22.370000;23.600000;1111-11-11 11:11.11
|
||||
|
||||
# Test FHKV data IV
|
||||
telegram=|4E4468507620541494087AAD004005089D86B62A329B3439873999738F82461ABDE3C7AC78692B363F3B41EB68607F9C9160F550769B065B6EA00A2E44346E29FF5DC5CB86283C69324AD33D137F6F|
|
||||
{"media":"heat cost allocation","meter":"fhkvdataiv","name":"Rooom","id":"14542076","current_consumption_hca":2,"set_date":"2020-12-31","consumption_at_set_date_hca":25,"set_date_1":"2020-12-31","consumption_at_set_date_1_hca":25,"set_date_17":"2019-10-31","consumption_at_set_date_8_hca":0,"error_date":"","device_date_time":"","timestamp":"1111-11-11T11:11:11Z"}
|
||||
|
|
|
@ -136,8 +136,8 @@ void MeterFHKVDataIII::processContent(Telegram *t)
|
|||
|
||||
// Consumption
|
||||
// Previous Consumption
|
||||
uchar prev_lo = content[14];
|
||||
uchar prev_hi = content[15];
|
||||
uchar prev_lo = content[3];
|
||||
uchar prev_hi = content[4];
|
||||
double prev = (256.0*prev_hi+prev_lo);
|
||||
prev_energy_hca_ = prev;
|
||||
|
||||
|
@ -146,8 +146,8 @@ void MeterFHKVDataIII::processContent(Telegram *t)
|
|||
//t->addMoreExplanation(14, " energy used in previous billing period (%f HCA)", prevs);
|
||||
|
||||
// Previous Date
|
||||
uchar date_prev_lo = content[12];
|
||||
uchar date_prev_hi = content[13];
|
||||
uchar date_prev_lo = content[1];
|
||||
uchar date_prev_hi = content[2];
|
||||
int date_prev = (256.0*date_prev_hi+date_prev_lo);
|
||||
|
||||
int day_prev = (date_prev >> 0) & 0x1F;
|
||||
|
@ -158,8 +158,8 @@ void MeterFHKVDataIII::processContent(Telegram *t)
|
|||
//t->addMoreExplanation(offset, " last date of previous billing period (%s)", prev_energy_hca_date);
|
||||
|
||||
// Current Consumption
|
||||
uchar curr_lo = content[18];
|
||||
uchar curr_hi = content[19];
|
||||
uchar curr_lo = content[7];
|
||||
uchar curr_hi = content[8];
|
||||
double curr = (256.0*curr_hi+curr_lo);
|
||||
curr_energy_hca_ = curr;
|
||||
|
||||
|
@ -168,8 +168,8 @@ void MeterFHKVDataIII::processContent(Telegram *t)
|
|||
//t->addMoreExplanation(offset, " energy used in current billing period (%f HCA)", currs);
|
||||
|
||||
// Current Date
|
||||
uchar date_curr_lo = content[16];
|
||||
uchar date_curr_hi = content[17];
|
||||
uchar date_curr_lo = content[5];
|
||||
uchar date_curr_hi = content[6];
|
||||
int date_curr = (256.0*date_curr_hi+date_curr_lo);
|
||||
|
||||
time_t now = time(0);
|
||||
|
@ -185,9 +185,25 @@ void MeterFHKVDataIII::processContent(Telegram *t)
|
|||
// t->addMoreExplanation(offset, " last date of current billing period (%s)", curr_energy_hca_date);
|
||||
|
||||
// Temperature
|
||||
uchar room_tlo;
|
||||
uchar room_thi;
|
||||
uchar radiator_tlo;
|
||||
uchar radiator_thi;
|
||||
if(t->dll_version == 0x94)
|
||||
{
|
||||
room_tlo = content[10];
|
||||
room_thi = content[11];
|
||||
radiator_tlo = content[12];
|
||||
radiator_thi = content[13];
|
||||
} else
|
||||
{
|
||||
room_tlo = content[9];
|
||||
room_thi = content[10];
|
||||
radiator_tlo = content[11];
|
||||
radiator_thi = content[12];
|
||||
}
|
||||
|
||||
// Room Temperature
|
||||
uchar room_tlo = content[20];
|
||||
uchar room_thi = content[21];
|
||||
double room_t = (256.0*room_thi+room_tlo)/100;
|
||||
temp_room_ = room_t;
|
||||
|
||||
|
@ -196,8 +212,6 @@ void MeterFHKVDataIII::processContent(Telegram *t)
|
|||
// t->addMoreExplanation(offset, " current room temparature (%f °C)", room_ts);
|
||||
|
||||
// Radiator Temperature
|
||||
uchar radiator_tlo = content[22];
|
||||
uchar radiator_thi = content[23];
|
||||
double radiator_t = (256.0*radiator_thi+radiator_tlo)/100;
|
||||
temp_radiator_ = radiator_t;
|
||||
|
||||
|
|
14
src/wmbus.cc
14
src/wmbus.cc
|
@ -1558,19 +1558,7 @@ bool Telegram::parseTPL(vector<uchar>::iterator &pos)
|
|||
case CI_Field_Values::TPL_79: return parse_TPL_79(pos);
|
||||
case CI_Field_Values::TPL_7A: return parse_TPL_7A(pos);
|
||||
case CI_Field_Values::MFCT_SPECIFIC_A1:
|
||||
case CI_Field_Values::MFCT_SPECIFIC_A0: {
|
||||
bool _ignore_header_change = false;
|
||||
|
||||
if(dll_type == 0x80 && dll_mfct == 0x5068) { // Techem Heat Cost Allocator
|
||||
_ignore_header_change = true;
|
||||
}
|
||||
|
||||
if(!_ignore_header_change) {
|
||||
header_size = distance(frame.begin(), pos);
|
||||
}
|
||||
suffix_size = 0;
|
||||
return true; // Manufacturer specific telegram payload. Oh well....
|
||||
}
|
||||
case CI_Field_Values::MFCT_SPECIFIC_A0:
|
||||
case CI_Field_Values::MFCT_SPECIFIC_A2:
|
||||
{
|
||||
header_size = distance(frame.begin(), pos);
|
||||
|
|
|
@ -70,6 +70,11 @@ Received telegram from: 11776622
|
|||
type: Heat Cost Allocator (0x80)
|
||||
ver: 0x69
|
||||
driver: fhkvdataiii
|
||||
Received telegram from: 11111234
|
||||
manufacturer: (TCH) Techem Service (0x5068)
|
||||
type: Heat Cost Allocator (0x80)
|
||||
ver: 0x94
|
||||
driver: fhkvdataiii
|
||||
Received telegram from: 14542076
|
||||
manufacturer: (TCH) Techem Service (0x5068)
|
||||
type: Heat Cost Allocator (0x08)
|
||||
|
|
|
@ -18,6 +18,7 @@ METERS="MyWarmWater supercom587 12345678 NOKEY
|
|||
Duschagain mkradio4 02410120 NOKEY
|
||||
HeatMeter vario451 58234965 NOKEY
|
||||
Room fhkvdataiii 11776622 NOKEY
|
||||
Room fhkvdataiii 11111234 NOKEY
|
||||
Rooom fhkvdataiv 14542076 FCF41938F63432975B52505F547FCEDF
|
||||
Gran101 gransystems 18046178 NOKEY
|
||||
Gran301 gransystems 20100117 NOKEY
|
||||
|
|
Ładowanie…
Reference in New Issue