Introduction
Il y a quelqu'un dans le réseau ?
Vérifier la présence sur le réseau IP de son domicile présente plusieurs intérêts :
- Vérifier qu'une caméra IP est en marche.
- Vérifier qu'un NAS/Raspberry est disponible.
- Savoir si une personne présente en testant la présence de son téléphone !
The machine that goes 'Ping!'
Ping est une commande informatique présente sur tous le systèmes utilisant le réseau IP. Cette commande permet de tester l'accessibilité d'une machine à travers le réseau. Le nom 'ping' est tiré du son émis par un sonar, car le fonctionnement est le même : on émet un signal qui va rebondir sur une cible, et donc nous revenir en cas de présence (pour les tatillons ce n'est pas le même principe, car la cible doit répondre activement ... ).
Une analogie toute bête :
- Pour savoir si mon ami Robert est présent dans le coin (mon réseau) je crie : "Ping robert ?"
- Si robert est là, il répond : "Moi, Robert je suis là" !
- S'il n'est pas là (ou pas en état de répondre ) : aucune réponse.
Mise en place
Principe :
Je vais fournir une ou plusieurs adresses IP a tester, et si cette adresse répond présent je vais allumer ou éteindre un interrupteur virtuel.
Préparation :
- Vérifier que les machines à tester ont une adresse IP Fixe.
- Créer autant de virtual switch qu'il y a de matériel à tester.
- Récupérer la liste des couples : adresse IP -> switch à activer si présent.
- 192.168.0.100 -> Camera 1.
- 192.168.0.101 -> Camera 2.
- 192.168.0.200 -> Téléphone de Robert.
- .....
Le script :
à Placer dans le repertoire LUA, sous le nom : script_time_ping.lua par exemple
--Initialise la commande de retour finale
commandArray={}
--Mode deboggage (affichage des messages)
debug=true
--Prefixe pour les sorties de log
prefixe="(PING) "
--Tableau des périphériques à "pinguer"
-- Key = adresse ip à pinguer
-- Value = périphérique virtuel à switcher
local ping={}
ping['192.168.0.200']='Presence Tom'
ping['192.168.0.201']='Presence Steph'
ping['192.168.0.20']='Presence Camera Interieure'
ping['192.168.0.21']='Presence Camera Exterieure'
ping['192.168.0.100']='Presence Raspberry'
--pour chaque entree du tableau
for ip, switch in pairs(ping) do
--Le Ping ! : -c1 = Un seul ping , -w1 délai d'une seconde d'attente de réponse
ping_success=os.execute('ping -c1 -w1 '..ip)
--Si le ping à répondu
if ping_success then
if(debug==true)then
print(prefixe.."ping success "..switch)
end
--si le switch etait sur off on l'allume
if(otherdevices[switch]=='Off') then
commandArray[switch]='On'
end
else
--Si pas de réponse
if(debug==true)then
print(prefixe.."ping fail "..switch)
end
--si le switch etait sur oN on l'eteind
if(otherdevices[switch]=='On') then
commandArray[switch]='Off'
end
end
end
return commandArray










