3EM + CCU = ein smarter Stromzähler

  • ©2020 Stefan K. (alias 66er)

    Alle Rechte vorbehalten!

    (siehe auch Urheberechtshinweis in den Shelly-Homematic-Kopplungen )


    Hallo liebe Homematic-Freunde. :)

    Heute stelle ich Euch mein Projekt eines smarten Stromzählers vor.

    Beachtet aber bitte die Firmware-Kompatibilitätstabelle in Beitrag

    # 5 und den Hinweis zu Shelly-Firmwareupdates in Beitrag # 6!

    Los geht's:

    Um den Shelly 3EM in Homematic einzubinden, braucht es keine Fremdfirmware, die man flashen muß.

    techn. Voraussetzungen:

    • kompatibel mit den Homematic-Systemen CCU2, CCU3, Charly, sowie allen Ablegern wie RaspberryMatic und piVCCU.

    • installiertes Addon CUxD in aktueller Version

      (Das Wissen um den Umgang CUxD, wie z.B. Geräte anlegen, setze ich an dieser Stelle voraus, sonst "explodiert" diese Anleitung. Danke für's Verständnis.)


    Folgende Funktion(en) habe ich aktuell auf der Homematic-Seite umgesetzt:

    • Anzeige des Gesamtverbrauchs in kWh
    • mit optionaler Anzeige der entsprechenden Kosten auf Basis des im Setup einzugebenden individuellen Strompreises je kWh
    • Anzeige der aktuellen Leistung in Watt je Phase.
      (Das ermöglicht z.B. eine dauerhafte Lastungleichheit zu erkennen und ggf. entgegenwirken zu können. Außerdem können die Werte natürlich auch z.B. graphisch weiterverarbeitet werden. Letzteres ist aber nicht Bestandteil dieses Projektes. Hierzu siehe Shelly-Daten in Homematic loggen und visualisieren .)
    • Tageszähler :
      rücksetzbarer Zähler, der für einen beliebigen Zeitraum die Verbrauchsmenge zählt und die Kosten dazu berechnet
    • optionale Anzeige des Online-Status


    Die aktuelle Ansicht der Anbindung:

    3EM V1.png

    Die einzelnen Bausteine der Umsetzung wurden in der Homematic als Favorit angelegt. ;)

    • Offizieller Beitrag

    ©2020 Stefan K. (alias 66er)

    Die Umsetzung:

    (Auf die Beschreibung des Anlegens der CUxD-Geräte verzichte ich an dieser Stelle weitestgehend, dafür gibt es die CUxD-Doku!)


    Falls noch nicht vorhanden, bitte ein Gerät (28) System Exec anlegen! Darüber werden ausschließlich die Befehle abgesetzt. (Im CUxD-Exec werden keine Eintragungen gemacht!)

    Hier gibt es bei Bedarf eine Anleitung zum Anlegen des CUxD-Exec-Gerätes.


    1.) der Verbrauchszähler:

    Dazu benötigen wir 1 Kanal einer ev. bereits vorhandenen CUxD-Universalsteuerung (40) als Schalter. Andernfalls ist diese anzulegen:

    CUxD für 3EM.png

    Hinweis:

    Der Schalter des benutzten Geräte-Kanals wird für die Zählerfunktion nicht genutzt. Er kann aber zur Visualisierung des Schaltkanals vom 3EM genutzt werden. ;)


    Dem CUxD-Kanal werden die jeweils gewünschten und natürlich anzulegenden Systemvariablen zugeordnet:

    Achtung: Die Variablennamen dürfen keine Leerzeichen enthalten!

    Onlinestatus 3EM.png

    EM3 Variablen.png

    Desweiteren werden Variablen angelegt, die das Skript (wird weiter unten veröffentlicht) zum Rechnen benötigt. Diese werden keinem CUxD-Kanal zugeordnet!

    weitere Variablen 3EM.png

    Die Namenvergabe kann natürlich an die eigenen Wünsche angepasst werden. Wichtig ist nur, die passenden Einträge im Setup des Skriptes zu machen.

    Ab Skriptversion 2.0 wird für den Onlinezustand kein CUxD-Ping-Gerät mehr benötigt! (Somit entfällt das Anlegen des CUxD-Ping. Der entfallende Teil aus und für eine Kopplung mit Skripten 1.x ist im folgenden zur Verdeutlichung jeweils kursiv und unterstrichen dargestellt.)

    Um den Onlinezustand des Shelly im WLAN darzustellen benötigen wir 1 Kanal eines ev. bereits vorhandenen CUxD-Ping (28). Ggf. ist das Gerät neu anzulegen:

    CUxD Ping.png

    Der genutzte Kanal ist wie folgt einzustellen:

    Ping Einstellungen.png
    IP-Adresse des eigenen 3EM eintragen!

    SWITCH|CMD_EXEC_TRUE:

    Code
    extra/timer.tcl Onlinestatus_3EM-Sauna 1

    SWITCH|CMD_EXEC_FALSE:

    Code
    extra/timer.tcl Onlinestatus_3EM-Sauna 0

    Name der Systemvariablen anpassen! Hier: Onlinestatus_3EM-Sauna

    Hinweis:

    (Ggf. muß der Shelly 1x offline genommen werden, damit nach erneutem Online setzen der Status ordnungsgemäß gesetzt wird.)


    An dieser Stelle sollte die Onlineanzeige jetzt funktionieren. :)

    2.) Die Anzeige der 3 Phasen

    Dafür werden folgende Systemvariablen angelegt:

    3 Phasen.png

    (Die Werte holt und berechnet später das Skript)

    3.) Der Tageszähler

    Für den Teil-Zähler benötigen wir 1 Kanal einer ev. schon vorhandenen CUxD-Universalsteuerung (40) als Taster. Ggf. ist das Gerät neu anzulegen:

    CUxD Taster.png

    Dem genutzten Kanal werden folgende anzulegende Systemvariablen zugeordnet (1):

    Variablen TZ.png

    (1) Die 2. Variable "3EM_Sauna_TZ-Startwert" wird dem Kanal nicht zugeordnet! Sie wird im Hintergrund für das Skript benötigt.;)

    Rücksetzen des Tageszählers:

    Das Rücksetzen erfolgt manuell über eine der beiden Tasten des CUxD-Kanals.

    Dazu benötigen wir ein kleines Programm:

    Programm TZ rücksetzen.png

    Das Skript der 3. DANN-Zeile:

    Code
    !Tageszähler Startwert setzen
    
    
    var a = dom.GetObject("3EM-Sauna_Verbrauch-gesamt_2020").State();
    
    dom.GetObject("3EM_Sauna_TZ-Startwert").State(a);

    Variablennamen anpassen!


    • Offizieller Beitrag


    Und nun kommen wir zum <3 des ganzen Projektes, damit unser smarter Zähler aktiv werden kann. ;)

    Dazu benötigen wir 1 Programm:

    Aktualisierungsprogramm 3EM.png

    Die Aktualisierung des 3EM erfolgt im in der Zeitsteuerung eingestellten Intervall. Dieses kann entsprechend den eigenen Anforderungen frei eingestellt werden.

    Aktuell ist das Intervall bei mir auf 2 Minuten gesetzt.

    Denkbar wäre auch durch alternativen Einsatz eines CUxD-Timers die Abfrageintervalle zu setzen.

    Und nun das Skript:

    Wenn Ihr und ich jetzt keinen Fehler gemacht haben, dann aktualisiert jetzt der Zähler seine Werte im eingestellten Intervall. :thumbup:

    ___________________________________________________________

    Die Anleitung inkl. der Skripte und Bilder unterliegt dem Urheberrecht. Wer gegen das Urheberrecht verstößt (z.B. Bilder oder Texte unerlaubt kopiert und auf anderen Webseiten publiziert), macht sich gem. §§ 106 ff UrhG strafbar, kann zudem kostenpflichtig abgemahnt werden und muss Schadensersatz leisten (§ 97 UrhG).

    © 2020 Stefan K. (alias 66er)

    Alle Rechte vorbehalten

    ____________________________________________________________

    Dir gefällt die Anleitung? Du möchtest den dahinterstehenden Aufwand mit einem kleinen "Danke" honorieren?

    Ich freue mich über jedes Danke  Paypal (Geld an einen Freund senden): der-66er@web.de

    Vielen Dank.

    • Offizieller Beitrag

    Hinweis zur Skriptversion 2.0:

    Da das Skript im Umfang noch weiter wachsen wird (so zumindest der Plan ;)) ist eine Online-Prüfung unmittelbar vor der Abfrage des Shelly 3EM implementiert. Das macht den ursprünglichen CUxD-Ping-Kanal zur Steuerung der Onlinestatus-Variablen überflüssig. Die Variable wird nun direkt durch das Skript gesetzt, wenn der entsprechende Parameter im letzten Abschnitt des Setups entsprechend aktiviert ist!

    Dadurch werden Verzögerungen im Gesamt-Homematic-Ablauf vermieden. :thumbup:

    Wer mehr als 1x Shelly 3EM gekoppelt hat organisiert die Aktualisierung beider (aller) 3 EM bitte in 1 Programm:

    Programm Aktualisierung mehr al 1 Shelly .png

    Das Zeitmodul triggert das Programm alle 2 Minuten, sodass mit 1 Minute Verzögerung der jeweils andere Shelly abgefragt wird.

    • Offizieller Beitrag

    Changelog:

    Skriptversion V2.0:

    (04.09.2020)

    Onlineüberwachung im Skript integriert

    Da der Leistungsumfang noch wachsen wird, ist die aktuelle Onlineprüfung ein wichtiger Baustein, um Verzögerungen im Gesamt-Homematic-Ablauf zu verhindern. Das CUxD-Ping Device wird nicht mehr benötigt.

    siehe auch gesonderter Hinweis zu V2.0 in Beitrag #4.

    Skriptversion V1.4 :

    (16.08.2020)

    Ausfallsicherheit verbessert

    --> Ein Reset der Werte im Shelly z.B. durch Firmwareupdate beieinflußt nicht den HM-Zähler. Die Werte bleiben erhalten und werden fortgeführt.

    Skriptversion V1.3 :

    (18.07.2020)

    Erste Veröffentlichung mit Gesamtverbrauch, aktuelle Leistung je Phase und rücksetzbarem Tageszähler

    Entwickelt und getestet in folgenden Varianten:

    SkriptCCU2CCU3CUxD3EMinkompatibel
    V2.02.51.63.51.62.4.3 1.8.1-
    V2.02.51.63.51.62.4.31.7.0-
    V1.42.51.63.51.62.4.31.8.1-
    V1.42.51.63.51.62.4.31.7.0-
    V1.32.51.63.51.62.4.31.7.0-

    Update-Hinweis in Beitrag # 6 beachten!

    ____________________________________________

    Die Anleitung inkl. der Skripte und Bilder unterliegt dem Urheberrecht. Wer gegen das Urheberrecht verstößt (z.B. Bilder oder Texte unerlaubt kopiert und auf anderen Webseiten publiziert), macht sich gem. §§ 106 ff UrhG strafbar, kann zudem kostenpflichtig abgemahnt werden und muss Schadensersatz leisten (§ 97 UrhG).

    © 2020 Stefan K. (alias 66er)

    Alle Rechte vorbehalten


  • Dieses Thema enthält 3 weitere Beiträge, die nur für registrierte Benutzer sichtbar sind, bitte registrieren Sie sich oder melden Sie sich an um diese lesen zu können.