Re: script lua presence personne
Publié : 06 oct. 2016, 09:49
Le problème du ping, c'est qu'il faut une IP fixe.
Sinon, on peut utiliser l'ARP (c'est à dire l'adresse MAC de la carte wifi du téléphone) qui elle ne change pas.
Script de type "time" et il faut un interrupteur virtuel pour chaque téléphone
Sinon, on peut utiliser l'ARP (c'est à dire l'adresse MAC de la carte wifi du téléphone) qui elle ne change pas.
Script de type "time" et il faut un interrupteur virtuel pour chaque téléphone
Code : Tout sélectionner
-- Test la présence d'un smartphone par son adress MAC
local smartphones={}
smartphones['PAUL']='1c:de:d3:4a:80:4b'
smartphones['JEAN']='ab:fa:fe:37:8b:11'
smartphones['JOHN']='0a:00:c0:ee:0b:fc'
-- Calcul la difference en secondes avec l'heure actuelle
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
commandArray = {}
-- On scan le réseau et on stock dans un fichier temporaire
os.execute("sudo arp-scan --localnet > /tmp/scan-arp.txt")
for key, valeur in pairs(smartphones) do
-- on regarde si l'adresse MAC est dans le fichier temporaire
local mac_success=os.execute("sudo grep -e "..valeur.." /tmp/scan-arp.txt")
if mac_success then
-- On détecte immédiatement ou on rafraîchit la valeur toutes les 5 minutes
if ( otherdevices[key] ~= 'On' or timedifference(otherdevices_lastupdate[key]) > 300 ) then
print("MAC Address : "..key.." ("..valeur..") IN LAN")
commandArray[key] = 'On'
end
else
-- Si cela fait plus de 10 mn que l'on n'a pas detecté le smartphone on passe à Off les interrupteurs virtuels
if ( (otherdevices[key] ~= 'Off' and timedifference(otherdevices_lastupdate[key]) > 600) or timedifference(otherdevices_lastupdate[key]) > 1800 ) then
print("MAC Address : "..key.." ("..valeur..") NOT IN LAN")
commandArray[key] = 'Off'
end
end
end