Ankündigung

Einklappen
Keine Ankündigung bisher.

EVCC / Solcast-Anbindung

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    EVCC / Solcast-Anbindung

    Ich hab eben noch einen kleinen Connector für EVCC fertig gemacht.

    Wer meinen LBS für solcast nutzt, kann die Werte über das angehängte PHP-Skript an EVCC exportieren.

    In der PHP-Datei muss

    $targetID = 83;

    auf den richtigen Wert gesetzt werden. Hier nimmt man den Wert aus E7/E8/E9, was bei einem am besten hinkommt. Ich nutze meistens E8, da liege ich an unbeständigen Tagen ca. 15-20% daneben.

    Diese legt man dann irgendwo unter edomi/www ab und trägt dann die IP-Adresse von Edomi + URL in der evcc-Config ein.

    in EVCC muss dann noch folgender Eintrag in der evcc.yaml unter tariffs hinzugefügt werden.

    Code:
    tariffs:
      solar:
         type: custom
         interval: 30m
         forecast:
           source: http
           uri: http://192.168.1.101/verbrauch/solcast.php

    PHP-Code:
    <?php
    /*
     * Edomi <> EVCC custom json-feed
     * (w),(c) 2025 by Nima Ghassemi Nejad (sipiyou@hotmail.com)
     *
     * v 1.0 - 27.06.2025 - initial release
     *
     * set $targetID to the right value
    */
    header('Content-Type: application/json');

    $host 'localhost';
    $db   'edomiLive';
    $user 'root';
    $pass '';

    $targetID 83;

    try {
        
    $pdo = new PDO("mysql:host=$host;dbname=$db;charset=utf8"$user$pass);
        
    $pdo->setAttribute(PDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION);

        
    $stmt $pdo->prepare("
            SELECT
                DATE_FORMAT(datetime, '%Y-%m-%dT%H:%i:%sZ') AS start,
                DATE_FORMAT(datetime + INTERVAL 30 MINUTE , '%Y-%m-%dT%H:%i:%sZ') AS end,
                gavalue AS value
            FROM archivKoData
            WHERE datetime >= UTC_TIMESTAMP()
            AND datetime < UTC_TIMESTAMP() + INTERVAL 72 HOUR
            and targetid=
    $targetID
            ORDER BY datetime
        "
    );
        
    $stmt->execute();

        
    $results $stmt->fetchAll(PDO::FETCH_ASSOC);

        foreach (
    $results as &$row) {
          
    $row['value'] = floatval($row['value']);
        }
        
        echo 
    json_encode($resultsJSON_PRETTY_PRINT);

    } catch (
    PDOException $e) {
        
    error_log("Database error: " $e->getMessage());
        echo 
    json_encode([]);
    }
    ?>

    Zuletzt geändert von sipiyou; 27.06.2025, 22:11.
Lädt...
X