Made it work with Kaifa data

This commit is contained in:
Roar Fredriksen 2018-03-08 00:20:07 +01:00
parent cbefaf1c7c
commit b2f348f57d
4 changed files with 8 additions and 5 deletions

View File

@ -102,7 +102,10 @@ int HanReader::getListSize()
time_t HanReader::getPackageTime()
{
return getTime(buffer, 8, bytesRead);
int packageTimePosition = dataHeader
+ (compensateFor09HeaderBug ? 1 : 0);
return getTime(buffer, packageTimePosition, bytesRead);
}
time_t HanReader::getTime(int objectId)
@ -125,7 +128,8 @@ int HanReader::findValuePosition(int dataPosition, byte *buffer, int start, int
{
// The first byte after the header gives the length
// of the extended header information (variable)
int firstData = dataHeader + buffer[dataHeader] + 1;
int headerSize = dataHeader + (compensateFor09HeaderBug ? 1 : 0);
int firstData = headerSize + buffer[headerSize] + 1;
for (int i = start + firstData; i<length; i++)
{

View File

@ -15,6 +15,7 @@ class HanReader
{
public:
const uint dataHeader = 8;
bool compensateFor09HeaderBug = false;
HanReader();
void setup(HardwareSerial *hanPort);

View File

@ -8,13 +8,11 @@ enum class Kaifa : byte {
};
enum class Kaifa_List1 {
Time,
ListSize,
ActivePowerImported
};
enum class Kaifa_List2 {
Time,
ListSize,
ListVersionIdentifier,
MeterID,
@ -32,7 +30,6 @@ enum class Kaifa_List2 {
};
enum class Kaifa_List3 {
Time,
ListSize,
ListVersionIdentifier,
MeterID,

View File

@ -30,6 +30,7 @@ void setup() {
// initialize the HanReader
// (passing no han port, as we are feeding data manually, but provide Serial for debugging)
hanReader.setup(NULL, &Serial);
hanReader.compensateFor09HeaderBug = true;
}
void setupDebugPort()