Hola @Terdious, esta mañana me di cuenta de que mi termostato NetAtmo ya no subía información a Gladys.
En la configuración, el servicio ya no estaba conectado. Luego hice clic en Guardar y conectar y volví a validar en la página de NetAtmo que se abre.
Desafortunadamente, los datos aún no se suben.
He intentado eliminar el termostato y volver a agregarlo, pero sin éxito.
En los registros obtengo el siguiente error:
025-03-22T13:22:08+0100 <info> netatmo.loadDevices.js:146 (NetatmoHandler.loadDevices) Netatmo devices not supported : 0
2025-03-22T13:22:08+0100 <info> netatmo.discoverDevices.js:23 (NetatmoHandler.discoverDevices) 2 Netatmo devices found
2025-03-22T13:22:08+0100 <info> netatmo.convertDeviceEnergy.js:108 (NetatmoHandler.convertDeviceEnergy) Netatmo Energy device "undefined, NAPlug" converted
2025-03-22T13:22:08+0100 <info> netatmo.convertDeviceEnergy.js:108 (NetatmoHandler.convertDeviceEnergy) Netatmo Energy device "Thermostat, NATherm1" converted
2025-03-22T13:22:11+0100 <error> netatmo.loadDeviceDetails.js:101 (NetatmoHandler.loadDeviceDetails) Error getting devices details - error: AxiosError: Request failed with status code 400
at settle (/src/server/services/netatmo/node_modules/axios/lib/core/settle.js:19:12)
at IncomingMessage.handleStreamEnd (/src/server/services/netatmo/node_modules/axios/lib/adapters/http.js:585:11)
at IncomingMessage.emit (node:events:530:35)
at endReadableNT (node:internal/streams/readable:1698:12)
at processTicksAndRejections (node:internal/process/task_queues:90:21) {
code: 'ERR_BAD_REQUEST',
config: {
transitional: {
silentJSONParsing: true,
forcedJSONParsing: true,
clarifyTimeoutError: false
},
No he puesto los registros completos porque hay información personal, pero si es necesario puedo enviártelos en privado.
Otro punto, en la página de descubrimiento de NetAtmo no encuentra mi termostato y Gladys está congelada. Ningún botón funciona.
¿Tienes algún problema de tu lado?
PD: mi termostato está bien conectado en la aplicación NetAtmo y puedo controlarlo desde la aplicación de mi teléfono sin problemas.
Hola @Will_71,
Pues sí, tuve el mismo problema. Tuve que ir a la página de dev.netatmo para « desbloquear ». Al parecer Gladys realizó demasiadas solicitudes y la API bloqueó la aplicación…
¿Después de una actualización?
Sin embargo, aún tengo muchos datos faltantes, debo echar un vistazo esta semana para ver si algo ha cambiado en la API o en Gladys en una actualización…
Vale, gracias por tu respuesta. No puedo confirmarte exactamente si esto ocurrió antes o después de la última actualización.
Para probar, he recreado una app en NetAtmo y he intentado reconfigurar el servicio, pero ahora nada funciona, Gladys ya no detecta mi termostato y la página de configuración se congela.
¡Vale! Mañana intento depurar y te aviso si necesito tus registros.
Mi Node-red también tiene problemas, así que…
Para Gladys, al subir las curvas a 30 días, veo el último dato el 15/03. Por lo tanto, no está relacionado con una actualización.
Sin embargo, mis comandos pasan bien… todo esto es extraño.
He reactivado Netatmo en NodeRed y confirmo que tampoco funciona.
Finalmente, cuando genero un token, funciona 5 minutos y después nada.
Aquí está el retorno de los datos con NodeRed
Por lo tanto, esto confirma que solo funciona un cierto tiempo después de recrear un token en Netatmo.
Por lo tanto, hay un problema en su lado o han cambiado algo.
¡Tachán! Tras la actualización de Axios:
…
Pero no, ¡nada más! Y la respuesta de chatGPT es decisiva para Axios… ¡Es increíble!
@pierre-gilles, ¿alguna idea para una solución alternativa? ¿Puedo probar con undici como precario aquí? No lo conozco, así que prefiero preguntar antes de empezar.
La propuesta de ChatGPT es buena, undici es una librería seria desarrollada por miembros del equipo de Node.js, estable y ligera:
Por lo tanto, efectivamente migrar a esto es una buena solución, no debería ser demasiado complicado, creo.
De hecho, recibí varios correos este fin de semana en el buzón de Gladys diciendo que la integración de Netatmo está rota 
Perfecto, voy a probar el parche.
Bueno, por suerte hago mi pequeña ronda diaria ^^ Para que decir, no me había dado cuenta de nada desde el 15/03…
¡Gracias @Will_71!!
¡Buena noticia! ¡Es un partido!
¡Excelente! Avísame en cuanto tengas una PR 
Las pruebas fueron largas … Lo siento
Normalmente está bien @pierre-gilles !
¡Gracias!
Pregunta: ¿Lo uso en las pruebas, por eso lo instalé de forma global además del servicio. ¿Debo hacer algo diferente? ¿Reinstalarlo en las pruebas?
¡Efectivamente, en este caso puedes instalarlo en las devDependencies! 
Hola @pierre-gilles,
Gracias por la revisión y tu rigor. Por mi parte, es feo… no soy capaz de encontrar las buenas informaciones.
En fin… He corregido según lo que me has proporcionado.
Por otro lado, el último test falló en mi último push que era solo textual, sobre otra cosa que la PR:
2815 passing (2m)
1 failing
1) house.arm
should arm a house:
expected emit to be called 4 times but was called twice
emit(websocket.send-all, { payload: { house: "test-house" }, type: "alarm.arming" }) => null at House.arm (/home/runner/work/Gladys/Gladys/server/lib/house/house.arm.js:11:35)
emit(trigger.check, { house: "test-house", type: "alarm.arming" }) => null at House.arm (/home/runner/work/Gladys/Gladys/server/lib/house/house.arm.js:12:36)
AssertError: expected emit to be called 4 times but was called twice
emit(websocket.send-all, { payload: { house: "test-house" }, type: "alarm.arming" }) => null at House.arm (lib/house/house.arm.js:11:35)
emit(trigger.check, { house: "test-house", type: "alarm.arming" }) => null at House.arm (lib/house/house.arm.js:12:36)
at Object.fail (node_modules/sinon/lib/sinon/assert.js:107:21)
at failAssertion (node_modules/sinon/lib/sinon/assert.js:66:16)
at Object.assertCallCount [as callCount] (node_modules/sinon/lib/sinon/assert.js:148:13)
at Context.<anonymous> (test/lib/house/house.arm.test.js:33:12)
No podemos volver a ejecutar estos cuando fallan. El problema es que tengo el mismo error en local ahora… ¡No lo entiendo!
Lo siento, pero necesito ayuda, si esto ocurre en local también, debe haber una razón, que quizás ya existía antes pero estaba… cubierta? ¿Podrías ayudarme a entender y cómo buscar el problema?
EDIT: Lo peor es que si lo lanzo solo este test, sigue fallando ???
Vaya, es increíble, no entiendo por qué ha pasado de repente, si lanzo 10 veces solo las pruebas de server/test/lib/house/house.arm.test.js ahora falla permanentemente en local en el origen:
it('should arm a house', async () => {
await house.arm('test-house');
await Promise.delay(5);
assert.callCount(event.emit, 4);
Si cambio el retraso a 8, falla 1 de cada 8 veces:
it('should arm a house', async () => {
await house.arm('test-house');
await Promise.delay(8);
assert.callCount(event.emit, 4);
Y si cambio el retraso a 10, ya no falla:
it('should arm a house', async () => {
await house.arm('test-house');
await Promise.delay(10);
assert.callCount(event.emit, 4);
No soy capaz de determinar qué cambios míos modifican el comportamiento de esta prueba en particular…
He ejecutado un comando para lanzar las pruebas en el servicio Netatmo + lib/house poniendo el retraso a 8, sin problemas 3 veces seguidas… pero siempre 1 de cada 2 con un retraso de 5…
Edición: He hecho un push con una modificación: Añadido espacios en algunos textos de error y las pruebas pasan. Pero ¿sería posible que viéramos juntos de todos modos por qué tenemos fallos aleatorios así (y aparentemente no tan aleatorios en local…)?