Go Down

Topic: NodeMCU als Taster nutzen (Read 1 time) previous topic - next topic

Derfips

#30
Mar 14, 2019, 08:57 pm Last Edit: Mar 14, 2019, 08:58 pm by Derfips
Leider weiß ich nicht, wie man den in deinen Sketch integriert.
Warum versuchst du es nicht mit den Beispielen für den Esp...??

Gruß Fips
Meine Esp8266 & ESP32 Projekte => https://fipsok.de

Beanos

Weil ich nicht weiss, wie man diese beiden Switches zusammen bringt....

postmaster-ino

Hi

Ich sehe kein switch - Du redest wirr!
Oder auf Deutsch: WAS Du wolle?

MfG
anscheinend ist Es nicht erwünscht, einen Foren-internen Link als 'Homepage' einzubinden, damit JEDER nur einen Klick von combie's Liste zum Thema State-Maschine entfernt ist.
... dann eben nicht ...

Beanos

Ich schreibe mit Handy, sorry.
Ich meinte den Sketch mit der Passwortabfrage und den Sketch mit dem Interface und den Pulse-Button etc. Ich weiss nicht, wie ich diese beiden Sketches auf den Node bekomme, dass sie zusammen laufen, bzw die Passwortabfrage beim Betreten des Interfaces kommt.

Derfips

Weil ich nicht weiss, wie man diese beiden Switches zusammen bringt....
Ich würde es auch gar nicht erst versuchen.

Du bist echt ein schwieriger Fall!

Suchst dir uralte Beispiele für das Arduino Ethernet Schild und willst diese unbedingt auf den Esp8266 umgebogen haben.

Ignorierst aber beharrlich die Beispiele zum Esp8266Webserver.


Gruß Fips
Meine Esp8266 & ESP32 Projekte => https://fipsok.de

Beanos

Ich habe mir Beispiele vom ESP angeschaut, aber da habe ich das selbe Problem.
Der Sketch mit dem Pulse von Noisaca soll ja dann in dem Sketch laufen, wo die Passwortabfrage ist.

Ich sagte bereits mehrfach, dass ich keinen Plan habe, leider muss ich aber jeden Tag von 8-20 Uhr arbeiten, sodass ich nicht unbedingt die Zeit habe, mir alles von Anfang an durch zu lesen, zumal ich eigentlich nur dieses kleine Projekt umgesetzt haben möchte.....

Mein Problem ist halt, dass ich die Funktionsweise des NodeMCU nicht verstehe.

Beanos

Guten Morgen,

ich habe nun einen einfachen Anmeldesketch gefunden und wollte nun gerne wissen, ob man in diesen einfach eine Weiterleitung nach erfolgreicher Anmeldung auf den Tab exp8266_server machen kann:

Code: [Select]
#include <ESP8266WiFi.h>

const char* ssid = "***";
const char* password = "***";

WiFiServer server(80);

void setup() {
  Serial.begin(115200);
  delay(10);
 
  WiFi.begin(ssid, password);
  Serial.println("Verbindung wird aufgebaut:");
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(".");
    delay(500);
  }
 
  // Start the server
  server.begin();
  Serial.println("");
  Serial.println("Verbunden");
}

int angemeldet = 2;

void loop() {
  // Check if a client has connected
  WiFiClient client = server.available();
  if (!client) {
    return;
  }
 
  while(!client.available()){
    delay(1);
  }
 
  // Read the first line of the request
  String req = client.readStringUntil('\r');
  client.flush();
 
  String html = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html> <h3>Bitte Anmelden!</h3><form action=\"192.168.178.40/index.html\" method=\"GET\"> Username: <br /> <input type=\"text\" name=\"user\" value=\"\" /> <br /> Passwort: <br />  <input type=\"password\" name=\"password\" value=\"\" /> <br /> <input type=\"submit\" name=\"absenden\" value=\"anmelden!\" /><br /></form></html>\n";
 
  // Match the request
  int val = -1;
  if ((req.indexOf("user=test") != -1) && (req.indexOf("password=test") != -1))
  {
    angemeldet = 1; 
  } 
  else if((req.indexOf("user") != -1) && (req.indexOf("password") != -1))
  {
    angemeldet = 0;
  }
  else if(req.indexOf("/index.html") != -1)
    client.print(html);   
  else {
    //Serial.println("invalid request");
    client.stop();
    return;
  }

  if(angemeldet == 1)
  {
  Serial.println(angemeldet); 
  client.flush();

  // gehe auf Seite
  client.print("<html><h3>Erfolgreich angemeldet!</h3></html>");    <<<<[b]Gehe auf Tab webinterface esp8266_server[/b]
  delay(1);
  }
  if (angemeldet == 0) {
     client.print("<html><h3>Leider Falsch!</h3></html>");
     delay(1);
  } 
  angemeldet = 2;
}


