Travis Weston, je te hais !!

Je dois bien l’admettre, jusqu’à aujourd’hui, je n’avais rien contre Travis Weston…

En toute sincérité, je ne connaissais même pas ce cher monsieur Weston avant ce soir 00h11 lorsque, ayant changé de thème et souhaitant ajouter un « lire plus » wordpress automatiquement afin que mes articles s’affichent en résumé sur la home, je me suis tourné vers le premier plugin disponible via google : Auto More Tag de ce cher monsieur Weston

Sauf que voila, à trop faire confiance a de totals inconnus, on finit par se faire (passez moi l’expression) lubrifier transversalement le rectum par un néophyte inconscient qui fait absolument n’importe quoi avec son code…

Le plugin en question, non content de toucher à ma base de données en ecriture sans m’avertir de quoique ce soit (sachant qu’il n’avait aucun besoin de faire ça), m’a supprimé tout mes articles en une fois et ne m’a conservé que les 200 premiers caractères de chacun en base…

Pas de sauvegarde de la base faite au préalable par le plugin donc aucun moyen de retour possible…

Fort heureusement j’avais une sauvegarde du blog datant du 05 Mais, que j’ai pu restaurer en 1h30 (parce que 214 article, 4116 commentaires et autres ptites infos annexes c’est pas simple à faire avaler a phpmyadmin en un fois) mais j’ai tout de même perdu tout les articles et commentaires du 5 Mais à aujourd’hui.

Parce qu’il faut bien que je décharge ma haine sur quelqu’un, aujourd’hui monsieur Weston, c’est toi qui vas prendre, aussi j’éspère que tu ne me tiendra pas rigueurs des quelques sobriquets suivants : vile scolopendre !! Mirmillon de petits vers insignifiants !! Suceur de cacahuètes 0%, développeur à la petite semaine, face de truite au soleil et vieux lacet défait, je vomis sur tes pantoufle et mixe ton chat à la petite cuillère.

Evidemment je peux également m’en prendre à moi, pour avoir installé les yeux fermé un plugin sans faire de backup avant par exemple, pour me soulager la vessie (au figuré) sur ce gentil (mais néanmoins inconscient j’insiste) développeur bénévole de travis Weston,  mais je m’aime trop pour ça, aussi je laisse le soin à ceux qui avait un commentaire ou un article en cours de validation (et donc qui sont perdus) de m’insulter copieusement dans les commentaires.

Bien à vous.

Idle

ps: Comment trouvez vous mon nouveau thème très violemment pompé du thème par défaut wordpress ? :D

Raspberry PI ~ 20 : Créer un tableau de bord connecté au net (ou comment augmenter le nombre de GPIO)

 Ce post est le vingtième d’une liste de tutoriels sur le raspberry PI, cliquez ici pour accéder au sommaire ! :D

Yop bande de trous d’nez !! (je m’en lasse pas de celle la !)

Ca fait un moment qu’on a rien bricolé d’inutile concernant le raspberry PI !!

C’est ma faute: je glande sur une thèse aussi useless que chronophage et que personne ne lira (et tant mieux aux vues de son contenu :D ) et puis accessoirement je roupille au soleil (voila pour la petite vie d’idle).

Pour passer le temps je vous propose tout de même un petit exercice de style :

On vas allumer et éteindre des diodes avec le rpi !

« Hé Idle tu nous prendrais pas pour des billes ?! On l’a déjà fait en tuto 6 !!”

C’est complètement vrai !! (c’était pour voir si vous suiviez) mais cette fois ci ce sera un peu différent :)

Nous allons construire un petit « tableau de bord » lumineux qui vas nous avertir de l’état de nos divers serveur, blog, site web, machines connectées au réseau (imprimantes,téléphone,fax etc..) en temps réel ! Chez moi ça donne ça :

image

L’objectif est donc de relier plusieurs diodes au rpi et de créer un système de « ping » (pour que la génération facebook me comprenne : c’est comme un « poke » mais pour les machines :p) régulier qui vas aller interroger certaines ip et allumer les led:

  • En rouge si l’ip ne répond pas
  • En vert si elle répond.

« Mais l’exercice est très simple, nous savons déjà le faire! C’est quoi l’intérêt? »

Hé bien premièrement un collègue m’a un peu taquiné sur le sujet, donc mon intérêt direct et de lui prouver qu’un IdleNaute n’est pas une trompette ! Rire (ok ça vous avance à rien mais j’ai ma fierté merde ^^)

Et deuxièmement ça vas introduire la venue de deux nouveaux éléments électroniques intéressants !

Mais d’abord le petit quart d’heure de honte traditionnel :

(Vous noterez ma toute nouvelle maîtrise de montage vidéo, c’est quasi rien mais chuis super fier de moi :D , quand on regarde la première vidéo de cette série de tuto on se dit que je suis partis de loin)

Vous l’aurez peut être remarqué, nous utilisons ici des LED qui ont la particularité de pouvoir afficher deux couleurs : vert et rouge.

Ce petit composant est assez intéressant en plus d’être très simple à utiliser, 3 pattes :

led

  • La patte du milieu doit être relié a la masse comme pour une LED normale
  • La patte de droite (patte extérieure la plus courte) si elle est alimentée allumera la diode en rouge
  • La patte de gauche(patte extérieure la plus longue) si elle est alimentée allumera la diode en vert
  • Si les deux pattes (gauche et droite) sont alimentées, la diode sera à la fois rouge et vert et donnera une « lueur jaunâtre »

Ce composant est donc très intéressant et enfantin à utiliser, notez qu’il existe aussi des diodes dites RVB qui vous permettront
d’utiliser trois vrais couleurs : vert, rouge et bleu.

Nous nous contentons ici des RV (rouge vert) parce que c’est un peu moins cher, plus simple à utiliser et que ça suffit aux  besoins de l’exercice, nous reparlerons des RVB dans un prochain tuto de toute manière :) .

Mais je digresse !! revenons à nos diodes RV !!

Celles ci sont donc formidouble (doublement formidables) mais ont tout de même quelques inconvénients:

  • Elles sont assez chères (1,03€ les 10, ok c’est pas la ruine mais pour des LED c’est cher)
    Elle ont trois pattes chacune, donc beaucoup de choses à relier quand vous avez 8 LED comme ça à brancher
    Si on compte le nombre de pattes à relier au RPI pour 8 led, ça nous fait 2*8 = 16 GPIO de pris (plus la masse qu’ont relie à toutes les pattes centrales des diodes).

Pour le premier problème, il y a ebay, pour le second : l’huile de coude et pour le troisième : les shift registers !

« Nié ! shift what? »

C’est le second élément nouveau dont je vous parlais (le premier étant la diode RV évidemment).

Pour faire simple, un shift register est un composant électronique tout plein de papattes qui permet de multiplier vos sorties GPIO et ce, quasiment à l’infinis.

74hc595n-dscn3898

Avec le shift register que nous allons utiliser par exemple, nous n’auront besoin que de trois sorties GPIO du rapsberry PI pour simuler les 16 GPIO dont nous allons avoir besoin avec les LED.

Inutile donc de vous spécifier que dans le cadre de notre projet domotique qui pompe pas mal de GPIO, c’est un gros plus !

  • Avantage de notre shift register :
    C’est pas cher
    C’est pas gros
    C’est assez simple d’utilisation
    Ça peut s’additionner pour multiplier le nombre de sorties indéfiniment ou presque(je vous expliquerais)
    Ça ne prends que 3 GPIO max
  • Les inconvénients :
    Ça prend tout de même 3 GPIO !!
    Ça complique légèrement le code (mais c’est pas dramatique)
    Ça ne fonctionne que pour les GPIO en sortie (donc pour les entrées il faudra prendre un autre type de shift register un peu plus complexe)

Assez déblatéré comme un chauve à lunette de la fac ! Il est temps de mettre les patounes dans l’cambouis !!

Le matériel :

  • Notre fidèle raspberry PI
    2 shift registers 74HC595 (je les ai commandé ici pour 3,48 les 20, vu l’utilité yen aura jamais trop)
    8 LED RV (1.03€ les 10 ici)
    Quelques fils, éventuellement une breadboard (planche à trou pour éviter les soudures) pour nous simplifier le travail, et un peu de bon sens

 

Le schéma de branchement

Je tiens à préciser que j’ai honteusement pompé puis mutilé un fabuleux schéma de zem.fr pour l’adapter au rpi et vous l’afficher ci dessous, merci à lui pour ses explications sur le shift register (au passage si vous aimez l’arduino allez visiter le blog il rox du pathé comme on dis chez moi) Sourire.

 

03

 L’explication sur le shift register se trouvent en fin de tuto (je ne veux pas vous embrouillez tout de suite :p, mais j’vous ai prévu un mega dessin z’allez voir ! )

Code et Installation

