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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.