Posts by wildspitze

    Da deine Werte jede Viertelstunde ermittelt werden und die zeitliche Differenz zwischen zwei Datenpunkten quasi immer identisch ist, könntest du als einfachsten Weg die Werte für die X-Achse direkt setzen.


    Code
    $graph->xaxis->SetTickLabels($x_axis);


    Beim Instanziieren des Lineplots dürfen dann aber keine Werte für die X-Achse übergeben werden, da JpGraph dort kein Stringwerte erlaubt (und den Error 25070 generiert). Dort also nur das eine Array mit den Werten der Y-Achse übergeben.


    Code
    new LinePlot($y_axis);


    Schöner ist natürlich der Ansatz mit dem Code von dbv. Dort wird ein Callback zur Ausgabe der Beschriftung für die X-Achse aufgerufen (Funktion TimeCallback()). Dazu müssen deine Zeitangaben in der DB aber in Integer konvertiert werden, um das Array mit den Daten der X-Achse korrekt zu füttern. SetTickLabels() wird dann nicht verwendet und bei new LinePlot() eben beide Arrays mit den Daten für Y- und X-Achse übergeben.


    Dann entspricht die Skalierung der X-Achse auch den korrekten Datumswerten, was im oberen Fall mit SetTickLabels() natürlich nicht gegeben ist, wenn bei der Datenerfassung Lücken vorliegen.


    Am sinnvollsten verwendet man in der DB nur ein Feld mit dem Datentyp DATETIME für Datum/Uhrzeit. Bei der Abfrage via SQL kann dann einfach via


    SQL
    SELECT UNIX_TIMESTAMP(`zeit`) AS zeit ...


    der Feldinhalt in einen Zeitstempel (Sekunden seit 01.01.1970) konvertiert werden.


    Mit folgenden SQL-Statements kannst du deine DB-Tabelle bearbeiten. Zunächst wird ein echtes Datumsfeld zugefügt, dann die Kombination deiner Datums- und Zeitwerte in die neue Spalte übernommen. Lege zuvor eine Sicherungskopie deiner Tabelle an.


    Code
    ALTER TABLE `lux_log` ADD `zeit` DATETIME NOT NULL AFTER `uhrzeit`;
    UPDATE `lux_log` SET `zeit` = CONCAT(`datum`, " ", `uhrzeit`)

    Wenn die Werte in der neuen Spalte richtig gesetzt werden, kann du deinen Programmcode anpassen und Teile der Vorlage von dbv integrieren. Wenn alles klappt, musst du letztlich deine Datenerfassung modifzieren (Datumswerte in die neue Spalte übernehmen, lässt sich bequem mittels NOW() erreichen) und kannst die nicht mehr benötigten Spalten in der Tabelle entfernen.

    Deine Zuweisung ist fehlerhaft und wird zu folgendem String zusammengesetzt (kannst du per Ausgabe via echo $sql; testen):


    SELECT * FROM `sensorwerte` WHERE `Zeitstempel` > '\.$abDatum\.' AND `Sensorname1` LIKE 'PM 10' ORDER BY `Zeitstempel`



    Verwende doppelte statt einfache Hochkommata um den gesamten String. Dann werden Variablen substituiert und das ganze Statement ist auch leichter zu lesen.

    Code
    $sql = "SELECT * FROM `sensorwerte` WHERE `Zeitstempel` > '$abDatum' AND `Sensorname1` LIKE 'PM 10' ORDER BY `Zeitstempel`";

    @vipman, zeige uns doch mal wie du die Daten bisher ausliest. Putty ist ein SSH/Telnet-Terminalprogramm, damit wirst du wohl kaum direkt auf den DHT22-Sensor zugreifen. Vermutlich wird doch auf dem Raspi ein Script/Programm gestartet.


    Was soll auf der Webseite angezeigt werden? Nur die aktuelle Temperatur/Luftfeuchte und/oder eine Statistik/Diagramm der Werte über vergangene Zeiträume? Falls letzteres, wirst du nicht umhin kommen, die ausgelesenen Daten in regelmäßigen Abständen (z.B. via Aufruf über einen Croneintrag) irgendwo zwischenzuspeichen. Sinnvollerweise in einer Datenbank.

    [font="Arial"]Vermutlich ist auf deinem lokalen System in der php.ini die Direktive für das short_open_tag auf Off gestellt. PHP-Anweisung innerhalb von HTML-Code müssen dann mit <?php statt nur mit <? eingeleitet werden.[/font]


    [font="Arial"]In der index.php in der Zeile zum Inkludieren der ausgewählten Datei (Zeile 112) wird das short_open_tag verwendet. Ersetze dort [/font]


    [font="Arial"]

    Code
    <td align="center" valign="top"><? include($fileToInclude); ?></td>

    [/font]
    [font="Arial"]durch[/font]


    [font="Arial"]

    PHP
    <td align="center" valign="top"><?php include($fileToInclude); ?></td>

    [/font]


    [font="Arial"]Bei allen anderen PHP-Einbettungen wird korrekt <?php verwendet.[/font]


    [font="Arial"]Was letztlich an HTML-Code generiert wird, ist allerdings nicht wohlgeformt. Du bindest ein eigenständiges HTML-Dokument (also beginnend mit einem <html>-Tag) als Teil einer Tabellenzelle ein. Das gehört sich so nicht, auch wenn die Browser das offenkundig korrekt rendern.[/font]
    [font="Arial"] [/font]
    [font="Arial"]Korrekterweise sollte in der home.php nur der Part beginnend mit dem äußeren <div>-Element stehen. Oder du lädst das komplette HTML-Dokument in einen <iframe> innerhalb der index.php.[/font]