Anbindung an Stromspeicher E3DC

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

jhhr06
Beiträge: 7
Registriert: 27.09.2020, 14:31
System: CCU

Re: Anbindung an Stromspeicher E3DC

Beitrag von jhhr06 » 29.09.2021, 15:53

Hallo Nico,

ja, das ist die Lösung. Bei mir funktioniert es jetzt, alle Variablen in Homematic werden aktualisiert.
Ich habe die curl Aufrufe in Rscp/RWData.h und funktion.h wie folgt geändert:

Code: Alles auswählen

snprintf(batch, sizeof(batch), "curl -k -s \"https://%s/config/xmlapi/statechange.cgi?ise_id=%i&new_value=%.1f\" > /dev/null 2>&1",HM_IP , id, value);
Scheint sich wirklich in neueren RasperryMatic Versionen etwas geändert zu haben.
Vielen Dank für deine Hilfe.

Gruß Jürgen

nischram
Beiträge: 108
Registriert: 20.05.2016, 10:41
Danksagung erhalten: 10 Mal

Re: Anbindung an Stromspeicher E3DC

Beitrag von nischram » 30.09.2021, 20:27

Danke für die Rückmeldung.

Ich habe es bei mir im Quellcode geändert. Somit wird es in meiner nächsten Version hochgeladen.

Viele Grüße Nico

KPF
Beiträge: 3
Registriert: 30.10.2021, 18:37
System: CCU

Re: Anbindung an Stromspeicher E3DC

Beitrag von KPF » 30.10.2021, 18:48

Hallo Nico,

super Anleitungen. Habe diese Woche meinen Raspi mit Display in Betrieb genommen.
Nur mit der S10history hapert es. Wie starte ich das Programm. Bin auf dem Holzweg.
Ausserdem würde mich interessieren wie man zum Beispiel einen stündlichen Wert von TAG_EMS_REQ_POWER_HOME an HM übergeben kann.
Ich möchte diesen Wert an openHab weiterleiten.
Ich würde mich freuen wenn dies möglich wäre.

Viele Grüße KPF

nischram
Beiträge: 108
Registriert: 20.05.2016, 10:41
Danksagung erhalten: 10 Mal

Re: Anbindung an Stromspeicher E3DC

Beitrag von nischram » 01.11.2021, 19:57

Hallo KPF,

kannst du denn noch genauer sagen wo es bei dir mit dem S10history hängt?
  • Hast du die Funktion in der parameter.h aktiviert? also die Zeile:

    Code: Alles auswählen

    #define historyAktiv                1
    auf 1 gesetzt wie hier zu sehen
  • Welche Zeit hast du in der folgenden Zeile eingetragen?

    Code: Alles auswählen

    #define historyDelay                900
  • Ist das kompilieren fehlgeschlagen / duchgelaufen.
    Testen kannst du es mit

    Code: Alles auswählen

    make S10history/S10history
  • Was passiert wenn du auf den Button "History Today" drückst?

Nun zu deiner Frage:
KPF hat geschrieben:
30.10.2021, 18:48
Ausserdem würde mich interessieren wie man zum Beispiel einen stündlichen Wert von TAG_EMS_REQ_POWER_HOME an HM übergeben kann.
Der Wert POWER_HOME ist nur ein Leistungswert und kein Energiewert. Dieser Leistungswert wird als Hausverbrauch permanent angezeigt. Dieser Wert wird ggf. in einem von dir eingegebenen Wert an die HM gesendet. Aber ich denke du möchtet eher die Energiewerte abspeichern und nicht die Leistung. In meinem Programm mit dem Button "History Today" zeige ich die Energiewerte einiger wichtiger Punkte aber nur für den laufenden Tag und den Vortag. Wenn du für andere Zeitfenster die Werte ermitteln und verwenden willst, musst du die das Programm "S10history" entsprechend umbauen. Du müsstest die Energiewerte für eine Stunde abfragen und dann diese Werte mit einer ähnlichen Funktion wie meine "printsendHM" an die Homematic senden. Für diesen Umbau der Programme ist aber schon erheblicher Programmieraufwand von dir nötig.

Viele Grüße Nico

KPF
Beiträge: 3
Registriert: 30.10.2021, 18:37
System: CCU

Re: Anbindung an Stromspeicher E3DC

Beitrag von KPF » 02.11.2021, 13:06

Hallo Nico,

vielen Dank für deine Antwort.
Ja das mit dem HistoryTodayButton usw. funktioniert. Eigentlich brauch ich genau die Historytoday-Werte für die zusätzlichen HM-Variablen.
Kannst du mir einen Denkanstoß geben?
Ausserdem habe ich noch eine Frage zum Usage (S10history) =>Read the sum of yesterday: S10history -d -1 -b : Wo oder wie setzt ich das ein.
Ich danke im Voraus.

Grüße KPF

nischram
Beiträge: 108
Registriert: 20.05.2016, 10:41
Danksagung erhalten: 10 Mal

Re: Anbindung an Stromspeicher E3DC

Beitrag von nischram » 02.11.2021, 20:05

Hallo KPF,

ah Ok verstehe. Das Programm S10history kommt nicht von mir sonder von RalfJL auch im Github: https://github.com/RalfJL/S10history

Ich hatte das Programm ein wenig umgebaut damit ich die Werte mit dem Button History anzeigen kann. So ist bei mir nicht jedes mal die Übergaben der Userdaten nötig.
Um das ganze aus meiner Installation zu testen musst du dich mit

Code: Alles auswählen

cd /home/pi/E3dcGui/
in den Ordner einwählen. Die Funktion startest du mit

Code: Alles auswählen

S10history/S10history -T
für den aktuellen Tag oder für den Vortag mit

Code: Alles auswählen

S10history/S10history -Y
Die Ausgabe sieht dann etwas so aus:

Code: Alles auswählen

RSCP authentitication level 10
Generating request for historical data
Start time: Mon Nov  1 00:00:00 2021
interval: 86400, Span seconds: 86399End time: Mon Nov  1 23:59:59 2021
1635877603
Day start: 1635724800 - Mon Nov  1 00:00:00 2021
Day end: 1635811199 - Mon Nov  1 23:59:59 2021
Day graph index: -1.0 
Day battery in: 2974.0 Wh
Day battery out: 2401.0 Wh
Day production: 6534.0 Wh
Day grid in: 138.8 Wh
Day grid out: 17070.0 Wh
Day consumption: 22350.0 Wh
Day pm 0 power: 0.0 Wh
Day pm 1 power: 0.0 Wh
Day bat charge level: 7.9 %
Day bat cycle count: 0.000000 
Day consumed production: 97.4 
Day autarky: 23.624161 
Day-CSV-head: date;batin;batout;batsoc;pro;netin;netout;con
Day-CSV: 1635724800;2974.00;2401.00;7.86;6534.00;138.75;17070.00;22350.00
Ich habe auf die schnelle mal ein wenig gespielt. Wenn du dir in der parameter.h z.B. eine ISE einrichtest für den "Consumption" (Verbrauch) der History, etwa so:

Code: Alles auswählen

//S10history
#define ISE_DB_CONSUMPTION          3597
und dann in der "S10history/RscpReader.cpp" bei Zeile 252 die IF-Schleife und die Funktion "printsendHM()" einfügst, hier mit eingefügter Zeilen:

Code: Alles auswählen

		case TAG_DB_CONSUMPTION: {
			float db_consumption = protocol->getValueAsFloat32(&((*dbSum)[i]));
			printf("%s consumption: %0.1f Wh\n", sum_prefix, db_consumption);
			writeHistory(dataHome, db_consumption, writedata);
			sum.consumption = db_consumption;
			if(writedata == 1){
				printsendHM(HM_Intervall, ISE_DB_CONSUMPTION, db_consumption);
			}

			break;
		}
