Se pierde SSID PASS DEVICE_KEY en el sketch al tiempo

Hola
Al volver a modificar un sketch, thingProperties.h ha perdido el SSID PASS y DEVICE_KEY.
Porqué ocurre esto?
Saludos

Tu tema ha sido movido a la sección en español del foro. Utiliza el inglés en las secciones en inglés del foro.

1 Like

Moderador

Porque primero no lees las Normas del foro y le das mas contexto al tema

Código, librería que usas, link si corresponde.

No es problema de código o librerías.
Es problema del entorno de arduino cloud.
Ya me ha pasado otras veces.
Subes un sketch a un dispositivo, con sus claves wifi, key y demás,
funciona, se conecta y en el dashboard ves la info o datos bien.
pero al modificarlo días después, en la pestaña del fichero thingProperties.h, ha perdido la wifi y el DEVICE_KEY apareciendo así:

const char SSID[]               = SECRET_SSID;    // Network SSID (name)
const char PASS[]               = SECRET_OPTIONAL_PASS;    // Network password (use for WPA, or use as key for WEP)
const char DEVICE_KEY[]  = SECRET_DEVICE_KEY;    // Secret device password

La última vez, me pasó tras modificar una variable en la pestaña de variables Thigs.
Tras subir por OTA, habiendo perdido los datos de la wifi y la key, flashea pero ya no se conecta al no tener las claves wifi.
El dispositivo lo tengo puesto a 100km de mi casa, y a la primera OTA, ya no funciona.
Saludos

Okay, Dime como podemos saberlo?
Siempre que traigas una consulta debes ponernos en contexto como lo has hecho ahora en tu post#4.

Analizaré tu problema y si encuentro alguna respuesta te la haré saber.

EDITO: Bueno esto es lo que averigüé

Aparentemente (según lo leído en el foro en inglés) eso pasa porque el archivo thingProperties.h lo genera automáticamente el gestor de Arduino Cloud cada vez que haces un cambio en “Thing”.

En ese archivo no conviene escribir manualmente datos sensibles como SSID, PASS o DEVICE_KEY, porque esos campos se borran o se reemplazan cuando sincronizas con la nube

Parece ser que:

  • El SSID y la PASS los guarda Arduino Cloud en la EEPROM del microcontrolador, no en el código.

  • El DEVICE_KEY está vinculado a "Thing" y también lo genera automáticamente el asistente al crear el sketch inicial.

  • Si lo borras (acá esta el problema) el sistema vuelve a generarlo al compilar o sincronizar.

Consejo:
Guarda los SSID y PASS en un archivo independiente (secrets.h) que no se sobrescriba, y desde thingProperties.h o el .inolo incluyes.

Gracias por tu ayuda.
Estaban las 3 guardadas en el secrets, no las coge de ahí?

Y el secrets.h incorporado obviamente a tu .ino principal?

No tengo claro si se añade sola o hay q añadirla

No has entendido asi que te doy una idea mejor.

crea un archivo secrets.h

// secrets.h
#ifndef SECRETS_H
#define SECRETS_H

// WiFi credentials
#define SECRET_SSID     "TuSSID"
#define SECRET_PASS     "TuPassword"

// Arduino IoT Cloud
#define SECRET_DEVICE_KEY  "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

#endif

Y lo incorporas a tu código de este modo, solo agrega esto

#include "secrets.h"

Y reemplazas lo que ya tenias por los datos almacendos en secrets.h de este modo

const char SSID[]     = SECRET_SSID;
const char PASS[]     = SECRET_PASS;
const char DEVICE_KEY[] = SECRET_DEVICE_KEY;

Entonces al compilar no se cambia nada porque no toca secrets.h.

Investigando, no todos los devices me habían creado la pestaña secrets.
Si no se crea, hay q añadirla