I2C über Web / PHP

OP #3780956
Lesenswert?

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?
#3781244
Lesenswert?

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
OP #3781416
Lesenswert?

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
#3781418
Lesenswert?

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..
#3781627
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren