Ankündigung

Einklappen

Serverwartung 21.2.



Am 21.2. im Laufe des späten Abends wird eine Serverwartung durchgeführt. Das Forum ist dadurch für gut zwei Stunden nicht erreichbar.
Es wird eine Wartungsseite geschaltet.

Mehr anzeigen
Weniger anzeigen

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