Hallo zusammen, folgende Aufgabenstellung: mein µC Projekt (ATMega128) soll mit der Welt sprechen, sprich ich will via (lokalem) Netzwerk Parameter einstellen und abfragen. Als Interface wird ein ESP8266 genutzt und soll via AT Befehle kommunizieren. Das Ganze soll am Ende auf einer Website dargestellt und zum interagieren einladen. Soweit, so gut. Es stellt sich nun die Frage, wie am besten realisieren. 1. Webserver auf µC - "hart programmierte" Webseiten sind sehr unschön, da schnell der RAM auf dem ATMega ausgeht - alternativ auf SD KArte eine Webseitenvorlage ablegen? 2. Script oder ähnliches - evtl können per GET/POST Variablen übergeben und weiterverarbeitet werden, sodass am Ende eine Website ensteht (vom PHP Script generiert). 3. andere Möglichkeiten? Seitens PHP/Script bin ich absoluter Neuling, frage mich daher, welches meine Optionen sind und was ich dazu bräuchte? Einen Webserver (nicht µC) um PHP laufen zu lassen ist klar, aber sonst? Lässt sich das überhaupt mit mittelmässigem Aufwand umsetzten? Kennt dazu vielleicht jemand ein Tutorial o.ä. anhand dem man sich soweit wie nötig einarbeiten kann? Die Daten vom/zum µC müssen auch aufbereitet werden, sind also nicht in Klartext sondern Datenpaketen organisiert. Bis jetzt mache ich das per VB Programm über die serielle Schnittstelle. Bin für jede Hilfestellung dankbar! Gruß Tom
>Seitens PHP/Script bin ich absoluter Neuling, frage mich daher, welches
meine Optionen sind und was ich dazu bräuchte? Einen Webserver (nicht
µC) um PHP laufen zu lassen ist klar, aber sonst?
Das ist etwas wenig, resp reicht nicht. Du musst in HTML, Javascript und
PHP fit sein. Die Webseite sollte man in einem Flash spechern, in einem
externen flash. Und php brauchst du in diesem Fall nicht. Php wird auf
dem Server ausgefuehrt. Was du brauchst ist ein paar Anfragen in ein
paar Antworten umzuwandeln. Sprich einen Trivialstinterpreter. Die
Anfrage kommt als GET /index.html?write=Port3.5, dann macht man das
eben. Die Menge an Befehlen kannst du ja festlegen da du ja auch die
Webseite machst.
Ich hab das mal fuer einen Mega32 geschrieben.
Die Webseite selber könnte man auch wo anders ablegen (irgend ein webhoster), damit kann man auch Bilder usw. einbinden. Die Webseite selber ruft dann mit JavaScript die Daten von deinem µC ab. Der µC liefert also nur Daten aus, sinnvoll ist da z.b. das json Format.
Tom schrieb: > Als Interface wird ein ESP8266 genutzt und soll via AT > Befehle kommunizieren. Genau da bin ich auch gerade dran. Einen ESP per AT-Kpmmandos als Webserver zu benutzen, ist irgendwie vergleichbar damit, einen Flur durch einen Briefkastenschlitz zu tapezieren: http://www.witze-fun.de/witze/witz/1174 Martin schrieb am November 15, 2014: > I’ve decided not to use external MCU and utilize the chip itself > for a proof-of-concept project. http://harizanov.com/2014/11/esp8266-powered-web-server-led-control-dht22-temperaturehumidity-sensor-reading/ Langfristig macht das vermutlich mehr Sinn, aber derzeit werde ich das auch erstmal mit einem einfachen AT-Protokoll machen. Frank hat einen "Network Listener (UDP) zum Fernsteuern über WLAN" umgesetzt, siehe Beitrag "Re: Minutengenaue 24 Stunden-Wortuhr - wer will mitbauen?" . Für ein Proof-of-concept warte ich erstmal auf "+IPD", parse die nächsten 3..17 Zeichen und mehr werde ich durch diesen Briefkastenschlitz^^ voraussichtlich nicht umsetzen. Bist Du Dir sicher, dass Du das so machen willst? Je nach Ziel des Projektes könnte es auch sein, später weitere Exemplare aufzubauen, dann muss man neue ESPs nachkaufen und der AT-Befehlssatz verändert sich. Ich würde mich nicht auf Abwärts-Kompatibilität verlassen. Irgendwann fliegt z.B. das "no that fun" bestimmt raus. ;-) Falls man eh FW flashen muss, könnte man auch gleich 'ne eigene flashen. Aber das kann man diskutieren, ich bin gespannt. SD-Karte finde ich gut, die kosten ja nur 3..4€ incl. Slot. Aber … Peter II schrieb: > Die Webseite selber könnte man auch wo anders ablegen (irgend ein > webhoster), damit kann man auch Bilder usw. einbinden. Um "die niedrig hängenden Früchte zuerst zu ernten" ist das zumindest für den Anfang sicher besser. Je nach Anwendung reicht ja auch eine Fritz!box oder ein ausgedienter Windows- oder Linux-PC.
:
Bearbeitet durch User
Hallo zusammen, zunächst gilt es (für meine Anwendung) drei Info's nachzuschieben 1. Ich greife hier auf eine bestehende HW (Haussteuerung zu), Modifikationen seitens SW sind möglich, seitens HW beschränkt 2. Webserver in Form einer Netzwerkplatte, die einen kleinen "Service" dahingehend offeriert, ist vorhanden. 3. der Datenverkehr hält sich in Grenzen, momentan sind dies ca bis zu 500 Byte reine Daten, die übermittelt werden (nicht optimiert) @Jetzt Nicht gibt es eine Möglichkeit, Deinen umgesetzten Code einzusehen? @Peter II Daten ablegen klingt gut, da kann mein NAS WebServer herhalten. Trotzdem (oder erst recht) muß jetzt mit irgend einer Scriptsprache der Datenverkehr zu einer Website aufbereitet werden @Torsten C wenn ich das richtig verstehe, plädierts Du für den kompletten Webserver im ESP - sicher langfristig das sinnvollste, dazu muss mann sich aber in das SDK zum ESP einarbeiten mit allen Tricks/Kniffs/Problemen die dran hängen - das ist eine Baustelle für sich. Der Network Listener klingt interessant, muss ich mal in Ruhe ansehen. Die SD-Karten Option würde (zumindest für mich) wahrscheinlich auch durch den Breifkasten reichen, da die finale Website sicher überschaubar bleiben wird.
Tom schrieb: > @Torsten C > wenn ich das richtig verstehe, plädierts Du für den kompletten Webserver > im ESP - sicher langfristig das sinnvollste, dazu muss mann sich aber in > das SDK zum ESP einarbeiten mit allen Tricks/Kniffs/Problemen die dran > hängen - das ist eine Baustelle für sich. > Der Network Listener klingt interessant, muss ich mal in Ruhe ansehen. > Die SD-Karten Option würde (zumindest für mich) wahrscheinlich auch > durch den Breifkasten reichen, da die finale Website sicher überschaubar > bleiben wird. flashe einfach die nodemcu firmware. hier ein simpler webserver.
1 | srv=net.createServer(net.TCP) |
2 | srv:listen(80,function(conn) |
3 | conn:on("receive",function(conn,payload) |
4 | print(payload) |
5 | conn:send("<h1> Hello, NodeMcu.</h1>") |
6 | end) |
7 | conn:on("sent",function(conn) conn:close() end) |
8 | end) |
die daten die er schlussendlich anzeigen soll kannst du dir dann per uart vom mega holen
Tom schrieb: > @Peter II > Daten ablegen klingt gut, da kann mein NAS WebServer herhalten. Trotzdem > (oder erst recht) muß jetzt mit irgend einer Scriptsprache der > Datenverkehr zu einer Website aufbereitet werden nein. auf deinem NAS liegt alle Resourcen (Bilder, CSS und Javascript). Das Javascript wird dann im Browser ausgeführt und lädt die Daten von deinem µC. du brauchst also keinen Webserver dir irgendwelche scripte ausführt.
Tom schrieb: > dazu muss mann sich aber in > das SDK zum ESP einarbeiten mit allen Tricks/Kniffs/Problemen die dran > hängen - das ist eine Baustelle für sich. Das musst Du gar nicht, denn Martin^^ schreibt ja: > The application source code is available here: app, includes the > binaries so you can directly flash those without having to set up > the SDK environment Vielliecht bokommt man das ja in ein bis zwei Stunden zum laufen und mus gar nicht viel verändern. Ich hab's noch nicht probiert. Vielleicht stellt ja auch "jetztnicht" seinen Source zur Verfügung. ansonsten findet man, wenn man nach "esp8266 webserver" googelt, noch andere fertige Briefkasten-Lösungen incl. Source-Code.
:
Bearbeitet durch User
>@Jetzt Nicht
gibt es eine Möglichkeit, Deinen umgesetzten Code einzusehen?
Nein, leider nicht. Die Befehle kamen als ASCII rein, http eben.
Als GET & PUT, wobei PUT aehnlich wie POST funktioniert.
GET waren Seitenanfragen. Da war ein reelles Filesystem, mit Files auf
einem dem Prozessor externen seriellen Flash. Das Filesystem war eine
verlinkte Liste, sehr einfach gestaltet. Es konnten auch einfach
Variablen abgefragt werden, dann kam ein JSON File zurueck. Durch GET
parameter der ?/& Sorte konnten Variablen gelesen und geschrieben, und
in eine Seite eingebaut werden.
PUT wurde fuer das Hochladen von Webseiten verwendet. Die wurden dann in
das Filesystem im Flash geschrieben.
Die Anbindung war ueber die serielle Schnittstelle, Bus moeglich. Dann
hat man noch einen Middleware Server auf dem lokalen PC, sofern das
Device nur lokal verwendet werden sollte, resp einen Middleware Server
auf einer Ethernet basierten Hardware benotigt, falls man es denn an
einem Router haben wollte. Dieser Middleware Server (PC lokal, oder
Hardware) hat eigentlich nur einen Socket auf die serielle Schnittstelle
umgesetzt und etwas gecacht.
Bei solchen Projekten sollte man auf den Energieverbrauch achten. Extra
einen lokalen Server mit einer Platte mitlaufen zu lassen ist nicht
wirklich effizient.
Hast du nicht die Möglichkeit, einen RaspberryPi oder ähnliches die Daten von deinen Atmega(s) einsammeln zu lassen?(von mir aus auch per WLAN, was ja noch Aufwand genug ist) Auf so einem System dann Webseiten zu generieren macht doch wesentlich mehr Spass, als damit einen Atmel zu quälen
Ein Raspi hat etwas mehr Leistung, das Problem ist aber dasselbe. Welchen Durchsatz moechte man denn ? Fuer ein paar Temperaturen macht ein Raspi keinen Sinn. fuer eine Trace wie von einem Scope, oder Logicanalyer in Echtzeit schon, dann muss man einen Videostream in einer Webseite erzeugen.
ich bin gerade an einem ähnlichen Projekt. Alle 15 Minuten werden per uc Temperaturen gemessen und auf sd-Karte gespeichert. Für jeden Tag wird eine neue Datei auf der sd karte angelegt. Ergibt 96 x 20 x 16bit Temperaturwerte. Die uc-sd-Karte wird vom PC per http/Ethernet ausgelesen und gespeichert. Die gesammelten Dateien werden dann von einem vb.net-Programm ausgewertet. Man spart auf diese Weise den uc-Webserver und hat für die Auswertung die volle PC-Rechenleistung zur Verfügung. Beitrag "Re: Anpassung U.Radig-Webserver mit UDP für ARM CORTEX"
Jetzt Nicht schrieb: > das Problem ist aber dasselbe Auf einem Raspi kann der OP aber einen LAMP-Server laufen lassen und hat dazu jede Menge Tutorials. Der Raspi hat ja auch selbst ein paar GPIOs, vielleicht kommt der OP damit sogar ganz ohne weitere µCs aus?
:
Bearbeitet durch User
Jetzt Nicht schrieb: > Ein Raspi hat etwas mehr Leistung, das Problem ist aber dasselbe. > Welchen Durchsatz moechte man denn ? Fuer ein paar Temperaturen macht > ein Raspi keinen Sinn. wiso nicht? Auch wenn das wie Kannonen-auf-Spatzen ist, so ein Raspberry ist eine einfache und preiswerte Möglichkeite um Geräte mit geringem Aufwand ins Netzwerk zu bringen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.