But : savoir quand les smartphones sont détectés ou quand ils ne le sont plus
Pourquoi pas un simple PING ? car le ping IP n'est pas fiable du tout avec les derniers Androids (mode eco), et que mes smartphones étant sur un VLAN différent de mon Jeedom le PING ARP ne passe pas.
J'ai donc bricolé un script bash qui semble 100% fonctionnel pour le moment. Je dis bien "bricoler", je ne suis pas développeur.
Code : Tout sélectionner
#!/bin/bash
curl 'https://IP_Controleur_Unifi:8443/api/login' --data-binary '{"username":"Mon_User","password":"Mon_Password","strict":true}' --compressed --insecure -s -c /tmp/cookies.txt > /dev/null 2>&1
curl --insecure -b /tmp/cookies.txt -c /tmp/cookies.txt -s 'https://IP_Controleur_Unifi:8443/api/s/default/stat/sta' > /tmp/output.json
Redmi4_Time=`/bin/grep -ri -o -P '.{0,100}MAC_ADDRESS_SMARTPHONE.{0,0}' /tmp/output.json | /usr/bin/awk '//{print $9}'`
Current_Time=`date +%s`
LastSeen=$((Current_Time-Redmi4_Time))
Out=$((LastSeen > 500 ? 500 : LastSeen))
echo $Out
C'est un simple script bash que j'appelle depuis le plugin Script et je stocke le résultat dans une valeur numérique.
Le script est appelé par un cron chaque minute.
Je déclare mon smartphone absent quand il est absent depuis plus de 70 secondes.