Enphase

In der letzten Zeit stolpere ich bei Kunden über Enphase Produkte. Wollt mal Fragen ob schon jemand erfahrung damit hat und wie habt ihr die Anbindung realisiert. Da ja Informationen von jeder einzelnen Modul quasi kommen, oder über das Kommunikations Gateway. Weil App habe ich noch keine gefunden.

Danke euch.

lg. ene

Hallo liebe Symcon Community,

ich bin seit gestern auch Besitzer eine PV Anlage von Enphase. Symcon benutze ich auch schon seit vielen Jahren und war bis jetzt immer stiller Leser.

Es ist einfach toll das hier so viel User ihren Beitrag mit Modulen und Skripten leisten um anderen zu helfen. Hat mir auch schon oft weiter geholfen.

Das Thema Enphase in Symcon zu integrieren würde mich auch sehr interessieren. Ich hab mal etwas recherchiert und gesehen das man bei Enphase eine API erstellen kann. Dies habe ich getan.
Doch wie geht es jetzt weiter. Meine Programmierkenntnisse sind nicht gerade die besten und über etwas Hilfe wäre ich sehr dankbar.

Gruß Andy

Kannst du das etwas näher ausführen? Oder einen Herstellerlink posten?

Die meisten Wechselrichter lassen sich über Modbus ansprechen. Gibt es das auch für Enphase? Da könnten dir sicherlich viele helfen.

Oder spricht dein Wechselrichter eventuell MQTT? Auch das wäre ein Weg, den man ohne programmieren zu müssen, gehen kann.

Sowohl für Modbus als auch MQTT gibt es ja Symcon Standardmodule.

Hallo bumaas,

hier mal die links:

Dokumentation zur API: Enlighten API

Die Enphase Developer Seite: https://developer-v4.enphase.com

Leider ist mein Englisch nicht gerade das beste. Aber das könnte man sich ja noch übersetzen.

Modbus oder MQTT hab ich jetzt nix gefunden. Im Forum von Enphase habe ich gesehen das bereits 2023 ein User mal das Thema Modbus TCP angesprochen hat. Da gibt es aber keine weiteren Einträge.

Mir würde es letzten Endes eigentlich reichen wenn ich folgende Werte in Variablen schreiben könnte.

  • Aktuelle Leistung die von Dach kommt.
  • Was wird vom Haus verbraucht.
  • Was läuft in die Speicher.
  • Was wird eingespeist ins EVU.
  • Was kommt vom EVU.
  • Wie ist der Ladestand der Batterien.

Die API von Enphase scheint auf jeden Fall zugänglich zu sein. Einen Token hab ich mir auch schon angelegt. Ich denke hier wird wohl ein kleines Modul benötigt das die API anspricht und mir dann die Werte in Variablen schreibt. Oder sehe ich das falsch.

Grüße und schönen Abend noch.

Ein Modul ist da nicht notwendig, ein Skript reicht. Aber einfach ist es nicht. Da muss man schon einiges an Vorkenntnissen haben.

Ich habe mal meine KI gefragt und dabei ist folgendes rausgekommen:

AI Assistant

Um den OAuth 2.0-Zugriff auf die Enphase API gemäß der bereitgestellten Dokumentation zu implementieren, kannst du den folgenden PHP-Code nutzen. Dieser Code implementiert die notwendigen Schritte für die Authentifizierung und den Zugriff auf die API:

PHP-Code Beispiel:

<?php

// Konfiguration
$clientId = 'DEIN_CLIENT_ID'; // Ersetze durch deinen Client ID
$clientSecret = 'DEIN_CLIENT_SECRET'; // Ersetze durch dein Client Secret
$redirectUri = 'DEINE_REDIRECT_URI'; // Muss mit der in der Enphase App-Registrierung übereinstimmen
$scope = 'solar_energy'; // Beispiel: Ersetze durch den gewünschten Scope
$authUrl = 'https://enphase.com/authorize';
$tokenUrl = 'https://enphase.com/token';

session_start();

// Schritt 1: Überprüfen, ob der Nutzer bereits authentifiziert ist
if (!isset($_GET['code']) && !isset($_SESSION['access_token'])) {
    // Umleitung zur Enphase-Login-Seite für die Nutzerautorisierung
    $authorizationUrl = $authUrl . '?' . http_build_query([
        'response_type' => 'code',
        'client_id' => $clientId,
        'redirect_uri' => $redirectUri,
        'scope' => $scope,
    ]);
    
    header("Location: $authorizationUrl");
    exit;
}

