Aller au contenu
c-lol

[Vd] Check Connexion Internet

Recommended Posts

Salut à  tous et bonne année 2015. Plein de réussite dans vos projets domotiques  :60:

 

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!!!

post-538-0-56110400-1420298760_thumb.png

post-538-0-14025900-1420298761_thumb.png

Check_Internet.vfib

Modifié par c-lol
  • Upvote 6

Partager ce message


Lien à poster
Partager sur d’autres sites

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.

Partager ce message


Lien à poster
Partager sur d’autres sites

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  ;)

Partager ce message


Lien à poster
Partager sur d’autres sites

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 ?

Partager ce message


Lien à poster
Partager sur d’autres sites

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...)

Partager ce message


Lien à poster
Partager sur d’autres sites

Salut nickel ton module virtuel. comment fais tu pour connaitre ton Id de tes icônes ? merci

Partager ce message


Lien à poster
Partager sur d’autres sites

 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.

Partager ce message


Lien à poster
Partager sur d’autres sites

- 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.

Partager ce message


Lien à poster
Partager sur d’autres sites

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  :2: Merci

Partager ce message


Lien à poster
Partager sur d’autres sites

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.

 

++

Partager ce message


Lien à poster
Partager sur d’autres sites

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

Partager ce message


Lien à poster
Partager sur d’autres sites

Il me semble que Json.decode ne fonctionne pas en 3,600

 

ça c'est pas cool ! :angry:  :angry:  :angry:

ma première utilisation spécifique de la HC2, et patatra, et même pas en v4.

Quelqu'un d'autre pourrait confirmer ?

Partager ce message


Lien à poster
Partager sur d’autres sites

@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.

 

:)

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

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.

Partager ce message


Lien à poster
Partager sur d’autres sites

@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

Partager ce message


Lien à poster
Partager sur d’autres sites

@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, ...)

Partager ce message


Lien à poster
Partager sur d’autres sites

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!!!

Partager ce message


Lien à poster
Partager sur d’autres sites

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!! 

 

post-538-0-56748700-1422033675_thumb.png

 

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">

Partager ce message


Lien à poster
Partager sur d’autres sites

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 ?

Partager ce message


Lien à poster
Partager sur d’autres sites

×