Integration von Shelly EM in homematic

Problemlösungen und Hinweise von allgemeinem Interesse zur Haussteuerung mit HomeMatic

Moderator: Co-Administratoren

Antworten
PeterAC
Beiträge: 69
Registriert: 19.12.2014, 14:07
Hat sich bedankt: 3 Mal
Danksagung erhalten: 6 Mal

Integration von Shelly EM in homematic

Beitrag von PeterAC » 02.04.2021, 15:50

Mit dem folgenden Skript lässt sich ein Shelly EM auslesen und die Messwerte und Energiezählerstände in homematic-Systemvariablen übertragen. Die Anwendung ist die Erfassung der Brutto-Erzeugung einer SMA-PV-Anlage, die mit Bordmitteln nicht abrufbar ist (kein Mod-Bus), sowie der elektrische Energieverbrauch einer solar unterstützten Heizungsanlage. Das Skript benötigt auf der CCU2 die Installation von CUXD, damit das Tool "curl" verfügbar ist. Die Brutto-Erzeugung in Verbindung mit den Bilanzdaten des SMA-Energymeters lassen dann auch die Ermittlung des Haus-internen Verbrauchs verzögerungsfrei zu.

Der Shelly EM ist ein einphasiger Leistungmesser mit zwei Strommesskanälen, dessen Daten über WLAN abrufbar sind, sowohl per Browser, Cloud, REST-API oder MQTT. Der Shelly EM liefert die Phasenspannung und für beide Stromkanäle Augenblickswerte von Wirk- und Blindleistung, deren Mittelwerte über die letzten 60 Sekunden und getrennt für beide Energierichtungen nicht-flüchtige Energiezähler. Die Spannungsmessung erfolgt über die Phase, die auch den Shelly EM mit Strom versorgt, die Strommessung über zwei unabhängig platzierbare Stromwandler-Clips, die um die zu messenden Abgänge geklemmt werden. Es werden Wandler für 50 A und 120 A angeboten. Für den vorgesehenen Zweck wurden 50-A-Wandler verwendet. Für eine korrekte Leistungmessung müssen die zwei gemessenen Lasten über dieselbe Phase versorgt werden wie der Shelly EM selbst.

Das Skript arbeitet ähnlich wie die Lösung für das SMA-Energy-Meter hier: viewtopic.php?f=31&t=48333&start=30#p591514

Der Ausdrücke XXXXXX und -u USER:PASSWORD müssen durch die Seriennummer bzw. Username und Password (sofern diese im Shelly EM gesetzt wurden) ersetzt werden. Das Skript ruft den gesamtem Status vom Shelly EM bei jedem Aufruf ab. Um die CCU-Belastung nicht unnötig zu erhöhen, fährt es mit der weiteren Verarbeitung nur fort, wenn beim Rohdaten-Abruf kein Fehler augetreten ist und wenn sich der Zeitstempel des Status geändert hat. Dann werden die aktuellen Daten aus dem Status-String extrahiert. Mit den Systemvariablen, die (noch) Zeitstempel und Zählerstände vom letzten Abruf enthalten, werden Leistungsmittelwerte (PV nur Erzeugung, Heizung nur Verbrauch) über den vergangenen Zeitraum gebildet. Zuletzt werden alle Daten sowie die Energiezählerstände und Augenblickswerte für die Wirkleistungen wieder in Systemvariable übertragen.

Erläuterungen zu den einzelnen Schritten finden sich in den Kommentaren des Skriptes.

Code: Alles auswählen

!- 2020-01-09 Abruf des ShellyEM-XXXXXX zur Ermittlung der PV- und Heizungsdaten
!- Benutzte Systemvariablen:
!- _vSMA_PV_Power_TS        : Zeit, Zeitstempel des vorigen Datenabrufs

!- SMA PV-Leistung          : Zahl, aktuelle PV-Erzeugungsleistung
!- SMA PV-Leistung (mittl)  : Zahl, mittlere PV-Erzeugungsleistung seit vorigem Abruf
!- _vSMA_PV_Energy          : Zahl, PV-Energiezähler nach vorigem Abruf

!- Solvis Leistung          : Zahl, aktueller Verbrauch im Heizungsraum
!- Solvis Leistung (mittl)  : Zahl, mittlerer Verbrauch im Heizungsraum seit vorigem Abruf
!- _vSolvis_Energy          : Zahl, Energiezähler Heizungsraum nach vorigem Abruf

string lGetOut;          !- Ergebnise des HTTP-Abrufs
string lGetErr;          !- Fehler

!- Die foldenden Skript-Variablen werden erst angelegt, wenn sie auch tatsächlich benötigt werden
!- Variablen für PV-Anlage
!- real   PVEnergy;          !- Variable für Energie-Zähler im Shelly EM für den PV-Kanal
!- real   PVPower;           !- Aktuelle Leistung im PV-Kanal
!- time   Shelly_TS;        !- Zeitstempel der Shelly EM-Messung
!- object o_vSMA_PV_Power_TS !- Objektvariable für Systemvariable "_vSMA_PV_Power_TS" mit Zeitstempel vom vorigen Shelly-EM-Abruf
!- time   _vSMA_PV_Power_TS; !- Zeitstempel vom vorigen Shelly-EM-Abruf aus Systemvariable
!- object o_vSMA_PV_Energy;  !- Objektvariable für Systemvariable "_vSMA_PV_Energy" mit Energiezähler vom vorigen Shelly-EM-Abruf
!- real   _vSMA_PV_Energy;   !- Energiezähler vom vorigen Shelly-EM-Abruf aus Systemvariable
!- real   PVPower_avg;       !- Mittl. Erzeugungsleistung seit letztem Abruf

!- Variablen für Heizungsraum (Solvis+Beleuchtung)
!- real   SolvisEnergy;      !- Aktueller Energieverbrauch
!- real   SolvisPower;       !- Aktuelle Leistung
!- object o_vSolvis_Energy;  !- Objektvariable für Systemvariable "_vSolvis_Energy" mit Energiezähler vom vorigen Shelly-EM-Abruf
!- real   _vSolvis_Energy;   !- Energiezähler vom vorigen Shelly-EM-Abruf aus Systemvariable
!- real   SolvisPower_avg;   !- Mittl. Leistung Heizungsraum seit letztem Abruf


!- Abfrage der HTTP-Servers und Ausfiltern der aktuellen Leistung und des Zeitstempels
integer ErrorCode = system.Exec("/usr/local/addons/cuxd/extra/curl -u USER:PASSWORD -G  http://ShellyEM-XXXXXX/status",&lGetOut,&lGetErr);
if (ErrorCode) { quit; } !- Abbruch bei Fehlercode <> 0
lGetOut = lGetOut.Replace("\"", "");

!- Vearbeitung der Zeitstempel
time Shelly_TS = (((((lGetOut.Substr(lGetOut.Find("unixtime"),50)).StrValueByIndex(",",0)).StrValueByIndex(":",1)).ToInteger())-3600).ToTime();
object o_vSMA_PV_Power_TS = dom.GetObject("_vSMA_PV_Power_TS");
time _vSMA_PV_Power_TS = o_vSMA_PV_Power_TS.Value().ToTime(); !- Zeitstempel auswerten
if (_vSMA_PV_Power_TS == Shelly_TS) { quit;} !- Nur bei aktualisierten Daten fortfahren

!- Auslesen der aktuellen Leistungsdaten
real PVPower      = 0.0 - (((lGetOut.Substr(lGetOut.Find("emeters:")+10,-1)).StrValueByIndex(",",0)).StrValueByIndex(":",1)).ToFloat(); !- Aktuelle PV-Leistung
real SolvisPower  = (((lGetOut.Substr(lGetOut.Find("emeters:")+10,-1)).StrValueByIndex(",",6)).StrValueByIndex(":",1)).ToFloat(); !- Aktuelle Solvis-Leistung

!- Auslesen der Gesamtenergiezähler
real PVEnergy     = ((34380.0899-4.7324)*1.0) + (((lGetOut.Substr(lGetOut.Find("emeters:")+10,-1)).StrValueByIndex(",",5)).StrValueByIndex(":",1)).ToFloat()/1000.0; !- PV-Energie, Korrektur für Vorgeschichte
real SolvisEnergy = (((lGetOut.Substr(lGetOut.Find("emeters:")+10,-1)).StrValueByIndex(",",10)).StrValueByIndex(":",1)).ToFloat()/1000.0; !- Solvis-Energie

object o_vSMA_PV_Energy = dom.GetObject("_vSMA_PV_Energy");
real _vSMA_PV_Energy = o_vSMA_PV_Energy.Value();
real PVPower_avg = 3600000.0*(PVEnergy - _vSMA_PV_Energy)/(Shelly_TS-_vSMA_PV_Power_TS).ToInteger();

