Python in PHP mit Javascript ausführen

Registriere dich jetzt, um exklusive Vorteile zu genießen! Als registriertes Mitglied kannst du Inhalte herunterladen und profitierst von einem werbefreien Forum.
Mach mit und werde Teil unserer Community!
    • Official Post

    Tut mir leid, auf der Seite wird sowieso nichts angezeigt

    Dann setze mal ein echo "Hallo Welt!"; rein um zu sehen ob die Seite überhaupt aufgerufen wird! Btw. Ich tippe auf fehlende absolute Pfade im Python-Skript, aber da das streng geheim ist, bleibt uns nur raten. ;)


    Stunden spaeter waeren wir uebrigens auch mit Flask schon lange da, aber das nur am Rande...

    Das gleiche dachte ich mir auch gerade. :lol:

  • Dann setze mal ein echo "Hallo Welt!"; rein um zu sehen ob die Seite überhaupt aufgerufen wird! Btw. Ich tippe auf fehlende absolute Pfade im Python-Skript, aber da das streng geheim ist, bleibt uns nur raten. ;)


    Das gleiche dachte ich mir auch gerade. :lol:

    Ja das funktioniert und wird ausgegeben. Tut mir leid, ich dachte nicht dass das relevant ist, ich kann das Skript schon hier posten...


    Code
    #!/usr/bin/env python3
    import serial
    import time
    
    ser = serial.Serial('/dev/ttyACM0', 9600)
    time.sleep(5)
    
    ser.write(b'1')
    time.sleep(5)
    ser.write(b'2')


    Ja, ich weiß nur leider nicht wie das funktioniert und das hätte ich bestimmt nicht an einem Tag gelernt..

  • "Gelernt" hast du dein jetziges Vorgehen ja auch nicht. Du kloppst darauf rum, bis es geht, das waere so auch mit Flask gegangen.


    Und wenn du dieses Skript mal zu Beginn gezeigt haettest, dann haette man sich den ganzen Rotz hier sparen koennen. Denn ganz ehrlich: die 5 Zeilen waeren in PHP *direkt* einfacher und ohne diesen ganzen Probleme implementiert gewesen.


    Siehe hier: http://www.heidislab.com/tutor…via-serial-using-php-code


    Wenn du dein test.php so umstellst, dass es direkt selbst mit der seriellen Schnittstelle kommuniziert, dann wuerdest du bessere Fehlermeldungen bekommen, und hast weniger Baustellen.

  • Danke, so habe ich es jetzt umgestellt. Per Terminal führt sich die Datei aus, wenn ich die Datei mit Localhost öffne, passiert nach wie vor nichts.

  • Ich weiß leider wirklich nicht wo ich die finde, tut mir echt leid..

    //Edit Okay ich habs gefunden. Aktuell kommt jetzt noch:

    "Specified serial port is not valid in /var/www/html/PhpSerial.php"

    "Unable to set the baud rate"

    Unable to set parity"

    Unable to set length of a character"

    Unable to set the length of a stop bit"

    "Device musst be opened in /var/www/html/PhpSerial.php"

    "Device musst be opened in /var/www/html/PhpSerial.php"

  • Das klingt nach einem Programmierfehler, denn es gibt ja einen open-Aufruf. Bitte zeig - auch hier, und schon wieder - deinen Code.


    Muss man das wirklich immer so alles Stueckchen fuer Stueckchen aus deiner Nase pulen? Kannst du nicht auch mal ein bisschen aus dir selbst heraus weiter ausholen, von selbst Code zeigen, umfangreicher beschreiben, was du da tust? Das wuerde die ganze Geschichte fuer alle Beteiligten angenehmer gestalten. Glaub mir.

  • und nun poste doch hier mal die komplette PhpSerial.php mit:

    Code
    cat /var/www/html/PhpSerial.php
  • Der deviceSet call loest den Fehler aus, und der Rest sind Folgefehler, weil du die Rueckgabewerte nicht behandelst. Und da es ja sonst geht, sind wir wieder bei unserem alten Problem - Rechten.


    Da ist also wieder der User www-data nicht berechtigt, das Device zu oeffnen.


    Wie sieht die Ausgabe von


    ls -alF /dev/ttyAMA0


    sowie von


    id www-data


    aus?

  • Per Terminal führt sich die Datei aus, wenn ich die Datei mit Localhost öffne, passiert nach wie vor nichts.

    In einem Mehrbenutzer Betriebsystem wird ein Script/Programm immer unter dem User abgearbeitet, der es aufgerufen hat (aus den Umgebungsvariablen/Environment).


    Ruft der User pi ein Script auf, wird es unter dem User pi und seinen Gruppen(beitritten) ausgeführt. Wird auf eine Gerätedatei "geschrieben" = ausgegeben, wie hier auf /dev/ttyACM0, muss der User pi Schreibrechte an der Datei besitzen.


    Ruft der User www-data dasselbe Script auf, wird das als User www-data und den Gruppenrechten von www-data ausgeführt. Da www-data kein Schreibrecht auf /dev/ACM0 besitzt, kann daher das Script in diesem Punkte nicht funktionieren.


    Die meisten Gerätedateien, die von verschiedenen Usern angesprochen werden können, erhalten ihr Schreibrecht über ihre Gruppenmitgliedschaft. Siehe < ls -A /dev/* >, bzw. < ls -Al /dev/ttyACM0 >.


    Servus !

    RTFM = Read The Factory Manual, oder so

    • Official Post

    Ich will ja nicht sagen "Ich habs mehrfach geschrieben.", aber RE: Python in PHP mit Javascript ausführen oder RE: Python in PHP mit Javascript ausführen und schließlich ausführlicher RE: Python in PHP mit Javascript ausführen ;)


    Na gut, versuchs mal mit:

    Code
    sudo usermod -aG dialout www-data