GithubHelp home page GithubHelp logo

nischram / e3dcgui Goto Github PK

View Code? Open in Web Editor NEW
37.0 14.0 14.0 4.45 MB

E3DC S10 / HomeMatic Daten abfragen, darstellen oder senden

C 63.76% Makefile 0.25% C++ 26.81% Perl 8.83% Shell 0.36%
e3dc s10 rscp homematic display

e3dcgui's Introduction

E3DC to Homematic mit GUI

Stand: V2.23 04.02.2024

Hier beschreibe ich, wie du dein S10 Hauskraftwerk von E3DC an eine Homematic Hausautomation 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
Daten der E3DC Wallbox anzeigen oder steuern
Werte aus der Homematic lesen um Wallbox, Notstrom-Reserve oder Batterie-Limits steuern
Kleine Hausautomation mit GPIO's
Wetterinformationen von "OpenWeatherMap"
Daten einer Grünbeck SC18 anzeigen oder zur Homematic senden
Dein eigener Abfuhrkalender
LED Stausanzeige

Die verschiedenen Möglichkeiten können in unterschiedlichen Konstellationen zusammen genutzt werden.
Es kann entweder ein Raspberry Pi ohne Display eingesetzt werden.
Oder es wird ein Raspberry Pi mit 7“ Display eingesetzt um diverse Daten darzustellen.

E3DC-Display

Hier ein Foto mit der Software auf dem 7-Zoll Display.

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, mit dem 7“ Raspberry Touchdisplay. Auf das Material und die Installation gehe ich in dieser Anleitung ein.

Funktion

In der Applikation werden die Daten vom S10 mit der RSCP-Schnittstelle vom S10 abgefragt. Eine Beispiel-Applikation zum RSCP bietet E3DC in Downloadbereich an.
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.
Die Meisten Funktionen meiner Software sind für das 7" Display geschrieben.

Einbindung Wallbox

Neben der der grafischen Darstellung, können die Werte der Wallbox auch an die Homematic gesendet werden. Das Senden der Daten kann mit oder auch ohne Display erfolgen. Es besteht auch die Möglich Parameter in der HM einzutragen und diese werden dann in der Wallbox gesetzt. So ist die Steuerung der Wallbox nicht nur per Display sondern auch per Homematic möglich. Für weiter Informationen siehe im Wiki: Wallbox in die Homematic einbinden

Vorbereitung

am S10

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.

Raspberry Pi

Die Erstinstallation eines Raspberry Pi erkläre ich hier nicht im Detail, nur mit einer Schritt für Schritt Zusammenfassung von diversen Links.
Schritt für Schritt
Diese Anleitung setzt einen lokalen Zugriff oder SSH-Zugriff auf den Raspberry voraus.

Netzwerk

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
Im Gastzugang eines Routers wird die Verbindung fehlschlagen, auch darf die Verbindung zwischen S10 und Raspberry Pi nicht über eine VPN-Verbindung hergestellt werden.

Installation der E3dcGui

Applikation auf den Raspberry kopieren

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 https://github.com/nischram/E3dcGui.git ~/E3dcGui

Einstellungen vornehmen

Die Einstellungen die für deine individuelle Anwendung nötig ist, musst du in der "parameter.h" vornehmen. Bei der ersten Installation solltest du die Datei "parameter.h.temp" kopieren und dann deine Einstellung vornehmen. Parallel wir auch die parameterHM.h benötig und hierfür steht die "parameterHM.h.temp" zur Verfügung.
Um nicht versehentlich eine Vorhandene Datei zu überschreiben habe ich ein Programm erstellt mit dem du die Datei "parameter.h" kopieren kannst. Ins E3dcGui Verzeichnis wechseln:

pi@raspberrypi:~ $  cd E3dcGui

Parameter-Copy Programm kompilieren:

pi@raspberrypi:~/E3dcGui $ make copyPara

Parameter-Copy Programm starten:

pi@raspberrypi:~/E3dcGui $ ./copyPara

Nun werden auf Abfrage die beiden Dateien kopiert. Ggf. kannst du die Dateien auch selber kopieren.
Achtung! Nur dann selber kopieren wenn noch keine Datei erstellt ist. Nun öffnet man die Datei "parameter.h" 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.
Alle Befehle müssen mit Groß- und Kleinschreibung korrekt übernommen werden. Öffnen der Datei „parameter.h“ zum bearbeiten mit:

pi@raspberrypi:~/E3dcGui $  nano parameter.h

Es wird jetzt die Datei im Bearbeitungsprogramm „nano“ geöffnet und du kannst die Bearbeitung vornehmen.
Die Änderungen in der „parameter.h“ speicherst du mit „STRG“ + „O“ und beendet wird der Editor mit „STRG“ + „X“.

Die "parameterHM.h" muss nur dann bearbeitet werden, wenn die Anzeige für Homematic Variablen genutzt werden soll. Also bei Homematic_GUI = 1.

Inhalt der „parameter.h“

Da ich in der Datei alles beschrieben habe, gehe ich jetzt nur auf das wichtigste Einstellungen ein.
Grundfunktionen:

#define GUI                         1
#define E3DC_S10                    1
#define Homematic_E3DC              1
#define wallbox                     0
#define Homematic_GUI               0
#define wetterGui                   1
#define Gruenbeck                   0
#define Abfuhrkalender              1
#define useAktor                    0
#define useDHT                      0
#define E3DC_LED                    0

Hier wird die Nutzung der Applikation definiert, also ob du das Display nutzen willst oder nicht und ob du eine Homematic anbinden willst oder nicht. Wenn du eine Funktion nutzen willst trag bitte eine „1“ ein sonst eine „0“.

Informationen zum Update

Wenn du nur an der parameter.h und ggf. an der parameterHM.h Änderungen vorgenommen hast, sollte ein update über git möglich sein.

git pull

Falls ich Äderungen an den oben genanten Dateien gemacht habe werden die parameter.h.temp oder die parameterHM.h.temp aktualisiert. Die Änderungen musst du selbstständig übernehmen. Damit du sehen kannst welche Parameter erforderlich sind, werden die neuen Parameter beim Start mit ./start angezeigt. Innerhalb der Programme werden diese Variablen dann mit einem default Wert gestartet.

Zusätliche Software

Vor dem ersten kompilieren der Applikation, muss auf dem Raspberry WiringPi installiert werden. Eine Anleitung habe ich im Wiki unter WiringPI einrichten.
Auch muss zuvor libcurl4 installiert werden, wird für die Wetterdaten benötigt (Anleitung siehe unter "2. Wetteranzeige").

Speicherort RAMDisk einrichten

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.

Vorbereitung der Homematic CCU /CCU2

Wenn du in den Einstellungen die Nutzung der Homematic aktiviert hast #define Homematic_E3DC 1, muss die Homematic nun vorbereitet werden. Diesen 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).

Applikation Kompilieren

Das „Makefile“ ist komplett vorbereitet, das Kompilieren läuft von alleine durch.

pi@raspberrypi ~/E3dcGui $  make

Weitere Informationen zum "make" findest du hier: Makefile

Applikation starten

Jetzt kann die Applikation für Tests von Hand 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.

Systemvariable prüfen

Wenn genutzt, kannst du nun in der Homematic WebUi im Bereich „Status und Bedienung“ die Systemvariable überprüfen. (Anleitung Homematic)

Applikation stoppen

Nun kann die Applikation gestoppt werden, hierfür habe ich ein Stop-Programm erstellt. Dies wird mit folgendem Befehl ausgeführt: ./stop
Die Eingabe ist schlecht zu erkennen, weil die eigentlichen Ausgaben durchlaufen.