object o_vSolvis_Energy = dom.GetObject("_vSolvis_Energy");
real _vSolvis_Energy = o_vSolvis_Energy.Value();
real SolvisPower_avg = 3600000.0*(SolvisEnergy - _vSolvis_Energy)/(Shelly_TS-_vSMA_PV_Power_TS).ToInteger();

!- Zurückschreiben der Daten in die Systemvariablen
o_vSMA_PV_Power_TS.State(Shelly_TS);
o_vSMA_PV_Energy.State(PVEnergy);
dom.GetObject("SMA PV-Leistung").State(PVPower);
dom.GetObject("SMA PV-Leistung (mittl)").State(PVPower_avg);

o_vSolvis_Energy.State(SolvisEnergy);
dom.GetObject("Solvis Leistung (mittl)").State(SolvisPower_avg);
dom.GetObject("Solvis Leistung").State(SolvisPower);

Der Einsatz eines Shelly EM erwies sich zuletzt als praktikable Lösung, die Brutto-Erzeugung der SMA-PV-Anlage zu jedem Zeitpunkt unproblematisch, verzögerungsfrei und mit geringem Leistungsbedarf (< 1W) zu erhalten. Eine Alternative wäre noch, einen RASPI über Bluetooth mit dem Wechselrichter zu verbinden. Diese Lösung hätte aber einen höheren Stromverbrauch (ca. 4 W) und wäre erheblich aufwendiger in der Software-Umsetzung geworden, bei vergleichbaren Gesamtkosten. Vermutlich gibt es noch viele Optimierungsmöglichkeiten, allerdings funktioniert es so seit drei Monaten sehr zufriedenstellend. Das folgende Bild zeigt die Darstellung der letzten drei Tage mit einem Abruf alle fünf MInuten.

Screenshot_2021-04-02 CUxD-Highcharts.png

Leider bietet SMA in der genannten Kombination (Sunnyboy 5000 TL21, SMA Homemanager 1.0, SMA Energymeter 1.0) keine mit den SMA-Nutzungbedingungen konforme Möglichkeit, ohne Zusatzhardware diese Daten zu bekommen. Zwar werden die Augenblickswerte per Bluetooth vom Wechselrichter an den Homemanager übermittelt, dieser bietet aber keine Abfragemöglichkeit für die Bruttoerzeugung an. Er sendet die Daten an das SMA Portal, wo sie nach Login auch nahezu verzögerungsfrei dargestellt werden, die Verbindung muss aber schon nach wenigen Minuten neu aufgebaut werden und der automatisierte Login und Abruf sind in den Nutzungsbedingungen ohnehin ausgeschlossen. Die Kommunikation des Homemanagers mit dem Sunny-Portal ist verschlüsselt und kann nicht ausgewertet werden. Die Lizenz-konforme Möglichkeit, die Anlagendaten im Web zu publizieren, und wieder abzurufen ist unbrauchbar, da der Status nur alle zwei Stunden (!!) aktualisiert wird, mit dem kostenpflichtigen (!) "Professional Package" alle 15 Minuten.

VG,
Peter

tigger30926
Beiträge: 60
Registriert: 14.09.2015, 08:48
Hat sich bedankt: 2 Mal

Re: Integration von Shelly EM in homematic

Beitrag von tigger30926 » 25.11.2022, 08:29

Guten Morgen Peter,
ich bin gerade über Dein Skript gestolpert und würde das gerne verwenden. :D
Könntest Du mir bitte kurz schildern, welche Systemvariable ich anlegen muss um nur den Part vom Shelly 3em zu nutzen?
Ich habe gerade einmal getestet ob mein Shelly auch die Status-Meldung bereitstellt und das sollte passen.
Wie sollte dann das Programm dazu aussehen, ich dachte ich lasse das Skript dann alle 30 Sekunden laufen, ist das ok oder zu schnell hintereinander?

Freue mich von Dir zu hören.

Vielen Dank
Marcus

Benutzeravatar
Black
Beiträge: 5463
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 418 Mal
Danksagung erhalten: 1069 Mal
Kontaktdaten:

Re: Integration von Shelly EM in homematic

Beitrag von Black » 25.11.2022, 09:06

von einem 30 sekündigen Aufruf von CCU Scripten würde ich Abstand nehmen. Das schreit quasi nach Problemen. Und wenn ich auf der CCU ein Gerät abfrage, dass würde ich über CallBack realisieren (Hier hab ich das mal für eine SUSV beschrieben: viewtopic.php?f=65&t=45388&hilit=Susv+callback)

