PV-Log JSON 1.1 file format


 PV-Log JSON 1.1 File Format

Technical description

History

Preface

Prerequisites

General

Technical

File types

minutes

days

months

Minute values

Day values

Month values

Header data

version

creator

fileContent

deleteDayBeforeImport

Data arrays

Plant data “plant”

powerAcWatts

totalWattHours

Inverter / String data (optional) “inverter” / “string”

powerAcWatts

totalWattHours

Feed In data (optional) “feedIn”

powerAcWatts

totalWattHours

Grid Consumption data (optional) “gridConsumption”

powerAcWatts

totalWattHours

Total Consumption data (optional) “totalConsumption”

powerAcWatts

totalWattHours

Self Consumption data (optional) “selfConsumption”

powerAcWatts

totalWattHours

Battery Input data (in Planung, optional) “batteryIn”

powerAcWatts

totalWattHours

Battery Output data (in Planung, optional) “batteryOut”

powerAcWatts

totalWattHours

Battery Charge Status data (in Planung, optional) “batteryChargeStatus”


History

Date

Name

Comment

2015-04-02

K-Ko

Fix array keys for inverters and strings to 0 (zero) based

Preface

This document describes the new PV-Log JSON 1.1 file format which is used by external applications and for internal processing.

For this format the main change is the direct correlation between timestamp and measuring value.

So this format is used for direct pushed data (API r1.1 PUT/POST) and for internal transformation of all other delivered or requested data files.

Sections marked with * and/or formatted in grey color are future plans for this format, that are not fully implemented yet.

Prerequisites

PV-Log supports only a time interval of 5 minutes fixed.

General

Technical

File types

minutes

Data tuples of measuring values, preferably in 5 minutes steps.

days

Data tuples of measuring values with timestamps which are unique in the year, month and day part, preferably in 1 day steps.

months

Data tuples of measuring values with timestamps which are unique in the year and month part, preferably for last day of month.

Minute values

{

   "creator": "www.pv-log.com",

   "version": "1.1",

   "fileContent": "minutes",

   "deleteDayBeforeImport": 0,

   "plant": {

       "powerAcWatts": {

           "2014-01-01 09:00": 0,

           "2014-01-01 09:05": 0,

           "2014-01-01 09:10": 0

       },

       "totalWattHours": 0,

       "inverter": {

           "0": {

               "powerAcWatts": {

                   "2014-01-01 09:00": 0,

                   "2014-01-01 09:05": 0,

                   "2014-01-01 09:10": 0

              },

               "totalWattHours": 0,

               "strings": {

                   "0": {

                       "powerAcWatts": {

                           "2014-01-01 09:00": 0,

                           "2014-01-01 09:05": 0,

                           "2014-01-01 09:10": 0

                      }

                   },

                   "1": {

                       "powerAcWatts": {

                           "2014-01-01 09:00": 0,

                           "2014-01-01 09:05": 0,

                           "2014-01-01 09:10": 0

                      }

                   }

               }

           },

           "1": {

               "powerAcWatts": {

                   "2014-01-01 09:00": 0,

                   "2014-01-01 09:05": 0,

                   "2014-01-01 09:10": 0

               },

               "totalWattHours": 0,

               "strings": {

                   "0": {

                       "powerAcWatts": {

                           "2014-01-01 09:00": 0,

                           "2014-01-01 09:05": 0,

                           "2014-01-01 09:10": 0

                      }

                   }

               }

           }

       }

   },

   "feedIn": {

       "powerAcWatts": {

           "2014-01-01 09:00": 0,

           "2014-01-01 09:05": 0,

           "2014-01-01 09:10": 0

       },

       "totalWattHours": 0

   },

   "gridConsumption": {

       "powerAcWatts": {

           "2014-01-01 09:00": 0,

           "2014-01-01 09:05": 0,

           "2014-01-01 09:10": 0

       },

       "totalWattHours": 0

   },

   "totalConsumption": {

       "powerAcWatts": {

           "2014-01-01 09:00": 0,

           "2014-01-01 09:05": 0,

           "2014-01-01 09:10": 0

       },

       "totalWattHours": 0

   },

   "selfConsumption": {

       "powerAcWatts": {

           "2014-01-01 09:00": 0,

           "2014-01-01 09:05": 0,

           "2014-01-01 09:10": 0

       },

       "totalWattHours": 0

   },

   "batteryIn" : {
      "powerAcWatts": {
          "2014-01-01 09:00": 0,
          "2014-01-01 09:05": 0,
          "2014-01-01 09:10": 200,
          "2014-01-01 09:15": 200,
          "2014-01-01 09:20": 100
      },
      "totalWattHours": 500
  },
  "batteryOut" : {
      "powerAcWatts": {
          "2014-01-01 09:00": 200,
          "2014-01-01 09:05": 150,
          "2014-01-01 09:10": 0,
          "2014-01-01 09:15": 0,
          "2014-01-01 09:20": 0
      },
      "totalWattHours": 350
  },

   "batteryChargeStatus" : {
      "2014-01-01 09:00": 40,
      "2014-01-01 09:05": 36,
      "2014-01-01 09:10": 33,
      "2014-01-01 09:15": 37,
      "2014-01-01 09:20": 41
  }

}

