Jump to content

Archived

This topic is now archived and is closed to further replies.

wanou

Tutoriel: Reconnection automatique de freebox

Recommended Posts

Bon bah j'ai fait le montage, pour le moment il est sur port serie comme dans le tuto, mais je le ferais passer sur port parallele tres bientot.

En tout cas ca marche.

Je me disais que vu que tu est electronicien :-) :

une idee comme ca : tu pourrais intervenir au niveau de la telecommande de la prise radiocommade, alors bien sur il y aurait deux lignes a commander on et off (par prises) mais sur le port parallele on a 8 lignes. Ca donnerai un montage sympa et tres simple, sans fil entre l'ordi et la prise! (eventuellemt plusieurs prises, car ton modele de prise a une telecommade 3 voies)

qu'en pense tu?

ça peut être une bonne idée pour deux raisons:

1) ça t'évite de t'ennuyer avec l'isolation galvanique

2) si ta freebox est un peu loin de l'ordi qui vérifie la liaison, c'est beaucoup plus sympa

mais les mauvais côté existent aussi:

1) la télécomande doit s'alimenter donc il te faut soit acheter des piles régulièrement, soit mettre un régulateur et prendre ton alim dans le PC sur une prise lecteur de disquette par exemple (plus simple qu'une molex à racorder).

2) les cannaux radio réservés pour ce genre de télécommandes domotique, sont assez réduit et même si tu peux choisir un code de sécurité sur 10bits. Le risque est donc que l'un de tes voisins te reboote ta freebox avec sa télécommande.

Perso, j'ai choisi la voie de la simplicité. Ayant l'habitude des montages électroniques reliés dirrectement au secteur comme les compteurs EDF, mettre en place une isolation qui tient la route était un jeu d'enfant.

Si le fait de toucher au 230V ou tout simplement la distance entre la freebox et le PC, est un problème, la solution

de la télécomande s'impose. Là, le meilleur choix est de faire appel à un opto-mos et pas un opto-coupleur pour isoler entre le PC et la télécomande. L'avantage est de le pas avoir la tension Vce sat en sortie de l'opto qui peut empêcher la détection de l'appuis sur une touche.

Il faut savoir que la présence d'une isolation est toujours bénéfique même si dans le cas de l'usage d'une télécomande, l'isolation est de quelques volts.

Share this post


Link to post
Share on other sites

Super projet, mais juste une question, ça sert a quoi ? :chinois:

Perso, j'ai une freebox V2, un sasféplus de chez free quoi ;-)

Le problème est que j'héberge des sites et un serveur courrier et de temps à autre la freebox se désynchronise.

La seule solution est de débrancher puis rebrancher la freebox pour avoir à nouveau la liaison.

Et quand je part en vacances 15 jours, pas de stress.

voici mon log depuis début 2006:

service non disponible: 9/01/06 05h41

reprise du service internet: 9/01/06 05h50

service non disponible:30/01/06 19h51

reprise du service internet:30/01/06 20h00

service non disponible:31/01/06 10h01

reprise du service internet:31/01/06 10h10

service non disponible:21/02/06 10h01

reprise du service internet:21/02/06 10h10

service non disponible:24/02/06 22h01

reprise du service internet:24/02/06 22h30

service non disponible: 4/03/06 16h21

reprise du service internet: 4/03/06 18h30

service non disponible: 8/03/06 05h21

reprise du service internet: 8/03/06 05h40

Dans l'ensemble, ce sont des interruptions courtes mais parfois, ça dure:

service non disponible:31/01/05 15h10

reprise du service internet:31/01/05 18h30

Share this post


Link to post
Share on other sites

J'ai pas bien compris l'histoire de l'appuis sur une touche...

l'idee la plus simple est de remplacer les boutons poussoir on et off de la telecommande par deux opto-cmos commande par les lignes du port parallele. ce montage permet de faire un on et un off separement. On peut le modifier pour n'utiliser qu'une ligne du port (port serie dans ce cas si on veut) et avoir un off suivit d'un on (par je ne sais quel petit circuit...). Personnellement je prefere la premiere solution car cela permet d'autre utilisation qu'un simple reset.

