Go Down

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

Beanos

Guten Tag,

ich weiß, es werden mich jetzt einige Leute steinigen, aber leider finde ich nicht wirklich was für mein Vorhaben.

Ich habe den NodeMCU an einer Funkfernbedienung für Toreinfahrten angeschlossen (Taster der Fernbedienung abgelötet und 2 Kabel rangelötet) Diese Kabel habe ich nun an den Node an GND und Pin 13 angeschlossen.
Nun benötige ich einen Sketch, der ein kleines einfaches Webinterface bereitstellt wo ein Knopf vorhanden ist. Dieser Knopf soll als Taster für die FB dienen welche ich nun von überall aus dem Internet anklicken kann. Taster ist daher notwendig, da er nur einen kurzen Stromimpuls schicken soll, damit das Tor aufgeht, stehen bleibt und wieder zugeht.
Habt ihr da für einen blutigen Anfänger ein paar Ideen ?

Vielen Dank und sorry für die sicherlich sehr blöde Frage.

Derfips

kleines einfaches Webinterface bereitstellt wo ein Knopf vorhanden ist
HTML Formulare button

Taster ist daher notwendig
Drucktaster

Ich hoffe das hilft dir weiter.

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

Beanos

Sorry, ich glaube ich habe mich falsch ausgedrückt.

Der NodeMCU soll der eigentliche Taster sein. Ich möchte gerne, dass der Node die Fernbedienung steuert, wenn ich das über das Interface möchte, per Klick

noiasca

eben daher brauchst du auf deinem Webserver ein Form, einen Button und dahinter eine Aktion die deinen Ausgangs-Pin für eine kurze Zeit aktiviert...
how to react on postings:
- post helped: provide your final sketch, say thank you & give karma.
- post not understood: Ask as long as you understand the post
- post is off topic (or you think it is): Stay to your topic. Ask again.
- else: Ask again.

Beanos

#4
Mar 13, 2019, 05:24 pm Last Edit: Mar 13, 2019, 06:39 pm by Beanos
Ich habe jetzt folgendes:

Code: [Select]
WiFiServer server(80);
 
void setup() {
 pinMode(13, OUTPUT);
 
 initWiFi();
}
 
void loop() {
 WiFiClient client = server.available();
 if(!client){
   return;
 }
 
 if(WiFi.status() != WL_CONNECTED){
   initWiFi();
 }
 
 String request = client.readStringUntil('\r');
 client.flush();
 
 if(request==""){
   client.stop();
   return;
 }
 
 //GPIOS schalten
 if(request.indexOf("mode=1")>=0){
   digitalWrite(13, LOW);
   delay(1000);
   digitalWrite(13, HIGH);
   delay(1000);
 }
 
 //Ausgabe erzeugen
 String output;
 output += "http/1.x 200 OK\n";
 output += "Content-Type: text/html; charset=UTF-8\n\n";
 output += "<!DOCTYPE HTML>";
 output += "<html>";
 output += "<h1>LED schalten</h1>";
 output += "<form action=\"\" method=\"GET\">";
 output += "<button name=\"mode\" value=\"1\">Öffnen/Schließen</button>";
 output += "<br><br>";
 output += "<button name=\"mode\" value=\"0\">AUS</button>";
 output += "</form>";
 output += "</html>";
 
 client.print(output);
   
 client.stop();
}
 
void initWiFi(){
 WiFi.begin(SSID, PSK);
 
 while(WiFi.status() != WL_CONNECTED){
   delay(500);
 }
 
 server.begin();
}



Problem ist, wenn der Node neugestartet ist, blinkt die FB so lange, bis ich auf AUS geklickt habe, dann kann ich den Taster Öffnen/Schließen anklicken und er sendet ein kurzes Signal, wie gewünscht. Wo liegt der Fehler?

wapjoe

#5
Mar 13, 2019, 05:25 pm Last Edit: Mar 13, 2019, 10:26 pm by wapjoe
Auch wenn du uns deinen Aufbau, bzw. Schaltung nicht zeigst, glaube ich dass mit dem ursprünglichen Taster ein Stromkreis der FB geschlossen wurde, wenn du beide Kabel kurz miteinander verbindest sollte das Tor reagieren.

Ich kenne den NodeMCU jetzt nicht, aber eventuell ist dein Vorhaben damit alleine nicht möglich. Vielleicht benötigst du ein Relais oder ein Reedrelais, den du mit dem Node aktivierst und das dir dann den Stromkreis der FB schließt. Wenn ich mich vertue, bitte korrigieren, ich lerne noch. ;)