Autostart der Applikation (durch Crontab-Job)

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 ~/E3dcGui $  crontab -e

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

Raspberry Pi neu starten

Damit die Applikation gestartet wird, kann nun der Raspberry neu gestartet werden mit:

pi@raspberrypi ~/E3dcGui $  sudo reboot

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

Display drehen

Für den Einbau im Gehäuse oder über Kopf muss ggf. das Display um 180° gedreht werden. Für weitere Informationen gibt es diesen Wiki-Eintrag: Display drehen

Display bedienen und einrichten

Die Darstellung ist in bis zu 10 Bildschirmen unterteilt. Diese werden über die Symbole in der oberen Ziele abgerufen. Sollten Funktionen der Software nicht aktiviert sein, bleiben die Symbole ausgeblendet.

1. Setup

Setup

Hier kann die Software oder der PI neu gestartet werden. Auf der rechten Seite wird die Display-Helligkeit eingestellt. Auch kannst du hier den PIR-Sensor aktivieren oder deaktivieren werden. Unterhalb werden Informationen zum Raspberry Pi ausgegeben.

2. Wetteranzeige

Wetteranzeige

Hier werden Standort bezogene Wetterdaten eingeblendet. Die Daten basieren auf einen Service, welcher die aktuellen Wetterdaten von OpenWeatherMap holt. Du musst dir zuvor einen kostenlosen Account bei [OpenWeatherMap](https://openweathermap.org/guide#how) einrichten. Dort bekommst du einen API-Key den du hier eintragen musst: ` #define WEATHER_KEY "12345678910111213141516171819202"` Die OpenWeatherMap Anzeige ist auf die "OneCall-API" angepasst, leider ist in dieser API die Standortsuche nur per Koordinaten möglich, so musst du für dein Standort die Koordinaten ermittel und diese unter WEATER_LON und WEATHER_LAN eintragen. Der Name der Stadt und vom Land sind nur für die Anzeige im Display. Da eventuell nicht alle einen Account einrichten wollen, kann man die Wetter-Seite ausblenden. Dies erfolgt mit: ` #define wetterGui 0` Die Wetteranzeigen kann auch ohne S10 oder Homematic genutzt werden.

Wichtig: für die Abfragen muss auf dem Raspberry noch eine CURL-Library installiert werden. Es muss folgender Befehl durchgeführt werden:

sudo apt-get install libcurl4-openssl-dev

3. Aktuelle Werte des S10

#define E3DC_S10 1
Aktuelle_Werte
Wenn die Aktuellen Werte des S10 im Display angezeigt werden, wird im Sekundenrhythmus aktualisiert. Sonst kann der Intervall definiert werden #define SleepTime 1.
Wenn eine externe Quelle (Additional) oder die Wallbox aktiviert sind, wird 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. In der parameter.h kannst du definieren ob du die Abfrage der HistoryValues aktivieren willst (historyAktiv) und in welchem Rhythmus die Daten abgefragt werden sollen (historyDelay).

4. Langzeit Werte des S10

#define E3DC_S10 1
Langzeit_Werte
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 Größen der PV-Anlagen 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.

5. Wallbox

#define Wallbox 1
Wallbox
Hier werden Inofrmationen zu deiner E3DC-Wallbox angezeigt. Einige Parameter kann man per Schalter steuern. Gesteuert werden kann:

  • Ladestrom > maximaler Ladestrom je Phase mit dem das Auto geladen wird.
  • Sonnenmodus > wechseln zwischen Sonnenmode oder Mischbetrieb.
  • Batterie vor Auto > hiermit wird zuvor die Batterie geladen dann erst das Auto. *
  • Batterie zu Auto > hiermit wird freigegeben ob die Batterie entladen werde darf. *
  • Anzahl der Phasen für Solarladung vorwählen.
  • Ladung stoppen.
  • Ladegrenze bei "Batterie zu Auto" kann in 10% Stufen vorgewählt werden.
  • Batterienutzung im Mischbetrieb kann eingestellt werden (keine SOC grenze!). *sind abhängig voneinander

In der Ansicht ist zu erkennen ob das Auto, angeschlossen und verriegelt ist. Bei der Ladung ist farblich zu erkennen, ob die Ladung aus dem Netz, der Sonne oder gemischt kommt (Schwellwert je bei 200W).
Ich habe die Funktion an meiner E3DC Walbox mit CAN-Bus getestet, die E3DC Easy Connect Wallbox mit Netzwerk hat Thomas (Issue #55) getestet.

6. Funktion

#define E3DC_S10 1
Funktion
Auf der linken Seite können die Batterie-Limits vom S10 geändert werden.
Rechts kann die Notstrom-Reserve im Speicher aktiviert werden. Sie wird in % oder Wh angezeigt. Die Höhe der Reserve kann in 500, 2000, oder 10000 Wh Schritte vorgewählt und mit "Set" gesetzt werden. Der Schalter setzt die Reserve ggf. direkt auf 0 Wh. Im Hauptbildschirm wird die höhe der Reserve in Prozent mit einem grünen Rahmen bei der Batterie dargestellt.
Batterie
Die Notstromreserve oder die Batterie-Limits können auch in der HM gesetzt werden um das S10 zu steuern. Hier die Anleitung dazu: HM abfragen und S10 steuern

6b. Sperrzeiten

#define E3DC_S10 1
IdelPeriods
Wenn man sich im Menü "Funktion" befindet, kann man über das Schloss-Symbol zu den Sperrzeiten gelangen. In dem Sperrzeit-Menü können die Ladesperrzeiten und Entladesperrzeiten angesehen und aktiviert/deaktiviert werden. Die Zeiten können nur angesehen werden, beim setzen wird immer der ganze Tag von 00:00 bis 23:59 gesetz.

7. Monitor

#define E3DC_S10 1
Monitor
Hier werden links die einzelnen Tracker des Wechselrichters dargestellt. Auf der rechten Seite werden ein paar zusätzliche Informationen vom S10 angezeigt.

8. SmartHome

SmartHome

` #define useDHT 1` Du kannst am Raspberry den Standard Temperatur/Luftfeuchtigkeits-Sensor DHT11 oder DHT22 anschließen. Ich habe in der parameter.h für fünf Sensoren die Einstellungen vorbereitet. Diese Fünf werden dann auf der linken Seite angezeigt. Der rote oder grüne Punkt zeigt den Status und die erfolgreiche Kommunikation zum Sensor. _Achtung:_ Sensor DHT22 ist nicht möglich! ` #define useAktor 1` Rechts ist der Status von Schaltaktoren zu sehen. Diese Aktoren können in der parameter.h definiert und den entsprechenden GPIO's zugeordnet werden. Mit den GPIO's ist es dann möglich zum Beispiel eine Relaisplatine anzusteuern. Mit der Platine kannst du dann ein Schütz in deiner Installation aktivieren und z.B. dein Heizstab ansteuern. Diese Funktion ist für alle die keine Homematic angebunden haben, aber trotzdem ein Gerät bei Überschuss aktivieren möchten. Getestet habe ich die Funktion mit einem "2 Kanal 5V Relais Modul für Arduino". Zur Auswahl der Aktoren stehen ein Überschussaktor, ein Aktor für Solarleistung, einer für den Batterie-SOC und ein Zeitaktor. Der Überschuss und der Solar-Aktor schalten ein wenn die Bedingung mindestens 2 Minuten überschritten wird, wenn die Leistung unter 90% vom Sollwert sinkt beginnt die Zeit neu. Abgeschaltet wird wenn die Bedingung 30 Sekunden unterschritten wird. Der Batterieaktor schaltet sofort sobald der Wert überschritten oder unterschritten wird. Auch hier darfst du weitere Ideen, Anregungen oder Fehler gerne als Issue erstellen. Die mindest Einschatzeit und die mindest Auschaltzeit, kann in Minuten definiert werden, dies ist z.B. für die Ansteuerung einer Spülmaschiene wichtig. Die Vergebene Priorität wird unter der Statuslampe angezeigt. Der Status ist hellrot wenn die Priorität erreicht ist sonst dunkelrot. Die Priorität muss in der parameter.h deklariert werden. Es kann von 1-5 gesetzt werden, bei "0" ist keine Priorität vergeben. Weiter ist es möglich den Aktoren ein Zeitfenster zu zuweisen. Nur in diesem Fenster schaltet der Aktor ein und zum Ende des Zeitfensters aus, ein gestarteter Aktor mit einer mindest Einschaltzeit läuft noch so lange, bis zum ablauf der Mindestzeit.

9. Homematic

#define Homematic_GUI 1
Homematic
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 Sourcecode 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 Kommentarzeilen 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 Dateien HMGui.h, screenSaveHM.c und parameterHM.h nicht aktualisieren.

10. Grünbeck softliQ SC18

#define Gruenbeck 1
Gruenbeck
Du kannst mit dem Display Informationen einer Wasserenthärtungsanlage von Grünbeck holen und anzeigen lasen. Ich habe die Grünbeck softliQ SC18 eingebunden und lasse z.B. die Anlagenkapazität, den Verbrauch, die Restkapazität anzeigen, etc. Den Verbrauch summiere ich zum Monatsverbrauch, Jahresverbrauch und Gesamtverbrauch. Die Verbrauchsdaten werden jeden Tag in einer CSV-Datei gespeichert.
Wichtig ist für diese Funktion die Installation von XMLLINT mit folgndem Befehl: sudo apt-get install libxml2-utils
Weiter ist es möglich die Daten zur Homematic zu senden. #define GruenbeckHM 1 Es werden in der Homematic entsprechende Systemvariablen benötigt.
Es sollten alle Greäte der Serie softliQ von Grünbeck auslesbar sein. Es könnten Probleme bei anderen Geräten entstehen da diese zum Teil 2 Austauscher haben. Es müssten ggf. Anpassungen an der External/Gruenbeck.h und an External/gruenSave.c der vorgenommen werden.
Es ist auch möglich eine Grünbeck ohne Display am Raspberry mit einer Homematic zu verbinden. Hierfür müssen an der parameter.h und der External/Gruenbeck.h die entsprechenden Einstellungen vorgenommen werden. Das make muss ausgeführt werden, dann kann die Datei External/gruenSave z.B. per crontab in entsprechenden Abständen ausgeführt werden. Mit entsprechenden Systemvariablen und Scripten kann auch in der Homematic die Monats und Jahresberechnung vorgenommen werden. Auf wunsch kann ich per PN die Scripte zusenden.

11. Abfuhrkalender

#define Abfuhrkalender 1
Entsorgung
Hier kannst du dir deinen eigenen Entsorgungskalender einpflegen. Es werden dann die Aktuelle und die nächste Kalenderwoche angezeigt. Unter der Grafik ist eine Legende eingeblendet, die bei Bedarf auch deaktiviert werden kann. Für die Pflege musst du in dem Ordner "Data" die Datei "Entsorgung_2017.txt" anpassen. Wichtig ist, dass du das Format, die Aufteilung und Zeilenreihenfolge nicht veränderst. Für die Bearbeitung empfehle ich OpenOffice oder Excel, die Bearbeitung ist in einer Tabelle am besten. Es ist möglich bis zu zwei Tonnen an einem Tag einzupflegen. Es bestehen die Möglichkeit für Biomüll, Papier, Gelber Sack, Restmüll, Glas, Metall, Schadstoffmobil und Feiertag. Für das nächste Jahr musst du eine neue Datei mit der Jahreszahl anlegen, dann wird diese zum Jahreswechsel automatisch verwendet.

Bildschirmschoner

Damit das 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 80 definiert:
#define ScreenSaverTime 180
Um den Bildschirmschoner zu beenden reicht ein Tipp auf das Display, 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:
Bildschirmschoner
Im Homematic Menü ist der Bereich noch kleiner. Hier zu sehen:
Bildschirmschoner_HM
Das Display kann auch sofort Dunkel geschaltet werden, ein Tipp in den oben gezeigten Bereichen reicht hierfür.

Bewegungsmelder

Es besteht die Möglichkeit den Bildschirmschoner mit Hilfe eines Bewegungssensors zu deaktivieren. Hier geht es zur Anleitung im Wiki: Bewegungsmelder

Wichtig Pi-Funktionen deaktivieren

Der Raspberry Pi hat einen eignen Bildschirmschoner und eine Desktopanwendung, diese müssen deaktiviert werden. Hierfür siehe unter Pi-Funktionen deaktiviern im Wiki.

Werte in der Homematic nutzen

Das Nutzen der Werte in der Homematic, ist in der Anleitung für Homematic in dem Ordner Homematic zu finden. Die Wallbox-Werte werden an die Homematic gesendet, es können Paremeter abgefragt werden und zur Wallbox gesendet werden.

LED Statusanzeige

Mit RGB-LED's kannst du eine Statusanzeige der E3DC S10 Werte erstellen.
Hierfür habe ich die Bibliothek von J.Garff verwendet und angepasst. Du kannst eine oder bis zu 12 LED's anschließen und einrichten. Es gibt folgende möglichkeiten für die LED's:

  • Batteriefüllstand mit 1x oder 4x LED
  • Solarproduktion
  • Einspeisung / Bezug
  • Hausverbrauch
  • Batterieladung / Endladung
  • Fehler-Status
  • DC-Leistung je PV-Tracker 2x LED
  • Leistung externe Quellen

Als LED kannst du alle verwenden die einen WS2811 / WS2812 Controller integriert haben. Das Display ist für die Statusanzeige nicht erforderlich. Als Beispiel können folgende LED's oder Streifen verwendet werden:
https://www.amazon.de/PL9823-F8-bgl-WS2812-integrierter-Controller/dp/B00L9I078W
https://www.amazon.de/gp/product/B00PTEP14W
Für die Installation musst du in der parameter.h 'E3DC_LED' auf 1 setzen. Im E3dcGui Verzeichniss muss die Bibliothek von J.Garff kopiert werden danach musst du die LED's in der External/LedMain.c konfigurieren und zu letzt alles Kompilieren. Folgende Befehle sind nötig:

pi@raspberrypi:~ $ cd E3dcGui
pi@raspberrypi:~/E3dcGui $ git clone https://github.com/jgarff/rpi_ws281x.git
pi@raspberrypi:~/E3dcGui $ cd External
pi@raspberrypi:~/E3dcGui/External $ sudo nano LedMain.c
pi@raspberrypi:~/E3dcGui/External $ make

Informationen zum Anschluss der LED findest du z.B. hier:
https://learn.adafruit.com/neopixels-on-raspberry-pi/wiring
Für die Idee der LED-Statusanzeige danke ich HCM_Stefan aus dem Homematic-Forum.

WatchDog

Es kann Teilweise zu abstürzen und Problemen in der Applikation oder der RSCP-Schnittstelle kommen.

Für diese Probleme 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 können auch diese Daten überwacht werden. 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/Data 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:~ $ killall watchdog

Makefile

Das Makefile ist so aufgebaut, dass jedes Programmteil auch einzeln Kompiliert werden kann. Folgende Befehle sind möglich:

make       
make copyPara
make watchdog   
make screenSave   
make screenSaveHM   
make GuiMain   
make start   
make stop   
make RscpMain   
make Rscp/RscpSet   
make Rscp/actionCheckHM   
make S10history/S10history   
make External/LedMain   
make External/gruenSave   
make Frame/touchtest

Diese Möglichkeit erspart zum Teil einiges an Zeit, wenn du eigene Änderungen testen möchtest.
Die einzel Aufrufe können auch kombiniert werden, z.B.: make GuiMain screenSave
Bei dem Standart make werden folgende Porgrammteile nicht automatisch kompiliert:

  • Rscp/actionCheckHM
  • External/LedMain
  • External/gruenSave
  • Frame/touchtest
    Diese Programmteile müssen von Hand ausgeführt werden.

Aktuelle Uhrzeit aus dem Internet holen

Wenn der Watchdog den Pi neu startet, bleibt die Uhrzeit 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

E-Mail senden

Damit der Watchdog oder andere Programmteile eine eMail senden können, kann eine E-Mail Option installiert werden. Im Wiki ist die Anleitung: E-Mail Tool

Material

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 oder bei Amazon: Raspberry 7 Zoll Touch Display
Die Grundinstallation ist einfach, da es im Internet schon viele Anleitungen hierzu gibt, gehe ich im Moment hierauf nicht näher ein.

W-Lan einrichten

Einige Raspberry haben W-Lan on Board, hier eine anleitung zur Einrichtung: W-LAN einrichten

Quellen

RSCP

Downloadbereich im E3DC Kundenportal https://s10.e3dc.com > "Technische Anleitungen zu Zusatzoptionen der S10 Hauskraftwerke" > "RSCP-Beispielapplikation (Anleitung für Entwickler)" Link (Benutzerdaten erforderlich)

Vergleichbare Projekte

  • HistoryValues vom S10 abfragen von RalfJL: Link
  • Sperrzeiten setzen von rella: Link

Forum für diskussionen

Homematic-Forum: Anbindung an Stromspeicher E3DC

Grafiken

Bildschirmfotos aus dem E3DC Portal

Ideen

Hier eine tolle Idee das Raspberry-Display in die Wand einzulassen, so dass es bündig aufliegt.
https://christian-bleser.de/raspberry-pi-touch-display-wandeinbau/

Changelog

Wichtige Ergänzungen

V2.00 06.06.2021 Updatefähigkeit verbessert
V1.87 29.03.2021 Wallbox anzeigen o. steuern
V1.81 08.09.2020 WetterGui auf OpenWeatherMap.org umgestellt
V1.68 10.12.2017 Grünbeck softliQ SC18 eingebunden
V1.61 11.10.2017 LED-Statusanzeige integriert
V1.52 23.09.2017 Hausautomation integriert
V1.49 05.09.2017 Abfuhrkalender eingebaut
V1.47 03.09.2017 WetterGui eingebaut

Version Abfragen

Mit folgendem Befehl kann man direkt die Version ohne Display abfragen:
grep "Stand: " README.markdown |cut -d " " -f 2

Versionen

V2.23 04.02.2024 Fehler actionCheckHM aus der HM können keine Baterielimits gesetzt werden

  • in der actionCheckHM "atoi" gegen "atof" ersetzt.

V2.22 26.01.2024 Fehler printsendHM bei bestimmten Werten.

  • Größe des array angepasst von 128 nach 256

V2.21 21.11.2023 Issue #87 Änderung XML-API.

  • Anpassung zur neuen Version der XML-API für Issue #87

V2.20 21.02.2023 Issue #79 Probleme mit Aktor behoben.

  • Issue #79 Anpassung in Aktor.h vorgenommen

V2.19 05.12.2022 Fehler in funktion.h behoben

  • Funktionsaufruf aus der "actionCheckHM" bei GUI=0 war fehlgeschlagen

V2.18 09.11.2022 Fehler in Rscp/RWData.h behoben

  • In Rscp/RWData.h fehlte ein "return 1"

V2.17 16.08.2022 git clone geängert von git:// auf https://

  • git-Server geändert auf https://

V2.16 16.08.2022 Fehlerkorrektur "screnSave.c" erkannt im Homematic-Forum + Issue #75

  • Variable falsch gesetzt
  • Kleine Anpassungen an der GuiMain.c
  • Issue #75 Anpassung für Schalter Batterie im Mischmode

V2.15 12.06.2022 Issue #77 Lade- und Entladesperrzeiten in Anziege eingebaut

  • Issue #77 Menü Sperrzeiten eingabaut aktivieren und deaktivieren der Sperrzeiten möglich
  • Issue #75 Batterienutzung im Mischbetrieb kann eingestellt werden

V2.14 07.06.2022 Issue #77 RscpSet ergänzt um die Lade- und Entladesperrzeiten

  • Issue #77 "RscpSet -idle ..." für die Sperrzeiten
  • Einige Anpassungen an der RscpSet vorgenommen

V2.13 06.06.2022 Issue #75 Fehlerkorrektor

  • Fehler in den 10% Stufen behoben

V2.12 06.06.2022 RscpSet geändert die Parameter der Wallbox werden in der EMS und WB jetzt getrennt geändert

  • Änderung an der RscpSet

V2.11 05.06.2022 Issue #75 Falschen Issue angegeben

  • Beim Commit zuvor falschen Issue angegebne richtig ist Issue #75

V2.10 05.06.2022 Issue #76 Ladegrenze "Batterie zu Auto" einstellbar

  • Issue #76 über Tasten ist in 10% Stufen die Ladegrenze "Batterie zu Auto" jetzt einstellbar
  • Changelog archiviert

Changelog Archiv

e3dcgui's People

Contributors

nischram avatar realmalware avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

e3dcgui's Issues

weather.tuxnet.de ist offline

Hallo,
das Wetter gibt es nicht mehr von weather.tuxnet24.de. Ich habe noch nicht rausbekommen, ob der Dienst nur temporär oder generell eingestellt wurde.
Weisst Du etwas darüber? So ist es schade, dass die Wetterinfo leer bleibt...
Oder hast Du evtl. schon eine Lösung? ;-)
Grüße
Joachim

Langzeit Werte werden nicht aktualisiert

Der Fehler liegt in der Funktion "readWrite900()".
Die Datei wird geöffnet, gelesen aber es wird nichts in der Datei gespeichert?

void readWrite900(char *fileName, int NewValue)
{
  int c;
  int line[100];
  char read[20];
  char Path [128];
  snprintf (Path, (size_t)128, "/home/pi/E3dcGui/Data/%s.txt", fileName);
  fstream datei(Path, ios::in | ios::out);
  if (datei.is_open()) {
    printf("is open %s\n", fileName);
    for( c = 0; c < 97; ++c ){
      datei.getline(read	,20, '\n');
      if (read == NULL)
        snprintf (read, (size_t)20, "0");
      line[c] = atoi(read);
    }
    datei.seekg (0, ios::beg);
    for( c = 1; c < 96; ++c ){
      datei << line[c] <<"\n";
    }
    datei << NewValue <<"\n";
    datei.close();
  }
  else cerr << "Konnte Datei nicht erstellen!";
  return;
}

Display reboot ohne eMail

Mein Display hat in der Vergangenheit häufig einfach neu gestartet, ohne eine eMail mit der Störung zu senden.
Es gab bei mir einige W-LAN Abbrüche, dann bricht die Verbindung zu S10 zusammen und das Display startet durch den WatchDog immer wieder neu. Da keine Internetverbindung (W-LAN) besteht, kann auch keine eMail gesendet werden.

Display Helligkeit einstellen

Man kann die Displayhelligkeit wohl mit folgendem Befehl einstellen:
sudo sh -c "echo 'X' >> /sys/class/backlight/rpi_backlight/brightness"
z.B. X=100

Damit man die Helligkeit einstellen kann muss ich einen Schalter einbauen mit dem man einen Wert für X vorwählen kann.

WD schlägt sehr oft zu

In Version 1.9 habe ich eine Kontrollmöglichkeit eingebaut.
void WDcsvKontrolle(...)
Jetzt werde ich einige Tage beobachten und dann die Kontrolldatei auswerten.

Priorität der Aktoren passt nicht!

Nach meine ersten Tests habe ich in der parameter.h angegeben, dass die Priorität von Aktor 1 nach Aktor 5 fällt. Leider trifft dies nicht zu es schaltet immer erst der Aktor mit der geringsten Leistung oder der bei dem die Bedingung als erstes erreicht ist.
Hier muss ich noch nachbesser!

S10History ./getYearperDay.sh läuft nicht

Bei den Programmen /example/getYearperDay.sh und /example/getYearperMonth.sh kommt immer folgende Fehlermeldung:
./getYearperDay.sh: let: not found oder
./getYearperMonth.sh: let: not found
In der Ausgabe ist zu sehen, dass die Tage oder Monate nicht hochgezählt werden.

Folgende Abhilfe habe ich gefunden:
Erste Zeile:
#!/bin/sh
ändern in:
#! /bin/bash
Zeile 65:
let i=$i+1;
ändern in:
let i=$i+1

Zusätzlich kommt beim /example/getYearperMonth.sh folgende Fehlermeldung:
./getYearperMonth.sh: Syntax error: end of file unexpected (expecting "done")

Abhilfe:
Zwischen den Zeilen 65 und 66
fi
let i=$i+1
ein "done" einfügen:
fi
done
let i=$i+1

Da es die E3DC S10 schon seit 2012 gibt, werde ich noch die Jahreszahl für die Abfrage von 2013 auf 2011 ändern.

Echtzeit-Anzeige S10E Informationen in AIO Creator NEO

Hallo Nico,

ich nutze als Frontend für die Heimautomatisierung das Projekt piVCCU3 auf einem Raspi Model 3B+, habe dort drauf auch einen PHP-Server am laufen um meine Weichwasseranlage auszulesen und zu steuern und habe die Visualisierung über AIO Creator NEO vorgenommen.
Als PlugIn habe ich nur die CCU, was bislang auch ausreicht. IP-SYSCON o.ä. wollte ich nicht noch zusätzlich kaufen müssen.
Einen AIO Gateway habe ich auch nicht.

Die Daten des S10E speichere ich zukünftig dann ja alle 15 Minuten in der CCU.
Ich möchte aber gerne noch die aktuellen Leistungswerte, die sekündlich abgerufen werden können auf meiner Fernbedienungsseite im AIO Creator Neo anzeigen lassen.
Ich dachte mir, dass ich die anzuzeigenden Variablen dann direkt per Skript abrufe.

Hier der Hinweis auf die Doku:
https://doku.mediola.com/doku.php?id=de:creator:ui-remote-status-http

https://doku.mediola.com/doku.php?id=de:creator:start

Ich stelle mir nun die Frage, wie ich mit Deinem Framework das realisieren kann. Für die Display-Variante in Deinem Projekt machst Du ja was ähnliches.

Ich habe mal einen Screenshot zur Verdeutlichung angehängt, wie ich mir das mit der Visualisierung vorstelle.

VG
Bernd

AIO Creator - E3DC S10E Integration

Speicherzugriffsfehler bei RscpMain

Im Display werden keine Daten vom Speicher angezeigt. In der Konsole sind folgende Fehler zu sehen.
image

Bei näherer Kontrolle fallen folgende Warnungen beim Kompilieren mit make RscpMain auf:
pi@raspberrypi:~/E3dcGui $ make RscpMain
rm RscpMain
g++ -O3 RscpMain.cpp Rscp/RscpProtocol.cpp Rscp/AES.cpp Rscp/SocketConnection.cp p Rscp/RWData.cpp -o RscpMain
RscpMain.cpp: In function ‘int handleResponseValue(RscpProtocol*, SRscpValue*)’:
RscpMain.cpp:519:1: warning: control reaches end of non-void function [-Wreturn- type]
}
^
Rscp/RWData.cpp: In function ‘int makeCharRscp()’:
Rscp/RWData.cpp:199:1: warning: no return statement in function returning non-void [-Wreturn-type]
}
^
Das Starten der Applikation mit ./RscpMain führt zu einem Speicherzugriffsfehler.