Vielen Dank

noiasca

also ich würde ja im Beispiele Ordner Webserver mal das HttpBasicAuth ansehen und verstehen lernen.

wenn das so funktioniert wie es aussieht, bist du da mit ein paar Zeilen const und einem zusätzlichen If in den einzelnen page-handlern dabei.


Signatur auf Pause

Derfips

.. ich würde ja im Beispiele Ordner Webserver...

Das ist selten!

Das finde ich nachahmenswert!


Die meisten suchen im INet nach Sketchen aus 2016.


Gruß Fips
Meine Esp8266 & ESP32 Projekte => https://fipsok.de

Beanos


Beanos

Guten Morgen,

ich weiß, ich nerve langsam tierisch. Ich habe ungelogen seit 6 Uhr daran gesessen, aber ich bekomme es einfach nicht hin ....

Code: [Select]
***************************************************************** */
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>                        // for the webserver
#include <ESP8266mDNS.h>                             // Bonjour/multicast DNS ... find the device on network by name
#include <ArduinoOTA.h>                              // OTA Upload via ArduinoIDE

#define USE_BOARD 250                                // the actual board to compile
#define VERSION "9.1"                                // This is just the Version of the Arduino Sketch

/* *******************************************************************
         the board settings / die Einstellungen der verschiedenen Boards
 ********************************************************************/

#if USE_BOARD == 250                                       // Example Board
#define TXT_BOARDID "250"                                  // an ID for the board
#define TXT_BOARDNAME "ESP8266 Server"                     // The name of the board
#define CSS_MAINCOLOR "blue"                               // don't get confused by the different webservers and use a different color for each board
#endif

/* *******************************************************************
         other settings / weitere Einstellungen für den Anwender
 ********************************************************************/

const char* ssid =     "";
const char* password = "";

/* *******************************************************************
         Globals - Variables and constants
 ********************************************************************/

unsigned long ss = 0;                             // current second since startup
const uint16_t ajaxIntervall = 5;                 // Intervall for AJAX call of website in seconds
const uint16_t pulseMs = 300;                     // durance of a pulse

const int BUTTON1_PIN = 0;            // GPIO00/D3 on NodeMCU is the Flash Button - use this for testing an input
const int OUTPUT1_PIN = 4;           // GPIO16/D0 on NodeMCU is a (red) LED on the NodeMCU Board - use this for testing the html switch
const int OUTPUT2_PIN = 2;            // GPIO02/D4 on NodeMCU is the (blue) LED on the ESP-12E

ADC_MODE(ADC_VCC);                    // to use getVcc
uint32_t internalVcc = ESP.getVcc();

ESP8266WebServer server(80);

// Anmelderoutine
const char* www_username = "admin";
const char* www_password = "esp8266";

// Webinterface
#ifndef CSS_MAINCOLOR
#define CSS_MAINCOLOR "#8A0829"         // fallback if no CSS_MAINCOLOR was declared for the board
#endif

/* *******************************************************************
         S E T U P
 ********************************************************************/

