Batterie Unterspannung melden (Nur bei Solarreglern)

Hier werden Meldeblöcke, die man in die Datei "meldungen_senden.php" übernehmen kann, veröffentlicht.
Benutzeravatar
Ulrich
Administrator
Beiträge: 750
Registriert: Sa 7. Nov 2015, 10:33
Wohnort: Essen
Kontaktdaten:

Batterie Unterspannung melden (Nur bei Solarreglern)

Beitrag von Ulrich » Sa 1. Dez 2018, 13:53

Diese Stelle in die Datei "meldungen_senden.php" im Verzeichnis /var/www/html
suchen. An dieser Stelle müssen die einzelnen Textblöcke untereinander eingefügt werden.
(Falls man später noch mehr Textblöcke benutzt):

/****************************************************************************
// NACHRICHTEN BLOCK START NACHRICHTEN BLOCK START BLOCK START
// NACHRICHTEN BLOCK START NACHRICHTEN BLOCK START BLOCK START
// NACHRICHTEN BLOCK START NACHRICHTEN BLOCK START BLOCK START
****************************************************************************/
// Hier können weitere Blöcke eingefügt werden.
//
//
//
/****************************************************************************
// NACHRICHTEN BLOCK STOP NACHRICHTEN BLOCK STOP BLOCK STOP
// NACHRICHTEN BLOCK STOP NACHRICHTEN BLOCK STOP BLOCK STOP
// NACHRICHTEN BLOCK STOP NACHRICHTEN BLOCK STOP BLOCK STOP
****************************************************************************/


Dieser Textblock ist für die Signalisierung der Batterie Unterspannung.
Bitte diesen Textblock einfügen:

Code: Alles auswählen

 
   /***************************************************************************/
  //  UNTERSPANNUNG BLOCK START    UNTERSPANNUNG BLOCK START    UNTERSPANNUNG
  //  Abfrage, wie hoch ist die Batteriespannung
  //  Funktioniert nur mit Solarreglern!
  //  Die Unterspannung muss mindestens 3 Minuten lang vorhanden sein.

  $Unterspannung = "11,8";     // Hier die Spannung in Volt eintragen!
  $MaxMeldungenProTag = 1;     // Anzahl Meldungen insgesamt pro Tag. 
  $MaxMeldungenProStunde = 0;  // Wenn 0, dann pro Stunde eine Meldung bis
                               // $MaxMeldungenProTag erreicht ist.
                               // Wenn > 0 dann Anzahl pro Stunde bis
                               // $MaxMeldungenProTag erreicht ist.
  // *************************************************************************

  $MeldungSenden = false;

  if ($Device == "LR") {     // Ist es ein Laderegler?
    $rc = messageControl("Unterspannung",0);
    if (is_array($rc)) {
      $msg = $rc;
    }
    else {
      $msg = array();
    }

    $funktionen->log_schreiben("Unterspannung   Datum: ".date("d.m.Y",$msg[0])." Anzahl: ".$msg[1],"*  ",4);

    if ($rc === false) {
      // Es wurde noch keine dieser Meldung heute gesendet.
      $MeldungSenden = true;
      $msg[1] = 0;
    }
    elseif ($rc === true) {
      // Es wurde noch keine dieser Meldung heute gesendet.
      $MeldungSenden = true;
      $msg[1] = 0;
    }
    elseif (date("Ymd",$msg[0]) <> date("Ymd")) {
      // Es wurde noch keine dieser Meldung heute gesendet.
      $MeldungSenden = true;
      $msg[1] = 0;
    }
    elseif (date("Ymd",$msg[0]) == date("Ymd")) {
      if ($msg[1] < $MaxMeldungenProTag) {
        // Es sollen mehr dieser Nachrichten gesendet werden.
        if (date("G") > 5){
          // Alle weiteren Meldungen erst ab 6:00 Uhr am Tage
          if ($MaxMeldungenProStunde <> 0) {
            //  Es sollen mehrer Nachrichten pro Stunde gesendet werden
            $Zeitspanne = round((3600 / $MaxMeldungenProStunde),0);
            if (time() > $msg[0]+$Zeitspanne) {
              $MeldungSenden = true;
            }
          }
          elseif (date("i") == "00") {
            // Jede Stunde eine Meldung.
            $MeldungSenden = true;
          }
        }
      }
    }
    if ($MeldungSenden === true) {

      $Unterspannung = str_replace(",",".",$Unterspannung);
      $aktuelleDaten["Query"] = urlencode("select Spannung from Batterie where Spannung <= ".$Unterspannung." and time > ".$HeuteMitternacht."000000000  and time <= now() limit 5");

      $rc = influxdb_lesen($aktuelleDaten);
      $funktionen->log_schreiben(var_export($rc,1),"*  ",10);

      if (isset($rc["results"][0]["series"][0])) {
        // Die unterspannung wurde heute registriert.
        // Wie oft steht in [series][0][value]
        $TimestampOn = $rc["results"][0]["series"][0]["values"][0][0];

        $Nachricht = "Achtung! Batterie hat Unterspannung! ".$rc["results"][0]["series"][0]["values"][0][1]." Volt.";

        if (isset($rc["results"][0]["series"][0]["values"][3])) {
          //  Mindestens 3 mal Unterspannung gemessen.
          $funktionen->log_schreiben($Nachricht,"*  ",6);

          for ($Ui = 1; $Ui <= count($User_Key); $Ui++) {
            $rc = send_message($API_Token,$User_Key[$Ui],$Nachricht);
            if ($rc) {
              $funktionen->log_schreiben("Nachricht wurde versendet an User_Key[".$Ui."]","*  ",6);
            }
          }
          $msg = messageControl("Unterspannung",$msg[1]+1);
        }
      }
    }
  }
  else {
    $funktionen->log_schreiben("Dieses Gerät ist kein Solarregler.","*  ",3);
  }
  //  UNTERSPANNUNG BLOCK ENDE     UNTERSPANNUNG BLOCK ENDE     UNTERSPANNUNG
  /***************************************************************************/
  
