c-lol Posté(e) le 3 janvier 2015 Signaler Posté(e) le 3 janvier 2015 (modifié) Salut à tous et bonne année 2015. Plein de réussite dans vos projets domotiques Je viens vous présenter mon VD pour vérifier la connexion internet. J'ai repris le code PING de Jean-christophe Vermandé que j'ai adapté à mes besoins. Le VD lance des requête ping toutes les 5mins vers des sites internet. On peut mettre autant de site que l'on souhaite. Mon avis étant un minimum de 2. En effet si le serveur WEB en question est HS, on fait un test sur un autre. J'ai inclus la remonté de l'adresse public. Pour ce faire j'utilise l'api suivante : http://www.realip.info/api/p/realip.php INSTALLATION : - Le VD est téléchargeable ci-dessous. - Créer une variable global "internet" (valeur 1: ok / valeur 2 : nok) ou avec un autre nom étant donné qu'il est possible de changer facilement le nom dans la déclaration des variables du VD. La variable servant à créer des scenes. Par exemple on envoit une notification SMS en cas de panne internet... - Mettre les icônes. Je vous en propose 2 ci-dessous. Voila j'espère que ça servira à certains et si vous avez des remarques, je suis preneur!!! Check_Internet.vfib Modifié le 24 janvier 2015 par c-lol 6
Lazer Posté(e) le 3 janvier 2015 Signaler Posté(e) le 3 janvier 2015 Merci pour le partage Pas encore testé, mais ça me semble une bonne amélioration du script suivant qui existait déjà sur le forum : [Tuto Multimédia] Test de connexion internet ou d'accès à un domaine. Je n'avais encore jamais mis en oeuvre de surveillance de ma connexion Internet, mais depuis que j'ai une passerelle SMS opérationnelle, ça me redonne envie de m'y mettre.
c-lol Posté(e) le 3 janvier 2015 Auteur Signaler Posté(e) le 3 janvier 2015 Ah oui effectivement j'aurais pu prendre ce script comme base, ça l'aurait simplifié. Du coup le fait d'utiliser le ping, on pourrait s'en servir pour ping plusieurs IP sur un réseau local. J'ai fais ce script dans le but de me faire une passerelle SMS. Je prends le pb à l'envers!! lol
jojo Posté(e) le 3 janvier 2015 Signaler Posté(e) le 3 janvier 2015 c-lol, C'est génial ton développement, dès que je reçois ma HC2, je le met en place. Pour la passerelle SMS, pourquoi n'utilisez-vous pas la solution de Gargamel : Gateway Sms Autonome ?
Rocketlud Posté(e) le 4 janvier 2015 Signaler Posté(e) le 4 janvier 2015 Merci C-lol, je vais tester ça;)
Doods Posté(e) le 4 janvier 2015 Signaler Posté(e) le 4 janvier 2015 Merci pour le post C-lol. Je viens de l'amender afin de redémarrer ma BOX internet si le test échoue une deuxième fois 10 min après. Par contre je ne lance le scenario que toutes les 30 min. Particulièrement utile quand on est loin de chez soi et que la box a planté (c'est rare mais arrive avec le cable). Reste à mettre le gateway SMS: très utile si la maison a disjoncté: permet de prévenir quelqu'un pour re-enclencher. (rare aussi mais...)
Loic62185 Posté(e) le 12 janvier 2015 Signaler Posté(e) le 12 janvier 2015 Salut nickel ton module virtuel. comment fais tu pour connaitre ton Id de tes icônes ? merci
Did Posté(e) le 12 janvier 2015 Signaler Posté(e) le 12 janvier 2015 Tu vas dans les paramètres du module (virtuel, physique ou scène), attention les répertoires sont différents et ensuite en cliquant sur changer l'icône puis bouton droit sur l'icône sélectionnée: afficher l'image et tu retrouves dans l'adresse le n° de celle-ci sous cette forme: User1079.png. Bien sà»r, tu ne sauvegardes pas mais reviens sur la maison.
c-lol Posté(e) le 13 janvier 2015 Auteur Signaler Posté(e) le 13 janvier 2015 - Tu peux aussi te servir du Toolkit de kriskroff en chargeant les informations du virtual device (Get Api Raw Data). - Dans chrome clique droit sur l'icone "inspecter l’élément" dans le code HTML tu peux voir le numéro de l'icone <a id="iconShow_1016" class="toDelete iconShow" onclick="if (iconAction == 0 || confirm('Etes vous sà»r de vouloir supprimer cette collection d´icônes?')) changeIcon('1016','virtualDevice', 51, 0); return false;" href="#"><img class="ChooseIcon" src="/fibaro/n_vicons/User1016.png"></a> ici l'icone est 1016.
razowski Posté(e) le 13 janvier 2015 Signaler Posté(e) le 13 janvier 2015 Merci pour le Virtual Device, tip top, en prod :-)
jojo Posté(e) le 22 janvier 2015 Signaler Posté(e) le 22 janvier 2015 c-lol, Lorsque ma connection internet est ok -> le script fonctionne bien Mais lorsue je débranche le cable internet de mon router (pour simuler internet ko), le script me donne l'erreur suivante : [DEBUG] 22:56:04: Start process [DEBUG] 22:56:04: Il y a 2 element(s) [DEBUG] 22:56:04: Resolving www.google.com , try #0 please wait... [ERROR] 22:56:04: line 35: Expected value but found invalid token at character 1 Pour rappel, voici le code "autour" de la ligne 35 : --Fonction What's My Ip -- utilise le site "http://www.realip.info/api/p/realip.php" local function ipPublic() HC2 = Net.FHttp("www.realip.info", 80); result = HC2:GET("/api/p/realip.php"); --fibaro:debug(result); decode = json.decode(result); ip = decode["IP"]; --fibaro:debug(ip); return ip; end ligne 35 = decode = json.decode(result); où est l'erreur ? Il semble qu'il se plante lorsqu'il veut résoudre mon adresse IP externe, alors qu'il n'y a pas de connection internet. Normal que ça ne marche pas,mais pas que ça plante ... P.S.1 : comment vous faite pour introduire du "beau" code ? (je vois qu'à affichage, c'est ok) P.S.2 : je suis archi nul en LUA, donc il faudra être très explicite Merci
Rocketlud Posté(e) le 23 janvier 2015 Signaler Posté(e) le 23 janvier 2015 Je suis aussi bon que toi en LUA donc malheureusement je ne pourrais pas t'aider LOL par contre essaye de simuler une panne en enlevant la ligne Xdsl de ta box FAI, car en enlevant le cable ethernet tu vires la box HC2 du reseau. ++
Berale64 Posté(e) le 23 janvier 2015 Signaler Posté(e) le 23 janvier 2015 Il me semble que Json.decode ne fonctionne pas en 3,600
jojo Posté(e) le 23 janvier 2015 Signaler Posté(e) le 23 janvier 2015 Je suis aussi bon que toi en LUA donc malheureusement je ne pourrais pas t'aider LOL par contre essaye de simuler une panne en enlevant la ligne Xdsl de ta box FAI, car en enlevant le cable ethernet tu vires la box HC2 du reseau. ++ J'avais retiré le cable de mon router vers l'extérieur. Ma box est toujours sur le réseau
jojo Posté(e) le 23 janvier 2015 Signaler Posté(e) le 23 janvier 2015 Il me semble que Json.decode ne fonctionne pas en 3,600 ça c'est pas cool ! ma première utilisation spécifique de la HC2, et patatra, et même pas en v4. Quelqu'un d'autre pourrait confirmer ?
Krikroff Posté(e) le 23 janvier 2015 Signaler Posté(e) le 23 janvier 2015 @Berale24, json.encode / json.decode fonctionne très bien en V3.600 Le problème est que json.decode ne peut decoder un nil (valeur null) et il faut toujours et dans tous les cas faire une gestion des erreurs sur le code de retour, statut de la requête, type et valeur de la réponse... Voici le code modifié local function ipPublic() local ip, clientHttp = nil, Net.FHttp("www.realip.info", 80); local response, status, errorCode = clientHttp:GET("/api/p/realip.php"); -- check error if errorCode == 0 then -- check status and response value before... if ((tonumber(status) == 200) and (response ~= nil)) then response = json.decode(response); ip = response.IP; else fibaro:debug("Error!"); end else fibaro:debug("Unable to check network status, error code is "..errorCode.. ", response is ["..response.."]") end -- destroy object clientHttp = nil return ip; end fibaro:debug(ipPublic()); Il est possible d'aller encore plus loin dans la gestion des erreurs: validation de l' IP avant le retour de la fonction, exécution de la fonction dans un pcall afin d' isoler le code et prévenir tout plantage du HC2 etc. 1
jojo Posté(e) le 23 janvier 2015 Signaler Posté(e) le 23 janvier 2015 Merci Krikroff d'avoir pris également le temps de réécrire le code (tu as bien compris que j'étais nul ...) J'essaye ce soir dès que je rentre àla maison.
pepite Posté(e) le 23 janvier 2015 Signaler Posté(e) le 23 janvier 2015 @jojo, etant donne que ton routeur est debranché, la reponde est nulle, et ca buggue le json.encode et json.decode, pas d'encodage dans ce cas. Je me demande si on ne pourrait pas rajouter un json.null
Berale64 Posté(e) le 23 janvier 2015 Signaler Posté(e) le 23 janvier 2015 Sorry Jojo, c'est dans les scènes qu'il y a problème. http://www.fibarouk.co.uk/support/lua/library/json-encode/
jojo Posté(e) le 23 janvier 2015 Signaler Posté(e) le 23 janvier 2015 @jojo, etant donne que ton routeur est debranché, la reponde est nulle, et ca buggue le json.encode et json.decode, pas d'encodage dans ce cas. Je me demande si on ne pourrait pas rajouter un json.null Pepite, Je t'avais dit que j'étais nul, j'ai rien compris à ce que tu as écrit. La seule chose que je peux confirmer : mon HC2 est toujours connecté à mon routeur => je peux toujours y accéder sur mon réseau local, même si je n'ai pas d'internet. pour simuler une perte d'internet, je débranche simplement mon routeur de mon modem qui va vers l'extérieur (! je suis en Belgique, donc l'architecture est un peux différente de vos freebox, ...)
c-lol Posté(e) le 23 janvier 2015 Auteur Signaler Posté(e) le 23 janvier 2015 Désolé les gars, j’étais absent, je viens juste de checker mes mails!! C'est vrai qu'un de mes défauts c'est de ne pas géré les retours d'erreurs!! va falloir que je corrige ça dorénavant!! Je vais intégrer le code de krikroff et reuploader le VD. Je fais ça dans le WE!!!
c-lol Posté(e) le 23 janvier 2015 Auteur Signaler Posté(e) le 23 janvier 2015 Je viens de commencer à regardé. Je suis chez Free et quand on a plus de net, la freebox nous retourne une jolie page d'erreur donc un "status = 200". Le script comprend donc que c'est bon, mais dans la réalité non!! Faudrait voir s'il est possible de parser du html pour trouver cette ligne <link href="http://mafreebox.freebox.fr/err/err.css" rel="stylesheet" type="text/css">
jojo Posté(e) le 23 janvier 2015 Signaler Posté(e) le 23 janvier 2015 c-lol, Je viens de tester la correction du script par Krikroff : la VD fonctionne toujours correctement lorsque la connection internet est ok : j'ai la bonne icône par contre, quand j'ai retiré mon cable vers l'extérieur (toujours du réseau local) la bonne icône ne s'affiche pas. Est-ce qie ça a jamais fonctionné sans internet. Question sjubsidiaire : pourquoi faire un test sur www.google.com si http://www.realip.info/api/p/realip.php fonctionne. En fait il ne faudrait faire le test sur un autre site que si http://www.realip.info/api/p/realip.php ne fonctionne pas ?
Messages recommandés