Wenn man seinen Eingangspost genau liest, tippe ich auf NEIN.
Hallo an alle, ich bedanke mich für euere Antworten, aber habe das Thema selber gelöst bekommen. Vielen Danke an alle für die Ideen
Dann wäre es im Sinne der Forumskultur wünschenswert, wenn Du die Lösung hier präsentierst.
Gruß Tommy
Also ich habe erstmal beim ESP8266 Code c++ mehrere Variablen gesetzt, wie Pinnummer Modus = OUTPUT/INPUT USW. Dann habe ich in mein Python Programm mit dem Modul requests übers WLAN die Pins angesteuert. Dazu habe ich eine URL benutzt die alles enthält, wie Modus, Pinummer und den Zustand. Der Webserver vom ESP8266 empfängt die URL und wandelt die Werte darin zu einem integer um. Dann wird einfach die Variabel von der URL dort eingesetzt wo ich sie brauche also bei pinMode pinummer und Modus, und bei digitalWrite pinnummer und zustand. Immer wenn ich die Werte in den entrys ändere, werden die auch in der URL geändert, und der ESP kann dann automatisch mit neuen Werten von mein Python Programm arbeiten. Also das mit Dynamische variabel Erstellung war quatsch, hätte hier drauf gleich kommen sollen.
richtig Lösung präsentieren bedeutet den vollständigen Sketch zu posten.
Genau.
Gruß Tommy
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
// SSID und Passwort für den Access Point
const char *ssid = "ESP8266_AP";
const char *password = "12345678";
ESP8266WebServer server(80);
void handleRoot() {
server.send(200, "text/plain", "Hello from ESP8266");
}
void setup() {
Serial.begin(115200);
Serial.println();
// Access Point starten
WiFi.softAP(ssid, password);
Serial.print("Access Point \"");
Serial.print(ssid);
Serial.println("\" gestartet");
Serial.print("IP Adresse: ");
Serial.println(WiFi.softAPIP());
starten();
}
void starten() {
server.on("/", handleRoot);
server.on("/steuern", HTTP_GET, steuern);
server.begin();
}
void steuern() {
String zustand = server.arg("zustand");
String pin = server.arg("pin");
String modus = server.arg("modus");
String pwmWert = server.arg("pwmWert");
Serial.println(pwmWert);
int pinNumber = pin.toInt();
int mode = modus.toInt();
int pwm = pwmWert.toInt();
if (modus == "OUTPUT") {pinMode(pinNumber, OUTPUT);}
if (modus == "INPUT") {pinMode(pinNumber, INPUT);}
Serial.println(pinNumber);
if (zustand == "an" || pwmWert >= "0" && pwmWert <= "255") {Serial.println("on"); server.send(200, "text/plain", "ok an"); analogWrite(pinNumber, pwm);} // Motor einschalten
if (zustand == "aus") {Serial.println("off"); server.send(200, "text/plain", "ok aus"); digitalWrite(pinNumber, LOW);} // Motor ausschalten
}
void loop() {
server.handleClient();
}
das ist, der Code vom ESP8266 den pwmWert bitte ignorieren da könnte wie auch bei aus digitaWrite stehen.