NAV
cURL PHP

Introduction

As you scroll through the page, you can follow these code snippets.

The VCOM API enables you to directly access your data on the meteocontrol platform. Some resources are read-only, others can be created or modified.

Access to the VCOM API requires an API-Key as well as credentials to our platform (VCOM only). As a partner of meteocontrol we will provide you an API-Key.

Intended Audience

This guide is intended to assist software developers who want to develop applications by using the VCOM API. It assumes the reader has a general understanding of web services and is familiar with the following technologies:

Getting Started

Code snippet

    curl
    -u username:password
    -H "X-API-KEY: apiKey"
    'https://api.meteocontrol.de/v2/<endpoint>'
<?php
    use meteocontrol\client\vcomapi\ApiClient;

    require_once __DIR__ . '/vendor/autoload.php';
    $api = ApiClient::get('username', 'password', 'apiKey');

Whether you’re using curl, a client provided by meteocontrol or your own implementation, you will need to have the following information ready:

API-Key

Credentials (username, password)

Resources

We provide an always up-to-date PHP client, and blueprint clients for other languages to help you get started. Please visit our GitHub Page to find out more about using meteocontrol’s API Clients in your projects.

Look to the right for examples using curl and our PHP client.

Datacenter

The meteocontrol VCOM API can be found at:

Authentication

Request (Basic)

curl
-u username:password
-H "X-API-KEY: <apiKey>"
'https://api.meteocontrol.de/v2/<endpoint>'

Request (OAuth)

curl
-H "X-API-KEY: <apiKey>"
-H "Authorization: Bearer <Access Token>"
'https://api.meteocontrol.de/v2/<endpoint>'

The API requires you to authenticate using OAuth Authentication or Basic Authentication with an API-Key. Each request must include the following headers:

Header field name Header field value Description
Authorization required Bearer <Access Token> or
Basic <base64(username:password)>
Provide an OAuth access token from login endpoint*,
or provide a base64 encoded basic authorization token.(Deprecated)
X-API-KEY required <apiKey> Replace <apiKey> with your API-Key.

*To use OAuth authorization, please read here for more information.

While using Basic authorization, given meteocontrol as the username, secret as the password and abcdef as the API-Key the headers are formed as follows:

Authorization: Basic bWV0ZW9jb250cm9sOnNlY3JldA==
X-API-KEY: abcdef

Rate Limiting

The number of requests is limited depending on the level of your API-Key.

API Level Calls per minute Calls per day
API 500 30 500
API 10.000 90 10.000
API 100.000 270 100.000
API 150.000 360 150.000

Every request will be answered with a rate limit information in the response headers:

Header field name Description
X-RateLimit-Reset-Minute The time at which the current minute rate limit resets in RFC 7231 format.
X-RateLimit-Limit-Minute The maximum number of requests that the client is permitted to make per minute.
X-RateLimit-Remaining-Minute The number of requests remaining in the current minute rate limit window.
X-RateLimit-Reset-Day The time at which the current day rate limit resets in RFC 7231 format.
X-RateLimit-Limit-Day The maximum number of requests that the client is permitted to make per day.
X-RateLimit-Remaining-Day The number of requests remaining in the current day rate limit window.

A typical response might look like this:

HTTP/1.1 200 OK
Date: Thu, 25 Feb 2016 10:31:57 GMT
X-RateLimit-Reset-Minute: Thu, 25 Feb 2016 10:32:57 GMT
X-RateLimit-Limit-Minute: 100
X-RateLimit-Remaining-Minute: 99
X-RateLimit-Reset-Day: Thu, 25 Feb 2016 14:51:02 GMT
X-RateLimit-Limit-Day: 100000
X-RateLimit-Remaining-Day: 99999

When either minute or day rate limit is exceeded the server will respond with the 429 status code:

HTTP/1.1 429 Too Many Requests
Date: Thu, 25 Feb 2016 11:03:53 GMT
X-RateLimit-Reset-Minute: Thu, 25 Feb 2016 11:04:45 GMT
X-RateLimit-Limit-Minute: 10
X-RateLimit-Remaining-Minute: 0
X-RateLimit-Reset-Day: Fri, 26 Feb 2016 10:31:31 GMT
X-RateLimit-Limit-Day: 500
X-RateLimit-Remaining-Day: 328

Cache

Request

curl
-u username:password
-H "X-API-KEY: 1234567890"
-H "Cache-Control: no-cache"
'https://api.meteocontrol.de/v2/<endpoint>'

The API allows user specify cache mode for each request, if there’s no Cache-Control header given the API will use cache by default.

Header field name Header field value Description
Cache-Control optional no-cache Disable cache

Timestamps

All provided timestamps must comply to the ISO-8601 standard with the exception that the week dates and ordinal dates notation is not supported. The VCOM-API will always return full ISO-8601 timestamps.

When requesting data it’s allowed to omit parts of the timestamp starting from the end, meaning 2010-01-01 is still valid and may be used for endpoints which return daily data. 2010-01 for endpoints returning monthly data, and so on. If parts of the timestamp are omitted the date will be initialized with zeros (2010-01-01 => 2010-01-01 00:00:00), please take this into account when requesting interval data.

If no timezone is provided, the timezone of the related power plant will be determined and used for the returned data. The power plant timezone will also be used in cases where the from and to timezones don’t match.

Complied timestamp format examples

Content Encoding

Request

curl
--compressed 
-u username:password
-H "X-API-KEY: 1234567890"
'https://api.meteocontrol.de/v2/<endpoint>'

The API supports standard HTTP content-encoding. If there’s no Accept-Encoding header present, an unsupported algorithm was requested, or the response size is below 512 bytes, the API will not compress the response.

Note: The official client libraries always request gzip encoded content.

Header field name Header field value Description
Accept-Encoding optional gzipǀdeflate Comma separated list of compression algorithms

Errors

Error Code Meaning
400 Bad request. Possible reasons:
  • Malformed request parameters
  • Missing request parameters
  • Invalid json data provided
401 Unauthorized. Possible reasons:
  • Basic Authentication failed
  • No API-key was provided
  • An invalid API-Key was provided
403 Forbidden. Possible reasons:
  • User is not authorized to access the system
  • User is not authorized to access the ticket
404 Endpoint not found. Possible reasons:
  • Route is not found
  • Request an invalid device ID
  • Request an invalid abbreviation ID
  • Request an invalid comment ID
405 Method not allowed (See the returned Allow header for the set of methods supported by the resource)
429 Too Many Requests (Rate limit exceeded)
500 Unexpected Internal Error.
Our IT department has been notified and will look into this issue shortly - Try again later.

Endpoints

Session

Get one session object

Request

curl 'https://api.meteocontrol.de/v2/session'
<?php
    /** @var Session $session */
    $session = $api->session()->get();

Response

{
  "data": {
    "user": {
      "id": "123",
      "title": "Mr.",
      "firstName": "First Name",
      "lastName": "Last Name",
      "username": "user.name",
      "email": "example@example.com",
      "language": "en",
      "company": "Company",
      "fax": "0234567890",
      "telephone": "0234567891",
      "cellphone": "0987654321",
      "address": {
        "city": "City",
        "country": "Country",
        "postalCode": "12345",
        "street": "Street 123",
        "streetAddition": "2F-1"
      },
      "timezone": {
        "name": "Europe/Berlin",
        "utcOffset": "+02:00"
      },
      "hasVcom": true
    }
  }
}
<?php
    /** @var Session $session */
    echo $session->user->id;// "123"
    echo $session->user->title;// 'Mr.'
    echo $session->user->firstName;// 'First Name'
    echo $session->user->lastName;// 'Last Name'
    echo $session->user->username;// 'user.name'
    echo $session->user->email;// 'example@example.com'
    echo $session->user->language;// 'en'
    echo $session->user->company;// 'Company'
    echo $session->user->fax;// '0234567890'
    echo $session->user->telephone;// '0234567891'
    echo $session->user->cellphone;// '0987654321'
    echo $session->user->address->city;// 'City'
    echo $session->user->address->country;// 'Country'
    echo $session->user->address->postalCode;// '12345'
    echo $session->user->address->street;// 'Street 123'
    echo $session->user->address->streetAddition;// '2F-1'
    echo $session->user->timezone->name;// 'Europe/Berlin'
    echo $session->user->timezone->utcOffset;// '+02:00'
    echo $session->user->hasVcom;// true

GET session

Returns a session object.

Systems

Request

curl 'https://api.meteocontrol.de/v2/systems'
<?php
    /** @var System[] $systems */
    $systems = $api->systems()->get();

Response

{
  "data": [
    {
      "name": "meteocontrol PV system",
      "key": "ABCDE"
    },
    {
      "name": "meteocontrol PV system #2",
      "key": "VWXYZ"
    }
  ]
}
<?php
    /** @var System[] $systems */
    echo $systems[0]->key;// ABCDE
    echo $systems[0]->name;// meteocontrol PV system

GET systems

Returns an array of system objects.

Abbreviations

Abbreviations are uppercase strings that identify datapoints. Common abbreviations on portfolio level are E_Z_EVU (production), G_M (POA irradiance), PR (performance ratio), CO2 (carbon emission) and POWER (system capacity).

Get all abbreviations

Request

curl 'https://api.meteocontrol.de/v2/systems/abbreviations'
<?php
    /** @var string[] $abbreviations */
    $abbreviations = $api->systems()->abbreviations()->get();

Response

{
  "data": [
    "E_Z_EVU",
    "G_M",
    "PR",
    "CO2",
    "POWER",
    "E_N"
  ]
}
<?php
    /** @var string[] $abbreviations */
    echo $abbreviations[0]; // E_Z_EVU
    echo $abbreviations[1]; // G_M
    echo $abbreviations[2]; // PR
    echo $abbreviations[3]; // CO2
    echo $abbreviations[4]; // POWER
    echo $abbreviations[5]; // E_N

GET systems/abbreviations

Returns a list of all available abbreviations.

Get all available measurements

Request

curl 'https://api.meteocontrol.de/v2/systems/abbreviations/E_Z_EVU/measurements?from=2016-11-01T00:00:00+02:00&to=2016-11-01T23:59:59+02:00'
<?php
    $measurementsCriteria = (new MeasurementsCriteria())
        ->withDateFrom(DateTime::createFromFormat(DATE_ATOM, '2016-11-01T00:00:00+02:00'))
        ->withDateTo(DateTime::createFromFormat(DATE_ATOM, '2016-11-01T23:59:59+02:00'));
    /** @var Measurement[] $measurements */
    $measurements = $api->systems()->abbreviation('E_Z_EVU')->measurements()->get($measurementsCriteria);

Response

{
  "data": [
    {
      "systemKey": "ABCDE",
      "E_Z_EVU": [
        {
          "timestamp": "2016-11-01T01:00:00+02:00",
          "value": "52.182"
        }
      ]
    },
    {
      "systemKey": "VWXYZ",
      "E_Z_EVU": [
        {
          "timestamp": "2016-11-01T01:00:00+02:00",
          "value": "199.175"
        }
      ]
    }
  ]
}
<?php
    /** @var Measurement[] $measurements */
    echo $measurements[0]->systemKey;// ABCDE
    echo $measurements[0]->E_Z_EVU[0]->timestamp->format(DATE_ATOM);// 2016-11-01T01:00:00+02:00
    echo $measurements[0]->E_Z_EVU[0]->value;// 58.182
    echo $measurements[1]->systemKey;// VWXYZ
    echo $measurements[1]->E_Z_EVU[0]->timestamp->format(DATE_ATOM);// 2016-11-01T01:00:00+02:00
    echo $measurements[1]->E_Z_EVU[0]->value;// 199.175

GET systems/abbreviations/<abbreviationId>/measurements

Returns a list of measurements for given abbreviation ID.

Path parameters

Name Type Description
abbreviationId required string Can contain up to 5 comma delimited abbreviation IDs

Query parameters

Name Type Description
from required¹ dateǀdatetime Start date
to required¹ dateǀdatetime End date
resolution optional (dayǀmonthǀyear) Defaults to day

¹ The maximum time span between from and to varies depending on the resolution as listed below.

Resolution Maximum time span
day 60 days
month 1 year
year no limitation

Response

For each system:

Property Type Description
timestamp fixed datetime Timestamp
value fixed number Value

System

Get one system object

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE'
<?php
    /** @var SystemDetail $system */
    $system = $api->system('ABCDE')->get();

Response

{
  "data": {
    "name": "meteocontrol PV system",
    "address": {
      "city": "Augsburg",
      "country": "DE",
      "postalCode": "86157",
      "street": "Spicherer Straße 48"
    },
    "elevation": 480,
    "commissionDate": "2016-01-28",
    "coordinates": {
      "latitude": 48.3670191,
      "longitude": 10.8681
    },
    "timezone": {
      "name": "Europe/Berlin",
      "utcOffset": "+01:00"
    },
    "currency": "EUR",
    "hasSolarForecast": false,
    "simulationMethod": "pr",
    "additionalInformation": null
  }
}
<?php
    /** @var SystemDetail $system */
    echo $system->name;// meteocontrol PV system
    echo $system->address->city;// Augsburg
    echo $system->address->country;// DE
    echo $system->address->postalCode;// 86157"
    echo $system->address->street;// Spicherer Straße 48
    echo $system->elevation;// 400
    echo $system->commissionDate->format('Y-m-d');// 2016-01-28
    echo $system->coordinates->latitude;// 48.3670191
    echo $system->coordinates->longitude;// 10.8681
    echo $system->timezone->name;// Europe/Berlin
    echo $system->timezone->utcOffset;// +01:00
    echo $system->currency;// EUR
    echo $system->hasSolarForecast;// false
    echo $system->simulationMethod;// pr
    echo $system->additionalInformation;// null

GET systems/<systemKey>

Returns a system object.

Path parameters

Name Type Description
systemKey required string Identification key of the system

Technical data

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/technical-data'
<?php
    /** @var TechnicalData $technicalData */
    $technicalData = $api->system('ABCDE')->technicalData()->get();

Response

{
  "data": {
    "nominalPower": 79.24,
    "siteArea": 549.11,
    "panels": [
      {
        "vendor": "Suntech",
        "model": "STP280-24/Vb",
        "count": 283
      }
    ],
    "inverters": [
      {
        "vendor": "KACO new energy",
        "model": "Powador 8000xi",
        "count": 1
      },
      {
        "vendor": "KACO new energy",
        "model": "Powador 3500xi",
        "count": 1
      }
    ]
  }
}
<?php
    /** @var TechnicalData $technicalData */
    echo $technicalData->nominalPower;// 79.24
    echo $technicalData->siteArea;// 549.11
    echo $technicalData->panels[0]->vendor;// Suntech
    echo $technicalData->panels[0]->model;// STP280-24/Vb
    echo $technicalData->panels[0]->count;// 283
    echo $technicalData->inverters[0]->vendor;// KACO new energy
    echo $technicalData->inverters[0]->model;// Powador 8000xi
    echo $technicalData->inverters[0]->count;// 1
    echo $technicalData->inverters[1]->vendor;// KACO new energy
    echo $technicalData->inverters[1]->model;// Powador 3500xi
    echo $technicalData->inverters[1]->count;// 1

GET systems/<systemKey>/technical-data

Path parameters

Name Type Description
systemKey required string Identification key of the system

Response

Property Type Description
nominalPower fixed number Unit: kWp
siteArea fixed number Unit: m²
panels fixed array vendor string, model string, count integer
inverters fixed array vendor string, model string, count integer
Last data input
Get timestamp of last data input

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/technical-data/last-data-input'
<?php
    /** @var LastDataInput $lastDataInput */
    $lastDataInput = $api->system('ABCDE')->technicalData()->lastDataInput()->get();

Response

{
  "data": {
    "timestamp": "2024-08-06T12:59:59+00:00"
  }
}
<?php
    /** @var LastDataInput $lastDataInput */
    echo $lastDataInput->timestamp->format(DATE_ATOM);// 2024-08-06T12:59:59+00:00

GET systems/<systemKey>/technical-data/last-data-input

Path parameters

Name Type Description
systemKey required string Identification key of the system

Response

Property Type Description
timestamp fixed datetimeǀnull Last data input timestamp in UTC timezone

Virtual meters

Get all virtual meters

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/virtual-meters'
<?php
    /** @var VirtualMeter[] $virtualMeters */
    $virtualMeters = $api->system('ABCDE')->virtualMeters()->get();

Response

{
  "data": [
    {
      "id": "1",
      "name": "Virtual meter 1",
      "serial": "serial.1"
    },
    {
      "id": "2",
      "name": "Virtual meter 2",
      "serial": "serial.2"
    }
  ]
}
<?php
    /** @var VirtualMeter[] $virtualMeters */
    echo $virtualMeters[0]->id;// 1
    echo $virtualMeters[0]->name;// Virtual meter 1
    echo $virtualMeters[0]->serial;// serial.1
    echo $virtualMeters[1]->id;// 2
    echo $virtualMeters[1]->name;// Virtual meter 2
    echo $virtualMeters[1]->serial;// serial.2

GET systems/<systemKey>/virtual-meters

Path parameters

Name Type Description
systemKey required string Identification key of the system

Response

Property Type Description
id fixed string Virtual meter device ID
name fixed string Customized name
serial fixed string Serial number

Get single virtual meter

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/virtual-meters/1'
<?php
    /** @var VirtualMeterDetail $virtualMeter */
    $virtualMeter = $api->system('ABCDE')->virtualMeter('1')->get();

Response

{
  "data": {
    "id": "1",
    "name": "Virtual meter 1",
    "serial": "serial.1",
    "installationDate": "2019-11-11",
    "unit": "kWh"
  }
}
<?php
    /** @var VirtualMeterDetail $virtualMeter */
    echo $virtualMeter->id;// 1
    echo $virtualMeter->name;// Virtual meter 1
    echo $virtualMeter->serial;// serial.1
    echo $virtualMeter->installationDate->format('Y-m-d');// 2019-11-11
    echo $virtualMeter->unit;// kWh

GET systems/<systemKey>/virtual-meters/<deviceId>

Path parameters

Name Type Description
systemKey required string Identification key of the system
deviceId required string Virtual meter device ID

Response

Property Type Description
id fixed string Virtual meter device ID
name fixed string Customized name
serial fixed string Serial number
installationDate fixed string Installation date
unit fixed string Unit
Readings
Get latest reading

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/virtual-meters/1/readings'
<?php
    $meterReadingCriteria = new MeterReadingCriteria();
    /** @var VirtualMeterReading $readings */
    $readings = $api->system('ABCDE')->virtualMeter(1)->readings()->get($meterReadingCriteria);

Response

{
  "data": [
    {
      "id": 7777,
      "type": "MANUAL",
      "timestamp": "2019-11-11T18:00:00+02:00",
      "value": 30
    }
  ]
}
<?php
    /** @var VirtualMeterReading[] $readings */
    echo $readings[0]->id;// 7777
    echo $readings[0]->type;// MANUAL
    echo $readings[0]->timestamp->format(DATE_ATOM);// 2019-11-11T18:00:00+02:00
    echo $readings[0]->value;// 30

GET systems/<systemKey>/virtual-meters/<deviceId>/readings

Path parameters

Name Type Description
systemKey required string Identification key of the system
deviceId required string Virtual meter device ID

Query parameters

Name Type Description
type optional (allǀautoǀmanual) Defaults to all

Response

Property Type Description
id fixed integer Reading ID
type fixed string Reading type
timestamp fixed datetime Timestamp
value fixed number Value
Get readings

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/virtual-meters/1/readings?from=2018-02-28T00:00:00+02:00&to=2018-02-28T23:59:59+02:00&type=all'
<?php
    $meterReadingCriteria = (new MeterReadingCriteria())
        ->withDateFrom(DateTime::createFromFormat(DATE_ATOM, '2018-02-28T00:00:00+02:00'))
        ->withDateTo(DateTime::createFromFormat(DATE_ATOM, '2018-02-28T23:59:59+02:00'))
        ->withType(MeterReadingCriteria::READING_TYPE_ALL);
    /** @var VirtualMeterReading $readings */
    $readings = $api->system('ABCDE')->virtualMeter(1)->readings()
        ->get($meterReadingCriteria);

Response

{
  "data": [
    {
      "id": 146803853,
      "type": "MANUAL",
      "timestamp": "2018-02-28T23:59:59+01:00",
      "value": 3698.2216528918002
    },
    {
      "id": 146803854,
      "type": "AUTO",
      "timestamp": "2018-03-31T23:59:59+02:00",
      "value": 3958.0235319860999
    },
    {
      "id": 146803855,
      "type": "MANUAL",
      "timestamp": "2018-04-30T23:59:59+02:00",
      "value": 4294.8163073654996
    }
  ]
}
<?php
    /** @var VirtualMeterReading[] $readings */
    echo $readings[0]->id;// 146803853
    echo $readings[0]->type;// MANUAL
    echo $readings[0]->timestamp->format(DATE_ATOM);// 2018-02-28T23:59:59+01:00
    echo $readings[0]->value;// 3698.2216528918002
    echo $readings[1]->id;// 146803854
    echo $readings[1]->type;// AUTO
    echo $readings[1]->timestamp->format(DATE_ATOM);// 2018-03-31T23:59:59+02:00
    echo $readings[1]->value;// 3958.0235319860999

GET systems/<systemKey>/virtual-meters/<deviceId>/readings

Path parameters

Name Type Description
systemKey required string Identification key of the system
deviceId required string Virtual meter device ID

Query parameters

Name Type Description
from required¹ dateǀdatetime Start date
to required¹ dateǀdatetime End date
type optional (allǀautoǀmanual) Defaults to all

¹ The maximum time span between from and to is limited to 1 year.

Response

Property Type Description
id fixed integer Reading ID
type fixed string Reading type
timestamp fixed datetime Timestamp
value fixed number Value

Bulk

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/bulk/measurements?from=2016-09-01T10:00:00+02:00&to=2016-09-01T10:15:00+02:00'
<?php
    $measurementsCriteria = (new MeasurementsCriteria())
        ->withDateFrom(DateTime::createFromFormat(DATE_ATOM, '2016-09-01T10:00:00+02:00'))
        ->withDateTo(DateTime::createFromFormat(DATE_ATOM, '2016-09-01T10:15:00+02:00'));
    /** @var MeasurementsBulkReader $bulkData */
    $bulkData = $api->system('ABCDE')->bulk()->measurements()->get($measurementsCriteria);

Response

{
  "basics":{
    "2016-09-01T10:15:00+02:00":{
      "E_Z_EVU": 502
    },
    "2016-09-01T10:30:00+02:00":{
      "E_Z_EVU": 548
    }
  },
  "calculations":{
    "2016-09-01T00:00:00+02:00":{
      "POWER": 100,
      "PR": 100.25
    }
  },
  "inverters": {
    "2016-09-01T10:15:00+02:00": {
      "Id32302.7": {
        "P_AC": 454.34
      },
      "Id32302.8": {
        "P_AC": 452.34
      }
    },
    "2016-09-01T10:30:00+02:00": {
      "Id32302.7": {
        "P_AC": 455.34
      },
      "Id32302.8": {
        "P_AC": 451.34
      }
    }
  },
  "meters": {
    "2016-09-01T10:15:00+02:00": {
      "12345": {
          "M_AC_E_EXP": 7127.4
      },
      "12346": {
          "M_AC_E_EXP": 872.6
      }
    },
    "2016-09-01T10:30:00+02:00": {
      "12345": {
          "M_AC_E_EXP": 7130.4
      },
      "12346": {
          "M_AC_E_EXP": 870.6
      }
    }
  },
  "sensors": {
    "2016-09-01T10:15:00+02:00": {
      "12345": {
        "SRAD": 7.23
      },
      "12346": {
        "SRAD": 7.14
      }
    },
    "2016-09-01T10:30:00+02:00": {
      "12345": {
        "SRAD": 7.1
      },
      "12346": {
        "SRAD": 7.04
      }
    }
  },
  "stringboxes": {
    "2016-09-01T10:15:00+02:00": {
      "12345": {
        "I1": 3.449
      },
      "12346": {
        "I1": 3.913
      }
    },
    "2016-09-01T10:30:00+02:00": {
      "12345": {
        "I1": 3.449
      },
      "12346": {
        "I1": 3.869
      }
    }
  },
  "batteries": {
    "2016-09-01T10:15:00+02:00": {
      "145146": {
        "B_CHARGE_LEVEL": 193.08199999999999,
        "B_E_EXP": 1460.0820000000001,
        "B_E_IMP": 141.476,
        "T1": 143.10900000000001
      },
      "145147": {
        "B_CHARGE_LEVEL": 193.09200000000001,
        "B_E_EXP": 1460.0920000000001,
        "B_E_IMP": 141.48599999999999,
        "T1": 143.119
      }
    },
    "2016-09-01T10:30:00+02:00": {
      "145146": {
        "B_CHARGE_LEVEL": 193.102,
        "B_E_EXP": 1460.1020000000001,
        "B_E_IMP": 141.49600000000001,
        "T1": 143.12899999999999
      },
      "145147": {
        "B_CHARGE_LEVEL": 193.11199999999999,
        "B_E_EXP": 1460.1120000000001,
        "B_E_IMP": 141.506,
        "T1": 143.13900000000001
      }
    }
  },
  "ppcs": {
    "2016-09-01T10:15:00+02:00": {
      "163784": {
        "PPC_P_AC_INV": 72.200000000000003,
        "PPC_P_AC_AVAIL": 37.450000000000003,
        "PPC_Q_AC_AVAIL": 32.299999999999997,
        "PPC_P_SET_GRIDOP_REL": 52.299999999999997,
        "PPC_P_SET_GRIDOP_ABS": 85.299999999999997,
        "PPC_P_SET_RPC_REL": 1.3999999999999999,
        "PPC_P_SET_REL": 77.400000000000006,
        "PPC_PF_SET": null,
        "PPC_Q_SET_ABS": 85.900000000000006,
        "PPC_P_AC_GRIDOP_MAX": 42.770000000000003,
        "PPC_P_AC_RPC_MAX": 35.140000000000001,
        "PPC_P_AC": 42.43,
        "PPC_Q_AC": 91.590000000000003,
        "PPC_PF": 8.3000000000000007,
        "PPC_Q_SET_REL": 39.100000000000001
      }
    },
    "2016-09-01T10:30:00+02:00": {
      "163784": {
        "PPC_P_AC_INV": 17.059999999999999,
        "PPC_P_AC_AVAIL": 47.579999999999998,
        "PPC_Q_AC_AVAIL": 53.100000000000001,
        "PPC_P_SET_GRIDOP_REL": 13.6,
        "PPC_P_SET_GRIDOP_ABS": 90,
        "PPC_P_SET_RPC_REL": 85.400000000000006,
        "PPC_P_SET_REL": 3.2999999999999998,
        "PPC_PF_SET": 1.2,
        "PPC_Q_SET_ABS": 65.400000000000006,
        "PPC_P_AC_GRIDOP_MAX": 23.960000000000001,
        "PPC_P_AC_RPC_MAX": 76.609999999999999,
        "PPC_P_AC": 62.740000000000002,
        "PPC_Q_AC": 99.480000000000004,
        "PPC_PF": 7.2000000000000002,
        "PPC_Q_SET_REL": null
      }
    }
  }
}

<?php
    /** @var MeasurementsBulkReader $bulkData */
    $bulkDataArray = $bulkData->getAsArray();
    echo $bulkDataArray['basic']['2016-09-01T10:15:00+02:00']['E_Z_EVU'];// 502
    echo $bulkDataArray['calculations']['2016-09-01T00:00:00+02:00']['POWER'];// 100
    echo $bulkDataArray['inverters']['2016-09-01T10:15:00+02:00']['Id32302.7']['P_AC'];// 454.34
    echo $bulkDataArray['meters']['2016-09-01T10:15:00+02:00']['12345']['M_AC_E_EXP'];// 7127.4
    echo $bulkDataArray['sensors']['2016-09-01T10:15:00+02:00']['12345']['SRAD'];// 7.23
    echo $bulkDataArray['stringboxes']['2016-09-01T10:15:00+02:00']['12345']['I1'];// 3.449

GET systems/<systemKey>/bulk/measurements

Path parameters

Name Type Description
systemKey required string Identification key of the system

Query parameters

Name Type Description
from required¹ dateǀdatetime Start date
to required¹ dateǀdatetime End date
format optional jsonǀcsv Export format, defaults to json
resolution optional (minute²ǀintervalǀfifteen-minutesǀthirty-minutesǀhourǀday) Defaults to interval
deviceIds optional string Comma separated deviceIds
abbreviations optional string Comma separated abbreviations
includeInterval optional³ integer 0ǀ1 Defaults to 0

¹ The maximum time span is 24 hours between from and to.
² The option minute resolution is only supported by meteocontrol blue'Log XM / XC (Firmware 2.0 and higher)
³ Only for interval resolution

Options for CSV format

The following query parameters are valid only if format is csv
For response example in CSV format, please check HERE.

Name Type Description
delimiter commaǀsemicolonǀcolonǀtab The delimiter, defaults to comma
lineBreak LFǀCRǀCR/LF The line breaks, defaults to LF
decimalPoint dotǀcomma The decimal point, defaults to dot
emptyPlaceholder text, empty string by default, any text accepted The place holder for empty value
precision integer, accepts from 0 to 4 The decimal precision, defaults to 2

Basics

Abbreviations

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/basics/abbreviations'
<?php
    /**  @var string[] $abbreviations */
    $abbreviations = $api->system('ABCDE')->basics()->abbreviations()->get();

Response

{
  "data": [
    "E_Z_PV1",
    "E_Z_EVU",
    "G_M0"
  ]
}
<?php
    /**  @var string[] $abbreviations */
    echo $abbreviations[0];// E_Z_PV1
    echo $abbreviations[1];// E_Z_EVU
    echo $abbreviations[2];// G_M0

GET systems/<systemKey>/basics/abbreviations

Returns a list of abbreviation IDs for the basic information of a system. Common abbreviations within the basics endpoint are E_Z_EVU (production) or G_M0 (POA irradiance).

Path parameters

Name Type Description
systemKey required string Identification key of the system
Get single abbreviation

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/basics/abbreviations/E_Z_EVU'
<?php
    /**  @var Abbreviation $abbreviation */
    $abbreviation = $api->system('ABCDE')->basics()->abbreviation('E_Z_EVU')->get();

Response

{
  "data": {
    "aggregation": "SUM",
    "precision": null,
    "description": "PV Production",
    "unit": "kWh"
  }
}
<?php
    /**  @var Abbreviation $abbreviation */
    echo $abbreviation->aggregation;// SUM
    echo $abbreviation->precision;// null
    echo $abbreviation->description;// PV Production
    echo $abbreviation->unit;// kWh

GET systems/<systemKey>/basics/abbreviations/<abbreviationId>

Returns an information object of an abbreviation.

Path parameters

Name Type Description
systemKey required string Identification key of the system
abbreviationId required string Abbreviation ID

Response

Information object

Property Type Description
aggregation fixed (SUMǀAVGǀMAX) Aggregation method when requesting other resolutions than interval
precision fixed integer Number of decimal places
description fixed string Description
unit fixed string Unit
Measurements

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/basics/abbreviations/E_Z_EVU/measurements?from=2016-11-01T00:00:00+02:00&to=2016-11-01T00:05:00+02:00'
<?php
    $measurementsCriteria = (new MeasurementsCriteria())
        ->withDateFrom(DateTime::createFromFormat(DATE_ATOM, '2016-11-01T00:00:00+02:00'))
        ->withDateTo(DateTime::createFromFormat(DATE_ATOM, '2016-11-01T00:05:00+02:00'));
    /** @var MeasurementValue[] $measurements */
    $measurements = $api->system('ABCDE')->basics()->abbreviation('E_Z_EVU')->measurements()
        ->get($measurementsCriteria);

Response

{
  "data": {
    "E_Z_EVU": [
      {
        "timestamp": "2016-11-01T00:00:00+02:00",
        "value": 0
      },
      {
        "timestamp": "2016-11-01T00:05:00+02:00",
        "value": 0
      }
    ]
  }
}
<?php
    /** @var DevicesMeasurement $measurements */
    $measurement = $measurements['E_Z_EVU'];
    echo $measurements[0]->timestamp->format(DATE_ATOM);// 2016-11-01T00:00:00+02:00
    echo $measurements[0]->value;// 0
    echo $measurements[1]->timestamp->format(DATE_ATOM);// 2016-11-01T00:05:00+02:00
    echo $measurements[1]->value;// 0

GET systems/<systemKey>/basics/abbreviations/<abbreviationId>/measurements

Returns an array of measurements objects.

Path parameters

Name Type Description
systemKey required string Identification key of the system
abbreviationId required string Can contain up to 5 comma delimited abbreviation IDs

Query parameters

Name Type Description
from required¹ dateǀdatetime Start date
to required¹ dateǀdatetime End date
resolution optional (intervalǀfifteen-minutesǀthirty-minutesǀhourǀdayǀmonthǀyear) Defaults to interval
includeInterval optional² integer 0ǀ1 Defaults to 0

¹ The maximum time span between from and to varies depending on the resolution as listed below.

Resolution Maximum time span
interval 31 days
fifteen-minutes 31 days
thirty-minutes 31 days
hour 31 days
day 60 days
month 1 year
year no limitation

² Only for interval resolution

Response

Measurement object

Property Type Description
timestamp fixed datetime Timestamp
value fixed number Value
interval optional number Interval, in seconds
Bulk

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/basics/bulk/measurements?from=2016-11-01T10:00:00+02:00&to=2016-11-01T10:05:00+02:00'
<?php
    $measurementsCriteria = (new MeasurementsCriteria())
        ->withDateFrom(DateTime::createFromFormat(DATE_ATOM, '2016-11-01T10:00:00+02:00'))
        ->withDateTo(DateTime::createFromFormat(DATE_ATOM, '2016-11-01T10:05:00+02:00'));
    /** @var MeasurementsBulkReader $bulkData */
    $bulkData = $api->system('ABCDE')->basics()->bulk()->measurements()->get($measurementsCriteria);

Response

