Gibt es eine Möglichkeit oder fertige Lösung, einen ESP8266 oder ESP32
über ein Webinterface zu programmieren?
Ich könnte mir z.B. ein Python-Terminal im Browser vorstellen.
Möglich ist das durchaus, fertige Lösungen sind mir auf Anhieb
allerdings nicht bekannt.
Wobei das auch nur dann einfach funktioniert, wenn der ESP mit einer
Firmware für eine Script-Sprache (LUA, Python, JavaScript o.Ä.)
betrieben wird, nicht mit der Arduino-Software.
Die Arduino IDE gibt es doch auch als Web-Service und der ESP kann OTA
geflasht werden.
Ist aber wahrscheinlich nicht das was du suchst.
ESPeasy lässt sich stark konfigurieren.
Lässt sich LUA nicht über IP ansprechen?
>Die Arduino IDE gibt es doch auch als Web-Service und der ESP kann OTA>geflasht werden.>Ist aber wahrscheinlich nicht das was du suchst.
Danke, darauf bin ich auch schon gestoßen. Aber es schien so, dass man
spezielle Arduino-IDE-Versionen ( 1.6.9 ... ) braucht und das war mir
suspekt.
Der Grund für mein Vorhaben: ich hatte ein Geburtstagsgeschenk mit einem
Arduino Nano-Klon und CH340 gebastelt und beim "Beschenkten" ist es dann
an der Treiberinstallation gescheitert. Ich hatte das Problem schon mal
bei verschiedenen Workshops und ich schätze, dass es bei ca. 1 von 10
Rechnern größere Probleme gibt.
Deshalb will ich jetzt etwas haben, dass direkt über den Browser ohne
Installation funktioniert.
Für die Bastelleien reicht meistens sowieso ein einfacher
Script-Interpreter mit dem man z.B. ein Servo "ge-timed" vor und zurück
laufen lassen kann oder zur Not auch mal auf einen Sensorwert triggern
kann.
>Danke, darauf bin ich auch schon gestoßen. Aber es schien so, dass man>spezielle Arduino-IDE-Versionen ( 1.6.9 ... ) braucht und das war mir>suspekt.
OTA hat nichts mit der Arduino Version zu tun. OTA wird in den ESP
geflasht und von da an kannst du per Browser dein Programm runterladen,
komplett ohne Arduino IDE.
>Deine Anforderung klingt für mich nach NodeMCU bzw. Luna Scripte. Kennst>du das?
Danke, kenne ich nicht, werde es aber mal anschauen.
Im Moment gibt's gerade ein anderes Problem: Ich habe die NodeMCUs schon
länger herum liegen, aber noch nie was damit gemacht. Jetzt habe ich mal
testweise das Arduino-AccessPoint Beispiel geflasht
https://github.com/esp8266/Arduino/blob/master/libraries/ESP8266WiFi/examples/WiFiAccessPoint/WiFiAccessPoint.ino
aber statt das sich das Ding mit "ESPap" meldet, taucht
"FarryLink_3DEEB1" mit voller Signalstärke und offen auf.
Wie muss ich das interpretieren?
> Wie muss ich das interpretieren?
Wenn man keinen bestimmten Namen festlegt wird einer automatisch
generiert nach diesem Muster. Scheinbar hast du da einen Bug entdeckt.
Bei meinem WiFi Monitor klappt das jedoch.
Dass das Ding einen AP darstellt ist Sinn dieses Programms.
Meinst du mit "offen" ohne Passwort? Im Quelltext ist aber ein Passwort
definiert und bei meinem Wifi Monitor funktioniert das auch definitiv.
Es kommt mir so vor, als hättest du ein anderes Programm installiert,
als das von Dir verlinkte.
Probiere das mal: http://stefanfrings.de/esp8266/WifiMonitor.zip
Sorry ja ich meinte LUA, nicht Luna.
>Scheinbar hast du da einen Bug entdeckt.>Bei meinem WiFi Monitor klappt das jedoch.
Zuerst hatte ich das Arduino-Blink-Programm geflasht, was einwandfrei
ging.
Dann zum Test den genannten simplen Access-Point.
Vielleicht liegt es an der Version des NodeMCU, die ich habe:
https://www.amazon.de/gp/product/B01N4OYOKD/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1
da steht "ESP8266 12E"
In der Arduino IDE kann man zwei Flashgrößen auswählen. In der
Beschreibung finde ich aber nicht welche.
>Probiere das mal: http://stefanfrings.de/esp8266/WifiMonitor.zip
Sorry, das hat sich jetzt überschnitten, weil Du nochmals editiert hast,
während ich schon schrieb.
Dein WifiMonitor meldet sich korrekt.
Warum auch immer das Arduino-Webserver mit dem falschen Namen meldet
....
Irgendwas ist seltsam. Nach Deinen WifiMonitor habe ich noch mal den
einfachen AccesPoint gefflasht. Jetzt meldet er sich mit dem richtigen
Namen, dafür kann sich mein Tablet aber nicht authentifizieren.
Für heute gebe ich's mal auf ... mal morgen weiter sehen ..
Die SSID und das Passwort werden nach jeder Änderung automatisch
dauerhaft gespeichert. Möglicherweise wird in diesem problematischen
Testprogramm die WiFi Klasse falsch initialisiert. Eventuell kommt es
auf die Reihenfolge der Befehle an:
chris schrieb:> dafür kann sich mein Tablet aber nicht authentifizieren
Sonderzeichen in der SSID evtl Mal entfernen falls welche drin sind.
Kommen immernoch nicht alle Geräte mit klar...
Danke für die Beiträge.
Mittlerweile funktioniert es. Das mit der Authentifizierung hat auch
geklappt. Es geht nur sehr lange, bis sich das Tablet mit dem ESP
verbunden hat. Scheinbar werden dafür mehrere Versuche gebraucht.
Im Moment experimentiere ich gerade ein wenig mit dem ESP-Basic.
Man kann tatsächlich den ESP über die Weboberfläche programmieren und
hier gibt es Beispiele dazu:
https://www.esp8266basic.com/examples.html
Der Syntax Unterscheidet sich ein wenig von dem was ich kenne.
Die "delay" Funktion funktioniert nur im Sekundenbereich gut. Alles was
schneller sein soll ist ungleichmäßig.
Außerdem musste ich erst die Pin-Zuordnung heraus finden. Es werden
nämlich nicht die logischen PinNummern ( D0, D1, D2 usw ) sondern die
GPIO PinNummern verwendet.
Was ich auch noch nicht weiß: gibt es einen Autostart? Sonst muss man
jedesmal zuerst in der Weboberfläche das Programm starten.
> Die "delay" Funktion funktioniert nur im Sekundenbereich gut. Alles> was schneller sein soll ist ungleichmäßig.
Das liegt an der Funktionsweise der Firmware und dürfte jede
Programmiersprache betreffen.
>Das liegt an der Funktionsweise der Firmware und dürfte jede>Programmiersprache betreffen.
Vermutlich die Routinen für den Wifi-Zugriff.
Gibt es so was ähnliches wie das ESP8266-Basic für den ES32? Da sollte
das Problem dann vermeidbar sein.
>Autostart hat das, glaub nach einer minute
Ich habe es gerade raus gefunden: In den "Settings" muss man ein
Häckchen setzen, dann startet es nach einer Weile automatisch.
Der Aufbau des ESP8266-Basic ist interessant. Es wird die Arduino-API
als Unterbau benutzt.
Ich hatte mich schon gewundert, warum das Basic so viel Peripherie wie
z.B. TFT-Displays unterstützt. Durch die Arduino-API können die ganzen
für Arduino verfügbaren Libraries eingebunden werden und damit steht ein
riesiges Treiber-Reservoir zur Verfügung.
An das Basic werden dann nur noch die Treiber über Basic-Kommandos drann
gehängt.
Hier ist das Kommandointerpreter-File:
https://github.com/esp8266/Basic/blob/NewWebSockets/ESP8266Basic/Commands.ino
Das ESP-Basic hat schon einige graphische Bedienelement eingebaut, die
es in eine HTML-Seite einbinden kann.
Ich habe mal alle Elemente in eine GUI-Demo gepackt, die ich gefunden
habe.
Python finde ich auch besser als Basic. Ich weiß aber nicht wie gut sich
MicroPython gegenüber Python schlägt.
Wenn ich es richtig sehe, braucht WebRepl auch eine Installation auf der
Rechnerseite.
EspBasic hat demgegenüber einen riesigen Vorteil. Man kann einfach über
den Browser darauf zugreifen. Ob über's Smartphone, Tablet, Mac, Linux,
Windows: es funktioniert überall über den Webbrowser. Das ist in einer
Zeit, in der man 50% seiner Zeit mit der Suche von Installationsfehlern
beschäftigt ist, Gold wert.
chris schrieb:> Für was steht WebRepl? Web-Reply?
REPL steht für "Read-Eval-Print-Loop":
https://en.wikipedia.org/wiki/Read%E2%80%93eval%E2%80%93print_loop
Etwas vereinfacht gesagt:
Mit REPL bezeichnet man die Shell bei Programmiersprachen, die eine
interaktive Shell anbieten (z.B. Python, JavaScript, Node.js, LUA, LISP
usw.).
Eine solche interaktive Shell (ein "Webinterface" ist ja eigentlich auch
nichts anderes) hängt eng mit der Verfügbarkeit einer "eval"-Funktion
zusammen: Wenn eine Programmiersprache eine "eval"(uate)-Funktion hat,
dann hat die Programmiersprache normalerweise auch eine interaktive
Shell, und dann ist es normalerweise auch sehr einfach möglich, ihr ein
"Webinterface" zu verpassen.
Und eine "eval"-Funktion haben normalerweise nur interpretierbare
Script-Sprachen, die vor der Ausführung nicht erst (wie z.B. Java- oder
C/C++-Code) kompiliert werden müssen.
Der Name REPL kommt von LISP, wo sich eine interaktive Shell als
Einzeiler aus genau diesen vier Befehlen implementieren lässt:
>Das passt möglicherweise nicht zu deinem 8MB Binary.
Das wäre ein gutes Argument, aber ich habe das Binary von hier:
http://micropython.org/download#esp32
und wenn ich es richtig sehe, hat es kleiner 1MByte:
>Auto-detected Flash size: 4MB>Compressed 936288 bytes to 587494...
Mit Teraterm auf Windows funktioniert MicroPython einwandfrei ( VT100
Emulation ).
Mit Minicom auf Linux erhält MicroPython scheinbar keine
Tastatureingaben ( Einstellung VT102 )
ich habe mal Micropython an 0x00000 geflasht und siehe da, es geht auch
mit minicom unter Linux:
./esptool.py --port /dev/ttyUSB0 --baud 115200 write_flash 0
esp8266-20171101-v1.9.3.bin
1
l�#4 ets_task(40100130, 3, 3fff837c, 4)
2
OSError: [Errno 2] ENOENT
3
4
MicroPython v1.9.3-8-g63826ac5c on 2017-11-01; ESP module with ESP8266
Meine Installation war für den dem ESP32, weil ich vermute, dass der
weniger durch Webzugriffe ausgebremst wird und hoffe, dass für das
Micropython auch der zweite Kern benutzt wird.
1
Detectingchiptype...ESP32
Im Moment tendiere ich aber noch zu ESP8266BAsic, da es dort einfache
Graphikbeispiele für den Webbrowser gibt:
https://www.esp8266basic.com/graphics-example.html
Gibt es ähnliche Graphikwebserverbeispiele für Micropython?
Der ESP8266 läuft normalerweise mit 80Mhz. Davon geht nur ein Bruchteil
für die Netzwerk-Kommunikation drauf (laut Hersteller 1/4). Man kann die
Taktfrequenz darüber hinaus nochmal verdoppeln.
> ESP32, weil ich vermute, dass der weniger durch Webzugriffe> ausgebremst wird
Mach Dir darüber weniger Sorgen.