//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;
}
Beispiel #2
0
//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;
}