Ciao a tutti, chiedo a chi più competente, come trasformare il progettino di "webseriallarmino"
#include <Arduino.h>
#include <WiFi.h>
#include <Wire.h>
#include <AsyncTCP.h>
#include <ESPAsyncWebServer.h>
#include <WebSerial.h>
#define ledv 17
#define led 18
#define ledr 16
#define ledv 17
#define ledb 19
#define buzzer 22
int sensore = 21;
bool allarme = false;
int statusPir = LOW;
int lampeggi = 3;
AsyncWebServer server(80);
const char* ssid = "Zyxel_8B59_EXT"; // Your WiFi SSID
const char* password = "e mica lo vengo a dire a te"; // Your WiFi Password
void (*Riavvia)(void) = 0; //reset ARDUINO
void lampu2() {
digitalWrite(led, LOW);
delay(500);
digitalWrite(led, HIGH);
delay(500);
tone(buzzer, 13, 200);
}
void recvMsg(uint8_t* data, size_t len) {
WebSerial.println("Received Data...");
String d = "";
for (int i = 0; i < len; i++) {
d += char(data[i]);
}
//WebSerial.println(d); //OUTPUT A SERIALE
if (d == "on") {
digitalWrite(ledr, HIGH);
tone(buzzer, 4186, 100);
delay(300);
tone(buzzer, 4186, 300);
delay(300);
digitalWrite(ledr, HIGH);
//accensione();
}
if (d == "off") {
digitalWrite(ledv, LOW);
}
if (d == "bip") {
WebSerial.println("Hai detto bip!");
tone(buzzer, 13, 200);
digitalWrite(ledv, HIGH);
delay(50);
digitalWrite(ledv, LOW);
delay(50);
digitalWrite(ledv, HIGH);
delay(50);
digitalWrite(ledv, LOW);
delay(50);
digitalWrite(ledv, HIGH);
delay(50);
digitalWrite(ledv, LOW);
}
if (d == "a") {
WebSerial.print("Attivazione ALLARME");
Serial.print("Attivazione ALLARME");
for (byte i = 0; i < lampeggi; i++) {
WebSerial.print(".");
Serial.print(".");
// tone(buzzer, 13, 1700);
WebSerial.println(" ");
Serial.println(" ");
lampu2();
}
digitalWrite(led, LOW);
digitalWrite(ledv, LOW);
digitalWrite(ledb, HIGH);
WebSerial.println(" ");
WebSerial.println("ALLARME ATTIVATO");
WebSerial.println(" ");
Serial.println(" ");
Serial.println("ALLARME ATTIVATO");
Serial.println(" ");
allarme = true;
}
if (d == "s") {
allarme = false;
//tone(buzzer, 13, 1700);
digitalWrite(ledr, LOW);
digitalWrite(buzzer, LOW);
digitalWrite(ledv, HIGH);
digitalWrite(ledb, LOW);
WebSerial.println(" ");
WebSerial.println("ALLARME DISATTIVATO");
WebSerial.println(" ");
Serial.println(" ");
Serial.println("ALLARME DISATTIVATO");
Serial.println(" ");
}
if (d == "r") {
WebSerial.println("RESET");
digitalWrite(ledb, HIGH);
digitalWrite(ledv, HIGH);
digitalWrite(ledr, HIGH);
digitalWrite(led, HIGH);
delay(500);
digitalWrite(ledb, LOW);
digitalWrite(ledv, LOW);
digitalWrite(ledr, LOW);
digitalWrite(led, LOW);
Riavvia();
}
}
void setup() {
Serial.begin(115200);
pinMode(ledv, OUTPUT);
pinMode(led, OUTPUT);
pinMode(ledr, OUTPUT);
pinMode(ledv, OUTPUT);
pinMode(ledb, OUTPUT);
pinMode(buzzer, OUTPUT);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
if (WiFi.waitForConnectResult() != WL_CONNECTED) {
Serial.printf("WiFi Failed!\n");
return;
}
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());
// WebSerial is accessible at "<IP Address>/webserial" in browser
WebSerial.begin(&server);
WebSerial.msgCallback(recvMsg);
server.begin();
digitalWrite(led, HIGH);
}
void loop() {
// WebSerial.println("Hello!");
if (digitalRead(sensore) == HIGH && allarme == true) //rilevo movimento con allarme in on
{
tone(buzzer, 4186, 300);
//digitalWrite(ledr, millis() / 500 % 2);
digitalWrite(ledr, HIGH);
delay(50);
digitalWrite(ledr, LOW);
delay(50);
digitalWrite(ledr, HIGH);
delay(50);
digitalWrite(ledr, LOW);
delay(50);
digitalWrite(ledr, HIGH);
delay(50);
digitalWrite(ledr, LOW);
WebSerial.println(" ");
char bytesSent = WebSerial.println("Rilevato MOVIMENTO !");
Serial.println(" ");
Serial.println("Rilevato MOVIMENTO !");
}
// if (digitalRead(sensore) == LOW && allarme == true) {
else {
digitalWrite(ledr, LOW);
noTone(buzzer);
// delay(500);
}
delay(200);
}
da web serial in web server.
Mi spiego: vorrei, invece di usare i caratteri via seriale (a - s - ecc..) creare una pagina web con la disponibilità di tasti via web che richiamino le stesse operazioni.
Grazie a tutti