Saltar al contenido principal

API de energía en tiempo real

Carpeta: realtime-energy-api/ · Puerto: 3002 · Swagger: http://localhost:3002/api-docs · Tecnología: Express

Servicio ligero que expone los datos de energía instantánea que consultan los contadores y las integraciones externas. Comparte base de datos con la API de Zertipower.

Qué hace​

RutaPara qué
GET /is-aliveComprobación de vida
GET /versionVersión del servicio
POST /tokensCanjea un token temporal, emitido por la API de Zertipower, por uno permanente
/cupsDatos de los puntos de suministro. Protegida con el token permanente.
/communitiesDatos de comunidades
/api-docsDocumentación Swagger

El esquema de dos tokens existe para que un dispositivo pueda quedarse autenticado mucho tiempo sin manejar credenciales: pide una vez el permanente y lo usa a partir de entonces.

Configuración​

VariableQué esValor
DATABASE_URLConexión, la misma base que la API de Zertipowermysql://root:…@mariadb:3306/zertipower-dev
PORTPuerto interno3000 (publicado como 3002)
JWT_SECRETDebe coincidir con el de la API de Zertipowersecreto
BASE_URLURL pública propia, sólo para el «Try it out» de Swaggerhttp://localhost:3002
JWT_SECRET tiene que ser el mismo

Este servicio verifica en /tokens un token temporal emitido por la API de Zertipower, y protege /cups con el permanente que entrega a cambio. Si las claves no coinciden, todas esas llamadas responden 401.

Durante un tiempo el compose no le pasaba esta variable en absoluto, con lo que jwt.verify recibía un valor indefinido y esas rutas fallaban siempre.

Limitación de peticiones​

El servicio limita a 100 peticiones cada 5 minutos por IP, identificando al cliente por su dirección real y no por la del proxy. Al superarlo responde Ip blocked for security.

Cómo comprobar que está vivo​

curl http://localhost:3002/is-alive

Y sin token, /cups debe responder que falta:

curl http://localhost:3002/cups