Mobile WebApp für die Temperaturmessung am Raspberry Pi

Veröffenticht am 22.12.2015    von     in der Kategorie Temperatur WebApp     bisher 21 Reaktionen


mobile Webanwendung zur TemperaturmessungMit folgenden Beiträgen, zusammengefasst in der Kategorie “Temperatur WebApp” möchte ich dir den Aufbau einer mobilen WebApp in Verbindung mit einem Python Programm zur Temperaturmessung zeigen. Diese Beitragsreihe setzt auf meinen letzten Beitrag “Ansteuerung von 3 LEDs am Raspberry Pi mit Python” auf.


Für die Beitragsreihe habe ich folgendes Video mit ca. 57 Minuten erstellt. In diesem erkläre ich das Zusammenspiel und die Funktionen der beiden Programme.

 

 

Voraussetzung

Neben der notwendigen Grundausstattung an eingerichteter Hardware, eventuell ist hierzu mein Beitrag “Ersteinrichtung des Raspberry Pi” für dich hilfreich, sollte auf deinem Raspberry Pi ein Webserver, PHP, SQLite 3 installiert sein. In meinem Beitrag “Webserver, PHP, SQL Datenbank und FTP Zugang einrichten” findest du die notwendigen Schritte hierzu. Zudem solltest du den Tornado Websocket und den Temperatursensor installiert haben. Siehe hierzu meine Beiträge “Web zu UART Terminalprogramm auf dem Raspberry Pi” und “Temperatur-Sensor DS1820 am Raspberry Pi mit Python”.

 

Aufbau der Beitragsreihe

Folgende Aufstellung gibt dir einen Überblick über die schon veröffentlichten und geplanten Beiträge für diese Beitragsreihe.

HTML Grundgerüst mit jQuery für mobile Web Anwendung

Die Viewport Angabe, unerlässlich für die mobile WebApp

SQLite 3 Datenbank mit Python erstellen und auslesen

SQLite 3 Datenbank mit PHP auslesen

 

Den gesamten Quellcode der beiden bzw. drei Dateien kannst du als zip-Archiv über diesen Link downloaden. Als Erweiterung der älteren Download-Datei kannst du über diesen Link die Dateien inkl. der PHP Datei (siehe Kommentare) downloaden.

 

 

Share on Facebook0Share on Google+0Tweet about this on Twitter0Pin on Pinterest0Share on LinkedIn0



Servus, ich bin Wolfgang.

Blogger – Maker – web & mobile Developer – Dobermann Besitzer.

Mit meinem über die Jahre gesammelten Wissen als Webworker möchte ich dir Hilfestellungen und Anregungen zur Nutzung der sich aus dem digital Lifestyle ergebenden Möglichkeiten und Notwendigkeiten geben.

Einen aktuellen Schwerpunkt auf meinem Blog bildet das Thema IoT im Zusammenspiel mit dem Raspberry Pi.


Hinterlasse einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Notwendige Felder sind mit * markiert.