le point le plus embettant avec une telecommande sans fil, c'est qu'on n'a pas de confirmation de la reception. Il faut donc repeter plusieurs fois les commandes... c'est peut etre mieux d'avoir un signal on et off separe dans ce cas.

Pour ce qui est du codage du signal, 10 bits ca fait 1024 combinaisons, vu la portee du signal, c'est resonnable d'esperer qu'il n'y a pas de proche voisin avec le meme code...

Pour l'alimentation, c'est du 12V ces telecommandes, qui peut effectivement etre tres simplement repris sur l'alim du pc.

Mon probleme c'est que je sais tres bien executer les montages des autres, et proposer des idees, mais en aucun cas creer un montage moi meme. Je ne connais plus/pas les formules pour le dimensionnent des composants ni les differences qui existent entre la multitude de composant qui existent.... mosfet, cmos, tryac, machin truc ....

snif...

Share this post


Link to post
Share on other sites

Mon message precedent etait une perche tendu a toi wanou pour que tu me donnes des indices pour la confection de la liaison pc->telecommande.

quel circuit doit ton mettre entre une sortie logique pouvant delivrer 1 ou 2 mw sous 5v (une des ligne de type ttl d'un port parallele) et un des boutons poussoir d'une telecommande de prise?

merci

Share this post


Link to post
Share on other sites

Mon message precedent etait une perche tendu a toi wanou pour que tu me donnes des indices pour la confection de la liaison pc->telecommande.

quel circuit doit ton mettre entre une sortie logique pouvant delivrer 1 ou 2 mw sous 5v (une des ligne de type ttl d'un port parallele) et un des boutons poussoir d'une telecommande de prise?

merci

si tu cherche la plus grande simplicité qui soit, un transistor à effet de champ devrait convenir

par exemple un BS170.

Il te faudra relier la grille à ton signal TTL et la source au 0V.

Pour la télécommande, il faut mesure la tension présente aux bornes du bouton poussoir (bouton relaché bien sur), relier la polarité - du bouton au 0V du PC et relier le drain du transistor au côté positif.

Chose importante pour éviter de gros problèmes, bien vérifier que le 0V de la pile de ta télécomande est bien relié au côté négatif de ton interrupteur.

Si c'est pas le cas, il faudra légèrement modifier le schéma.

Mesure donc tout cela et tient moi au courant.

Share this post


Link to post
Share on other sites

J'ai modifié mon script pour apporter une plus grande clartée dans le fichier log généré.

désormai, une coupure tient sur une seule ligne et le temps total de coupure est indiqué en heures et minutes.

Je pense être arrivé à un seuil de complexité limite pour bash et je pense que la prochaine version sera en perl.

Voila donc le code:

#test de la liaison adsl lance toutes les minutes par cron
#variables locales
WORKING_PATH="/root/"
STATE_FILE=$WORKING_PATH"adsl_state"
DURATION_FILE=$WORKING_PATH"adsl_ko_duration"
LOG_FILE=$WORKING_PATH"adsl.log"
TIME_BETWEN_REBOOT="10"
HORODATAGE=$(date +%d/%m/%y\ %Hh%m)

#configuration de la vitesse de com de l'uart a 300bps
stty -F /dev/cua0 ispeed 300 ospeed 300

#récupération de l'état du service au dernier ping
#si le fichier n'existe pas encore, on part du principe que la liaison est
#bonne
#l'utilisation de noms en anglais permet aux fichiers d'êtres contigues
#donc c'est plus simple à gérer pour l'admin
if !(test -s $STATE_FILE)
then
  ETAT_SERVICE="OK"
else	
  ETAT_SERVICE=$(cat $STATE_FILE)
fi

#récupération de la durée de déconnection qui vaut 0 si ok
if !(test -s $DURATION_FILE)
then
  DUREE_KO="0"
else	
  DUREE_KO=$(grep -E -o '[0-9]+' $DURATION_FILE)
fi

#préparation du fichier log si c'est la première utilisation
if !(test -s $LOG_FILE)
then
  echo "Suivit de l'état de la connection adsl" > $LOG_FILE
fi

#obtention de l'adresse ip distante sur l'interface reseaux eth1
#la dernière adresse IP trouvée est celle du routeur de chez free
DIST_IP=$(/sbin/arp -eni eth1 | grep -Em 1 -o '[0-9]+\.[0-9]+\.[0-9]+\.')
DIST_IP=$DIST_IP"254"

#test par ping: l'option -w permet de reduire le time-out a 5 secondes
# 3 packets sont envoyes pour eviter les fausses alertes
RESULTAT_PING=$(ping -r -c 3 -w 5 -q $DIST_IP | grep -E -o '[0-9]+% loss')

if [ "$RESULTAT_PING" == "0% loss" ]
then
  #si c'est un retour à la normale, écriture du temps de coupure dans le log
  if [ $ETAT_SERVICE != "OK" ]
  then
  NB_HOUR=$(( $DUREE_KO / 60 ))
  NB_MIN=$(( $DUREE_KO % 60))
  echo " durée: "$NB_HOUR"h"$NB_MIN"'" >> $LOG_FILE
  fi
  ETAT_SERVICE="OK"
  DUREE_KO="0"
else
  if [ $ETAT_SERVICE == "OK" ]
  then
   echo -n "coupure détectée "$HORODATAGE >> $LOG_FILE
  fi
  ETAT_SERVICE="KO"
  #il faut maintenant determiner s'il faut rebooter ou pas
  MODULO_RES=$(( $DUREE_KO % $TIME_BETWEN_REBOOT ))
  if [ $MODULO_RES -eq 0 ]
  then
  echo "					  " > /dev/cua0
  fi
  DUREE_KO=$(( $DUREE_KO + 1 ))
fi

#mise à jour de la durée d'extinction dans le fichier dédié
echo -n $DUREE_KO > $DURATION_FILE

#mise à jour de l'état actuel de la liaison
echo -n $ETAT_SERVICE > $STATE_FILE

vos commentaires sont les bienvenus :mdr:

Share this post


Link to post
Share on other sites

bonjour,

dsiposant de la freebox V4 et en attente de la V5 , peut on faire la meme chose mais en commande ethernet???

Share this post


Link to post
Share on other sites

bonjour,

dsiposant de la freebox V4 et en attente de la V5 , peut on faire la meme chose mais en commande ethernet???

Pas à ma connaissance, il faut dire que les infos sur la structure software de la freebox se font rares voir inexistantes.

Par contre, a tu vraiment besoin de rebooter ta freebox V4? Il me semblait qu'elles ne se figeaient pas. :reflechis:

Quand j'aurrai le temps, je réécrirai mon script en perl, ce qui permettra de le lancer aussi bien sous linux que sous windows ou même OSX

Share this post


Link to post
Share on other sites

Merci wanou pour tes conseils, pour l'instant je ne suis plus chez moi je reprendrais le projet par telecommande bientot, et je te tiendrais au courant.

Sinon j'avais fabrique la prise commandee tel qu'indique par toi. J'ai l'ai fais sur port // en branche le tx sur D0. Ca marche tres bien.

Merci

Share this post


Link to post
Share on other sites

Oyez oyez, puisque mon sujet est de retour, j'ai modifié les liens sur les images pour qu'elles réapparaissent.

Et voici mon code cuvée 2006:

#!/bin/bash
#test de la liaison adsl lancé toutes les minutes par cron
#cette version est un peu gourmande en fichier divers
#mais j'ai pas le temps d'améliorer cela

#variables locales
WORKING_PATH="/root/"
STATE_FILE=$WORKING_PATH"adsl_state"
DURATION_FILE=$WORKING_PATH"adsl_ko_duration"
LOG_FILE=$WORKING_PATH"adsl.log"
TIME_BETWEN_REBOOT="10"
HORODATAGE=$(date +%d/%m/%y\ %Hh%m)
PORT_REBOOT="/dev/ttyS0"
#PORT_REBOOT="/dev/cua0"

#configuration de la vitesse de com de l'uart a 300bps
stty -F $PORT_REBOOT ispeed 300 ospeed 300

#récupération de l'état du service au dernier ping
#si le fichier n'existe pas encore, on part du principe que la liaison est
#bonne
#l'utilisation de noms en anglais permet aux fichiers d'êtres contigues
#donc c'est plus simple à gérer pour l'admin
if !(test -s $STATE_FILE)
then
  ETAT_SERVICE="OK"
else	
  ETAT_SERVICE=$(cat $STATE_FILE)
fi

#récupération de la durée de déconnection qui vaut 0 si ok
if !(test -s $DURATION_FILE)
then
  DUREE_KO="0"
else	
  DUREE_KO=$(grep -E -o '[0-9]+' $DURATION_FILE)
fi

#préparation du fichier log si c'est la première utilisation
if !(test -s $LOG_FILE)
then
  echo "Suivit de l'état de la connection adsl" > $LOG_FILE
fi

#obtention de l'adresse ip distante sur l'interface reseaux eth1
#utilisation de dig pour forcer le remplissage d'une entrée arp pour eth1
dig www.free.fr > /dev/null

#la dernière adresse IP trouvée est celle du routeur de chez free
DIST_IP=$(/sbin/arp -eni eth1 | grep -Em 1 -o '[0-9]+\.[0-9]+\.[0-9]+\.')
DIST_IP=$DIST_IP"254"

#test par ping: l'option -w permet de reduire le time-out a 5 secondes
# 3 packets sont envoyes pour eviter les fausses alertes
RESULTAT_PING=$(ping -r -c 3 -w 5 -q $DIST_IP | grep -E -o '[0-9]+% packet loss')

if [ "$RESULTAT_PING" == "0% packet loss" ]
then
  #si c'est un retour à la normale, écriture du temps de coupure dans le log
  if [ $ETAT_SERVICE != "OK" ]
  then
  NB_HOUR=$(( $DUREE_KO / 60 ))
  NB_MIN=$(( $DUREE_KO % 60))
  echo " durée: "$NB_HOUR"h"$NB_MIN"'" >> $LOG_FILE
  fi
  ETAT_SERVICE="OK"
  DUREE_KO="0"
else
  if [ $ETAT_SERVICE == "OK" ]
  then
   echo -n "coupure détectée "$HORODATAGE >> $LOG_FILE
  fi
  ETAT_SERVICE="KO"
  #il faut maintenant determiner s'il faut rebooter ou pas
  MODULO_RES=$(( $DUREE_KO % $TIME_BETWEN_REBOOT ))
  if [ $MODULO_RES -eq 1 ] #reboot after 2 100% loss ping
  then
  #là, il faut rebooter
  echo "					  " > $PORT_REBOOT
  fi
  DUREE_KO=$(( $DUREE_KO + 1 ))
fi

#mise à jour de la durée d'extinction dans le fichier dédié
echo -n $DUREE_KO > $DURATION_FILE

#mise à jour de l'état actuel de la liaison
echo -n $ETAT_SERVICE > $STATE_FILE

et voici la ligne à mettre dans cron:

* * * * * /root/test_adsl > /root/cron.log

La redirection vers un fichier ou tout simplement vers /dev/null est primordiale pour éviter de reçevoir un mail par minute de la part de cron.

Et oui, le script est maintenant appelé toutes les minutes afin de minimiser le temps de connextion KO.

Mais il ne reboote que toutes les dix minutes si le problème persiste.

Il affiche également le temps total de connexion KO ce qui évite d'avoir à faire pleins de soustractions.

Voilivoilou

Wanou. :D

Share this post


Link to post
Share on other sites
Bonjour, j'ai essayé de faire le montage mais la prise commandée chez selectronic n'a pas le même circuit imprimé,

pourriez-vous m'aider (j'ai déjà posté un message d'aide sur futura science mais personne n'a l'air de savoir.)

Voicile lien concernant mon problème avec les photos...

http://forums.futura-sciences.com/thread181833.html

C'est peut-être un peu tard mais je pense que la réponse est assez simple vu que le montage semble identique.

Il faut couper la piste qui va du plus grand des deux circuits vers la diode électroluminescente rouge.

La piste coupée côté diode doit être reliée à la broche n°4 du petit circuit intégré (pour info, une piste relie les broches 1 et 5).

A partir de là, la prise ne permet plus de recevoir des ordres de la télécommande et est toujours alimentée.

La cartelette doit normalement être connectée à la base et a l'émetteur du transistor qui commande le relais de sortie.

Pour pouvoir t'aider plus, il faudra plus de photos.

Share this post


Link to post
Share on other sites

×
×
  • Create New...