Vue normale

Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.
À partir d’avant-hierMagdiBlog

2 – Installation et configuration (màj le 07.07.2015)

Par : Olivier
7 juillet 2015 à 12:00

La manière la plus souple pour afficher des données sur un écran est d’utiliser le langage HTML (comme pour les pages web). Pour rendre le tout un peu plus dynamique, nous utiliserons PHP et un peu de JavaScript. Ces technologies et langages sont très répendues (web) et très simples à utiliser.

En résumé, le Pi HomeDashScreen est un navigateur web, qui affiche une page web 🙂 Le gros avantage de cette solution, c’est que vous pouvez avoir plusieurs écrans dans votre maison qui affichent la même URL. Si cette URL est accessible depuis l’extérieur de votre réseau, vous pouvez afficher  votre écran d’information depuis n’importe où 🙂

Dans mon cas, le serveur web est installé directement sur le Pi qui est relié à l’écran. Mais vous pouvez très bien vous contenter d’afficher l’URL publiée par un serveur distant 🙂

IMG_5389

Note : Pour être franc, c’est la partie la plus chi… la moins intéressante ! Si vous savez installer un serveur web et lancer une application au démarrage du système, passez directement à la suite. Notez toutefois que j’explique ici comment lancer une application (Firefox/Chromium), sans gestionnaire de connexion (ou display manager), sans gestionnaire de bureau et avec un gestionnaire de fenêtre minimaliste. Pour avoir passé plusieurs jours à trouver comment faire, je pense que ça peut être utile 🙂 Rien que l’auto-login en mode console, ça peut servir !

Note : Ce tuto a été mis à jour le 16.03.2015 pour fonctionner facilement avec une installation classique des dernières versions de Raspbian. Un grand merci à chipsetseo et au magazine The MagPi pour les infos 🙂

Note 2 : Je précise que le but est ici de ne pas passer par un environnement de bureau (tel que LXDE disponible par défaut sous Raspbian) inutile et lourd pour afficher une page web, mais simplement un gestionnaire de fenêtre (et notamment openbox) qui est nécessaire et suffisant pour l’affichage d’une fenêtre d’un navigateur comme Chromium. Il convient donc de ne pas activer l’interface graphique via l’outil raspi-config ; voire même de la désinstaller totalement en suivant ce tuto : Supprimer les paquets inutiles pour alléger Raspbian

Installation des paquets

raspbian_logo_tinyJe ne reviens pas sur l’installation de Raspbian sur la carte SD, ce sujet ayant été traité de nombreuses fois, et notamment dans les projets Pi TimeLapse et Pi CarJukeBox. Partons du principe que vous avez un Pi fonctionnel sous Raspbian, configuration réseau effectuée (ethernet ou wifi) et un accès à Internet.

Vous allez avoir besoin de quatres composants clés :

  • Apache : serveur web, pour assurer la publication du contenu à afficher
  • PHP : pour pouvoir traiter dynamiquement les données à afficher
  • Chromium : pour afficher le contenu HTML à l’écran
  • Openbox : gestionnaire de fenêtre très léger pour gérer l’affichage de Firefox
  • xinit : permet d’installer tout ce qu’il faut pour le serveur X (qui se charge véritablement d’afficher toutes ces choses à l’écran)

Pour installer ces composants, utilisez la commande suivante :

apt-get install apache2 php5 php5-cli chromium openbox xinit

Toutes les dépendances seront installées automatiquement.

Nous aurons ensuite besoin d’un certain nombre d’outils :

  • imagemagick : pour manipuler des images
  • xplanet : pour générer les images de la terre et de la lune
  • unclutter : pour masquer le curseur de la souris
  • x11-xserver-utils : pour gérer la mise en veille de l’écran

Comme précédemment nous utilisons la commande apt-get install :

apt-get install imagemagick php5-imagick php5-gd xplanet unclutter mingetty x11-xserver-utils

Configuration

