je suis newbie en domotique et je me suis lancé avec du RFLINK et Domoticz sous W7 (pour commencer).
L'utilisation de scripts existants pour détecter la presence (de périphérique de type smartphone / box / etc...) par PING ne fonctionnait pas.
Et pour cause, la plupart des scripts LUA récupérés sont pour le monde UNIX/LINUX (Raspery et autre).
Il m'a fallut du temps pour comprendre et je souhaite en faire gagner a ceux qui galèrent avec les scripts LUA sous Zindows... (merci Mathieu)
Voici donc un script qui permet d'activer des switch virtuels, lorsque les pings repondent afin de changer l'etat (ON/OFF) de ceux ci.
Libre a vous de faire des scenarios pour declencher d'autre actions suite au changement d'etat ...
Moi je souhaite juste etre avertis quand un périphérique apparaît ou disparaît de mon reseau (j'ai donc un scenario d'envois de mail qui m'avertis).
Cordialement.
le script:
Code : Tout sélectionner
--Adapté de http://www.geekland-leblog.fr/gestion-des-event-detection-de-presence/
--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.100.2']='Droid-Soso'
ping['192.168.100.12']='Prise-WiFi'
ping['192.168.100.16']='Droid-Lili'
ping['192.168.100.17']='Droid-Malo'
ping['192.168.100.254']='FreeBox-inter'
--pour chaque entree du tableau
for ip, switch in pairs(ping) do
if (debug==true)then
print("===> "..switch)
end
--Le Ping ! : -n 1 = Un seul ping , -w 1000 délai (miliseconde) d'attente de réponse
ping_success = os.execute("ping -n 1 -w 1500 "..ip)
--Si le ping a 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