INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Relaysteuerung-Web-Taster
06.01.2020, 19:34 (Dieser Beitrag wurde zuletzt bearbeitet: 06.01.2020 19:35 von mika.)
Beitrag #9
RE: Relaysteuerung-Web-Taster
Über den Browser ist es das selbe, 1x drücken, Relais an, nochmal drücken Relais aus. Klarer weiße sollte es auch beides gehen. Also per Web 1 x drücken, manuellen Taster drücken aus und umgekehrt.
Die manuellen Taster sollten einfach parallel zum Web funktionieren.
Im Moment hab ich einen Wemos D1 Mini, sollte aber auf einen NodeMCU laufen
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.01.2020, 19:37
Beitrag #10
RE: Relaysteuerung-Web-Taster
(06.01.2020 19:34)mika schrieb:  Über den Browser ist es das selbe, 1x drücken, Relais an, nochmal drücken Relais aus. Klarer weiße sollte es auch beides gehen. Also per Web 1 x drücken, manuellen Taster drücken aus und umgekehrt.
Die manuellen Taster sollten einfach parallel zum Web funktionieren.
Im Moment hab ich einen Wemos D1 Mini, sollte aber auf einen NodeMCU laufen
Ok, die gehen beide.
Dann schaue ich mal, was ich da basteln kann.
Du lässt immer die Beantwortung einer Frage weg (welche Relais). Ist das Methode?

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.01.2020, 19:43
Beitrag #11
RE: Relaysteuerung-Web-Taster
Entschuldigung vergessen. Es ist eine übliche Relaismodul 2 Kanal 5V mit Optokopler
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.01.2020, 20:18
Beitrag #12
RE: Relaysteuerung-Web-Taster
(06.01.2020 19:43)mika schrieb:  Entschuldigung vergessen. Es ist eine übliche Relaismodul 2 Kanal 5V mit Optokopler
Die sind nach meiner Erfahrung LOW-Aktiv, d.h. sie schalten bei LOW am Ausgang.
Ich habe im Sketch beide Varianten vorgesehen. Du musst dazu nur die Zeilen 19 und 20 anpassen.
Alle Taster musst Du nach GND (Masse) schalten, da ich den internen PullUp nach 3,3V nutze.
Der Sketch ist ungetestet aber kompiliert. Ich habe Deinen Sketch etwas optimiert.
Code:
#include <ESP8266WiFi.h>

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

WiFiServer server(80);

String header;

const byte output5Pin = 5;  // für Pins genügt Byte. Es sind < 256
const byte output4Pin = 4;

// Alle Taster werden nach GND angeschlossen --> LOW = gedrückt!
const byte taster5Pin = 12;  // Taster für Relais an GPIO 5
const byte taster4Pin = 13;
const byte tasterAusPin = 14;  // Alles Aus
const byte tasterAnPin = 15;  // alles An

#define AN HIGH  // Für die Relais. Wenn es doch LOW-aktive Relais sind, brauchen nur diese beiden Zeilen geändert werden
#define AUS LOW
bool relais5Status = AUS;  // Status der Relais
bool relais4Status = AUS;

void setup() {
  Serial.begin(115200);
  pinMode(output5Pin, OUTPUT);
  pinMode(output4Pin, OUTPUT);
  
  digitalWrite(output5Pin, AUS);
  digitalWrite(output4Pin, AUS);
  
  pinMode(taster5Pin,INPUT_PULLUP); // die internen PullUp-Widerstände aktivieren, daher Taster nach GND
  pinMode(taster4Pin,INPUT_PULLUP);
  pinMode(tasterAusPin,INPUT_PULLUP);
  pinMode(tasterAnPin,INPUT_PULLUP);
  
  Serial.print("Connecting to ");
  Serial.println(ssid);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
  Serial.print(".");
  }
  
  Serial.println("");
  Serial.println("WiFi connected.");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
  server.begin();
}

