.titleBar { margin-bottom: 5px!important; }

[Frage] SensorAndSwitch: Raspberry: Bitte um Hilfe bei Pseudoscript-Erstellung

Dieses Thema im Forum "SensorAndSwitch" wurde erstellt von HarryHase, 6 Dez. 2014.

  1. HarryHase

    HarryHase Mitglied

    Registriert seit:
    16 Feb. 2006
    Beiträge:
    575
    Zustimmungen:
    7
    Punkte für Erfolge:
    18
    Ort:
    Belgien
    #1 HarryHase, 6 Dez. 2014
    Zuletzt bearbeitet: 6 Dez. 2014
    so wie es einige Informationen auf der Fritz!Box gibt ist das bei raspberry natürlich auch möglich

    Der Befehle dazu lautet:

    Die Temperatur lässt sich über die Shell ganz einfach und schnell über folgendes Kommando auslesen:
    Code:
    vcgencmd measure_temp
    
    Zurückgegeben wird z.B. folgendes: temp=47.6'C

    Mit vcgencmd kann man übrigens nicht nur die Temperatur der CPU, sondern auch Spannung und Takt auslesen:

    Code:
    vcgencmd measure_volts
    
    Bzw.
    Code:
    vcgencmd measure_clock arm
    
    Wie müsste man das script von der fritte ändern?

    PHP:
    <?php
    error_reporting
    (1);
    $Status system("/usr/bin/ctlmgr_ctl r power status/act_temperature");
    header("Content-Type: text/plain");
    echo 
    "T";
    if (
    $Status) {
    echo 
    "#".$Status."#";
    }
    else {
    echo 
    "E#";
    }
    exit;
    ?>

     
  2. JL3

    JL3 Aktives Mitglied

    Registriert seit:
    4 Dez. 2010
    Beiträge:
    1,975
    Zustimmungen:
    6
    Punkte für Erfolge:
    38
    In welchem Verzeichnis ist der Befehl vcgencmd, denn es muss der komplette Pfad angegeben werden.

    ansonsten:

    Code:
    <?php
    error_reporting(1);
    $Status = shell_exec("/[COLOR="#0000FF"][B][PfadZumBefehl][/B][/COLOR]/vcgencmd measure_temp");
    header("Content-Type: text/plain");
    if ($Status) {
    echo "T#".trim(Status)."#";
    }
    else {
    echo "T##E##";
    }
    exit;
    ?>
    das //EOF gehört nicht in ein PHP-Script. Das ist Shell-Script-Sprache.
     
  3. HarryHase

    HarryHase Mitglied

    Registriert seit:
    16 Feb. 2006
    Beiträge:
    575
    Zustimmungen:
    7
    Punkte für Erfolge:
    18
    Ort:
    Belgien
    #3 HarryHase, 6 Dez. 2014
    Zuletzt bearbeitet: 6 Dez. 2014
    .................
     

    Anhänge:

  4. JL3

    JL3 Aktives Mitglied

    Registriert seit:
    4 Dez. 2010
    Beiträge:
    1,975
    Zustimmungen:
    6
    Punkte für Erfolge:
    38
    #4 JL3, 6 Dez. 2014
    Zuletzt bearbeitet: 6 Dez. 2014
    www-User ist nicht root und darf nicht zugreifen.

    Das Problem gabs mit apache auch bei der Fritzbox.

    Nachtrag: du musst dem Webserveruser, wie immer der heißen mag, einem root gleichstellen.
     
  5. HarryHase

    HarryHase Mitglied

    Registriert seit:
    16 Feb. 2006
    Beiträge:
    575
    Zustimmungen:
    7
    Punkte für Erfolge:
    18
    Ort:
    Belgien
    ich habe meine Nachricht noch mal gelöscht, da ich noch einen Fehler drin hatte, glaube nicht das es daran liegt, darf ich als normaler user auch auch ausführen!

    Code:
    pi@raspberrypi /var/www $  /usr/bin/vcgencmd measure_temp
    temp=55.7'C
    pi@raspberrypi /var/www $
    
    liegt es an der Antwort mit temp= ... ??
     
  6. JL3

    JL3 Aktives Mitglied

    Registriert seit:
    4 Dez. 2010
    Beiträge:
    1,975
    Zustimmungen:
    6
    Punkte für Erfolge:
    38
    ja, da musst du substr(trim($Status),5) benutzen:

    Code:
    echo "T#".substr(trim(Status),5)."#";
     
  7. HarryHase

    HarryHase Mitglied

    Registriert seit:
    16 Feb. 2006
    Beiträge:
    575
    Zustimmungen:
    7
    Punkte für Erfolge:
    18
    Ort:
    Belgien
    ups, jetzt ist die ganze zeile im SaS weg ..
     
  8. JL3

    JL3 Aktives Mitglied

    Registriert seit:
    4 Dez. 2010
    Beiträge:
    1,975
    Zustimmungen:
    6
    Punkte für Erfolge:
    38
    Sorry, Tippfehler:

    Code:
    echo "T#".substr(trim([B][COLOR="#008000"]$[/COLOR][/B]Status),5)."#";
     
  9. HarryHase

    HarryHase Mitglied

    Registriert seit:
    16 Feb. 2006
    Beiträge:
    575
    Zustimmungen:
    7
    Punkte für Erfolge:
    18
    Ort:
    Belgien
    ich verstehe es nicht ...

    Code:
    <?php
    error_reporting(1);
    $Status = shell_exec("/usr/bin/vcgencmd measure_temp");
    header("Content-Type: text/plain");
    if ($Status) {
    echo "T#".substr(trim($Status),5)."#";
    }
    else {
    echo "T##E##";
    }
    exit;
    ?>
    
    liefert die Temperatur 0.0°C
    (das könnte was mit den Rechten sein)

    ---
    Baue ich ein sudo ein was problemlos in der console geht (keine Passwortabfrage in der console)

    Code:
    <?php
    error_reporting(1);
    $Status = shell_exec("sudo /usr/bin/vcgencmd measure_temp");
    header("Content-Type: text/plain");
    if ($Status) {
    echo "T#".substr(trim($Status),5)."#";
    }
    else {
    echo "T##E##";
    }
    exit;
    ?>
    
    dann steht hinten weder das Thermometer noch Zahlen noch °C


    ????


    egal, ich warte mal bis Deine Himbeere in Betrieb ist ...
     
  10. JL3

    JL3 Aktives Mitglied

    Registriert seit:
    4 Dez. 2010
    Beiträge:
    1,975
    Zustimmungen:
    6
    Punkte für Erfolge:
    38
    Wenn ich die (ich denke nächstes Wochenende) habe, muss ich wahrscheinlich erst dich fragen, wie du Webserver etc. drauf gemacht hast. Wäre prima, wenn du mir da Tipps geben könntest. Nicht dass ich da ganz von vorn mich durcharbeiten muss. Danach schaun wir mal, dass das Script von hier läuft. Ginge das? :)
     
  11. HarryHase

    HarryHase Mitglied

    Registriert seit:
    16 Feb. 2006
    Beiträge:
    575
    Zustimmungen:
    7
    Punkte für Erfolge:
    18
    Ort:
    Belgien
    ja, aber sicher doch, machen wir einen thread für auf: SaS Installation auf der Himbeere ;)
     
  12. koyaanisqatsi

    koyaanisqatsi IPPF-Urgestein

    Registriert seit:
    24 Jan. 2013
    Beiträge:
    10,214
    Zustimmungen:
    79
    Punkte für Erfolge:
    48
    #12 koyaanisqatsi, 10 Dez. 2014
    Zuletzt bearbeitet: 10 Dez. 2014
    Moin

    Hier ein kleines Beispiel mit RE:
    Code:
    /usr/bin/vcgencmd measure_temp|grep -o -E "[0-9,.]{1,4}"
    ...dann mal ins PHP einbauen...
    PHP:
    $Status system('/usr/bin/vcgencmd measure_temp|grep -o -E "[0-9,.]{1,4}"');
    ...oder...
    PHP:
    $Status shell_exec('/usr/bin/vcgencmd measure_temp|grep -o -E "[0-9,.]{1,4}"');
     
  13. JL3

    JL3 Aktives Mitglied

    Registriert seit:
    4 Dez. 2010
    Beiträge:
    1,975
    Zustimmungen:
    6
    Punkte für Erfolge:
    38
    Ich bastle an einer neuen Idee für sas. Und zwar sas-helper.php. Nicht mehr sas greift auf die Systemfunktionen zu, sondern ein cron php-Script, welches im Webbereich eine xml o. ä. schreibt. Dies kann dann sas lesen. Ähnlich der Methode, die die FB mit den DECT200 macht. :) Ist noch Alpha-Status, wird aber zu den PseudoGeräten noch als nächste Möglichkeit dazu kommen. ;)
     
  14. JL3

    JL3 Aktives Mitglied

    Registriert seit:
    4 Dez. 2010
    Beiträge:
    1,975
    Zustimmungen:
    6
    Punkte für Erfolge:
    38
    #14 JL3, 15 Dez. 2014
    Zuletzt bearbeitet: 15 Dez. 2014
    Okay, das Problem ist einfach zu lösen.

    Sudo-Rechte fürs Web:

    Code:
    nano /etc/sudoers
    Code:
    #includedir /etc/sudoers.d
    ...
    [COLOR="#008000"]www-data ALL=(ALL) NOPASSWD: ALL[/COLOR]
    Grüne Zeile hinzufügen, abspeichern und rebooten. Mit

    pseudocputemp.php
    PHP:
    <?php

        
    /*
            +---------------------------------------------------------------------+
            |                                                                     |
            |   SensorAndSwitch Automation Pro                                    |
            |   PseudoGeräte-Script                                               |
            |   ===============================================================   |
            |   RaspberryPI                                                       |
            |   -> CPUTemp                                                        |
            |                                                                     |
            |      Um das Script den Zugriff als www-data auf dem PI zu erlauben, |
            |      muss mit                                                       |
            |                nano /etc/sudoers                                    |
            |      folgender Eintrag am Ende unter                                |
            |                #includedir /etc/sudoers.d                           |
            |                www-data ALL=(ALL) NOPASSWD: ALL                     |
            |      Datei speichern und PI mit reboot neu starten. Danach darf     |
            |      der www-data mit sudo auf Betriebssystembefehle zugreifen.     |
            |                                                                     |
            +---------------------------------------------------------------------+
        */

        
    error_reporting(0);
        
    $Status shell_exec('sudo /usr/bin/vcgencmd measure_temp');
        if (
    $Status) {
            echo 
    "T#".(substr($Status,5)*1)."#";
        }
        else {
            echo 
    "T##E##";
        }
        exit;
        
    ?>
    liest er dann brav die Temperatur. :)
     
  15. JL3

    JL3 Aktives Mitglied

    Registriert seit:
    4 Dez. 2010
    Beiträge:
    1,975
    Zustimmungen:
    6
    Punkte für Erfolge:
    38
    #15 JL3, 17 Dez. 2014
    Zuletzt bearbeitet: 17 Dez. 2014
    Es gibt jetzt ein komplettes HowTo der RaspberryPI-Installation vom Betriebssystem Installieren bis zum SAS im SensorAndSwitch Web.

    Darin wird Schritt für Schritt aufgezeigt, wie man seinen frisch gekauften RaspberryPI nach dem Zusammenbau mit der richtigen Software versorgt, um daraus einen SAS-Server für die Hausautomation zu basteln. Danach beinhaltet er einen Apache2-Server mit PHP5 und CURL, sowie WLAN-Anbindung und SAMBA für die Windows-Netzwerkfreigabe. Ebenfalls hat man danach vollen Zugriff per SAS auf die internen Sensoren des PI, da auch beschrieben wird, wie man dem www-data Zugriffe aufs System gestatten kann.
     
  16. HarryHase

    HarryHase Mitglied

    Registriert seit:
    16 Feb. 2006
    Beiträge:
    575
    Zustimmungen:
    7
    Punkte für Erfolge:
    18
    Ort:
    Belgien


    irgendwie blicke ich nicht wo das steht und was ich machen muss ...
     
  17. JL3

    JL3 Aktives Mitglied

    Registriert seit:
    4 Dez. 2010
    Beiträge:
    1,975
    Zustimmungen:
    6
    Punkte für Erfolge:
    38
    #17 JL3, 17 Dez. 2014
    Zuletzt bearbeitet: 17 Dez. 2014
    Du musst per Putty auf den PI und dort als root oder per sudo enfach nano /etc/sudoers und dort die Zeile www-data ALL=(ALL) NOPASSWD: ALL als letzte Zeile anfügen. Speichern, reboot, fertig.
    Und im PseudoGeräte-Script jeden Befehl mit sudo starten. :)

    Post #14

    rasppicputemp.png

    Wo die Vorgehensweite im SAS-Web steht: Installation - RaspberryPI - Befehlsrechte für www-data (weit unten)
     
  18. ws65

    ws65 Aktives Mitglied

    Registriert seit:
    23 Jan. 2012
    Beiträge:
    924
    Zustimmungen:
    9
    Punkte für Erfolge:
    18
    Beruf:
    Rentner
    Ort:
    Rheinland Pfalz
    hallo,

    habe Heute meinen Raspberry bekommen.

    nach der Anleiting im SAS Web installiert.

    keine größeren Probleme, es dauert nur etwas bis alles durch ist.

    meine kleinen Probleme:

    bei
    Expand Filesystem auswählen und aufrufen tut sich nichts bei mir!

    Change Timezone auswählen und aufrufen war beim ersten Durchgang nicht vorhanden, ganz am Ende nochmal die Config aufgerufen und dann war es da.

    wenn ich Netzwerk auf staitic stelle hat er den Mirrorserver von Rasbian.org nicht gefunden!

    der Befehl
    nano /etc/apache2/sites-enabled/000-default
    ist 2x in der Anleitung, sollte beim 2. mal eventuell was anderes stehen?

    Samba ist nicht sofort gelaufen, erst als ich workgroup = BLUENET abgeändert habe. (BLUENET mit meiner Arbeitsgruppe ersetzt).

    in der shstart.sh hast du das Verzeichnis sensorandswitch mit drin,
    cd /var/www/sensorandswitch
    php -f /var/www/sensorandswitch/sensorandswitchautopro.php

    ist das richtig? wenn ja müsste dann das Verzeichnis nicht auch in WWW angelegt werden.

    Usb-Stick wird bei mir keiner erkannt, weder mit Fat32 noch mit ext3.
    da fehlt sicher noch was!

    aber ansonsten, wie gesagt keine größeren Probleme, Super!
     
  19. koyaanisqatsi

    koyaanisqatsi IPPF-Urgestein

    Registriert seit:
    24 Jan. 2013
    Beiträge:
    10,214
    Zustimmungen:
    79
    Punkte für Erfolge:
    48
    looool :lach:

    ...da wird sich JL3 über diese Rückmeldung aber freuen.
     
  20. ws65

    ws65 Aktives Mitglied

    Registriert seit:
    23 Jan. 2012
    Beiträge:
    924
    Zustimmungen:
    9
    Punkte für Erfolge:
    18
    Beruf:
    Rentner
    Ort:
    Rheinland Pfalz