La section Android de docs/notifications.md pointait vers Tasker (payant).
Elle décrit désormais Automation (app FOSS sur F-Droid), avec deux méthodes
de déclenchement — Wi-Fi du bureau (recommandée) et géofence — et l'action
HTTP POST vers les URLs de présence existantes.
💘 Generated with Crush
Assisted-by: Crush:glm-5.2
154 lines
5.4 KiB
Markdown
154 lines
5.4 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 (Automation)
|
||
|
||
On utilise **[Automation](https://f-droid.org/en/packages/com.jens.automation2/)**
|
||
(app FOSS, sur F-Droid). Elle sait déclencher une requête HTTP POST selon ta
|
||
position géographique ou selon le Wi-Fi auquel tu es connecté — pas besoin de
|
||
plugin ni d'app payante.
|
||
|
||
1. Installe **Automation** depuis
|
||
[F-Droid](https://f-droid.org/en/packages/com.jens.automation2/)
|
||
(évite la version Play Store, amputée de la localisation et des appels/SMS).
|
||
2. Autorise la **localisation en arrière-plan** : Réglages → Applications →
|
||
Automation → Autorisations → Position → **Toujours**. Sans ça, Android
|
||
coupe la détection quand l'app n'est pas au premier plan.
|
||
3. Désactive l'**optimisation batterie** pour Automation (même menu →
|
||
Batterie → « Aucune restriction »), sinon Android finit par tuer le service.
|
||
|
||
Deux méthodes possibles — la **A** (Wi-Fi) est plus réactive et plus économe
|
||
en batterie au bureau.
|
||
|
||
#### Méthode A — déclenchement par Wi-Fi (recommandé)
|
||
|
||
Idéal si le bureau a un Wi-Fi d'entreprise. Le déclenchement se fait sur le
|
||
SSID, même si tu n'es pas identifié sur le réseau.
|
||
|
||
**Règle « Arrivée »** — Automation → **Rules** → **+** :
|
||
|
||
- *Trigger* : **Wifi connection** → entre le SSID exact du Wi-Fi du bureau.
|
||
- *Action* : **Trigger URL** → Method `POST`,
|
||
URL = ton lien **Arrivée** (copié depuis `/settings`).
|
||
|
||
**Règle « Départ »**, symétrique :
|
||
|
||
- *Trigger* : **Wifi connection** → même SSID, sens **déconnexion**.
|
||
- *Action* : **Trigger URL** `POST` → URL **Départ**.
|
||
|
||
#### Méthode B — déclenchement par géofence (si pas de Wi-Fi d'entreprise)
|
||
|
||
**Règle « Arrivée »** :
|
||
|
||
- *Trigger* : **Location** → place le marqueur sur l'adresse du bureau,
|
||
rayon ~100–150 m, événement **Enter**.
|
||
- *Action* : **Trigger URL** `POST` → URL **Arrivée**.
|
||
|
||
**Règle « Départ »**, symétrique :
|
||
|
||
- *Trigger* : **Location** → même zone, événement **Exit**.
|
||
- *Action* : **Trigger URL** `POST` → URL **Départ**.
|
||
|
||
> La géofence Android s'appuie sur le Wi-Fi/Bluetooth alentour même sans GPS,
|
||
> mais la réactivité varie. Au bureau, la méthode Wi-Fi est presque toujours
|
||
> plus fiable.
|
||
|
||
### 3. Vérifier
|
||
|
||
- Dans Automation, ouvre une règle et utilise le bouton **Test** (icône
|
||
lecture) : la réponse doit être `{"ok":true}`.
|
||
- Force une entrée/sortie réelle (zone ou Wi-Fi) et vérifie la même chose.
|
||
- 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 -X POST "$URL_ARRIVEE"
|
||
;;
|
||
down)
|
||
[ "$current_ssid" != "$BUREAU_SSID" ] && curl -fsS -X POST "$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.
|