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.
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.
>@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?
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.