Page 2 sur 4
Re: Détection de présence iPhone
Publié : 22 juil. 2016, 11:15
par Sopalin
J'ai finalement réussi à trouver un moyen infaillible de détection, enfin je pense :p
Il s'agit de récupérer l'info sur notre box internet, dans mon une livebox. Via une certaine requête la livebox renvoi un json que l'on peut parser pour récupérer les équipements connectés et vérifier si notre téléphone en fait partie.
La seule implication est d'avoir le wifi allumé en permanence mais plus de soucis de wifi qui se coupe en mode veille.
Pour l'instant ça marche sur windows via un script vbs, j'attends mon raspberry qui arrivera mardi pour migrer domoticz dessus. Je vais recoder le script en bash et le partager si des gens ont des livebox

Re: Détection de présence iPhone
Publié : 23 juil. 2016, 16:35
par georges.attali
Ben, c'est papoo qu'à raison !!!
os.execute renvoie true ou nil.
j'ai corrigé comme papoo.
Bye, A +
GD
Re: Détection de présence iPhone
Publié : 27 juil. 2016, 13:20
par Sopalin
L'avantage d'utilisé la box internet et qu'elle est à jour à chaque fois que le téléphone réactive son wifi, contrairement au ping ou autre nmap qui nécessesite de "pinger" pile au bon moment.
Pensez à modifier le mot de passe par celui de votre livebox
Code : Tout sélectionner
#!/bin/bash
clear
curl -o context -X POST -i -H "Content-type: application/json" -c ./cookies.txt "http://192.168.1.1/authenticate?username=admin&password=XXXXXXXX"
ID=$(tail -n1 context | sed 's/{"status":0,"data":{"contextID":"//1'| sed 's/"}}//1')
curl -b ./cookies.txt -X POST -H 'Content-Type: application/json' -H 'X-Context: '$ID'' -d '{"parameters":{}}' http://192.168.1.1/sysbus/Hosts:getDevices -o ./getHosts.txt
curl -i -b ./cookies.txt -X POST http://192.168.1.1/logout
rm cookies.txt
rm context
Puis le code LUA qui parse le résultat et vérifie le device est connecté avec un timeout à 15min, mais je pense qu'on peut le réduire sans trop de soucis à tester.
J'ai pas mis de variable pour l'ip du téléphone je vous laisse la modifier directement dans le script
Code : Tout sélectionner
---------------------------------
-- Script de détection de présence via livebox
-- Auteur : Sopalin
-- Date : 22 Juillet 2016
-- Nécessite un switch classique
-- source :
---------------------------------
commandArray={}
--Cette fonction calcule la différence de temps (en secondes) entre maintenant
--et la date passée en paramètre.
function timedifference (s)
year = string.sub(s, 1, 4)
month = string.sub(s, 6, 7)
day = string.sub(s, 9, 10)
hour = string.sub(s, 12, 13)
minutes = string.sub(s, 15, 16)
seconds = string.sub(s, 18, 19)
t1 = os.time()
t2 = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
difference = os.difftime (t1, t2)
return difference
end
time = os.date("*t")
if((time.min % 5)==0) then
--import des fontions pour lire le JSON
json = (loadfile "/home/pi/domoticz/scripts/lua/JSON.lua")()
--Récupération des informations sur la livebox
--Utilisation d'un script VBS sous windows
--Utilisation d'un script bash pour extraire les données
----------------------------------------------------------------
--Lecture des données
local f = assert(io.open("/home/pi/domoticz/scripts/bash/getHosts.txt","r"))
local livebox = f:read('*all')
f:close()
--Décodage ud fichier
local jsonLivebox = json:decode(livebox)
--print("DEBUG")
--print(timedifference(otherdevices_lastupdate['Presence Thomas']))
devices = jsonLivebox['result']['status']
--Parcours du fichier pour vérifier la présence d'un téléphone
for result,status in pairs(devices) do
if status['ipAddress'] =="192.168.1.40" then
if status['active'] then
print("IP : "..status['ipAddress'].." is UP")
commandArray['Presence Thomas']='On'
elseif (status['active'] == false and otherdevices['Presence Thomas']=='On' and timedifference(otherdevices_lastupdate['Presence Thomas']) > 960) then
print("IP : "..status['ipAddress'].." is DOWN")
commandArray['Presence Thomas']='Off'
end
end
end
end
return commandArray
Re: Détection de présence iPhone
Publié : 04 sept. 2016, 00:29
par jackyhi
Bonjour Sopalin ta solution me semble pertinente et j'aimerais l'utiliser. Jusque maintenant j'ai essayé les scripts de détection de ping adresse IP dans un script_time_.lua sans succès!
J'ai lu tes commentaires et fichiers proposés le 27 juillet. Etant débutant dans la programmation peux-tu expliquer en détail l'installation du fichier /bin/bash sur le raspberry et expliquer comment tu le lances?
Pour le script lua je pense savoir faire, je suppose qu'il suffit que je remplace mon script existant par le tiens en modifiant avec mes paramètres.
Merci d'avance
Re: Détection de présence iPhone
Publié : 05 sept. 2016, 14:06
par Sopalin
Salut Jacky,
Il y a donc 2 fichiers. Un fichier sh et unh script lua.
Le script lua tu peux le copier coller dans l'interface de domoticz, il se lancera automatiquement toutes les 5min.
Concernant le script bash, il faut créer un fichier .sh sur le raspberry, modifier le mot de passe par celui de ta livebox et voir si il se lance bien. Apperement ça peut ne pas marcher en fonction de la version de ta livebox, la mienne est assez vieille.
Si le script lancé en manuel fonctionne bien il te reste à ajouter le script dans la crontab pour qu'il se lance régulièrement également.
Re: Détection de présence iPhone
Publié : 05 sept. 2016, 14:33
par vil1driver
Salut,
Concernant le script sh, ne pas oublier de le rendre exécutable

