Ausgang per Web schalten mit PHP
hallo,
allerseits, ich versuche mich gerade daran, den digitalen pin3 per webseite bzw. aus zuschalten.
arduino ethernet -->webserver -->php-seite mit button und aus
mein problem ist, mal wieder der anfang, einen sketch habe ich schon angefangen, aber ob er funktioniert weiß ich nicht, weil ich nicht weiß wie die php seite aus sehen muss
ich dachte da oder so,aber mehr weiß ich auch nicht..
mein sketch bisher sieht aus:
kann mir jemand helfen ?
allerseits, ich versuche mich gerade daran, den digitalen pin3 per webseite bzw. aus zuschalten.
arduino ethernet -->webserver -->php-seite mit button und aus
mein problem ist, mal wieder der anfang, einen sketch habe ich schon angefangen, aber ob er funktioniert weiß ich nicht, weil ich nicht weiß wie die php seite aus sehen muss

ich dachte da oder so,aber mehr weiß ich auch nicht..
mein sketch bisher sieht aus:
code: [select]
/*
webclient
es soll mittels einer php-seite, die auf einem webserver liegt,
ein oder mehrere ausgänge an/aus geschaltet werden.
*/
#include <spi.h>
#include <ethernet.h>
// ethernet einrichten
byte mac[] = { 0x90, 0xa2, 0xda, 0x00, 0xee, 0xf3 }; // mac-adresse arduino ethernet
byte ip[] = {192,168,178,230}; // ip-adresse arduino ethernet
byte gateway[] = {192,168,178,1}; // gateway
byte subnet[] = {255,255,255,0};
ipaddress server(192,168,178,111); // ip-adresse server
char host[] = "192.168.178.111\n"; // host name oder ip-adresse
ethernetclient client; // initialisierung der ethernet client library
char url[] = "/arduino/ausgang.php"; // pfad zur php-datei eingeben
char c;
int pin3 = 3;
string readstring = string(100);
boolean pin3on = false;
void setup()
{
serial.begin(9600);
pinmode(pin3, output);
serial.println("verbinde...");
ethernet.begin(mac, ip, gateway, subnet);
}
void loop()
{
if (client.connect(server, 8000)) // serverport bei mir 8000 bei bedarf ändern
{
char c = client.read();
serial.print(c);
}
if (readstring.length() < 100)
{
readstring = readstring + c;
}
serial.print(c); //output chars serial port
if (c == '\n') {
if(readstring.indexof("3=einschalten") > -1) {
digitalwrite(pin3, high);
serial.println("pin 3 eingeschaltet!");
pin3on = true;
}
if(readstring.indexof("3=ausschalten") > -1){
digitalwrite(pin3, low);
serial.println("pin 3 ausgeschaltet!");
pin3on = false;
}
}
//clearing string next read
readstring="";
client.stop();
client.flush();
}
kann mir jemand helfen ?
ich würde mal sagen, falscher ansatz. wenn schon ein webserver da ist, dann doch folgendermassen:
browser <--> webserver (php/html) <--> arduino
alternativ nur der arduino als webserver, aber wie da die limits sind, haben wir ja schon gelernt :-)
als erstes bastelst du dir mit php und html auf dem webserver ein webseite, mit der du den zustand z.b. einer led abbildest und per link oder button den zustand umschalten kannst. das alles noch komplett ohne den arduino.
wenn das funktioniert, bringst du deinem php-script bei, mit dem arduino zu "reden". dabei kannst du auf den ganzen html-kram verzichten und nur die wesentlichen daten übertragen.
du kannst z.b. mit php eine tcp-verbindung zum arduino aufbauen und schickst erstmal nur ein zeichen
's' -> (set) setze wert
'r' -> (read) lese wert
danach folgt z.b. die nummer des pins als byte (z.b. 3 wert, nicht das zeichen '3')
beim setzen des wertes kommt noch ein drittes byte, mit dem wert.
damit kannst du aus mit 3 bytes schon alle pins setzen ('s',0x03,0x01)
auf dem arduino liest du einfach zeichenweise aus der verbindung in ein array
die lösung ist zwar für den anfang komplexer, als nur der arduino zu nehmen, dafür aber deutlich flexibler. der browser muss nicht mit dem arduino reden, sondern nur mit dem webserver. wie der webserver dann mit dem arduino redet, ist für den nutzer browser aber egal. und du kannst die seite auf dem webserver bunt und schick machen, wie du lustig bist. es gibt keine limitierungen wie beim arduino-webserver.
browser <--> webserver (php/html) <--> arduino
alternativ nur der arduino als webserver, aber wie da die limits sind, haben wir ja schon gelernt :-)
als erstes bastelst du dir mit php und html auf dem webserver ein webseite, mit der du den zustand z.b. einer led abbildest und per link oder button den zustand umschalten kannst. das alles noch komplett ohne den arduino.
wenn das funktioniert, bringst du deinem php-script bei, mit dem arduino zu "reden". dabei kannst du auf den ganzen html-kram verzichten und nur die wesentlichen daten übertragen.
du kannst z.b. mit php eine tcp-verbindung zum arduino aufbauen und schickst erstmal nur ein zeichen
's' -> (set) setze wert
'r' -> (read) lese wert
danach folgt z.b. die nummer des pins als byte (z.b. 3 wert, nicht das zeichen '3')
beim setzen des wertes kommt noch ein drittes byte, mit dem wert.
damit kannst du aus mit 3 bytes schon alle pins setzen ('s',0x03,0x01)
auf dem arduino liest du einfach zeichenweise aus der verbindung in ein array
code: [select]
//achtung super simpler quickhack ohne püfung der eingabe oder ob daten vorhanden sind
char input[3];
for(int i=0;i<3;i++) {
input[i] = client.read();
}
//pin setzen
if(input[0] == 's') {
digitalwrite(input[1],input[2]);
}
//pin lesen und den client schicken
if(input[0] == 'r') {
client.print(digitalread(input[1]));
}
die lösung ist zwar für den anfang komplexer, als nur der arduino zu nehmen, dafür aber deutlich flexibler. der browser muss nicht mit dem arduino reden, sondern nur mit dem webserver. wie der webserver dann mit dem arduino redet, ist für den nutzer browser aber egal. und du kannst die seite auf dem webserver bunt und schick machen, wie du lustig bist. es gibt keine limitierungen wie beim arduino-webserver.
Arduino Forum > International > Deutsch (Moderator: uwefed) > Ausgang per Web schalten mit PHP
arduino
Comments
Post a Comment