beelogger

Debug-Ausgabe/Arbeitsschalter

Funktionsweise des beelogger-Universal-Sketch:

  • Nach einem Reset werden grundsätzliche Parameter, wie z.B. die Batteriespannung, der DS3231 und aktuelle Gewichte abgefragt, Setup()
  • Danach geht das System in den zyklischen Ablauf:  Messen und Senden, Loop().
  • Der ATmega schaltet die Spannung für die Sensoren usw. ein, führt die Messungen durch und versendet entsprechend der Konfiguration die Daten.
  • Er programmiert den DS3231 mit einer Alarmzeit, schaltet das System ab und geht in den Lowpower-Mode.
    Dabei ist der Interrupt 0 aktiviert (ATmega328 Pin D2).
    Systeme mit Regenmesser haben zusätzlich den Interrupt 1 (ATmega328 Pin D3) aktiv.

  • Mit einem Alarm betätigt der DS3231 über den SQW-Ausgang den Interrupt Eingang des ATmega.
    Der ATmega wird dadurch in den Normalbetrieb versetzt.

  • Die Loop() wiederholt sich immer weiter.

Weitere Informationen:

Der Programmcode der Multi-Sketche enthält zwei Funktionen, die speziell für den Akku- bzw. Solarbetrieb entwickelt wurden:

Um den Akku zu schonen und ihm somit eine lange Lebensdauer zu ermöglichen, kann über die Variable ‘VMinimum’ die Spannung eingestellt werden, bei deren Unterschreitung keine Messung und auch kein Versand von Daten erfolgt. ‘VMinimum’ dient dazu den korrekten Betrieb des Systems sicherzustellen und Tiefentladung der Akkus zu vermeiden.
Damit der beelogger auch während einer längeren Zeitspanne ohne Aufladung (beispielsweise im Winter mit zugeschneiten Solarzellen) Sensordaten ermittelt und versendet werden, kann über die Variable ‘VAlternativ’ die Spannung eingestellt werden, bei deren Unterschreiten der Mess- und Sendezyklus verlängert wird. Die Länge dieses Zyklus wird über ‘AlternativIntervallMinuten’ eingestellt. Vorgabe ist 120 Minuten.

Bei einer Spannung die höher ist als VAlternativ, werden die Messwerte wie in den Intervallen (im Sketch oder bei aktiver Fernsteuerung über den Webserver) konfiguriert abgefragt und versendet. Ab einer Spannung von VAlternativ und geringer, werden Messungen und Versand der Daten nur noch alle 2 Stunden (120min) durchgeführt. Dieser Wert ist nicht über den Server konfigurierbar.
Bei einer Spannung die kleiner oder gleich VMinimum ist, werden weder Messungen vorgenommen, noch Daten versendet. Sobald der Akku durch die Solarzelle aufgeladen ist und die Akkuspannung die eingestellten Werte erreicht bzw. überschreitet, nimmt der beelogger seinen Betrieb wieder auf.

Beim ersten Start bzw. nach Reset wird eine Datenübertragung durchgeführt und die Systemzeit sowie Mess- und Sendezyklus vom Server abgefragt.
Die Uhrzeit für den DS3231 holt sich das System mit der Quittung auf die Aussendung der Daten vom Server.
So ist die Uhrzeit immer aktuell, selbst wenn der DS3231 Abweichungen hat.
Darüber erfolgt auch ggf. eine Sommer-/Winter-Zeitumstellung.

Debug-Ausgabe:

Die hier gezeigten Ausgaben wurden beim Neustart eines beelogger-SMD (mit BME280, DS18B20 und HX711 mit Waage) erzeugt:
Dazu muss in der beelogger-config.h Debug aktiviert sein; dies soll beim beelogger-SMD nur im Testbetrieb.

LTE_M_211224
Bat. [V] 4.04
Sol. [V] 0.46

EE-in use: 4032
96
W 1 [kg] 6.42

Loop
Bat. [V] 3.90
Sol. [V] 0.45

DS18B20
[C]: 25.00
BME280
[hPa]: 1020.43
[C]: 24.67
[%RH]: 38.19

W 1 [kg] 6.41

2000/01/01_00:00:07,25.0,24.6,,38.2,,6.41, 3.90,0.45,0.00,1020.4,,23.4

