IMA4 2017/2018 P49 — Wiki de Projets IMA\nIMA4 2017/2018 P49\n4.14 Semaine 12\n4.15 Semaine 13\n4.16 Semaine 14\nNom du projet : Station Modul'Air\nRésumé : Développer l'aspect modulaire de la station de suivi de la qualité de l'air conçue par des laboratoires de recherche tout en améliorant le système initial et en permettant une installation rapide des prochains nœuds de contrôle.\nMembres du projet : DELBROUCQ Hugo et HAVARD Nicolas\nSuperviseurs du projet : KASSI Redha (IRCICA) et ROUVOY Romain (INRIA)\nLors de précédents projets, une station de contrôle de la qualité de l'air a été conçue afin d'étudier l'air au sein du campus de l'Université de Lille. La station initiale comporte de multiples capteurs : CO, CO2, microparticules, composé organique volatil par exemple pour étudier l'air, mais aussi des capteurs de bruit, de présence, de température ou de pression pour enregistrer les conditions des prises de mesures.\nCependant, réaliser un contrôle de la qualité de l'air en un seul point peut avoir un intérêt limité. Notre projet consiste donc à faciliter la mise en place des futurs systèmes et à permettre à ceux existant d'être mis à jour à distance. Le réseau de nœuds de capteurs devra communiquer avec une application web centralisée à l'INRIA permettant de visionner les différentes données au cours du temps et ce pour chaque nœud. De plus, les capteurs des stations doivent pouvoir être permutés facilement, au gré de l'opérateur, pour modifier la nature des données mesurées sans passer plusieurs heures à reconfigurer le système.\nFaciliter l'installation de nœuds pour que les opérateurs n'aient que quelques lignes de commandes à taper pour rendre le système opérationnel\nPermettre la mise à jour à distances de tous les nœuds simultanément\nPermettre un aspect modulaire de la station, en rendant les capteurs 'plug and play' avec le minimum possible d'activité humaine pour changer les configurations\nIl existe déjà une version de ce projet existant réalisé par d'autres étudiants. Néanmoins, celui ci n'est pas satisfaisant car il ne fonctionne que sur un seul nœud. De plus les données sont stockées en local et non en ligne ce qui rend difficile la visualisation de ces données par un tiers. C'est pourquoi il va falloir remanier le code afin de permettre cela. De plus, les différents capteurs doivent être modulables. C'est à dire que si l'on modifie leur place sur la maquette, il faut un système permettant la reconnaissance du capteur placé au préalable.\nAtmo Hauts-de-France est une association de surveillance de l'air qui mesure le taux de dioxyde de soufre (SO2), dioxyde d'azote (NO2), ozone (O3), les poussières (PM10 et PM25) ou encore la radioactivité de l'air dans le nord de la France et partage les données sur leur site internet en donnant un indice compris entre 1 et 10 pour aider les néophytes à comprendre le niveau de l'air actuel.\nNotre second courant est Foobot, une entreprise ciblant avec ses produits les ménages. Cette société propose une station de contrôle de la qualité de l'air dont les données sont accessibles depuis une application sur téléphone. Cet outil a pour but de renseigner l'utilisateur sur les problèmes qui apparaissent en cas de mauvaise qualité de l'air, les causes possibles et les démarches à réaliser afin de prévenir d'autres problèmes pouvant apparaître. Pour y parvenir, il mesure différents taux dans l'air tels que les COV (composés organiques volatils), les particules fines, la température et l'humidité et déduit de ces données des comportement à établir grâce à des modèles mathématiques.\nDonald veut importer des bananes depuis l'Afrique afin de les vendre plus cher pour devenir millionnaire (et peut être même président ensuite !). Son seul et unique but est donc de se faire le plus de marge possible. Néanmoins, il souhaite que ses clients continuent d'acheter ses bananes, et se soucie donc de la qualité de celles-ci à leur arrivée. Il s'intéresse en particulier à la qualité du transport de ces bananes.\nLorsqu'il demande à ses partenaires de lui fournir des informations en temps réel de la qualité de ses bananes lors de leur transport, ces derniers ne savent pas quoi lui répondre. Malheureusement pour ses partenaires, Abdel et Kader, cette contrainte est très problématique car ils ne connaissent aucun moyen de contrôler la qualité des bananes en temps réel dans le réseau de transport. C'est pourquoi ils demandent à des étudiants de Polytech Lille de résoudre leur problème. Heureusement pour eux, l'INRIA et l'IRCICA possèdent déjà un prototype d'une station de suivi de la qualité de l'air. Ils se mirent donc à travailler dans le but de satisfaire leur demande pour que Donald devienne très riche pour construire un joli mur autour de sa maison.\nRemplacement des programmes en C++ par du NodeJS : le NodeJS est en effet plus adapté pour notre utilisation avec les échanges entre les noeuds et le serveur puisqu'il fonctionne de manière asynchrone, ainsi que pour afficher en temps réel les données sur l'application web dédiée à la visualisation des données récoltées par les différents noeuds.\n(ce matériel nous a été fourni par l'IRCICA/INRIA soudé à une maquette déjà conçue par de précédents projets)\n1 * Raspberry Pi 3\n1 * Arduino Mega\n1 * Capteur de température, pression et humidité\n1 * Capteur de bruit\n1 * Set de capteurs chimiques Alphasense (CO, CO2, microparticules)\nDans un premier temps, nous allons nous concentrer sur la partie informatique du projet en récupérant le code existant sur le prototype et en le transférant sur un dépôt Git. Nous aurons ainsi à disposition un dépot Git pour le code et la configuration du Raspberry Pi et un autre pour le programme Arduino.\nEnsuite, il est prévu de permettre l'envoi de donnée via différents protocoles comme le WiFi, l'Ethernet, le Bluetooth, le LoRa ou encore le Zigbee afin de permettre plus de libertés à la station et pousser l'idée de la modularité sur l'envoi des données.\nEnfin, si nous y arrivons, il serait envisageable de pousser la modularité sur les composants du systèmes en ajoutant la possibilité de retirer la Raspberry Pi ou l'Arduino et de les remplacer par d'autres cartes.\nPour les vacances de Février, nous pensons que nous aurons fini de trier le code existant et que nous aurons ajouté ce code sur les dépôts Git dédiés. Nous projetons de plus avoir bien avancé dans la traduction du code C++ et avoir implanté les quelques fonctionnalités demandées pour le Raspberry comme la possibilité d'éteindre proprement la machine à l'aide d'un bouton entre autre.\nAnalyse du projet 3h30 8h30 6h 6h 3h30 6h 6h\nEnvoi des données de capteurs 4h30 4h 7h30 3h 4h20 6h 7h 3h\nRédaction du wiki 1h30 1h 1h30 3h 3h\nNous nous sommes rendus à deux reprises dans les laboratoires de l'IRCICA puis de l'INRIA afin d'en apprendre plus sur notre projet et de comprendre ce que nos clients attendaient de nous. Nous avons aussi profité de ces visites pour voir la maquette déjà conçue sur laquelle nous allons travailler, et récupérer les codes de l'Arduino et du Raspberry. De plus, il semblerait que les parties électroniques comprenant l'Arduino et la programmation des capteurs en Python (nécessaires à l'acquisition des données de certains capteurs) aient déjà été réalisées avant notre arrivée. Nous devons donc réaliser l'architecture logicielle du projet afin de comprendre ce que la personne nous précédant a réalisé ainsi que l'architecture adaptée à plusieurs nœuds que nous avons donc à faire.\nDurant la première semaine, nous avons tout d'abord rattrapé notre retard sur la rédaction du Wiki. Nous avons aussi pu analyser le code du premier nœud de notre système qu'il nous faut encore ajouter au git du projet afin de clarifier son fonctionnement :\ngit partie arduino\nDe plus, nous avons aussi établi le fonctionnement du mode de communication entre les différents nœuds et notre interface. En effet, l'utilisation de telegraf permet de traiter les données de chaque nœud facilement pour ensuite les centraliser sur influxdb qui les stocke dans une base de données pour ensuite envoyer ces données à grafana qui est un logiciel permettant des simulations graphiques et la possibilité d'utiliser un interface agréable.\nOn peut voir sur la partie Telegraf que l'outil fonctionne par scrutation. Il demande d'abord au nœud à un intervalle de 30s les données qu'il renvoie une donnée correspondant à la moyenne des données prélevées par le nœud lors de ces 30s. Cela permet d'éviter des écarts trop important ne reflétant pas la réalité.\nFonctionement du réseau nœud/interface\nNous avons profité de ce début de semaine pour préparer l'installation de Telegraf que nous espérions terminer mercredi. Nous avons donc repéré les fichiers de configuration et ce qu'il nous fallait y mettre dedans, ainsi que la procédure d'installation du paquet sur la Raspberry.\nLe mercredi après-midi, nous avons pu installer Telegraf sur la Raspberry basée à l'INRIA et avons commencé à configurer ce dernier pour qu'il fonctionne avec la base de données en temps réel située sur le serveur de l'INRIA et avons du effectuer différents paramétrages de la Raspberry pour que le système fonctionne correctement.\nLe lundi nous avons poursuivi notre documentation sur le sujet pour ensuite aller le mercredi à l'INRIA faire fonctionner Télégraf. Nous avons alors eu un problème qui s'est posé, en effet Télégraf n'est pas adapté à une base SQLite comme celle utilisée dans la Rasp Pi. Nous avons donc essayé de faire deux choses :\nChanger la base SQLite mais nous ne connaissions pas les conséquences sur le reste du programme se servant d'une librairie propre à SQLite et de plus, nous avons eu du mal à trouver un convertisseur valable. L'exportation était simple à réaliser mais il aurait fallu modifier les fichiers en interaction avec la base car ils se servaient de bibliothèques sqlite3.h, cela aurait pu entrer en conflit avec le reste du programme que nous ne maîtrisons malheureusement pas complètement.\nManipulation pour changer la base SQLite en MySQL :\nexporter la base en fichier .dump puis utiliser le script python qui remplace les marqueurs SQLite par des marqueurs MySQL pour enfin réimporter la base au format MySQL.\nCréer un fichier .conf prenant en charge la base SQLite en input. Mais la aussi nous ne disposions pas des connaissances nécessaires à sa réalisation. En effet, d'après ce que nous avons pu observer, les fichiers d'input disponibles sur le git de telegraf sont uniques et ont peu de points commun entre eux.\nNous avons donc continué de perdre bêtement du temps sur cette idée qui de plus est lourde à supporter pour une Rasp Pi.\nNous avons pu récupérer une Raspberry Pi afin d'effectuer des tests en dehors du laboratoire et obtenir ainsi plus d'indépendance. La Raspberry n'ayant aucun rapport avec les projets existant à l'INRIA, et ne connaissant pas les mots de passe de la machine, nous avons du réinstaller le système d'exploitation Raspbian sur la carte avant d'installer les mises à jours pour partir sur une bonne base.\nRecherches de compatibilités entre Telegraf et SQLite\nAbandon de la solution Telegraf car inadaptée à notre architecture\nNous avons choisi d'abandonner la solution que proposait Telegraf, soit une application qui permettait l'envoi de données vers la base de données en temps réel influxDB. En effet, malgré une grande variété de bases de données lisibles par Telegraf, les bases SQLite n'étaient pas pré configurées pour être adaptées à cette application. De plus, le rejet de Telegraf permet de simplifier l'installation et d'économiser des ressources.\nNous avons choisi de partir sur une solution constituée d'un script C lancé par un Cron de la Raspberry pour lancer de manière asynchrone les données non envoyées par le noeud sur le serveur de l'INRIA. L'envoi des données sur le serveur se fera via une requête REST (à détailler) à l'aide de cURL.\nPour cela, nous nous inspirerons du paquet Node-influx (git du paquet ici)\nNous nous sommes intéressés à deux solutions pour envoyer les données sur influxDB :\nla requête cURL en Bash permettant d'envoyer jusque 5 000 données comprises dans un fichier, par exemple un fichier texte nommé sensors_data.txt sur le port d'écoute de l'application influxDB, à savoir le port 8086 de apolline.lille.inria.fr dans notre cas. Nous aurons donc une commande du type suivant :\ncurl -i -XPOST 'http://apolline.lille.inria.fr:8086/write?db=airquality' --data-binary @sensors_data.txt\nL'intérêt de cette méthode serait d'envoyer les données de la base de données SQLite sur un fichier sql au travers des commandes suivantes :\navant de passer ce fichier sql à la commande curl pour envoyer les différentes données sur l'application.\nDans le but de tester l'efficacité de la commande bash qui semble être la plus simple et la plus efficace, nous avons installé les différentes applications utilisées que sont influxDB et Grafana dans le but de reproduire le système étudié et de pouvoir le manipuler sans aucun risque. De cette manière, nous devrions pouvoir tester l'envoi et la réception de données sur influxDB, et la visualisation de celles-ci sur Grafana.\nNous avons commencé la conception d'un script Bash permettant d'envoyer les données sur le serveur afin de les regrouper sur influxDB et de pouvoir les traiter par la suite. Il sera placé dans le répertoire /etc/cron.hourly dans le cas où nous pourrions envoyer les données toutes les heures : les données seraient ainsi cumulées durant une heure en local dans une base de donnée SQLite, afin d'être envoyées toutes les heures sur le serveur. Ce script se décompose en plusieurs parties :\nles variables utilisées dans le script correspondant aux fichiers que le programme va lire ou écrire\nles variables qui vont être appelées par le script comme les noms des bases de données, les adresses URL sur lesquelles nous envoyons les données où les variables systèmes comme le nom de la machine\nle script permettant de récupérer les données de la base SQLite\nles commandes récupérant les données à envoyer et effectuant les requêtes sur l'adresse du serveur\nLes différentes variables sont :\ndb_sql : un dump de la base de donnée sur laquelle se trouve les données. Nous récupérons alors toutes les tables et leurs contenu dans ce fichier.\nscript_database : script externe pour SQLite3 permettant le dump automatique des données (possibilité de se séparer de ce fichier à l'avenir en récupérant le contenu de la base de données via une commande Bash unique)\nURL : l'adresse URL du serveur sur lequel nous souhaitons envoyer les données, et sur lequel se trouve l'application influxDB\nport_envoi : par défaut 8086. C'est le port d'écoute d'influxDB et sur lequel il nous faut envoyer les données pour que l'application les ajoute aux bases désirées\nport_application : par défaut 8083. C'est le port sur lequel il faut se rendre pour visualiser l'application influxDB et donc les données stockées sur la base en ligne\ndatabase : la base de données stockant les données en ligne et sur laquelle nous envoyons les données mesurées par les capteurs du noeud\nnodename : le nom du noeud, soit l'identifiant permettant de distinguer l'émetteur des données sur la base\nLe script SQLite, lui, interagit avec la base de données database renseignée dans les variables de début. Actuellement, il crée un fichier d'écriture sur lequel sera écrit les résultats des requêtes du script. Les requêtes affichent la liste des données à envoyer provenant des différentes tables de la base de données database :\nSELECT * FROM co2 WHERE SEND_FLAG=0;\nSELECT * FROM humidity WHERE SEND_FLAG=0;\nSELECT * FROM pressure WHERE SEND_FLAG=0;\nActuellement, les noms des tables sont rédigées à la main, nous allons voir s'il est possible d'effectuer ces requêtes sur les différentes tables de manières automatique en récupérant le nom de toutes les tables et en rédigeant les requêtes SQL via une boucle. Cependant, nous pensons aussi partir sur un dump de la base de données, ce qui nous permettrait de récupérer les données comme elles sont écrites :\nCREATE TABLE test1(one varchar(10), two smallint);\nINSERT INTO "test1" VALUES('hello!',10);\nINSERT INTO "test1" VALUES('hel',42);\nCREATE TABLE test2 (id integer, titre VARCHAR(15));\nINSERT INTO "test2" VALUES(1,'premiere valeur');\nINSERT INTO "test2" VALUES(2,'seconde valeur');\n(il s'agit de tables et de données tests, comme leur noms l'indiquent, et non des véritables tables. Mais le principe reste le même)\nSi la récupération des données avec le dump est la même qu'avec la première méthode et nécessite donc un découpage du fichier pour récupérer les informations intéressantes, il nous permettrait de modifier facilement les flags d'envoi et de reconstruire la base de données en modifiant donc le flag lorsque la donnée a pu être envoyée sur influxDB.\nUne fois la base lue, et les données à envoyer isolées, il nous faut alors envoyer les données sur l'application.\nOn réalise alors une requête POST à l'aide de la commande cURL sur l'URL renseignée au début et sur le port de réception de l'application, en n'oubliant pas d'indiquer la base de données sur laquelle ces données doivent se retrouver.\n"#curl -X POST '$URL:$send_port/write?db=$database' --data-binary '$data,hostname=$nodename value=$value'"\nLes données, que nous pouvons retrouver derrière --data-binary, sont composées de $data qui est le nom de la table (par exemple co2, humidity, pressure, ...), $hostname correspondant à l'identifiant du noeud, et $value qui est la valeur mesurée par les capteurs.\nDevrait alors se distinguer deux cas, qui ne sont pas encore terminés : le cas où la requête HTTP renvoie un code 204 signifiant que l'envoi de données à été réalisé, et le cas où nous recevons un code 400 pour une erreur de syntaxe.\nEn cas de succès, il faut alors modifier le flag d'envoi de la données à 0 pour signaler que la donnée n'est plus à envoyer au serveur.\nLe second cas, à l'avenir, devra être signalé dans un fichiers de logs pour que l'administrateur puisse remarquer l'erreur et traiter le problème. Aucune modification ne sera apportée à la donnée, qui conservera donc un flag d'envoi de 1 (nécessitant donc d'être envoyée).\nNous avons placé à la fin la commande xdg-open $URL:$app_port permettant, après l'envoi des données, d'ouvrir l'adresse du serveur sur le port de l'application pour constater la réception de nouvelles données. Évidemment, le script tournant sur un Raspberry Pi sans interface homme-machine, il sera inutile d'ouvrir un onglet internet à chaque fois que des données seront envoyées sur le serveur, soit une nouvelle page toutes les heures voire beaucoup plus. Cette commande est présente pour la conception du script.\nDe plus, nous avons aussi pu établir l'architecture de notre système pour un nœud. Le système à plusieurs nœuds sera semblable à celui avec un nœud unique mais aura plus de fonctionnalités. Cette organisation peut de plus changer au fil du temps.\nFonctionnement du système avec un nœud unique\nDurant cette semaine, nous avons pu terminer la partie initialisation du script, qui prend en compte les variables et qui récupère les données de la base de données à exploiter.\nPartie du script Bash permettant l'initialisation des variables nécessaires tels que les chemins de fichiers ou encore les noms des bases de données et l'URL de l'application, mais aussi la partie où nous faisons un dump de la base de données éudiée pour l'exploiter par la suite\nTout d'abord, nous avons placer une variable 'SILENT_MODE' qui, lorsqu'elle est différente de 0, permet d'obtenir un script plus verbeux qui va nous signaler dans quelle partie il se trouve actuellement (lecture de la base de données, envoie des données sur influxDB), ce qui permet un déverminage plus aisé. Vient ensuite les variables nécessaires au script, comme stipulé la semaine passée, mais avec des noms finalement différents : en effet, nous avons appris entre temps à émettre des requêtes avec SQLite directement à partir d'un script Bash et non en passant par un script dédié à SQLite, simplifiant ainsi l'arborescence de fichiers. Nous retrouvons db qui est la base de données elle-même dont nous récupérons les données, et dont on effectuera un 'dump' à la ligne 47 (dump auquel nous reviendrons un peu plus bas lorsque nous reparlerons des dernières variables). Ce dump sera identifié par la variable db_request. Des lignes 22 à 26, il s'agit de variables propres à l'utilisation de influxDB :\nnodename permet de récupérer le nom du noeud envoyant les données pour afficher la provenance des données sur l'application.\nURL est l'adresse URL par laquelle l'application est accessible.\nsend_port et app_port sont les ports respectifs de réception de données et de l'application comme vu la semaine passée\ninfluxDB_database la base de données d'influxDB sur laquelle nous envoyons les données.\nCes 5 dernières variables permettent d'avoir un script plus dynamique et plus adaptable en cas de changement d'application (changement des ports de référence d'influxDB, données pour du suivi médical et non du suivi de qualité d'air, nouvelle adresse du serveur).\nNous trouvons enfin les 5 nouvelles variables dont nous parlions au début, que nous n'étions pas obligé de (ne devrions pas d'ailleurs) placer ici, nécessaires au bon déroulement de ce programme dans notre cas :\ntable : il s'agit du nom de la table que parcourt le script lors de la lecture du dump de la base. En effet, le dump est constitué des lignes permettant de créer la base Sensors.db, soit la création des tables ('CREATE TABLE') puis le remplissage de celles-ci ('INSERT INTO ... VALUES').\nDocument obtenu (volontairement tronqué) suite au dump de la base de données Sensors.db\nLa technique que nous utiliserons dans ce script va consister à récupérer les données de la table data, et il nous faut donc savoir dans quelle table nous nous trouvons. C'est l'intérêt de cette variable. En effet, les 3 variables suivantes sont contenues dans la table data :\ntimestamp : ou horodatage en anglais, sera la date et l'heure d'émission des données envoyée à influxDB\ntimestamp_old : l'ancien timestamp, permettant de comparer les variables et de savoir si nous avons fait le tour des valeurs mesurées à un même moment. Nous pouvons alors ajouter ou enlever des capteurs de la station sans aucun problème.\nvalue : tout simplement la valeur mesurée par les capteurs que nous envoyons à l'application en ligne.\nLa dernière variable, sent est le 'flag' permettant de savoir si les valeurs correspondant à telle date ont déjà été envoyées sur l'application ou non. Elle est cependant contenue dans la table polls.\nUne fois les variables créées, le script peut commencer, et la première étape est donc le dump de la base de données Sensors.db (ou $db). Nous demandons donc à SQLite (SQLite3 étant installé sur le système en question) de faire un dump grâce à la commande\n"sqlite3 base_de_données .dump".\nCe dump est envoyé vers $db_dump afin d'être lu plus tard par le programme pour récupérer les données au travers des variables vues ci-dessus avant de les envoyer sur influxDB.\nPartie du script Bash traitant le fichier de la base de données pour en extraire les variables à envoyer à l'application sur le serveur, via une requête POST\nNous avons terminé la lecture du dump de Sensors.db et arrivons à extraire les données que nous souhaitons envoyer grâce à la commande cut appliquée sur chaque ligne du dump de la base de données. En effet, chaque ligne contenant des données suivant le format suivant :\nINSERT INTO "data" VALUES(sensors_identifier,data,poll_time); ,\nil nous faut récupérer la partie après la première parenthèse contenant les valeurs, soit le champ 2 en prenant comme symbole de découpage '('. Les données sont ensuite séparées par des virgules, nous récupérons les champs 1, 2 et 3 respectivement dans nos variables $sensor, $value et timestamp permettant donc de savoir sur quelle table envoyer les données, grâce à sensor, que sont la valeur value récupérée par le capteur au temps timestamp. La requête POST, commentée dans la capture ci-dessus, fonctionne correctement pour une seule donnée en console et ne devrait donc pas poser de problèmes lors de l'envoi de toutes les données.\n(spoiler du futur : tout ne se passe jamais comme prévu)\nL'envoi des données se fera donc en N requêtes CURL où N est le nombre de données à envoyer. Cette solution n'étant pas optimale, nous aurons probablement à l'avenir à créer un fichier contenant les données à envoyer sous un certain format, facilement exploitable par CURL pour l'envoi de données sur InfluxDB. Suite à l'envoi des données concernant une certaine date de mesure, le timestamp change, et nous pouvons donc informer la base de données que les données ont bien été envoyées sur l'application influxDB en mettant le flag sent à 1.\nNous sommes retournés à l'INRIA pour récupérer des données et effectuer ainsi des tests du script lorsqu'il sera complètement terminé. Nous avons donc fait des dump des bases de données config.db et sensors.db qui stockent, réciproquement, les configurations des capteurs (offset, sensibilité, unités de mesure) et les valeurs récupérées par les capteurs avec leur timestamp et autres informations (donnée envoyée par exemple). Les bases de données ont chacune deux tables, que voici représentées :\nSchéma de la base de donnée Sensors.db et de ces deux tables 'data' et 'polls', permettant de faire le lien entre les capteurs, les données récupérées et la date à laquelle ont été récupéré les données\nSchéma de la base de donnée config.db et de ces deux tables 'sensors' et 'settings', permettant de garder en mémoire les paramètres de configuration de la Raspberry et des capteurs, mais aussi les métadonnées telles que l'unité de mesure des données\nNous avons donc modifié le script Bash afin de le rendre plus propre. Nous reconstruisons les bases de données présentes sur la Raspberry de l'INRIA à l'aide des dumps récupérés. Nous reprenons l'idée d'un script de requêtes SQL permettant d'effectuer une requête SQL pour obtenir les données à envoyer, avec leur timestamp et les données des capteurs et de rediriger le résultat de cette requête vers un document que lira le script Bash pour en extraire les informations à l'aide de commandes cut.\nL'architecture du script Bash ne change donc pas, et conserve les phases suivantes :\nOuverture de la base de données et récupération des données à envoyer\nEnvoi des données sur InfluxDB\nVérification de l'envoi des données et mise à jour de la base\nDe plus, nous avons pu commencer le tutoriel sur docker qui devrait nous permettre de faciliter le déploiement de nos différents nœuds et de réduire l'encombrement à l'aide des compartiments docker.\nLa semaine précédente, nous avions changé de technique d'approche concernant la lecture de la base de données. Bien que nous étions restés sur le fait de passer par un dump de la base de données nous intéressant, nous ne passions plus par un script SQL, mais nous avions rentré ces commandes directement dans le script Bash.\nPartie du script permettant de lire la base de données Sensors.db\nCette semaine, nous avons profité jusqu'au bout de la possibilité d'entrer des commandes directement depuis le script Bash pour changer l'approche de lecture de la base de données : plutôt que de passer par un dump de la base de Sensors.db, nous effectuons directement notre requête SQL dans le script, à savoir récupérer les identifiants des capteurs sensor_identifier, la valeur mesurée data et l'heure d'émission de la valeur, le timestamp, poll_time de la table data. Nous effectuons une jointure entre les tables data et polls sur le timestamp présent dans les deux tables.\nCette jointure nous permettra donc de filtrer les données déjà envoyées sur l'application en ligne grâce au flag sent de la table polls. Nous ordonnons ensuite les valeurs par horodatage croissant pour respecter l'ordre chronologique.\nLe résultat de cette requête sera envoyé vers $db_request, variable pointant vers le document grâce auquel nous allons récupérer les valeurs à envoyer.\nInitialisation du script Bash après changement de technique pour la lecture de la base de données Sensors.db\nCe changement nous a donc permis de simplifier notre technique pour récupérer les valeurs : plutôt que de faire des cut en fonction du début de la ligne lue (CREATE TABLE ou encore INSERT INTO), nous savons que nous disposons directement des bonnes valeurs et il nous reste alors à faire le découpage des valeurs. Nous gagnons donc en complexité et donc en temps de réponse étant donné que nous n'avons alors plus besoin de lire toutes les lignes pour créer les tables et surtout les lignes permettant de remplir les tables ne nous intéressant pas. De plus, le filtre du à la sélection des données n'ayant pas encore été envoyées diminue le nombre de résultats suite à notre requête.\nConcernant le script, nous avons donc continué et passé à la partie envoi de données. Connaissant la commande permettant d'envoyer les données et ayant déjà récupérer les valeurs à envoyer, nous pensions que cela se ferait assez facilement. En effet, influxDB accepte de recevoir les données grâce à la commande cURL, écrite de la manière suivante :\n"curl -XPOST "adresse_influxDB:port_envoi/write?db=base_données_influxDB" --data-binary "table_influxDB,hostname=ID_noeud value=valeur_envoyée heure_de_la_valeur"\nle XPOST signifiant que nous effectuons une requête HTTP avec une méthode POST pour envoyer les données à l'application.\nCependant, afin de pouvoir envoyer les données de manière dynamique et en passant donc par des variables, il a fallu effectuer plusieurs tests pour que la commande reconnaisse l'adresse sur laquelle envoyer les données et les données en elle-même.\nLa solution que nous avons trouvé a été de créer une nouvelle variable qui, à partir des variables générales en début de script, reconstitue l'adresse de l'application en une seule chaine de caractères. Les données, elles, sont traitées de la même manière et nous reconstituons donc la requête à partir des variables obtenues suite au découpage de la requête SQL. Nous obtenons ainsi les deux variables suivantes :\ndata="$sensor, hostname=$nodename value=$value $timestamp"\net la commande devient alors :\ncurl -XPOST $site --data-binary $data\nCependant, cette solution n'est pas tout a fait ce que nous espérions. En effet, lors d'une requête HTTP, différents codes peuvent être renvoyés suite à l'envoi de données sur un serveur. Un code de 2XX (comprendre entre 200 et 299) signifiera un succès de la requête, 3XX une redirection de la requête, 4XX une erreur du client web et 5XX une erreur du serveur (les codes 1XX étant des informations). Nous souhaitons donc être sûrs que notre requête a bien fonctionné, autrement dit que influxDB a bien reçu les valeurs que nous avons envoyé. Pour cela, il nous faut recevoir un code 2XX, souvent 204 pour influxDB. Nous n'avons pas encore trouvé la solution de ce problème, mais nous songeons à rediriger le code reçu sur un document texte qui, après découpage grâce à cut, nous permettra d'obtenir le code. Cependant ce procédé est lourd et nous cherchons d'autres solutions.\nNous avons pu finir le tuto docker proposé par le site éponyme | docker.com La partie docker va consister à créer un cluster via docker swarm qui va regrouper et gérer tout nos nœuds. Pour l'heure nous utiliserons une raspberry en mode manager et une autre en mode worker (même système que maitre/esclave ).\nFonctionnement de notre partie docker :\nAprès avoir fini le tutoriel, nous allons maintenant faire en sorte d'importer cette technologie à notre projet.\nLe principal travail sera de stocker toutes les parties de code utiles à tous les nodes dans un unique compartiment afin de l'importer à l'installation de chaque node. De plus, le compartiment sera stocké sur le compte eeikon (plus tard voir inria/qarpediem/ sur hub docker à l'adresse et pourra par la suite être stocké sur le compte de l'INRIA.\nFichiers à importer : on prévoit d'importer tous les fichiers présents sur la raspy et laisser un script d'installation/configuration qui lancerait le téléchargement depuis le hub docker\nimporter le système d'exploitation raspbian? permettrait d'alléger encore l'application mais pas si nécessaire car les raspy peuvent supporter l'OS. (solution à réaliser si le temps le permet)\npassez par le docker swarm afin de créer un cluster de raspy workers avec le serveur qui ferait office de manager.\nLe fichier de config doit renommer le noeuds (en fonction de ceux déjà existants?)lancer le téléchargement. A long terme il devra aussi demander les capteurs présents et leur emplacement afin de connaitre l'architecture de la maquette\nConcernant l'avancé du script, nous avons réussi à envoyer les données sur l'application et à récupérer le statut HTTP après la lecture du manuel concernant cURL. Il se trouve que nous pouvons récupérer le statut HTTP grâce à "--write-out". Et pour retirer tout affichage nuisible au bon déroulement du script, nous appliquons aussi l'argument "--silent" permettant de passer la commande cURL de manière moins verbeuse. Après avoir fait un test, le programme fonctionne correctement et nous recevons bien des statuts 204. Prouvant le bon déroulement du programme, nous recevons bien les données sur influxDB et pouvons ainsi les voir sur internet.\nAfin de montrer la progression du script lors de son exécution, nous avons réalisé un affichage s'actualisant au fur et à mesure de la progression du script en mettant en avant le nombre de valeurs déjà traitées, le total de valeurs à traiter, et le pourcentage de progression.\nCet affichage ayant nécessité une division entre deux nombres, il nous a fallu installer le paquet bc permettant de réaliser des calculs et de gérer les flottants dans un script Bash. Par conséquent, il sera très important de ne pas oublier d'installer bc lors de l'installation de noeuds pour lancer le script de manière manuelle. En effet, il sera intéressant pour l'opérateur de voir que le programme s’exécute correctement, et que le système n'a pas planté.\nCependant, les noeuds devant lancer le script de manière automatique n'ont pas d'opérateur derrière visualisant la console, et cette partie sera donc inutile la plupart du temps.\nLe programme arrivait à son terme, seul rester la mise à jour de la table de données avec un sqlite3 UPDATE. Les données étaient correctement récupérées, bien envoyées sur influxDB où nous pouvions les visualiser en direct, avec la progression du script en cours possible en console. Cependant une erreur de manipulation de fichiers nous a fait perdre les deux dernières semaines. Bien que nous sachions comment faire, il va nous falloir un peu de temps pour remettre au point le programme en l'état.\nCe problème aura au moins soulever le point que nous aurions du utiliser un système de versionnage comme Git plutôt que de se satisfaire de copier-coller de temps à autre.\nDu coup, voici le lien du nouveau Git : https://github.com/Nicolas-Havard/Apolline\nCette semaine nous avons récupéré le programme tel qu'il était avant la suppression des fichiers et avons donc retrouvé un script permettant d'envoyer les données sur influxdb avec la progression du déroulement du script en direct.\nPartie du script permettant d'envoyer les données sur la base influxDB et de mettre à jour la base de données pour indiquer que les valeurs ont été envoyées\nNous avons aussi mis au point la mise à jour de la base de données concernant le flag sent et son passage à 1 lorsque toutes les valeurs ayant été envoyées pour ce timestamp ont été récupérées pas l'application. Après quelques problèmes de syntaxe, nous sommes parvenus à résoudre notre problème en construisant la requête SQL dans une variable à part avant de la donnée en paramètre de la commande sqlite3. Comme nous pouvons le voir ci-dessous, la mise à jour de la base de données est bien prise en compte :\nDump de la base de données Sensors.db après l'exécution du script\nNous avons de plus ajouter un document permettant de visualiser les données ayant été envoyées par le programme, à la manière d'un historique, lors de la récupération des valeurs. Ce fichier est donc composé des éléments envoyés sous la forme ID_sensor | value | timestamp :\nExemple de valeurs récupérées lors de l'envoi des données grâce aux 'cut' du résultat de la requête\nCependant, à l'issu de ce programme, nous pouvons constaté que le temps d'envoi des données vers l'application web est long : environ 325 secondes, soit presque 5 min 30 pour envoyer 1000 valeurs. En partant de cette mesure, et en supposant que le temps d'exécution soit linéaire ou autrement dit en O(n) où n est le nombre de valeurs envoyées, étant donné que nous ne disposons que d'une boucle, il nous faudrait donc 3.5 secondes pour envoyer 10 valeurs soit 7 secondes pour en envoyer 20. Le noeud sur lequel nous avons pu faire des essais disposant de 18 capteurs, et prenant des mesures toutes les 30 secondes, il nous faudrait donc "perdre" 7 secondes toutes les 30 secondes pour envoyer les valeurs sur le serveur.\nIl est toutefois possible d'améliorer ce programme en complexité. En effet, cURL peut prendre en argument un fichier de valeurs à envoyer. Ce fichier pouvant contenir jusque 5 000 valeurs, il nous faudrait faire des fichiers de 5000 lignes construits à partir du résultat de la requête SQL, en récupérant tout les timestamps envoyés pour ensuite les mettre à jour dans la base. Cette façon de procéder rajoute des contraintes tels que la gestion d'un timestamp dont certaines valeurs mesurées associées à ce timestamp seraient envoyées, mais pas toutes (valeur 4990 à 5000 par exemple et 8 valeurs qui seraient disposés dans le fichier suivant).\nCette solution nous permettrait donc de passer de n requêtes cURL à ceil(n/5000). Mais il nous faudrait en contrepartie prendre le temps de découper le fichier en fichiers de 5000 lignes, ce qui dans le cas d'une coupure internet pour le noeud, ne serait pas forcément négligeable non plus. Il nous faudrait donc tester cette possibilité.\nAfin de se rendre compte du fonctionnement du programme, nous avons réalisé la vidéo suivante :\nVidéo permettant de voir l'exécution du programme réalisé durant ce projet et envoyant les données sur une application influxDB\nNous avons ensuite voulu créer notre Dockerfile permettant la création d'une image prête à être utilisé pour mettre en place nos conteneurs. Ce Dockerfile s'appuie sur l'image d'origine ubuntu afin de pouvoir tester notre script ainsi que le reste du programme, mais pour notre tuteur, il aurait été plus logique d'utiliser une image permettant de lire le nodejs car il préfère avoir un rendu final sous forme d'application nodejs.\nDockerfile associé au projet\nNous tenons à préciser que ce dockerfile n'est qu'une ébauche de ce qui pourrait être réellement fait si nous poussions les capacités de Docker à fond.\nRapport : Rapport de projet\nLien vers git du script : https://github.com/Nicolas-Havard/Apolline\nRécupérée de « https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P49&oldid=58128 »\nCette page a été modifiée pour la dernière fois le 21 mai 2018 à 00:06.


