fix: correct offsets for techem hca

pull/237/head
Waldemar Faist 2021-02-06 18:29:47 +01:00
rodzic d4b236bba2
commit a78aaec991
3 zmienionych plików z 31 dodań i 25 usunięć

Wyświetl plik

@ -55,6 +55,10 @@ 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":"t","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":"2021-02-06T17:15:15Z"}
# 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"}

Wyświetl plik

@ -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;

Wyświetl plik

@ -1557,19 +1557,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);