{
  "2016-11-01T10:00:00+02:00": {
    "G_M0": 501.5,
    "E_Z_EVU": 1103
  },
  "2016-11-01T10:05:00+02:00": {
    "G_M0": 548.5,
    "E_Z_EVU": 1178
  }
}
<?php
    /** @var MeasurementsBulkReader $bulkData */
    $bulkDataArray = $bulkData->getAsArray();
    echo $bulkDataArray['2016-11-01T10:00:00+02:00']['G_M0'];// 501.5
    echo $bulkDataArray['2016-11-01T10:00:00+02:00']['E_Z_EVU'];// 1103
    echo $bulkDataArray['2016-11-01T10:05:00+02:00']['G_M0'];// 548.5
    echo $bulkDataArray['2016-11-01T10:05:00+02:00']['E_Z_EVU'];// 1178

GET systems/<systemKey>/basics/bulk/measurements

Path parameters

Name Type Description
systemKey required string Identification key of the system

Query parameters

Name Type Description
from required¹ dateǀdatetime Start date
to required¹ dateǀdatetime End date
format optional jsonǀcsv Export format, defaults to json
abbreviations optional string Comma separated abbreviations
includeInterval optional integer 0ǀ1 Defaults to 0

¹ The maximum time span is 24 hours between from and to.

Options for CSV format

The following query parameters are valid only if format is csv
For response example in CSV format, please check HERE.

Name Type Description
delimiter commaǀsemicolonǀcolonǀtab The delimiter, defaults to comma
lineBreak LFǀCRǀCR/LF The line breaks, defaults to LF
decimalPoint dotǀcomma The decimal point, defaults to dot
emptyPlaceholder text, empty string by default, any text accepted The place holder for empty value
precision integer, accepts from 0 to 4 The decimal precision, defaults to 2

Calculations

Abbreviations

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/calculations/abbreviations'
<?php
    /** @var string[] $abbreviations */
    $abbreviations = $api->system('ABCDE')->calculations()->abbreviations()->get();

Response

{
  "data": [
    "E_N",
    "PR",
    "VFG"
  ]
}
<?php
    /**  @var string[] $abbreviations */
    echo $abbreviations[0];// E_N
    echo $abbreviations[1];// PR
    echo $abbreviations[2];// VFG

GET systems/<systemKey>/calculations/abbreviations

Returns a list of abbreviation IDs. Common abbreviations within the calculations endpoint are E_N (normalized production), PR (Performance Ratio) or VFG (Availability).

Path parameters

Name Type Description
systemKey required string Identification key of the system
Get single abbreviation

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/calculations/abbreviations/PR'
<?php
    /** @var Abbreviation $abbreviation */
    $abbreviation = $api->system('ABCDE')->calculations()->abbreviation('PR')->get();

Response

{
  "data": {
    "aggregation": "AVG",
    "precision": 2,
    "description": "Performance ratio",
    "unit": "%"
  }
}
<?php
    /** @var Abbreviation $abbreviation */
    echo $abbreviation->aggregation;// AVG
    echo $abbreviation->description;// 2
    echo $abbreviation->precision;// Performance ratio
    echo $abbreviation->unit;// %

GET systems/<systemKey>/calculations/abbreviations/<abbreviationId>

Returns an information object for an abbreviation.

Path parameters

Name Type Description
systemKey required string Identification key of the system
abbreviationId required string Abbreviation ID

Response

Information object

Property Type Description
aggregation fixed (SUMǀAVGǀMAX) Aggregation method when requesting other resolutions than interval
precision fixed integer Number of decimal places
description fixed string Description
unit fixed string Unit
Measurements

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/calculations/abbreviations/E_N/measurements?from=2016-10-01T00:00:00+02:00&to=2016-10-01T00:05:00+02:00'
<?php
    $measurementsCriteria = (new MeasurementsCriteria())
        ->withDateFrom(DateTime::createFromFormat(DATE_ATOM, '2016-10-01T00:00:00+02:00'))
        ->withDateTo(DateTime::createFromFormat(DATE_ATOM, '2016-10-01T00:05:00+02:00'));
    /** @var MeasurementValue[] $measurements */
    $measurements = $api->system('ABCDE')->calculations()->abbreviation('E_N')->measurements()
        ->get($measurementsCriteria);

Response

{
  "data": {
    "E_N": [
      {
        "timestamp": "2016-10-01T00:00:00+02:00",
        "value": 0
      },
      {
        "timestamp": "2016-10-01T00:05:00+02:00",
        "value": 0
      }
    ]
  }
}
<?php
    /** @var DevicesMeasurement $measurements */
    $measurement = $measurements['E_N'];
    echo $measurement[0]->timestamp->format(DATE_ATOM);// 2016-10-01T00:00:00+02:00
    echo $measurement[0]->value;// 0
    echo $measurement[1]->timestamp->format(DATE_ATOM);// 2016-10-01T00:05:00+02:00
    echo $measurement[1]->value;// 0

GET systems/<systemKey>/calculations/abbreviations/<abbreviationId>/measurements

Returns an array of measurements objects.

Path parameters

Name Type Description
systemKey required string Identification key of the system
abbreviationId required string Can contain up to 5 comma delimited abbreviation IDs

Query parameters

Name Type Description
from required¹ dateǀdatetime Start date
to required¹ dateǀdatetime End date
resolution optional (dayǀmonthǀyear) Defaults to day

¹ The maximum time span between from and to varies depending on the resolution as listed below.

Resolution Maximum time span
day 60 days
month 1 year
year no limitation

Response

Measurement object

Property Type Description
timestamp fixed datetime Timestamp
value fixed number Value
Bulk

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/calculations/bulk/measurements?from=2016-09-01T23:45:00+02:00&to=2016-09-01T23:59:59+02:00'
<?php
    $measurementsCriteria = (new MeasurementsCriteria())
        ->withDateFrom(DateTime::createFromFormat(DATE_ATOM, '2016-09-01T23:45:00+02:00'))
        ->withDateTo(DateTime::createFromFormat(DATE_ATOM, '2016-09-01T23:59:59+02:00'));
    /** @var MeasurementsBulkReader $bulkData */
    $bulkData = $api->system('ABCDE')->calculations()->bulk()->measurements()->get($measurementsCriteria);

Response

{
   "2016-09-01T00:00:00+02:00": {
     "AREA": 66607.58,
     "CO2": 143.31,
     "E_MEAN_DEV": null,
     "E_MESS": 44579,
     "E_N": null,
     "E_ZAEHLER": 44579,
     "EPI": null,
     "POWER": 9990.12,
     "PR": 82.277446881595,
     "SOLIDX": null,
     "VFG": 100
   }
}
<?php
    /** @var MeasurementsBulkReader $bulkData */
    $bulkDataArray = $bulkData->getAsArray();
    echo $bulkDataArray['2016-09-01T00:00:00+02:00']['AREA'];// 66607.58
    echo $bulkDataArray['2016-09-01T00:00:00+02:00']['CO2'];// 143.31
    echo $bulkDataArray['2016-09-01T00:00:00+02:00']['E_MEAN_DEV'];// null
    echo $bulkDataArray['2016-09-01T00:00:00+02:00']['E_MESS'];// 44579
    echo $bulkDataArray['2016-09-01T00:00:00+02:00']['E_N'];// null
    echo $bulkDataArray['2016-09-01T00:00:00+02:00']['E_ZAEHLER'];// 44579
    echo $bulkDataArray['2016-09-01T00:00:00+02:00']['EPI'];// null
    echo $bulkDataArray['2016-09-01T00:00:00+02:00']['POWER'];// 9990.12
    echo $bulkDataArray['2016-09-01T00:00:00+02:00']['PR'];// 82.277446881595
    echo $bulkDataArray['2016-09-01T00:00:00+02:00']['SOLIDX'];// null
    echo $bulkDataArray['2016-09-01T00:00:00+02:00']['VFG'];// 100

GET systems/<systemKey>/calculations/bulk/measurements

Path parameters

Name Type Description
systemKey required string Identification key of the system

Query parameters

Name Type Description
from required¹ dateǀdatetime Start date
to required¹ dateǀdatetime End date
format optional jsonǀcsv Export format, defaults to json
abbreviations optional string Comma separated abbreviations

¹ The maximum time span is 24 hours between from and to.

Options for CSV format

The following query parameters are valid only if format is csv
For response example in CSV format, please check HERE.

Name Type Description
delimiter commaǀsemicolonǀcolonǀtab The delimiter, defaults to comma
lineBreak LFǀCRǀCR/LF The line breaks, defaults to LF
decimalPoint dotǀcomma The decimal point, defaults to dot
emptyPlaceholder text, empty string by default, any text accepted The place holder for empty value
precision integer, accepts from 0 to 4 The decimal precision, defaults to 2
Simulation
Get currently activated simulation value

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/calculations/simulation?from=2021-02-01T00:00:00+01:00&to=2021-02-01T23:59:59+01:00'
<?php
    $measurementsCriteria = (new MeasurementsCriteria())
        ->withDateFrom(DateTime::createFromFormat(DATE_ATOM, '2021-02-01T00:00:00+01:00'))
        ->withDateTo(DateTime::createFromFormat(DATE_ATOM, '2021-02-01T23:59:59+01:00'));
    /** @var SimulationValue[] $simulation */
    $simulation = $api->system('ABCDE')->calculations()->simulation()->get($measurementsCriteria);

Response

{
  "data": [
    {
      "timestamp": "2021-02-01T00:00:00+01:00",
      "max": 2.79430153178,
      "min": 2.2862467078199997,
      "expected": 2.5402741198
    },
    {
      "timestamp": "2021-02-01T00:05:00+01:00",
      "max": 2.3015888865200007,
      "min": 1.8831181798800003,
      "expected": 2.0923535332000003
    }
  ]
}
<?php
    /** @var SimulationValue[] $simulation */
    echo $simulation[0]->timestamp->format(DATE_ATOM);// 2021-02-01T00:00:00+01:00
    echo $simulation[0]->max;// 2.79430153178
    echo $simulation[0]->min;// 2.2862467078199997
    echo $simulation[0]->expected;// 2.5402741198
    echo $simulation[1]->timestamp->format(DATE_ATOM);// 2021-02-01T00:05:00+01:00
    echo $simulation[1]->max;// 2.3015888865200007
    echo $simulation[1]->min;// 1.8831181798800003
    echo $simulation[1]->expected;// 2.0923535332000003

GET systems/<systemKey>/calculations/simulation

Path parameters

Name Type Description
systemKey required string Identification key of the system

Query parameters

Name Type Description
from required¹ dateǀdatetime Start date
to required¹ dateǀdatetime End date
resolution optional (intervalǀdayǀmonthǀyear) Defaults to interval

¹ The maximum time span between from and to varies depending on the resolution as listed below.

Resolution Maximum time span
interval 31 days
day 60 days
month 1 year
year no limitation

Response

SimulationValue object

Property Type Description
timestamp fixed datetime Timestamp
max fixed number Maximum value
min fixed number Minimum value
expected fixed number Expected value

Environmental savings

CO2

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/environmental-savings/co2?from=2022-07-01T00:00:00+02:00&to=2022-07-03T00:00:00+02:00'
<?php
    $criteria = (new MeasurementsCriteria())
        ->withDateFrom(DateTime::createFromFormat(DATE_ATOM, '2022-07-01T00:00:00+02:00'))
        ->withDateTo(DateTime::createFromFormat(DATE_ATOM, '2022-07-03T00:00:00+02:00'));
    /** @var CO2[] $co2Savings */
    $co2Savings = $api->system('ABCDE')->environmentalSavings()->co2()->get($criteria);

Response

{
    "data": [
        {
            "timestamp": "2022-07-01T00:00:00+02:00",
            "value": 3510.13
        },
        {
            "timestamp": "2022-07-02T00:00:00+02:00",
            "value": 537.21
        },
        {
            "timestamp": "2022-07-03T00:00:00+02:00",
            "value": 1502.62
        }
    ]
}
<?php
    /** @var CO2[] $co2Savings */
    echo $co2Savings[0]->timestamp->format(DATE_ATOM);  // '2022-07-01T00:00:00+02:00'
    echo $co2Savings[0]->value; // 3510.13
    echo $co2Savings[1]->timestamp->format(DATE_ATOM);  // '2022-07-02T00:00:00+02:00'
    echo $co2Savings[1]->value; // 537.21
    echo $co2Savings[2]->timestamp->format(DATE_ATOM);  // '2022-07-03T00:00:00+02:00'
    echo $co2Savings[2]->value; // 1502.62

GET systems/<systemKey>/environmental-savings/co2

Returns a list of CO2 savings (in kg).

Path parameters

Name Type Description
systemKey required string Identification key of the system

Query parameters

Name Type Description
from optional¹ dateǀdatetime Start date
to optional¹ dateǀdatetime End date
resolution optional² (dayǀmonthǀyear) Defaults to day

¹ If the parameters from and to are omitted, a list with one aggregated value for the entire lifetime of the system (up to the current date) is returned as the result.
² Use only in combination with the parameters from and to.

Response

Property Type Description
timestamp fixed datetime Timestamp
value fixed numberǀnull CO2 savings (in kg)
Tree equivalents

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/environmental-savings/tree?from=2022-07-01T00:00:00+02:00&to=2022-07-03T00:00:00+02:00'
<?php
    $criteria = (new MeasurementsCriteria())
        ->withDateFrom(DateTime::createFromFormat(DATE_ATOM, '2022-07-01T00:00:00+02:00'))
        ->withDateTo(DateTime::createFromFormat(DATE_ATOM, '2022-07-03T00:00:00+02:00'));
    /** @var TreeEquivalent[] $treeEquivalents */
    $treeEquivalents = $api->system('ABCDE')->environmentalSavings()->tree()->get($criteria);

Response

{
    "data": [
        {
            "timestamp": "2022-07-01T00:00:00+02:00",
            "value": 333
        },
        {
            "timestamp": "2022-07-02T00:00:00+02:00",
            "value": 51
        },
        {
            "timestamp": "2022-07-03T00:00:00+02:00",
            "value": 142
        }
    ]
}
<?php
    /** @var TreeEquivalent[] $treeEquivalents */
    echo $treeEquivalents[0]->timestamp->format(DATE_ATOM);  // '2022-07-01T00:00:00+02:00'
    echo $treeEquivalents[0]->value; // 333
    echo $treeEquivalents[1]->timestamp->format(DATE_ATOM);  // '2022-07-02T00:00:00+02:00'
    echo $treeEquivalents[1]->value; // 51
    echo $treeEquivalents[2]->timestamp->format(DATE_ATOM);  // '2022-07-03T00:00:00+02:00'
    echo $treeEquivalents[2]->value; // 142

GET systems/<systemKey>/environmental-savings/tree

Returns a list of tree equivalents; that means the amount of trees you would have to plant to absorb the amount of CO2 saved by the given system.

Path parameters

Name Type Description
systemKey required string Identification key of the system

Query parameters

Name Type Description
from optional¹ dateǀdatetime Start date
to optional¹ dateǀdatetime End date
resolution optional² (dayǀmonthǀyear) Defaults to day

¹ If the parameters from and to are omitted, a list with one aggregated value for the entire lifetime of the system (up to the current date) is returned as the result.

² Use only in combination with the parameters from and to.

Response

Property Type Description
timestamp fixed datetime Timestamp
value fixed integerǀnull Number of tree equivalents

Satellite

Irradiance
Get the satellite irradiance data. The data is not the raw satellite irradiance on the horizontal plane but the plane of array irradiance for the whole system, weighted by the installed power of each array.

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/satellite/irradiance?from=2020-09-01T06:00:00+02:00&to=2020-09-01T08:59:59+02:00&resolution=hour'
<?php
    $criteria = (new MeasurementsCriteria())
        ->withDateFrom(DateTime::createFromFormat(DATE_ATOM, '2020-09-01T06:00:00+02:00'))
        ->withDateTo(DateTime::createFromFormat(DATE_ATOM, '2020-09-01T08:59:59+02:00'))
        ->withResolution('hour');
    /** @var MeasurementValue[] $irradianceData */
    $irradianceData = $api->system('ABCDE')->satellite()->irradiance()->get($criteria);

Response

{
  "data": [
    {
      "timestamp": "2020-09-01T07:00:00+02:00",
      "value": 0
    },
    {
      "timestamp": "2020-09-01T08:00:00+02:00",
      "value": 12.3265024145379
    },
    {
      "timestamp": "2020-09-01T09:00:00+02:00",
      "value": 54.2568234978603
    }
  ]
}
<?php
    /** @var MeasurementValue[] $irradianceData */
    echo $irradianceData[0]->timestamp->format(DATE_ATOM);// 2020-09-01T07:00:00+02:00
    echo $irradianceData[0]->value;// 0
    echo $irradianceData[1]->timestamp->format(DATE_ATOM);// 2020-09-01T08:00:00+02:00
    echo $irradianceData[1]->value;// 12.3265024145379

GET systems/<systemKey>/satellite/irradiance

Path parameters

Name Type Description
systemKey required string Identification key of the system

Query parameters

Name Type Description
from required¹ dateǀdatetime Start date
to required¹ dateǀdatetime End date
resolution optional (hourǀdayǀmonthǀyear) Defaults to hour

¹ The maximum time span between from and to varies depending on the resolution as listed below.

Resolution Maximum time span
hour 31 days
day 60 days
month 1 year
year no limitation

Response

Measurement object

Property Type Description
timestamp fixed datetime Timestamp
value fixed number Value

Forecasts

Yield

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/forecasts/yield/specific-energy?from=2016-10-01T00:00:00+02:00&to=2016-12-31T23:59:59+01:00'
<?php
    $measurementsCriteria = (new MeasurementsCriteria())
        ->withDateFrom(DateTime::createFromFormat(DATE_ATOM, '2016-10-01T00:00:00+02:00'))
        ->withDateTo(DateTime::createFromFormat(DATE_ATOM, '2016-12-31T23:59:59+01:00'));
    /** @var TimestampValue[] $yields */
    $yields = $api->system('ABCDE')->forecasts()->forecastsYield()->specificEnergy()->get($measurementsCriteria);

Response

{
  "data": [
    {
      "timestamp": "2016-10-01T00:00:00+02:00",
      "value": 59.759999999999998
    },
    {
      "timestamp": "2016-11-01T00:00:00+01:00",
      "value": 33.709620000000001
    },
    {
      "timestamp": "2016-12-01T00:00:00+01:00",
      "value": 24.437856
    }
  ]
}
<?php
    /** @var TimestampValue[] $yields */
    echo $yields[0]->timestamp->format(DATE_ATOM);  // '2016-10-01T00:00:00+02:00'
    echo $yields[0]->value;                         // 59.759999999999998
    echo $yields[1]->timestamp->format(DATE_ATOM);  // '2016-11-01T00:00:00+01:00'
    echo $yields[1]->value;                         // 33.709620000000001
    echo $yields[2]->timestamp->format(DATE_ATOM);  // '2016-12-01T00:00:00+01:00'
    echo $yields[2]->value;                         // 24.437856

GET systems/<systemKey>/forecasts/yield/specific-energy

Returns a list of yield projection values.

Path parameters

Name Type Description
systemKey required string Identification key of the system

Query parameters

Name Type Description
from required¹ dateǀdatetime Start date
to required¹ dateǀdatetime End date

¹ The resolution fixed to month at current moment.

Forecast

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/forecasts/forecast?format=json&hours_into_future=1&timezone=UTC&resolution=fifteen-minutes&category=intraday
<?php
    $forecastCriteria = (new ForecastCriteria())
            ->withFormat('json')
            ->withHoursToFuture(1)
            ->withTimezone('UTC')
            ->withResolution(ForecastCriteria::RESOLUTION_FIFTEEN_MINUTES)
            ->withCategory(ForecastCriteria::CATEGORY_INTRADAY);
    /** @var MeasurementsBulkReader $forecastData */
    $forecastData = $api->system('ABCDE')->forecasts()->forecast()->get($forecastCriteria);

Response

{
    "data": [
        {
            "systemKey": "ABCDE",
            "timestamp": "2021-11-06T12:30:00+00:00",
            "calculation_timestamp": "2021-11-06T10:00:00+00:00",
            "power": 35.31
        },
        {
            "systemKey": "ABCDE",
            "timestamp": "2021-11-06T12:45:00+00:00",
            "calculation_timestamp": "2021-11-06T10:00:00+00:00",
            "power": 40.31
        },
        {
            "systemKey": "ABCDE",
            "timestamp": "2021-11-06T13:00:00+00:00",
            "calculation_timestamp": "2021-11-06T10:00:00+00:00",
            "power": 50.0
        },
        {
            "systemKey": "ABCDE",
            "timestamp": "2021-11-06T13:15:00+00:00",
            "calculation_timestamp": "2021-11-06T10:00:00+00:00",
            "power": 0
        }
    ]
}
<?php
    /** @var MeasurementsBulkReader $forecastData */
    $forecasts = $forecastData->getAsArray();
    echo $forecasts['data'][0]['timestamp'];  // '2021-11-06T12:30:00+00:00'
    echo $forecasts['data'][0]['calculation_timestamp']; // '2021-11-06T10:00:00+00:00'
    echo $forecasts['data'][0]['systemKey']; // 'ABCDE'
    echo $forecasts['data'][0]['power']; // 35.31
    echo $forecasts['data'][1]['timestamp'];  // '2021-11-06T12:45:00+00:00'
    echo $forecasts['data'][1]['calculation_timestamp']; // '2021-11-06T10:00:00+00:00'
    echo $forecasts['data'][1]['systemKey']; // 'ABCDE'
    echo $forecasts['data'][1]['power']; // 40.31
    echo $forecasts['data'][2]['timestamp'];  // '2021-11-06T13:00:00+00:00'
    echo $forecasts['data'][2]['calculation_timestamp']; // 2021-11-06T10:00:00+00:00
    echo $forecasts['data'][2]['systemKey']; // 'ABCDE'
    echo $forecasts['data'][2]['power']; // 50.0
    echo $forecasts['data'][3]['timestamp'];  // '2021-11-06T13:15:00+00:00'
    echo $forecasts['data'][3]['calculation_timestamp']; // '2021-11-06T10:00:00+00:00'
    echo $forecasts['data'][3]['systemKey']; // 'ABCDE'
    echo $forecasts['data'][3]['power']; // 0

GET systems/<systemKey>/forecasts/forecast

Path parameters

Name Type Description
systemKey required string Identification key of the system

Query parameters

Name Type Description
hours_into_future optional integer between 1 and 96 Defaults to 48
format optional (jsonǀcsv) Defaults to json
resolution optional (fifteen-minutesǀthirty-minutesǀhour) Defaults to fifteen-minutes
timezone optional string Defaults to system timezone
category optional (dayAheadǀintradayǀintradayOptimized) Defaults to contract category¹

¹ If given a value, the category should be equal to or lower than the contract category. Or the endpoint will respond to HTTP 403.

Response

Property Type Description
systemKey fixed string Identification key of the system
timestamp fixed string Timestamp
calculation_timestamp fixed string Calculation timestamp
power fixed number Power value

Forecast contract category

Depending on your contract type different kinds of forecasts are provided.

Category Description
Day-Ahead Only day-ahead forecasts can be retrieved. The first timestamp starts at 00:00:00 of the following day. They are based on numerical weather prediction and will update a couple times per day.
Intraday Both day-ahead and intraday forecasts can be retrieved. They are also based on numerical weather prediction and will update a couple times per day.
Intraday Optimized Both day-ahead and intraday forecasts can be retrieved. Satellite based forecasts are combined with numerical weather prediction. The forecasts are updated every 15 minutes.

You can contact our sales department at sales@meteocontrol.com to get the contract type of your systems.

Inverters

Get all inverters

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/inverters'
<?php
    /** @var Inverter[] $inverters */
    $inverters = $api->system('ABCDE')->inverters()->get();

Response

{
  "data": [
    {
      "id": "Id12345.1",
      "name": "Inverter 1",
      "serial": "123456788"
    },
    {
      "id": "Id12345.2",
      "name": "Inverter 2",
      "serial": "123456789"
    }
  ]
}
<?php
    /** @var Inverter[] $inverters */
    echo $inverters[0]->id;// Id12345.1
    echo $inverters[0]->name;// Inverter 1
    echo $inverters[0]->serial;// 123456788
    echo $inverters[1]->id;// Id12345.2
    echo $inverters[1]->name;// Inverter 2
    echo $inverters[1]->serial;// 123456789

GET systems/<systemKey>/inverters

Path parameters

Name Type Description
systemKey required string Identification key of the system

Response

Property Type Description
id fixed string Inverter device ID
name fixed string Custom name
serial fixed stringǀnull Serial number if given

Get single inverter

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/inverters/Id12345.1'
<?php
    /** @var InverterDetail $inverter */
    $inverter = $api->system('ABCDE')->inverter('Id12345.1')->get();

Response

{
  "data": {
    "id" : "Id12345.1",
    "model": "TLX 15 k",
    "vendor": "Danfoss",
    "serial": "123456788",
    "name": "Inverter 1",
    "scaleFactor": 24.01,
    "firmware": "1.0"
  }
}
<?php
    /** @var InverterDetail $inverter */
    echo $inverter->id;// Id12345.1
    echo $inverter->model;// TLX 15 k
    echo $inverter->vendor;// Danfoss
    echo $inverter->serial;// 123456788
    echo $inverter->name;// Inverter 1
    echo $inverter->scaleFactor;// 24.01
    echo $inverter->firmware;// 1.0

GET systems/<systemKey>/inverters/<deviceId>

Path parameters

Name Type Description
systemKey required string Identification key of the system
deviceId required string Inverter device ID

Response

Property Type Description
id fixed string Inverter device ID
model fixed string Model name
vendor fixed string Vendor name
serial fixed stringǀnull Serial number if given
name fixed stringǀnull Custom name
scaleFactor fixed numberǀnull Normalization factor
firmware fixed stringǀnull Firmware
Abbreviations

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/inverters/Id12345.1/abbreviations'
<?php
    /** @var string[] $abbreviations */
    $abbreviations = $api->system('ABCDE')->inverter('Id12345.1')->abbreviations()->get();

Response

{
  "data": [
    "P_AC",
    "E_TOTAL",
    "E_INT"
  ]
}
<?php
    /** @var string[] $abbreviations */
    echo $abbreviations[0];// P_AC
    echo $abbreviations[1];// E_TOTAL
    echo $abbreviations[2];// E_INT

GET systems/<systemKey>/inverters/<deviceId>/abbreviations

Returns a list of abbreviation IDs. Common abbreviations within the inverters endpoint are P_AC (AC Power), E_TOTAL (total energy produced) or E_INT (energy produced per interval).

Path parameters

Name Type Description
systemKey required string Identification key of the system
deviceId required string Inverter device ID
Get single abbreviation

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/inverters/Id12345.1/abbreviations/P_AC'
<?php
    /** @var Abbreviation $abbreviation */
    $abbreviation = $api->system('ABCDE')->inverter('Id12345.1')->abbreviation('P_AC')->get();

Response

{
  "data": {
    "aggregation": "AVG",
    "precision": 2,
    "description": "Power AC",
    "unit": "W"
  }
}
<?php
    /** @var Abbreviation $abbreviation */
    echo $abbreviation->aggregation;// AVG
    echo $abbreviation->precision;// 2
    echo $abbreviation->description;// Power Ac
    echo $abbreviation->unit;// W

GET systems/<systemKey>/inverters/<deviceId>/abbreviations/<abbreviationId>

Returns an information object of an abbreviation.

Path parameters

Name Type Description
systemKey required string Identification key of the system
deviceId required string Inverter device ID
abbreviationId required string Abbreviation ID

Response

Information object

Property Type Description
aggregation fixed (SUMǀAVGǀMAX) Aggregation method when requesting other resolutions than interval
precision fixed integer Number of decimal places
description fixed string Description
unit fixed string Unit
Measurements

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/inverters/Id12345.1/abbreviations/P_AC/measurements?from=2016-10-21T11:00:00+02:00&to=2016-10-21T12:00:00+02:00'
<?php
    $measurementsCriteria = (new MeasurementsCriteria())
        ->withDateFrom(DateTime::createFromFormat(DATE_ATOM, '2016-10-21T11:00:00+02:00'))
        ->withDateTo(DateTime::createFromFormat(DATE_ATOM, '2016-10-21T12:00:00+02:00'));
    /** @var DevicesMeasurement $measurements */
    $measurements = $api->system('ABCDE')->inverter('Id12345.1')->abbreviation('P_AC')->measurements()
        ->get($measurementsCriteria);

Response

{
  "data": {
    "Id12345.1": {
      "P_AC": [
        {
          "timestamp": "2016-10-21T11:00:00+02:00",
          "value": 0.089
        },
        {
          "timestamp": "2016-10-21T11:15:00+02:00",
          "value": 0.082
        },
        {
          "timestamp": "2016-10-21T11:30:00+02:00",
          "value": 0.078
        },
        {
          "timestamp": "2016-10-21T11:45:00+02:00",
          "value": 0.089
        },
        {
          "timestamp": "2016-10-21T12:00:00+02:00",
          "value": 0.095
        }
      ]
    }
  }
}
<?php
    /** @var DevicesMeasurement $measurements */
    echo $measurements['Id12345.1']['P_AC'][0]
        ->timestamp->format(DATE_ATOM);// 2016-10-21T11:00:00+02:00
    echo $measurements['Id12345.1']['P_AC'][0]->value;// 0.089
    echo $measurements['Id12345.1']['P_AC'][1]
        ->timestamp->format(DATE_ATOM);// 2016-10-21T11:15:00+02:00
    echo $measurements['Id12345.1']['P_AC'][1]->value;// 0.082
    echo $measurements['Id12345.1']['P_AC'][2]
        ->timestamp->format(DATE_ATOM);// 2016-10-21T11:30:00+02:00
    echo $measurements['Id12345.1']['P_AC'][2]->value;// 0.078
    echo $measurements['Id12345.1']['P_AC'][3]
        ->timestamp->format(DATE_ATOM);// 2016-10-21T11:45:00+02:00
    echo $measurements['Id12345.1']['P_AC'][3]->value;// 0.089
    echo $measurements['Id12345.1']['P_AC'][4]
        ->timestamp->format(DATE_ATOM);// 2016-10-21T12:00:00+02:00
    echo $measurements['Id12345.1']['P_AC'][4]->value;// 0.095

GET systems/<systemKey>/inverters/<deviceId>/abbreviations/<abbreviationId>/measurements

Path parameters

Name Type Description
systemKey required string Identification key of the system
deviceId required string Can contain up to 10 comma delimited inverter device IDs
abbreviationId required string Can contain up to 5 comma delimited abbreviation IDs

Query parameters

Name Type Description
from required¹ dateǀdatetime Start date
to required¹ dateǀdatetime End date
resolution optional (minute²ǀintervalǀfifteen-minutesǀthirty-minutesǀhourǀdayǀmonthǀyear) Defaults to interval
includeInterval optional³ integer 0ǀ1 Defaults to 0

¹ The maximum time span between from and to varies depending on the resolution as listed below.

Resolution Maximum time span
minute 1 day
interval 31 days
fifteen-minutes 31 days
thirty-minutes 31 days
hour 31 days
day 60 days
month 1 year
year no limitation

² The option minute resolution is only supported by meteocontrol blue'Log XM / XC (Firmware 2.0 and higher)
³ Only for interval resolution

Response

Property Type Description
timestamp fixed datetime Timestamp
value fixed number Value
Bulk

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/inverters/bulk/measurements?from=2016-10-21T10:00:00+02:00&to=2016-10-21T10:05:00+02:00'
<?php
    $measurementsCriteria = (new MeasurementsCriteria())
        ->withDateFrom(DateTime::createFromFormat(DATE_ATOM, '2016-10-21T10:00:00+02:00'))
        ->withDateTo(DateTime::createFromFormat(DATE_ATOM, '2016-10-21T10:05:00+02:00'));
    $bulkData = $api->system('ABCDE')->inverters()->bulk()->measurements()
        ->get($measurementsCriteria);

Response

{
  "2016-10-21T10:00:00+02:00": {
    "Id12345.1": {
      "COS_PHI": 0,
      "E_DAY": 0,
      "E_INT": 0.038,
      "E_INT_N": 0.04,
      "E_TOTAL": 3606.5,
      "F_AC": 59.988799999999998,
      "I_AC": 0,
      "I_AC1": 0,
      "I_AC2": 0,
      "I_AC3": 0,
      "I_DC": 0,
      "P_AC": 454.34,
      "P_AC_N": 0,
      "P_DC": 0,
      "U_AC_L1L2": 386.67500000000001,
      "U_AC_L2L3": 386.83800000000002,
      "U_AC_L3L1": 384.67599999999999,
      "U_DC": 0
    },
    "Id12345.2": {
      "COS_PHI": 0,
      "E_DAY": 0,
      "E_INT": 0.038,
      "E_INT_N": 0.04,
      "E_TOTAL": 3212.1999999999998,
      "F_AC": 59.986800000000002,
      "I_AC": 0,
      "I_AC1": 0,
      "I_AC2": 0,
      "I_AC3": 0,
      "I_DC": 0,
      "P_AC": 452.34,
      "P_AC_N": 0,
      "P_DC": 0,
      "U_AC_L1L2": 386.63999999999999,
      "U_AC_L2L3": 387.07299999999998,
      "U_AC_L3L1": 384.56400000000002,
      "U_DC": 0
    }
  },
  "2016-10-21T10:05:00+02:00": {
    "Id12345.1": {
      "COS_PHI": 0,
      "E_DAY": 0,
      "E_INT": 0.044,
      "E_INT_N": 0.04,
      "E_TOTAL": 3606.5,
      "F_AC": 60,
      "I_AC": 0,
      "I_AC1": 0,
      "I_AC2": 0,
      "I_AC3": 0,
      "I_DC": 0,
      "P_AC": 529.38,
      "P_AC_N": 0,
      "P_DC": 0,
      "U_AC_L1L2": 386.66300000000001,
      "U_AC_L2L3": 386.88299999999998,
      "U_AC_L3L1": 384.53500000000003,
      "U_DC": 0
    },
    "Id12345.2": {
      "COS_PHI": 0,
      "E_DAY": 0,
      "E_INT": 0.043,
      "E_INT_N": 0.04,
      "E_TOTAL": 3212.1999999999998,
      "F_AC": 60,
      "I_AC": 0,
      "I_AC1": 0,
      "I_AC2": 0,
      "I_AC3": 0,
      "I_DC": 0,
      "P_AC": 519.09,
      "P_AC_N": 0,
      "P_DC": 0,
      "U_AC_L1L2": 386.47000000000003,
      "U_AC_L2L3": 387.024,
      "U_AC_L3L1": 384.673,
      "U_DC": 0
    }
  }
}
<?php
    /** @var MeasurementsBulkReader $bulkData */
    $bulkDataArray = $bulkData->getAsArray();
    echo $bulkDataArray['2016-10-21T10:00:00+02:00']['Id12345.1']['P_AC'];// 454.34
    echo $bulkDataArray['2016-10-21T10:00:00+02:00']['Id12345.1']['E_INT'];// 0.038
    echo $bulkDataArray['2016-10-21T10:00:00+02:00']['Id12345.1']['E_INT_N'];// 0.04
    echo $bulkDataArray['2016-10-21T10:00:00+02:00']['Id12345.2']['P_AC'];// 452.34
    echo $bulkDataArray['2016-10-21T10:00:00+02:00']['Id12345.2']['E_INT'];// 0.038
    echo $bulkDataArray['2016-10-21T10:00:00+02:00']['Id12345.2']['E_INT_N'];// 0.04
    echo $bulkDataArray['2016-10-21T10:05:00+02:00']['Id12345.1']['P_AC'];// 529.38
    echo $bulkDataArray['2016-10-21T10:05:00+02:00']['Id12345.1']['E_INT'];// 0.044
    echo $bulkDataArray['2016-10-21T10:05:00+02:00']['Id12345.1']['E_INT_N'];// 0.04
    echo $bulkDataArray['2016-10-21T10:05:00+02:00']['Id12345.2']['P_AC'];// 519.09
    echo $bulkDataArray['2016-10-21T10:05:00+02:00']['Id12345.2']['E_INT'];// 0.043
    echo $bulkDataArray['2016-10-21T10:05:00+02:00']['Id12345.2']['E_INT_N'];// 0.04

GET systems/<systemKey>/inverters/bulk/measurements

Path parameters

Name Type Description
systemKey required string Identification key of the system

Query parameters

Name Type Description
from required¹ dateǀdatetime Start date
to required¹ dateǀdatetime End date
format optional jsonǀcsv Export format, defaults to json
resolution optional (minute²ǀintervalǀfifteen-minutesǀthirty-minutesǀhourǀday) Defaults to interval
deviceIds optional string Comma separated deviceIds
abbreviations optional string Comma separated abbreviations
includeInterval optional³ integer 0ǀ1 Defaults to 0

¹ The maximum time span is 24 hours between from and to.
² The option minute resolution is only supported by meteocontrol blue'Log XM / XC (Firmware 2.0 and higher)
³ Only for interval resolution

Options for CSV format

The following query parameters are valid only if format is csv
For response example in CSV format, please check HERE.

Name Type Description
delimiter commaǀsemicolonǀcolonǀtab The delimiter, defaults to comma
lineBreak LFǀCRǀCR/LF The line breaks, defaults to LF
decimalPoint dotǀcomma The decimal point, defaults to dot
emptyPlaceholder text, empty string by default, any text accepted The place holder for empty value
precision integer, accepts from 0 to 4 The decimal precision, defaults to 2
PR

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/inverters/pr?from=2016-10-23&to=2016-10-25&resolution=day&deviceIds=Id12345.1,Id12345.2,Id12345.3'
<?php
    $criteria = (new InverterPrCriteria())
        ->withDateFrom(DateTime::createFromFormat('Y-m-d', '2016-10-23'))
        ->withDateTo(DateTime::createFromFormat('Y-m-d', '2016-10-25'))
        ->withResolution(MeasurementsCriteria::RESOLUTION_DAY)
        ->withDeviceIds(['Id12345.1', 'Id12345.2', 'Id12345.3']);
    $prData = $api->system('ABCDE')->inverters()->pr()->get($criteria);

Response

{
  "data": {
    "2016-10-23T00:00:00+02:00": {
      "Id12345.1": 78.67,
      "Id12345.2": 82.05,
      "Id12345.3": 0
    },
    "2016-10-24T00:00:00+02:00": {
      "Id12345.1": 80.24,
      "Id12345.2": 85.12,
      "Id12345.3": 0
    },
    "2016-10-25T00:00:00+02:00": {
      "Id12345.1": 79.05,
      "Id12345.2": 83.18,
      "Id12345.3": 0
    }
  }
}
<?php
    /** @var array $prData */
    echo $prData['2016-10-23T00:00:00+02:00']['Id12345.1'];// 78.67
    echo $prData['2016-10-23T00:00:00+02:00']['Id12345.2'];// 82.05
    echo $prData['2016-10-23T00:00:00+02:00']['Id12345.3'];// 0

GET systems/<systemKey>/inverters/pr

Path parameters

Name Type Description
systemKey required string Identification key of the system

Query parameters

Name Type Description
from required¹ date Start date
to required¹ date End date
deviceIds required string Comma separated deviceIds²
resolution optional¹ (dayǀmonth) Defaults to day

¹ The maximum time span between from and to varies depending on the resolution as listed below.
² The maximum number of deviceIds is 10.

Resolution Maximum time span
day 60 days
month 1 year

Meters

Get all meters

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/meters'
<?php
    /** @var Meter[] $meters */
    $meters = $api->system('ABCDE')->meters()->get();

Response

{
  "data": [
    {
      "id": "12345",
      "name": "Meter 1",
      "uid": "1"
    },
    {
      "id": "12346",
      "name": "Meter 2",
      "uid": "2"
    }
  ]
}
<?php
    /** @var Meter[] $meters */
    echo $meters[0]->id;// 12345
    echo $meters[0]->name;// Meter 1
    echo $meters[0]->uid;// 1
    echo $meters[1]->id;// 12346
    echo $meters[1]->name;// Meter 2
    echo $meters[1]->uid;// 2

GET systems/<systemKey>/meters

Path parameters

Name Type Description
systemKey required string Identification key of the system

Response

Property Type Description
id fixed string Meter device ID
name fixed string Custom name
uid fixed stringǀnull UID

Get single meter

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/meters/12345'
<?php
    /** @var MeterDetail $meter */
    $meter = $api->system('ABCDE')->meter('12345')->get();

Response

{
  "data": {
    "id": "12345",
    "name": "Meter 1",
    "uid": "1",
    "address": "1",
    "firmware": "1.0"
  }
}
<?php
    /** @var MeterDetail $meter */
    echo $meter->id;// 12345
    echo $meter->name;// Meter 1
    echo $meter->uid;// 1
    echo $meter->address;// 1
    echo $meter->firmware;// 1.0

GET systems/<systemKey>/meters/<deviceId>

Path parameters

Name Type Description
systemKey required string Identification key of the system
deviceId required string Meter device ID

Response

Property Type Description
id fixed string Meter device ID
name fixed string Custom name
uid fixed stringǀnull UID
address fixed stringǀnull Address
firmware fixed stringǀnull Firmware
Abbreviations

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/meters/12345/abbreviations'
<?php
    /** @var string[] $abbreviations */
    $abbreviations = $api->system('ABCDE')->meter('12345')->abbreviations()->get();

Response

{
  "data": [
    "M_AC_E_EXP",
    "M_E_INT_EXP",
    "M_AC_E_IMP",
    "M_E_INT_IMP"
  ]
}
<?php
    /** @var string[] $abbreviations */
    echo $abbreviations[0];// M_AC_E_EXP
    echo $abbreviations[1];// M_E_INT_EXP
    echo $abbreviations[2];// M_AC_E_IMP
    echo $abbreviations[3];// M_E_INT_IMP

GET systems/<systemKey>/meters/<deviceId>/abbreviations

Path parameters

Name Type Description
systemKey required string Identification key of the system
deviceId required string Meter device ID
Get single abbreviation

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/meters/12345/abbreviations/M_AC_E_EXP'
<?php
    /** @var Abbreviation $abbreviation */
    $abbreviation = $api->system('ABCDE')->meter('12345')->abbreviation('M_AC_E_EXP')->get();

Response

{
  "data": {
    "aggregation": "MAX",
    "precision": 3,
    "description": "Active energy (export)",
    "unit": "kWh"
  }
}
<?php
    /** @var Abbreviation $abbreviation */
    echo $abbreviation->aggregation;// MAX
    echo $abbreviation->precision;// 3
    echo $abbreviation->description;// Active energy (export)
    echo $abbreviation->unit;// kWh

GET systems/<systemKey>/meters/<deviceId>/abbreviations/<abbreviationId>

Returns an information object of an abbreviation.

Path parameters

Name Type Description
systemKey required string Identification key of the system
deviceId required string Meter device ID
abbreviationId required string Abbreviation ID

Response

Information object

Property Type Description
aggregation fixed (SUMǀAVGǀMAX) Aggregation method when requesting other resolutions than interval
precision fixed integer Number of decimal places
description fixed string Description
unit fixed string Unit
Measurements

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/meters/12345/abbreviations/E/measurements?from=2016-11-01T11:00:00+02:00&to=2016-11-01T11:15:00+02:00'
<?php
    $measurementsCriteria = (new MeasurementsCriteria())
        ->withDateFrom(DateTime::createFromFormat(DATE_ATOM, '2016-11-01T11:00:00+02:00'))
        ->withDateTo(DateTime::createFromFormat(DATE_ATOM, '2016-11-01T11:15:00+02:00'));
    /** @var DevicesMeasurement $measurements */
    $measurements = $api->system('ABCDE')->meter('12345')->abbreviation('E')->measurements()
        ->get($measurementsCriteria);

Response

{
  "data": {
    "12345": {
      "E": [
        {
          "timestamp": "2016-11-01T11:00:00+02:00",
          "value": 7119.21
        },
        {
          "timestamp": "2016-11-01T11:15:00+02:00",
          "value": 7119.21
        }
      ]
    }
  }
}
<?php
    /** @var DevicesMeasurement $measurements */
    echo $measurements['12345']['E'][0]
        ->timestamp->format(DATE_ATOM);// 2016-11-01T11:00:00+02:00
    echo $measurements['12345']['E'][0]->value;// 7119.21
    echo $measurements['12345']['E'][1]
        ->timestamp->format(DATE_ATOM);// 2016-11-01T11:15:00+02:00
    echo $measurements['12345']['E'][1]->value;// 7119.21

GET systems/<systemKey>/meters/<deviceId>/abbreviations/<abbreviationId>/measurements

Path parameters

Name Type Description
systemKey required string Identification key of the system
deviceId required string Can contain up to 10 comma delimited meter device IDs
abbreviationId required string Can contain up to 5 comma delimited abbreviation IDs

Query parameters

Name Type Description
from required¹ dateǀdatetime Start date
to required¹ dateǀdatetime End date
resolution optional (minute²ǀintervalǀfifteen-minutesǀthirty-minutesǀhourǀdayǀmonthǀyear) Defaults to interval
includeInterval optional³ integer 0ǀ1 Defaults to 0

¹ The maximum time span between from and to varies depending on the resolution as listed below.

Resolution Maximum time span
minute 1 day
interval 31 days
fifteen-minutes 31 days
thirty-minutes 31 days
hour 31 days
day 60 days
month 1 year
year no limitation

² The option minute resolution is only supported by meteocontrol blue'Log XM / XC (Firmware 2.0 and higher)
³ Only for interval resolution

Response

Property Type Description
timestamp fixed datetime Timestamp
value fixed number Value
Bulk

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/meters/bulk/measurements?from=2016-11-01T10:00:00+02:00&to=2016-11-01T10:05:00+02:00'
<?php
    $measurementsCriteria = (new MeasurementsCriteria())
        ->withDateFrom(DateTime::createFromFormat(DATE_ATOM, '2016-11-01T10:00:00+02:00'))
        ->withDateTo(DateTime::createFromFormat(DATE_ATOM, '2016-11-01T10:05:00+02:00'));
    $bulkData = $api->system('ABCDE')->meters()->bulk()->measurements()
        ->get($measurementsCriteria);

Response

{
  "2016-11-01T10:00:00+02:00": {
    "12345": {
      "E": 7127.4,
      "E_TOTAL": 1304876,
      "P": null,
      "E_INT": 0
    },
    "12346": {
      "E": 872.6,
      "E_TOTAL": 2239659.75,
      "P": null,
      "E_INT": 0
    }
  },
  "2016-11-01T10:05:00+02:00": {
    "12345": {
      "E": 7127.49,
      "E_TOTAL": 1304876,
      "P": null,
      "E_INT": 0
    },
    "12346": {
      "E": 872.6,
      "E_TOTAL": 2239669.25,
      "P": null,
      "E_INT": 0
    }
  }
}
<?php
    /** @var array $bulkDataArray */
    $bulkDataArray = $bulkData->getAsArray();
    echo $bulkDataArray['2016-11-01T10:00:00+02:00']['12345']['E'];// 7127.4
    echo $bulkDataArray['2016-11-01T10:00:00+02:00']['12345']['E_TOTAL'];// 1304876
    echo $bulkDataArray['2016-11-01T10:00:00+02:00']['12346']['E'];// 872.6
    echo $bulkDataArray['2016-11-01T10:00:00+02:00']['12346']['E_TOTAL'];// 2239659.75
    echo $bulkDataArray['2016-11-01T10:05:00+02:00']['12345']['E'];// 7127.49
    echo $bulkDataArray['2016-11-01T10:05:00+02:00']['12345']['E_TOTAL'];// 1304876
    echo $bulkDataArray['2016-11-01T10:05:00+02:00']['12346']['E'];// 872.6
    echo $bulkDataArray['2016-11-01T10:05:00+02:00']['12346']['E_TOTAL'];// 2239669.25

GET systems/<systemKey>/meters/bulk/measurements

Path parameters

Name Type Description
systemKey required string Identification key of the system

Query parameters

Name Type Description
from required¹ dateǀdatetime Start date
to required¹ dateǀdatetime End date
format optional jsonǀcsv Export format, defaults to json
resolution optional (minute²ǀintervalǀfifteen-minutesǀthirty-minutesǀhourǀday) Defaults to interval
deviceIds optional string Comma separated deviceIds
abbreviations optional string Comma separated abbreviations
includeInterval optional³ integer 0ǀ1 Defaults to 0

¹ The maximum time span is 24 hours between from and to.
² The option minute resolution is only supported by meteocontrol blue'Log XM / XC (Firmware 2.0 and higher)
³ Only for interval resolution

Options for CSV format

The following query parameters are valid only if format is csv
For response example in CSV format, please check HERE.

Name Type Description
delimiter commaǀsemicolonǀcolonǀtab The delimiter, defaults to comma
lineBreak LFǀCRǀCR/LF The line breaks, defaults to LF
decimalPoint dotǀcomma The decimal point, defaults to dot
emptyPlaceholder text, empty string by default, any text accepted The place holder for empty value
precision integer, accepts from 0 to 4 The decimal precision, defaults to 2

Sensors

Get all sensor devices

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/sensors'
<?php
    /** @var Sensor[] $sensors */
    $sensors = $api->system('ABCDE')->sensors()->get();

Response

{
  "data": [
    {
      "id": "10001",
      "name": "Pyranometer SMPx (Modbus)",
      "uid": "7"
    },
    {
      "id": "10002",
      "name": "Irradiation sensor M&T / mc Si-420TC-T (4 - 20mA)",
      "uid": "8"
    }
  ]
}
<?php
    /** @var Sensor[] $sensors */
    echo $sensors[0]->id;// 10001
    echo $sensors[0]->name;// Pyranometer SMPx (Modbus)
    echo $sensors[0]->uid;// 7
    echo $sensors[1]->id;// 10002
    echo $sensors[1]->name;// Irradiation sensor M&T / mc Si-420TC-T (4 - 20mA)
    echo $sensors[1]->uid;// 8

GET systems/<systemKey>/sensors

Path parameters

Name Type Description
systemKey required string Identification key of the system

Response

Property Type Description
id fixed string Sensor device ID
name fixed string Custom name
uid fixed stringǀnull UID

Get single sensor device

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/sensors/10001'
<?php
    /** @var SensorDetail $sensor */
    $sensor = $api->system('ABCDE')->sensor('10001')->get();

Response

{
  "data": {
    "id": "10001",
    "name": "Pyranometer SMPx (Modbus)",
    "uid": "7",
    "address": "7",
    "firmware": "1.0"
  }
}
<?php
    /** @var SensorDetail $sensor */
    echo $sensor->id;// 10001
    echo $sensor->name;// Pyranometer SMPx (Modbus)
    echo $sensor->uid;// 7
    echo $sensor->address;// 7
    echo $sensor->firmware;// 1.0

GET systems/<systemKey>/sensors/<deviceId>

Path parameters

Name Type Description
systemKey required string Identification key of the system
deviceId required string Sensor device ID

Response

Property Type Description
id fixed string Sensor device ID
name fixed string Custom name
uid fixed stringǀnull UID
address fixed stringǀnull Address
firmware fixed stringǀnull Firmware
Abbreviations

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/sensors/10001/abbreviations'
<?php
    /** @var string[] $abbreviations */
    $abbreviations = $api->system('ABCDE')->sensor('10001')->abbreviations()->get();

Response

{
  "data": [
    "SRAD"
  ]
}
<?php
    /** @var string[] $abbreviations */
    echo $abbreviations[0];// SRAD

GET systems/<systemKey>/sensors/<deviceId>/abbreviations

Path parameters

Name Type Description
systemKey required string Identification key of the system
deviceId required string Sensor device ID
Get single abbreviation

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/sensors/10001/abbreviations/SRAD'
<?php
    /** @var string[] $abbreviation */
    $abbreviation = $api->system('ABCDE')->sensor('10001')->abbreviation('SRAD')->get();

Response

{
  "data": {
    "aggregation": "AVG",
    "precision": 3,
    "description": "Irradiance on module plane",
    "unit": "W/m²"
  }
}
<?php
    /** @var Abbreviation $abbreviation */
    echo $abbreviation->aggregation;// AVG
    echo $abbreviation->precision;// 3
    echo $abbreviation->description;// Irradiance on module plane
    echo $abbreviation->unit;// W/m²

GET systems/<systemKey>/sensors/<deviceId>/abbreviations/<abbreviationId>

Returns an information object of an abbreviation.

Path parameters

Name Type Description
systemKey required string Identification key of the system
deviceId required string Sensor device ID
abbreviationId required string Abbreviation ID

Response

Information object

Property Type Description
aggregation fixed (SUMǀAVGǀMAX) Aggregation method when requesting other resolutions than interval
precision fixed integer Number of decimal places
description fixed string Description
unit fixed string Unit
Measurements

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/sensors/10001/abbreviations/SRAD/measurements?from=2016-10-21T20:00:00+02:00&to=2016-10-21T20:05:00+02:00'
<?php
    $measurementsCriteria = (new MeasurementsCriteria())
        ->withDateFrom(DateTime::createFromFormat(DATE_ATOM, '2016-10-21T20:00:00+02:00'))
        ->withDateTo(DateTime::createFromFormat(DATE_ATOM, '2016-10-21T20:05:00+02:00'));
    /** @var DevicesMeasurement $measurements */
    $measurements = $api->system('ABCDE')->sensor('10001')->abbreviation('SRAD')->measurements()
        ->get($measurementsCriteria);

Response

{
  "data": {
    "10001": {
      "SRAD": [
        {
          "timestamp": "2016-10-21T20:00:00+02:00",
          "value": 177.2
        },
        {
          "timestamp": "2016-10-21T20:05:00+02:00",
          "value": 157.2
        }
      ]
    }
  }
}
<?php
    /** @var DevicesMeasurement $measurements */
    echo $measurements['10001']['SRAD'][0]
        ->timestamp->format(DATE_ATOM);// 2016-10-21T20:00:00+02:00
    echo $measurements['10001']['SRAD'][0]->value;// 177.2
    echo $measurements['10001']['SRAD'][1]
        ->timestamp->format(DATE_ATOM);// 2016-10-21T20:05:00+02:00
    echo $measurements['10001']['SRAD'][1]->value;// 157.2

GET systems/<systemKey>/sensors/<deviceId>/abbreviations/<abbreviationId>/measurements

Path parameters

Name Type Description
systemKey required string Identification key of the system
deviceId required string Can contain up to 10 comma delimited sensor device IDs
abbreviationId required string Can contain up to 5 comma delimited abbreviation IDs

Query parameters

Name Type Description
from required¹ dateǀdatetime Start date
to required¹ dateǀdatetime End date
resolution optional (minute²ǀintervalǀfifteen-minutesǀthirty-minutesǀhourǀdayǀmonthǀyear) Defaults to interval
includeInterval optional³ integer 0ǀ1 Defaults to 0

¹ The maximum time span between from and to varies depending on the resolution as listed below.

Resolution Maximum time span
minute 1 day
interval 31 days
fifteen-minutes 31 days
thirty-minutes 31 days
hour 31 days
day 60 days
month 1 year
year no limitation

² The option minute resolution is only supported by meteocontrol blue'Log XM / XC (Firmware 2.0 and higher)
³ Only for interval resolution

Response

Property Type Description
timestamp fixed datetime Timestamp
value fixed number Value
Bulk

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/sensors/bulk/measurements?from=2016-10-21T20:00:00+02:00&to=2016-10-21T20:05:00+02:00'
<?php
    $measurementsCriteria = (new MeasurementsCriteria())
        ->withDateFrom(DateTime::createFromFormat(DATE_ATOM, '2016-10-21T20:00:00+02:00'))
        ->withDateTo(DateTime::createFromFormat(DATE_ATOM, '2016-10-21T20:05:00+02:00'));
    $bulkData = $api->system('ABCDE')->sensors()->bulk()->measurements()
        ->get($measurementsCriteria);

Response

{
  "2016-10-21T20:00:00+02:00": {
    "10001": {
      "SRAD": 441.7
    },
    "10002": {
      "T": 10000.30,
      "SRAD": 78910,
      "STATE": 55.66
    }
  },
  "2016-10-21T20:05:00+02:00": {
    "10001": {
      "SRAD": 525.5
    },
    "10002": {
      "T": 10080.30,
      "SRAD": 78990,
      "STATE": 77.88
    }
  }
}
<?php
    /** @var MeasurementsBulkReader $bulkData */
    $bulkDataArray = $bulkData->getAsArray();
    echo $bulkDataArray['2016-10-21T20:00:00+02:00']['10001']['SRAD'];// 441.7
    echo $bulkDataArray['2016-10-21T20:00:00+02:00']['10002']['T'];// 10000.30
    echo $bulkDataArray['2016-10-21T20:00:00+02:00']['10002']['SRAD'];// 78910
    echo $bulkDataArray['2016-10-21T20:00:00+02:00']['10002']['STATE'];// 55.66
    echo $bulkDataArray['2016-10-21T20:05:00+02:00']['10001']['SRAD'];// 525.5
    echo $bulkDataArray['2016-10-21T20:05:00+02:00']['10002']['T'];// 10080.30
    echo $bulkDataArray['2016-10-21T20:05:00+02:00']['10002']['SRAD'];// 78990
    echo $bulkDataArray['2016-10-21T20:05:00+02:00']['10002']['STATE'];// 77.88

GET systems/<systemKey>/sensors/bulk/measurements

Path parameters

Name Type Description
systemKey required string Identification key of the system

Query parameters

Name Type Description
from required¹ dateǀdatetime Start date
to required¹ dateǀdatetime End date
format optional jsonǀcsv Export format, defaults to json
resolution optional (minute²ǀintervalǀfifteen-minutesǀthirty-minutesǀhourǀday) Defaults to interval
deviceIds optional string Comma separated deviceIds
abbreviations optional string Comma separated abbreviations
includeInterval optional³ integer 0ǀ1 Defaults to 0

¹ The maximum time span is 24 hours between from and to.
² The option minute resolution is only supported by meteocontrol blue'Log XM / XC (Firmware 2.0 and higher)
³ Only for interval resolution

Options for CSV format

The following query parameters are valid only if format is csv
For response example in CSV format, please check HERE.

Name Type Description
delimiter commaǀsemicolonǀcolonǀtab The delimiter, defaults to comma
lineBreak LFǀCRǀCR/LF The line breaks, defaults to LF
decimalPoint dotǀcomma The decimal point, defaults to dot
emptyPlaceholder text, empty string by default, any text accepted The place holder for empty value
precision integer, accepts from 0 to 4 The decimal precision, defaults to 2

Status

Get all status devices

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/statuses'
<?php
    /** @var Status[] $statuses */
    $statuses = $api->system('ABCDE')->statuses()->get();

Response

{
  "data": [
    {
      "id": "10001",
      "name": "Meldung LS TST",
      "uid": "BT1980004134-D_IN1"
    },
    {
      "id": "10002",
      "name": "Warnung Trafotemperatur",
      "uid": "BT1980004134-D_IN2"
    }
  ]
}

<?php
    /** @var Status[] $statuses */
    echo $statuses[0]->id;// 10001
    echo $statuses[0]->name;// Meldung LS TST
    echo $statuses[0]->uid;// BT1980004134-D_IN1
    echo $statuses[1]->id;// 10002
    echo $statuses[1]->name;// Warnung Trafotemperatur
    echo $statuses[1]->uid;// BT1980004134-D_IN2

GET systems/<systemKey>/statuses

Path parameters

Name Type Description
systemKey required string Identification key of the system

Response

Property Type Description
id fixed string Status device ID
name fixed string Custom name
uid fixed stringǀnull UID

Get single status device

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/statuses/10001'
<?php
    /** @var StatusDetail $status */
    $status = $api->system('ABCDE')->status('10001')->get();

Response

{
  "data": {
    "id": "10001",
    "name": "Meldung LS TST",
    "uid": "BT1980004134-D_IN1",
    "address": "BT1980004134-D_IN1",
    "vendor": "Huawei",
    "model": "SmartLogger 2000 DI Status",
    "firmware": "V200R002C20SPC119"
  }
}

<?php
    /** @var StatusDetail $status */
    echo $status->id;// 10001
    echo $status->name;// Meldung LS TST
    echo $status->uid;// BT1980004134-D_IN1
    echo $status->address;// BT1980004134-D_IN1
    echo $status->vendor;// Huawei
    echo $status->model;// SmartLogger 2000 DI Status
    echo $status->firmware;// V200R002C20SPC119

GET systems/<systemKey>/statuses/<deviceId>

Path parameters

Name Type Description
systemKey required string Identification key of the system
deviceId required string Status device ID

Response

Property Type Description
id fixed string Status device ID
name fixed string Custom name
uid fixed stringǀnull UID
address fixed stringǀnull Address
vendor fixed stringǀnull Vendor
model fixed stringǀnull Model
firmware fixed stringǀnull Firmware
Abbreviations

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/statuses/10001/abbreviations'
<?php
    /** @var string[] $abbreviations */
    $abbreviations = $api->system('ABCDE')->status('10001')->abbreviations()->get();

Response

{
  "data": [
    "STATE"
  ]
}
<?php
    /** @var string[] $abbreviations */
    echo $abbreviations[0];// STATE

GET systems/<systemKey>/statuses/<deviceId>/abbreviations

Path parameters

Name Type Description
systemKey required string Identification key of the system
deviceId required string Status device ID
Get single abbreviation

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/statuses/10001/abbreviations/STATE'
<?php
    /** @var string[] $abbreviation */
    $abbreviation = $api->system('ABCDE')->status('10001')->abbreviation('STATE')->get();

Response

{
  "data": {
    "aggregation": "MAX",
    "precision": 0,
    "description": "Status",
    "unit": ""
  }
}
<?php
    /** @var Abbreviation $abbreviation */
    echo $abbreviation->aggregation;// MAX
    echo $abbreviation->precision;// 0
    echo $abbreviation->description;// Status
    echo $abbreviation->unit;//

GET systems/<systemKey>/statuses/<deviceId>/abbreviations/<abbreviationId>

Returns an information object of an abbreviation.

Path parameters

Name Type Description
systemKey required string Identification key of the system
deviceId required string Status device ID
abbreviationId required string Abbreviation ID

Response

Information object

Property Type Description
aggregation fixed (SUMǀAVGǀMAX) Aggregation method when requesting other resolutions than interval
precision fixed integer Number of decimal places
description fixed string Description
unit fixed string Unit
Measurements

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/statuses/10001/abbreviations/STATE/measurements?from=2020-10-01T00:00:00+02:00&to=2020-10-01T00:05:00+02:00'
<?php
    $measurementsCriteria = (new MeasurementsCriteria())
        ->withDateFrom(DateTime::createFromFormat(DATE_ATOM, '2020-10-01T00:00:00+02:00'))
        ->withDateTo(DateTime::createFromFormat(DATE_ATOM, '2020-10-01T00:05:00+02:00'));
    /** @var DevicesMeasurement $measurements */
    $measurements = $api->system('ABCDE')->status('10001')->abbreviation('STATE')->measurements()
        ->get($measurementsCriteria);

Response

{
  "data": {
    "10001": {
      "STATE": [
        {
          "timestamp": "2020-10-01T00:00:00+02:00",
          "value": 0
        },
        {
          "timestamp": "2020-10-01T00:05:00+02:00",
          "value": 1
        }
      ]
    }
  }
}
<?php
    /** @var DevicesMeasurement $measurements */
    echo $measurements['10001']['STATE'][0]
        ->timestamp->format(DATE_ATOM);// 2020-10-01T00:00:00+02:00
    echo $measurements['10001']['STATE'][0]->value;// 0
    echo $measurements['10001']['STATE'][1]
        ->timestamp->format(DATE_ATOM);// 2020-10-01T00:05:00+02:00
    echo $measurements['10001']['STATE'][1]->value;// 1

GET systems/<systemKey>/statuses/<deviceId>/abbreviations/<abbreviationId>/measurements

Path parameters

Name Type Description
systemKey required string Identification key of the system
deviceId required string Can contain up to 10 comma delimited status device IDs
abbreviationId required string Can contain up to 5 comma delimited abbreviation IDs

Query parameters

Name Type Description
from required¹ dateǀdatetime Start date
to required¹ dateǀdatetime End date
includeInterval optional integer 0ǀ1 Defaults to 0

¹ The maximum time span is 24 hours between from and to.

Response

Property Type Description
timestamp fixed datetime Timestamp
value fixed number Value
Bulk

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/statuses/bulk/measurements?from=2020-10-01T00:00:00+02:00&to=2020-10-01T00:05:00+02:00'
<?php
    $measurementsCriteria = (new MeasurementsCriteria())
        ->withDateFrom(DateTime::createFromFormat(DATE_ATOM, '2020-10-01T00:00:00+02:00'))
        ->withDateTo(DateTime::createFromFormat(DATE_ATOM, '2020-10-01T00:05:00+02:00'));
    $bulkData = $api->system('ABCDE')->statuses()->bulk()->measurements()
        ->get($measurementsCriteria);

Response

{
  "2020-10-01T00:00:00+02:00": {
    "10001": {
      "STATE": 0
    },
    "10002": {
      "STATE": 0
    }
  },
  "2020-10-01T00:05:00+02:00": {
    "10001": {
      "STATE": 1
    },
    "10002": {
      "STATE": 0
    }
  }
}
<?php
    /** @var MeasurementsBulkReader $bulkData */
    $bulkDataArray = $bulkData->getAsArray();
    echo $bulkDataArray['2020-10-01T00:00:00+02:00']['10001']['STATE'];// 0
    echo $bulkDataArray['2020-10-01T00:00:00+02:00']['10002']['STATE'];// 0
    echo $bulkDataArray['2020-10-01T00:05:00+02:00']['10001']['STATE'];// 1
    echo $bulkDataArray['2020-10-01T00:05:00+02:00']['10002']['STATE'];// 0

GET systems/<systemKey>/statuses/bulk/measurements

Path parameters

Name Type Description
systemKey required string Identification key of the system

Query parameters

Name Type Description
from required¹ dateǀdatetime Start date
to required¹ dateǀdatetime End date
format optional jsonǀcsv Export format, defaults to json
deviceIds optional string Comma separated deviceIds
abbreviations optional string Comma separated abbreviations
includeInterval optional integer 0ǀ1 Defaults to 0

¹ The maximum time span is 24 hours between from and to.

Options for CSV format

The following query parameters are valid only if format is csv
For response example in CSV format, please check HERE.

Name Type Description
delimiter commaǀsemicolonǀcolonǀtab The delimiter, defaults to comma
lineBreak LFǀCRǀCR/LF The line breaks, defaults to LF
decimalPoint dotǀcomma The decimal point, defaults to dot
emptyPlaceholder text, empty string by default, any text accepted The place holder for empty value
precision integer, accepts from 0 to 4 The decimal precision, defaults to 2

Stringboxes

Get all stringbox devices

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/stringboxes'
<?php
    /** @var Stringbox[] $stringboxes */
    $stringboxes = $api->system('ABCDE')->stringboxes()->get();

Response

{
  "data": [
    {
      "id": "20001",
      "name": "stringbox1",
      "serial": "serial1"
    },
    {
      "id": "20002",
      "name": "stringbox2",
      "serial": "serial2"
    }
  ]
}
<?php
    /** @var Stringbox[] $stringboxes */
    echo $stringboxes[0]->id;// 20001
    echo $stringboxes[0]->name;// stringbox1
    echo $stringboxes[0]->serial;// serial1
    echo $stringboxes[1]->id;// 20002
    echo $stringboxes[1]->name;// stringbox2
    echo $stringboxes[1]->serial;// serial2

GET systems/<systemKey>/stringboxes

Path parameters

Name Type Description
systemKey required string Identification key of the system

Response

Property Type Description
id fixed string Stringbox device ID
name fixed string Custom name
serial fixed string Serial

Get single stringbox device

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/stringboxes/20001'
<?php
    /** @var StringboxDetail $stringbox */
    $stringbox = $api->system('ABCDE')->stringbox('20001')->get();

Response

{
  "data": {
    "id": "20001",
    "name": "stringbox1",
    "serial": "serial1",
    "scaleFactor": 1.32
  }
}
<?php
    /** @var StringboxDetail $stringbox */
    echo $stringbox->id;// 20001
    echo $stringbox->name;// stringbox1
    echo $stringbox->serial;// serial1
    echo $stringbox->scaleFactor;//1.32

GET systems/<systemKey>/stringboxes/<deviceId>

Path parameters

Name Type Description
systemKey required string Identification key of the system
deviceId required string Stringbox device ID

Response

