113 lines
3.7 KiB
Markdown
113 lines
3.7 KiB
Markdown
# 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.
|