Hallo alle zusammen,
mein Hintergrundwissen zu Linux hält sich noch in Grenzen und nun stehe
ich vor einem Problem dem ich auch mit Google und co einfach nicht auf
die Spur komme.
zur Hardware: Ich verwende einen Odroid U3 mit I/O-Shield als Server
meiner Homepage. Nun war mein Gedanke, das es praktisch wäre weitere
Elektronik über eine Webseite ansteuern zu können.
Also: Webseite > PHP > Weg xyz > Serielle Verbindung > ATMEGA 328P des
I/O-Shields > weitere Elektronik und zurück.
Mein Problem liegt bei der Kommunikation zwischen PHP und der seriellen
Schnittstelle.
3 Lösungsansätze habe ich bisher. Keiner davon erfüllt seinen Zweck.
1. eine PHPClass die die Kommunikation übernimmt.(Dazu habe ich etwas
gefunden und herumprobiert aber kein sinnvolles Ergebnis)
2. proc_open und picocom (Die Kommunikation mit picocom auf /dev/ttySAC0
zum Shield funktioniert in der Kommandozeile wunderbar, aber in PHP über
proc_open aufgerufen liefert picocom den Fehler "Filedes is not a tty".
Ab hier kam ich auch mit Google nicht weiter.
3. serial-port-json-server ... läuft autark von Apache. Wird über
localhost:port angesprochen. Daten senden funktioniert. Empfangen noch
nicht. Aber das klärt sich auch noch. Größte Hürde hier ist die
Startbedingung. Starte ich ihn über Kommandozeile oder ssh kann er die
Verbindungen unter dev auflisten und ansprechen. Starte ich ihn in
einem Script als Dienst beim Systemstart kann er das nicht.
An das Eintragen der verwendeten User in die Gruppe dialout habe ich
gedacht.
Meine Hauptfrage dabei ist, wieso es bei 2. und 3. darauf ankommt ob ich
ssh/shell verwende oder der Programmaufruf über Apache bzw. als Dienst
beim Starten aufgerufen wird.
Die andere wäre. Gibt es einen eleganteren Weg als 2. und 3. um eine
bidirektionale Verbindung zu realisieren?
Eine Lösung für Variante 3 würde mich am meisten interessieren da man
mit dem serial-port-json-server auch gleich hex-dateien auf den ATMEGA
übertragen kann.
Ich freue mich über jede Anregung in die richtige Richtung.
mfg Philipp