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  :smiley-red:
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
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

Popular posts from this blog

Thread: PKI Client 5.00 install (for eToken Pro)

ATmega2560-Arduino Pin Mapping

Crossfader Arduino Tutorial