S0 Datenlogger auslesen

Wenn mehr als ein Gerät an den Raspberry angeschlossen werden sollen. Z.B. ein Regler und ein Wechselrichter oder mehrere Wechselrichter. Das Maximum sind 6 Geräte pro Raspberry Pi.

Moderator: Ulrich

Antworten
GiMichael
Beiträge: 17
Registriert: Mo 12. Jul 2021, 20:16
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

S0 Datenlogger auslesen

Beitrag von GiMichael »

Hallo,

ich würde gerne meinen Energiemonitor (S0 Datenlogger) von Solarautonomie auslesen in in die Influx Datenbank schreiben. Die Multi Regler Version läuft bei mir, nur die Anbindung an den Datenlogger habe ich nicht.

Ich kann die per http://192.168.x.x/json/API.php/getPower alle Werte auslesen und bekomme dann ein Json

{ "Version": "2.1", "status": "o.k.", "result": [ { "ID": 124, "title": "Strom Bezug", "type": "electric meter", "unit": "W", "timeEnd": "1631284440000", "power": 0 }, { "ID": 132, "title": "Gaszaehler", "type": "gas", "unit": "m³\/h", "timeEnd": "1631284200000", "power": 0 }, { "ID": 144, "title": "Wasser", "type": "water", "unit": "l\/h", "timeEnd": "1631284200000", "power": 0 }, { "ID": 147, "title": "I Hzg WW", "type": "power", "unit": "W", "timeEnd": "1631284200000", "power": 12 }, { "ID": 151, "title": "I Spuelm", "type": "power", "unit": "W", "timeEnd": "1631284200000", "power": 0 }, { "ID": 152, "title": "I Trockner", "type": "power", "unit": "W", "timeEnd": "1631284200000", "power": 0 }, { "ID": 153, "title": "I Waschm", "type": "power", "unit": "W", "timeEnd": "1631284200000", "power": 0 }, { "ID": 154, "title": "I Keller", "type": "power", "unit": "W", "timeEnd": "1631284200000", "power": 84 }, { "ID": 155, "title": "I AZ", "type": "power", "unit": "W", "timeEnd": "1631284200000", "power": 66 }, { "ID": 156, "title": "I Fluchtw", "type": "power", "unit": "W", "timeEnd": "1631284200000", "power": 126 }, { "ID": 157, "title": "I Backofen", "type": "power", "unit": "W", "timeEnd": "1631284200000", "power": 0 }, { "ID": 158, "title": "I Klima", "type": "power", "unit": "W", "timeEnd": "1631284200000", "power": 6 }, { "ID": 159, "title": "I Pumpe", "type": "power", "unit": "W", "timeEnd": "1631284200000", "power": 6 }, { "ID": 170, "title": "Strom Einspeisung", "type": "electric meter", "unit": "W", "timeEnd": "1631284440000", "power": 882.00000001052 } ] }

Die IDs, title, type usw. hängen natürlich von der individuellen Konfiguration des Gerätes ab. Aber dieses hier ist mal meine Konfiguration.

Hat jemand etwas mehr Wissen, wie ich das hier abrufen und in einzelne Variablen teilen kann. Per Math-Datei hatte ich auch bei meinem Kostal extra DAten in Influx geschrieben und neu berechnet. Aber wie bekomme ich den Anfang hin?

Schon mal Danke im vorraus.

Beste Grüße
GiMichael

Bogeyof
Beiträge: 631
Registriert: Mi 13. Mai 2020, 10:04
Hat sich bedankt: 8 Mal
Danksagung erhalten: 62 Mal

Re: S0 Datenlogger auslesen

Beitrag von Bogeyof »

Mein Vorschlag (etwas unsauber), mach es doch gleich in der Math-Datei des Kostal mit. Ich zeige Dir gleich wie man die Webabfrage macht, die JSON zerlegt und dann kannst Du in der Zusatzquery ja ein neues Measurement für Deine S0-Werte anlegen. Steht halt dann alles in einer Datenbank, hat aber auch Vorteile...

Webabfrage:

Code: Alles auswählen

    $ch = curl_init("http://192.168.x.x/json/API.php/getPower"); // cURL initialisieren
    curl_setopt($ch, CURLOPT_HEADER, 0); // Header soll nicht in Ausgabe enthalten sein
    curl_setopt($ch, CURLOPT_POST, 1); // POST-Request wird abgesetzt
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2);
    $S0JSON = curl_exec($ch); // Ausfuehren
    curl_close($ch); // Objekt schliessen und Ressourcen freigeben
    if (!empty($S0JSON)) {
        $S0Werte = json_decode($S0JSON, true);
    }
Werte aus dem JSON abfragen (jedes "{...}" der JSON-Ausgabe ist ein Unterarray, durchnummeriert beginnend mit 0):

Code: Alles auswählen

   $aktuelleDaten["StromBezug"] = $S0Werte["result"]["0"]["power"];
   $aktuelleDaten["Gaszaehler"] = $S0Werte["result"]["1"]["power"];  
   $aktuelleDaten["Wasser"] = $S0Werte["result"]["2"]["power"];
   ...
 

GiMichael
Beiträge: 17
Registriert: Mo 12. Jul 2021, 20:16
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Re: S0 Datenlogger auslesen

Beitrag von GiMichael »

Hallo Bogeyof,

meinen allerbesten Dank für Deine großartige Unterstützung. Das funktioniert bestens. :D

Wo nimmst Du nur die Kraft und die Zeit her uns allen hier und auch mich (mit meinem ungesunden Halbwissen) zu allen möglichen Themen und Zeiten z.B. am Samstag Morgen um halbneun so qualifiziert zu helfen :?:

Viele liebe Grüße
GiMichael

Antworten