Go Down

Topic: Button auf Webseite soll digitalen Port schalten. Hilfe (Read 3 times) previous topic - next topic

Tobias93

Hallo,

ich möchte durch Drücken eines Buttons auf einem Webserver einen digitalen Port des Arduinos schalten. Ich habe ein Ethernetshield und einen Arduino Uno miteinander verbunden. Folgenden Sketch habe ich soweit angepasst, nur verstehe ich nicht wie ich eine Aktion bei drücken des Buttons (z.B. digitalen Port schalten) erreichen kann:

Quote

#include <SPI.h>
#include <Ethernet.h>
byte MACAddress[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; // MACAdresse
byte IPAddress[] = {192, 168, 178, 59};                    // IP-Adresse
int const HTTPPORT = 80;                                  // HTTP-Port 80 (Standardport)
String barColor[] = {"FFB90F", "FFB90F", "00ffff", "ffff00", "ff00ff", "550055"}; // RGB-Farben für Color-Bars
#define HTML_TOP "<html>\n<head><title>Türschloss Web-Server</title></head>\n<body>"
#define HTML_BOTTOM "</body>\n</html>"
EthernetServer myServer(HTTPPORT); // Web-Server auf angegebenen Port starten
void setup(){
  Ethernet.begin(MACAddress, IPAddress); // Ethernet initialisieren
  myServer.begin(); // Server starten
}

void loop(){
  EthernetClient myClient = myServer.available();
  if(myClient){
    myClient.println("HTTP/1.1 200 OK");
    myClient.println("Content-Type: text/html");
    myClient.println();
    myClient.println(HTML_TOP); // HTML-Top
        showValuesAnalog(myClient); // HTML-Content
    showValuesDigital(myClient);
    myClient.println(HTML_BOTTOM); // HTML-Bottom
  }
  delay(1); // Kurze Pause für Web-Browser
 
  myClient.print("<input type=button value='tuer oeffnen' onclick='hier muss doch die Aktion drin stehen oder???' />");
 
/* myClient.print("<button type=button>tuer oeffnen<onklick=>KLICKOK</button>");*/
  myClient.stop(); // Client-Verbindung schließen
 
}

void showValuesAnalog(EthernetClient &myClient){
  for(int i = 0; i < 6; i++){
    myClient.print("Analog Pin ");
    myClient.print(i);
    myClient.print(": ");
    myClient.print(analogRead(i));
    myClient.print("<div style=\"height: 50px; background-color: #");
    myClient.print(barColor);
    myClient.print("; width:");
    myClient.print(analogRead(i));
    myClient.println("px; border: 20px solid;\"></div>");
  }
}
 
void showValuesDigital(EthernetClient &myClient){
  for(int i = 2; i < 6; i++){
    myClient.print("Digital Pin ");
    myClient.print(i);
    myClient.print(": ");
    myClient.print(digitalRead(i));
    myClient.print("<div style=\"height: 50px; background-color: #");
    myClient.print(barColor);
    myClient.print("; width:");
    myClient.print(digitalRead(i)*100);
    myClient.println("px; border: 2px solid;\"></div>");
  }
}




Kann mir jemand weiter helfen ?

Gruß,

Tobi
Nobody is perfect but - impossible is nothing

bytzmaster

Ich glaube da fehlt noch der Eintrag für die Subnetzmaske.
Ggf noch den Gatewayserver falls du übers internet drauf zugreifen willst.

Trib

Na klar können wir das, aber warum das Rad neu erfinden?  :)
Die Suchfunktion spuckt z.B. folgende Links aus:
   
Arduino Werte an Server übertragen
Webserver einen Korrekturwert übermitteln
WebServer mit Html-Seiten von der SD Karte
Wie kann man den Arduino am einfachsten über eine Oberfläche steuern???
Pin-Steuerung aus Webseite
uvm.

Je nach Anwendungszweck kannst du dort die beste Lösung herauspicken :)
Dein Ansatz gibt nur die Entsprechenden Stati der Pins aus und eine Steuerung ist noch garnicht implementiert.

Gruß,
trib

circuit99

Zum methodischen vorgehen:

Der Client (Browser) sendet eine anfrage an den Arduino. Der Antwortet mit einer html-Seite auf der etwas angeklickt oder eingegeben werden kann. Das geschieht über den <form></form>-Tag in html.
(http://de.selfhtml.org/html/formulare/definieren.htm). Dann gibt es einen Button der das Formular absendet <input type="button">. Die Daten werden dann als "Anhang" an die URL mitgesendet. Die musst du dann mit dem Arduino auslesen und entsprechend darauf reagieren.

Tobias93

Hy,

@ Trib: Ich finde da ich neu in der Materie bin noch keinen Ansatz für die Implementierung einer Steuerung. Kannst du mir helfen hierbei einen Ansatz zu finden?

Der Arduino soll nicht über das Internet erreicht werden, nur über LAN.

Danke schonmal für die Rückmeldungen,

Tobi
Nobody is perfect but - impossible is nothing

Go Up