Le but est qu’à chaque démarrage du Pi, le système lance Firefox en plein écran sur l’URL du contenu que nous souhaitons afficher, tout en masquant le curseur de la souris. Dans mon cas, je mets en veille l’écran à 1h du matin, et je le réveille à 7h30.

Apache

Rien de plus simple car nous pouvons directement utiliser la configuration par défaut ou presque. Le fichier qui nous intéresse est  /etc/apache2/sites-enabled/Default. Vous pouvez le vider et remplacer son contenu par :

<VirtualHost *:80>
        DocumentRoot /var/www
</VirtualHost>

Cette configuration minimaliste suffira pour ce que nous souhaitons faire. /var/www correspond au répertoire qui contiendra les fichiers à afficher sur l’écran.

Vous pouvez créer un fichier « /var/www/index.html » et y écrire « coucou« . Ouvrez Firefox et allez à l’adresse http://localhost (localhost, désigne la boucle locale, autrement dit, c’est votre machine, home sweet localhost !). Vous devriez voir votre message « coucou » 🙂

Lancer Chromium au démarrage sur la bonne URL

Ceci ce fait en trois étapes. Dans un premier temps, il faut s’auto-loguer en tant qu’utilisateur au démarrage du système (dans mon cas, mon nom d’utilisateur est Jarvis. On ne se moque pas 😉 ). Une fois logué, l’utilisateur lance une session du gestionnaire de fenêtre Openbox. Lorsqu’Openbox démarre, il lance à son tour Chromium.

Auto-login au démarrage en mode console

Editez le fichier /etc/inittab et remplacez la ligne :

1:2345:respawn:/sbin/getty 115200 tty1

par :

1:2345:respawn:/bin/login -f jarvis tty1/dev/tty1 2>&1

(Remplacez « jarvis » par votre nom d’utilisateur)

Lancer une session Openbox automatiquement

Cela concerne l’utilisateur qui se connecte au démarrage, nous devons donc éditer le fichier /home/jarvis/.bash_profile. Il se peut que ce fichier n’existe pas, vous devrez alors le créer et y inscrire :

startx

Lancer Firefox au démarrage d’Openbox

Très simple, il suffit d’éditer le fichier  /home/jarvis/.config/openbox/autostart et d’ajouter en fin de fichier la commande pour lancer Chromium :

chromium -kiosk –incognito

(-kiosk pour lancer en mode plein écran ; –incognito pour que chromium se lance toujours en ignorant la session précédente)

Configuration de Chromium

Nous approchons du but. Il ne reste plus qu’à configurer Firefox pour sa page d’accueil par défaut soit http://localhost. Pour cela, il suffit d’aller dans les préférences de Chromium et de saisir http://localhost dans le champ « page d’accueil ».

Mise en veille à heure fixe

Pour gérer la mise en veille de votre moniteur à heure fixe, vous pouvez utiliser CRON, qui est un planificateur de tâche. En root, tapez crontab -e puis ajouter les deux lignes suivantes :

0 1 * * *       su - jarvis -c "xset -display :0 dpms force off" # met le moniteur en veille à 1h du matin
30 7 * * *      su - jarvis -c "xset -display :0 dpms force on" #réveille le moniteur à 7h30 du matin

Ceci permet uniquement de mettre en veille le moniteur. Si vous souhaitez éteindre totalement votre Pi, vous devez remplacer les deux lignes ci-dessus par la ligne :

0 1 * * *       /sbin/shutdown -h now # éteint le PI à 1h du matin

Ceci aura pour effet d’éteindre proprement votre Pi. Il ne vous reste plus qu’à utiliser un programmateur horraire, pour couper l’alimentation et la rallumer le lendemain matin.

Installation terminée

Si vous avez bien suivi l’ensemble de ce qui est expliqué dans cet article, vous devriez voir votre page d’accueil, qui n’affiche pour le moment que « coucou », à chaque démarrage de votre Pi. A partir de maintenant, nous allons nous concentrer sur les différents modules à afficher 🙂 C’est la partie la plus sympa 🙂

L’article 2 – Installation et configuration (màj le 07.07.2015) est apparu en premier sur MagdiBlog.

Supprimer les paquets inutiles pour alléger Raspbian

Par : Olivier
1 juin 2015 à 10:39

balance_raspbianDepuis la naissance de Raspbian, la distribution basée sur Debian et dédiée au Raspberry Pi, son contenu de base n’a cessé d’augmenter. Du coup, après une installation fraîche de Raspbian on se retrouve avec près de 4Go de données, et des kilo tonnes de logiciels et programmes dont on ne se sert pas forcément. Si bien qu’aujourd’hui, il vous faudra utiliser une carte SD de 8Go minimum si vous voulez faire quoi que soit avec une Raspbian… C’est scandaleux 😉 Je plaisante bien sûr, je comprends l’intérêt de mettre à disposition un maximum de composants afin de rendre Raspbian la plus complète possible. Cependant, je me suis surpris à faire le ménage en désinstallant un certain nombre de choses après chaque installation de Raspbian

En effet, dans un certain nombre de cas, et notamment pour monter un serveur ou un système embarqué, nous pouvons supprimer énormément de ces paquets fournis de base avec Raspbian.

Le gros des données et programmes à supprimer gravitent autour de l’interface graphique. En effet, si vous n’avez pas besoin d’un bureau ni d’un gestionnaire de fenêtre, vous pouvez dégager tout ce qui concerne X et KDE, ainsi que les programmes tels que Wolfram et Scratch (qui sont une sorte d’atelier de programmation).

Voici donc en quatre étapes les commandes à exécuter pour soulager vos Raspberry Pi qui tournent sous Raspbian :

1 – Désinstallation des paquets superflus

apt-get remove -y --purge desktop-base x11-common midori omxplayer scratch dillo xpdf galculator netsurf-common netsurf-gtk lxde-common lxde-icon-theme hicolor-icon-theme libpoppler19 ed lxsession lxappearance lxpolkit lxrandr lxsession-edit lxshortcut lxtask lxterminal xauth debian-reference-common fontconfig fontconfig-config fonts-freefont-ttf wolfram-engine dbus-x11 desktop-file-utils libxmuu1 libraspberrypi-doc

2 – Désinstallation des paquets et dépendances qui ne sont plus utilisées

apt-get autoremove -y

3 – Suppression du cache des paquets de apt

apt-get clean

4 – Suppression des fichiers inutiles

ATTENTION : Si vous souhaitez utiliser les composants vidéo du Pi et notamment les outils raspivid ou raspistill, vous ne devez pas supprimer le répertoire /opt/vc. De manière générale, ne supprimer ce répertoire que si vous n’utilisez votre Pi en tant que serveur  (LAMP, NAS, FTP,…) sans utiliser de composants propres au Pi. Dans le doute, ne supprimez pas ce répertoire. Si vous l’avez supprimé par erreur, vous pouvez réinstaller son contenu en lançant la commande rpi-update.