AES.cpp compiles only for 32 Bit

Hi,

this is not an issue, as long as raspberry is on 32Bit only.
The problem is that the AES code is hand optimized but not portable.
It will run only on 32bit systems.
E.g. on 64Bit Linux it will fail unless you compile it to a 32bit application.

I would like to recommend the following change in the Makefile
Line 24:
$(CXX) -O4 RscpMain.cpp Rscp/RscpProtocol.cpp Rscp/AES.cpp Rscp/SocketConnection.cpp Rscp/RWData.cpp -o $@

should be:
$(CXX) -O4 -m32 RscpMain.cpp Rscp/RscpProtocol.cpp Rscp/AES.cpp Rscp/SocketConnection.cpp Rscp/RWData.cpp -o $@

That way it will work on Linux 64Bit as well (as long as 32Bit support is installed)

Thanks

Ralf

History Values

Für die Zusatzanwendung ioBroker ist es Sinnvoll die History Values für Tages, Monats oder Jahreswerte abzufragen.

Problem 1: Ich bekomme keine Abfrage auf die Tags DB hin, ich weiß nicht in welchem Format abgefragt werden muss und wie eine Antwort aussieht.

Problem 2: wie bekomme ich die Daten nach ioBroker (ich nutze ioBroker noch nicht)