// Schritt 2: Authorization Code handeln
if (isset($_GET['code'])) {
    $code = $_GET['code'];

    // Sende den Authorization Code an Enphase, um ein Access Token zu erhalten
    $response = file_get_contents($tokenUrl, false, stream_context_create([
        'http' => [
            'method' => 'POST',
            'header' => 'Content-Type: application/x-www-form-urlencoded',
            'content' => http_build_query([
                'grant_type' => 'authorization_code',
                'code' => $code,
                'redirect_uri' => $redirectUri,
                'client_id' => $clientId,
                'client_secret' => $clientSecret,
            ]),
        ],
    ]));

    $tokenData = json_decode($response, true);

    if (isset($tokenData['access_token'])) {
        $_SESSION['access_token'] = $tokenData['access_token'];
        $_SESSION['refresh_token'] = isset($tokenData['refresh_token']) ? $tokenData['refresh_token'] : null;
        $_SESSION['expires_in'] = time() + $tokenData['expires_in'];
    } else {
        die('Fehler beim Abrufen des Access Tokens: ' . $response);
    }
}

// Schritt 3: Zugriff auf die Enphase API
if (isset($_SESSION['access_token'])) {
    $accessToken = $_SESSION['access_token'];

    // Beispiel für eine API-Anfrage (ersetze {endpoint} und {param} durch tatsächliche Werte)
    $apiUrl = 'https://api.enphaseenergy.com/{endpoint}';
    $response = file_get_contents($apiUrl . '?' . http_build_query([
        'param' => 'value', // Beispielparameter
        'access_token' => $accessToken,
    ]));

    $apiData = json_decode($response, true);

    echo "<pre>";
    print_r($apiData);
    echo "</pre>";
} else {
    die('Kein Zugriffstoken vorhanden.');
}

Schritt-für-Schritt-Erklärung:

  1. Client-Konfiguration: Der Code verwendet Konfigurationswerte wie client_id, client_secret, redirect_uri und scope. Diese werden bei der App-Registrierung im Enphase Developer Portal bereitgestellt.
  2. Umleitung zur Enphase-Login-Seite: Der Benutzer wird zur Autorisierungsseite umgeleitet, um die App-Zugriffsrechte zu erteilen.
  3. Abrufen des Access Tokens: Nachdem der Benutzer die Erlaubnis erteilt hat, wird ein Authorization Code abgerufen und dieser wird gegen ein Access Token eingetauscht.
  4. Zugriff auf die API: Nach der Authentifizierung kann das Access Token verwendet werden, um API-Endpunkte von Enphase aufzurufen.

Voraussetzungen:

  • PHP Version ≥ 7.4: Für JSON- und Session-Funktionen benötigt.
  • Enphase Developer Account: Registriere eine App auf dem Enphase Developer Portal, um client_id und client_secret zu erhalten.
  • Redirect URI: Die Weiterleitungs-URI muss in der App-Konfiguration auf dem Enphase Portal korrekt registriert sein.

Hinweis:

Ersetze die Platzhalter DEIN_CLIENT_ID, DEIN_CLIENT_SECRET und DEINE_REDIRECT_URI mit deinen echten Werten aus der Enphase App-Konfiguration.

Vielen Dank,

ich werd das gleich mal testen und dir dann Rückmeldung geben.

Hallo zusammen,
ich bin auf der Suche nach einem Energiemanagementsystem, welches mit Enphaseanlagen kommunizieren kann. Da wir bei Kunden überwiegend diese Systeme einsetzen, ist eine breite Abdeckung mit unterschiedlichen Komponenten wie Wallboxen, Wärmepumpen un Batteriespeichern unerlässlich.
Meine Frage an Filtracker: Hast Du die Einbindung mit dem Enphasesystem durchgeführt, kannst du eventuell deine Programmierung durchgeben.
Besten Dank und einen schönen Tag noch.
Thomas

Hallo,

Leider hab ich bei diesem Projekt bis jetzt keine Zeit gehabt weiter zu machen. Aktuell bin ich dran unser Haus zu sanieren. Da musste ich alles andere zurück schieben. Ich hoffe das ich im kommenden Sommer wieder mehr Zeit für Symcon Projekte habe.