Daten extern auslesen

  • hey,


    ich habe auf meiner website ja eine anzeige, ob der rpi on oder off ist. da ja im moment raspbmc drauf läuft und der ja in der info die aktuelle online-zeit und die absolute online-zeit anzeigt, wollte ich die auch irgendwie auf meiner hp anzeigen lassen.
    ich habe zur zeit den port des browser remote panels freigegeben (mit user und pw gesichert).


    kann ich nun irgendwie die daten auslesen die ich will?



    gruß
    phillipp

  • Es gibt da reichlich Möglichkeiten, aber Deine Frage ist so einfach zu beantworten wie' Ich will von Hamburg nach München fahren. Wie mache ich das?'.
    Du kannst z.B. die Seite des Remote-Panels per php einlesen und die Daten die Du brauchst rausfiltern, Du kannst eine eigene Info-Seite auf dem Pi erstellen und die auf Deiner Seite in einem iFrame einbinden, wenn es nur die Uptime-Anzeige sein soll kannst Du auf dem Pi den 'uptime'-Befehl auch einfach an einen Port binden und den per php abfragen ...


    Fang doch einfach an und frag dann gezielt nach wenn Du nicht weiter kommst, dann schreibt man nicht sinnlos Texte die Dir nicht helfen weil Du einen ganz anderen Weg gehen willst.

  • okey,


    kannst du mir erklären, wie ich die uptime infos über einen port abfragen kann? also die komplette uptime und die aktuelle uptime, wie lange der rpi im moment läuft. wüsste nicht wie ich jetzt an die sache herangehen soll.


    es geht mir erstma nur darum, dass ich die beiden infos über einen port verfügbar mache und wie ich die dann mit php abfragen kann.


    Gruß
    Phillipp

  • Ich kann es grad nicht auf dem Pi testen, aber unter Linux kannst Du das z.B. so machen:


    Du erstellst einen neue Datei 'uptime' in /etc/xinetd.d mit dem Inhalt

    Code
    service uptime
    {
    flags = REUSE
    socket_type = stream
    port = 2222
    wait = no
    user = root
    server = /usr/bin/uptime
    log_on_failure += USERID
    }


    und damit es schön wird noch die Zeilen

    Code
    uptime 2222/udp
    uptime 2222/tcp

    in der /etc/services.


    Nach einem Neustart des xinetd kannst Du per 'telnet ip_des_pi 2222' schon die übliche Uptime-Ausgabe lesen.
    Per php kannst Du mit

    Code
    ...
    $fp = fsockopen("ip_des_pi","2222",$errno,$errstr,"10");
    ...


    auf den Port zugreifen und die Daten einlesen.
    Damit hast Du gleichzeitig eine Onlineanzeige, wenn der Pi aus ist und somit der Port nicht erreichbar, bekommst Du einen Fehler.

  • Also irgendwie geht das nicht so.


    http://www.phillipp-ohlandt.de/uptime.php


    Deren Inhalt:

    PHP
    <?php
    $fp = fsockopen("po-rasp1.sytes.net","2222",$errno,$errstr,"6");
    echo $fp;
    ?>



    Der Port ist bei TCP freigegeben, UDP hab ich mal ausgelassen. (Habs grad auch mit UDP getestet, is nicht anders)


    Habe das wie oben beschrieben gemacht und irgendwie gibt er nur "[font="Times New Roman"]Resource id #2" aus.[/font]

  • Hallo PhillippOh,


    sind das die Daten von deinem Raspberry Pi?


    Quote

    Host: po-rasp1.sytes.net
    Port: 2222


    Wenn dem so ist, dann kann ich die Uptime mit Netcat auslesen.


    Code
    pi@raspberrypi ~ $ nc po-rasp1.sytes.net 2222
    14:15:28 up 1 day, 19:22, 0 users, load average: 0.11, 0.16, 0.14


    Das Problem liegt somit nicht an Linux sondern an PHP. Ich habe bei mir am Webserver gerade folgendes Skript erfolgreich mit deinem Server getestet.


    PHP
    <?php
    $fp = fsockopen("po-rasp1.sytes.net",2222,$errno,$errstr);
    echo fgets($fp);
    ?>


    Gruß Georg

  • Hallo PhillippOh,


    ohne Garantie, dass alle möglichen Ausgaben von uptime korrekt verarbeitet werden.


    PHP
    <?php
    $fp = fsockopen("po-rasp1.sytes.net",2222);
    $string = fgets($fp);
    $string = str_replace(",","",$string);
    $string = eregi_replace("[0-9:]{2,3}[0-9:]{2,3}[0-9:]{2,3} up","",$string);
    $string = eregi_replace("[0-9]* user[s]* [a-zA-Z0-9:. ]*","",$string);
    echo "Uptime: " . $string;
    ?>


    Und hier als Nachtrag mit der gewünschten Formatierung.



    Geht sicher eleganter aber erfüllt seinen Zweck.


    Gruß Georg

  • Hallo PhillippOh,


    was treibst du da? Geh einfach nach meiner Anleitung vor, dann kannst du die Uptime, die CPU und GPU Temperatur und die Firmware-Version auf deiner Webseite anzeigen. Dazu ist dann auch nur ein einziger Service notwendig.


    Zu deinem Versuch:
    Du gibst als Server "/sys/class/thermal/thermal_zone0/temp" an. Das ist eine Datei und kein Programm oder Shell-Skript was der xinetd ausführen könnte. Wenn du es auf diese Art versuchen willst, sollte es wie folgt aussehen. Das ist aber ungetestet!



    Dadruch wird das Programm "/bin/cat" aufgerufen und die Datei als Argument übergeben. Dadurch wird der Inhalt der Datei auf der Standardausgabe ausgegeben und vom xinetd an dein PHP-Skript weitergereicht.


    Gruß Georg


  • Hallo,
    gibt es auch eine Möglichkeit die CPU Auslastung einzubinden ?


    Grüße