Platform zum Messen und Überwachen: acrux.io

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • 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. :lol:

    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. :daumendreh2:

    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! :)

  • Hi Chris,

    Klingt super und sieht auf den ersten Blick richtig gut aus. Nichts überflüssiges, nur das nötigste. Das gefällt mir! :thumbs1:
    Aber um wirklich was konkretes dazu sagen zu können müsste ich das wohl mal selber testen. Falls du einen Tester brauchst... :)

    Planst du auch das ganze unter eine OpenSource Lizenz zu stellen und wirds davon vielleicht einmal eine Lösung zum selber hosten geben?

    Grüße,
    Joh

    DON'T PANIC!

  • Hallo,

    danke für deine Rückmeldung! :)

    Im ersten Schritt hatte ich vor, die Lösung als Service anzubieten. Kostenfrei solange sich die Server-Kosten in Grenzen halten, weil ich einfach mal Erfahrungen damit sammeln wollte, so einen Dienst anzubieten. Die jetzige Heroku Instanz sollte für 100 Nutzer locker ausreichen (± den ein oder anderen).

    Weil ich noch nicht weiß, wie gut meine Lösung skaliert, möchte ich zunächst (gegen Ende des Monats) 5-10 Nutzern einen Zugriff auf die Plattform anbieten. :) Dann kann ich besser sehen, was noch nicht ganz so rund läuft, was verbessert werden muss, oder wofür noch weitere Erklärungen/Dokumentationen erforderlich sind.

    Wenn Du Lust hast, nehm' ich Dich gern' in die Liste der "Beta" Tester ein. Ich kann nicht versprechen, dass alles glatt läuft. Es ist halt ein kleines Experiment. :)

    Zum Testen lade ich vor allem unsere Stammuser ein, weil ich weiß, dass ich dort gutes Feedback bekomme. :)

    Bis dahin muss ich noch mindestens eine funktionierende Benutzerverwaltung bauen und die gespeicherten Informationen irgendwie sinnvoll voneinander isolieren, damit die Datenbanken performant bleiben.

    Ich kann es verstehen, dass man in den heutigen Zeiten solche Lösungen lieber selbst betreiben möchte, um Herr seiner eigenen Daten zu sein. Des wegen möchte ich auch alle Dienste mindestens innerhalb der EU hosten.

    Allerdings weiß ich noch nicht, ob ich das ganze unter Open Source stellen werde. Ich kann mir vorstellen, zumindest einzelne Module davon zu veröffentlichen, weil ich selbst stark von Open Source Projekten dafür profitiere und teilweise wirklich viel Zeit spare. :)

    Gruß
    Chris

  • Hai Chris ...


    ...
    ... Kostenfrei solange sich die Server-Kosten in Grenzen halten
    ...


    na das ist imho schon mal der richtige Ansatz. Irgenwann wäre es ja möglich z.B. VIP-User einzurichten, die bereit sind für Support zu zahlen. So läuft das in der Regel im Bereich Open Source ...


    ...
    ... möchte ich auch alle Dienste mindestens innerhalb der EU hosten.
    ...


    ich will Dich da jetzt nicht desillusionieren, aber da die Schnüffler direkt an den Knotenpunkten ihre Tentakel ausstrecken, wirst Du - um sicher zu gehen - um eine Verschlüsselung nicht herum kommen. Wobei ich da auch wieder eine Opensource-Lösung verwenden würde, die ich im Zweifelsfall überprüfen könnte.


    ...
    ... weil ich selbst stark von Open Source Projekten dafür profitiere und teilweise wirklich viel Zeit spare. :)
    ...


    löblich ... das ist ja auch Sinn und Zweck der Übung ;)

    Wenn ich nicht so viele offene Baustellen hätte, würde ich da schon auch gerne mal den Tester machen.
    Aber derzeit sehe ich da mehr als schwarz.
    Klingt jedenfalls alles sehr interessant ... sollte ich noch einen freien Timeslice entdecken, melde ich mich bei Dir, wenn es Dir recht ist.
    Aber im Moment, wie gesagt, ist das leider eher unwahrscheinlich.
    Ich wünsche Dir aber viel Erfolg mit Deiner Idee ...

    cheers,
    -ds-

  • Hey ds! :)


    Hai Chris ...


    na das ist imho schon mal der richtige Ansatz. Irgenwann wäre es ja möglich z.B. VIP-User einzurichten, die bereit sind für Support zu zahlen. So läuft das in der Regel im Bereich Open Source ...

    Es geht mir erstmal nicht darum, damit irgendwie Geld zu verdienen, sondern eine Plattform anzubieten, die es Einsteigern ermöglicht, relativ schnell Erfolge in dem Bereich zu erzielen. :) Für mich ist der Nutzen daraus erstmal nur die Erfahrung mit Mehrbenutzer-Systemen und Deployment in der Cloud. :)

    Wenn die Lösung gut ankommt, kann man immer noch weiter sehen. :)


    ich will Dich da jetzt nicht desillusionieren, aber da die Schnüffler direkt an den Knotenpunkten ihre Tentakel ausstrecken, wirst Du - um sicher zu gehen - um eine Verschlüsselung nicht herum kommen. Wobei ich da auch wieder eine Opensource-Lösung verwenden würde, die ich im Zweifelsfall überprüfen könnte.

    Das ist mir klar. Das sollte auch jedem potentiellen Nutzer klar sein. Dir sollte aber auch bewusst sein, dass auch eine Verschlüsselung keine 100%ige Sicherheit bietet, solange das Zeug irgendwie vom Internet erreichbar ist und auf einem Server entschlüsselt werden muss.

    Spätestens wenn eine SMS mit einer Benachrichtigung durch irgendwelche SS7-Providernetze läuft, wars das mit der Verschlüsselung.

    Trotzdem werde ich natürlich nach und nach gängige Verschlüsselungsmechanismen implementieren, um einen gewissen Grad an Sicherheit anbieten zu können. Ehrlich gesagt, liegt mein Fokus aktuell aber nicht wirklich darauf. Ich werde mich in Zukunft aber mehr darum kümmern (müssen).

    Das kenn ich selbst, daran scheitern bisher die meisten meiner Projekte. Ich hoffe, dass ich meinen groben Zeitplan halten kann. Wenn Du Zeit und Lust hast, bist Du natürlich auch herzlich eingeladen einen Blick darauf zu werfen, aber ich weiß ja wie es ist. :daumendreh2:

    Danke für deine Rückmeldung und die Wünsche! :)

    Gruß
    Chris

  • Bitte gerne ...
    Solche Geschichten wie die, die Du da erstellt hast, finde ich halt ziemlich spannend und sinnvoll.
    Und was die "Sicherheit" betrifft - mir ist klar, dass Dir das bewusst ist ;)
    Ich wollte nur für den unbedarften Leser nochmal hervorheben, dass Hosting in der EU nicht unbedingt ein Sicherheitskriterium darstellt ( wie uns trotzdem der eine oder andere Anbieter gerne vormachen würde :fies: )

    cheers, und wie gesagt, viel Erfolg ...
    Ich bin mir sicher, dass das schon alles so läuft, wie Du es Dir vorstellst.
    -ds-

  • Klingt nicht schlecht. Also ich bin dabei :)


    ... Ich werde mich in Zukunft aber mehr darum kümmern (müssen).


    Wird das nicht immer schwieriger je fortgeschrittener das Projekt ist.

    Wie machst du das eigentlich mit der Authentifizierung? Api Keys?

    Würde das ganze eigentlich ja auch nur für irgendwelche "Spass Projekte" verwenden. Sicherheit ist bei mir in diesem Fall eher zweitrangig.

    Aber gib einfach bescheid dann befeure ich deine API mal mit ein paar Temperatur Werten (DS18B20 -> ESP). Hab das im Moment in Kombination mit arrestdb und einer sqlite Datenbank am laufen und das funktioniert richig gut. :)

    Grüße,
    Joh

    DON'T PANIC!


  • Wird das nicht immer schwieriger je fortgeschrittener das Projekt ist.

    Ja, da hast Du wahrscheinlich recht, vielleicht sollte ich ein paar Sachen jetzt schon mal implementieren. HTTPS wollte ich vielleicht noch im laufe der kommenden Woche einbinden und dann noch die Nachrichten, die über den Message Broker verschickt werden auch verschlüsseln. :)


    Wie machst du das eigentlich mit der Authentifizierung? Api Keys?

    Ja, genau. Ich hatte mir so etwas in der Art vorgestellt:

    Code
    HTTP GET auf /api/<API_KEY>/value?pointId=<ID_DES_DATENPUNKTES>&value=<MESSWERT>

    Das entspricht wahrscheinlich keiner Konvention für REST-Architekturen mit einem HTTP GET Werte zu übermitteln, aber es gibt für so ziemlich jeden HTTP Client leicht verständliche Beispiele ein GET auf eine Resource auszuführen, mit POST und PUT sieht es dann meist für Anfänger etwas komplexer aus. Es wird aber auch noch Resourcen geben, die den gängigen Konventionen entsprechen. :)

    Als Konvention wollte ich ein API-Schlüssel pro End-Gerät, damit man im Falle des Falles nicht seine ganzen Skripte anpassen muss, wenn ein Schlüssel gesperrt wird.


    Würde das ganze eigentlich ja auch nur für irgendwelche "Spass Projekte" verwenden. Sicherheit ist bei mir in diesem Fall eher zweitrangig.

    In der Anfangsphase sollte man es sicherlich auch nur für Spaß Projekte verwenden und keine wirklich sensiblen Messungen überwachen. :)


    Aber gib einfach bescheid dann befeure ich deine API mal mit ein paar Temperatur Werten (DS18B20 -> ESP). Hab das im Moment in Kombination mit arrestdb und einer sqlite Datenbank am laufen und das funktioniert richig gut. :)

    Vielen Dank, ich melde mich hier im Thread, wenn es soweit ist. :)
    Mit ArrestDB hab ich keine Erfahrungen, weil ich ewig nichts mehr mit PHP gemacht habe. Aber sieht ganz interessant aus! :)

    Gruß
    Chris

    Einmal editiert, zuletzt von Chris1705 (14. März 2015 um 10:59)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!