Re: Détection de présence iPhone
Publié : 05 sept. 2016, 22:24
par jackyhi
J'ai fait ce que tu expliques et j'ai fait chmod +x de mon fichier baptisé PresentBox.sh
J'ai une box THOMSONTWG 850. Une question pratique : quelle syntaxe pour admin&password
"
http://192.168.0.1/authenticate?usernam ... word=XXXXX" j'ai mis xxxxxx
&xxxxx est ce correct ??
Mon Domoticz tourne sur un serveur Ubuntu 14.4
Je reçois le message d'erreur suivant lorsque je tappe en ligne de commande pi@PiUbuntu:~/domoticz/scripts/bash$
bash PresentBox.sh
PresentBox.sh: ligne 2: $'clear\r' : commande introuvable
curl: (3) Illegal characters found in URL
tail: impossible d'ouvrir «context» en lecture: Aucun fichier ou dossier de ce type
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 17 0 0 100 17 0 166 --:--:-- --:--:-- --:--:-- 168
curl: (56) Recv failure: Connexion ré-initialisée par le correspondant
curl: (3) Illegal characters found in URL
rm: impossible de supprimer «cookies.txt\r»: Aucun fichier ou dossier de ce type
rm: impossible de supprimer «context\r»: Aucun fichier ou dossier de ce type
voici le fichier PresentBox.sh:
Code : Tout sélectionner
#!/bin/bash
clear
curl -o context -X POST -i -H "Content-type: application/json" -c ./cookies.txt "http://192.168.0.1/authenticate?username=admin&password=xxxx&xxxx"
ID=$(tail -n1 context | sed 's/{"status":0,"data":{"contextID":"//1'| sed 's/"}}//1')
curl -b ./cookies.txt -X POST -H 'Content-Type: application/json' -H 'X-Context: '$ID'' -d '{"parameters":{}}' http://192.168.0.1/sysbus/Hosts:getDevices -o ./getHosts.txt
curl -i -b ./cookies.txt -X POST http://192.168.0.1/logout
rm cookies.txt
rm context
Peux-tu m'éclairer merci
Re: Détection de présence iPhone
Publié : 10 oct. 2016, 22:37
par papoo
mon retour d'expérience :
le script de détection de présence via icloud fonctionne très bien, seul gros problème pour moi, il sollicite énormément les batteries des iphones testés.
n'ayant pas de livebox mais une freebox V6 je viens de mettre en place ce
script LUA (ne fonctionne pas pour une V5) qui pour l'instant me donne satisfaction. pour la procédure d'obtention de l'app token voir
ce post
Re: Détection de présence iPhone
Publié : 11 oct. 2016, 16:05
par Warp
Avez vous essayé l'application sur android "GeoFence for Domoticz" ???
Elle est chargé d'envoyer une commande JSON a domoticz lors de l'arrivé du téléphone sur une zone !!
Plus simple que la détection du Wifi d'un téléphone, qui est de plus éteint sur certain téléphone lorsque celui-ci passe en mode veille.
Sinon moi j'utilise sur android/ios "life360" pour pister mes enfants (avec leurs accord bien sur), celui-ci est couplé a "
https://ifttt.com" (scénario life360/Maker) qui m'envoie une commande JSON a domoticz lorsque mes enfants arrive a la maison, au lycee etc....
Re: Détection de présence iPhone
Publié : 11 oct. 2016, 17:30
par Chris54220
Merci Sopalin
je trouve ton script super sympas
par contre tu sais si il serai possible de le faire sous un Android STP
j'avoues que j'ai un peux de mal a comprend ton script pour il arriver seul