Online Status auf der eigenen Homepage anzeigen lassen

  • 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

    • Official Post

    Darauf achten, dass jQuery in das Head-Element gehört

    HTML
    <html>                                                                  
     <head>                                                                  
     <script src="http://code.jquery.com/jquery-latest.min.js"></script>       
     <script type="text/javascript">
    function loadAjax() {$('#status').load('URL DER ZWEITEN DATEI');}
    </script>                                                               
     </head>                                                                 
     <body> RPi 1 ist:<div id="status">Wird geladen</div></body>                                                                 
     </html>

    Well in my humble opinion, of course without offending anyone who thinks differently from my point of view, but also by looking into this matter in a different way and without fighting and by trying to make it clear and by considering each and every one's opinion, I honestly believe that I completely forgot what I was going to say.

  • Danke PhillippOH werde es so mal versuchen momentan habe ich das so:



    HTML
    <html>
    <title>
    RPI Status
    </title>
    <body>
    <img src="http://********.no-ip.org/online.gif" onerror="this.src='http://*****.de/bilder/offline.gif';">
    </body>
    </html>


    Wenn der Server Offline ist lädt er das Offline bild aber wenn der Online ist dann Wird das Off bild mit dem On bild überdeckt.


    Aber du hast recht das Off bild wird etwas langsamer geladen deswegen werde ich deins auch ausprobieren.



    gruß
    nico

    Raspberry Pi Rev. 2 512mb


    Edited once, last by prace07 ().

  • habe das einfach mal in die rechte box gepackt


    aber wo genau muss ich das reinpacken?
    [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]

    Raspberry Pi Rev. 2 512mb


    • Official Post

    Das ist eine .php Datei mit .php Endung. Der Code ist etwas unglücklich formatiert.
    [code=php]<?php
    error_reporting(0);
    $site = "http://www.test123.dns.com/ oder 124.554.335.12"; // IP-Adresse oder URL deines RPIs
    $port = 80; // deinen geöffneten Port als zahl eintragen
    $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]
    rpi_online.php


    Diese Datei lädst du auf deinen Webserver (PHP vorausgesetzt). In der jQuery Url gibst du dann die URL zu genau dieser Datei ein, denn diese Datei sagt dir ob der RPI Online ist oder nicht.

    Well in my humble opinion, of course without offending anyone who thinks differently from my point of view, but also by looking into this matter in a different way and without fighting and by trying to make it clear and by considering each and every one's opinion, I honestly believe that I completely forgot what I was going to say.

    Edited once, last by ps915 ().

  • habe es nochmal ausprobier aber klappt leider nicht.
    da steht war
    RPI ist:


    aber nicht ob on oder offline

    Raspberry Pi Rev. 2 512mb


    • Official Post

    Schick mir mal die Adresse deiner Seite!

    Well in my humble opinion, of course without offending anyone who thinks differently from my point of view, but also by looking into this matter in a different way and without fighting and by trying to make it clear and by considering each and every one's opinion, I honestly believe that I completely forgot what I was going to say.

  • auch dank ps915 hilfe geht es leider nicht also bleibe ich bei meiner alten methode


    trotzdem ganz viel dank an euch :)

    Raspberry Pi Rev. 2 512mb