Hallo Zusammen!
Erst einmal vielen Dank für dieses tolle Projekt.
ich habe alles soweit aufgesetzt, stoße aber bei den Pushover Meldungen an meine Grenzen.
Ich würde gerne bei folgenden Szenario eine Pushmeldung erhalten und habe keine Idee was ich tun muss im Nachrichtenblock:
- Akku ist bei 100%
- die PV produziert Strom
- im Haus wird nicht genug Strom abgenommen, es "droht" Einspeisung
Kann mir da jemand auf die Sprünge helfen?
Meldung wenn Akku voll
Moderator: Ulrich
Re: Meldung wenn Akku voll
Hallo,
hier mal eine Umsetzung für den Status wenn der Accu leer oder 100% gefüllt ist. Die Meldung soll aber erst wieder gesendet werden wenn der Accu in der Zwischenzeit einmal auf mindestens 6% geladen wurde oder auf 90% Ladestand gesunken ist.
Wichig ist bei der DB Abfrage die Groß- und Kleinschreibung.
hier mal eine Umsetzung für den Status wenn der Accu leer oder 100% gefüllt ist. Die Meldung soll aber erst wieder gesendet werden wenn der Accu in der Zwischenzeit einmal auf mindestens 6% geladen wurde oder auf 90% Ladestand gesunken ist.
Code: Alles auswählen
/****************************************************************************
// NACHRICHTEN BLOCK START NACHRICHTEN BLOCK START BLOCK START
// NACHRICHTEN BLOCK START NACHRICHTEN BLOCK START BLOCK START
// NACHRICHTEN BLOCK START NACHRICHTEN BLOCK START BLOCK START
// Auswertung wenn die Batterie leer ist. Die Nachricht soll aber nur versendet werden wenn die Batterie
// zwischendurch einmal mindestens 6 % Ladung hatte
// Hier kann Ihre Abfrage stehen. Diese Datei wird bei einem
// Update nicht ueberschrieben.
****************************************************************************/
$rc = $funktionen->po_messageControl( "Batterie_Leer", 0, $GeraeteNummer, $Messengerdienst[1] );
if ($rc === false or date( "YmdHi", $rc[0] ) <> date( "YmdHi" )) {
// holen des aktuellen Baterieladezustandes
$aktuelleDaten["Query"] = "db=".$InfluxDBLokal."&q=".urlencode( "select last(SOC) from Batterie");
$rc = $funktionen->po_influxdb_lesen( $aktuelleDaten );
$Meldungen["Batterie_Ladung"] = $rc["results"][0]["series"][0]["values"][0][1];
$Meldungen["Batterie_Ladung_Time"] = $rc["results"][0]["series"][0]["values"][0][0];
// holen des letzten Baterieladezustands bevor leer
if($Meldungen["Batterie_Ladung"] == 100){
$letzteDaten["Query"] = "db=".$InfluxDBLokal."&q=".urlencode( "select last(SOC) from Batterie where SOC <= 90");
$Nachricht = "Haus-Info: Batterie Ladezustand = ".$Meldungen["Batterie_Ladung"]."%. Batterie ist voll";
}else{
$letzteDaten["Query"] = "db=".$InfluxDBLokal."&q=".urlencode( "select last(SOC) from Batterie where SOC >= 6");
$Nachricht = "Haus-Info: Batterie Ladezustand = ".$Meldungen["Batterie_Ladung"]."%. Batterie ist leer";
}
$rc_last = $funktionen->po_influxdb_lesen( $letzteDaten );
$Meldungen["Batterie_Ladung_Last_Loaded"] = $rc_last["results"][0]["series"][0]["values"][0][1];
$Meldungen["Batterie_Ladung_Time_Last_Loaded"] = $rc["results"][0]["series"][0]["values"][0][0];
if (isset($rc["results"][0]["series"][0])) {
// Die Query liefert ein Ergebnis, das wird an dieser JSON Variable erkannt.
if(($Meldungen["Batterie_Ladung"] <=5 or $Meldungen["Batterie_Ladung"] == 100) and $Meldungen["Batterie_Ladung_Time_Last_Loaded"] > $Meldungen["Batterie_Ladung_Time"]){
$funktionen->log_schreiben( "Batterie ".$Nachricht, " ", 7 );
$funktionen->log_schreiben( strip_tags( $Nachricht ), "* ", 6 );
for ($Ui = 1; $Ui <= count( $User_Key ); $Ui++) {
// Die Nachricht wird an alle Empfänger gesendet, die in der
// user.config.php stehen.
$funktionen->log_schreiben( "Nachricht wird bald versendet an User_Key[".$Ui."] ".$User_Key[$Ui], "* ", 9 );
$rc = $funktionen->po_send_message( $API_Token[$Ui], $User_Key[$Ui], $Nachricht, 0, "", $Messengerdienst[$Ui] );
if ($rc) {
$funktionen->log_schreiben( "Nachricht wurde versendet an ".$Messengerdienst[$Ui]." mit Rufnummer: ".$User_Key[$Ui]." und Key: ".$API_Token[$Ui], " ", 6 );
}
$funktionen->log_schreiben( $aktuelleDaten["Query"], "* ", 9 );
$rc = $funktionen->po_messageControl( "Batterie_Leer", 1, $GeraeteNummer, $Messengerdienst[1] );
}
}
}
}
/****************************************************************************
// NACHRICHTEN BLOCK STOP NACHRICHTEN BLOCK STOP BLOCK STOP
// NACHRICHTEN BLOCK STOP NACHRICHTEN BLOCK STOP BLOCK STOP
// NACHRICHTEN BLOCK STOP NACHRICHTEN BLOCK STOP BLOCK STOP
****************************************************************************/
-
- Beiträge: 50
- Registriert: Mo 20. Mär 2023, 11:11
- Hat sich bedankt: 6 Mal
- Danksagung erhalten: 6 Mal
Re: Meldung wenn Akku voll
Hallo SV2,
kannst Du Dein Script ein wenig erklären?
Ich habe es installiert, aber bei mir scheint es nicht zu funktionieren.
Ich glaube zu lesen:
1) es wird der Batteriestand ausgelesen (% und Timestamp des Wertes) [$rc]
2a) Wenn 100% dann <=90% Wert
2b) Sonst wird <=6% wert genommen
3) Batteriestand aus 2) wird gelesen (% und Timestamp des Wertes) [$rc_last]
4) If-Schleife: wenn <5% oder ==100% und Timestamp(6/90)>Timestamp(jetzt) jetzt dann "Nachricht senden"
Liege ich falsch, das dann nie gesendet wird, da Timestamp(6/90)>Timestamp(jetzt) nie erfüllt wird? Die Vergangenheit ist immer kleiner als jetzt...
Und: muss in der Zeile nicht die "$rc_last" genommen werden(der Zeitpunkt, als es 90% oder 6% war)?
Gruss Seb
kannst Du Dein Script ein wenig erklären?
Ich habe es installiert, aber bei mir scheint es nicht zu funktionieren.
Ich glaube zu lesen:
1) es wird der Batteriestand ausgelesen (% und Timestamp des Wertes) [$rc]
2a) Wenn 100% dann <=90% Wert
2b) Sonst wird <=6% wert genommen
3) Batteriestand aus 2) wird gelesen (% und Timestamp des Wertes) [$rc_last]
4) If-Schleife: wenn <5% oder ==100% und Timestamp(6/90)>Timestamp(jetzt) jetzt dann "Nachricht senden"
Liege ich falsch, das dann nie gesendet wird, da Timestamp(6/90)>Timestamp(jetzt) nie erfüllt wird? Die Vergangenheit ist immer kleiner als jetzt...
Und: muss in der Zeile
Code: Alles auswählen
$Meldungen["Batterie_Ladung_Time_Last_Loaded"] = $rc["results"][0]["series"][0]["values"][0][0];
Gruss Seb