Prentu.fr, très mauvaise expérience

Le 04 décembre 2014, je commande chez prentu.fr un tirage de photo sur aluminium, d’une dimension de 90×90 cm, pour un montant de 120€. Ce tirage est destiné à se trouver sous le sapin en cadeau à ma bien aimée.

Le site m’informe de son expédition 6 jours plus tard, le 10 décembre (jusqu’ici, on est dans les délais annoncés par le site).

J’apprend à cette occasion que le livreur choisi par la société est GLS… je commence déjà à flipper, car j’ai eu 2 commandes livrées par eux ces dernières années, et à chaque fois, ça a été la croix et la bannière pour se faire livrer… Et je ne suis pas le seul à trouver ce livreur totalement nul et incapable (exemple, ce sujet sur GLS chez 60 millions de consommateurs, actif depuis 2008… les derniers messages sur ce sujet datent d’il y a quelques jours seulement, ou encore ici sur les arnarques).

Bref, je croise les doigts, en me disant, que, parfois, ce livreur doit arriver à livrer un colis… las !

Prentu me communique un lien de suivi. La société est implantée aux Pays Bas, le colis part donc de la-bas. Le suivi indique même que le colis a en fait été scanné une première fois 09 décembre, le colis est donc expédié la veille de la notification par Prentu. Tout se passe bien jusqu’à l’arrivée en France, le 10 décembre, où le colis est scanné dans un dépôt à Carvin (à côté de Lille). Le même jour, le colis est taggué avec un inquiétant « Not out for delivery Due to unaccaptable goods » (sur le site en français de GLS : NON MIS EN LIVRAISON HORS NORME). Je laisse passer 1 ou 2 jours. Les jours suivants, le colis est scanné au dépôt mais ne le quitte visiblement pas (pointage instance local…). Constatant que le colis est bloqué, j’essaye d’appeler Prentu sur le numéro de SAV fourni sur leur site, au Pays Bas. Je tombe sur une personne qui ne semble pas parler français, et dont l’anglais à l’air aussi approximatif… j’arrive à lui faire comprendre que je veux parler avec quelqu’un qui parle anglais ou français. Il me passe un collègue francophone, la aussi, c’est approximatif, et j’ai l’impression qu’il fait semblant de comprendre ma demande…

A l’issue de la conversation, je ne suis pas convaincu, je décide de tenter par mail. Nous sommes le 12 décembre.

Le 14 décembre, première réponse de Prentu (le colis est toujours bloqué)

Merci pour votre réponse.

Je suis désolé que vous rencontrez des problèmes avec le livraison de votre commande.
Je viens de constater que votre colis est bloqué car les dimensions sommes déhors le maximum.
Nous allons contacter notre opérateur de transport afin de démander un nouveaux livraison.

Nous vous informer le plus vite possible.

Je m’excuse pour l’inconvénient.

Dans l’attente de votre réponse.

Meilleures salutations,

R-J

Le français est approximatif, mais on se comprend… Le 16 décembre, nouveau mail de Prentu :

Je me permet de revenir vers vous car nous avons eu un retour du prestataire de transport.

Celui ci nous indique qu’ils nous ont renvoyés votre commande. Nous aimerions vous la renvoyer au plus vite dès réception. Souhaitez-vous que nous vous renvoyons votre commande à votre même adresse? Ou préferez-vous une autre adresse de livraison?

Dans l’attente de votre réponse

Meilleures salutations,

M H

Il s’agit d’une autre personne de chez Prentu. Le français est nettement meilleur. Cela semble donc être bon, le colis est sensé être renvoyé chez l’expéditeur, et ils me le renverront. Je confirme que je souhaite une nouvelle livraison à la même adresse. Je reçoit 2 jours plus tard une nouvelle réponse de Prentu (nous somme les 18 décembre, ça commence à devenir très tendu pour Noël…) :

Merci pour votre réponse.

Si nous avons recu votre colis, nous allons le renvoyer directement à l’adrèsse suivante:

[Mon adresse]

Le transport sera effectuer avec un autre transporteur.

Vous pouvez vous attendre un livraison dans le semaine qui viennent.

Si votre command est renvoyé, vous allez recevoir un courriel de notre part.

Je m’excuse pour l’inconvénient.

Bonne après midi à vous!

Meilleures salutations,

R-J

Tout va bien, on me promet que je n’aurai plus a faire à GLS… Pendant ce temps, je continue de surveiller le tracking du colis… il reste invariablement à pointage instance locale, malgré les informations qui ont semble t-il été communiquées par GLS à Prentu.

Le 20 décembre, le colis est toujours indiqué pointage instance locale/Stored. Je me décide, la mort dans l’âme à appeler moi même GLS… Impossible de mettre la main sur le numéro non surtaxé, obligé de passer par leur saleté de numéro-à-hyper-cher-la-minute (1,35€/appel puis 0,35 €/min…). J’y laisse 15€ sans aucune avancée, personne dans cette boite n’est foutu de savoir pourquoi mon colis est bloqué, pourquoi il n’est pas retourné immédiatement à l’expéditeur… Le pire dans tout ça, c’est que le colis a été pris en charge aux Pays Bas par GLS (sa filiale néerlandaise donc). Pourquoi GLS NL accepte des colis à destination de la France que sa filiale française n’est pas foutue de prendre en charge ?

Pourtant, la situation me parait binaire : soit GLS peut acheminer mon colis et me le livre rapidos, soit ils sont infoutus de faire leur travail et ils n’ont pas de raison de conserver le colis et doivent le renvoyer fissa à l’expéditeur… c’est quand même simple je crois… je renvoi un mail à Prentu :

Bonjour,

Il semble que le colis ne soit toujours pas retourné a l’expéditeur. Le suivi indique toujours « stored » :

19/12/201414:30StoredFrance CARVIN

[…]

10/12/201414:40Not out for delivery Due to unaccaptable goods

Pouvez vous faire quelque chose ? J’ai appelé le transporteur mais il ne me donne aucune informations, j’ai déjà dépensé plus de 15€ en communications téléphoniques.

Merci
Cordialement

Le délais de réponse est toujours de plusieurs jours… je reçoit le 22 décembre une réponse qui ne m’apprend rien :

Merci pour votre réponse.

C’est possible que le colis est noré comme ‘POINTAGE LOCAL INSTANCE’. En effet, le colis sera retourner. Je m’attends que nous allons recevoir le colis pendant quelques jours.

quand recu, nous vous l’envoyer directement avec un autre opérateur de transport.

Je m’excuse pour l’inconvénient.

Si vous avez des questions, n’hésitez pas de nous recontacter.

Bonne après midi à vous!

Meilleures salutations,

R-J

Je n’ai aucune question… je veux juste que votre $%$#@§ de transporteur me livre mon colis… c’est pas compliqué ! J’aurai droit à beaucoup d’excuses pour l’inconvénient, mais l’affaire n’avance pas… et c’est mort, mon cadeau ne sera jamais sous le sapin…

Comme ils ont de l’humour chez Prentu, je reçoit le 26 décembre une enquête de satisfaction… faut vraiment que j’y réponde ? Le 29 décembre, mon colis et toujours bloqué, cela va faire 20 jours… pas de nouvelles de Prentu, je renvoi un énième mail :

Bonjour,

J’ai bien reçu votre mail pour le sondage de satisfaction, mais toujours pas ma commande… Ma commande vous as t-elle été retournée ? Je n’ai toujours rien reçu… Il s’agissait d’un cadeau de Noël, je suis très déçu de ne pas l’avoir reçu à temps…

Merci de me tenir informé.

Cordialement,

Le lendemain (30 décembre), réponse de Prentu, toujours aussi désolé, mais constant dans son inefficacité (je commence vraiment à penser qu’ils n’en ont rien à faire de moi et qu’il se fichent de ma poire) :

Merci pour votre message.

Je viens de constater que le colis est toujours dans le dêpot à Carvin.
Je vais démander chez l’opérateur quand nous allons recevoir le colis.

Je m’excuse pour inconvénient.

Je vous contacte le plus vite possible.

Meilleures salutations,

R-J

Bref, il ne m’apprend rien… je n’ai aucune preuve que le transporteur a été contacté, et en tout cas, la situation ne bouge pas d’un yota… Noël est passé, mon cadeau principale pour ma chère et tendre est bloqué dans un dépôt lillois… la magie de Noël… Me recontacter le plus vite possible, pour Prentu, je ne sais pas ce que ça veux dire… le 6 janvier, sans nouvelles, je repart à la charge :

Bonjour,

Avez vous des nouvelles de mon colis ? L’opérateur de transport vous as-t-il communiqué une date de retours ?

Cordialement,

Performance,je doit encore attendre 4 jours pour avoir une réponse… reçue le 10 janvier :

Merci pour votre message.

Je suis désolé d’apprendre que vous n’avez toujours pas recu votre commande.
Malheureusement, à ce jour, nous n’avons toujours pas recu le colis.

Pour cette raison, nous allons effectuer un nouvelle production, qui sera envoyer dans la meilleur délais vers l’adrèsse suivante:

[Mon adresse]

L’envoi sera effectuer avec un autre Transporteur que GLS.

En espérant que vous allez recevoir votre colis prochainement cette fois.

Si vous avez des questions, n’hésitez pas de nous recontacter.

Bonne soirée à vous!

Meilleures salutations,

R-J

GLS, c’est vraiment des branques… pas foutus de livrer un colis et pas capable non plus de le retourner à l’expéditeur… mais ils en font quoi des colis ? Prentu semble coopérer un peu… à moins qu’ils ne cherchent à gagner du temps… ça fait un mois que le colis a été expédié…

Le 21 janvier (11 jours après la promesse de la nouvelle production), je n’ai toujours pas de nouvelles… c’est une fois de plus moi qui les relance… aucun suivi de la relation clientèle :

Bonjour,

Je me permet de revenir vers vous. Avez vous des nouvelles de l’expédition de la nouvelle production ? Depuis votre mail du 10 janvier, je n’ai rien reçu.
Merci de traiter ma demande dans les plus brefs délais. Si je ne reçoit rien avant le 31 janvier, je serai contraint de demander l’annulation et le remboursement de ma commande.
Dans l’attente d’une réponse,
Cordialement,

Dans l’intervalle, GLS a enfin retourné le colis (après l’avoir conservé 1 mois et n’en avoir rien fait, colis retourné le 14, reçu le 16 janvier chez Prentu). Voici l’intégralité du tracking :