Location Sèche linge pompe à chaleur Essentielb ESLHP8-1b | Boulanger Location\nréf : 000000000008008229\nLe sèche-linge pompe à chaleur ESSENTIELB ESLHP8-1b est une vraie combinaison de performance, polyvalence et design. Adapté à tous types de vêtements et textiles, il vous offrira un linge sec et frais. Grâce à sa pompe à chaleur et son système anti-froisse, même votre corvée de repassage sera minimisée.\nAdoptez le sèche-linge pompe à chaleur ESSENTIELB ESLHP8-1b et découvrez le plaisir du linge propre et sec en un clin d'œil. Avec une capacité de 8 kg, il est adapté à toutes familles. Son tambour est en inox et vous offre durabilité et tranquillité ainsi que des cycles silencieux. Au niveau design, il est élégant et facile d'utilisation : son écran LCD vous permet de choisir votre programme aisément.\nPerformant, le sèche-linge pompe à chaleur ESSENTIELB ESLHP8-1b vous propose plusieurs programmes adaptés à tous les types de linge. Sélectionnez séchage délicat, rapide, coton, synthétique, ou encore des programmes spéciaux comme linge bébé et sport. Polyvalent, il prendre vraiment soin des différentes matières. Installez et branchez simplement votre sèche linge ESSENTIELB pour l'utiliser. Il est doté d'un réservoir d'eau à vider entre deux utilisations.\nle sèche-linge pompe à chaleur ESSENTIELB ESLHP8-1b est bien pensé et dans l'air du temps. Sa classe énergétique A++ en fait un appareil respectueux de l'environnement et de votre porte-monnaie. Il dispose d'un système de création de chaleur innovant : sa pompe à chaleur intégrée contribue à vos économies et protège votre linge, même les vêtements les plus délicats. pratique, il aura un effet anti-froisse et facilitera le repassage.