LTEon
internet.eplus.de
community.beelogger.de
GET /_Dein_Account_Name/beelogger1/beelogger_log.php?
2000/01/01_00:00:07,25.0,24.6,,38.2,,6.41, 3.90,0.45,0.00,1020.4,,23.4
Q:1640870424T20A
cls:ok
send 1

wakeup 14:20
Nr:0 nextsend: 15h send-cyc: 1h Interval: 20min t-on: 39s sw: 0 report:1 snd_dly:2

Hier die Erläuterung zu den Ausgaben:

 Sketchablauf: Debugausgabe im ‘Monitor’ der Arduino-IDE: Erläuterung:
Beginn: Setup() LTE_M_211224 Typ und Versionskennung des Sketch.
Diese wird beim Senden von Daten mit zum Server übertragen.
  Bat. [V] 4.04
Sol. [V] 0.46
Messwerte von Akku- und Solarzellenspannung;
Hinweis: beide Werte können je nach Systemzustand anders sein.
  EE-in use: 4032
96
EE-Prom: Vom Sketch genutzter Speicherbereich, hier 4032 von 4096Byte;
96 Datensätze können zwischengespeichert werden.
Hinweis: beide Werte können je nach Systemkonfiguration anders sein.
  W 1 [kg] 6.42 Waage Nummer 1 initialisiert; Gewicht gemessen 6,42 kg
Ende Setup()    
    Nachstehender  Ablauf/Ausgabe erfolgt zyklisch vom System im Abstand des konfigurierten Messzyklus:
Beginn Loop() Loop System “Setup”-Routine abgeschlossen, “Loop” gestartet
  Bat. [V] 3.90
Sol. [V] 0.45
Messwerte von Akku- und Solarzellenspannung;
Hinweis: beide Werte können je nach Systemzustand anders sein.
  DS18B20
[C]: 25.00
BME280
[hPa]: 1020.43
[C]: 24.67
[%RH]: 38.19
Messwerte der Sensoren DS18B20 und BME 280
  W 1 [kg] 6.41 Waage Nummer 1: Gewicht gemessen 6,41 kg
  2000/01/01_00:00:07,25.0,24.6,,38.2,,6.41, 3.90,0.45,0.00,1020.4,,23.4 Datensatz mit den Messwerten erzeugt und im EE-Prom abgespeichert.
Das Datum kann beim ersten Start des Systems bzw. des DS3231 nicht aktuell sein.
Nur wenn Daten zu senden sind:    
Beginn Sendevorgang: LTEon Hinweis: nachstehende Ausgaben können bei WLAN/GSM leicht abweichen.
LTE-Modul eingeschaltet
  internet.eplus.de LTE- Modul erfolgreich initialisiert.
Verbindungsaufbau zum Provider wird gestartet.
  community.beelogger.de Verbindungsaufbau zum Provider erfolgreich.
Verbindung zum Server wird hergestellt.
  GET /_Dein_Account_Name/beelogger1/beelogger_log.php? Verbindung zum Server erfolgreich.
Datenübertragung zu “beelogger1” wird durchgeführt.
  2000/01/01_00:00:07,25.0,24.6,,38.2,,6.41, 3.90,0.45,0.00,1020.4,,23.4 die zu übertragenen Daten werden angezeigt
  http Daten an SIM7600E übertragen
(nicht in allen Sketchversionen enthalten)
  Q: 1640870424T20A Datenübertragung erfolgreich, Quittung vom Server erhalten.
Ende Sendevorgang

cls:ok
send 1

oder

error

Serververbindung erfolgreich abgebaut, ein Datensatz übertragen

Erfolgt die Ausgabe “error” so konnten die Daten nicht übertragen werden.
Ursache kann sein:

  • Fehler in der Sketch-Konfiguration: Provider, Serverdaten
  • Falsches beelogger_Log-Passwort in der Sketch Konfiguration
  • Anzahl konfigurierte Waagen passt nicht zur Serveradresse (z.B.: 4 = Quad1)
  • schlechter Signalpegel oder Störung bei der Übertragung
  • Netz-/Serverausfall
     
  wakeup 14:20 Sketch hat Zeit vom Server übernommen und Schlafzustand vorbereitet.
