diff --git a/cube/User/Src/mbusComm.c b/cube/User/Src/mbusComm.c index b8ba620..65c735f 100644 --- a/cube/User/Src/mbusComm.c +++ b/cube/User/Src/mbusComm.c @@ -113,9 +113,9 @@ static void printError(t_mbusCommHandle *localMbusCommHandle) { coloredMsg(LOG_YELLOW, true, "mbc pe [%d] Error ratio is %.2f", localMbusCommHandle->requestId, errorRatio); - mqttPublishf(MBUS_TOPIC, "{\"Status\":\"Error\", \"RequestId\":\"%d\", \"Device\":\"%s\", \"Errors\":\"%d\", \"Requests\":\"%d\", \"ErrorRatio\":\"%.2f\"}", - localMbusCommHandle->requestId, localMbusCommHandle->device->deviceName, - localMbusCommHandle->device->failures, localMbusCommHandle->device->requests, errorRatio); + mqttPublishf(MBUS_TOPIC, "{\"Status\":\"Error\", \"RequestId\":\"%d\", \"Device\":\"%s\", \"Errors\":\"%d\", \"Requests\":\"%d\", \"ErrorRatio\":\"%.2f\"}", + localMbusCommHandle->requestId, localMbusCommHandle->device->deviceName, + localMbusCommHandle->device->failures, localMbusCommHandle->device->requests, errorRatio); } @@ -173,6 +173,9 @@ static void parseAndPrintFrame(t_mbusCommHandle *localMbusCommHandle) { } mbus_data_record *record; int i; + char keys[MBUSDEVICE_NUM_OF_CONSIDEREDFIELDS]; + float values[MBUSDEVICE_NUM_OF_CONSIDEREDFIELDS]; + uint8_t numOfConsideredFields = 0; for (record = data_var->record, i = 0; record; record = record->next, i++) { @@ -188,6 +191,9 @@ static void parseAndPrintFrame(t_mbusCommHandle *localMbusCommHandle) { coloredMsg(LOG_YELLOW, true, "mbc papf [%d] %s is %.1f %s (%d * 10^%d)", localMbusCommHandle->requestId, parsedVIB.name, weightedValue, parsedVIB.unit, value, parsedVIB.exponent); + keys[numOfConsideredFields] = parsedVIB.name; + values[numOfConsideredFields] = weightedValue; + numOfConsideredFields++; } else { coloredMsg(LOG_YELLOW, true, "mbc papf [%d] L:%d, VIF: 0x%02x U:%s V:%s", localMbusCommHandle->requestId, @@ -200,14 +206,36 @@ static void parseAndPrintFrame(t_mbusCommHandle *localMbusCommHandle) { } } } - mbus_data_record_free(data_var->record); float errorRatio = ((float) localMbusCommHandle->device->failures) / ((float) localMbusCommHandle->device->requests); coloredMsg(LOG_YELLOW, true, "mbc papf [%d] Error ratio is %.2f", localMbusCommHandle->requestId, errorRatio); - mqttPublishf(MBUS_TOPIC, "{\"Status\":\"Ok\", \"RequestId\":\"%d\", \"Device\":\"%s\", \"Errors\":\"%d\", \"Requests\":\"%d\", \"ErrorRatio\":\"%.2f\"}", - localMbusCommHandle->requestId, localMbusCommHandle->device->deviceName, - localMbusCommHandle->device->failures, localMbusCommHandle->device->requests, errorRatio); + if (numOfConsideredFields == 1) { + mqttPublishf(MBUS_TOPIC, "{\"Status\":\"Ok\", \"RequestId\":\"%d\", \"Device\":\"%s\", \"Errors\":\"%d\", \"Requests\":\"%d\", \"ErrorRatio\":\"%.2f\", " \ + "\"Values\":{\"%s\":\"%.1\"}}", + localMbusCommHandle->requestId, localMbusCommHandle->device->deviceName, + localMbusCommHandle->device->failures, localMbusCommHandle->device->requests, errorRatio, + keys[0], values[0]); + } else if (numOfConsideredFields == 2) { + mqttPublishf(MBUS_TOPIC, "{\"Status\":\"Ok\", \"RequestId\":\"%d\", \"Device\":\"%s\", \"Errors\":\"%d\", \"Requests\":\"%d\", \"ErrorRatio\":\"%.2f\", " \ + "\"Values\":{\"%s\":\"%.1\", \"%s\":\"%.1\"}}", + localMbusCommHandle->requestId, localMbusCommHandle->device->deviceName, + localMbusCommHandle->device->failures, localMbusCommHandle->device->requests, errorRatio, + keys[0], values[0], keys[1], values[1]); + } else if (numOfConsideredFields == 3) { + mqttPublishf(MBUS_TOPIC, "{\"Status\":\"Ok\", \"RequestId\":\"%d\", \"Device\":\"%s\", \"Errors\":\"%d\", \"Requests\":\"%d\", \"ErrorRatio\":\"%.2f\", " \ + "\"Values\":{\"%s\":\"%.1f\", \"%s\":\"%.1f\", \"%s\":\"%.1f\"}}", + localMbusCommHandle->requestId, localMbusCommHandle->device->deviceName, + localMbusCommHandle->device->failures, localMbusCommHandle->device->requests, errorRatio, + keys[0], values[0], keys[1], values[1], keys[2], values[2]); + } else if (numOfConsideredFields == 4) { + mqttPublishf(MBUS_TOPIC, "{\"Status\":\"Ok\", \"RequestId\":\"%d\", \"Device\":\"%s\", \"Errors\":\"%d\", \"Requests\":\"%d\", \"ErrorRatio\":\"%.2f\", " \ + "\"Values\":{\"%s\":\"%.1f\", \"%s\":\"%.1f\", \"%s\":\"%.1f\", \"%s\":\"%.1f\"}}", + localMbusCommHandle->requestId, localMbusCommHandle->device->deviceName, + localMbusCommHandle->device->failures, localMbusCommHandle->device->requests, errorRatio, + keys[0], values[0], keys[1], values[1], keys[2], values[2], keys[3], values[3]); + } + mbus_data_record_free(data_var->record); } else { coloredMsg(LOG_RED, true, "mbc papf [%d] err: unable to parse frame", localMbusCommHandle->requestId); }