API Dokumentation

Die Dokumentation der überarbeiteten Version der SmartDog Portal API (JSON)

Allgemeines

Revision History

Name Datum Grund für Änderungen
Jakob Hütter 24.02.2025 Erstellung der Dokumentation

Vertraulichkeitserklärung

Der Inhalt dieses Dokuments ist vertraulich und ausschließlich für die adressierte Person bestimmt. Eine Weitergabe an Dritte ist ohne vorherige Zustimmung des Geschäftsführers der ecodata solutions GmbH strengstens untersagt.

Es ist nicht gestattet, dieses Dokument ganz oder teilweise zu reproduzieren, zu verbreiten oder dessen Inhalte offenzulegen.

Die Informationen in diesem Dokument wurden nicht unabhängig überprüft und stellen keine umfassende oder vollständige Darstellung aller relevanten Informationen dar. ecodata solutions GmbH sowie der Geschäftsführer, Mitarbeiter oder Berater übernehmen keine Haftung für die Richtigkeit oder Vollständigkeit der bereitgestellten Informationen.

Jegliche Vervielfältigung, Verbreitung, Modifikation oder Veröffentlichung dieser Materialien ist strengstens untersagt.


Referenzen


Dokumentenspeicherort

Dieses Dokument kann unter folgender URL gefunden werden:
https://anleitung.smart-dog.eu/books/api-dokumentationn

© 2025 ecodata solutions GmbH


SmartDog Web API

Die API

Die SmartDog API ist eine serverseitige API, die es Benutzern ermöglicht, direkt auf die Daten ihrer PowerDog-Geräte zuzugreifen.

JSON API-Kommunikation

Die PowerDog API nutzt das JSON-Format für Anfragen und Antworten. API-Aufrufe erfolgen über HTTP-POST-Requests mit einem JSON-Request-Body, der die erforderlichen Parameter enthält. Die Antwort der API wird ebenfalls im JSON-Format zurückgegeben.

Die API ist unter folgender URL erreichbar:
http://apiv2.smart-dog.eu/

Die API verarbeitet die JSON-Anfragen serverseitig und gibt strukturierte JSON-Daten zurück, die leicht in Anwendungen integriert werden können.


Allgemeine Nutzung

Um Daten von der API abzurufen, wird ein gültiger API-Schlüssel benötigt.


Jede Antwort die nicht valid = '1' enthält, kann als fehlerhaft gewertet werden

Verfügbare API-Endpunkte

1. Allgemeine Funktionen

  1. getApiKey(email,pass)
  2. getSmartDogs(apikey)

2. Photovoltaik-Daten

  1. getInverters(apikey, PowerDogID)
  2. getStringData(apikey,SensorID,StringNum,UTC_TIMESTAMP_FROM,UTC_TIMESTAMP_TO)
  3. getPhotovoltaicBorders(apikey,PowerDogID,month,year)
  4. getStringDayData(apikey,SensorID,StringNum,day_from,day_to,month,year)
  5. getStringMonthData(apikey,SensorID,StringNum,month_from,month_to,year)
  6. getStringYearData(apikey,SensorID,StringNum,year_from,year_to)

3. Sensor-Daten

  1. getSensors(apikey,PowerDogID)
  2. getSensorData(apikey,SensorID,UTC_TIMESTAMP_FROM,UTC_TIMESTAMP_TO)

4. Zähler-Daten

  1. getCounters(apikey,PowerDogID)
  2. getCounterData(apikey,SensorID,UTC_TIMESTAMP_FROM,UTC_TIMESTAMP_TO)

Antwortformat und Fehler

Nähere Informationen zu Antwortformat und Fehlermeldungen:

Antwortformat und Fehler

Allgemeine API-Aufrufe

getApiKey getSmartDogs

Allgemeine API-Aufrufe

getApiKey

Beschreibung: Erstellt einen API-Schlüssel für einen Benutzer basierend auf seiner E-Mail-Adresse und seinem Passwort. Der API-Schlüssel wird für alle weiteren Anfragen zur Authentifizierung verwendet.
Endpunkt: /api
Methode: POST

Parameter:

Beispielanfrage:

{
  "action": "getApiKey",
  "email": "testkunde@eco-data.de",
  "pass": "test"
}

Beispielantwort:

{
  "valid": 1,
  "apikey": "6641d282073d76b625987af5141d3e2a"
}

Beschreibung der Antwortparameter:

Hinweise:

Nähere Informationen zu Antwortformat und Fehlermeldungen:

Antwortformat und Fehler

Allgemeine API-Aufrufe

getSmartDogs

Beschreibung: Gibt eine Liste der registrierten SmartDog-Geräte des Benutzers zurück.
Endpunkt: /api
Methode: POST

Parameter:

Beispielanfrage:

{
  "action": "getSmartDogs",
  "apikey": "90f47b75edc159ba8333a16ef37bd431"
}

Beispielantwort:

{
  "valid": 1,
  "powerdogs": [
    {
      "id": 11,
      "name": "Familie Hütter",
      "description": "Anlage Familie Hütter",
      "address_city": "Braunau",
      "address_country": "AUT"
    }
  ]
}

Beschreibung der Antwortparameter:

Nähere Informationen zu Antwortformat und Fehlermeldungen:

Antwortformat und Fehler

Photovoltaik-Daten

Photovoltaik-Daten

getInverters

Beschreibung: Ruft eine Liste der Wechselrichter (Inverters) für das angegebene SmartDog-Gerät ab.
Endpunkt: /api
Methode: POST

Parameter:

Beispielanfrage:

{
    "action": "getInverters",
    "apikey": "6641d282073d76b625987af5141d3e2a",
    "PowerDogID": "36789"
}

Beispielantwort:

{
    "valid": 1,
    "inverters": {
        "B1_A2": {
            "BUS": 1,
            "ADDRESS": 2,
            "Manufactor": "sma",
            "Modulfield": "1",
            "Modulfield_Name": "Haus1",
            "Monitoring": "on",
            "Capacity": "3000",
            "SerialNo": "2000049568",
            "Type": "WR25-014",
            "Strings": "1",
            "desc": "SMA",
            "StringList": {
                "1": {
                    "STRING": 1,
                    "Capacity": "3000"
                }
            },
            "id": "551902"
        },
        "B8_A1": {
            "BUS": 8,
            "ADDRESS": 1,
            "Manufactor": "sma",
            "Modulfield": "2",
            "Modulfield_Name": "Garage",
            "Monitoring": "on",
            "Capacity": "2000",
            "SerialNo": "1930203053",
            "Type": "SB2.0",
            "Strings": "1",
            "desc": "SMA Bus8",
            "StringList": {
                "1": {
                    "STRING": 1,
                    "Capacity": "2000"
                }
            },
            "id": "551903"
        }
    },
    "id": 36789
}

Beschreibung der Antwortparameter:

Nähere Informationen zu Antwortformat und Fehlermeldungen:

Antwortformat und Fehler

Photovoltaik-Daten

getStringData

Beschreibung: Ruft Daten eines spezifischen Strings (Photovoltaik-Daten) für einen Sensor im angegebenen Zeitraum ab.
Endpunkt: /api
Methode: POST

Parameter:

Beispielanfrage:

{
  "action": "getStringData",
  "apikey": "6641d282073d76b625987af5141d3e2a",
  "SensorID": "551902",
  "StringNum": "1",
  "UTC_TIMESTAMP_FROM": "1739867939",
  "UTC_TIMESTAMP_TO": "1739877939"
}

Beispielantwort:

{
    "sensor_id": 551902,
    "string_num": 1,
    "valid": 1,
    "test": "bcde",
    "datasets": {
        "1739868002.000000": {
            "PAC": "844",
            "PDC": "907",
            "UDC": "358",
            "TEMPERATURE": "29",
            "TIMESTAMP_LOCAL": 1739871602,
            "TIMESTAMP_UTC": "1739868002.000000"
        },
        "1739868302.000000": {
            "PAC": "878",
            "PDC": "944",
            "UDC": "359",
            "TEMPERATURE": "31",
            "TIMESTAMP_LOCAL": 1739871902,
            "TIMESTAMP_UTC": "1739868302.000000"
        }
    }
}

Beschreibung der Antwortparameter:


Nähere Informationen zu Antwortformat und Fehlermeldungen:

Antwortformat und Fehler

Photovoltaik-Daten

getPhotovoltaicBorders

Beschreibung:
Ruft die früheste und späteste Erzeugungszeit eines bestimmten Wechselrichter-Strings für einen angegebenen Monat und ein Jahr ab.
Diese Funktion wird verwendet, um die Start- und Endzeiten des Tagesdiagramms zu bestimmen.
Es werden alle verwendeten Wechselrichter analysiert, um die kleinste und größte Zeit zu finden.

Endpunkt: /api
Methode: POST

Parameter:

Beispielanfrage:

{
    "action": "getPhotovoltaicBorders",
    "apikey": "90f47b75edc159ba8333a16ef37bd431",
    "PowerDogID": 11,
    "month": 1,
    "year": 2013
}

Beispielantwort:

{
    "valid": 1,
    "borders": {
        "min": "7",
        "max": "17"
    }
}

Beschreibung der Antwortparameter:


Nähere Informationen zu Antwortformat und Fehlermeldungen:

Antwortformat und Fehler

Photovoltaik-Daten

getStringDayData

Beschreibung:
Ruft die Tageserzeugungsdaten eines spezifischen Strings für einen Sensor über einen angegebenen Zeitraum ab.
Diese Funktion liefert tägliche Verbrauchs- und Leistungswerte für einen bestimmten Wechselrichter-String.

Endpunkt: /api
Methode: POST

Parameter:

Beispielanfrage:

{
  "action": "getStringDayData",
  "apikey": "6641d282073d76b625987af5141d3e2a",
  "SensorID": "551902",
  "StringNum": "1",
  "day_from": "1",
  "day_to": "12",
  "month": "1",
  "year": "2024"
}

Beispielantwort:

{
    "sensor_id": 551902,
    "string_num": 1,
    "valid": 1,
    "datasets": {
        "2024-1-01": {
            "WH": "4160",
            "PAC_MAX": "1189",
            "DAY": "01",
            "MONTH": 1,
            "YEAR": 2024
        },
        "2024-1-02": {
            "WH": "348",
            "PAC_MAX": "173",
            "DAY": "02",
            "MONTH": 1,
            "YEAR": 2024
        },
        "2024-1-03": {
            "WH": "2204",
            "PAC_MAX": "897",
            "DAY": "03",
            "MONTH": 1,
            "YEAR": 2024
        }
    }
}

Beschreibung der Antwortparameter:


Nähere Informationen zu Antwortformat und Fehlermeldungen:

Antwortformat und Fehler

Photovoltaik-Daten

getStringMonthData

Beschreibung:
Ruft die monatlichen Erzeugungsdaten eines bestimmten Wechselrichter-Strings für einen angegebenen Zeitraum ab.
Diese Funktion liefert monatliche Verbrauchs- und Leistungswerte für einen bestimmten Wechselrichter-String.

Endpunkt: /api
Methode: POST

Parameter:

Beispielanfrage:

{
    "action": "getStringMonthData",
    "apikey": "6641d282073d76b625987af5141d3e2a",
    "SensorID": "551902",
    "StringNum": "1",
    "month_from": "1",
    "month_to": "12",
    "year": "2023"
}

Beispielantwort:

{
    "sensor_id": 551902,
    "string_num": 1,
    "valid": 1,
    "datasets": {
        "2023-01": {
            "WH": "55147",
            "MONTH": "01",
            "YEAR": 2023
        },
        "2023-02": {
            "WH": "146404",
            "MONTH": "02",
            "YEAR": 2023
        },
        "2023-03": {
            "WH": "233747",
            "MONTH": "03",
            "YEAR": 2023
        }
    }
}

Beschreibung der Antwortparameter:


Nähere Informationen zu Antwortformat und Fehlermeldungen:

Antwortformat und Fehler

Photovoltaik-Daten

getStringYearData

Beschreibung:
Ruft die jährlichen Erzeugungsdaten eines bestimmten Wechselrichter-Strings für einen angegebenen Zeitraum ab.
Diese Funktion liefert Jahresverbrauchs- und Leistungswerte für einen bestimmten Wechselrichter-String.

Endpunkt: /api
Methode: POST

Parameter:

Beispielanfrage:

{
    "action": "getStringYearData",
    "apikey": "6641d282073d76b625987af5141d3e2a",
    "SensorID": "551902",
    "StringNum": "1",
    "year_from": "2022",
    "year_to": "2023"
}

Beispielantwort:

{
    "sensor_id": 551902,
    "string_num": 1,
    "valid": 1,
    "datasets": {
        "2022": {
            "WH": "3205440",
            "YEAR": "2022"
        },
        "2023": {
            "WH": "3066610",
            "YEAR": "2023"
        }
    }
}

Beschreibung der Antwortparameter:

Nähere Informationen zu Antwortformat und Fehlermeldungen:

Antwortformat und Fehler

Sensordaten

getSensors getSensorData

Sensordaten

getSensors

Beschreibung:
Ruft eine Liste aller Sensoren und deren Informationen für ein bestimmtes PowerDog-Gerät ab.
Diese Funktion gibt detaillierte Sensordaten zurück, darunter Typ, Name und Messbereich.

Endpunkt: /api
Methode: POST

Parameter:

Beispielanfrage:

{
    "action": "getSensors",
    "apikey": "6641d282073d76b625987af5141d3e2a",
    "PowerDogID": "36789"
}

Beispielantwort:

{
    "valid": 1,
    "sensors": {
        "onewire_1494659203": {
            "KEY": "onewire_1494659203",
            "Type": "Temperature",
            "Max": "100",
            "Name": "boilertemp",
            "id": "551929"
        },
        "adcsensor_1522075451": {
            "KEY": "adcsensor_1522075451",
            "Type": "Global_Radiation",
            "Max": "1200",
            "Name": "radiation",
            "id": "551931"
        }
    },
    "id": 36789
}

Beschreibung der Antwortparameter:

Nähere Informationen zu Antwortformat und Fehlermeldungen:

Antwortformat und Fehler

Sensordaten

getSensorData

Beschreibung:
Ruft Sensordaten oder Zählerdaten für einen bestimmten Zeitraum ab.
Die Werte werden in 5-Minuten-Intervallen geliefert.

Endpunkt: /api
Methode: POST

Parameter:

Beispielanfrage:

{
    "action": "getSensorData",
    "apikey": "6641d282073d76b625987af5141d3e2a",
    "SensorID": "551941",
    "UTC_TIMESTAMP_FROM": "1739867939",
    "UTC_TIMESTAMP_TO": "1739877939"
}

Beispielantwort:

