Folgen

Wie lese ich Messwerte mit einer anderen Software (API)?

Um Daten mit einer externen Software aus einen SCH.E.I.D.L Energy Controller auszulesen gibt es eine einfach nutzbare Schnittstelle. Diese orientiert sich an den World Wide Web Standards und entspricht einer REST API. Sinnvoll ist so eine Schnittstelle z.B. für:

  • Datenexport
  • Energiemanagementsystemen
  • Gebäudeleittechnik

Funktionalität:

  • Verschlüsselter Zugriff vom internen Netzwerk oder als Fernzugriff von aussen nach Authorisierung mit UserID / Passwort
  • Lesen eines oder mehrere Datenpunkte
  • Lesen aktueller Messwerte vom Sensor
  • Lesen historischer Aufzeichnungen aus dem Logger
  • Datenformat ist eine Komma-abgetrennte-Datei (CSV) mit der Uhrzeit der Messung und den Messwerten

Folgendes ist dazu nötig:

  • Ein Netzwerk-Zugriff auf den SCH.E.I.D.L Energy Controller
  • Der Hostname oder die IP-Adresse des SCH.E.I.D.L Energy Controller
  • Ein neu angelegter Benutzername "api" mit dem Ihnen bekanntem Passwort
  • Eine Software die Komma getrennte Dateien (CSV) lesen kann, z.B. MS Excel oder ein Energiemanagementsystem
  • Der Zugriff sollte über das verschlüsselte https:// Protokoll erfolgen, so ist sichergestellt das auch das Password nicht aus dem Netzwerk gelesen werden kann

Die Einrichtung:

  1. Legen Sie im Controller einen neuen Benutzer mit dem Namen "api" an:
    Rechts oben Reiter "Profil" →
      Rechts Befehl "Benutzer verwalten" →
        Rechts Befehl "Benutzer anlegen" →
    Benutzername: api
    Passwort: <ein neues sicheres Passwort Ihrer Wahl>
    E-mail: <eine gültige E-Mail Adresse z.B. "noreply@scheidl.de>
    Superuser: Nein
    Status: Aktiv
    Vorname: API
    Nachname: API
    → Klick auf "Anlegen"
  2. Test des Zugriffs mit Hilfe eines Browsers auf eine Adresse z.B.
    https://physiker-42.scheidl.de/index.php?r=api/getNewValuesPull&names=T1&pwd=xxxx
    → Anzeige der Messzeit und der Temperatur an T1 z.B. "1567110250,25.875"

Aufbau der Adresse:

  • Protokoll "https://"
  • Hostname Ihres SCH.E.I.D.L Energy Controllers
    Fernzugriff über die Internet-URL wie auf Ihrem Authentifizierungs-Bogen
    Interner Netzwerkzugriff über die LAN-URL oder IP wie auf Ihrem Authentifizierungs-Bogen
  • Pfad zu den Funktionen "/index.php?r=api/"
  • Passwort für den Benutzer "api" mit dem Parameter "pwd=xxx"

Funktionen: 

getNewValuesPull

Funktion zum Lesen aktueller Messwerte als verschlüsselter Fernzugriff über die Internet-URL oder interner Zugriff über eine LAN-URL. Als Antwort wird pro Sensor ein aktueller Messwert (getrennt mit Kommas) und der Zeitpunkt der Messung (in Sekunden seit 1.1.1970, Umrechnung hier) zurück gegeben

Parameter: names

Die Namen der Sensoren, getrennt mit Kommas im Format "&names=T1,T2,T3"

Parameter: pwd

Das Passwort für den Benutzer "api" im Format "&pwd=xxx"

Beispiele

  1. Einen aktuellen Messwert eines Sensors holen:
    https://physiker-42.scheidl.de/index.php?r=api/getNewValuesPull&names=T1&pwd=xxx
    → 1567111800,25.875
    Fernzugriff über Internet URL mit dem Passwort "xxx" zum Lesen des aktuellen Messwerts der Temperatur T1 mit 25,875°C.
    Die Messung war 1567111800 Sekunden nach 1.1.1970, also am 29. August 2019 um 22:50, siehe Umrechnung hier
  2. Jeweils die aktuellen Messwerte mehrerer Sensoren holen:
    https://physiker-42.scheidl.de/index.php?r=api/getNewValuesPull&names=T1,IC1&pwd=xxx
    → 1567111800,25.875,12345.678
    Fernzugriff über Internet URL mit dem Passwort "xxx" zum Lesen zweier aktuellen Messwerte mit verschiedenen Einheiten, der Temperatur T1 mit 25,875°C und des Zählerstandes IC1 mit 12345.678kWh.
    Die Messung war 1567111800 Sekunden nach 1.1.1970, also am 29. August 2019 um 22:50, siehe Umrechnung hier
  3. Einen aktuellen Messwert aus internem LAN holen:
    http://physiker-42/index.php?r=api/getNewValuesPull&names=T1&pwd=xxx
    → 1567111800,25.875
    Interner Zugriff über die LAN-URL mit dem Passwort "xxx" zum Lesen des aktuellen Messwerts des Temperatursensors T1 mit 25,875°C.
    Die Messung war 1567111800 Sekunden nach 1.1.1970, also am 29. August 2019 um 22:50, siehe Umrechnung hier
  4. Einen aktuellen Messwert mit IP-Adresse aus internem LAN holen:
    http://192.168.178.2/index.php?r=api/getNewValuesPull&names=T1&pwd=xxx
    → 1567111800,25.875
    Interner Zugriff über die IP-Adresse mit dem Passwort "xxx" zum Lesen des aktuellen Messwerts des Temperatursensors T1 mit 25,875°C.
    Die Messung war 1567111800 Sekunden nach 1.1.1970, also am 29. August 2019 um 22:50, siehe Umrechnung hier