Um 14:20 soll der nächste Messzyklus durchgeführt werden.
  Nr:0 nextsend: 15h send-cyc: 1h Interval: 20min t-on: 39s sw: 0 report:0 snd_dly:2
  • Nr: 0                 -> Anzahl aktuell im EE-Prom gespeicherte Datensätze
  • nextsend: 15h   -> Stunde für den nächsten planmäßigen Sendevorgang (15:00 … 15:55)
  • send-cyc: 1h     -> Daten Senden im Rhytmus von 1h
  • Interval: 20min  -> Aufwach-/Messinterval ist 20 Minuten
  • t-on: 39s           -> der letzte Aktivphase hat 39 Sekunden gedauert
  • sw:0                 -> Arbeitsschalter inaktiv
  • report:0            -> Im Feld Service wird die Aktivzeit übertragen
  • snd_dly:2          -> Warten auf Sendeintervall, Verzögerung in Anzahl der Messzyklen
  • al:0                    -> Schwarm-Alarm hat ausgelöst, zeigt Anzahl der Sendevorgänge
 System Sleep()   Sketch geht in Schlafzustand bis Aufwachen über RTC, Arbeitsschalter, Niederschlagsmesser

Quittung vom Server:

Q: gibt die Quittung des Server aus:
1640870424T20A
Die Quittung besteht aus der aktuellen Zeit, dem serverseitig eingestellten Mess- und Sendeintervall, ggf. weitere Steuerungsinformationen.
Möglich sind je nach System und Konfiguration (Grafik/Server) auch Quittungen ohne Zeitstempel und ohne Mess-/Sendeintervall

Möglich folgende Serverantworten:
 – NotIniT55D = Grafik noch nicht initialisiert
 – PWError   = Passwort für die beelogger_log.php falsch
 – typErrT55D = unpassende Daten, z.B. Datensatz Single- beelogger (1x Waage) an Duo gesendet
 – ChSumErrT55D = Checksumme in den Daten fehlerhaft
 – timestampT45D = Datum/ZeitCode in den übertragenen Daten ungültig,
       z.B. 2000/00/00 oder 2022/01/01_45:45:00
timestampT15A = Daten in zu kurzer Zeitfolge (ev. Ursache Batterie DS3231 leer)

Inhalte des Datensatz:

2000/01/01_00:00:07,25.0,24.6,,38.2,,6.41, 3.90,0.45,0.00,1020.4,,23.4
– Datum_Uhrzeit, Temperatur Beute 1, Temperatur Aussen, Luftfeuchte Beute 1 (hier ohne Wert), Luffeuchte Aussen, Lichtstärke (hier ohne Wert),
 Gewicht, Akkuspannung, Spannung Solarzelle, “Service”, Luftdruck, Regen (hier ohne Wert), Temperatur beelogger

Arbeitsschalter Blinkcode LED an D13:

  • 1x lang:  Einschalten des Arbeitsschalter erkannt
    • löst Messvorgang aus

      Wenn der Arbeitsschalter weitere 3 Sekunden aktiv ist:

    • 4x kurz:  Sendevorgang wird ausgelöst, “Messwert” Service wird auf “99” gesetzt.
       
  • 2x kurz:   System geht in Schlafzustand (wird nur bei aktiver Debugeinstellung angezeigt)
        Nur in diesem Zustand wird ein Einschalten des Arbeitsschalter erkannt.
     
  • Wenn Arbeitsschalter dauerhaft eingeschaltet ist, wird im voreingestellten Zyklus “USER_INT_TM” gemessen und gesendet.
  • Wird der Arbeitsschalter, ausgeschaltet, wird nach ca. 5 Minuten der normale Mess-/Sendezyklus aktiviert.

Hinweis: Wird ein dauerhaft aktivierter Arbeitsschalter erkannt, erfolgt eine Ausgabezeile “user!“.

Beim beelogger-Universal werden an PIN D13 5V geschaltet. Der Strom einer externen LED sollte 20mA nicht überschreiten.
Der Vorwiderstand einer LED hängt von LED-Spannung und LED-Strom ab. Rv[kOhm] = (5[V] – U_Led[V]) / I_Led[mA]
Ab beelogger-Universal Platinenversion 1.13 stehen Lötaugen neben dem NANO für den Anschluß der LED (D13, GND) zur Verfügung.