Buongiorno a tutti,
Con un ESP32 ho creato, tramite Arduino IoT Cloud un codice per abilitare da remoto 2 pin.
Ho praticamente completato il mio progettino, ma rimane un problema, vorrei poter visualizzare dal cloud lo stato di un pin in particolare e quindi sono quì a chiedere a chi ha più esperienza di me come posso fare...
Ma partiamo dall'inizio:
Al momento ho 2 variabili boleane:
interrutore_caldaia
(Variable Permission: Read & Write) (Update Policy: On change) (PIN 2)pulsante_temporiz
(Variable Permission: Read & Write) (Update Policy: On change) (PIN 0)
la 1° variabile (interrutore_caldaia
) è stata associata ad un interruttore (ON - OFF) tramite la dashboard di Arduino IoT Cloud; questo interruttore di permette di di tenere accesa la caldaia per tutto il tempo che voglio io, finchè non metto l'interruttore sullo stato di OFF... fin quì nessun problema (tramite l'icona dell'interruttore vedo lo stato, ON/OFF del pin 2).
Il problema si presenta per la 2° variabile (pulsante_temporiz
) che è stata associata ad un pulsante tramite la dashboard del cloud; la variabile è stata programmata per fare in modo che il pin 0, una volta ricevuto il comando dalla dashboard, si attivi per 10 secondi (un domani servirà per tenere accesa la caldaia per 15-30 min)...
Il problema è che vorrei poter vedere dalla dashboard se il pin 0 è attivo.
Ho provato a mettere il widget led (ho provato altri widget, che anche loro non funzionano, ma il led mi sembra il più adatto) sulla dashboard ma il led si attiva per 1 secondo (giusto il tempo del click sul pulsante) e si spegne... vorrei che restasse acceso finché il pin 0 è attivo.
Allego il codice:
#include "thingProperties.h"
bool pin0_on = false;
unsigned long previousMillis = 0;
const long interval = 10000;
void setup() {
// Initialize serial and wait for port to open:
Serial.begin(9600);
// This delay gives the chance to wait for a Serial Monitor without blocking if none is found
delay(1500);
// Defined in thingProperties.h
initProperties();
// Connect to Arduino IoT Cloud
ArduinoCloud.begin(ArduinoIoTPreferredConnection);
/*
The following function allows you to obtain more information
related to the state of network and IoT Cloud connection and errors
the higher number the more granular information you’ll get.
The default is 0 (only errors).
Maximum is 4
*/
setDebugMessageLevel(2);
ArduinoCloud.printDebugInfo();
pinMode(2, OUTPUT);
pinMode(0, OUTPUT);
}
void loop() {
ArduinoCloud.update();
// Your code here
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
digitalWrite(0, LOW); // Disabilita il pin 0
}
}
/*
Since InterrutoreCaldaia is READ_WRITE variable, onInterrutoreCaldaiaChange() is
executed every time a new value is received from IoT Cloud.
*/
void onInterrutoreCaldaiaChange() {
digitalWrite(2, interrutore_caldaia);
}
/*
Since PulsanteTemporiz is READ_WRITE variable, onPulsanteTemporizChange() is
executed every time a new value is received from IoT Cloud.
*/
void onPulsanteTemporizChange() {
digitalWrite(0, pulsante_temporiz);
digitalWrite(0, HIGH); // Abilita il pin 0
previousMillis = millis();
}
Grazie mille a chi saprà darmi qualche consiglio e buona domenica!
Flavio