Webbläsare php köra python script

Trädvy Permalänk
Medlem
Registrerad
Nov 2011

Webbläsare php köra python script

Hej! har försökt att få min rpi att genom en apache webserver när en php sida anropas köra ett pythonscript på rpin som aktiverar GPIO portar. Jag vet verkligen inte hur jag ska få php delen att fungera. Pythonscriptet fungerar utan problem.

Mvh
Dalgren

Crosshair IV | 1055T @ 3.2 GHz | 4 GB Corsair dominator | Corsair H50 | Fractal Design R3 | 2x PowerColor 6950 2GB | Corsair HX 750W

Trädvy Permalänk
Medlem
Plats
Östersund
Registrerad
Jan 2011

CPU: i7 4770k Noctua NH-D14 MOBO: Maximus VI Hero GPU: GTX 980 RAM: 16 GB 1600 MHz Chassi: R4 PSU: Corsair AX860 Hörlurar: SteelSeries 840 Mus: Logitech G500s V.v. citera mig för att få svar.

Trädvy Permalänk
Medlem
Registrerad
Jun 2011

Du hade kunnat göra system("sudo python gpio-script.py"), men problemet är att GPIO kräver superuser-privilegier, vilket Apache vanligtvis inte har, så det går inte. Tror det ska gå med hjälp av WSGI, men kan inte hjälpa dig med det. (kolla efter mod_wsgi för Apache)

Jag kämpade själv länge med detta, fast med nginx istället för Apache. Lyckades till slut genom att köra en dedikerad Python-server bakom nginx.

Edit: Glömde nästan, jag fick det visst att fungera på Apache genom att kombinera system-funktionen med följande verktyg:
http://wiringpi.com/the-gpio-utility/
Upplevde det en aning långsamt (knappt en sekunds fördröjning), men om det inte är ett bekymmer så kan du testa det. Inte så svårt att komma igång, och det fixar alltså superuser-hindret.

MSI Z77A-GD65 | Intel Core i5 3570K @ 4,2 GHz | Palit Geforce GTX 1070 JetStream | 16 GB Corsair Vengeance 1600 MHz

You must come with me, young ones, for I am the grim reaper.

Trädvy Permalänk
Medlem
Registrerad
Nov 2011
Skrivet av L'ombra:

Du hade kunnat göra system("sudo python gpio-script.py"), men problemet är att GPIO kräver superuser-privilegier, vilket Apache vanligtvis inte har, så det går inte. Tror det ska gå med hjälp av WSGI, men kan inte hjälpa dig med det. (kolla efter mod_wsgi för Apache)

Jag kämpade själv länge med detta, fast med nginx istället för Apache. Lyckades till slut genom att köra en dedikerad Python-server bakom nginx.

Edit: Glömde nästan, jag fick det visst att fungera på Apache genom att kombinera system-funktionen med följande verktyg:
http://wiringpi.com/the-gpio-utility/
Upplevde det en aning långsamt (knappt en sekunds fördröjning), men om det inte är ett bekymmer så kan du testa det. Inte så svårt att komma igång, och det fixar alltså superuser-hindret.

Jag har installerat detta nu men jag är inte riktigt fullt förstående i hur detta ska kunna köra pythonscript?

Crosshair IV | 1055T @ 3.2 GHz | 4 GB Corsair dominator | Corsair H50 | Fractal Design R3 | 2x PowerColor 6950 2GB | Corsair HX 750W

Trädvy Permalänk
Medlem
Registrerad
Jun 2011

Nej, jag var nog otydlig. Det hjälper dig inte att köra Python-skript, så om det är det som är slutmålet så har du ingen nytta av detta. Men det låter dig styra GPIO. (via PHP)

T ex, för att sätta upp GPIO 17 som output och slå på den:

system("gpio -g mode 17 out") system("gpio -g write 17 1")

För att stänga av:

system("gpio -g write 17 1")

MSI Z77A-GD65 | Intel Core i5 3570K @ 4,2 GHz | Palit Geforce GTX 1070 JetStream | 16 GB Corsair Vengeance 1600 MHz

You must come with me, young ones, for I am the grim reaper.

Trädvy Permalänk
Medlem
Plats
Järfälla
Registrerad
Jan 2004

Det ska gå att exportera GPIO pinnar så att de går att styra utan root access:
http://elinux.org/RPi_Low-level_peripherals: "Additionally, it can export/un-export the GPIO devices for use by other non-root programms - e.g. Python scripts. (Although you may need to drop the calls to GPIO.Setup() in the Python scripts, and do the setup separately in a little shell script, or call the gpio program from inside Python)."

Går eventuellt att skapa något program som ligger och körs i bakgrunden (startat som root) som du anropar från PHP också.