Listato ChatGPT

Richieste varie sugli SHELLY.
Rispondi
iPino
Messaggi: 3
Iscritto il: mercoledì 29 gennaio 2025, 15:56

mercoledì 29 gennaio 2025, 16:56

Salve, ho uno Shelly Plus 1 che comanda due potenti fari esterni (tramite un contattore) per illuminare l'esterno della casa in funzione dissuasiva; questi fari li accendo con lo smartphone e poi ci pensa lo Shelly a spegnerli dopo 5 minuti.
Ora vorrei comandare anche automaticamente i fari con due o più sensori di movimento; dato che ho parecchi tra ESP8266 e ESP32 inutilizzati persavo di comandare lo Shelly da questi microcontrollori che gestiscono i sensori di movimento (e quant'altro) utilizzando il protocollo HTTP e non MQTT.
Per facilitarmi le cose sul piano della programmazione degli ESP ho chiesto a ChatGPT di suggerirmi un listato.
La risposta è stata immediata e la riporto qui sotto:

-------------------------------------------------------------------------------------
#include <ESPAsyncWebServer.h>
#include <WiFi.h>


// Dati di accesso alla rete Wi-Fi
const char* ssid = "MyWiFi";
const char* password = "MyPW";

// Imposta l'indirizzo IP del Shelly
const char* shellyIP = "192.168.1.192"; // Cambia con l'IP del tuo Shelly
const int shellyPort = 80; // Porta HTTP del Shelly (80 di default)

// Crea un'istanza del server web
AsyncWebServer server(80);

// Funzione per inviare un comando HTTP per controllare lo Shelly
void sendShellyCommand(const String& command) {
WiFiClient client;
if (client.connect(shellyIP, shellyPort)) {
String url = "/relay/0?turn=" + command; // Il comando per accendere o spegnere
client.print(String("GET ") + url + " HTTP/1.1\r\n" +
"Host: " + shellyIP + "\r\n" +
"Connection: close\r\n\r\n");
} else {
Serial.println("Errore di connessione a Shelly");
}
}

void setup() {
// Avvia la connessione WiFi
Serial.begin(115200);
WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connessione a WiFi...");
}

Serial.println("Connesso a WiFi");
Serial.println("Indirizzo IP ESP32: " + WiFi.localIP().toString());

// Definisci i percorsi per accendere/spegnere lo Shelly
server.on("/accendi", HTTP_GET, [](AsyncWebServerRequest *request){
sendShellyCommand("on"); // Accende il relay dello Shelly
request->send(200, "text/plain", "Shelly acceso");
});

server.on("/spegni", HTTP_GET, [](AsyncWebServerRequest *request){
sendShellyCommand("off"); // Spegne il relay dello Shelly
request->send(200, "text/plain", "Shelly spento");
});

// Avvia il server
server.begin();
}

void loop() {
// Il loop è vuoto, poiché usiamo un server asincrono
}
--------------------------------------------------------------------------------------------

Breve, carino solo che ... non funziona, o per meglio dire la risposta al comando è Shelly Acceso, ma ... acceso non è.
Secondo voi dove sbaglio io o dove sbaglia ChatGPT?
Grazie per le risposte!
iPino
iPino
Messaggi: 3
Iscritto il: mercoledì 29 gennaio 2025, 15:56

giovedì 30 gennaio 2025, 23:55

Banalmente ... la password non viene passata! quindi contatta Shelly ma non commuta!
iPino
Rispondi