In Zeile 7 $Unterspannung = 11,8; noch die richtige Spannung eintragen, ab der man Informiert werden möchte.
Und in die Zeilen 8 + 9 Die gewünschte Anzahl der Nachrichten pro Tag!

Ein PDF Dokument mit ausführlichen Informationen über den Versand von Nachrichten über den Messenger Dienst Pushover gibt es hier: Messenger Nachrichten
--------------------------------------
Ulrich [Admin]

gartenfuzi
Beiträge: 70
Registriert: Mo 15. Okt 2018, 22:46

Re: Batterie Unterspannung melden (Nur bei Solarreglern)

Beitrag von gartenfuzi » Sa 22. Dez 2018, 19:00

Heute die Batterie endlich auf 11,5V bekommen. Siehe da es kommt bei beiden Raspi die Meldung der Unterspannung. Einfach nur perfekt. Gibt es eigentlch eine Möglichkeit das diese Meldung mehrmals kommt bzw. solange kommt bis die Batterie weg ist von den 11,5V.

Benutzeravatar
Ulrich
Administrator
Beiträge: 750
Registriert: Sa 7. Nov 2015, 10:33
Wohnort: Essen
Kontaktdaten:

Re: Batterie Unterspannung melden (Nur bei Solarreglern)

Beitrag von Ulrich » So 23. Dez 2018, 13:56

Hallo Alexander,

ja, das geht, nur sollte das jeder selber ändern.

Wenn Du mir sagst, wie du es genau haben willst, kann ich das in der nächsten Zeit einmal exemplarisch machen.
Du musst halt nur genau sagen, was du dir da vorstellst. Machbar ist (fast) alles.

Wie oft, in welcher Zeit, wieviel Tage lang usw. soll eine Meldung kommen. Es muss etwas sein, was jeder "ertragen" kann.
--------------------------------------
Ulrich [Admin]

gartenfuzi
Beiträge: 70
Registriert: Mo 15. Okt 2018, 22:46

Re: Batterie Unterspannung melden (Nur bei Solarreglern)

Beitrag von gartenfuzi » Mi 26. Dez 2018, 09:10

Ich denke, wenn die Meldung alle 5min kommt sollte es reichen. Ist ja doch eine wichtige Meldung und da sollte mann sofort darauf reagieren. Sonst entleert sich die Batterie noch mehr.

Benutzeravatar
Ulrich
Administrator
Beiträge: 750
Registriert: Sa 7. Nov 2015, 10:33
Wohnort: Essen
Kontaktdaten:

Re: Batterie Unterspannung melden (Nur bei Solarreglern)

Beitrag von Ulrich » Mi 26. Dez 2018, 10:21

Ich schaue mal, was ich da machen kann. Die Lösung, die Du vorschlägst wäre eine nur für dich. Es gibt aber auch Situationen, dass man die Batterie gar nicht sofort erreichen kann. Z.B. man wohnt in Süddeutschland und die Batterie ist auf einem Schiff in der Nordsee. Da kann ich doch nicht tagelang alle 5 Minuten eine Nachricht bekommen. Da werde ich doch irre....

Es muss eine maximale Anzahl pro Tag und eine maximale Anzahl Tage geben. Wer bis dahin nicht reagiert hat ist selber schuld.
--------------------------------------
Ulrich [Admin]

gartenfuzi
Beiträge: 70
Registriert: Mo 15. Okt 2018, 22:46

