123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714 |
- /*
- * MeterDriver.c
- *
- * Created on: 2021/6/4
- * Author: foluswen
- */
- #include "meterComm.h"
- #include "curlApi.h"
- #include "SystemLogMessage.h"
- #include "json-c/json.h"
- #define is_error(ptr) ((unsigned long)ptr > (unsigned long)-4000L)
- #define _DEBUG_ 0
- #if _DEBUG_
- #define PR(...) printf(__VA_ARGS__)
- #else
- #define PR(...)
- #endif
- unsigned char meterModel = 0;
- char meterApiAddress[128];
- /**
- * Meter model initialize
- * @param model
- */
- void meterInitialize(uint8_t model)
- {
- meterModel = model;
- }
- /**
- * Output voltage read
- * @param meter_info
- * @return
- */
- int readMeterLivemeasure(uint8_t meterIndex, Meter_Info *meter_info)
- {
- int result = FAIL;
- char host[128]="";
- uint8_t data[4096];
- sprintf(host, "http://192.168.0.%d/v1/livemeasure", (31 + meterIndex));
-
- switch(meterModel)
- {
- case METER_MODEL_LEM_L18005A:
- default:
- if(httpGet((uint8_t*)host, data) != FAIL)
- {
- //PR("data: %s\n", data);
- //PR("meterApiAddress: %s\n", meterApiAddress);
- json_object *livemeasure;
- livemeasure = json_tokener_parse((char*)data);
- if(!is_error(livemeasure))
- {
- if(json_object_object_get(livemeasure, "voltage") != NULL)
- meter_info->presetVoltage = json_object_get_double(json_object_object_get(livemeasure, "voltage"));
- PR("Output voltage %d : %.3f V\n", meter_info->presetVoltage);
- if(json_object_object_get(livemeasure, "current") != NULL)
- meter_info->presentCurrent = json_object_get_double(json_object_object_get(livemeasure, "current"));
- PR("Output current %d : %.3f V\n", meter_info->presentCurrent);
- if(json_object_object_get(livemeasure, "power") != NULL)
- meter_info->presentPower = json_object_get_double(json_object_object_get(livemeasure, "power"));
- PR("Output power %d : %.3f V\n", meter_info->presentPower);
- if(json_object_object_get(livemeasure, "energyImportTotal") != NULL)
- meter_info->totlizeImportEnergy = json_object_get_double(json_object_object_get(livemeasure, "energyImportTotal"));
- PR("Totalize import energy %d : %.3f V\n", meter_info->totlizeImportEnergy);
- if(json_object_object_get(livemeasure, "energyExportTotal") != NULL)
- meter_info->totlizeExportEnergy = json_object_get_double(json_object_object_get(livemeasure, "energyExportTotal"));
- PR("Totalize export energy %d : %.3f V\n", meter_info->totlizeExportEnergy);
- if(json_object_object_get(livemeasure, "timestamp") != NULL){
- sprintf((char*)&meter_info->timestamp, "%s", json_object_get_string(json_object_object_get(livemeasure, "timestamp")));
- PR("timestamp : %s\n",meter_info->timestamp);
- }
-
- PR("\n\n\n\n\n\n\n\n");
-
- result = PASS;
- }
- json_object_put(livemeasure);
- }
- break;
- }
- return result;
- }
- /**
- * Export & import totalize energy read
- * @param meter_info
- * @return
- */
- int readMeterStatusInfo(uint8_t meterIndex, Meter_Status_Info *meter_status_info)
- {
- int result = FAIL;
- char host[128]="";
- uint8_t data[4096];
-
- sprintf(host, "http://192.168.0.%d/v1/status", (31 + meterIndex));
-
- switch(meterModel)
- {
- case METER_MODEL_LEM_L18005A:
- default:
- //if(httpGet((uint8_t*)meterApiAddress, data) != FAIL)
- if(httpGet((uint8_t*)host,data)!= FAIL)
- {
- json_object *livemeasure;
- livemeasure = json_tokener_parse((char*)data);
-
- //PR("Get %s\n",data);
-
- if(!is_error(livemeasure))
- {
- if(json_object_object_get(json_object_object_get(livemeasure, "status"), "value") != NULL)
- {
- meter_status_info->StatusValue = json_object_get_int(json_object_object_get(json_object_object_get(livemeasure, "status"), "value"));
- PR("status-value : %d \n",meter_status_info->StatusValue);
- }
-
- //ststus bit
- if(json_object_object_get(json_object_object_get(json_object_object_get(livemeasure, "status"), "bits"), "suLinkStatusIsOk") != NULL)
- {
- meter_status_info->MeterStatusFlag.bits.suLinkStatusIsOk = json_object_get_boolean(json_object_object_get(json_object_object_get
- (json_object_object_get(livemeasure, "status"), "bits"), "suLinkStatusIsOk"));
- PR("bits-suLinkStatusIsOk : %d \n",meter_status_info->MeterStatusFlag.bits.suLinkStatusIsOk);
- }
- if(json_object_object_get(json_object_object_get(json_object_object_get(livemeasure, "status"), "bits"), "muFatalErrorOccured") != NULL)
- {
- meter_status_info->MeterStatusFlag.bits.muFatalErrorOccured = json_object_get_boolean(json_object_object_get(json_object_object_get
- (json_object_object_get(livemeasure, "status"), "bits"), "muFatalErrorOccured"));
- PR("bits-muFatalErrorOccured : %d \n",meter_status_info->MeterStatusFlag.bits.muFatalErrorOccured);
- }
-
- if(json_object_object_get(json_object_object_get(json_object_object_get(livemeasure, "status"), "bits"), "transactionIsOnGoing") != NULL)
- {
- meter_status_info->MeterStatusFlag.bits.transactionIsOnGoing = json_object_get_boolean(json_object_object_get(json_object_object_get
- (json_object_object_get(livemeasure, "status"), "bits"), "transactionIsOnGoing"));
- PR("bits-transactionIsOnGoing : %d \n",meter_status_info->MeterStatusFlag.bits.transactionIsOnGoing);
- }
- if(json_object_object_get(json_object_object_get(json_object_object_get(livemeasure, "status"), "bits"), "tamperingIsDetected") != NULL)
- {
- meter_status_info->MeterStatusFlag.bits.tamperingIsDetected = json_object_get_boolean(json_object_object_get(json_object_object_get
- (json_object_object_get(livemeasure, "status"), "bits"), "tamperingIsDetected"));
- PR("bits-tamperingIsDetected : %d \n",meter_status_info->MeterStatusFlag.bits.tamperingIsDetected);
- }
-
- if(json_object_object_get(json_object_object_get(json_object_object_get(livemeasure, "status"), "bits"), "timeSyncStatusIsOk") != NULL)
- {
- meter_status_info->MeterStatusFlag.bits.timeSyncStatusIsOk = json_object_get_boolean(json_object_object_get(json_object_object_get
- (json_object_object_get(livemeasure, "status"), "bits"), "timeSyncStatusIsOk"));
- PR("bits-timeSyncStatusIsOk : %d \n",meter_status_info->MeterStatusFlag.bits.timeSyncStatusIsOk);
- }
-
- if(json_object_object_get(json_object_object_get(json_object_object_get(livemeasure, "status"), "bits"), "overTemperatureIsDetected") != NULL)
- {
- meter_status_info->MeterStatusFlag.bits.overTemperatureIsDetected = json_object_get_boolean(json_object_object_get(json_object_object_get
- (json_object_object_get(livemeasure, "status"), "bits"), "overTemperatureIsDetected"));
- PR("bits-overTemperatureIsDetected : %d \n",meter_status_info->MeterStatusFlag.bits.overTemperatureIsDetected);
- }
-
- if(json_object_object_get(json_object_object_get(json_object_object_get(livemeasure, "status"), "bits"), "reversedVoltage") != NULL)
- {
- meter_status_info->MeterStatusFlag.bits.reversedVoltage = json_object_get_boolean(json_object_object_get(json_object_object_get
- (json_object_object_get(livemeasure, "status"), "bits"), "reversedVoltage"));
- PR("bits-reversedVoltage : %d \n",meter_status_info->MeterStatusFlag.bits.reversedVoltage);
- }
-
- if(json_object_object_get(json_object_object_get(json_object_object_get(livemeasure, "status"), "bits"), "suMeasureFailureOccurred") != NULL)
- {
- meter_status_info->MeterStatusFlag.bits.suMeasureFailureOccurred = json_object_get_boolean(json_object_object_get(json_object_object_get
- (json_object_object_get(livemeasure, "status"), "bits"), "suMeasureFailureOccurred"));
- PR("bits-suMeasureFailureOccurred : %d \n",meter_status_info->MeterStatusFlag.bits.suMeasureFailureOccurred);
- }
-
-
- if(json_object_object_get(json_object_object_get(livemeasure, "version"), "applicationFirmwareVersion") != NULL)
- {
- sprintf((char*)&meter_status_info->applicationFirmwareVersion, "%s", json_object_get_string(json_object_object_get
- (json_object_object_get(livemeasure, "version"), "applicationFirmwareVersion")));
- PR("applicationFirmwareVersion : %s\n",meter_status_info->applicationFirmwareVersion);
- }
- if(json_object_object_get(json_object_object_get(livemeasure, "version"), "applicationFirmwareAuthTag") != NULL)
- {
- sprintf((char*)&meter_status_info->applicationFirmwareAuthTag, "%s", json_object_get_string(json_object_object_get
- (json_object_object_get(livemeasure, "version"), "applicationFirmwareAuthTag")));
- PR("applicationFirmwareAuthTag : %s\n",meter_status_info->applicationFirmwareAuthTag);
- }
-
- if(json_object_object_get(json_object_object_get(livemeasure, "version"), "legalFirmwareVersion") != NULL)
- {
- sprintf((char*)&meter_status_info->legalFirmwareVersion, "%s", json_object_get_string(json_object_object_get
- (json_object_object_get(livemeasure, "version"), "legalFirmwareVersion")));
- PR("applicationFirmwareAuthTag : %s\n",meter_status_info->legalFirmwareVersion);
- }
-
- if(json_object_object_get(json_object_object_get(livemeasure, "version"), "legalFirmwareAuthTag") != NULL)
- {
- sprintf((char*)&meter_status_info->legalFirmwareAuthTag, "%s", json_object_get_string(json_object_object_get
- (json_object_object_get(livemeasure, "version"), "legalFirmwareAuthTag")));
- PR("applicationFirmwareAuthTag : %s\n",meter_status_info->legalFirmwareAuthTag);
- }
-
- if(json_object_object_get(json_object_object_get(livemeasure, "version"), "sensorFirmwareVersion") != NULL)
- {
- sprintf((char*)&meter_status_info->sensorFirmwareVersion, "%s", json_object_get_string(json_object_object_get
- (json_object_object_get(livemeasure, "version"), "sensorFirmwareVersion")));
- PR("applicationFirmwareAuthTag : %s\n",meter_status_info->sensorFirmwareVersion);
- }
- if(json_object_object_get(json_object_object_get(livemeasure, "version"), "sensorFirmwareCrc") != NULL)
- {
- sprintf((char*)&meter_status_info->sensorFirmwareCrc, "%s", json_object_get_string(json_object_object_get
- (json_object_object_get(livemeasure, "version"), "sensorFirmwareCrc")));
- PR("applicationFirmwareAuthTag : %s\n",meter_status_info->sensorFirmwareCrc);
- }
-
- if(json_object_object_get(livemeasure, "ipAddress") != NULL)
- {
- sprintf((char*)&meter_status_info->ipAddress, "%s", json_object_get_string(json_object_object_get(livemeasure, "ipAddress")));
- PR("ipAddress : %s\n",meter_status_info->ipAddress);
- }
- if(json_object_object_get(livemeasure, "meterId") != NULL)
- {
- sprintf((char*)&meter_status_info->meterId, "%s", json_object_get_string(json_object_object_get(livemeasure, "meterId")));
- PR("meterId : %s\n",meter_status_info->meterId);
- }
- //error bit
- if(json_object_object_get(json_object_object_get(json_object_object_get(livemeasure, "errors"), "bits"), "muInitIsFailed") != NULL)
- {
- meter_status_info->MeterErrorFlag.bits.muInitIsFailed = json_object_get_boolean(json_object_object_get(json_object_object_get
- (json_object_object_get(livemeasure, "errors"), "bits"), "muInitIsFailed"));
- PR("bits-muInitIsFailed : %d \n",meter_status_info->MeterErrorFlag.bits.muInitIsFailed);
- }
- if(json_object_object_get(json_object_object_get(json_object_object_get(livemeasure, "errors"), "bits"), "suStateIsInvalid") != NULL)
- {
- meter_status_info->MeterErrorFlag.bits.suStateIsInvalid = json_object_get_boolean(json_object_object_get(json_object_object_get
- (json_object_object_get(livemeasure, "errors"), "bits"), "suStateIsInvalid"));
- PR("bits-suStateIsInvalid : %d \n",meter_status_info->MeterErrorFlag.bits.suStateIsInvalid);
- }
-
- if(json_object_object_get(json_object_object_get(json_object_object_get(livemeasure, "errors"), "bits"), "versionCheckIsFailed") != NULL)
- {
- meter_status_info->MeterErrorFlag.bits.versionCheckIsFailed = json_object_get_boolean(json_object_object_get(json_object_object_get
- (json_object_object_get(livemeasure, "errors"), "bits"), "versionCheckIsFailed"));
- PR("bits-versionCheckIsFailed : %d \n",meter_status_info->MeterErrorFlag.bits.versionCheckIsFailed);
- }
- if(json_object_object_get(json_object_object_get(json_object_object_get(livemeasure, "errors"), "bits"), "muRngInitIsFailed") != NULL)
- {
- meter_status_info->MeterErrorFlag.bits.muRngInitIsFailed = json_object_get_boolean(json_object_object_get(json_object_object_get
- (json_object_object_get(livemeasure, "errors"), "bits"), "muRngInitIsFailed"));
- PR("bits-muRngInitIsFailed : %d \n",meter_status_info->MeterErrorFlag.bits.muRngInitIsFailed);
- }
-
- if(json_object_object_get(json_object_object_get(json_object_object_get(livemeasure, "errors"), "bits"), "muDataIntegrityIsFailed") != NULL)
- {
- meter_status_info->MeterErrorFlag.bits.muDataIntegrityIsFailed = json_object_get_boolean(json_object_object_get(json_object_object_get
- (json_object_object_get(livemeasure, "errors"), "bits"), "muDataIntegrityIsFailed"));
- PR("bits-muDataIntegrityIsFailed : %d \n",meter_status_info->MeterErrorFlag.bits.muDataIntegrityIsFailed);
- }
-
- if(json_object_object_get(json_object_object_get(json_object_object_get(livemeasure, "errors"), "bits"), "muFwIntegrityIsFailed") != NULL)
- {
- meter_status_info->MeterErrorFlag.bits.muFwIntegrityIsFailed = json_object_get_boolean(json_object_object_get(json_object_object_get
- (json_object_object_get(livemeasure, "errors"), "bits"), "muFwIntegrityIsFailed"));
- PR("bits-muFwIntegrityIsFailed : %d \n",meter_status_info->MeterErrorFlag.bits.muFwIntegrityIsFailed);
- }
-
- if(json_object_object_get(json_object_object_get(json_object_object_get(livemeasure, "errors"), "bits"), "suIntegrityIsFailed") != NULL)
- {
- meter_status_info->MeterErrorFlag.bits.suIntegrityIsFailed = json_object_get_boolean(json_object_object_get(json_object_object_get
- (json_object_object_get(livemeasure, "errors"), "bits"), "suIntegrityIsFailed"));
- PR("bits-suIntegrityIsFailed : %d \n",meter_status_info->MeterErrorFlag.bits.suIntegrityIsFailed);
- }
-
- if(json_object_object_get(json_object_object_get(json_object_object_get(livemeasure, "errors"), "bits"), "logbookIntegrityIsFailed") != NULL)
- {
- meter_status_info->MeterErrorFlag.bits.logbookIntegrityIsFailed = json_object_get_boolean(json_object_object_get(json_object_object_get
- (json_object_object_get(livemeasure, "errors"), "bits"), "logbookIntegrityIsFailed"));
- PR("bits-logbookIntegrityIsFailed : %d \n",meter_status_info->MeterErrorFlag.bits.logbookIntegrityIsFailed);
- }
-
- if(json_object_object_get(json_object_object_get(json_object_object_get(livemeasure, "errors"), "bits"), "logbookIsFull") != NULL)
- {
- meter_status_info->MeterErrorFlag.bits.logbookIsFull = json_object_get_boolean(json_object_object_get(json_object_object_get
- (json_object_object_get(livemeasure, "errors"), "bits"), "logbookIsFull"));
- PR("bits-logbookIsFull : %d \n",meter_status_info->MeterErrorFlag.bits.logbookIsFull);
- }
-
- if(json_object_object_get(json_object_object_get(json_object_object_get(livemeasure, "errors"), "bits"), "memoryAccessIsFailed") != NULL)
- {
- meter_status_info->MeterErrorFlag.bits.memoryAccessIsFailed = json_object_get_boolean(json_object_object_get(json_object_object_get
- (json_object_object_get(livemeasure, "errors"), "bits"), "memoryAccessIsFailed"));
- PR("bits-memoryAccessIsFailed : %d \n",meter_status_info->MeterErrorFlag.bits.memoryAccessIsFailed);
- }
-
- if(json_object_object_get(json_object_object_get(json_object_object_get(livemeasure, "errors"), "bits"), "muStateIsFailed") != NULL)
- {
- meter_status_info->MeterErrorFlag.bits.muStateIsFailed = json_object_get_boolean(json_object_object_get(json_object_object_get
- (json_object_object_get(livemeasure, "errors"), "bits"), "muStateIsFailed"));
- PR("bits-muStateIsFailed : %d \n",meter_status_info->MeterErrorFlag.bits.muStateIsFailed);
- }
-
- if(json_object_object_get(livemeasure, "publicKey") != NULL)
- {
- sprintf((char*)&meter_status_info->publicKey, "%s", json_object_get_string(json_object_object_get(livemeasure, "publicKey")));
- PR("publicKey : %s\n",meter_status_info->publicKey);
- }
- if(json_object_object_get(livemeasure, "publicKeyOcmf") != NULL)
- {
- sprintf((char*)&meter_status_info->publicKeyOcmf, "%s", json_object_get_string(json_object_object_get(livemeasure, "publicKeyOcmf")));
- PR("publicKeyOcmf : %s\n",meter_status_info->publicKeyOcmf);
- }
- if(json_object_object_get(livemeasure, "indexOfLastTransaction") != NULL)
- {
- meter_status_info->indexOfLastTransaction = json_object_get_int(json_object_object_get(livemeasure, "indexOfLastTransaction"));
- PR("indexOfLastTransaction : %d \n",meter_status_info->indexOfLastTransaction);
- }
-
- if(json_object_object_get(livemeasure, "numberOfStoredTransactions") != NULL)
- {
- meter_status_info->numberOfStoredTransactions = json_object_get_int(json_object_object_get(livemeasure, "numberOfStoredTransactions"));
- PR("numberOfStoredTransactions : %d \n",meter_status_info->numberOfStoredTransactions);
- }
-
- PR("\n\n\n\n\n\n\n\n");
- result = PASS;
- }
-
- json_object_put(livemeasure);
- }
- break;
- }
-
- return result;
- }
- int startMeterTransaction(uint8_t meterIndex, Meter_transaction_Action *meter_transaction_Action)
- {
- int result = FAIL;
- char host[128]="";
- uint8_t data[4096];
- uint8_t tmp[4096];
- json_object *TransactionStartData = json_object_new_object();
- json_object_object_add(TransactionStartData, "evseId", json_object_new_string((char*)meter_transaction_Action->head.evseId));
- json_object_object_add(TransactionStartData, "transactionId", json_object_new_string((char*)meter_transaction_Action->head.transactionId));
- json_object_object_add(TransactionStartData, "clientId", json_object_new_string((char*)meter_transaction_Action->head.clientId));
- json_object_object_add(TransactionStartData, "tariffId", json_object_new_int(meter_transaction_Action->head.tariffId));
- json_object_object_add(TransactionStartData, "cableId", json_object_new_int(meter_transaction_Action->head.cableId));
- json_object_object_add(TransactionStartData, "userData", json_object_new_string((char*)meter_transaction_Action->head.userData));
- sprintf((char*)tmp, "%s", json_object_to_json_string_ext(TransactionStartData, JSON_C_TO_STRING_PLAIN));
- sprintf(host, "http://192.168.0.%d/v1/legal", (31 + meterIndex));
-
- switch(meterModel)
- {
- case METER_MODEL_LEM_L18005A:
- default:
-
-
- if(httpPost((uint8_t*)host,tmp,data)!= FAIL)
- {
- json_object *livemeasure;
- livemeasure = json_tokener_parse((char*)data);
-
- if(!is_error(livemeasure))
- {
- PR("PostStartGet %s\n",data);
- result = PASS;
- }
- json_object_put(livemeasure);
- json_object_put(TransactionStartData);
- }
- break;
- }
-
- return result;
-
- }
- int stopMeterTransaction(uint8_t meterIndex, Meter_transaction_Action *meter_transaction_Action,Meter_transaction_Result *meter_transaction_Result)
- {
- int result = FAIL;
- char host[128]="";
- uint8_t data[4096];
- uint8_t tmp[4096];
- sprintf(host, "http://192.168.0.%d/v1/legal?transactionId=%s",(31 + meterIndex), meter_transaction_Action->head.transactionId);
-
- json_object *TransactionStopData = json_object_new_object();
- json_object_object_add(TransactionStopData, "running", json_object_new_boolean(0));
- sprintf((char*)tmp, "%s", json_object_to_json_string_ext(TransactionStopData, JSON_C_TO_STRING_PLAIN));
-
- switch(meterModel)
- {
- case METER_MODEL_LEM_L18005A:
- default:
- if(httpPut((uint8_t*)host,tmp,data)!= FAIL)
- //if(httpGet(host,data)!= FAIL)
- {
- json_object *livemeasure;
- livemeasure = json_tokener_parse((char*)data);
-
- if(!is_error(livemeasure))
- {
- PR("PutStopGet %s\n",data);
-
-
- if(json_object_object_get(livemeasure, "paginationCounter") != NULL)
- {
- meter_transaction_Result->paginationCounter = json_object_get_int(json_object_object_get(livemeasure, "paginationCounter"));
- PR("paginationCounter : %d\n",meter_transaction_Result->paginationCounter);
- }
- if(json_object_object_get(livemeasure, "transactionId") != NULL)
- {
- sprintf((char*)&meter_transaction_Result->head.transactionId, "%s", json_object_get_string(json_object_object_get(livemeasure, "transactionId")));
- PR("transactionId : %s\n",meter_transaction_Result->head.transactionId);
- }
- if(json_object_object_get(livemeasure, "evseId") != NULL)
- {
- sprintf((char*)&meter_transaction_Result->head.evseId, "%s", json_object_get_string(json_object_object_get(livemeasure, "evseId")));
- PR("evseId : %s\n",meter_transaction_Result->head.evseId);
- }
-
- if(json_object_object_get(livemeasure, "clientId") != NULL)
- {
- sprintf((char*)&meter_transaction_Result->head.clientId, "%s", json_object_get_string(json_object_object_get(livemeasure, "clientId")));
- PR("clientId : %s\n",meter_transaction_Result->head.clientId);
- }
- if(json_object_object_get(livemeasure, "tariffId") != NULL)
- {
- meter_transaction_Result->head.tariffId = json_object_get_int(json_object_object_get(livemeasure, "tariffId"));
- PR("tariffId : %d\n",meter_transaction_Result->head.tariffId);
- }
- if(json_object_object_get(livemeasure, "userData") != NULL)
- {
- sprintf((char*)&meter_transaction_Result->head.userData, "%s", json_object_get_string(json_object_object_get(livemeasure, "userData")));
- PR("clientId : %s\n",meter_transaction_Result->head.userData);
- }
- if(json_object_object_get(json_object_object_get(livemeasure, "meterValue"), "timestampStart") != NULL)
- {
- sprintf((char*)&meter_transaction_Result->timestampStart, "%s", json_object_get_string(json_object_object_get
- (json_object_object_get(livemeasure, "meterValue"), "timestampStart")));
- PR("timestampStart : %s\n",meter_transaction_Result->timestampStart);
- }
- if(json_object_object_get(json_object_object_get(livemeasure, "meterValue"), "timestampStop") != NULL)
- {
- sprintf((char*)&meter_transaction_Result->timestampStop, "%s", json_object_get_string(json_object_object_get
- (json_object_object_get(livemeasure, "meterValue"), "timestampStop")));
- PR("timestampStop : %s\n",meter_transaction_Result->timestampStop);
- }
- if(json_object_object_get(json_object_object_get(livemeasure, "meterValue"), "transactionDuration") != NULL)
- {
- meter_transaction_Result->transactionDuration = json_object_get_int(json_object_object_get
- (json_object_object_get(livemeasure, "meterValue"), "transactionDuration"));
- PR("transactionDuration : %d\n",meter_transaction_Result->transactionDuration);
- }
- if(json_object_object_get(json_object_object_get(livemeasure, "meterValue"), "transactionStatus") != NULL)
- {
- meter_transaction_Result->transactionStatus = json_object_get_int(json_object_object_get
- (json_object_object_get(livemeasure, "meterValue"), "transactionStatus"));
- PR("transactionStatus : %d\n",meter_transaction_Result->transactionStatus);
- }
- if(json_object_object_get(json_object_object_get(json_object_object_get(livemeasure, "meterValue"), "sampleValue"), "energyUnit") != NULL)
- {
- strcpy((char*)meter_transaction_Result->energyUnit, json_object_get_string(json_object_object_get(json_object_object_get(json_object_object_get
- (livemeasure, "meterValue"), "sampleValue"), "energyUnit")));
- PR("energyUnit : %s\n",meter_transaction_Result->energyUnit);
- }
-
- if(json_object_object_get(json_object_object_get(json_object_object_get(livemeasure, "meterValue"), "sampleValue"), "energyImport") != NULL)
- {
- meter_transaction_Result->energyImport = json_object_get_double(json_object_object_get(json_object_object_get(json_object_object_get
- (livemeasure, "meterValue"), "sampleValue"), "energyImport"));
- PR("energyImport : %.3f\n",meter_transaction_Result->energyImport);
- }
-
- if(json_object_object_get(json_object_object_get(json_object_object_get(livemeasure, "meterValue"), "sampleValue"), "energyImportTotalStart") != NULL)
- {
- meter_transaction_Result->energyImportTotalStart = json_object_get_double(json_object_object_get(json_object_object_get(json_object_object_get
- (livemeasure, "meterValue"), "sampleValue"), "energyImportTotalStart"));
- PR("energyImportTotalStart : %.3f\n",meter_transaction_Result->energyImportTotalStart);
- }
- if(json_object_object_get(json_object_object_get(json_object_object_get(livemeasure, "meterValue"), "sampleValue"), "energyImportTotalStop") != NULL)
- {
- meter_transaction_Result->energyImportTotalStop = json_object_get_double(json_object_object_get(json_object_object_get(json_object_object_get
- (livemeasure, "meterValue"), "sampleValue"), "energyImportTotalStop"));
- PR("energyImportTotalStop : %.3f\n",meter_transaction_Result->energyImportTotalStop);
- }
- if(json_object_object_get(json_object_object_get(json_object_object_get(livemeasure, "meterValue"), "sampleValue"), "energyExport") != NULL)
- {
- meter_transaction_Result->energyExport = json_object_get_double(json_object_object_get(json_object_object_get(json_object_object_get
- (livemeasure, "meterValue"), "sampleValue"), "energyExport"));
- PR("energyExport : %.3f\n",meter_transaction_Result->energyExport);
- }
- if(json_object_object_get(json_object_object_get(json_object_object_get(livemeasure, "meterValue"), "sampleValue"), "energyExportTotalStart") != NULL)
- {
- meter_transaction_Result->energyExportTotalStart = json_object_get_double(json_object_object_get(json_object_object_get(json_object_object_get
- (livemeasure, "meterValue"), "sampleValue"), "energyExportTotalStart"));
- PR("energyExportTotalStart : %.3f\n",meter_transaction_Result->energyExportTotalStart);
- }
- if(json_object_object_get(json_object_object_get(json_object_object_get(livemeasure, "meterValue"), "sampleValue"), "energyExportTotalStop") != NULL)
- {
- meter_transaction_Result->energyExportTotalStop = json_object_get_double(json_object_object_get(json_object_object_get(json_object_object_get
- (livemeasure, "meterValue"), "sampleValue"), "energyExportTotalStop"));
- PR("energyExportTotalStop : %.3f\n",meter_transaction_Result->energyExportTotalStop);
- }
-
- if(json_object_object_get(livemeasure, "signature") != NULL)
- {
- sprintf((char*)&meter_transaction_Result->signature, "%s", json_object_get_string(json_object_object_get(livemeasure, "signature")));
- PR("signature : %s\n",meter_transaction_Result->signature);
- }
-
- PR("\n\n\n\n\n\n\n\n");
-
- result = PASS;
- }
- json_object_put(livemeasure);
- json_object_put(TransactionStopData);
-
- }
- break;
- }
-
-
-
- return result;
-
- }
- int readMeterTransactionOCMF(uint8_t meterIndex, Meter_transaction_Action *meter_transaction_Action)
- {
- int result = FAIL;
- char host[128]="";
- uint8_t data[4096];
-
- sprintf(host, "http://192.168.0.%d/v1/ocmf?transactionId=%s",(31 + meterIndex),meter_transaction_Action->head.transactionId);
- //printf ("host : %s\n",host);
-
- switch(meterModel)
- {
- case METER_MODEL_LEM_L18005A:
- default:
- if(httpGet((uint8_t*)host,data)!= FAIL)
- {
-
- PR("Get %s\n",data);
- sprintf((char*)&meter_transaction_Action->transactionOCMF, "%s", data);
- //printf("GETOCMF %s\n",meter_transaction_Result->transactionOCMF);
- json_object *livemeasure;
- livemeasure = json_tokener_parse((char*)data);
-
- if(!is_error(livemeasure))
- {
- result = PASS;
- }
-
- json_object_put(livemeasure);
-
- }
- break;
- }
-
-
-
- return result;
-
- }
- int readMeterLegal(uint8_t meterIndex, Meter_transaction_Action *meter_transaction_Action)
- {
- int result = FAIL;
- char host[128]="";
- uint8_t data[4096];
-
- sprintf(host, "http://192.168.0.%d/v1/legal",(31 + meterIndex));
- //printf ("host : %s\n",host);
-
- switch(meterModel)
- {
- case METER_MODEL_LEM_L18005A:
- default:
- if(httpGet((uint8_t*)host,data)!= FAIL)
- {
-
- json_object *livemeasure;
- livemeasure = json_tokener_parse((char*)data);
-
- if(!is_error(livemeasure))
- {
- if(json_object_object_get(livemeasure, "transactionId") != NULL)
- {
- sprintf((char*)&meter_transaction_Action->head.transactionId, "%s", json_object_get_string(json_object_object_get(livemeasure, "transactionId")));
- PR("transactionId : %s\n",meter_transaction_Action->head.transactionId);
- }
- result = PASS;
- }
-
- json_object_put(livemeasure);
-
- }
- break;
- }
-
-
-
- return result;
-
- }
- int configure_meter_time(uint8_t meterIndex)
- {
- int result = FAIL;
-
- char host[256]="";
- uint8_t postdata[256];
- uint8_t data[4096];
-
- time_t tmi;
- struct tm* utcTime;
- time(&tmi);
- utcTime = gmtime(&tmi);
-
- //{"time": { "utc":"2022-06-29T13:09:26Z" }}
- sprintf(host,"http://192.168.0.%d/v1/settings",(31 + meterIndex));
- memset(postdata, 0, sizeof(postdata));
- sprintf((char*)postdata,"{\"time\": { \"utc\":\"%d-%d-%dT%02d:%02d:%02dZ\" }}", (utcTime->tm_year+1900), (utcTime->tm_mon+1), (utcTime->tm_mday), (utcTime->tm_hour) % 24, utcTime->tm_min, utcTime->tm_sec);
- //sprintf(postdata,"{\"time\": { \"utc\":\"%d-%d-%dT%02d:%02d:%02dZ\" }}", 2021, (utcTime->tm_mon+1), (utcTime->tm_mday), (utcTime->tm_hour) % 24, utcTime->tm_min, utcTime->tm_sec);
-
- PR("Local time and date: %s\n", postdata);
-
- switch(meterModel)
- {
- case METER_MODEL_LEM_L18005A:
- default:
- if(httpPut((uint8_t*)host,postdata, data)!= FAIL)
- {
- json_object *livemeasure;
- livemeasure = json_tokener_parse((char*)data);
-
- if(!is_error(livemeasure))
- {
- PR("PutConfingTimeGet %s\n",data);
- PR("\n\n\n\n\n\n\n\n");
-
- if(json_object_object_get(livemeasure, "result") != NULL)
- {
- PR("configure_meter_time resul: %d \n",json_object_get_int(json_object_object_get(livemeasure, "result")));
- }
-
- result = PASS;
- }
- json_object_put(livemeasure);
-
- }
- break;
- }
-
- return result;
-
- }
|