Pins vom ESP8266 D1 mini mit Hilfe von Python Konfigurieren

ESP8266 Code = Arduino Software Code
Hallo an alle,

Ich habe ein kleines teil Projekt was zu einem großen Projekt führt.

Ich will in einem Python Programm, über WLAN die Pins am ESP8266 D1 mini Konfigurieren.
Also ich will dynamische variablen erstellen, die beliebig heißen können und den Ausgang genau festlegen also INPUT/OUTPUT. Die ganzen Daten will ich von meinem Python Programm übers WLAN mitgeben können. Wichtig die Variabel existiert noch garnicht im ESP8266 Code, die Variabel wird wirklich erst dann erstellt, wenn ich die Daten der Variabel über mein Python Programm mitgebe.

Beispiel:

Variabel = ledStatus = 1;
pinMode(ledStatus, OUTPUT);

genau das soll mein Python Programm mitgeben und der ESP8266 Code erstellt automatisch die Variabel und den Pin Status, ohne das es vorher im ESP8266 Code existiert hat.

Anmerkungen:

  • Benutze kein Micropython und will es auch nicht benutzen.
  • Benutze die Arduino Software
  • ESP8266 D1 mini
  • Benutze Python 3.10
  • ESP8266 erstellt sein eigenes WLAN (Access Point)

wär mir gerne helfen möchte, findet mich auch bei Telegram.
Dann kann man vielleicht über Zoom eine Videokonferenz machen, weil ich finde, wenn man spricht hat man den besten Lerneffekt.

Telegram: @Tobias_72003

Das ist nur eine grobe Erklärung, wenn mich welche in Telegram besuchen, kann ich das noch mal besser erklären.

Würde mich auf Rückmeldung freuen und auf Unterstützung.

Im englischen Teil des Forum müssen die Beiträge und Diskussionen in englischer Sprache verfasst werden. Deswegen wurde diese Diskussion in den deutschen Teil des Forums verschoben.

mfg ein Moderator.

Entschuldigung. Danke.

Nochmal zum Verständnis: Willst Du C++-Code generieren, der dann übersetzt wird oder willst Du ein "generisches ESP Programm", dass Du aus einem Python-Programm heraus (wie - seriel, WLAN, voodoo, ... ?) konfigurieren willst?

Irgendwie kommt mir das reichlich konfus vor.

Gruß Tommy

Ich würde sagen, Du brauchst ein Program auf dem ESP8266, das einfach Daten entgegennimmt und dann dementsprechend Ausgänge definiert und den Zustand schaltet.

Lies Dich mal in die firmata Bibliothek ein:

https://docs.arduino.cc/retired/hacking/software/FirmataLibrary/

Da gibt es auch Beispiele für Python.

Grüße Uwe

Ich habe schon einen ESP8266 code, auf dem ESP8266 ist ein Programm was einen Webserver erstellt, den brauche ich damit ich über Python mit WLAN die Pins am ESP8266 konfigurieren kann.
mfg.

Danke, werde mich mal einlesen.

genau, dafür habe ich einen Webserver auf dem ESP, der die Daten entgegen nehmen soll.

du möchtest also

Variabel = ledStatus = 1;

übergeben und was soll der ESP dann daraus exakt machen?!?

weiters möchtest du

pinMode(ledStatus, OUTPUT);

übergeben - also Arduino C++ - und der ESP soll das zur Laufzeit verarbeiten können?

Sorry, das kann so nicht klappen.

Ich denke du sollst noch mal genauer beschreiben was du erreichen willst.

was geht ist das du dir ein Protokoll ausdenkst, das
Pins als ein oder Ausgang definiert
Pins entsprechend liest oder schreibt.

du musst dann eben die Zeile parsen und Funktionalitäten am ESP auslösen.
Aber lös dich davon, C++ Sourcecode übertragen zu wollen der dann am ESP compiliert wird und dann "inline" ausgeführt werden soll.

Hallo,
Grundsätzlich solltest Du Dir uber die Unterschiede von Compiler und Interpreter im Klaren sein.
Das heißt Dein Python Programm generiert einen C++ code, meinetwegen aus einer Vorlage heraus, bei dem an bestimmten Stellen, markiert durch Platzhalter, Programmzeilen eingefügt werden. Den code der ja letztlich eine Textdatei ist liest Du dann in die IDE ein und lässt Ihn normal compilieren und übertragen. Sowas in der Art ?

Du willst einen generischen Sketch, der die wenigen Pins eines ESP8266 verwaltet, diese im laufenden Betrieb zwischen Eingang und Ausgang hin und her schaltet und falls Ausgang, den Zustand setzt.

Diese Verwaltung macht ein Webserver auf dem ESP8266, der auf einer Webseite den Zustand der Pins darstellt und per GET oder PUT entsprechende Kommandos vom Web Client (Browser oder --wenn es denn sein muss-- Python-App) bekommt.

Sehr schön.
Und welches Problem hast du dabei konkret?

Hallo,
@michael_x ich denke das ist für Deinen Ansatz das k.o. Kriterium

Gruß Heinz

Den paar Pins kann man auch beliebige Texte zuweisen, die wenn nötig sogar im laufenden Betrieb geändert werden können. Ob man da festen begrenzten RAM für die "Variablennamen" oder das dynamisch flexibel macht, ist beides kein k.o. Kriterium, denke ich.

Sinn und Spaß eines Forums ist eher, zu raten, was der Fragesteller eigentlich will :wink:

Der Name der Variablen muss ja nur nach Außen (in der Webseite) erscheinen. Intern kann es ja ein Array aus struct sein und im struct steht halt dann der Name, die Art (IN/OUT), und der Wert.

Gruß Tommy

2 Likes

Wenn notwendig würde ich diese Variablen eben dynamisch erstellen.
Aber mir fehlt noch immer der eigentliche Anwendungsfall, warum man eine "Script Sprache" mit den Keywords aus Arduino-C machen will...

ja, da könnte man aus dem Struct auch eine Klasse machen und die in einem Container ablegen.
Aber einen Sinn sehe ich in der Problemstellung, so wie sie ist, auch noch nicht.

Gruß Tommy

Das dynamische zur Laufzeit verstehe ich auch nicht. Dem ESP8266 wachsen ja nicht dynamisch die Pins, sondern diese sind endlich und deren Anzahl seit Anfang an bekannt.

Grüße Uwe

Entweder ein vordefiniertes Struct-Array, das die nutzbaren Pins beinhaltet oder die einzelnen Structs bei Bedarf dynamisch anlegen (was die Gefahr der Fragmentierung mit sich bringt) und natürlich Sicherheitsmechanismen, dass keine nicht nutzbaren/vorhandenen Ports gebildet werden.
@lion2003 Was soll passieren wenn ein Port mehrfach "erzeugt" werden soll? Was soll nach dem Booten des MC passieren?

Solange der TO nicht genauere Infos bringt, ist das zwar eine interessante Diskussion über verschiedene Möglichkeiten, aber mehr auch nicht.

Gruß Tommy

1 Like

Hat aber den Vorteil, dass viele etwas daraus lernen können. :wink:

Ja, deshalb auch interessante Diskussion. Ob sie dem TO etwas bringt, ist unklar.

Gruß Tommy