Un petit tuto qui permet de savoir si des iPhones (ou iPad) sont présent sur un réseau local, grâce à la livebox.
Je partage car je sais que j'ai pas mal galéré pour trouver une solution. En effet quand ils sont en veille, les terminaux sous iOS coupent le wifi pour économiser la batterie.
Heureusement la livebox sait exactement quel terminal est connecté en wifi, et on peut obtenir ces informations grâce à un simple curl
Mon script vérifie la présence d'au moins un iPhone sur deux.
Mais on peut adapter pour en mettre plus ou moins.
Voici donc mon scripts
On install jq qui va permettre de parser du format JSON
Code : Tout sélectionner
sudo apt-get install jq
Code : Tout sélectionner
mkdir -p /home/pi/logs
vi /home/pi/checkDevices.sh
Ne pas oublier bien sur d'adapter les adresse MAC et les IP
Code : Tout sélectionner
#!/bin/bash
# -------------------------
# ---- Variables ----------
# -------------------------
LOG_PRESENCE=/home/pi/logs/presence.log
LOG_DEVICES=/home/pi/logs/devices.log
datetime=`date +"[%Y-%d-%d %T] "`
# -------------------------
# ---- Main ---------------
# -------------------------
# Get data from Livebox
data=`curl --connect-timeout 10 -s -X POST -H "Content-Type: application/json" -d '{"parameters":{}}' http://192.168.1.1/sysbus/Devices:get`
# Check if at least one device is active
presence=`echo $data | jq '[.result.status[] | select(.Key == "ADRESSE_MAC_IPHONE1", .Key == "ADRESSE_MAC_IPHONE2") | .Active] | any'`
# Log devices status (optional)
echo -n "{\"datetime\": \"$datetime\", \"data\": " >> $LOG_DEVICES
echo -n $(echo $data | jq -c '[.result.status[] | select(.Key == "ADRESSE_MAC_IPHONE1", .Key == "ADRESSE_MAC_IPHONE2") | {name: .Name, lastConnection: .LastConnection, lastChanged: .LastChanged, active: .Active, ip: .IPAddress, mac: .Key}]') >> $LOG_DEVICES
echo "}" >> $LOG_DEVICES
echo -n $(date +"[%Y-%d-%d %T] ") >> $LOG_PRESENCE
# Do actions regarding presence
if [[ "$presence" == "true" ]]; then
echo -n " Y'a qqn à la maison | " >> $LOG_PRESENCE
elif [[ "$presence" == "false" ]]; then
echo -n " Y'a personne... | " >> $LOG_PRESENCE
fi
Code : Tout sélectionner
chmod +x checkDevices.sh
crontab -e
Code : Tout sélectionner
# Presence
*/5 * * * * /home/pi/checkDevices.sh