Livraison colis selon GLS : garder le colis 1 mois sans rien faire dans un dépôt puis le retourner enfin à l'expéditeur

Livraison colis selon GLS : garder le colis 1 mois sans rien faire dans un dépôt puis le retourner enfin à l’expéditeur

Pour une fois j’ai une réponse rapide de Prentu, le jour même :

Merci pour votre retour.

Nous nous excusons pour l’attente sans nouvelle,

Votre commande vous sera expédiée demain, nous avions mis votre commande de côté pour nous assurer de la bonne qualité d’envoi. C’est pour ceci que l’expédition a mis plus de temps que d’habitude.

Nous vous remercions sincèrement pour votre patience

Meilleures salutations,

M H

La, j’ai vraiment l’impression de me faire enfler… 20 jours qu’ils m’ont promis une nouvelle production, et mon colis n’est toujours pas expédié… comme par hasard dans l’intervalle ils ont reçu le retour… je suis certain qu’ils n’ont jamais fait de seconde prod et qu’ils ont juste cherché à gagner du temps… Mettre un colis de côté 15 jours, c’est un sacré moyen de s’assurer de la qualité de l’expédition… avec ce délais, j’espère qu’il est emballé dans de la feuille d’or…

Je reçoit effectivement dans la foulée une nouvelle notification d’expédition, avec un lien de suivi… sur le même  transporteur que pour la première expédition. Ce lien n’est pas actif.

Le 26 janvier, le lien de suivi est toujours inactif. Je suppose que c’est parce que c’est un mail automatique et que comme le colis est sensé être envoyé avec un autre transporteur, je n’ai pas le bon lien. Nouveau mail de ma part le 26/01 pour demander le nouveau lien :

Bonjour,

Suite a votre mail j’ai bien reçu un mail de confirmation d’envoi. Ce mail m’a communiqué ce lien de suivi http://www.dpost.be/Parceltracking/tracking/barcode_id/bxWzaMiX_Z4S7POdG39m8TCDNf7gJxaDImcIKs-PGYA . Celui-ci ne semble pas fonctionner, pourriez vous m’indiquer le bon numéro de suivi.

Merci
Cordialement

Toujours 2 jours de délais de réponse, le 28 janvier donc :

Merci pour votre message.

Je suis désolé d’apprendre que vous rencontrez des problèmes avec le réception du colis.
Je viens de constater que le colis est toujours à dépot d’expédition. J’ai appélé l’opérateur de transport et démandé un expédition immédiat.
Le lien avec laquelle vous pouvez suivre le colis sera actif depuis demain.

Je m’excuse pour l’inconvénient.

Si vous avez des questions, n’hésitez pas de nous recontacter.

Bonne après-midi à vous!

Meilleures salutations,

R-J

Donc la, le mec me dit avec aplomb que le colis dont ils sont sensés avoir relancé la production le 10 janvier n’est toujours pas expédié, presque 3 semaines plus tard. La, si c’est pas du foutage de gueule de compet, je ne sais pas ce qu’il faut…

Le 30 janvier, le lien est toujours inactif. J’envoi un nouveau mail, je suis resté calme pour le moment mais la ils commencent à me gonfler sévère :

Bonjour,