Day values

{

  "creator": "www.pv-log.com",

  "version": "1.1",

  "fileContent": "days",

  "plant": {

    "totalWattHours": {

      "2014-01-01": 0,

      "2014-01-02": 0,

      "2014-01-03": 0

    },

    "inverter": {

      "0": {

        "totalWattHours": {

          "2014-01-01": 0,

          "2014-01-02": 0,

          "2014-01-03": 0

        }

      },

      "1": {

        "totalWattHours": {

          "2014-01-01": 0,

          "2014-01-02": 0,

          "2014-01-03": 0

        }

      }

    }

  },

  "feedIn": {

    "totalWattHours": {

      "2014-01-01": 0,

      "2014-01-02": 0,

      "2014-01-03": 0

    }

  },

  "gridConsumption": {

    "totalWattHours": {

      "2014-01-01": 0,

      "2014-01-02": 0,

      "2014-01-03": 0

    }

  },

  "totalConsumption": {

    "totalWattHours": {

      "2014-01-01": 0,

      "2014-01-02": 0,

      "2014-01-03": 0

    }

  }

}

Month values

{

  "creator": "www.pv-log.com",

  "version": "1.1",

  "fileContent": "months",

  "plant": {

    "totalWattHours": {

      "2014-01": 0,

      "2014-02": 0,

      "2014-03": 0

    },

    "inverter": {

      "0": {

        "totalWattHours": {

          "2014-01": 0,

          "2014-02": 0,

          "2014-03": 0

        }

      },

      "1": {

        "totalWattHours": {

          "2014-01": 0,

          "2014-02": 0,

          "2014-03": 0

        }

      }

    }

  },

  "feedIn": {

    "totalWattHours": {

      "2014-01": 0,

      "2014-02": 0,

      "2014-03": 0

    }

  },

  "gridConsumption": {

    "totalWattHours": {

      "2014-01": 0,

      "2014-02": 0,

      "2014-03": 0

    }

  },

  "totalConsumption": {

    "totalWattHours": {

      "2014-01": 0,

      "2014-02": 0,

      "2014-03": 0

    }

  }

}

Header data

version

required

Fix "1.1"

creator

optional

Identifier for the creator of the file, for information only

fileContent

required, (minutes|days|months)

Describes the yield value type. minutes for yield values during the day, days / months for yield values of the day / month. Please regard that there are two different types of the json file – one for minute values and one for daily / monthly values!

deleteDayBeforeImport

optional, (0|1) default 0

(For files with fileContent “minutes” only)