Property Type Description
id fixed string Stringbox device ID
name fixed string Custom name
serial fixed string Serial
scaleFactor fixed number Normalization factor
Abbreviations

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/stringboxes/20001/abbreviations'
<?php
    /** @var string[] $abbreviations */
    $abbreviations = $api->system('ABCDE')->stringbox('20001')->abbreviations()->get();

Response

{
  "data": [
      "D_IN2",
      "I1",
      "I1_N"
  ]
}
<?php
    /** @var string[] $abbreviations */
    echo $abbreviations[0];// D_IN2
    echo $abbreviations[1];// I1
    echo $abbreviations[2];// I1_N

GET systems/<systemKey>/stringboxes/<deviceId>/abbreviations

Path parameters

Name Type Description
systemKey required string Identification key of the system
deviceId required string Stringbox device ID
Get single abbreviation

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/stringboxes/20001/abbreviations/I1'
<?php
    /** @var string[] $abbreviation */
    $abbreviation = $api->system('ABCDE')->stringbox('20001')->abbreviation('I1')->get();

Response

{
  "data": {
    "aggregation": "AVG",
    "precision": null,
    "description": "Current DC",
    "unit": "A",
    "active": true
  }
}
<?php
    /** @var Abbreviation $abbreviation */
    echo $abbreviation->aggregation;// AVG
    echo $abbreviation->precision;// null
    echo $abbreviation->description;// Current DC
    echo $abbreviation->unit;// A
    echo $abbreviation->active;// true

GET systems/<systemKey>/stringboxes/<deviceId>/abbreviations/<abbreviationId>

Returns an information object of an abbreviation.

Path parameters

Name Type Description
systemKey required string Identification key of the system
deviceId required string Stringbox device ID
abbreviationId required string Abbreviation ID

Response

Information object

Property Type Description
aggregation fixed (SUMǀAVGǀMAX) Aggregation method when requesting other resolutions than interval
precision fixed integer Number of decimal places
description fixed string Description
unit fixed string Unit
active fixed bool Active status
Measurements

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/stringboxes/20001/abbreviations/I1/measurements?from=2016-10-21T11:00:00+02:00&to=2016-10-21T11:05:00+02:00'
<?php
    $measurementsCriteria = (new MeasurementsCriteria())
        ->withDateFrom(DateTime::createFromFormat(DATE_ATOM, '2016-10-21T11:00:00+02:00'))
        ->withDateTo(DateTime::createFromFormat(DATE_ATOM, '2016-10-21T11:05:00+02:00'));
    /** @var DevicesMeasurement $measurements */
    $measurements = $api->system('ABCDE')->stringbox('20001')->abbreviation('I1')->measurements()
        ->get($measurementsCriteria);

Response

{
  "data": {
    "20001": {
      "I1": [
        {
          "timestamp": "2016-10-21T11:00:00+02:00",
          "value": 177.2
        },
        {
          "timestamp": "2016-10-21T11:05:00+02:00",
          "value": 157.2
        }
      ]
    }
  }
}
<?php
    /** @var DevicesMeasurement $measurements */
    echo $measurements['20001']['I1'][0]
        ->timestamp->format(DATE_ATOM);// 2016-10-21T11:00:00+02:00
    echo $measurements['20001']['I1'][0]->value;// 177.2
    echo $measurements['20001']['I1'][1]
        ->timestamp->format(DATE_ATOM);// 2016-10-21T11:05:00+02:00
    echo $measurements['20001']['I1'][1]->value;// 157.2

GET systems/<systemKey>/stringboxes/<deviceId>/abbreviations/<abbreviationId>/measurements

Path parameters

Name Type Description
systemKey required string Identification key of the system
deviceId required string Can contain up to 10 comma delimited stringbox device IDs
abbreviationId required string Can contain up to 5 comma delimited abbreviation IDs

Query parameters

Name Type Description
from required¹ dateǀdatetime Start date
to required¹ dateǀdatetime End date
resolution optional (minute²ǀintervalǀfifteen-minutesǀthirty-minutesǀhourǀdayǀmonthǀyear) Defaults to interval
includeInterval optional³ integer 0ǀ1 Defaults to 0

¹ The maximum time span between from and to varies depending on the resolution as listed below.

Resolution Maximum time span
minute 1 day
interval 31 days
fifteen-minutes 31 days
thirty-minutes 31 days
hour 31 days
day 60 days
month 1 year
year no limitation

² The option minute resolution is only supported by meteocontrol blue'Log XM / XC (Firmware 2.0 and higher)
³ Only for interval resolution

Response

Property Type Description
timestamp fixed datetime Timestamp
value fixed number Value
Bulk

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/stringboxes/bulk/measurements?from=2016-11-01T23:00:00+02:00&to=2016-11-01T23:05:00+02:00'
<?php
    $measurementsCriteria = (new MeasurementsCriteria())
        ->withDateFrom(DateTime::createFromFormat(DATE_ATOM, '2016-11-01T23:00:00+02:00'))
        ->withDateTo(DateTime::createFromFormat(DATE_ATOM, '2016-11-01T23:05:00+02:00'));
    $bulkData = $api->system('ABCDE')->stringboxes()->bulk()->measurements()
        ->get($measurementsCriteria);

Response

{
  "2016-11-01T23:00:00+02:00": {
    "20001": {
      "I1": 3.449,
      "I1_N": 0.43,
      "I2": 3.436,
      "I2_N": 0.43,
      "I3": 3.405,
      "I3_N": 0.42,
      "I4": 3.428,
      "I4_N": 0.43,
      "I5": 3.383,
      "I5_N": 0.42,
      "I6": 3.589,
      "I6_N": 0.45,
      "I7": 3.569,
      "I7_N": 0.45,
      "I8": 3.554,
      "I8_N": 0.44
    },
    "20002": {
      "D_IN2": null,
      "I1": 3.384,
      "I1_N": 0.42,
      "I10": 0,
      "I10_N": 0,
      "I11": 0,
      "I11_N": 0,
      "I12": 0,
      "I12_N": 0,
      "I13": 0,
      "I13_N": 0,
      "I14": 0,
      "I14_N": 0,
      "I2": 3.337,
      "I2_N": 0.42,
      "I3": 3.287,
      "I3_N": 0.41,
      "I4": 3.326,
      "I4_N": 0.41,
      "I5": 3.342,
      "I5_N": 0.42,
      "I6": 3.307,
      "I6_N": 0.41,
      "I7": 3.292,
      "I7_N": 0.41,
      "I8": 0.014,
      "I8_N": 0.01,
      "I9": 0,
      "I9_N": 0,
      "U_DC": 100,
      "STATE": null,
      "T1": 18.9
    },
    "20003": null,
    "20004": null,
    "20005": null,
    "20006": null,
    "20007": null,
    "20008": null,
    "20009": null,
    "20010": null,
    "20011": null,
    "20012": null,
    "20013": null,
    "20014": null,
    "20015": null,
    "20016": null,
    "20017": null,
    "20018": null,
    "20019": null,
    "20020": null
  },
  "2016-11-01T23:05:00+02:00": {
    "20001": {
      "I1": 3.913,
      "I1_N": 0.49,
      "I2": 3.894,
      "I2_N": 0.49,
      "I3": 3.85,
      "I3_N": 0.48,
      "I4": 3.882,
      "I4_N": 0.48,
      "I5": 3.827,
      "I5_N": 0.48,
      "I6": 4.053,
      "I6_N": 0.51,
      "I7": 4.043,
      "I7_N": 0.5,
      "I8": 4.031,
      "I8_N": 0.5
    },
    "20002": {
      "I1": 3.869,
      "I1_N": 0.48,
      "I2": 3.817,
      "I2_N": 0.48,
      "I3": 3.755,
      "I3_N": 0.47,
      "I4": 3.805,
      "I4_N": 0.47,
      "I5": 3.819,
      "I5_N": 0.48,
      "I6": 3.777,
      "I6_N": 0.47,
      "I7": 3.764,
      "I7_N": 0.47,
      "I8": 0.014,
      "I8_N": 0.01
    }
  }
}
<?php
    /** @var MeasurementsBulkReader $bulkData */
    $bulkDataArray = $bulkData->getAsArray();
    echo $bulkDataArray['2016-11-01T23:00:00+02:00']['20001']['I1'];// 3.449
    echo $bulkDataArray['2016-11-01T23:00:00+02:00']['20001']['I1_N'];// 0.42
    echo $bulkDataArray['2016-11-01T23:00:00+02:00']['20002']['I1'];// 3.384
    echo $bulkDataArray['2016-11-01T23:00:00+02:00']['20002']['I1_N'];// 0.43
    echo $bulkDataArray['2016-11-01T23:05:00+02:00']['20001']['I1'];// 3.913
    echo $bulkDataArray['2016-11-01T23:05:00+02:00']['20001']['I1_N'];// 0.49
    echo $bulkDataArray['2016-11-01T23:05:00+02:00']['20002']['I1'];// 3.869
    echo $bulkDataArray['2016-11-01T23:05:00+02:00']['20002']['I1_N'];// 0.48

GET systems/<systemKey>/stringboxes/bulk/measurements

Path parameters

Name Type Description
systemKey required string Identification key of the system

Query parameters

Name Type Description
from required¹ dateǀdatetime Start date
to required¹ dateǀdatetime End date
format optional jsonǀcsv Export format, defaults to json
resolution optional (minute²ǀintervalǀfifteen-minutesǀthirty-minutesǀhourǀday) Defaults to interval
activeOnly optional integer 0ǀ1 Export active strings only, defaults to 0
deviceIds optional string Comma separated deviceIds
abbreviations optional string Comma separated abbreviations
includeInterval optional³ integer 0ǀ1 Defaults to 0

¹ The maximum time span is 24 hours between from and to.
² The option minute resolution is only supported by meteocontrol blue'Log XM / XC (Firmware 2.0 and higher)
³ Only for interval resolution

Options for CSV format

The following query parameters are valid only if format is csv
For response example in CSV format, please check HERE.

Name Type Description
delimiter commaǀsemicolonǀcolonǀtab The delimiter, defaults to comma
lineBreak LFǀCRǀCR/LF The line breaks, defaults to LF
decimalPoint dotǀcomma The decimal point, defaults to dot
emptyPlaceholder text, empty string by default, any text accepted The place holder for empty value
precision integer, accepts from 0 to 4 The decimal precision, defaults to 2

Batteries

Get all batteries

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/batteries'
<?php
    /** @var Battery[] $batteries */
    $batteries = $api->system('ABCDE')->batteries()->get();

Response

{
    "data": [
        {
            "id": "145146",
            "name": "",
            "uid": "bat1"
        },
        {
            "id": "145147",
            "name": "",
            "uid": "bat2"
        }
    ]
}
<?php
    /** @var Battery[] $batteries */
    echo $batteries[0]->id;// 145146
    echo $batteries[0]->name;
    echo $batteries[0]->uid;// bat1
    echo $batteries[1]->id;// 145147
    echo $batteries[1]->name;
    echo $batteries[1]->uid;// bat2

GET systems/<systemKey>/batteries

Path parameters

Name Type Description
systemKey required string Identification key of the system

Response

Property Type Description
id fixed string Battery device ID
name fixed string Custom name
uid fixed stringǀnull UID

Get single battery

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/batteries/145146'
<?php
    /** @var BatteryDetail $battery */
    $battery = $api->system('ABCDE')->battery('145146')->get();

Response

{
  "data": {
    "id": "145146",
    "name": "",
    "uid": "bat1",
    "address": "bat1",
    "firmware": "1.0"
  }
}
<?php
    /** @var BatteryDetail $battery */
    echo $battery->id;// 145146
    echo $battery->name;
    echo $battery->uid;// bat1
    echo $battery->address;// bat1
    echo $battery->firmware;// 1.0

GET systems/<systemKey>/batteries/<deviceId>

Path parameters

Name Type Description
systemKey required string Identification key of the system
deviceId required string Battery device ID

Response

Property Type Description
id fixed string Battery device ID
name fixed string Custom name
uid fixed stringǀnull UID
address fixed stringǀnull Address
firmware fixed stringǀnull Firmware
Abbreviations

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/batteries/145146/abbreviations'
<?php
    /** @var string[] $abbreviations */
    $abbreviations = $api->system('ABCDE')->battery('145146')->abbreviations()->get();

Response

{
  "data":  [
    "B_CHARGE_LEVEL",
    "B_E_EXP",
    "B_E_IMP",
    "T1"
  ]
}
<?php
    /** @var string[] $abbreviations */
    echo $abbreviations[0];// B_CHARGE_LEVEL
    echo $abbreviations[1];// B_E_EXP
    echo $abbreviations[2];// B_E_IMP
    echo $abbreviations[3];// T1

GET systems/<systemKey>/batteries/<deviceId>/abbreviations

Path parameters

Name Type Description
systemKey required string Identification key of the system
deviceId required string Battery device ID
Get single abbreviation

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/batteries/145146/abbreviations/B_CHARGE_LEVEL'
<?php
    /** @var Abbreviation $abbreviation */
    $abbreviation = $api->system('ABCDE')->battery('145146')->abbreviation('B_CHARGE_LEVEL')->get();

Response

{
  "data": {
    "aggregation": "AVG",
    "precision": 2,
    "description": "Charging status",
    "unit": "%"
  }
}
<?php
    /** @var Abbreviation $abbreviation */
    echo $abbreviation->aggregation;// AVG
    echo $abbreviation->precision;// 2
    echo $abbreviation->description;// Charging status
    echo $abbreviation->unit;// %

GET systems/<systemKey>/batteries/<deviceId>/abbreviations/<abbreviationId>

Returns an information object of an abbreviation.

Path parameters

Name Type Description
systemKey required string Identification key of the system
deviceId required string Battery device ID
abbreviationId required string Abbreviation ID

Response

Information object

Property Type Description
aggregation fixed (SUMǀAVGǀMAX) Aggregation method when requesting other resolutions than interval
precision fixed integer Number of decimal places
description fixed string Description
unit fixed string Unit
Measurements

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/batteries/145146/abbreviations/B_CHARGE_LEVEL/measurements?from=2016-11-01T11:00:00+02:00&to=2016-11-01T11:05:00+02:00'
<?php
    $measurementsCriteria = (new MeasurementsCriteria())
        ->withDateFrom(DateTime::createFromFormat(DATE_ATOM, '2016-11-01T11:00:00+02:00'))
        ->withDateTo(DateTime::createFromFormat(DATE_ATOM, '2016-11-01T11:05:00+02:00'));
    /** @var DevicesMeasurement $measurements */
    $measurements = $api->system('ABCDE')->battery('145146')->abbreviation('B_CHARGE_LEVEL')->measurements()
        ->get($measurementsCriteria);

Response

{
  "data": {
    "145146": {
      "B_CHARGE_LEVEL": [
        {
          "timestamp": "2016-11-01T11:00:00+02:00",
          "value": 80.762
        },
        {
          "timestamp": "2016-11-01T11:05:00+02:00",
          "value": 80.862
        }
      ]
    }
  }
}
<?php
    /** @var DevicesMeasurement $measurements */
    echo $measurements['145146']['B_CHARGE_LEVEL'][0]
        ->timestamp->format(DATE_ATOM);// 2016-11-01T11:00:00+02:00
    echo $measurements['145146']['B_CHARGE_LEVEL'][0]->value;// 80.762
    echo $measurements['145146']['B_CHARGE_LEVEL'][1]
        ->timestamp->format(DATE_ATOM);// 2016-11-01T11:05:00+02:00
    echo $measurements['145146']['B_CHARGE_LEVEL'][1]->value;// 80.862

GET systems/<systemKey>/batteries/<deviceId>/abbreviations/<abbreviationId>/measurements

Path parameters

Name Type Description
systemKey required string Identification key of the system
deviceId required string Can contain up to 10 comma delimited battery device IDs
abbreviationId required string Can contain up to 5 comma delimited abbreviation IDs

Query parameters

Name Type Description
from required¹ dateǀdatetime Start date
to required¹ dateǀdatetime End date
resolution optional (minute²ǀintervalǀfifteen-minutesǀthirty-minutesǀhourǀdayǀmonthǀyear) Defaults to interval
includeInterval optional³ integer 0ǀ1 Defaults to 0

¹ The maximum time span between from and to varies depending on the resolution as listed below.

Resolution Maximum time span
minute 1 day
interval 31 days
fifteen-minutes 31 days
thirty-minutes 31 days
hour 31 days
day 60 days
month 1 year
year no limitation

² The option minute resolution is only supported by meteocontrol blue'Log XM / XC (Firmware 2.0 and higher)
³ Only for interval resolution

Response

Property Type Description
timestamp fixed datetime Timestamp
value fixed number Value
interval optional number Interval, in seconds
Bulk

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/batteries/bulk/measurements?from=2016-10-10T11:00:00+02:00&to=2016-10-10T11:15:00+02:00'
<?php
    $measurementsCriteria = (new MeasurementsCriteria())
        ->withDateFrom(DateTime::createFromFormat(DATE_ATOM, '2016-10-10T11:00:00+02:00'))
        ->withDateTo(DateTime::createFromFormat(DATE_ATOM, '2016-10-10T11:15:00+02:00'));
    $bulkData = $api->system('ABCDE')->batteries()->bulk()->measurements()
        ->get($measurementsCriteria);

Response

{
  "2016-10-10T11:00:00+02:00": {
    "145146": {
      "B_CHARGE_LEVEL": 80.762,
      "B_E_EXP": 1347.7619999999999,
      "B_E_IMP": 29.155999999999999,
      "T1": 30.789000000000001
    },
    "145147": {
      "B_CHARGE_LEVEL": 80.772000000000006,
      "B_E_EXP": 1347.7719999999999,
      "B_E_IMP": 29.166,
      "T1": 30.798999999999999
    }
  },
  "2016-10-10T11:05:00+02:00": {
    "145146": {
      "B_CHARGE_LEVEL": 80.781999999999996,
      "B_E_EXP": 1347.7819999999999,
      "B_E_IMP": 29.175999999999998,
      "T1": 30.809000000000001
    },
    "145147": {
      "B_CHARGE_LEVEL": 80.792000000000002,
      "B_E_EXP": 1347.7919999999999,
      "B_E_IMP": 29.186,
      "T1": 30.818999999999999
    }
  },
  "2016-10-10T11:10:00+02:00": {
    "145146": {
      "B_CHARGE_LEVEL": 80.802000000000007,
      "B_E_EXP": 1347.8019999999999,
      "B_E_IMP": 29.196000000000002,
      "T1": 30.829000000000001
    },
    "145147": {
      "B_CHARGE_LEVEL": 80.811999999999998,
      "B_E_EXP": 1347.8119999999999,
      "B_E_IMP": 29.206,
      "T1": 30.838999999999999
    }
  },
  "2016-10-10T11:15:00+02:00": {
    "145146": {
      "B_CHARGE_LEVEL": 80.822000000000003,
      "B_E_EXP": 1347.8219999999999,
      "B_E_IMP": 29.216000000000001,
      "T1": 30.849
    },
    "145147": {
      "B_CHARGE_LEVEL": 80.831999999999994,
      "B_E_EXP": 1347.8320000000001,
      "B_E_IMP": 29.225999999999999,
      "T1": 30.859000000000002
    }
  }
}
<?php
    /** @var MeasurementsBulkReader $bulkData */
    $bulkDataArray = $bulkData->getAsArray();
    echo $bulkDataArray['2016-10-10T11:00:00+02:00']['145146']['B_CHARGE_LEVEL'];// 80.762
    echo $bulkDataArray['2016-10-10T11:00:00+02:00']['145146']['B_E_EXP'];// 1347.762
    echo $bulkDataArray['2016-10-10T11:00:00+02:00']['145147']['B_CHARGE_LEVEL'];// 80.772
    echo $bulkDataArray['2016-10-10T11:00:00+02:00']['145147']['B_E_EXP'];// 1347.772
    echo $bulkDataArray['2016-10-10T11:15:00+02:00']['145146']['B_CHARGE_LEVEL'];// 80.822
    echo $bulkDataArray['2016-10-10T11:15:00+02:00']['145146']['B_E_EXP'];// 1347.822
    echo $bulkDataArray['2016-10-10T11:15:00+02:00']['145147']['B_CHARGE_LEVEL'];// 80.832
    echo $bulkDataArray['2016-10-10T11:15:00+02:00']['145147']['B_E_EXP'];// 1347.832

GET systems/<systemKey>/batteries/bulk/measurements

Path parameters

Name Type Description
systemKey required string Identification key of the system

Query parameters

Name Type Description
from required¹ dateǀdatetime Start date
to required¹ dateǀdatetime End date
format optional jsonǀcsv Export format, defaults to json
resolution optional (minute²ǀintervalǀfifteen-minutesǀthirty-minutesǀhourǀday) Defaults to interval
deviceIds optional string Comma separated deviceIds
abbreviations optional string Comma separated abbreviations
includeInterval optional³ integer 0ǀ1 Defaults to 0

¹ The maximum time span is 24 hours between from and to.
² The option minute resolution is only supported by meteocontrol blue'Log XM / XC (Firmware 2.0 and higher)
³ Only for interval resolution

Options for CSV format

The following query parameters are valid only if format is csv
For response example in CSV format, please check HERE.

Name Type Description
delimiter commaǀsemicolonǀcolonǀtab The delimiter, defaults to comma
lineBreak LFǀCRǀCR/LF The line breaks, defaults to LF
decimalPoint dotǀcomma The decimal point, defaults to dot
emptyPlaceholder text, empty string by default, any text accepted The place holder for empty value
precision integer, accepts from 0 to 4 The decimal precision, defaults to 2

Power plant controllers

Get all power plant controllers

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/power-plant-controllers'
<?php
    /** @var PowerPlantController[] $powerPlantControllers */
    $powerPlantControllers = $api->system('ABCDE')->powerPlantControllers()->get();

Response

{
    "data": [
        {
            "id": "163784",
            "name": "ppc-5bbc370ddb808",
            "uid": "ppc-5bbc370ddb808"
        }
    ]
}
<?php
    /** @var PowerPlantController[] $powerPlantControllers */
    echo $powerPlantControllers[0]->id;// 163784
    echo $powerPlantControllers[0]->name;// ppc-5bbc370ddb808
    echo $powerPlantControllers[0]->uid;// ppc-5bbc370ddb808

GET systems/<systemKey>/power-plant-controllers

Path parameters

Name Type Description
systemKey required string Identification key of the system

Response

Property Type Description
id fixed string Power plant controller device ID
name fixed string Custom name
uid fixed stringǀnull UID

Get single power plant controller

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/power-plant-controllers/163784'
<?php
    /** @var PowerPlantControllerDetail $powerPlantController */
    $powerPlantController = $api->system('ABCDE')->powerPlantController('163784')->get();

Response

{
  "data": {
    "id": "163784",
    "name": "ppc-5bbc370ddb808",
    "uid": "ppc-5bbc370ddb808",
    "address": "ppc-5bbc370ddb808",
    "firmware": null
  }
}
<?php
    /** @var PowerPlantControllerDetail $powerPlantController */
    echo $powerPlantController->id;// 163784
    echo $powerPlantController->name;// ppc-5bbc370ddb808
    echo $powerPlantController->uid;// ppc-5bbc370ddb808
    echo $powerPlantController->address;// ppc-5bbc370ddb808
    echo $powerPlantController->firmware;// null

GET systems/<systemKey>/power-plant-controllers/<deviceId>

Path parameters

Name Type Description
systemKey required string Identification key of the system
deviceId required string Power plant controller device ID

Response

Property Type Description
id fixed string Power plant controller device ID
name fixed string Custom name
uid fixed stringǀnull UID
address fixed stringǀnull Address
firmware fixed stringǀnull Firmware
Abbreviations

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/power-plant-controllers/163784/abbreviations'
<?php
    /** @var string[] $abbreviations */
    $abbreviations = $api->system('ABCDE')->powerPlantController('163784')->abbreviations()->get();

Response

{
  "data": [
    "PPC_P_AC",
    "PPC_P_AC_AVAIL",
    "PPC_P_AC_GRIDOP_MAX",
    "PPC_P_AC_INV",
    "PPC_P_AC_RPC_MAX",
    "PPC_P_SET_GRIDOP_ABS",
    "PPC_P_SET_GRIDOP_REL",
    "PPC_P_SET_REL",
    "PPC_P_SET_RPC_REL",
    "PPC_PF",
    "PPC_PF_SET",
    "PPC_Q_AC",
    "PPC_Q_AC_AVAIL",
    "PPC_Q_SET_ABS",
    "PPC_Q_SET_REL"
  ]
}
<?php
    /** @var string[] $abbreviations */
    echo $abbreviations[0];// PPC_P_AC
    echo $abbreviations[1];// PPC_P_AC_AVAIL
    echo $abbreviations[2];// PPC_P_AC_GRIDOP_MAX
    echo $abbreviations[3];// PPC_P_AC_INV
    echo $abbreviations[4];// PPC_P_AC_RPC_MAX
    echo $abbreviations[5];// PPC_P_SET_GRIDOP_ABS
    echo $abbreviations[6];// PPC_P_SET_GRIDOP_REL
    echo $abbreviations[7];// PPC_P_SET_REL
    echo $abbreviations[8];// PPC_P_SET_RPC_REL
    echo $abbreviations[9];// PPC_PF
    echo $abbreviations[10];// PPC_PF_SET
    echo $abbreviations[11];// PPC_Q_AC
    echo $abbreviations[12];// PPC_Q_AC_AVAIL
    echo $abbreviations[13];// PPC_Q_SET_ABS
    echo $abbreviations[14];// PPC_Q_SET_REL

GET systems/<systemKey>/power-plant-controllers/<deviceId>/abbreviations

Path parameters

Name Type Description
systemKey required string Identification key of the system
deviceId required string Power plant controller device ID
Get single abbreviation

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/power-plant-controllers/145146/abbreviations/PPC_P_AC'
<?php
    /** @var Abbreviation $abbreviation */
    $abbreviation = $api->system('ABCDE')->powerPlantController('145146')->abbreviation('PPC_P_AC')->get();

Response

{
  "data": {
    "aggregation": "AVG",
    "precision": 3,
    "description": "Actual active power",
    "unit": "W"
  }
}
<?php
    /** @var Abbreviation $abbreviation */
    echo $abbreviation->aggregation;// AVG
    echo $abbreviation->precision;// 3
    echo $abbreviation->description;// Actual active power
    echo $abbreviation->unit;// W

GET systems/<systemKey>/power-plant-controllers/<deviceId>/abbreviations/<abbreviationId>

Returns an information object of an abbreviation.

Path parameters

Name Type Description
systemKey required string Identification key of the system
deviceId required string Power plant controller device ID
abbreviationId required string Abbreviation ID

Response

Information object

Property Type Description
aggregation fixed (SUMǀAVGǀMAX) Aggregation method when requesting other resolutions than interval
precision fixed integer Number of decimal places
description fixed string Description
unit fixed string Unit
Measurements

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/power-plant-controllers/163784/abbreviations/PPC_P_AC/measurements?from=2016-10-29T11:00:00+02:00&to=2016-10-29T11:05:00+02:00'
<?php
    $measurementsCriteria = (new MeasurementsCriteria())
        ->withDateFrom(DateTime::createFromFormat(DATE_ATOM, '2016-10-29T11:00:00+02:00'))
        ->withDateTo(DateTime::createFromFormat(DATE_ATOM, '2016-10-29T11:05:00+02:00'));
    /** @var DevicesMeasurement $measurements */
    $measurements = $api->system('ABCDE')->powerPlantController('163784')->abbreviation('PPC_P_AC')->measurements()
        ->get($measurementsCriteria);

Response

{
  "data": {
    "163784": {
      "PPC_P_AC": [
        {
          "timestamp": "2016-10-29T11:00:00+02:00",
          "value": 41.73
        },
        {
          "timestamp": "2016-10-29T11:05:00+02:00",
          "value": 60.34
        }
      ]
    }
  }
}
<?php
    /** @var DevicesMeasurement $measurements */
    echo $measurements['163784']['PPC_P_AC'][0]
        ->timestamp->format(DATE_ATOM);// 2016-10-29T11:00:00+02:00
    echo $measurements['163784']['PPC_P_AC'][0]->value;// 41.73
    echo $measurements['163784']['PPC_P_AC'][1]
        ->timestamp->format(DATE_ATOM);// 2016-10-29T11:05:00+02:00
    echo $measurements['163784']['PPC_P_AC'][1]->value;// 60.34

GET systems/<systemKey>/power-plant-controllers/<deviceId>/abbreviations/<abbreviationId>/measurements

Path parameters

Name Type Description
systemKey required string Identification key of the system
deviceId required string Can contain up to 10 comma delimited power plant controller device IDs
abbreviationId required string Can contain up to 5 comma delimited abbreviation IDs

Query parameters

Name Type Description
from required¹ dateǀdatetime Start date
to required¹ dateǀdatetime End date
resolution optional (minute²ǀintervalǀfifteen-minutesǀthirty-minutesǀhourǀdayǀmonthǀyear) Defaults to interval
includeInterval optional³ integer 0ǀ1 Defaults to 0

¹ The maximum time span between from and to varies depending on the resolution as listed below.

Resolution Maximum time span
minute 1 day
interval 31 days
fifteen-minutes 31 days
thirty-minutes 31 days
hour 31 days
day 60 days
month 1 year
year no limitation

² The option minute resolution is only supported by meteocontrol blue'Log XM / XC (Firmware 2.0 and higher)
³ Only for interval resolution

Response

Property Type Description
timestamp fixed datetime Timestamp
value fixed number Value
Bulk

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/power-plant-controllers/bulk/measurements?from=2016-10-29T18:00:00+02:00&to=2016-10-29T18:15:00+02:00'
<?php
    $measurementsCriteria = (new MeasurementsCriteria())
        ->withDateFrom(DateTime::createFromFormat(DATE_ATOM, '2016-10-29T18:00:00+02:00'))
        ->withDateTo(DateTime::createFromFormat(DATE_ATOM, '2016-10-29T18:15:00+02:00'));
    $bulkData = $api->system('ABCDE')->powerPlantControllers()->bulk()->measurements()
        ->get($measurementsCriteria);

Response

{
  "2016-10-29T18:00:00+02:00": {
    "163784": {
      "PPC_P_AC_INV": 52.350000000000001,
      "PPC_P_AC_AVAIL": 79.859999999999999,
      "PPC_Q_AC_AVAIL": 13.5,
      "PPC_P_SET_GRIDOP_REL": 77.599999999999994,
      "PPC_P_SET_MANUAL_REL":null,
      "PPC_P_SET_GRIDOP_ABS": 92.299999999999997,
      "PPC_P_SET_RPC_REL": 38.399999999999999,
      "PPC_P_SET_STATIC_REL": null,
      "PPC_P_SET_REL": 52.899999999999999,
      "PPC_PF_SET": null,
      "PPC_Q_SET_ABS": 83.599999999999994,
      "PPC_P_AC_GRIDOP_MAX": 55.350000000000001,
      "PPC_P_AC_RPC_MAX": 88.170000000000002,
      "PPC_P_AC": 70.650000000000006,
      "PPC_Q_AC": 26.73,
      "PPC_PF": 4.2000000000000002,
      "PPC_Q_SET_REL": 37
    }
  },
  "2016-10-29T18:05:00+02:00": {
    "163784": {
      "PPC_P_AC_INV": 72.200000000000003,
      "PPC_P_AC_AVAIL": 37.450000000000003,
      "PPC_Q_AC_AVAIL": 32.299999999999997,
      "PPC_P_SET_GRIDOP_REL": 52.299999999999997,
      "PPC_P_SET_MANUAL_REL": null,
      "PPC_P_SET_GRIDOP_ABS": 85.299999999999997,
      "PPC_P_SET_RPC_REL": 1.3999999999999999,
      "PPC_P_SET_STATIC_REL":null,
      "PPC_P_SET_REL": 77.400000000000006,
      "PPC_PF_SET": null,
      "PPC_Q_SET_ABS": 85.900000000000006,
      "PPC_P_AC_GRIDOP_MAX": 42.770000000000003,
      "PPC_P_AC_RPC_MAX": 35.140000000000001,
      "PPC_P_AC": 42.43,
      "PPC_Q_AC": 91.590000000000003,
      "PPC_PF": 8.3000000000000007,
      "PPC_Q_SET_REL": 39.100000000000001
    }
  },
  "2016-10-29T18:10:00+02:00": {
    "163784": {
      "PPC_P_AC_INV": 28.780000000000001,
      "PPC_P_AC_AVAIL": 23.989999999999998,
      "PPC_Q_AC_AVAIL": 52.100000000000001,
      "PPC_P_SET_GRIDOP_REL": 50.299999999999997,
      "PPC_P_SET_MANUAL_REL": null,
      "PPC_P_SET_GRIDOP_ABS": 91.5,
      "PPC_P_SET_RPC_REL": 56.700000000000003,
      "PPC_P_SET_STATIC_REL": null,
      "PPC_P_SET_REL": 4.2000000000000002,
      "PPC_PF_SET": null,
      "PPC_Q_SET_ABS": 33.600000000000001,
      "PPC_P_AC_GRIDOP_MAX": 62.939999999999998,
      "PPC_P_AC_RPC_MAX": 60.119999999999997,
      "PPC_P_AC": 12.720000000000001,
      "PPC_Q_AC": 57.43,
      "PPC_PF": 1.3999999999999999,
      "PPC_Q_SET_REL": 22.100000000000001
    }
  },
  "2016-10-29T18:15:00+02:00": {
    "163784": {
      "PPC_P_AC_INV": 17.059999999999999,
      "PPC_P_AC_AVAIL": 47.579999999999998,
      "PPC_Q_AC_AVAIL": 53.100000000000001,
      "PPC_P_SET_GRIDOP_REL": 13.6,
      "PPC_P_SET_MANUAL_REL": null,
      "PPC_P_SET_GRIDOP_ABS": 90,
      "PPC_P_SET_RPC_REL": 85.400000000000006,
      "PPC_P_SET_STATIC_REL": null,
      "PPC_P_SET_REL": 3.2999999999999998,
      "PPC_PF_SET": 1.2,
      "PPC_Q_SET_ABS": 65.400000000000006,
      "PPC_P_AC_GRIDOP_MAX": 23.960000000000001,
      "PPC_P_AC_RPC_MAX": 76.609999999999999,
      "PPC_P_AC": 62.740000000000002,
      "PPC_Q_AC": 99.480000000000004,
      "PPC_PF": 7.2000000000000002,
      "PPC_Q_SET_REL": null
    }
  }
}
<?php
    /** @var MeasurementsBulkReader $bulkData */
    $bulkDataArray = $bulkData->getAsArray();
    echo $bulkDataArray['2016-10-29T18:00:00+02:00']['163784']['PPC_P_AC_INV'];// 52.350000000000001
    echo $bulkDataArray['2016-10-29T18:00:00+02:00']['163784']['PPC_Q_SET_ABS'];// 83.599999999999994
    echo $bulkDataArray['2016-10-29T18:10:00+02:00']['163784']['PPC_P_AC_INV'];// 28.780000000000001
    echo $bulkDataArray['2016-10-29T18:10:00+02:00']['163784']['PPC_Q_SET_ABS'];// 33.600000000000001

