[Gelöst] Python Skript ausführen? GPIOs steuern?

huxtebude

Neuer User
Mitglied seit
25 Jun 2014
Beiträge
5
Punkte für Reaktionen
0
Punkte
0
Hallo zusammen,

jetzt habe ich doch nochmal eine Frage:
Ich möchte auf meinem Raspberry über Asterisk gesteuert ein Python Skript ausführen. Oder alternativ auch nur die GPIOs an-/ausschalten (was ich bisher über Python erledige).
Das Python Skript funktioniert, ich habe das mit einer LED getestet.

Leider startet Asterisk meine Skripte nicht. Ich habe eine Extension erstellt:
Code:
[abcd] 
exten => s,1,Answer
exten => s,n,System(sudo python /usr/lib/python2.7/testneu.py)
exten => s,n,Wait(5)
exten => s,n,Hangup()

Die wird auch ausgeführt, wenn ich anrufe.
Asterisk gibt Folgendes aus:
Code:
    -- Executing [3@ivr-1:1] Goto("SIP/622_-00000000", "abcd,s,1") in new stack
    -- Goto (abcd,s,1)
    -- Executing [s@abcd:1] Answer("SIP/622_-00000000", "") in new stack
    -- Executing [s@abcd:2] System("SIP/622_-00000000", "sudo python /usr/lib/python2.7/testneu.py") in new stack
    -- Executing [s@abcd:3] Wait("SIP/622_-00000000", "5") in new stack
    -- Executing [s@abcd:4] Hangup("SIP/622_-00000000", "") in new stack
  == Spawn extension (abcd, s, 4) exited non-zero on 'SIP/622_-00000000'

Erste Zeile im Skript lautet:
#!/usr/bin/python

Nur tut sich bei der LED nichts. Das Skript direkt in der Shell ausgeführt funktioniert einwandfrei. Auch über eine AGI habe ich es probiert, mit ungefähr dem gleichen Ergebnis.
Mittlerweile habe ich Asterisk als root laufen (zumindest so in der entsprechenden config-Datei eingetragen) und das Skript selbst hat 777 eingetragen, sollte also ausführbar sein.

Ich wäre euch sehr dankbar, wenn ihr mir einen Tipp gebt, wie ich doch noch zum an- / auschalten meiner GPIOs komme, am liebsten wäre mir das erfolgreiche Ausführen der Python Skripte.

Grüße
Florian
 
Zuletzt bearbeitet:
Meine erste Idee: Lass das sudo weg und gib dafür den vollständigen Pfad zu Phyton an.

Du kannst auch mal SHELL() statt System nehmen und Dir die Ausgabe anzeigen lassen.
 
Hi Rentier,

danke für die Tipps! Leider hat das aber nicht geholfen. Und bei SHELL() sagt er mir:
[2014-07-08 19:09:53] WARNING[2993][C-0000000d]: pbx.c:4869 pbx_extension_helper: No application 'SHELL' for extension (abcd, s, 2)

habe auch exec() versucht:
[2014-07-08 19:07:55] WARNING[2979][C-0000000c]: app_exec.c:160 exec_exec: Could not find application (/usr/bin/python /usr/lib/python2.7/testneu.py)

Das gleiche direkt in der shell eingegeben funktioniert einwandfrei. Ich verstehe nicht, warum Asterisk es nicht ausführen kann :noidea:

Grüße
Florian

edit: Das Gleiche übrigens mit WiringPi und den GPIO-Befehlen. Wenn ich direkt in der shell gpio..... eingebe, kann ich die Kanäle ein- und ausschalten, mahce ich das gleiche über Asterisk, passiert einfach nichts.
 
Zuletzt bearbeitet:
Mach mal ps aux | grep -i asterisk

Kann ja eigentlich nur ein Berechtigungsproblem sein. Ist das ein normales Raspbian, oder hast Du irgendwelche Spezialitäten?

Exec ist für was anderes. Shell ist eine Funktion, mit der man, anders als bei System, die Rückgabe des Aufrufs bekommt.
Code:
exten => abc,1,Set(out=${SHELL(/usr/bin/python /usr/lib/python2.7/testneu.py)})
exten => abc,n,Noop(${out})
 
Hi nochmal!

Ich habe es mittlerweile geschafft. Hier hatte jemand wohl ein ähnliches Problem. Ich habe es nun so gelöst, wie VoipUser es in seinem letzten Post erklärt. Ein Bashskript erstellen und Asterisk die sudo-Rechte dafür geben. Kommt mir umständlich vor, aber für meinen Zweck reicht das völlig :-)
Vielen Dank für die Hilfe!
Florian
 
Schön wenn Du eine Lösungen gefunden hast.

Bitte ergänze den Thread-Titel um das Prefix "gelöst", dazu im 1. Beitrag auf Bearbeiten -> Erweitert.
 
Kostenlos!

Statistik des Forums

Themen
249,052
Beiträge
2,309,531
Mitglieder
378,850
Neuestes Mitglied
IchBinEsDoch