Force loading all data from the file, overwrite all existing data (plant, inverters, strings, etc.) for the specific day.

If the flag is set to 1, all data of the day(s) covered by data timestamps in the section will be deleted before importing the new data.

The flag should not be set, except in the rare cases when the data can change reversely and therefore the previously imported yield values have to be updated. If the flag is set to 1, the whole data of the import day - that already previously was imported - will be deleted.

This leads to an increased server load and should be avoided.

(deleteDayBeforeImport is not available for file format “days” and “months”: In theses file types all data is imported and overwritten.)

Data arrays

“powerAcWatts” (minutes), “totalWattHours” (days, months)

Arrays of objects: { datetime: value }

Format for timestamps:

Plant data “plant”

powerAcWatts

required for “minutes” files, not used for “days” / “months” files

Contains an array of the recorded yield data during the day in watt.

totalWattHours

required

Contains the total yield of a day or a month in watt hours.

Inverter / String data (optional) “inverter” / “string”

powerAcWatts

at least one required but can be an empty array (night time) for “minutes” files, not used for “days” / “months” files

Contains an array of the recorded yield data during the day in watt.

totalWattHours

at least one required but can be 0 (“minutes” files) or an empty array (“days” / “months” files)

Contains the total yield of a day or a month in watt hours.


Feed In data (optional) “feedIn”

This part contains watt and watt hours of the energy, that is feed in the public grid.

powerAcWatts

required array for “minutes” files, not used for “days” / “months” files

Contains an array of the recorded energy data during the day in watt.

totalWattHours

required array for “minutes” files, not used for “days” / “months” files

Contains the total feed-in energy of a day watt hours.

Grid Consumption data (optional) “gridConsumption”

This part contains watt and watt hours of the energy, that is received from the public grid.

powerAcWatts

required array for “minutes” files, not used for “days” / “months” files

Contains an array of the recorded energy data during the day in watt.

totalWattHours

required integer for “minutes” files, not used for “days” / “months” files

Contains the total energy received from the grid of a day in watt hours.

Total Consumption data (optional) “totalConsumption”

This part contains watt and watt hours of the total consumed energy.

powerAcWatts

required array for “minutes” files, not used for “days” / “months” files

Contains an array of the recorded energy data during the day in watt.

totalWattHours

required integer for “minutes” files, not used for “days” / “months” files

Contains the total energy consumed of a day in watt hours.

Self Consumption data (optional) “selfConsumption”

This part contains watt and watt hours of the self consumed energy. selfConsumption is defined as the Minimum of plant.powerAcWatts und totalConsumption.powerAcWatts

powerAcWatts

required array for “minutes” files, not used for “days” / “months” files

Contains an array of the recorded energy data during the day in watt.

totalWattHours

required integer for “minutes” files, not used for “days” / “months” files

Contains the self consumed energy of a day in watt hours.

Battery Input data (optional) “batteryIn”

This part contains watt and watt hours of the energy used to charge the solar battery. It is only supported for “minutes” files.

powerAcWatts

required array for “minutes” files, not used for “days” / “months” files

Contains an array of the recorded energy data during the day in watt.

totalWattHours

required integer for “minutes” files, not used for “days” / “months” files

Contains the energy of a day, with which the solar battery was charged, in watt hours.

Battery Output data (optional) “batteryOut”

This part contains watt and watt hours of the energy which was discharged from the solar battery. It is only supported for “minutes” files.

powerAcWatts

required array for “minutes” files, not used for “days” / “months” files

Contains an array of the recorded energy data during the day in watt.

totalWattHours

required integer for “minutes” files, not used for “days” / “months” files

Contains the energy of a day, which was discharged from the solar battery, in watt hours.

Battery Charge Status data (optional) “batteryChargeStatus”

This part contains an array of the recorded battery charge status during the day in percent of the batteries’ total capacity. It is only supported for “minutes” files.


 /