Aller au contenu

Messages recommandés

Posté(e)

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

Posté(e)

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
Posté(e)

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
Posté(e)

ça marche impeccable  :)  !

tu fais un export de ta VD adaptée et modifie dans ce sans la première page du tuto pour les suivants ?

 

MERCI

Posté(e)

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

Posté(e)

Sachant que le message reste affiché 9 secondes, voici un extrait de ce que je fais sur l'un de mes modules virtuels :

i = 0
while i < 51 do
	fibaro:log("Hello world")
	fibaro:sleep(9000); 
	i = i + 9
end
Posté(e)

Merci Lazer,

C'est tordu, mais je vais l'implémenter.

Triste qu'il n'y ait pas une fonction out of the box pour cela

Posté(e)

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

Posté(e)

etes vous sur du code

  fibaro:debug("la connexion internet est " ..statut);
  fibaro:log("la connexion internet est " ..statut);

car chez moi le retour est : la connexion internet est 

 

sans le rajout du statut

Posté(e)
[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.

  • 2 semaines après...
Posté(e)

Bonjour ce tuto est intéressant,mais étant un gros novice pourriez vous m'aidez ou si possible,des screens, pour créer une variable global  et pour envoyer un sms en cas de coupure.Merci j'ai essaye mais je galère.

Posté(e)

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

Posté(e)

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
Posté(e)

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;
×
×
  • Créer...