Lamborghini location de voitures Luderitz , Namibie\nLamborghini voiture de location Luderitz, Namibie\nLamborghini voitures de location à Luderitz\nNous n'avons pas Lamborghini maintenant! S'il vous plaît vérifier toutes les voitures luxury disponibles!VérifierToyota Corollax 5x 3x 5\nLocation voiture Lamborghini près de Luderitz, Namibie\nAéroport Centre-ville Lamborghini Location de voiture dans les aéroports près de Luderitz\n255.17 mi / 410.66 km Location Lamborghini voitures au centre-ville autour de Luderitz\nNous n'avons pas Lamborghini maintenant! S'il vous plaît vérifier toutes les voitures luxury disponibles!VérifierToyota Yarisx 5x 3x 5\n257.83 mi / 414.94 km Laissez votre reve lecteur de voiture vous livre une Lamborghini sur Rentalcars24h.com! Cette supercar est plus vrai maintenant, alors ne manquez pas votre chance de conduire le plus legendaire vehicule jamais! Lamborghini de location de voiture Luderitz, Namibie est pret a vous donner les meilleurs prix pour ces spectaculaire italien de voitures - utilisez notre voiture de location, formulaire et de le verifier par vous-meme!\nRentalCars24h.com vous offre un service de haute qualite et fiables sur les vehicules modernes partout dans le monde avec plus de 30.000 emplacements dans plus de 176 pays. Nous sommes prets pour vos reservations 24/7. Pas de retards, pas cache les paiements simplement les prix les plus bas pour tous les types de voiture de location de vehicules. Assurez-vous que les Lamborghini de location de voiture Luderitz, Namibie vous fournira voiture exclusive et non moins exclusif attentif et un service amical.\nCelebre Lamborghini allie l'elegance et de la performance exceptionnelle. La conception de la voiture souligner que le vehicule a haute vitesse. La maniabilite et les 4 roues motrices transmission de vous faire confiance a votre securite sur la route. Ce vehicule tout-puissant vous garantit le general de l'attention partout ou vous allez en voiture, vous serez a l'honneur! Lamborghini de location de voiture Luderitz, Namibie vous propose de reserver Lamborghini Aventador, Lamborghini Gallardo Superleggera, la Lamborghini Gallardo LP560-4 Spyder ou d'une Lamborghini Gallardo Spyder.\nSur cette etonnante voiture, vous pouvez gagner de la vitesse de pointe de 309-350 km/h! Vous aurez a pincer pour croire ce n'est pas un reve, avec les Lamborghini de location de voiture Luderitz, Namibie c'est de la vraie! Ce vehicule exceptionnel peut passer de 0 a 100 km/h en 2,9 - 4 secondes (en fonction du modele). Vous pouvez egalement louer la version cabrio de cette supercar a laisser le vent jouer avec vos cheveux et sentir la vitesse. Carte de location de voitures Lamborghini autour de Luderitz, Namibie\nLamborghini de location de voiture Luderitz, Namibie est en attente pour vos reservations! Laissez vos reves - experience de la Lamborghini voyage a couper le souffle!\nVoiture Lamborghini emplacements à louer dans Luderitz


