DHT22 mit Java abfragen via Processbuilder

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Ich will via Java servlet das python Script ausführen und die Ausgabe weiter verarbeiten.
    Das Python Script ist angepasst und läuft ohne Parameter und liefert ZeilenweiseeWerte.
    Der cmd String in der Konsole funktioniert. Nur der code unten nicht :(


    String cmd = "sudo python /usr/share/tomcat7/AdafruitDHT.py";

    Process p = Runtime.getRuntime().exec(cmd.split(" "));
    p.waitFor();
    BufferedReader input = new BufferedReader
    (new InputStreamReader(p.getInputStream()));
    String temp = input.readLine();
    String hum = input.readLine();
    input.close();

  • Hi,
    Lass dir bitte wirkung der -> cmd.split(" "); Methode anschauen.
    Print -> cmd.split(" ") !!!!

    Verbleibe bei cmd, oder trage den Pfad direkt eint:
    Process p = Runtime.getRuntime().exec("sudo python /usr/share/tomcat7/AdafruitDHT.py ");

    Gruß
    Georg

    Sollte ich "Müll- reden" :blush: - bitte mich (?) "auf die Nuss" hauen. :huh:

    Einmal editiert, zuletzt von georg-Lu_1963-1 (20. Februar 2016 um 00:59)

  • Ich hätte im ersten Versuch mit dem Processbuilder der bekam den String als Parameter und brachte genau so wenig Rückgabe ( nämlich keine)
    Aber ich kann das oben ja testen..
    Der tomcat7 user hab ich auch in Gruppe "sudo" gesteckt ?!?

    beides klappt nicht :(
    /* //1. Versuch
    ProcessBuilder builder = new ProcessBuilder("sudo", "python", "/usr/share/tomcat7/PiServer/AdafruitDHT.py");
    Process p=builder.start();
    BufferedReader rb=new BufferedReader(new java.io.InputStreamReader(p.getInputStream()));
    temp=rb.readLine();
    hum=rb.readLine();
    */

    Process p = Runtime.getRuntime().exec("sudo python /usr/share/tomcat7/PiServer/AdafruitDHT.py");
    p.waitFor();
    BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
    temp = input.readLine();
    hum=input.readLine();
    input.close();


    --------------------------
    pi@raspberrypi:~ $ sudo python /usr/share/tomcat7/PiServer/AdafruitDHT.py
    15.3999996185
    47.0
    -------------------------

    Einmal editiert, zuletzt von Paddy65305 (20. Februar 2016 um 09:57)

  • Vor kurzem wollte was mit Aplay (kleinen Sound bip als Bestätigung) abspielen lassen.
    Mit:
    aplay /home/pi/sounddata/snare.wav
    in der Konsole, hat problemlos funktioniert.

    In einer Interrupt-Routinen Funktion hat es lediglich NICHT! funktioniert.
    Vermute, das System ist von vielem dabei (bei Interrupt - muss ich noch mehr intput darüber sammeln) "ausgeklinkt".
    Mit Prozess (subprocess - bei Python) hat auch nicht funktioniert, ABER mit System schon.
    os.system('aplay /home/pi/sounddata/snare.wav &')

    Zum Thema:
    Process, ProcessBuilder Klasen verbergen hinter sich mächtige Routinen, die tief mit nativen Funktionen "arbeiten" !

    Damit (in demJava-Prozess ... Fall) ist warscheinlich auch "irgendwas auf der Linux Seite - ausgeklingt", wass bei:
    pi@raspberrypi:~ $ aplay /home/pi/sounddata/snare.wav
    bzw: (in deinem Fall)
    pi@raspberrypi:~ $ sudo python /usr/share/tomcat7/PiServer/AdafruitDHT.py
    Aktiv -> also noch am Laufen ist ! und nach der Prozess-Routinen nicht Aktiv ist, ... und unmöglicht damit eine direkte Ausführung des Scriptes. (?)

    .... Versuche deshalb auch damit:
    Process p = Runtime.getRuntime().exec("os.system(sudo python /usr/share/tomcat7/PiServer/AdafruitDHT.py"&'));

    Ich bin mir ziemlich sicher, dass; - wenn du einen "Debugg-Print" an einem Relevante für das Aufrufen-Teil in dem AdafruitDHT.py Skript implementierst, wird er auch in der Konsole angezeigt. Also ich Debugge immer noch mit dem "Konservativen" -----> Print("aus XXX/Test/Methode1/ - nach while") Funzt 1A.


    Gruß
    Gerorg

    Sollte ich "Müll- reden" :blush: - bitte mich (?) "auf die Nuss" hauen. :huh:

    Einmal editiert, zuletzt von georg-Lu_1963-1 (21. Februar 2016 um 00:45)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!