GUI nur teilweise sichtbar

Hallo Nico,

auch von mir erstmal herzlichen Dank für die Erstellung und die Anleitung für die Steuerung einer HomeMatic mit einer E3DC Photovoltaikanlage.
Die HomeMatic haben wir letztes Jahr in Betrieb genommen. Die E3DC Photovoltaik mit Speicher wurde dieses Jahr eingeschaltet.
Bei der Installation von E3dcGui bin ich auf die gleichen Probleme gestoßen, wie unten geschildert.
HIer ist ein Raspberry 4 mit einem 7" Raspberry Touchscreen im Einsatz.
Desktop ist abgeschaltet und Cursor + Bildschirmschoner sind gem. Anleitung deaktiviert.
Trotzdem sind nur die Felder mit den variablen Werten dauerhaft auf dem schwarzen Hintergrund sichtbar. Die Schaltflächen und Grafiken blinken ab und zu kurz auf und verschwinden dann wieder.
Gibt es hierzu bereits einen neuen Lösungsansatz?

Grüße,

Markus


Hallo Thomas,

nachdem mir der Gedanke kam, dass ich schon den glichen Fehler hatte, habe ich auch eine mögliche Lösung gefunden.
In meiner Anleitung habe ich es hier beschrieben:
https://github.com/nischram/E3dcGui#desktop-deaktivieren
Hier geht es darum die Standard Oberfläche "startx" vom Raspberry abzustellen, damit keine ungewollten Ausgaben auf dem Display zu sehen sind.
Zur Erklärung: das Hintergrundbild wird nur von Zeit zu Zeit neu geschrieben, wenn nun die Oberfläche dazwischenfunkt wird der Hintergrund schwarz und man sieht nur noch die Werte die alle paar Sekunden neu geschrieben werden.

