Ich bin gerade dabei, und während ich die Temperatur über SSH anzeigen kann, habe ich Probleme damit, sie auf der kleinen Webseite anzuzeigen, die ich auf meinem Pi mit Apache2 eingerichtet habe. Ich folgte diesem Beispiel http://www.raspberrypi.org/phpBB3/viewtopic.php?t=35487&p=310038, das AJAX und ein Skript im cgi-bin-Verzeichnis enthielt, aber ich erhalte die Fehlermeldung, dass $ was not defined
dies wirklich ahnungslos ist Mit JavaScript habe ich keine Ahnung, wo der Fehler liegt. Ich frage mich, ob es das CGI-BIN-Verzeichnis sein könnte. Ich habe es gerade erstellt und konnte keine Informationen darüber finden, ob ich etwas Besonderes tun musste, um seine Verwendung für Skripte zu ermöglichen. Kann mir jemand diese Frage beantworten? Wenn es relevant ist, verwende ich die neueste Version von Raspbian.
Schließlich möchte ich die Werte in einer Datenbank protokollieren und von dort grafisch darstellen, aber das Wichtigste zuerst. :)
Die Hauptfrage ist, wie kann ich die Temperatur auf meiner Webseite vom internen Sensor anzeigen lassen?
BEARBEITEN
Ich werde den ersten Vorschlag später heute Abend versuchen, wenn ich nach Hause komme, aber ich habe schnell den zweiten (Lenik) in Gang gebracht, der anscheinend gut funktioniert. Ich musste allerdings einige Änderungen vornehmen, damit es funktioniert. Das Skript hat die rrd-Datei nicht erstellt, daher habe ich sie manuell mithilfe der Syntax erstellt, die er im Skript verwendet hat. Ich habe auch den UPDATE
Befehl geändert, da er den Wert, der an ihn übergeben wurde, nicht mochte. Ich musste den width
Teil aus dem GRAPH
Befehl entfernen, da er ebenfalls einen Fehler verursachte. Dann am Ende habe ich ein cp
so hinzugefügt , dass es die Datei in das Bilderverzeichnis der Website legt und dann hinzufügt*/5 * * * * /home/root/scripts/temprec.sh >/dev/null 2>&1
zu meiner crontab so läuft es alle 5 minuten. Es scheint zu funktionieren, aber mit nur 4 Proben ist es bisher schwierig, sicher zu wissen. Innerhalb einer Stunde oder so habe ich eine bessere Idee, ob meine Änderungen funktioniert haben.
#!/bin/bash
#
# update .rrd database with CPU temperature
#
# $Id: update_cputemp 275 2013-05-16 05:20:56Z lenik $
# Thanks to Lenik @ Raspberrypi.stackexchange.com.
cd /path/to/scripts
# read the temperature and convert .59234. into .59.234. (degrees celsius)
TEMPERATURE=`cat /sys/class/thermal/thermal_zone0/temp`
TEMPERATURE=`echo -n ${TEMPERATURE:0:2}; echo -n .; echo -n ${TEMPERATURE:2}`
/usr/bin/rrdtool update cputemp.rrd N:$TEMPERATURE
/usr/bin/rrdtool graph cputemp.png DEF:temp=cputemp.rrd:cputemp:AVERAGE LINE2:temp#00FF00
cp /path/to/scripts/cputemp.png /path/to/website/images
quelle
Vor einiger Zeit schrieb ich einen Artikel " Raspberry Pi :: Überwachung der CPU-Temperatur mit RRDTOOL " über das gleiche Problem. Meine Lösung umfasst das Empfangen der CPU-Temperatur, das Speichern in der Round-Robin-Datenbank und das Erstellen eines netten Diagramms als PNG-Datei, das ganz einfach auf der Webseite abgelegt werden kann. Kopieren Sie es einfach, wo immer Sie möchten. Ich hoffe, Sie werden es nützlich finden.
quelle
Ich glaube, Sie könnten die Daten von Ihrem RPi abrufen, streamen und mit diesem Paket auf GitHub in den Browser einbetten .
So sieht ein Diagramm aus: https://plot.ly/~jensb89/12/ .
Sobald Sie Ihr Diagramm erstellt haben, können Sie es mit diesem Snippet als iframe einbetten:
Sie möchten Ihre URL im Code austauschen. Lassen Sie mich wissen, wenn Sie irgendwelche Probleme haben oder ich kann Ihnen bei allem helfen. Außerdem bin ich Teil von Plotly, das in diesem Paket verwendet wurde.
So sieht es aus:
quelle
Die anderen Antworten hier sind fantastisch. Meine Lösung mit einem Shell-Skript und PHP lautet wie folgt:
Bitte beachten Sie, dass ich dies bei Raspbian Wheezy getan habe, sodass sich der Speicherort meines gesamten Codes in befindet
/var/www/
. Wenn Sie Jessie verwenden, muss es sich in '/ var / www / html /' befinden.Erstens können Sie den Benutzer auf root umstellen (Superuser):
sudo su
(und geben Sie Ihr Passwort ein)An den richtigen Ort gelangen:
cd /var/www/
(Wheezy)Nun legen Sie dort ein neues Verzeichnis an:
mkdir scripts
Gib ihm die richtigen Attribute:
chmod 755 scripts/
Erstellen Sie nun eine neue Datei, nennen wir sie 'temp.sh'.
nano scripts/temp.sh
Geben Sie den folgenden Code ein:
Ctrl+X
-Y
-Enter
speichern und beenden.Legen Sie nun die Attribute dieser Datei fest:
chmod 755 scripts/temp.sh
Erstellen Sie nun ein neues Verzeichnis
mkdir include/
Legen Sie die Attribute fest
chmod 744 include/
OK, jetzt können Sie das Skript ausführen und die Ausgabe testen:
cd scripts/
./temp.sh
cd ../include/
cat temp.txt
Es sollte ungefähr so aussehen:
Genial! Lassen Sie uns das einmal pro Minute ausführen. Wir werden eine neue Zeile in die Crontab eingeben.
crontab -e
Fügen Sie die untere Zeile am Ende der Datei ein
Ctrl+X
-Y
-Enter
speichern und beenden.Jetzt müssen wir die Seite bearbeiten, auf der die Temperaturen angezeigt werden. Also bearbeiten wir die PHP-Datei:
cd /var/www/
nano index.php
Und fügen Sie dies in das
<div>
Ihrer Wahl ein:Das wird es schaffen. Laden Sie einfach Ihre Seite neu und Sie sollten sehen, dass die CPU- und GPU-Temps angezeigt werden.
Zusätzlicher Bonus: Ich möchte auch das Laden der Seite jedes Mal erzwingen (verhindern, dass der Browser die Temperatur zwischenspeichert). Dazu füge ich ganz am Anfang der Datei auch das folgende PHP ein:
Hinweise: Der Grund, warum dies für mich funktioniert, ist, dass es auf einem Firmen-Dashboard angezeigt wird. Eine Seite auf einem Fernseher in meinem Büro, die eine ganze Reihe von Diagrammen anzeigt (Serverstatus, Benutzernummern, Durchschnittswerte usw. usw.). etc). Ich habe das pi so eingerichtet, dass es sich im Kiosk-Modus befindet (Vollbild-Browser beim Booten mit Iceweasel) und eine einzelne Seite angezeigt, die automatisch nach unten scrollt. Es dauert ungefähr 4 bis 5 Minuten, um von oben dorthin zu gelangen, und wird dann automatisch neu geladen, sobald es unten anschlägt. Daher wird es von Zeit zu Zeit neu geladen, ohne dass ich die Temperaturanzeige mithilfe einer clientseitigen Technologie aktualisieren muss. Ich habe es auch so eingerichtet, dass es mit einem anderen CSS / JS angezeigt wird, das auf dem Benutzeragenten basiert (kein Scrollen, keine aktuelle Zeit in der Ecke, kein Neuladen unten), aber in dieser Version
quelle