Ce Forum passera en lecture seule en janvier 2020
Image
Merci de vous rendre sur https://community.jeedom.com maintenant pour vos prochains postes ;)

[Ex] Tester sa connexion internet et rebooter sa box

Avatar de l’utilisateur
Sshafi
Actif
Messages : 3891
Inscription : 01 juil. 2014, 16:08
Localisation : Albi

[Ex] Tester sa connexion internet et rebooter sa box

Message par Sshafi » 23 nov. 2016, 14:31

Contexte

Vous perdez de temps en temps votre connexion internet. Le moyen le plus courant pour résoudre ce problème est de couper l'alimentation de sa box internet. Je vais vous montrer comment on peut automatiser ça. Votre box jeedom peut tester périodiquement la connexion internet et rebooter votre box en cas de défaillance.

prérequis
  • votre box jeedom est installée et vos modules associés.
  • votre box jeedom est raccordée à votre box internet par un câble.
  • vous connaissez les scénarios dans jeedom.
description du matériel
  • 1 box jeedom 1 relais (pour ma part j'utilise les modules Fibaro FGS 221) 1 box internet
intervention électrique

->repérer le câble d'alimentation de votre box internet, il est double (un fil pour le + et un autre pour le -).
La tension est de l'ordre de 12V en courant continu.
->sectionner le fil moins et faites le passer par votre relais

les scénarios

un 1er scénario de type "code" va "pinger" le site web google, si la connexion est perdue un 2eme scénario de type "code" va rebooter la box en pilotant son relais d'alimentation.

1er scénario programmé toutes les minutes:

Code : Tout sélectionner

$socket = @fsockopen("www.google.com", 80);
//$socket = @fsockopen("192.168.1.1", 80);

//si on a perdu la connexion
if ($socket === false) 
  {
    //echo "failed";
  log::add('Code','[debug]','connexion internet perdue');
  
  //statut du scénario qui reset la box
  $monscn=$scenario->byId(16);
  //getState renvoi in progress ou stop pour le scénario considéré
  log::add('Code','[debug]','execution du reboot de la box?: '.$monscn->getState());
  //si la box n'est pas en train de reseter
  if($monscn->getState()=="stop")
    {
    //executer le scénar reset box 
    $scenario2 = scenario::byId(16);
	$scenario2->launch();
    }

  }//fin du 1er if
//si la box reset ou si on a la connexion, on ne fait rien
else {
    // log::add('Code','[debug]','connexion ok');
}
2ème scénario qui reset la box. Il est provoqué par le 1er:

Code : Tout sélectionner

//on1 id 45
//off1 id 46
//etat1 id 47

//mise à off
$cmd=cmd::byId(46);
$result=$cmd->execCmd();

//récupération de l'état du switch
$cmd=cmd::byId(47);
$etat1=$cmd->execCmd();

//tempo permettant de laisser le switch passer à off
sleep(3);

if($etat1==0)
  {
  log::add('Code','[debug]','box éteinte');

  //tempo permettant de faire chuter la tension
  sleep(3);
  //mise à on
  $cmd=cmd::byId(45);
  $result=$cmd->execCmd();
  //tempo permettant de retrouver @. On retrouve la connexion après 3min environ
  sleep(180);
  log::add('Code','[debug]','box redémarrée');
  
  }
??? Menfin ...
VM ESXi # Aeon Lab Gen5 | RFXtrx433E | ...
Trucs & Astuces

Verrouillé

Revenir vers « Scénarios »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité