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
in den Ordner einwählen. Die Funktion startest du mit
für den aktuellen Tag oder für den Vortag mit
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:
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