Stromverbrauch – Zähler digital auslesen

Viele Besitzer eines Elektrofahrzeugs möchten den Stromverbrauch auswerten, oder auch die Möglichkeit haben, die Ladeleistung abhängig von der aktuellen Haushaltsleistung zu steuern, um eine Überlastung des Hausanschlusses zu vermeiden. Wie man die Ladeleistung des Tesla Wall Connectors steuert habe ich ja in einem anderen Artikel bereits gezeigt.

Grundsätzlich gibt es bei jedem Zähler die Möglichkeit, dies zu digitalisieren. Bei den alten Zählern, die eine drehende Scheibe haben, ist es optisch möglich den Verbrauch und die Leistung zu ermitteln. Allerdings nur als Summe aller Phasen. Bei modernen Zählern ist es durchaus möglich für jede Phase getrennt die aktuelle Leistung zu messen und zu digitalisieren.

Bei einem alten Zähler, auch Ferraris-Zähler gennant, ist es überaus einfach diesen in die Hausautomatisierung einzubinden. Ich zeige das einmal für Loxone.

Benötigt wird:

 

 Die Verdrahtung ist einfach:

TRCT -> Arduino

VCC auf 5V

G auf G

D0 auf D1

 

Der „Zeilenleser“ kann relativ einfach mit Tesla am Zähler befestigt werden. Er reagiert dann auf das vorbeikommen des Roten Bereichs des Zählers.

Im angehängten Skript gebe ich diesen Wert einfach einen Triggerimpuls an Loxone. Bei diesem Zähler dreht das Rad 75 mal je kWh.

Loxone wie folgt konfigurieren:

Virtuellen Eingang anlegen, und Name des Eingangs (z.B. VI47) merken.

Diesen auf einen Stromzählerbaustein, Eingang Tr legen.

Am Stromzählerbaustein als „Offset“ den aktuellen Zählerstand einstellen, und die Impulse je kWh auf den Wert laut Zähler setzen.

Nun das Skript für den Arduino anpassen, und schon hat man einen modernen Stromzähler 🙂

#include <ESP8266HTTPClient.h>
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#include <WiFiClientSecure.h>
#include <Ethernet.h>
#include <MFRC522.h>

const char* ssid = "xxxxxxxxxx";
const char* password = "xxxxxxxxxxxx";

const String ip = "192.168.178.xxx";

int loopcount = 0;

bool on = false;
int val = 0;

void setup() {

  Serial.begin(115200);

  pinMode(D1, INPUT);  // Connect WiFi

  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());

  // Use WiFiClientSecure class to create TLS connection
  WiFiClient client;

  loopcount = 400;

}

void loop() {

  int oldval = val;
  val = digitalRead(D1);
  if (oldval != val) {
    Serial.println(val);


    HTTPClient http;  //Declare an object of class HTTPClient

    http.begin("http://user:pass@" + ip + "/dev/sps/io/VI47/" + val); //Specify request destination
    int  httpCode = http.GET();                                                                  //Send the request

    if (httpCode > 0) { //Check the returning code

      String payload = http.getString();   //Get the request response payload

      Serial.println(payload);                     //Print the response payload
      delay(500);
    }

  }

}

 

 

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

Verbinde mit %s