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_ERRMODE, PDO::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($results, JSON_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