GET systems/<systemKey>/power-plant-controllers/bulk/measurements

Path parameters

Name Type Description
systemKey required string Identification key of the system

Query parameters

Name Type Description
from required¹ dateǀdatetime Start date
to required¹ dateǀdatetime End date
format optional jsonǀcsv Export format, defaults to json
resolution optional (minute²ǀintervalǀfifteen-minutesǀthirty-minutesǀhourǀday) Defaults to interval
deviceIds optional string Comma separated deviceIds
abbreviations optional string Comma separated abbreviations
includeInterval optional³ integer 0ǀ1 Defaults to 0

¹ The maximum time span is 24 hours between from and to.
² The option minute resolution is only supported by meteocontrol blue'Log XM / XC (Firmware 2.0 and higher)
³ Only for interval resolution

Options for CSV format

The following query parameters are valid only if format is csv
For response example in CSV format, please check HERE.

Name Type Description
delimiter commaǀsemicolonǀcolonǀtab The delimiter, defaults to comma
lineBreak LFǀCRǀCR/LF The line breaks, defaults to LF
decimalPoint dotǀcomma The decimal point, defaults to dot
emptyPlaceholder text, empty string by default, any text accepted The place holder for empty value
precision integer, accepts from 0 to 4 The decimal precision, defaults to 2

Trackers

Get all trackers

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/trackers'
<?php
    /** @var Tracker[] $trackers */
    $trackers = $api->system('ABCDE')->trackers()->get();

Response

{
  "data": [
    {
      "id": "30001",
      "name": "Tracker 1",
      "uid": "1"
    },
    {
      "id": "30002",
      "name": "Tracker 2",
      "uid": "2"
    }
  ]
}
<?php
    /** @var Tracker[] $trackers */
    echo $trackers[0]->id;// 30001
    echo $trackers[0]->name;// Tracker 1
    echo $trackers[0]->uid;// 1
    echo $trackers[1]->id;// 30002
    echo $trackers[1]->name;// Tracker 2
    echo $trackers[1]->uid;// 2

GET systems/<systemKey>/trackers

Path parameters

Name Type Description
systemKey required string Identification key of the system

Response

Property Type Description
id fixed string Tracker device ID
name fixed string Custom name
uid fixed stringǀnull UID

Get single tracker

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/trackers/30001'
<?php
    /** @var TrackerDetail $tracker */
    $tracker = $api->system('ABCDE')->tracker('30001')->get();

Response

{
  "data": {
    "id": "30001",
    "name": "Tracker 1",
    "uid": "1",
    "address": "1",
    "vendor": "IDEEMATEC",
    "model": "HORIZON 2",
    "firmware": "1.0"
  }
}
<?php
    /** @var TrackerDetail $tracker */
    echo $tracker->id;// 30001
    echo $tracker->name;// Tracker 1
    echo $tracker->uid;// 1
    echo $tracker->address;// 1
    echo $tracker->vendor;// IDEEMATEC
    echo $tracker->model;// HORIZON 2
    echo $tracker->firmware;// 1.0

GET systems/<systemKey>/trackers/<deviceId>

Path parameters

Name Type Description
systemKey required string Identification key of the system
deviceId required string Tracker device ID

Response

Property Type Description
id fixed string Tracker device ID
name fixed string Custom name
uid fixed stringǀnull UID
address fixed stringǀnull Address
vendor fixed stringǀnull Vendor
model fixed stringǀnull Model
firmware fixed stringǀnull Firmware
Abbreviations

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/trackers/30001/abbreviations'
<?php
    /** @var string[] $abbreviations */
    $abbreviations = $api->system('ABCDE')->tracker('30001')->abbreviations()->get();

Response

{
  "data": [
    "ELEVATION",
    "ELEVATION_TARGET",
    "QS_CI",
    "QS_RX",
    "QS_TX",
    "STATE1"
  ]
}
<?php
    /** @var string[] $abbreviations */
    echo $abbreviations[0];// ELEVATION
    echo $abbreviations[1];// ELEVATION_TARGET
    echo $abbreviations[2];// QS_CI
    echo $abbreviations[3];// QS_RX
    echo $abbreviations[4];// QS_TX
    echo $abbreviations[5];// STATE1

GET systems/<systemKey>/trackers/<deviceId>/abbreviations

Path parameters

Name Type Description
systemKey required string Identification key of the system
deviceId required string Tracker device ID
Get single abbreviation

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/trackers/30001/abbreviations/ELEVATION'
<?php
    /** @var Abbreviation $abbreviation */
    $abbreviation = $api->system('ABCDE')->tracker('30001')->abbreviation('ELEVATION')->get();

Response

{
  "data": {
    "aggregation": "AVG",
    "precision": 0,
    "description": "Tilt, actual value",
    "unit": "°"
  }
}
<?php
    /** @var Abbreviation $abbreviation */
    echo $abbreviation->aggregation;// AVG
    echo $abbreviation->precision;// 0
    echo $abbreviation->description;// Tilt, actual value
    echo $abbreviation->unit;// °

GET systems/<systemKey>/trackers/<deviceId>/abbreviations/<abbreviationId>

Returns an information object of an abbreviation.

Path parameters

Name Type Description
systemKey required string Identification key of the system
deviceId required string Tracker device ID
abbreviationId required string Abbreviation ID

Response

Information object

Property Type Description
aggregation fixed (SUMǀAVGǀMAX) Aggregation method when requesting other resolutions than interval
precision fixed integer Number of decimal places
description fixed string Description
unit fixed string Unit
Measurements

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/trackers/30001/abbreviations/ELEVATION/measurements?from=2016-11-27T09:00:00+01:00&to=2016-11-27T10:00:00+01:00'
<?php
    $measurementsCriteria = (new MeasurementsCriteria())
        ->withDateFrom(DateTime::createFromFormat(DATE_ATOM, '2016-11-27T09:00:00+01:00'))
        ->withDateTo(DateTime::createFromFormat(DATE_ATOM, '2016-11-27T10:00:00+01:00'));
    /** @var DevicesMeasurement $measurements */
    $measurements = $api->system('ABCDE')->tracker('30001')->abbreviation('ELEVATION')->measurements()
        ->get($measurementsCriteria);

Response

{
  "data": {
    "30001": {
      "ELEVATION": [
        {
          "timestamp": "2016-11-27T09:10:00+01:00",
          "value": 180.6
        }
      ]
    }
  }
}
<?php
    /** @var DevicesMeasurement $measurements */
    echo $measurements['30001']['ELEVATION'][0]
        ->timestamp->format(DATE_ATOM);// 2016-11-27T09:10:00+01:00
    echo $measurements['30001']['ELEVATION'][0]->value;// 180.6

GET systems/<systemKey>/trackers/<deviceId>/abbreviations/<abbreviationId>/measurements

Path parameters

Name Type Description
systemKey required string Identification key of the system
deviceId required string Can contain up to 10 comma delimited tracker device IDs
abbreviationId required string Can contain up to 5 comma delimited abbreviation IDs

Query parameters

Name Type Description
from required¹ dateǀdatetime Start date
to required¹ dateǀdatetime End date
resolution optional (minute²ǀintervalǀfifteen-minutesǀthirty-minutesǀhourǀdayǀmonthǀyear) Defaults to interval
includeInterval optional³ integer 0ǀ1 Defaults to 0

¹ The maximum time span between from and to varies depending on the resolution as listed below.

Resolution Maximum time span
minute 1 day
interval 31 days
fifteen-minutes 31 days
thirty-minutes 31 days
hour 31 days
day 60 days
month 1 year
year no limitation

² The option minute resolution is only supported by meteocontrol blue'Log XM / XC (Firmware 2.0 and higher)
³ Only for interval resolution

Response

Property Type Description
timestamp fixed datetime Timestamp
value fixed number Value
Bulk

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/trackers/bulk/measurements?from=2016-11-27T09:00:00+01:00&to=2016-11-27T10:00:00+01:00'
<?php
    $measurementsCriteria = (new MeasurementsCriteria())
        ->withDateFrom(DateTime::createFromFormat(DATE_ATOM, '2016-11-27T09:00:00+01:00'))
        ->withDateTo(DateTime::createFromFormat(DATE_ATOM, '2016-11-27T10:00:00+01:00'));
    $bulkData = $api->system('ABCDE')->trackers()->bulk()->measurements()
        ->get($measurementsCriteria);

Response

{
  "2016-11-27T09:10:00+01:00": {
    "30001": {
      "ELEVATION": 180.6,
      "ELEVATION_TARGET": 192,
      "QS_CI": 100,
      "QS_RX": 40,
      "QS_TX": 40,
      "STATE1": 0
    },
    "30002": {
      "ELEVATION": 180.6,
      "ELEVATION_TARGET": 192,
      "QS_CI": 100,
      "QS_RX": 40,
      "QS_TX": 40,
      "STATE1": 0
    }
  }
}
<?php
    /** @var array $bulkDataArray */
    $bulkDataArray = $bulkData->getAsArray();
    echo $bulkDataArray['2016-11-27T09:10:00+01:00']['30001']['ELEVATION'];// 180.6
    echo $bulkDataArray['2016-11-27T09:10:00+01:00']['30001']['ELEVATION_TARGET'];// 192
    echo $bulkDataArray['2016-11-27T09:10:00+01:00']['30001']['QS_CI'];// 100
    echo $bulkDataArray['2016-11-27T09:10:00+01:00']['30001']['QS_RX'];// 40
    echo $bulkDataArray['2016-11-27T09:10:00+01:00']['30001']['QS_TX'];// 40
    echo $bulkDataArray['2016-11-27T09:10:00+01:00']['30001']['STATE1'];// 0
    echo $bulkDataArray['2016-11-27T09:10:00+01:00']['30002']['ELEVATION'];// 180.6
    echo $bulkDataArray['2016-11-27T09:10:00+01:00']['30002']['ELEVATION_TARGET'];// 192
    echo $bulkDataArray['2016-11-27T09:10:00+01:00']['30002']['QS_CI'];// 100
    echo $bulkDataArray['2016-11-27T09:10:00+01:00']['30002']['QS_RX'];// 40
    echo $bulkDataArray['2016-11-27T09:10:00+01:00']['30002']['QS_TX'];// 40
    echo $bulkDataArray['2016-11-27T09:10:00+01:00']['30002']['STATE1'];// 0

GET systems/<systemKey>/trackers/bulk/measurements

Path parameters

Name Type Description
systemKey required string Identification key of the system

Query parameters

Name Type Description
from required¹ dateǀdatetime Start date
to required¹ dateǀdatetime End date
format optional jsonǀcsv Export format, defaults to json
resolution optional (minute²ǀintervalǀfifteen-minutesǀthirty-minutesǀhourǀday) Defaults to interval
deviceIds optional string Comma separated deviceIds
abbreviations optional string Comma separated abbreviations
includeInterval optional³ integer 0ǀ1 Defaults to 0

¹ The maximum time span is 24 hours between from and to.
² The option minute resolution is only supported by meteocontrol blue'Log XM / XC (Firmware 2.0 and higher)
³ Only for interval resolution

Options for CSV format

The following query parameters are valid only if format is csv
For response example in CSV format, please check HERE.

Name Type Description
delimiter commaǀsemicolonǀcolonǀtab The delimiter, defaults to comma
lineBreak LFǀCRǀCR/LF The line breaks, defaults to LF
decimalPoint dotǀcomma The decimal point, defaults to dot
emptyPlaceholder text, empty string by default, any text accepted The place holder for empty value
precision integer, accepts from 0 to 4 The decimal precision, defaults to 2

KPI targets

Target PR
Get monthly target PR values (%)

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/kpi-targets/pr'
<?php
    /** @var float[] $targetPrValues */
    $targetPrValues = $api->system('ABCDE')->kpiTargets()->pr()->get();

Response

{
  "data": [
    85,
    85.3,
    85,
    85,
    90,
    90,
    90,
    90,
    90,
    90,
    85,
    85
  ]
}
<?php
    /** @var float[] $targetPrValues */
    echo $targetPrValues[0];// 85
    echo $targetPrValues[1];// 85.3

GET systems/<systemKey>/kpi-targets/pr

Path parameters

Name Type Description
systemKey required string Identification key of the system

Response

Status code Description
200 Returns a list of monthly target PR values
403 The user is not allowed to get the target PR
Update monthly target PR values (%)

Request

curl -i -X PUT \
   -H 'Content-Type:application/json' \
   -d '[85, 85.3, 86, 86.2, 87.2, 87.5, 90, 91, 84, 83.9, 83, 84]' \
'https://api.meteocontrol.de/v2/systems/ABCDE/kpi-targets/pr'
<?php
    $targetPrValues = [85, 85.3, 86, 86.2, 87.2, 87.5, 90, 91, 84, 83.9, 83, 84];
    $api->system('ABCDE')->kpiTargets()->pr()->set($targetPrValues);

Response



PUT systems/<systemKey>/kpi-targets/pr

Path parameters

Name Type Description
systemKey required string Identification key of the system

Request headers

Name Type Description
Content-Type required application/json

Request body (JSON)

An array of 12 number elements, whose values are between 0.0 and 100.0

Response

Status code Description
204 The target PR has been successfully updated
400 The input target PR values are not valid
403 The user is not allowed to update the target PR
Delete monthly target PR values (%)

The default target PR values will be used after custom values are successfully deleted.

Request

curl -i -X DELETE 'https://api.meteocontrol.de/v2/systems/ABCDE/kpi-targets/pr'
<?php
    $api->system('ABCDE')->kpiTargets()->pr()->delete();

Response



DELETE systems/<systemKey>/kpi-targets/pr

Path parameters

Name Type Description
systemKey required string Identification key of the system

Response

Status code Description
204 The target PR has been successfully deleted
403 The user is not allowed to delete the target PR
Target availability
Get monthly target availability values (%)

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/kpi-targets/availability'
<?php
    /** @var float[] $targetAvailabilityValues */
    $targetAvailabilityValues = $api->system('ABCDE')->kpiTargets()->availability()->get();

Response

{
  "data": [
    99,
    99.4,
    99.1,
    99.6,
    99,
    99,
    99,
    99,
    99,
    99,
    99.3,
    99.4
  ]
}
<?php
    /** @var float[] $targetAvailabilityValues */
    echo $targetAvailabilityValues[0];// 99
    echo $targetAvailabilityValues[1];// 99.4

GET systems/<systemKey>/kpi-targets/availability

Path parameters

Name Type Description
systemKey required string Identification key of the system

Response

Status code Description
200 Returns a list of monthly target availability values
403 The user is not allowed to get the target availability
Update monthly target availability values (%)

Request

curl -i -X PUT \
   -H 'Content-Type:application/json' \
   -d '[85, 85.1, 85.3, 85.5, 90.4, 90.2, 90, 91, 93.4, 95, 95.7, 95.8]' \
'https://api.meteocontrol.de/v2/systems/ABCDE/kpi-targets/availability'
<?php
    $targetAvailabilityValues = [85, 85.1, 85.3, 85.5, 90.4, 90.2, 90, 91, 93.4, 95, 95.7, 95.8];
    $api->system('ABCDE')->kpiTargets()->availability()->set($targetAvailabilityValues);

Response



PUT systems/<systemKey>/kpi-targets/availability

Path parameters

Name Type Description
systemKey required string Identification key of the system

Request headers

Name Type Description
Content-Type required application/json

Request body (JSON)

An array of 12 number elements, whose values are between 0.0 and 100.0

Response

Status code Description
204 The target availability has been successfully updated
400 The input target availability values are not valid
403 The user is not allowed to update the target availability
Delete monthly target availability values (%)

The default target availability values will be used after custom values are successfully deleted.

Request

curl -i -X DELETE 'https://api.meteocontrol.de/v2/systems/ABCDE/kpi-targets/availability'
<?php
    $api->system('ABCDE')->kpiTargets()->availability()->delete();

Response



DELETE systems/<systemKey>/kpi-targets/availability

Path parameters

Name Type Description
systemKey required string Identification key of the system

Response

Status code Description
204 The target availability has been successfully deleted
403 The user is not allowed to delete the target availability

Responsibilities

Get information of responsibilities

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/responsibilities'
<?php
    /** @var Responsibilities $responsibilities */
    $responsibilities = $api->system('ABCDE')->responsibilities()->get();

Response

{
  "data": {
    "alarmContact": {
      "address": {
        "city": "City",
        "country": "Country",
        "postalCode": "12345",
        "street": "Street 123",
        "streetAddition": "2F-1"
      },
      "cellphone": "0987654321",
      "company": "Company",
      "email": "example@example.com",
      "fax": "0234567890",
      "firstName": "First Name",
      "id": "123",
      "language": "en",
      "lastName": "Last Name",
      "telephone": "0234567891",
      "timezone": {
        "name": "Europe/Berlin",
        "utcOffset": "+02:00"
      },
      "hasVcom": true,
      "title": "Mr.",
      "username": "user.name"
    },
    "electrician": {
      "address": {
        "city": "City",
        "country": "Country",
        "postalCode": "12345",
        "street": "Street 123",
        "streetAddition": "2F-1"
      },
      "cellphone": "0987654321",
      "company": "Company",
      "email": "example@example.com",
      "fax": "0234567890",
      "firstName": "First Name",
      "id": "123",
      "language": "en",
      "lastName": "Last Name",
      "telephone": "0234567891",
      "timezone": {
        "name": "Europe/Berlin",
        "utcOffset": "+02:00"
      },
      "hasVcom": true,
      "title": "Mr.",
      "username": "user.name"
    },
    "invoiceRecipient": {
      "address": {
        "city": "City",
        "country": "Country",
        "postalCode": "12345",
        "street": "Street 123",
        "streetAddition": "2F-1"
      },
      "cellphone": "0987654321",
      "company": "Company",
      "email": "example@example.com",
      "fax": "0234567890",
      "firstName": "First Name",
      "id": "123",
      "language": "en",
      "lastName": "Last Name",
      "telephone": "0234567891",
      "timezone": {
        "name": "Europe/Berlin",
        "utcOffset": "+02:00"
      },
      "hasVcom": true,
      "title": "Mr.",
      "username": "user.name"
    },
    "operator": {
      "address": {
        "city": "City",
        "country": "Country",
        "postalCode": "12345",
        "street": "Street 123",
        "streetAddition": "2F-1"
      },
      "cellphone": "0987654321",
      "company": "Company",
      "email": "example@example.com",
      "fax": "0234567890",
      "firstName": "First Name",
      "id": "123",
      "language": "en",
      "lastName": "Last Name",
      "telephone": "0234567891",
      "timezone": {
        "name": "Europe/Berlin",
        "utcOffset": "+02:00"
      },
      "hasVcom": true,
      "title": "Mr.",
      "username": "user.name"
    },
    "owner": {
      "address": {
        "city": "City",
        "country": "Country",
        "postalCode": "12345",
        "street": "Street 123",
        "streetAddition": "2F-1"
      },
      "cellphone": "0987654321",
      "company": "Company",
      "email": "example@example.com",
      "fax": "0234567890",
      "firstName": "First Name",
      "id": "123",
      "language": "en",
      "lastName": "Last Name",
      "telephone": "0234567891",
      "timezone": {
        "name": "Europe/Berlin",
        "utcOffset": "+02:00"
      },
      "hasVcom": true,
      "title": "Mr.",
      "username": "user.name"
    }
  }
}
<?php
    /** @var Responsibilities $responsibilities */
    echo $responsibilities->owner->address->city; // 'City'
    echo $responsibilities->owner->address->country; // 'Country'
    echo $responsibilities->owner->address->postalCode; // '12345'
    echo $responsibilities->owner->address->street; // 'Street 123'
    echo $responsibilities->owner->address->streetAddition; // '2F-1'
    echo $responsibilities->owner->timezone->name; // 'Europe/Berlin'
    echo $responsibilities->owner->timezone->utcOffset; // '+02:00'
    echo $responsibilities->owner->id; // "123"
    echo $responsibilities->owner->title; // 'Mr.'
    echo $responsibilities->owner->firstName; // 'First Name'
    echo $responsibilities->owner->lastName; // 'Last Name'
    echo $responsibilities->owner->username; // 'user.name'
    echo $responsibilities->owner->email; // 'example@example.com'
    echo $responsibilities->owner->language; // 'en'
    echo $responsibilities->owner->company; // 'Company'
    echo $responsibilities->owner->fax; // '0234567890'
    echo $responsibilities->owner->telephone; // '0234567891'
    echo $responsibilities->owner->cellphone; // '0987654321'
    echo $responsibilities->owner->hasVcom; // true

    echo $responsibilities->operator->address->city; // 'City'
    echo $responsibilities->operator->address->country; // 'Country'
    echo $responsibilities->operator->address->postalCode; // '12345'
    echo $responsibilities->operator->address->street; // 'Street 123'
    echo $responsibilities->operator->address->streetAddition; // '2F-1'
    echo $responsibilities->operator->timezone->name; // 'Europe/Berlin'
    echo $responsibilities->operator->timezone->utcOffset; // '+02:00'
    echo $responsibilities->operator->id; // "123"
    echo $responsibilities->operator->title; // 'Mr.'
    echo $responsibilities->operator->firstName; // 'First Name'
    echo $responsibilities->operator->lastName; // 'Last Name'
    echo $responsibilities->operator->username; // 'user.name'
    echo $responsibilities->operator->email; // 'example@example.com'
    echo $responsibilities->operator->language; // 'en'
    echo $responsibilities->operator->company; // 'Company'
    echo $responsibilities->operator->fax; // '0234567890'
    echo $responsibilities->operator->telephone; // '0234567891'
    echo $responsibilities->operator->cellphone; // '0987654321'
    echo $responsibilities->operator->hasVcom; // true

    echo $responsibilities->electrician->address->city; // 'City'
    echo $responsibilities->electrician->address->country; // 'Country'
    echo $responsibilities->electrician->address->postalCode; // '12345'
    echo $responsibilities->electrician->address->street; // 'Street 123'
    echo $responsibilities->electrician->address->streetAddition; // '2F-1'
    echo $responsibilities->electrician->timezone->name; // 'Europe/Berlin'
    echo $responsibilities->electrician->timezone->utcOffset; // '+02:00'
    echo $responsibilities->electrician->id; // "123"
    echo $responsibilities->electrician->title; // 'Mr.'
    echo $responsibilities->electrician->firstName; // 'First Name'
    echo $responsibilities->electrician->lastName; // 'Last Name'
    echo $responsibilities->electrician->username; // 'user.name'
    echo $responsibilities->electrician->email; // 'example@example.com'
    echo $responsibilities->electrician->language; // 'en'
    echo $responsibilities->electrician->company; // 'Company'
    echo $responsibilities->electrician->fax; // '0234567890'
    echo $responsibilities->electrician->telephone; // '0234567891'
    echo $responsibilities->electrician->cellphone; // '0987654321'
    echo $responsibilities->electrician->hasVcom; // true

    echo $responsibilities->invoiceRecipient->address->city; // 'City'
    echo $responsibilities->invoiceRecipient->address->country; // 'Country'
    echo $responsibilities->invoiceRecipient->address->postalCode; // '12345'
    echo $responsibilities->invoiceRecipient->address->street; // 'Street 123'
    echo $responsibilities->invoiceRecipient->address->streetAddition; // '2F-1'
    echo $responsibilities->invoiceRecipient->timezone->name; // 'Europe/Berlin'
    echo $responsibilities->invoiceRecipient->timezone->utcOffset; // '+02:00'
    echo $responsibilities->invoiceRecipient->id; // "123"
    echo $responsibilities->invoiceRecipient->title; // 'Mr.'
    echo $responsibilities->invoiceRecipient->firstName; // 'First Name'
    echo $responsibilities->invoiceRecipient->lastName; // 'Last Name'
    echo $responsibilities->invoiceRecipient->username; // 'user.name'
    echo $responsibilities->invoiceRecipient->email; // 'example@example.com'
    echo $responsibilities->invoiceRecipient->language; // 'en'
    echo $responsibilities->invoiceRecipient->company; // 'Company'
    echo $responsibilities->invoiceRecipient->fax; // '0234567890'
    echo $responsibilities->invoiceRecipient->telephone; // '0234567891'
    echo $responsibilities->invoiceRecipient->cellphone; // '0987654321'
    echo $responsibilities->invoiceRecipient->hasVcom; // true

    echo $responsibilities->alarmContact->address->city; // 'City'
    echo $responsibilities->alarmContact->address->country; // 'Country'
    echo $responsibilities->alarmContact->address->postalCode; // '12345'
    echo $responsibilities->alarmContact->address->street; // 'Street 123'
    echo $responsibilities->alarmContact->address->streetAddition; // '2F-1'
    echo $responsibilities->alarmContact->timezone->name; // 'Europe/Berlin'
    echo $responsibilities->alarmContact->timezone->utcOffset; // '+02:00'
    echo $responsibilities->alarmContact->id; // "123"
    echo $responsibilities->alarmContact->title; // 'Mr.'
    echo $responsibilities->alarmContact->firstName; // 'First Name'
    echo $responsibilities->alarmContact->lastName; // 'Last Name'
    echo $responsibilities->alarmContact->username; // 'user.name'
    echo $responsibilities->alarmContact->email; // 'example@example.com'
    echo $responsibilities->alarmContact->language; // 'en'
    echo $responsibilities->alarmContact->company; // 'Company'
    echo $responsibilities->alarmContact->fax; // '0234567890'
    echo $responsibilities->alarmContact->telephone; // '0234567891'
    echo $responsibilities->alarmContact->cellphone; // '0987654321'
    echo $responsibilities->alarmContact->hasVcom; // true

GET systems/<systemKey>/responsibilities

Path parameters

Name Type Description
systemKey required string Identification key of the system

Users

Get user list

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/users'
<?php
    /** @var User[] $users */
    $users = $api->system('ABCDE')->users()->get();

Response

{
  "data": [
    {
      "id": "123",
      "username": "user1.name",
      "firstName": "First Name",
      "lastName": "Last Name"
    },
    {
      "id": "456",
      "username": "user2.name",
      "firstName": "First Name",
      "lastName": "Last Name"
    }
  ]
}
<?php
    /** @var User[] $users */
    echo $users[0]->id;// "123"
    echo $users[0]->username;// "user1.name"
    echo $users[0]->firstName;// "First Name"
    echo $users[0]->lastName;// "Last Name"

GET systems/<systemKey>/users

Path parameters

Name Type Description
systemKey required string Identification key of the system

Response

Property Type Description
id fixed string User ID
username fixed string Username
firstName fixed string First name
lastName fixed string Last name

Get single user information by its ID

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/users/123'
<?php
    /** @var UserDetail $userDetail */
    $userDetail = $api->system('ABCDE')->user(123)->get();

Response

{
  "data": {
    "id": "123",
    "title": "Mrs.",
    "firstName": "First Name",
    "lastName": "Last Name",
    "username": "user1.name",
    "email": "example@example.com",
    "language": "en",
    "company": "Company",
    "fax": "0234567890",
    "telephone": "0234567891",
    "cellphone": "0987654321",
    "address": {
      "city": "City",
      "country": "Country",
      "postalCode": "12345",
      "street": "Street 123",
      "streetAddition": "2F-1"
    },
    "timezone": {
      "name": "Europe/Berlin",
      "utcOffset": "+02:00"
    },
    "hasVcom": true
  }
}
<?php
    /** @var UserDetail $userDetail */
    echo $userDetail->id;//"123"
    echo $userDetail->title;//"Mrs."
    echo $userDetail->firstName;//"First Name"
    echo $userDetail->lastName;//"Last Name"
    echo $userDetail->username;//"user1.name"
    echo $userDetail->email;//"example@example.com"
    echo $userDetail->language;//"en"
    echo $userDetail->company;//"Company"
    echo $userDetail->fax;//"0234567890"
    echo $userDetail->telephone;//"0234567891"
    echo $userDetail->cellphone;//"0987654321"
    echo $userDetail->address->city;//"City"
    echo $userDetail->address->country;//"Country"
    echo $userDetail->address->street;//"Street 123"
    echo $userDetail->address->streetAddition;//"2F-1"
    echo $userDetail->address->postalCode;//"12345"
    echo $userDetail->timezone->name;//"Europe/Berlin"
    echo $userDetail->timezone->utcOffset;//"+02:00"
    echo $userDetail->hasVcom;//true

GET systems/<systemKey>/users/<userId>

Path parameters

Name Type Description
systemKey required string Identification key of the system
userId required integer User ID

Get single user information by its username

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/users?username=user1.name'
<?php
    $criteria = (new UserCriteria())
        ->withUsername('user1.name');
    /** @var UserDetail $user */
    $user = $api->system('ABCDE')->users()->get($criteria);

Response

{
  "data": {
    "id": "123",
    "title": "Mrs.",
    "firstName": "First Name",
    "lastName": "Last Name",
    "username": "user1.name",
    "email": "example@example.com",
    "language": "en",
    "company": "Company",
    "fax": "0234567890",
    "telephone": "0234567891",
    "cellphone": "0987654321",
    "address": {
      "city": "City",
      "country": "Country",
      "postalCode": "12345",
      "street": "Street 123",
      "streetAddition": "2F-1"
    },
    "timezone": {
      "name": "Europe/Berlin",
      "utcOffset": "+02:00"
    },
    "hasVcom": true
  }
}
<?php
    /** @var UserDetail $userDetail */
    echo $userDetail->id;//"123"
    echo $userDetail->title;//"Mrs."
    echo $userDetail->firstName;//"First Name"
    echo $userDetail->lastName;//"Last Name"
    echo $userDetail->username;//"user1.name"
    echo $userDetail->email;//"example@example.com"
    echo $userDetail->language;//"en"
    echo $userDetail->company;//"Company"
    echo $userDetail->fax;//"0234567890"
    echo $userDetail->telephone;//"0234567891"
    echo $userDetail->cellphone;//"0987654321"
    echo $userDetail->address->city;//"City"
    echo $userDetail->address->country;//"Country"
    echo $userDetail->address->street;//"Street 123"
    echo $userDetail->address->streetAddition;//"2F-1"
    echo $userDetail->address->postalCode;//"12345"
    echo $userDetail->timezone->name;//"Europe/Berlin"
    echo $userDetail->timezone->utcOffset;//"+02:00"
    echo $userDetail->hasVcom;//true

GET systems/<systemKey>/users

Path parameters

Name Type Description
systemKey required string Identification key of the system

Query parameters

Name Type Description
username required string User name

Pictures

Get system picture

Request

curl 'https://api.meteocontrol.de/v2/systems/ABCDE/picture'
<?php
    /** @var PictureFile $pictureFile */
    $pictureFile = $api->system('ABCDE')->picture()->get();

Response

{
  "data":{
    "id": 12345,
    "filename": "12345.jpg",
    "content": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD.....",
    "type": "image/jpeg"
  }
}
<?php
    /** @var PictureFile $pictureFile */
    echo $pictureFile->id;// 12345
    echo $pictureFile->filename;// 12345.jpg
    echo $pictureFile->content;// "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD....."
    echo $pictureFile->type;// "image/jpeg"

GET systems/<systemKey>/picture

Path parameters

Name Type Description
systemKey required string Identification key of the system

Response

PictureFile object

Property Type Description
id fixed integer Picture ID
filename fixed string File name
content fixed string Data URI (RFC2397) with base64 encoding.
type fixed string image type

Tickets

Get all tickets

Request

curl 'https://api.meteocontrol.de/v2/tickets?
includeInReports=no&severity=normal&priority=normal&status=open&assignee=username&systemKey=ABCDE
&lastChangedAt[from]=2016-01-01T00:00:00+02:00&lastChangedAt[to]=2016-01-31T00:00:00+02:00
&createdAt[from]=2016-04-01T00:00:00+02:00&createdAt[to]=2016-04-25T00:00:00+02:00
&rectifiedAt[from]=2016-04-25T00:00:00+02:00&rectifiedAt[to]=2016-04-25T00:00:00+02:00'
<?php
    $ticketsCriteria = (new TicketsCriteria())
        ->withSystemKey('ABCDE')
        ->withStatus(Ticket::STATUS_OPEN)
        ->withAssignee('username')
        ->withPriority(Ticket::PRIORITY_NORMAL)
        ->withSeverity(Ticket::SEVERITY_NORMAL)
        ->withIncludeInReports(Ticket::REPORT_TYPE_NO)
        ->withLastChangedAtFrom(DateTime::createFromFormat(DATE_ATOM, '2016-01-01T00:00:00+02:00'))
        ->withLastChangedAtTo(DateTime::createFromFormat(DATE_ATOM, '2016-01-31T00:00:00+02:00'))
        ->withCreatedAtFrom(DateTime::createFromFormat(DATE_ATOM, '2016-04-01T00:00:00+02:00'))
        ->withCreatedAtTo(DateTime::createFromFormat(DATE_ATOM, '2016-04-25T00:00:00+02:00'))
        ->withRectifiedAtFrom(DateTime::createFromFormat(DATE_ATOM, '2016-04-25T00:00:00+02:00'))
        ->withRectifiedAtTo(DateTime::createFromFormat(DATE_ATOM, '2016-04-25T00:00:00+02:00'));
    /** @var Ticket[] $tickets */
    $tickets = $api->tickets()->find($ticketsCriteria);

Response

