Relancer la box ADSL depuis Domoticz

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
raboliot
Messages : 23
Inscription : 04 avr. 2015, 22:21

Relancer la box ADSL depuis Domoticz

Message par raboliot »

Bonsoir à tous.
Je recherche un script quelconque qui testerait régulièrement la connexion internet, ET QUI, en cas de non réponse, relancerait la box internet.
Cette box pourrait par exemple être branchée sur une prise type ON/OFF.
Le process serait alors :
1 - commande OFF de la prise
2 - attente de 10 secondes
3 - commande ON.

Est ce réalisable ?
Merci de votre aide.
ganq
Messages : 385
Inscription : 01 avr. 2015, 14:20

Re: Relancer la box ADSL depuis Domoticz

Message par ganq »

Bonjour,
oui, c'est réalisable. C'est d'ailleurs dans mes projets puisque ma box plante régulièrement (1 fois par semaine)

Dans quelques jours/semaines, je pourrais surement te poster cela. A moins que tu ne trouves la solution avant.
domoticien amateur option bidouille
raboliot
Messages : 23
Inscription : 04 avr. 2015, 22:21

Re: Relancer la box ADSL depuis Domoticz

Message par raboliot »

Bonjour.
Merci pour ta réponse...je patiente donc !.
En attendant, je vais brancher mon électrovanne d'arrosage sur une prise avec minuterie (ITLR 3500T FR) pour m'assurer de son arrêt.
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Relancer la box ADSL depuis Domoticz

Message par vil1driver »

Bonjour,

Tu trouveras sur ce forum un script_time_ping.lua
Tu ping www.google.com par exemple,
Si le ping échoue ça passe ta prise à Off.

Un autre petit script_device_box.lua se lance si ta prise est à off et la repasse à On après 10s.

Et voila.
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
ganq
Messages : 385
Inscription : 01 avr. 2015, 14:20

Re: Relancer la box ADSL depuis Domoticz

Message par ganq »

autant tout faire dans le même script time, non ?
domoticien amateur option bidouille
vil1driver
Messages : 5661
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Relancer la box ADSL depuis Domoticz

Message par vil1driver »

Le scripts time se lancent toutes les minutes, ça dépasse les 10s souhaitées,
Et il n'est pas possible de faire un Off puis On du même dispositif dans un unique script.
et puis j'aime bien séparer les tâches.
MAJ = VIDER LE CACHE(<-Clicable)
/!\Les mises à jour de Domoticz sont souvent sources de difficultés, ne sautez pas dessus
modules.lua

Un ex domoticzien
raboliot
Messages : 23
Inscription : 04 avr. 2015, 22:21

Re: Relancer la box ADSL depuis Domoticz

Message par raboliot »

Vous êtes très sympas de nous trouver les scripts qui vont bien...mais quand on débute, on trouve pas !!!
Avec le temps...chantait un de nos grands poètes.
ganq
Messages : 385
Inscription : 01 avr. 2015, 14:20

Re: Relancer la box ADSL depuis Domoticz

Message par ganq »

et hop, mon script comme promis (testé sauf pour la prise adsl que je n'ai pas encore)

Code : Tout sélectionner

-- Guillaume Anquetil - 26/06/2015
 -- Ce script ping google toutes les 10 minutes. Si pas de réponses, 2eme ping au bout de 1 minute puis reboot. 
 -- ce script utilise un bouton "adsl" mention sensor)
 -- ce scipt manipule une prise branché sur la box notée 'prise Adsl'

 
 
commandArray = {}

-- variable debog : affiche les print et réduit le délai de test de 10 minutes à 2 minutes si la variable debog est différente de 0
debog=0
if (debog~=0) then	
	delai=0
	delai2 = 75 -- 2eme délai rapide si adsl est out 
	else
	delai=300 -- vérification toutes les 10 minutes
	delai2 = 75 -- 2eme délai rapide si adsl est out 
	end

 -- récupération de l'heure actuelle
 heure_actuelle=os.time() -- heure en seconde depuis ??? 
 
 
-- récupération de la date de dernière mise à jour de la variable adsl
maj=otherdevices_lastupdate['adsl']
if (debog~=0) then print('date capteur : '..maj) end
year = string.sub(maj, 1, 4)
month = string.sub(maj, 6, 7)
day = string.sub(maj, 9, 10)
hour = string.sub(maj, 12, 13)
minutes = string.sub(maj, 15, 16)
seconds = string.sub(maj, 18, 19)
maj2 = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}