Tip zu dem 3EM. die 3 Spannungseingänge, tu dir den Gefallen und sichere die mit flinken 100mA Glassicherungen ab. Der 3EM neigt bei unsymetrischen N dazu , seine Elektronic durch metamophose unter Benutzung einer Stichflamme in einen schwarzen Klumpen zu verwandeln.
Wenn dort ein normaler B16 oder B10 vorgeschaltet ist, dieser bekommt davon nix mit und schützt den 3EM auch nicht.

Bei mir ist der 3EM auch verbaut, nur ist bei mir die Anbindung über MQTT, heisst bei Änderung sendet der Shelly von sich aus die Daten (ohne das ich was Abfragen muss) an einen lokalen MQTT broker. Das auch noch extrem schnell. Das ganze lässt sich selbstverständlich ohne Softwareinvestitionskosten umsetzen.


Black
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

Mathias
Beiträge: 1767
Registriert: 03.11.2010, 10:25
System: CCU
Wohnort: Aachen
Hat sich bedankt: 58 Mal
Danksagung erhalten: 253 Mal
Kontaktdaten:

Re: Integration von Shelly EM in homematic

Beitrag von Mathias » 25.11.2022, 09:44

Mit dem CCU-Jack kann ein Shelly EM3 relativ einfach an die CCU angebunden werden. Eine Anleitung ist im Wiki vom CCU-Jack zu finden. Die Anbindung ist sehr performat, sodass immer der aktuelle Wert sofort in der CCU zur Verfügung steht.

PeterAC
Beiträge: 69
Registriert: 19.12.2014, 14:07
Hat sich bedankt: 3 Mal
Danksagung erhalten: 6 Mal

Re: Integration von Shelly EM in homematic

Beitrag von PeterAC » 27.12.2022, 19:37

Hallo,

ich merke, dass ich öfter reinschauen sollte.

@Markus: Bei mir läuft das Skript alle 5 Minuten. Da die Leistung über die Zählerstände und die timestamps ermittelt werden, ergeben sich daraus 5-minütige Durchschnittswerte. Diese liegen den obigen Diagrammen zugrunde. Die zusätzliche Momentanleistung ist dabei natürlich nur ein Gimmick und nicht in den Grafiken enthalten.Ich gebe Black recht, ein Aufruf alle 30 Sekunden kommt mir auch kühn vor, zumal der Return von dem Abruf der Daten des Shelly EM auch ein wenig dauert. Bei mir spielt es noch mit dem Abruf des SMA Energymeters zusammen, da musste ich sowiese ein bischen Reserve im Timing haben damit immer die (halbwegs) richtigen Zeitpunkte miteinander verrechnet werden. Zeil der Aktion war auch einen aktuellen Bruttoverbrauch des Haushaltes zu bestimmen.
Übrigens musste ich nach dem Update der Shellies auf 1.12 einige Indizes ändern (der EM hat nun auch "pf", steht aber in der API-Doku noch nicht), um wieder die richtigen Datenfelder zu treffen. Besser wäre natürlich der JSON-Parser von MichaelN, den ich kürzlich gefunden habe. Das wird aber so schnell nichts, daher hier einmal der letzte Stand des Skriptes:

Code: Alles auswählen

!- 2022-12-20 Abruf des ShellyEM-XXXXXX zur Ermittlung der PV- und Heizungsdaten (Korrektur emeters-Parameterliste)
!- Benutzte Systemvariablen:
!- _vSMA_PV_Power_TS        : Zeit, Zeitstempel des vorigen Datenabrufs
!-  _vShelly_Error	        : Zähler für Fehler beim Datenabruf (Timeout, Kodierung, alte Daten)

!- SMA PV-Leistung          : Zahl, aktuelle PV-Erzeugungsleistung
!- SMA PV-Leistung (mittl)  : Zahl, mittlere PV-Erzeugungsleistung seit vorigem Abruf
!- _vSMA_PV_Energy          : Zahl, PV-Energiezähler nach vorigem Abruf

!- Solvis Leistung          : Zahl, aktueller Verbrauch im Heizungsraum
!- Solvis Leistung (mittl)  : Zahl, mittlerer Verbrauch im Heizungsraum seit vorigem Abruf
!- _vSolvis_Energy          : Zahl, Energiezähler Heizungsraum nach vorigem Abruf



string lGetOut;          !- Ergebnise des HTML-Abrufs
string lGetErr;          !- Fehler