Vous devez déjà avoir un serveur http (apache ou lighttpd peu importe) et PHP installé (si ce n’est pas le cas suivez le tuto 4)
Vous devez déjà avoir installé la librairie wiring PI (si ce n’est pas le cas suivez le tuto 6 )

    • Récupérez le code PHP ici et placez le dans le répertoire de votre serveur http (/var/www par défaut) ce qui doit vous donner une arborescence comme : /var/www/ping/ping.php
    • Ouvrez le fichier ping.php et ajoutez les IP que vous souhaitez surveiller dans le tableau $servers en début de code, vous pouvez spécifier une IP réseau (ex : 192.168.0.10), une IP web (ex : 55.75.32.203) ou une adresse (ex : http://google.fr)
    • Ajoutez un CRON (tâche planifiée) qui vas exécuter cette page PHP toutes les minutes, pour cela tapez la commande :

sudo crontab -e

                     Et ajoutez la ligne :

*/1 * * * * php /var/www/ping/ping.php

Les diodes devraient se mettre à jour toutes les minutes en fonction des IP configurées, n’hésitez pas à lancer le script manuellement depuis votre navigateur (http://adresse.du.rpi/ping/ping.php) dans le cas ou ça ne fonctionne pas avec le cron :) .

L’explication

La tâche planifiée (le cron) qu’on à mis en place vas exécuter toutes les minutes le fichier php contenant notre code.

Le fichier php vas, interroger chaque IP que nous avons renseignées pour savoir si elles « répondent ».

On part alors du principe qu’une LED vas représenter la réponse d’un IP :

Si l’ip répond:  PHP vas mettre un port GPIO du shift register à 1 qui correspond à la couleur verte de la led liée.

Si l’ip ne répond pas:  PHP vas mettre un port GPIO du shift register à 1 qui correspond à la couleur rouge de la led liée.
   
   
“Tout ça c’est bien beau mais on ne comprends toujours pas comment manipuler un shift register !!”

Tu as raison jeune trublion !! Rire J’ai gardé le meilleur pour la fin !! Tire la langue

Comme c’est un concept (pourtant simple) qui ne cadre pas avec mon cerveau étriqué, j’ai fait un petit dessin pour que mes semblables trépanés du bulbe et moi on se comprenne, mémorisez bien la petite histoire suivante :

02

 

J’espère que vous avez adoré l’histoire (je sort une BD en 2014, je crois que j’ai de l’avenir dans cette branche XD) et que vous n’avez pas trop vomi Sourire.

Outre la qualité affligeante de cette image (sur laquelle j’ai pourtant bien passé 20 minutes) on notera qu’elle représente le fonctionnement exacte du shift register (du moin tel que je l’ai compris ^^), je m’explique :

Le shift register (la table) a 8 GPIO (8 Verres) qui peuvent être à 0 (vide) ou a 1 (plein).

On a pas le droit de toucher aux verres sur la table, pour modifier l’état d’un verre, on ne peux qu’en rajouter un nouveau (le fameux todd) en lui définissant une valeur (vide ou plein).

Sauf qu’en rajoutant Todd le verre, on pousse les autres et le dernier se fait éjecter de la table (die stupid glass ! die !!).

Il vas nous falloir trois “bouton” pour effectuer cette action : un bouton pour remplir ou laisser vide le verre, un bouton pour ajouter le nouveau verre sur la table (et donc pousser les autres) et un dernier bouton pour “valider” la nouvelle configuration de la table Sourire

3 bouton = 3 pattes du shift register branché au raspberry PI, il ne nous en faudra pas plus pour ouvrir/fermer les 8 GPIO du shift register de cette façon Sourire.

Maintenant voyons un ptit schéma simplifié du composant :

01

Si vous êtes comme moi vous allez vous demander en premier quel esprit démoniaque a pu penser que mettre tout les gpio d’un coté SAUF UN était pertinent… faut vraiment être le fil de personne pour imaginer des puces comme ça oO !  M’enfin :) !

Donc à ce stade je ne vous ferait pas l’affront de vous expliquer à quoi correspondent les GPIO, la MASSE et L’ALIM (si vous ne savez pas, retour au tuto 1 Tire la langue).

Les trois boutons dont nous parlions sont :

VALEUR” (en réalité nommé SER) qui vas remplir ou non le nouveau verre.
SUIVANT” (nommé en réalité RCLK) qui vas ajouter le nouveau verre sur la table et pousser les autres
VALIDATEUR (en réalité SRCLK) qui vas prendre en compte la nouvelle configuration Sourire

“Et “CONNECTEUR” alors ? Il sert à quoi?”

Il vas nous permettre de brancher d’autres shift register au premier, ce qui donnera l’équivalent d’un gros shift register de 16 GPIO avec deux shift de 8 par exemple Sourire.

CONNECTEUR devras être branché au VALEUR du shift register ajouté, il est possible de rajouter autant de shift les un sur les autre que vous le souhaitez, évidemment au bout d’un moment vous risquez d’avoir quelques problèmes de lenteur et d’alimentation si vous ne savez pas vous arrêter ^^ (je vais tapisser mes murs avec des shift register et dominer le mmooonde niark niark niark!!!).

“Et les papattes dont tu ne nous à pas parlé ?”

Dans notre contexte,elles sont un peu useless, disons qu’elles ont une fonction utile, mais que prendre un précieux gpio de plus sur le rasp pour ça c’est pas forcement nécessaire,voila le schéma avec les vrai nom des pattes :

74HC595-Shift-Register

 

(ça calme tout de suite hein ? :D )

SRCLR dont nous n’avons pas parlé, peut être passé en High puis low afin de remettre toute les pin du shift registrer à 0 (ce qui peut aussi être fait manuellement avec les 3 pin dont nous disposons déjà, d’ou le “un peu useless”)

OE quand à lui permet d’activer la sortie lorsqu’il est sur la masse (GND) et la désactive lorsqu’il est en High, on le laisse donc toujours branché à la masse.

C’est tout pour aujourd’hui ! Sourire Vous l’aurez compris, le principal intérêt de ce tuto est d’abord la notion de shift register qui vas nous permettre de jouer avec plus de GPIO sans trop d’efforts Tire la langue.

Notez qu’il existe plein de type de shift register, certains ont beaucoup plus de sorties, d’autres peuvent se comporter en entrée et en sortie (relativement pratique) etc etc..

Je vous conseille de vous en trouver un qui soit simultanément en entrée et en sortie et qui puisse se “stacker” à d’autre de ses confrères comme celui que nous avons vu, puis de vous créer une ptite carte à brancher sur le raspberry PI pour multiplier définitivement ses entrées sorties par “x” Sourire

Bien à vous,

Idle

Raspberry PI ~ 19 : Optimisation, trucs & Astuces

 

Ce post est le dix-neuvième d’une liste de tutoriels sur le raspberry PI, cliquez ici pour accéder au sommaire ! :D

Amis de l’électronique, passez votre chemin, nous ne parlerons cette fois ci que de pure informatique, et pas de haut niveau en plus Tire la langue, cela dit ça peux intéresser plus d’un idlenaute donc je vous conseille de gratter un peu cet article quitte à vous taper une lecture en diagonale de ce véritable « pavé du dimanche ».

Je me suis rendu compte que j’ai oublié de préciser pleins de trucs et astuces “génériques” applicables au raspberry parce que ça me paraissait évident, mais au fil des commentaires et des mails qui m’ont été adressés je me suis dit que ça valait peut être la peine de faire un ptit billet pour éclaircir quelques points Sourire

(et puis ça me laisse un peu de temps pour bidouiller d’autres prototypes).

Les points abordés :

  1. Accéder à la console du RPI sans écran/clavier branché à celui ci
  2. Déporter le bureau virtuel du raspberry PI sur votre ordinateur (toujours sans écran)
  3. Optimiser le serveur http en remplaçant Apache2 par lighttpd
  4. Transformer le raspberry PI en seedbox (serveur multimédia avec client torrent intégré, le tout accessible sur le réseau et stocké sur un disque dur externe si il vous plait)
  5. Quelques manip pour personnaliser un peu la tronche du raspberry PI (nom, message d’arrivée etc…)

Accéder à la console du raspberry PI sans écran

Depuis le début des tuto, vous aurez peut être constaté que j’utilise uniquement le mode console et non le bureau graphique, en effet je n’ai pas d’écran pour le raspberry et j’y accède depuis mon ordinateur portable ce qui me permet de trimballer le RPI et d’y accéder depuis n’importe quel PC sans trainer un écran 19 pouces, un clavier, et une souris derrière moi Rire.

Ceci est possible grâce à la communication SSH, pour faire court et grossier : votre raspberry pi comprend un serveur nommé : SSH, auquel vous pouvez vous connecter depuis un client SSH depuis n’importe quel PC, une fois connecté, vous aurez accès au terminal comme si vous étiez sur le rapsberry PI

image

Pour vous connecter a cette console, il vous suffit de télécharger et d’installer le programme gratuit Putty, puis de rentrer l’ip locale de votre raspberry PI et cliquer sur “Open”

image

Pour obtenir l’ip réseaux du raspberry PI, vous pouvez regarder sur le panel de votre box (les pc qui y sont connecté), ou brancher temporairement un écran au raspberry pi et taper la commande ifconfig, l’ip suis le libellé “inet addr”

image

Notez que cette IP peux changer (bien que votre box essaye généralement de conserver des ip “favorites” par machines), vous pouvez donc la fixer une bonne fois pour toute avec la manip suivante qui permet de passer d’une ip dite “dynamique” à une ip “statique” :

 

Tapez dans la console :

sudo nano /etc/network/interfaces

Et remplacez

iface eth0 inet dhcp

par

iface eth0 inet static
    address 192.168.1.x
    netmask 255.255.255.0
    network 192.168.1.0
    broadcast 192.168.1.255
    gateway 192.168.1.1

Il vous faudra remplacer le libellé de “adress” par votre ip réseaux actuelle ainsi que

netmask : Vous pouvez le trouver dans la valeur “Mask” du ifconfig

broadcast : Vous pouvez le trouver dans la valeur “Bcast” du ifconfig

gateway : C’est l’ip de votre routeur/box, vous pouvez la trouver dans le panel admin de votre box sous le libellé (serveur DHCP le plus souvent)

Enregistrez et redémarrez, votre ip sera fixe et toujours accessible depuis Putty.

Attention !! Notez bien que lorsque vous fixez cette ip, elle ne peux plus s’adapter dynamiquement à un autre réseau, aussi si vous trimballez votre rpi autre part, pensez à remettre l’ip en dynamique.

Déporter le bureau virtuel du raspberry PI sur votre ordinateur (toujours sans écran)

Si vous n’aimez pas trop la ligne de commande ou que vous souhaitez faire une manip sur le bureau virtuel du raspberry pi sans avoir d’écran, vous pouvez installer un serveur dit “VNC” qui permet de déporter l’affichage du raspberry Pi, sur un autre pc, vous avez donc un écran dans un autre ^^ :

image

Il existe de nombreux serveurs VNC disponibles, mais le moins contraignant à installer est tightvncserver.

Pour l’installer, tapez la ligne de commande

sudo apt-get install tightvncserver

Il vous faudra alors lancer le serveur avec la commande

tightvncserver

Et ce à chaque fois que vous voudrez l’utiliser, vous pouvez bien entendu vous débrouiller pour lancer cette commande au démarrage via un service ou un cron ou autre…

Au premier lancement il vas vous demander un mot de passe pour se connecter au bureau distant, si vous n’êtes pas trop dingue, vous mettrez le même que celui de votre compte raspberry PI Sourire

Lorsqu’il demande si vous voulez de la lecture seule, répondez n (non)

Would you like to enter a view-only password (y/n)?

Le serveur est lancé et configuré :

image

 

Notez que le serveur est lancé par défaut sur le port “2” qu’il faudra retenir, ainsi que l’adresse ip de votre raspberry (cf partie connexion à la ligne de commande)

Il vous faut maintenant un client de connexion VNC sur la machine ou vous souhaitez déporter l’affichage du raspberry PI, realVNC est gratuit, simple, performant et dispo pour linux, mac , et windows: http://www.realvnc.com/download/viewer/

installez et lancez realVnc puis entrez l’adresse ip réseau de votre rapsberry PI, suivis de votre port (par défaut 2) les deux séparés par “:”

image

Et cliquez sur “connect”

nb : de mémoire, un warning vas vous avertir que la connexion n’est pas sécurisée, cliquez sur le bouton continue (à moins que ça vous froisse que ca ne soit pas sécurisé évidemment Tire la langue, chez vous ça ne change pas grand chose, mais évitez de vous connecter depuis un lieu public ou du boulot)

le client vous demande alors le mot de passe que vous avez donné au serveur VNC lors de son installation :

image

Vous arrivez ensuite sur votre bureau distant et pouvez interagir avec comme vous le souhaitez Sourire

 

Optimiser le serveur http en remplaçant apache par lighthttpd

On a vu dans le tuto ~ 04 : Configurer en serveur comment mettre en place un serveur dit “http” pouvant héberger des sites web sur le rapsberry PI.

Nous avions choisis le serveur Apache qui et le plus populaire, mais aussi le plus vieux et le plus lourd de ce qui se fait en ce moment.

Apache fait beaucoup d’entrées fichiers ce qui peut à long terme abimer la carte SD de votre raspberry PI, il est donc plus intéressant de se tourner vers des serveurs plus léger comme Nginx ou lighttpd

Les deux sont très rapides, légers et peu gourmands en ressources, et n’en déplaisent aux fanatiques de l’un ou de l’autre : ils sont relativement équivalent.

Parce qu’il faut faire un choix, et parce qu’il s’est avéré moins chiant à installer, j’ai choisis lighttpd * les pro-nginx vous pouvez huer *.

lighttpd à surtout un gros avantage pour moi : il est beaucoup plus simple de le relier à PHP que nginx (c’est du vécu, j’ai fait 4/5 tutos sur nginx, aucun n’était d’accord avec l’autre, et certains parlaient même d’installer lighttpd en premier puis de le désinstaller afin d’avoir les prérequis pour nginx… bref)

Donc si vous avez apache, commencez par le désinstaller correctement sinon il fera interférence avec lighttpd par la suite. Attention cependant apache peut être très chiant a désinstaller, le mieux reste encore de repartir d’un raspian vierge si vous le pouvez, sinon je vous laisse vous amuser comme je l’ai fait à tester tout plein de manip pour vous débarasser de l’outrecuidant correctement.

Installez ensuite lighttpd

sudo apt-get install lighttpd

Puis les pré-requis pour avoir php5 er le relier a lighhtpd

sudo apt-get install php5-common php5-cgi php5
sudo lighty-enable-mod fastcgi-php

Redémarrez le serveur http

sudo service lighttpd force-reload

A ce moment la si vous avez des erreurs types “port 80 busy” un truc du style, c’est que vous avez mal désinstallé apache et qu’il tourne encore, ou qu’un autre serveur http est déjà en place.

Et enfin réattribuez les bons droits sur les bons dossiers pour que lighttpd puisse faire son boulot

sudo chown www-data:www-data /var/www
sudo usermod -a -G www-data pi

Si tout s’est bien passé vous devriez pouvoir vous connecter via un navigateur à l’ip de votre rapsberry PI et voir la page d’accueil par défaut de lighttpd

image

 

Pour ce qui est de la base de données, je vous conseille également de désinstaller MySQL (si vous n’avez installé aucune appli qui tourne avec évidemment) et de le remplacer par SQLite qui est un peu moins gourmand et épargnera votre raspberry PI également :

sudo apt-get install sqlite3
sudo apt-get install libsqlite3-0 libsqlite3-dev
sudo apt-get install php5-sqlite

Utiliser le raspberry PI comme une seedbox

Une seedbox est un serveur dédié au téléchargement illégal de fichiers vidéos/audio/multimédia etc…

Il est très simple de transformer le raspberry pi en seedbox afin de pouvoir faire les choses suivantes :

  • Avoir un client torrent disponible via une interface web sécurisée
  • Pouvoir lancer des torrents à télécharger de n’importe où et en partager non stop tant que le raspberry est allumé (donc tout le temps vu le peu que ça consomme)
  • Enregistrer automatiquement les films (légaux bien entendu) téléchargés sur un disque dur externe (bah oui votre carte SD risque de faire la gueule sinon)
  • Accéder aux films de la seedbox depuis n’importe quel PC de votre réseau

    On vas commencer par monter un disque dur (le plus gros possible) de manière permanente sur le raspberry PI, puis installer un serveur de partage de fichiers afin de pouvoir rendre accessibles nos fichiers depuis tous les pc de notre réseau, puis on installera un client de torrent permettant le téléchargement et l’envois de fichiers multimédia, enfin on configurera tout ça pour lier les éléments ensembles.

  • Monter le disque dur: des bidouilles de commandes, aucun programme
  • Installer le serveur de partage de fichiers : on choisira Samba, qui permet le partage avec des pc linux, windows et mac (mais pas sans douleur)
  • Installer un client torrent : on choisira Transmission, le célèbre client torrent natif d’Ubuntu, à mon sens le meilleur qui existe, simple, ultra fonctionnel, beau, peut être utilisé en ligne de commande, en fenêtre depuis le bureau ou carrément via une interface web (ce qui nous intéresse le plus).

Prêt à manger du beurre par les trous de nez? Envoyons le Pathé !

Premièrement on update parce que ça ne fait jamais de mal avant une installation :

sudo apt-get update

puis on installe un paquet qui nous sera indispensable par la suite :

sudo apt-get install ntfs-3g

Puis, on trouve un disque dur assez balèze (genre 2To) et on le branche au port USB du raspberry PI. La rapidité de transmission est un plus, mais ce qu’il vous faut c’est surtout :

  • Un disque dur grosse capacité

  • Un disque dur avec une alim externe (le rpi étant très mauvais avec les périphériques alimentés par USB).

  • Un disque dur formaté en NTFS (vous pouvez le mettre en FAT mais il vous faudra modifier quelques paramètres de ce tuto)

  • Placez au moins un fichier test.txt sur le disque dur pour faire des tests d’ouverture de disque plus loin dans le tuto

on vas créer une sorte de “lecteur permanent” dans le dossier “media” sur lequel on pointera notre client de torrents.

sudo mkdir -p /media/disque2To

On configure les droits pour que le client torrent puisse écrire dans ce lecteur

sudo chmod -R 777 /media/disque2To

Attendez quelques secondes le temps que le rpi détecte le disque dur puis tapez

sudo blkid

Une liste de périphériques s’affichent, retenez le champs UUID pour le périphérique ayant le LABEL qui correspond à votre disque dur (mon disque dur 2To s’appelle IdleBox)

image

Maintenant qu’on connais l’identifiant unique de notre disque dur, on vas spécifier au rpi de lier à chaques démarrage cette id au dossier qu’on à créé spécialement pour lui (/media/disque2To).

On édite pour ça le fichier /etc/fstab

sudo nano /etc/fstab

et on y ajoute la ligne

UUID=F21843B31843759F       /media/disque2To ntfs-3g   defaults       0       2

Evidemment l’UUID doit être modifié en fonction de votre UUID à vous.

image

Puis on sauvegarde et on reboot

sudo reboot

A ce stade la normalement le contenu de votre disque dur est monté et est disponible via le dossier /media/disque2To, vous pouvez vérifier qu’il contient bien votre fichier test.txt avec la commande.

cd /media/disque2To && ls

image

(oui moi j’ai un peu plus de bordel qu’un simple fichier test.txt mais le principe reste la Tire la langue)

Cette phase est très délicate, le système ou le disque dur font souvent la sourde oreille, vérifiez donc bien que vous avez vos fichiers dans /media/disque2To sans quoi la suite du tuto ne fonctionnera pas.

En cas d’erreur vérifiez bien :

  • Que votre disque dur est bien connecté au port usb du raspberry PI, démarré et alimenté lors du démarrage du raspberry PI
  • Que votre disque dur est bien formaté au format NTFS
  • Que votre disque dur est bien alimenté par une source autre que le raspberry PI
  • Que l’UUID entrée dans le /etc/fstab correspond bien à l’UUID de votre disque dur

Si l’erreur persiste, essayez de trouver l’erreur au démarrage du rapsberry PI, généralement il vous indique d’ou viens la couille avec un gros “FAILED” rouge.

Bien !! Le plus dur est fait !! Rire 

Maintenant on vas faire en sorte que le disque dur (accessible depuis le dossier /media/disque2To si vous avez bien suivis) soit également disponible en partage, c’est à dire que les autres PC de votre réseau local puissent y accéder !

Pour cela, il vous faudra installer un serveur de partage sur votre rapsberry PI, le plus connus (et le seul que je connais d’ailleurs) est samba !

On installe donc samba (et avec le sourire siouplé !)

sudo apt-get install samba

Il est possible qu’il soit déjà installé, chez moi il l’était mais c’est peut être parce que j’avais fait la manip précédemment, dans tous les cas la commande ne vous fera pas de mal Sourire.

maintenant que samba est installé il vas falloir partager le dossier /media/disque2To sur le réseau.

Pour ça, on commence par editer le fichier de configuration de samba :

sudo nano /etc/samba/smb.conf

Cherchez la ligne

# security = user

et placez en dessous :

security = share

image

De cette manière vous ouvrez un peu votre serveur de partage aux utilisateurs autres que les utilisateurs interne du rpi

Puis cherchez le bloc [print$] …

Et placez en dessous le bloc :

[disque2To]
   comment = Disque multimedia
   path = /media/disque2To
   browseable = yes
   guest ok = yes
   writeable = yes
   public = yes
   create mask = 0777
   directory mask = 0777

image

Enfin redémarrez samba

sudo service samba restart

Et remettez un ptit coup de permission sur votre dossier partagé pour être sûr.

chmod 777 –R /media/disque2To

Vous devriez maintenant voir le partage depuis vos autres PC, par exemple depuis mon windows Seven :

image

Vérifiez bien que vous avez la permission d’entrer et d’écrire dans le disque.

nb : Il est possible que ce sale bataw de windows vous demande un login/mot de passe alors que nous avons tout fait pour justement ne rien avoir à mettre.

il vous faudra alors taper:

login : WORKGROUP\votre login windows

mdp : votre mot de passe windows

Cochez la case ‘se souvenir’ histoire de ne plus être emmerdé par la suite.

Bien !! Maintenant que nous avons un disque dur monté et partagé sur le réseau !! Il vas falloir le remplir avec vos films de vacances légalement téléchargés via un logiciel de torrent !

Le must pour moi en matière de logiciel de torrent c’est transmission : léger, simple, ergonomique, dispose d’une jolie interface web et facilement configurable

sudo apt-get install transmission-daemon

Transmission vas utiliser deux dossier sur votre disque dur, un dossier pour stocker les fichiers temporaires de téléchargements, et un dossier pour stocker les fichiers finaux, on vas donc créer ces deux dossiers

sudo mkdir /media/disque2To/downloaded /media/disque2To/pending

downloaded : dossier qui contiendra vos films de vacances terminés
pending : dossier qui contiendra vos films de vacances en cours de téléchargement

On place ensuite l’utilisateur “pi” dans le groupe de transmission

sudo usermod -a -G debian-transmission pi

Et on place les deux dossiers précédemment créé dans ce groupe aussi (c’est la fête du slip pour gérer les permissions)

chgrp debian-transmission /media/disque2To/downloaded /media/disque2To/pending

Enfin (et c’est la dernière manip concernant les permissions) on donne un droit 770 sur les deux dossiers

chmod -R 770 /media/disque2To/downloaded /media/disque2To/pending

On édite le fichier de configuration de transmission pour lui filer nos deux dossiers et régler quelques autres configs rigolotes :

sudo nano /etc/transmission-daemon/settings.json

Trouvez les lignes qui correspondent à ça :

« download-dir »: » /un/chemin/pourri » ,
« incomplete-dir »: » /un/autre/chemin/pourri » ,
« incomplete-dir-enabled »: false,
« rpc-password »: « un mot de passe crypté super long type {EBIBEIUBSIBSIBSIUB… »,
« rpc-username »: »transmission »,
« rpc-whitelist « : « 127.0.0.1″,

et remplissez les avec les bonnes valeurs

« download-dir »: » /media/disque2To/downloaded » ,
« incomplete-dir »: » /media/disque2To/pending » ,
« incomplete-dir-enabled »: true,
« rpc-password »: « mon mot de passe »,
« rpc-username »: »mon pseudo »,
« rpc-whitelist « : « 127.0.0.1,*.*.*.* »,

Evidemment les lignes ne sont pas toutes collées les unes sous les autres, il vous faudra les chercher Sourire (je vous avais pas dit que je vous vendrais du bonheur ?)

nb : Notez que j’ai placé la clause *.*.*.* dans rpc-whitelist, celle ci indique que toutes les adresses ip ont le droit de se connecter à votre seedbox (si elles connaissent le user/mot de passe bien entendu), ceci vous permet de vous connecter de partout dans le monde à votre seedbox (il faudra penser à débloquer le port 9091 de votre routeur/box si vous souhaitez y acceder de l’extérieur quand même mais bon…) si vous voulez que transmission n’accepte que les ip réseau locale, vous pouvez mettre 192.168.*.* à la place.

Enregistrez le bouzin et relancez le service

sudo service transmission-daemon reload

Votre Seedbox est fin prête !!

Pour télécharger de nouveaux films de vacances via des fichiers torrents vous n’avez plus qu’a vous connecter via un navigateur à votre seedbox à l’adresse :

http://ip.du.raspberry.pi:9091

ip.du.raspberry.pi : L’ip réseau de votre raspberry PI (ou son ip WEb si vous y accédez depuis un autre endroit que votre réseau locale)

9091: port par défaut de transmission (vous pouvez le modifier dans le setting.json, moi j’ai mis 666 pour le fun Tire la langue)

A la connexion transmission vous demandera les login et mot de passe entré dans le settings.json:

image

Et paf vous atterrissez sur votre client torrent :

Vos fichiers une fois téléchargés apparaitront dans le dossier downloaded de votre disque dur, lui même disponible en partagé depuis tout votre réseau locale.

test

Merci à Tom Canac qui à généreusement partagé ses pistes avec moi afin que nous arrivions à quelque chose de concret sur ce point Sourire

 

[Bonus] Personnaliser un peu le raspberry PI

 

Changer le nom du raspberry PI

Par défaut le rpi s’appelle raspberrypi ce qui est laid nous en conviendront on à donc cette ligne qui précède toutes nos commande:

pi@raspberrypi: ~#

Pour changer ce nom il faut éditer les fichiers /etc/hostname et /etc/hosts, dans ces deux fichiers, remplacez le nom raspberrypi par le nom que vous souhaitez, puis sauvegardez, fermez et redémarrez le raspberry PI, j’ai appelé le mien pib0x ‘(je sais… mais j’avais pas d’idées, ne me jugez pas T_T)

image

Mettre un message d’accueil

Lors de l’ouverture d’une console sur votre rpi, vous avez un message par défaut de toute beauté qui s’affiche :

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.

Type ‘startx’ to launch a graphical session

On vas changer ça par quelque chose d’un peu plus yorkmouth !!

Pour cela il faut éditer le fichier /etc/motd et remplacer le message par ce que vous souhaitez puis sauvegarder et rebooter (encore et toujours)!! Personnellement je vous conseille un message en ascii ça claque toujours

image

Pas besoin de vous prendre la tête des jours à faire l’ascii vous même, des services existent pour ça, suivez le guide

Je repasserais certainement sur ce tuto pour ajouter de petites astuces de temps en temps, aussi pensez à venir lorgner quand vous avez une minute Sourire

Bien à vous mes bichons baltais!

Idle

 

Le bordel de l’info #26

 

Salut bande de pneus low cost non équilibrés ! Vous en avez d’la chance !!  l’heure ou je suis juste complément bourré et ou je tape frénétiquement n’importe quoi sur ce blog, vous êtes peinards, dans votre lapin nain ou sous un sumo allemand à vous payer un 52em demi de bordel de l’info (ben oui… 26*2…laissez tomber T_T)

  1. Une nouvelle console qui accepte les anciennes cartouches NES, SNES, Genesis, Famicon et game boy advance…Rire
  2. LoremPixel permet l’inclusion facile d’images d’exemples à la taille que vous souhaitez, en couleur ou en noir et blanc, et respectant un certain style, avec le simple code <img src= »http://lorempixel.com/400/200″ />, partiques pour les maquettes Sourire (via le warrior)
  3. Un court métrage sympa qui donne envie de balancer son androphone par la fenêtre, notez que la série black mirror (3 épisodes seulement, casting, époque et histoire toujours différente mais thème orienté bienfait/méfaits de la technologie sur l’homme) sur le même thème est à voir d’urgence si vous aimez ce genre d’anticipations technologiques dramatique.
  4. Mais à quand le PQ Watch histoire qu’on en finisse une fois pour toute avec les derniers moment d’intimité qu’on partageait avec la réalité Rire !! J’ai parfois l’impression que la technologie n’évolue pas dans le bon sens…
  5. Ubuntu for mobile, Jolla, Tizen, Firefox Os, BlackBerry 10, les Os pour mobiles se multiplient en 2014, faites votre choix, j’ai déjà fait le mien Tire la langue
  6. “Le Google qui me passionnait était une société high tech qui poussait ses employés à innover. Le Google que j’ai quitté était une société publicitaire concentrée uniquement sur l’aspect financier.”  – James Whittaker (Développeur Google)
  7. Tiens en parlant de google, un petit article sur ses raisons économiques de vouloir tuer le RSS, continuez comme ça les gars, ça me permet d’écouler plus facilement mon petit agrégateur RSS gratuit Leed Tire la langue
  8. Seb souhaite envoyer ses fonds de placard sur github, j’ai envie de dire +1 : et si on partageait tous un grand placard pour ce genre de projets ? Tire la langue
  9. Les utilisateurs anglais de Greader se tournent vers “la meilleur alternative” à celui ci : Feedly… donc la meilleur alternative à un service qui les a foutus dans la merde est … un autre service T_T, pire ! Ce service demande pour se connecter (au moment ou je vous écrit c’est toujours vrai ) : un compte google !! Je ne sais plus si je dois rire ou pleurer devant la bêtise et le manque de jugeote des Mouternautes (mix moutons/internautes, j’improvise), c’est à vous faire perdre définitivement l’espoir d’un futur web totalement libre.
  10. Pirater un distributeur de canettes avec un mètre ruban, fallait y penser mais franchement ça n’a pas l’air simple ^^, perso je préfère construire mon robot pour faire le boulot Sourire
  11. J’ignorais qu’il était si simple de modifier un mot de passe d’un utilisateur sans le connaitre sous Windows… et après les pros Windows viennent me bassiner avec le linux qui serait trop permissif, jvous jure Tire la langue (bon je suis assez neutre avec les Os (sauf un avis bien tranché sur macOs), mais on trouve toujours des gens qui veulent quand même lancer le débat).
  12. Hé hé hé, super sympa le site sur les papertoys, c’est fou le nombre de couilloneries qu’on peut faire avec une simple feuille A4 et une imprimante correcte (via korben)
  13. Un aquarium vivant en ASCII (via seb)
  14. Si quelqu’un sait ou je peux trouver un autocollant comme ça je suis preneur Rire (via seb, again)

  15. Plus ils sont fluides, plus ils me font flipper…heureusement qu’il a un nom ridicule ce robot :D
  16. Il y a vraiment de belles choses à faire avec un arduino, un peu de carton et beaucoup de patience.
  17. Un petit utilitaire de plus pour cracker le mot de passe d’un .rar en bruteforce ou par dictionnaire
  18. Vous avez loupé les gags d’avril de la blogosphères ? Pas de soucis, le warrior du dimanche vous à fait un ptit récap !! J’ai loupé le premier avril cette année, je me rattraperais l’an prochain promis Sourire
  19. Le hollandais volant ouvre un blog dédié à ses articles scientifiques, ça promet :)
  20. Un petit éditeur de texte WYSIWYG adapté pour l’excellent librairie CSS/JS Boostrap, à tester rapidement :)
  21. Medoo : un framework PHP d’un seul fichier permettant de gérer des bases MySQL, MSSQL, PostgreSQL, SQLite et plus en toute simplicité :)
  22. Ça fait quelques mois que seb nous en rebat les oreilles, le warrior s’y est mis aussi j’ai donc pris le temps de parcourir le tumblr : les joies du code… et c’est simplement: une tuerie, bien qu’il faille être dév à mon sens pour apprécier ces gifs comme il se doit

