Hallo ihr Arduino Freaks
,
ich möchte mich ersteinmal vorstellen ich heiße Michael und komme aus dem raum Hannover.
Ich bin absulut ein Fan von automatisierung und Smart Home, beruflich habe ich viel damit am Hut.
Nur ich möchte nicht auf KNX oder sonstige fertig Lösungen zugreifen kann ja jeder...
![]()
Ich bin gerade dabei eine Homepage zu erstellen wo diverse Arduino´s via. iframe implentiert werden sollen zum steuern meiner Wohnung & meiner Standheizung im Auto.
Nun stecke ich momentan leider ein bisschen fest da ich überhaupt kein C freak bin
und ich es mir beibringen möchte, am besten hat es immer geklapt in demt ich mit ein vorhanden Projekt angefangen habe um diese zu ändern und zu verstehn.
Nun zu mein Problem... ![]()
Ich habe zwei Arduino Sketches genommen und kombiniert den von:
Jurs riesen Lob echt cool gemacht und erklärt bisher
Und ein Sketch den ich auf homebrew-tech.com gefunden habe
Die Passwort Abfrage scheint zu funktionieren nur ich weiß nicht warum ich was anklicken kann
wenn ich einfach das PW anfrage Fenster einfach schließe kann ich ein Pin kurz schalten ohne Passwort der Pin geht zwar sofort wieder aus (bleibt mit PW eingeschaltet) ich denke da ist noch ein Fehler drin nur ich finde ihn nicht... ![]()
Ich zeige euch mal meinen Sketch ist vielleicht das einfachste für euch, mir hoffentlich zu helfen ![]()
/*
Web Server
Circuit:
* Ethernet shield attached to pins 10, 11, 12, 13
* Analog inputs attached to pins A0 through A5 (optional)
created 18 Dec 2009
by David A. Mellis
modified 9 Apr 2012
by Tom Igoe
*/
#include <SPI.h>
#include <Ethernet.h>
// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,1, 55);
// Initialize the Ethernet server library
// with the IP address and port you want to use
// (port 80 is default for HTTP):
EthernetServer server(80);
void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
pinMode(8, OUTPUT); // Set digital pin 8 as output
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}
// start the Ethernet connection and the server:
Ethernet.begin(mac, ip);
server.begin();
Serial.print("server is at ");
Serial.println(Ethernet.localIP());
}
void SendOKpage(EthernetClient &client)
{
// send a standard http response header
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connnection: close");
client.println();
client.println("<!DOCTYPE HTML>");
client.println("<html>");
// add a meta refresh tag, so the browser pulls again every 5 seconds:
client.println("<meta http-equiv=\"refresh\" content=\"5\">");
// output the value of each analog input pin
for (int analogChannel = 0; analogChannel < 6; analogChannel++) {
}
client.println("</html>");
}
void SendAuthentificationpage(EthernetClient &client)
{
client.println("HTTP/1.1 401 Authorization Required");
client.println("WWW-Authenticate: Basic realm=\"Secure Area\"");
client.println("Content-Type: text/html");
client.println("Connnection: close");
client.println();
client.println("<!DOCTYPE HTML>");
client.println("<HTML> <HEAD> <TITLE>Error</TITLE>");
client.println(" </HEAD> <BODY><H1>401 Unauthorized.</H1></BODY> </HTML>");
}
char linebuf[80];
int charcount=0;
boolean authentificated=false;
void loop() {
// listen for incoming clients
EthernetClient client = server.available();
if (client) {
Serial.println("new client");
memset(linebuf,0,sizeof(linebuf));
charcount=0;
authentificated=false;
// an http request ends with a blank line
boolean currentLineIsBlank = true;
String buffer = ""; // Declare the buffer variable
while (client.connected()) {
if (client.available()) {
char c = client.read();
linebuf[charcount]=c;
if (charcount<sizeof(linebuf)-1) charcount++;
Serial.write(c);
buffer+=c;
// if you've gotten to the end of the line (received a newline
// character) and the line is blank, the http request has ended,
// so you can send a reply
if (c == '\n' && currentLineIsBlank) {
if (authentificated)
SendOKpage(client);
else
SendAuthentificationpage(client);
//Ausgänge schalten
//--------------------------------------------------------------------------------------------------------------------
if (digitalRead(8)){ // 1<-- Display LED status
client.print(" LED ist ON");
}else{
client.print(" LED ist OFF");
}
client.println("
");
// 2<-- Create a form
client.print("<FORM action=\"http://192.168.1.55/\" >");
client.print("<P> <INPUT type=\"radio\" name=\"status\" value=\"1\">ON");
client.print("<P> <INPUT type=\"radio\" name=\"status\" value=\"0\">OFF");
client.print("<P> <INPUT type=\"submit\" value=\"senden\"> </FORM>");
client.print("<FORM action=\"http://192.168.1.55/\" >");
client.print("  <INPUT type=\"radio\" name=\"status\" value=\"1\">ON");
client.print("  <INPUT type=\"radio\" name=\"status\" value=\"0\">OFF");
client.print("<P>        <INPUT type=\"submit\" value=\"senden\"> </FORM>");
//--------------------------------------------------------------------------------------------------------------------
break;
}
if (c == '\n') {
// you're starting a new line
currentLineIsBlank = true;
if (strstr(linebuf,"Authorization: Basic")>0 && strstr(linebuf,"YXJkdWlub21z")>0) //BASE64-Verschlüsselung PW:arduinoms
authentificated=true;
memset(linebuf,0,sizeof(linebuf));
currentLineIsBlank = true;
//Ausgänge schalten
//--------------------------------------------------------------------------------------------------------------------
buffer=""; // Clear the buffer at end of line
} else if (c == '\r') {
if(buffer.indexOf("GET /?status=1")>=0)
digitalWrite(8,HIGH); // Catch ON status and set LED
if(buffer.indexOf("GET /?status=0")>=0)
digitalWrite(8,LOW); // Catch OFF status and set LED
//--------------------------------------------------------------------------------------------------------------------
charcount=0;
}
else if (c != '\r') {
// you've gotten a character on the current line
currentLineIsBlank = false;
}
}
}
// give the web browser time to receive the data
delay(1);
// close the connection:
client.stop();
Serial.println("client disonnected");
}
}