Ggf. muss nicht nur der Desktop deaktiviert werden, sonder zusätzlich auch der Cursor und der Bildschirmschoner deaktiviert werden, dies findest du hier:
https://github.com/nischram/E3dcGui#wichtig-pi-bildschirmschoner-deaktivieren

Ich hoffe es klappt, aber ansonsten musst du dich nochmal melden.
Viel Erfolg
Gruß Nico

Originally posted by @nischram in #46 (comment)

Schreibzugriff auf E3DC

Habe die Software auf einem BananaPi kompiliert und wollte fragen, ob man mit rscp grundsätzlich schreibend auf den Speicher zugreifen kann um z.B. die Ladesperre zu setzen?
Falls ja, war das im Original Beispielprogramm enthalten bzw. gibt es das Original Programm noch irgendwo als Download? Im Webportal taucht da nichts mehr auf...
Danke

E3dcGui as CCU addon

Hi, is there a chance that e3dcgui will run as an ccu addon, or at least can be added into a raspberrymatic installation manually?
I have searched for the required executables. (Git, make, gcc) using ssh but to no avail.
Adding another raspberry can't be the only solution.
Regards, Stefan

Applikation Kompilieren "Make" bei -lwiringPi

Hallo Nico,

ich habe das Paket installiert und die Anpassungen in der parameter.h vorgenommen.
Habe auch noch einen zusätzlichen Parameter mit aufgenommen (hatten wir ja so besprochen diese Woche):
#define TAG_EMS_ISE_POWER_NET
Die Parameter habe ich vorher gemäß Beschreibung in der CCU als Systemvariablen angelegt und die ISE ermittelt und in der parameter.h auch eingetragen.
Zur Info: Das Editieren der parameter.h habe ich per WinSCP Datei Bearbeiten vorgenommen und nicht auf dem Raspi direkt.

