I2C über Web / PHP

OP #3780956
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
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
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
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
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

Eine eigene Frage? Dieser Thread ist über 12 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.