21 Reaktionen (17 Kommentare)

  • Benjamin Uffel schrieb am 23. September 2016:

    Hallo, ich reihe mich dann hier auch nochmal mit ein.
    Zu aller erst, ich finde deine Tutorials echt Spitze, weiter so!!!

    Ich habe dann auch noch mal eine Frage, ich möchte mit deiner Thermometer Steuerung einen Kühlschrank ansteuern, da nach einem Stromausfall oder Reboot ja der Mess script geschlossen ist benötige ich eine Möglichkeit, wie er beim starten mit geladen wird, so das alles automatisch funktioniert.
    Bis jetzt muss ich deinen script immer mit sudo idle /var/www/html/messprogramm.py starten, das geht doch bestimmt auch von alleine oder? Die nächste Sache ist, es muss auch ohne Benutzeroberfläche laufen, also im hintergrund

    Vorab schon mal vielen Dank
    Gruß
    Benni

    • Wolfgang Raab schrieb am 23. September 2016:

      Hallo Benni,
      vielen Dank für deinen Kommentar.

      Da hast du dir ein tolles Projekt ausgesucht. 🙂 Die erste Frage habe ich gleich einmal als Anstoß für einen neuen Beitrag genutzt… die Einrichtung des Autostarts findest du hier: http://webnist.de/autostart-eines-python-programm-auf-dem-raspberry-pi/.
      Damit das Programm ohne Benutzeroberfläche die Messdaten aufzeichnet bzw. überwacht und ggf. eine Meldung absendet, muss das Programm entsprechen angepasst werden. So könntest du ja die Aufnahmefunktion mit einem time.sleep in einen eigenen Thread unterbringen und trotzdem über den Websocket darauf zugreifen und evtl. die Speicherzeit einstellen.
      Viele Grüße
      Wolfgang

      • Benjamin Uffel schrieb am 24. September 2016:

        Hey Wolfgang,
        ich hoffe du nimmst es mir nicht all zu übel, aber ich bin erst seid kurzer Zeit auf den Raspberry gekommen. Ich habe 3 Raspberry´s, einen für meine Solaranzeige in meinem Schräbergarten, um die Ertragsdaten und Werte ins Internet zu bekommen (Solaranzeige.de), einen um meinen 3D Drucker zu betreiben (Octopi) und einen für meine Haussteuerung (CCU IO, IO Broker) um nicht immer auf meine Homematic Zentrale zuzugreifen.

        Das “Kühlschrank” Thermostat werde ich dann auch versuchen in meine Haussteuerung einzubinden.

        nun zur eigentlichen Frage:
        Wie stelle ich denn das an, das ich den Code so anpasse, das es im Hintergrund komplett läuft? Ich werde zwar eh das startx benutzen, weil ich einen kleinen Barcode-Scanner und ein Touchscreen mit an der Kühlschrankfront anbringen werde und da auch dann eine grafische Oberfläche erstellen möchte, in der ich auswählen kann, was ich entnehme und was aufgefüllt wird, also eine art “Intelligenter Kühlschrank”

        Wie würdest du so etwas an meiner Stelle lösen bzw einrichten?

        ….. und nur mal so am Rande, ich finde deine Anleitungen echt klasse und auch “Anfänger” tauglich, du erklärst das echt spitze, mach weiter so 😉

        Gruß
        Benni

        • Wolfgang Raab schrieb am 24. September 2016:

          Hallo Benni,
          da hast Du Dir ja eine tolle Flotte aufgebaut. Wenn ich Deinen Kommentar jetzt richtig deute, liegt die Problematik weniger an der Erfahrung mit dem Raspberry Pi als mit der Programmierung … ?
          Die Frage nach einem Lösungsweg ist nicht so einfach zu beantworten. Aber vielleicht kommen wir ja gemeinsam einer Antwort näher. 🙂
          Folgende Punkte sind mir allerdings noch unklar. Welche Aufgabe (Überwachung, Anzeige, Speicherung usw.) soll mit dem “Kühlschrank” Thermostat erfüllt werden? Wie soll auf die Daten zugegriffen werden, also welche bestehende Oberfläche usw.?
          Viele Grüße
          Wolfgang

          • Benjamin Uffel schrieb am 25. September 2016:

            Hallo Wolfgang, naja Flotte ist gut^^ ich vergleiche den Raspberry mittlerweile schon fast wie Silikon… Überall, wo man nichts großes zu überbrücken hat, kann man ihn einfach einsetzen, es gibt ja fast für alles nen Programm oder gleich angefertigte Images, mann kann ihn sozusagen überall “hineinschmieren” ^^ Mich wundert es ja schon, das noch kein Raspberry im All oder auf dem Mond gelandet ist^^ Mehr Leistung als bei Apollo sollte ja vorhanden sein XD

            Nun zu den Fragen, also du hast das schon richtig erfasst, ich hab so vom Technischen recht gutes Verständnis, aber programmieren ist bei mir Neuland, bastel zwar gerne mit Arduino, Teensy und co, früher auch Bascom AVR also Atmega und so, aber so richtig programmieren, is bei mir noch nicht so der Hit^^

            Also, sinn des Ganzen soll sein, da mein Kühlschrank sehr oft läuft und das eingebaute Thermostat defekt war/ist, habe ich ein Digitales dran geklemmt, was dann den Kompressor steuert. Das funktioniert soweit ganz gut, aber ist nicht die Eleganteste Lösung…. Wenn schon, dann mal so richtig^^ also die Steuerung soll den Kompressor einschalten, die Lüfter um den Wärmetauscher zu Kühlen dann natürlich auch. Ich habe hinten Lüfter an meinem Kühlschrank gebaut um die Kühlleistung zu vergrößern und die Laufzeit des Kompressors zu verkürzen, klappt auch ganz beachtlich !!! Der Kühlschrank ist ein Liebherr (4 Jahre alt), der hat oben ein Gefrierteil und unten den Kühlteil. Für die Steuerung wollte ich einfach die Webseite auf einem Display vor dem Kühlschrank laufen lassen, das hat den Vorteil, das man auch über die Homematic theoretisch die Temperaturen überwachen und falls gewollt anpassen kann. Desweiteren soll da dann noch ein kleiner Barcode Scanner mit in das Gehäuse vom Touchscreen vor dem Kühlschrank, das man neue Produkte gleich anlernen kann, anhand des Strichcodes, da hab ich auch schon was zurecht gebastelt, das legt ne kleine Datenbank an, mit was noch im Kühlschrank ist und wenn was raus genommen wird, zieht es das vom Bestand ab. Entweder man hält dann den herausgenommenen Artikel kurz unter den Scanner oder wählt am Touchscreen zb einen Jogurt oder ne Cola aus und der zieht das dann ab. Wenn neue Artikel in den Kühlschrank kommen, die noch nicht in der Datenbank sind, kann man den Artikel anlegen. Die Datenbank liegt dann jederzeit einsichtig auf dem FTP Server, das man von unterwegs weiß, wenn man einkaufen ist, das man zb. noch Cola oder Jogurt braucht. Desweiteren hat man gleich ne gute Übersicht fürs Haushaltsbuch 🙂 Hab nen Mitbewohner und wir Teilen uns den Kühlschrank, da ist es dann auch Praktisch zu wissen, wer wieviel aus dem Kühlschrank genommen hat.

            ich hoffe ich konnte es dir verständlich machen, was ich vorhabe und wozu das ganze überhaupt dienen soll.

            Gruß
            Benni

          • Wolfgang Raab schrieb am 25. September 2016:

            Hallo Benni,
            der Vergleich mit “Silikon” gefällt mir. Bei dem Ansatz mit Barcode Scanner musste ich schmunzeln, da ich kaum Produkte mit Barcode in meinem Kühlschrank aufbewahre wäre dieser unpraktisch. Da würde sich eine Lösung mit Kamera schon besser eignen… 😀
            Aber nun mal zu deinem Thermostat. Warum läßt du die Steuerung nicht einen Arduino machen? Dieser könnte dann auf Anfrage vom RasPi (UART, Bluetooth oder WLAN) den aktuellen Temperaturwert übergeben. Andere Möglichkeit wäre natürlich, ein Programm auf dem RasPi zu schreiben, welches die Temperatur erfasst und ggf. den Kompressor und Lüfter steuert. Da du keine Auswertung bzw. Aufzeichnung benötigst, könnte es ähnlich der hier beschriebenen Ansteuerung der 3 LED’s sein. Ob eine Einbindung in Homematic von eigenen Programmen möglich ist, kann ich dir leider nicht sagen.
            Persönlich würde ich den Arduino als Mess- und Steuereinheit verwenden und per UART/Bluetooth mit dem RasPi verbinden. Über diese Verbindung kannst du dir am Raspberry Pi die Temperatur anzeigen lassen und ggf. sogar die entsprechenden Temperaturwerte regeln.
            Viele Grüße
            Wolfgang

  • Viktor schrieb am 11. Mai 2016:

    Hallo Wolfgang,
    bei mir bleibt das messprogramm.py bei “Warte auf Verbindung mit WEB-Interface” stehen.
    Wenn ich die messung.html starte, ist der angezeigte Status der Web-Oberfläche: “Verbindung geschlossen”
    In deinem Video startest du bereits mit einer bestehenden Verbindung. Dort hin komme ich leider erst gar nicht. Habe ich vielleicht einen Schritt ausgelassen oder etwas übersehen?
    Vorab vielen Dank für deinen Support.
    VG Viktor

    • Wolfgang Raab schrieb am 11. Mai 2016:

      Hallo Viktor,
      das Messprogramm startet erst wenn die Verbindung über den Websocket erfolgt ist. Die Reihenfolge für diesen Aufbau ist,zuerst das Python-Programm auf dem Raspberry Pi starten und danach mit einem Browser im Netzwerk auf die HTML Datei zugreifen.
      Vielleicht hilft ein “Neuladen”, also Aktualisierung des Browserfenster.
      Viele Grüße
      Wolfgang

  • Tebbe schrieb am 10. März 2016:

    Vielen dank für die große hilfe ;D

    Ich wollte trotzdem nocheinmal fragen ob du mit(uns) ein Skript zustellst wie man diese Daten jetzt ihn ein Bild macht, das wäre total nice ;D

    LG Tebbe

  • Tebbe schrieb am 9. März 2016:

    HAllo ich bin es nochmal ja ich weiß das ich einwenig nerver aber irgenwie klappt es nicht richtig bei mir wenn ich auf Auswertung sehe ich erstens keine werte und zweitens wenn ich dann wieder auf start gehe steht da das mit der index.php auch fehlt???

    Danke schon mal im Vorraus

    LG TEBBE

    • Wolfgang Raab schrieb am 9. März 2016:

      Hallo,
      ich fasse die Antwort auf die letzten beiden Kommentare hier zusammen.

      Die php-Datei entspricht inhaltlich der im Video behandelten Datei. Allerdings habe ich den nicht beschriebenen Inhalt aus dieser Datei gelöscht. Daher der geringere Wert der Zeilen.

      Die fehlerhafte Verlinkung kommt daher, daß ich die php-Datei aus meinem aktuellen Aufbau entnommen habe. Dort verwende ich statt der messung.html eine index.php Datei. Zum Anpassen muss im Bereich des “Footer” der Link von index.php auf messung.html umgeschrieben werden, oder die Datei messung.html wird entsprechend umbenannt. Die Seite “Scheduler-Auswertung” ist wie im Quellcode ersichtlich nicht enthalten. Im Prinzip geht es in diesem Beispiel um die PHP-Funktion zum Auslesen der Datenbank-Datei. Und dies geschieht unter “Aufzeichnungen”. Damit dort Werte angezeigt werden, müssen diese auch über den Button “Temperatur aufzeichnen” gespeichert werden.

      Solltest Du eine automatische Speicherung der Temperatur über einen gewissen Zeitraum über das Webinterface darstellen wollen, bietet sich die Anpassung des Python Programms zur automatischen Speicherung in der SQLite3 Datenbank an. Die Auswertung der Daten kann dann mit dem PHP Code erfolgen.

      Viele Grüße
      Wolfgang

  • Tebbe schrieb am 9. März 2016:

    Hallo ich bin es wieder ;D

    Ich wolltenich nur noch einmal vergewissern ob das auch die richtge php Datei ist, weil du in dem Video 115 zeilen hat aber in der Datei sind es nur 83 also kann auch sein das ich nur einwenig doof bin ;D

    LG Tebbe

  • Tebbe schrieb am 9. März 2016:

    DANKE ich habe esgrade erst gesehn vielen Danke ;D

    LG Tebbe

  • Tebbe schrieb am 8. März 2016:

    Hallo erst mal danke
    Trotzdem habe ic eine frage wo kommt die main..css datei hin?

    danke im vorraus

    LG Tebbe

    • Wolfgang Raab schrieb am 8. März 2016:

      Hallo Tebbe,
      vielen Dank für den Kommentar.
      Die main.css Datei liegt im Verzeichnis der .html Datei. In diesem Beispiel im Ordner des Webserver “/var/www/” auf dem Raspberry Pi. Eingebunden wird die Datei mit dem Befehl in der messung.html.

      Viele Grüße
      Wolfgang

      • Tebbe schrieb am 8. März 2016:

        Hallo ich bin es wieder ;D
        Ich habe noch eine frage entwerde finde ich die PHP datei nicht oder sie ist nicht dabei?

        Und nochmal danke für die schnelle antwort

        LG Tebbe

        • Wolfgang Raab schrieb am 8. März 2016:

          Hallo :-),
          die Datei auswertung.php ist nicht dabei. Allerdings habe ich sie nun mit in ein neues Archiv gepackt und oben mit den anderen Dateien verlinkt. Die Datei gehört auch in den Hauptpfad gelegt.

          VG Wolfgang