rm -rf /opt/* /usr/share/icons/* /usr/games /usr/share/squeak /usr/share/sounds /usr/share/wallpapers /usr/share/themes /usr/share/kde4 /usr/share/images/* /home/pi/python_games

Voilà 🙂 Avec ça, vous repassez sous la barre des 2Go et vous gardez une Raspbian parfaitement fonctionnelle 🙂

Bonne continuation à tous 🙂

P.S. Si vous avez l’habitude de supprimer d’autre paquets, merci de partager l’info 😉

L’article Supprimer les paquets inutiles pour alléger Raspbian est apparu en premier sur MagdiBlog.

Raspberry Pi 2 : La puissance qui manquait

Par : Olivier
12 février 2015 à 16:43

Raspberry_pi_2

J’ai à peine eu le temps de vous vanter les mérites du modèle A+ pour les projets embarqués que la fondation sort le Raspberry Pi 2 modèle B.

En passant du CPU monocoeur ARM11 cadencé à 700 MHz, qui armait tous les modèles jusqu’alors, au CPU quadricoeur ARM Cortex-A7 cadencé à 900MHz, le dernier né des Raspberry Pi offre un gain de performances fulgurant qui rend totalement obsolète tous les autres modèles ; exception faite, bien entendu, du modèle A+ qui reste une référence pour les projets embarqués.

Hormis le CPU et la quantité de RAM, le modèle 2 est strictement identique au modèle B+. Même carte, même ports, même GPU, 4 ports USB, 1 port Ethernet. Il s’agit d’un B+ boosté. Toutes les applications, cartes d’extensions et boîtiers sont donc compatibles.

Performances

IMG_8882Le CPU monocoeur ARM11 à 700MHz et les 256/512 Mo de RAM étaient suffisants pour la plupart des petits projets de prototypage, des petits serveurs de stockage (NAS, FTP,…), et permettait même d’utiliser un Pi comme box multimédia avec le bien connu XBMC récemment rebaptisé KODI.

Toutefois, on se frottait relativement vite aux limites du petit CPU monocoeur, et les 256/512 Mo de RAM étaient vite saturés. Même pour héberger un simple WordPress, avec un Apache et une base de données MySQL, le Pi se montrait poussif et incapable d’assumer plusieurs tâches en parallèles de manière fluide.

Pour avoir manipulé la bête sur différents projets, je peux vous dire que c’est très frustrant.

Avec un CPU quadricoeur boosté et 1Go de RAM, le Raspberry Pi 2 se montre beaucoup, beaucoup plus réactif sur l’ensemble des applications ; jusqu’à 6 fois plus rapide comme annoncé par la fondation (et jusuqu’à 30 fois plus rapide dans certains cas).

Voici un article intéressant sur les performances de ce nouveau modèle : http://www.silicon.fr/de-premiers-benchmarks-independants-pour-le-raspberry-pi-2-107756.html

Les utilisations possibles

Bien que depuis le premier modèle A le Pi était vendu comme un véritable ordinateur capable d’offrir une expérience bureautique convenable (avec bureau, navigateur web, etc…), il faut bien admettre que l’ensemble manquait franchement de réactivité et que l’usage d’un Pi comme ordinateur de bureau n’était pas réellement envisageable pour tous les jours…

Le modèle 2 tient quant à lui la promesse comme on peut le voir dans cette vidéo qui compare la navigation web entre les modèles B 1 et 2 :

La différence est frappante et fait plaisir à voir, d’autant que le prix est resté le même 🙂

Le Raspberry Pi modèle 2 peut donc être réellement envisagé pour un ordinateur de bureau, un petit serveur Web ou de stockage… La différence sur XBMC/KODI est également bluffante. Je faisais tourner une Raspbmc sur un modèle B depuis plusieurs mois, et la réactivité sur le modèle 2 est très agréable 🙂

Conclusion

raspberry_pi_2_aLes deux derniers modèles de Raspberry Pi conçus par la fondation, le RPi 2 modèle B et le RPi A+ sont pour moi tout à fait complémentaires. Alors que le modèle A+, très compact et peu énergivore, est très adapté à des projets embarqués (drone, jukebox, borne, capteur, caméra…), le RPi 2 modèle B et sa configuration musclée convient parfaitement pour des projets nécessitants une plus grosse puissance de calcul (serveur, box multimedia, calculs…).

L’article Raspberry Pi 2 : La puissance qui manquait est apparu en premier sur MagdiBlog.

SSH connect back : comment garder la main sur un Raspberry Pi connecté à internet via un dongle 3G

Par : Olivier
8 janvier 2015 à 21:21

Une question revient souvent dans les commentaires et les messages que je reçois : Comment faire pour se connecter sur un Raspberry Pi à distance si celui ci n’a pas d’ip fixe, comme c’est le cas avec les clés 3G par exemple ?

Je vous propose donc aujourd’hui un tout petit article pour vous montrer un moyen simple et efficace de garder la main sur votre Raspberry Pi connecté en 3G.

Si votre Raspberry Pi est connecté à internet via une clé 3G, vous aurez probablement constaté qu’il est souvent impossible de s’y connecter à distance et que son adresse IP n’est pas fixe. En effet, les infrastructures mises en place par les opérateurs de téléphonie mobile filtrent, la plus part du temps, les flux entrant, et l’adresse IP change à chaque connexion au réseau, et parfois même au cours d’une même session. Si vous avez installé un Raspberry Pi doté d’une clé 3G dans votre maison secondaire, ou que vous utilisez un Raspberry Pi en extérieur comme dans le projet PiTimeLapse, il faut contourner le problème pour pouvoir y accéder à distance.

SSH

Je cite ici la définition présente sur Wikipédia – SSH Secure SHell :

Secure Shell (SSH) est à la fois un programme informatique et un protocole de communication sécurisé. Le protocole de connexion impose un échange de clés de chiffrement en début de connexion. Par la suite, tous les segments TCP sont authentifiés et chiffrés…

Ce qu’il faut retenir, c’est que SSH (nativement présent sur une Raspbian et sur toute distribution Linux qui se respecte), permet de créer un « tunnel » ou un « lien » entre deux machines. Une machine A se connecte sur une machine B, et les machines A et B peuvent échanger des informations.

Si vous utilisez un Pi, vous vous y êtes probablement déjà connecté en utilisant SSH en utilisant la commande suivante :

ssh pi@adresse_ip_de_votre_pi

SSH connect back

Une fonctionnalité intéressante de SSH est d’autoriser les « connections retours ». C’est à dire que si A se connecte sur B, alors B pourra revenir sur A. Et c’est là que se trouve la solution à notre problème 🙂 Si je ne peux pas directement me connecter à mon Pi, je n’ai qu’à dire à mon Pi de se connecter à une machine que je contrôle, pour que je puisse ensuite remonter jusqu’à lui 🙂

connect_back(1)Ceci se fait de manière très simple. Sur le Pi connecté en 3G lancez la commande suivante :

ssh -N -R 10022:127.0.0.1:22 root@ip_serveur
  • -N : ne lance pas de commande sur le serveur distant
  • -R : « redirige un port » sur depuis le serveur disant
  • 10022 : un numéro port (de préférence supérieur à 1024), qu’on utilisera pour se connecter en retour
  • 127.0.0.1 : pour indiquer qu’on redirige le port sur la boucle locale du Pi
  • 22 : numéro du port que l’on souhaite atteindre. Ici, c’est le port utilisé par SSH. Vous pouvez le changer pour celui de VNC, ou de FTP par exemple.

A ce stade, votre Pi est connecté à votre serveur. Depuis votre serveur, vous pouvez vous connecter au Pi en retour en utilisant le port choisi (ici 10022). Si vous souhaitez à nouveau utiliser SSH pour vous connecter en retour sur votre Pi, il vous suffit de lancer la commande suivante depuis votre serveur :

ssh -p 10022 root@127.0.0.1

Ainsi, vous n’avez plus besoin de connaître l’adresse IP de votre Pi connecté en 3G, et vous passez à travers tous les filtres mis en place par les opérateurs de téléphonie mobile 🙂

Si vous voulez vous assurer que le tunnel entre le Pi et votre serveur persiste même après une déconnexion/reconnexion au réseau (ce qui arrive très souvent en 3G), vous pouvez utiliser autossh. Plus d’information sur autossh ici : http://linux.die.net/man/1/autossh

L’article SSH connect back : comment garder la main sur un Raspberry Pi connecté à internet via un dongle 3G est apparu en premier sur MagdiBlog.

PiTimeLapse – 13 – Premier retour d’expérience et améliorations

Par : Olivier
26 novembre 2013 à 23:02

J’ai pu tester le dispositif pendant une semaine sur notre terrain. En mode commando avec une petite pelle et une lampe frontale, tout l’équipement dans un sac noir, je suis allé enterrer le paquet au fond du terrain un dimanche soir, et suis revenu le cherché le dimanche suivant.

IMG_5676J’ai imprimé une petite note explicative sur le dessus de la boite contenant le dispositif avec mes coordonnées, au cas où quelqu’un tomberait dessus…

Après avoir armé le système et synchronisé l’horloge du circuit d’alimentation, j’ai creusé un trou au fond du terrain pour y cacher la boite. La webcam est attachée sur une clôture à environ un mètre du sol. Il n’y a plus qu’à croiser les doigts pour que tout se passe bien… Le lendemain, je devrais recevoir les premières images sur le serveur de monitoring à partir de 8h. Bizarrement, je sens une légère angoisse en laissant tout ce matériel dans la nature :/

Premiers constats

Très encombrant

Avec la grosse batterie 12V de 12Ah du circuit d’alimentation, l’ensemble du dispositif est lourd et volumineux. Cette batterie étant largement sur-dimensionnée, j’ai acheté une batterie 12V de 3,5Ah. Largement suffisante en terme de capacité, cette nouvelle batterie est beaucoup plus compacte et légère. En retravaillant l’agencement des éléments du système, j’ai pu aboutir à un dispositif beaucoup plus petit 🙂 L’ensemble tient maintenant dans une boite de 25 x 13 x 8,5 cm.

IMG_5736IMG_5737

Sous terre, point de 3G !

A hauteur d’homme sur le terrain, je capte 4/5 barres de 3G avec mon smartphone. Si je pose mon smartphone au sol, je ne capte plus de 3G, je passe en EDGE avec seulement 2/5 barres…

C’est pourquoi je n’ai pas enterré le dispositif trop profondemment. Tout juste de quoi le camoufler sous un centimètre de terre et de mauvaises herbes…

A ma grande surprise, le dongle 3G du dispositif captera suffisant de réseau pour pouvoir transmettre les images au serveur de monitoring. De temps en temps, la connexion n’est pas suffisamment bonne, et je ne recoit plus de nouvelles du dispositif…

Dans tous les cas, les images sont stockées sur la carte SD du Pi, donc tout va bien 🙂

La rosée du matin

Voilà la première image que j’ai reçu le lundi matin :

timelapse_74_2013-07-09_23-31-16_00Et c’est pareil tous les matins sur toutes les photos prises avant 10h environ… Je suis actuellement en train de tester différentes techniques pour éviter la formation de buée sur l’objectif de la webcam. Je vous en ferai part dès que j’aurai des résultats concluants.

Si vous connaissez des astuces, n’hésitez pas à m’en faire part en commentaire de cet article 🙂

Variation de lumière

Comme je m’y attendais, il y a de grosses différences de luminosité d’une photo à l’autre. Entre le soleil et les nuages qui diffusent la lumière puis la retiennent, j’ai parfois des photos surexposées, et parfois des photos très sombres…

timelapse_104_2013-07-09_23-31-17_00 timelapse_124_2013-07-09_23-31-16_07

Le fait de prendre plusieurs images à la suite pour permettre à la webcam d’ajuster la luminosité et le contraste permet de masquer le problème en partie.

Pour parfaire le résultat, j’ai commandé un filtre polarisant pour apareil photo. J’espère que cela fonctionnera…

De belles photos

Malgré ces petits défauts, le dispositif m’a ramené de belles images comme celle-ci :

timelapse_103_2013-07-09_23-31-18_06

Avec des photos comme celle-là, on peut espérer un joli timelapse de la construction de la maison 🙂 La construction doit débuter dans deux semaines. J’ai donc encore quelques jours pour améliorer le dispositif 🙂

Voici un premier aperçu d’un timelapse réalisé sur cette semaine de test. Je reste relativement déçu par la qualité des images :/

Une petite frayeur

Au moment de laisser le système dans la nature, j’ai eu une petite angoisse : « Et si quelqu’un tombe dessus ? », « Et si on me le volait ? »… Bref…

La première journée, le lundi, j’étais scotché au serveur de monitoring pour voir si tout allait bien. De temps en temps, une photo n’arrivait pas (problème de réseau), mais le coup d’après tout rentrait dans l’ordre.

Rien à signaler sur le terrain, personne à l’horizon… Soudain, vers 16h, une camionette apparait sur la photo :

timelapse_64_2013-07-09_23-31-18_00Puis plus rien… Plus d’image… Plus de nouvelles sur le serveur de monitoring…

J’étais persuadé qu’on m’avait piqué le matériel pourtant bien camouflé… Dégouté…

Le lendemain matin à 8h tapante, je reçois un mail du serveur de monitoring, tout va bien 🙂

L’article PiTimeLapse – 13 – Premier retour d’expérience et améliorations est apparu en premier sur MagdiBlog.

PiHomeDashScreen – 13 – Faire tomber la neige

Par : Olivier
26 novembre 2013 à 21:43

snowL’hiver arrive, et avec lui, espérons-le, la neige 🙂 J’aime beaucoup la neige, c’est joli, et c’est très relaxant de regarder tomber les flocons dans le calme 🙂

Sur un écran, l’effet est le même 🙂 J’utilise depuis longtemps Xsnow sur mon bureau. C’est old-school au niveau du design, mais c’est charmant de voir la neige s’amasser au desssus des fenêtres du bureau 🙂 Je n’ai malheureusement pas trouvé le moyen de faire tomber les flocons de neige de Xsnow « au premier plan » c’est à dire devant la fenêtre du navigateur qui affiche les données du dashscreen.

J’ai testé de nombreuses lib javascript permetant de faire tomber de la neige sur des pages web. Certaines sont réellement très jolies : http://www.jqueryrain.com/2012/04/top-jquery-snow-falling-effect-plugin-tutorial-with-example/

En revanche, ces lib sont relativement gourmandes en ressource. Même si les scripts ne pèsent que quelques disaines de Ko pour les plus légères, leur exécution en demande beaucoup au petit processeur du Pi 🙁

Je vous propose donc aujourd’hui un tout petit module en JavaScript permettant de faire illusion sans mettre à genoux le Pi 🙂 Pour l’activer sur votre dashscreen, vous devrez modifier les fichiers style.css et javascript.js comme suit :

style.css

La feuille de style permet de définir le style des <div> qui contiennent les flocons :

/* snow */

