Bonjour,
Je souhaite utiliser ma carte arduino 8266 pour piloter mon garage:
j'ai utilise le code ci-dessous.
j'envoie le code dans l'arduino connexion établie avec Sinric pro et mon wifi. Je peux la piloter sur mon appli sinric pro tout fonctionne parfaitement, je la ping même avec IP dans CMD de mon PC. Mais au bout de 2,3 heure elle se déconnecte et ne se reconnecte plus jamais. à sinric pro et je la ping plus.
j'ai regardé :
- elle est bien alimenté le relais est bien allumé.
- Mon wifi est mon répéteur wifi fonctionne et je lais ping.(car oui j'utilise un répéteur wifi pour l'arduino)
J'ai essayer plus rechercher sur internet mais impossible de trouver une solution.
J'utilise un relais en normalement ouvert.
Est ce que le problème vient de mon code pouvez vous m'aider s'il vous plaît. Merci cordialement,
Axel,
#include <Arduino.h>
#include <ESP8266WiFi.h>
#include <SinricPro.h>
#include <SinricProSwitch.h>
// CONFIGURATION WIFI
const char* WIFI_SSID = "XXXX";
const char* WIFI_PASS = "XXXXX";
// CONFIGURATION SINRIC PRO
#define APP_KEY "XXXXXXXXX"
#define APP_SECRET "XXXXXXX"
#define DEVICE_ID "XXXXXXX"
// PIN RELAIS
#define RELAY_PIN D5
// TEMPS IMPULSION
#define PULSE_DURATION 1000
// FONCTION POUR CONNEXION WIFI
void connectToWiFi() {
Serial.print("Connexion au WiFi...");
WiFi.begin(WIFI_SSID, WIFI_PASS);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("Connecté au WiFi !");
Serial.print("IP locale : ");
Serial.println(WiFi.localIP());
}
// CALLBACK SINRIC PRO
bool onPowerState(const String &deviceId, bool &state) {
if (deviceId == DEVICE_ID && state == true) {
Serial.println("Commande reçue depuis Sinric Pro : ACTIVATION relais");
digitalWrite(RELAY_PIN, HIGH); // Active le relais (NO)
delay(PULSE_DURATION); // Impulsion
digitalWrite(RELAY_PIN, LOW); // Désactive le relais
}
return true;
}
// SETUP
void setup() {
Serial.begin(115200);
pinMode(RELAY_PIN, OUTPUT);
digitalWrite(RELAY_PIN, LOW);
connectToWiFi();
SinricProSwitch &mySwitch = SinricPro[DEVICE_ID];
mySwitch.onPowerState(onPowerState);
SinricPro.begin(APP_KEY, APP_SECRET);
SinricPro.restoreDeviceStates(false);
}
// LOOP
void loop() {
if (WiFi.status() != WL_CONNECTED) {
connectToWiFi();
}
SinricPro.handle();
}