{
  "data": [
    {
      "id": "123",
      "systemKey": "ABCDE",
      "designation": "Ticket #123",
      "description": "This is a description",
      "summary": "This is a summary.",
      "createdAt": "2016-01-01T12:00:00+02:00",
      "lastChangedAt": "2016-01-01T13:00:00+02:00",
      "rectifiedAt": "2016-01-01T13:00:00+02:00",
      "status": "closed",
      "priority": "normal",
      "fieldService": "true",
      "severity": "normal"
    },
    {
      "id": "456",
      "systemKey": "FGHIJ",
      "designation": "Ticket #456",
      "description": "This is a description",
      "summary": "This is a summary.",
      "createdAt": "2016-02-01T12:00:00+02:00",
      "lastChangedAt": "2016-02-02T13:00:00+02:00",
      "rectifiedAt": "2016-02-02T13:00:00+02:00",
      "status": "inProgress",
      "priority": "high",
      "fieldService": "false",
      "severity": null
    }
  ]
}
<?php
    echo $tickets[0]->id;// 123
    echo $tickets[0]->systemKey;// ABCDE
    echo $tickets[0]->designation;// Ticket #123
    echo $tickets[0]->description;// This is a description
    echo $tickets[0]->summary;// This is a summary.
    echo $tickets[0]->createdAt->format(DATE_ATOM);// 2016-01-01T12:00:00+02:00
    echo $tickets[0]->lastChangedAt->format(DATE_ATOM);// 2016-01-01T13:00:00+02:00
    echo $tickets[0]->rectifiedAt->format(DATE_ATOM);// 2016-01-01T13:00:00+02:00
    echo $tickets[0]->status;// closed
    echo $tickets[0]->priority;// normal
    echo $tickets[0]->fieldService;// true
    echo $tickets[0]->severity;// normal
    echo $tickets[1]->id;// 456
    echo $tickets[1]->systemKey;// FGHIJ
    echo $tickets[1]->designation;// Ticket #456
    echo $tickets[1]->summary;// This is a summary.
    echo $tickets[1]->createdAt->format(DATE_ATOM);// 2016-02-01T12:00:00+02:00
    echo $tickets[1]->lastChangedAt->format(DATE_ATOM);// 2016-02-02T13:00:00+02:00
    echo $tickets[1]->rectifiedAt->format(DATE_ATOM);// 2016-02-02T13:00:00+02:00
    echo $tickets[1]->status;// inProgress
    echo $tickets[1]->priority;// high
    echo $tickets[1]->fieldService;// false
    echo $tickets[1]->severity;// null

GET tickets

Query parameters

Name Type Description
lastChangedAt[from] optional datetime Start date
lastChangedAt[to] optional datetime End date
createdAt[from] optional datetime Start date
createdAt[to] optional datetime End date
rectifiedAt[from] optional datetime Start date
rectifiedAt[to] optional datetime End date
includeInReports optional (noǀdetailǀsummary) Can contain comma delimited report types
status optional (openǀclosedǀdeletedǀassignedǀinProgress Can contain comma delimited status
severity optional (normalǀhighǀcritical) Can contain comma delimited severity types
priority optional (lowǀnormalǀhighǀurgent) Can contain comma delimited priority types
assignee optional string The username of the person being assigned to the ticket, it can contain comma delimited names
systemKey optional can contain comma delimited system keys

¹ Customized statuses available. Please reach out to our sales representatives for more information.


Response

Ticket object

Property Type Description
id fixed string
systemKey fixed string Identification key of the system
designation fixed string
description fixed string
summary fixed stringǀnull
createdAt fixed datetime Created date in system timezone
lastChangedAt fixed datetimeǀnull Last change date in system timezone
rectifiedAt fixed datetimeǀnull Rectified date in system timezone
status fixed (openǀclosedǀdeletedǀassignedǀinProgress
priority fixed (lowǀnormalǀhighǀurgentǀnull)
fieldService fixed bool
severity fixed (normalǀhighǀcriticalǀnull)

¹ Customized statuses available. Please reach out to our sales representatives for more information.

Get ticket causes

Returns a list of all available causes for ticket.

Request

curl 'https://api.meteocontrol.de/v2/tickets/causes'
<?php
    /** @var string[] causes */
    $causes = $api->tickets()->causes()->get();

Response

{
  "data":[
    "Unknown",
    "Grid voltage",
    "Inverter",
    "Operating error",
    "Overvoltage arrester"
  ]
}
<?php
    /** @var string[] causes */
    echo $causes[0];// Unknown
    echo $causes[1];// Grid voltage
    echo $causes[2];// Inverter
    echo $causes[3];// Operating error
    echo $causes[4];// Overvoltage arrester

Get single ticket

Request

curl 'https://api.meteocontrol.de/v2/tickets/123'
<?php
    /** @var Ticket $ticket */
    $ticket = $api->ticket(123)->get();

Response

{
  "data": {
    "id": "123",
    "systemKey": "ABCDE",
    "designation": "Ticket #123",
    "description": "This is a description",
    "summary": "This is a summary.",
    "createdAt": "2016-01-01T12:00:00+02:00",
    "lastChangedAt": "2016-01-01T13:00:00+02:00",
    "rectifiedAt": "2016-01-01T14:00:00+02:00",
    "assignee": null,
    "status": "inProgress",
    "causeId": 10,
    "cause": "Inverter",
    "priority": "normal",
    "includeInReports": "no",
    "fieldService": true,
    "severity": "normal",
    "outage": null
  }
}
<?php
    /** @var Ticket $ticket */
    echo $ticket->id;// 123
    echo $ticket->systemKey;// ABCDE
    echo $ticket->designation;// Ticket #123
    echo $ticket->description;// This is a description
    echo $ticket->summary;// This is a summary.
    echo $ticket->createdAt->format(DATE_ATOM);// 2016-01-01T12:00:00+02:00
    echo $ticket->lastChangedAt->format(DATE_ATOM);// 2016-01-01T13:00:00+02:00
    echo $ticket->rectifiedAt->format(DATE_ATOM);// 2016-01-01T14:00:00+02:00
    echo $ticket->assignee;// null
    echo $ticket->status;// inProgress
    echo $ticket->causeId;// 10
    echo $ticket->cause;// Inverter
    echo $ticket->priority;// normal
    echo $ticket->includeInReports;// no
    echo $ticket->fieldService;// true
    echo $ticket->severity;// normal
    echo $ticket->outage;// null

¹ Customized statuses available. Please reach out to our sales representatives for more information.

GET tickets/<ticketId>

Path parameters

Name Type Description
ticketId required integer Ticket ID

Response

Ticket object

Property Type Description
id fixed string
systemKey fixed string Identification key of the system
designation fixed string
description fixed string
summary fixed stringǀnull
createdAt fixed datetime Created date in system timezone
lastChangedAt fixed datetimeǀnull Last change date in system timezone
rectifiedAt fixed datetimeǀnull Rectified date in system timezone
assignee fixed stringǀnull The username of the person being assigned to the ticket
status fixed (openǀclosedǀdeletedǀassignedǀinProgress
causeId fixed integerǀnull (deprecated)
cause fixed string
priority fixed (lowǀnormalǀhighǀurgentǀnull)
includeInReports fixed (noǀdetailǀsummary)
fieldService fixed bool
severity fixed (normalǀhighǀcriticalǀnull)
outage fixed Outage ǀ null Outage information, if available

¹ Customized statuses available. Please reach out to our sales representatives for more information.

Outage object

Property Type Description
startedAt fixed datetime Start of outage
endedAt fixed datetime ǀ null End of outage or null if undefined
affectedPower fixed number Affected power in kW
shouldInfluenceAvailability fixed bool true if outage should affect availability
shouldInfluencePr fixed bool true if outage should affect performance ratio

Update a ticket

Request

curl -i -X PATCH \
   -H "Content-Type:application/json" \
   -d \
'{
  "rectifiedAt": "2016-01-01T00:00:00+02:00",
  "status": "closed",
  "includeInReports": "detail",
  "priority": "urgent",
  "description": "description",
  "summary": "summary",
  "assignee": "username"
}' \
 'https://api.meteocontrol.de/v2/tickets/123'
<?php
    /** @var Ticket $ticket */
    $ticket = $api->ticket(123)->get();
    $ticket->rectifiedAt = DateTime::createFromFormat(DATE_ATOM, '2016-01-01T00:00:00+02:00');
    $ticket->status = 'closed';
    $ticket->includeInReports = 'detail';
    $ticket->priority = 'urgent';
    $ticket->description = 'description';
    $ticket->summary = 'summary';
    $api->ticket(123)->update($ticket);

Response



PATCH tickets/<ticketId>

Path parameters

Name Type Description
ticketId required integer Ticket ID

Request headers

Name Type Description
Content-Type required application/json

Request body (JSON)

Property Type Description
designation optional string
description optional string
summary optional stringǀnull
rectifiedAt optional datetime
includeInReports optional (noǀdetailǀsummary)
status optional (openǀclosedǀdeletedǀassignedǀinProgress
priority optional (lowǀnormalǀhighǀurgent)
assignee optional string The username of the person being assigned to the ticket
cause optional string²
fieldService optional bool

¹ Customized statuses available. Please reach out to our sales representatives for more information.
² Please refer to Get ticket causes endpoint for available causes

Response

The response body is empty.

Http-Code: 204

Create a ticket

Request

curl -i -X POST \
   -H "Content-Type:application/json" \
   -d \
'{
  "designation": "New Ticket",
  "systemKey": "ABCDE",
  "createdAt": "2016-05-25T00:00:00+02:00",
  "status": "open",
  "includeInReports": "no",
  "priority": "normal",
  "summary": "still created from the API",
  "description": "description",
  "assignee": "username"
}' \
 'https://api.meteocontrol.de/v2/tickets'
<?php
    $ticket = new Ticket();
    $ticket->systemKey = 'ABCDE';
    $ticket->designation = 'New Ticket';
    $ticket->createdAt = DateTime::createFromFormat(DATE_ATOM, '2016-05-25T00:00:00+02:00');
    $ticket->status = Ticket::STATUS_OPEN;
    $ticket->includeInReports = Ticket::REPORT_TYPE_NO;
    $ticket->priority = Ticket::PRIORITY_NORMAL;
    $ticket->summary = 'still created from the API';
    $ticket->description = 'description';

    /** @var integer $ticketId */
    $ticketId = $api->tickets()->create($ticket);

Response

{
  "data":{
    "ticketId": "123"
  },
  "paths":{
    "GET": "/tickets/123",
    "PATCH": "/tickets/123",
    "DELETE": "/tickets/123"
  }
}
<?php
    /** @var integer $ticketId */
    echo $ticketId;// 123

POST tickets

Request headers

Name Type Description
Content-Type required application/json

Request body (JSON)

Property Type Description
systemKey required string Identification key of the system
designation required string
createdAt required datetime
description optional string
summary optional stringǀnull
includeInReports optional (noǀdetailǀsummary)
status optional (openǀclosedǀdeletedǀassignedǀinProgress
priority optional (lowǀnormalǀhighǀurgent)
assignee optional string The username of the person being assigned to the ticket
cause optional string²
fieldService optional bool

¹ Customized statuses available. Please reach out to our sales representatives for more information.
² Please refer to Get ticket causes endpoint for available causes

Response - Data

Property Type Description
ticketId fixed string Of the new ticket

Response - Paths

Method type Description
get fixed string GET method with URL
patch fixed string PATCH method with URL
delete fixed string DELETE method with URL

Delete a ticket

Request

curl -i -X DELETE 'https://api.meteocontrol.de/v2/tickets/123'
<?php
    $api->ticket(123)->delete();

Response



DELETE tickets/<ticketId>

Path parameters

Name Type Description
ticketId required integer Ticket ID

Response

Status code Description
204 If the ticket has no open alarms
403 If the ticket has open alarms and therefore cannot be deleted

Comments

Get all comments

Request

curl 'https://api.meteocontrol.de/v2/tickets/123/comments'
<?php
    /** @var Comment[] comments */
    $comments = $api->ticket(123)->comments()->get();

Response

{
  "data":[
    {
      "commentId": 661288,
      "createdAt": "2016-02-19T12:49:20+01:00",
      "comment": "Comment text",
      "username": "username",
      "firstName": "firstName",
      "lastName": "lastName"
    },
    {
      "commentId": 661286,
      "createdAt": "2016-02-19T12:49:07+01:00",
      "comment": "Comment text",
      "username": "username",
      "firstName": "firstName",
      "lastName": "lastName"
    }
  ]
}
<?php
    /** @var Comment[] comments */
    echo $comments[0]->commentId;// 661288
    echo $comments[0]->createdAt->format(DATE_ATOM);// 2016-02-19T12:49:20+01:00
    echo $comments[0]->comment;// Comment text
    echo $comments[0]->username;// username
    echo $comments[0]->firstName;// firstName
    echo $comments[0]->lastName;// lastName
    echo $comments[1]->commentId;// 661286
    echo $comments[1]->createdAt->format(DATE_ATOM);// 2016-02-19T12:49:07+01:00
    echo $comments[1]->comment;// Comment text
    echo $comments[1]->username;// username
    echo $comments[1]->firstName;// firstName
    echo $comments[1]->lastName;// lastName

GET tickets/<ticketId>/comments

Path parameters

Name Type Description
ticketId required integer Ticket ID

Response

Comment object

Property Type Description
commentId fixed integer Comment ID
createdAt fixed datetime Created datetime in system timezone
comment fixed string With new line character \n
username fixed string The username of the person who commented

Get single comment

Request

curl 'https://api.meteocontrol.de/v2/tickets/123/comments/661288'
<?php
    /** @var CommentDetail comment */
    $comment = $api->ticket(123)->comment(661288)->get();

Response

{
  "data":{
    "commentId": 661288,
    "createdAt": "2016-02-19T12:49:20+01:00",
    "comment": "Comment text",
    "username": "username",
    "firstName": "firstName",
    "lastName": "lastName"
  }
}
<?php
    /** @var CommentDetail comment */
    echo $comment->commentId;// 661288
    echo $comment->createdAt->format(DATE_ATOM);// 2016-02-19T12:49:20+01:00
    echo $comment->comment;// Comment text
    echo $comment->username;// username
    echo $comment->firstName;// firstName
    echo $comment->lastName;// lastName

GET tickets/<ticketId>/comments/<commentId>

Path parameters

Name Type Description
ticketId required integer Ticket ID
commentId required integer Comment ID

Response

Comment object

Property Type Description
commentId fixed integer Comment ID
createdAt fixed datetime Created datetime in system timezone
comment fixed string With new line character \n
username fixed string The username of the person who commented

Create a comment

Request

curl -i -X POST \
   -H "Content-Type:application/json" \
   -d \
'{
  "comment": "New Comment"
}' \
 'https://api.meteocontrol.de/v2/tickets/123/comments'
<?php
    $comment = new CommentDetail();
    $comment->comment = 'New Comment';

    /** @var integer $commentId */
    $commentId = $api->ticket(123)->comments()->create($comment);

Response

{
  "data":{
    "commentId": 454548
  }
}
<?php
    /** @var integer $commentId */
    echo $commentId;// 454548

POST comments

Path parameters

Name Type Description
ticketId required integer Ticket ID
createdAt optional datetime

Request headers

Name Type Description
Content-Type required application/json

Request body (JSON)

Property Type Description
comment required string

Response

Property Type Description
commentId fixed integer Comment ID of the new comment.

Update a comment

Request

curl -i -X PATCH \
   -H "Content-Type:application/json" \
   -d \
'{
  "comment": "New Comment"
}' \
 'https://api.meteocontrol.de/v2/tickets/123/comments/454548'
<?php
    $comment = new CommentDetail();
    $comment->comment = 'New Comment';
    $api->ticket(123)->comment(454548)->update($comment);

Response



PATCH tickets/<ticketId>/comments/<commentId>

Path parameters

Name Type Description
ticketId required integer Ticket ID
commentId required integer Comment ID

Request headers

Name Type Description
Content-Type required application/json

Request body (JSON)

Property Type Description
comment required string

Response

The response body is empty.

Http-Code: 204

Delete a comment

Request

curl -i -X DELETE 'https://api.meteocontrol.de/v2/tickets/123/comments/454548'
<?php
    $api->ticket(123)->comment(454548)->delete();

Response



DELETE tickets/<ticketId>/comments/<commentId>

Path parameters

Name Type Description
ticketId required integer Ticket ID
commentId required integer Comment ID

Response

The response body is empty.

Http-Code: 204

Outage

Get single outage

Request

curl 'https://api.meteocontrol.de/v2/tickets/456/outage'
<?php
    /** @var Outage $outage */
    $outage = $api->ticket(456)->outage()->get();

Response

{
  "data": {
    "startedAt": "2016-11-15T10:00:00+01:00",
    "endedAt": "2016-11-15T10:59:59+01:00",
    "affectedPower": 24.03,
    "shouldInfluenceAvailability": false,
    "shouldInfluencePr": false,
    "components": ["Id12345.1", "Id12345.2"]
  }
}
<?php
    /** @var Outage $outage */
    echo $outage->startedAt->format(DATE_ATOM);// 2016-11-15T10:00:00+01:00
    echo $outage->endedAt->format(DATE_ATOM);// 2016-11-15T10:59:59+01:00
    echo $outage->affectedPower;// 24.03
    echo $outage->shouldInfluenceAvailability;// false
    echo $outage->shouldInfluencePr;// false
    echo $outage->components;// ["Id12345.1", "Id12345.2"]

GET tickets/<ticketId>/outage

Path parameters

Name Type Description
ticketId required integer Ticket ID

Response

Outage object

Property Type Description
startedAt fixed datetime Start of outage
endedAt fixed datetimeǀnull End of outage or null if undefined
affectedPower fixed number Affected power in kW
shouldInfluenceAvailability fixed bool true if outage should affect availability
shouldInfluencePr fixed bool true if outage should affect performance ratio
components fixed¹ array Component ID string

¹ Only inverters accepted for Component ID.

Update an outage

Request

curl -i -X PATCH \
   -H "Content-Type:application/json" \
   -d \
'{
  "startedAt": "2016-11-15T10:00:00+01:00",
  "endedAt": "2016-11-15T10:59:59+01:00",
  "affectedPower": 24.03,
  "shouldInfluenceAvailability": false,
  "shouldInfluencePr": false,
  "components": ["Id12345.1", "Id12345.2"]
}' \
 'https://api.meteocontrol.de/v2/tickets/456/outage'
<?php
    $outage = new Outage();
    $outage->startedAt = new DateTime("2016-11-15T10:00:00+01:00");
    $outage->endedAt = new DateTime("2016-11-15T10:59:59+01:00");
    $outage->affectedPower = 24.03;
    $outage->shouldInfluenceAvailability = false;
    $outage->shouldInfluencePr = false;
    $outage->components = ["Id12345.1", "Id12345.2"];
    $api->ticket(456)->outage()->update($outage);

Response



PATCH tickets/<ticketId>/outage

Path parameters

Name Type Description
ticketId required integer Ticket ID

Request headers

Name Type Description
Content-Type required application/json

Request body (JSON)

Property Type Description
startedAt optional datetime Start of outage
endedAt optional datetimeǀnull End of outage or null if undefined
affectedPower optional number Affected power in kW
shouldInfluenceAvailability optional bool true if outage should affect availability
shouldInfluencePr optional bool true if outage should affect performance ratio
components optional¹ array Component ID string

¹ Only inverters accepted for Component ID.

Response

The response body is empty.

Http-Code: 204

Replace an outage

Request

curl -i -X PUT \
    -H "Content-Type:application/json" \
    -d \
'{
  "startedAt": "2016-11-15T10:00:00+01:00",
  "endedAt": "2016-11-15T10:59:59+01:00",
  "affectedPower": 24.03,
  "shouldInfluenceAvailability": false,
  "shouldInfluencePr": false,
  "components": ["Id12345.1", "Id12345.2"]
}' \
 'https://api.meteocontrol.de/v2/tickets/456/outage'
<?php
    $outage = new Outage();
    $outage->startedAt = new DateTime("2016-11-15T10:00:00+01:00");
    $outage->endedAt = new DateTime("2016-11-15T10:59:59+01:00");
    $outage->affectedPower = 24.03;
    $outage->shouldInfluenceAvailability = false;
    $outage->shouldInfluencePr = false;
    $outage->components = ["Id12345.1", "Id12345.2"];
    $api->ticket(456)->outage()->replace($outage);

Response



PUT tickets/<ticketId>/outage

Path parameters

Name Type Description
ticketId required integer Ticket ID

Request headers

Name Type Description
Content-Type required application/json

Request body (JSON)

Property Type Description
startedAt required datetime Start of outage
endedAt required datetimeǀnull End of outage or null if undefined
affectedPower required number Affected power in kW
shouldInfluenceAvailability required bool true if outage should affect availability
shouldInfluencePr required bool true if outage should affect performance ratio
components required¹ array Component ID string

¹ Only inverters accepted for Component ID.

Response

The response body is empty.

Http-Code: 204

Delete an outage

Request

curl -i -X DELETE 'https://api.meteocontrol.de/v2/tickets/456/outage'
<?php
    $api->ticket(456)->outage()->delete();

Response



DELETE tickets/<ticketId>/outage

Path parameters

Name Type Description
ticketId required integer Ticket ID

Response

The response body is empty.

Status code Description
204 The outage has been successfully deleted
403 User is not authorized to access ticket or outage

Attachments

Get all attachments

Request

curl 'https://api.meteocontrol.de/v2/tickets/123/attachments'
<?php
    /** @var array attachments */
    $attachments = $api->ticket(123)->attachments()->get();

Response

{
  "data":[
    {
      "attachmentId": 1234,
      "filename": "attachment1.jpg",
      "description": "description 1"
    },
    {
      "attachmentId": 5678,
      "filename": "attachment2.jpg",
      "description": "description 2"
    }
  ]
}
<?php
    /** @var array $attachments */
    echo $attachments[0]['attachmentId'];// 1234
    echo $attachments[0]['filename'];// "attachment1.jpg"
    echo $attachments[0]['description'];// "description 1"
    echo $attachments[1]['attachmentId'];// 5678
    echo $attachments[1]['filename'];// "attachment2.jpg"
    echo $attachments[1]['description'];// "description 2"

GET tickets/<ticketId>/attachments

Path parameters

Name Type Description
ticketId required integer Ticket ID

Response

Attachment array

Property Type Description
attachmentId fixed integer Attachment ID
filename fixed string File name
description fixed string Description

Get single attachment

Request

curl 'https://api.meteocontrol.de/v2/tickets/123/attachments/1234'
<?php
    /** @var AttachmentFile $attachmentFile */
    $attachmentFile = $api->ticket(123)->attachment(1234)->get();

Response

{
  "data":{
    "attachmentId": 1234,
    "filename": "attachment1.png",
    "content": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD.....",
    "createdAt": "2016-09-01T10:15:00+02:00",
    "description": "file description",
    "metaData": null,
    "creatorId": 123456
  }
}
<?php
    /** @var AttachmentFile $attachmentFile */
    echo $attachmentFile->attachmentId;// 1234
    echo $attachmentFile->filename;// attachment1.jpg
    echo $attachmentFile->content;// "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD....."
    echo $attachmentFile->createdAt;// DateTime
    echo $attachmentFile->description;// file description
    echo $attachmentFile->metaData;// null
    echo $attachmentFile->creatorId;// 123456

GET tickets/<ticketId>/attachments/<attachmentId>

Path parameters

Name Type Description
ticketId required integer Ticket ID
attachmentId required integer Attachment ID

Response

AttachmentFile object

Property Type Description
attachmentId fixed integer Attachment ID
filename fixed string File name
content fixed string Data URI (RFC2397) with base64 encoding
createdAt fixed string Created datetime in system timezone
description fixed string File description
metaData fixed string Attachment meta data in JSON format
creatorId fixed integer Creator ID

Create an attachment

Request

curl -i -X POST \
   -H "Content-Type:application/json" \
   -d \
'{
  "filename": "attachment1.jpg",
  "content": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD.....",
  "description": "file description"
}' \
 'https://api.meteocontrol.de/v2/tickets/123/attachments'
<?php
    $content = base64_encode(file_get_contents('attachment1.jpg'));
    $attachmentFile = new AttachmentFile();
    $attachmentFile->filename = 'attachment1.jpg';
    $attachmentFile->content = 'data:image/jpeg;base64,' . $content;
    $attachmentFile->description = "file description";

    /** @var array $result */
    $result = $api->ticket(123)->attachments()->create($attachmentFile);

Response

{
  "data":{
    "attachmentId": 1234,
    "filename": "attachment1.jpg"
  }
}
<?php
    /** @var AttachmentFile $attachmentFile */
    echo $attachmentFile->attachmentId;// 1234
    echo $attachmentFile->filename;// 'attachment1.jpg'

POST tickets/<ticketId>/attachments

Path parameters

Name Type Description
ticketId required integer Ticket ID

Request headers

Name Type Description
Content-Type required application/json

Request body (JSON)

Property Type Description
filename required string Filename
content required string Data URI (RFC2397) with base64 encoding²
description required string File description

¹ Please note there’s a limit of 10 attachments per ticket.
² Max decoded file size is 10MB.

Response

Property Type Description
attachmentId fixed integer Attachment ID
filename fixed string Name of the new attachment
Status code Description
200 The attachment has been successfully created
400 Invalid request body
413 Too large attachment²
422 Too many attachments¹

Histories

Get all Histories for a ticket

Request

curl 'https://api.meteocontrol.de/v2/tickets/123/histories'
<?php
    /** @var TicketHistory[] histories */
    $histories = $api->ticket(123)->histories()->get();

Response

{
  "data": [
    {
      "createdAt": "2017-08-31T01:41:59+00:00",
      "action": "created",
      "personInCharge": "userB",
      "from": null,
      "to": "userB"
    },
    {
      "createdAt": "2017-08-31T01:42:03+00:00",
      "action": "statusChanged",
      "personInCharge": "userB",
      "from": "open",
      "to": "inProgress"
    },
    {
      "createdAt": "2017-08-31T02:18:51+00:00",
      "action": "assigneeChanged",
      "personInCharge": "userB",
      "from": null,
      "to": "userA"
    },
    {
      "createdAt": "2017-08-31T02:19:41+00:00",
      "action": "assigneeChanged",
      "personInCharge": "userB",
      "from": "userA",
      "to": "userB"
    }
  ]
}
<?php
    /** @var TicketHistory $histories */
    echo $histories[0]->createdAt->format(DATE_ATOM); // 2017-08-31T01:41:59+00:00
    echo $histories[0]->action; // created
    echo $histories[0]->personInCharge; // userB
    echo $histories[0]->from; // null
    echo $histories[0]->to; // userB
    echo $histories[1]->createdAt->format(DATE_ATOM); // 2017-08-31T01:42:03+00:00
    echo $histories[1]->action; // statusChanged
    echo $histories[1]->personInCharge; // userB
    echo $histories[1]->from; // open
    echo $histories[1]->to; // inProgress
    echo $histories[2]->createdAt->format(DATE_ATOM); // 2017-08-31T02:18:51+00:00
    echo $histories[2]->action; // assigneeChanged
    echo $histories[2]->personInCharge; // userB
    echo $histories[2]->from; // null
    echo $histories[2]->to; // userA
    echo $histories[3]->createdAt->format(DATE_ATOM); // 2017-08-31T02:19:41+00:00
    echo $histories[3]->action; // assigneeChanged
    echo $histories[3]->personInCharge; // userB
    echo $histories[3]->from; // userA
    echo $histories[3]->to; // userB

GET tickets/<ticketId>/histories

Path parameters

Name Type Description
ticketId required integer Ticket ID

Response

TicketHistory object

Property Type Description
createdAt fixed datetime Created date in system timezone
action fixed string (createdǀstatusChangedǀassigneeChanged)
personInCharge string Updater
from string Username or state
to string Username or state

Yield losses

Get yield loss calculation of the ticket

Request

curl 'https://api.meteocontrol.de/v2/tickets/456/yield-losses'
<?php
    /** @var YieldLossCalculation $yieldLosses*/
    $yieldLosses = $api->ticket(456)->yieldLosses()->get();

Response

{
  "data": {
    "model": "reference-system",
    "result": 69.32,
    "realLostYield": 41.29,
    "totalCompensation": 7.34962,
    "comment": ""
  }
}
<?php
    /** @var YieldLossCalculation $yieldLosses */
    echo $yieldLosses->model;// reference-system
    echo $yieldLosses->result;// 69.32
    echo $yieldLosses->realLostYield;// 41.29
    echo $yieldLosses->totalCompensation;// 7.34962
    echo $yieldLosses->comment;// ""

GET tickets/<ticketId>/yield-losses

Path parameters

Name Type Description
ticketId required integer Ticket ID

Response

Status code Description
200 Return existing YieldLossCalculation object
404 YieldLossCalculation object not found of the ticket id
Flat-rate (energy trader)
Calculate the yield loss using the flat-rate model with energy trader source data

Reference: Bundesnetzagentur (2020). 3.2.3.3 Pauschal-Abrechnung. In Bilanzierungsmodelle und Bestimmung der Ausfallarbeit (p. 10).

Request

curl 'https://api.meteocontrol.de/v2/tickets/45678/yield-losses/flat-rate/energy-trader?from=2022-05-01T00:00:00+00:00&to=2022-05-31T23:59:59+00:00'
<?php
    $yieldLossesCriteria = (new YieldLossesCriteria())
        ->withDateFrom(DateTime::createFromFormat(DATE_ATOM, '2022-05-01T00:00:00+00:00'))
        ->withDateTo(DateTime::createFromFormat(DATE_ATOM, '2022-05-31T23:59:59+00:00'));
    /** @var CalculationResult $calculationResult */
    $calculationResult = $api->ticket(45678)->yieldLosses()->flatRate()->energyTrader()
        ->get($yieldLossesCriteria);

Response

{
  "data":{
    "result": 69.32,
    "realLostYield": 41.29,
    "totalCompensation": 7.34962,
    "comment": ""
  }
}
<?php
    /** @var CalculationResult $calculationResult */
    echo $calculationResult->result;// 69.32
    echo $calculationResult->realLostYield;// 41.29
    echo $calculationResult->totalCompensation;// 7.34962
    echo $calculationResult->comment;// ""

GET tickets/<ticketId>/yield-losses/flat-rate/energy-trader

Path parameters

Name Type Description
ticketId required integer Ticket ID

Query parameters

Name Type Description
from required dateǀdatetime Start date
to required dateǀdatetime End date

Response

CalculationResult object

Property Type Description
result fixed number Calculated yield loss value
realLostYield fixed number Correction yield loss value (if not specified, the value will be the same as result)
totalCompensation fixed number Estimation amount of the financial compensation (based on the value of realLostYield)
comment fixed string Comment
Calculate the yield loss using the flat-rate model with energy trader source data and save the result

Will create a new record of the yield loss calculation result in the database or rewrite the record if one exists.

Request

curl -i -X PUT \
   -H 'Content-Type:application/json' \
   -d \
'{
  "comment": "New comment"
}' \ 
  'https://api.meteocontrol.de/v2/tickets/45678/yield-losses/flat-rate/energy-trader?from=2022-05-01T00:00:00+00:00&to=2022-05-31T23:59:59+00:00'
<?php
    $yieldLossesCriteria = (new YieldLossesCriteria())
        ->withDateFrom(DateTime::createFromFormat(DATE_ATOM, '2022-05-01T00:00:00+00:00'))
        ->withDateTo(DateTime::createFromFormat(DATE_ATOM, '2022-05-31T23:59:59+00:00'));

    $yieldLoss = new YieldLoss();
    $yieldLoss->comment = 'New comment';

    $api->ticket(45678)->yieldLosses()->flatRate()->energyTrader()
        ->replace($yieldLossesCriteria, $yieldLoss);

Response



PUT tickets/<ticketId>/yield-losses/flat-rate/energy-trader

Path parameters

Name Type Description
ticketId required integer Ticket ID

Query parameters

Name Type Description
from required dateǀdatetime Start date
to required dateǀdatetime End date

Request headers

Name Type Description
Content-Type required application/json

Request body (JSON)

Property Type Description
comment required stringǀnull Comment

Response

The response body is empty.

Http-Code: 204

Flat-rate (grid operator)
Calculate the yield loss using the flat-rate model with grid operator source data

Reference: Bundesnetzagentur (2020). 3.2.3.3 Pauschal-Abrechnung. In Bilanzierungsmodelle und Bestimmung der Ausfallarbeit (p. 10).

Request

curl 'https://api.meteocontrol.de/v2/tickets/45678/yield-losses/flat-rate/grid-operator?from=2022-05-01T00:00:00+00:00&to=2022-05-31T23:59:59+00:00'
<?php
    $yieldLossesCriteria = (new YieldLossesCriteria())
        ->withDateFrom(DateTime::createFromFormat(DATE_ATOM, '2022-05-01T00:00:00+00:00'))
        ->withDateTo(DateTime::createFromFormat(DATE_ATOM, '2022-05-31T23:59:59+00:00'));
    /** @var CalculationResult $calculationResult */
    $calculationResult = $api->ticket(45678)->yieldLosses()->flatRate()->gridOperator()
        ->get($yieldLossesCriteria);

Response

{
  "data":{
    "result": 69.32,
    "realLostYield": 41.29,
    "totalCompensation": 7.34962,
    "comment": ""
  }
}
<?php
    /** @var CalculationResult $calculationResult */
    echo $calculationResult->result;// 69.32
    echo $calculationResult->realLostYield;// 41.29
    echo $calculationResult->totalCompensation;// 7.34962
    echo $calculationResult->comment;// ""

GET tickets/<ticketId>/yield-losses/flat-rate/grid-operator

Path parameters

Name Type Description
ticketId required integer Ticket ID

Query parameters

Name Type Description
from required dateǀdatetime Start date
to required dateǀdatetime End date

Response

CalculationResult object

Property Type Description
result fixed number Calculated yield loss value
realLostYield fixed number Correction yield loss value (if not specified, the value will be the same as result)
totalCompensation fixed number Estimation amount of the financial compensation (based on the value of realLostYield)
comment fixed string Comment
Calculate the yield loss using the flat-rate model with grid operator source data and save the result

Will create a new record of the yield loss calculation result in the database or rewrite the record if one exists.

Request

curl -i -X PUT \
   -H 'Content-Type:application/json' \
   -d \
'{
  "comment": "New comment"
}' \ 
  'https://api.meteocontrol.de/v2/tickets/45678/yield-losses/flat-rate/grid-operator?from=2022-05-01T00:00:00+00:00&to=2022-05-31T23:59:59+00:00'
<?php
    $yieldLossesCriteria = (new YieldLossesCriteria())
        ->withDateFrom(DateTime::createFromFormat(DATE_ATOM, '2022-05-01T00:00:00+00:00'))
        ->withDateTo(DateTime::createFromFormat(DATE_ATOM, '2022-05-31T23:59:59+00:00'));

    $yieldLoss = new YieldLoss();
    $yieldLoss->comment = 'New comment';

    $api->ticket(45678)->yieldLosses()->flatRate()->gridOperator()
        ->replace($yieldLossesCriteria, $yieldLoss);

Response



PUT tickets/<ticketId>/yield-losses/flat-rate/grid-operator

Path parameters

Name Type Description
ticketId required integer Ticket ID

Query parameters

Name Type Description
from required dateǀdatetime Start date
to required dateǀdatetime End date

Request headers

Name Type Description
Content-Type required application/json

Request body (JSON)

Property Type Description
comment required stringǀnull Comment

Response

The response body is empty.

Http-Code: 204

Flat-rate (manual)
Calculate the yield loss using the flat-rate model with manual source data

Reference: Bundesnetzagentur (2020). 3.2.3.3 Pauschal-Abrechnung. In Bilanzierungsmodelle und Bestimmung der Ausfallarbeit (p. 10).

Request

curl 'https://api.meteocontrol.de/v2/tickets/45678/yield-losses/flat-rate/manual?from=2022-05-01T00:00:00+00:00&to=2022-05-31T23:59:59+00:00'
<?php
    $yieldLossesCriteria = (new YieldLossesCriteria())
        ->withDateFrom(DateTime::createFromFormat(DATE_ATOM, '2022-05-01T00:00:00+00:00'))
        ->withDateTo(DateTime::createFromFormat(DATE_ATOM, '2022-05-31T23:59:59+00:00'));
    /** @var CalculationResult $calculationResult */
    $calculationResult = $api->ticket(45678)->yieldLosses()->flatRate()->manual()
        ->get($yieldLossesCriteria);

Response

{
  "data":{
    "result": 69.32,
    "realLostYield": 41.29,
    "totalCompensation": 7.34962,
    "comment": ""
  }
}
<?php
    /** @var CalculationResult $calculationResult */
    echo $calculationResult->result;// 69.32
    echo $calculationResult->realLostYield;// 41.29
    echo $calculationResult->totalCompensation;// 7.34962
    echo $calculationResult->comment;// ""

GET tickets/<ticketId>/yield-losses/flat-rate/manual

Path parameters

Name Type Description
ticketId required integer Ticket ID

Query parameters

Name Type Description
from required dateǀdatetime Start date
to required dateǀdatetime End date

Response

CalculationResult object

Property Type Description
result fixed number Calculated yield loss value
realLostYield fixed number Correction yield loss value (if not specified, the value will be the same as result)
totalCompensation fixed number Estimation amount of the financial compensation (based on the value of realLostYield)
comment fixed string Comment
Calculate the yield loss using the flat-rate model with manual source data and save the result

Will create a new record of the yield loss calculation result in the database or rewrite the record if one exists.

Request

curl -i -X PUT \
   -H 'Content-Type:application/json' \
   -d \
'{
  "comment": "New comment"
}' \ 
  'https://api.meteocontrol.de/v2/tickets/45678/yield-losses/flat-rate/manual?from=2022-05-01T00:00:00+00:00&to=2022-05-31T23:59:59+00:00'
<?php
    $yieldLossesCriteria = (new YieldLossesCriteria())
        ->withDateFrom(DateTime::createFromFormat(DATE_ATOM, '2022-05-01T00:00:00+00:00'))
        ->withDateTo(DateTime::createFromFormat(DATE_ATOM, '2022-05-31T23:59:59+00:00'));

    $yieldLoss = new YieldLoss();
    $yieldLoss->comment = 'New comment';

    $api->ticket(45678)->yieldLosses()->flatRate()->manual()
        ->replace($yieldLossesCriteria, $yieldLoss);

Response



PUT tickets/<ticketId>/yield-losses/flat-rate/manual

Path parameters

Name Type Description
ticketId required integer Ticket ID

Query parameters

Name Type Description
from required dateǀdatetime Start date
to required dateǀdatetime End date

Request headers

Name Type Description
Content-Type required application/json

Request body (JSON)

Property Type Description
comment required stringǀnull Comment

Response

The response body is empty.

Http-Code: 204

Flat-rate (static)
Calculate the yield loss using the flat-rate model with static source data

Reference: Bundesnetzagentur (2020). 3.2.3.3 Pauschal-Abrechnung. In Bilanzierungsmodelle und Bestimmung der Ausfallarbeit (p. 10).

Request

curl 'https://api.meteocontrol.de/v2/tickets/45678/yield-losses/flat-rate/static?from=2022-05-01T00:00:00+00:00&to=2022-05-31T23:59:59+00:00'
<?php
    $yieldLossesCriteria = (new YieldLossesCriteria())
        ->withDateFrom(DateTime::createFromFormat(DATE_ATOM, '2022-05-01T00:00:00+00:00'))
        ->withDateTo(DateTime::createFromFormat(DATE_ATOM, '2022-05-31T23:59:59+00:00'));
    /** @var CalculationResult $calculationResult */
    $calculationResult = $api->ticket(45678)->yieldLosses()->flatRate()->static()
        ->get($yieldLossesCriteria);

Response

{
  "data":{
    "result": 69.32,
    "realLostYield": 41.29,
    "totalCompensation": 7.34962,
    "comment": ""
  }
}
<?php
    /** @var CalculationResult $calculationResult */
    echo $calculationResult->result;// 69.32
    echo $calculationResult->realLostYield;// 41.29
    echo $calculationResult->totalCompensation;// 7.34962
    echo $calculationResult->comment;// ""

GET tickets/<ticketId>/yield-losses/flat-rate/static

Path parameters

Name Type Description
ticketId required integer Ticket ID

Query parameters

Name Type Description
from required dateǀdatetime Start date
to required dateǀdatetime End date

Response

CalculationResult object

Property Type Description
result fixed number Calculated yield loss value
realLostYield fixed number Correction yield loss value (if not specified, the value will be the same as result)
totalCompensation fixed number Estimation amount of the financial compensation (based on the value of realLostYield)
comment fixed string Comment
Calculate the yield loss using the flat-rate model with static source data and save the result

Will create a new record of the yield loss calculation result in the database or rewrite the record if one exists.

Request

curl -i -X PUT \
   -H 'Content-Type:application/json' \
   -d \
'{
  "comment": "New comment"
}' \ 
  'https://api.meteocontrol.de/v2/tickets/45678/yield-losses/flat-rate/static?from=2022-05-01T00:00:00+00:00&to=2022-05-31T23:59:59+00:00'
<?php
    $yieldLossesCriteria = (new YieldLossesCriteria())
        ->withDateFrom(DateTime::createFromFormat(DATE_ATOM, '2022-05-01T00:00:00+00:00'))
        ->withDateTo(DateTime::createFromFormat(DATE_ATOM, '2022-05-31T23:59:59+00:00'));

    $yieldLoss = new YieldLoss();
    $yieldLoss->comment = 'New comment';

    $api->ticket(45678)->yieldLosses()->flatRate()->static()
        ->replace($yieldLossesCriteria, $yieldLoss);

Response



PUT tickets/<ticketId>/yield-losses/flat-rate/static

Path parameters

Name Type Description
ticketId required integer Ticket ID

Query parameters

Name Type Description
from required dateǀdatetime Start date
to required dateǀdatetime End date

Request headers

Name Type Description
Content-Type required application/json

Request body (JSON)

Property Type Description
comment required stringǀnull Comment

Response

The response body is empty.

Http-Code: 204

Linear equation
Calculate the yield loss using the linear equation model

Request

curl 'https://api.meteocontrol.de/v2/tickets/456/yield-losses/linear-equation?from=2016-11-15T10:00:00+00:00&to=2016-11-15T10:59:59+00:00&referenceFrom=2016-11-15T14:50:00+00:00&referenceTo=2016-11-15T15:50:00+00:00'
<?php
    $linearEquationCriteria = (new LinearEquationCriteria())
        ->withDateFrom(DateTime::createFromFormat(DATE_ATOM, '2016-11-15T10:00:00+00:00'))
        ->withDateTo(DateTime::createFromFormat(DATE_ATOM, '2016-11-15T10:59:59+00:00'))
        ->withDateReferenceFrom(DateTime::createFromFormat(DATE_ATOM, '2016-11-15T14:50:00+00:00'))
        ->withDateReferenceTo(DateTime::createFromFormat(DATE_ATOM, '2016-11-15T15:50:00+00:00'));
    /** @var CalculationResult $calculationResult */
    $calculationResult = $api->ticket(456)->yieldLosses()->linearEquation()
        ->get($linearEquationCriteria);

Response

{
  "data":{
    "result": 69.32,
    "realLostYield": 41.29,
    "totalCompensation": 7.34962,
    "comment": ""
  }
}
<?php
    /** @var CalculationResult $calculationResult */
    echo $calculationResult->result;// 69.32
    echo $calculationResult->realLostYield;// 41.29
    echo $calculationResult->totalCompensation;// 7.34962
    echo $calculationResult->comment;// ""

GET tickets/<ticketId>/yield-losses/linear-equation

Path parameters

Name Type Description
ticketId required integer Ticket ID

Query parameters

Name Type Description
from required dateǀdatetime Start date
to required dateǀdatetime End date
referenceFrom required dateǀdatetime Reference start date
referenceTo required dateǀdatetime Reference end date

Response

CalculationResult object

Property Type Description
result fixed number Calculated yield loss value
realLostYield fixed number Correction yield loss value (if not specified, the value will be the same as result)
totalCompensation fixed number Estimation amount of the financial compensation (based on the value of realLostYield)
comment fixed string Comment
Calculate the yield loss using the linear equation model and save the result

Will create a new record of the yield loss calculation result in the database or rewrite the record if one exists.

Request

curl -i -X PUT \
   -H 'Content-Type:application/json' \
   -d \
'{
  "realLostYield": 42.38,
  "comment": "New comment"
}' \ 
  'https://api.meteocontrol.de/v2/tickets/456/yield-losses/linear-equation?from=2016-11-15T10:00:00+00:00&to=2016-11-15T10:59:59+00:00&referenceFrom=2016-11-15T14:50:00+00:00&referenceTo=2016-11-15T15:50:00+00:00'
<?php
    $linearEquationCriteria = (new LinearEquationCriteria())
        ->withDateFrom(DateTime::createFromFormat(DATE_ATOM, '2016-11-15T10:00:00+00:00'))
        ->withDateTo(DateTime::createFromFormat(DATE_ATOM, '2016-11-15T10:59:59+00:00'))
        ->withDateReferenceFrom(DateTime::createFromFormat(DATE_ATOM, '2016-11-15T14:50:00+00:00'))
        ->withDateReferenceTo(DateTime::createFromFormat(DATE_ATOM, '2016-11-15T15:50:00+00:00'));

    $yieldLoss = new YieldLoss();
    $yieldLoss->realLostYield = 42.38;
    $yieldLoss->comment = 'New comment';

    $api->ticket(456)->yieldLosses()->linearEquation()
        ->replace($linearEquationCriteria, $yieldLoss);

Response



PUT tickets/<ticketId>/yield-losses/linear-equation

Path parameters

Name Type Description
ticketId required integer Ticket ID

Query parameters

Name Type Description
from required dateǀdatetime Start date
to required dateǀdatetime End date
referenceFrom required dateǀdatetime Reference start date
referenceTo required dateǀdatetime Reference end date

Request headers

Name Type Description
Content-Type required application/json

Request body (JSON)

Property Type Description
realLostYield required numberǀnull Correction yield loss value
comment required stringǀnull Comment

Response

The response body is empty.

Http-Code: 204

Peak (energy trader)
Calculate the yield loss using the peak model with energy trader source data

Reference: Bundesnetzagentur (2020). 3.2.3.1 Spitzabrechnung. In Bilanzierungsmodelle und Bestimmung der Ausfallarbeit (p. 9).

Request

curl 'https://api.meteocontrol.de/v2/tickets/45678/yield-losses/peak/energy-trader?from=2022-05-25T00:00:00+00:00&to=2022-05-31T23:59:59+00:00'
<?php
    $yieldLossesCriteria = (new YieldLossesCriteria())
        ->withDateFrom(DateTime::createFromFormat(DATE_ATOM, '2022-05-25T00:00:00+00:00'))
        ->withDateTo(DateTime::createFromFormat(DATE_ATOM, '2022-05-31T23:59:59+00:00'));
    /** @var CalculationResult $calculationResult */
    $calculationResult = $api->ticket(45678)->yieldLosses()->peak()->energyTrader()
        ->get($yieldLossesCriteria);

Response

{
  "data":{
    "result": 69.32,
    "realLostYield": 41.29,
    "totalCompensation": 7.34962,
    "comment": ""
  }
}
<?php
    /** @var CalculationResult $calculationResult */
    echo $calculationResult->result;// 69.32
    echo $calculationResult->realLostYield;// 41.29
    echo $calculationResult->totalCompensation;// 7.34962
    echo $calculationResult->comment;// ""

GET tickets/<ticketId>/yield-losses/peak/energy-trader

Path parameters

Name Type Description
ticketId required integer Ticket ID

Query parameters

Name Type Description
from required dateǀdatetime Start date
to required dateǀdatetime End date

Response

CalculationResult object

Property Type Description
result fixed number Calculated yield loss value
realLostYield fixed number Correction yield loss value (if not specified, the value will be the same as result)
totalCompensation fixed number Estimation amount of the financial compensation (based on the value of realLostYield)
comment fixed string Comment
Calculate the yield loss using the peak model with energy trader source data and save the result

Will create a new record of the yield loss calculation result in the database or rewrite the record if one exists.

Request

curl -i -X PUT \
   -H 'Content-Type:application/json' \
   -d \
'{
  "comment": "New comment"
}' \ 
  'https://api.meteocontrol.de/v2/tickets/45678/yield-losses/peak/energy-trader?from=2022-05-25T00:00:00+00:00&to=2022-05-31T23:59:59+00:00'
<?php
    $yieldLossesCriteria = (new YieldLossesCriteria())
        ->withDateFrom(DateTime::createFromFormat(DATE_ATOM, '2022-05-25T00:00:00+00:00'))
        ->withDateTo(DateTime::createFromFormat(DATE_ATOM, '2022-05-31T23:59:59+00:00'));

    $yieldLoss = new YieldLoss();
    $yieldLoss->comment = 'New comment';

    $api->ticket(45678)->yieldLosses()->peak()->energyTrader()
        ->replace($yieldLossesCriteria, $yieldLoss);

Response



PUT tickets/<ticketId>/yield-losses/peak/energy-trader

Path parameters

Name Type Description
ticketId required integer Ticket ID

Query parameters

Name Type Description
from required dateǀdatetime Start date
to required dateǀdatetime End date

Request headers

Name Type Description
Content-Type required application/json

Request body (JSON)

Property Type Description
comment required stringǀnull Comment

Response

The response body is empty.

Http-Code: 204

Peak (grid operator)
Calculate the yield loss using the peak model with grid operator source data

Reference: Bundesnetzagentur (2020). 3.2.3.1 Spitzabrechnung. In Bilanzierungsmodelle und Bestimmung der Ausfallarbeit (p. 9).

Request

curl 'https://api.meteocontrol.de/v2/tickets/45678/yield-losses/peak/grid-operator?from=2022-05-25T00:00:00+00:00&to=2022-05-31T23:59:59+00:00'
<?php
    $yieldLossesCriteria = (new YieldLossesCriteria())
        ->withDateFrom(DateTime::createFromFormat(DATE_ATOM, '2022-05-25T00:00:00+00:00'))
        ->withDateTo(DateTime::createFromFormat(DATE_ATOM, '2022-05-31T23:59:59+00:00'));
    /** @var CalculationResult $calculationResult */
    $calculationResult = $api->ticket(45678)->yieldLosses()->peak()->gridOperator()
        ->get($yieldLossesCriteria);

Response

{
  "data":{
    "result": 69.32,
    "realLostYield": 41.29,
    "totalCompensation": 7.34962,
    "comment": ""
  }
}
<?php
    /** @var CalculationResult $calculationResult */
    echo $calculationResult->result;// 69.32
    echo $calculationResult->realLostYield;// 41.29
    echo $calculationResult->totalCompensation;// 7.34962
    echo $calculationResult->comment;// ""

GET tickets/<ticketId>/yield-losses/peak/grid-operator

Path parameters

Name Type Description
ticketId required integer Ticket ID

Query parameters

Name Type Description
from required dateǀdatetime Start date
to required dateǀdatetime End date

Response

CalculationResult object

Property Type Description
result fixed number Calculated yield loss value
realLostYield fixed number Correction yield loss value (if not specified, the value will be the same as result)
totalCompensation fixed number Estimation amount of the financial compensation (based on the value of realLostYield)
comment fixed string Comment
Calculate the yield loss using the peak model with grid operator source data and save the result

Will create a new record of the yield loss calculation result in the database or rewrite the record if one exists.

Request

curl -i -X PUT \
   -H 'Content-Type:application/json' \
   -d \
'{
  "comment": "New comment"
}' \ 
  'https://api.meteocontrol.de/v2/tickets/45678/yield-losses/peak/grid-operator?from=2022-05-25T00:00:00+00:00&to=2022-05-31T23:59:59+00:00'
<?php
    $yieldLossesCriteria = (new YieldLossesCriteria())
        ->withDateFrom(DateTime::createFromFormat(DATE_ATOM, '2022-05-25T00:00:00+00:00'))
        ->withDateTo(DateTime::createFromFormat(DATE_ATOM, '2022-05-31T23:59:59+00:00'));

    $yieldLoss = new YieldLoss();
    $yieldLoss->comment = 'New comment';

    $api->ticket(45678)->yieldLosses()->peak()->gridOperator()
        ->replace($yieldLossesCriteria, $yieldLoss);

Response



PUT tickets/<ticketId>/yield-losses/peak/grid-operator

Path parameters

Name Type Description
ticketId required integer Ticket ID

Query parameters

Name Type Description
from required dateǀdatetime Start date
to required dateǀdatetime End date

Request headers

Name Type Description
Content-Type required application/json

Request body (JSON)

Property Type Description
comment required stringǀnull Comment

Response

The response body is empty.

Http-Code: 204

Peak (manual)
Calculate the yield loss using the peak model with manual source data

Reference: Bundesnetzagentur (2020). 3.2.3.1 Spitzabrechnung. In Bilanzierungsmodelle und Bestimmung der Ausfallarbeit (p. 9).

Request

curl 'https://api.meteocontrol.de/v2/tickets/45678/yield-losses/peak/manual?from=2022-05-25T00:00:00+00:00&to=2022-05-31T23:59:59+00:00'
<?php
    $yieldLossesCriteria = (new YieldLossesCriteria())
        ->withDateFrom(DateTime::createFromFormat(DATE_ATOM, '2022-05-25T00:00:00+00:00'))
        ->withDateTo(DateTime::createFromFormat(DATE_ATOM, '2022-05-31T23:59:59+00:00'));
    /** @var CalculationResult $calculationResult */
    $calculationResult = $api->ticket(45678)->yieldLosses()->peak()->manual()
        ->get($yieldLossesCriteria);

Response

{
  "data":{
    "result": 69.32,
    "realLostYield": 41.29,
    "totalCompensation": 7.34962,
    "comment": ""
  }
}
<?php
    /** @var CalculationResult $calculationResult */
    echo $calculationResult->result;// 69.32
    echo $calculationResult->realLostYield;// 41.29
    echo $calculationResult->totalCompensation;// 7.34962
    echo $calculationResult->comment;// ""

GET tickets/<ticketId>/yield-losses/peak/manual

Path parameters

Name Type Description
ticketId required integer Ticket ID

Query parameters

Name Type Description
from required dateǀdatetime Start date
to required dateǀdatetime End date

Response

CalculationResult object

Property Type Description
result fixed number Calculated yield loss value
realLostYield fixed number Correction yield loss value (if not specified, the value will be the same as result)
totalCompensation fixed number Estimation amount of the financial compensation (based on the value of realLostYield)
comment fixed string Comment
Calculate the yield loss using the peak model with manual source data and save the result

Will create a new record of the yield loss calculation result in the database or rewrite the record if one exists.

Request

curl -i -X PUT \
   -H 'Content-Type:application/json' \
   -d \
'{
  "comment": "New comment"
}' \ 
  'https://api.meteocontrol.de/v2/tickets/45678/yield-losses/peak/manual?from=2022-05-25T00:00:00+00:00&to=2022-05-31T23:59:59+00:00'
<?php
    $yieldLossesCriteria = (new YieldLossesCriteria())
        ->withDateFrom(DateTime::createFromFormat(DATE_ATOM, '2022-05-25T00:00:00+00:00'))
        ->withDateTo(DateTime::createFromFormat(DATE_ATOM, '2022-05-31T23:59:59+00:00'));

    $yieldLoss = new YieldLoss();
    $yieldLoss->comment = 'New comment';

    $api->ticket(45678)->yieldLosses()->peak()->manual()
        ->replace($yieldLossesCriteria, $yieldLoss);

Response



PUT tickets/<ticketId>/yield-losses/peak/manual

Path parameters

Name Type Description
ticketId required integer Ticket ID

Query parameters

Name Type Description
from required dateǀdatetime Start date
to required dateǀdatetime End date

Request headers

Name Type Description
Content-Type required application/json

Request body (JSON)

Property Type Description
comment required stringǀnull Comment

Response

The response body is empty.

Http-Code: 204

Peak (static)
Calculate the yield loss using the peak model with static source data

Reference: Bundesnetzagentur (2020). 3.2.3.1 Spitzabrechnung. In Bilanzierungsmodelle und Bestimmung der Ausfallarbeit (p. 9).

Request

curl 'https://api.meteocontrol.de/v2/tickets/45678/yield-losses/peak/static?from=2022-05-25T00:00:00+00:00&to=2022-05-31T23:59:59+00:00'
<?php
    $yieldLossesCriteria = (new YieldLossesCriteria())
        ->withDateFrom(DateTime::createFromFormat(DATE_ATOM, '2022-05-25T00:00:00+00:00'))
        ->withDateTo(DateTime::createFromFormat(DATE_ATOM, '2022-05-31T23:59:59+00:00'));
    /** @var CalculationResult $calculationResult */
    $calculationResult = $api->ticket(45678)->yieldLosses()->peak()->static()
        ->get($yieldLossesCriteria);

Response

{
  "data":{
    "result": 69.32,
    "realLostYield": 41.29,
    "totalCompensation": 7.34962,
    "comment": ""
  }
}
<?php
    /** @var CalculationResult $calculationResult */
    echo $calculationResult->result;// 69.32
    echo $calculationResult->realLostYield;// 41.29
    echo $calculationResult->totalCompensation;// 7.34962
    echo $calculationResult->comment;// ""

GET tickets/<ticketId>/yield-losses/peak/static

Path parameters

Name Type Description
ticketId required integer Ticket ID

Query parameters

Name Type Description
from required dateǀdatetime Start date
to required dateǀdatetime End date

Response

CalculationResult object

Property Type Description
result fixed number Calculated yield loss value
realLostYield fixed number Correction yield loss value (if not specified, the value will be the same as result)
totalCompensation fixed number Estimation amount of the financial compensation (based on the value of realLostYield)
comment fixed string Comment
Calculate the yield loss using the peak model with static source data and save the result

Will create a new record of the yield loss calculation result in the database or rewrite the record if one exists.

Request

curl -i -X PUT \
   -H 'Content-Type:application/json' \
   -d \
'{
  "comment": "New comment"
}' \ 
  'https://api.meteocontrol.de/v2/tickets/45678/yield-losses/peak/static?from=2022-05-25T00:00:00+00:00&to=2022-05-31T23:59:59+00:00'
<?php
    $yieldLossesCriteria = (new YieldLossesCriteria())
        ->withDateFrom(DateTime::createFromFormat(DATE_ATOM, '2022-05-25T00:00:00+00:00'))
        ->withDateTo(DateTime::createFromFormat(DATE_ATOM, '2022-05-31T23:59:59+00:00'));

    $yieldLoss = new YieldLoss();
    $yieldLoss->comment = 'New comment';

    $api->ticket(45678)->yieldLosses()->peak()->static()
        ->replace($yieldLossesCriteria, $yieldLoss);

Response



PUT tickets/<ticketId>/yield-losses/peak/static

Path parameters

Name Type Description
ticketId required integer Ticket ID

Query parameters

Name Type Description
from required dateǀdatetime Start date
to required dateǀdatetime End date

Request headers

Name Type Description
Content-Type required application/json

Request body (JSON)

Property Type Description
comment required stringǀnull Comment

Response

The response body is empty.

Http-Code: 204

Reference component
Calculate the yield loss using the reference component model

Request

curl 'https://api.meteocontrol.de/v2/tickets/456/yield-losses/reference-component?from=2016-11-15T10:00:00+00:00&to=2016-11-15T10:59:59+00:00&affectedInverterId=Id12345.4&referenceInverterIds=Id12345.1,Id12345.2'
<?php
    $referenceComponentCriteria = (new ReferenceComponentCriteria())
        ->withDateFrom(DateTime::createFromFormat(DATE_ATOM, '2016-11-15T10:00:00+00:00'))
        ->withDateTo(DateTime::createFromFormat(DATE_ATOM, '2016-11-15T10:59:59+00:00'))
        ->withAffectedInverterId('Id12345.4')
        ->withReferenceInverterIds('Id12345.1,Id12345.2');
    /** @var CalculationResult $calculationResult */
    $calculationResult = $api->ticket(456)->yieldLosses()->referenceComponent()
        ->get($referenceComponentCriteria);

Response

{
  "data":{
    "result": 69.32,
    "realLostYield": 41.29,
    "totalCompensation": 7.34962,
    "comment": ""
  }
}
<?php
    /** @var CalculationResult $calculationResult */
    echo $calculationResult->result;// 69.32
    echo $calculationResult->realLostYield;// 41.29
    echo $calculationResult->totalCompensation;// 7.34962
    echo $calculationResult->comment;// ""

GET tickets/<ticketId>/yield-losses/reference-component

Path parameters

Name Type Description
ticketId required integer Ticket ID

Query parameters

Name Type Description
from required dateǀdatetime Start date
to required dateǀdatetime End date
affectedInverterId required string Affected inverter ID
referenceInverterIds required string Reference inverter IDs (comma separated)

Response

CalculationResult object

Property Type Description
result fixed number Calculated yield loss value
realLostYield fixed number Correction yield loss value (if not specified, the value will be the same as result)
totalCompensation fixed number Estimation amount of the financial compensation (based on the value of realLostYield)
comment fixed string Comment
Calculate the yield loss using the reference component model and save the result

Will create a new record of the yield loss calculation result in the database or rewrite the record if one exists.

Request

curl -i -X PUT \
   -H 'Content-Type:application/json' \
   -d \
'{
  "realLostYield": 42.38,
  "comment": "New comment"
}' \ 
  'https://api.meteocontrol.de/v2/tickets/456/yield-losses/reference-component?from=2016-11-15T10:00:00+00:00&to=2016-11-15T10:59:59+00:00&affectedInverterId=Id12345.4&referenceInverterIds=Id12345.1,Id12345.2'
<?php
    $referenceComponentCriteria = (new ReferenceComponentCriteria())
        ->withDateFrom(DateTime::createFromFormat(DATE_ATOM, '2016-11-15T10:00:00+00:00'))
        ->withDateTo(DateTime::createFromFormat(DATE_ATOM, '2016-11-15T10:59:59+00:00'))
        ->withAffectedInverterId('Id12345.4')
        ->withReferenceInverterIds('Id12345.1,Id12345.2');

    $yieldLoss = new YieldLoss();
    $yieldLoss->realLostYield = 42.38;
    $yieldLoss->comment = 'New comment';

    $api->ticket(456)->yieldLosses()->referenceComponent()
        ->replace($referenceComponentCriteria, $yieldLoss);

Response



PUT tickets/<ticketId>/yield-losses/reference-component

Path parameters

Name Type Description
ticketId required integer Ticket ID

Query parameters

Name Type Description
from required dateǀdatetime Start date
to required dateǀdatetime End date
affectedInverterId required string Affected inverter ID
referenceInverterIds required string Reference inverter IDs (comma separated)

Request headers

Name Type Description
Content-Type required application/json

Request body (JSON)

Property Type Description
realLostYield required numberǀnull Correction yield loss value
comment required stringǀnull Comment

Response

The response body is empty.

Http-Code: 204

Reference system
Calculate the yield loss using the reference system model

Request

curl 'https://api.meteocontrol.de/v2/tickets/456/yield-losses/reference-system?from=2016-11-15T10:00:00+00:00&to=2016-11-15T10:59:59+00:00&referenceSystemKey=ABCDE'
<?php
    $referenceSystemCriteria = (new ReferenceSystemCriteria())
        ->withDateFrom(DateTime::createFromFormat(DATE_ATOM, '2016-11-15T10:00:00+00:00'))
        ->withDateTo(DateTime::createFromFormat(DATE_ATOM, '2016-11-15T10:59:59+00:00'))
        ->withReferenceSystemKey('ABCDE');
    /** @var CalculationResult $calculationResult */
    $calculationResult = $api->ticket(456)->yieldLosses()->referenceSystem()
        ->get($referenceSystemCriteria);

Response

{
  "data":{
    "result": 69.32,
    "realLostYield": 41.29,
    "totalCompensation": 7.34962,
    "comment": ""
  }
}
<?php
    /** @var CalculationResult $calculationResult */
    echo $calculationResult->result;// 69.32
    echo $calculationResult->realLostYield;// 41.29
    echo $calculationResult->totalCompensation;// 7.34962
    echo $calculationResult->comment;// ""

GET tickets/<ticketId>/yield-losses/reference-system

Path parameters

Name Type Description
ticketId required integer Ticket ID

Query parameters

Name Type Description
from required dateǀdatetime Start date
to required dateǀdatetime End date
referenceSystemKey required string Reference system key

Response

CalculationResult object

Property Type Description
result fixed number Calculated yield loss value
realLostYield fixed number Correction yield loss value (if not specified, the value will be the same as result)
totalCompensation fixed number Estimation amount of the financial compensation (based on the value of realLostYield)
comment fixed string Comment
Calculate the yield loss using the reference system model and save the result

Will create a new record of the yield loss calculation result in the database or rewrite the record if one exists.

Request

curl -i -X PUT \
   -H 'Content-Type:application/json' \
   -d \
'{
  "realLostYield": 42.38,
  "comment": "New comment"
}' \ 
  'https://api.meteocontrol.de/v2/tickets/456/yield-losses/reference-system?from=2016-11-15T10:00:00+00:00&to=2016-11-15T10:59:59+00:00&referenceSystemKey=ABCDE'
<?php
    $referenceSystemCriteria = (new ReferenceSystemCriteria())
        ->withDateFrom(DateTime::createFromFormat(DATE_ATOM, '2016-11-15T10:00:00+00:00'))
        ->withDateTo(DateTime::createFromFormat(DATE_ATOM, '2016-11-15T10:59:59+00:00'))
        ->withReferenceSystemKey('ABCDE');

    $yieldLoss = new YieldLoss();
    $yieldLoss->realLostYield = 42.38;
    $yieldLoss->comment = 'New comment';

    $api->ticket(456)->yieldLosses()->referenceSystem()
        ->replace($referenceSystemCriteria, $yieldLoss);

Response



PUT tickets/<ticketId>/yield-losses/reference-system

Path parameters

Name Type Description
ticketId required integer Ticket ID

Query parameters

Name Type Description
from required dateǀdatetime Start date
to required dateǀdatetime End date
referenceSystemKey required string Reference system key

Request headers

Name Type Description
Content-Type required application/json

Request body (JSON)

Property Type Description
realLostYield required numberǀnull Correction yield loss value
comment required stringǀnull Comment

Response

The response body is empty.

Http-Code: 204

Simplified peak (energy trader)
Calculate the yield loss using the simplified peak model with energy trader source data

Reference: Bundesnetzagentur (2020). 3.2.3.2 Vereinfachte Spitzabrechnung. In Bilanzierungsmodelle und Bestimmung der Ausfallarbeit (p. 9).

Request

curl 'https://api.meteocontrol.de/v2/tickets/45678/yield-losses/simplified-peak/energy-trader?from=2022-05-25T00:00:00+00:00&to=2022-05-31T23:59:59+00:00'
<?php
    $yieldLossesCriteria = (new YieldLossesCriteria())
        ->withDateFrom(DateTime::createFromFormat(DATE_ATOM, '2022-05-25T00:00:00+00:00'))
        ->withDateTo(DateTime::createFromFormat(DATE_ATOM, '2022-05-31T23:59:59+00:00'));
    /** @var CalculationResult $calculationResult */
    $calculationResult = $api->ticket(45678)->yieldLosses()->simplifiedPeak()->energyTrader()
        ->get($yieldLossesCriteria);

Response

{
  "data":{
    "result": 69.32,
    "realLostYield": 41.29,
    "totalCompensation": 7.34962,
    "comment": ""
  }
}
<?php
    /** @var CalculationResult $calculationResult */
    echo $calculationResult->result;// 69.32
    echo $calculationResult->realLostYield;// 41.29
    echo $calculationResult->totalCompensation;// 7.34962
    echo $calculationResult->comment;// ""

GET tickets/<ticketId>/yield-losses/simplified-peak/energy-trader

Path parameters

Name Type Description
ticketId required integer Ticket ID

Query parameters

Name Type Description
from required dateǀdatetime Start date
to required dateǀdatetime End date

Response

CalculationResult object

Property Type Description
result fixed number Calculated yield loss value
realLostYield fixed number Correction yield loss value (if not specified, the value will be the same as result)
totalCompensation fixed number Estimation amount of the financial compensation (based on the value of realLostYield)
comment fixed string Comment
Calculate the yield loss using the simplified peak model with energy trader source data and save the result

Will create a new record of the yield loss calculation result in the database or rewrite the record if one exists.

Request

curl -i -X PUT \
   -H 'Content-Type:application/json' \
   -d \
'{
  "comment": "New comment"
}' \ 
  'https://api.meteocontrol.de/v2/tickets/45678/yield-losses/simplified-peak/energy-trader?from=2022-05-25T00:00:00+00:00&to=2022-05-31T23:59:59+00:00'
<?php
    $yieldLossesCriteria = (new YieldLossesCriteria())
        ->withDateFrom(DateTime::createFromFormat(DATE_ATOM, '2022-05-25T00:00:00+00:00'))
        ->withDateTo(DateTime::createFromFormat(DATE_ATOM, '2022-05-31T23:59:59+00:00'));

    $yieldLoss = new YieldLoss();
    $yieldLoss->comment = 'New comment';

    $api->ticket(45678)->yieldLosses()->simplifiedPeak()->energyTrader()
        ->replace($yieldLossesCriteria, $yieldLoss);

Response



PUT tickets/<ticketId>/yield-losses/simplified-peak/energy-trader

Path parameters

Name Type Description
ticketId required integer Ticket ID

Query parameters

Name Type Description
from required dateǀdatetime Start date
to required dateǀdatetime End date

Request headers

Name Type Description
Content-Type required application/json

Request body (JSON)

Property Type Description
comment required stringǀnull Comment

Response

The response body is empty.

Http-Code: 204

Simplified peak (grid operator)
Calculate the yield loss using the simplified peak model with grid operator source data

Reference: Bundesnetzagentur (2020). 3.2.3.2 Vereinfachte Spitzabrechnung. In Bilanzierungsmodelle und Bestimmung der Ausfallarbeit (p. 9).

Request

curl 'https://api.meteocontrol.de/v2/tickets/45678/yield-losses/simplified-peak/grid-operator?from=2022-05-25T00:00:00+00:00&to=2022-05-31T23:59:59+00:00'
<?php
    $yieldLossesCriteria = (new YieldLossesCriteria())
        ->withDateFrom(DateTime::createFromFormat(DATE_ATOM, '2022-05-25T00:00:00+00:00'))
        ->withDateTo(DateTime::createFromFormat(DATE_ATOM, '2022-05-31T23:59:59+00:00'));
    /** @var CalculationResult $calculationResult */
    $calculationResult = $api->ticket(45678)->yieldLosses()->simplifiedPeak()->gridOperator()
        ->get($yieldLossesCriteria);

Response

{
  "data":{
    "result": 69.32,
    "realLostYield": 41.29,
    "totalCompensation": 7.34962,
    "comment": ""
  }
}
<?php
    /** @var CalculationResult $calculationResult */
    echo $calculationResult->result;// 69.32
    echo $calculationResult->realLostYield;// 41.29
    echo $calculationResult->totalCompensation;// 7.34962
    echo $calculationResult->comment;// ""

GET tickets/<ticketId>/yield-losses/simplified-peak/grid-operator

Path parameters

Name Type Description
ticketId required integer Ticket ID

Query parameters

Name Type Description
from required dateǀdatetime Start date
to required dateǀdatetime End date

Response

CalculationResult object

Property Type Description
result fixed number Calculated yield loss value
realLostYield fixed number Correction yield loss value (if not specified, the value will be the same as result)
totalCompensation fixed number Estimation amount of the financial compensation (based on the value of realLostYield)
comment fixed string Comment
Calculate the yield loss using the simplified peak model with grid operator source data and save the result

Will create a new record of the yield loss calculation result in the database or rewrite the record if one exists.

Request

curl -i -X PUT \
   -H 'Content-Type:application/json' \
   -d \
'{
  "comment": "New comment"
}' \ 
  'https://api.meteocontrol.de/v2/tickets/45678/yield-losses/simplified-peak/grid-operator?from=2022-05-25T00:00:00+00:00&to=2022-05-31T23:59:59+00:00'
<?php
    $yieldLossesCriteria = (new YieldLossesCriteria())
        ->withDateFrom(DateTime::createFromFormat(DATE_ATOM, '2022-05-25T00:00:00+00:00'))
        ->withDateTo(DateTime::createFromFormat(DATE_ATOM, '2022-05-31T23:59:59+00:00'));

    $yieldLoss = new YieldLoss();
    $yieldLoss->comment = 'New comment';

    $api->ticket(45678)->yieldLosses()->simplifiedPeak()->gridOperator()
        ->replace($yieldLossesCriteria, $yieldLoss);

Response



PUT tickets/<ticketId>/yield-losses/simplified-peak/grid-operator

Path parameters

Name Type Description
ticketId required integer Ticket ID

Query parameters

Name Type Description
from required dateǀdatetime Start date
to required dateǀdatetime End date

Request headers

Name Type Description
Content-Type required application/json

Request body (JSON)

Property Type Description
comment required stringǀnull Comment

Response

The response body is empty.

Http-Code: 204

Simplified peak (manual)
Calculate the yield loss using the simplified peak model with manual source data

Reference: Bundesnetzagentur (2020). 3.2.3.2 Vereinfachte Spitzabrechnung. In Bilanzierungsmodelle und Bestimmung der Ausfallarbeit (p. 9).

Request

curl 'https://api.meteocontrol.de/v2/tickets/45678/yield-losses/simplified-peak/manual?from=2022-05-25T00:00:00+00:00&to=2022-05-31T23:59:59+00:00'
<?php
    $yieldLossesCriteria = (new YieldLossesCriteria())
        ->withDateFrom(DateTime::createFromFormat(DATE_ATOM, '2022-05-25T00:00:00+00:00'))
        ->withDateTo(DateTime::createFromFormat(DATE_ATOM, '2022-05-31T23:59:59+00:00'));
    /** @var CalculationResult $calculationResult */
    $calculationResult = $api->ticket(45678)->yieldLosses()->simplifiedPeak()->manual()
        ->get($yieldLossesCriteria);

Response

{
  "data":{
    "result": 69.32,
    "realLostYield": 41.29,
    "totalCompensation": 7.34962,
    "comment": ""
  }
}
<?php
    /** @var CalculationResult $calculationResult */
    echo $calculationResult->result;// 69.32
    echo $calculationResult->realLostYield;// 41.29
    echo $calculationResult->totalCompensation;// 7.34962
    echo $calculationResult->comment;// ""

GET tickets/<ticketId>/yield-losses/simplified-peak/manual

Path parameters

Name Type Description
ticketId required integer Ticket ID

Query parameters

Name Type Description
from required dateǀdatetime Start date
to required dateǀdatetime End date

Response

CalculationResult object

Property Type Description
result fixed number Calculated yield loss value
realLostYield fixed number Correction yield loss value (if not specified, the value will be the same as result)
totalCompensation fixed number Estimation amount of the financial compensation (based on the value of realLostYield)
comment fixed string Comment
Calculate the yield loss using the simplified peak model with manual source data and save the result

Will create a new record of the yield loss calculation result in the database or rewrite the record if one exists.

Request

curl -i -X PUT \
   -H 'Content-Type:application/json' \
   -d \
'{
  "comment": "New comment"
}' \ 
  'https://api.meteocontrol.de/v2/tickets/45678/yield-losses/simplified-peak/manual?from=2022-05-25T00:00:00+00:00&to=2022-05-31T23:59:59+00:00'
<?php
    $yieldLossesCriteria = (new YieldLossesCriteria())
        ->withDateFrom(DateTime::createFromFormat(DATE_ATOM, '2022-05-25T00:00:00+00:00'))
        ->withDateTo(DateTime::createFromFormat(DATE_ATOM, '2022-05-31T23:59:59+00:00'));

    $yieldLoss = new YieldLoss();
    $yieldLoss->comment = 'New comment';

    $api->ticket(45678)->yieldLosses()->simplifiedPeak()->manual()
        ->replace($yieldLossesCriteria, $yieldLoss);

Response



PUT tickets/<ticketId>/yield-losses/simplified-peak/manual

Path parameters

Name Type Description
ticketId required integer Ticket ID

Query parameters

Name Type Description
from required dateǀdatetime Start date
to required dateǀdatetime End date

Request headers

Name Type Description
Content-Type required application/json

Request body (JSON)

Property Type Description
comment required stringǀnull Comment

Response

The response body is empty.

Http-Code: 204

Simplified peak (static)
Calculate the yield loss using the simplified peak model with static source data

Reference: Bundesnetzagentur (2020). 3.2.3.2 Vereinfachte Spitzabrechnung. In Bilanzierungsmodelle und Bestimmung der Ausfallarbeit (p. 9).

Request

curl 'https://api.meteocontrol.de/v2/tickets/45678/yield-losses/simplified-peak/static?from=2022-05-25T00:00:00+00:00&to=2022-05-31T23:59:59+00:00'
<?php
    $yieldLossesCriteria = (new YieldLossesCriteria())
        ->withDateFrom(DateTime::createFromFormat(DATE_ATOM, '2022-05-25T00:00:00+00:00'))
        ->withDateTo(DateTime::createFromFormat(DATE_ATOM, '2022-05-31T23:59:59+00:00'));
    /** @var CalculationResult $calculationResult */
    $calculationResult = $api->ticket(45678)->yieldLosses()->simplifiedPeak()->static()
        ->get($yieldLossesCriteria);

Response

{
  "data":{
    "result": 69.32,
    "realLostYield": 41.29,
    "totalCompensation": 7.34962,
    "comment": ""
  }
}
<?php
    /** @var CalculationResult $calculationResult */
    echo $calculationResult->result;// 69.32
    echo $calculationResult->realLostYield;// 41.29
    echo $calculationResult->totalCompensation;// 7.34962
    echo $calculationResult->comment;// ""

GET tickets/<ticketId>/yield-losses/simplified-peak/static

Path parameters

Name Type Description
ticketId required integer Ticket ID

Query parameters

Name Type Description
from required dateǀdatetime Start date
to required dateǀdatetime End date

Response

CalculationResult object

Property Type Description
result fixed number Calculated yield loss value
realLostYield fixed number Correction yield loss value (if not specified, the value will be the same as result)
totalCompensation fixed number Estimation amount of the financial compensation (based on the value of realLostYield)
comment fixed string Comment
Calculate the yield loss using the simplified peak model with static source data and save the result

Will create a new record of the yield loss calculation result in the database or rewrite the record if one exists.

Request

curl -i -X PUT \
   -H 'Content-Type:application/json' \
   -d \
'{
  "comment": "New comment"
}' \ 
  'https://api.meteocontrol.de/v2/tickets/45678/yield-losses/simplified-peak/static?from=2022-05-25T00:00:00+00:00&to=2022-05-31T23:59:59+00:00'
<?php
    $yieldLossesCriteria = (new YieldLossesCriteria())
        ->withDateFrom(DateTime::createFromFormat(DATE_ATOM, '2022-05-25T00:00:00+00:00'))
        ->withDateTo(DateTime::createFromFormat(DATE_ATOM, '2022-05-31T23:59:59+00:00'));

    $yieldLoss = new YieldLoss();
    $yieldLoss->comment = 'New comment';

    $api->ticket(45678)->yieldLosses()->simplifiedPeak()->static()
        ->replace($yieldLossesCriteria, $yieldLoss);

Response



PUT tickets/<ticketId>/yield-losses/simplified-peak/static

Path parameters

Name Type Description
ticketId required integer Ticket ID

Query parameters

Name Type Description
from required dateǀdatetime Start date
to required dateǀdatetime End date

Request headers

Name Type Description
Content-Type required application/json

Request body (JSON)

Property Type Description
comment required stringǀnull Comment

Response

The response body is empty.

Http-Code: 204

CMMS

This API is currently in Beta status and may change before the final release

Access to the CMMS endpoints requires to have VCOM CMMS activated. Please contact our sales department if you are interested.

Systems

Get all CMMS systems

Request

curl 'https://api.meteocontrol.de/v2/cmms/systems'
<?php
    /** @var CmmsSystem[] $cmmsSystems */
    $cmmsSystems = $api->cmms()->systems()->get();

Response

{
  "data": [
    {
      "key": "ABCDE",
      "name": "PV system",
      "renew": 1,
      "activeUntil": "2021-12-31",
      "activeSince": "2020-01-01"
    }
  ]
}
<?php
    /** @var CmmsSystem[] $cmmsSystems */
    echo $cmmsSystems[0]->key;// ABCDE
    echo $cmmsSystems[0]->name;// PV system
    echo $cmmsSystems[0]->renew;// 1
    echo $cmmsSystems[0]->activeUntil->format('Y-m-d');// 2021-12-31
    echo $cmmsSystems[0]->activeSince->format('Y-m-d');// 2020-01-01

GET systems

Returns an array of CMMS system objects.

Response

CmmsSystem object

Property Type Description
key fixed string Identification key of the system
name fixed string System name
renew fixed (0ǀ1ǀnull) Renew state
activeUntil fixed datetimeǀnull License active until date
activeSince fixed datetimeǀnull License active since date

Work orders

Get all work orders

Request

curl 'https://api.meteocontrol.de/v2/cmms/workorders?systemKey=ABCDE'
<?php
    $systemCriteria = (new SystemCriteria())
        ->withSystemKey('ABCDE');
    /** @var WorkOrder[] $workOrders */
    $cmmsSystems = $api->cmms()->workOrders()->get($systemCriteria);

Response

{
  "data": [
    {
      "workOrderId": 123,
      "title": "work order title",
      "lastChangedAt": "2020-08-12T00:00:00+00:00"
    }
  ]
}
<?php
    /** @var WorkOrder[] $workOrders */
    echo $workOrders[0]->workOrderId;// 123
    echo $workOrders[0]->title;// work order title
    echo $workOrders[0]->lastChangedAt->format(DATE_ATOM);// 2020-08-12T00:00:00+00:00

GET workorders

Returns an array of work order objects.

Query parameters

Name Type Description
systemKey optional string Identification key of the system

Response

WorkOrder object

Property Type Description
workOrderId fixed integer Work order ID
title fixed string Work order title
lastChangedAt fixed datetimeǀnull Last change timestamp in UTC timezone

Get single work order

Request

curl 'https://api.meteocontrol.de/v2/cmms/workorders/123'
<?php
    /** @var WorkOrderDetail $workOrder */
    $workOrder = $api->cmms()->workOrder(123)->get();

Response

{
  "data": {
    "workOrderId": 123,
    "ticketId": 12345,
    "systemKey": "ABCDE",
    "title": "work order title",
    "description": "work order description",
    "status": "processed",
    "dueAt": "2021-07-08T00:00:00+00:00",
    "dueDate": "2021-07-08",
    "createdAt": "2020-07-08T06:39:58+00:00",
    "completedAt": null,
    "lastChangedAt": "2020-08-12T00:00:00+00:00",
    "assignee": {
      "username": "user-name",
      "status": "accepted",
      "statusDateAt": "2020-08-12T00:00:00+00:00",
      "statusReason": null
    }
  }
}
<?php
    /** @var WorkOrderDetail[] $workOrder */
    echo $workOrder->workOrderId;// 123
    echo $workOrder->ticketId;// 12345
    echo $workOrder->systemKey;// ABCDE
    echo $workOrder->title;// work order title
    echo $workOrder->description;// work order description
    echo $workOrder->status;// processed
    echo $workOrder->dueAt->format(DATE_ATOM);// 2021-07-08T00:00:00+00:00
    echo $workOrder->dueDate->format('Y-m-d');// 2021-07-08
    echo $workOrder->createdAt->format(DATE_ATOM);// 2020-07-08T06:39:58+00:00
    echo $workOrder->lastChangedAt->format(DATE_ATOM);// 2020-08-12T00:00:00+00:00
    echo $workOrder->assignee->username;// user-name
    echo $workOrder->assignee->status;// accepted
    echo $workOrder->assignee->statusDateAt->format(DATE_ATOM);// 2020-08-12T00:00:00+00:00
    echo $workOrder->assignee->statusReason;// null

GET workorders/<workOrderId>

Path parameters

Name Type Description
workOrderId required integer Work order ID

Response

WorkOrderDetail object

Property Type Description
workOrderId fixed integer Work order ID
ticketId fixed integer Ticket ID
systemKey fixed string Identification key of the system
title fixed string Work order title
description fixed string Work order description
status fixed (closedǀdeclinedǀinProgressǀopenǀprocessed) Work order status
dueAt fixed string Work order due date (deprecated)
dueDate fixed string Work order due date
createdAt fixed datetime Created timestamp in UTC timezone
lastChangedAt fixed datetimeǀnull Last change timestamp in UTC timezone
assignee fixed array username string, status string, statusDateAt datetime, statusReason string

Forms

Get all work order forms

Request

curl 'https://api.meteocontrol.de/v2/cmms/workorders/123/forms'
<?php
    /** @var WorkOrderForm[] $forms */
    $forms = $api->cmms()->workOrder(123)->forms()->get();

Response

{
  "data": [
    {
      "formId": 456,
      "title": "form title",
      "lastChangedAt": "2020-10-22T00:00:00+00:00"
    }
  ]
}
<?php
    /** @var WorkOrderForm[] $forms */
    echo $forms[0]->formId;// 456
    echo $forms[0]->title;// form title
    echo $forms[0]->lastChangedAt->format(DATE_ATOM);// 2020-10-22T00:00:00+00:00

GET workorders/<workOrderId>/forms

Returns an array of work order form objects.

Path parameters

Name Type Description
workOrderId required integer Work order ID

Response

WorkOrderForm object

Property Type Description
formId fixed integer Form ID
title fixed string Form title
lastChangedAt fixed datetimeǀnull Last change timestamp in UTC timezone

Get single work order form

Request

curl 'https://api.meteocontrol.de/v2/cmms/workorders/123/forms/456'
<?php
    /** @var WorkOrderFormDetail $form */
    $form = $api->cmms()->workOrder(123)->form(456)->get();

Response

{
  "data": {
    "formId": 456,
    "workOrderId": 123,
    "title": "form title",
    "description": "form description",
    "form": "{\"elements\":[{\"label\":\"Erste Seite\",\"component\":\"page\"}]}",
    "data": "{}",
    "originalData": null,
    "savedAt": "2020-05-18T13:14:45+00:00",
    "createdAt": "2020-05-18T13:14:45+00:00",
    "completedAt": "2020-10-22T00:00:00+00:00",
    "lastChangedAt": "2020-10-22T00:00:00+00:00",
    "completedBy": "user-name",
    "changedBy": "user-name",
    "editable": false
  }
}
<?php
    /** @var WorkOrderFormDetail[] $form */
    echo $form->formId;// 456
    echo $form->workOrderId;// 123
    echo $form->title;// form title
    echo $form->description;// form description
    echo $form->form;// {"elements":[{"label":"Erste Seite","component":"page"}]}
    echo $form->data;// {}
    echo $form->originalData;// null
    echo $form->savedAt->format(DATE_ATOM);// 2020-05-18T13:14:45+00:00
    echo $form->createdAt->format(DATE_ATOM);// 2020-05-18T13:14:45+00:00
    echo $form->completedAt->format(DATE_ATOM);// 2020-10-22T00:00:00+00:00
    echo $form->lastChangedAt->format(DATE_ATOM);// 2020-10-22T00:00:00+00:00
    echo $form->completedBy;// user-name
    echo $form->changedBy;// user-name
    echo $form->editable;// false

GET workorders/<workOrderId>/forms/<formId>

Path parameters

Name Type Description
workOrderId required integer Work order ID
formId required integer Form ID

Response

WorkOrderFormDetail object

Property Type Description
formId fixed integer Form ID
workOrderId fixed integer Work order ID
title fixed string Form title
description fixed string Form description
form fixed string Form pattern
data fixed string Form data in JSON format
originalData fixed string Original data in JSON format
savedAt fixed datetimeǀnull Saved timestamp in UTC timezone
createdAt fixed datetime Created timestamp in UTC timezone
completedAt fixed datetimeǀnull Completed timestamp in UTC timezone
lastChangedAt fixed datetimeǀnull Last change timestamp in UTC timezone
completedBy fixed stringǀnull Completed by user
changedBy fixed stringǀnull Changed by user
editable fixed bool Form editable

Alarms

Types

Alarm types

Type Description
total-outage System or inverter total outage
data-outage Component delivers no data
communication-outage System or datalogger-wide communication problem
misproduction System or inverter under-performing
string-outage One or more strings of stringbox in outage
sensor-outage Strange behaviour of irradiance sensor detected
battery-charge-level Battery state of charge not within a user-configurable range
custom Custom alarm configured by a user

Component types

Type Description
system Whole system or value on system level affected
subsystem Substation (currently unused)
datalogger Only used for communication issues
inverter
sensor
meter
ppc
battery
tracker
stringbox
status
genset

Objects

Component

Property Type Description
id fixed string
type fixed ComponentType
name fixed string

Alarm

Property Type Description
id fixed integer
alarmType fixed AlarmType
component fixed Component
systemKey fixed string Identification key of the system
ticketId fixed numberǀnull Id of assigned ticket, null if not assigned to a ticket
createdAt fixed datetime Created date in system timezone
lastChangedAt fixed datetime Last change date in system timezone
startedAt fixed datetime Started date in system timezone
status fixed (openǀclosed)
severity fixed (normalǀhighǀcritical)
duration fixed string ISO-8601 duration
affectedPower fixed number In percent of installed system power, 0 if not applicable
losses fixed numberǀnull Estimated losses due to alarm in kWh, null if unavailable

Get all alarms

Request

curl 'https://api.meteocontrol.de/v2/alarms?
severity=high,critical&status=open&systemKey=ABCDE
&lastChangedAt[from]=2022-04-01T00:00:00+02:00
&lastChangedAt[to]=2022-04-30T23:59:59+02:00
&startedAt[from]=2022-04-01T00:00:00+02:00
&startedAt[to]=2022-04-30T23:59:59+02:00'
<?php
$criteria = (new AlarmsCriteria())
    ->withSystemKey("ABCDE")
    ->withSeverity(Alarm::SEVERITY_HIGH)
    ->withSeverity(Alarm::SEVERITY_CRITICAL)
    ->withStatus(Alarm::STATUS_OPEN)
    ->withLastChangedAtFrom(new DateTime("2022-04-01T00:00:00+02:00"))
    ->withLastChangedAtTo(new DateTime("2022-04-30T23:59:59+02:00"))
    ->withStartedAtFrom(new DateTime("2022-04-01T00:00:00+02:00"))
    ->withStartedAtTo(new DateTime("2022-04-30T23:59:59+02:00"));
$alarms = $api->alarms()->find($criteria);

Response

{
  "data": [
    {
      "id": 123,
      "systemKey": "ABCDE",
      "ticketId": null,
      "alarmType": "misproduction",
      "component": {
          "id": "Id123.1",
          "type": "inverter",
          "name": "Inverter 1"
      },
      "createdAt": "2022-04-01T015:35:00+02:00",
      "lastChangedAt": "2022-04-10T09:15:00+02:00",
      "startedAt": "2022-04-01T015:35:00+02:00",
      "status": "open",
      "severity": "high",
      "duration": "PT300S",
      "affectedPower": 20.0,
      "losses": 12.4
    },
    {
      "id": 456,
      "systemKey": "ABCDE",
      "ticketId": null,
      "alarmType": "sensor-outage",
      "component": {
          "id": "",
          "type": "system",
          "name": "Testsystem G_M0"
      },
      "createdAt": "2022-04-03T07:50:00+02:00",
      "lastChangedAt": "2022-04-03T09:50:00+02:00",
      "startedAt": "2022-04-03T07:50:00+02:00",
      "status": "open",
      "severity": "critical",
      "duration": "PT6H",
      "affectedPower": 0.0,
      "losses": null
    }
  ]
}

GET alarms

Query parameters

Name Type Description
ticketId optional integer Can contain comma delimited ticket ids
alarmType optional AlarmType Can contain comma delimited alarm types
componentType optional Component Can contain comma delimited component types
lastChangedAt[from] optional datetime Start date
lastChangedAt[to] optional datetime End date
createdAt[from] optional datetime Start date
createdAt[to] optional datetime End date
startedAt[from] optional datetime Start date
startedAt[to] optional datetime End date
status optional (openǀclosed) Can contain comma delimited status, defaults to open if not specified
severity optional (normalǀhighǀcritical) Can contain comma delimited severity types
systemKey optional string Can contain comma delimited system keys


Response

A list of Alarm objects. Only the 500 last updated entries will be returned.

Get single alarm

Request

curl 'https://api.meteocontrol.de/v2/alarms/789'
<?php

$alarm = $api->alarm(789)->get();

Response

{
  "data": {
    "id": 789,
    "systemKey": "ABCDE",
    "ticketId": null,
    "alarmType": "total-outage",
    "component": {
        "id": "",
        "type": "system",
        "name": "Testsystem"
    },
    "createdAt": "2016-01-01T12:00:00+02:00",
    "lastChangedAt": "2016-01-01T13:00:00+02:00",
    "startedAt": "2016-01-01T12:00:00+02:00",
    "status": "closed",
    "severity": "critical",
    "duration": "PT1H",
    "affectedPower": 100.0,
    "losses": 28.3
  }
}

GET alarms/<alarmId>

Path parameters

Name Type Description
alarmId required integer Alarm ID

Response

A single Alarm object

Update single alarm

Request

curl -i -X PATCH \
   -H "Content-Type:application/json" \
   -d \
'{
  "ticketId": 12345
}' \
 'https://api.meteocontrol.de/v2/alarms/789'
<?php
    $alarm = new Alarm();
    $alarm->ticketId = 12345;
    $api->alarm(789)->update($alarm);

Response



PATCH alarms/<alarmId>

Path parameters

Name Type Description
alarmId required integer Alarm ID

Request headers

Name Type Description
Content-Type required application/json

Request body (JSON)

Name Type Description
ticketId required integerǀnull Ticket ID

Response

Status code Description
204 If the alarm has updated
403 User is not authorized to access alarm

Close single alarm

Request

curl -i -X POST \
   -d \
 'https://api.meteocontrol.de/v2/alarms/789/close'
<?php
    $api->alarm(789)->close();

Response



POST alarms/<alarmId>

Path parameters

Name Type Description
alarmId required integer Alarm ID

Response

Status code Description
204 If the alarm has set to close
403 User is not authorized to access alarm

Login

OAuth Authentication

Request

# To get a new access token by password grant
curl -X POST \
   https://api.meteocontrol.de/v2/login \ 
   -H 'content-type: application/x-www-form-urlencoded' \
   -H 'x-api-key: <apiKey>' \
   -d 'grant_type=password' \
   -d 'username=vcomUsername' \
   -d 'password=strongPassword' \
   -d 'client_id=vcom-api' \
   -d 'client_secret=AYB=~9_f-BvNoLt8+x=3maCq)>/?@Nom'

# To get a new access token by refresh token grant
curl -X POST \
   https://api.meteocontrol.de/v2/login \ 
   -H 'content-type: application/x-www-form-urlencoded' \
   -H 'x-api-key: <apiKey>' \
   -d 'grant_type=refresh_token' \
   -d 'refresh_token=yourOldRefreshToken' \
   -d 'client_id=vcom-api' \
   -d 'client_secret=AYB=~9_f-BvNoLt8+x=3maCq)>/?@Nom'

The vcom-api-client handles token retrieving and refreshing for you automatically.

Response

{
    "token_type": "Bearer",
    "expires_in": 518400,
    "access_token": "yourAccessToken",
    "refresh_token": "yourRefreshToken"
}
The vcom-api-client handles token retrieving and refreshing for you automatically.

POST login

Body (Form) parameters

Name Type Description
grant_type required string (passwordǀrefresh_token)
client_id required string The client ID: vcom-api
client_secret required string The client secret: AYB=~9_f-BvNoLt8+x=3maCq)>/?@Nom
username required string Your username to login VCOM
password required string Your password to login VCOM


Request number limitation

OAuth Token retrieval and refreshing is also subject to rate limiting, please re-use your access token.

Interval Limitation
1 Minute 10
1 Day 7200

Every response contains the current rate limit in its headers:

Header field name Description
X-RateLimit-Reset-Minute The time at which the current minute rate limit resets in RFC 7231 format.
X-RateLimit-Remaining-Minute The number of requests remaining in the current minute rate limit window.
X-RateLimit-Reset-Day The time at which the current day rate limit resets in RFC 7231 format.
X-RateLimit-Remaining-Day The number of requests remaining in the current day rate limit window.


Response

OAuth credential object

Property Type Description
token_type fixed string
expires_in fixed integer The token valid duration in seconds
access_token fixed string The access token to be used in OAuth Bearer header
refresh_token fixed string The refresh token to be used to get a new access token by refresh token grant

VCOM-API Migrations

v1 to v2

API versioning

The version of the API is appended to the base URL. No version in the URL defaults to the oldest available API version for backwards compatibility reasons.

Version Base Url
v1 https://api.meteocontrol.de
v1 https://api.meteocontrol.de/v1
v2 https://api.meteocontrol.de/v2

Software End of Life for v1

VCOM API v1 will no longer be available after June 1, 2019

Authorization

VCOM API v2 officially supports OAuth 2.0, and basic authorization is also available but becomes deprecated.

Changed Endpoints

  1. Systems measurements
    • Allow multiple abbreviations now
  2. Basics measurements
    • The JSON response format is changed
    • Allow multiple abbreviations now
  3. Calculations measurements
    • The JSON response format is changed
    • Allow multiple abbreviations now
  4. Get all tickets
    • The JSON response no longer contains ‘assignee’, 'causeId’, 'includeInReports’, 'fieldService’ and 'outage’ information

System measurements

From now on the system measurements endpoint can deliver not just one measurement for all systems of your park but up to 5 measurements at once.

Basics measurements

From now on the basics measurements endpoint can deliver not just one measurement for all systems of your park but up to 5 measurements at once.

Consider given url:
https://api.meteocontrol.de/systems/ABCDE/basics/abbreviations/E_Z_EVU/measurements?from=2016-01-01T00:00:00+02:00&to=2016-01-01T00:15:00+02:00
The response format changed as follows:

Before

{
  "data": [
    {
      "timestamp": "2016-01-01T00:00:00+02:00",
      "value": 0
    },
    {
      "timestamp": "2016-01-01T00:15:00+02:00",
      "value": 0
    }
  ]
}

After

{
  "data": {
    "E_Z_EVU": [
      {
        "timestamp": "2016-01-01T00:00:00+02:00",
        "value": 0
      },
      {
        "timestamp": "2016-01-01T00:15:00+02:00",
        "value": 0
      }
    ]
  }
}

Calculations measurements

From now on the calculations measurements endpoint can deliver not just one measurement for all systems of your park but up to 5 measurements at once.

Consider given url:
https://api.meteocontrol.de/systems/ABCDE/calculations/abbreviations/E_N/measurements?from=2016-01-01T00:00:00+02:00&to=2016-01-01T00:15:00+02:00
The response format changed as follows:

Before

{
  "data": [
    {
      "timestamp": "2016-01-01T00:00:00+02:00",
      "value": 0
    },
    {
      "timestamp": "2016-01-01T00:15:00+02:00",
      "value": 0
    }
  ]
}

After

{
  "data": {
    "E_N": [
      {
        "timestamp": "2016-01-01T00:00:00+02:00",
        "value": 0
      },
      {
        "timestamp": "2016-01-01T00:15:00+02:00",
        "value": 0
      }
    ]
  }
}

New version 2 vcom-api-client released

To quickly get started you may use the new vcom-api-client tagged with version 2 from this repository

Removal of deprecated properties

With the new version 2 all deprecated properties were removed and aren’t supported anymore.

Endpoint name Deprecated property Property to use
Get all tickets lastChange[from] lastChangedAt[from]
Get all tickets lastChange[to] lastChangeAt[to]
Get all tickets date[from] createdAt[from]
Get all tickets date[to] createdAt[to]
Get all tickets rectifiedOn[from] rectifiedAt[from]
Get all tickets rectifiedOn[to] rectifiedAt[to]
Get single ticket date createdAt
Get single ticket lastChange lastChangedAt
Get single ticket rectifiedOn rectifiedAt
Get single ticket causeId cause
Update a ticket rectifiedOn rectifiedAt
Create a ticket date createdAt
Get single attachment created createdAt
Get all comments date createdAt
Get single comment date createdAt
Get all Histories for a ticket timestamp createdAt

Changelog

Date Description
2018-11-29 Basics, Calculations and systems abbreviation measurement support multiple abbreviations in request
2019-01-16 Forecasts endpoint introduced
2019-03-12 New abbreviation CO2 under calculations
2019-03-13 Remove the limitation of year resolution in measurement endpoints
2019-06-26 Introduce filters for active only strings and/or abbreviations to bulk endpoints
2019-07-22 Add rate-limit for login endpoint
2019-08-06 New abbreviation CO2 under systems abbreviations, and add includeInterval option for bulk endpoints
2019-11-27 Add virtual-meters endpoints
2019-12-04 Add trackers endpoints
2020-03-30 Extending get tickets with fieldService response
2020-04-01 Extend system endpoint to return simulation method
2020-06-22 Introduce filter for deviceIds to bulk endpoints
2020-12-10 Add cmms endpoints
2021-02-09 Add simulation endpoints
2021-03-02 Add status device endpoints
2022-01-13 Add cause property for ticket and ability to manipulate ticket cause
2022-01-13 Add forecast endpoint
2022-04-01 Add alarms endpoints
2022-04-20 Add ability to manipulate Ticket fieldService property
2022-08-22 Add environmental-savings endpoints
2022-12-15 Add yield-losses endpoints
2023-09-07 Add satellite irradiance endpoint
2023-10-04 Add endpoints with different power control sources for yield loss calculation
2023-10-05 Triple minute rate
2023-10-31 Remove the yield-losses endpoints that didn’t specify the power control sources
2023-12-25 Add kpi targets endpoints
2023-12-27 Support the yield loss calculation formulas defined by Bundesnetzagentur in 2020 and deprecate the 2017 formulas
2024-01-10 Add category parameter to the forecast endpoint
2024-01-29 Remove v1
2024-04-10 Implement the replace action for all yield-losses endpoints
2024-06-20 Add ticket outage endpoints
2024-06-30 Remove the deprecated yield-losses endpoints that use the 2017 formulas
2024-07-31 Add single alarm endpoints to assign/unassign ticket and close alarm
2024-08-01 Add manual and static yield loss calculation option to API
2024-08-07 Add last data input endpoint
2024-08-22 Add new property additionalInformation to SystemDetail model
2024-08-28 Add ticket yield-losses endpoint
2024-10-23 Add inverter PR endpoint
2024-11-05 Disallow users from changing the real yield loss values with the flat-rate, peak, and simplified peak yield-losses endpoints
2024-11-18 Add uid/serial property in all data device models