Files
Arduino/W1D1_CLIENT_TEST/W1D1_CLIENT_TEST.ino
Jérôme Delacotte 7b30d6e298 first commit
2025-03-06 11:15:32 +01:00

203 lines
4.5 KiB
C++
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
// Time to sleep (in seconds):
const int sleepTimeS = 10;
// WiFi information
const char WIFI_SSID[] = "Livebox-37cc";
const char WIFI_PSK[] = "8A6060920A8A86896F770F2C47";
// Remote site information
const char http_site[] = "192.168.0.10";
const int http_port = 8080;
// Pin definitions
const int LED_PIN = 0;
#define DEBUG true
// Global variables
WiFiClient client;
void setup() {
// Set up serial console to read web page
Serial.begin(9600);
Serial.print("Thing GET Example");
// Set up LED for debugging
pinMode(LED_PIN, OUTPUT);
}
void loop() {
int lum = analogRead(2);
// If the server has disconnected, stop the client and WiFi
if ( !client.connected() ) {
// Connect to WiFi
connectWiFi();
// Attempt to connect to website
if ( !getPage("/json.htm?type=command&param=udevice&idx=294&svalue=" + String(lum)) ) {
Serial.println("GET request failed");
}
while(!client.available()){
delay(10);
}
// // If there are incoming bytes, print them
// while ( client.available() ) {
// char c = client.read();
// Serial.print(c);
// }
String ret = recoitDuESP8266WithJson(10000, "status");
debugPrintln("** ret=" + ret);
Serial.println();
// Close socket and wait for disconnect from WiFi
client.stop();
if ( WiFi.status() != WL_DISCONNECTED ) {
WiFi.disconnect();
}
// Turn off LED
digitalWrite(LED_PIN, LOW);
// Do nothing
Serial.println("Finished Thing GET test");
// while(true){
// delay(30000);
//}
}
WiFi.forceSleepBegin();
delay(10000);
// WiFi.deepSleep(sleepTimeS * 1000000);
WiFi.forceSleepWake();
}
// Attempt to connect to WiFi
void connectWiFi() {
byte led_status = 0;
// Set WiFi mode to station (client)
WiFi.mode(WIFI_STA);
// Initiate connection with SSID and PSK
WiFi.begin(WIFI_SSID, WIFI_PSK);
// Blink LED while we wait for WiFi connection
while ( WiFi.status() != WL_CONNECTED ) {
digitalWrite(LED_PIN, led_status);
led_status ^= 0x01;
delay(100);
}
// Turn LED on when we are connected
digitalWrite(LED_PIN, HIGH);
}
/****************************************************************/
/*Fonction qui lit et affiche les messages envoyés par l'ESP8266*/
/****************************************************************/
String recoitDuESP8266WithJson(const int timeout, String jsonId)
{
String ret = "";
String reponse = "";
boolean found = false;
long int time = millis();
while ( (time + timeout) > millis())
{
while (client.available())
{
//reponse = "";
char c = client.read();
reponse += c;
//reponse.trim();
if (reponse.equalsIgnoreCase(jsonId)) {
debugPrint("Trouve" + reponse + " " + jsonId);
}
if (c == 10 || c == 13 || reponse.length() > 80) {
reponse.trim();
// debugPrint(reponse);
int p = reponse.indexOf(':');
String id = reponse.substring(0, p);
String value = reponse.substring(p + 1, reponse.length() - 1);
id.trim();
value.trim();
id.replace("\"", "");
value.replace("\"", "");
if (id.equalsIgnoreCase(jsonId) && !found) {
debugPrintln("========> Trouve " + jsonId + " == " + value);
ret = value;
found = true;
} else {
//debugPrintln(id + " " + value);
}
reponse = "";
}
}
}
//debugPrintln(reponse);
return ret;
}
/****************************************************************/
/*Fonction qui lit et affiche les messages envoyés par l'ESP8266*/
/****************************************************************/
void recoitDuESP8266(const int timeout)
{
String reponse = "";
long int time = millis();
while ( (time + timeout) > millis())
{
while (client.available())
{
char c = client.read();
reponse += c;
}
}
debugPrintln(reponse);
}
// Perform an HTTP GET request to a remote page
bool getPage(String page) {
// Attempt to make a connection to the remote server
if ( !client.connect(http_site, http_port) ) {
return false;
}
// Make an HTTP GET request
client.println("GET " + page + " HTTP/1.1");
client.print("Host: ");
client.println(http_site);
client.println("Connection: close");
client.println();
return true;
}
void debugPrint(String m) {
#ifdef DEBUG
Serial.print(m);
#endif
}
void debugPrintln(String m) {
#ifdef DEBUG
Serial.println(m);
#endif
}