Wenn ich nun per Putty ssh mit dem User Pi auf den Raspi gehe und ins E3dcGui-Verzeichnis wechsle und den make-Befehl ausführe, kommt folgende Meldung:
Befehl: pi@raspberrypi:~/E3dcGui $ make
Ergebnis:
rm watchdog
g++ -O1 Watchdog.cpp -o watchdog
rm screenSave
cc -O1 screenSave.c -o screenSave
rm screenSaveHM
rm: das Entfernen von 'screenSaveHM' ist nicht möglich: Datei oder Verzeichnis nicht gefunden
Makefile:42: die Regel für Ziel âcleanSSHMâ scheiterte
make: [cleanSSHM] Fehler 1 (ignoriert)
cc -O1 screenSaveHM.c -o screenSaveHM -lwiringPi
/usr/bin/ld: cannot find -lwiringPi
collect2: error: ld returned 1 exit status
Makefile:21: die Regel für Ziel âscreenSaveHMâ scheiterte
make: *** [screenSaveHM] Fehler 1

Den S10 habe ich noch nicht. Habe daher eine IP-Adresse angegeben, welche erreichbar ist im Netzwerk und schon mal Daten hinterlegt, wie ich sie später im S10 auch eintragen werde. AES_PASS habe ich so auf dem Dummy-Wert belassen.
Ein make sollte m.E. auch ohne S10 schon durchführbar sein, würde ich denken.

Ich hoffe, Du kannst mir hier weiterhelfen, wo das Problem liegt.

VG
Bernd

*** buffer overflow detected ***

Bei der Suche nach Issues#1 ist mir ein:
*** buffer overflow detected ***
aufgefallen.
Der Fehler hierzu ist irgendwo im letzten Drittel der GuiMain.

Sommer/Winterzeit automatisch anpassen

Bis lang muss man die Sommer oder Winterzeit von Hand einstellen. entweder über das Display oder ohne Display muss die Datei geändert werden. Wenn die Software zur Umstellung auf Winterzeit nicht geändert wird, schlägt der Watchdog laufend zu da die Daten ja schon 1 Stunde alt sind.

Ich möchte eine automatische Umstellung einbauen. Oder das erstellen der Zeit über die Zeitzone anpassen.

Gui wird nur teilweise dargestellt

Hallo,
erst mal vielen Dank und großen Log für E3dcGui. Eine Homematic nutze ich schon ein paar Jahre und seit ca. 5 Monten ein E3DC Hauskraftwerk. Dies Projekt ist eine optimale Schnittstelle.
Ich hate erst mit dem Kompilieren etwas Probleme, habe dann aber den Betrag mit den fehlenden WiringPi gefunden. Ich hatte dies zwar schon instaliert aber das hat wohl nicht komplett funktioniert. Wenn ich jetzt die E3dcGui starte sieht man teileweise noch die Konsole und teilweise die E3dc Gui, siehe Screenshot. Ich kann die Menüs oben antippen und sehe dann das Menü ebenfalls teilweise. Die Anzeige aktualisiert sich auch und der Bildschirm geht nach 3 Minuten aus und per IRDA Melder wieder an.
Meine Erfaharungen mit Linux bzw. Raspbian OS sind sehr oberflächlich. Was kann hier die Ursache sein? Ich habe die Version 1.83 vom Dezember 2020 installiert.
E3dcGui-Screen

Gruß Thomas

Problems with graphic

Hi,

I operate a new Raspi 4 (as newbie ;-))

The grapical problems which should be solved with #48 stay, although I followed the instructions step by step.

Kind regards
GSHusar
IMG_2610

Compiler Fehler

