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
Ce commentaire a été supprimé par l'auteur.
RépondreSupprimerj ai Domoticz sur un Nas synology
RépondreSupprimerou je place le Script Merci
dans quelle chemine ? si on peux me mettre l arborescence
en merci
Génial,
RépondreSupprimerEnfin un site en français avec des scripts LUA pour Domoticz qui fonctionnent.
Bravo et continuez.
Génial vraiment.
RépondreSupprimerJe cherchais désespérément un commande qui m'informe en cas d’arrêt des cameras, là c'est nickel.
J'ai juste inverser les ordres de façon à ce que l'interrupteur passe sur on quand ping erreur.
L'inter associer à un mail et voilà.
MERCI
Bonjour
RépondreSupprimercomment tu crées l'interrupteur virtuel ? j'en ai essayé plusieurs mais il y a tellement de choix ...
RE
RépondreSupprimeren attandant de recevoir mon Raspb je teste Domoticz sur un eeebox sous windows
dans tous les cas:
la ligne ping_success=os.execute('ping -c1 -w1 '..ip)
me renvoie un fail sur chaque IP testés:
si je teste la commande sur une console cmd il me renvoie que la commande c1 necessite des privilege administrateur, peut etre que cela vient de la
si j'allonge le temp à 3 (-w3) c'est idem
si je vire le -c1 -w1 tous les ping sont consideré comme ok même les machines inexistante
J'ai utilisé le mode "interrupteur" dans virtual switch mais leurs états ne changent pas
je ne sais pas quoi faire :-(
si vous avez une solution (ou une explication) je suis preneur
BOnjour,
SupprimerJe pense que le problème viens du faut que tu es sur windows : les options de la commande ping ne sont pas les mêmes que sur les systèmes basés sur Unix/Linux.
Pour les interrupteurs, il faut bien dans le script avoir exactement la même casse que dans Domoticz.
Cela sera difficile de tester pour moi, car je suis passé sous Jeedom depuis 6 mois, et j'ai reobtenir les mêmes fonctionnalités que mes scripts, sans utiliser une ligne de code.
Je pense faire l'équivalent de mes scripts domoticz en version jeedom, pour ceux qui souhaitent migrer.
Bon courage
c'est peut-etre trop tard, mais voilà la commande que j'ai utilisé pour Win.
Supprimerping_success=os.execute('ping 192.168.1.156 -n 1 -w 100>nul')
ce qui fait
ping_success=os.execute('ping '..ip..' -n 2 -w 100>nul')
C'est déjà sympa d'avoir pris le temps de me répondre :-)
RépondreSupprimerJe vais essayer de trouver comment intégrer le ping depuis windows
Jeedom me tente mais semble un poil propriétaire et commercial (les plugs payant ?)
c’était pas le poil propriétaire et commercial qui me gênait c'est que je n'ai pas encore reçu mon Raspb et que Jeedom n'existe pas sur windows :-(
RépondreSupprimerDeux remarques:
RépondreSupprimerJ'ai du faire gaffe à donner à chacun des virtual switches un "unit code" différent sous peine d'erreur "swicth already exists".
C'est sans doute trivial pour les habitués de Domoticz, mais dans mon cas j'au un peu galéré pour comprendre (je débute)
Ensuite, dans le script, j'ai replacé
if(otherdevices[switch]=='Off')
par
if(otherdevices[switch]~='On')
ainsi que
if(otherdevices[switch]=='On')
par
otherdevices[switch] ~= 'Off')
En effet, pour chaque switch, tant que l'affectation n'avait pas été effectuée au moins une fois, j'ai constaté que l'entrée correspondante du tableau était absente ce qui faisait qu'on entrait dans aucun des blocs "if"
Bonjour,
RépondreSupprimerJ'ai un Rasp avec Domoticz et je me bats depuis deux jours avec ce script qui ne fonctionne pas chez moi.
Dans le log Domoticz, j'ai le message suivant toutes les minutes :
Error: EventSystem: /home/pi/domoticz/scripts/lua/script_time_ping.lua:1: unexpected symbol near '-'
Mes switches virtuels sont bons, mes IP sont bonnes, mes noms sont bons, les codes sont bons. J'ai beau regarder, vérifier re-revérifier mon script par rapport à celui plus haut, je ne vois rien qui cloche.
Quelqu'un a t'il une idée ?
Ce commentaire a été supprimé par l'auteur.
SupprimerC'est bon, j'ai trouvé. Il manquait un '-' au début du commentaire de la première ligne. D'où le message. Je suis passé à côté plusieurs fois sans le voir.
RépondreSupprimerJ evenais pour te répondre la même chose : enlever les commentaires en début de script.
RépondreSupprimerTant mieux.
Si les switchs ne changent pas d’état tout seul mais que tout a l'air ok. Actionnez les une fois manuellement et après c'est tout bon :)
RépondreSupprimerEn espérant que sa aide quelqu'un ^^