Hey,
da ich gefragt wurde, wie ich den Online Status des RPi auf meiner Homepage abfrage, kommt hier das Tutorial.
Ihr braucht 2 Dateien, einmal die Datei, in der der Status angezeigt wird, also eure Homepage und eine Datei wo der Status abgefragt wird.
Man könnte das ganze auch in einer Datei machen, aber dann läd eure Website einige Sekunden, wenn der RPi offline ist.
Voraussetzung:
- Raspberry Pi über das Internet erreichbar (No-IP )
- Irgendein Port muss freigegeben werden (z.B. XBMC Remote Panel Port - Remote Panel dann aber mit User und Passwort sichern)
So, hier mal alle Sachen, die auf eure Homepage müssen:
[code=php]<div id="status">Wird geladen</div>
[/php]
Das ist euer Container, in der der Status angezeigt wird. Alles was ihr vorher rein schreibt, verschwindet sobald der Status erscheint.
[code=php]<script src="http://code.jquery.com/jquery-latest.min.js"></script>[/php]
JQuery Laden (in den Head Bereich)
[code=php]<script>//wird nur ausgefuert wenn dom komplett geladen ist
$(document).ready(function() {
loadAjax();
});
function loadAjax() {
$('#status').load('URL DER ZWEITEN DATEI');
}</script>[/php]
Das Code sorgt dafür, dass die zweite Datei im Hintergrund geladen wird, sobald eure Homepage fertig geladen wurde. Dadurch lädt die Homepage nicht weiter solange bis der Status erscheint. (in den Head Bereich)
Euer Homepage könnte dann so aussehen:
[code=php]
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>//wird nur ausgefuert wenn dom komplett geladen ist
$(document).ready(function() {
loadAjax();
});
function loadAjax() {
$('#status').load('URL DER ZWEITEN DATEI');
}</script>
</head>
<body>
...
RPi 1 ist:<div id="status">Wird geladen</div>
...
</body>
</html>
[/php]
------------------------------------------------------
So nun kommen wir zur Abfrage-Datei.
Ich poste sie einfach mal komplett:
[code=php]<?phperror_reporting(0);
$site = "NOIP URL ODER IP EURES RPI OHNE HTTP://"; $port = PORT;
$fp = fsockopen($site, $port, $errno, $errstr, 6);
if(!$fp) {
$status = '<span style="color:red; font-weight:bold;">Offline</span>';
}
else
{
$status = '<span style="color:green; font-weight:bold;">Online</span>';
fclose($fp);
}
echo $status;
?>[/php]
Dieser Code fragt nun die Adresse oder IP und den Port ab und wenn nach 6 Sekunden keine Antwort kommt, sagt er, dass der RPi offline ist.
Die 6 Sekunden könnt ihr in folgender Zeile noch verändern:
[code=php] $fp = fsockopen($site, $port, $errno, $errstr, 6);[/php]
Ich habe es auf 6 Sekunden gestellt, da meine Ladeanimation 6 Sekunden geht. Ihr könnt es aber auch etwas runterschrauben wenn ihr wollt.
Vergesst nicht, eure Daten und die URL's im Code anzugeben.
Wenn Fragen sind, einfach her damit.
Gruß
Phillipp