!- Die foldenden Skript-Variablen werden erst angelegt, wenn sie auch tatsächlich benötigt werden
!- object o_vShelly_Error	 !- Objektvariable für Systemvariable "_vShelly_Error" mit Zähler für Fehler beim Datenabruf von Shelly EM

!- Variablen für PV-Anlage
!- real   PVEnergy;          !- Variable für Energie-Zähler im Shelly EM für den PV-Kanal
!- real   PVPower;           !- Aktuelle Leistung im PV-Kanal
!- time   Shelly_TS;        !- Zeitstempel der Shelly EM-Messung
!- object o_vSMA_PV_Power_TS !- Objektvariable für Systemvariable "_vSMA_PV_Power_TS" mit Zeitstempel vom vorigen Shelly-EM-Abruf
!- time   _vSMA_PV_Power_TS; !- Zeitstempel vom vorigen Shelly-EM-Abruf aus Systemvariable
!- object o_vSMA_PV_Energy;  !- Objektvariable für Systemvariable "_vSMA_PV_Energy" mit Energiezähler vom vorigen Shelly-EM-Abruf
!- real   _vSMA_PV_Energy;   !- Energiezähler vom vorigen Shelly-EM-Abruf aus Systemvariable
!- real   PVPower_avg;       !- Mittl. Erzeugungsleistung seit letztem Abruf

!- Variablen für Heizungsraum (Solvis+Beleuchtung)
!- real   SolvisEnergy;      !- Aktueller Energieverbrauch
!- real   SolvisPower;       !- Aktuelle Leistung
!- object o_vSolvis_Energy;  !- Objektvariable für Systemvariable "_vSolvis_Energy" mit Energiezähler vom vorigen Shelly-EM-Abruf
!- real   _vSolvis_Energy;   !- Energiezähler vom vorigen Shelly-EM-Abruf aus Systemvariable
!- real   SolvisPower_avg;   !- Mittl. Leistung Heizungsraum seit letztem Abruf


!- Abfrage der HTML-Seite und Ausfiltern der aktuellen Leistung und des Zeitstempels
integer ErrorCode = system.Exec("/usr/local/addons/cuxd/extra/curl -u USER:PASSWORD -G  http://ShellyEM-XXXXXX/status",&lGetOut,&lGetErr);

!- Abbruch bei Fehlercode <> 0
if (ErrorCode)
	{
    	object o_vShelly_Error = dom.GetObject("_vShelly_Error");
        o_vShelly_Error.State(o_vShelly_Error.Value()+1); !- Zähler hochzählen
	    quit;
    }
lGetOut = lGetOut.Replace("\"", "");
!- Vearbeitung der Zeitstempel
time Shelly_TS = (((((lGetOut.Substr(lGetOut.Find("unixtime"),50)).StrValueByIndex(",",0)).StrValueByIndex(":",1)).ToInteger())-3600).ToTime();
object o_vSMA_PV_Power_TS = dom.GetObject("_vSMA_PV_Power_TS");
time _vSMA_PV_Power_TS = o_vSMA_PV_Power_TS.Value().ToTime(); !- Zeitstempel auswerten
!- Nur bei aktualisierten Daten fortfahren
if (_vSMA_PV_Power_TS == Shelly_TS)
	{
    	object o_vShelly_Error = dom.GetObject("_vShelly_Error");
        o_vShelly_Error.State(o_vShelly_Error.Value()+1); !- Zähler hochzählen
	    quit; !- Abbruch bei Fehlercode <> 0
    }
!- Auslesen der aktuellen Leistungsdaten
real PVPower      = 0.0 - (((lGetOut.Substr(lGetOut.Find("emeters:")+10,-1)).StrValueByIndex(",",0)).StrValueByIndex(":",1)).ToFloat(); !- Aktuelle PV-Leistung
real SolvisPower  = (((lGetOut.Substr(lGetOut.Find("emeters:")+10,-1)).StrValueByIndex(",",7)).StrValueByIndex(":",1)).ToFloat(); !- Aktuelle Solvis-Leistung

!- Auslesen der Gesamtenergiezähler)
real PVEnergy     = ((34380.0899-4.7324)*1.0) + (((lGetOut.Substr(lGetOut.Find("emeters:")+10,-1)).StrValueByIndex(",",6)).StrValueByIndex(":",1)).ToFloat()/1000.0; !- PV-Energie, Korrektur für Vorgeschichte
real SolvisEnergy = (((lGetOut.Substr(lGetOut.Find("emeters:")+10,-1)).StrValueByIndex(",",12)).StrValueByIndex(":",1)).ToFloat()/1000.0; !- Solvis-Energie