Tiens d’ailleurs en parlant de Seb !! Bon anniversaire vieux machin !! (ok j’ai 3 jours de retard mais pour moi c’est une performance), tous mes veux de bonheur et de longévité à ce dinosaure du web qui à inspiré, dépatouillé voir sauvé les âmes de milliers d’internautes et de blogueurs à travers le web (moi compris évidemment) Sourire et sans lequel ce blog ne serait resté qu’un bloc note personnel :)

seb

Petite initiation aux moteurs de templates : Quoi, Pourquoi et Comment

Voila plusieurs années que je me promets de toucher un mot au sujet des moteurs de Template et de leurs applications, je profite de votre air éveillé et taquin de ce début de soirée pour placer le sujet (ce sera chose faite).

Une grossière présentation

Pour faire simple, un moteur de Template est une technique de programmation populaire qui permet de séparer distinctement l’interface graphique du reste de votre application.

Notez que par interface graphique j’entends toute la partie visuelle, la GUI, l’Interface, l’IHM, le skin, le visage, la moumoute, appelez ça comme vous voulez, ça n’en restera pas moins la partie qui constitue la communication visuelle avec l’utilisateur on ne parle donc pas uniquement du design mais aussi de la structure, de l’ergonomie, des animations etc…

Typiquement, un Template de projet web contiendra tous les fichiers html (structure),css et images (style/design) et JavaScript (animations).

