Hallo zusammen.
Ich habe einen Webschalter mittels ESP07.
Wenn ich im Browser vom Rechner die IP aufrufe, in diesem Fall 192.168.10.25, dann komme ich auf die Webseite. Dort kann ich dann mit der Maus das Relais schalten.
Machbar ist dies aber auch mittels 192.168.10.25/?relais=1
Nun möchte ich einen sogenannten Notrufbutton erstellen.
Es soll ein ESP-02 (wegen der externen Antenne, sonst identisch ESP-01) im Deepleep mittels Batterie warten. Bei Reset soll er sich ins W-Lan einloggen und genau diese URL aufrufen.
Ich habe das Gefühl mit dem Fragezeichen etc gibts Probleme.
In der ct gab es mal ein passendes Script.
Abgewandelt sähe das dann bei mir so aus:
Da das Script mal auf einen Raspi connecten sollte, habe ich die Fingerprint Geschichte entfernt.
#include <ESP8266WiFi.h>
/************************* WiFi Access Point *********************************/
#define WLAN_SSID "raspi-iot"
#define WLAN_PASS "cttest1234"
#define LED 2
/************************** Global State *************************************/
// WiFiFlientSecure for SSL/TLS support
WiFiClientSecure client;
/*************************** Sketch Code ************************************/
void setup() {
Serial1.begin(115200);
Serial1.println();
Serial1.println("Initializing outputs...");
pinMode(LED, OUTPUT);
digitalWrite(LED, LOW);
Serial1.println("Starting Wifi connection...");
WiFi.begin(WLAN_SSID, WLAN_PASS);
int failcounter = 300;
Serial1.print("Waiting for a connection");
while (WiFi.status() != WL_CONNECTED) {
delay(100);
Serial1.print(".");
if (failcounter <= 0) {
Serial1.println();
Serial1.println("Giving up.");
blinkError();
shutdown();
}
failcounter--;
}
Serial1.println();
digitalWrite(LED, HIGH);
Serial1.println("Wifi connected.");
// connect to host
const char* host = "192.168.10.25";
int port = 80;
if (client.connect(host, port)) {
Serial1.print("Connection to ");
Serial1.print(host);
Serial1.println(" established.");
// send GET request
Serial1.println("Sending a message to the server:");
client.print(String("GET /") + " HTTP/1.1\r\n" +
"Host: " + host + "\r\n" +
"Connection: close\r\n" +
"\r\n");
Serial1.println(String("GET /") + " HTTP/1.1\r\n" +
"Host: " + host + "\r\n" +
"Connection: close\r\n" +
"\r\n");
blinkSent();
delay(500);
// get response
int success = 0;
failcounter = 10000;
while (client.connected()) {
if (client.available()) {
String line = client.readStringUntil('\n');
Serial1.println("Server response: " + line);
if (line[0] == 'O' && line[1] == 'K') {
digitalWrite(LED, LOW);
success = 1;
}
}
if (failcounter <= 0) {
blinkError();
shutdown();
}
failcounter--;
}
if (success) {
blinkSuccess();
} else {
Serial1.println("Got no success message.");
blinkError();
}
// close connection
Serial1.println("Successfully closing the connection.");
client.stop();
shutdown();
} else {
Serial1.print("Unable to connect to ");
Serial1.print(host);
Serial1.println(". Sorry.");
shutdown();
}
}
void loop() {
// this should never be reached.
}
void verifyFingerprint() {
if (! client.verify(FINGERPRINT, CERT_NAME)) {
Serial1.println("ERROR: Incorrect certificate signature!");
// Connection insecure!
blinkError();
shutdown();
}
}
void blinkSuccess() {
for (int i = 4; i < 50; i=(5*i) >> 2) {
digitalWrite(LED, HIGH); // turn the LED off
delay(10*i); // wait
digitalWrite(LED, LOW); // turn the LED on
delay(10*i); // wait
}
}
void blinkError() {
for (int i = 0; i < 28; i++) {
digitalWrite(LED, HIGH); // turn the LED off
delay(125); // wait
digitalWrite(LED, LOW); // turn the LED on
delay(125); // wait
}
}
void blinkSent() {
for (int i = 0; i < 2; i++) {
digitalWrite(LED, LOW); // turn the LED on
delay(200); // wait
digitalWrite(LED, HIGH); // turn the LED off
delay(200); // wait
}
}
void shutdown() {
Serial1.println("Shutting down.");
Serial1.println("Going to sleep.");
ESP.deepSleep(0);
Serial1.println("Sleep failed.");
while(1) {
blinkError();
}
}
Nun habe ich gelesen, das man String url = "/?relais=1" einbauen könnte, jegliche versuche laufen dabei ins leere.
In dem Script wird auch die Ausgabe abgefragt. Theoretisch wird eine 1 von der Webseite ausgegeben oder eine 0 beim Ausschalten.
Könnt Ihr mir da helfen???
Er soll aufwachen, sich ins Wlan verbinden, die Url aufrufen bzw das Relais schalten, ist dies erfolgt schön blinken und danach schlafen gehen.
Selbiges baue ich analog dazu dann zum abschalten nach, aber das ist dann wohl das kleinste übel.