Aller au contenu

[Vd] Check Connexion Internet


c-lol

Messages recommandés

c-lol,

Je crois qu'il faut chercher une solution indépendante de ton fournisseur.

Je n'y connais RIEN en LUA, donc je vous laisse voir.

Mais la logique, c'est encore ok chez moi.

Donc je verrais le test comme suit :

  1. je vois si j'ai une réponse à  http://www.realip.info/api/p/realip.php (cfr script de Krikroff)
    1. oui : j'affiche l'IP et la bonne icône => fin du test
    2. non : je teste un autre site.

Comme sur ta Freebox, elle te retourne qqch de sympa si elle n'a pas de connection internet, tu peux peut-être faire le test en mettant une URL bidon et voire ce que ça te retourne?

En fait, c'est simple : si on a autre chose qu'une réponse positive (l'IP externe, ou je ne sais quoi si on atteint www.google.com) c'est que la connection internet est morte, et on affiche l'cône.

Facile ! (à  dire,pour toi, il n'y a plus qu'à  ...  :60: )

 

Merci

Lien vers le commentaire
Partager sur d’autres sites

l'idée de google c'est qu'ils ont des serveurs partout dans le monde, donc on aura toujours un ping, même si il y en a un qui crash.

 

 

Ton idée à  l'air interréssante, je vais voir ca.

 

sinon concernant le probleme pour des freenautes, j'ai fait un

if string.find(response, "Votre Freebox Server") then
  	fibaro:debug("Pas d'internet");
  else
 	 fibaro:debug("OK");
  end

ça a fonctionné (je suis obligé de débranché la box chez moi  :huh: )

 

@jojo je ne suis pas une star non plus en lua ni en dev généralement, mais depuis que j'ai la HC2 je t'avoue que j'y prends gout!! puis on a des bons qui aide!! hein kirkroff??!! merci!!

  • Upvote 1
Lien vers le commentaire
Partager sur d’autres sites

Bon voila j'ai trouvé une solution de contournement, en prenant ton idée JOJO. :D

Si test REAL IP OK alors OK

Sinon test sur google

    Si Ok message de probleme avec REAL IP

    Sinon Pas de connexion internet

--************************************************
-- Check Internet HC2 VD [01-2015]
-- Copyright © 2015 c-lol
--************************************************

fibaro:log("Start process");
fibaro:debug("Start process");

-- DECLARATION VARIABLES
local internet = "internet" --nom de la variable global internet
local iconeInternetOk = 1019;
local iconeInternetNok = 1020;
local deviceId = fibaro:getSelfId();
local i = 1;
-- FIN VARIABLES

--Fonction Internet Ok
local function internetOk(ip)
  --fibaro:debug("Internet Ok");
  fibaro:setGlobal(internet, ip);
  fibaro:call(deviceId, "setProperty", "currentIcon", iconeInternetOk);
  fibaro:call(deviceId, "setProperty", "ui.Label1.value", ip);
end  

--Fonction Internet Nok
local function internetNok(ip)
  --fibaro:debug("Internet Nok");
  fibaro:setGlobal(internet, ip);
  fibaro:call(deviceId, "setProperty", "currentIcon", iconeInternetNok);
  fibaro:call(deviceId, "setProperty", "ui.Label1.value", ip);
end

--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);
  response, status, errorCode = HC2:GET("/api/p/realip.php");
  --fibaro:debug(result);
  --Check Erreur
  if string.find(response, '{"IP":"') then
    --Json Decode
    decode = json.decode(response);
    ip = decode["IP"];
    --fibaro:debug(ip);
    internetOk(ip);  
    
  else
    
    --On test un site GOOGLE
    HC2 = Net.FHttp("www.google.fr", 80);
	response, status, errorCode = HC2:GET("/maps");

    if string.find(response, "The document has moved") then
       internetOk("OK mais echec de REAL IP");
       return 0;
    else
      internetNok("NOK");
      return 0;
    end
    
  end
  
end	

-- FIN FONCTIONS

-- SCRIPT
  
  myIp = ipPublic();
  
  local statut = fibaro:getGlobal(internet);
  fibaro:debug("la connexion internet est " ..statut);
  fibaro:log("la connexion internet est " ..statut);
  --fibaro:debug(myIp);
  --fibaro:log(myIp);
	
--FIN SCRIPT

Je n'utilise plus le script de ping.