-- ajout du délai de vérfication
heure_precedente = tonumber(maj2)
 if (debog~=0) then 
	print (heure_actuelle)				
	print (heure_precedente+delai2)
	print (heure_precedente+delai)	
	print (otherdevices['adsl'])
end

-- si le délai est supérieure à delai ou si on est à off avec le délai 2
if ((heure_actuelle > heure_precedente+delai) or (otherdevices['adsl']=='Off' and heure_actuelle > heure_precedente+delai2)) then
	if os.execute('ping -c1 -w 2000  www.google.fr') then
		-- si le ping est ok on met la variable adsl à 1 et on met à jour le capteur adsl
		adsl=1
		commandArray['adsl']='On'
		if (debog~=0) then print('Adsl ok') end
		else
		-- sinon on met la variable adsl à zero (utile pour la suite)
		adsl=0
		if (debog~=0) then print ('adsl out') end
	end


	-- si le bouton est déjà à off et ping out encore
	if otherdevices['adsl']=='Off' and adsl==0 then
		-- eteindre la prise de l'adsl pause de 5 et redémarrage
		-- commandArray['Prise Adsl']='Off'
		if (debog~=0) then print ('redémarrage box') end
		-- os.execute("sleep 5")
		-- commandArray['Prise Adsl']='On'l
		commandArray['adsl']='Off' -- on remet la commande off au bouton adsl pour avoir un peu plus d'1 minutes pour laisser la box s'initialiser

	end
		
	-- si pas de ping, on met le bouton à off	
	if adsl==0 and otherdevices['adsl']=='On' then
		commandArray['adsl']='Off'
		if (debog~=0) then print('mise à off du capteur') end
	end
end	
			
	
return commandArray
domoticien amateur option bidouille
raboliot
Messages : 23
Inscription : 04 avr. 2015, 22:21

Re: Relancer la box ADSL depuis Domoticz

Message par raboliot »

Bonjour à tous.
J'ai repris l'excellent script de <ganq> que j'ai modifié à la sauce <raboliot> en utilisant qu'un seul objet : la prise on/off à laquelle est branchée la box ADSL.
J'ai testé en prod plusieurs fois ce script (script_time_adsl.lua) avec succès.

Code : Tout sélectionner

commandArray = {}

local prise='box ADSL'

------------------------------------------------------------------------------------------------
-- variables
------------------------------------------------------------------------------------------------
-- on enregistre la dernière maj de la prise 
dmaj = otherdevices_lastupdate[prise]
print('Dernière maj : '..dmaj)
-- on ajoue un delai de réinitialisation de la box avant de nouveaux tests
_year = string.sub(dmaj, 1, 4)
_month = string.sub(dmaj, 6, 7)
_day = string.sub(dmaj, 9, 10)
_hour = string.sub(dmaj, 12, 13)
_minutes = string.sub(dmaj, 15, 16)
_seconds = string.sub(dmaj, 18, 19)
dmaj = os.time{year=_year, month=_month, day=_day, hour=_hour, min=_minutes, sec=_seconds}
lapsInit = tonumber(dmaj)+300
-- heure actuelle
maintenant = os.time() -- heure actuelle

---------------------------------------------------------------------------------------------------
-- Sensor : on teste la connexion QUE SI la prise est 'On' et maintenant  > lapsInit
-----------------------------------------------------------------------------------------------------
if (otherdevices[prise] == 'On' and maintenant > lapsInit) then
	if (os.execute('ping -c1 -w 2000  www.google.fr')) then
		print('Connexion adsl OK.')
	else
		-- si pas de connexion on éteint la prise
		commandArray[prise] = 'Off'
		print('Pas de connexion adsl !.')
	end
end

---------------------------------------------------------------------------------------------------------
-- Relance de la box : on rallume la prise si elle est éteinte
----------------------------------------------------------------------------------------------------------
if (otherdevices[prise] == 'Off') then
	os.execute('sleep 5')
	commandArray[prise] = 'On'
end 

return commandArray

ganq
Messages : 385
Inscription : 01 avr. 2015, 14:20

Re: Relancer la box ADSL depuis Domoticz

Message par ganq »

je t'en prie pour 'excellent'

J'ai un problème de test de ping de google qui n'ai pas fiable. En effet, j'ai une notification d'adsl HS alors que ca fonctionne bien.
Surement quand la bande passante est largement utilisée... Je n'arrive pas à résoudre ce problème malgré la double détection.


tu n'as rien de ce genre ?
domoticien amateur option bidouille
Répondre