Ainsi dans un projet web par exemple, le moteur de Template vous permettra d’avoir un fichier purement html/css/javascript d’un coté, et un fichier purement php/asp/java/… de l’autre vous dissociez donc d’un coté la vue (l’aspect visuel html/css etc..) des contrôleurs (le traitement pur des données via php/asp/java/ etc..)

Pourquoi?

Pourquoi utiliser cette technique me direz vous ? Ça peut de prime abord paraitre contraignant, inutile de dupliquer des fichiers pour rien.

  • Si il est vrai que la gestion des Template multiplie légèrement le nombres de fichiers de votre application, ce n’est rien face aux avantages résultants :
  • Vous pouvez changer d’interface graphique pour votre application sans avoir à retoucher au code et en un clic
  • Si vous travaillez en équipe, les designers/intégrateurs peuvent travailler en toute sécurité sur les vues (design,ergonomie) pendant que vous bossez sur les contrôleurs (traitement)
  • Vos utilisateurs peuvent proposer/échanger/personnaliser des interfaces graphiques pour votre application sans connaitre autre chose que du simple html et sans modifier à tord et à travers le noyau de votre application
  • Votre structure projet devient plus carrée, le code plus simple à distinguer, voir plus élégant,
  • vous retrouverez plus vite les endroits ou modifier ce qui concerne la présentation, ou le traitement
  • Si vous utilisez le même moteur Template pour plusieurs projets, vous pourrez alors tous les rassembler quand bon vous semblera sous une interface unique et ce, très simplement

Vous l’aurez compris de très nombreux avantages s’offre à vous avec ce modèle de développement.

Mais, ça fonctionne comment au juste ?

Eh bien typiquement ça dépend un peu du moteur de Template utilisé, mais généralement ça reste très simple :

Au lieu de créer une page index.php contenant tout votre code, vous allez placer votre code php dans une page index.php et votre html dans une page index.html
Puis à la fin du php vous signalerez que vous souhaitez lier cette page de traitement à la vue index.html :) .

Attends, attends !! Mais il va forcement y avoir un problème là : comment je vais faire pour afficher mes variables dans l’index.html?

Encore une fois, cela dépendra du moteur de Template utilisé, mais en gros, les variables seront toutes disponibles dans l’index.html via des balises « spéciales ».

Oulah, ça m’a l’air compliqué ton truc !!

Meuhnaaann ! Tu vas voir ça gère la cacahuète, le meilleur reste encore de mettre la main à la pâte pour comprendre les enjeux et les gains du Template, alors allons y gaiement bande de moules ! :D

Alors quel moteur de template choisir ?

En réalité je ne vais pas être très objectif là-dessus ^^, bien que le plus populaire (du fait de son grand âge surtout) soit le moteur de template Smarty, nous utiliseront ici le moteur RainTPL.

image

Vas falloir t’expliquer Idle, tu t’en sortiras pas comme ça :D !!

