Hier beschreibe ich, wie du dein S10 Hauskraftwerk von E3DC an eine HomeMatic Hausautomation von eQ-3 anbinden kannst.
Als Schnittstelle zwischen S10 und HomeMatic dient ein Raspberry Pi. Die Applikation, kann auf dem Raspberry PI vielseitig eingesetzt werden.
Daten per RSCP vom E3DC-S10 Speicher abfragen
Daten vom E3DC zur HomeMatic Hausautomation senden
Daten vom S10 auf dem Display darstellen
Daten von der HomeMatic auf dem Display darstellen
Die verschiedenen Möglichkeiten können in unterschiedlichen Konstellationen zusammen genutzt werden.
Es kann entweder ein Raspberry Pi ohne Display eingesetzt werden, der die Daten vom S10 abfragt und/oder zur HomeMatic senden.
Oder es wird ein Raspberry Pi mit 7“ Display eingesetzt um diverse Daten darzustellen.
Diese Kombination bietet eine sehr gute Möglichkeit um das S10 einfach und schnell mit einem eigenem Display zu überwachen.
Ich nutze diese Applikation auf einem Raspberry Pi 3. Mit dem 7“ Raspberry Touchdisplay. Für das Material und die Installation ist weiteres unten ein Kapitel Material. Meine HomeMatic hat die Firmware 2.19.9 (zuvor auch 2.17.15 getestet) installiert. Mein S10-E hat Softwareversion 2017-02.
In der Applikation werden die Daten vom S10 mit einer RSCP-Applikation geholt. Diese Applikation bietet E3DC in Downloadbereich an. Ich habe ein paar Änderungen vorgenommen. Da ich mich erst seit kurzen mit der Programmierung beschäftige, sind die Änderungen eventuell noch etwas unprofessionell, aber bislang erfüllen sie ihren Zweck.
Die abgefragten Werte vom S10 wie z.B. Leistungswerte oder Batteriefüllstand werden auf wunsch per CURL-Befehl an die XML-API Schnittstelle der HomeMatic gesendet.
Wenn ein 7" Display genutzt wird, kommen C Programme zum Einsatz, um die diversen Grafiken zu erstellen.
Hauptmenü > Einstellungen Am S10 muss im „Hauptmenü“ unter „Einstellungen“ > "Personalisieren" ein RSCP-Passwort gesetzt werden. Das gesetzte Passwort wird später in den Parametern der Software benötigt. Im selben Menü „Einstellungen“ > "Netzwerk" ist die IP-Adresse des S10 zu finden.
Ich erkläre die Erstinstallation eines Raspberry Pi hier nicht, dies Informationen werden im Internet beschrieben.
Diese Anleitung setzt einen lokalen Zugriff oder SSH-Zugriff auf den Raspberry voraus.
Es ist Wichtig darauf zu achten, dass der Raspberry Pi im selben Netzwerk wie das S10 installiert ist. Der IP-Adressbereich muss gleich sein, zum Beispiel so: 192.168.178.xxx
Auch darf die Verbindung zwischen S10 und Raspberry Pi nicht über eine VPN-Verbindung hergestellt werden.
Jetzt wird der Lokale oder der SSH-Zugang zum Raspberry benötigt. Ich mache dies per SSH mit dem „Terminal“ für MAC. Möglich ist dies unter Windows mit "Putty". Jetzt folgt der Download vom Github: (Es ist kein Github Account nötig.)
git clone git://github.com/nischram/E3dcGui.git ~/E3dcGui
In der Datei „parameter.h“ im Ordner E3dcGui kann nun alles eingestellt werden, was du zum nutzen der Software benötigst. Entweder öffnet man die Datei mit einem externen Editor. Hier können diverse Editoren zum Einsatz kommen, ich nutze auf meinem Mac „Atom“ und lade die Datei mit „Cyberduck“ runter. Unter Windows ist das runterladen und bearbeiten z.B. mit WinSCP möglich. Alternativ kann man die Datei direkt auf dem Raspberry bearbeiten, dies beschreibe ich jetzt. Zuerst mit folgendem Befehl in den Ordner E3dcGui wechseln: (auf Groß und Kleinschreibung achten)
pi@raspberrypi:~ $ cd E3dcGui
Öffnen der Datei „parameter.h“ zum bearbeiten mit:
pi@raspberrypi:~/E3dcGui $ nano parameter.h
Es wird jetzt die Datei im Bearbeitungsprogramm „nano“ geöffnet.
Da ich in der Datei alles beschrieben habe, gehe ich jetzt nur auf das wichtigste Einstellungen ein.
Die wichtigsten Einstellungen sind:
6 #define GUI 1
12 #define E3DC_S10 1
21 #define Homematic_E3DC 1
51 #define Homematic_GUI 0
Hier wird die Nutzung der Applikation definiert, also ob du das Display nutzen willst oder nicht und ob die eine HomeMatic anbinden willst oder nicht. Wenn du eine Funktion nutzen willst trag bitte eine „1“ ein sonst eine „0“.
Die Änderungen in der „parameter.h“ speicherst du mit „STRG“ und „O“ und beendet wird der Editor mit „STRG“ und „X“.
Das „Makefile“ ist komplett vorbereitet du brauchst nur noch „make“ in der Kommandozeile eingeben, dann läuft das Kompilieren von alleine durch.
Damit die SD-Karte des Raspberry Pi nicht übermäßig beansprucht wird, nutzt ich ein RAMDisk im Arbeitsspeicher. Die Einrichtung ist unten im Kapitel RAMDisk beschrieben.
Wenn du in den Einstellungen die Nutzung der HomeMatic aktiviert hast (#define Homematic_E3DC 1
), muss die HomeMatic nun vorbereitet werden.
Disen Teil der Anleitung habe ich separat in dem Ordner Homematic erstellt.
HomeMatic README.markdown
Wenn das Display nur für das E3DC S10 genutzt wird (#define Homematic_E3DC 0
), ist die Anleitung nicht nötig. Sollte die Nutzung aktiviert sein und die HM nicht vorbereitet dann würde die Applikation für jeden Sendebefehl mehrere Sekunden benötigen und nicht ordnungsgemäss laufen. Ausser alle ISE_ID's in der Datei "parameterHM.h" werden auf 0 gesetzt (default).
Jetzt kann die Applikation für Tests gestartet werden.
pi@raspberrypi ~/E3dcGui $ ./start
Je nach Einstellungen startet nun nur die RSCP-Applikation oder mehrere Programme starten und das Display sollte die gewünschten Daten anzeigen.
Wenn genutzt: Kannst du nun in der HomeMatic WebUi im Bereich „Status und Bedienung“ die Systemvariable überprüfen. (Anleitung Homematic)
Nun kann die Applikation gestoppt werden, hierfür habe ich ein Stop-Programm erstellt. Dies wird mit folgendem Befehl ausgeführt: ./stop
(Eingabe ist schlecht zu erkennen)
Damit das Programm nun dauerhaft genutzt werden können, muss die Applikation auf dem Raspberry in den Autostart gebracht werden. Dies geschieht bei einem Raspberry Pi in dem ein Crontab-Job erstellt wird.
Die Crontab ruft man auf mit:
pi@raspberrypi ~/e3dc-rscp $ crontab -e
- Crontab für die Bearbeitung öffnen
In der geöffneten Crontab wird eine neue Zeile mit diesem Inhalt eingefügt:
@reboot /home/pi/E3dcGui/start
Die Änderung wird mit „STRG“ + „O“ gespeichert und die Crontab beendet mit „STRG“ + „X“. Weitere Informationen zur Crontab entnehmen Sie bitte aus Quellen wie z. B. dieser: https://raspberry.tips/raspberrypi-einsteiger/cronjob-auf-dem-raspberry-pi-einrichten
Damit die Applikation gestartet wird, kann nun der Raspberry neu gestartet werden mit:
pi@raspberrypi ~/E3dcGui $ sudo reboot
- Reboot Befehl mit Administrator-Rechten Der Raspberry Pi startet neu und die Applikation wird im Hintergrund ohne Bildschirmausgaben ausgeführt. Nach ca. 1 Minute werden die Werte der Systemvariablen der HomeMatic wieder aktualisiert. Oder das Display zeigt die Applikation
Die Darstellung ist in 5 Bildschirmen unterteilt. Diese werden über die Symbole in der oberen Ziele abgerufen. Sollten Funktionen der Software nicht aktiviert sein, bleiben die Symbole ausgeblendet.
Hier kann die Software oder der PI neu gestartet werden. Auf der rechten Seite wird die Display-Helligkeit eingestellt. Die Einstellung speichert der Pi, auch nach einen Neustart obwohl die Anzeige nach dem Neustart keine aktive Helligleit anzeigt. Unterhalb werden Informationen zum Raspberry Pi ausgegeben. #define E3DC_S10 1
Wenn die Aktuellen Werte des S10 im Display angezeigt werden, wird im Sekundenrhytmus aktualisiert. Sonst kann der Intervall definiert werden #define SleepTime 1
Wenn eine externe Quelle (Additional) oder die Wallbox aktiviert sind, wid auch für diese Daten je ein Symbol angezeigt.
Mit dem Symbol "History Today" können die HistoryValues für den Aktuellen Tag eingeblendet werden, ein weiteres Tippen jetzt auf "History Yesterday" blendet die Energiewerte für den Vortag ein und danach kann mit dem Tippen auf "History Off" die Einblendung abgeschaltet werden. Unter dem Symbol, mit dem man in die nächste Ansicht wechseln kann, wird der Zeitstempel der Daten angezeigt.
#define E3DC_S10 1
Diese Werte werden von der RSCP-Applikation mit ein 15 Minuten Mittelwert gespeichert.
Die verschiedenen Kurven lassen sich durch einen Tipp auf das Symbol in der Legende ein oder ausblenden. Leider reagiert das Display mit der Software nicht empfindlich genug, somit muss eventuell häufiger gedrückt werden um eine Kurve auszublenden. Für Additional gibt es eine Kurve, für die Wallbox habe ich nichts eingebaut.
Damit die verschiedenen PV-Anlagengrößen auch dargestellt werden können, muss die Maximalleistung in der "parameter.h" mit PowerMax definiert werden. Für Große Anlagen ist diese Grafik nicht geeignet. Die Langzeitwerte sind für 24 Stunden und werden durchlaufend dargestellt. Der 0:00 Uhr Punkt verschiebt sich und wird durch eine Linie gekennzeichnet.
#define E3DC_S10 1
Hier werden die einzelnen Tracker des Wechselrichters dargestellt.
#define Homematic_GUI 1
Da es für die HomeMatic kein ideales Display gibt, habe ich diese Software genutzt um mir wichtige Daten der HomeMatic darzustellen. Die Nutzung für euch mit dieser Funktion ist nur mit aufwand möglich. Es müssen nicht nur die ISE_ID der Geräte oder Variablen in der "parameterHM.h" definiert werden, sondern muss auch im Sourcecode einiges geändert werden.
Es werden verschiedene Etagen, Räume und Geräte angezeigt. Die Werte werden erst abgefragt, und danach die Grafik erstellt (Abfragezeit am roten Punkt unten rechts zu erkennen).
Die Etagen haben eine rote oder grüne Umrandung für den Verschluss aller Fenster und Türen.
Die Räume haben unterschiedliche Fenstereinteilungen es gibt zum Teil Räume mit zwei Fenster und Jalousien (im Foto an OG Wohnz. zu sehen).
Die Geräte und Variablen in rechten Bereich sind sogar bedienbar. Also ein Tipp auf's Symbol sendet einen einen Wert zur HomeMatic wie z.B. der Brunnen kann per Display eingeschaltet werden (programmiert in der "screenSaveHM.c").
Für HM CPU, Sonnenaufgang, Sonnenuntergang, Vollmond usw. habe ich in der HomeMatic Systemvariablen angelegt die ich abfrage.
Ich biete den Teil der Software hier gerne an, aber da die auf meine HomeMatic und meine Gegebenheiten eingerichtet ist, könnt ihr diesen Teil ggf. nicht nutzen. Ich empfehle erstmal diesen Teil nicht zu aktivieren, also #define Homematic_GUI 0
eintragen.
Das senden der Daten mit der RSCP-Applikation, ist hiervon nicht betroffen (#define Homematic_E3DC 1
).
Damit du am Sorcecode eigene Änderungen vornehmen kannst, aber gleichzeitig Änderungen von mir in anderen Programmteilen übernehmen kannst habe ich die HM-Darstellung und die Touchfunktion in extra Dateien mit ausgelagert. Zusätzlich habe ich einige Komentarzeilen und Infos als Bearbeitungshilfe eingefügt. Auch die Parameterdatei habe ich getrennt. Wenn du also die HM-Darstellung für deine Zwecke anpasst dann bitte die Datein HMGui.h
, screenSaveHM.c
und parameterHM.h
nicht aktualisieren.
Damit des Display nicht permanent hell ist, habe ich eine Bildschirmschoner-Funktion eingefügt. Die Zeit für den Bildschirmschoner ist in der „parameter.h“ auf Zeile 70 definiert: #define ScreenSaverTime 180
Um den Bildschirmschoner zu beenden reicht ein Tipp auf das Display (zum Teil wegen der Empfindlichkeit auch zwei Tipp's), dann wird es wieder hell. Für diesen Tipp ist nicht das ganze Display vorgesehen, da die anderen Funktionen versehentlich ausgelöst werden könnten. Der Bereich ist hier zu sehen:
Im HomeMatic Menü ist der Bereich noch kleiner. Hier zu sehen:
Das Display kann auch sofort Dunkel geschaltet werden, ein Tipp in den oben gezeigten Bereichen reicht hierfür.
Das Nutzen der Werte in der HomeMatic, ist in der Anleitung für HomeMatic in dem Ordner Homematic zu finden.
Teilweise bleibt die RSCP-Applikation hängen und die Automatische re-connection in der RSCP-Applikation funktioniert leider nicht immer. So wird ein Neustart der RSCP-Applikation nötig.
Für dieses Problem habe ich einen einfachen WatchDog geschrieben. Damit der WatchDog den Betrieb der Applikation überwachen kann, lasse ich mit einem kleinen Teil in der RscpMain, eine Datei im RAMDisk erstellen. In der Datei ist die Unixtime des S10, diese wiederum liest der WatchDog ein und vergleicht diese mit einer definierten Differenz mit der aktuellen Zeit.
Ein paar Einstellmöglichkeiten für den WatchDog hast du bestimmt schon in der „parameter.h“ gesehen. Wenn die Applikation auch Daten von der HomeMatic holt werden auch diese Daten überwacht. Da ich die HomeMatic nicht so häufig abfrage, sollten die Einstellungen zum WatchDog nicht großartig geändert werden.
Wenn der Watchdog zuschlägt, erstellt er eine Datei "Watchdog.csv" im E3dcGui Ordner. Somit ist eine Kontrolle der Aktivität möglich. Es wird je Aktivität eine Zeile erstellt, du kannst erkennen was der WatchDog neu gestartet hat.
Der WatchDog startet den Raspberry Pi auch neu, wenn die Applikation über längere Zeit keine aktuellen Daten (E3DC oder HomeMatic) liefert. Hierdurch ergibt sich noch ein Problem, sollte die Netzwerkverbindung zum System oder die Geräte gestört sein, würde der Raspberry Pi mehrfach mit einem Reboot neu gestartet. Um dies zu stoppen musst du folgendes in der Kommandozeile eingeben:
pi@raspberrypi:~ $ pkill watchdogHM
Wenn der Watchdog den Pi neu startet, bleibt die Uhrzeiteit des Pi nicht Aktuell. Hier können schon mal ein paar Minuten Abweichung entstehen. Ich habe eine Lösung für diese Problem, auf dieser Seite gefunden: http://logicals.at/de/forum/raspberry-pi/48-aktuelle-uhrzeit-aus-dem-internet-holen
RAMDisk am Raspberry erstellen: Zuerst wird ein Mountpoint für die RAM-Disk erzeugt:
sudo mkdir /mnt/RAMDisk
Für die RAM-Disk muß die Filesystem Table angepasst werden:
sudo nano /etc/fstab
Einfügen dieser Zeile am Ende der Datei:
tmpfs /mnt/RAMDisk tmpfs nodev,nosuid,size=4M 0 0
Die Größe wird über den Parameter "4M" auf 4 MB festgelegt. Jetzt montiert man alle Filesysteme über:
sudo mount -a
Der Erfolg lässt sich mit Diskfree überprüfen:
df
Es sollte dann ein Eintrag mit der RAM-Disk zu finden sein:
Filesystem 1K-blocks Used Available Use% Mounted on
rootfs 15071704 2734624 11674436 19% /
/dev/root 15071704 2734624 11674436 19% /
devtmpfs 218620 0 218620 0% /dev
tmpfs 44580 236 44344 1% /run
tmpfs 5120 0 5120 0% /run/lock
tmpfs 89140 0 89140 0% /run/shm
/dev/mmcblk0p1 57288 19712 37576 35% /boot
tmpfs 4096 0 4096 0% /mnt/RAMDisk
Diesen Teil zum RAMDisk habe ich von hier Kopiert: http://www.kriwanek.de/raspberry-pi/486-ram-disk-auf-raspberry-pi-einrichten.html
Damit der Wachtdog oder andere Programmteile eine eMail senden können, muss eine eMail Option installiert werden. Ich habe mich hier für "SendEmail" entschieden. Die Version 1.56 habe ich im Github integriert, somit muss die Software nicht Heruntergeladen werden, was das installieren wesentlich einfacher macht. Folgendes Befehle sind der Reihe nach auszuführen:
pi@raspberry:~$ cd E3dcGui
pi@raspberrypi ~/E3dcGui $ sudo cp -a sendEmail-v1.56/sendEmail /usr/local/bin
pi@raspberrypi ~/E3dcGui $ sudo chmod +x /usr/local/bin/sendEmail
pi@raspberrypi ~/E3dcGui $ sudo apt-get update
pi@raspberrypi ~/E3dcGui $ sudo apt-get install libcrypt-ssleay-perl
pi@raspberrypi ~/E3dcGui $ sudo apt-get install libnet-ssleay-perl
pi@raspberrypi ~/E3dcGui $ sudo apt-get install libssl-dev
pi@raspberrypi ~/E3dcGui $ sudo apt-get install libio-socket-ssl-perl
Jetzt müssen die eMail Einstellung in den "parameter.h" definiert werden.
// sendEmail Parameter
96 #define FromEmailAdress "max.mustermann@web.de"
97 #define smtpServer "smtp.web.de"
98 #define smtpPort "587"
99 #define smtpTLS "yes"
100 #define smtpBenutzer "max.mustermann@web.de"
101 #define smtpPass "1234abc"
Dies ist für Web.de (von mir getestet) und so muss es für gmail.com aussehen.
// sendEmail Parameter
#define FromEmailAdress "max.mustermann@gmail.com"
#define smtpServer "smtp.gmail.com"
#define smtpPort "587"
#define smtpTLS "yes"
#define smtpBenutzer "max.mustermann@gmail.com"
#define smtpPass "1234abc"
Für den Watchdog ist in der "parameter.h" noch die eMail-Adresse einzustellen in der die Nachrichten gesendet werden sollen:
92 #define WDtoEmailAdress "max.mustermann@web.de"
Mit den Parametern
90 #define WDsendEmailReboot 1
91 #define WDsendEmailKill 0
kann noch definiert werden ob für Kill und/oder Reboot die eMail gesendet werden soll. Beide Parameter auf "0", dann wird keine eMail gesendet und die Software muss nicht installiert werden.
Wichtig: Bitte zur Fehlerbehebung Issue#11 beachten!
Ich nutze die Software auf einem Komplettpaket von Conrad. Das Set besteht aus dem Raspberry Pi 3, SD-Karte (Noobs vorinstalliert), 7-Zoll Raspberry Touchdisplay, Standgehäuse und Netzteil.
Hier die Artikelnummer von Conrad: 1437995-62
Die Grundinstallation ist einfach, da es im Internet schon viele Anleitungen hierzu gibt, gehe ich im Moment hierauf nicht näher ein.
Es muss die Desktopanwendung „startx“ deaktiviert werden, dies kannst du im Raspberry Konfigurator machen:
pi@raspberry:~$ sudo raspi-config
Dort unter „Boot Options“ > „B2 Console Autologin Text console, automatically logged in as 'pi' user“ auswählen.
Zuvor kannst du dein W-Lan scannen, um zu sehen ob der Pi empfang hat:
sudo iwlist wlan0 scan | egrep "(ESSID|IEEE)"
Dann wird mit folgendem Befehl ein Editor mit einer Datei geöffnet, in der du eine W-Lan Zugangsdaten eintragen kannst:
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
Die Einstellung erfolgt in dieser Form:
network={
ssid="W-LAN_SSID"
psk="ganzgeheimespasswort"
}
Bitte nicht vergessen, dass nur der Pi3 W-Lan on Board hat, bei einem älteren Pi musst du entweder per Kabel oder per W-Lan USB-Stick die Netzwerkverbindung herstellen.
Auf der GUI im Menü Setup gibt es ein Umschaltbutton für die Umschaltung zwischen Sommerzeit und Winterzeit. Damit die Einstellung wirksam wird startet die Software nach dem betätigen des Button neu.
Wenn diese Software ohne Display verwendet wird, muss die Einstellung der Sommer oder Winterzeit von Hand vorgenommen werden, dafür muss in der Datei "Timezone.txt" im Ordner "Data" entweder "Wintertime" oder "Summertime" eingetragen werden.
Es besteht eine Möglichkeit meine Software auch für Loxone statt für Homematic zu nutzen. Dies ist in einer separaten Anleitung beschrieben. Loxone README.markdown
01 weiteres in der Aneitung zum Aufbau 02 Dokumentation im Sourcecode 03 Loxone Unterstützung aufnehmen
Downloadbereich E3DC Kundenportal https://s10.e3dc.com "Zusätzliche Optionen" > " RSCP-Beispielapplikation_2016-04-25.pdf" Link (Benutzerdaten erforderlich)
Bilschirmfotos aus dem E3DC Portal (Ich hoffe E3DC hat nichts dagegen!?)
V1.35 13.08.2017 Issue #13
- Fehlerkorektur für Einstellung der Display-Helligkeit
V1.34 13.08.2017 Issue #16
- Fehlerkorektur screenSave.c
V1.33 13.08.2017 Issue #13
- Einstellung der Display-Helligkeit
V1.32 11.08.2017 S10history integriert
- S10history von RalfJL integriert
- Anleitunf für S10History angepasst
- Abfrage der HistoryValues für Tag und Vortag
- Anzeige der HistoryValues für Tag und Vortag in den Aktuellen Werten
- Issue #12
- Anpassungen im RSCP für S10history
- ASE.cpp für 64Bit vorbereitet Issue #4
- Issue #15 WatchDog verbessert
- IP Abfrage für das Setup Menü angepasst
- Funktionen für Setup Menü ausgelagert !!! Achtung !!! In der screenSaveHM.c muss folgende Zeile im oberen Bereich eingefügt werden:
#include <sys/sysinfo.h>
- Zusammenfassen von Funktionen in der GuiMain.c
V1.31 31.07.2017 Issue #14
- Änderung an der HomeMatic README, HM Variable nicht beschrieben
- Änderung an der HomeMatic README, Limitation 200 Variablen entfernt
V1.30 14.05.2017 Tippfehler README
- Changelog archiviert
V1.29 14.05.2017 Issue #11
- Fehlermeldung bei sendEmail
V1.28 01.05.2017 Issue #10
- ADD Power wurde Negativ angezeigt, Invertierung eingebaut
V1.27 13.02.2017 Issue #9
- Wegen häufigen Reebot eine Wartezeit von 3600 Sekunden eingebaut