Hier werden Hinweise zum Ablauf und zur Debug-Ausgabe des Sketches sowie Informationen zu Fehlermeldungen in der Serverquittung gegeben.
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 mit Messen und Senden in der
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 aus dem LowPower-Mode geholt und beginnt die Loop erneut.
- 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.
Hier am Beispiel eines LTE-Systems, andere Systemes sind nahezu gleich in der Ausgabe:
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. Sketchversionen ab 04/2023 zeigen an dieser Stelle die Anzahl der im EE-Prom gespeicherten Datensätze an. 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
EE?123 |
die zu übertragenen Daten werden angezeigt
EE? deutet auf einen Lesefehler im EE-Prom hin. |
|
http | Daten an SIM7600E übertragen (nicht in allen Sketchversionen enthalten) |
|
Q: 1640870424T20A | Datenübertragung erfolgreich, Quittung vom Server erhalten, Erläuterung zur Quittung und anderen Serverantworten siehe Text unten. |
|
Ende Sendevorgang |
cls:ok oder send 0 error |
Serververbindung erfolgreich abgebaut, ein Datensatz übertragen: “send Zahl”; Zahl ist die Anzahl der übertragenen Datensätze Erfolgt die Ausgabe “error” so konnten die Daten nicht übertragen werden.
|
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 |
|
|
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
Achtung: Daten, die ein Datum aus der Vergangenheit haben, werden vom Server nicht in die Grafik übernommen.
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, Ursache: Anzahl_Sensor_Waagen passt nicht
– ErrorT55D = unpassende/fehlende Daten,
z.B. Datensatz Single- beelogger (1x Waage) an Duo gesendet, Ursache: Anzahl_Sensor_Waagen passt nicht
auch EE-Prom Fehler im beelogger
– 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:
2023/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.
- löst Messvorgang aus
- 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.