# Beschrijving restAPI's (v2)

Alle beschikbare gegevens kunnen via restAPI call's bij de DSMR-logger worden opgevraagd. De restAPI's zijn verdeeld in drie groepen. Informatie die met de hardware en firmware te maken heeft (`/dev`), informatie die met de Slimme Meter te maken heeft (`/sm`) en historische gegevens die, aan de hand van de door de Slimme Meter afgegeven gegevens, door de DSMR-logger in bestanden worden opgeslagen (`/hist`).

* [DSMR-logger gerelateerde restAPI's](https://mrwheel-docs.gitbook.io/dsmrlogger32/beschrijving-restapis-v2/dsmr-logger-gerelateerde-restapis)
* [Slimme Meter gerelateerde restAPI's](https://mrwheel-docs.gitbook.io/dsmrlogger32/beschrijving-restapis-v2/slimme-meter-gerelateerde-restapis)
* [Historie gerelateerde restAPI's](https://mrwheel-docs.gitbook.io/dsmrlogger32/beschrijving-restapis-v2/historische-gegevens-gerelateerde-restapis)

## Aanroepen restAPI vanuit verschillende systemen

Een restAPI kan op verschillende manieren worden aangeroepen.

* [Javascript](#javascript)
* [Unix command](#unix-command)
* [Home Assistant](#home-assistant)
* [Arduino Mega met Ethernet Shield](https://mrwheel-docs.gitbook.io/dsmrlogger32/beschrijving-restapis-v2/arduino-mega-met-ethernet-shield)
* [ESP8266](https://mrwheel-docs.gitbook.io/dsmrlogger32/beschrijving-restapis-v2/esp8266-wifi)
* [ESP32](https://mrwheel-docs.gitbook.io/dsmrlogger32/beschrijving-restapis-v2/esp32-wifi)

### Javascript

```
    fetch(APIGW+"v2/dev/time")
      .then(response => response.json())
      .then(json => {
        //console.log("parsed .., data is ["+ JSON.stringify(json)+"]");
        data = json.devtime;
        for( let field in data )
        {
          //console.log("dev/time: field["+field+"], value["+data[field]+"]");
          if (field == "time")
          {
            //console.log("Got new time ["+data[field]+"]");
            document.getElementById('theTime').innerHTML = data[field];
          }
        }
      })
      .catch(function(error) {
        var p = document.createElement('p');
        p.appendChild(
          document.createTextNode('Error: ' + error.message)
        );
      });     
```

### Unix command

```
curl http://dsmr-api.local/api/v2/dev/time
```

Geeft dit als output:

```
{
  "devtime": {
    "timestamp": "230104142233W",
    "time": "04-01-2023 14:22:17",
    "time_rev": "2023-01-04 14:22:17",
    "epoch": 1672838537,
    "uptime": "1(d)-22:27(H:m)",
    "uptime_secs": 167241
  }
}
```

### Home Assistant

configuration.yaml:

```
### configuration.yaml
### DSMRloggerAPI 

    <<help>>
```

geeft dit resultaat:

{% hint style="danger" %} <mark style="color:red;">Heeft iemand een werkend Home-Assistant yaml bestand dat hij wil delen?</mark>
{% endhint %}

De source van deze code kun je op [github](https://github.com/mrWheel/readDSMR-logger) vinden.

### Andere systemen

Veel andere systemen hebben hun eigen manier om restAPI's op te vragen. Lees hiervoor de betreffende documentatie.