cc -O1 GuiMain.c -o GuiMain -lwiringPi In file included from GuiMain.c:34:0: External/MuellGui.h: In function ‘readMuellKW’: External/MuellGui.h:22:5: error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode for( int c = 1; c < 56; ++c ){ ^ External/MuellGui.h:22:5: note: use option -std=c99, -std=gnu99, -std=c11 or -std=gnu11 to compile your code In file included from GuiMain.c:35:0: External/dht11.h: In function ‘saveDHT11’: External/dht11.h:108:2: error: ‘for’ loop initial declarations are only allowed in C99 or C11 mode for( int i = 0; i < 10; ++i ) ^ Makefile:22: recipe for target 'GuiMain' failed make: *** [GuiMain] Error 1

for loop not initialized in RscpMain.cpp

Hi,

I found a problem in RscpMain.cpp.
One "for loop" is not initialized correctly causing the program to not retrieve any value - sometimes.
The problem is taken over from the demo code from E3DC.

Line 436
for(unsigned int i; i < frame.data.size(); i++) {

Must be:
for(unsigned int i = 0; i < frame.data.size(); i++) {

First compilation with original code worked, but a little change in the source code caused all other runs to be stuck in the Authentication loop.
Fixing the initialisation worked reliably.

I will report that to E3DC as well.

Thanks

Ralf

RSCP Auslesen von einzelnen Trackern des Wechselrichters

Ich würde gerne Werte des Wechselrichters abfragen.
Dafür gibt es z.B. diese Tag's: (Rscp/RscpTags.h)

TAG_PVI_DC_POWER
TAG_PVI_DC_VOLTAGE
TAG_PVI_DC_CURRENT

Der Wechselrichter hat zwei Tracker die einzeln abgefragt werden können, dies muss irgendwie in die Abfrage eingebaut werden.
In den Stand der Version 1.16 habe ich in Zeile 107 und 108 eine Abfrage für die Spannung eingebaut:

102        // request PVI information
103        SRscpValue PVIContainer;
104        protocol.createContainerValue(&PVIContainer, TAG_PVI_REQ_DATA);
105        protocol.appendValue(&PVIContainer, TAG_PVI_INDEX, (uint8_t)0);
106        protocol.appendValue(&PVIContainer, TAG_PVI_REQ_ON_GRID);
107        protocol.appendValue(&PVIContainer, TAG_PVI_REQ_DC_VOLTAGE, (uint8_t)0);
108        protocol.appendValue(&PVIContainer, TAG_PVI_REQ_DC_VOLTAGE, (uint8_t)1);
109        // append sub-container to root container
110        protocol.appendValue(&rootValue, PVIContainer);
111        // free memory of sub-container as it is now copied to rootValue
112        protocol.destroyValueData(PVIContainer);

Und in folgenden Zielen ist das Auslesen der Rückgabe:

368            case TAG_PVI_DC_VOLTAGE: {              // response for TAG_PVI_REQ_DC_VOLTAGE
369                uint8_t TAG_EMS_OUT_PVI_DC_VOLTAGE = protocol->getValueAsUChar8(&PVIData[i]);
370                cout << "PVI DC Voltage = " << TAG_EMS_OUT_PVI_DC_VOLTAGE << " \n";
371                break;
372            }

Aber es ist noch Fehlerhaft, denn ich bekomme keine Ausgabe für die Spannung:

PVI DC Voltage = 
PVI DC Voltage = 

Wahrscheinlich ist die Abfrage der einzelnen Tracker mit (uint8_t)0) und (uint8_t)1 noch nicht korrekt.

Langzeitwerte arbeitet seit Update V1.13 nicht mehr

Die Grafische Darstellung der Langzeitwerte werden seit dem Update V1.13 und der Änderung "- RSCP Abfragen verringern wenn Bildschirmschoner aktiv" nicht mehr im geplanten Rhythmus erstellt.

Wenn der Bildschirmschoner aktiv ist wird nicht sekündlich gespeichert sondern nur noch im Rhythmus des "HMIntervall".

Hier muss ich entweder die Änderung rückgängig machen oder ein weiteren Teil einbauen damit mindestens alle 15 Sekunden die Werte für den 15Min-Mittelwertwerte gespeichert werden.

sendMail Arbeitet nach Neuinstallation nicht

Nachdem ich den Pi neu aufgesetzt habe arbeitet sendMail nicht mehr.
Der Fehler könnte auch bei der Erstinstallation auftreten. Bei einem Test kommt die Fehlermeldung:
invalid SSL_version specified at /usr/share/perl5/IO/Socket/SSL.pm

ADD Power wird Negativ ausgegeben

Eintrag mit der Fehlermeldung im Homematicforum:
https://homematic-forum.de/forum/viewtopic.php?f=19&t=30095&p=357877#p357877

"Ach was mir dabei gerade noch einfällt: in der E3DCGUI wird die Leistung des externe Wechselrichter mit einem negativen Zahlenwert angezeigt - das ist bei dem Wert der per Modbus ausgelesen wird auch so. In der "echten" Anzeige (sowohl am Gerät als auch im Web) wird der Wert aber "positiv" angezeigt - was ja auch richtig ist da es ja eine zusätzliche Stromquelle ist. Vielleicht magst du das in der E3DCGUI auch noch anpassen."

S10E HM-Integration - negative Werte für TAG_EMS_ISE_POWER_NET

Hallo,

ich bekomme demnächst meinen S10E und wollte mich nun schon mal etwas vorbereiten, um dann gleich von Anfang an die Daten zu sammeln in der CCU.

Nun habe ich eine Frage zum Thema negative Werte bzgl. der POWER-Variable.
Es steht ja in diesem Projekt geschrieben, dass die Homematic keine negativen Werte auswerten kann und es daher für In und Out 2 Variablen gibt.

Ich habe mal anhand einer Testvariable die auf -20 steht im Homematic-Script einen Test gemacht und das Ergebnis war, dass bzpw. -19 größer als -20 ist.
Woher kommt diese Aussage bzw. habe ich den Sachverhalt falsch interpretiert?

Ich wollte an sich schon gerne die Werte in einer Variablen haben und kann dann mittels meiner Visualisierung (AIO Creator) entscheiden, welches Bild eingeblendet wird (Pfeilrichtung bei pos. und neg. Werten).

Viele Grüße
Bernd

WatchDog deaktivieren

Der Watchdog kann nicht deaktiviert werde. Ich muss in der "parameter.h" einen Schalter einbauen und im SorceCode entsprechende Funktion einbauen.

WetterGui

Hallo,
unter https://weather.tuxnet24.de/ ist eine neue Wetter API als Nachfolger zum Yahoo-Wetter beschrieben.
Lässt sich das als Input für eine Wetteranzeig nutzen?
Vielen Dank für die Veröffentlichung des Projekts und die gute Doku
Joachim

CCU stürzt ab

Wenn der Raspi Daten sendet stürzt nach kurzer Zeit die CCU ab.

Absturz des Display / LED Funktion

Von Zeit zu Zeit stürzt das Display ab, auch LED-Funktion läuft dann nicht mehr. Aber die Programme laufen im Hintergrund weiter. Die HomeMatic wird zum Beispiel noch weiter mit Daten versorgt.

Da die Programme im Hintergrund weiter laufen, schlägt der Watchdog auch nicht zu.
Ein Reset der Software hilft nicht, dann bleibt das Display schwarz. Nur ein Reboot schafft Abhilfe.

Daten per RSCP vom E3DC-S10 Speicher abfragen

Hallo Nico,

habe hierzu eine grundsätzliche Frage.
Die Daten, die per RSCP abgefragt werden, kommen über den S10E vom E3DC-Portal, oder?
Diese Daten werden dann in eine MySQL-DB geschrieben, welche durch die Oberfläche (Display) dann angezeigt werden können.
Die abgerufenen Daten werden aber nicht in eine Homematic Systemvariable geschrieben?

Was interessant wäre, dass ich mir Vergangenheitswerte zyklisch abrufe und diese in HM Systemvariablen speichere.
Durch die Nutzung von ccu historian kommen diese dann anschließend auch dort rein und ich könnte mir die Verläufe dort auch ansehen.

Alternativ natürlich könnte ich die Werte auch per CSV aus dem E3DC-Portal per CSV speichern und in Excel verarbeiten. Hätte sie aber schon gerne in der Homematic drinnen. Dann kann ich diese mit weiteren vorhandenen Werte gleich in Diagrammen zusammenbringen.

Beispiele

  • Tageswerte kurz vor Mitternacht abrufen
  • Monatswerte kurz vor dem Monatswechsel abrufen
  • Jahreswerte kurz vor dem Jahreswechsel abrufen

Bei den Werten denke ich an Solarproduktion, Eigenstrom, Netzeinspeisung, Netzbezug, Hausverbrauch, Autarkie ...

Viele Grüße
Bernd

Display Auflösung

Hi, das Programm funktioniert!
Das ist echt cool
Aber leider startet es sobald ich ./start mache in so einer Art 4:3 Auflösung
Wie kann ich das ändern? gibt es irgendwo eine Datei um die Auflösung anzupassen?
Danke schonmal für die Hilfe!
Nachtrag: Habe gerade beim beenden des Programms das gesehen:

error opening touch screen: No such file or directory
Input device name: "Unknown"
Supported events:
Original 720x576, 32bpp
Framebuffer /dev/fb0 resolution;
720x576, 32 bpp

Ich denke nicht dass das passt. :)

E3dcGui for S10 Blackline ?

Ist das E3dcGui auch für S10 Blackline nutzbar?
Wie werden zusätzliche Messungen ausgelesen/adressiert?

THX
B

Bildschirmschoner lässt sich nicht richtig beenden

Meldung im Homematic-Forum:
Hallo nischram,

Erst mal ein Lob für die super arbeit das Display und auch die weiter Leitung funktionieren Klasse.
Ich habe nur ein Problem mit dem Bildschirmschoner wenn dieser kommt lässt er sich nicht mehr entfernen Bildschirm reagiert zwar aber es kommt kein Bild mehr. Gibts hier für eine Lösung?

Grüße Armin

Abstürze der GuiMain

GuiMain abstürze bei Überschneidungen zwischen GuiMain und RscpMain beim schreiben und lesen der E3dcGuiData.txt
Da zum schreiben oder auch lesen für jede Zeile die Datei einzeln geöffnet und geschlossen wird. Ist die Trefferquote hoch das beide Programme sich in der Datei begegnen. Dabei scheinen Fehlerhaft Werte zu entstehen die als Grafik nicht mehr erstellt werden können und die GuiMain stürzt ab.

Das Script S10_Zeitstempel arbeitet nicht

Die Systemvariable S10_Zeitstempel wird mit dem Script bei einer RaspberryMatic Version 2.29.18 nicht mit der Uhrzeit gefüllt, es bleiben immer die alten Information in der Variable.

History Daten in GuiMain werden nicht aktualisiert

Das Programm S10History bricht immer ab mit:
"Response receive timeout (retry)
Socket receive error. errno 11"

Das Timeout wird vom S10 gesendet. Das S10 ist auch schon abgestürzt als ich zu viele Anfragen gestellt habe. Die Anfrage mit dem "Brief" Schalter, also "-b" kommen korrekt zurück. Somit gehe ich von einer zu hohen Datenmenge aus. (Teilweise klappt es)

Ich versuche die Abfragen für die HistoryValues auf "Brief" umzubauen.

Wetterdaten werden nicht geladen

Hallo Nico,
nur wenn ich B4 als Startmodus eingebe, ist nach 60 Sekunden alles OK. Bei B2 bleibt die Console ständig im Hintergrund. Deine Empfehlungen teste ich noch mal.
Zu dem Wetter: bekomme ich die Meldung im Browser: "Invalid API key. Please see http://openweathermap.org/faq#error401 for more info." wenn ich das mit deinem Link teste. Mit dem Link aus der openweater Seite: api.openweathermap.org/data/2.5/weather?id={city id}&appid={API key} kann ich Daten abrufen. Ich habe "nur" diesen kostenfreien Openweater Account erstellt.
Gruß Thomas

Originally posted by @dg0ovp in #46 (comment)

Absturt bei make ?

Nach allen Konfigurationen stürzt der make Befehl ab.
Liegt der Fehler im RscpMain.cc ??

pi@raspi3-E3DC:~$ make
rm watchdog
g++ -O1 Watchdog.cpp -o watchdog
rm screenSave
cc -O1 screenSave.c -o screenSave
rm screenSaveHM
cc -O1 screenSaveHM.c -o screenSaveHM
rm GuiMain
cc -O1 GuiMain.c -o GuiMain -lwiringPi
rm External/gruenSave
cc -O1 External/gruenSave.c -o External/gruenSave
rm start
cc -O1 start.c -o start
rm stop
cc -O1 stop.c -o stop
rm RscpMain
rm: das Entfernen von 'RscpMain' ist nicht möglich: Datei oder Verzeichnis nicht gefunden
Makefile:52: die Regel für Ziel „cleanRM“ scheiterte
make: [cleanRM] Fehler 1 (ignoriert)
g++ -O3 RscpMain.cpp Rscp/RscpProtocol.cpp Rscp/AES.cpp Rscp/SocketConnection.cpp Rscp/RWData.cpp -o RscpMain
RscpMain.cpp: In function ‘int handleResponseValue(RscpProtocol*, SRscpValue*)’:
RscpMain.cpp:206:52: error: expected primary-expression before ‘,’ token
printsendHM(CounterHM, TAG_EMS_ISE_POWER_PV, TAG_EMS_OUT_POWER_PV);
^
Makefile:31: die Regel für Ziel „RscpMain“ scheiterte
make: *** [RscpMain] Fehler 1

Danke für die Unterstützung.
B

WatchDog führt ständig einen Reboot durch

Der WatchDog überwacht die Zeiten aus der RSCP-Applikation und ggf. aus der Homematic. Wenn eines der Gerät ausgeschaltet oder nicht im Netzwerk ist, wird nach der Raspberri PI immer wieder neu gestartet.

Werte werden nicht in die Homematic übertragen

Hi Nico,

Deine Reaktionszeit ist der Knaller 😉

Es war die Nummer 1 – mit autostart hat es direkt geklappt, vielen Dank!

Ich habe noch eine zweite Baustelle, vielleicht kannst Du mir auch da auf die Sprünge helfen:

Ich möchte die Daten gerne in der HM CCU2 haben, hab das nach Deiner Anleitung getan – die Variablen in der homematic bleiben aber auf null. Ne Idee?

Gruß
Gerhard

Leistung Tracker1 und Tracker2

Kann man die parameter.h für die Leistungen Tracker 1und 2 als weitere Systemvariablen in der Homematic erweitern? Wenn ja, was muss noch angepasst werden?
z.B.
S10_EMS_POWER_TRACKER1
S10_EMS_POWER_TRACKER2

Viele Grüße

Thomas

Aktuelle Tageswerte in HM Systemvariablen schreiben

Hallo,
ich habe Homematic Systemvariablen angelegt für die Tageswerte.
Habe mir auch schon S10history angesehen, komme damit allerdings nicht so ganz klar.
Gerne würde ich Tageswerte, aber auch gerne Monats und Jahreswerte abrufen können und in die Systemvariablen schreiben.
Habe bspw. für Solarproduktion, Eigenstrom, Netzeinspeisung, Netzbezug, Hausverbrauch, Batterie laden, Batterie entladen eine angelegt.
Mir ist allerdings nicht klar, wie ich durch Anpassung des Skripts die Daten in die Systemvariablen schreiben kann.
Wäre prima, wenn Du hierauf eingehen könntest.
Ansonsten läuft nun die Ermittlung. Habe seit gestern den S10 E Pro erhalten.
Klasse Implementierung von Dir!!
Grüße
Bernd

RAM Disk Daten sichern vor geplantem Reboot

Es kann ja mal sein, dass ich den Raspi neu starten muss.
Was wäre denn zu tun, damit die Daten, die sich im RAM Disk befinden nicht verloren gehen?
Gibt es ggf. hierzu auch ein Skript, das man vor einem geplanten Neustart ausführen sollte?

Wo kann ich sehen, wann das letzte Mal Daten aus dem RAM Disk weggeschrieben wurden?
Wäre vielleicht hilfreich, was die Größe der RAM Disk Partition betrifft.
Es kommt schon mal vor, dass der Raspi hängen bleibt und vom Stromnetz getrennt werden muss.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.