void setup(void) {
  digitalWrite(OUTPUT1_PIN, HIGH);
  digitalWrite(OUTPUT2_PIN, HIGH);
  pinMode(OUTPUT1_PIN, OUTPUT);
  pinMode(OUTPUT2_PIN, OUTPUT);
  pinMode(BUTTON1_PIN, INPUT); 

 
  Serial.begin(115200);
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  if(WiFi.waitForConnectResult() != WL_CONNECTED) {
    Serial.println("WiFi Connect Failed! Rebooting...");
    delay(1000);
    ESP.restart();
  }
  ArduinoOTA.begin();

  char myhostname[8] = {"esp"};
  strcat(myhostname, TXT_BOARDID);
  WiFi.hostname(myhostname);
  WiFi.begin(ssid, password);
  // Wait for connection
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(F("."));
  }
  Serial.print("Open http://");
  Serial.println(F(""));
  Serial.print(F("Connected to "));
  Serial.println(ssid);
  Serial.print(F("IP address: "));
  Serial.println(WiFi.localIP());
  if (MDNS.begin("esp8266")) {
    Serial.println(F("MDNS responder started"));
  }
   server.on("/", [](){
 if(!server.authenticate(www_username, www_password))
 return server.requestAuthentication();
 server.send(200, "text/plain", "Login OK");
 });
 
//  define the pages and other content for the webserver
  server.on("/",      handlePage);      // send root page
  server.on("/0.htm", handlePage);
//  server.on("/1.htm", handlePage);
//  server.on("/2.htm", handlePage);
//  server.on("/x.htm", handleOtherPage); // just another page to explain my usage of HTML pages ...
  server.on("/f.css", handleCss);       // a stylesheet
  server.on("/j.js",  handleJs);        // a javascript to handle AJAX/JSON Update of the page
  server.on("/json",  handleJson);      // send data in JSON
  server.on("/c.php", handleCommand);   // process commands
//  server.onNotFound(handleNotFound);    // show a typical 404 page

 
  server.begin();
  Serial.print("Open http://192.168.178.40");
  Serial.print(WiFi.localIP());
  Serial.println("/ in your browser to see it working");
  Serial.println(F("HTTP server started"));
 

  //IDE OTA
  ArduinoOTA.setHostname(myhostname);      // give a name to your ESP for the Arduino IDE
  ArduinoOTA.begin();  // OTA Upload via ArduinoIDE https://arduino-esp8266.readthedocs.io/en/latest/ota_updates/readme.html
 
 }

/* *******************************************************************
         M A I N L O O P
 ********************************************************************/

void loop(void) {
  ss = millis() / 1000;
 
  server.handleClient();
  ArduinoOTA.handle();   // OTA Upload via ArduinoIDE

  // do your calculation, sensor readings etc...

  // add displays, serial outputs here

}


Zwar kommt der die Anmeldeaufforderung, aber wenn ich mich angemeldet habe, springt er nicht auf die Root Seite, sondern schreibt nur Login OK.

Leider kann man 0.htm auch so aufrufen, ohne mit einer PW-Abfrage konfrontiert zu werden....

Ich raff es einfach nicht.

noiasca

#41
Mar 17, 2019, 10:00 am Last Edit: Mar 17, 2019, 10:05 am by noiasca
nur code gesichtet:

ist mir schon klar, im handler von 0.htm hast ja auch kein

 if(!server.authenticate(www_username, www_password))
 return server.requestAuthentication();
 server.send(200, "text/plain", "Login OK");

drinnen.

(OT: wenn es dich beruhigt, ich habe gestern auch mindestens 6h damit verbracht, meinen ersten Lorawan Node mit dem Gateway zu verbinden, das ist also ganz normal wenn man anfängt und nicht ganz genau die Anleitungen liest ^^.).
Signatur auf Pause

Beanos

Könntest du mir den Code so umstellen, dass er funzt? Ich wollte wirklich nur dieses eine Miniprojekt zum laufen bekommen. Danach werde ich mich nicht weiter damit auseinandersetzen, vermutlich...

Beanos

Okay, ich blase das Project ab.

Vielen Dank für nichts!

Derfips

Okay, ich blase das Project ab.

Vielen Dank für nichts!
Auf meine Verwunderung hin, das er jetzt im Nachbarforum weiter machen möchte, wird es jetzt auch noch unschön!

Was bist du eigentlich für ein arroganter Vogel?

Bitte schicke mir keine PM mehr ich betrachte das als Spam!
Meine Esp8266 & ESP32 Projekte => https://fipsok.de

Go Up