Bon okay okay, vous l’aurez voulu, zallez vous taper une autre liste pour la peine :

  • RainTpl est constitué de … 1 fichier, quand smarty en possède plus d’une centaine, RainTpl fout donc moins le bordel dans votre architecture
  • RainTpl est plus léger (34ko tout mouillé contre 1,01Mo pour smarty)
  • RainTpl est plus simple à utiliser, il suffit de connaitre 4 balises pour se débrouiller dans 99.9% des cas, la où smarty demande de constantes recherches dans la doc et sur les forums
  • RainTpl est plus performant/rapide et moins gourmand (une petite courbe  vaut un long discours)
  • RainTpl est fichtrement stable : en deux ans d’utilisation sur plus de 30 projets perso et pro, je n’ai jamais eu le moindre soucis lié à son utilisation
  • RainTpl est plus logique, la ou smarty s’amuse à renommer ses vues avec une extension pourrie type « .tpl » non reconnue par la plupart des colorateurs syntaxiques, voir non ouvert par certains IDE, rainTPL conserve ces bon vieux .html, les balises sont aussi plus courtes et plus suggestives, j’aime quand on ne réinvente pas la roue pour rien
  • RainTPL possède une doc claire simple et concise la ou smarty vous propose 12 pages et 60 clics entre vous et le bonheur (le tout sur un wiki qui ressemble au papier peint de ma grand mère)
  • RainTpl est évidemment gratuit (smarty aussi hein !! :p) et sous licence GNU/GPL

Je ne pense pas me tromper en affirmant qu’il va vite devenir la référence du Template, pour moi c’est déjà le cas, et je ne suis pas le seul à le clamer haut et fort.

(voila pour la p’tite explication :p)

Notez que parmi les développeurs, il y à quelques aigris qui critiquent vivement les systèmes de templates, si on ôte à ceux-ci ceux qui cachent leur ignorance derrière le dédain, on
peux retrouver quelques raisons fallacieuses type :

‘Moi je n’utilise pas de Template parce que c’est moins rapide que du php pur et dur’.

… (j’ai sortis mes petits point désapprobateurs, je vais me fâcher tout rouge !!)

C’est complètement faux, en effet RainTPL à l’instar de 99% des moteurs de Template utilise un système de cache en générant les php finaux sous formes de fichiers php générés, donc au final c’est du php simple, sauf que c’est totalement invisible pour nous (et tant mieux)

Bon arrêtons la papote et mettons les mains dans l’cambouis !

Téléchargeons rainTpl sur le site officiel : http://www.raintpl.com/Download/

On va créer un ptit projet de test avec une page index.php pour le traitement, et une page index.html pour la vue.

Dans l’archive de rainTPL, seul le fichier inc/rain.tpl.class.php nous intéresse, c’est la librairie en elle même, le reste sont des fioritures (on jette Tire la langue), dans mon exemple je met donc ce fichier que j’ai renommé rainTpl.php au même niveau que l’index.php et l’index.html

Voila le code de chacune:

index.php

image

index.html

image

(oui j’ai mis un peu de style, le time new roman me file des crises d’épilepsie)

Si pour une raison vraiment étrange votre copier coller ne fonctionne pas sur les screenshots (:D), vous pouvez trouver les sources directe ICI (bande de fainéants).

Toujours est il que vous obtenez un, ô combien magnifique, premier Template fonctionnel :

image

A retenir

Vous noterez donc deux fonctions (méthodes) importantes pour la partie traitement(index.php) :

assign(nom variable, valeur variable) : permet de déclarer une variable qui sera utilisable dans la vue, on peut lui fournir n’importe quoi : un objet, un tableau, un entier, une chaine, un furet, il en fera de l’or…

draw(nom de la vue) : permet de définir la vue qui sera attachée au traitement, de cette manière on peut par exemple attacher une vue erreur en cas d’erreur ou la vue index quand tout se passe bien (ok ok je vous embrouille, dites vous juste que ça permet de donner le html à afficher).

Coté vue (index.html) les balises “spéciales” dont je vous parlais et qui sont à connaitre sont au nombre de 4 :

{$variable} : affiche une variable (comme si vous aviez fait un ‘echo $variable’) 

{if= »condition »}{/if} : affiche selon une condition (équivalent de if(condition){consequence} en php)

{loop= »array »}{/loop} : permet de parcourir un tableau (équivalent de foreach($array){ } en php)

{include= »template »} : permet d’inclure une vue dans une autre (pratique pour inclure les header et footer que l’on retrouve partout dans l’application).

Vous ave évidemment  d’autres balises à dispo avec un ptit exemple pour chacune dans la doc.   

Quelques conseils pour avoir une structure correcte

RainTPL est assez permissif par rapport à la structure de votre projet, il suffit de lui indiquer des chemins, ce qui bon et mauvais à la fois car si il autorise une plus grande souplesse et n’interfère pas avec l’architecture projet, il n’incite pas non plus à instaurer une bonne structure.

Dans ce domaine, je pense que personne n’a le droit d’imposer une structure en argüant comme je l’ai maintes fois entendu que “c’est ce qu’il faut faire », mais puisque qu’ici c’est moi le patron (Tire la langue) je vais au moins me permettre de vous proposer une structure de projet avec rainTPL, que j’utilise pour Leed, DropCenter et bien d’autres projets pro/perso :

image

J’ai profité de la structure pour vous mettre deux templates que vous pouvez switcher en modifiant la constante DEFAULT_THEME dans le fichier configuration.php quelques exemple de lecture de variables, de tableau d’objets, d’utilisation de condition etc.. avec RainTPL
Vous pouvez télécharger cette structure et les exemples RainTPL qu’elle contient ICI.

On a bien deux Templates (légèrement fait à l’arrache) pour les mêmes traitements / control de données, il est donc possible d’en switcher sans toucher à quoique ce soit d’autre que la constante DEFAULT_THEME.

imageimage

 

Et sinon, dois je utiliser les templates tout le temps et pour n’importe quel projet ?

Bien sûr que non, il est évident qu’un petit script de deux pages contenant chacune trois lignes n’a pas réellement besoin d’un gestionnaire de Template,
cela dit pour les moyen et gros projets je vous encourage vivement a partir d’instinct sur un moteur Template.

Si vous n’en voyez pas l’utilité sur le moment,vous la verrez certainement par la suite, votre projet sera toujours plus simple à maintenir, évoluer, fusionner, embellir par la suite.

De plus cela vous obligera à tendre vers l’architecture MVC donc la redoutable efficacité n’est plus à prouver (bien qu’il y ai aussi des contestataires à ce sujet, mais bon on trouve de tous les avis sur le web il faut faire avec) et rainTPL est si discret que ça n’en alourdira pas votre projet pour autant.

Je sais que le sujet est entendu pour la plupart des développeurs de ce blog, mais si je suis parvenu à convertir un nouveau lecteur au “templarisme” et surtout à l’excellent RainTPL, je m’en satisferais !

Templatement votre,

Idle

Installez votre synchronisateur de contacts chez vous avec Baikal

Lorsque l’on devient un véritable technophile bassement matérialiste, on se met à accumuler tout un tas d’engins électroniques : Téléphone portable, Tablette, Pc, Mac, montres, lunettes ou strings panthères connectés etc…

Qu’on toutes ces machines en communs ? Les contacts!

Qu’il s’agisse des adresse email sur votre messagerie de pc portable/fixe/mac/ultra portable… ou encore des numéro de téléphones sur votre androïde phone/iphone/windows phone, tablettes etc… ils y en à partout c’est un besoin fondamental pour les appli de partage d’information avec un tiers (toutes les appli quoi ^^).

Ca devient alors très vite contraignant d’organiser tout ce beau monde, de synchroniser et de mettre à jour tous les appareils sans doublons, crises de nerfs, pertes d’infos, de temps et de cheveux.

C’est pourquoi il peut être intéressant d’utiliser un synchronisateur de contacts tels qu’en propose google, apple, windows, à ceci près que nous allons l’installer sur notre propre serveur/hébergeur gratuitement, ceci nous permettra :

  • De nous désolidariser de services qui peuvent s’arrêter à tout moment sans vous demander votre avis (cf Google Reader)
  • D’avoir gratuitement un espace illimité pour stocker vos contacts
  • De bénéficier des avantages du “cloud” (terme fourre tout on est d’accord mais ça vous parle non ?) sans en subir les inconvénients: données sujettes au patriot act, revendues aux publicitaires, consultés par des personnes peu scrupuleuses, toucher rectal quotidien etc…

Oui MAIS !! Aujourd’hui les solutions de synchronisation de contacts type cardDav (format standard de carte de contact)/calDav (format standard de calendrier) gratuites, propres, stables et installables sur votre serveur/hébergement ça ne coure pas les rues.

Evidemment il y a des solutions type owncloud mais encore peu matures donc relativement boguées/peu stables, auxquelles je ne fais pas tout à fait confiance de mon côté.

En revanche un utilisateur m’a récemment fait découvrir Baikal qui, bien qu’il ne soit pas très vieux et utilise la même librairie qu’owncloud (sabreDAV, une excellente librairie pour gérer les standard calDav, webDav, calDav au passage), il se contente de faire le minimum (pas de gestion de fichiers) et il le fait donc très bien Sourire.

Baikal permet de gérer simplement la synchronisation, la centralisation et le stockage de vos contacts (ainsi que de votre calendrier si vous le souhaitez) et ce à l’aide d’un format standard et très accessible quel que soit votre appareil/système d’exploitation.

image

Le script reste relativement simple, il peux gérer plusieurs utilisateurs ayant chacun plusieurs carnet d’adresses / calendrier et propose une petite dashboard de statistiques.

image

Ce script sous licence GPL a l’avantage d’avoir été créé avec la librairie js/css boostrap qui rend l’application très jolies et responsive (adaptable tout écran tablettes, smartphone, pc etc…).

Il est installable avec une base de donnée SQL lite (simple fichier) ou avec une base MySQL au choix.

Il est à noter tout de même deux gros points faibles pour l’application :

  1. A actuelle, impossible de gérer vos contact directement depuis l’interface web, il faudra passer par un client (votre carnet d’adresse de portable, votre cardnet de messagerie pc ou autre) pour ajouter/supprimer/modifier les contacts, sans être bloquant c’est un peu déstabilisant de ne pas avoir de visuel direct des contacts sur l’interface web.
    La liaison du script à d’autres machine n’est pas forcement très claire (nous allons  tenter d’y remédier partiellement dans ce tuto Tire la langue).

Voyons un peu comment installer tout ça Sourire.

Installation

image

  • Décompressez l’archive téléchargée dans le répertoire web de votre hébergement ou de votre serveur (/var/www par défaut avec apache).
  • Créez un fichier vide nommé “ENABLE_INSTALL” (en majuscule, sans extension) dans le dossier “Specific” de baikal afin d’autoriser le script à s’installer.
  • image
  • Accédez à l’adresse :
  • http://ip.de.votre.serveur/baikal-flat (si vous avez renommé le dossier de baikal, changez “baikal-flat” par ce que vous avez mis).
  • Remplissez le formulaire avec les infos que vous souhaitez
  •  image
  • Server Time Zone : le fuseau horaire de votre serveur (Europe/Paris pour les français)
    Enable CalDav : Cochez cette case pour utiliser le synchronisateur de calendrier
  • Enable CardDav : Cochez cette case pour utiliser le synchronisateur de contacts
  • Admin password : mot de passe administrateur pour accéder à l’interface web baikal
  • Admin password confirmation : Confirmation du mot de passe administrateur pour accéder à l’interface web baikal
  • Enable Web Interface: activer l’interface web (recommandé)
  • Web interface autolock : Cochez cette case si vous souhaitez interdire les accès admin à l’interface et l’autoriser uniquement lorsqu’un fichier “ENABLE_ADMIN” se trouve dans le dossier Spécific (peux être utile si vous ne vous identifiez pas souvent en tant qu’admin, mais mieux vaut laisser décoché au cas ou Tire la langue)
  • Cliquez sur suivant, vous arrivez à la configuration de la base de donnée Sourire
  • image
  • Si vous souhaitez utiliser SQlite, vous pouvez directement cliquer sur suivant, si vous préférez MySQL, cochez la case « ”Use MySQL”, un formulaire tout rouge vas alors apparaitre, remplissez le avec les infos de connexion à votre base MySQL

