Serveur Web Arduino PHP

Bonjour j’ai un projet qui consiste a afficher une valeur sur un site web contenue dans fichier contenue sur la SD. Pour cela j’ai réaliser un code html dans le quelle j’ai incorporer du php. Mais il est impossible d’afficher la valeur contenue dans le fichier.txt.

Voici mon programme Arduino:

#include <SPI.h>
#include <Ethernet2.h>
#include <SD.h>

// size of buffer used to capture HTTP requests
#define REQ_BUF_SZ   20

// MAC address from Ethernet shield sticker under board
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192, 168, 0, 143); // IP address, may need to change depending on network
EthernetServer server(80);  // create a server at port 80
File webFile;
char HTTP_req[REQ_BUF_SZ] = {0}; // buffered HTTP request stored as null terminated string
char req_index = 0;              // index into HTTP_req buffer

void setup()
{
    // disable Ethernet chip
    pinMode(10, OUTPUT);
    digitalWrite(10, HIGH);
    
    Serial.begin(9600);       // for debugging
    
    // initialize SD card
    Serial.println("Initializing SD card...");
    if (!SD.begin(4)) {
        Serial.println("ERROR - SD card initialization failed!");
        return;    // init failed
    }
    Serial.println("SUCCESS - SD card initialized.");
    // check for index.htm file
    if (!SD.exists("Site.php")) {
        Serial.println("ERROR - Can't find Site.php file!");
        return;  // can't find index file
    }
    Serial.println("SUCCESS - Found Site.php file.");
    
    Ethernet.begin(mac, ip);  // initialize Ethernet device
    server.begin();           // start to listen for clients
}

void loop()
{
    EthernetClient client = server.available();  // try to get client

    if (client) {  // got client?
        boolean currentLineIsBlank = true;
        while (client.connected()) {
            if (client.available()) {   // client data available to read
                char c = client.read(); // read 1 byte (character) from client
                // buffer first part of HTTP request in HTTP_req array (string)
                // leave last element in array as 0 to null terminate string (REQ_BUF_SZ - 1)
                if (req_index < (REQ_BUF_SZ - 1)) {
                    HTTP_req[req_index] = c;          // save HTTP request character
                    req_index++;
                }
                // print HTTP request character to serial monitor
                Serial.print(c);
                // last line of client request is blank and ends with \n
                // respond to client only after last line received
                if (c == '\n' && currentLineIsBlank) {
                    // open requested web page file
                    if (StrContains(HTTP_req, "GET / ")
                                 || StrContains(HTTP_req, "GET /Site.php")) {
                        client.println("HTTP/1.1 200 OK");
                        client.println("Content-Type: text/html");
                        client.println("Connnection: close");
                        client.println();
                        webFile = SD.open("Site.php");        // open web page file
                    }
                    else if (StrContains(HTTP_req, "GET /style.css")) {
                        client.println("HTTP/1.1 200 OK");
                        client.println("Content-Type: text/html");
                        client.println("Connnection: close");
                        client.println();
                        webFile = SD.open("style.css");        // open web page file
                    }
                    else if (StrContains(HTTP_req, "GET /test.txt")) {
                        client.println("HTTP/1.1 200 OK");
                        client.println("Content-Type: text/html");
                        client.println("Connnection: close");
                        client.println();
                        webFile = SD.open("test.txt");        // open web page file
                    }
                   else if (StrContains(HTTP_req, "GET /Logo.jpg")) {
                        webFile = SD.open("Logo.jpg");
                        if (webFile) {
                            client.println("HTTP/1.1 200 OK");
                            client.println();
                        }
                    }
                    if (webFile) {
                        while(webFile.available()) {
                            client.write(webFile.read()); // send web page to client
                        }
                        webFile.close();
                    }
                    // reset buffer index and all buffer elements to 0
                    req_index = 0;
                    StrClear(HTTP_req, REQ_BUF_SZ);
                    break;
                }
                // every line of text received from the client ends with \r\n
                if (c == '\n') {
                    // last character on line of received text
                    // starting new line with next character read
                    currentLineIsBlank = true;
                } 
                else if (c != '\r') {
                    // a text character was received from client
                    currentLineIsBlank = false;
                }
            } // end if (client.available())
        } // end while (client.connected())
        delay(1);      // give the web browser time to receive the data
        client.stop(); // close the connection
    } // end if (client)
}

// sets every element of str to 0 (clears array)
void StrClear(char *str, char length)
{
    for (int i = 0; i < length; i++) {
        str[i] = 0;
    }
}

// searches for the string sfind in the string str
// returns 1 if string found
// returns 0 if string not found
char StrContains(char *str, char *sfind)
{
    char found = 0;
    char index = 0;
    char len;

    len = strlen(str);
    
    if (strlen(sfind) > len) {
        return 0;
    }
    while (index < len) {
        if (str[index] == sfind[found]) {
            found++;
            if (strlen(sfind) == found) {
                return 1;
            }
        }
        else {
            found = 0;
        }
        index++;
    }

    return 0;
}

Code HTML:

<?php
$monfichier = fopen('test.txt', 'r+');
$ligne = fgets($monfichier);
echo ("$ligne");
fclose($monfichier);
?>

Merci Beaucoup d’avance.

votre arduino ne sait pas interpréter du PHP...

expliquez le mode opératoire. que doit faire l'utilisateur pour voir cette page web? sur quoi il se connecte, qui a les données etc...

L'utilisateur doit uniquement se connecter grâce a un navigateur sur ip de l'arduino est une page web apparait est les valeur doit apparaitre dessous des titre c'est tout.

bonjour, comme l'a indiqué JML, pas de php sur un arduino

Pouty: L'utilisateur doit uniquement se connecter grâce a un navigateur sur ip de l'arduino est une page web apparait est les valeur doit apparaitre dessous des titre c'est tout.

et en clair, ca donne quoi?

Bonsoir

Éventuellement regardez l'exemple que j'ai posté dans la partie tutos

D'accord merci beaucoup.

Infobarquee: En claire sa donne une consommation en kW/h qui est dynamique car elle est instantanée. Voila

Merci.

Juste une précision, pour une consommation instantanée, l'unité est le Watt, pas le kW/h. Et pour une consommation électrique, l'unité est le kW.h et pas le kW/h.