JossAlf Posté(e) le 7 mai 2014 Signaler Partager Posté(e) le 7 mai 2014 Il m'est arrivé une fois un deux de me retrouver loin de chez moi (c'est toujours àce moment làque ça arrive) avec un box internet allumée mais plantée... Il aurait suffit de la débrancher et de la retrancher mais ... j'étais po là! Ce qu'il vous faut :1/ Un NAS ou un serveur qui peut executer un PHP2/ une prise (Fibaro wallplug ou Everspring An157 ...) qui gèrera l'alimentation de la box internet.Comment ça fonctionne :1/ On teste la connexion vers l'extérieur en essayant de joindre google (la boxe peut sembler fonctionner wifi, switch et DHCP OK, mais plus d'accès vers l'extérieur)2/ Si google ne répond pas on en déduit que la box est plantée.3/ on éteint 5 secondes puis on rallume.Voici le script php àmettre sur votre NAS qui va faire ça àvotre place.Vous l'appellerez par le planificateur de tâche (Cron) avec une commande du type : "php -f /volume1/domotique/testinternet.php > /volume1/domotique/LogsTestinternet.txt" (qui sera exécutée toutes les 2 heures par exemple). $i=0; // initialisation du compteur pour la boucle du test d'accès au site google.fr $echec=0; // initialisation du nombre de tentatives infruscteuses //Je teste 6 fois le site google.fr avec 30 secondes entre chaque test (Donc si injoignable pendant 3 minutes je reboote) while($i<6) { $fp = fsockopen('www.google.fr', 80); //Ouvre un socket if(!$fp) { $echec++; } sleep(30); $i++; } //Si le test est négatif 3 fois de suite je relance la freebox. if($echec==6) { echo date('d / m / Y H:i:s').' Attention : le site de google.fr n\'a pas répondu '.$echec.' fois de suite !'; // $zibase->execScript("lm [Relancer Freebox]"); $fp = fsockopen('http://Login:MotDePass@AdresseIpLocaleHC2/api/callAction?deviceID=76&name=pressButton&arg1=1'); } else { echo date('d / m / Y H:i:s'). ' Le site de google.fr a bien répondu.'; fclose($fp); //ferme le socket ouvert } ?> Le bouton de mon module virtuel contient ceci : fibaro:call(75, "turnOff");fibaro:sleep(3000)fibaro:call(75, "turnOn"); Ma prise An157 àl'ID 75.Voilàqui peut vous permettre de continuer vos vacances sereinement loin de chez vous avec une box toujours joignable. En espérant que ça vous soit utile. Lien vers le commentaire Partager sur d’autres sites More sharing options...
biboun Posté(e) le 8 mai 2014 Signaler Partager Posté(e) le 8 mai 2014 Salut, il me semble que tu peux même te passer du nas: Moi je check a intervalle regulier ma connectivité dans un virtual device, il set une variable globale pour stocker l'état, à partir tu là , tu peux décider de actios à établir (rebooter la box, envoyer un sms via un passerelle alternative, etc..) testnet = Net.FHttp("httpbin.org",80) response, status, errorCode=testnet:GET('/status/600') if errorCode == 0 and status == "600" then if (fibaro:getGlobal("adsl") == "0") then fibaro:setGlobal("adsl", 1) end else if (fibaro:getGlobal("adsl") == "1") then fibaro:setGlobal("adsl", 0) end end moi je test en faisant une requete sur hhttpbin.org, tu demandes /status/xxx et si tout va bien il te renvoie xxx si tu veux tester plusieurs fois avant de prendre une action, tu peux dans les conditions stocker dans la variable globale le nombre de fois que tu as reçu une erreur, et prendre une décision quand le compteur arrive à 6, et bien entendu remettre le compteur à zero si tu obtiens une réponse positive. Lien vers le commentaire Partager sur d’autres sites More sharing options...
JossAlf Posté(e) le 8 mai 2014 Auteur Signaler Partager Posté(e) le 8 mai 2014 J'avais surtout un code tronqué en affichage. Je viens de le remettre au propre. Cela dit, l'idée est aussi de permettre à un possesseur de HCL (donc sans lua) de lancer une scene bloc avec une commande du style : http://<LOGIN>:<PASS>@<IP>/api/sceneControl?id=<SCENE ID>&action=start Vous trouverez un petit tutoriel sur les commande http là : http://tutoriels.domotique-store.fr/content/76/45/fr/api-commander-le-home-center-par-des-requêtes-http.html Lien vers le commentaire Partager sur d’autres sites More sharing options...
biboun Posté(e) le 8 mai 2014 Signaler Partager Posté(e) le 8 mai 2014 oui en effet, le malheureux qui n'a pas de lua dans son hcl se retrouve à faire la même chose dans son nas/server annexe, finalement l'intelligence se retrouve déportée dans le nas/server... Et en effet ton code était tronqué, mais j'avais saisi l'idée Je vois du coup que c'est une freebox, tu as quoi comme plantage ? v5 V6 ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
JossAlf Posté(e) le 8 mai 2014 Auteur Signaler Partager Posté(e) le 8 mai 2014 Freebox V6 Ce code tourne depuis plus d'un an (et s'appuyait sur une zibase avant la HC2) et depuis ma maison est toujours joignable Le plantage était une perte de synchro certainement due à des travaux dans la rue (changement de canalisations, passage de la fibre ...). Depuis que ça s'est calmé dehors, je n'ai pas eu de nouvelles désynhro. Dernier lancement du script après un gros orage en juillet pendant que j'étais absent. La boxe était pourtant sur onduleur, mais les équipements extérieurs ont morfler d'après les voisins qui ont vécus la fin du monde ! Le script s'est lancé et la box s'est remise d'aplomb Lien vers le commentaire Partager sur d’autres sites More sharing options...
biboun Posté(e) le 8 mai 2014 Signaler Partager Posté(e) le 8 mai 2014 ah ok c 'est pas la box qui pose probleme mais l'environnement J'en ai vécu des dà»res avec ma v6 ces derniers temps, ils ont changé qqch dans mon dslam qui fait que la ligne se resync dès que la marge de bruit en dl tombe sous 4dB (normalement il synchronise à 6dB et ne décroche pas tant que ça tombe pas à zero, mais desormais c'est plus le cas) du coup comme la marge tend a fluctuer entre jour et nuit, si tu synchronise haut le jour, t'as une resynchro la nuit, quand ça chute, tu te retrouves tjs limité à ton débit le plus faible au delà de 24 h...) Lien vers le commentaire Partager sur d’autres sites More sharing options...
JossAlf Posté(e) le 8 mai 2014 Auteur Signaler Partager Posté(e) le 8 mai 2014 Finalement cette V6 est plus stable. Depuis que la guerre des trachées est terminée chez moi (et que les orages ne sont pas trop fréquents) je n'ai pas à me plaindre. C'est la débit qui est galère (5 Méga) mais rien à voir avec la box, c'est encore l'environnent et une ligne de 4000 mètres et d'un autre age... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Did Posté(e) le 10 mai 2014 Signaler Partager Posté(e) le 10 mai 2014 @biboun Comment comptes-tu le nombre de fois que tu as reçu l'erreur? Je vois bien "trois tentatives négatives consécutives (une réponse positive remettrait le compteur à zéro) me colle un FGS 211 (+ un relais pour inverser le contact) pendant quelques secondes pour rebooter le modem (comme le Ping Watchdog sur l'IPXv3). Lien vers le commentaire Partager sur d’autres sites More sharing options...
JossAlf Posté(e) le 10 mai 2014 Auteur Signaler Partager Posté(e) le 10 mai 2014 Heu c'est le commentaire (//Si le test est négatif 3 fois de suite je relance la freebox.) qui est faut dans mon code. Je test bien 6 fois par une boucle et j'incrémente le compteur par $echec++; Si j'ai 6 échecs je reboote. Lien vers le commentaire Partager sur d’autres sites More sharing options...
biboun Posté(e) le 10 mai 2014 Signaler Partager Posté(e) le 10 mai 2014 @biboun Comment comptes-tu le nombre de fois que tu as reçu l'erreur? Je vois bien "trois tentatives négatives consécutives (une réponse positive remettrait le compteur à zéro) me colle un FGS 211 (+ un relais pour inverser le contact) pendant quelques secondes pour rebooter le modem (comme le Ping Watchdog sur l'IPXv3). Si c'est de mon bout de code dont tu parles, je le propose, pour faire dans le même principe que JossAlf, mais ça n'est pas dans le code affiché. Cependant c'est assez simple, un truc du genre: (pas testé, et je suis un pro des erreurs de syntaxe et de mélange string/integer) Au lieu de considerer la varibale adsl comme 0 down 1 up , tu considères qu'elle représente le nombre d'erreurs, et tu incrémentes, si la valeur dépasse la cible fixée, tu déclenches l'action. pour ma part je vérifie la valeur de la var pour ne la changer que si nécessaire,et le module virtuel ne fait que tester, il n'agit pas car la variable globale est en fait un trigger pour une autre scène chargée d'informer du problème,et elle ne doit s'activer que quand il y a un réél changement d'état( pas deux échecs ou deux réussites de suite..) count=fibaro:getGlobalValue("adsl") count=tonumber(count) testnet = Net.FHttp("httpbin.org",80) response, status, errorCode=testnet:GET('/status/600') 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 end status=fibaro:getGlobalValue("adsl") status=tonumber(status) if status > 3 then --3 echecs, on reset le jus de la box (module id xxx) fibaro:call(xxx,"turnOff") fibaro:sleep(2000) fibaro:call(xxx,"turnOn") fibaro:setGlobal("adsl", 0) --on remet le compteur a zero end Lien vers le commentaire Partager sur d’autres sites More sharing options...
biboun Posté(e) le 10 mai 2014 Signaler Partager Posté(e) le 10 mai 2014 concernant le fgs, je ne comprend pas pourquoi tu veux mettre un relai ? en tout cas un wall plug me semblerait tout designé pour cette tâche( c'est le même prox je crois), et t'auras la conso en prime, et la possibilité de monitorer via cette conso si la box est "active" ou "vegetative" Lien vers le commentaire Partager sur d’autres sites More sharing options...
JossAlf Posté(e) le 10 mai 2014 Auteur Signaler Partager Posté(e) le 10 mai 2014 yes je plussoie Biboun Lien vers le commentaire Partager sur d’autres sites More sharing options...
Did Posté(e) le 10 mai 2014 Signaler Partager Posté(e) le 10 mai 2014 Merci biboun, et ce test est fait en continu, ça ne risque pas de saturer le HC2? J'essaye de lui insérer un fibaro:log("Connexion internet OK") & fibaro:log("Pas de connexion internet") pour voir l'état mais ça ne m'affiche rien. Pour le FGS, c'était pour qu'il ne soit pas collé en permanence. Pardon JossAlf, je posais la question à biboun sur son script en Lua. J'ai bien un NAS Netgear mais à part lui faire stocker des photos, de la musique ,je ne sais pas encore lui demander autre chose (pourtant, j'aimerai bien lui faire une base de donnée). Lien vers le commentaire Partager sur d’autres sites More sharing options...
biboun Posté(e) le 10 mai 2014 Signaler Partager Posté(e) le 10 mai 2014 oui donc pour le fgs, si tu ne l'as pas déjà autant prendre un wall plug, il est censé être fait pour être on 24/24 ( dans la pub, sur le frigo). concernant le test, moi c 'est donc un bouton d'un virtual device, et le mainloop presse ce bouton et fait un fibaro:sleep(60*1000) soit un sleep de 1 minutes. je fais le test toutes les minutes donc, au pire donc je détecte l'info avec 1 minute de délai, c'est acceptable. ça ne charge pas la box, c 'est vraiment rien. En revanche, moi je stocke la variable et l'exploite en dehors de ce virtual device, ça me permet d'avoir l'état toujours dispo pour me monter un reporting en cas d'alarme par exemple. Je dois finaliser ma passerelle 3G, mais l'idée est bien-entendu de switcher sur la 3G et de notifier de la coupure ( ben oui tenter d'envoyer un mail ou un push via l'adsl qui est ....down, croyez le ou pas, ça marche moyen ) Lien vers le commentaire Partager sur d’autres sites More sharing options...
biboun Posté(e) le 10 mai 2014 Signaler Partager Posté(e) le 10 mai 2014 tiens j'ai mis mon virtual device tel quel :http://dl.free.fr/tszIxvEEb il faut juste avoir créé une var globale nommée adsl dedans tu as le bouton qui test, la banniere qui affiche l'état, la baniere qui affiche les logs, et le mainloop s'occupe de boucler le test toutes les minutes. C'est la version qui considère que c 'est down au premier essai (ce qui ne m'a jamais fait défaut jusque là ) le test sur la page /600 permet de ne pas se contenter d'un retour sans erreur pour définir que la connection est up, car la freebox v6 a une feature qui renvoie un message en cas de ligne indisponible, et du coup ca renvoie un code d'erreur correct malgré la coupure...) Lien vers le commentaire Partager sur d’autres sites More sharing options...
JossAlf Posté(e) le 10 mai 2014 Auteur Signaler Partager Posté(e) le 10 mai 2014 Je vais essayer ton code en parallèle du mien. Comme ça si le NAS est planté j'ai une roue de secoure. A force on va devenir des gros malades !! "C'est déjà fait !" Qui a dit ça ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Did Posté(e) le 10 mai 2014 Signaler Partager Posté(e) le 10 mai 2014 Merci beaucoup biboun, j'ai importé ton device (la variable globale adsl était créée) mais je ne vois pas le module pour changer l'Id et je ne peux pas remplacer l'icône (toujours le cube bleu... tiens encore ce cube bleu). Lien vers le commentaire Partager sur d’autres sites More sharing options...
biboun Posté(e) le 10 mai 2014 Signaler Partager Posté(e) le 10 mai 2014 ah oui c 'est ma version que je t'ai filé, comme base. elle ne comprend pas d'action pour relancer ta box, mais tu dois pouvoir le faire avec le bout de code que j'ai mis plus haut (à tester) pour l'icone, comme le bouton "manual check" est appelé chaque minute, c 'est son icone qui s'établit , docn si tu veux mettre une icone, mets là sur ce bouton, elle devrait rester.. L'idée de te filer le VD était de te montrer comment gérer l'affichage dans le VD, pour avoir qqch de visuel.. Dis-moi si t'as besoin d'aide pour modifier avec le systeme de 3 echecs et le poweroff/on de ta box Lien vers le commentaire Partager sur d’autres sites More sharing options...
JossAlf Posté(e) le 10 mai 2014 Auteur Signaler Partager Posté(e) le 10 mai 2014 Je comprends pourquoi on a été choisi par les modo comme membres du mois On arrive même àfaire des sujets rien que tous les 3 Lien vers le commentaire Partager sur d’autres sites More sharing options...
biboun Posté(e) le 10 mai 2014 Signaler Partager Posté(e) le 10 mai 2014 bah je suis sur que tapis dans l'ombre, il y en a qui lisent ou qui liront un jour, et ça leur servira ( à rien..) Alors Did, tu t'en sors ou tu mate The Voice ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
lolomail Posté(e) le 10 mai 2014 Signaler Partager Posté(e) le 10 mai 2014 Vous faites pas de soucis cela risque de servir Demain je jetterais un oeil au device Lien vers le commentaire Partager sur d’autres sites More sharing options...
biboun Posté(e) le 10 mai 2014 Signaler Partager Posté(e) le 10 mai 2014 Pas taper hein, niveau code, des fois c'est pas élégant.. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Did Posté(e) le 10 mai 2014 Signaler Partager Posté(e) le 10 mai 2014 Non, je m'en sors qu'à moitié, j'ai réussi à mettre l'icône mais pour l'ajout de ligne, j'ai ajouté la partie module en fin de script if tonumber(fibaro:getGlobal("adsl")) > 3 then --3 echecs, on reset le jus de la box (module id xxx) fibaro:call(30,"turnOn") fibaro:sleep(2000) fibaro:call(30,"turnOff") end (j'ai inversé le turn on & off pour mes essais avec un module câblé sur une lampe en volant). Et aussi le compteur count=tonumber(fibaro:getGlobal("adsl")) que j'ai inséré avant la ligne 13 testnet mais ça ne fonctionne pas. Le debug m'affiche: [DEBUG] 23:42:32: button pressed [DEBUG] 23:42:32: checking connectivity [ERROR] 23:42:32: line getSelfId()..."]:13 Et je n'ai pas encore essayé avec mon modem éteint. Lien vers le commentaire Partager sur d’autres sites More sharing options...
biboun Posté(e) le 10 mai 2014 Signaler Partager Posté(e) le 10 mai 2014 t 'as modifié plus haut pour incrementer la variable adsl tout ça ? met tout le code du bouton, je vois pas trop ce qui cause l'erreur la.. ca marchait avec le VD au départ ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Lazer Posté(e) le 10 mai 2014 Signaler Partager Posté(e) le 10 mai 2014 Oh, c'est beau, un topic de 3 nominés, avec 2 membres du mois qui viennent juste pour saluer Je pense que ça me servira aussi un jour... mais pour le moment, pas de pb de box, car quand l'ADSL ne fonctionne pas c'est qu'on ma volé les câbles souterrains en cuivre, donc un reboot ne suffit pas (c'est arrivé 2 fois l'année dernière, c'est la nouvelle grande mode). Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés