Moin,
meine Volkszählerdatenbank hat in 1,5 Jahren gut 30 Millionen Datensätze zusammengesammelt. Aktuell sind 44 Sensoren verbaut, Tendenz steigend. Das ganze läuft auf einem RaspberryPi 3 und einer SSD.
Die Datenbank wird dabei nicht direkt sondern über eine API einer Middleware beschrieben und abgefragt, und daran soll sich auch nichts ändern.
Ich betrachte zwei Arten, wie ich in die Datenbank schreibe. Ohne oder mit Timestamp.
Wenn man mit Timestamp in die Datenbank schreibt, dann muss dieser Timestamp natürlich synchron zur Datenbank laufen. Durch diverse Umstände (Sommer/Winterzeit, ntp Synchronisierung, usw.) denke ich allerdings, das dies nicht sichergestellt ist.
Sendet man den Timestamp also nicht mit, so ist sichergestellt, das der Timestamp mit den anderen Sensoren immer synchron läuft, denn es gibt dann nur diesen einen Timestamp.
Zu den erwarteten Schaltspiel- und Betriebsstundenzählerdaten hatte ich ja auch schon im Eingangspost geschrieben mit welchen Daten ich dort hantieren möchte.
Die Schaltspiele zählen einfach nur hoch: 1,2,3,4,5,6,7,....
Bei den "Betriebsstunden" sollen die "Betriebssekunden" aufaddiert werden. Diese können variieren, weil der Bewegungsmelder innerhalb seiner Timerlaufzeit mehrfach ausgelöst werden kann, oder das Licht auch manuell angeschaltet werden kann.
Das bedeutet, dass man aus den Schaltspielen nicht auf die Betriebsstunden schließen kann, und auch nicht aus den Betriebsstunden auf die Schaltspiele.
So habe ich also mein "Datenmodell" zusammen, welches ich letztendlich über die API der Middleware in die Datenbank schreiben will.
Nun gibt's zwei Möglichkeiten:
-
Den "Sensor" bzw. µC "24/7/365" durchlaufen zu lassen und bei jedem Event die Daten zu senden.
Da sehe ich folgende Vor- und Nachteile:
1.1. Ich brauche eine Dauerstromversorgung
1.2. Dann verbraucht das Ding immer Strom (hmm... wenn der schon durchläuft könnte man im Carport noch weitere Sensoren verbauen....auch nicht schlecht!)
1.3. Ich muss mir Gedanken machen was bei einem Stromausfall passiert
1.4. Es muss sichergestellt werden, das das Überlaufen von millis() nach ~49 Tagen kein Problem ist
1.5. Es muss sichergestellt werden, das sich das WLAN wieder automatisch einloggt, wenn es aus irgendwelchen Gründen mal unterbrochen wird (z.B. beim Update der Fritzbox) -
Bei jedem Schaltspiel den "Sensor" bzw. µC zu booten, sich im WLAN einzuloggen, die Daten senden, das Abschalten registrieren und kurz vorm brownout noch schnell die Abschaltdaten senden.
2.1. Keine extra Stromversorgung nötig
2.2. niedriger Stromverbrauch (ja gut, is nicht die Welt, ist aber ein Unterschied, ob etwas 24/7/365 läuft oder nur ~5x 5min am Tag)
Da bin ich gerade noch am evaluieren welchen Weg ich sinnvollerweise gehen möchte.
Auf jeden Fall habt ihr mir schon mal weitergeholfen. Vielen Dank dafür!
Liebe Grüße,
Chris