Re: Batterie Unterspannung melden (Nur bei Solarreglern)

Beitrag von gartenfuzi » Mi 26. Dez 2018, 18:45

Ok da gebe ich dir auch wieder recht. Kann man da was einbauen, das da jeder selber dies ändern kann wie er will?

Benutzeravatar
Ulrich
Administrator
Beiträge: 750
Registriert: Sa 7. Nov 2015, 10:33
Wohnort: Essen
Kontaktdaten:

Re: Batterie Unterspannung melden (Nur bei Solarreglern)

Beitrag von Ulrich » Do 3. Jan 2019, 16:19

Der Codeblock wurde jetzt geändert und enthält auich die Möglichkeit mehrere Nachrichten pro Tag zu versenden.
Probiert es einmal aus...

Code: Alles auswählen

  /***************************************************************************/
  //  UNTERSPANNUNG BLOCK START    UNTERSPANNUNG BLOCK START    UNTERSPANNUNG
  //  Abfrage, wie hoch ist die Batteriespannung
  //  Funktioniert nur mit Solarreglern!
  //  Die Unterspannung muss mindestens 3 Minuten lang vorhanden sein.

  $Unterspannung = "11,8";  // Hier die Spannung in Volt eintragen!
  $MaxMeldungenProTag = 1;  // Anzahl Meldungen insgesamt pro Tag.
  $MaxMeldungenProStunde = 0;  // Wenn 0, dann pro Stunde eine Meldung bis
                               // $MaxMeldungenProTag erreicht ist.
                               // Wenn > 0 dann Anzahl pro Stunde bis
                               // $MaxMeldungenProTag erreicht ist.
  // *************************************************************************

  $MeldungSenden = false;

  if ($Regler < 5) {
    $msg = messageControl("Unterspannung",0);

    $funktionen->log_schreiben("Unterspannung   Datum: ".date("d.m.Y",$msg[0])." Anzahl: ".$msg[1],"*  ",9);

    if ($msg === false or date("Ymd",$msg[0]) <> date("Ymd")) {
      // Es wurde noch keine dieser meldung heute gesendet.
      $MeldungSenden = true;
      $msg[1] = 0;
    }
    elseif (date("Ymd",$msg[0]) == date("Ymd")) {
      if ($msg[1] < $MaxMeldungenProTag) {
        // Es sollen mehr dieser Nachrichten gesendet werden.
        if (date("G") > 5){
          // Alle weiteren Meldungen erst ab 6:00 Uhr am Tage
          if ($MaxMeldungenProStunde <> 0) {
            //  Es sollen mehrer Nachrichten pro Stunde gesendet werden
            $Zeitspanne = round((3600 / $MaxMeldungenProStunde),0);
            if (time() > $msg[0]+$Zeitspanne) {
              $MeldungSenden = true;
            }
          }
          elseif (date("i") == "00") {
            // Jede Stunde eine Meldung.
            $MeldungSenden = true;
          }
        }
      }
    }
    if ($MeldungSenden === true) {

      $Unterspannung = str_replace(",",".",$Unterspannung);
      $aktuelleDaten["Query"] = urlencode("select Spannung from Batterie where Spannung <= ".$Unterspannung." and time > now() - 1h  and time <= now() limit 5");

      $rc = influxdb_lesen($aktuelleDaten);
      $funktionen->log_schreiben(var_export($rc,1),"*  ",10);

      if (isset($rc["results"][0]["series"][0])) {
        // Die unterspannung wurde heute registriert.
        // Wie oft steht in [series][0][value]
        $TimestampOn = $rc["results"][0]["series"][0]["values"][0][0];

        $Nachricht = "Achtung! Batterie hat Unterspannung! ".$rc["results"][0]["series"][0]["values"][0][1]." Volt.";

        if (isset($rc["results"][0]["series"][0]["values"][3])) {
          //  Mindestens 3 mal Unterspannung gemessen.
          $funktionen->log_schreiben($Nachricht,"*  ",6);

          for ($Ui = 1; $Ui <= count($User_Key); $Ui++) {
            $rc = send_message($API_Token,$User_Key[$Ui],$Nachricht);
            if ($rc) {
              $funktionen->log_schreiben("Nachricht wurde versendet an User_Key[".$Ui."]","*  ",6);
            }
          }
          $msg = messageControl("Unterspannung",$msg[1]+1);
        }
      }
    }
  }
  else {
    $funktionen->log_schreiben("Dieses Gerät ist kein Solarregler.","*  ",3);
  }
  //  UNTERSPANNUNG BLOCK ENDE     UNTERSPANNUNG BLOCK ENDE     UNTERSPANNUNG
  /***************************************************************************/
  
--------------------------------------
Ulrich [Admin]

Antworten