//Log Reading with date info to CSV File int Log2File(char *DataPath, uint16_t mode, uint16_t meterindex, uint16_t infoflag, double metervalue, ecMBUSData *rfData, uint32_t ident) { //metervalue was erroneously declared as float, changed to double char param[ _MAX_PATH]; char datFile[_MAX_PATH]; FILE *hDatFile; time_t t; struct tm curtime; switch(mode) { case LOGTOCSV : sprintf(param, "/var/www/ecpiww/data/ecpiwwM%d.csv", meterindex+1); Log2CSVFile(param, metervalue); //log kWh return APIOK; break; case LOGTOXML : if (strlen(DataPath) == 0) { getcwd(param, sizeof(param)); sprintf(param, "%s/%08X.xml", param, ident); } else { sprintf(param, "%s/%08X.xml", DataPath, ident); } Log2XMLFile(param, metervalue, rfData); //log kWh return APIOK; break; case LOGTOVZ : if( access( "add2vz.sh", F_OK ) != -1 ) { memset(param, '\0', sizeof(FILENAME_MAX)); sprintf(param, "./add2vz.sh %d %ld ", meterindex+1, (long int)metervalue*1000); int ret=system(param); t = time(NULL); curtime = *localtime(&t); if(0x100 == ret) { if(infoflag > SILENTMODE) printf("%02d:%02d Calling %s \n", curtime.tm_hour, curtime.tm_min, param); } else { if(infoflag > SILENTMODE) printf("%02d:%02d Calling %s returned with 0x%X\n", curtime.tm_hour, curtime.tm_min, param, ret); } } return APIOK; break; case LOGTODAT: if (strlen(DataPath) == 0) { getcwd(param, sizeof(param)); sprintf(datFile, "%s/%08X.dat", param, ident); } else{ sprintf(datFile, "%s/%08X.dat", DataPath, ident); } if ((hDatFile = fopen(datFile, "wb")) != NULL) { fprintf(hDatFile, "%.1f\n", metervalue); fclose(hDatFile); } return APIOK; break; } return APIERROR; }
//Log Reading with date info to CSV File int Log2File(char *DataPath, uint16_t mode, uint16_t meterindex, uint16_t infoflag, float metervalue, ecMBUSData *rfData, pecwMBUSMeter RFSource) { char param[ _MAX_PATH]; char datFile[_MAX_PATH]; FILE *hDatFile; time_t t; struct tm curtime; switch(mode) { default: case LOGTOCSV : sprintf(param, "/home/pi/data/wmbus/wmbus_%04x_%08x_%02x_%02x.csv", RFSource->manufacturerID, RFSource->ident, RFSource->type, RFSource->version); Log2CSVFile(param, metervalue, rfData); //log kWh return APIOK; break; } return APIERROR; }