Aller au contenu
JossAlf

Rebooter Sa Box Internet En Cas De Plantage Via Un Nas

Recommended Posts

Bonjour, depuis ce weekend j'ai quelques soucis pour accéder au site " httpbin.org ", qui est à la base des tests pour le reboot de la box sur ce script. Je suis avec Orange Fibre et le site répond une fois sur trois en ce moment. Ce qui fait que ma box reboot même quand il n'y a pas besoin (plus de 200 fois ce weekend)... 

Peux t-on adapter le script avec un autre site ? Genre google.com ca serait plus pérenne non ? Mais comment faire ? :) 

Quelqu'un peut aider ici ?

Partager ce message


Lien à poster
Partager sur d’autres sites

AH ben voilà pourquoi ça n'arrête pas de gueuler depuis ce matin..

moi j'ai de la chance ça ne fait qu'alerter,j'ai pas mis en place de reboot (j'ai une autre machine qui sert de gateway de secours avec une connection 3G..)

Je vais regarde si on peut adapte le code avec un autre site, en l'état je crois que j'utilisais un code de retour particulier (600)

Partager ce message


Lien à poster
Partager sur d’autres sites

je confirme, presque qu'une minutes pour charger la page de httpbin.org sur Orange Fibre moi aussi. Pas étonnant que la requête de la HC2 parte en timeout. (je n'utilise pas ce script, donc je ne rencontre pas de problème reboot intempestif)

 

Partager ce message


Lien à poster
Partager sur d’autres sites

ok ça peut marcher avec google.fr

 

voici les lignes modifiées dans le VD

 

testnet = Net.FHttp("google.fr",80) 
response, status, errorCode=testnet:GET('/')
printlog("response="..response .." status=".. status.." errorCode=" .. errorCode)
--uncomment sleep to debug response in log windows
fibaro:sleep(1000)
if errorCode == 0 and status == "301"

3 changements

on tape sur google.fr

on fait un GET sur rien  '/'

du coup google retourne un code 301

 

Je pense que ça fait la blague..

 

Si besoin je reexporterai le VD complet une fois qu'on est sûrs que c'est fiable.

 

Je ne suis pas sur place donc si une âme charitable peut verifier que ça détecte bien les coupures (en en simulant une...)

 

 

 

  • Upvote 1

Partager ce message


Lien à poster
Partager sur d’autres sites

 Moi aussi, j'ai toujours ce VD et j'ai dû commenter quelques lignes de la mainloop pour le faire taire.

Merci @biboun pour cette correction que je vais tenter d'appliquer (je suis toujours aussi nul en Lua) et si ça marche, je simulerais des déconnexions.

 

Partager ce message


Lien à poster
Partager sur d’autres sites

 Bon je viens de modifier tes lignes et tester donc le fait de lui retirer internet le bascule bien en HS et il revient en OK quand on rebranche.

Par contre, il me semble avoir attendu bien plus que trois tentatives et je ne vois pas le relais de mon IPX bouger (pour le tts, ça me semble logique puisque j'ai retiré ma connexion).

 

Partager ce message


Lien à poster
Partager sur d’autres sites

Euh, les 3 tentatives tou ça ça vient d'un autre bout de code je présume..

en théorie on a touché qu'au moyen de detection.

Ou alors la detection est aussi présente dans le code qui actionne ton IPX..

C'est du code que je t'avais filé ?  (j'ai toujours dans mes modules un truc nommé "test pour DID" dans ma box.. :)   )

  • Like 1

Partager ce message


Lien à poster
Partager sur d’autres sites

 Oui, c'est dans les premières pages de ce topic.

 

Partager ce message


Lien à poster
Partager sur d’autres sites

c'est ce code là que tu exploites?

id 30 c'est ton IPX ?

local selfId = fibaro:getSelfId()
fibaro:debug("button pressed")
function printlog(message)
  fibaro:call(selfId, "setProperty", "ui.log.value",  message);
  fibaro:debug(message)
  fibaro:log(message)
end



printlog("checking connectivity")
count=fibaro:getGlobalValue("adsl")
count=tonumber(count)
testnet = Net.FHttp("httpbin.org",80) 
response, status, errorCode=testnet:GET('/status/600')
printlog("response="..response .." status=".. status.." errorCode=" .. errorCode)
--uncomment sleep to debug response in log windows
fibaro:sleep(1000)
if errorCode == 0 and status == "600"
--le net remarche, on remet la variable à zero
then
if count > 0 then fibaro:setGlobal("adsl", 0) end
 
else
--ça déconne, on incremente la variable
fibaro:setGlobal("adsl", count+1) 
end 

local status = fibaro:getGlobalValue("adsl")
fibaro:debug("adsl: "..status)
if status=="0" then

fibaro:call(selfId, "setProperty", "ui.status.value", "UP")
  else
fibaro:call(selfId, "setProperty", "ui.status.value", "DOWN")
  end

status=tonumber(status)
if status > 3 then
  printlog("je relance le jus sous la box")
  fibaro:call(30,"turnOn")
  fibaro:sleep(2000)
  fibaro:call(30,"turnOff")
  fibaro:setGlobal("adsl", 0) --on remet le compteur a zero
  end

 

Partager ce message


Lien à poster
Partager sur d’autres sites

 Oui, ça ressemble à ça.

Voici mes dernières lignes:

if status > 3 then
  printlog("Reboot internet")
IPX = Net.FHttp("IP",80);
response = IPX:GET("/preset.htm?set1=1");
fibaro:setGlobal("Adsl", 0) -- Remise à zero du compteur
fibaro:sleep(180 * 1000)
HC2 = Net.FHttp("api.pushingbox.com")
response = HC2:GET("/pushingbox?devid=xxxxxxxxxxx")
  end

 

Partager ce message


Lien à poster
Partager sur d’autres sites

ah ok donc c'est bien adapté pour appeler l'ipx

 

ta variable Adsl prend un A majuscule à première vue c'est identique au dessus?

 

ce que tu peux faire c'est aller sur le bouton qui host ce code, faire debug et couper la connec et faire test...

dans le log tu devrais voir la valeur de "adsl" ou "Adsl"

c'est dans cette variable qu'on stock le nombre d'echecs

normalement elle doit passer 0->1->2->3 lors de la coupure, et au dela de 3 ça appelle le bout de code quie tu as copié qui est sensé commander l'ipx..

 

bref si ça déconne le debug devrait cracher une erreur.. 

Partager ce message


Lien à poster
Partager sur d’autres sites

×