Quand "nuit et arc en ciel" tourne au cauchemar - Le blog de Annie\n<< Une autre moisson de fleurs... Le 1er mercredi de l'aprés.. >>\nPlaid " surprise " fragment 1\nDes rennes pour Julie\nPour Mr ou Melle BB, n°2\nPour Mr ou Melle Bébé\nIsa 22/10/2009 10:36\nAller Annie les photos !On veut le voir l'objet de tes déboires! Qu'elle perséverance tu as eue, chez moi il serait encore dans le panier à tricot!( d'ailleur il y en a un )\nBambina/louloux 22/10/2009 00:38\nrhooooo ma pauvre Annie.. moi j'aurais jeter le tout .. je te le dis moi .. tu as eu bien du courage de toute reprendre ainsi !!! bravo à toi et j'ai hâte de le voir ce fameux gilet !!\nValérie 21/10/2009 20:35\nHé bien quelle mésaventure, je crois que le mien aurais fini à la poubelle, j'admire ta persévérence !\nMaintenant j'espère que Julie ne reviendra pas avec un accroc....oh je plaisante Annie.\ntout chocolat 21/10/2009 18:59\nTu as dû te maudire!\ndevilgaby 21/10/2009 18:16\net bien quelle aventure , tu t'en aies sorti heureusement , moi je crois que j'aurais fichu le tout a la poubelle , j'ai pas un brin de patience et ça m'aurait tellement dégoutée que je me serais


