mirror of
https://github.com/UtilitechAS/amsreader-firmware.git
synced 2026-05-04 15:16:44 +00:00
Timezone conversion for Kaifa
This commit is contained in:
@@ -7,6 +7,10 @@ IEC6205675::IEC6205675(const char* d, uint8_t useMeterType, CosemDateTime packag
|
|||||||
double val;
|
double val;
|
||||||
char str[64];
|
char str[64];
|
||||||
|
|
||||||
|
TimeChangeRule CEST = {"CEST", Last, Sun, Mar, 2, 120};
|
||||||
|
TimeChangeRule CET = {"CET ", Last, Sun, Oct, 3, 60};
|
||||||
|
Timezone tz(CEST, CET);
|
||||||
|
|
||||||
this->packageTimestamp = getTimestamp(packageTimestamp);
|
this->packageTimestamp = getTimestamp(packageTimestamp);
|
||||||
|
|
||||||
ui = getNumber(AMS_OBIS_ACTIVE_IMPORT, sizeof(AMS_OBIS_ACTIVE_IMPORT), ((char *) (d)));
|
ui = getNumber(AMS_OBIS_ACTIVE_IMPORT, sizeof(AMS_OBIS_ACTIVE_IMPORT), ((char *) (d)));
|
||||||
@@ -96,8 +100,13 @@ IEC6205675::IEC6205675(const char* d, uint8_t useMeterType, CosemDateTime packag
|
|||||||
switch(data->base.type) {
|
switch(data->base.type) {
|
||||||
case CosemTypeOctetString: {
|
case CosemTypeOctetString: {
|
||||||
if(data->oct.length == 0x0C) {
|
if(data->oct.length == 0x0C) {
|
||||||
AmsOctetTimestamp* ts = (AmsOctetTimestamp*) data;
|
AmsOctetTimestamp* amst = (AmsOctetTimestamp*) data;
|
||||||
meterTimestamp = getTimestamp(ts->dt);
|
time_t ts = getTimestamp(amst->dt);
|
||||||
|
if(meterType == AmsTypeKamstrup || meterType == AmsTypeAidon) {
|
||||||
|
this->meterTimestamp = tz.toUTC(ts);
|
||||||
|
} else {
|
||||||
|
meterTimestamp = ts;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -149,10 +158,6 @@ IEC6205675::IEC6205675(const char* d, uint8_t useMeterType, CosemDateTime packag
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TimeChangeRule CEST = {"CEST", Last, Sun, Mar, 2, 120};
|
|
||||||
TimeChangeRule CET = {"CET ", Last, Sun, Oct, 3, 60};
|
|
||||||
Timezone tz(CEST, CET);
|
|
||||||
|
|
||||||
if(meterType == AmsTypeKamstrup || meterType == AmsTypeAidon) {
|
if(meterType == AmsTypeKamstrup || meterType == AmsTypeAidon) {
|
||||||
this->packageTimestamp = this->packageTimestamp > 0 ? tz.toUTC(this->packageTimestamp) : 0;
|
this->packageTimestamp = this->packageTimestamp > 0 ? tz.toUTC(this->packageTimestamp) : 0;
|
||||||
}
|
}
|
||||||
@@ -295,11 +300,7 @@ IEC6205675::IEC6205675(const char* d, uint8_t useMeterType, CosemDateTime packag
|
|||||||
if(meterTs != NULL) {
|
if(meterTs != NULL) {
|
||||||
AmsOctetTimestamp* amst = (AmsOctetTimestamp*) meterTs;
|
AmsOctetTimestamp* amst = (AmsOctetTimestamp*) meterTs;
|
||||||
time_t ts = getTimestamp(amst->dt);
|
time_t ts = getTimestamp(amst->dt);
|
||||||
if(meterType == AmsTypeKamstrup || meterType == AmsTypeAidon) {
|
meterTimestamp = ts;
|
||||||
this->meterTimestamp = tz.toUTC(ts);
|
|
||||||
} else {
|
|
||||||
meterTimestamp = ts;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
CosemData* mid = getCosemDataAt(58, ((char *) (d))); // TODO: Get last item
|
CosemData* mid = getCosemDataAt(58, ((char *) (d))); // TODO: Get last item
|
||||||
|
|||||||
Reference in New Issue
Block a user