Ayuda de notificaciones
Todo lo necesario para poner el Notifier a funcionar junto a tu TeslaMate, y qué revisar cuando un evento no llega.
Antes de empezar
Tres cosas, y la mayoría de instalaciones de TeslaMate ya tienen las dos primeras.
- TeslaMate con un broker MQTT. Mosquitto viene en el archivo Compose por defecto de TeslaMate.
- Docker en la misma máquina que TeslaMate, o en cualquier host que alcance el broker.
- Acceso saliente a internet. Sin puerto entrante, y tu TeslaMate no tiene que ser público.
Instalar el Notifier
Tu TeslaMate no puede llegar a tu teléfono por sí solo, y una notificación de iOS solo puede llegar a través de Apple. El Notifier es el contenedor pequeño que vigila MQTT y entrega los eventos. Se ejecuta junto a TeslaMate y nunca abre un puerto.
-
Consigue tu token en la app
Abre HedgieMate, ve a Ajustes y luego a Notificaciones push y actívalas. La app muestra un token de vinculación que empieza por hm_ y el ID del servidor TeslaMate al que estás conectado. Copia ambos.
El token vincula la app con el contenedor. Trátalo como una contraseña.
-
Añade el contenedor a tu archivo Compose
Abre el docker-compose.yml desde el que ejecutas TeslaMate y añade el servicio de abajo. Al quedarse en el mismo archivo comparte red con tu broker, así que MQTT_HOST es simplemente el nombre del servicio del broker.
docker-compose.yml# add under services: in the docker-compose.yml you run TeslaMate from hedgiemate-notifier: image: hedgiemate/notifier:latest restart: unless-stopped depends_on: - mosquitto environment: HEDGIEMATE_USER_TOKEN: "hm_your_token_here" SERVER_ID: "your-server-uuid" MQTT_HOST: "mosquitto" MQTT_PORT: "1883" CAR_IDS: "1" LOG_LEVEL: "info" volumes: - hedgiemate-notifier-data:/data # and under the top-level volumes: key, adding it if the file has none hedgiemate-notifier-data:El volumen es opcional. Conserva los nombres de los coches entre reinicios; sin él, el relay los rellena igualmente. Usa un volumen con nombre en vez de un bind mount: el contenedor se ejecuta con un usuario sin privilegios y no puede escribir en un directorio del host creado por Docker como root.
-
Arráncalo
Levanta el nuevo servicio. El resto de tu stack no necesita reiniciarse.
Terminaldocker compose up -d hedgiemate-notifier
Después lee el registro. Un arranque correcto muestra la conexión al broker y los IDs de coche que vigila.
Terminaldocker compose logs -f hedgiemate-notifier
-
Confírmalo en la app
La app marca el servidor como conectado en unos segundos. A partir de ahí puedes activar o desactivar cada evento, coche por coche.
No llega nada hasta que el coche cambia de estado de verdad. Enchufarlo es la forma más rápida de ver el primer evento.
Sin Compose
Si TeslaMate no se gestiona con Compose, docker run hace lo mismo. Apunta MQTT_HOST a un host que el contenedor pueda alcanzar.
docker run -d \ --name hedgiemate-notifier \ --restart unless-stopped \ -e HEDGIEMATE_USER_TOKEN="hm_your_token_here" \ -e SERVER_ID="your-server-uuid" \ -e MQTT_HOST="your-mqtt-host" \ -e CAR_IDS="1" \ hedgiemate/notifier:latest
Más de un TeslaMate
Ejecuta un Notifier junto a cada servidor. El mismo token de vinculación sirve en todos. Lo que los distingue en la app es el ID de servidor.
Configuración
Todo se define con variables de entorno. Tres son obligatorias, el resto tiene valores por defecto que funcionan.
| Variable | Por defecto | Descripción |
|---|---|---|
HEDGIEMATE_USER_TOKEN obligatoria | ninguno | Token de vinculación de la app. Empieza por hm_. |
MQTT_HOST obligatoria | ninguno | Nombre de host de tu broker MQTT. Dentro de Compose es el nombre del servicio, normalmente mosquitto. |
SERVER_ID obligatoria | ninguno | UUID del servidor que da la app. El contenedor arranca sin él, pero entonces se ignoran los ajustes por servidor y por coche hechos en la app. |
MQTT_PORT | 1883 | Puerto del broker. |
MQTT_USERNAME | ninguno | Usuario del broker, si el tuyo requiere autenticación. |
MQTT_PASSWORD | ninguno | Contraseña del broker. |
MQTT_CLIENT_ID | hedgiemate-notifier | ID de cliente usado en el broker. Cámbialo si algo más ya se conecta con este. |
MQTT_TLS | false | Ponlo en true para un broker con TLS. El puerto por defecto pasa entonces a 8883. |
MQTT_NAMESPACE | ninguno | Debe coincidir con el MQTT_NAMESPACE de tu TeslaMate, si lo has configurado. Los topics pasan a ser teslamate<namespace>/cars/#. |
CAR_IDS | 1 | IDs de coche a vigilar, separados por comas, por ejemplo 1,2. Cada coche tiene su propia máquina de estados. |
LOG_LEVEL | info | debug, info, warn o error. |
RELAY_URL | https://push.hedgiemate.com | Dirección del relay. No hay motivo para cambiarla. |
Todos los eventos
Cada fila es un interruptor independiente por coche en la app. Las actualizaciones de Live Activities no son notificaciones y no aparecen aquí.
| Notificación | Se envía cuando |
|---|---|
| Conducción | |
| Trayecto iniciado | state → driving |
| Trayecto finalizado | state leaves driving |
| Carga | |
| Carga iniciada | charging_state → Charging |
| Carga completada | charging_state → Complete |
| Carga interrumpida | charging_state leaves Charging without Complete |
| Cargador conectado | plugged_in → true |
| Cargador desconectado | plugged_in → false |
| Batería | |
| Batería baja | battery_level ≤ BATTERY_LOW_THRESHOLD |
| Nivel de batería alcanzado | battery_level ≥ BATTERY_HIGH_THRESHOLD |
| Ubicación | |
| Entrada en geocerca | geofence set |
| Salida de geocerca | geofence cleared or changed |
| Seguridad | |
| Grabación Sentry | center_display_state = 7 |
| Vehículo | |
| Actualización de software | update_available → true |
| Entrando en reposo | state → asleep pending |
| En reposo | state → asleep |
| Vehículo despierto | state leaves asleep |
No llega nada
Recorre la lista de arriba abajo. La mayoría de casos son uno de los tres primeros.
La app sigue diciendo que el servidor no está conectado
Comprueba con docker compose ps que el contenedor está en marcha y lee su registro. La causa habitual es un MQTT_HOST incorrecto: dentro de Compose es el nombre del servicio del broker, mosquitto, no localhost.
El contenedor funciona, pero nunca se dispara un evento
CAR_IDS tiene que coincidir con el ID de coche que usa TeslaMate. TeslaMate numera los coches desde 1, y con varios se listan: CAR_IDS=1,2.
MQTT conecta y el registro se queda en silencio
Si configuraste MQTT_NAMESPACE en TeslaMate, ponle el mismo valor al Notifier. Sin él los nombres de los topics no coinciden y el contenedor no tiene nada que leer.
Llegan algunos eventos y otros nunca
Cada evento es un interruptor por coche en la app. Abre el servidor en Ajustes y revisa la lista de eventos de ese coche.
Las notificaciones de batería nunca se disparan
BATTERY_LOW_THRESHOLD y BATTERY_HIGH_THRESHOLD valen 20 y 90 por defecto. Se envían una vez por sesión de carga, así que un coche que no ha cruzado el límite desde que empezó a cargar no manda ninguna.
Las notificaciones dejan de llegar a los pocos días
Asegúrate de que el servicio tiene restart: unless-stopped para volver con el host. Después revisa iOS: un modo de concentración o los ajustes de notificaciones de la app pueden estar tragándoselas.
Las Live Activities no aparecen
Las Live Activities deben estar permitidas para HedgieMate en Ajustes de iOS y tiene que haber una sesión activa. La Dynamic Island necesita un iPhone 14 Pro o posterior.
El broker pide usuario o TLS
Define MQTT_USERNAME y MQTT_PASSWORD. Para TLS pon MQTT_TLS en true, con lo que el puerto por defecto pasa a 8883.
Necesitas ver qué está haciendo
Pon LOG_LEVEL en debug, reproduce el caso y vuelve a dejarlo como estaba. Debug registra cada mensaje MQTT y cada decisión tomada a partir de él.
Preguntas
¿Por qué necesito el Notifier?
Tu TeslaMate está en tu propio servidor y no puede llegar a tu teléfono, y una notificación de iOS solo la puede entregar Apple. El Notifier cubre ese hueco: vigila tus topics MQTT, detecta el cambio de estado y envía el evento para que se entregue.
¿Mi TeslaMate tiene que ser accesible desde internet?
No. El Notifier solo abre conexiones salientes, así que no hace falta exponer nada ni redirigir ningún puerto para que funcionen las notificaciones.
¿Qué sale realmente de mi servidor?
El tipo de evento, el nivel de batería, el estado de carga y el nombre del geofence si usas geofences. Las coordenadas y las rutas se quedan en tu TeslaMate, y la dirección de tu servidor no se envía nunca. Los datos de eventos se borran a las pocas horas.
¿Puede ejecutarse en una máquina distinta de TeslaMate?
Sí, siempre que alcance tu broker MQTT. Pon MQTT_HOST apuntando a ese host y comprueba que el puerto del broker es accesible desde ahí.
¿Funciona con varios coches?
Sí. Lista los IDs en CAR_IDS y cada coche tendrá su propio seguimiento de estado y sus propios interruptores en la app.
¿Qué pasa si el relay no está disponible?
El contenedor reintenta unas cuantas veces con una espera creciente y luego descarta ese evento. Sigue funcionando y procesa el siguiente cambio de estado con normalidad.
¿Guarda algo?
Solo una caché de los nombres de los coches, y únicamente si montas el volumen opcional. Todo lo demás vive en memoria mientras el contenedor esté en marcha.
¿Cómo lo actualizo?
Vuelve a descargar la imagen y recrea el servicio. Las notas de versión están en la página de releases de GitHub.
¿Cómo desactivo las notificaciones?
Desactívalas en la app o para el contenedor. Cada opción funciona por su cuenta y nada más en tu stack de TeslaMate depende de él.
Código fuente
El Notifier es Go con licencia MIT. Revisa el código o abre una incidencia si algo falla.
LukStankovic/hedgiemate-notifier
¿Necesitas ayuda?
¿Tienes problemas con la configuración? Estamos aquí para ayudarte a empezar.