Parle aux fils d’Israël, et dis-leur: Moi, je suis l’Éternel, votre Dieu.\nTu ne découvriras point la nudité de ton père, ni la nudité de ta mère: c’est ta mère; tu ne découvriras point sa nudité.\nTu ne découvriras point la nudité de la femme de ton père: c’est la nudité de ton père.\nLa nudité de la fille de ton fils ou de la fille de ta fille, — sa nudité, tu ne la découvriras point; car c’est ta nudité.\nLa nudité de la fille de la femme de ton père, née de ton père, — c’est ta sœur: tu ne découvriras point sa nudité.\nTu ne découvriras point la nudité de la sœur de ton père; elle est propre chair de ton père.\nTu ne découvriras point la nudité de la sœur de ta mère; car elle est propre chair de ta mère.\nTu ne découvriras point la nudité du frère de ton père; tu ne t’approcheras point de sa femme: elle est ta tante.\nTu ne découvriras point la nudité de ta belle-fille: elle est la femme de ton fils; tu ne découvriras point sa nudité.\nTu ne découvriras point la nudité de la femme de ton frère; c’est la nudité de ton frère.\nTu ne découvriras point la nudité d’une femme et de sa fille; tu ne prendras point la fille de son fils, ni la fille de sa fille, pour découvrir sa nudité; elles sont sa propre chair: c’est un crime.\nEt tu ne donneras point de tes enfants pour les faire passer par le feu à Moloc, et tu ne profaneras point le nom de ton Dieu. Moi, je suis l’Éternel.\nTu ne coucheras point avec un mâle, comme on couche avec une femme: c’est une abomination.\nTu ne coucheras point avec une bête pour te rendre impur avec elle; et une femme ne se tiendra pas devant une bête, pour se prostituer à elle: c’est une confusion.\nVous ne vous rendrez point impurs par aucune de ces choses, car c’est par toutes ces choses que les nations que je chasse devant vous se sont rendues impures;\net le pays s’est rendu impur; et je punis sur lui son iniquité, et le pays vomit ses habitants.\nMais vous, vous garderez mes statuts et mes ordonnances, et vous ne ferez aucune de toutes ces abominations, ni l’Israélite de naissance, ni l’étranger qui séjourne au milieu de vous;\ncar les hommes du pays, qui y ont été avant vous, ont pratiqué toutes ces abominations, et le pays en a été rendu impur;\nEt vous garderez ce que j’ai ordonné de garder, en sorte que vous ne pratiquiez pas les coutumes abominables qui se sont pratiquées avant vous; et vous ne vous rendrez point impurs par elles. Moi, je suis l’Éternel, votre Dieu.