image

L’installation de Baïkal est maintenant terminée, notez qu’on vous demandera peut être à un moment de donner des permissions sur certaines dossiers de l’application, il vous faudra donc utiliser la commande “chmod –R 777 /chemin/vers/le/dossier/baikal” si vous êtes sur un serveur, ou passer par un programme de gestion de droits ftp comme fileZilla si vous êtes sur un hébergement simple sans accès à la ligne de commande.

image

Création d’un utilisateur

Afin de créer des carnets d’adresse, il vas falloir en premier lieu créer un utilisateur lié à ce carnet (car baikal est multi utilisateurs), on clique donc sur “start using baikal”, on s’identifie avec le mot de passe Admin qu’on à rentré à l’utilisation et on arrive sur l’interface

image

Un clic sur l’onglet “users and ressources” nous amène sur la page de gestions des utilisateurs et des carnets/calendriers, on clic sur le bouton  image Pour ajouter un nouvel utilisateur :

image

retenez bien le “username” et le “password” que vous tapez, ce sont les identifiants qui vous servirons par la suite à connecter vos machines aux carnets d’adresses et calendriers créés.

nb : Gardez le username le plus simple possible, évitez les majuscules, accents, caractères spéciaux etc…

Création d’un carnet d’adresses/calendrier pour l’utilisateur

Une fois l’utilisateur créé, une barre image apparait, cliquez sur l’un ou sur l’autre pour créer un calendrier ou un carnet d’adresses pour l’utilisateur.

Par défaut vous avez déjà un carnet d’adresse et un calendrier créées pour cet utilisateurs, ils ont tout deux pour identifiants le nom “default” dont nous nous servirons plus tard, si vous créez de nouveaux carnets/calendriers, retenez bien l’identifiants que vous leurs attribuez.

Utilisation avec la messagerie thunderbird

Je ne peux pas vous donner l’installation pour toutes les messageries existantes, mais je vous donne un exemple avec (selon moi) la meilleur d’entre toute : thunderbird Sourire, si vous n’avez pas cette messagerie installez la, il vous la faut, le processus est sensiblement identique aussi je vous conseille de suivre cette partie.

Synchroniser les contacts

Thunderbird ne gère pas les formats cardDav par défaut, il vas donc falloir télécharger et installer l’extension gratuit “SOGo Connector” sur votre Thunderbird, le redémarrer puis cliquer sur l’onglet “outils—>carnet d’adresses” et dans la fenêtre qui s’ouvre “Fichier—>nouveau—>carnet d’adresse distant”

image

Puis taper l’adresse de votre carnet d’adresse, dans mon cas j’ai gardé celui par défaut :

image

C’est cette adresse qui est très mal spécifié dans la doc et dans le panel de baikal, aussi faites très attentions à l’adresse et aux spécifications suivantes :

http://127.0.0.1/baikal-flat/card.php/addressbooks/idleman/default/

http://127.0.0.1/baikal-flat/  Adresse vers votre panel web baikal

card.php/addressbooks/: chemin obligatoire vers les carnets d’adresses (ne pas changer)

idleman/: Nom de l’utilisateur créé précédemment (le fameux username)

default/: Identifiant du carnet d’adresse ciblé (ou à gardé celui par défaut dont l’identifiant était default).

nb: le “/” en fin d’adresse est obligatoire.

A la prochaine synchro, thunderbird vous demandera de spécifier le username et le password de l’utilisateur que vous avez créé afin de le conserver en mémoire

Tout les contacts que vous mettrez dans ce carnet d’adresse thunderbird seront alors automatiquement synchronisés avec le carnet baikal et réciproquement.

Pour être sûr que ça fonctionne, créez un contact dans le carnet thunderbird, puis retournez voir sur le panel web baikal si vous avez un ou plusieurs contacts, c’est que ça à fonctionné :

image

Notez bien que la synchro peux mettre un peu de temps, vous pouvez faire clic droit sur le carnet d’adresse et “synchroniser” pour forcer la synchro.

Synchroniser le calendrier

Encore une fois, Thunderbird ne possède pas de calendrier natifs, il faut donc ajouter le plugin “lightning” qui vas ajouter un calendrier à votre messagerie, redémarrez votre thunderbird, cliquez sur l’onglet agenda puis dans les agendas de gauche clic droit—>Nouvel agenda—>Sur le Réseau

image

Sélectionnez “CalDav” et rentrez l’adresse de votre calendrier baikal

image

Cette adresse aussi est très mal spécifié dans la doc et dans le panel de baikal, aussi faites très attentions à l’adresse et aux spécifications suivantes :

http://127.0.0.1/baikal-flat/cal.php/calendars/idleman/default/

http://127.0.0.1/baikal-flat/ Adresse vers votre panel web baikal

cal.php/calendars/: chemin obligatoire vers les calendriers (ne pas changer)

idleman/: Nom de l’utilisateur créé précédemment (le fameux username)

default/: Identifiant du calendrier ciblé (ou à gardé celui par défaut dont l’identifiant était default).

nb: le “/” en fin d’adresse est obligatoire.

Vous pouvez cocher “prise en charge du mode hors connexion” historie d’avoir accès a vos évènements même lorsque la connexion internet est coupée.

A la prochaine synchro, thunderbird vous demandera de spécifier le username et le password de l’utilisateur que vous avez créé afin de le conserver en mémoire

Utilisation sur un téléphone android

Sur un téléphone android le mieux est encore d’installer l’application “CardDAV-Sync free beta” qui en dépit de son nom inquiétant fonctionne plutôt bien Sourire

Rentrez la même adresse que pour les contacts de thunderbird  http://127.0.0.1/baikal-flat/card.php/addressbooks/idleman/default/ (avec les changements qui s’imposent)

http://127.0.0.1/baikal-flat/ Adresse vers votre panel web baikal

card.php/addressbooks/: chemin obligatoire vers les carnets d’adresses (ne pas changer)

idleman/: Nom de l’utilisateur créé précédemment (le fameux username)

default/: Identifiant du carnet d’adresse ciblé (ou à gardé celui par défaut dont l’identifiant était default).

Pensez à décocher la case “Use SSL” (à moins que votre baikal ne soit installé avec un https) et à spécifier le username et le password de l’utilisateur que vous avez créé

Utilisation sur un apple, iphone…

Toutes les infos disponibles ici : https://github.com/jeromeschneider/Baikal/blob/master/INSTALL.md#5—connecting-your-caldav–carddav-client-to-bakal

nb : sur Mac OS X 10.8 et Calendar (ex-iCal) l’adresse pour le CalDAV  il semble qu’il faille dans certains cas utiliser « principals » au lieu de « calendars ».
Soit en adresse serveur : toto.com
Server path : /baikal/cal.php/principals/toto

Utilisation avec la messagerie web RoundCube

Pour synchroniser vos contacts avec roundcube vous devrez installer le plugin Roundcube-CardDAV qui fonctionne très bien :)

  1. Téléchargez le plugin et décompressez le dans le répertoire « plugins » de votre roundcube, renommez le dossier carddav pour plus de simplicité
  2. Renommez le fichier plugins/carddav/config.inc.php.dist en plugins/carddav/config.inc.php
  3. Dans la même base MySQL que roundcube, exécutez le sql contenu dans le fichier plugins/carddav/SQL/mysql.sql
  4. Activez le plugin en ajoutant ‘carddav’ dans le tableau « $rcmail_config['plugins'] » du fichier /config/main.inc.php (L379 par la)

Le plugin est maintenant correctement installé, loguez vous sur roundcube puis allez dans l’onglet « Préférences » puis le menu de gauche « Carddav » et renseignez les infos du formulaire:CaptureLabel : Nom du carnet d’adresse affiché sur rouncube (mettez ce que vous voulez)

Serveur : Adresse du carnet baikal

Cette adresse aussi est très mal spécifié dans la doc et dans le panel de baikal, aussi faites très attentions à l’adresse et aux spécifications suivantes :

http://127.0.0.1/baikal-flat/card.php/addressbooks/idleman/default/

http://127.0.0.1/baikal-flat/ Adresse vers votre panel web baikal

card.php/addressbooks/: chemin obligatoire vers les calendriers (ne pas changer)

idleman/: Nom de l’utilisateur créé précédemment (le fameux username)

default/: Identifiant du calendrier ciblé (ou à gardé celui par défaut dont l’identifiant était default).

nb: le “/” en fin d’adresse est obligatoire.

Utilisateur : login de l’utilisateur lié à ce carnet sous baikal

Mot de passe : mot de passe de l’utilisateur lié à ce carnet sous baikal

Cliquez sur enregistrer, attendez quelques secondes puis allez dans vos carnet d’adresse : it works !!

Capture

Notez que si vous souhaitez que ça synchronise régulierement, il vous faudra mettre en place un CRON (tâche planifiée) qui exécutera le php /chemin/vers/roundcube/plugins/carddav/cronjob/synchronize.php

Pour ceci lancez une console sur votre serveur web puis tapez :

crontab -e

et ajoutez la ligne

0 4 * * * php /var/www/roundcube/plugins/carddav/cronjob/synchronize.php

Au fichier de crontab ouvert, en remplaçant la partie en gras pa le chemin de votre rouncube puis sauvegardez.

Notez que le cron que je propose synchronise une fois par jour à 4h00 du mat (peut de chance que vous soyez en train de modifier vos contacts à cette heure la, si vous avez « pécho des 06 en boites » normalement c’était quelques heures plus tôt, à 4h00 vous êtes en train de vomir votre vodka sur un parcmètre donc tout vas bien).

Notez que vous devez avoir le paquet php5-cli pour pouvoir executer le php en ligne de commande comme ça, si ça ne marche pas pensez donc à l’installer via la commande sudo apt-get install php5-cli

Si vous souhaitez participer

Je vous encourage à participer au code, aux retours de bugs etc du projet via sa page github : https://github.com/jeromeschneider/Baikal

 

Une alternative qui à l’air franchement sympa

Je tiens à mettre valeur le commentaire de nono sur une alternative qui à l’air également super convaincante : Radical :

Je me permets de vous faire découvrir Radicale qui est l’équivalent de Baikal, mais en plus simple et plus robuste.

Plus simple parce qu’il n’y a même pas d’interface web (pas franchement utile pour une appli de type web-service).

Plus robuste parce qu’elle n’utilise pas de base de données (sqlite), mais uniquement un stockage en fichier plat, ce qui est très logique vu que les données à stocker ne sont que faiblement relationnelles.

