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