Alexandre Astier papa pour la septième fois : il dévoile le prénom du bébé - Purebreak\nPar Marie Piat - le 22/07/2020 à 11h56 - 29 partages\nDésormais, Alexandre Astier est papa de deux filles et de cinq garçons. Le créateur de Kaamelott est en effet devenu père pour la septième fois d'un adorable Isaac. Né du fruit de ses amours avec sa compagne Luna Karys, il s'agit du deuxième enfant pour le couple. Et les messages de félicitations pour ce nouveau-né ont été nombreux.\nAlexandre Astier est de nouveau papa\nAlors qu'Alexandre Astier multiplie les projets professionnels, il réfléchit à une série d'animation et a dévoilé une nouvelle BD avant la sortie du film Kaamelott, dans sa vie privée aussi, tout va pour le mieux. L'artiste a fièrement annoncé être devenu papa pour la septième fois. "Isaac est né hier..." a-t-il ainsi écrit sur Facebook, sur Instagram et sur Twitter ce mardi 21 juillet 2020, en légende d'une photo en noir et blanc. Sur le cliché, on ne voit pas le bébé mais son bracelet d'hôpital précisant "Isaac Astier", "né le 20 juillet 2020".\nAlexandre Astier est déjà papa d'Ariane, Jeanne, Neil, Ethan, James et Aaron. Et si les cinq premiers enfants sont issus de sa longue relation avec Anne-Gaëlle Daval, notamment chef costumière de Kaamelott, Isaac est le deuxième enfant eu avec sa compagne Luna Karys (ils sont déjà parents d'Aaron, né en 2017).\nEn découvrant la naissance du baby boy, les internautes ont été nombreux à publier des messages de félicitations. Dans les commentaires, on peut ainsi lire des réactions des chanteurs Bigflo et Madame Monsieur, du comédien et champion d'air guitar Sylvain Quimène (Gunther Love), de l'animatrice Sandra Lou, du YouTubeur Farod ou encore de l'humoriste Elodie Poux.\nBrice Fournier alias Kadoc dans Kaamelott a même confié que c'est un "divin cadeau". Avec humour, la maman Luna Kaaris lui a répondu : "C'est à dire que j'avais pas d'idée cadeau cette année. Du coup j'ai prolongé l'attente de 2/3 jours". Et elle a aussi réagi à un tweet d'un fan qui déclarait : "Le mec crée des séries, des BD, des spectacles, des films, et a 7 gosses. J'arrive pas à faire mon jardin avec 2. Félicitations et santé à tous". "Le mec arrive pas à faire son jardin non plus, vous bilez pas" a-t-elle ainsi lâché.\nLe mec arrive pas faire son jardin non plus, vous bilez pas.\nC'est dire que j'avais pas d'ide cadeau cette anne. Du coup j'ai prolong l'attente de 2/3 jours.\nLe bébé tournera-t-il une scène dans le film Kaamelott ?\nLes enfants d'Alexandre Astier, Ariane, Jeanne, Neil et Ethan, avaient joué dans la série Kaamelott. Ariane et Jeanne ont incarné les filles de Karadoc et Mevanwi, Neil a interprété Arthur étant enfant et Ethan a représenté le rêve de descendance d'Arthur. Donc peut-être que les plus jeunes, James, Aaron et désormais Isaac, pourraient eux aussi faire une apparition dans le film, dont la sortie a été repoussée au 25 novembre 2020 à cause du coronavirus. C'est en tout cas ce que certains internautes espèrent, afin de découvrir le nouveau-né et l'ensemble de la progéniture de l'acteur, réalisateur, producteur, metteur en scène (et on en passe car la liste est encore longue).


Les animaux - CPIE Bocage de l'Avesnois\nL’inépuisable diversité de la nature se retrouve également chez les animaux. De manière ludique et lors de nombreuses sorties de terrain, les enfants sont invités à partir sur les traces des animaux (petits et gros) et à les observer pour comprendre leur mode de vie et apprendre à les respecter.\nLes ch’tis zozios\nLes traces de vie animale\nAprès un rappel sur la biologie des oiseaux et une sortie de terrain, les enfants réalisent des nichoirs et des mangeoires pour leur venir en aide. Puis ils découvrent que ceux-ci possèdent des territoires sonores.\nLieu : à l’extérieur.\nNiveau : cycle 3, CLIS\nRemarque : cette activité nécessite un matériel particulier (bois, marteaux…); un supplément ou l’apport de matériaux peut-être demandé.\nLes enfants découvrent l’inépuisable diversité de la nature au travers des oiseaux. Les apprentis ornithologues apprennent à manipuler une paire de jumelles, aiguisent leur écoute et abordent les comportements migratoires.\nNiveau : CE1 au lycée, CLIS\nElles ont souvent une mauvaise réputation : « petits vampires », « elles s’accrochent dans les cheveux »… Bien qu’inoffensives, elles sont pourtant détestées. Les enfants partent à la découverte de ces petits mammifères volants, fascinants et protégés : les chauves-souris.\nLes enfants explorent le cœur d’une prairie pour en découvrir les petites bêtes. Ils les classent et les déterminent. Puis, de manière ludique, ils comprennent leur cycle de vie, leur régime alimentaire et leur importance écologique.\nLieu : toute commune avec une prairie fleurie accessible.\nLes enfants observent les petites bêtes, combien les insectes ont-ils de pattes ? Les araignées sont-elles des insectes ? Après les avoir dessinées, des équipes partent à leur recherche et découvrent leur diversité.\nLieu : Toute commune avec un espace naturel.\nNiveau : de la maternelle au CP.\nGrenouille, salamandre, triton, qui sont-ils ? Que mangent-ils ? Où vivent-ils ? Les enfants abordent leur cycle de vie et apprennent par des jeux à les reconnaître et à les respecter.\nNiveau : du primaire au collège, CLIS\nLieu : au bord d’une mare.\nLes enfants découvrent de manière ludique les chaînes alimentaires. Lors d’ateliers, ils comprennent les adaptations aux différents régimes alimentaires et aux milieux (forme du bec, dentition, pattes…). Une synthèse permet de préciser les notions abordées.\nUn jeu permet aux enfants de découvrir la diversité des traces laissées par les animaux dans la nature. Une sortie sur le terrain, leur permet de les récolter ou de les prendre en photo. De retour en salle, ils les classent et les déterminent. Ils constatent ainsi la diversité animale présente dans le bocage.\nLieu : En salle et en extérieur.\nDe la cave au grenier, en passant par les coins de fenêtre, les animaux ont trouvé des endroits pour s’abriter et se reproduire. Les enfants les découvrent grâce à un jeu et comprennent l’importance des édifices construits quand certains milieux naturels se raréfient. Ils découvrent l’importance de cohabiter avec eux et comment ne pas leur nuire.\nNiveau : du CP au CM2, CLIS.\nLieu : Bellignies ou tout espace naturel fleuri\nLieu : Bellignies ou tout espace près d’une mare


TÉLÉCHARGER CHRONOMETRE POUR RUBIKS CUBE - ketnyelvu.info\nIl est courant de voir dans des vidéos des cubeurs finir le cube très rapidement avec les mouvements de la tranche du milieu. D'ailleurs, n'hésitez pas à visiter notre page Facebook très active! Ceux-ci vous permettent de changer le color scheme de votre cube sur votre écran ou la couleur du fond d'écran, et de modifier les paramètres plus approfondis. Sur le même thème. Une option très bien pensé et également très pratique! La photo ci-dessous vous montre comment est le timer pour Rubik's cube 3x3 juste avant le début d'une résolution. Lorsqu'il passe au vert, et que vous relacherez le doigt de votre écran, le timer démerra. C'est pourquoi, j'utilise 2 des méthodes plus haut afin d'optimiser mon temps pour résoudre cette algorithme.\nEn bonus, voici une vidéo de slow turning, une vidéo de résolution d'un 3x3 : peut être cela vous aidera t-il à apprendre quelques astuces! Pour vous montrer de manière la plus simple possible, je vais prendre exemple sur des formules et algorithmes existants.\nGrâce à des PLL je vais vous expliquer comment réaliser les mouvements le plus rapidement possible. Si vous ne connaissez pas l'algorithme, je montre au début des vidéos comment le réaliser au ralenti. Puis, dans ces vidéos décomposées en plusieurs parties, je montrerai plusieurs techniques afin que vous puissiez choisir en fonction de votre style de cubing les meilleurs mouvements.\nCet algorithme est un très bon entraînement pour réaliser les mouvements F. Dans cette vidéo, je montre les 3 principales méthodes pour faire les mouvements F.\nPour la PLL T, j'ai tendance a utiliser la méthode 1 ou je prend le coin avec les 2 doigts de préférence. Cependant, ces 3 méthodes vous permettront de faire cet algorithme, et donc les mouvements F de manière très rapide et le plus optimisé qui soit.\nDans un même algorithme, elle abrite plusieurs fois des mouvements F, et une seule des méthodes ci-dessus ne suffit pas toujours pour aller le plus vite possible. C'est pourquoi, j'utilise 2 des méthodes plus haut afin d'optimiser mon temps pour résoudre cette algorithme.\nPour mieux comprendre, regardez : Passons à présent à un algorithme qui pose souvent des problèmes, la PLL F.\nEn effet, ce n'est pas évident pour les personnes qui apprennent cette formule. Elle est souvent très lente pour les débutants qui la réalise en plus de 5 secondes. Ici, il s'agira de vous expliquer comment réaliser cet algorithme relativement compliqué à enchaîner.\nRegarde ça: TÉLÉCHARGER PHOTORCIT3 GRATUITEMENT\nJe vais vous montrer comment sortir une paire sans retourner son puzzle, comment passer sans s'arrêter les mouvements de la PLL F. Cela devrait vous permettre de réussir la PLL F en moins de 2 secondes. En effet, réaliser les mouvements sans la bonne technique est l'un des facteurs qui retarde le plus lors de la résolution d'un 3x3. Pourtant, avec la bonne technique, ce mouvement est intéressant à effectuer.\nDans la Permutation of Last Layer A, les mouvements D2 sont très présents, mais le principe est exactement pareil pour les mouvements D. Pour ce faire, vous devez utilisez vos annulaires. Il est courant de voir dans des vidéos des cubeurs finir le cube très rapidement avec les mouvements de la tranche du milieu. Mais lorsque vous réalisez leur algorithme, vous ne comprenez pas comment ils font pour aller aussi vite et faire ces 2 mouvements!\nJe vais vous dévoiler leur secret! Pour cela, c'est très simple, vous allez utiliser successivement utiliser votre annulaire puis votre majeur.\nCe mouvement pose souvent problème, je vais donc vous montrer comment le faire En un tour de main! Vous pouvez y retrouver le mélange ainsi que les secondes d'affichés lors de votre précédent mélange. La petite encoche au dessus est une fonctionalité très pratique, et qui n'est pas disponible sur Twisty timer dont j'en parlerai plus tard dans cette article. Sur la photo central, vous avez pu remarquer que c'est écrit en anglais.\nToutefois, contrairement à Twisty Timer, pas de graphique. Sur la photo à droite de votre écran, vous pouvez retrouver vos différents mélanges effectués. Vous avez également la possibilité de facilement les effacer en cliquant sur "edit".\nA présent, dans l'onglet "sessions", vous pouvez retrouver et éditer des sessions à votre guise. Par exemple, la session numéro 2 pourrai correspondre au 2e jour d'une session de résolution.\nVous avez aussi la possibilité de choisir parmi 3 event : 3x3, 2x2 ainsi que le megaminx. Avoir seulement 3 choix d'event est un peu regrettable pour les personnes souhaitant avoir le mélange avec les formules, mais il conviendra à la plupart des utilisateurs.\nAinsi que la durée qui détermine en combien de temps le cercle rouge passera au cercle vert lorsque vous démarrez manuellement votre timer. En effet, il éxiste 2 manières de le démarrer. Vous pouvez presser selon les réglages d'origines, 0. Lorsqu'il passe au vert, et que vous relacherez le doigt de votre écran, le timer démerra.\nToutefois, si vous sortez votre doigt du cercle vert le timer ne démarra pas et reprendra sa page d'origine. Pratique non? En effet, vous avez pu remarquer dans les réglages précedement que l'on pouvait activer ou non cette option.\nComme vous pouvez le voir, il est disponible gratuitement sur le Play store. Vous pouvez également voir votre meilleur temps de la sesion en bas à droite, ainsi que votre temps le plus mauvais.\nEn plus de cela, il affiche votre moyenne totale, et votre meilleur moyenne sur 5 et 12 mélanges Average of 5 et Average of La photo ci-dessous vous montre comment est le timer pour Rubik's cube 3x3 juste avant le début d'une résolution. Mais cela n'entache pas vraiment la qualité de cette application.\nMalheureusement, les options sont en anglais. Mais croyez en mon expérience, ce n'est pas grave. Il faut être déjà un très bon connaisseur du monde du speedcubing , pour vraiment vouloir utiliser toutes les options.\nMais depuis , les stars de la discipline, qui apprennent de longues formules pour améliorer leurs rotations, ne cessent de faire baisser le compteur, comme Feliks Zemdegs, Australien de 21 ans, qui détient huit records mondiaux. Oscar, un Danois de 24 ans, tourne et retourne son cube entre les doigts avant de s'asseoir à la table de compétition. A ses côtés, une autre "cubber", sweat aux couleurs du Danemark sur les épaules, l'assiste dans sa préparation: "je colle des petits aimants sur chaque pièce qui compose le cube pour qu'il soit plus stable et plus fluide", dit-elle à l'AFP.\nIl a aussi installé une application sur son téléphone pour répéter les combinaisons. F2, déplacer deux fois la face en face moi, et ainsi de suite" explique le lycéen qui vit à Lyon. Démonstration: en à peine 25 secondes, son cube est parfaitement aligné.


par moi le Mer 1 Avr 2009 - 19:55\nPensez-vous que l'on puisse aborder le théâtre en quatrième en groupement de textes (sur Molière, je sais que c'est au programme) ou est-il obligatoire d'étudier une oeuvre intégrale ?\nJe l'ai toujours étudié en oeuvre intégrale mais là, par manque de temps, par ras-le bol aussi j'avoue de toujours étudier l'Avare ou Le Bourgeois gentilhomme, j'ai pensé qu'en groupement je serais plus libre...\nDites-moi si vous l'avez déjà fait ; si cela a bien fonctionné (quels thèmes avez-vous alors privilégiés pour l'étude des textes?) ; si c'est contraire aux programmes...\nJ'ai grand besoin de vos lumières\npar alinette le Mer 1 Avr 2009 - 20:42\nEt tu ne peux pas faire le Cid ? Ça passe assez bien. Molière est souvent vu en cinquième.\nC'est vrai que contrairement au roman j'ai du mal à faire le théâtre en GT.\nLa date/heure actuelle est Jeu 15 Nov 2018 - 20:00