Et enfin, cerise sur le gateau, Radical permet de créer des collections (de contacts ou d’évènement) publiques (donc accessibles à tous), privées (donc accessibles uniquement aux personnes authentifiées, ou personnelles (donc accessibles uniquement à par son propriétaire).

Cela permet donc de partager (sommairement) des contacts ou des évènements.

Et comment on crée une collection ? En accédant à son adresse, tout simplement.

Radicale, le plus KISS des caldav/carddav server…

 - nono

Revue de projet : du Rss, du Cloud, et du libre…

 Je crois que le moment est parfaitement choisis pour faire une petite revu des projets en cours, de leurs avancement et de leurs avenirs Sourire

Vous ne m’en voudrez pas de commencer par Leed (hé hé hé)…

Leed

image

Leed est un agrégateur de flux RSS qui se positionne comme une alternative gratuite et libre à Google reader.

Google reader ayant annoncé sa fermeture récemment, le petit Leed qui se cantonnait jusqu’ici à 5000 utilisateurs pourrait prendre un peu de “galon” en agissant comme remplaçant de Google reader (à plus modeste échelle évidemment) et vous m’en voyez comblé

De plus deux nouveaux développeurs ont rejoint l’équipe (jusqu’ici constitué de moi même :D ) j’ai nommé sbgodin et alef burzmali tout deux excellents dans leurs domaines de compétences et près à contribuer bénévolement au ptit Leed Sourire.

Une fois l’import/export stabilisé (qui reste le gros point faible de l’application) nous pensons nous concentrer sur la mise en place d’un système de plugins permettant aux utilisateurs motivés d’ajouter des fonctionnalités au programme et de les proposer à la communauté sans alourdir le noyau de leed qui compte rester rapide, léger et simple.

Le projet est maintenant sur git, pour le moment j’ai un peu de mal à me séparer de svn et à m’acclimater au décentralisé ultra contributeur tueur de caniche qu’est git (et son comparse github) il est donc possible que je ne sois pas très réactif sur certaines maj/request etc.. mais j’y travaille Tire la langue.

 

DropCenter

image

DropCenter est un cloud (web uniquement) de gestion de fichier gratuit et installable sur votre propre serveur, l’envois de fichier peut se faire directement avec un glisser déposer des fichiers de votre bureau vers votre navigateurs (cette fonctionnalité nécessite un navigateurs récents Firefox, chrome, opera ou IE10 feront l’affaire).

Après quelques mois d’inactivité, j’ai tout doucement reprise le dropcenter avec un nouveau système d’upload, la possibilité de rendre public/privé un fichier, la sécurisation des accès depuis la barre d’adresse, quelques modifications graphiques et la stabilisation de nombreux bugs, je vous invite à le tester et à me faire vos retours biens qu’il ne soit pas encore complètement stabilisé (encore beaucoup de problèmes sur les fichiers avec accents)

Une fois le logiciel stabilisé, j’aimerais beaucoup développer un peu plus dropNews, un client bureautique additionnel au dropcenter qui permet simplement à l’heure actuelle d(être notifié lors d’un changement sur le dropcenter, le but serait de faire de ce client un synchronisateur dossier locale/dropCenter, un peu à la façon de dropbox ou de owncloud.

En revanche j’aimerais ne pas suivre le chemin d’owncloud qui (selon mon opinion) veux tout faire à la fois et ne fait rien de bien, donc je me cantonnerais aux fichiers uniquement, je prendrais mon temps et je ne sortirais quelque chose que lorsque les bugs restants seront vraiment mineurs (ça c’était pour la petit pichenette contre owncloud ^^).

 

CodeZ

image

CodeZ est tout simplement un gestionnaire de snippets gratuit, un snippet étant un petit bout de code réutilisable que l’on souhaite conserver quelque part :)

Le projet se présente sous la forme d’un client bureautique portable (installable sur une clé usb) vous permettant de gérer, d’ajouter et de retrouver vos snippets simplement, a ce client bureautique s’ajoute un site we sur lequel vous pouvez partager vos snippets avec la communuaté depuis le client.

Akaiken, Yosko et moi même qui étions sur le projet n’avons plus de temps a lui consacrer aussi avons nous décidé de libérer l’intégralité du code (client et site web) et de le mettre sur github en espérant que quelqu’un sera motivé pour reprendre le projet ^^.

Notez que nous avions pas mal avancé, le client était fonctionnel mais ne pouvais pas encore partager les snippets sur le site, quant au site, tout le contexte avait été créé a deux trois requêtes près c’était bon ^^, bref si vous avez un élan de motivation (et du temps) n’hésitez pas à vous lancer.

 

BlazeKiss

image

BlazeKiss est un wiki gratuit dérivé sur projet Wikiss lui même dérivé de tigerWiki, lui même basé sur le principe KISS Rire

Je me suis contenté de reprendre cette perle qu’était wikiss et de lui refait un peu la façade avec un thème chopé a l’arrache sur le net (qui s’adapte aux mobile si il vous plait) et comme j’était assez fier du résultat je le propose aussi sur ma page projet.

Pas de gros changements sur le projet récemment a ceci près que j’ai réactivé la fonction de sommaire automatique, je me suis dit qu’un ptit paragraphe à ce sujet ne pouvais pas faire de mal Sourire

 

Domotique Raspberry PI / Ydle?

Depuis quelques temps je fait des ptits montages électroniques à moins de 5€ pour faire de la domotique low cost, ça aboutis généralement à une lampe pilotée par radio dont le signal est envoyé par un raspberry pi, lui même commandé par une inteface vocale, bref on bidouille et on se marre bien, vous avez été très nombreux à me suivre la dessus (24 000 par mois en fait) et j’en suis super content, moi qui pensais que ce genre de conneries ne faisait tripper que moi je me sent moins seul Sourire.

Avec Yaug (un lecteur qui à bien pigé le principe Tire la langue) on s’est dit qu’on pourrait peut être inventer une fasse marque la dessus, on en profiterais pour mettre au propre les recherche du blog qui sont un peu brouillones, en améliorant le protocole, l’interface web (ah oui j’avais oublié de dire que la lampe peut assi être pilotée via le web), l’interface vocale nommée YURI, les circuits imprimés etc…

On à déjà le logo c’est un bon début non ?!! Rire

http://projet.idleman.fr/ydle/data/ydleLogo.png

On vous tiendras au courant si on arrive à quelque chose d’aboutis, pour le moment on bosse sur ce wiki qu’on remplis au fur et à mesure, et qui sait, demain nous seront peut être capable de vous envoyer des kits tout fait à monter pour créer votre domotique à pas cher :)

 

C’est tout pour cette revue, j’ai d’autres projet, mais j’ai mal au doigts et j’ai envie de pisser (quelle classe idle…T_T) . Tous mes autres projets un peu aboutis sont disponibles sur ma page projet je vous invite donc à jeter un œil de ce côté :) ! Bon surf bande de moules !!

Raspberry PI ~ 18 : Construire une sonde de température radio pour 7€

Ce post est le dix huitième d’une liste de tutoriels sur le raspberry PI, cliquez ici pour accéder au sommaire ! :D

Faire du on/off c’est bien ! Mais contrôler sa maison en disposant d’indicateurs c’est mieux !

Aussi allons nous voir, pour changer, comment construire un petit capteur qui vas transmettre une information de température par radio au raspberry PI.

2013-02-24 12.11.39

Si comme moi, vous vous interrogez sur l’intérêt de connaitre la température d’une pièce en temps réel, je trouve personnellement qu’il n’y en à aucun, en revanche cela peut être très utile pour le raspberry pi, qui pourra par exemple en dessous d’une certaine température, enclencher les radiateurs, on appel ça des scénarios (on en reparlera dans un prochaine tuto) pour le moment, contentons nous de récupérer l’informations via une interface web et via notre interface vocale YURI.

Avant tout, le traditionnel quart d’heure de honte en vidéo :

(Le charisme d’une truite avec un double menton, un acteur né je vous dis !!)

Le principe

La puce Atmega328 (petit carré noir avec tout plein de pattes) vas aller interroger toutes les 3sc le capteur DS18B20 (plus petit carré noir à trois pattes, en forme de transistor) afin de récupérer la température de la pièce, puis vas envoyer, à travers l’émetteur RF 433 mhz (petit circuit à 3 pattes), l’information au raspberry PI

Le raspberry PI, qui écoute en permanence les ondes radio à travers son récepteur RF 433 mhz, vas détecter le signal, récupérer la température et la donner à une page PHP qui vas la stocker dans un petit fichier texte (au format json), accessible depuis l’interface web et dpeuis yuri.

Sur le serveur web du rapsberry PI, l’interface vas aller récupérer en ajax toutes les 3 secondes la valeur du fichier texte pour chaque sondes radio et l’afficher sur la page.

Le matériel

Notez que si un lien est mort (ce qui arrive souvent car ebay bouge beaucoup) reprenez les mots clé de ces liens dans le moteur de recherche ebay, cherchez avec les filtres « achat immédiat », « Dans le monde entier » et tri par « prix+livraison les moins cher »

Pour comprendre plus en détail ce qu’est l’arduino, l’atmega etc.. se référer au tuto 15, je pars du principe que vous avez lu et compris le tuto 15 histoire de ne pas me répéter 1000 fois Tire la langue

Programmer la puce Atmega

On vas faire exactement le même montage que dans le tuto 15, je re détaille la manip pour les flemmard du fond (oui oui ! vous au fond à côté du radiateur la !!) :

Téléchargez et installez l’IDE(environnement de développement Arduino) sur le site d’arduino.

Voila le schéma permettant de programmer une puce atmega à partir d’une carte arduino (nb : la résistance est visiblement plus adéquate si elle est  de 10 kohms et non de 1.27 ohms comme indiqué sur le schéma)

http://domotique.idleman.fr/data/priseMaison/progatmega.jpg

Notez que sur le schéma j’utilise ce qu’on appelle une « BreadBoard », c’est une plaque en plastique qui permet de tester des circuits sans avoir à souder juste en plantant des fils dans des trous, les trous sont reliés de manière horizontale entre eux, sauf pour les lignes bleu et rouges (utilisée pour l’alimentation) qui eux sont verticaux.

Je vous conseille vivement l’achat d’une breadboard, ça ne coûte rien et c’est quasi indispensable pour tester les circuits dans de bonnes conditions.

  • Les fil rx et tx sont ceux qui envoie le programme à l’Atmega
  • La puce Atmega originellement implantée sur l’Ardunio doit être dé-clipsée sinon c’est elle qui sera programmée
  • L’ensemble du circuit doit être alimenté en 5V, ici on utilise l’alimentation de l’arduino (conseillé)
  • L’atmega doit être alimentée (5V + GND) des deux cotés aux bornes indiquées
  • Le pin Reset de l’Atmega doit être relié au reset de l’arduino comme indiqué sur le schéma
  • Le pin Reset de l’Atmega être relié au 5V via une résistance 1.27Ω (brun rouge violet gris rouge) comme indiqué sur le schéma

Une fois le circuit branché et alimenté vous pourrez lancer l’IDE arduino et programmer la puce comme si elle se trouvait sur la carte arduino.

Enfin sachez que vous pouvez tout aussi bien programmer la puce en la laissant simplement branchée sur la carte arduino et la décrocher juste après, notre montage est à l’heure actuelle inutilement compliqué, mais dans le futur nous en auront besoin.

Code de l’Atmega

Comme la sonde ds18b20est particulièrement chiant à utiliser, nous installerons 2 librairies pour nous simplifier la vie (dans l’absolu, il serait peut être plus intéressant d’utiliser une sonde analogique ou une thermistance, bien plus facile à questionner (retour de 0.1 v par degré).

Donc on vas installer la librairie DallasTemperature, qui nous epargne le boulot des 12 000 commandes à envoyer àa la sonde pour avoir la temperature, et OneWire, qui vas permettre a l’atmega de communiquer avec la sonde sur une seule patte.

Pour installer les librairies, rien de plus simple : décompressez ces dossiers dans le dossier librairies de l’ide arduino.

On vas enfin pouvoir s’occuper de notre code ^^.

Téléchargez le code à “télé-verser” dans l’atmega ici (clic droit + enregistrer sous)

Ouvrez le code téléchargé dans l’arduino IDE
Cliquez sur télé verser

En fonction de la puce atmega que vous avez, vous serez peut être obligé de changer le type de carte dans les configurations de l’ide (cf tuto 15)

Code coté raspberry PI

Téléchargez l’interface web ici

Décompressez la dans le dossier /var/www de votre raspberry PI

Pensez a régler les permissions en lecture/écriture dans fichiers comme dans les autres tutos (si vous ne voulez pas vous faire chier, faites le temps des tests:

  1. sudo chown –R www-data:www-data /var/www/hcc2
  2. sudo chmod –R 777 /var/www/hcc2

C’est bourrin question sécurité mais comme beaucoup d’entre vous ont des soucis de ce coté la car les permissions sont mal réglées, au moins on peux éliminer ça Tire la langue, je vous laisse regarder la doc linux si vous voulez régler les droits de manière plus sécurisée)

Les branchements finaux

Notez que pour le rapsberry pi comme pour la sonde arduino, vous devez obligatoirement :

  • Utiliser des alimentations externes stables de 5V
    Souder des antiennes (fils conducteur quelquonque) de 17,3cm
  • 2loigner le dispositif de toutes sources possible de parasites

Sans quoi la portée de votre sonde sera ridicule et les données mal transmises/mal captées (surtout mal captées, car le raspberry pi alimente très mal les composants externes).

Coté raspberry PI

Rien de nouveaux, on fait comme dans le tuto 10 sauf qu’on alimente le récepteur radio avec une alim externe de préférence (c’est mieux pour la portée et la qualité de la réception):

  • Notez que dans le tuto nous utilisons la borne wiring pi 7 (cette borne est définie quand nous lançons le programme en tant qu’argument, cf plus bas)
Coté capteur arduino

Une image vaut mieux qu’un long discours Sourire,

Notez que j’ai oublié sur le schéma, de préciser qu’il faut aussi mettre la résistance 4.7 k ohms entre le pin central du capteur ds18b20 et le + de l’alimentation

schema

L’explication du code

Concrètement, on vas créer notre propre protocole radio en calquant un peu sur le protocole home easy de chacon.

On vas donc envoyer un signal de 12 bits pour commencer:

  •  
  • 7 bits représenteront la valeur de la température.
  • 1 bit représentera le signe de la température (température positive ou négative)
  • 4 bits représenteront l’identifiant de la sonde.

On à 7 bits de valeurs, on pourra donc envoyer 2^7 = 128 valeurs possibles pour la température, avec le bit de signe ça nous permet d’envoyer de -128 à 128 degrés, ça devrait le faire, en tout cas si vous atteignez un jour ces limites vous vous concentrerez certainement plus sur votre survie que sur la domotique (et les morts n’ont pas accès aux commentaires donc je suis tranquille côté plaintes) :) .

On ajoutera deux impulsions avant et une après les données afin d’annoncer l’ouverture et la fermeture du signal d’information.

Coté raspberry PI
  • Un petit code en C++ qui vas écouter les signaux radio et envoyer l’information de température à une page PHP
  • Une page PHP qui vas écrire l’info dans un fichier texte (la database de l’interface web, nommée db.json)
  • Un ptit module html/ajax sur l’interface vas vérifier régulièrement dans la base pour chaque sondes et afficher la température sur l’interface.
Coté capteur arduino

Un code en C++ (avec la librairie arduino) qui vas questionner le capteur de température et envoyer le résultat (5 fois toutes les 3sc pour une meilleur garantie de réception) au raspberry pi à travers l’émetteur.

L’utilisation

Brancher la sonde sur une alimentation (5V minimum, éviter le rapsberry pi comme alimentation)

Sur la console du Rpi ,  aller dans le dossier hcc2

cd /var/www/hcc2

puis exécuter le programme d’écoute des signaux

./radioReception /var/www/hcc2/action.php 7

Le premier argument “/var/www/hcc2/action.php” est la page php de l’interface a laquelle sera envoyé la température reçue.

Le second argument ”7” est le numéro wiring PI du pin du raspberry pi sur lequel est branché le récepteur radio.

sur la console s’affiche alors les réceptions et éventuels ratés (notés FAIL) de réception de la sonde

Si vous souhaitez modifier le programme C de réception des signaux, les sources sont disponibles dans le fichier “radioReception.cpp”, après modification vous devrez le recompiler en tapant la commande

g++ radioReception.cpp -o radioReception –lwiringPi

Raspberry PI ~ 17 : Un mini écran pour 22€

Ce post est le dix septième d’une liste de tutoriels sur le raspberry PI, cliquez ici pour accéder au sommaire ! :D

En attendant la création de la sonde de température (qui ne saurait tarder, j’ai juste la flemme de rédiger mon pavé Tire la langue), voila un ptit tuyau à vous mettre sous la dent pour ce début de week end !!

Il peux être utile d’avoir un mini écran LCD couleur branché au rpi histoire d’avoir constamment un visuel de la console, d’afficher un plan domotique ou si vous souhaitez tout simplement faire du rpi un mini ordinateur Sourire.

Seulement voila, les mini écran pas cher, qui consomme peu et adaptable au raspberry PI, ça ne court pas les rues :) ! Une liseuse ? Trop cher ! Un écran classique ? Un peu encombrant et reste un peu cher ! Un cadre photo numérique ? Idéal mais peut être chiant à plugguer ! Lire dans les entrailles d’un poulet ? Sympa pour épater les amis mais il vous faut un poulet frais à chaque reboot…

L’astuce ? Prendre un écran de caméra de recul pour les voitures (oui oui, l’écran que vous n’aurez jamais dans votre R5 de prolo mais je vous assure qu’il y a des voitures qui ont ce genre de gadgets !! Rire).

2013-03-01 20.44.10

L’avantage de l’écran ? On peux en trouver à partir de 20€, ca consomme que quick, ça prends pas de place et comble du bonheur : il dispose d’une entrée vidéo RCA (ça tombe bien, on à une  sortie vidéo RCA sur le raspberry PI !! Le ptit cube jaune sur la photo ci dessus)

2013-03-01 20.43.29

Évidemment il faudra de bons yeux, et un peu de jugeote pour couper et dénuder quelques fils mais vraiment des broutilles pour adapter ce genre d’écran au raspberry PI.

Moi j’ai commandé un écran comme celui ci 

image

mais il semble être en rupture de stock à l’heure ou je vous parle, je vous conseille donc de faire votre choix dans les multiples autres marques/formats qui existent, en terme de branchement et de prix il se valent à peu près tous Sourire

Donc pour ce qui est de l’adaptation du bininous ça ne m’a pas pris 2 minutes de comprendre le fonctionnement tellement c’est simple et bien fait !!

3 sorties sur l’écran :

Une blanche : C’est une des entrées vidéo RCA de l’écran
Une jaune : C’est une des entrées vidéo RCA de l’écran au même titre que l’entrée blanche
Une rouge : C’est l’a qu’on alimente l’écran, normalement c’est branché directement à la camera de recul qui s’occupe d’alimenter le tout

On notera les points suivants :

Si l’écran possède deux entrées vidéos, l’une semble être à l’endroit et l’autre refléter l’image à l’envers, regardez bien la datasheet de votre écran pour savoir lequel prendre entre le blanc et le jaune Sourire

Aucun des ports n’est réellement adapté au rpi, il nous faudra couper le port rouge pour le relier à du 12V, et placer un adaptateur RCA entre l’entrée jaune(ou blanche) de l’écran et la sortie RCA du rpi, moi j’ai récupéré un vieux câble RCA, et j’ai tout coupé pour faire mon adaptateur maison

Bien que la datasheet vous conseillera du 12V continue pour alimenter l’écran (les batteries de voitures étant en 12v), l’écran n’a pas besoin d’autant, vous pourrez l’alimenter dans la plupart des cas avec beaucoup moins (dans mon cas une pile 9V à suffit)

Les branchements :

Coupez la partie rouge et dénudez le fil restant pour voir apparaitre deux fils à l’intérieur :  un noir (masse) et un rouge (alimentation positive) Il vous faudra donc relier le rouge et le noir à une alim/batterie 12V (ou 9V voir moins en fonction de votre écran).

l’entrée blanche (ou jaune de l’écran en fonction de comment vous voulez votre image Rire) doit être reliée à un adaptateur permettant de le brancher direct au rpi !

Et c’est tout !! Rire Notez bien que pour que votre écran s’allume il faut bien qu’il soit alimenté avec la batterie ET relié au port RCA d’un rapsberry allumé, sans quoi vous n’aurez aucune réaction de l’objet, ce qui peut être déstabilisant.

Un petit décalage isn’t it?

Vous noterez certainement que l’écran bouffe un peu la console par endroit, ceci est du à la très petite résolution de l’écran, cependant vous pouvez régler le problème en allant modifier le fichier /boot/config.txt de votre rpi (nb : il faut être logué en tant qu’administrateur ou faire un sudo pour modifier ce fichier).

Remplacez alors la partie avec les “overscans” commentés, par un overscan générale à 40 :

image

Puis redémarrez ! Ca devrait être mieux, cela dit 40 fonctionne bien avec mon écran mais si vous avez encore des soucis avec le votre, il vous faudra changer les valeurs jusqu’a ce que ça se cale correctement Sourire.

Notez bien que selon les pro du linux, c’est vraiment une technique de goret albinos et ce n’est pas du tout conseillé de modifier ce fichier, mais je n’ai pas trouvé de meilleure solution, si quelqu’un à mieux sous la main qu’il se manifeste Sourire

Et merde, pas d’adaptateur !

Si vous n’avez pas d’adaptateur sous la main mais un câble rca compatible(branchable) avec votre rpi qui traine et que vous ne voulez pas lâcher 1 euros sur ebay, vous pouvez faire comme moi et couper la grosse partie avant les ports de manière a n’avoir plus que des fils

 2013-03-01 20.12.32

Vous chopez ensuite votre vieux câble

2013-03-01 19.50.40

Vous reliez le fil de couleur rouge (ou jaune)du vieux câble, au fil de couleur jaune (ou blanche en fonction de l’image que vous souhaitez) de l’écran et la masse de l’écran (fil noir) à la masse de votre vieux câble (fil noir ou complètement dénudé en fonction de votre câble)

Puis vous reliez la masse de l’écran (fil noir) et la borne positive de l’écran (fil rouge) à votre batterie/alimentation 12V/9V.

Si il vous reste un fil(jaune ou blanc en fonction de celui que vous avez choisis) qui pendouille de l’écran dans le vide, c’est normal, vous pouvez le couper.

Pour gagner de la place :

Notez que si vous voulez en faire un appareil nomade ou revoir le design de l’ensemble, il peut être utile de réduire un peu la matière, vous pouvez facilement démonter l’écran (généralement quelques vices) histoire de le rendre le plus plat possible pour l’incorporer à une structure ou autre

2013-03-01 19.30.15

Et si vous êtes un goret sans foi ni loi comme moi vous pouvez aussi dessouder la sortie RCA du rpi pour y souder directement les fils de votre écran (j’entends déjà les fans de la framboise me hurler au vente “héréttttiiiquuueeeuuuh” »).

Voila les branchements à faire si comme moi vous avez dessoudé l’entrée RCA sans aucun remord (notez que c’est très chiant à dessouder, et encore plus à ressouder)

2013-03-01 19.32.20

L’essentiel étant que la masse soit bien sur le gros trou du milieu, l’autre peut être indistinctement d’un coté ou de l’autre.

Et sinon ?

Notez que vous pouvez facilement à partir de la en faire un mini pc portable par exemple en achetant un mini clavier + touchpad usb ou pourquoi pas même une tablette en y ajoutant une dalle résistive ? (bon ok la c’est peut être un challenge un peu plus gros :) )

Bien à vous et bon appétit !

Idle