Fragen zu PHP, Python und Ajax

  • Gute Tag,


    Ich habe eine Helligkeitssensor, einen Temperatur-/Luftfeuchtigkeitssensor und einen RTC an einem Raspberry Pi 3 angeschlossen. Alles Daten können ausgelesen werden und können über einen webserver mit PHP angezeigt werden.


    Ich habe allerdings noch den Wunsch, dass ich die übermittelten Werte immer wieder aktualisieren, ohne dass sich die ganze zeit aktualisiert. Ich habe hier im Forum schon viel gelesen, über WebSockt, Tornado und Ajax. Verstehen tun ich das leider nicht ganz.

    Zudem habe ich noch eine Frage zu der Ausgabe der Werte von Python in PHP.


    Im Anhang befindet sich mein code. Und zwar erhalte ich mit dem python skript "lux" 3 Werte. Ist es irgendwie möglich, dass ich diese 3 Werte trenne und die untereinander anzeigen lasse zur Übersichtlichkeit? Genau das selbe gilt auch der Temperatur.


    Vielen Dank für eure Hilfe


    Matzlowski

  • Was bringt die statische Zeit auf der Webseite??


    Die kann man auch mit JavaScript im Browser anzeigen. Wenn es unbedint die Zeit vom Raspi sein muss, dann wenigstens direkt mit PHP auslesen und nicht noch ein Script aufrufen!


    Nicht alle Techniken auf einmal probieren. Weil die Seite schon steht, wuerde ich mal AJAX einsetzen:


    * Das Auslesen der Sensoren in ein eigenes PHP verlagern, Ausgabe als HTML-Fragment

    * Ein Muster fuer AJAX suchen und einbauen (z.B. https://blog.heimetli.ch/ajax-einfuehrung-apache-cgi-raspberry-pi.html)

    * Das HTML vom neuen PHP-Script in die Seite einbauen


    > Ist es irgendwie möglich, dass ich diese 3 Werte trenne und die untereinander anzeigen lasse zur Übersichtlichkeit?

    Im python-Script ein <br> einfuegen wo der Zeilenumbruch sein soll


  • Ist es irgendwie möglich, dass ich diese 3 Werte trenne und die untereinander anzeigen lasse zur Übersichtlichkeit?

    Im python-Script ein <br> einfuegen wo der Zeilenumbruch sein soll

    Super, das hat echt gut funktioniert! Manchmal kann die Lösung auch ganz eifnach sein :).



    Nicht alle Techniken auf einmal probieren. Weil die Seite schon steht, wuerde ich mal AJAX einsetzen:


    * Das Auslesen der Sensoren in ein eigenes PHP verlagern, Ausgabe als HTML-Fragment

    * Ein Muster fuer AJAX suchen und einbauen (z.B. https://blog.heimetli.ch/ajax-einfuehrung-apache-cgi-raspberry-pi.html)

    Danke für den Link, das hat auch sehr gut funktioniert, die Zeit läuft jetzt im Java Script. Was es bringt? Nichts!



    Eine weitere Frage habe ich noch zu PHP und zu MariaDB. Meine Sensoren werden von der Datenbank alle 1h einmal erfasst und aufgenommen, ich hab schon vieles probiert, aber wie zum teufel bekomme ich eine einfache Tabelle mit 3 den Werten (Uhrzeit, Datum und Wert) aus der MariaDB Datenbank auf die PHP Seite? Besitzen tue ich PHP7.0, Apache2 und MariaDB10. Hast du da auch einen Link oder Rat?

  • Verstehe ich dich richtig - du hast ein Script geschrieben, das dir die Sensordaten in eine (Maria) Datenbank schreibt und weißt jetzt nicht wie du diese Daten wieder aus der Datenbank auslesen und ausgeben kannst?

  • Das auslesen funktioniert und die Datenbank zeigt mir alle gesammelten Werte im Terminal an. Ich möchte aber gerne diese Daten auf meiner Webseite anzeigen lassen, doch das funktioniert nicht. Die PHP Seite zeigt einfach nichts an.

  • <?php

    $link = mysqli_connect('localhost', 'root', 'raspberry', 'stall');

    //if connection is not successful you will see text error

    if (!$link) {

    die('Could not connect: ' . mysqli_error());

    }

    //if connection is successfuly you will see message bellow

    echo 'Connected successfully';


    $datensaetze = mysqli_query($link,

    "SELECT `id`, `uhrzeit`, `datum`, `lux` FROM `lux_log`");


    while (list($id, $uhrzeit, $datum, $lux) = mysqli_fetch_array($datensaetze)) {

    echo "<p>$id - $uhrzeit - $datum - $lux</p>";


    }


    mysqli_close($link);

    ?>


    Man kann auch das "Connected Succesfully" streichen, ich finde es gut, falls ich einen Fehler haben sollte, das die Verbindung auf jeden fall vorhanden ist oder nicht :)