object o_vSMA_PV_Energy = dom.GetObject("_vSMA_PV_Energy");
real _vSMA_PV_Energy = o_vSMA_PV_Energy.Value();
real PVPower_avg = 3600000.0*(PVEnergy - _vSMA_PV_Energy)/(Shelly_TS-_vSMA_PV_Power_TS).ToInteger();

object o_vSolvis_Energy = dom.GetObject("_vSolvis_Energy");
real _vSolvis_Energy = o_vSolvis_Energy.Value();
real SolvisPower_avg = 3600000.0*(SolvisEnergy - _vSolvis_Energy)/(Shelly_TS-_vSMA_PV_Power_TS).ToInteger();

!- Zurückschreiben der Daten in die Systemvariablen
o_vSMA_PV_Power_TS.State(Shelly_TS);
o_vSMA_PV_Energy.State(PVEnergy);
dom.GetObject("SMA PV-Leistung").State(PVPower);
dom.GetObject("SMA PV-Leistung (mittl)").State(PVPower_avg);

o_vSolvis_Energy.State(SolvisEnergy);
dom.GetObject("Solvis Leistung (mittl)").State(SolvisPower_avg);
dom.GetObject("Solvis Leistung").State(SolvisPower);

Beim Shelly 3EM wird man wohl drei Zähler auslesen müssen und die Zeilen mit

"real PVPower = 0.0 - (((lGetOut.Substr(lGetOut.Find("emeters:")+10,-1) ... " und
"real PVEnergy = (((lGetOut.Substr(lGetOut.Find("emeters:")..."

dreimal benutzen, jeweils mit angepassten Indizes für die drei Phasen und alles aufaddieren. Das ist ein gewisses Gefummel, bis man das genau getroffen hat. Möglicherweise müssen die Indizes noch an die Strukturen des 3EM angepasst werden, die kann man sich auf der Shelly-API-Seite ansehen. Der Shelly EM hat getrennte Zähler für Erzeugung und Verbrauch, vermutlich wäre das beim 3EM aber genauso. Bei mir spielt es aber keine Rolle, da am Kanal 1 ausschließlich die PV-Erzeugung, an Kanal 2 ausschließlich die Heizungsanlage hängt. Daher habe ich mich nur auf die relevanten Zähler beschränkt.
Alle Zeilen mit Solvis kannst du streichen und die entsprechenden Systemvariablen auch.

SMA bietet gegen monatliche Gebühr die 5-Minuten-Auflösung auch an, allerdings mit 15 Minuten Verzögerung. Der Standardzugang liefert 15-minütige Auflösung mit zwei Stunden Verspätung.

@Black, Mathias: Danke für den Tip mit den Sicherungen, werde ich mal einbauen. Bei mir ist es aber kein 3EM sondern nur ein "EM", d.h. er hat nur eine Phase. Ich habe den vor allem für die Ermittlung der PV-Leistung gebraucht, der andere Strom-Kanal überwacht die Heizungsanlage. Für Einspeise- und Bezugszähler werte ich das SMA Energymeter aus (3-phasig) aus. Leider habe (noch?) keine CCU3, so dass die Verwendung der MQTT-Daten mit CCU-Jack nicht so ohne weiteres geht (s. hier). Für den Shelly H&T habe ich mir in den letzten Tagen eine XML-API-Erweiterung gebastelt.

Bullson
Beiträge: 140
Registriert: 10.11.2011, 10:53
Hat sich bedankt: 18 Mal
Danksagung erhalten: 2 Mal

Re: Integration von Shelly EM in homematic

Beitrag von Bullson » 17.03.2023, 06:51

Vielen Dank,
das war eine tolle Hilfestellung den Shelly 3em in die CCU3 zu holen.
Hab es auf 3 Minuten und alls läuft schick
Frage: Macht eine "dom.GetObject" Abfrage, von aussen, zum Status eines Gerätes eine Verbindung zum Gerät oder nur zur CCU?
Ich habe das ganze in eine Diashow (In Webseiten Form) gepackt. So das mir da alle 30 Sekunden aktualisiert auch meine Einspeisewerte und eben alle 3m die Shelly Werte angezeigt werden.

Und wenn er jedes Mal das Gerät triggert wär das ja blöd für die Auslastung

Antworten

Zurück zu „HomeMatic Tipps & Tricks - keine Fragen!“