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, 15:45 (Dieser Beitrag wurde zuletzt bearbeitet: 06.01.2020 15:47 von mika.)
Beitrag #1
Relaysteuerung-Web-Taster
Hallo zusammen, brauche dringend Hilfe bei einem kleinen Projekt mit einem ESP8266, das über einen Browser plus mit einem manuellem Taster eine Relaisplatine steuern kann. Gleich im voraus, ich kann nicht programmieren und ich bin zu alt um es noch zu lernen, aber ich kann damit umgehen. Könnte auch auf fertige KNX oder EIB Systeme zurückgreifen, die ich mir nicht leisten kann. Deshalb möchte ich auf die günstige Variante der Arduino begnügen. Habe bereits ein fertigen Sketch aus dem Internet, womit ich die Relais über den Webbrowser ansteuern kann.
Code:
#include <ESP8266WiFi.h>

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

WiFiServer server(80);

String header;

String output5State = "off";
String output4State = "off";

const int output5 = 5;
const int output4 = 4;


void setup() {
  Serial.begin(115200);
  pinMode(output5, OUTPUT);
  pinMode(output4, OUTPUT);
  
  digitalWrite(output5, LOW);
  digitalWrite(output4, LOW);
  
  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");
              output5State = "on";
              digitalWrite(output5, HIGH);
            } else if (header.indexOf("GET /5/off") >= 0) {
              Serial.println("Relais 1 aus");
              output5State = "off";
              digitalWrite(output5, LOW);
            //------------------------------------------------------------------------------------------  
            } else if (header.indexOf("GET /4/on") >= 0) {
              Serial.println("Relais 2 an");
              output4State = "on";
              digitalWrite(output4, HIGH);
            } else if (header.indexOf("GET /4/off") >= 0) {
              Serial.println("Relais 2 aus");
              output4State = "off";
              digitalWrite(output4, LOW);
            }
            //------------------------------------------------------------------------------------------            
            // 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 (output5State=="off") {
              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 (output4State=="off") {
              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("");
  }
}

Und nun zu diesem Code einen manuellen Taster hinzufügen, der die beiden Relais genauso an und ausschalten kann.
Habe schon mit diesem Code in den 1. Code eingebaut,
Code:
int output5=5; //diesen ja schon im 1. Code ja schon angegeben ist
int taster=16;
int i=0;

void setup() {
pinMode(taster,INPUT);
pinMode(output5,OUTPUT); //diesen ja schon im 1. Code ja schon angegeben ist
}

void loop() {  
  if(digitalRead(taster) == HIGH) {
    if(i==1){
      i=0;
    }else{
      i=1;  
    }
    while(digitalRead(taster) == HIGH){    
      digitalWrite(led1,i);
      delay(30);
     }
  }
}

was aber nur einmal funktioniert. Sobald man über den Browser schaltet, hat der manuelle Taster keine Funktion.
Ich hoffe es ist verständlich erklärt.
Wäre nett wenn mir da einer helfen könnte. Danke im voraus.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.01.2020, 15:51 (Dieser Beitrag wurde zuletzt bearbeitet: 06.01.2020 15:51 von Tommy56.)
Beitrag #2
RE: Relaysteuerung-Web-Taster
Zu alt zum Lernen ist man niemals, das betrachte ich als Ausrede. Es sei denn, man hat sich selbst schon aufgegeben.

Wie willst Du mit 1 Taster 2 Relais schalten? Das musst Du mal beschreiben, wie Du Dir das vorstellst.

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, 17:15 (Dieser Beitrag wurde zuletzt bearbeitet: 06.01.2020 17:18 von mika.)
Beitrag #3
RE: Relaysteuerung-Web-Taster
Ich könnte es lernen und möchte mein Projekt nicht erst in 3 Jahren realisieren. Hab aber weder die Zeit noch die Muse.
Ich meine eigentlich jeweils 1 Taster für 1 Relais so wie im Browser auch. Das Sahnetüpfelchen oben drauf mit einem dritten Taster alle "AN" und "AUS" wär natürlich schön Wink
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.01.2020, 17:52 (Dieser Beitrag wurde zuletzt bearbeitet: 06.01.2020 18:13 von Tommy56.)
Beitrag #4
RE: Relaysteuerung-Web-Taster
Ich könnte jetzt einfach sagen, dann beauftrage doch einen Dienstleister.

Wenn Du im sonstigen Leben etwas nicht kannst (z.B. Auto/Waschmaschine reparieren) und Dir das Lernen zu lange dauert, dann musst Du auch einen Handwerker/Dienstleister beauftragen und den bezahlen.
Warum sollte das in der Programmierung anders sein?

Aber schauen wir mal was da noch raus kommt?

Der lokale Taster schaltet ja wechslnd An --> Aus --> An --> ...

Was soll passieren, wenn Web und Taster unterschiedlich er Meinung sind?

Also sowas:

Web Taster Ergebnis
Aus Aus Aus
Aus Ein ???
Ein Aus ???
Ein Ein Ein

Oder soll der Taster immer den aktuellen Zustand umschalten

Gruß Tommy

Edit: Über welchen ESP8266 reden wir?

"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:00
Beitrag #5
RE: Relaysteuerung-Web-Taster
Und ich könnte dir nun sagen, das ich meine Dienste auch kostenlos anbiete. Nun zwar nicht hier, aber im real Life. Bin Elektrotechniker und repariere kostenlos Geräte, bei denen die es sich nicht leisten können. Und warum sollte es hier nicht auch Mal anders sein, einfach die Hilfe anbieten. Aber wir können nun auch hier über das Thema weiter diskutieren. Aber ich glaube das wir im falschen Forum sind.
Willst du noch oder willst du nicht? Ansonsten lösch ich den Threads und wir lassen es.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.01.2020, 19:04
Beitrag #6
RE: Relaysteuerung-Web-Taster
Du kennst die Bedeutung von "könnte"?

Ansonsten fehlen Antworten von Dir.

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:16
Beitrag #7
RE: Relaysteuerung-Web-Taster
Funktion sollte sein,

Taster drücken - Relais an
Taster drücken - Relais aus

Das jeweils für jedes Relais.

Sollen wir weiter diskutieren?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.01.2020, 19:23
Beitrag #8
RE: Relaysteuerung-Web-Taster
(06.01.2020 19:16)mika schrieb:  Funktion sollte sein,

Taster drücken - Relais an
Taster drücken - Relais aus

Das jeweils für jedes Relais.

Sollen wir weiter diskutieren?
Ja, müssen wir wohl, wenn Du eine Lösung willst.

Ok. Aber wie soll dann die Steuerung über Web da rein spielen?

Beispiel:
Web schaltet Relais1 an. Taster1 drücken schaltet es wieder aus. Dann kann Web oder erneutes Drücken wieder einschalten. OK so?

Dein Web-Sketch funktioniert so, wie von Dir veröffentlicht? Also HIGH schaltet das Relais? (weil die meisten werden mit LOW aktiviert)

Welche Relais (Link bitte) und nochmal die Frage welcher ESP8266.

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
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.248 08.11.2019 20:48
Letzter Beitrag: Tommy56

Gehe zu:


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