getOldValuesPull

Funktion zum Lesen historischer Aufzeichnungen als verschlüsselter Fernzugriff über die Internet-URL oder interner Zugriff über eine LAN-URL. 
Als Antwort werden mehrere Zeilen mit Zeitpunkten und den Messwerten getrennt mit Kommas zurück gegeben.

Die Antwort der API-Funktion kann über mehrere Methoden gespeichert werden. Wenn die URL in einem Browser geöffnet wurde, wird die Antwort erstmal als eine Zeile dargestellt. Aber sobald die Seite mit Datei → Speichern als .csv Datei gespeichert wurde, sind die Zeilen in der Datei getrennt. 

(Eine weitere Möglichkeit ist die Verwendung des Tools "curl" in einem Terminal, um eine .csv Datei zu erzeugen)

Der Import einer .csv Datei in eine Office Tabellenkalkulation ist in dem FAQ-Artikel zum Export erklärt, siehe hier.

Parameter: names

Die Namen der Sensoren, getrennt mit Kommas im Format "&names=T1,T2,T3"

Parameter: pwd

Das Passwort für den Benutzer "api" im Format "&pwd=xxx"

Parameter: start

Der Zeitpunkt ab dem die aufgezeichneten Daten gelesen werden in Sekunden seit 1.1.1970, Umrechnung hier im Format "&start=yyy"

Parameter: stop

Der Zeitpunkt bis zu dem die aufgezeichneten Daten gelesen werden in Sekunden seit 1.1.1970, Umrechnung hier im Format "&stop=yyy".

Der Stop-Zeitpunkt muß nach dem Start-Zeitpunkt liegen.

Optionaler Parameter: step

Die Anzahl der gelesenen Messwerte zwischen der Start- und Stoppzeit im Format "$step=zzz". 
Eine große Zahl gibt viele Messwerte zurück, hat also eine feinere Auflösung zwischen den Messwerten. Wenn zB die letzten 24h zwischen Start- und Stoppzeit ausgelesen werden, dann wird bei step=1440 die 60s Auflösung zurück gegeben.

Die Messwerte in der Datenbank werden über das Alter hinweg ausgedünnt, mehrere Messwerte werden zusammengefasst, zB 10s → 1Min → 5Min etc. Je nach Alter kann es also sein das nur noch größere Messwerte gespeichert sind.

Achtung:
Je höher die Anzahl der gelesenen Parameter, desto länger dauert die Anfrage und desto größer wird die Antwort-Datei. Bei 1000en Messwerten können mehrere MB Daten zurück gegeben werden.

Wird dieser Parameter nicht angegeben, wird versucht ca. 35 Messwerte zurück gegeben. Die genaue Anzahl hängt vom Abstand zwischen Start- und Stoppzeit und den in der Datenbank verfügbaren Messwerten ab.

Beispiele:

  1. Mehrere historische Messwerte eines Datenpunkts holen:
    https://physiker-42.scheidl.de/index.php?r=api/getOldValuesPull&names=T1&start=1567111740&stop=1567111800&pwd=xxx
    → Timestamp,T1
    2019/08/29 22:49:10,25.075
    2019/08/29 22:49:20,25.175
    2019/08/29 22:49:30,25.275
    2019/08/29 22:49:40,25.375
    2019/08/29 22:49:50,25.475
    2019/08/29 22:50:00,25.575
    2019/08/29 22:50:10,25.675
    Verschlüsselter Fernzugriff über die Internet-URL mit dem Passwort "xxx" zum Lesen mehrerer historischer Messwerte des Temperatursensors T1 von 29.8.2019 22:49:10 bis 22:50:10 von 25,075°C. bis 25.675°C
  2. Viele historische Messwerte des letzten Tages eines Datenpunkts mit höherer Auflösung holen:
    https://physiker-42.scheidl.de/index.php?r=api/getOldValuesPull&names=T1&start=1781463042&stop=1781549442&step=1440&pwd=xxx
    → Timestamp,T1
    2026/06/14 20:51:00,20.000
    2026/06/14 20:52:00,20.000 
    2026/06/14 20:53:00,19.833 
    2026/06/14 20:54:00,19.729 
    2026/06/14 20:55:00,19.750 
    2026/06/14 20:56:00,19.833 
    2026/06/14 20:57:00,19.771 
    2026/06/14 20:58:00,19.750 
    2026/06/14 20:59:00,19.708
    ....
    Verschlüsselter Fernzugriff über die Internet-URL mit dem Passwort "xxx" zum Lesen von 1440 historischer Messwerte des Temperatursensors T1 der letzten 24 Stunden mit einem Abstand von 60s
Kontakt
📧 info@scheidl.de
📞 +49 911 9881032

🛒 Besuchen Sie unseren Online-Shop

 

War dieser Beitrag hilfreich?
0 von 0 fanden dies hilfreich
Haben Sie Fragen? Anfrage einreichen

0 Kommentare

Bitte melden Sie sich an, um einen Kommentar zu hinterlassen.
Powered by Zendesk