Hallo ihr Lieben,
nach längerer Abwesenheit und mehreren angefangenen Projekten, die mangels Zeit (und manchmal auch Interesse), häufig im nichts geendet sind, möchte ich euch mein neues Projekt vorstellen, das nicht zwangsläufig etwas mit dem Raspberry Pi zu tun hat und mich hoffentlich länger beschäftigt als alle bisherigen.
Es trägt den Namen acrux.io und abstrahiert einen kleinen Teil der Funktionen meines ersten Projektes (Kurze Vorstellung: Heimautomatisierung, 433 MHz Steckdosen, Relais).
Die Grundidee ist dabei ist, eine Plattform anzubieten, die unabhängig vom Raspberry Pi erreichbar ist und von unterschiedlichen Quellen mit Daten befüllt werden kann. Mögliche Messquellen können neben dem Pi auch Arduinos, ESP8266-Module, Banana Pis, Datenlogger von Solaranlagen... etc. sein.
Die Daten können dabei alles mögliche sein. Beispielsweise:
- Messwerte von 1-Wire-/I2C-Sensoren
- Systemdaten (freier/beleger Arbeitsspeicher, CPU Spannung,...)
- Statusinformationen von eigenen Skripten
- Zähler- und Ertragsdaten
Die Liste ist prinzipiell nur durch die Fantasie begrenzt. Die Messwerte müssen nur per REST an die Schnittstelle übermittelt werden, anschließend werden die Daten automatisch weiterverarbeitet, archiviert und verdichtet.
Die bisherigen Funktionen sind recht überschaubar:
- Verwaltung von Datenpunkten
- Darstellung von Live-Werten (Stichwort Websockets)
- Archivierung und Visualisierung von Messwerten
- Vergleiche unterschiedlicher Datenpunkte
- Benachrichtigung bei Unter-/Überschreitung festgelegter Grenzwerte (Push, Mail, SMS)
- Verdichtung von Messwerten
Besonderheiten
- Messwerte und die Visualisierung werden bei Erhalt neuer Messwerte automatisch per Websockets aktuell gehalten
- Die Messwerte werden verdichtet, so dass auch die Betrachtung von langen Zeiträumen (mehrere Monate) kein Problem darstellen
Eckdaten zum Aufbau
- Die Dienste sind als Microservices organisiert und tauschen sich über einen Message Broker aus
- Die Messwerte werden mit Hilfe von InfluxDB archiviert, Konfigurationen werden in einer MongoDB gesichert
- Ein Teil des Projektes ist auf Heroku deployed
Der aktuelle Stand:
Im Moment fehlen an vielen Stellen noch (sinnvolle) Fehlermeldungen. Für einige Funktionen (bspw. Benachrichtigung) fehlt zudem eine grafische Oberfläche zur Konfiguration. Es fehlen auch Statusinformationen der einzelnen Module aus denen mein Projekt besteht, zudem gibt es noch keine wirkliche Benutzer-/Rechteverwaltung.
Trotzdem läuft das meiste stabil und alle bisherigen Aussetzer waren durch meinen Hoster verursacht. :thumbs1:
Meine Konfiguration ist aber auch nicht wirklich weltbewegend: 14 Messpunkte, die teils alle 10 Sekunden aktualisiert werden, teils auch nur alle 5 Minuten.
Wie ich das Ganze bisher für mich nutze
Ich benutze mein Projekt selbst, größtenteils nur um die aktuellen Live-Werte einzusehen, ich habe allerdings auch einige Alarme konfiguriert, die mir das Leben einwenig angenehmer machen:
Ich bekomme Benachrichtigungen, falls die Aufnahme der Überwachungskamera abbricht und bekomme Mails falls die Luftfeuchtigkeit im Keller zu hoch ist (was für mich meist bedeutet, dass der Luftentfeuchter geleert werden muss :@).
Außerdem ist es praktisch eine generische Lösung für solche Spielereien zu haben. Wenn man neue schöne Sensoren findet, reicht es schnell ein Skript zum Erfassen der Daten zu schreiben und muss sie nur noch an die REST-Schnittstelle übermitteln. Den Rest kann man dann bequem in der Web-GUI konfigurieren. :thumbs1:
Ich freue mich auf euer Feedback und Ideen!