void loop(){

  WiFiClient client = server.available();  

  if (client) {                            
    //Serial.println("New Client.");        
    String currentLine = "";                
    while (client.connected()) {            
      if (client.available()) {            
        char c = client.read();            
        Serial.write(c);                    
        header += c;
        if (c == '\n') {                    
          
          if (currentLine.length() == 0) {
            
            client.println("HTTP/1.1 200 OK");
            client.println("Content-type:text/html");
            client.println("Connection: close");
            client.println();
            //------------------------------------------------------------------------------------------
            if (header.indexOf("GET /5/on") >= 0) {
              Serial.println("Relais 1 an");
              relais5Status = AN;
            } else if (header.indexOf("GET /5/off") >= 0) {
              Serial.println("Relais 1 aus");
              relais5Status = AUS;
            //------------------------------------------------------------------------------------------  
            } else if (header.indexOf("GET /4/on") >= 0) {
              Serial.println("Relais 2 an");
              relais4Status = AN;
            } else if (header.indexOf("GET /4/off") >= 0) {
              Serial.println("Relais 2 aus");
              relais4Status = AUS;
            }
            //------------------------------------------------------------------------------------------            
            // Display the HTML web page
            client.println("<!DOCTYPE html><html>");
            client.println("<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">");
            client.println("<link rel=\"icon\" href=\"data:,\">");
            // CSS to style the on/off buttons
            // Feel free to change the background-color and font-size attributes to fit your preferences
            client.println("<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}");
            client.println(".button { background-color: #0040FF; color: white; padding: 30px 30px;");
            client.println("text-decoration: none; font-size: 20px; margin: 0px; cursor: pointer;}");
            client.println(".button2 {background-color: #FFFF00; border-color: black; color: black;}</style></head>");            
            client.println("<body>Relaissteuerung per Web");
            //------------------------------------------------------------------------------------------
            // Display current state, and ON/OFF buttons for GPIO 5  
            client.println("<table><tr><th><p>Relais 1</p>");
            // If the output5State is off, it displays the ON button        
            if (!relais5Status) {
              client.println("<p><a href=\"/5/on\"><button class=\"button\">Aus</button></a></p>");
            } else {
              client.println("<p><a href=\"/5/off\"><button class=\"button button2\">.An.</button></a></p></th>");
            }
            //------------------------------------------------------------------------------------------              
            // Display current state, and ON/OFF buttons for GPIO 4  
            client.println("<th><p>Relais 2</p>");
            // If the output4State is off, it displays the ON button      
            if (!relais4Status) {
              client.println("<p><a href=\"/4/on\"><button class=\"button\">Aus</button></a></p>");
            } else {
              client.println("<p><a href=\"/4/off\"><button class=\"button button2\">.An.</button></a></p></th></tr></table>");
            }      
            //------------------------------------------------------------------------------------------
            client.println("</body></html>");            
            client.println();          
            break;
          } else {
            currentLine = "";
          }
        } else if (c != '\r') {  
          currentLine += c;      
        }
      }
    }  
    header = "";    
    client.stop();
    Serial.println("Client disconnected.");
    Serial.println("");
  }
  // Tasten abfragen (Entprellen wird zentral über ein kurzes delauy gemacht
  if (!digitalRead(tasterAnPin)) {  // alles An gedrückt
    relais5Status = AN;
    relais4Status = AN;
    Serial.println("Alles An");
  }
  else if (!digitalRead(tasterAusPin)) { // alles Aus gedrückt
    relais5Status = AUS;
    relais4Status = AUS;
    Serial.println("Alles Aus");
  }
  else if (!digitalRead(taster5Pin)) {
    relais5Status = !relais5Status;  // ins Gegenteil setzen
    Serial.println("Taster 5 umschalten");
  }
  else if (!digitalRead(taster4Pin)) {
    relais4Status = !relais4Status;  // ins Gegenteil setzen
    Serial.println("Taster 4 umschalten");
  }
  
  // Jetzt schalten wir die Relais
  digitalWrite(output5Pin,relais5Status);
  digitalWrite(output4Pin,relais4Status);
  
  // zum entprellen der Taster
  delay(20);  // das sollte auch für schlechte Taster genügen
}

Viel Spaß beim Testen.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.01.2020, 20:34
Beitrag #13
RE: Relaysteuerung-Web-Taster
Meine Güte bist du schnell. Werde es morgen testen und dir bescheid geben.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.01.2020, 20:37
Beitrag #14
RE: Relaysteuerung-Web-Taster
(06.01.2020 20:34)mika schrieb:  Meine Güte bist du schnell. Werde es morgen testen und dir bescheid geben.
Dadurch, dass Du schon einen funktionierenden Sketch hattest, war das nicht so viel Aufwand, in den die 4 Buttons rein zu hängen. Das sind Standardvorgehensweisen.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.01.2020, 20:12 (Dieser Beitrag wurde zuletzt bearbeitet: 10.01.2020 20:13 von Tommy56.)
Beitrag #15
RE: Relaysteuerung-Web-Taster
Das "gestern" als Du testen wolltest ist nun schon 3 Tage her.

Es kann immer mal etwas dazwischen kommen, dann sollte man wenigstens mal eine kurze Info geben, dass es sich verzögert.
Zumal Du in der Zwischenzeit schon mehrfach online im Forum warst.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.01.2020, 20:39
Beitrag #16
RE: Relaysteuerung-Web-Taster
Ich war nur online, weil ich eine automatische Benachrichtigung bekommen hatte und dachte es hat nochmal jemand geschrieben.
Da ich immer länger arbeiten muss, hab ich natürlich auch nicht mehr Lust dazu.

Zum Thema. Hatte den Sketch getestet und er geht nicht. Die Relais werden nicht mehr angesprochen, sie gehen weder über den Browser noch über die Taster.
Über den Browser klicke ich ein Button an, Klick ich den anderen wechseln sie beide gleichzeitig aus und an. Da ist auch was durcheinander gekommen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Arduino + zwei Taster schalten und Zähler 1-80 realisieren nrnrp 16 1.688 08.11.2019 20:48
Letzter Beitrag: Tommy56

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste