moin @ all, ich habe an meinem raspberry pi einen attiny261A über I2C angeschlossen. Desweiteren fungiert das raspberry pi als AccessPoint mit webserver. Die einzelnen Kommunikationsstränge funktionieren alle einwandfrei. Also: Ich kann mich mit einem Client (Handy) im Netzwerk vom raspberry pi anmelden und eine website herunterladen. Desweiteren kann ich per PHP Script über den I2C-Bus auf den Attiny zugreifen und eine LED ein / aus schalten. Mein Problem: Wenn ich vom Client das PHP Script aufrufe, um die LED ein / aus zuschalten, wird das Skript ausgeführt, es wird aber nicht auf den I2C-Bus zugegriffen. Nochmal ausführlich: 1. Aufruf als user: ich melde mich als www-data (webserver) user auf dem raspberry pi an. Danach rufe ich das php skript auf. Dieses greift über i2c auf den attiny zu und schaltet die led ein / aus -> wunderbar, es funktioniert alles... 2. Aufruf als client: ich melde mich per handy im netzwerk an. Danach rufe ich das PHP skript über den webbrowser auf. Ich bekomme auf dem Handy-Display, dass das Skript ausgeführt worden ist, jedoch tut sich am I2C Bus nichts. So langsam weis ich nicht mehr weiter. p.s.: Ich habe auserdem versucht, den attiny über i2c auszulesen und mir auf per skript ausgeben zu lassen. Unter Weg 1 funktionierts, Weg 2 scheitere ich... Wo liegt das Problem?
:
Verschoben durch User
Ohne dein Setup in der Hand zu haben stochert man da ziemlich im Dunkeln ... Schau mal, ob der Benutzer, der den Websever ausführt, Zugrifssrechte auf das i2c-Device-File hat. Dieser Benutzer ist i.d.R. nicht dein normaler Login-User und schon gar nicht root (sondern heißt www-data oder sonstwie). Grüße, Sven
Danke für die Anregung, inzwischen habe ich das Problem gefunden: Ich habe nicht den kompletten Pfad zur "Exe" angegeben, sondern nur den Namen ohne Pfad, da dieser als Standardnutzer, sowie als root oder als www-data mit pfad interpretiert wird... jetzt mit kompletter Pfadangabe funktioniert es! Ein anderer Hinweis der mich dorthin brachte: Immer Logfiles anschauen von den ausführenden Programmen!!! und Fehler anzeigen lassen, was geht, PHP hat dafür auch eine Funktion
Noch ein Pauschal-hint um dir möglicherweise zukünftig einige Nerven zu ersparen: Falls der Bus sich sporadisch aufhänge sollte oder ähnliche Auffälligkeiten zeigt liegt das warscheinlich am verbuggten I²C interface des Broadcom-SOC. Die Hardware kann nämlich nur zum Teil mit clock-stretching umgehen (nur zu bestimmten Zeitpunkten). Mit dem I²C-Interface der AVRs beist sich das aber, weil die beliebig stretchen wenn nötig. Funktioniert also nur so lange wie der AVR den I²C ohne Wartezeiten bedienen kann..
was dann? Einen Ersatz bräuchte ich dann aber doch, ohne geht an der Stelle leider nicht
Schau mal in den Sicherheitseinstellungen der php.ini. Da kann man z.B. dem mod_php verbieten, auf Dateien (z.B. i2c-devicenodes) ausserhalb des Webserver-Roots zuzugreifen. Das Kommandozeilen-PHP hat eine eigene php.ini mit anderen Sicherheitseinstellungen, da ist sowas eher erlaubt.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.