Homematic und SMA Sunny Boy mit SHM, PV Erzeugung lesen über ModBus
Moderator: Co-Administratoren
-
- Beiträge: 21
- Registriert: 07.01.2017, 18:57
- Danksagung erhalten: 13 Mal
Homematic und SMA Sunny Boy mit SHM, PV Erzeugung lesen über ModBus
Hallo,
ich habe eine Solaranlage mit einem SMA Sunny Boy Wechselrichter und mit einem SMA Home Manager 2. Die Werte des Systems (Netzeinspeisung/Verbrauch und die derzeitige PV Leistung) können recht leicht in Variablen der Homematic CCU3 eingelesen werden. Dann kann man sich Skripte programmieren um diese Energie zu verbrauchen.
Wie dies geht beschreibe ich nun:
Voraussetzung:
1) SMA Sunnyboy Wechselrichter unterstützt das Modbus Protokoll und dies ist auch eingeschaltet im Wechselrichter.
2) Falls vorhanden: Ein Energy Meter oder ein SMA Homemanager zur Leistungsmessung ist angeschlossen und im Wechselrichter konfiguriert. (Im Wechselrichter kann man den aktuellen Verbrauch im Web Menu sehen).
3) SMA Sunnyboy und die Homematic CCU3 befinden sich im gleichen Netzwerk.
CCU3 Setup:
1) In der CCU diese Systemvariablen anlegen vom Typ Number, „SMA AC Leistung“, „SMA DC Leistung“, „SMA Netzbezug“, „SMA Netzeinspeisung“. Einheit: Watt
2) In der CCU diese Systemvariable anlegen vom Typ Character string. „SMA Zeitstempel”, Einheit: Uhr
3) Nun SSH in der CCU aktivieren und mit FTP (FileZilla) ein Verzeichnis im CCU3 Dateisystem anlegen: /usr/local/addons/modbus, also das Verzeichnis modbus in Verzeichnis /usr/local/addons anlegen. Dateiattribute des modbus Verzeichnisses setzen auf: 701
4) Mit FTP oder FileZilla die beiden Dateien modbus.tcl und sma.tcl in das Verzeichnis modbus kopieren. Dateiattribute beider Dateien setzen auf: 755. 5) Nun dieses Script auf der CCU3 einrichten und z.B. jede Minute laufen lassen: Achtung: 192.168.178.35 im folgenden Skript ersetzen durch die IP Adresse des SMA Sunny Boy Wechselrichters.
string lGetOut = "";
string lGetErr = "";
system.Exec("tclsh /usr/local/addons/modbus/sma.tcl 192.168.178.35 30865 2",&lGetOut,&lGetErr);
var SMAValue=dom.GetObject("SMA Netzbezug");
SMAValue.State(lGetOut.StrValueByIndex(" ", 1));
string lGetOut = "";
string lGetErr = "";
system.Exec("tclsh /usr/local/addons/modbus/sma.tcl 192.168.178.35 30867 2",&lGetOut,&lGetErr);
var SMAValue=dom.GetObject("SMA Netzeinspeisung");
SMAValue.State(lGetOut.StrValueByIndex(" ", 1));
string lGetOut = "";
string lGetErr = "";
system.Exec("tclsh /usr/local/addons/modbus/sma.tcl 192.168.178.35 30773 2",&lGetOut,&lGetErr);
var SMAValue=dom.GetObject("SMA DC Leistung");
SMAValue.State(lGetOut.StrValueByIndex(" ", 1));
string lGetOut = "";
string lGetErr = "";
system.Exec("tclsh /usr/local/addons/modbus/sma.tcl 192.168.178.35 30775 2",&lGetOut,&lGetErr);
var SMAValue=dom.GetObject("SMA AC Leistung");
SMAValue.State(lGetOut.StrValueByIndex(" ", 1));
var t = system.Date("%H:%M:%S");
dom.GetObject("SMA Zeitstempel").State(t);
#WriteLine(lGetErr.StrValueByIndex(" ", 1));
Das Program liest nacheinander mehrere ModBus Register des Wechselrichters aus. Man kann natürlich auch noch andere Register auslesen. Dazu gibt es auf der SMA Webseite eine Liste aller verfügbaren ModBus Register.
Nun kann man die Werte in Scripten verwenden und abhängig von den PV Werten seine Verbraucher steuern und auch das laden seines E-Autos.
Achtung: Wenn die Dateien modbus.tcl oder sma.tcl editiert werden, dann einen Editor verwenden der keine CRLF einfügt. (Z.B. NotePad++).
Ich hoffe das meine Anleitung nützlich ist.
Frohe Weihnachten, M. Schneider
Noch ein Hinweis: Fall der Wechselrichter mehrere Strings hat, dann wird in "SMA DC Leistung" nur die Leistung vom String A angezeigt. Ich habe noch keine ModBus Register für die weiteren Strings gefunden. Bitte melden wenn jemand Infos hierzu hat.
ich habe eine Solaranlage mit einem SMA Sunny Boy Wechselrichter und mit einem SMA Home Manager 2. Die Werte des Systems (Netzeinspeisung/Verbrauch und die derzeitige PV Leistung) können recht leicht in Variablen der Homematic CCU3 eingelesen werden. Dann kann man sich Skripte programmieren um diese Energie zu verbrauchen.
Wie dies geht beschreibe ich nun:
Voraussetzung:
1) SMA Sunnyboy Wechselrichter unterstützt das Modbus Protokoll und dies ist auch eingeschaltet im Wechselrichter.
2) Falls vorhanden: Ein Energy Meter oder ein SMA Homemanager zur Leistungsmessung ist angeschlossen und im Wechselrichter konfiguriert. (Im Wechselrichter kann man den aktuellen Verbrauch im Web Menu sehen).
3) SMA Sunnyboy und die Homematic CCU3 befinden sich im gleichen Netzwerk.
CCU3 Setup:
1) In der CCU diese Systemvariablen anlegen vom Typ Number, „SMA AC Leistung“, „SMA DC Leistung“, „SMA Netzbezug“, „SMA Netzeinspeisung“. Einheit: Watt
2) In der CCU diese Systemvariable anlegen vom Typ Character string. „SMA Zeitstempel”, Einheit: Uhr
3) Nun SSH in der CCU aktivieren und mit FTP (FileZilla) ein Verzeichnis im CCU3 Dateisystem anlegen: /usr/local/addons/modbus, also das Verzeichnis modbus in Verzeichnis /usr/local/addons anlegen. Dateiattribute des modbus Verzeichnisses setzen auf: 701
4) Mit FTP oder FileZilla die beiden Dateien modbus.tcl und sma.tcl in das Verzeichnis modbus kopieren. Dateiattribute beider Dateien setzen auf: 755. 5) Nun dieses Script auf der CCU3 einrichten und z.B. jede Minute laufen lassen: Achtung: 192.168.178.35 im folgenden Skript ersetzen durch die IP Adresse des SMA Sunny Boy Wechselrichters.
string lGetOut = "";
string lGetErr = "";
system.Exec("tclsh /usr/local/addons/modbus/sma.tcl 192.168.178.35 30865 2",&lGetOut,&lGetErr);
var SMAValue=dom.GetObject("SMA Netzbezug");
SMAValue.State(lGetOut.StrValueByIndex(" ", 1));
string lGetOut = "";
string lGetErr = "";
system.Exec("tclsh /usr/local/addons/modbus/sma.tcl 192.168.178.35 30867 2",&lGetOut,&lGetErr);
var SMAValue=dom.GetObject("SMA Netzeinspeisung");
SMAValue.State(lGetOut.StrValueByIndex(" ", 1));
string lGetOut = "";
string lGetErr = "";
system.Exec("tclsh /usr/local/addons/modbus/sma.tcl 192.168.178.35 30773 2",&lGetOut,&lGetErr);
var SMAValue=dom.GetObject("SMA DC Leistung");
SMAValue.State(lGetOut.StrValueByIndex(" ", 1));
string lGetOut = "";
string lGetErr = "";
system.Exec("tclsh /usr/local/addons/modbus/sma.tcl 192.168.178.35 30775 2",&lGetOut,&lGetErr);
var SMAValue=dom.GetObject("SMA AC Leistung");
SMAValue.State(lGetOut.StrValueByIndex(" ", 1));
var t = system.Date("%H:%M:%S");
dom.GetObject("SMA Zeitstempel").State(t);
#WriteLine(lGetErr.StrValueByIndex(" ", 1));
Das Program liest nacheinander mehrere ModBus Register des Wechselrichters aus. Man kann natürlich auch noch andere Register auslesen. Dazu gibt es auf der SMA Webseite eine Liste aller verfügbaren ModBus Register.
Nun kann man die Werte in Scripten verwenden und abhängig von den PV Werten seine Verbraucher steuern und auch das laden seines E-Autos.
Achtung: Wenn die Dateien modbus.tcl oder sma.tcl editiert werden, dann einen Editor verwenden der keine CRLF einfügt. (Z.B. NotePad++).
Ich hoffe das meine Anleitung nützlich ist.
Frohe Weihnachten, M. Schneider
Noch ein Hinweis: Fall der Wechselrichter mehrere Strings hat, dann wird in "SMA DC Leistung" nur die Leistung vom String A angezeigt. Ich habe noch keine ModBus Register für die weiteren Strings gefunden. Bitte melden wenn jemand Infos hierzu hat.
Zuletzt geändert von mschneider am 01.02.2019, 16:51, insgesamt 1-mal geändert.
-
- Beiträge: 33
- Registriert: 15.01.2012, 19:12
Re: Homematic und SMA Sunny Boy mit SHM, PV Erzeugung lesen über ModBus
Hallo,
kann man anstatt des Wechselrichters auch den SHM oder den Energiemeter abfragen?
Hintergrund ist das mein Tripower über Bluetooth mit dem SHM kommuniziert.
Die IP´s des SHM hatte ich bereits im Script und in der tcl Datei geändert, jedoch ohne Erfolg.
Gruß Christian
kann man anstatt des Wechselrichters auch den SHM oder den Energiemeter abfragen?
Hintergrund ist das mein Tripower über Bluetooth mit dem SHM kommuniziert.
Die IP´s des SHM hatte ich bereits im Script und in der tcl Datei geändert, jedoch ohne Erfolg.
Gruß Christian
-
- Beiträge: 21
- Registriert: 07.01.2017, 18:57
- Danksagung erhalten: 13 Mal
Re: Homematic und SMA Sunny Boy mit SHM, PV Erzeugung lesen über ModBus
Hallo Christian
Ich glaube der SHM und auch der SHM2 kann seine Werte nicht über ModBus Abfragen bereitstellen. Der SHM bzw. der Energy Meter sendet seine Werte mit SpeedWire an den Wechselrechter. Der Wechselrichter stellt dann diese Werte über Modbus bereit. Diese werden dann im Skript abgefragt. Dies ist zumindest die Voraussetzung damit auch die derzeitige Bezugsleistung bzw. Einspeiseleistung abgefragt werden kann.
In deinem Fall sehe ich nur die Möglichkeit die Werte über SpeedWire abzufragen. Der SHM 2 sendet auch die SpeedWire MultiCast Telegramme wie ein SMA Energy Meter.
Das kann man sicher auch programmieren auf einer CCU3. Ich habe das aber (noch) nicht gemacht.
Gruß, Martin
Ich glaube der SHM und auch der SHM2 kann seine Werte nicht über ModBus Abfragen bereitstellen. Der SHM bzw. der Energy Meter sendet seine Werte mit SpeedWire an den Wechselrechter. Der Wechselrichter stellt dann diese Werte über Modbus bereit. Diese werden dann im Skript abgefragt. Dies ist zumindest die Voraussetzung damit auch die derzeitige Bezugsleistung bzw. Einspeiseleistung abgefragt werden kann.
In deinem Fall sehe ich nur die Möglichkeit die Werte über SpeedWire abzufragen. Der SHM 2 sendet auch die SpeedWire MultiCast Telegramme wie ein SMA Energy Meter.
Das kann man sicher auch programmieren auf einer CCU3. Ich habe das aber (noch) nicht gemacht.
Gruß, Martin
-
- Beiträge: 33
- Registriert: 15.01.2012, 19:12
Re: Homematic und SMA Sunny Boy mit SHM, PV Erzeugung lesen über ModBus
Hallo Martin,
Danke für die Info. Dann werde ich meinen Tripower per Speedwire verbinden. Aktuell ist der über Bluetooth angeschlossen. Bekommt der Tripower eigentlich alle Daten? Ich habe noch einen Sunny Boy in der Garage der über Bluetooth kommunizieren muss.
Ich habe noch den Energiemeter1 und das SHM1.
Was ist eigentlich EEBus beim SHM, dieser wäre bei mir im SHM noch aktivierbar....
Gruß Christian
Danke für die Info. Dann werde ich meinen Tripower per Speedwire verbinden. Aktuell ist der über Bluetooth angeschlossen. Bekommt der Tripower eigentlich alle Daten? Ich habe noch einen Sunny Boy in der Garage der über Bluetooth kommunizieren muss.
Ich habe noch den Energiemeter1 und das SHM1.
Was ist eigentlich EEBus beim SHM, dieser wäre bei mir im SHM noch aktivierbar....
Gruß Christian
Re: Homematic und SMA Sunny Boy mit SHM, PV Erzeugung lesen über ModBus
Hi,
vielen Dank - das ist genau das, was ich gesucht habe, bin mal gespannt, wie es aussieht, wenn die Sonne wieder scheint und Strom produziert wird.
Zu Deiner Frage bzgl. der Register müssten das die folgenden Werte sein:
- 30961: DC-Leistung Eingang 2, in W
- 30967: DC-Leistung Eingang 3, in W
- 30973: DC-Leistung Eingang 4, in W
Ob 30983: Leistung der Photovoltaik, in W nun alle Strings zusammenaddiert werde ich dann morgen sehen...
Schönen Abend,
Jan
vielen Dank - das ist genau das, was ich gesucht habe, bin mal gespannt, wie es aussieht, wenn die Sonne wieder scheint und Strom produziert wird.
Zu Deiner Frage bzgl. der Register müssten das die folgenden Werte sein:
- 30961: DC-Leistung Eingang 2, in W
- 30967: DC-Leistung Eingang 3, in W
- 30973: DC-Leistung Eingang 4, in W
Ob 30983: Leistung der Photovoltaik, in W nun alle Strings zusammenaddiert werde ich dann morgen sehen...
Schönen Abend,
Jan
Re: Homematic und SMA Sunny Boy mit SHM, PV Erzeugung lesen über ModBus
Hallo Martin,
danke für Deine wirklich hervorragende Anleitung!
Ich habe das gestern Abend bei mir so eingerichtet und es hat (fast) auf Anhieb funktioniert.
"Fast" jedoch nur deshalb, weil mein Sunny Tripower 20000TL-30 leider die beiden Register 30865 (Netzbezug) und 30867 (Netzeinspeisung) nicht kennt und daher diese Werte nicht liefert. Gibt es hier eventuell andere (undokumentierte) Register, über welche man bei diesem Wechselrichter an diese beiden Werte (oder zumindest einen davon) kommt? In der entsprechenden Dokumentation von SMA (Datei SMA_Modbus-de-en_V23.zip) bin ich leider nicht fündig geworden.
Alternativ wäre auch ich sehr an einer Lösung interessiert, meinen SHM 2.0 mit der CCU3 auszulesen.
Viele Grüße
Harald
danke für Deine wirklich hervorragende Anleitung!
Ich habe das gestern Abend bei mir so eingerichtet und es hat (fast) auf Anhieb funktioniert.
"Fast" jedoch nur deshalb, weil mein Sunny Tripower 20000TL-30 leider die beiden Register 30865 (Netzbezug) und 30867 (Netzeinspeisung) nicht kennt und daher diese Werte nicht liefert. Gibt es hier eventuell andere (undokumentierte) Register, über welche man bei diesem Wechselrichter an diese beiden Werte (oder zumindest einen davon) kommt? In der entsprechenden Dokumentation von SMA (Datei SMA_Modbus-de-en_V23.zip) bin ich leider nicht fündig geworden.
Alternativ wäre auch ich sehr an einer Lösung interessiert, meinen SHM 2.0 mit der CCU3 auszulesen.
Viele Grüße
Harald
-
- Beiträge: 19
- Registriert: 15.09.2018, 12:18
- Hat sich bedankt: 11 Mal
- Danksagung erhalten: 1 Mal
Re: Homematic und SMA Sunny Boy mit SHM, PV Erzeugung lesen über ModBus
... auch von uns ein großes Dankeschön für deine Arbeit und die Anleitung Martin.
Unser SB 4000-TL21 liefert zwar auch keine Daten zur Einspeisung und zum Bezug, aber die Leistungsdaten können wir beispielsweise prima als Helligkeitssensor verwenden.
LG
Steffi
Unser SB 4000-TL21 liefert zwar auch keine Daten zur Einspeisung und zum Bezug, aber die Leistungsdaten können wir beispielsweise prima als Helligkeitssensor verwenden.
LG
Steffi
Re: Homematic und SMA Sunny Boy mit SHM, PV Erzeugung lesen über ModBus
Wow danach suche ich seit 2 Jahren. Vielen Dank dafür. Läuft bei mir auf Anhieb.
Gruß
Frank
Gruß
Frank
-
- Beiträge: 21
- Registriert: 07.01.2017, 18:57
- Danksagung erhalten: 13 Mal
Re: Homematic und SMA Sunny Boy mit SHM, PV Erzeugung lesen über ModBus
Neuer Beitrag von mir: "Mit CCU3 Homematic Skript SMA Energy Meter oder Sunny Home Manager 2 auslesen".
Sicherlich interessant für Systeme ohne Wechselrichter (WR) oder mit WR ohne Modbus Interface.
Gruss, Martin Schneider
Sicherlich interessant für Systeme ohne Wechselrichter (WR) oder mit WR ohne Modbus Interface.
Gruss, Martin Schneider
Re: Homematic und SMA Sunny Boy mit SHM, PV Erzeugung lesen über ModBus
Hallo zusammen,
ich habe einen Sunny Tripower 9000TL-20 und habe diesen per LAN angeschlossen. So kann ich über das Sunny Portal im Internet die Leistungsdaten auslesen.
Wenn ich das Skript von Martin nutze, sehe ich jedoch keinerlei Daten (habe die IP auf meinen SMA Wechselrichter geändert und die restlichen Daten unverändert gelassen). Unterstützt mein SMA Wechselrichter dies nicht, frage ich die falschen Verzeichnisse ab, oder fehlt mir ein weiteres Gerät (Smart Meter, Home Manager, o.ä.)?
VG,
mabuchho
ich habe einen Sunny Tripower 9000TL-20 und habe diesen per LAN angeschlossen. So kann ich über das Sunny Portal im Internet die Leistungsdaten auslesen.
Wenn ich das Skript von Martin nutze, sehe ich jedoch keinerlei Daten (habe die IP auf meinen SMA Wechselrichter geändert und die restlichen Daten unverändert gelassen). Unterstützt mein SMA Wechselrichter dies nicht, frage ich die falschen Verzeichnisse ab, oder fehlt mir ein weiteres Gerät (Smart Meter, Home Manager, o.ä.)?
VG,
mabuchho