{
    "sensor_id": 551941,
    "valid": 1,
    "datasets": {
        "1739868002": {
            "DATA": "251",
            "TIMESTAMP_UTC": 1739868002,
            "TIMESTAMP_LOCAL": 1739871602
        },
        "1739868302": {
            "DATA": "257",
            "TIMESTAMP_UTC": 1739868302,
            "TIMESTAMP_LOCAL": 1739871902
        }
}

Beschreibung der Antwortparameter:


Nähere Informationen zu Antwortformat und Fehlermeldungen:

Antwortformat und Fehler

Zählerdaten

getCounters getCounterData

Zählerdaten

getCounters

Beschreibung:
Ruft eine Liste aller Zähler und deren Informationen für ein bestimmtes PowerDog-Gerät ab.
Diese Funktion gibt detaillierte Informationen zu den angeschlossenen Energiezählern zurück.

Endpunkt: /api
Methode: POST

Parameter:

Beispielanfrage:

{
    "action": "getCounters",
    "apikey": "6641d282073d76b625987af5141d3e2a",
    "PowerDogID": "36789"
}

Beispielantwort:

{
    "valid": 1,
    "counters": {
        "pv_global_1499321681": {
            "KEY": "pv_global_1499321681",
            "Type": "Energy",
            "Max": 5000,
            "Name": "PV",
            "Hardware": "pv_global",
            "Medium": "ELECTRIC",
            "id": "551904"
        },
        "buscounter_1579943663": {
            "KEY": "buscounter_1579943663",
            "Type": "Energy",
            "Max": "5000",
            "Name": "GRIDIN",
            "Hardware": "buscounter",
            "Medium": "ELECTRIC",
            "id": "551911"
        }
    },
    "id": 36789
}

Beschreibung der Antwortparameter:

Zählerdaten

getCounterData

Beschreibung:
Ruft Zählerdaten (Counter Data) oder Sensordaten für einen bestimmten Zeitraum ab.
Die Werte werden in 5-Minuten-Intervallen bereitgestellt.

Endpunkt: /api
Methode: POST

Parameter:

Beispielanfrage:

{
    "action": "getCounterData",
    "apikey": "6641d282073d76b625987af5141d3e2a",
    "SensorID": "551907",
    "UTC_TIMESTAMP_FROM": "1739867939",
    "UTC_TIMESTAMP_TO": "1739877939"
}

Beispielantwort:

{
    "sensor_id": 551907,
    "valid": 1,
    "datasets": {
        "1739868002": {
            "DATA": "1165",
            "TIMESTAMP_UTC": 1739868002,
            "TIMESTAMP_LOCAL": 1739871602
        },
        "1739868302": {
            "DATA": "1428",
            "TIMESTAMP_UTC": 1739868302,
            "TIMESTAMP_LOCAL": 1739871902
        },
    }
}

Beschreibung der Antwortparameter:

Nähere Informationen zu Antwortformat und Fehlermeldungen:

Antwortformat und Fehler

Antwortformat und Fehler

Alle API-Antworten werden im JSON-Format zurückgegeben. Fehler folgen einem konsistenten Schema mit: error_code (Numerischer Fehlercode) error_message (Beschreibung des Fehlers)

Antwortformat und Fehler

Antwortformat und Fehler

1. Erfolgreiche Antwort (Correct Response)

Ein erfolgreicher API-Aufruf liefert eine JSON-Antwort mit den abgefragten Daten. Das folgende Beispiel zeigt eine Antwort für die Abfrage von PowerDog-Geräten eines bestimmten Eigentümers.

{
    "query": "SELECT * FROM powerdog WHERE pdowner=29812;",
    "valid": 1,
    "powerdogs": [
        {
            "timezone": "Europe/Vienna",
            "id": "36789",
            "name": "Testanlage4Hütter",
            "description": "",
            "address_zip": "5280",
            "address_city": "Braunau am Inn",
            "address_country": "AUT",
            "address_street": "Mozartstraße",
            "address_no": "33",
            "longitude": "13.04096985",
            "latitude": "48.24743652",
            "published": "0",
            "owner": "29812",
            "uid": "PD2402-0019",
            "server_id": "31"
        },
        {
            "timezone": "Etc/GMT+0",
            "id": "37641",
            "name": "TestGerät",
            "description": null,
            "address_zip": "",
            "address_city": "",
            "address_country": null,
            "address_street": "",
            "address_no": "",
            "longitude": null,
            "latitude": null,
            "published": null,
            "owner": "29812",
            "uid": "0815",
            "server_id": "101"
        },
        {
            "timezone": "Europe/Vienna",
            "id": "38586",
            "name": "Testanlage5Hütter cm4s",
            "description": null,
            "address_zip": "",
            "address_city": "",
            "address_country": null,
            "address_street": "",
            "address_no": "",
            "longitude": null,
            "latitude": null,
            "published": "0",
            "owner": "29812",
            "uid": "PD2502-0033",
            "server_id": "31"
        }
    ]
}

Erklärung der Felder


2. Fehlerhafte Antwort (Faulty Response)

Falls eine Anfrage fehlschlägt, gibt die API eine Fehlermeldung mit einem Fehlercode zurück.

{
    "faultString": "Authentication failed",
    "faultCode": 100
}

Fehlermeldungen und Codes

Fehlercode Beschreibung
100 Authentifizierung fehlgeschlagen (z. B. ungültiger apikey).
101 Keine Rechte auf den SmartDog der angegebenen ID
102 Kann keine Verbindung zur Datenbank herstellen
103 Datenbankanfrage fehlerhaft
104 Fehlende Parameter

Falls eine API-Anfrage fehlschlägt, sollte überprüft werden:

  1. Ob der apikey korrekt ist.
  2. Ob alle benötigten Parameter vorhanden sind.
  3. Ob die Werte in der richtigen Form übergeben wurden.

Jede Antwort die nicht valid = '1' enthält, kann als fehlerhaft gewertet werden


3. Zusätzliche Hinweise


© 2025 PowerDog API – Alle Rechte vorbehalten

API-Nutzung & Beispiele

API-Nutzung & Beispiele

Javascript - Beispielhafte Anfrage

Beschreibung:
Diese JavaScript-Funktion ruft Sensordaten von der SmartDog API v2 ab.
Die API liefert Sensordaten für einen bestimmten Zeitraum im JSON-Format zurück.

Programmiersprache: JavaScript (async/await)
API-URL: https://apiv2.smart-dog.eu/index.php


Code:

async function getSensorData() {
    const url = "https://apiv2.smart-dog.eu/index.php";
    
    const requestData = {
        action: "getSensorData",
        apikey: "6641d282073d76b625987af5141d3e2a",
        SensorID: "551941",
        UTC_TIMESTAMP_FROM: "1739867939",
        UTC_TIMESTAMP_TO: "1739877939"
    };
    
    try {
        const response = await fetch(url, {
            method: "POST",
            headers: {
                "Content-Type": "application/json"
            },
            body: JSON.stringify(requestData)
        });
        
        if (!response.ok) {
            throw new Error(`HTTP-Fehler! Status: ${response.status}`);
        }
        
        const data = await response.json();
        document.getElementById("sensorOutput").textContent = JSON.stringify(data, null, 2);
    } catch (error) {
        console.error("Fehler beim Abrufen der Sensordaten:", error);
        document.getElementById("sensorOutput").textContent = "Fehler beim Abrufen der Daten.";
    }
}

Beschreibung der Funktion:

  1. API-Request vorbereiten:

    • Erstellt eine Anfrage an die API mit den Parametern:
      • action: "getSensorData"
      • apikey: "6641d282073d76b625987af5141d3e2a"
      • SensorID: "551941"
      • UTC_TIMESTAMP_FROM: "1739867939"
      • UTC_TIMESTAMP_TO: "1739877939"
  2. Daten abrufen mit fetch():

    • Sendet die Anfrage per POST-Methode an die API.
    • Setzt den Content-Type-Header auf "application/json".
    • Wandelt das requestData-Objekt in JSON um und sendet es als body.
  3. Fehlermanagement:

    • Falls der Server keine gültige Antwort sendet (!response.ok), wird eine Error-Exception geworfen.
    • Falls ein Fehler auftritt, wird dieser in der Konsole (console.error) ausgegeben und eine Fehlermeldung im HTML-Element mit der ID "sensorOutput" angezeigt.

Beispiel für eine erfolgreiche API-Antwort:

{
    "sensor_id": 551941,
    "valid": 1,
    "datasets": {
        "1739868002": {
            "DATA": "251",
            "TIMESTAMP_UTC": 1739868002,
            "TIMESTAMP_LOCAL": 1739871602
        },
        "1739868302": {
            "DATA": "257",
            "TIMESTAMP_UTC": 1739868302,
            "TIMESTAMP_LOCAL": 1739871902
        }
    }
}

API-Nutzung & Beispiele

Php - Beispielhafte Anfrage

Beschreibung:
Dieses PHP-Skript ruft Sensordaten von der SmartDog API v2 ab.
Die API liefert Sensordaten für einen bestimmten Zeitraum im JSON-Format zurück.

Programmiersprache: PHP
API-URL: https://apiv2.smart-dog.eu/index.php


Code:

<?php

function getSensorData() {
    $url = "https://apiv2.smart-dog.eu/index.php";
    
    $requestData = [
        "action" => "getSensorData",
        "apikey" => "6641d282073d76b625987af5141d3e2a",
        "SensorID" => "551941",
        "UTC_TIMESTAMP_FROM" => "1739867939",
        "UTC_TIMESTAMP_TO" => "1739877939"
    ];
    
    $options = [
        "http" => [
            "header"  => "Content-Type: application/json\r\n",
            "method"  => "POST",
            "content" => json_encode($requestData)
        ]
    ];
    
    $context  = stream_context_create($options);
    $response = file_get_contents($url, false, $context);
    
    if ($response === FALSE) {
        die("Fehler beim Abrufen der Sensordaten");
    }
    
    $data = json_decode($response, true);
    echo "<pre>" . print_r($data, true) . "</pre>";
}

getSensorData();

?>

Beschreibung der Funktion:

  1. API-Request vorbereiten:

    • Erstellt eine Anfrage an die API mit den Parametern:
      • action: "getSensorData"
      • apikey: "6641d282073d76b625987af5141d3e2a"
      • SensorID: "551941"
      • UTC_TIMESTAMP_FROM: "1739867939"
      • UTC_TIMESTAMP_TO: "1739877939"
  2. Datenabruf mit file_get_contents():

    • Sendet eine POST-Anfrage mit JSON-Daten an die API.
    • Nutzt stream_context_create() zum Setzen der Content-Type-Header.
    • Falls die Antwort fehlschlägt (FALSE), gibt das Skript eine Fehlermeldung aus.
  3. Antwortverarbeitung:

    • Dekodiert die JSON-Antwort mit json_decode().
    • Gibt die Sensordaten formatiert (print_r()) als HTML-<pre>-Block aus.

Beispiel für eine erfolgreiche API-Antwort:

{
    "sensor_id": 551941,
    "valid": 1,
    "datasets": {
        1739868002.000000: {
            "DATA": "251",
            "TIMESTAMP_UTC": 1739868002,
            "TIMESTAMP_LOCAL": 1739871602
        },
        1739868302.000000: {
            "DATA": "257",
            "TIMESTAMP_UTC": "1739868302.000000",
            "TIMESTAMP_LOCAL": 1739871902
        }
    }
}

Alternative mit cURL (empfohlen für größere API-Anfragen):

<?php

function getSensorData() {
    $url = "https://apiv2.smart-dog.eu/index.php";
    
    $requestData = [
        "action" => "getSensorData",
        "apikey" => "6641d282073d76b625987af5141d3e2a",
        "SensorID" => "551941",
        "UTC_TIMESTAMP_FROM" => "1739867939",
        "UTC_TIMESTAMP_TO" => "1739877939"
    ];
    
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, ["Content-Type: application/json"]);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($requestData));
    
    $response = curl_exec($ch);
    
    if (curl_errno($ch)) {
        die("Fehler beim Abrufen der Sensordaten: " . curl_error($ch));
    }
    
    curl_close($ch);
    
    $data = json_decode($response, true);
    echo "<pre>" . print_r($data, true) . "</pre>";
}

