diff --git a/docs/notifications.md b/docs/notifications.md new file mode 100644 index 0000000..ab085a2 --- /dev/null +++ b/docs/notifications.md @@ -0,0 +1,112 @@ +# Rappels de pointage + +L'app peut te relancer automatiquement si tu es détecté présent au bureau sans +avoir pointé le matin, ou parti sans avoir pointé la sortie. Ça repose sur deux +briques : + +- **Réception des notifs** : [ntfy](https://ntfy.sh), un service gratuit de + notifications push par topic. +- **Détection de présence** : ton appareil (téléphone ou laptop) appelle une + URL de l'app quand il entre/sort du bureau. L'app fait le reste (vérifie + toutes les 5 min, 7h–20h en semaine, si un pointage manque). + +Avant de commencer : va sur `/settings`, choisis un nom de topic ntfy secret +(ex: `prenom-pointeuse-a1b2`, pas devinable), enregistre-le. La page affiche +ensuite tes deux URLs personnelles **Arrivée** et **Départ** — elles +contiennent un token secret, ne les partage pas. + +--- + +## Android + +### 1. Recevoir les notifs + +1. Installe l'app **ntfy** depuis le Play Store. +2. Bouton **+** → entre le nom de topic choisi sur `/settings` → valide. + Laisse le serveur par défaut (`ntfy.sh`). + +### 2. Détecter la présence (Tasker) + +1. Installe **Tasker**. +2. Autorise Tasker à utiliser la localisation en arrière-plan (sinon Android + coupe la géolocalisation quand l'app n'est pas au premier plan). +3. Crée un profil : **Trigger → Location** → renseigne l'adresse/coordonnées + du bureau et un rayon (~100–150 m) → événement **Enter**. + Tâche associée : **Net → HTTP Request**, méthode `GET`, URL = ton lien + **Arrivée** (copié depuis `/settings`). +4. Crée un second profil symétrique : même géofence, événement **Exit**, + tâche HTTP GET vers ton lien **Départ**. + +### 3. Vérifier + +- Force une entrée/sortie de zone (ou lance la tâche HTTP manuellement dans + Tasker) et vérifie que la réponse est `{"ok":true}`. +- Simule une journée sans pointage matin pendant que tu es marqué "présent" : + une notif ntfy doit arriver dans les 5 minutes. + +--- + +## Ubuntu (laptop) + +### 1. Recevoir les notifs + +Le plus simple est le client CLI officiel, qui affiche une notif desktop +native (`notify-send`) à chaque message reçu sur ton topic. + +```bash +# via le script d'install officiel +curl -sSL https://archive.ntfy.sh/gpg.key | sudo tee /etc/apt/keyrings/ntfy.asc +echo "deb [signed-by=/etc/apt/keyrings/ntfy.asc] https://archive.ntfy.sh/deb stable main" \ + | sudo tee /etc/apt/sources.list.d/ntfy.list +sudo apt update && sudo apt install ntfy +``` + +Lance un abonnement persistant (à mettre dans un service systemd user, voir +plus bas, ou simplement dans un terminal/tmux) : + +```bash +ntfy subscribe --output=notify-send TON_TOPIC +``` + +### 2. Détecter la présence (hook réseau NetworkManager) + +Objectif : appeler l'URL "Arrivée" dès que le laptop se connecte au Wi-Fi du +bureau, et l'URL "Départ" dès qu'il s'en déconnecte. + +Crée `/etc/NetworkManager/dispatcher.d/99-pointeuse` : + +```bash +#!/bin/bash +# $1 = nom de l'interface, $2 = événement (up/down/...) +BUREAU_SSID="NomDuWifiBureau" +URL_ARRIVEE="https://ton-serveur/presence/TON_TOKEN/arrivee" +URL_DEPART="https://ton-serveur/presence/TON_TOKEN/depart" + +current_ssid=$(nmcli -t -f active,ssid dev wifi | grep '^yes' | cut -d: -f2) + +case "$2" in + up) + [ "$current_ssid" = "$BUREAU_SSID" ] && curl -fsS "$URL_ARRIVEE" + ;; + down) + [ "$current_ssid" != "$BUREAU_SSID" ] && curl -fsS "$URL_DEPART" + ;; +esac +``` + +```bash +sudo chmod +x /etc/NetworkManager/dispatcher.d/99-pointeuse +``` + +Le script tourne automatiquement à chaque changement de connexion réseau — +pas besoin de cron ni de service à part. + +### 3. Vérifier + +```bash +# teste le script à la main +sudo /etc/NetworkManager/dispatcher.d/99-pointeuse wlp0s20f3 up +``` + +La réponse doit être `{"ok":true}`. Reconnecte-toi ensuite au vrai Wi-Fi du +bureau pour valider le déclenchement automatique.