jjacques68 Posté(e) le 19 août 2017 Signaler Posté(e) le 19 août 2017 (modifié) Bonjour à tous, Voici un petit tuto pour ceux d'entre vous, qui comme moi, ont une connexion internet de secours (modem 4G ou autre) Il est peut être agréable de savoir laquelle est utilisée. Notamment si l'on est absent et que l'on souhaite rester informé de ce qui se passe chez nous. J'ai créé une petite scène toute simple ainsi qu'un VD me permettant d'avoir le statut de la connexion. Il n'y a aucune interaction avec, c'est juste de l'information. EDIT - Version 2 : suppression du bug du timeout ajout d'un label update dans le VD pour avoir la date du dernier changement modification des icones possibilité d'afficher l'IP si celle-ci change Sommaire : Prérequis Le VD La scène principale La scène de notification Installation Conclusion Bug connu Téléchargement 1. Prérequis : Comme dit en introduction, pour avoir une connexion internet de secours, il faut un 2ème modem (modem 4G par exemple). Il existe beaucoup de modèles différents, certains mêmes provenant de notre FAI... Me concernant, j'utilise un TP-Link TL-MR6400 avec une carte SIM provenant de mon FAI avec l'option multisim. Il faut également pouvoir relier ces 2 modems dans un routeur acceptant plusieurs entrées WAN pour que le basculement entre la ligne ADSL plantée et la 4G se fasse automatiquement. Je n'irais pas plus loin sur l'explication d'une telle installation, car elle serait vraiment trop longue, et les pro du réseau seront mieux vous conseiller que moi. Il y a un tel choix possible en fonction de beaucoup de critères (FAI, marque, tarif, abonnement, configuration logiciel, configuration matériel, …, - un tuto spécifique serait le bienvenu) Donc ce petit tuto s'adresse plutôt aux personnes ayant déjà une 2ème connexion internet chez eux. 2. Le VD : Celui-ci affiche simplement si on est connecté en ADSL, 4G... ou pas. Il indique aussi l'adresse IP public. Il n'y a pas de code source dans le mainLoop 3. La scène principale : (rien de bien méchant ) --[[ %% autostart %% properties %% events %% globals --]] --[[ Version 2 teste toutes les XX minutes si connecté par ADSL ou 4G envoie une requete à un site qui renvoie l'IP public j'analyse la première partie de l'IP : (ISP = Bouygues) 176 = ADSL ; 80 = 4G Modification d'une VG suivant l'état pour les notifications Et modification du VD. --]] --déclaration icones local IcoADSL = 1098 local Ico4G = 1095 local IcoInc = 1096 local IcoOFF = 1097 --déclaration IP local IPADSL = 176 local IP4G = 80 --déclaration autres local IDVD = 164 local VG = "TypeConnection" --Teste la présence de la VG. la crée si absente function TestVG(VGName) if fibaro:getGlobal(VGName) == nil then newVar = {} newVar.name = VGName newVar.value = "" api.post("/globalVariables", newVar) print("VG "..newVar.name.." créée") else print("VG "..VGName.." existante") end end --demande de l'adresse IP function RequestIP() local IP = net.HTTPClient({ timeout = 2000 }) IP:request("http://bot.whatismyipaddress.com/", { success = function(response) CheckIp(response.data) setTimeout(RequestIP, 1*60*1000) --bouclage end, error = function(response) --timeout ou autre print("Err : "..response) --modification du VD et de la VG fibaro:setGlobal("TypeConnection","OFF") fibaro:call(IDVD, "setProperty", "currentIcon", IcoOFF) fibaro:call(IDVD, "setProperty", "ui.Label1.value", "OFF") --affiche l'erreur fibaro:call(IDVD, "setProperty", "ui.Label2.value", response) setTimeout(RequestIP, 1*60*1000) --bouclage pour relancer end, }) end --analyse l'adresse IP function CheckIp(IP) local i=1 local detail={} --inscrit les 4 parties de l'adresse dans le tableau "detail" for Num in string.gmatch(IP, "%d+") do detail[i] = Num i=i+1 end --vérifié la 1ère partie 176 = ADSL et 80 = GSM if tonumber(detail[1]) == IPADSL then print("ADSL - "..IP) --pour notification push fibaro:setGlobal("TypeConnection","ADSL") --modifie le VD fibaro:call(IDVD, "setProperty", "currentIcon", IcoADSL) fibaro:call(IDVD, "setProperty", "ui.Label1.value", "ADSL") fibaro:call(IDVD, "setProperty", "ui.Label2.value", IP) elseif tonumber(detail[1]) == IP4G then print("GSM - "..IP) fibaro:setGlobal("TypeConnection","GSM") fibaro:call(IDVD, "setProperty", "currentIcon", Ico4G) fibaro:call(IDVD, "setProperty", "ui.Label1.value", "GSM") fibaro:call(IDVD, "setProperty", "ui.Label2.value", IP) else --sinon affiche l'IP reçu print("IP inconnnue - "..IP) fibaro:setGlobal("TypeConnection","INC") fibaro:call(IDVD, "setProperty", "currentIcon", IcoInc) fibaro:call(IDVD, "setProperty", "ui.Label1.value", "???") --affiche l'IP obtenue fibaro:call(IDVD, "setProperty", "ui.Label2.value", IP) end end TestVG(VG) --teste de la VG RequestIP() --appel de la fonction principale Elle est lancée au boot de la HC2 (%%autostart) Très simple, la fonction RequestIP() interroge toutes les minutes le site http://bot.whatismyipaddress.com/ (pas d'inscription nécessaire) qui renvoie l'adresse IP public. Ensuite la fonction CheckIP() analyse la chaine de caractères de retour. Suivant le premier chiffre de l'IP, j'en déduis si je suis en ADSL ou en 4G. Dans mon cas, 176 = IP ADSL et 80 = IP 4G. Je n'analyse pas les autres chiffres de l'IP public car ceux-ci peuvent peut-être changer de temps à autre. mais pas le début. Suivant le résultat, je renseigne une VG (pour les notifications push ou autres besoins) et je modifie l'icône du VD et ses labels. La fonction TestVG() teste si la VG est présente ou pas et la crée le cas échéant. 4. La scène de notification : --[[ %% autostart %% properties %% events %% globals TypeConnection --]] --[[ Scène lancée au boot de la HC2 et sur changement de VG - Envoie les push & mail - update des label et icon sur certain VD --]] local IDTel = tonumber(fibaro:getGlobalValue("IdPhoneJJ")) local IDMail = 2 local Trigger=fibaro:getSourceTrigger() --temporise pour le boot de la HC2 if Trigger.type == "autostart" then fibaro:sleep(20*1000) end --VG TypeConnection********************************************************** if Trigger.varName == "TypeConnection" or Trigger.type == "autostart" then if fibaro:getGlobal("TypeConnection") == "ADSL" then fibaro:call(IDTel, "sendPush", "Connexion par ADSL") fibaro:call(IDMail, "sendEmail", "Type of connection", os.date("%m/%d/%Y").." - "..os.date("%H:%M").." - Connexion par ADSL") print(os.date("%d/%m/%Y").." - Connexion par ADSL") elseif fibaro:getGlobal("TypeConnection") == "GSM" then fibaro:call(IDTel, "sendPush", "Connexion par GSM") fibaro:call(IDMail, "sendEmail", "Type of connection", os.date("%m/%d/%Y").." - "..os.date("%H:%M").." - Connexion par GSM") print(os.date("%d/%m/%Y").." - Connexion par GSM") elseif fibaro:getGlobal("TypeConnection") == "INC" then fibaro:call(IDTel, "sendPush", "Connexion HC2 - IP inconnue") fibaro:call(IDMail, "sendEmail", "Type of connection", os.date("%m/%d/%Y").." - "..os.date("%H:%M").." - Connexion HC2 - IP inconnue") print(os.date("%d/%m/%Y").." - Connexion HC2 - IP inconnue") elseif fibaro:getGlobal("TypeConnection") == "OFF" then fibaro:call(IDTel, "sendPush", "Connexion HC2 - OFF") fibaro:call(IDMail, "sendEmail", "Type of connection", os.date("%m/%d/%Y").." - "..os.date("%H:%M").."Connexion HC2 - OFF") print(os.date("%d/%m/%Y").." - Connexion HC2 - OFF") end --mise à jour du label update dans le VD fibaro:call(164, "setProperty", "ui.Label3.value", os.date("%d/%m/%Y - %H:%M")) end Les notifications se fond dans une scène à part, car si elles étaient dans la scène principale, j'aurai une notif par minute... Cette scène est un bout de ma scène réelle, car elle centralise toutes les notifications de mes VG. Donc apparait ici que ce qui concerne la VG "TypeConnection". Elle est lancée au boot de la HC2 (%%autostart) et sur changement de la VG (%%Global) En cas de boot (if Trigger.type == "autostart" then fibaro:sleep(20*1000) end) je retarde un peu l'exécution pour soulager la HC2) Après suivant la valeur de la VG, je notifie... 5. Installation : Pour connaitre son IP public en ADSL, vous pouvez utiliser le site ci-dessus de la scène principale. Noter l'IP renvoyée. Refaire la même manipulation étant connecté en 4G (ou autre). Il suffit après de modifier les variables au début de la scène principale (ID du VD, ID des icones, premier N° des IP) Pas besoin de s'occuper de la VG, la scène le fait. 6. Conclusion : Cela peut toujours être utile un jour. Du coup, dès que la connexion change, je suis informé. Dans mon cas par mail et par push. Il faut juste laissé le temps à l'installation de basculer d'une connexion à l'autre (environ 2 minutes : 1 minutes pour comprendre qu'on a plus d'ADSL et 1 petite minute environ pour basculer sur la 4G) 7. Bug connu : 8. Téléchargement : (V2) La scène principale : CheckPublicIP.txt Le VD : Home_Connection.vfib Les icones : Modifié le 21 août 2017 par jjacques68 Version 2 6
pepite Posté(e) le 19 août 2017 Signaler Posté(e) le 19 août 2017 Super @jjacques68, plus qu'émettre cela dans la section tuto. ;-) encore merciiii
jjacques68 Posté(e) le 19 août 2017 Auteur Signaler Posté(e) le 19 août 2017 AH M...... !!! j'ai pas fais gaffe !!! Zut quel naze... Je peux pas le faire moi même si ?
Nico Posté(e) le 19 août 2017 Signaler Posté(e) le 19 août 2017 Excellent, il faudra que je l'installe. Par contre il faudra faire une modification : En ADSL, tu auras une IP fixe, par contre pas en 4G. Du coup potentiellement ton adresse 4G peut très bien commencer comme ton adresse ADSL. Le mieux est donc de prendre l'adresse ADSL complète comme référence. D'ailleurs celle de la 4G pourrait bien commencer par carrément autre chose.
pepite Posté(e) le 20 août 2017 Signaler Posté(e) le 20 août 2017 Non, je pense que ton post ne peut-être déplacé que par les modérateurs ;-) ou admins
jjacques68 Posté(e) le 20 août 2017 Auteur Signaler Posté(e) le 20 août 2017 Il y a 15 heures, Nico a dit : Du coup potentiellement ton adresse 4G peut très bien commencer comme ton adresse ADSL Es-tu sur ? Ce que j'ai constaté, c'est que l'ip de la 4G (celle relevé par le site ou par dyndns) change plusieurs fois par jour. hier elle a changé 3 fois. Mais les 2 premiers numéro de l'ip n'ont jamais changé. en plus, si je regarde la config du modem 4G, sont ip est en 10.xx.xx.xx (comme mon tél) alors que les sites ou dyndns voient 80.xx.xx.xx assez étrange comme situation...
jjacques68 Posté(e) le 20 août 2017 Auteur Signaler Posté(e) le 20 août 2017 Il y a 16 heures, Nico a dit : En ADSL, tu auras une IP fixe Pareil, je croyais que non !!!! J'ai pas d'abonnement pro !
Nico Posté(e) le 20 août 2017 Signaler Posté(e) le 20 août 2017 Pas besoin d'abonnement pro pour l'ADSL, cela dépend du FAI. Chez Free par exemple c'est gratuit et standard depuis 10 ans. Tu es chez qui ? Sinon pour la 4G, le début pourra effectivement rester fixe assez longtemps, mais ce n'est pas une vérité à long terme. De mémoire les relais téléphonique travail avec des plages effectivement, mais cela change au bout d'un moment, tu ne pourras rien y faire.
jjacques68 Posté(e) le 20 août 2017 Auteur Signaler Posté(e) le 20 août 2017 Je suis chez bouygues...Pour la 4G je savais pas...Envoyé de mon iPhone en utilisant Tapatalk Pro
Lazer Posté(e) le 20 août 2017 Signaler Posté(e) le 20 août 2017 Ah bah tient, justement j'ai une scène similaire qui tourne chez moi depuis quelques mois, j'avais mis ça en place avant d'avoir la fibre et de passer en IP variable (pas d'IP fixe garantie chez Orange, contrairement à Free), afin de détecter non seulement la bascule sur réseau 4G comme toi, mais aussi le changement d'IP de la connexion principale pour faire une mise à jour de DNS dynamique.Pas de chance (enfin si, j'ai plutôt de la chance), mon IP en fibre n'a pas changé depuis que j'ai la fibre (2 mois).D'ailleurs, au lieu de regarder uniquement l'IP, je surveille aussi le provider.La seule fois où la scène m'a notifié, c'est quand je suis passé de Free ADSL à Orange Fibre, au moins elle fonctionne et ne plante pas.Je ne me souviens plus comment j'ai géré le Timeout de la fonction httpclient, faudra que je regarde à l'occasion, mais j'avais un peu cherché.
jjacques68 Posté(e) le 20 août 2017 Auteur Signaler Posté(e) le 20 août 2017 @Lazer, tu peux déplacer ce topic et le mettre dans la section Tuto s'il te plaît ? Me suis trompé lors de sa création....
jjacques68 Posté(e) le 21 août 2017 Auteur Signaler Posté(e) le 21 août 2017 Je viens de mettre à jour le tuto (voir edit version 2 en haut du post) @Nico j'attends un peu pour voir l'évolution des IP public pour faire ce que tu me disais... La maintenant, si l'IP change, je l'affiche simplement dans le VD. 1
pepite Posté(e) le 21 août 2017 Signaler Posté(e) le 21 août 2017 Le 19/08/2017 à 16:29, jjacques68 a dit : --temporise pour le boot de la HC2 if Trigger.type == "autostart" then fibaro:sleep(20*1000) end Salut @jjacques68 Ce serait mieux avec un setTimeout non ? Ou il y a une raison au sleep ?
jjacques68 Posté(e) le 21 août 2017 Auteur Signaler Posté(e) le 21 août 2017 beuh non, juste une petite tempo... Le soucis c'est que toutes les scènes démarrent (celles en %%autostart) en même temps lors d'un reboot de la HC2 (je suppose). Donc je me dis qu'en étalant dans le temps le démarrage des scènes, la HC2 encaissera mieux le coup. Sans cette tempo, il m'arrive de ne pas recevoir les notifications au démarrage... honnêtement le setTimeout... je sais bien l'utiliser pour les boucles, mais pour retarder une commande... ??? (on en avait déjà discuté toi et moi il me semble )
pepite Posté(e) le 21 août 2017 Signaler Posté(e) le 21 août 2017 tout a fait d'accord, tu as raison d'attendre un peu que tout soit bien demarre. au lieu de boucler avec ta fonction dans le setTimeout setTimeout(function() code qui sera execute à la fin du "tempsdattente" end, tempsdattente*1000)
jjacques68 Posté(e) le 21 août 2017 Auteur Signaler Posté(e) le 21 août 2017 Ah oui c'est vrai Ben du coup je sais pas...Dans ce cas, est ce c'est mieux... Envoyé de mon iPhone en utilisant Tapatalk Pro
ggpublic Posté(e) le 30 septembre 2017 Signaler Posté(e) le 30 septembre 2017 (modifié) Merci beaucoup pour ce tuto très clair. Installé chez moi sans problème, avec un syno RT2600ac configuré pour gérer le failover avec un routeur 4G (j'avais pansé d'abord à utiliser un dongle 4G directement sur le syno, mais je n'ai jamais eu confirmation qu'il saurait faire du failover entre WAN et dongle 4G) Le seul pb que j'ai, c'est que très régulièrement je reçois des notifications indiquant que ma HC2 n'est pas connectée. J'ai essayé d'augmenter la durée du timeout de la fonction RequestIP, mais sans succès. Pas de pb chez vous ? Avez vous une piste pour m'aider à chercher pcq là je sèche... merci Modifié le 30 septembre 2017 par ggpublic
MAM78 Posté(e) le 30 septembre 2017 Signaler Posté(e) le 30 septembre 2017 (modifié) Merci pour ce Toto. Je vais certainement l'implementer ton VD. Mais avant @ggpublic pourrais-tu nous expliquer comment tu as intégré le failover sur ton RT2600ac sans utiliser le dongle 4G. Je possède le équipement que toi et je n'ai pas encore intégré le failover. Modifié le 30 septembre 2017 par MAM78
Nico Posté(e) le 30 septembre 2017 Signaler Posté(e) le 30 septembre 2017 Moi j'avais fais du failover en 4G avec la clef USB, cela fonctionne, mais c'est pas top, car chauffe beaucoup, en tout cas le dongle que j'avais. Ils en ont ajouté depuis, mais bon. Du coup moi j'ai ajouté un routeur 4G à côté, et je l'ai mis sur le lan 1, et ensuite dans Internet tu indiques que ton lan1 c'est le WAN de secours, et voilà le travail. Est en PROD depuis la beta (Avant la beta, on ne pouvait pas utiliser le lan 1 comme Wan).
jjacques68 Posté(e) le 30 septembre 2017 Auteur Signaler Posté(e) le 30 septembre 2017 @ggpublic, il faudrait vérifier le message indiqué dans le label... apres je toucherai pas au timeout de la requête. eventuellement augmenter le temps dans le setTimeout.
ggpublic Posté(e) le 1 octobre 2017 Signaler Posté(e) le 1 octobre 2017 Merci pour vos réponses. @jjacques68, j’ai;deux types de messages dans le debug: Err : Software caused connection abort ou Err : Network is unreachable je n’ai pas réussi à identifier de pattern, cela semble se produire de manière aléatoire, environ une dizaine de fois par jour. je n’ai effectivement pas touché au timeout mais bien eu Settimeout mais sans succes. @MAM78 tout pareil que @Nico, Avec un routeur 4G TPLINK sur le port LAN1. Ça marche,plutôt bien
jjacques68 Posté(e) le 1 octobre 2017 Auteur Signaler Posté(e) le 1 octobre 2017 Bon c’est clairement qu’il ne reçoit pas de réponse du site qui renvoit l’adresse IP. Tu peux peutêtre quand même essayer de monter le Timeout à 4 secondes pour voir s’il y a amélioration. Aurais-tu un moyen de vérifier si tu as des coupures de connexion internet ? Il se peut aussi que le failover est trop sensible... et donc beaucoup de changement WAN ADSL/4G... et le changement de port WAN prends quand même un peu de temps (chez moi 1 bonne minute pour pas dire 2). Et pendant ce temps la, il n’y a pas de connexion !! (Et donc signalé par le VD). Dès le retour de l’ADSL, re changement de port WAN et re perte de connexion... ainsi de suite... Faudrait faire des tests et vérifier combien de temps le changement ADSL/4G prend.
Nico Posté(e) le 1 octobre 2017 Signaler Posté(e) le 1 octobre 2017 Sur le Syno, le temps de bascule est paramétrage ainsi que les tests à effectuer. Mon Huaway étant always on, c'est immédiat une fois que que le Syno bascule.
Messages recommandés