PROTOCOLE SANITAIRE | BRASS\nPROTOCOLE SANITAIRE COVID-19 BRASS à partir du 01/01/2022\n▶ Informations communiquées au personnel et aux usager.e.s\nTousser ou éternuer dans le coude ou dans un mouchoir en papier jeté immédiatement dans une poubelle avec couvercle\nLe port du masque nez-bouche est obligatoire pour toute personne âgée de 6 ans ou plus.\nCes informations sont affichées à des endroits stratégiques du bâtiment (portes / ascenseurs) dans les 2 langues nationales. Elles sont également envoyées aux usagers lors des inscriptions à une activité ou d’un partenariat. Un rappel est placé sur le site web.\n▶ Visites et paiements\n▶ Informations sur le Covid Safe Ticket (C.S.T.) +\nLe CST est demandé à partir de 12 ans – sauf si les participant.e.s font partie d’un groupe scolaire – dans tous les secteurs et événements concernés. Les personnes qui ne sont pas soumises au CST doivent porter le masque (à partir de 6 ans) dans les secteurs et événements concernés.\n▶ Nombre d’usager.e.s


Amazon.fr - Phonétique progressive du français - Niveau avancé - Livre + corrigés - Lucile Charliac, Annie-Claude Motron - Livres\nPhon%C3%A9tique+progressive+du... a été ajouté à votre Panier\nPhonétique progressive du français - Niveau avancé - Livre + corrigés Broché – 5 juillet 2006\nAnnie-Claude Motron (Auteur)\n› Consulter la page Annie-Claude Motron d'Amazon\nEUR 22,00 EUR 39,96\nEUR 22,00 4 d'occasion à partir de EUR 39,96 2 neufs à partir de EUR 22,00\nEn dépit de l'intérêt que présentent les documents authentiques, leur caractère moins fiable et moins mesurable a imposé la fabrication d'un corpus de phrases élaboré dans une perspective pédagogique. Lors de la conception de l'ouvrage, la langue a toujours été considérée comme un outil de communication linguistique dont ne sont exclues ni la gestuelle ni la fonction pratique; l'une des préoccupations constantes a été de créer des exercices qui présentent des situations différentes dans des contextes linguistiques et socioculturels variés, encourageant ainsi le développement simultané des compétences relationnelles et langagières.\n1re partie: le rythme, il s'agit de produire des phrases qui correspondent au mouvement rythmique du français, tout en respectant lesphénomènes de continuité ainsi que d'autres spécificités de l'oral.\n2e partie: les intonations neutres. Les phénomènes et les variations de l'intonation sont, en français seulement, intimement liés aux caractéristiques du rythme, étudiées dans la première partie.\n3e partie: l'expression des principales émotions. Les schémas fondamentaux des manifestations expressives et de leurs variations se greffent sur les intonations de base étudiées dans la deuxième partie.\n4e partie: les différents styles. Il s'agit de présenter à l'apprenant les outils articulatoires, intonatifs, syntaxiques et lexicaux lui permettant de s'adapter à différentes situations de communication, et par conséquent d'apprendre à décoder les éléments constitutifs des différents styles pour les utiliser à bon escient.\nCet article :Phonétique progressive du français - Niveau avancé - Livre + corrigés par Lucile Charliac Broché EUR 22,00\nPhonétique progressive du français - Niveau intermédiaire - Livre + CD - 2ème édition par Lucile Charliac Broché EUR 26,90\nPhonétique progressive du français - Niveau intermédiaire. Corrigés Brochure EUR 9,85\nPhonétique progressive du français - Niveau intermédiaire - Livre + CD - 2ème édition\nPhonétique progressive du français - Niveau intermédiaire. Corrigés\nEditeur : Clé International (5 juillet 2006)\nDimensions du produit: 18,8 x 1 x 25,7 cm\nClassement des meilleures ventes d'Amazon: 94.512 en Livres (Voir les 100 premiers en Livres)\nn°980 dans Livres > Dictionnaires, langues et encyclopédies > Français langue étrangère (FLE)\nn°1287 dans Livres > Etudes supérieures > Collections de A à Z\nn°3296 dans Livres > Dictionnaires, langues et encyclopédies > Langues étrangères\nPhonétique progressive du français - Niveau intermédiaire - Livre + CD - 2ème édition Broché\nPhonétique progressive du français - Niveau intermédiaire. Corrigés Brochure\nLes 500 Exercices de Phonétique B1/B2 - Livre + corrigés intégrés + CD audio MP3 Broché\nPhonétique progressive du français - Niveau avancé - CD audio collectif CD\nParLarie Shawle 3 octobre 2016 - Publié sur Amazon.com


Parti communiste Syrien Unifié : Une lettre à tous les partis communistes et ouvriers - Faire Vivre le PCF !\nParti communiste Syrien Unifié : Une lettre à tous les partis communistes et ouvriers\t>\nVendredi 22 mars 2013 , par communistes , popularité : 3%\nNous publions ci-dessous une lettre du Parti communiste Syrien unifié qui vient d’être adressé à tous les partis communistes et ouvriers du monde. Une fois de plus nous exprimons la solidarité du Parti Algérien pour la Démocratie et le Socialisme et de son organe "Le Lien" avec la classe ouvrière et le peuple de Syrie qui, avec courage et dignité et au prix d’énormes sacrifices humains et matériels, font face aux forces coalisées de l’impérialisme, des monarchies du Golf aux dirigeants réactionnaires de Turquie et sionistes d’Israël. Nous rappelons les positions adoptées par le PADS à ce sujet qui sont contenues dans sa déclaration de septembre 2011 et dans l’intervention présentée par son représentant à la dernière rencontre internationale des Partis communistes et ouvriers qui s’est déroulée à Beyrouth en novembre 2012. Le PADS déploiera tous les efforts nécessaires pour amplifier la solidarité des Algériens avec le peuple Syrien. Ci-dessous le contenu de la lettre du Parti communiste Syrien Unifié qui a été traduite de l’Anglais par la rédaction du Lien.\nPADS (Parti Algérien pour la Démocratie et le Socialisme)\nVous savez que notre pays - la Syrie - a été exposé depuis plus de vingt mois, à une guerre déclenchée contre elle par un tas de pays impérialistes, aux côtés d’autres pays qui tournent autour d’eux comme des satellites. Leur but est de détruire l’Etat Syrien qui se tient comme un obstacle sur le chemin de ceux qui essaient d’imposer le plan d’un "grand Moyen Orient", après avoir brisé les états de la région en les partageant en petites entités combattant les unes contre les autres, afin d’imposer une domination absolue sur les ressources pétrolières et en gaz ; et éliminer le problème Palestinien d’une manière entièrement opposée aux intérêts du peuple Palestinien.\nCes pays ont manipulé les erreurs et les défauts du régime d’un côté, et les mouvements s’opposant à ces défauts. Les mouvements étaient au début pacifiques, ensuite certains se transformèrent en mouvements armés, qui ont reçu le soutien sur une vaste échelle de l’alliance qui a émergé comprenant les USA, la Turquie, le Qatar et l’Arabie Saoudite. La Turquie a occupé la frontière existante avec la Syrie, pour aider la contrebande des armes, l’entrée de milliers de mercenaires se nommant eux-mêmes Jihadistes. Ils ont instauré des camps pour l’entraînement de leurs soutiens et de leurs alliés. Des milliards de pétrodollars US ont été dispensés dans ce but. Ils ont eu recours aux formes les plus provocantes de la guerre psychologique afin qu’elles soient utilisées par les services d’environ une centaine de stations de TV pour semer dans les esprits le sectarisme et les conflits ethniques parmi les membres du même peuple. Ensuite, les prétendus groupes djihadistes ont agi pour détruire l’économie syrienne ; ils ont déclaré la guerre contre le peuple syrien en employant l’embargo économique et les sanctions. Des attaques armées furent déclenchées contre les propriétés populaires et privées. Des explosifs et des camions chargés d’explosifs furent aussi utilisés.\nLes stations génératrices d’électricité ont été dynamitées, des câbles des réseaux aériens transportant l’électricité ont été sabotés, les puits de pétrole ont été incendiés, les tankers transportant le pétrole ont été brûlés. Des milliers de tonnes d’acier ont été dérobées et passées en contrebande en Turquie. Environ un millier d’usines et ateliers à Alep ont été pillés. Les machines appartenant à ces usines ont été vendus en Turquie à de bas prix sous la forme d’accessoires, les projets d’irrigation et également les centres d’élevage des animaux ont été attaqués, les routes reliant les villes et les cités entre elles à travers la Syrie ont été fermées ; les centres de santé, les écoles et les universités ont été ciblées. Des scientifiques, des docteurs ont été attaqués, kidnappés ou capturés et souvent assassinés.\nCertaines victimes ont été décapitées. D’autres ont été mutilées. Ces formes de crimes appartiennent au moyen-âge.\nCes actions sont opposées d’une manière flagrante au droit international qui interdit à tout pays d’utiliser ses territoires pour attaquer ses voisins. Nous savons que la Turquie, seule, ne peut pas du tout accomplir ces choses sans le soutien des États-Unis d’Amérique, des pays européens et du Golfe. De toute manière, la Syrie qui est un pays d’auto-défense résiste à cette agression et inflige de lourdes pertes à ces gangs. En conséquence, les criminels et aussi bien les terroristes ne sont pas en mesure d’atteindre tous leurs objectifs. Mais les Syriens paient un lourd prix dans leur résistance.\nIl y a deux jours, un nouveau développement s’est produit et il est susceptible de changer la direction des événements en Syrie. En effet, que signifie l’agression soudaine d’Israël contre le centre de recherche scientifique de Syrie près des frontières Syriennes et Libanaises. Avec une telle agression, Israël démasque son essence réelle et ses tentatives de manipuler les événements actuels en Syrie pour affaiblir l’armée Syrienne et ouvrir de nouveaux fronts.\nEnviron trois millions de citoyens Syriens ont fui leurs domiciles et deviennent des réfugiés constamment déplacés dans les pays voisins, vivant dans des conditions misérables incroyables avec des besoins en nourriture et médicaments non satisfaits. Ces réfugiés en appellent à l’opinion publique internationale pour faire pression sur les gouvernements des USA et d’Europe, du Qatar et de l’Arabie Saoudite afin de mettre un terme au siège économique et aux sanctions imposées à la Syrie. En outre, ils demandent que le soutien armé aux gangs cesse immédiatement, parce qu’ils menacent non seulement la Syrie mais un grand nombre de lieux dans le monde.\nTiré du site du journal du PADS, Le Lien


projet ................. - Page 2\nSujet: Re: projet ................. Lun 2 Mar - 12:26\ndougy au platine ...\nSujet: Re: projet ................. Lun 2 Mar - 14:35\nje s'en que je vais tout faire pour etre present suivant les finances\nSujet: Re: projet ................. Lun 2 Mar - 15:27\nau niveau des date .......................\nmai-juin ................................... quand il fera beau koi, un petit avant gout des vaccances.\npar contre il faut trouver le lieu.\nSujet: Re: projet ................. Lun 2 Mar - 16:12\nen juin surtout pas le week end du 13 et 14 lol on a une autre beuvrie d'organisée\nSujet: Re: projet ................. Lun 2 Mar - 18:42\nmai pour moi\nSujet: Re: projet ................. Mar 3 Mar - 12:03\nMerde c'est con... j'aurai su .... j'aurai proposé a ceux qui voulais venir avec moi et ma miss de venir a la montagne!!!!\nA peu pres 7h de route....\nUn peu d'autoroute pour eviter les route merdiques... et le reste par nationnale!!!!\nMais bon la montagne et le froid ça tente pas tout le monde!!!\nEt je sais pas si ma tante aurai pas halluciné de voir autant de dingue arriver chez elle!!!\nSinon l'idée est tres sympa!!!!! a reflechir!!!\nSujet: Re: projet ................. Mar 3 Mar - 13:53\nJve bien moi :P\nSujet: Re: projet ................. Mar 3 Mar - 19:19\nAh ben vi mais maintenant l'es trop tard on y est deja!!!!\nSujet: Re: projet ................. Mar 3 Mar - 19:24\nfait des photos et partage =P\nSujet: Re: projet ................. Mer 4 Mar - 19:09\nmoi je suis plutot partante pour resrvé dans un camping parce que comme le dit Coxpit en payant à plusieurs c'est axéssible ..................\net sutout il y aura des "DOUCHES" !!!!\n(dsl c'est mon coté fille qui ressort...)\nSujet: Re: projet ................. Jeu 5 Mar - 0:29\non loue un chalet a plusieur sur la cote picarde c' est po chere , j ' ai un camping simpa\nSujet: Re: projet ................. Ven 6 Mar - 16:11\ntu as un camping!!!!!\nje comprend mieux pourquoi t'as autant de caisses\nSujet: Re: projet ................. Ven 6 Mar - 21:15\nro arrête toi , no je connais un camping sympa\nSujet: Re: projet ................. Sam 7 Mar - 19:40\nEt oué enfin de retour du ski\nJe vois que le projet avance, c'est nikel.\nCoxpit tu peut faire tourner l'adresse du cite du camping?\nSujet: Re: projet ................. Sam 7 Mar - 20:31\nSujet: Re: projet ................. Mar 31 Mar - 19:58\nmoi pur ce qui veule, la deuxiéme semaine d'aout il y a personne chez mooi et j'ai un graaaaan dterrain pour acceuillir pleins de monde et accesible pour nos caisses... pelouse a gogo pour planter notre campement, parking surveiller et protéger\nsa serait pas en pleine nature mais en bordure d'un champs\nbref j'habite un collége... il y a de la place et sa pourrait au moiins étre sympas... ou méme une loooongue soirée!\nSujet: Re: projet ................. Mar 31 Mar - 20:01\nba béte comme idée\nSujet: Re: projet ................. Mar 31 Mar - 20:02\ncool pour faire des tof aussi\nSujet: Re: projet ................. Mar 31 Mar - 20:04\nSimpa ton plan\nSujet: Re: projet ................. Mar 31 Mar - 20:08\nmoi sa me dérange pas du tout, au contraire\nmais faudrait faire sa pendant les 2 premières semaines d'aout....\nba vuiii mes parents sont point la alors au tant en profiter a foooond\nSujet: Re: projet ................. Mar 31 Mar - 20:10\net en + y aura aucun voisin pour se plaindre du bruit !!!\npar contre on va tous prendre la douche chez toi ?\nSujet: Re: projet ................. Mar 31 Mar - 20:12\nau pire on demande comment fait tex lui qui vie dans ca caisse jour et nuit :D\nSujet: Re: projet ................. Mar 31 Mar - 20:13\npour la douche... coup de jet d'eau sur nos tronches et plus si courageux\nnon mais pour la douche... bah les filles en prioritées\nSujet: Re: projet ................. Mar 31 Mar - 20:14\nmoi le week end pourquoi pas !!\nje boss tout l'ete ...\nSujet: Re: projet ................. Mar 31 Mar - 20:16\nle week-end oui en plus s'a m'arrange car la première semaines d'aout je boss aussi\nSujet: Re: projet ................. Mar 31 Mar - 20:17\nle travail c'est la santée ...\nne rien faire c'est la conservé\nSujet: Re: projet .................