Edit: Ich lag falsch
Ich hoffe mein Schaden hat kein Gehirn genommen!

- Homer S.

Tommy56

Setze Deinen Code bitte in Codetags (</>-Button oben links im Forumseditor oder [*code] davor und [*/code] dahinter ohne *).
Das kannst Du auch noch nachträglich ändern.

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

Derfips

Code: [Select]

void setup() {
  digitalWrite(13, LOW);
  pinMode(13, OUTPUT);
.......




Könnte dein Problem beim Start behebe.


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

Rentner

#8
Mar 13, 2019, 06:07 pm Last Edit: Mar 13, 2019, 06:27 pm by Rentner
Hallo,
benutze einen anderen Ausgang, z.B A2,

an A13 hängt doch  die interne LED und beim starten blinkt die immer, damit blinkt auch Deine Fernbedienung bein starten.


sorry "Node" hatte ich nicht mehr im Blick

Heinz

noiasca

am NodeMcu gibts nur diese

// GPIO00/D3 on NodeMCU is the Flash Button - use this for testing an input
// GPIO16/D0 on NodeMCU is a (mostly red) LED on the NodeMCU Board - use this for testing the html switch
// GPIO02/D4 on NodeMCU is the (blue) LED on the ESP-12E
how to react on postings:
- post helped: provide your final sketch, say thank you & give karma.
- post not understood: Ask as long as you understand the post
- post is off topic (or you think it is): Stay to your topic. Ask again.
- else: Ask again.

Derfips

an A13 hängt doch  die interne LED und beim starten blinkt die immer, damit blinkt auch Deine Fernbedienung bein starten.
Ich habe den NodeMCU
https://github.com/esp8266/Arduino/blob/master/variants/nodemcu/pins_arduino.h


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

Beanos

#11
Mar 13, 2019, 06:45 pm Last Edit: Mar 13, 2019, 06:49 pm by Beanos
Blinkt leider immer noch nach dem rebooten.
Habe

digitalWrite(13, LOW);
 pinMode(13, OUTPUT);

eingefügt und auf GPIO D2 gesteckt -.-

Code: [Select]
void setup() {
   digitalWrite(4, LOW);
  pinMode(4, OUTPUT);
  initWiFi();
}
   
void loop() {
  WiFiClient client = server.available();
  if(!client){
    return;
  }
 
  if(WiFi.status() != WL_CONNECTED){
    initWiFi();
  }
 
  String request = client.readStringUntil('\r');
  client.flush();
 
  if(request==""){
    client.stop();
    return;
  }
 
  //GPIOS schalten
  if(request.indexOf("mode=1")>=0){
    digitalWrite(4, LOW);
    delay(1000);
    digitalWrite(4, HIGH);
    delay(1000);
  }
 
  //Ausgabe erzeugen
  String output;
  output += "http/1.x 200 OK\n";
  output += "Content-Type: text/html; charset=UTF-8\n\n";
  output += "<!DOCTYPE HTML>";
  output += "<html>";
  output += "<h1>LED schalten</h1>";
  output += "<form action=\"\" method=\"GET\">";
  output += "<button name=\"mode\" value=\"1\">Öffnen/Schließen</button>";
  output += "<br><br>";
  output += "<button name=\"mode\" value=\"0\">AUS</button>";
  output += "</form>";
  output += "</html>";
 
  client.print(output);
   
  client.stop();
}
 
void initWiFi(){
  WiFi.begin(SSID, PSK);
 
  while(WiFi.status() != WL_CONNECTED){
    delay(500);
  }
 
  server.begin();
}

Derfips

Blinkt leider immer noch nach dem rebooten.
Habe

 digitalWrite(13, LOW);
  pinMode(13, OUTPUT);

eingefügt und auf GPIO D2 gesteckt -.-
Also nochmal der Link!!!

https://github.com/esp8266/Arduino/blob/master/variants/nodemcu/pins_arduino.h


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

Beanos

Der Fips, sorry, aber damit kann ich nichts anfangen *g*

Derfips

digitalWrite(13, LOW);
 pinMode(13, OUTPUT);

eingefügt und auf GPIO D2 gesteckt -.-


Ok.
Im Sketch steht es richtig.
Den konnte ich aber zum Zeitpunkt meines Beitrages noch nicht sehen.

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

Go Up