Webdarstellung von Sensordaten über Raspberry pi - Realtime?

  • Hallo zusammen,

    ein Thema was mich seit langem schon beschäftigt und über welches Ich noch keine klare Antwort gefunden habe ist die Sensordatenerfassung.

    Mich interessiert hierbei gezielt, wie sich denn eine Art "Echtzeitdatenerfassung" erzielen lässt.

    Folgender Hintergrund: Angenommen Ich habe 1. oder mehrere Sensoren im Betrieb. Gehen Wir ganz einfach mal von einem Temperatursensor aus. Diesen habe Ich an einem ESP8266 Node MCU verbunden. Der ESP ist soweit auch programmiert, sodass die Sensordaten erfasst werden. Nun wäre mein Plan die Daten an meinen Raspberry Pi, der im Netzwerk läuft, zu senden. Da Ich sehr gerne eigene Weboberflächen programmiere habe Ich natürlich einen Webserver auf dem Pi laufen und ein entsprechendes Frontend gebastelt, sowie ein PHP Script im Backend, welches die Daten aus der Datenbank holt. Für das ganze habe Ich mir nun folgende Hierarchie ausgedacht: Sensordaten -> ESP8266 -> Daten in Datenbank -> Webserver -> Daten aus Datenbank -> Dartstellung über Website.

    Nun hole Ich die Daten aus der Datenbank mittels eines AJAX der das PHP script feuert, welches mir den neuesten Datenbank eintrag liefert.

    Um eine "Echtzeitabrage" zu bekommen müsste Ich hier ja alle "Millisekunden" wieder einen Ajax befehl feuern.

    Daher würde mich hier interessieren, ob es denn möglich ist eine nahezu "Realtime Connection" hinzubekommen, ohne alle paar Millisekunden ein script abfeuern zu lassen, da ja der ESP ebenfalls im selben Intervall in die Datenbank schreibt.

    Ich hatte schonmal etwas über Socket.io gelesen? Oder über eine ähnliche technologie, bei der eine Verbindung zwischen den beiden Komponenten hergestellt wird und sobald eine Änderung in der Datenbank festgestellt wird kann das Frontend geupdated werden.

    Ich hoffe auf diesem weg, dass Licht ins Dunkle gebracht werden kann und hoffe, dass mein vorhaben eingermaßen verständlich geschildert wurde. Wenn nicht bitte einfach nachfragen.



    Die Reihenfolge der Datenabfrage könnte auf der ein oder anderen Seite vielleicht etwas umständlich sein, daher gerne Verbesserungsvorschläge geben, wenn gewollt ;)

  • Hallo,


    ja so in der Art habe ich es auch eine Zeit lang gemacht der ESP sendete an an eine PHP Datei und schrieb die werte in deine Tabelle.

    Dann zog ich die Werte mit einer weiteren php Datei raus und ließ mir die Werte anzeigen.


    Inzwischen nutze ich mehr openhab / InfluxDB und Grafana.


    Lars

  • HTTP ist eine Pull-Methode, man kann, mit verschiedenen Trick, dieses Pull für bestimmte Bereiche der Seite in einen sehr kurzen Abstand durchführen lasse, doch das ist eben eher eine Art Vergewaltigung des HTTP. Die Nachteile hast du ja selber schon gesehen.


    Du kannst natürlich innerhalb der HTTP-Verbindung eine App vom Server holen, die genau auf diese neuen Daten (Push) reagiert, doch dass ist dann eben kein HTTP mehr.


    Früher™ wurde dafür zum Beispiel Flash genutzt.

    Heutzutage wird da irgend eine WEBM-App, oder ähnliches verwendet.

    Selber denken,
    wie kann man nur?

  • Besten Dank für eure Antworten. Grafana sagte mir schon ein bisschen was. Gerade habe Ich mir einmal InfluxDB angesehen. Das sieht auf den ersten Blick ziemlich vielversprechend aus. Wie ich bereits erwähnt habe, bin Ich ja auf der Suche nach irgendetwas "Real Time Data" mäßigem, um die Sensordaten auszuwerten. Und Genau hier möchte Ich eben die erwähnten unzähligen Ajax Calls vermeiden, sofern es dafür eine gute Lösung gibt. Eben welche Technologie dafür gedacht ist. Für z.B Raspberry PI Smart Home Projekte muss die Kommunikation mit den Sensoren und deren Auswertungen doch eigentlich auch so funktioniert oder nicht?

    Ist das denn mit InfluxDB möglich? Weiter ist natürlich die Frage inwieweit diese "Echtzeitdatenerfassung" möglich ist. Also Sensor -> Datenbank oder auch Datenbank -> Sensor?. Also einerseits das Einsparen des Sensor skripts, welches Daten in die DB schreibt und das PHP script, dass die Daten aus der Datenbank holt. (So viele Fragen?! :D)

    Leider bin Ich was den IoT Bereich mit Sensordatenerfassung nicht so detailiert bewandert oder erst am Anfang.

    Bei Socket.io habe Ich schon oft gelesen, dass es für Realtime-Chat Anwendungen verwendet werden kann und dachte man kann das vielleicht zweckentfremden.

    Natürlich soll der Thread keine Anleitung für irgendwelche Software geben, sofern sich bestimmte Vorschläge ergeben, werde Ich mir diese natürlich selbst anschauen. Dennoch würden mich einfach die "Best Practices" interessieren, also was funktioniert gut, was funktioniert eher weniger gut oder welche Technologie eignet sich dafür.


    Vielen Dank!

    Sebastian

  • Was du suchst heisst "WebSocket". Damit kannst du eine stehende Verbindung zwischen Server und Browser aufbauen.


    Und ja, socket.io ist eine Library fuer WebSockets, anscheinend sogar eine recht komfortable.

  • Ich dachte mir doch, dass das wohl ein richtiger Ansatz sein könnte. Besten Dank für die Bestätigung, dann befinde Ich mich nicht auf dem Holzweg ;)

    Eine (vielleicht auch komische Frage) aber: Das mein ESP dann troztdem regelmäßig in einem gewissen intervall die Sensordaten in eine Datenbank schreibt ist "normal" oder? Das lässt sich wahrscheinlich garnicht anders lösen nehme Ich an?

    In das Thema Websockets werde Ich mich einmal einlesen. Hat vielleicht jemand hier schon ein gutes Tutorial / Seite zur hand?


    Danke für die Hilfe!

    Edited once, last by Basti576 ().