En fait après plusieurs test je me suis aperçu d'une mauvaise interprétation de ma part pour l'utilisation du script PING.

 

ATTENTION : je parle pour mon cas disposant d'une freebox. A voir pour d'autre FAI.

 

En faite le script PING me répondait toujours OK, que je ping un site web (internet débranché) ou une ip de type 999.999.999.999  :o

 

Lors d'un test de ping de ce genre, le script interroge la freebox est celle-ci me retourne bien un résultat. Ce résultat m'indique un message d'erreur. Sauf que le script lui attend des paquets en retour et donc considère que c'est OK (4 messages d'erreur = 4 paquet).

 

Le script est plus à  utilisé pour une utilisation local. D'ailleurs je pense que c’était la raison de base!

 

Voila ce que j'en déduis.

 

Du coup pour le script CHECK INTERNET, c'est une solution un peu barbare et pas trop évolutive à  mon gout.

 

En effet je fais une recherche de caractère de la réponse pour être sur du résultat que j'attends. Le problème est que si un jour le message en retour change, ben faut modifier le script  :(

 

En espérant qu'un jour fibaro intègre une vrai fonction ping dans la HC2.

 

Voili voilou. J'attends vos retours. 

  • Upvote 1
Lien vers le commentaire
Partager sur d’autres sites

encore une petite chose

la ligne 

fibaro:log(statut);

permet d'afficher qqch en vert au bas de l'icône de la VD

post-1320-0-09929700-1422134270_thumb.jpg

 

Mais ce message est temporaire (il disparaît après quelques secondes).

Quel serait le code pour afficher le message en continu, jusqu'à  ce qu'il y ait un autre message qui apparaisse ?

Merci

Lien vers le commentaire
Partager sur d’autres sites

Oui je ne pense pas qu'il est possible de le laisser indéfiniment. Si tu regardes bien les messages système de fibaro quand il fait un réveil des modules il ne reste pas afficher.

En tous cas il n'y a pas de paramètre supplémentaire dans l'option fibaro:log()

 

http://www.fibarouk.co.uk/support/lua/library/fibarolog/

 

@Lazer l'idée est bonne!!

Lien vers le commentaire
Partager sur d’autres sites

[DEBUG] 00:53:36: Start process
[DEBUG] 00:53:36: la connexion internet est 88.124.0.0
[DEBUG] 01:53:39: Start process
[DEBUG] 01:53:39: la connexion internet est 88.124.0.0

De mon coté voila ce que ca me retourne.

 

Essai de rajouter un debug pour l'ip pour voir s'il la trouve bien.

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines après...

Pour créer une variable global tu vas dans "panneau" (icone puzzle) puis dans "panneau variable" et dans "variable predefini" tu cliques sur "ajouter"

nom de la variable = internet

valeur 1 = ok

valeur 2 = nok

 

Pour envoyer un sms je n'ai pas de passerelle sms.

Mais tu peux créer une nouvelle scène ou éditer une scène qui gère tes sms.

 

 

Un truc dans le genre

--[[
%% properties

%% globals
internet
--]]


local statut = fibaro:getGlobal("internet");

--Si internet = nok (pas internet)
if statut == "nok" then
   --envoyer un sms "il n'y a plus internet"
   -- tu mets ton code pour envoyer le sms
   -- voir le tuto de la passerelle sms
end

Voila sur quoi je peux te conseiller

Lien vers le commentaire
Partager sur d’autres sites

c'est le code ci-dessous que tu dois utiliser pour assigner une icone à  la VC :

fibaro:call(fibaro:getSelfId(), "setProperty", "currentIcon", 153)

Assigne l'icône 153 à  la VD actuelle

 

Pour retrouver le n° de l'icone :

  1. elle doit être ajoutée normalement dans la VD.
  2. quand tu es dans l'écran de choix des icônes, (procédure browser Chrome)
    1. tu cliques droit sur l'icône
    2. Inspecter élément
    3. tu as ceci comme résultat : <img class="ChooseIcon" src="/fibaro/n_vicons/User1025.png">
    4. le n° de l'icône est 1025
Lien vers le commentaire
Partager sur d’autres sites

je t'ai donné le bout de code où il faut référencer le n° des icônes ?

mais il faut voir si dans le VD que tu utilises s'il y a une variable au début du code qui contient le n° de ces icones

Dans ma dernière version du code, c'est dans le bouton 1

local iconeInternetOk = 1025;
local iconeInternetNok = 1026;
Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...