Es gibt noch ein Problem: Du möchtest ja schätzungsweise im Browser sehen wann die Schachtel angekommen ist. PHP ist aber Serverseitig, d.h. der Browser müsste jetzt alle 5Sekunden oder so die Seite reloaden damit der Server nachsieht ob die Schachtel bereits angekommen ist oder nicht und dir die dementsprechende Meldung im Browser anzeigt

Ich würds so machen:

1. Du gehst auf die index.php und verlangst Kerkos
2. Du wirst nach bestellung.php weitergeleitet. Die bestellung.php sieht in der MySQL-Datenbank nach in welcher Schachtel (z.B. 58 die Elkos liegen (und evtl. wie viele)
3. Die bestellung.php sendet via UART an den AVR z.B. "GET58" (z.B. echo "GET58" > /dev/ttyUSB0 ausführen). Der macht sich auf den Weg die Schachtel zu hohlen
4. Die bestellung.php verlinkt dich auf "wait.php", die sich alle 5 Sekunden reloadet (um zu prüfen ob die Schachtel schon angekommen ist)
5. Wennn der Server die anfrage der "wait.php" bekommt, schaut er (z.B. via cat /dev/ttyUSB0) ob er schon ein "58DONE" oder so gekriegt hat. Falls nicht -> Browser bekommt wieder wait.php
6. Ist der AVR fertig, so sendet er "58DONE" via UART an den Server
7. Bei der nächsten Anfrage der wait.php wird mit cat geprüft ob "58DONE" in Buffer für die serielle Schnittstelle steht
8. Wenns drinsteht: Browser wird auf eine done.php geschickt, auf der z.B. steht "Schachtel Nummer 58 mit 21 (<- Datenbank) Kerkos bereit" oder so
9. Jetz gehst du zum Lager und nimmst dir 3 Kerkos aus der Schachtel
10. Dann gibst du auf einem Tastenfeld (das an den AVR angeschlossen ist) 18 ein, um mitzuteilen, dass noch 18 Stk. in der Schachtel sind.
11. Dann sendet der AVR z.B. "58:18STK" an der Server
12. Auf der done.php drückst du auf "OK"
13. OK = Link auf "einlagern.php" -> Server liest per cat die serielle Schnittstelle ein, bekommt "58:18STK" aus dem Buffer. Er aktualisiert jetzt in der Datenbank und verlinkt dich auf einlagern_wait.php und sendet mit cat "BACK58" an den AVR. Daraufhin beginnt der AVR mit einlagern
14. Die einlagern_wait.php reloadet sich auch alle 5 Sekunden, dann wird jedes mal geprüft, ob ein "58DONE" im Buffer steht. Wenn nicht -> Wieder nach einlagern_wait.php
15. Ist der AVR fertig, sendet er "58DONE" über die serielle Schnittstelle
16. Bei der nächsten Anfrage der einlagern_wait.php liest die php-Seite "58DONE" mit cat aus dem Buffer der seriellen Schnittstelle, ist zufrieden und schickt dich wieder auf die index.php


z.B. 3 Aufträge erteilen
Dafür müsste man sich noch was überlegen, sollte aber durchaus möglich sein :-D

Gruß
-schumi-