Hallo, ich experimentiere mit dem ESP8266. Die Standard-Firmware die mit "AT"-Befehlen arbeitet ist irgendwie buggy. Jetzt habe ich die nodeMCU-Firmware entdeckt. Hier http://benlo.com/esp8266/esp8266QuickStart.html gibt es eine Website die den Einstieg supereinfach macht. Flashtool runterladen nodeMCU-Firmware flashen LuaLoader runterladen und los geht's. Habe jetzt seit mehreren Tagen dieses DS1820-Demo am laufen http://www.instructables.com/id/Low-cost-WIFI-temperature-data-logger-based-on-ESP/?lang=de&ALLSTEPS Jetzt suche ich ein Lua-Tutorial dass nicht nur so kleine Beispiel-proggies wie die die bei Lua for Windows mitgeliefert werden enthält sondern tiefer geht. Hat da schon jemand was gefunden? viele Grüße Stefan
:
Bearbeitet durch User
Hier gibts Beispiele: http://www.esp8266.com/viewforum.php?f=19 ansonsten ist LUA jetzt keine so außergewöhnlich andere Sprache, viele Konzepte "kennt man", z.B. Closures aus Javascript, und ein paar Besonderheiten sind schnell gelernt. Wenn du schon C kannst, hier mal die ersten paar Slides durchschauen: https://docs.google.com/presentation/d/1wU7QwUQGved6jpnn-oYHjv9sU3d9TlqEvhv_TqyAZwM/edit?pli=1#slide=id.i0
Hallo Linksammler, vielen Dank für deine Antwort. hm vielleicht muss ich noch etwas präzisieren: C und Java/Javascript kenne ich nicht. Ich kenne bis jezt Basic, Delphi und SPIN. Hier mal ein Lua-Beispiel das ich nicht verstehe
1 | -- Servo Control by UDP |
2 | -- http://www.esp8266.com/viewtopic.php?f=19&t=794 |
3 | |
4 | if(pl==nil) then |
5 | pl=1500 |
6 | end |
7 | port=88 |
8 | pin=9 |
9 | srv=net.createServer(net.UDP) |
10 | srv:on("receive", function(srv, pl) |
11 | print("Command Reveived") |
12 | print(pl) |
13 | --servo code |
14 | gpio.mode(pin,gpio.OUTPUT) |
15 | tmr.alarm(20, 1, function() |
16 | gpio.write(pin,gpio.HIGH) |
17 | tmr.delay(pl) |
18 | gpio.write(pin,gpio.LOW) |
19 | end) |
20 | --servo code |
21 | end) |
22 | srv:listen(port) |
Was ich ja noch raffe ist das bei srv=net.createServer(net.UDP) "srv" so eine Art Aliasname ist Was ich nicht verstehe ist wieso da einmal function mit Parametern function(srv, pl) und einmal ohne Parameter steht tmr.alarm(20, 1, function() und dann taucht da noch srv:listen(port) Ich vermute "listen(port)" ist eine Methode des Serverobjekts "net". Was ich noch nicht gefunden habe ist ein Manual was Dinge wie "listen(port)" erklärt Oder woher kann ich nachlesen, dass es einen Aufruf
1 | "srv:on("receive",... " |
gibt und welche Parameter da sonst noch definiert sind. Da wäre ich sehr dankbar für links. viele Grüße Stefan
:
Bearbeitet durch User
Stefan Ludwig schrieb: > hm vielleicht muss ich noch etwas präzisieren: > C und Java/Javascript kenne ich nicht. Ich kenne bis jezt Basic, Delphi > und SPIN. Also Delphi und Basic kannst du sicher nicht wirklich, höchstens in den primitivsten Grundzügen, sonst könntest du den LUA-Code verstehen. Der benutzt keinerlei Konzepte, die es in Delphi oder (neuzeitlichem) Basic nicht auch ganz analog gäbe. Eigentlich gibt es diese Konzepte sogar in jeder objektorientierten prozeduralen Sprache. > Was ich ja noch raffe ist das > bei srv=net.createServer(net.UDP) > > "srv" so eine Art Aliasname ist Nein, das ist einfach nur eine Variable, die auf ein Objekt zeigt. Gibt es in jeder OO-Sprache, also natürlich auch in Delphi und VB.net. Wenn es in Delphi oder VB.net eine Net-Klasse gäbe und in diesen jeweils eine Factory-Methode CreateServer(Protocol) gäbe, die eine Instanz der Server-Klasse liefert, würde die ganze Sache in den beiden Sprachen praktisch genauso wie in LUA benutzt werden: Delphi: ... var srv: Server; begin srv:=Net.CreateServer(UDP); ... VB.net: ... dim srv as Server=Net.CreateServer(UDP) ... > Was ich nicht verstehe ist wieso > da einmal function mit Parametern > function(srv, pl) > und einmal ohne Parameter steht > tmr.alarm(20, 1, function() Das sind auch wieder ganz gundlegendste Konzepte, nämlich Funktionstypen im Allgemeinen, die gibt es schon in prozeduralen nicht-OO-Sprachen, hier geht es aber spezieller um die OO-Ausprägung als Ereignis-Handler. Natürlich können und müssen Funktionstypen je nach Aufgabe unterschiedliche Funktionsprototypen haben können. Die Alarmroutine eines Timers braucht keine Parameter, denn die einzige Information "Timer ist abgelaufen" wird bereits durch die Tatsache des Aufrufs des Ereignishandlers übermittelt. Beim Empfangshandler eines Servers braucht man hingegen Parameter. Den Verweise auf den Server braucht man z.B., um diesen befragen zu können, von welchem Client denn die empfangene Nachricht kam. Und dass der Verweis auf die empfangene Nachricht nützlich ist, erschließt sich ja wohl von selbst, oder nicht? > und dann taucht da noch > srv:listen(port) > Ich vermute "listen(port)" ist eine Methode des Serverobjekts "net". Nein, das ist eine Methode der Klasse Server, konkret angewendet auf eine Instanz dieser Klasse, also ein Objekt, nämlich genau das, auf das die Objektreferenz srv verweist. Mein Gott, das ist doch alles ganz genau wie z.B. in Delphi oder VB.net. Also nochmal: du beherrschst keine dieser beiden Sprachen, höchstwahrscheinlich sogar überhaupt keine OO-Sprache. > Oder woher kann ich nachlesen, dass es einen Aufruf > >
1 | > "srv:on("receive",... " |
2 | > |
> gibt und welche Parameter da sonst noch definiert sind.
Das sollte in der Dokumentation der Server-Klasse stehen, da es sich ja
offensichtlich um ein Ereignis eben dieser Klasse handelt.
Möglicherweise ist es aber auch ein Ereignis, was die Server-Klasse von
irgendeiner Vorfahr-Klasse erbt. Dann muß man den Vererbungsbaum von
Server aufsteigend folgen, bis man die Klasse gefunden hat, die das
Ereignis einführt.
Auch wieder ganz normale OO-Konzepte.
Hallo c-hater, also erst mal ein freundliches Dankeschön fürs Antworten. Wenn ich Delphi "nur in den primitivsten Grundzügen kenne" hat das immerhin dafür gereicht 5 Jahre in einer Maschinenbaufirma als Softwareentwickler zu arbeiten. Wenn ich 2007 dort nicht aufgehört hätte wäre ich wohl immer noch dort. Du wirst jetzt wahrscheinlich denken "kein Wunder dass es mit der deutschen Wirtschaft nicht bergauf geht" ;-) Wie auch immer. Es hat dir vermutlich Spaß gemacht mit möglichst vielen Fachbegriffen zu antworten. Inzwischen bin ich fündig geworden was die Dokumentation von Lua angeht: https://github.com/nodemcu/nodemcu-firmware/wiki/nodemcu_api_en (nodeMCU basiert auf eLua) Zu "on": Es gibt da net module net.createServer() net.createConnection() net.server sub-module net.server:listen() net.server:close() net.socket sub-module net.socket:connect() net.socket:send() net.socket:on() Also wahrscheinlich wachsen die Veerbungsbäume von oben nach unten wenn "on" zu einem submodule von net gehört. Vielleicht schreibe ich aber aus Ahnungslosigkeit auch wirres Zeug ;-) Nun ja. @Dr. No: YES!!! That's it!. Der Einzeiler von Dr. No trifft genau ins Schwarze. Vielen herzlichen Dank dafür. Ich habe ja auch gegoogelt. Aber das habe ich nicht gefunden. Da kann ich wohl auch was in Sachen googeln dazulernen. Mit welchen Suchstichworten haste das denn gefunden? "Beginning Lua Programming" 673 Seiten! Wow! Das nenne ich mal eine ausführliche Beschreibung Anleitung Manual / Dokumentation zur Programmiersprache Lua. Da habe ich ja jetzt in der Tat ordentlich was zu lesen.... viele Grüße Stefan
Das (etwas veraltete) Buch zu Lua 5.0 gibts online: http://www.lua.org/pil/contents.html Da steht alles wichtige drin, was es über Lua zu wissen gibt.
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.