getSensorData();

?>

Diese Variante verwendet cURL, was für größere API-Anfragen besser geeignet ist.


Einsatz in einer HTML-Seite:

<button onclick="location.reload();">Sensordaten abrufen</button>
<pre><?php getSensorData(); ?></pre>

Beim Klicken auf den Button "Sensordaten abrufen" wird die PHP-Funktion ausgeführt, und die Daten erscheinen im <pre>-Tag.

API-Nutzung & Beispiele

Windows Terminal - Beispielhafte Anfrage

Beschreibung:
Dieser cURL-Befehl sendet eine POST-Anfrage an die SmartDog API v2, um Sensordaten für einen bestimmten Zeitraum abzurufen.

Tool: cURL
API-URL: https://apiv2.smart-dog.eu/index.php
Methode: POST


Code:

curl -X POST "https://apiv2.smart-dog.eu/index.php" \
     -H "Content-Type: application/json" \
     -d '{
           "action": "getSensorData",
           "apikey": "6641d282073d76b625987af5141d3e2a",
           "SensorID": "551941",
           "UTC_TIMESTAMP_FROM": "1739867939",
           "UTC_TIMESTAMP_TO": "1739877939"
         }'

Beschreibung der Parameter:


Beispiel für eine erfolgreiche API-Antwort:

{
    "sensor_id": 551941,
    "valid": 1,
    "datasets": {
        "1739868002": {
            "DATA": "251",
            "TIMESTAMP_UTC": 1739868002,
            "TIMESTAMP_LOCAL": 1739871602
        },
        "1739868302": {
            "DATA": "257",
            "TIMESTAMP_UTC": 1739868302,
            "TIMESTAMP_LOCAL": 1739871902
        }
    }
}

Alternative mit Ausgabe in einer Datei:

Falls du die Antwort direkt in einer Datei speichern möchtest:

curl -X POST "https://apiv2.smart-dog.eu/index.php" \
     -H "Content-Type: application/json" \
     -d '{
           "action": "getSensorData",
           "apikey": "6641d282073d76b625987af5141d3e2a",
           "SensorID": "551941",
           "UTC_TIMESTAMP_FROM": "1739867939",
           "UTC_TIMESTAMP_TO": "1739877939"
         }' > response.json

Die Antwort wird dann in response.json gespeichert.