Je n’ai toujours rien reçu et le lien de suivi que vous m’aviez fourni (http://www.dpost.be/Parceltracking/tracking/barcode_id/bxWzaMiX_Z4S7POdG39m8TCDNf7gJxaDImcIKs-PGYA) est toujours inactif malgré vos promesses de votre mail daté du 28 janvier 2015.

Veuillez faire le nécessaire pour que cet article me soit expédié dans les plus brefs délais. Merci également de vous assurer que le colis sera expédié par un autre prestataire que GLS, comme vous me l’aviez promis dans votre mail du 10 janvier.

Merci de faire au plus rapide, sinon, je me verrai dans l’obligation de demander l’annulation de la vente conformément à l’article 11-3 de vos conditions générales de ventes (cette commande a été passée le 4 décembre, soit il y a presque 60 jours, je pense que j’ai été suffisamment patient, et ceci devait être un cadeau de Noël).

Cordialement,

3 jours plus tard (3 février), enfin une réponse :

Merci pour votre message.

Nous sommes désolées d’apprendre que vous rencontrez toujours des problèmes avec le reception de votre colis. Je viens de constater que votre colis est à nouveaux envoyé en methode regulière. Votre colis rencontre à ce point la même problème, il est simplement trop grande.

J’ai contacté l’opérateur de transport et démandé un livraison dans les meilleures délai. Car je comprends l’inconvénient et que vous avez attendre déjà longtemps, nous pouvons également vous présenter un des options suivantes:

– Nous pouvons créer le montant qui vous avez payé sur votre compte. Ce montant de 119.95 est valable sur tous nos produits. Avec cette démarche vous pouvez selectionner un produit qui est moins grande (et pour ce raison sera livré sans problèmes).

– Comme un geste commercial, nous pouvons vous rembourser le montant de 119.95. Si vous souhaites ce solution, nous vous démandons d’envoyer votre numéro IBAN et code BIC de votre banque. Cette information est présente sur votre RIB.

En espérant que un des options vous satisfaites.

Je m’excuse pour l’inconvénient.

Dans l’attente de votre réponse.


Meilleures salutations,

R-J

Le mec m’affirme que le colis est expédié… mais le lien fourni est toujours inactif… ils sont incapables de me fournir un lien valide… et le mieux dans tout ça, c’est qu’ils ont semble t-il encore fait appel à ces incompétents abrutis de GLS… je ne sais pas qui est le plus stupide dans l’affaire… le transporteur ou son donneur d’ordre…

La proposition de remboursement n’est la que parce que je l’ai évoquée dans mon mail… ils auraient du me la proposer bien plus tôt… et ils proposent en premier lieu de me faire un avoir… ils me prennent vraiment pour un con, après m’avoir traité avec un tel dedain, ils s’imaginent que j’ai encore envie d’être client chez eux…

Je transmet donc mon RIB le 5 février. Le 8/02 (oui un dimanche), nouveau mail de Prentu. Mes infos sont transmises au « département financier » (ça rigole pas !) :

Merci pour votre retour.

Nous avons transmis les informations au département financier de l’entreprise. Ils devraient traiter le remboursement dans le courant de la semaine prochaine.

Nous vous remercions pour votre patience

Meilleures salutations,

M H

Ah oui, ça de la patience, il en faut avec eux… J’ai reçu le mail le dimanche, pour moi, la semaine prochaine commence donc le lendemain, lundi 9 février. 17 février, toujours pas de traces du virement sur mon compte. Je me décide à reprendre ma plume mon clavier.

Le 18, réponse :

Merci pour votre retour.

Nous avons maintenant procéder au remboursement. Vous devriez recevoir le virement dans le courant de la semaine.

Nous vous remercions pour votre patience

Meilleures salutations,

M H

Le 20 février, j’ai enfin le virement sur mon compte ! Ouf ! Bilan de l’opération, un colis qui n’a jamais été sous le sapin, plus de 2 mois et demi de perdu, 15€ fichus par les fenêtre pour tenter de joindre leurs livreur imbécile… Prentu rejoint ma liste de sites blacklistés… je vous invite également à boycotter les services de ce site, du moins tant qu’ils ont feront appels à ces incapables de chez GLS (et qu’ils sont infichus d’envoyer les colis avec un autre prestataire comme ils le promettent au bout d’un mois…). A chaque fois, c’est moi qui les ai sollicité, ils ne prennent jamais l’initiative de vous tenir informé… Je vais enfin pouvoir remplir leur fameuse enquête. Voici comment elle est intitulée (reçu le 26 décembre je le rappel) :

Vous avez reçu votre commande. Nous nous efforçons chaque jour à améliorer nos produits ainsi que nos produits, c’est pour cette raison que nous sommes curieux de savoir ce que vous pensez de vos produits et de votre expérience avec Prentu.

Dans quelle mesure serez vous prêt(e) à conseiller Prentu à vos amis ou vos proches, sur une échelle de 0 à 10?

Et bien devinez… même leur truc d’évaluation ne fonctionne pas… Des gros nazes !

 

Ikehack : meuble pour imprimante laser

Présentation du problème

Il y a un an, j’ai acheté une imprimante laser couleur, une HL-3140CW pour être précis. Ce genre d’imprimante est plutôt… mastoc, et n’est pas nécessairement du plus  bel effet exposé dans un salon ou une chambre… sans parler que cela prend la poussière et les doigts des enfants…

Je me suis donc mis en quête d’un meuble qui puisse accueillir ce type d’imprimante. Mes recherches n’ont rien donné, il semblerait que ce genre de produit n’existe tout simplement pas…

Je ne me suis donc pas démonté et je me suis mis à la recherche d’un meuble qui puisse accueillir ce type d’imprimante, un cube aux dimensions de 41 x 46,5 cm de base et 24 cm de haut, quitte à détourner un meuble qui n’était pas destiné à cet usage à l’origine. Le problème qui se pose également, c’est que le chargement des toner sur ce type d’imprimante se fait par le dessus, et cela demande donc de disposer d’un espace conséquent au dessus de l’imprimante (hauteur totale capot ouvert, environ 50 cm).

La HL-3140CW ouverte

La HL-3140CW ouverte

Plusieurs solutions :

  1. Garder un espace libre au dessus de l’imprimante pour changer les toner : perte de place énorme
  2. Sortir l’imprimante du meuble pour changer le toner vide : solution assez moyenne, l’imprimante pèse plus de 17 kg et bien sur les toner ne sont jamais vide en même temps : beaucoup de manipulations, peu pratique
  3. Disposer d’un tiroir pour « extraire » l’imprimante du meuble quand le besoin se présente

Cahier des charges

Le cahier des charges final sera donc :

  • Un meuble fermé, disposant de passages de câble
  • Largeur mini : 45 cm, profondeur mini : 50 cm (afin de disposer d’espace autour de l’imprimante pour son refroidissement)
  • Un plateau tiroir qui permette de sortir l’imprimante du meuble pour le changement des toner

Recherche du candidat idéal

J’ai recherché tout d’abord du côté des meubles sur mesure… on trouve des sites Web qui proposent du sur mesure partiel (un « modèle » est proposé et on peut adapter les côtes). Pas de salut de ce côté, en général, soit les dimensions maximales étaient en dessous des miennes, ou alors on ne pouvait pas avoir de portes ou des choses dans ce genre… Solution écartée assez rapidement.

J’ai donc commencé à regarder du côté du catalogue Ikea. Rapidement, il m’est apparu que les seuls meubles qui pouvaient répondre à mes besoins étaient des meubles de cuisines : ce sont les seuls à proposer une profondeur suffisante (le standard Ikea semble être à 60 cm, ce qui est parfait pour moi). En choisissant bien les couleurs du meuble et des portes, il y a possibilité de faire quelque chose qui ne fasse pas trop cuisine. J’ai retenu un élément bas de la gamme METHOD, avec un plan de travail assorti (j’ai choisi ce plan, utilisé côté blanc visible évidement). Les dimensions du meuble sont 60 cm de profondeur et 80 cm en hauteur comme en largeur.

Le problème de la tablette coulissante

Le marchand suédois ne propose aucune solution qui permette d’avoir un plateau qui sort du meuble. J’ai donc décidé de le jouer en mode DIY ! Je me suis rendu dans mon Leroy Merlin favoris pour dégoter 2 coulisses 50 cm à sortie totale. Avec 45 kg de charge max, j’ai de la marge.

Coulisse a sortie totale, 50 cm, charge max 45 kg

Coulisse a sortie totale, 50 cm, charge max 45 kg

Il suffit ensuite de leur adjoindre une planche de 50 cm de profondeur. J’ai opté pour une chute d’aggloméré en 18 mm dont je disposait à la maison.

Mise en œuvre

Il suffit dans un premier temps de monter le meuble selon le plan fourni par Ikea. Aucunes difficultés. Il vous faudra par contre vous équiper de quoi découper le plan de travail (idéalement scie circulaire… je l’ai fait à la scie sauteuse, mais c’est difficile de faire une coupe nette avec cet équipement, la lame ayant tendance à se vriller légèrement… dans tous les cas, l’aggloméré du plan de travail est tellement dur qu’il faudra équiper votre scie d’une lame neuve, impérativement, et vous armer de patience). Moyennant deux autres découpes (la bonne largeur + ajustage de la profondeur), vous pourrez vous servir de la chute pour faire l’étagère roulante.

On ne peut pas monter directement les glissières sur les montants du meuble. En effet, ouvertes, les portes débordent sur l’intérieur du meuble. J’ai donc choisi de placer entre les montants du meuble et les glissières une « entretoise » découpée dans de l’aggloméré de 18 mm d’épaisseur. J’ai retenu des entretoises de 4 cm de largeur (soit environ la largeur de la glissière) et de 50 cm de long (identique à la longueur des glissières).

Vissage de la glissière dans le meuble

Pour la mise en place de la glissière, j’ai tout simplement commencé par positionner l’ensemble glissière + entretoise sur les trous existants destinés à fixer les étagères fournies par Ikea. Cela a l’avantage d’assurer à la fois le niveau et que les 2 glissières soient bien face à face, d’autant que les trous des glissières tombent en face de ceux du meuble ! Cela laisse certes un espace d’environ 7-8 cm entre le plateau coulissant et le bas de meuble, mais c’était souhaité chez moi, cela laisse de l’espace en bas de meuble pour mettre les multiprises et stocker le surplus de câbles.

L’aggloméré Ikea fait 18 mm d’épaisseur, l’entretoise également. Il faut donc trouver des vis bois de 35 mm de long. On ne le trouve pas (ou difficilement) au détail, j’ai pour ma part acheté un kit de chevilles à aggloméré dont les vis faisaient la bonne longueur (de ce type).

Il faut ensuite fixer correctement l’ensemble en utilisant un nombre généreux de vis (pour ma part, 7 vis), car l’aggloméré résiste assez mal à l’arrachement. Il est impératif de faire un avant trou au diamètre du filetage dans l’entretoise (sinon, vous aurez des difficultés à plaquer l’entretoise au montant du meuble a cause du pas de vis qui éloigne l’ensemble lors du vissage. Un avant trou dans le bois du meuble permet également de faciliter grandement le vissage (les vis on peu de prise notamment à l’engagement dans le contreplaqué).

Vissage de la glissière côté plateau

Côté plateau, j’ai opté pour des vis de grande longueur : en effet on va visser dans le chant du contreplaqué, et la résistante est faible, d’autant que la charge viendra en cisaillement. J’ai donc retenu des vis de 4,5 mm de diamètre et 50 mm de long. La aussi, l’avant trou est indispensable, notamment pour pouvoir visser droit (vu la longueur des vis, si on ne visse pas droit, les vis risque d’effleurer voir de ressortir de la planche). La aussi, il faut se montrer généreux sur le nombre de vis pour répartir les forces.

Il est important de faire une découpe précise de la largeur du plateau, car le montage ne laisse que très très peu de marge de manœuvre : si c’est trop large, ça ne rentrera pas, si c’est pas assez large, on ne pourra pas emboîter les glissières. Le plateau ne fait que 50 cm de profondeur pour 60 cm de profondeur de meuble : les 10 cm au fond permettent de passer les câbles.

Basculement du meuble

Avec le plateau tiré, j’ai constaté qu’il avait tendance à basculer, même sans imprimante dessus. Il faut dire que ces meubles sont normalement conçus pour être fixés au mur, chose que je ne souhaite pas faire (location…). J’ai donc opté pour la solution du contrepoids. J’ai acheté chez Décathlon des poids d’altères, sous forme de 4 poids ronds en fonte de 5 kg (soit un total de 20 kg), que j’ai fixé sous le meuble grâce à des boulons : pas de place perdue à l’intérieur du meuble et poids invisible grâce aux plinthes (qui ne sont pas encore en place sur la photo). Une fois chargé, le meuble n’a plus tendance à basculer.

Il reste à faire un trou pour le passage de câbles à chacun des étages qui accueillera un périphérique nécessitant une alimentation électrique. Cela se fait très facilement et proprement à la scie cloche dans le fond du meuble en contreplaqué 3 mm.

Le montage en images

Le meuble fermé

Le meuble fermé

Ouvert - tiroir poussé

Ouvert – tiroir poussé

 

Ouvert - tiroir tiré

Ouvert – tiroir tiré

 

 

Synology, diffuser de la musique sur les enceintes d’un PC via l’application Android/iOS

Récemment, j’ai souhaité, afin de faciliter l’accès à la bibliothèque musicale stockée sur mon NAS Synology à la petite famille, pouvoir diffuser la musique directement sur les enceintes du PC en commandant le « player » via l’application DS Audio fournie par Synology, et plutôt bien foutue.

J’avais déjà utilisé l’UPnP/DLNA à certaines occasions, mais toujours sur des fonctionnalités « intégrées » (XBMC par exemple). La, il s’agit d’apporter une fonctionnalité de « player distant » à un PC sous Windows.

Je savais qu’il existe des logiciels UPnP client ou serveur. Le serveur stock les données (film/musique) et les rend disponible aux différents clients, on parle de Digital Media Server (DMS). Les fonctionnalités du client  peuvent varier, on distingue au moins :

  • Digital Media Player (DMP) : logiciel qui découvre les serveurs UPnP et lit en local les médias (fonctionnement de base de DS Audio : il se connecte au NAS et diffuse sur le haut-parleur du téléphone les médias)
  • Digital Media Controller (DMC) : logiciel qui découvrent les serveurs UPnP et les font décoder par les Media Renders. DS Audio est capable de jouer le rôle de DMC.
  • Digital Media Render (DMR) : logiciel qui attend les ordres d’un DMC, et joue ensuite le média demandé. C’est le logiciel qu’il me faut pour me permettre de lire des médias du Synology sur le PC et commandant via DS Audio.

Je dispose donc du DMS (le Synology), d’un DMP/DMC (DS Audio) et je recherche un DMR. Au début, je faisais mes recherches avec DLNA client, et je ne trouvais pas le logiciel qui convenant… on voit que ce terme de client est bien trop générique et regroupe au moins 3 notions. VLC intègre une fonction de client DLNA, mais en DMP seulement à priori (j’ai lu des choses qui m’ont mise le doute, mais je ne suis pas parvenu à le faire fonctionner en DMR… si c’est possible et que quelqu’un à l’astuce, je suis preneur).

Du coup, mon salut est venu du lecteur Foobar2000 (j’aurais préféré rester sur des solutions open source, mais à part XBMC, qui aurait été bien trop lourd pour ce simple usage, il existe a priori très peu de solutions sous Windows), auquel il faut adjoindre le plugin Foo_UPnP. Une fois le player installé, rendez-vous dans File -> Preference -> vous arrivez directement dans le partie Components. Cliquez sur le bouton Install… et sélectionnez le plugin téléchargé.

Préférences, partie composants des paramètres de Foobar2000

Préférences, partie composants des paramètres de Foobar2000

Enfin, appuyez sur Apply, ce qui fait redémarrer Foobar2000 et prend en compte le plugin. Voila, vous avez un media render sous Windows.

A présent, il suffit de se servir de DS Audio comme contrôleur.

Pour cela, il suffit de lancer DS Audio, puis de vous rendre dans la fenêtre lecture en cours (cliquez sur la barre ou se trouve le bouton pause/play) :

Acces au paneau "lecture en cours" de DS Audio

Acces au paneau « lecture en cours » de DS Audio

Ensuite, dans la partie supérieure de la fenêtre, cliquez sur le petit onglet en haut à gauche, puis séléctionnez Foobar2000 dans le popup qui s’ouvre :

La fenête lecture en cours de DS Audio

La fenêtre lecture en cours de DS Audio

DSAudio : fenêtre de sélection du media render

DSAudio : fenêtre de sélection du media render

Voila, vous disposez d’un moyen pour diffuser aisément votre musique du NAS vers les enceintes de votre PC en vous servant de votre téléphone/tablette comme télécommande.

Cette solution est fonctionnelle… mon seul regret est qu’elle ne soit pas open source et que le plugin ne semble plus maintenu (dernière version diffusée datée de fin 2013). En espérant qu’il ne devienne pas obsolescent trop rapidement. J’utilise ici Foobar2000 version 1.3.6 avec son plugin UPnP en version 0.99.48, sous Windows 7, mais cela devrait fonctionner sans soucis sous Windows XP comme Windows 8.

Vous pouvez diffuser de la musique sur n’importe quel DLNA render situé sur le même réseau local que votre NAS (et ceci même si vous êtes en 3G loin de chez vous ! Il suffit que le NAS et le media render soient allumés).

Tiny Tiny RSS chez 1&1 mutualisé

Depuis la fermeture de Google Reader,  j’ai déployé Tiny Tiny RSS. Au début, je l’avais installé sur un Raspberry Pi a la maison qui me servait de serveur. Ca fonctionnais, cependant, la puissance limitée de cet ordinateur à fait que Tiny Tiny RSS était assez lent. Finalement, cette installation à fini par planter (corruption de la BDD, je ne sais pas si cela est du à un soucis sur la carte SD, un soucis avec la puissance limité du RPi sur une BDD qui devenait de plus en plus grosse ou que sais-je encore…).

Logo de Tiny Tiny RSS

Logo de Tiny Tiny RSS

J’ai donc décidé de me réinstaller une nouvelle instance de Tiny Tiny RSS sur mon hébergement mutualisé chez 1&1. J’avais lu que le soucis sur un mutualisé, on pouvait avoir des soucis pour fetcher automatiquement et régulièrement les différents flux. Et bien, sur mon hébergement mutualisé Linux, ça fonctionne, avec cron.

Pour cela,  faites l’installation classique de Tiny Tiny RSS. A l’issue de l’installation, connectez vous à votre serveur via SSH (intégré sur Linux ou utilisez un outils comme Putty ou MobaXTerM sous Windows). Ensuite, tapez :

crontab -e

Vous avez la liste des tâches cron paramétrées (surement aucunes si vous n’en avez jamais créé). Tout en bas du fichier, rajoutez une ligne de ce type :

*/10 * * * * /usr/bin/php5.5-cli /kunden/homepages/X/Y123456789/htdocs/tinytinyrss/update.php --feeds --quiet

Pour l’inserer, passez en mode insertion en appuyant sur la touche i. Une fois ajouté, quittez vi en enregistrant en tapant :wq .

Avez cette ligne, vous donnez à cron l’adresse du binaire à exécuter (ici PHP 5.5 CLI), l’adresse absolue du script et ses arguments. Le */10 * * * * indique à cron de lancer le script toutes les 10 minutes. Vous pouvez changer cette périodicité d’exécution à votre guise. Il vous faudra également adapter le chemin, la chaîne « /kunden/homepages/X/Y123456789/htdocs/ » change pour chaque compte. Pour savoir par quoi la remplacer, il vous suffit d’appeler la fonction phpinfo. Si vous avez conservé les fichiers fourni par 1&1, vous pouvez consulter les paramètres lançant le fichier info.php qui se situe dans le répertoire logs de votre espace d’hébergement. Il s’agit de la valeur stockée dans la variable DOCUMENT_ROOT que vous trouverez dans le rapport affiché par info.php.

Voila, pour le moment, cette instance de TTRss tourne sans soucis sur cet hébergement sans soucis de performances depuis environ 1 mois… j’en suis content, d’autant qu’avec l’applie Android, c’est vraiment du bonheur !

WordPress en multisite, multi-domaines et importation !

Depuis quelques temps, j’avais sur mon hébergement 2 blogs, celui-ci, et mon blog de radioamateur. Je souhaite, dans un avenir proche, migrer également sur mon hébergement perso un blog actuellement hébergé chez WordPress.com. La solution de facilité consistait à héberger une troisième installation de WordPress. Cette solution présente un grand nombre d’inconvénients, parmi elles, la mobilisation inutile d’espace disque (avec des fichiers dupliqués pour chaque installation), mais surtout, elle rend fastidieuse le maintient à jour des installations de WordPress, car à chaque mise à jour, il faut faire les mises à jour unes à unes (même problématique pour les plugins). Il va sans dire que déjà avec 2 blogs, j’avais régulièrement au moins l’un d’entre eux qui avait une ou plusieurs versions de retard, avec potentiellement donc une exposition aux failles de sécurité (bien que ceci devrait s’améliorer avec WordPress 3.7, puisque désormais les mises à jour vers les versions mineures se feront de façon automatique sans intervention de l’administrateur). Bref, hors de question pour moi de garder ce système en l’état avec un blog de plus.

A savoir qu’avec le multisite, certains comportements sont modifiés dans WordPress. Lorsque l’on est dans les tableaux de bords des blogs, il n’est plus possible par exemple d’installer des plugins. L’installation doit en effet impérativement se faire via l’interface d’administration du réseau, ensuite, chaque blog active ou non les différents plugins installés en fonction des besoins.

Logo WordPress

Logo WordPress

Je me suis donc penché sur l’installation de WordPress en réseau, qui permet de gérer plusieurs blogs avec une seule installation du moteur WordPress. 2 solutions sont possibles, une installation par sous-répertoire (chaque blog est accessible par un sous-répertoire – de type http://monsite.com/nom-blog) ou une installation par sous-domaine (de type http://nom-blog.monsite.com). Pour ma part, j’avais une difficulté supplémentaire, car je souhaitait héberger plusieurs domaines avec la même installation de WP (par exemple avoir monsite1.com et monsite2.com, mais aussi blog.monsite1.com qui soient 3 sites différents gérés par la même installation de WordPress). Ce cas de figure n’est pas geré nativement par WordPress, il existe heureusement un plugin qui permet de faire ceci (Mu Domain Mapping). Je ne vais pas détailler ici la procédure, je me suis basé sur celle proposée par ce blog, assez complète.

Cependant, voici les grandes étapes pour résumer (j’ai du relire plusieurs fois la procédure sur le site lié plus haut pour qu’elle soit claire dans ma tête) :

  1. Faire une installation classique de WordPress. A priori, il faut impérativement qu’elle soit à la racine du domaine pour que cela fonctionne.
  2. Editer wp-config.php pour activer le multi-site
  3. Installer le réseau WordPress via l’interface d’administration du site principal. Il faut bien choisir l’installation en sous-répertoires pour le multi-domaines avec le plugin Mu Domain Mapping (ça m’a paru étrange au début, mais en tout cas ça fonctionne).
  4. Installer Mu Domain Mapping
  5. Créer les différents blogs et configurer le domain mapping.

Importations de blogs existants

Ma seconde problématique était l’importation de blogs existants, de façon transparente (c’est à dire que leur noms de domaine ne changeaient pas…). WordPress sait importer les articles (et les médias liés), de façon automatique, mais à condition que le nouveau nom de domaine soit différent de l’ancien… En effet, pour importer les médias, WordPress recherche dans les articles les liens vers ceux-ci, puis les télécharge de l’ancienne adresse vers la nouvelle. Pour ma part, je souhaitais que les adresses restent les mêmes…

Après plusieurs essais, j’ai procédé comme suit :

  1. Mettre une adresse « temporaire » à l’ancien blog (par exemple passer de blog.vermot.net à blog-old.vermot.net) :
    1. Mettre le nouveau domaine dans les réglages de WordPress (Reglages –> Général –> Adresse web de WordPress (URL) et  Adresse web du site (URL)).
    2. Ici vous allez avoir un problème car les adresses vers les médias (images notamment) sont inscrites « en dur » dans les billets. Ils continuent donc de pointer vers l’ancienne adresse (blog.vermot.net). Ici, vous pouvez intervenir directement dans la base de données, pour mettre à jour l’ensemble des informations de la table wp_posts (la fonction REPLACE est votre amie).
    3. A ce stade, vous avez normalement un blog fonctionnel, à une nouvelle adresse temporaire. Vérifiez que tout fonctionne, puis exporter les posts via la fonction d’Export de WordPress (Outils –> Exporter)
  2. Créer le blog dans le réseau, avec l’ancienne adresse (blog.vermot.net). Il faut configurer intégralement les adresses du blog, sans quoi,  à l’importation, les mauvaises adresses seront utilisées et dés que vous mettrez la bonne adresse dans la config, plus rien ne fonctionnera au niveau des images.
    1. Créez le blog via l’administration principale
    2. Configurez le site : dans la page du site, indiquez
        • Dans l’onglet info, le domaine (http://blog.vermot.net)
        • Toujours dans l’onglet info, le chemin est vide (ou /)
      Configuration du multisite

      Configuration du multisite

        • Dans l’onglet reglages, vérifiez que les informations concordent (normalement elles sont mises à jour automatiquement avec les changements dans l’ongelt info).
        • Enfin, donnez les bonnes informations au plugin Mu Domain Mapping

      Configuration de Mu Domain Mapping

      Configuration de Mu Domain Mapping

    3. Enfin, connectez vous sur le nouveau site (blog.vermot.net), puis importez via la fonction d’import de WordPress (Outils –> Importer). Si tout se passe bien, les images de l’ancien blog seront importées dans le nouveau.
    4. Il ne vous reste plus qu’à réinstaller puis réactiver les différents plugin qui étaient présents sur votre ancien site.

Voila, j’espère que ce billet pourra permettre à ceux qui sont confrontés aux mêmes problèmes que moi d’avancer un peu plus rapidement que je ne l’ai fait.

Autre astuce : comme je l’ai dit plus haut, il faut que WordPress soit installé à la racine du domaine (vermot.net dans mon cas). Hors, je voulais conserver sur vermot.net une page d’accueil en HTML. Chez la plupart des hébergeurs, si un fichier index.php et un fichier index.html sont présents dans le répertoire d’accueil, alors l’un ou l’autre sera servi en priorité (souvent le .html). Cette configuration est normalement éditable, mais certaines hébergeurs (notamment sur des serveurs mutualisés) ne permettent pas la modification. Dans mon cas, si je laissait le fichier index.html, plus rien ne fonctionnait, car tous les domaines affichaient alors ce fichier (index.html prioritaire sur index.php de WordPress). Par ailleurs, sur vermot.net, si je supprimais ce fichier, j’avais alors un blog vierge qui s’affichait. J’ai donc renommé mon fichier index.html en index.welcome, ainsi, c’est bien l’index.php qui est chargé par défaut. J’ai installé et activé sur le WordPress qui s’affichait sur vermot.net le plugin Redirection, et je fait tout simplement, grâce à ce plugin, une redirection de toutes les requettes vers vermot.net vers le fichier index.welcome. Ainsi, les autres domaines affichent bien le WordPress, et vermot.net affiche ma page HTML ! Le tour est joué !

Sauvegardes : back to basics !

Les sauvegardes sont des choses que trop peu de personne mettent en place… et pour cause, c’est souvent compliqué, et trouver le soft qui convienne bien est souvent une longue quête. Ensuite, il faut configurer des logiciels, et obtenir exactement ce que l’on veux est souvent une gageure…

Pour ma part, j’avais besoin de sauvegardes pour différentes choses :

  • mes sauvegardes perso (de la photo numérique et des données diverses, au total plusieurs dizaines de Go), je souhaite les faire sur mon NAS et aussi sur un support distant dans le cloud afin de me prémunir du vol notamment
  • des sauvegardes des données bureautiques de mes parents, pour ne pas les embêter avec des supports amovibles, la sauvegarde doit se faire à distance (quelques dizaines de Mo)
  • des sauvegardes de photo numériques sur disque dur externe pour des proches, en local

J’ai testé plusieurs solutions, Cobian Backup, Duplicati…

Cobian Backup fonctionne pas mal, je l’ai utilisé sur le PC de ma maman pour des sauvegardes sur une deuxième machine du foyer, via le réseau. Sauvegarde contraignante car il fallait que cette seconde machine soit allumée heure fixe pour que le sauvegarde se fasse… la sauvegarde devait donc passer à l’as assez souvent. Puis, cette seconde machine  à fini par être supprimée, exit la sauvegarde sur le réseau local donc. Comme j’ai un NAS connecté sur net via mon Raspberry Pi chez moi, je souhaitais donc transformer cette sauvegarde réseau local en sauvegarde à distance sur mon NAS via l’Internet. Je ne voulais pas que les données transitent en clair, exit donc cette solution qui ne sais faire que via FTP (non chiffré) ou via le système de fichier. Par ailleurs, Cobian Backup ne dispose d’aucun moyen de restauration simple, et selon le mode de sauvegarde, il ne conserve pas forcément arborescence… bonjour le boulot en cas de restauration…

J’ai testé sur ma machine Duplicati, solution qui paraissait complète, mais la aussi, pas assez paramétrable à mon gout… un miroir me suffit et il ne sais pas le faire à priori… il fait des archives ZIP avec les fichiers : ça consomme du temps et de la puissance pour rien, et en cas de corruption d’une archive c’est toutes les données contenues dans l’archive (100 Mo) qui sont perdues…

Enfin, il est difficile d’utiliser ces solutions dans le cadre de sauvegardes « à la demande » : dans tous les cas, il faut plusieurs cliques pour lancer la sauvegarde… je veux quelque chose qui fonctionne en un seul clic : on branche le disque externe, on double clique sur une icone et ça sauvegarde sans poser de questions !).

Bref, je trouve ces solutions trop complexes, et elles consomment toutes je trouve beaucoup trop de RAM pour leur « agent ».

J’ai donc remis le nez dans les solutions existantes, et je me suis arrêté sur… rsync ! Simple à configurer (on indique le répertoire source, la destination, et les éventuelles quelques options que l’on souhaite), il sait faire de la sauvegarde distante et via un canal chiffré sur n’importe quel serveur SSH, il ne consomme absolument aucune RAM en dehors des phases de sauvegarde puisqu’il n’est pas lancé. Enfin, on peut soit faire de la sauvegarde automatique (via les fonctions de tâche planifiées : planificateur de tâches sous Windows, cron sous Linux like), soit de la sauvegarde manuelle (double-clique sur une icone qui lance le script).

Chez moi, ma machine est sauvegardée sur mon NAS avec rsync, puis chaque nuit, mon serveur Raspberry Pi récupère ces data sur le NAS pour les envoyer en ligne sur mon compte Hubic, toujours avec rsync. Ça fonctionne bien, même si évidement la première sauvegarde prend du temps (plusieurs jours, on envoie pas comme ça des dizaines de Go sur une ligne ADSL…).

Sous Windows, j’ai recours à cwRsync.

Lenteur avec VNC

J’ai récemment déménagé à 800 km de ma famille, et avant mon départ, j’ai installé sur leurs machines UltraVNC pour me permettre de les dépanner (j’ai également découvert Ultra VNC Simple Clic, une version du serveur qui se connecte sur le client lorsque l’on clique dessus. L’avantage, c’est qu’il n’y a aucune config à faire côté client, pas de redirection de port dans les box notamment. L’exécutable UVNC SC contient les informations qui permettent de joindre ma machine sur laquelle s’exécute le client VNC ne mode écoute. C’est de mon côté que les redirections de ports sont paramétrées. Il suffit que je donne le lien vers mon exécutable configuré, exécutable hébergé sur mon site Web, et en un clic et aucune config du côté serveur, je peux prendre la main sur la machine distante, magique et pratique pour prendre la main sur une nouvelle machine par exemple !).

UltraVNC

UltraVNC

Bref, sur au moins 2 machines, la prise à distance (que ça soit via VNC Server ou via VNC SC) était quasi inutilisable car l’image de la machine distante ne se rafraîchissait pas de mon côté (j’était obligé de forcer le rafraîchissement via la fonction idoine de VNC Viewer, et même via ce biais, ça ne se rafraîchissait pas rapidement). Le bug est apparu sur Windows XP et Windows 7, j’imagine donc que c’est indépendant des versions de Windows.

Le problème vient en fait du driver de capture vidéo de VNC qui gère mal l’acquisition sur des affichages paramétrés en 24 ou 32 bits. La solution est donc de modifier le paramétrage de l’affichage de la machine distante en la diminuant sur 16 bits. A partir de la, tout est fluide chez moi.

Retour OVH ADSL

J’ai récemment déménagé dans la région de Bordeaux pour mon stage de fin d’études. J’avais entendu parler du FAI OVH, et comme la région de Bordeaux fait partie des quelques zones françaises dégroupées par le FAI, j’ai décidé de sauter le pas. Par rapport à mon ancien FAI (SFR), ce qui m’as fait sauter le pas sont les élements suivantes

  • Pas de TV ADSL que je n’utilisait presque pas
  • L’IP fixe
  • Les engagements sur la neutralié du net proné par OVH. J’en ai ras le bol de ces FAI qui brident différents services (le cas de Youtube chez Free est le plus médiatique, mais le soucis existait aussi chez SFR, il m’était impossible de regarder des vidéo dans une qualité correcte, pourtant, j’avais 1,5 Mo/s en descente…)
  • Et enfin, un tarif pas plus cher que la concurrence, voir moins cher (moins de 30€ TTC alors qu’il m’en coûtait près de 35€ chez SFR)

En arrivant sur Bordeaux, j’avais donc plusieurs solutions :

  1. Mon immeuble est câblé par Numéricable, on nous annonce un débit de 100 Mbps mais dans la réalité, le débit réel de connexion est de 30 Mbps dans l’immeuble, donc pas beaucoup plus interessant que l’ADSL (quoi que on serait mieux positionné en terme de débitant montant). Et puis Numéricable n’est absolument pas neutre, ils interdisent notamment l’auto-hébergement dans leurs CGV et on mis en place des mesures techniques pour le rendre effectivement impossible (sauf à les contourner avec des ruses de sioux)
  2. SFR : comme je le disais, j’ai eu des soucis de débit sur certains sites avec eux, et surtout pas d’IP fixe donc exit
  3. Free : IP fixe disponible mais gros soucis quand à la neutralité du net avec eux… je ne serais pas client Internet chez eux tant qu’ils n’auront pas clarifié la situation
  4. Restait donc OVH qui remplissait tous mes critères, et mon petit côté baroudeur m’a motivé pour tester ce FAI récemment arrivé sur le marché

Bref, je vais souscrire sur le net. Je dispose de l’ancien numéro de fixe des précédents locataires, ça sera donc une activation de ligne sur numéro existant. J’adore la page de test d’OVH qui indique le débit maximum théorique de la ligne, mais aussi et surtout les statistiques qui indiquent que le débit dépend de la qualité réelle de la ligne. Je peux donc espérer dans le meilleur des cas un peu plus de 18 Mbps ATM (5% des cas), mais que j’ai plus de chance d’avoir un débit de l’ordre de 13,35 Mbps ATM (50% des cas). Un réel effort de transparence. Les autres FAI devraient prendre de la graine et ce genre de fiche technique devrait être obligatoire. Voici quelques screen de cette page technique :

Récapitulatif de la ligne

Récapitulatif de la ligne

Les débits théoriques

Les débits théoriques

Estimation des débits réels

Estimation des débits réels

Les liens OVH chez moi

Les liens OVH chez moi

Un effort de transparence que je salue donc. Bref, je souscrit en ligne sur numéro inactif un jeudi dans la soirée (vers 21h). On m’annonce en fin de procédure un délais de création de ligne de 3 à 21 jours. Je laisse donc l’affaire de coté. Mon déménagement à lieu le samedi suivant, entre le chargement du camion, la route et le déchargement, je n’ai pas vraiment le temps d’y penser. Le dimanche soir, je me dit que je devrais connecter mon modem Netgear sur la prise, ainsi, je verrai immédiatement lorsque la ligne sera active. Je branche donc le tout 3 jours après la commande. Nous sommes dimanche, il est 18h, le modem démarre… puis se synchronise en quelques secondes. Je me connecte à l’interface du modem, incrédule. Le modem est bel est bien synchronisé, mais ne parvient pas à se connecter. Je vérifie les paramètres utilisés par OVH depuis ma connexion 3G, je switch l’encapsulation du modem de VC vers LLC, reboot le routeur et… magie, ça se connecte ! Une connexion ultérieure à mon manager OVH m’indiquera que la ligne a été crée le 25 janvier, le vendredi donc. C’est ce qu’on appel être réactif !

Le modem est synchronisé à 13 Mbps, soit pile poil le débit indiqué dans 50% des cas, ma ligne est donc « standard », pas de surprises de ce côté la. Je reçoit la notification d’envoi du modem OVH le lundi, colis reçu dans mon point relais le 29 janvier. Je vais le chercher rapidement, puis connecte le modem à la ligne et mon téléphone fixe à cette « box » (en fait un modem-routeur Technicolor TG788vn). Immédiatement, la ligne téléphonique est fonctionnelle. C’est du SIP, mais OVH ne fournit pas les identifiants. Une astuce existe pour les récupérer, pour l’avoir testée, elle fonctionne très bien, mais ça reste du bricolage (les CGV spécifient en fait qu’il est interdit d’utiliser les lignes SIP comprises dans le package d’une autre connexion que la connexion fournie par OVH). Bonne surprise avec ce modem par contre, il synchronise plus haut que mon Netgear, je suis à 16 Mbps, c’est toujours ça de pris !

OVH fournit en réalité 2 lignes SIP dans l’abonnement. Très pratique je trouve, personnellement, j’ai fait apparaître mon nom dans l’annuaire sur l’une des lignes, et celui de ma copine sur l’autre. Le tout arrive sur le même téléphone. Cela permet à un éventuel correspondant de nous trouver tous les 2 dans l’annuaire.

La connexion est très stable, aucunes désynchronisations de constatée à ce jour en 2 mois de fonctionnement. Par ailleurs, le manager OVH offre une transparence totale puisque l’on peut suivre heure par heure (avec des beaux graphiques), le débit montant et descendant de la ligne, la vitesse de synchronisation et le ping. Je regrette par contre l’interface du routeur fourni, plutôt brouillonne et assez peu clair. On arrive cependant à faire tout ce que l’on souhaite une fois la logique du bouzin comprise.

Pour résumer rapidement :

J’ai aimé :

  • La rapidité d’installation (1 jour ouvrable pour créer la ligne, 3-4 jours ouvrables pour recevoir le modem)
  • La transparence à la souscription vis à vis du débit promis ! Tous les autres FAI devraient en prendre de la graine, voir cela devrait devenir une obligation légale à défaut d’action volontaire des FAI !
  • L’IP fixe avec possibilité de configurer le reverse DNS
  • La compatibilité IPv4 et IPv6
  • Le débit de synchronisation élevé avec le modem fourni
  • La possibilité d’avoir un numéro de fax compris dans l’offre (offre ecofax d’OVH). Ça n’est plus très utile ni vital de nos jours, mais ça peut dépanner à quelques occasions.
  • Le VDSL Ready, j’espère pouvoir en profiter lorsque l’ARCEP l’autorisera !

J’ai moins aimé

  • Le fait qu’OVH ne communique pas les identifiants SIP, c’est dommage. Avec comme corollaire l’obligation de passer par leur modem si on ne veux pas violer les CGV.
  • L’interface d’administration du modem fourni, plutôt décevante. Très brouillonne (et pas sécure, par défaut aucun mot de passe pour accéder à l’admin… dommage quand on se destine au monde pro)
  • L’interface de gestion (manager OVH) est parfois un peu lente bien que très complète
  • J’ai trouvé un peu dommage l’engagement de 1 an alors que tous les concurrents sont passés sans engagements. Ceci dit, une fois la fin d’engagement atteint, on ne doit plus rien à OVH en cas de résiliation.
  • La nécessité d’activer manuellement les lignes VoIP, ça n’est pas rédhibitoire, mais pour quelqu’un qui ne touche pas nécessairement à la technique ça n’est pas forcément intuitif.
  • L’absence de bouquet TV. Nous ne sommes pas très consommateurs de télé, donc cela ne devrait pas nous manquer mais ça reste un point à considérer pour ceux qui profitent beaucoup de leur offre TV ADSL.

Bref, pour résumer, je suis pour le moment très content de ce choix !

RaspberryPi : utilisation d’Open2300 pour les stations météo La Crosse Technology

J’ai fait acquisition (enfin, le père Noël m’a gentiment apporté) un Raspberry Pi avec une station météo La Crosse Technology WS2355. Cette station a la particularité d’être connectable à un ordinateur par RS232, l’idée d’utiliser le Raspberry Pi pour conserver un historique des données s’est donc faite naturellement. La station est livrée avec un adaptateur RS232 vers USB Prolific PL2303. Mes premières lectures sur le net semblaient indiquer que cet adaptateur ne fonctionne pas avec le Raspberry Pi, mais après avoir essayé, tout semble fonctionner avec ce dernier. Voici donc la procédure pour installer tout ce beau monde sur le RPi avec la bibliothèque open2300, dédiée à l’accès aux données des stations météo de la gamme WS23xx. L’enregistrement des données se fera dans une base de données MySQL.

Je suppose dans ce tuto que vous avez un serveur MySQL fonctionnel. Pour ma part, j’ai un serveur LNMP sur mon Raspberry (Linux, Nginx, MySQL, PHP), avec PhpMyAdmin d’installé, ce qui va faciliter les choses. Pour ma part, je me connecte sur le Raspberry Pi avec SSH, ce qui permet entre autre le copié-collé de commandes.

Le système connecté sur le RPi

Le système connecté sur le RPi

Téléchargement, compilation et configuration basique de open2300

Première étape, télécharger open2300, le décompresser, puis aller dans le répertoire des sources, ce qui peut se faire en ligne de commande avec :

wget http://heanet.dl.sourceforge.net/project/open2300/open2300/1.10/open2300-1.10.zip
unzip open2300-1.10.zip
cd open2300-1.10

On va compiler open2300, ceci se fait de façon automatique avec la commande make. Cependant, mysql2300, qui permet d’enregistrer les données dans la base de données, se compile séparément. Pour compiler les 2, il faut donc faire :

make
make mysql2300

Il est possible que l’on vous dise après la commande make mysql2300 que le fichier mysql.h n’a pas été trouvé. Il faut donc installer la bonne bibliothèque puis relancer la compilation de mysql2300 :

sudo apt-get install libmysqld-dev
make mysql2300

Branchez ensuite l’adaptateur sur le Raspberry Pi et la station à l’adaptateur.Sur le Raspberry Pi, tapez la commande

lsusb

Vous devriez voir l’adaptateur apparaître s’il est bien reconnu :

Bus 001 Device 004: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port

Vérifiez sous quel nom apparaît l’adaptateur dans le système, avec la commande :

sudo ls -l /dev/tty* | grep dialout

L’adaptateur doit apparaître sous le nom ttyUSBx (ou éventuellement ttySx mais ça serait plus étonnant)  :

crw-rw---T 1 root dialout 5, 3 janv. 1 1970 /dev/ttyprintk
crwxrwxrwt 1 root dialout 188, 0 janv. 13 14:05 /dev/ttyUSB0

Notez sous quel nom il apparaît (en principe ttyUSB0 donc). Il va falloir configurer ensuite open2300. Créez le fichier de configuration en utilisant le fichier open2300-dist.conf comme modèle :

cp open2300-dist.conf open2300.conf

Il faut ensuite éditer ce fichier afin d’indiquer sur quel port la station se trouve. Tapez :

nano open2300.conf

Trouvez la ligne SERIAL_DEVICE et remplacez /dev/ttySO présente par défaut par /dev/ttyUSB0. A ce moment, il est en principe possible de récupérer les données. Pour cela, on va utiliser fetch2300. Toujours dans le répertoire open2300-1.10, tapez :

sudo ./fetch2300

Il est très probable que vous obteniez une erreur « Could not reset », c’est du a une erreur de droit sur l’adaptateur série. Il faut donner tous les droits avec la commande :

sudo chmod a+rwx /dev/ttyUSB0

Vous devriez maintenant obtenir quelque chose du type en réponse à la commande fetch2300 :

pi@raspberrypi ~/open2300-1.10 $ sudo fetch2300
Date 2013-Jan-14
Time 15:45:19
Ti 19.6
Timin 14.4
Timax 20.8
TTimin 12:22
DTimin 2013-01-10
TTimax 15:48
DTimax 2013-01-12
To 81.1
Tomin 81.1
Tomax 81.1
TTomin 00:10
DTomin 2000-00-00
TTomax 00:10
DTomax 2000-00-00
DP 81.1
DPmin 81.1
DPmax 81.1
TDPmin 00:10
DDPmin 2000-00-00
TDPmax 00:10
DDPmax 2000-00-00
RHi 58
RHimin 53
RHimax 68
TRHimin 23:21
DRHimin 2013-01-13
TRHimax 11:41
DRHimax 2013-01-14
RHo 110
RHomin 110
RHomax 110
TRHomin 00:10
DRHomin 2000-00-00
TRHomax 00:10
DRHomax 2000-00-00
WS 51.0
DIRtext N
DIR0 0.0
DIR1 0.0
DIR2 0.0
DIR3 0.0
DIR4 0.0
DIR5 0.0
WC 81.1
WCmin 81.1
WCmax 81.1
TWCmin 00:10
DWCmin 2000-00-00
TWCmax 00:10
DWCmax 2000-00-00
WSmin 0.0
WSmax 0.0
TWSmin 00:00
DWSmin 2001-01-01
TWSmax 00:00
DWSmax 2001-01-01
R1h 0.00
R1hmax 0.00
TR1hmax 15:44
DR1hmax 2013-01-14
R24h 0.00
R24hmax 0.00
TR24hmax 15:00
DR24hmax 2013-01-14
Rtot 0.00
TRtot 17:42
DRtot 2001-01-01
RP 977.100
RPmin 975.100
RPmax 992.500
TRPmin 04:40
DRPmin 2013-01-11
TRPmax 00:00
DRPmax 2001-01-01
Tendency Falling
Forecast Rainy

A noter les valeurs qui semblent étranges chez moi, c’est parce que je n’ai pas encore branché les capteurs extérieurs, on a donc les valeurs par défaut. Cela provoque également une grande lenteur de la récupération des données (enfin, je pense que cela vient de la), chez moi, tous les programmes proposés par open2300 mettent donc environ 4 minutes à retourner leurs données.

Le logo du Raspberry Pi

Le logo du Raspberry Pi

Sauvegarde des données dans MySQL

Nous allons ensuite mettre en place l’historique des données dans MySQL. Il est nécessaire avant de lancer mysql2300 (utilitaire qui lit les données de la station et les enregistre dans MySQL) de créer la base de données et de créer l’utilisateur open2300. La création de la base de données se fait en utilisant le fichier mysql2300.sql. Depuis la sortie de open2300, la syntaxe MySQL a été modifiée. Dans le fichier SQL, la requête de création est la suivante :

CREATE TABLE `weather` (
`timestamp` BIGINT(14) NOT NULL DEFAULT '0',
`rec_date` DATE NOT NULL DEFAULT '0000-00-00',
`rec_time` TIME NOT NULL DEFAULT '00:00:00',
`temp_in` DECIMAL(3,1) NOT NULL DEFAULT '0.0',
`temp_out` DECIMAL(3,1) NOT NULL DEFAULT '0.0',
`dewpoint` DECIMAL(3,1) NOT NULL DEFAULT '0.0',
`rel_hum_in` tinyint(3) NOT NULL DEFAULT '0',
`rel_hum_out` tinyint(3) NOT NULL DEFAULT '0',
`windspeed` DECIMAL(3,1) NOT NULL DEFAULT '0.0',
`wind_angle` DECIMAL(3,1) NOT NULL DEFAULT '0.0',
`wind_direction` CHAR(3) NOT NULL DEFAULT '',
`wind_chill` DECIMAL(3,1) NOT NULL DEFAULT '0.0',
`rain_1h` DECIMAL(3,1) NOT NULL DEFAULT '0.0',
`rain_24h` DECIMAL(3,1) NOT NULL DEFAULT '0.0',
`rain_total` DECIMAL(4,1) NOT NULL DEFAULT '0.0',
`rel_pressure` DECIMAL(4,1) NOT NULL DEFAULT '0.0',
`tendency` VARCHAR(7) NOT NULL DEFAULT '',
`forecast` VARCHAR(6) NOT NULL DEFAULT '',
UNIQUE KEY `timestamp` (`timestamp`)
) TYPE=MyISAM;

Cette requête fait donc une erreur lorsqu’on l’exécute dans MySQL :

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'TYPE=MyISAM' at line 21

Il faut donc remplacer TYPE=MyISAM par ENGINE = MyISAM

CREATE TABLE `weather` (
`timestamp` BIGINT(14) NOT NULL DEFAULT '0',
`rec_date` DATE NOT NULL DEFAULT '0000-00-00',
`rec_time` TIME NOT NULL DEFAULT '00:00:00',
`temp_in` DECIMAL(3,1) NOT NULL DEFAULT '0.0',
`temp_out` DECIMAL(3,1) NOT NULL DEFAULT '0.0',
`dewpoint` DECIMAL(3,1) NOT NULL DEFAULT '0.0',
`rel_hum_in` tinyint(3) NOT NULL DEFAULT '0',
`rel_hum_out` tinyint(3) NOT NULL DEFAULT '0',
`windspeed` DECIMAL(3,1) NOT NULL DEFAULT '0.0',
`wind_angle` DECIMAL(4,1) NOT NULL DEFAULT '0.0',
`wind_direction` CHAR(3) NOT NULL DEFAULT '',
`wind_chill` DECIMAL(3,1) NOT NULL DEFAULT '0.0',
`rain_1h` DECIMAL(5,1) NOT NULL DEFAULT '0.0',
`rain_24h` DECIMAL(5,1) NOT NULL DEFAULT '0.0',
`rain_total` DECIMAL(7,1) NOT NULL DEFAULT '0.0',
`rel_pressure` DECIMAL(5,1) NOT NULL DEFAULT '0.0',
`tendency` VARCHAR(7) NOT NULL DEFAULT '',
`forecast` VARCHAR(6) NOT NULL DEFAULT '',
UNIQUE KEY `timestamp` (`timestamp`)
) ENGINE=MyISAM;

A noter également le rel_pressure qui passe de decimal(4,1) à decimal (5,1), car sinon, on ne peut enregistrer la pression que jusqu’à 999,9 hPa, alors qu’on dépasse fréquemment cette pression (merci à Lecerf qui me l’a signalé dans les commentaires. Il signal aussi de son côté qu’il a passé wind_angle à decimal(4,1)). Pour ma part, j’ai aussi passé le rain_1h, rain_24h à 5,1 (au lieu de 3,1, ce qui limite à 99,9 mm de pluie sur 1 ou 24h), et le rain_total à 7,1 (sinon ça  limite le total à 999,9 mm, chiffre qu’on atteint assez rapidement à peu près partout en France).

Personnellement, j’ai exécuté cette requête directement dans MySQL. Profitez en pour créer l’utilisateur open2300 qui as les droits sur cette base. Le mot de passe par défaut est mysql2300. Soit vous utilisez ces mots de passes et login, soit vous les personalisez, auquel cas il faut indiquer ces paramètres dans le fichier open2300.conf dans la section « >### MYSQL Settings (only used by mysql2300) ».

Lancez la commande mysql2300 en tapant dans le repertoir ou nous avons compilé open2300:

sudo ./mysql2300

Quelques minutes plus tard, les données doivent apparaître dans la base de données si tout est bien configuré. S’il n’y a pas d’erreur, rien n’est retourné par le programme.

Installation de open2300 dans le système

Il faut ensuite installer les différents exécutables dans le système. Cela peut se faire grâce aux commandes suivantes :

sudo make install
sudo cp mysql2300 /usr/local/bin/mysql2300
sudo cp open2300.conf /usr/local/etc/open2300.conf

Les 2 dernières lignes sont nécessaires car mysql2300 n’est pas copié automatiquement par la commande make install et que le fichier de configuration n’est pas non plus copié.

Désormais, on doit pouvoir appeler les différents exécutables de de la suite open2300 depuis n’importe quel dossier du système.

Automatisation de la capture des données

Enfin, il faut mettre en place l’automatisation de la capture des données. Cela se fait avec cron notamment.

Tout d’abord, il est nécessaire de remettre à chaque démarrage les bons droits sur le convertisseur USB vers série car ces droits ne sont pas sauvegarder à l’arrêt. Pour cela, il faut éditer le fichier /etc/rc.local :

sudo nano /etc/rc.local

Rajouter tout en bas du fichier, juste avant exit : sudo chmod a+rwx /dev/ttyUSB0, puis quitter en sauvegardant.

Enfin, il faut automatiser le lancement du programme mysql2300, on le fait avec cron. Editer avec nano le fichier des Cron Tables :

sudo nano /etc/crontab

Ajouter tout en bas du fichier :

*/10 * * * *    pi sudo mysql2300 /usr/local/etc/open2300.conf

Cela provoquera l’appel toutes les 10 minutes du programme mysql2300 sous l’utilisateur pi (il faut changer le nom d’utilisateur si comme moi vous utilisez un autre nom d’utilisateur). Par ailleurs, j’ai rajouté « /usr/local/etc/open2300.conf » après mysql2300 car chez moi, les programmes de la suite open2300 ne parviennent pas à trouver où se situe le fichier de config. Cet argument permet d’indiquer à mysql2300 ou le fichier de configuration se trouve. Enfin, si vous souhaitez changer la périodicité de l’enregistrement des données, il suffit de changer le /10 en /x ou x est le nombre de minutes entre chaque mise à jour.

Pour information, chaque enregistrement prend au maximum 86 octets en base de données. Sur cette base, on a donc les quantités de données produites suivantes en fonction de l’intervalle de temps  :

Périodicité Nombre/h Taille/heure Taille/jour Taille/an
1  min 60 5,04  ko 120,94  ko 43,11  Mo
2  min 30 2,52  ko 60,47  ko 21,55  Mo
5  min 12 1,01  ko 24,19  ko 8,62  Mo
10  min 6 0,50  ko 12,09  ko 4,31  Mo
15  min 4 0,34  ko 8,06  ko 2,87  Mo
20  min 3 0,25  ko 6,05  ko 2,16  Mo
30  min 2 0,17  ko 4,03  ko 1,44  Mo
60  min 1 0,08  ko 2,02  ko 0,72  Mo

 Mise à jour du 10 mars 2013

Je complète cet article après quelques semaines de fonctionnement et suite aux nombreux commentaires laissés par les lecteurs (merci à eux).

Script de lancement

J’ai constaté à plusieurs reprises que l’exécutable « mysql2300 » plantait de façon aléatoire pour une raison indéterminée. La conséquence était que la mise à jour dans la base de données ne se faisait que toutes les 10 minutes au lieu de 5 (une fois sur 2), j’imagine que si je laissais les choses telles quelles, il arriverait un moment ou je n’aurait plus aucune mise à jour. La solution pour que tout rendre dans l’odre ? Tuer le processus « zombifié ». J’ai donc créé un script qui fait ceci, placé chez moi dans /usr/local/etc/open2300.sh :

kill `egrep mysql2300`
mysql2300 /usr/local/etc/open2300.conf

Cela tue le processus mysql2300 (s’il existe encore…) avant de lancer une nouvelle instance.

Il faut modifier en conséquence le crontab, afin de ne plus appeler directement mysql2300 mais le script, sans oublier de supprimer l’appel direct à mysql2300 que nous avions mis précédemment :

*/10 * * * *    pi sudo /usr/local/etc/open2300.sh

Pour que le script puisse s’exécuter, il faut bien sur donner les droits d’exécution avec un petit chmod :

sudo chmod u+x /usr/local/etc/open2300.sh

Se connecter sur le réseau Weather Underground

J’ai ensuite voulu collaborer au site Weather Underground. Un logiciel de la suite open2300, wu2300 permet en théorie de le faire (voir dans les commentaires, il semble que ce soft soit boguée, une solution a été proposée par Thibault). Cependant, cette solution nécessite d’accéder à la station. Le problème est que je fait un relevé toutes les 5 minutes et qu’un relevé prend entre 3 et 4 minutes (je ne sais pas si cette lenteur est normale). Bref, si j’utilisent wu2300, je vais avoir un soucis…

Comme les données sont déjà en base de données, j’ai eu l’idée de ré-exploiter ces données. Je ne suis pas le premier à avoir voulu le faire, voici donc une version du script qui fonctionnera avec l’installation proposée dans ce billet d’open2300 :

#!/bin/bash

date=$(date '+%s')
data=$(mysql -s -u open2300 -pMotDePasseDBOpen2300 -D open2300 << !
SELECT timestamp, rec_date, rec_time, ROUND((temp_out * 9 / 5 + 32), 2) AS temp_outf,
ROUND((dewpoint * 9 / 5 + 32), 2) AS dewpointf, rel_hum_out,
ROUND(windspeed * 2.23693629, 2) AS windspeedmph,
wind_angle,
ROUND(rain_1h / 25.4, 2) AS rain_1hin, ROUND(rain_24h / 25.4, 2) AS rain_24hin,
ROUND(rel_pressure / 33.8638864, 3) AS rel_pressurein
FROM weather ORDER BY timestamp DESC LIMIT 1 ;
!
)
if [ $? -ne 0 ]
then
echo "Erreur accés base MySql meteo !"
exit 1
fi

liste="timestampws rec_date rec_time temp_outf dewpointf rel_hum_out windspeedmph wind_angle rain_1hin rain_24hin rel_pressurein"
echo $data | while read $liste
do
datews=`echo $timestampws | cut -c1-8`
heuresws=`echo $timestampws | cut -c9-10`
minutesws=`echo $timestampws | cut -c11-12`
secondesws=`echo $timestampws | cut -c13-14`
secondesdata=`date +%s -d $datews`
timestamp=$(echo "$secondesdata + $heuresws*3600 + $minutesws*60 + $secondesws" | bc)
diffsecondes=$(( $date - $timestamp ))
#echo "Diff. sec. = $diffsecondes"
if [ $diffsecondes -gt 600 ]
then
echo "Donné Ws2300 plus à jour !"
exit 1
fi

BASEURL_wu="weatherstation.wunderground.com"
PATH_wu="/weatherstation/updateweatherstation.php"
ID_wu="IdStationWU"
PASSWORD_wu="motDePasseWU"
SOFTWARETYPE_wu="open2300%20v1.10"
date_wu=$(date -u "+dateutc=%Y-%m-%d+%H%%3A%M%%3A%S")
url_wu="http://$BASEURL_wu$PATH_wu?ID=$ID_wu&PASSWORD=$PASSWORD_wu&$date_wu&tempf=$temp_outf&dewptf=$dewpointf&humidity=$rel_hum_out&windspeedmph=$windspeedmph&winddir=$wind_angle&rainin=$rain_1hin&dailyrainin=$rain_24hin&baromin=$rel_pressurein&softwaretype=open2300%20v1.10m&action=updateraw"
#echo $url_wu
reponse_wu=$(wget -q -O - "$url_wu")
#echo $reponse_wu
if [ "$reponse_wu" != "success" ]
then
echo "$reponse_wu"
echo "Erreur mise à jour station WS2300 sur Weather UnderGround !"
fi
done

J’ai enregistré le script dans sudo chmod u+x /usr/local/etc/wu2300.sh, il fait bien sur le chmoder également pour le rendre exécutable.

Ensuite, je me content de l’appeler depuis le script open2300.sh, qui devient :

kill `egrep mysql2300`
mysql2300 /usr/local/etc/open2300.conf
/usr/local/etc/wu2300.sh

Il faudra bien sur créer au préalable un compte sur WU, et l’identifiant de la station sur cette page. C’est l’identifiant de la station qu’il faut déclarer comme identifiant (ID_wu) dans le script et non le login utilisé pour se connecter sur le site Weather Underground. Voici le résultat de ma station.

Sauvegarde de la base de données

Je souhaitais sauvegarder la base de données régulièrement. Une fois de plus, on fait un petit script + un cron et ça roule :

On créé un fichier save2300.sh puis on le chmod :

mysqldump -u open2300 open2300 -pMotDePasse --opt > /home/pi/saveDb/open2300dump`date "+%Y%m%d"`.sql

Et on place la règle dans le cron qui va bien.

01 00   * * *   pi sudo /usr/local/etc/save2300.sh

Tous les jours, à minuit 01, on aura une sauvegarde dans le répertoire saveDb un fichier daté de la date du jour de la sauvegarde.

Reste encore à faire pour réaliser une station pleinement exploitable, une solution pour afficher les données archivées. Pour ma part, je suis en train de bidouiller une solution à base de HighCharts, qui permet de faire des graphs très propres.

 

Mise à jour du 14 novembre 2015 :

Thierry a également eu des problèmes de blocages… il a pris le temps d’enquêter et à trouvé les causes et donc les solutions les plus efficaces… Je me permet donc de reproduire ici, directement dans le corps de l’article, ses 2 derniers commentaires
Commentaire du 9 octobre

Bonjour,

Je reviens avec un complément d’info:
Les blocages de liaisons ont été résolus de la façon suivante:
Par cron, je lance un job acq_meteo.sh qui contient ce qui suit:

#!/bin/bash
# Role: Programme maître de lancement des acquisitions:
# Tue le précédent processus s’il pas terminé.
# Lance le nouveau cycle d’acquisitions.
#
#
/usr/local/bin/clear_2300.sh
/usr/local/bin/acq_donn_w2300.sh

le job clear_2300.sh contient:

#!/bin/bash
# Role: Tuer le programme resté en mémoire avant de lancer le processus
# suivant.
#
ps aux | grep acq_donn_w2300.sh | awk{print $2}| xargs kill -9

Et le job acq_donn_w2300.sh est celui qui lance les acquisitions .

Pourquoi ce choix: acq_donn_w2300.sh quand il est lancé est le processus père des acquisitions. Si une des acquisitons reste bloquée, il reste en mémoire.

Quand cron lance l’acquisition suivante, avec clear_2300.sh on regarde d’abord si le processus père acq_donn_w2300.sh de l’acquisiton précédente est toujours présent en mémoire; si oui, on le tue ce qui a pour effet de tuer les processus fils. On peut alors lancer le processus d’acquisition suivant.

Par contre, j’ai toujours des problèmes de perturbations radio. J’envisage de déplacer les capteurs pour les rapprocher et ainsi disposer d’un signal plus fort.

Cordialement.

Et celui du 13 octobre

Bonjour,

Derniers constats et solutions:
Les pertes de liaisons ne sont finalement pas dues à des problèmes de propagation mais au cordon de liaison USB-RS232. Il semble que chez moi ce dernier s’est dégradé au point de tout bloquer.
Il faut quand chercher bien longtemps pour identifier qu’une liaison série avec l’ordinateur (Pi) est la cause du blocage des acquisitions!

Donc, en complément de ce qui est écrit ci-dessus, qui débloque le processus en mémoire du Pi, il s’agit de débloquer la liaison série.
Pour ce faire, j’ai choisi de continuer le processus décrit précédemment (post du 9 octobre 2015) et d’ajouter un script qui:
– Décharge le module pilote de la liaison USB série.
– Réinitialise le port USB concerné
– Recharge le module pilote de la liaison USB série.

La difficulté, c’est qu’il n’existe pas de commande en natif pour réinitialiser un port USB; il a fallu rechercher pour trouver quelque chose qui le fasse.
Finalement, j’ai trouvé un petit programme en C qui le fasse: usbreset.c dont le listing est ci-dessous:

/* usbreset — send a USB port reset to a USB device */
/* Programme de Alan Stern venant du site: */
/* https://marc.info/?l=linux-usb&m=121459435621262&w=2*/
/* ——————————————————————- */
/* Compilation: cc usbreset.c -o usbreset */
/* Utilisation: lsusb pour identifier le port a reinitialiser */
/* on obtient (par exemple): */
/* Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp. */
/* Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub */
/* Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. */
/* Bus 001 Device 004: ID 7392:7811 Edimax Technology Co., Ltd EW-7811 */
/* Un 802.11n W$ */
/* Bus 001 Device 005: ID 067b:2303 Prolific Technology, Inc. PL2303 */
/* Serial Port */
/* Le port qui nous intéresse est celui concernant PL2303 Serial Port */
/* La commande sera: usbreset /dev/bus/usb/001/005 */

#include
#include
#include
#include
#include
#include
int main(int argc, char **argv)
{
const char *filename;
int fd;
int rc;
if (argc != 2) {
fprintf(stderr, « Usage: usbreset device-filename\n »);
return 1;
}
filename = argv[1];
fd = open(filename, O_WRONLY);
if (fd < 0) {
perror("Error opening output file");
return 1;
}
printf("Resetting USB device %s\n", filename);
rc = ioctl(fd, USBDEVFS_RESET, 0);
if (rc < 0) {
perror("Error in ioctl");
return 1;
}
printf("Reset successful\n");

close(fd);
return 0;
}

Une fois compilé, rendre exécutable le binaire (chmod +x usbreset) et le copier dans le répertoire /usr/local/bin
Ecrire ensuite dans /usr/local/bin le script: resetusbserial.sh

#/bin/sh
# Decharger le module usb de la liaison serie
modprobe -rf pl2303

# Reinitialisation de la liaison usb serie
# Pour connaitre quel port USB doit etre reinitialise, utiliser la
# commande lsub, reperer dans le retour de la commande la ligne
# contenant: PL2303 Serial Port et recuperer les valeurs Bus et
# Device pour lancer la commande:
# usbreset /dev/bus/usb/Bus/Device
/usr/local/bin/usbreset /dev/bus/usb/001/005
# Recharger le module
modprobe -a pl2303

Une fois écrit, le rendre exécutable.
Modifier le script acq_meteo.sh décrit dans le précédent message comme suit:

#!/bin/bash
# Role: Programme maitre de lancement des acquisitions:
# Tue le precedent processus s'il pas termine.
# Lance le nouveau cycle d'acquisitions.
# Reinitialiser la liaison serie
#
#
/usr/local/bin/clear_2300.sh
/usr/local/bin/acq_donn_w2300.sh
/usr/local/bin/resetusbserial.sh

Bon, maintenant avec tout ceci j’ai un système à nouveau opérationnel. Que de temps et d’essais pour en arriver là. C’est certainement la rançon d’utiliser du matériel « cheap », mais pour l’instant je dois m’en contenter.

J’espère que tout ceci pourra aider ceux qui voudrons tenter l’aventure.

Linkage Qt sous Visual Studio : libgles_cm.lib

J’ai acquis récemment une nouvelle machine pour le développement. Je fais notamment du développement sous Visual Studio 2008 avec Qt, grâce à l’add-in Qt pour Visual Studio. J’ai donc importé mes projets après avoir réinstallé l’ensemble de mes outils. A la première compilation, l’erreur suivante survient lors de l’étape de l’édition des liens :

LINK : fatal error LNK1181: impossible d'ouvrir le fichier en entrée 'libgles_cm.lib'

Après enquête, la solution est la suivante : sous Visual Studio : menu Projet –> Propriétés du projet –> Propriété de configuration (barre latérale à droite) –> Editeur de liens –> Entrée –> supprimer la bibliothèque problématique (libgles_cm.lib) dans la zone « Dépendances supplémentaires ».

Cette bibliothèque n’était pas présente dans mon projet initial, j’ignore donc pourquoi cette dépendance à été ajoutée de façon automatique et à mon insu… Il s’agit a priori d’une bibliothèque OpenGL. La seule différence entre les deux configuration des machines étant le passage de Qt 4.6.3 à 4.6.4.