div.snow
{
  position          : absolute;
  width             : 1px;
  height            : 1px;
  font-weight       : bold;
  color             : #FFF;
  z-index           : 99999;
}

javascript.js

Inutil de créer une <div> dédiée dans la page index.php, nous utiliserons la div « main » comme conteneur.

/* snow */

var nb_flakes = 40;      // nombre de flocons
var speed     = 15000;   // vitesse en ms +- 5 secondes
var size      = 1;       // taille des flocons

function snowFall (id) {
  var duration = Math.floor((Math.random()*5)+1)*1000+speed;
  var left = Math.floor((Math.random()*200)+1);
  $("#"+id).animate({
    top: "+=760",
    left : "+="+left
  },
  duration,
  function() {
    var flake_size = Math.floor((Math.random()*20)+10*size);
    var left = Math.floor((Math.random()*1360)+1);
    $(this).css('top', -20).css('left', left).css('font-size', flake_size);
    snowFall(id);
  });
}

function snow () {
  for(var i=0;i<=nb_flakes;i++) {
    var left = Math.floor((Math.random()*1360)+1);
    var flake_size = Math.floor((Math.random()*20)+10*size);
    $("#main").append('<div class="snow" id="s'+i+'" style="left : '+left+'px; font-size : '+flake_size+'px; ">*</div>');
    snowFall("s"+i);
  }
}

La fonction snow() va créer des <div> contenant des « * » (pour représenter les flocons de neige) de tailles différentes et va les ajouter dans la div « main« . Puis pour chaque <div> « flocon« , la fonction snowFall() va les faire défiler de haut en bas a des vitesses différentes et selon des angles différents donnant l’illusion d’une véritable chute de neige 🙂

 

L’article PiHomeDashScreen – 13 – Faire tomber la neige est apparu en premier sur MagdiBlog.

❌
❌