Nun die Funktion S10history erneut kompilieren, dann wird jedes mal wenn die S10History abgerufen wird der Energiewert an die HM gesendet. Also Automatisch oder wenn es von Hand ausgelöst wird.
Da aus meinem Programm die Funktion immer 2x aufgerufen wird, je für Tag und Vortag ist die IF-Schleife mit dem "writedata" eingebaut. So kannst du eingrenzen welcher Wert übertragen werden soll "==1" für den bisherigen Tageswert (-T) und "==2" für den gesamten Vortag (-Y). Meine Empfehlung wäre dann eher mit "==2" zu arbeiten und den Wert der für den Vortag kommt regelmäßig mit einem anderen Programm in der HM zu Speicher oder zu übergeben.

Ich hoffe ich habe alles beschrieben und du kannst es verstehen. Du kannst es ja mal testen.
Ich würde mich freuen wenn es klappt und deine Erwartungen erfüllt.
Ach ja wenn es klappt, musst du natürlich mehrere ISE_DB... einrichten und die anderen Werte in der RscpReader.cpp auch erweitern.

Viele Grüße Nico

KPF
Beiträge: 3
Registriert: 30.10.2021, 18:37
System: CCU

Re: Anbindung an Stromspeicher E3DC

Beitrag von KPF » 03.11.2021, 15:50

Hallo Nico,

vielen, vielen Dank.
Das war genau das, was ich wollte.
Mit der "Methode des genauen Hinsehens" :D hat es funktioniert.

Viele Grüße

KPF (Klaus)

jhhr06
Beiträge: 7
Registriert: 27.09.2020, 14:31
System: CCU

Re: Anbindung an Stromspeicher E3DC

Beitrag von jhhr06 » 02.01.2022, 11:48

Hallo Nico,
ich habe gestern versucht E3dcGui von V2.03 auf V2.04 upzugraden. Es trat folgender Fehler beim make auf:

Code: Alles auswählen

pi@raspi-e3dc:~/E3dcGui$ make
rm copyPara 
cc -O1 copyPara.c -o copyPara
rm watchdog 
g++ -O1 Watchdog.cpp -o watchdog
rm screenSave 
cc -O1 screenSave.c -o screenSave
rm screenSaveHM 
rm: cannot remove 'screenSaveHM': No such file or directory
make: [Makefile:56: cleanSSHM] Error 1 (ignored)
cc -O1 screenSaveHM.c -o screenSaveHM -lwiringPi
In file included from screenSaveHM.c:13:
checkPara.h: In function ‘checkDefine’:
checkPara.h:24:5: warning: implicit declaration of function ‘sleep’ [-Wimplicit-function-declaration]
     sleep(2);
     ^~~~~
In file included from Frame/touch.c:24,
                 from screenSaveHM.c:15:
/usr/include/unistd.h: At top level:
/usr/include/unistd.h:444:21: error: conflicting types for ‘sleep’
 extern unsigned int sleep (unsigned int __seconds);
                     ^~~~~
In file included from screenSaveHM.c:13:
checkPara.h:24:5: note: previous implicit declaration of ‘sleep’ was here
     sleep(2);
     ^~~~~
make: *** [Makefile:27: screenSaveHM] Error 1
Nach dem Einspielen de Backups (komplette Kopie des Ordners E3dcGui) lief das make durch.
Hast du eine Idee ?

Gruß Jürgen

nischram
Beiträge: 108
Registriert: 20.05.2016, 10:41
Danksagung erhalten: 10 Mal

Re: Anbindung an Stromspeicher E3DC

Beitrag von nischram » 02.01.2022, 17:22

Hallo Jürgen,

ja ich habe eine Idee... Deine Info über den Fehler hat mir offenbart das ich beim kopieren von meinem Pi zum GitHub eine kleine Änderung in der screenSaveHM.c vergessen hatte.

Ich habe mal auf die schnelle die Version 2.05 hochgeladen nun sollte es klappen, es sei denn ich hatte die Zeile in eine anderen Datei auch vergessen.

Viele Grüße Nico

jhhr06
Beiträge: 7
Registriert: 27.09.2020, 14:31
System: CCU

Re: Anbindung an Stromspeicher E3DC

Beitrag von jhhr06 » 03.01.2022, 07:54

Hallo Nico,

vielen Dank für die schnelle Hilfe, jetzt funktioniert alles.

Viele Grüße Jürgen

Antworten

Zurück zu „HomeMatic allgemein“