<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://wiki.mchobby.be/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=AntoineWrt</id>
	<title>MCHobby - Wiki - Contributions de l’utilisateur [fr]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.mchobby.be/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=AntoineWrt"/>
	<link rel="alternate" type="text/html" href="https://wiki.mchobby.be/index.php?title=Sp%C3%A9cial:Contributions/AntoineWrt"/>
	<updated>2026-09-17T02:24:33Z</updated>
	<subtitle>Contributions de l’utilisateur</subtitle>
	<generator>MediaWiki 1.35.0</generator>
	<entry>
		<id>https://wiki.mchobby.be/index.php?title=Mod%C3%A8le:Link-product-pi3plus&amp;diff=34017</id>
		<title>Modèle:Link-product-pi3plus</title>
		<link rel="alternate" type="text/html" href="https://wiki.mchobby.be/index.php?title=Mod%C3%A8le:Link-product-pi3plus&amp;diff=34017"/>
		<updated>2025-08-12T13:23:24Z</updated>

		<summary type="html">&lt;p&gt;AntoineWrt : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://shop.mchobby.be/fr/177-raspberry-pi-tous-modeles Raspberry Pi 5 et Raspberry Pi 4]&lt;/div&gt;</summary>
		<author><name>AntoineWrt</name></author>
	</entry>
	<entry>
		<id>https://wiki.mchobby.be/index.php?title=Mod%C3%A8le:Link-product-pi3bplus&amp;diff=34016</id>
		<title>Modèle:Link-product-pi3bplus</title>
		<link rel="alternate" type="text/html" href="https://wiki.mchobby.be/index.php?title=Mod%C3%A8le:Link-product-pi3bplus&amp;diff=34016"/>
		<updated>2025-08-12T13:23:16Z</updated>

		<summary type="html">&lt;p&gt;AntoineWrt : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://shop.mchobby.be/fr/177-raspberry-pi-tous-modeles Raspberry Pi 5 et Raspberry Pi 4]&lt;/div&gt;</summary>
		<author><name>AntoineWrt</name></author>
	</entry>
	<entry>
		<id>https://wiki.mchobby.be/index.php?title=Mod%C3%A8le:Link-product-pi3&amp;diff=34015</id>
		<title>Modèle:Link-product-pi3</title>
		<link rel="alternate" type="text/html" href="https://wiki.mchobby.be/index.php?title=Mod%C3%A8le:Link-product-pi3&amp;diff=34015"/>
		<updated>2025-08-12T13:23:10Z</updated>

		<summary type="html">&lt;p&gt;AntoineWrt : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://shop.mchobby.be/fr/177-raspberry-pi-tous-modeles Raspberry Pi 5 et Raspberry Pi 4]&lt;/div&gt;</summary>
		<author><name>AntoineWrt</name></author>
	</entry>
	<entry>
		<id>https://wiki.mchobby.be/index.php?title=Mod%C3%A8le:Link-product-pi2&amp;diff=34014</id>
		<title>Modèle:Link-product-pi2</title>
		<link rel="alternate" type="text/html" href="https://wiki.mchobby.be/index.php?title=Mod%C3%A8le:Link-product-pi2&amp;diff=34014"/>
		<updated>2025-08-12T13:23:01Z</updated>

		<summary type="html">&lt;p&gt;AntoineWrt : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://shop.mchobby.be/fr/177-raspberry-pi-tous-modeles Raspberry Pi 5 et Raspberry Pi 4]&lt;/div&gt;</summary>
		<author><name>AntoineWrt</name></author>
	</entry>
	<entry>
		<id>https://wiki.mchobby.be/index.php?title=Mod%C3%A8le:Link-product-pi&amp;diff=34013</id>
		<title>Modèle:Link-product-pi</title>
		<link rel="alternate" type="text/html" href="https://wiki.mchobby.be/index.php?title=Mod%C3%A8le:Link-product-pi&amp;diff=34013"/>
		<updated>2025-08-12T13:22:19Z</updated>

		<summary type="html">&lt;p&gt;AntoineWrt : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://shop.mchobby.be/fr/177-raspberry-pi-tous-modeles Raspberry Pi 5 et Raspberry Pi 4]&lt;/div&gt;</summary>
		<author><name>AntoineWrt</name></author>
	</entry>
	<entry>
		<id>https://wiki.mchobby.be/index.php?title=RaspberryPi-Accueil&amp;diff=34012</id>
		<title>RaspberryPi-Accueil</title>
		<link rel="alternate" type="text/html" href="https://wiki.mchobby.be/index.php?title=RaspberryPi-Accueil&amp;diff=34012"/>
		<updated>2025-08-12T13:21:01Z</updated>

		<summary type="html">&lt;p&gt;AntoineWrt : /* Bienvenue */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{device-links}}&lt;br /&gt;
&lt;br /&gt;
== Bienvenue ==&lt;br /&gt;
{{bloc-etroit|text=&lt;br /&gt;
&amp;lt;div class=&amp;quot;noprint&amp;quot; style=&amp;quot;margin-bottom: 15px; padding: 5px 5px 5px 5px; border-radius: 10px 10px 10px 10px; border: 1px solid rgb(229,229,299);&amp;quot;&amp;gt;&lt;br /&gt;
Bienvenue sur la page d'accueil [http://www.mchobby.be MicroControleur Hobby] alias MCHobby dédiée au {{link-product-pi}}.&amp;lt;br /&amp;gt;Vous pouvez bien entendu trouver ces produits sur le [https://shop.mchobby.be Shop de MCHobby]&amp;lt;br /&amp;gt;&lt;br /&gt;
Vous y trouverez l'information et/ou traductions que nous avons accumulé à propos du Raspberry Pi.&amp;lt;/div&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Découverte &amp;amp; système d'exploitation ==&lt;br /&gt;
{{ttuto-begin}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=Mise-à-jour EEPROM&lt;br /&gt;
  |descr=Mise à jour de la Boot EEPROM du Pi 5 ET installation d'un disque NVMe&lt;br /&gt;
  |img=tlogo-pi-boot-rom.jpg&lt;br /&gt;
  |link=RASP-BOOT-ROM-UPGRADE&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=Hat M.2&lt;br /&gt;
  |descr=Installer le Hat M.2 sur un Raspberry-Pi 5&lt;br /&gt;
  |img=tlogo-pi-hat-m2.jpg&lt;br /&gt;
  |url=https://arduino103.blogspot.com/2024/05/hat-m2-officiel-pour-raspberry-pi.html&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=Tour Pi 3&lt;br /&gt;
  |descr=Venez découvrir les nouveautés du Raspberry Pi 3&lt;br /&gt;
  |img=tlogo-rasp-pi-3.jpg&lt;br /&gt;
  |link=RASP-PI3&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=Pi Zero Tour &lt;br /&gt;
  |descr=Venez découvrir le Pi Zero et ses possibilités. Un joujou incroyable pour les Makers et Hackers.&lt;br /&gt;
  |img=tlogo-rasp-pi-zero.jpg&lt;br /&gt;
  |link=RASP-PIZERO&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=Pi Zero W Tour &lt;br /&gt;
  |descr=Venez découvrir le Pi Zero W. Un joujou incroyable pour les Makers et Hackers.&lt;br /&gt;
  |img=tlogo-rasp-pi-zero-w.jpg&lt;br /&gt;
  |link=RASP-PIZERO-W&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=Pi Zero Headless&lt;br /&gt;
  |descr=Donner une étincelle de vie à votre Pi Zero, Pi Zero W avec le minimum d'effort et de matériel.&lt;br /&gt;
  |img=tlogo-pi-headless.png&lt;br /&gt;
  |link=Pi-Zero-Headless&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=Whezzy Raspbian &lt;br /&gt;
  |descr=Distribution de la fondation Raspberry Pi. Dérivé de Debian et utilise XCFE comme environnement graphique&lt;br /&gt;
  |img=tlogo-rasp-Os-Wheezy.jpg&lt;br /&gt;
  |link=Rasp-Os-Whezzy&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=Moniteur DVI&lt;br /&gt;
  |descr=Raccordez votre Raspberry sur moniteur.&lt;br /&gt;
  |img=tlogo-dvi.jpg&lt;br /&gt;
  |link=Rasp-Moniteur-DVI&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=Périphériques USB et Pi&lt;br /&gt;
  |descr=Les périphériques USB et le Raspberry Pi.&lt;br /&gt;
  |img=tlogo-Rasp_USB.jpg&lt;br /&gt;
  |link=Rasp-Usb-Warning&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=Pi2: Boot et LEDs&lt;br /&gt;
  |descr=&amp;lt;strong&amp;gt;&amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Help!!! Mon Pi ne démarre pas&amp;lt;/font&amp;gt;&amp;lt;/strong&amp;gt;.&lt;br /&gt;
  |img=tlogo-Rasp-Pi2-Boot-et-LED.jpg&lt;br /&gt;
  |link=Rasp-Pi2-Boot-et-LED&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=Kill or not kill the SD&lt;br /&gt;
  |descr=Apprenez comment préserver la durée de vie de votre carte SD.&lt;br /&gt;
  |img=tlogo-SD-Killer.jpg&lt;br /&gt;
  |link=Rasp-SD-Preserver&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=Démarrage automatique&lt;br /&gt;
  |descr=Démarrer automatiquement un script Python sous Raspbian.&lt;br /&gt;
  |img=tlogo-autostart-script.jpg&lt;br /&gt;
  |link=Rasp-AutoStart-Script&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=Pi Desktop&lt;br /&gt;
  |descr=Un boîtier type NUC et disque SSD pour Raspberry-Pi 3. Transformer le Pi en nano ordinateur de bureau.&lt;br /&gt;
  |img=tlogo-pi-desktop.jpg&lt;br /&gt;
  |link=Pi-Desktop-Assemblage&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=Ressources&lt;br /&gt;
  |descr=Quelques liens utiles pour exploiter votre Pi.&lt;br /&gt;
  |img=tlogo-pi-ressources.jpg&lt;br /&gt;
  |link=Pi-Ressources&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=Objectifs HQ-CAM&lt;br /&gt;
  |descr=Quels objectif choisir pour sa HQCam&lt;br /&gt;
  |img=tlogo-pi-hqcam.jpg&lt;br /&gt;
  |link=Pi-HQ-CAM-LENS&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=SuperPI&lt;br /&gt;
  |descr=Créer un SuperCalculateur à base de Raspberry-Pi&lt;br /&gt;
  |img=tlogo-superpi.jpg&lt;br /&gt;
  |traduction=1&lt;br /&gt;
  |link=SuperPi-Accueil&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-end}}&lt;br /&gt;
&lt;br /&gt;
== Tutoriels ==&lt;br /&gt;
=== Prise en main ===&lt;br /&gt;
{{Ambox&lt;br /&gt;
| type       = delete&lt;br /&gt;
| image      = [[File:StopHand.png|40px|alt=Stop]]&lt;br /&gt;
| textstyle  = color: red; font-weight: bold; font-style: italic;&lt;br /&gt;
| text       = Nous n'insisterons jamais assez sur le fait qu'une fois connecté sur un réseau, votre Raspberry peut facilement devenir un serveur pirate si vous ne modifiez pas le mot de passe administrateur.&amp;lt;br /&amp;gt;Changer le mode de passe de l'administrateur &amp;quot;pi&amp;quot; avec la commande '''passwd'''... c'est capital pour la sécurité de votre réseau !&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{ttuto-begin}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=Agrandir la partition &lt;br /&gt;
  |descr=Agrandissez la partition principale de Wheezy Raspbian et Occidentalis&lt;br /&gt;
  |img=tlogo-rasp-partition.jpg&lt;br /&gt;
  |link=PI-Etendre-Partition&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=Clavier Belge&lt;br /&gt;
  |descr=Comment configurer un clavier Belge sur Pi.&lt;br /&gt;
  |img=tlogo-Rasp-ClavierBe.jpg&lt;br /&gt;
  |link=Rasp-Clavier-BE&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=Config Réseau &amp;amp; WiFi&lt;br /&gt;
  |descr=Comment se connecter sur Internet via WiFi ou réseau Ethernet, via interface graphique ou en ligne de commande&lt;br /&gt;
  |img=tlogo-Rasp-Network.jpg&lt;br /&gt;
  |link=Rasp-Config-Reseau&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=Changer Hostname&lt;br /&gt;
  |descr=Modifier le nom réseau de votre Raspberry-Pi pour qu'elle s'annonce avec un nom différent sur le réseau.&lt;br /&gt;
  |img=tlogo-Rasp-Hostname.jpg&lt;br /&gt;
  |link=Rasp-Config-Hostname&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=apt.adafruit.com&lt;br /&gt;
  |descr=Ajoutez le dépôt Adafruit et facilitez l'installation de vos logiciels.&lt;br /&gt;
  |img=tlogo-apt-adafruit-com.jpg&lt;br /&gt;
  |link=Rasp-APT-ADAFRUIT-COM&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=Overclocking &lt;br /&gt;
  |descr=Augmentez la vitesse de votre PI (Whezzy Raspian) en utilisant une méthode d'Overclocking.&lt;br /&gt;
  |img=tlogo-rasp-overclocking.jpg&lt;br /&gt;
  |link=PI-Overclocking&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=SSH&lt;br /&gt;
  |descr=Commander son PI en SSH... ou comment profiter du confort de son PC tout en prenant les rênes de son PI à distance :-).&lt;br /&gt;
  |img=tlogo-rasp-ssh.jpg&lt;br /&gt;
  |link=PI-SSH&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=Pi-Copier/Pi-Coller&lt;br /&gt;
  |descr=Copier/Coller super facile pour copier du code python vers un Raspberry super facilement.&lt;br /&gt;
  |img=tlogo-rasp-easycopypaste.jpg&lt;br /&gt;
  |link=PI-Easy-Copy-Paste&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=Préparer Python&lt;br /&gt;
  |descr=Préparation de Python pour faire de hacking électronique.&lt;br /&gt;
  |img=tlogo-rasp-python-update.jpg&lt;br /&gt;
  |link=Pi-Python-Prepa&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=Debuggeur Python&lt;br /&gt;
  |descr=&amp;lt;strong&amp;gt;PuDB&amp;lt;/strong&amp;gt; est un déboggeur Python qui fonctionne en SSH!.&lt;br /&gt;
  |img=tlogo-rasp-python-pudb.jpg&lt;br /&gt;
  |link=Pi-Python-PuDB&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=Utiliser VNC&lt;br /&gt;
  |descr=Comment prendre le contrôle à distance de votre Pi grâce à VNC. Très utile pour faire des capture d'écran.&lt;br /&gt;
  |img=tlogo-Pi-Vnc.jpg&lt;br /&gt;
  |link=Pi-VNC&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=webIDE&lt;br /&gt;
  |descr=webIde permet de coder et exécuter des programmes depuis un navigateur Web (supporte Python, Ruby, JavaScript, ...).&lt;br /&gt;
  |img=tlogo-WebIde.jpg&lt;br /&gt;
  |link=Pi-WebIde&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=WiringPi&lt;br /&gt;
  |descr=Libraire d'accès GPIO en C, fort semblable à l'environnement Arduino, disposant de Wrapper en Python, Ruby, Java, ... et son célèbre utilitaire '''gpio'''&lt;br /&gt;
  |img=tlogo-WiringPi.jpg&lt;br /&gt;
  |link=Pi-WiringPi&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=USB Audio&lt;br /&gt;
  |descr=Module Audio USB pour Raspberry Pi&lt;br /&gt;
  |img=tlogo-USB-Audio.jpg&lt;br /&gt;
  |link=Pi-USB-Audio&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=MP3 sur Pi&lt;br /&gt;
  |descr=Utiliser mpg321 pour jouer des fichiers MP3 (sur notre blog)&lt;br /&gt;
  |img=tlogo-Audio-MP3.jpg&lt;br /&gt;
  |link=PI-Audio-MP3&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=PiFace&lt;br /&gt;
  |descr=Interface entrée/sortie pour Raspberry Pi destiné aux débutants et écoles. &amp;lt;b&amp;gt;Inclus contrôle avec Scratch.&amp;lt;/b&amp;gt;&lt;br /&gt;
  |img=tlogo-piface.jpg&lt;br /&gt;
  |link=PiFace-Manuel&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=PiFace 2&lt;br /&gt;
  |descr=Interface entrée/sortie pour Raspberry Pi 2/3 destiné aux débutants et écoles.&lt;br /&gt;
  |img=tlogo-piface2.jpg&lt;br /&gt;
  |link=PiFace2-Manuel&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=UniPi&lt;br /&gt;
  |descr=Carte d'extension pour réaliser un automate programmage à partir d'un Raspberry-Pi.&lt;br /&gt;
  |img=tlogo-unipi.jpg&lt;br /&gt;
  |link=UniPi-Manuel&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=PiBrella&lt;br /&gt;
  |descr=Carte d'interface super simple pour Raspberry&lt;br /&gt;
  |img=tlogo-Pibrella.jpg&lt;br /&gt;
  |link=PiBrella&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=RTC PCF8523&lt;br /&gt;
  |descr=Une horloge temps réel pour Raspberry-Pi&lt;br /&gt;
  |img=tlogo-PCF8523.jpg&lt;br /&gt;
  |link=RASP-PCF8523&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=PI Remote Screen&lt;br /&gt;
  |descr=Le Pi 3 autonome avec une tablette comme terminal&lt;br /&gt;
  |img=tlogo-pi-remote-screen.png&lt;br /&gt;
  |link=RASP-PI-REMOTE-SCREEN&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=HAT TV&lt;br /&gt;
  |descr=Configurer et utiliser le HAT TV&lt;br /&gt;
  |img=tlogo-hat-tv.jpg&lt;br /&gt;
  |link=RASP-HAT-TV&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-end}}&lt;br /&gt;
&lt;br /&gt;
=== Projets ===&lt;br /&gt;
&lt;br /&gt;
{{ttuto-begin}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=Projet DOMO&lt;br /&gt;
  |descr=Domotiser sa maison avec OpenRemote + Raspberry + Arduino. Un magnifique tutoriel de D. Swinnen&lt;br /&gt;
  |img=tlogo-projet-domo.jpg&lt;br /&gt;
  |link=PROJET-DOMO&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Retro-gaming avec PI&lt;br /&gt;
  |descr=Simuler une frappe clavier depuis le GPIO = Un vrai Retro-Gaming&lt;br /&gt;
  |img=tlogo-Retro-Games.jpg&lt;br /&gt;
  |link=Rasp-Retro-Games&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=PiGRRL 2&lt;br /&gt;
  |descr=Réaliser un émulateur de jeu portable avec un Pi 2 ou Pi 3, un PiTFT et un amplificateur audio.&lt;br /&gt;
  |img=tlogo-pigrrl-2.png&lt;br /&gt;
  |link=Rasp-PiGRRL-2&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Node-Red&lt;br /&gt;
  |descr=Utiliser Node-Red sur Raspberry-Pi. Gérer facilement vos flux, événements et actions avec un éditeur visuel.&lt;br /&gt;
  |img=tlogo-rasp-node-red.jpg&lt;br /&gt;
  |link=Rasp-Node-Red&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=RPi UMPC&lt;br /&gt;
  |descr=Réaliser et imprimer un UMPC Raspberry-Pi en imprimant les différents éléments.&lt;br /&gt;
  |img=tlogo-RPi-UMPC.jpg&lt;br /&gt;
  |link=Rasp-UMPC&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-end}}&lt;br /&gt;
&lt;br /&gt;
=== Programmation ===&lt;br /&gt;
&lt;br /&gt;
Un Raspberry peut se programmer avec de nombreux langages. Parmi la foule de langage, nous pouvons relever Python bien adapté à la découverte de la programmation, Scratch qui est un environnement graphique très attrayant et le langage C plutôt destiné au développeurs expérimentés.&lt;br /&gt;
&lt;br /&gt;
Voici quelques références utilisées par MCHobby, elles vous aiderons à apprendre Python.  Nul doute que vous en trouverez de nombreuses autres sur le Net... mais cette sélection est de qualité.  &lt;br /&gt;
&lt;br /&gt;
{{ttuto-begin}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=Progr. en Python &lt;br /&gt;
  |descr=Apprendre a programmer en Python (en-ligne). Par Vincent le Goff.&lt;br /&gt;
  |img=tlogo-rasp-Python-Programmer-LeGoff.jpg&lt;br /&gt;
  |link=PI-Python-Apprendre-en-Python&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=Progr. Python&lt;br /&gt;
  |descr=Programmation Python - Conception et optimisation de Tarek Ziadé.&lt;br /&gt;
  |img=tlogo-rasp-Python-Programmer-Ziade.jpg&lt;br /&gt;
  |link=PI-Python-Programmation-Python&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=Apprendre Python &lt;br /&gt;
  |descr=Apprendre a programmer Python et Python 3 (PDF, Gratuit) via un parcours académique. Par Gérard Swinnen.&lt;br /&gt;
  |img=tlogo-rasp-Python-Programmer.jpg&lt;br /&gt;
  |link=PI-Python-Apprendre-Python&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=UTF8, Unicode et encoding&lt;br /&gt;
  |descr=UnicodeDecodeError peut être votre pire cauchemar. Comprenez le afin qu'il ne soit plus un problème.&lt;br /&gt;
  |img=tlogo-Python-Encoding.jpg&lt;br /&gt;
  |link=PI-Python-Encoding&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=Python et Tkinter&lt;br /&gt;
  |descr=Des interfaces graphiques en Python avec Tkinter&lt;br /&gt;
  |img=tlogo-Python-tkinter-programming.jpg&lt;br /&gt;
  |link=PI-Python-TkInter-Programming&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=Pygubu&lt;br /&gt;
  |descr=Form Designer pour Tkinter. Liens vers vidéos d'apprentissage&lt;br /&gt;
  |img=tlogo-Python-pygugu.jpg&lt;br /&gt;
  |url=https://arduino103.blogspot.com/2023/09/pygubu-form-designer-pour-python.html&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=Python Turtle&lt;br /&gt;
  |descr=Apprendre Python avec Turtle en faisant du '''Logo en Python'''. &lt;br /&gt;
  |img=tlogo-Python-turtle.jpg&lt;br /&gt;
  |link=Python-Turtle-Online&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
{{ttuto-end}}&lt;br /&gt;
&lt;br /&gt;
Quelques références:&lt;br /&gt;
* [http://fr.wikipedia.org/wiki/Python_%28langage%29 Le langage Python] sur Wikipedia.fr.&lt;br /&gt;
* L'[http://www.afpy.org/ Association Francophone Python] (AFPY)&lt;br /&gt;
* [http://fr.openclassrooms.com/informatique/cours/apprenez-a-programmer-en-python Apprenez à programmer en Python] par Prolixe, sur fr.openclassrooms.com.&lt;br /&gt;
* Les [http://docs.python.org/2/ pages de documentation sur Python 2.7] (''Anglais'', Pyhton.org).&lt;br /&gt;
* La section [http://python.developpez.com/ Python sur Developpez.com]&lt;br /&gt;
* [http://effbot.org/imagingbook/imagedraw.htm PIL - Python Image Library] - les commandes de dessins (''effbot.org'', anglais)&lt;br /&gt;
&lt;br /&gt;
=== Tutoriels - Hacking électronique ===&lt;br /&gt;
Pour tous ces tutoriels, assurez vous d'avoir accomplit la section&amp;quot;préparation Python&amp;quot; ci-avant.&lt;br /&gt;
&lt;br /&gt;
{{ttuto-begin}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Raspberry GPIO &lt;br /&gt;
  |descr=Le GPIO du Raspberry B ou '''Pi 3''', Pi 2, Pi B+, Pi Zero, '''Pi Zero W''' en détail avec utilisation GPIO, I2C, etc&lt;br /&gt;
  |img=tlogo-Rasp-Hack-GPIO40.jpg&lt;br /&gt;
  |link=Rasp-Hack-GPIO&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Pi Cobbler&lt;br /&gt;
  |descr=Raccordez un PI sur une plaque de prototypage&lt;br /&gt;
  |img=RASP-ADFCOBBLER (mini).jpg&lt;br /&gt;
  |link=PI-Cobbler&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Pi LEDs&lt;br /&gt;
  |descr=Commander des LEDs avec votre PI&lt;br /&gt;
  |img=Rasp-Hack-LED (mini).jpg&lt;br /&gt;
  |link=Rasp-Hack-LED&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Pi GMail LED&lt;br /&gt;
  |descr=Vérifier les e-mails en attente sur GMail et allumer une LED&lt;br /&gt;
  |img=Rasp-Hack-GMAIL-LED (mini).jpg&lt;br /&gt;
  |link=Rasp-Hack-GMAIL-LED&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Pi Button&lt;br /&gt;
  |descr=Détecter l'état d'un bouton avec PI et allumer une LED.&lt;br /&gt;
  |img=Rasp-Hack-PiButton (mini).jpg&lt;br /&gt;
  |link=Rasp-Hack-PiButton&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Senseur PIR&lt;br /&gt;
  |descr=Détecteur de proximité de type PIR (alarme)&lt;br /&gt;
  |img=Rasp-Hack-PiPir (mini).jpg&lt;br /&gt;
  |link=Rasp-Hack-PiPir&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Lecture Analogique MCP3008&lt;br /&gt;
  |descr=Réaliser une lecture analogique à l'aide d'un MCP3008.&lt;br /&gt;
  |img=Rasp-Hack-PiAnalog (mini).jpg&lt;br /&gt;
  |link=Rasp-Hack-PiAnalog&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=MCP23017 pour ajouter des I/O&lt;br /&gt;
  |descr=Ajouter des entrées/sorties avec un MCP23017.&lt;br /&gt;
  |img=Rasp-Hack-MCP23017.jpg&lt;br /&gt;
  |link=Rasp-Hack-MCP230XX&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Senseur à Effet Hall&lt;br /&gt;
  |descr=Utiliser un senseur digital US5851LUA (populaire chez Arduino).&lt;br /&gt;
  |img=Rasp-Hack-Hall (mini).jpg&lt;br /&gt;
  |link=Rasp-Hack-Hall&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=DHT11, DHT22&lt;br /&gt;
  |descr=Utiliser le senseur d'humidité DHT11, DHT22 ou AM2302 sur votre Pi.&lt;br /&gt;
  |img=Rasp-Hack-DHT22.jpg&lt;br /&gt;
  |link=Rasp-Hack-DHT22&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Câble Console&lt;br /&gt;
  |descr=Câble Console USB-Série TTL, connectez vous à votre PI sans souris, clavier et écran.&lt;br /&gt;
  |img=Rasp-Hack-USB-Serie-TTL (mini).jpg&lt;br /&gt;
  |link=Rasp-Hack-USB-Serie-TTL&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Serveur HDMI&lt;br /&gt;
  |descr=Transformer un Raspberry Pi en serveur d'affichage HDMI pour Arduino... un '''HDMI Shield''' abordable&lt;br /&gt;
  |img=Rasp-Hack-HDMI-Serveur (mini).jpg&lt;br /&gt;
  |link=Rasp-Hack-HDMI-Serveur&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Afficheur LCD&lt;br /&gt;
  |descr=Afficher des informations sur votre PI avec LCD Monochrome, RGB et GPIO Extender + LCD&lt;br /&gt;
  |img=Rasp-Hack-Afficheur-LCD (mini).jpg&lt;br /&gt;
  |link=Rasp-Hack-Afficheur-LCD&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Contrôleur Led&lt;br /&gt;
  |descr=contrôler une matrice LED ou un afficheur 7 segments d'AdaFruit avec votre PI.&lt;br /&gt;
  |img=Rasp-Hack-Led-Backpack (mini).jpg&lt;br /&gt;
  |link=Rasp-Hack-Led-Backpack&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Pont-H L293&lt;br /&gt;
  |descr=Contrôler des moteurs a courant continu (sens et vitesse) avec un Pont-H, PWM et votre PI.&lt;br /&gt;
  |img=Rasp-Hack-L293 (mini).jpg&lt;br /&gt;
  |link=Rasp-Hack-L293&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Moteur Pas-à-Pas&lt;br /&gt;
  |descr=Contrôler un moteur pas-à-pas avec votre Pi à l'aide des circuit-intégrés L293D ou ULN2803.&lt;br /&gt;
  |img=Rasp-Hack-Stepper (mini).jpg&lt;br /&gt;
  |link=Rasp-Hack-Stepper&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Hat Moteur&lt;br /&gt;
  |descr=Contrôler des moteurs continus ou moteurs pas-à-pas avec votre Raspberry-Pi et la Hat Moteur / Motor Hat.&lt;br /&gt;
  |img=Rasp-Hat-Moteur.jpg&lt;br /&gt;
  |link=Rasp-Hat-Moteur&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=ArduPi-I2C&lt;br /&gt;
  |descr=&amp;lt;strong&amp;gt;Raspberry-Pi et Arduino qui communiquent via le bus I2C&amp;lt;/strong&amp;gt;... de la dynamite!&lt;br /&gt;
  |img=tlogo-ArduPi-I2C.jpg&lt;br /&gt;
  |link=ArduPi-I2C&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Pi-Shield LCD 2x16 RGB + Keypad&lt;br /&gt;
  |descr=Afficheur 2x16 caractères, rétro-éclairage RGB + Keypad sous forme de &amp;lt;strong&amp;gt;Pi-shield pour Raspberry&amp;lt;/strong&amp;gt; via le bus I2C!&lt;br /&gt;
  |img=RASP-LCD-RGB.jpg&lt;br /&gt;
  |link=RASP-LCD-RGB&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=GPS pour Raspberry&lt;br /&gt;
  |descr=Utiliser le câble console (ou l'UART) et le GPS ultime pour traquer votre Pi!&lt;br /&gt;
  |img=tlogo-RASP-GPS-ULTIME.jpg&lt;br /&gt;
  |link=RASP-GPS-ULTIME&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Pi TFT&lt;br /&gt;
  |descr=Un TFT 320x240 2.8 pouce + écran tactile pour Raspberry Pi!&lt;br /&gt;
  |img=tlogo-PiTFT.jpg&lt;br /&gt;
  |link=RASP-PiTFT&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Pi TFT PLUS&lt;br /&gt;
  |descr=Un TFT 480x320 3.5 pouce + écran tactile pour Raspberry Pi 2, A+, B+!&lt;br /&gt;
  |img=tlogo-PiTFT-Plus.jpg&lt;br /&gt;
  |link=RASP-PiTFT-PLUS&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=RPi ShieldBridge&lt;br /&gt;
  |descr=Un Arduino sur un Pi... le meilleur des deux mondes!&lt;br /&gt;
  |img=tlogo-RPi-ShieldBridge.jpg&lt;br /&gt;
  |link=RPI-ShieldBridge&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Mesurer la Pression&lt;br /&gt;
  |descr=Mesurer la pression avec un BMP0180 ou BMP085 via le bus I2C.&lt;br /&gt;
  |img=tlogo-Rasp-Hack-BMP085.jpg&lt;br /&gt;
  |link=Rasp-Hack-BMP085&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Pont-H L298 avec Pi&lt;br /&gt;
  |descr=Piloter des moteurs puissants avec un Raspberry-Pi et un Breakout L298.&lt;br /&gt;
  |img=tlogo-l298.jpg&lt;br /&gt;
  |link=Rasp-Hack-L298&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=EZ-Link - Appairage avec Android&lt;br /&gt;
  |descr=EZ-Link établit une connexion série(SPP) via Bluetooth vers l'hôte. Tuto de liaison PC/Raspberry &amp;lt;-&amp;gt; Android.&lt;br /&gt;
  |img=tlogo-EZLink-Test-Serie.jpg&lt;br /&gt;
  |link=EZ-LINK-TEST-SERIE&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Afficheur LCD USB&lt;br /&gt;
  |descr=Afficheur LCD USB super simple d'emploi pour votre Pi.&lt;br /&gt;
  |img=LCD-USB-TTL.jpg&lt;br /&gt;
  |link=LCD-USB-TTL-Raspberry&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Contrôleur Moteur DRV8835&lt;br /&gt;
  |descr=Contrôler facilement deux moteurs en Python avec cette carte Pi 2 et Pi B+.&lt;br /&gt;
  |img=tlogo-RASP-DRV8835.jpg&lt;br /&gt;
  |link=RASP-DRV8835&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=HAT matrice RGB&lt;br /&gt;
  |descr=Contrôlez une matrice RGB avec votre Pi&lt;br /&gt;
  |img=tlogo-RASP-HAT-MATRIX-RGB.jpg&lt;br /&gt;
  |link=RASP-HAT-MATRIX-RGB&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=MCP9808 - Température&lt;br /&gt;
  |descr=Senseur de température I2C de Précision pour Pi et BeagleBone en Python.&lt;br /&gt;
  |img=Tlogo-senseur-MCP9808.jpg&lt;br /&gt;
  |link=RASP-MCP9808&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Hat Sense et Astro-Pi&lt;br /&gt;
  |descr=La carte Hat Sense est un véritable mini-labo. Voici comment l'utiliser&lt;br /&gt;
  |img=tlogo-astro-pi.jpg&lt;br /&gt;
  |link=RASP-SENSE-HAT-ASTRO-PI&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Fona et Pi&lt;br /&gt;
  |descr=Utiliser la carte Fona avec Raspberry-Pi. &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Démonstration de faisabilité.&amp;lt;/font&amp;gt;&lt;br /&gt;
  |img=tlogo-fona-pi.jpg&lt;br /&gt;
  |link=RASP-FONA-PI&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Module 3G (HSDPA) et Pi-3&lt;br /&gt;
  |descr=Utiliser un module 3G pour obtenir une connexion internet (ou envoyer des SMS) avec son Pi 3.&lt;br /&gt;
  |img=tlogo-pi-3G.jpg&lt;br /&gt;
  |link=RASP-PI-3G&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Radio WiFi sur Pi&lt;br /&gt;
  |descr=Du streaming audio partout dans la maison !&lt;br /&gt;
  |img=tlogo-rdiowifi-pi.jpg&lt;br /&gt;
  |link=RASP-RDIOWIFI-PI&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=PyGameUI&lt;br /&gt;
  |descr=Les bases pour réaliser une interface graphique avec PyGameUI (y compris Thread, callable, SIGINT signal handler)&lt;br /&gt;
  |img=tlogo-pygame-gui.jpg&lt;br /&gt;
  |link=RASP-PYGAME-GUI&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Plex Media Server&lt;br /&gt;
  |descr=Utiliser un Raspberry-Pi 3 pour réaliser un Plex Media Server&lt;br /&gt;
  |img=tlogo-plex-media-server.jpg&lt;br /&gt;
  |link=RASP-PLEX-MEDIA-SERVER&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Breakout FT232H&lt;br /&gt;
  |descr=Ajouter un bus SPI, I2C, UART et GPIO via USB sur votre ordinateur (Win,Mac,Linux)&lt;br /&gt;
  |img=tlogo-ft232h.jpg&lt;br /&gt;
  |link=RASP-FT232H&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=PiOLED&lt;br /&gt;
  |descr=Un petit écran OLED 128x32 I2C pour créer une mini interface utilisateur pour les Pi sans écran. &lt;br /&gt;
  |img=tlogo-PiOled.png&lt;br /&gt;
  |link=RASP-PiOLED&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-end}}&lt;br /&gt;
&lt;br /&gt;
Autres tutoriels:&lt;br /&gt;
* [[RASP-GOF-GSM-GPRS|GSM/GPRS pour Raspberry]] - Utiliser un module GSM/GPRS avec votre Pi!&lt;br /&gt;
&lt;br /&gt;
=== Tutoriels - HiFiBerry ===&lt;br /&gt;
&lt;br /&gt;
{{ttuto-begin}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=HiFiBerry Présentation&lt;br /&gt;
  |descr=Du son HiFi pour votre Pi. Présentation de la gamme HiFiBerry&lt;br /&gt;
  |img=tlogo-HiFiBerry.jpg&lt;br /&gt;
  |link=Rasp-HiFiBerry&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=HiFiBerry Linux 3.18.x&lt;br /&gt;
  |descr=Configurer Linux 3.18.x pour HiFiBerry&lt;br /&gt;
  |img=tlogo-HiFiBerry-Linux-3.18.x.jpg&lt;br /&gt;
  |link=Rasp-HiFiBerry-Linux-3-18-x&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Logiciels supportés&lt;br /&gt;
  |descr=Logiciels supportés par HiFiBerry&lt;br /&gt;
  |img=tlogo-HiFiBerry-Logiciels.jpg&lt;br /&gt;
  |link=Rasp-HiFiBerry-Logiciels&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Installation Raspbian&lt;br /&gt;
  |descr=Sous-tutoriel: Mise-à-jour du noyau Raspbien (et autres distributions) pour une utilisation avec HiFiBerry.&lt;br /&gt;
  |img=tlogo-HiFiBerry-Upgrade-Kernel.jpg&lt;br /&gt;
  |link=Rasp HiFiBerry-Upgrade-Kernel&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Installation OpenElec&lt;br /&gt;
  |descr=Sous-tutoriel: Mise-à-jour OpenElec pour une utilisation avec HiFiBerry.&lt;br /&gt;
  |img=tlogo-HiFiBerry-Activation-OpenElec.jpg&lt;br /&gt;
  |link=Rasp-HiFiBerry-OpenElec&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Installation OpenElec 5&lt;br /&gt;
  |descr=Sous-tutoriel: Mise-à-jour OpenElec 5 pour une utilisation avec HiFiBerry.&lt;br /&gt;
  |img=tlogo-HiFiBerry-Activation-OpenElec5.jpg&lt;br /&gt;
  |link=Rasp-HiFiBerry-OpenElec5&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Installation OSMC&lt;br /&gt;
  |descr=Sous-tutoriel: Mise-à-jour OSMC pour une utilisation avec HiFiBerry.&lt;br /&gt;
  |img=tlogo-HiFiBerry-Activation-OSMC.jpg&lt;br /&gt;
  |link=Rasp-HiFiBerry-OSMC&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Player HiFi''-berry'' RuneAudio&lt;br /&gt;
  |descr=Création d'un lecteur audio connecté avec Pi 3 et mettez en oeuvre le Raspberry Pi AudioPhile Kit.&lt;br /&gt;
  |img=tlogo-Rasp-Hifi-Player.jpg&lt;br /&gt;
  |link=Rasp-Hifi-Player&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Player HiFi''-berry'' Volumio&lt;br /&gt;
  |descr=Création d'un lecteur audio connecté avec Pi 2/Pi 3 et une carte HiFiBerry. Un kit pour les AudioPhiles.&lt;br /&gt;
  |img=tlogo-Rasp-volumio.jpg&lt;br /&gt;
  |link=Rasp-Hifi-volumio&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-end}}&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* [http://arduino103.blogspot.be/2015/08/voici-un-petit-article-qui-explique.html Tutoriel d'assemblage du boitier Métal pour HiFiBerry DAC+] ([http://blog.mchobby.be blog.mchobby.be]) &lt;br /&gt;
* réaliser une puissante musique box à l'aide de HiFiBerry Amp+ et MusicPicker&lt;br /&gt;
&lt;br /&gt;
== Ressources ==&lt;br /&gt;
=== AdaFruit Learning System ===&lt;br /&gt;
Adafruit propose de nombreux tutoriels relatifs a Raspberry PI mettant en oeuvre ses produits.&amp;lt;br /&amp;gt;&lt;br /&gt;
MC Hobby est justement un distributeur AdaFruit, vous pourriez donc retrouver [http://www.mchobby.be ce/ces produits sur notre WebShop].&amp;lt;br /&amp;gt;&lt;br /&gt;
Ces derniers sont malheureusement en anglais mais nous pouvons toujours en traduire l'un ou l'autre sur demande (''nous avons justement des accords de traduction avec adaFruit :-)))'').&lt;br /&gt;
* [http://learn.adafruit.com/category/raspberry-pi AdaFruit Learning System for Raspberry PI]&lt;br /&gt;
=== Générale ===&lt;br /&gt;
* [http://www.themagpi.com/ The MagPi magazine] (en anglais mais libre)&lt;br /&gt;
* [http://www.pobot.org/spip.php?page=recherche&amp;amp;recherche=raspberry Raspberry Pi sur PoBot.Org] (En Français, avec l'aimable autorisation de Julien h./PoBot.org)&lt;br /&gt;
* Utiliser le GPIO sans avoir besoin d'être sudo ou Root.&amp;lt;br /&amp;gt;Des articles trouvés sur le Net:&lt;br /&gt;
** [http://dissectionbydavid.wordpress.com/2013/10/21/raspberry-pi-using-gpio-wiringpi-without-root-sudo-access/ Raspberry Pi – using GPIO / WiringPi without root (sudo) access] (''dissectionbydavid, anglais'')&lt;br /&gt;
** [http://www.raspberrypi.org/forums/viewtopic.php?f=32&amp;amp;t=32177 Tutorial: Elro remote power switch without root] (''RaspberryPi.org, anglais'')&lt;br /&gt;
{{MCH-Accord}}&lt;/div&gt;</summary>
		<author><name>AntoineWrt</name></author>
	</entry>
	<entry>
		<id>https://wiki.mchobby.be/index.php?title=RaspberryPi-Accueil&amp;diff=34011</id>
		<title>RaspberryPi-Accueil</title>
		<link rel="alternate" type="text/html" href="https://wiki.mchobby.be/index.php?title=RaspberryPi-Accueil&amp;diff=34011"/>
		<updated>2025-08-12T13:18:34Z</updated>

		<summary type="html">&lt;p&gt;AntoineWrt : /* Bienvenue */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{device-links}}&lt;br /&gt;
&lt;br /&gt;
== Bienvenue ==&lt;br /&gt;
{{bloc-etroit|text=&lt;br /&gt;
&amp;lt;div class=&amp;quot;noprint&amp;quot; style=&amp;quot;margin-bottom: 15px; padding: 5px 5px 5px 5px; border-radius: 10px 10px 10px 10px; border: 1px solid rgb(229,229,299);&amp;quot;&amp;gt;&lt;br /&gt;
Bienvenue sur la page d'accueil [http://www.mchobby.be MicroControleur Hobby] alias MCHobby dédiée au {{link-product-pi5}}, {{link-product-pi4}}, {{link-product-pi3}}, {{link-product-pi2}} et {{link-product-piplus}}.&amp;lt;br /&amp;gt;Vous pouvez bien entendu trouver ces produits sur le [http://shop.mchobby.be Shop de MCHobby]&amp;lt;br /&amp;gt;&lt;br /&gt;
Vous y trouverez l'information et/ou traductions que nous avons accumulé à propos du Raspberry Pi.&amp;lt;/div&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Découverte &amp;amp; système d'exploitation ==&lt;br /&gt;
{{ttuto-begin}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=Mise-à-jour EEPROM&lt;br /&gt;
  |descr=Mise à jour de la Boot EEPROM du Pi 5 ET installation d'un disque NVMe&lt;br /&gt;
  |img=tlogo-pi-boot-rom.jpg&lt;br /&gt;
  |link=RASP-BOOT-ROM-UPGRADE&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=Hat M.2&lt;br /&gt;
  |descr=Installer le Hat M.2 sur un Raspberry-Pi 5&lt;br /&gt;
  |img=tlogo-pi-hat-m2.jpg&lt;br /&gt;
  |url=https://arduino103.blogspot.com/2024/05/hat-m2-officiel-pour-raspberry-pi.html&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=Tour Pi 3&lt;br /&gt;
  |descr=Venez découvrir les nouveautés du Raspberry Pi 3&lt;br /&gt;
  |img=tlogo-rasp-pi-3.jpg&lt;br /&gt;
  |link=RASP-PI3&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=Pi Zero Tour &lt;br /&gt;
  |descr=Venez découvrir le Pi Zero et ses possibilités. Un joujou incroyable pour les Makers et Hackers.&lt;br /&gt;
  |img=tlogo-rasp-pi-zero.jpg&lt;br /&gt;
  |link=RASP-PIZERO&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=Pi Zero W Tour &lt;br /&gt;
  |descr=Venez découvrir le Pi Zero W. Un joujou incroyable pour les Makers et Hackers.&lt;br /&gt;
  |img=tlogo-rasp-pi-zero-w.jpg&lt;br /&gt;
  |link=RASP-PIZERO-W&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=Pi Zero Headless&lt;br /&gt;
  |descr=Donner une étincelle de vie à votre Pi Zero, Pi Zero W avec le minimum d'effort et de matériel.&lt;br /&gt;
  |img=tlogo-pi-headless.png&lt;br /&gt;
  |link=Pi-Zero-Headless&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=Whezzy Raspbian &lt;br /&gt;
  |descr=Distribution de la fondation Raspberry Pi. Dérivé de Debian et utilise XCFE comme environnement graphique&lt;br /&gt;
  |img=tlogo-rasp-Os-Wheezy.jpg&lt;br /&gt;
  |link=Rasp-Os-Whezzy&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=Moniteur DVI&lt;br /&gt;
  |descr=Raccordez votre Raspberry sur moniteur.&lt;br /&gt;
  |img=tlogo-dvi.jpg&lt;br /&gt;
  |link=Rasp-Moniteur-DVI&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=Périphériques USB et Pi&lt;br /&gt;
  |descr=Les périphériques USB et le Raspberry Pi.&lt;br /&gt;
  |img=tlogo-Rasp_USB.jpg&lt;br /&gt;
  |link=Rasp-Usb-Warning&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=Pi2: Boot et LEDs&lt;br /&gt;
  |descr=&amp;lt;strong&amp;gt;&amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Help!!! Mon Pi ne démarre pas&amp;lt;/font&amp;gt;&amp;lt;/strong&amp;gt;.&lt;br /&gt;
  |img=tlogo-Rasp-Pi2-Boot-et-LED.jpg&lt;br /&gt;
  |link=Rasp-Pi2-Boot-et-LED&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=Kill or not kill the SD&lt;br /&gt;
  |descr=Apprenez comment préserver la durée de vie de votre carte SD.&lt;br /&gt;
  |img=tlogo-SD-Killer.jpg&lt;br /&gt;
  |link=Rasp-SD-Preserver&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=Démarrage automatique&lt;br /&gt;
  |descr=Démarrer automatiquement un script Python sous Raspbian.&lt;br /&gt;
  |img=tlogo-autostart-script.jpg&lt;br /&gt;
  |link=Rasp-AutoStart-Script&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=Pi Desktop&lt;br /&gt;
  |descr=Un boîtier type NUC et disque SSD pour Raspberry-Pi 3. Transformer le Pi en nano ordinateur de bureau.&lt;br /&gt;
  |img=tlogo-pi-desktop.jpg&lt;br /&gt;
  |link=Pi-Desktop-Assemblage&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=Ressources&lt;br /&gt;
  |descr=Quelques liens utiles pour exploiter votre Pi.&lt;br /&gt;
  |img=tlogo-pi-ressources.jpg&lt;br /&gt;
  |link=Pi-Ressources&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=Objectifs HQ-CAM&lt;br /&gt;
  |descr=Quels objectif choisir pour sa HQCam&lt;br /&gt;
  |img=tlogo-pi-hqcam.jpg&lt;br /&gt;
  |link=Pi-HQ-CAM-LENS&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=SuperPI&lt;br /&gt;
  |descr=Créer un SuperCalculateur à base de Raspberry-Pi&lt;br /&gt;
  |img=tlogo-superpi.jpg&lt;br /&gt;
  |traduction=1&lt;br /&gt;
  |link=SuperPi-Accueil&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-end}}&lt;br /&gt;
&lt;br /&gt;
== Tutoriels ==&lt;br /&gt;
=== Prise en main ===&lt;br /&gt;
{{Ambox&lt;br /&gt;
| type       = delete&lt;br /&gt;
| image      = [[File:StopHand.png|40px|alt=Stop]]&lt;br /&gt;
| textstyle  = color: red; font-weight: bold; font-style: italic;&lt;br /&gt;
| text       = Nous n'insisterons jamais assez sur le fait qu'une fois connecté sur un réseau, votre Raspberry peut facilement devenir un serveur pirate si vous ne modifiez pas le mot de passe administrateur.&amp;lt;br /&amp;gt;Changer le mode de passe de l'administrateur &amp;quot;pi&amp;quot; avec la commande '''passwd'''... c'est capital pour la sécurité de votre réseau !&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{ttuto-begin}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=Agrandir la partition &lt;br /&gt;
  |descr=Agrandissez la partition principale de Wheezy Raspbian et Occidentalis&lt;br /&gt;
  |img=tlogo-rasp-partition.jpg&lt;br /&gt;
  |link=PI-Etendre-Partition&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=Clavier Belge&lt;br /&gt;
  |descr=Comment configurer un clavier Belge sur Pi.&lt;br /&gt;
  |img=tlogo-Rasp-ClavierBe.jpg&lt;br /&gt;
  |link=Rasp-Clavier-BE&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=Config Réseau &amp;amp; WiFi&lt;br /&gt;
  |descr=Comment se connecter sur Internet via WiFi ou réseau Ethernet, via interface graphique ou en ligne de commande&lt;br /&gt;
  |img=tlogo-Rasp-Network.jpg&lt;br /&gt;
  |link=Rasp-Config-Reseau&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=Changer Hostname&lt;br /&gt;
  |descr=Modifier le nom réseau de votre Raspberry-Pi pour qu'elle s'annonce avec un nom différent sur le réseau.&lt;br /&gt;
  |img=tlogo-Rasp-Hostname.jpg&lt;br /&gt;
  |link=Rasp-Config-Hostname&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=apt.adafruit.com&lt;br /&gt;
  |descr=Ajoutez le dépôt Adafruit et facilitez l'installation de vos logiciels.&lt;br /&gt;
  |img=tlogo-apt-adafruit-com.jpg&lt;br /&gt;
  |link=Rasp-APT-ADAFRUIT-COM&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=Overclocking &lt;br /&gt;
  |descr=Augmentez la vitesse de votre PI (Whezzy Raspian) en utilisant une méthode d'Overclocking.&lt;br /&gt;
  |img=tlogo-rasp-overclocking.jpg&lt;br /&gt;
  |link=PI-Overclocking&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=SSH&lt;br /&gt;
  |descr=Commander son PI en SSH... ou comment profiter du confort de son PC tout en prenant les rênes de son PI à distance :-).&lt;br /&gt;
  |img=tlogo-rasp-ssh.jpg&lt;br /&gt;
  |link=PI-SSH&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=Pi-Copier/Pi-Coller&lt;br /&gt;
  |descr=Copier/Coller super facile pour copier du code python vers un Raspberry super facilement.&lt;br /&gt;
  |img=tlogo-rasp-easycopypaste.jpg&lt;br /&gt;
  |link=PI-Easy-Copy-Paste&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=Préparer Python&lt;br /&gt;
  |descr=Préparation de Python pour faire de hacking électronique.&lt;br /&gt;
  |img=tlogo-rasp-python-update.jpg&lt;br /&gt;
  |link=Pi-Python-Prepa&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=Debuggeur Python&lt;br /&gt;
  |descr=&amp;lt;strong&amp;gt;PuDB&amp;lt;/strong&amp;gt; est un déboggeur Python qui fonctionne en SSH!.&lt;br /&gt;
  |img=tlogo-rasp-python-pudb.jpg&lt;br /&gt;
  |link=Pi-Python-PuDB&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=Utiliser VNC&lt;br /&gt;
  |descr=Comment prendre le contrôle à distance de votre Pi grâce à VNC. Très utile pour faire des capture d'écran.&lt;br /&gt;
  |img=tlogo-Pi-Vnc.jpg&lt;br /&gt;
  |link=Pi-VNC&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=webIDE&lt;br /&gt;
  |descr=webIde permet de coder et exécuter des programmes depuis un navigateur Web (supporte Python, Ruby, JavaScript, ...).&lt;br /&gt;
  |img=tlogo-WebIde.jpg&lt;br /&gt;
  |link=Pi-WebIde&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=WiringPi&lt;br /&gt;
  |descr=Libraire d'accès GPIO en C, fort semblable à l'environnement Arduino, disposant de Wrapper en Python, Ruby, Java, ... et son célèbre utilitaire '''gpio'''&lt;br /&gt;
  |img=tlogo-WiringPi.jpg&lt;br /&gt;
  |link=Pi-WiringPi&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=USB Audio&lt;br /&gt;
  |descr=Module Audio USB pour Raspberry Pi&lt;br /&gt;
  |img=tlogo-USB-Audio.jpg&lt;br /&gt;
  |link=Pi-USB-Audio&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=MP3 sur Pi&lt;br /&gt;
  |descr=Utiliser mpg321 pour jouer des fichiers MP3 (sur notre blog)&lt;br /&gt;
  |img=tlogo-Audio-MP3.jpg&lt;br /&gt;
  |link=PI-Audio-MP3&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=PiFace&lt;br /&gt;
  |descr=Interface entrée/sortie pour Raspberry Pi destiné aux débutants et écoles. &amp;lt;b&amp;gt;Inclus contrôle avec Scratch.&amp;lt;/b&amp;gt;&lt;br /&gt;
  |img=tlogo-piface.jpg&lt;br /&gt;
  |link=PiFace-Manuel&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=PiFace 2&lt;br /&gt;
  |descr=Interface entrée/sortie pour Raspberry Pi 2/3 destiné aux débutants et écoles.&lt;br /&gt;
  |img=tlogo-piface2.jpg&lt;br /&gt;
  |link=PiFace2-Manuel&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=UniPi&lt;br /&gt;
  |descr=Carte d'extension pour réaliser un automate programmage à partir d'un Raspberry-Pi.&lt;br /&gt;
  |img=tlogo-unipi.jpg&lt;br /&gt;
  |link=UniPi-Manuel&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=PiBrella&lt;br /&gt;
  |descr=Carte d'interface super simple pour Raspberry&lt;br /&gt;
  |img=tlogo-Pibrella.jpg&lt;br /&gt;
  |link=PiBrella&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=RTC PCF8523&lt;br /&gt;
  |descr=Une horloge temps réel pour Raspberry-Pi&lt;br /&gt;
  |img=tlogo-PCF8523.jpg&lt;br /&gt;
  |link=RASP-PCF8523&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=PI Remote Screen&lt;br /&gt;
  |descr=Le Pi 3 autonome avec une tablette comme terminal&lt;br /&gt;
  |img=tlogo-pi-remote-screen.png&lt;br /&gt;
  |link=RASP-PI-REMOTE-SCREEN&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=HAT TV&lt;br /&gt;
  |descr=Configurer et utiliser le HAT TV&lt;br /&gt;
  |img=tlogo-hat-tv.jpg&lt;br /&gt;
  |link=RASP-HAT-TV&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-end}}&lt;br /&gt;
&lt;br /&gt;
=== Projets ===&lt;br /&gt;
&lt;br /&gt;
{{ttuto-begin}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=Projet DOMO&lt;br /&gt;
  |descr=Domotiser sa maison avec OpenRemote + Raspberry + Arduino. Un magnifique tutoriel de D. Swinnen&lt;br /&gt;
  |img=tlogo-projet-domo.jpg&lt;br /&gt;
  |link=PROJET-DOMO&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Retro-gaming avec PI&lt;br /&gt;
  |descr=Simuler une frappe clavier depuis le GPIO = Un vrai Retro-Gaming&lt;br /&gt;
  |img=tlogo-Retro-Games.jpg&lt;br /&gt;
  |link=Rasp-Retro-Games&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=PiGRRL 2&lt;br /&gt;
  |descr=Réaliser un émulateur de jeu portable avec un Pi 2 ou Pi 3, un PiTFT et un amplificateur audio.&lt;br /&gt;
  |img=tlogo-pigrrl-2.png&lt;br /&gt;
  |link=Rasp-PiGRRL-2&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Node-Red&lt;br /&gt;
  |descr=Utiliser Node-Red sur Raspberry-Pi. Gérer facilement vos flux, événements et actions avec un éditeur visuel.&lt;br /&gt;
  |img=tlogo-rasp-node-red.jpg&lt;br /&gt;
  |link=Rasp-Node-Red&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=RPi UMPC&lt;br /&gt;
  |descr=Réaliser et imprimer un UMPC Raspberry-Pi en imprimant les différents éléments.&lt;br /&gt;
  |img=tlogo-RPi-UMPC.jpg&lt;br /&gt;
  |link=Rasp-UMPC&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-end}}&lt;br /&gt;
&lt;br /&gt;
=== Programmation ===&lt;br /&gt;
&lt;br /&gt;
Un Raspberry peut se programmer avec de nombreux langages. Parmi la foule de langage, nous pouvons relever Python bien adapté à la découverte de la programmation, Scratch qui est un environnement graphique très attrayant et le langage C plutôt destiné au développeurs expérimentés.&lt;br /&gt;
&lt;br /&gt;
Voici quelques références utilisées par MCHobby, elles vous aiderons à apprendre Python.  Nul doute que vous en trouverez de nombreuses autres sur le Net... mais cette sélection est de qualité.  &lt;br /&gt;
&lt;br /&gt;
{{ttuto-begin}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=Progr. en Python &lt;br /&gt;
  |descr=Apprendre a programmer en Python (en-ligne). Par Vincent le Goff.&lt;br /&gt;
  |img=tlogo-rasp-Python-Programmer-LeGoff.jpg&lt;br /&gt;
  |link=PI-Python-Apprendre-en-Python&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=Progr. Python&lt;br /&gt;
  |descr=Programmation Python - Conception et optimisation de Tarek Ziadé.&lt;br /&gt;
  |img=tlogo-rasp-Python-Programmer-Ziade.jpg&lt;br /&gt;
  |link=PI-Python-Programmation-Python&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=Apprendre Python &lt;br /&gt;
  |descr=Apprendre a programmer Python et Python 3 (PDF, Gratuit) via un parcours académique. Par Gérard Swinnen.&lt;br /&gt;
  |img=tlogo-rasp-Python-Programmer.jpg&lt;br /&gt;
  |link=PI-Python-Apprendre-Python&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=UTF8, Unicode et encoding&lt;br /&gt;
  |descr=UnicodeDecodeError peut être votre pire cauchemar. Comprenez le afin qu'il ne soit plus un problème.&lt;br /&gt;
  |img=tlogo-Python-Encoding.jpg&lt;br /&gt;
  |link=PI-Python-Encoding&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=Python et Tkinter&lt;br /&gt;
  |descr=Des interfaces graphiques en Python avec Tkinter&lt;br /&gt;
  |img=tlogo-Python-tkinter-programming.jpg&lt;br /&gt;
  |link=PI-Python-TkInter-Programming&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=Pygubu&lt;br /&gt;
  |descr=Form Designer pour Tkinter. Liens vers vidéos d'apprentissage&lt;br /&gt;
  |img=tlogo-Python-pygugu.jpg&lt;br /&gt;
  |url=https://arduino103.blogspot.com/2023/09/pygubu-form-designer-pour-python.html&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{ttuto&lt;br /&gt;
  |label=Python Turtle&lt;br /&gt;
  |descr=Apprendre Python avec Turtle en faisant du '''Logo en Python'''. &lt;br /&gt;
  |img=tlogo-Python-turtle.jpg&lt;br /&gt;
  |link=Python-Turtle-Online&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
{{ttuto-end}}&lt;br /&gt;
&lt;br /&gt;
Quelques références:&lt;br /&gt;
* [http://fr.wikipedia.org/wiki/Python_%28langage%29 Le langage Python] sur Wikipedia.fr.&lt;br /&gt;
* L'[http://www.afpy.org/ Association Francophone Python] (AFPY)&lt;br /&gt;
* [http://fr.openclassrooms.com/informatique/cours/apprenez-a-programmer-en-python Apprenez à programmer en Python] par Prolixe, sur fr.openclassrooms.com.&lt;br /&gt;
* Les [http://docs.python.org/2/ pages de documentation sur Python 2.7] (''Anglais'', Pyhton.org).&lt;br /&gt;
* La section [http://python.developpez.com/ Python sur Developpez.com]&lt;br /&gt;
* [http://effbot.org/imagingbook/imagedraw.htm PIL - Python Image Library] - les commandes de dessins (''effbot.org'', anglais)&lt;br /&gt;
&lt;br /&gt;
=== Tutoriels - Hacking électronique ===&lt;br /&gt;
Pour tous ces tutoriels, assurez vous d'avoir accomplit la section&amp;quot;préparation Python&amp;quot; ci-avant.&lt;br /&gt;
&lt;br /&gt;
{{ttuto-begin}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Raspberry GPIO &lt;br /&gt;
  |descr=Le GPIO du Raspberry B ou '''Pi 3''', Pi 2, Pi B+, Pi Zero, '''Pi Zero W''' en détail avec utilisation GPIO, I2C, etc&lt;br /&gt;
  |img=tlogo-Rasp-Hack-GPIO40.jpg&lt;br /&gt;
  |link=Rasp-Hack-GPIO&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Pi Cobbler&lt;br /&gt;
  |descr=Raccordez un PI sur une plaque de prototypage&lt;br /&gt;
  |img=RASP-ADFCOBBLER (mini).jpg&lt;br /&gt;
  |link=PI-Cobbler&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Pi LEDs&lt;br /&gt;
  |descr=Commander des LEDs avec votre PI&lt;br /&gt;
  |img=Rasp-Hack-LED (mini).jpg&lt;br /&gt;
  |link=Rasp-Hack-LED&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Pi GMail LED&lt;br /&gt;
  |descr=Vérifier les e-mails en attente sur GMail et allumer une LED&lt;br /&gt;
  |img=Rasp-Hack-GMAIL-LED (mini).jpg&lt;br /&gt;
  |link=Rasp-Hack-GMAIL-LED&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Pi Button&lt;br /&gt;
  |descr=Détecter l'état d'un bouton avec PI et allumer une LED.&lt;br /&gt;
  |img=Rasp-Hack-PiButton (mini).jpg&lt;br /&gt;
  |link=Rasp-Hack-PiButton&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Senseur PIR&lt;br /&gt;
  |descr=Détecteur de proximité de type PIR (alarme)&lt;br /&gt;
  |img=Rasp-Hack-PiPir (mini).jpg&lt;br /&gt;
  |link=Rasp-Hack-PiPir&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Lecture Analogique MCP3008&lt;br /&gt;
  |descr=Réaliser une lecture analogique à l'aide d'un MCP3008.&lt;br /&gt;
  |img=Rasp-Hack-PiAnalog (mini).jpg&lt;br /&gt;
  |link=Rasp-Hack-PiAnalog&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=MCP23017 pour ajouter des I/O&lt;br /&gt;
  |descr=Ajouter des entrées/sorties avec un MCP23017.&lt;br /&gt;
  |img=Rasp-Hack-MCP23017.jpg&lt;br /&gt;
  |link=Rasp-Hack-MCP230XX&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Senseur à Effet Hall&lt;br /&gt;
  |descr=Utiliser un senseur digital US5851LUA (populaire chez Arduino).&lt;br /&gt;
  |img=Rasp-Hack-Hall (mini).jpg&lt;br /&gt;
  |link=Rasp-Hack-Hall&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=DHT11, DHT22&lt;br /&gt;
  |descr=Utiliser le senseur d'humidité DHT11, DHT22 ou AM2302 sur votre Pi.&lt;br /&gt;
  |img=Rasp-Hack-DHT22.jpg&lt;br /&gt;
  |link=Rasp-Hack-DHT22&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Câble Console&lt;br /&gt;
  |descr=Câble Console USB-Série TTL, connectez vous à votre PI sans souris, clavier et écran.&lt;br /&gt;
  |img=Rasp-Hack-USB-Serie-TTL (mini).jpg&lt;br /&gt;
  |link=Rasp-Hack-USB-Serie-TTL&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Serveur HDMI&lt;br /&gt;
  |descr=Transformer un Raspberry Pi en serveur d'affichage HDMI pour Arduino... un '''HDMI Shield''' abordable&lt;br /&gt;
  |img=Rasp-Hack-HDMI-Serveur (mini).jpg&lt;br /&gt;
  |link=Rasp-Hack-HDMI-Serveur&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Afficheur LCD&lt;br /&gt;
  |descr=Afficher des informations sur votre PI avec LCD Monochrome, RGB et GPIO Extender + LCD&lt;br /&gt;
  |img=Rasp-Hack-Afficheur-LCD (mini).jpg&lt;br /&gt;
  |link=Rasp-Hack-Afficheur-LCD&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Contrôleur Led&lt;br /&gt;
  |descr=contrôler une matrice LED ou un afficheur 7 segments d'AdaFruit avec votre PI.&lt;br /&gt;
  |img=Rasp-Hack-Led-Backpack (mini).jpg&lt;br /&gt;
  |link=Rasp-Hack-Led-Backpack&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Pont-H L293&lt;br /&gt;
  |descr=Contrôler des moteurs a courant continu (sens et vitesse) avec un Pont-H, PWM et votre PI.&lt;br /&gt;
  |img=Rasp-Hack-L293 (mini).jpg&lt;br /&gt;
  |link=Rasp-Hack-L293&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Moteur Pas-à-Pas&lt;br /&gt;
  |descr=Contrôler un moteur pas-à-pas avec votre Pi à l'aide des circuit-intégrés L293D ou ULN2803.&lt;br /&gt;
  |img=Rasp-Hack-Stepper (mini).jpg&lt;br /&gt;
  |link=Rasp-Hack-Stepper&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Hat Moteur&lt;br /&gt;
  |descr=Contrôler des moteurs continus ou moteurs pas-à-pas avec votre Raspberry-Pi et la Hat Moteur / Motor Hat.&lt;br /&gt;
  |img=Rasp-Hat-Moteur.jpg&lt;br /&gt;
  |link=Rasp-Hat-Moteur&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=ArduPi-I2C&lt;br /&gt;
  |descr=&amp;lt;strong&amp;gt;Raspberry-Pi et Arduino qui communiquent via le bus I2C&amp;lt;/strong&amp;gt;... de la dynamite!&lt;br /&gt;
  |img=tlogo-ArduPi-I2C.jpg&lt;br /&gt;
  |link=ArduPi-I2C&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Pi-Shield LCD 2x16 RGB + Keypad&lt;br /&gt;
  |descr=Afficheur 2x16 caractères, rétro-éclairage RGB + Keypad sous forme de &amp;lt;strong&amp;gt;Pi-shield pour Raspberry&amp;lt;/strong&amp;gt; via le bus I2C!&lt;br /&gt;
  |img=RASP-LCD-RGB.jpg&lt;br /&gt;
  |link=RASP-LCD-RGB&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=GPS pour Raspberry&lt;br /&gt;
  |descr=Utiliser le câble console (ou l'UART) et le GPS ultime pour traquer votre Pi!&lt;br /&gt;
  |img=tlogo-RASP-GPS-ULTIME.jpg&lt;br /&gt;
  |link=RASP-GPS-ULTIME&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Pi TFT&lt;br /&gt;
  |descr=Un TFT 320x240 2.8 pouce + écran tactile pour Raspberry Pi!&lt;br /&gt;
  |img=tlogo-PiTFT.jpg&lt;br /&gt;
  |link=RASP-PiTFT&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Pi TFT PLUS&lt;br /&gt;
  |descr=Un TFT 480x320 3.5 pouce + écran tactile pour Raspberry Pi 2, A+, B+!&lt;br /&gt;
  |img=tlogo-PiTFT-Plus.jpg&lt;br /&gt;
  |link=RASP-PiTFT-PLUS&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=RPi ShieldBridge&lt;br /&gt;
  |descr=Un Arduino sur un Pi... le meilleur des deux mondes!&lt;br /&gt;
  |img=tlogo-RPi-ShieldBridge.jpg&lt;br /&gt;
  |link=RPI-ShieldBridge&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Mesurer la Pression&lt;br /&gt;
  |descr=Mesurer la pression avec un BMP0180 ou BMP085 via le bus I2C.&lt;br /&gt;
  |img=tlogo-Rasp-Hack-BMP085.jpg&lt;br /&gt;
  |link=Rasp-Hack-BMP085&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Pont-H L298 avec Pi&lt;br /&gt;
  |descr=Piloter des moteurs puissants avec un Raspberry-Pi et un Breakout L298.&lt;br /&gt;
  |img=tlogo-l298.jpg&lt;br /&gt;
  |link=Rasp-Hack-L298&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=EZ-Link - Appairage avec Android&lt;br /&gt;
  |descr=EZ-Link établit une connexion série(SPP) via Bluetooth vers l'hôte. Tuto de liaison PC/Raspberry &amp;lt;-&amp;gt; Android.&lt;br /&gt;
  |img=tlogo-EZLink-Test-Serie.jpg&lt;br /&gt;
  |link=EZ-LINK-TEST-SERIE&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Afficheur LCD USB&lt;br /&gt;
  |descr=Afficheur LCD USB super simple d'emploi pour votre Pi.&lt;br /&gt;
  |img=LCD-USB-TTL.jpg&lt;br /&gt;
  |link=LCD-USB-TTL-Raspberry&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Contrôleur Moteur DRV8835&lt;br /&gt;
  |descr=Contrôler facilement deux moteurs en Python avec cette carte Pi 2 et Pi B+.&lt;br /&gt;
  |img=tlogo-RASP-DRV8835.jpg&lt;br /&gt;
  |link=RASP-DRV8835&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=HAT matrice RGB&lt;br /&gt;
  |descr=Contrôlez une matrice RGB avec votre Pi&lt;br /&gt;
  |img=tlogo-RASP-HAT-MATRIX-RGB.jpg&lt;br /&gt;
  |link=RASP-HAT-MATRIX-RGB&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=MCP9808 - Température&lt;br /&gt;
  |descr=Senseur de température I2C de Précision pour Pi et BeagleBone en Python.&lt;br /&gt;
  |img=Tlogo-senseur-MCP9808.jpg&lt;br /&gt;
  |link=RASP-MCP9808&lt;br /&gt;
}} &lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Hat Sense et Astro-Pi&lt;br /&gt;
  |descr=La carte Hat Sense est un véritable mini-labo. Voici comment l'utiliser&lt;br /&gt;
  |img=tlogo-astro-pi.jpg&lt;br /&gt;
  |link=RASP-SENSE-HAT-ASTRO-PI&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Fona et Pi&lt;br /&gt;
  |descr=Utiliser la carte Fona avec Raspberry-Pi. &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt;Démonstration de faisabilité.&amp;lt;/font&amp;gt;&lt;br /&gt;
  |img=tlogo-fona-pi.jpg&lt;br /&gt;
  |link=RASP-FONA-PI&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Module 3G (HSDPA) et Pi-3&lt;br /&gt;
  |descr=Utiliser un module 3G pour obtenir une connexion internet (ou envoyer des SMS) avec son Pi 3.&lt;br /&gt;
  |img=tlogo-pi-3G.jpg&lt;br /&gt;
  |link=RASP-PI-3G&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Radio WiFi sur Pi&lt;br /&gt;
  |descr=Du streaming audio partout dans la maison !&lt;br /&gt;
  |img=tlogo-rdiowifi-pi.jpg&lt;br /&gt;
  |link=RASP-RDIOWIFI-PI&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=PyGameUI&lt;br /&gt;
  |descr=Les bases pour réaliser une interface graphique avec PyGameUI (y compris Thread, callable, SIGINT signal handler)&lt;br /&gt;
  |img=tlogo-pygame-gui.jpg&lt;br /&gt;
  |link=RASP-PYGAME-GUI&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Plex Media Server&lt;br /&gt;
  |descr=Utiliser un Raspberry-Pi 3 pour réaliser un Plex Media Server&lt;br /&gt;
  |img=tlogo-plex-media-server.jpg&lt;br /&gt;
  |link=RASP-PLEX-MEDIA-SERVER&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Breakout FT232H&lt;br /&gt;
  |descr=Ajouter un bus SPI, I2C, UART et GPIO via USB sur votre ordinateur (Win,Mac,Linux)&lt;br /&gt;
  |img=tlogo-ft232h.jpg&lt;br /&gt;
  |link=RASP-FT232H&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=PiOLED&lt;br /&gt;
  |descr=Un petit écran OLED 128x32 I2C pour créer une mini interface utilisateur pour les Pi sans écran. &lt;br /&gt;
  |img=tlogo-PiOled.png&lt;br /&gt;
  |link=RASP-PiOLED&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-end}}&lt;br /&gt;
&lt;br /&gt;
Autres tutoriels:&lt;br /&gt;
* [[RASP-GOF-GSM-GPRS|GSM/GPRS pour Raspberry]] - Utiliser un module GSM/GPRS avec votre Pi!&lt;br /&gt;
&lt;br /&gt;
=== Tutoriels - HiFiBerry ===&lt;br /&gt;
&lt;br /&gt;
{{ttuto-begin}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=HiFiBerry Présentation&lt;br /&gt;
  |descr=Du son HiFi pour votre Pi. Présentation de la gamme HiFiBerry&lt;br /&gt;
  |img=tlogo-HiFiBerry.jpg&lt;br /&gt;
  |link=Rasp-HiFiBerry&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=HiFiBerry Linux 3.18.x&lt;br /&gt;
  |descr=Configurer Linux 3.18.x pour HiFiBerry&lt;br /&gt;
  |img=tlogo-HiFiBerry-Linux-3.18.x.jpg&lt;br /&gt;
  |link=Rasp-HiFiBerry-Linux-3-18-x&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Logiciels supportés&lt;br /&gt;
  |descr=Logiciels supportés par HiFiBerry&lt;br /&gt;
  |img=tlogo-HiFiBerry-Logiciels.jpg&lt;br /&gt;
  |link=Rasp-HiFiBerry-Logiciels&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Installation Raspbian&lt;br /&gt;
  |descr=Sous-tutoriel: Mise-à-jour du noyau Raspbien (et autres distributions) pour une utilisation avec HiFiBerry.&lt;br /&gt;
  |img=tlogo-HiFiBerry-Upgrade-Kernel.jpg&lt;br /&gt;
  |link=Rasp HiFiBerry-Upgrade-Kernel&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Installation OpenElec&lt;br /&gt;
  |descr=Sous-tutoriel: Mise-à-jour OpenElec pour une utilisation avec HiFiBerry.&lt;br /&gt;
  |img=tlogo-HiFiBerry-Activation-OpenElec.jpg&lt;br /&gt;
  |link=Rasp-HiFiBerry-OpenElec&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Installation OpenElec 5&lt;br /&gt;
  |descr=Sous-tutoriel: Mise-à-jour OpenElec 5 pour une utilisation avec HiFiBerry.&lt;br /&gt;
  |img=tlogo-HiFiBerry-Activation-OpenElec5.jpg&lt;br /&gt;
  |link=Rasp-HiFiBerry-OpenElec5&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Installation OSMC&lt;br /&gt;
  |descr=Sous-tutoriel: Mise-à-jour OSMC pour une utilisation avec HiFiBerry.&lt;br /&gt;
  |img=tlogo-HiFiBerry-Activation-OSMC.jpg&lt;br /&gt;
  |link=Rasp-HiFiBerry-OSMC&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Player HiFi''-berry'' RuneAudio&lt;br /&gt;
  |descr=Création d'un lecteur audio connecté avec Pi 3 et mettez en oeuvre le Raspberry Pi AudioPhile Kit.&lt;br /&gt;
  |img=tlogo-Rasp-Hifi-Player.jpg&lt;br /&gt;
  |link=Rasp-Hifi-Player&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-small&lt;br /&gt;
  |label=Player HiFi''-berry'' Volumio&lt;br /&gt;
  |descr=Création d'un lecteur audio connecté avec Pi 2/Pi 3 et une carte HiFiBerry. Un kit pour les AudioPhiles.&lt;br /&gt;
  |img=tlogo-Rasp-volumio.jpg&lt;br /&gt;
  |link=Rasp-Hifi-volumio&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ttuto-end}}&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
* [http://arduino103.blogspot.be/2015/08/voici-un-petit-article-qui-explique.html Tutoriel d'assemblage du boitier Métal pour HiFiBerry DAC+] ([http://blog.mchobby.be blog.mchobby.be]) &lt;br /&gt;
* réaliser une puissante musique box à l'aide de HiFiBerry Amp+ et MusicPicker&lt;br /&gt;
&lt;br /&gt;
== Ressources ==&lt;br /&gt;
=== AdaFruit Learning System ===&lt;br /&gt;
Adafruit propose de nombreux tutoriels relatifs a Raspberry PI mettant en oeuvre ses produits.&amp;lt;br /&amp;gt;&lt;br /&gt;
MC Hobby est justement un distributeur AdaFruit, vous pourriez donc retrouver [http://www.mchobby.be ce/ces produits sur notre WebShop].&amp;lt;br /&amp;gt;&lt;br /&gt;
Ces derniers sont malheureusement en anglais mais nous pouvons toujours en traduire l'un ou l'autre sur demande (''nous avons justement des accords de traduction avec adaFruit :-)))'').&lt;br /&gt;
* [http://learn.adafruit.com/category/raspberry-pi AdaFruit Learning System for Raspberry PI]&lt;br /&gt;
=== Générale ===&lt;br /&gt;
* [http://www.themagpi.com/ The MagPi magazine] (en anglais mais libre)&lt;br /&gt;
* [http://www.pobot.org/spip.php?page=recherche&amp;amp;recherche=raspberry Raspberry Pi sur PoBot.Org] (En Français, avec l'aimable autorisation de Julien h./PoBot.org)&lt;br /&gt;
* Utiliser le GPIO sans avoir besoin d'être sudo ou Root.&amp;lt;br /&amp;gt;Des articles trouvés sur le Net:&lt;br /&gt;
** [http://dissectionbydavid.wordpress.com/2013/10/21/raspberry-pi-using-gpio-wiringpi-without-root-sudo-access/ Raspberry Pi – using GPIO / WiringPi without root (sudo) access] (''dissectionbydavid, anglais'')&lt;br /&gt;
** [http://www.raspberrypi.org/forums/viewtopic.php?f=32&amp;amp;t=32177 Tutorial: Elro remote power switch without root] (''RaspberryPi.org, anglais'')&lt;br /&gt;
{{MCH-Accord}}&lt;/div&gt;</summary>
		<author><name>AntoineWrt</name></author>
	</entry>
	<entry>
		<id>https://wiki.mchobby.be/index.php?title=Mod%C3%A8le:MCH-Aider&amp;diff=24924</id>
		<title>Modèle:MCH-Aider</title>
		<link rel="alternate" type="text/html" href="https://wiki.mchobby.be/index.php?title=Mod%C3%A8le:MCH-Aider&amp;diff=24924"/>
		<updated>2017-12-04T19:36:48Z</updated>

		<summary type="html">&lt;p&gt;AntoineWrt : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;br /&amp;gt;&amp;lt;div class=&amp;quot;{{#if:{{{force_print|}}}|alwaysprint|noprint}}&amp;quot; style=&amp;quot;border:1px solid #43b086; background:#eff;padding:2px 10px 2px 8px; margin-bottom:10px; color:green;&amp;quot;&amp;gt;MCHobby investit du temps et de l'argent dans la réalisation de traduction et/ou documentation. C'est un travail long et fastidieux réalisé dans l'esprit Open-Source... donc gratuit et librement accessible.&amp;lt;br /&amp;gt;&lt;br /&gt;
'''SI vous aimez nos traductions et documentations ALORS aidez nous à en produire plus en achetant vos produits chez [https://shop.mchobby.be MCHobby].'''&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>AntoineWrt</name></author>
	</entry>
	<entry>
		<id>https://wiki.mchobby.be/index.php?title=Mod%C3%A8le:Cl&amp;diff=24923</id>
		<title>Modèle:Cl</title>
		<link rel="alternate" type="text/html" href="https://wiki.mchobby.be/index.php?title=Mod%C3%A8le:Cl&amp;diff=24923"/>
		<updated>2017-12-04T19:28:22Z</updated>

		<summary type="html">&lt;p&gt;AntoineWrt : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://shop.mchobby.be/category.php?id_category={{{1}}} {{{2}}}]&lt;/div&gt;</summary>
		<author><name>AntoineWrt</name></author>
	</entry>
	<entry>
		<id>https://wiki.mchobby.be/index.php?title=Mod%C3%A8le:Pl&amp;diff=24922</id>
		<title>Modèle:Pl</title>
		<link rel="alternate" type="text/html" href="https://wiki.mchobby.be/index.php?title=Mod%C3%A8le:Pl&amp;diff=24922"/>
		<updated>2017-12-04T19:28:08Z</updated>

		<summary type="html">&lt;p&gt;AntoineWrt : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://shop.mchobby.be/product.php?id_product={{{1}}} {{{2}}}]&lt;/div&gt;</summary>
		<author><name>AntoineWrt</name></author>
	</entry>
	<entry>
		<id>https://wiki.mchobby.be/index.php?title=RASP-PIZERO-W&amp;diff=24921</id>
		<title>RASP-PIZERO-W</title>
		<link rel="alternate" type="text/html" href="https://wiki.mchobby.be/index.php?title=RASP-PIZERO-W&amp;diff=24921"/>
		<updated>2017-12-04T19:24:32Z</updated>

		<summary type="html">&lt;p&gt;AntoineWrt : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{RASP-PIZERO-W-NAV}}&lt;br /&gt;
{{RASP-PIZERO-W-RES}}&lt;br /&gt;
{{RASP-PIZERO-W-PL}}&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Passons un peu de temps à décortiquer le Pi-Zero W avec, je l'espère, quelques apports supplémentaires. &lt;br /&gt;
&lt;br /&gt;
Ce tuto s'oriente clairement vers les Makers avec des MODs, Hack et documentations des &amp;quot;Testings Points&amp;quot; que vous pouvons parfois réutiliser à notre avantage. [[RASP-PIZERO|Pour des infos plus générales, trucs &amp;amp; astuces, vous pencher sur la création de la carte OS, etc nous vous proposons le tutoriel Pi Zero]].&lt;br /&gt;
&lt;br /&gt;
== Tour du Pi Zero W ==&lt;br /&gt;
[[Fichier:RASP-PIZERO-W.jpg|773px]]&lt;br /&gt;
&lt;br /&gt;
Le Pi Zero W, c'est un SoC (System on Chip, système sur une puce) BCM2835 déjà utilisé dans les premiers modèles de Raspberry-Pi. Ce SoC est cadencé à 1 Ghz (max) et dispose d'une RAM de 512 Mb. C'est déjà pas si mal pour une carte qui fait seulement 6.5 x 3.0 cm sans compter qu'elle embarque:&lt;br /&gt;
* Connexion HDMI (micro HDMI pour l'affichage).&lt;br /&gt;
* Connexion USB (micro USB mais permet d'y connecter des périphériques)&lt;br /&gt;
* Connexion DSI pour la caméra Pi (avec {{pl|899|un câble adapté}})&lt;br /&gt;
* Connexion RCA (même si c'est un peu dépassé) et Reset (plus utile).&lt;br /&gt;
* Une antenne WiFi&lt;br /&gt;
* Le célèbre GPIO Raspberry-Pi ... et ça c'est vraiment top.&lt;br /&gt;
&lt;br /&gt;
Deux choses ont attirés notre attention:&lt;br /&gt;
* L'antenne du Pi Zero W&lt;br /&gt;
* L'emplacement pour connecteur µFl&lt;br /&gt;
&lt;br /&gt;
== Antenne du PiZero W ==&lt;br /&gt;
Cette antenne est fort différente de l'antenne céramique du Pi 3.&lt;br /&gt;
&lt;br /&gt;
Sur le Pi Zero W, elle présente une conception franchement innovante.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:RASP-PIZERO-W-Antenne-onboard.jpg]]&lt;br /&gt;
&lt;br /&gt;
Cette nouvelle antenne (sous licence) est le résultat du travail de la [http://www.proant.se/|société Suédoise Proant AB], un spécialise des antennes.&lt;br /&gt;
&lt;br /&gt;
Cette forme triangulaire est en fait un &amp;quot;trou&amp;quot; traversant les 6 couches cuivrées de la carte Pi Zero W. Cette structure entourée de ''via'' (connexions traversantes au travers des 6 couches de la carte) fait un peu l'effet d'une chambre d'écho pour les signaux WiFi.&lt;br /&gt;
&lt;br /&gt;
La chambre couplée à de petites capacités permet de réaliser une antenne très performante.&lt;br /&gt;
&lt;br /&gt;
{{ambox|text=De façon surprenante, cette mini-antenne serait plus performante que l'antenne céramique du Pi 3. En tout cas, c'est ce qu'affirme la fondation.}}&lt;br /&gt;
&lt;br /&gt;
== L'emplacement pour connecter µFl ==&lt;br /&gt;
L'un des premiers éléments ayant attiré notre attention est un emplacement destiné à recevoir un connecteur µFl (micro Fl). &lt;br /&gt;
&lt;br /&gt;
Si vous avez un l'âme d'un bricoleur, il y a une modification intéressante [http://www.briandorey.com/post/Raspberry-Pi-Zero-W-external-antenna-mod documentée par Brian Dorey] permettant de remplacer l'antenne par défaut.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:RASP-PIZERO-W-Antenne-UFl.png|640px]]&amp;lt;small&amp;gt;&amp;lt;br /&amp;gt;Ajouter un connecteur µFL (aussi dit U.FL ou uFL) sur un PiZero W&amp;lt;br /&amp;gt;&lt;br /&gt;
Source: [http://www.briandorey.com/post/Raspberry-Pi-Zero-W-external-antenna-mod blog de Brian Dorey]&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
L'utilisation du connecteur uFL permet de brancher une antenne WiFi extérieure. Sachez néanmoins que cette modification invalide la certification FCC.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:RASP-PIZERO-W-Antenne-ufl-exemple.png|640px]]&amp;lt;small&amp;gt;&amp;lt;br /&amp;gt;Source: [http://www.briandorey.com/post/Raspberry-Pi-Zero-W-external-antenna-mod blog de Brian Dorey]&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== UART Logiciel ==&lt;br /&gt;
Le GPIO propose des broches UARTs (voir ci-dessous). Attention cependant, comme tous les modèles WiFi du Raspberry-Pi, ce port série '''n'est plus un UART matériel''' mais un '''UART logiciel'''.&lt;br /&gt;
 &lt;br /&gt;
{{ADFImage|RASP-PIZERO-Console-2.png|260px}}&amp;lt;small&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;font color=&amp;quot;red&amp;gt;'''Ne pas brancher le +5V si le Pi-Zero est alimenté via microUSB.'''&amp;lt;/font&amp;gt;&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En effet, l'UART matériel est utilisé par la carte Pi 3 (et Pi Zero) pour le support du module Bluetooth.&lt;br /&gt;
&lt;br /&gt;
L'utilisation de l'UART logiciel sur le Pi 3 ou Pi Zero W nécessite une modification de la configuration (voyez la section &amp;quot;[[Rasp-Hack-USB-Serie-TTL-WiFi-Modele|Pi Modèle WiFi et UART]]&amp;quot; de notre tutoriel consacré au câble console USB-Série)&lt;br /&gt;
&lt;br /&gt;
== Mystérieux connecteur J5 ==&lt;br /&gt;
Un autre connecteur ayant retenu notre attention depuis un moment (également disponible sur le Pi 3 et Pi 2) est le connecteur J5.&lt;br /&gt;
&lt;br /&gt;
Ce connecteur est visible sous la carte micro SD (sur un Pi Zero W).&lt;br /&gt;
&lt;br /&gt;
[[Fichier:RASP-PIZERO-W-J5-01.jpg|150px]]&lt;br /&gt;
&lt;br /&gt;
Je pensais, par erreur, qu'il s'agissait d'une future extension pour le Pi mais quelques recherchent tentent à laisser penser qu'il s'agit d'un connecteur &amp;quot;type&amp;quot; JTAG (pour programmer le BCM). Ce connecteur était semble t'il partiellement annoté sur un Pi B+.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:RASP-PIZERO-W-J5-02.png]]&amp;lt;small&amp;gt;&amp;lt;br /&amp;gt;Source: [http://www.sheffieldhardwarehackers.org.uk/wordpress/2015/12/the-hunt-for-j5/ The Hunt for J5]&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Voyez l'article &amp;quot;[http://www.sheffieldhardwarehackers.org.uk/wordpress/2015/12/the-hunt-for-j5/ The Hunt for J5]&amp;quot; de Andy Kirby pour plus d'information. &lt;br /&gt;
&lt;br /&gt;
{{PI-ZERO-W-TRAILER}}&lt;/div&gt;</summary>
		<author><name>AntoineWrt</name></author>
	</entry>
	<entry>
		<id>https://wiki.mchobby.be/index.php?title=Fichier:Rasp-Node-Red-picam-mail-46.png&amp;diff=22829</id>
		<title>Fichier:Rasp-Node-Red-picam-mail-46.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.mchobby.be/index.php?title=Fichier:Rasp-Node-Red-picam-mail-46.png&amp;diff=22829"/>
		<updated>2017-05-08T14:07:25Z</updated>

		<summary type="html">&lt;p&gt;AntoineWrt : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AntoineWrt</name></author>
	</entry>
	<entry>
		<id>https://wiki.mchobby.be/index.php?title=Rasp-Node-Red-picam-mail&amp;diff=22828</id>
		<title>Rasp-Node-Red-picam-mail</title>
		<link rel="alternate" type="text/html" href="https://wiki.mchobby.be/index.php?title=Rasp-Node-Red-picam-mail&amp;diff=22828"/>
		<updated>2017-05-08T14:04:21Z</updated>

		<summary type="html">&lt;p&gt;AntoineWrt : /* PiCamRED - Envoi périodique de photos par email avec PiCam et NodeRED */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Rasp-Node-Red-NAV}}&lt;br /&gt;
&lt;br /&gt;
{{traduction}}&lt;br /&gt;
&lt;br /&gt;
== PiCamRED - Envoi périodique de photos par email avec PiCam et NodeRED ==&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-01.png|900px]]&lt;br /&gt;
&lt;br /&gt;
{{ambox|text=&amp;quot;Les blocs (noeuds) sont liés entre-eux en cliquant et en maintenant le clic du point du bloc précédent (en réalité ils sont carrés ;) ) et en glissant sur le point du bloc suivant que l'on souhaite relier/connecter. Seules des entrées et des sorties peuvent être reliées, NodeRED refusera des liaisons incompatibles du type &amp;quot;entrée sur entrée ou sortie sur sortie.&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
=== Description du projet ===&lt;br /&gt;
&lt;br /&gt;
Dans ce tutoriel, nous allons réaliser des photos à l'aide de la caméra du RaspBerry Pi 2/3 et envoyer ces clichés par email de manière périodique grâce à NodeRED.&lt;br /&gt;
Nous allons donc utiliser plusieurs blocs et décrire de manière détaillée le déroulement de chaque étape de la réalisation de ce projet.&lt;br /&gt;
&lt;br /&gt;
Dans NodeRED, il est important de bien identifier la finalité de notre projet afin de connaître au préalable tous les éléments qu'il faudra créer et fournir à l'action finale (celle qui enverra un email).&lt;br /&gt;
&lt;br /&gt;
=== Quels sont les besoins du noeud email ===&lt;br /&gt;
&lt;br /&gt;
==== Composants nécessaires pour constituer un email ====&lt;br /&gt;
&lt;br /&gt;
Un email est composé des éléments suivants: &lt;br /&gt;
&lt;br /&gt;
* Un expéditeur&lt;br /&gt;
* Un destinataire&lt;br /&gt;
* Un sujet&lt;br /&gt;
* Le corps du message&lt;br /&gt;
&lt;br /&gt;
Tous ces éléments vont donc devoir être préparés afin de pouvoir construire le message à envoyer par le noeud final.&lt;br /&gt;
&lt;br /&gt;
Le noeud final aura aussi besoin d'un serveur SMTP (serveur d'envoi d'emails) et éventuellement de paramètres d'identification pour ce serveur d'envoi d'emails.&lt;br /&gt;
&lt;br /&gt;
==== Détail des besoins du noeud email ====&lt;br /&gt;
&lt;br /&gt;
La liste des éléments nécessaires s'affiche lorsque le bloc est dans la zone de travail (Schema).&lt;br /&gt;
Commençons donc par sélectionner le bloc email, et de le glisser dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
Commençons par cliquer sur le bloc email et nous maintenons le clic pour le glisser à droite dans l'espace de travail.&lt;br /&gt;
&lt;br /&gt;
(on choisit celui qui a son point de liaison à gauche, car nous voulons un bloc de sortie)&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-36.png]]&lt;br /&gt;
&lt;br /&gt;
Glissons le dans l'espace de travail, et cliquons un clic simple pour le sélectionner.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-37.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, dans la colonne à droite de cet espace de travail, nous cliquons sur info et nous pourrons découvrir les éléments nécessaires à la constitution d'un bloc email.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-38.png]]&lt;br /&gt;
&lt;br /&gt;
===== Nous utiliserons les champs suivants =====&lt;br /&gt;
&lt;br /&gt;
* '''msg.payload''' --&amp;gt; Ce champ contient le corps de l'email&lt;br /&gt;
* '''msg.topic''' --&amp;gt; Ce champ contient le sujet de l'email&lt;br /&gt;
* '''msg.from''' --&amp;gt; Ce champ contient l'email de l'expéditeur &lt;br /&gt;
* '''msg.to''' --&amp;gt; Ce champ contient l'email du destinataire&lt;br /&gt;
&lt;br /&gt;
Les autres champs ne seront pas utilisés dans notre cas, mais vous pourrez constater que le bloc email est complet de part ses fonctionnalités et possibilités.&lt;br /&gt;
&lt;br /&gt;
Les données de serveur et d'identification seront abordées en fin de tuto lors de la configuration finale du bloc.&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant passer à la réalisation du flux en commençant par le début de celui-ci.&lt;br /&gt;
&lt;br /&gt;
=== Création d'une action périodique ===&lt;br /&gt;
&lt;br /&gt;
Dans la colonne de gauche de NodeRED, se trouvent une liste de blocs à utiliser pour réaliser vos projets. Ils sont classés par &amp;quot;types&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Ainsi nous retrouvons les &amp;quot;types&amp;quot; suivants:&lt;br /&gt;
&lt;br /&gt;
* '''Input''' qui contient tous les blocs d'entrées&lt;br /&gt;
* '''Ouput''' qui contient tous les blocs de sortie&lt;br /&gt;
* '''Function''' qui contient des blocs de fonctions javascript etc...&lt;br /&gt;
* '''Social''' qui sont des blocs d'entrée ou sorties depuis ou vers les réseaux sociaux&lt;br /&gt;
* '''Storage''' qui sont des fonctions de lecture ou d'écriture de fichiers&lt;br /&gt;
* '''Analysis''' -&amp;gt;&amp;gt; Sentiment interprète du texte et détermine un score sur base d'un dictionnaire anglais, renvoie le texte avec ce score de -5 à +5, déterminant ainsi l'émotion susceptible d'être procuré par ce texte&lt;br /&gt;
* '''Advanced''' possède des outils permettant de détecter des changements dans des fichiers ou dossiers, de lire des flux RSS ou encore EXEC qui permet d'exécuter directement des commandes sous linux !&lt;br /&gt;
* '''Raspberry Pi''' contient des outils pour piloter/lire le GPIO du raspberry Pi&lt;br /&gt;
* '''Network''' qui contient un outil réseau de Ping&lt;br /&gt;
 &lt;br /&gt;
Nous allons créer une action périodique, c'est à dire paramétrer un bloc '''&amp;quot;INJECT&amp;quot;''' de manière à déclencher régulièrement une chaine d'actions que nous allons accrocher à la suite les unes après les autres.&lt;br /&gt;
Nous allons donc cliquer sur le bloc '''&amp;quot;Inject&amp;quot;''' dans la liste &amp;quot;Input&amp;quot; et maintenir ce clic pour le déplacer vers la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-02.png]]&lt;br /&gt;
&lt;br /&gt;
Nous obtiendrons donc une nouvelle instance &amp;quot;inject&amp;quot; qui portera le nom '''&amp;quot;Timestamp&amp;quot;''' (ce nom est attribué par défaut par NodeRED) comme dans la capture ci-dessous&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-03.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant double-cliquer sur celle-ci fin de l'éditer pour voir apparaitre le menu ci-dessous&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-04.png]]&lt;br /&gt;
&lt;br /&gt;
Il va falloir configurer ce bloc, mais avant tout voici une explication de celui-ci:&lt;br /&gt;
&lt;br /&gt;
==== Payload ====&lt;br /&gt;
&lt;br /&gt;
Le champs PayLoad est en fait le champ de données qui sera suivi d'un noeud à l'autre jusque à la fin de la chaine.&lt;br /&gt;
Dans ce module '''&amp;quot;inject&amp;quot;''', nous allons donc déterminer quel type de données contiendra le '''&amp;quot;PayLoad&amp;quot;''' jusqu'à la fin de la chaine que l'on va réaliser.&lt;br /&gt;
&lt;br /&gt;
Dans notre cas, nous souhaitons construire un email, donc du contenu textuel, nous allons donc choisir '''&amp;quot;String&amp;quot;''' ce qui correspond à une chaine de caractères (du texte).&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-05.png]]&lt;br /&gt;
&lt;br /&gt;
==== Topic ====&lt;br /&gt;
&lt;br /&gt;
Le champs &amp;quot;Topic&amp;quot; est un champs de texte dans lequel nous allons mettre un sujet succinct décrivant notre chaine. &lt;br /&gt;
Dans notre cas, ce sujet fera office de sujet au mail que nous expédierons. &lt;br /&gt;
Nous allons donc être précis en un minimum de mots pour que le destinataire de l'email puisse facilement deviner le contenu de celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-06.png]]&lt;br /&gt;
&lt;br /&gt;
==== Repeat ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite choisir l'intervalle de déclenchement de notre action, sachant que nous avons le choix entre: &lt;br /&gt;
&lt;br /&gt;
* '''none'''  : pas de déclenchement périodique programmé&lt;br /&gt;
* '''interval''' : nous fixons un temps de déclenchement à partir du lancement du programme, l'action se réalisera à chaque fois que ce temps sera écoulé de manière répétée jusqu'à l'interruption manuelle du programme&lt;br /&gt;
* '''interval between times''' : nous fixons ici le déclenchement par interval, mais nous fixons aussi une fourchette d'heures et des jours pendant lesquels nous exécutons cet interval&lt;br /&gt;
* '''at a specific time''' : nous fixons une heure d'exécution, et un ou plusieurs jours d'exécution. Dans ce cas l'action n'est pas répétée en continu mais éxécutée une seule fois par jour à l'heure programmée&lt;br /&gt;
&lt;br /&gt;
Dans notre exemple, nous allons fixer un intervalle de 15 secondes pour commencer. Nous pourrons ensuite augmenter cette valeur pour éviter de recevoir trop d'emails avec des photos :D&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-07.png]]&lt;br /&gt;
&lt;br /&gt;
La case '''&amp;quot;inject once at start&amp;quot;''' permet de ne pas attendre le premier cycle avant d'exécuter une première fois l'action. Elle se lancera dès le lancement du programme, puis périodiquement selon les cycles déterminés par l'intervalle.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-08.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Le champs Name va déterminer le nom que portera le bloc dans l'espace de travail et dans les logs (si nous créons des blocs de log ensuite pour contrôler des étapes).&lt;br /&gt;
Il est important de bien établir ce nom de manière explicite, car le nom des blocs permettra de comprendre et retrouver facilement la logique du schéma construit, même si l'on a pas consulté celui-ci pendant une longue période.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-09.png]]&lt;br /&gt;
&lt;br /&gt;
=== Capture d'une image depuis la PiCam ===&lt;br /&gt;
&lt;br /&gt;
Nous allons aller à l'essentiel en ce qui concerne la capture photo en utilisant une commande simple pour prendre un cliché et renvoyer celui-ci dans le flux NodeRED grâce à un bloc permettant d'exécuter des commandes bash.&lt;br /&gt;
&lt;br /&gt;
{{ambox | text = Vous trouverez un TUTO détaillé sur la PiCam vous permettant de prendre la main, ou de la paramétrer si vous n'avez pas encore utilisé celle-ci auparavant: ....___TUTO___...}} &lt;br /&gt;
&lt;br /&gt;
Nous allons tout d'abord cliquer sur le bloc &amp;quot;Exec&amp;quot; dans la section &amp;quot;Advanced&amp;quot; de la colonne de gauche et glisser l'élément dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-10.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, cliquer sur le bloc nouvellement créé et configurer celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-11.png]]&lt;br /&gt;
&lt;br /&gt;
Le menu suivant s'affichera, et nous pourrons configurer le bloc &amp;quot;Exec&amp;quot; nouvellement créé.&lt;br /&gt;
&lt;br /&gt;
==== Command ====&lt;br /&gt;
&lt;br /&gt;
Nous allons y ajouter la commande à exécuter pour prendre une photo avec la caméra du Raspberry Pi et la stocker dans un fichier jpg dans le dossier /tmp/ de linux.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
raspistill -o /tmp/cam.jpg -w 640 -h 480&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous prenons soin de limiter la hauteur et la largeur de l'image afin de réduire son poids pour l'envoi par email.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-12.png]]&lt;br /&gt;
&lt;br /&gt;
==== +Append ====&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons décocher la case &amp;quot;msg.payload&amp;quot; si elle est cochée par défaut.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-13.png]]&lt;br /&gt;
&lt;br /&gt;
==== Extra input parameters et Timeout ====&lt;br /&gt;
&lt;br /&gt;
Nous n'aurons pas besoin de compléter ces champs pour notre projet.&lt;br /&gt;
&lt;br /&gt;
Si vous cochez le champ &amp;quot;Use spawn() instead of exec()?&amp;quot;, votre commande sera réalisée sous forme d'un processus résident et continuera de s'exécuter jusqu'à ce qu'elle se termine par elle-même (sauf si elle ne se termine jamais).&lt;br /&gt;
Cette solution implique que le programme n'attendra pas que cette commande soit réalisée pour passer aux étapes suivantes. &lt;br /&gt;
Si la suite de l'exécution de votre flux est susceptible d'utiliser le résultat de cette commande, nous vous déconseillons d'utiliser cette option sous peine de provoquer des erreurs à la suite du traitement du flux.&lt;br /&gt;
&lt;br /&gt;
Le champ &amp;quot;Timeout&amp;quot; permet de définir un temps d'attente maximum avant de mettre un terme à l'exécution de la commande. &lt;br /&gt;
Cela permet de débloquer la situation si la commande exécutée prends un temps anormalement long à s'exécuter.&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite compléter le champs nom, celui-ci sera utilisé pour nommer le bloc dans le &amp;quot;schéma&amp;quot;, mais aussi de nommer les logs comme pour le bloc &amp;quot;Exec&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-14.png]]&lt;br /&gt;
&lt;br /&gt;
=== Encodage de l'image en base64 ===&lt;br /&gt;
&lt;br /&gt;
Nous allons convertir la photo prise juste avant en utilisant une commande de conversion en base64.&lt;br /&gt;
Cela facilitera son injection dans un template HTML que nous allons créer ensuite pour construire un email.&lt;br /&gt;
&lt;br /&gt;
Nous allons tout d'abord cliquer sur le bloc &amp;quot;Exec&amp;quot; dans la section &amp;quot;Advanced&amp;quot; de la colonne de gauche et glisser l'élément dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-10.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, cliquer sur le bloc nouvellement créé et configurer celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-11.png]]&lt;br /&gt;
&lt;br /&gt;
Le menu suivant s'affichera, et nous pourrons configurer le bloc &amp;quot;Exec&amp;quot; nouvellement créé.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-15.png]]&lt;br /&gt;
&lt;br /&gt;
==== Command ====&lt;br /&gt;
&lt;br /&gt;
Nous allons y ajouter la commande à exécuter pour encoder en base 64 la photo prise précédemment avec la caméra du Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
base64 -i &amp;quot;/tmp/cam.jpg&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-16.png]]&lt;br /&gt;
&lt;br /&gt;
==== +Append ====&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons cocher la case &amp;quot;msg.payload&amp;quot; si elle n'est pas cochée par défaut pour que le résultat soit directement renvoyé par cette commande dans le &amp;quot;PayLoad&amp;quot; du flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-17.png]]&lt;br /&gt;
&lt;br /&gt;
==== Extra input parameters et Timeout ====&lt;br /&gt;
&lt;br /&gt;
Nous n'aurons pas besoin de compléter ces champs pour notre projet.&lt;br /&gt;
&lt;br /&gt;
Si vous cochez le champ &amp;quot;Use spawn() instead of exec()?&amp;quot;, votre commande sera réalisée sous forme d'un processus résident et continuera de s'exécuter jusqu'à ce qu'elle se termine par elle-même (sauf si elle ne se termine jamais).&lt;br /&gt;
Cette solution implique que le programme n'attendra pas que cette commande soit réalisée pour passer aux étapes suivantes. &lt;br /&gt;
Si la suite de l'exécution de votre flux est susceptible d'utiliser le résultat de cette commande, nous vous déconseillons d'utiliser cette option sous peine de provoquer des erreurs à la suite du traitement du flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-18.png]]&lt;br /&gt;
&lt;br /&gt;
Le champ &amp;quot;Timeout&amp;quot; permet de définir un temps d'attente maximum avant de mettre un terme à l'exécution de la commande. &lt;br /&gt;
Cela permet de débloquer la situation si la commande exécutée prends un temps anormalement long à s'exécuter.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-19.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite compléter le champs nom, celui-ci sera utilisé pour nommer le bloc dans le &amp;quot;schéma&amp;quot;, mais aussi de nommer les logs comme pour le bloc &amp;quot;Exec&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-20.png]]&lt;br /&gt;
&lt;br /&gt;
=== Création d'un email au format HTML ===&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant créer un template d'email au format HTML afin de mettre en forme le message que nous enverrons ensuite.&lt;br /&gt;
Nous allons pour cela utiliser un bloc &amp;quot;Template&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-21.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons attribuer un nom au bloc afin de l'identifier plus facilement dans le flux.&lt;br /&gt;
Nous allons donc le nommer &amp;quot;Contenu du mail&amp;quot; puisque nous créons le contenu du mail que nous enverrons ensuite.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-22.png]]&lt;br /&gt;
&lt;br /&gt;
==== Set property ====&lt;br /&gt;
&lt;br /&gt;
La propriété que nous souhaitons créer dans le flux est le &amp;quot;PayLoad&amp;quot;.&lt;br /&gt;
Ce PayLoad existe déjà, il contient pour le moment l'image au format &amp;quot;Base64&amp;quot; précédemment encodé.&lt;br /&gt;
Cela n'est pas un problème, après notre noeud (notre bloc), le PayLoad sera intégralement remplacé par le template que nous sommes en train de créer.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-23.png]]&lt;br /&gt;
&lt;br /&gt;
==== Template ====&lt;br /&gt;
&lt;br /&gt;
Dans ce template, nous allons créer une structure HTML de base minimum afin que la structure soit interprétée par la majorité des clients/webmail.&lt;br /&gt;
Vous pouvez la personnaliser à votre guise si vous avez les connaissances en HTML.&lt;br /&gt;
&lt;br /&gt;
Voici la structure de base pour notre projet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
    &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;meta charset=&amp;quot;utf8&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/head&amp;gt;&lt;br /&gt;
    &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Projet Photo par email&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;img src=&amp;quot;data:image/jpg;base64,{{payload}}&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pourrez remarquer que nous intégrons l'image en appelant le PayLoad à 'intérieur du code HTML dans la balise &amp;lt;img&amp;gt;.&lt;br /&gt;
C'est le PayLoad créé précédemment par le bloc &amp;quot;Exec&amp;quot; qui est récupéré à ce moment précis.&lt;br /&gt;
Ce PayLoad est remplacé dans le flux par le PayLoad complet avec notre template dans le flux par notre bloc Template.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-24.png]]&lt;br /&gt;
&lt;br /&gt;
=== Création d'un bloc (noeud) &amp;quot;Debug&amp;quot;  ===&lt;br /&gt;
&lt;br /&gt;
Nous allons ajouter la notion d'expéditeur dans le flux que nous avons créé à travers nos blocs (noeuds).&lt;br /&gt;
Pour rappel, actuellement nous avons deux propriétés avec des données dans notre flux. &lt;br /&gt;
Si nous voulons observer ce que nous avons créé jusque là, nous pouvons faire appel à un bloc &amp;quot;Debug&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Création du bloc &amp;quot;Debug&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Comme pour les blocs précédents, nous allons glisser/déposer un bloc débug dans l'espace de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-25.png]]&lt;br /&gt;
&lt;br /&gt;
Celui-ci s'appelle msg/payload par défaut&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-26.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons double-cliquer sur ce bloc pour le configurer.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-27.png]]&lt;br /&gt;
&lt;br /&gt;
==== Output ====&lt;br /&gt;
&lt;br /&gt;
Dans ce champs, nous allons choisir la partie du flux que nous souhaitons afficher, ou nous allons sélectionner le flux entier.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-28.png]]&lt;br /&gt;
&lt;br /&gt;
Sélectionner le flux entier, nous affichera le flux complet incluant toutes ses propriétés.&lt;br /&gt;
&lt;br /&gt;
 [[fichier:Rasp-Node-Red-picam-mail-29.png]]&lt;br /&gt;
&lt;br /&gt;
==== To =====&lt;br /&gt;
&lt;br /&gt;
La propriété &amp;quot;To&amp;quot; nous permet de choisir ou nous souhaitons afficher les données que nous récupérons. &lt;br /&gt;
Soit nous les affichons uniquement dans l'onglet &amp;quot;Debug&amp;quot; à droite de l'espace de travail, soit nous l'affichons dans cet onglet mais aussi dans la console de NodeJS.&lt;br /&gt;
Dans notre cas, nous allons nous contenter d'afficher nos éléments dans l'onglet de &amp;quot;Debug&amp;quot; à droite de notre espace de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-30.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Le champs Name nous servira à identifier quel bloc de &amp;quot;Debug&amp;quot; affiche les données en console ou dans l'onglet &amp;quot;Debug&amp;quot;. &lt;br /&gt;
Il faut donc le nommer efficacement pour bien attacher et comprendre les données que nous récupérons, surtout si nous en plaçons plusieurs dans le flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-31.png]]&lt;br /&gt;
&lt;br /&gt;
==== Exploitation et compréhension des données récupérées ====&lt;br /&gt;
&lt;br /&gt;
Nous avons placé notre bloc &amp;quot;Debug&amp;quot; à la suite du flux en dernière position. &lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-32.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons donc déployer le programme en cliquant sur &amp;quot;Deploy&amp;quot; en haut à droite de la page. &lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-33.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons exécuter manuellement le programme en cliquant sur le bouton se trouvant en début de chaîne:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-34.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite afficher l'onglet &amp;quot;Debug&amp;quot; sur le coté droit de la page et analyser les données récupérées:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-35.png]]&lt;br /&gt;
&lt;br /&gt;
==== Analyse des données récupérées dans l'onglet &amp;quot;Debug&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
08/05/2017 à 12:54:31 node: FORMATAGE&lt;br /&gt;
MCHobby - Photo bureau : msg : Object&lt;br /&gt;
object&lt;br /&gt;
_msgid: &amp;quot;81efe35c.3208d&amp;quot;&lt;br /&gt;
topic: &amp;quot;MCHobby - Photo bureau&amp;quot;&lt;br /&gt;
payload: &amp;quot;&amp;lt;html&amp;gt;↵ &amp;lt;head&amp;gt;↵ &amp;lt;meta charset=&amp;quot;utf8&amp;quot;/&amp;gt;↵ ↵ &amp;lt;/head&amp;gt;↵ &amp;lt;body&amp;gt;↵ &amp;lt;h1&amp;gt;MCHobby - Photo bureau&amp;lt;/h1&amp;gt;↵ &amp;lt;p&amp;gt;Cette photo est un instantané pris dans les bureaux de MCHobby.&amp;lt;/p&amp;gt;↵ &lt;br /&gt;
&amp;lt;img src=&amp;quot;data:image/jpg;base64,&amp;amp;#x2F;9j&amp;amp;#x2F;4WP6x2.../&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comme vous pourrez le constater, chaque élément du noeud est détaillé.&lt;br /&gt;
Les données sont cependant tronquées, le noeud &amp;quot;Debug&amp;quot; ne nous fourni pas la totalité du &amp;quot;PayLoad&amp;quot; mais nous avons déjà un bon aperçu des données qu'il contient.&lt;br /&gt;
&lt;br /&gt;
* '''_msgid:''' est un Id unique de message&lt;br /&gt;
* '''topic:''' est le sujet du mail, nous l'avons déterminé dans le premier bloc&lt;br /&gt;
* '''payload:''' contient les données du message formatées par le template que nous avons créé et complété par l'image en base64.&lt;br /&gt;
&lt;br /&gt;
{{tmbox | text = Les noeuds &amp;quot;Debug&amp;quot; sont pratiques. Ils nous permettent d'afficher une partie ou la totalité du flux tel qu'il est à l'endroit ou ils sont placés. Cela peut permettre d'identifier et de résoudre plus facilement des problèmes dans des opérations plus complexes et dans notre cas, cela nous permet de mieux comprendre comment fonctionne le noeud et comment les données sont transmises d'un bloc à l'autre.}}&lt;br /&gt;
&lt;br /&gt;
=== Création d'un expéditeur ===&lt;br /&gt;
&lt;br /&gt;
Nous avons construit petit à petit un message avec un sujet, mais il manque encore un détail: l'expéditeur de l'email que nous allons envoyer: le fameux &amp;quot;msg.from&amp;quot; que nous avons évoqué au début de tuto !&lt;br /&gt;
&lt;br /&gt;
Si vous avez bien suivi les étapes précédentes du tuto, jusqu'au noeud &amp;quot;Debug&amp;quot; et à son résultat, vous comprendrez facilement la démarche ci après pour ajouter un expéditeur dans le flux.&lt;br /&gt;
&lt;br /&gt;
Nous allons ajouter un nouveau noeud &amp;quot;Template&amp;quot; dans la zone de travail et double cliquer dessus pour afficher sa page de configuration:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-39.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite sélectionner le type de propriété que nous souhaitons injecter dans le flux: '''&amp;quot;msg.from&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-40.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cette propriété étant une adresse email, nous allons choisir le type '''&amp;quot;plaintext&amp;quot;''' comme type de données.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-41.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous allons enfin donner un nom explicite à notre bloc afin d'identifier facilement sa fonctionnalité parmi les autres blocs.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-42.png]]&lt;br /&gt;
&lt;br /&gt;
=== Création du bloc d'envoi d'email ===&lt;br /&gt;
&lt;br /&gt;
==== To : destinataire ====&lt;br /&gt;
&lt;br /&gt;
Simplement, l'adresse email du destinataire du message.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-43.png]]&lt;br /&gt;
&lt;br /&gt;
==== Server, port, secure connection ====&lt;br /&gt;
&lt;br /&gt;
Dans ce champ, nous allons mettre un serveur SMTP (serveur email) pour permettre l'envoi de l'email. Dans la plupart des cas, le SMTP de votre FAI (fournisseur d'accès à internet) pourra servir d'intermédiaire.&lt;br /&gt;
Nous vous invitons à consulter les paramètres propres à votre fournisseur d'accès pour paramétrer ce bloc.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-44.png]]&lt;br /&gt;
&lt;br /&gt;
==== UserID et Password ====&lt;br /&gt;
&lt;br /&gt;
Ces champs resteront vides si votre FAI ne nécessite pas d'authentification pour envoyer des emails.&lt;br /&gt;
Si vous utilisez un autre fournisseur, tel que GMAIL par exemple, il faudra mettre votre adresse email et votre mot de passe pour vous identifier.&lt;br /&gt;
&lt;br /&gt;
{{ambox-stop|text=&amp;quot;Attention: votre compte gmail devra être configuré au préalable afin d'autoriser un &amp;quot;client email&amp;quot; à utiliser votre compte pour envoyer/recevoir des emails par ce biais. Nous vous invitons à consulter la documentation de Gmail pour en savoir plus.&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-45.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Enfin, le champ &amp;quot;Name&amp;quot; qui vous permet de donner un nom au bloc d'envoi d'email.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-46.png]]&lt;br /&gt;
&lt;br /&gt;
=== Déploiement et premiers tests ===&lt;br /&gt;
&lt;br /&gt;
Afin de &amp;quot;lancer le programme&amp;quot; que nous venons de créer, il suffit de cliquer sur le bouton &amp;quot;Deploy&amp;quot; en haut à droite de la page.&lt;br /&gt;
&lt;br /&gt;
===== La photo ne se réalise pas =====&lt;br /&gt;
&lt;br /&gt;
Si la photo ne se réalise pas, il faut commencer par vérifier la commande dans le bloc de prise de photo.&lt;br /&gt;
Nous vous invitons vivement à tester la commande directement dans le terminal afin de vous assurer que celle-ci soit d'une syntaxe correcte et ne rencontre pas de problème d'exécution.&lt;br /&gt;
Les problèmes d'exécution de commandes externes dans le bloc '''&amp;quot;command&amp;quot;''' peuvent amener à des blocages dans l'exécution et empêcher NodeRED de continuer à exécuter le '''&amp;quot;Schéma&amp;quot;'''.&lt;br /&gt;
&lt;br /&gt;
===== La photo se réalise mais l'encodage en base64 bloque =====&lt;br /&gt;
&lt;br /&gt;
Si le programme bloque à l'encodage, comme précédemment, nous vous invitons à vérifier votre commande en l'exécutant directement dans le terminal.&lt;br /&gt;
Vous pourrez identifier directement le problème et le résoudre le cas échéant.&lt;br /&gt;
&lt;br /&gt;
===== L'encodage fonctionne, mais le PayLoad reste vide =====&lt;br /&gt;
&lt;br /&gt;
N'auriez-vous pas oublié de cocher la case '''&amp;quot;+ Append : msg.payload&amp;quot;''' dans le bloc qui lance la commande de conversion en base64 ?&lt;br /&gt;
&lt;br /&gt;
===== Mon email arrive vide =====&lt;br /&gt;
&lt;br /&gt;
Retournez à l'étape de mise en forme du message afin de vérifier si vous n'avez pas omis un paramètre ou une fonctionnalité.&lt;br /&gt;
&lt;br /&gt;
===== L'image ne s'affiche pas dans l'email reçu  =====&lt;br /&gt;
&lt;br /&gt;
Si l'image ne s'affiche pas, il faudrait vérifier si vous avez bien lié vos blocs sur la première sortie des blocs '''&amp;quot;Exec&amp;quot;'''.&lt;br /&gt;
Les deux autres sorties étant destinées à d'autres états d'exécution/erreur.&lt;br /&gt;
&lt;br /&gt;
===== Le sujet de l'email est vide =====&lt;br /&gt;
&lt;br /&gt;
Dans notre cas, le sujet est fixé dans le premier bloc dans le champ '''&amp;quot;Topic&amp;quot;'''.&lt;br /&gt;
Vous pouvez-donc ré-éditer ce bloc afin de vérifier si celui-ci n'est pas resté vide.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Rasp-Node-Red-TRAILER}}&lt;/div&gt;</summary>
		<author><name>AntoineWrt</name></author>
	</entry>
	<entry>
		<id>https://wiki.mchobby.be/index.php?title=Rasp-Node-Red-picam-mail&amp;diff=22827</id>
		<title>Rasp-Node-Red-picam-mail</title>
		<link rel="alternate" type="text/html" href="https://wiki.mchobby.be/index.php?title=Rasp-Node-Red-picam-mail&amp;diff=22827"/>
		<updated>2017-05-08T14:03:15Z</updated>

		<summary type="html">&lt;p&gt;AntoineWrt : /* PiCamRED - Envoi périodique de photos par email avec PiCam et NodeRED */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Rasp-Node-Red-NAV}}&lt;br /&gt;
&lt;br /&gt;
{{traduction}}&lt;br /&gt;
&lt;br /&gt;
== PiCamRED - Envoi périodique de photos par email avec PiCam et NodeRED ==&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-01.png|900px]]&lt;br /&gt;
&lt;br /&gt;
{{ambox|text=&amp;quot;Les blocs (noeuds) sont liés entre-eux en cliquant et en maintenant le clic du point du bloc précédent (en réalité il est carré) et en glissant sur le carré du bloc suivant que l'on veut relier. Seules des entrées et des sorties peuvent être reliées, NodeRED refusera des liaisons incompatibles.&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
=== Description du projet ===&lt;br /&gt;
&lt;br /&gt;
Dans ce tutoriel, nous allons réaliser des photos à l'aide de la caméra du RaspBerry Pi 2/3 et envoyer ces clichés par email de manière périodique grâce à NodeRED.&lt;br /&gt;
Nous allons donc utiliser plusieurs blocs et décrire de manière détaillée le déroulement de chaque étape de la réalisation de ce projet.&lt;br /&gt;
&lt;br /&gt;
Dans NodeRED, il est important de bien identifier la finalité de notre projet afin de connaître au préalable tous les éléments qu'il faudra créer et fournir à l'action finale (celle qui enverra un email).&lt;br /&gt;
&lt;br /&gt;
=== Quels sont les besoins du noeud email ===&lt;br /&gt;
&lt;br /&gt;
==== Composants nécessaires pour constituer un email ====&lt;br /&gt;
&lt;br /&gt;
Un email est composé des éléments suivants: &lt;br /&gt;
&lt;br /&gt;
* Un expéditeur&lt;br /&gt;
* Un destinataire&lt;br /&gt;
* Un sujet&lt;br /&gt;
* Le corps du message&lt;br /&gt;
&lt;br /&gt;
Tous ces éléments vont donc devoir être préparés afin de pouvoir construire le message à envoyer par le noeud final.&lt;br /&gt;
&lt;br /&gt;
Le noeud final aura aussi besoin d'un serveur SMTP (serveur d'envoi d'emails) et éventuellement de paramètres d'identification pour ce serveur d'envoi d'emails.&lt;br /&gt;
&lt;br /&gt;
==== Détail des besoins du noeud email ====&lt;br /&gt;
&lt;br /&gt;
La liste des éléments nécessaires s'affiche lorsque le bloc est dans la zone de travail (Schema).&lt;br /&gt;
Commençons donc par sélectionner le bloc email, et de le glisser dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
Commençons par cliquer sur le bloc email et nous maintenons le clic pour le glisser à droite dans l'espace de travail.&lt;br /&gt;
&lt;br /&gt;
(on choisit celui qui a son point de liaison à gauche, car nous voulons un bloc de sortie)&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-36.png]]&lt;br /&gt;
&lt;br /&gt;
Glissons le dans l'espace de travail, et cliquons un clic simple pour le sélectionner.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-37.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, dans la colonne à droite de cet espace de travail, nous cliquons sur info et nous pourrons découvrir les éléments nécessaires à la constitution d'un bloc email.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-38.png]]&lt;br /&gt;
&lt;br /&gt;
===== Nous utiliserons les champs suivants =====&lt;br /&gt;
&lt;br /&gt;
* '''msg.payload''' --&amp;gt; Ce champ contient le corps de l'email&lt;br /&gt;
* '''msg.topic''' --&amp;gt; Ce champ contient le sujet de l'email&lt;br /&gt;
* '''msg.from''' --&amp;gt; Ce champ contient l'email de l'expéditeur &lt;br /&gt;
* '''msg.to''' --&amp;gt; Ce champ contient l'email du destinataire&lt;br /&gt;
&lt;br /&gt;
Les autres champs ne seront pas utilisés dans notre cas, mais vous pourrez constater que le bloc email est complet de part ses fonctionnalités et possibilités.&lt;br /&gt;
&lt;br /&gt;
Les données de serveur et d'identification seront abordées en fin de tuto lors de la configuration finale du bloc.&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant passer à la réalisation du flux en commençant par le début de celui-ci.&lt;br /&gt;
&lt;br /&gt;
=== Création d'une action périodique ===&lt;br /&gt;
&lt;br /&gt;
Dans la colonne de gauche de NodeRED, se trouvent une liste de blocs à utiliser pour réaliser vos projets. Ils sont classés par &amp;quot;types&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Ainsi nous retrouvons les &amp;quot;types&amp;quot; suivants:&lt;br /&gt;
&lt;br /&gt;
* '''Input''' qui contient tous les blocs d'entrées&lt;br /&gt;
* '''Ouput''' qui contient tous les blocs de sortie&lt;br /&gt;
* '''Function''' qui contient des blocs de fonctions javascript etc...&lt;br /&gt;
* '''Social''' qui sont des blocs d'entrée ou sorties depuis ou vers les réseaux sociaux&lt;br /&gt;
* '''Storage''' qui sont des fonctions de lecture ou d'écriture de fichiers&lt;br /&gt;
* '''Analysis''' -&amp;gt;&amp;gt; Sentiment interprète du texte et détermine un score sur base d'un dictionnaire anglais, renvoie le texte avec ce score de -5 à +5, déterminant ainsi l'émotion susceptible d'être procuré par ce texte&lt;br /&gt;
* '''Advanced''' possède des outils permettant de détecter des changements dans des fichiers ou dossiers, de lire des flux RSS ou encore EXEC qui permet d'exécuter directement des commandes sous linux !&lt;br /&gt;
* '''Raspberry Pi''' contient des outils pour piloter/lire le GPIO du raspberry Pi&lt;br /&gt;
* '''Network''' qui contient un outil réseau de Ping&lt;br /&gt;
 &lt;br /&gt;
Nous allons créer une action périodique, c'est à dire paramétrer un bloc '''&amp;quot;INJECT&amp;quot;''' de manière à déclencher régulièrement une chaine d'actions que nous allons accrocher à la suite les unes après les autres.&lt;br /&gt;
Nous allons donc cliquer sur le bloc '''&amp;quot;Inject&amp;quot;''' dans la liste &amp;quot;Input&amp;quot; et maintenir ce clic pour le déplacer vers la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-02.png]]&lt;br /&gt;
&lt;br /&gt;
Nous obtiendrons donc une nouvelle instance &amp;quot;inject&amp;quot; qui portera le nom '''&amp;quot;Timestamp&amp;quot;''' (ce nom est attribué par défaut par NodeRED) comme dans la capture ci-dessous&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-03.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant double-cliquer sur celle-ci fin de l'éditer pour voir apparaitre le menu ci-dessous&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-04.png]]&lt;br /&gt;
&lt;br /&gt;
Il va falloir configurer ce bloc, mais avant tout voici une explication de celui-ci:&lt;br /&gt;
&lt;br /&gt;
==== Payload ====&lt;br /&gt;
&lt;br /&gt;
Le champs PayLoad est en fait le champ de données qui sera suivi d'un noeud à l'autre jusque à la fin de la chaine.&lt;br /&gt;
Dans ce module '''&amp;quot;inject&amp;quot;''', nous allons donc déterminer quel type de données contiendra le '''&amp;quot;PayLoad&amp;quot;''' jusqu'à la fin de la chaine que l'on va réaliser.&lt;br /&gt;
&lt;br /&gt;
Dans notre cas, nous souhaitons construire un email, donc du contenu textuel, nous allons donc choisir '''&amp;quot;String&amp;quot;''' ce qui correspond à une chaine de caractères (du texte).&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-05.png]]&lt;br /&gt;
&lt;br /&gt;
==== Topic ====&lt;br /&gt;
&lt;br /&gt;
Le champs &amp;quot;Topic&amp;quot; est un champs de texte dans lequel nous allons mettre un sujet succinct décrivant notre chaine. &lt;br /&gt;
Dans notre cas, ce sujet fera office de sujet au mail que nous expédierons. &lt;br /&gt;
Nous allons donc être précis en un minimum de mots pour que le destinataire de l'email puisse facilement deviner le contenu de celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-06.png]]&lt;br /&gt;
&lt;br /&gt;
==== Repeat ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite choisir l'intervalle de déclenchement de notre action, sachant que nous avons le choix entre: &lt;br /&gt;
&lt;br /&gt;
* '''none'''  : pas de déclenchement périodique programmé&lt;br /&gt;
* '''interval''' : nous fixons un temps de déclenchement à partir du lancement du programme, l'action se réalisera à chaque fois que ce temps sera écoulé de manière répétée jusqu'à l'interruption manuelle du programme&lt;br /&gt;
* '''interval between times''' : nous fixons ici le déclenchement par interval, mais nous fixons aussi une fourchette d'heures et des jours pendant lesquels nous exécutons cet interval&lt;br /&gt;
* '''at a specific time''' : nous fixons une heure d'exécution, et un ou plusieurs jours d'exécution. Dans ce cas l'action n'est pas répétée en continu mais éxécutée une seule fois par jour à l'heure programmée&lt;br /&gt;
&lt;br /&gt;
Dans notre exemple, nous allons fixer un intervalle de 15 secondes pour commencer. Nous pourrons ensuite augmenter cette valeur pour éviter de recevoir trop d'emails avec des photos :D&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-07.png]]&lt;br /&gt;
&lt;br /&gt;
La case '''&amp;quot;inject once at start&amp;quot;''' permet de ne pas attendre le premier cycle avant d'exécuter une première fois l'action. Elle se lancera dès le lancement du programme, puis périodiquement selon les cycles déterminés par l'intervalle.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-08.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Le champs Name va déterminer le nom que portera le bloc dans l'espace de travail et dans les logs (si nous créons des blocs de log ensuite pour contrôler des étapes).&lt;br /&gt;
Il est important de bien établir ce nom de manière explicite, car le nom des blocs permettra de comprendre et retrouver facilement la logique du schéma construit, même si l'on a pas consulté celui-ci pendant une longue période.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-09.png]]&lt;br /&gt;
&lt;br /&gt;
=== Capture d'une image depuis la PiCam ===&lt;br /&gt;
&lt;br /&gt;
Nous allons aller à l'essentiel en ce qui concerne la capture photo en utilisant une commande simple pour prendre un cliché et renvoyer celui-ci dans le flux NodeRED grâce à un bloc permettant d'exécuter des commandes bash.&lt;br /&gt;
&lt;br /&gt;
{{ambox | text = Vous trouverez un TUTO détaillé sur la PiCam vous permettant de prendre la main, ou de la paramétrer si vous n'avez pas encore utilisé celle-ci auparavant: ....___TUTO___...}} &lt;br /&gt;
&lt;br /&gt;
Nous allons tout d'abord cliquer sur le bloc &amp;quot;Exec&amp;quot; dans la section &amp;quot;Advanced&amp;quot; de la colonne de gauche et glisser l'élément dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-10.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, cliquer sur le bloc nouvellement créé et configurer celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-11.png]]&lt;br /&gt;
&lt;br /&gt;
Le menu suivant s'affichera, et nous pourrons configurer le bloc &amp;quot;Exec&amp;quot; nouvellement créé.&lt;br /&gt;
&lt;br /&gt;
==== Command ====&lt;br /&gt;
&lt;br /&gt;
Nous allons y ajouter la commande à exécuter pour prendre une photo avec la caméra du Raspberry Pi et la stocker dans un fichier jpg dans le dossier /tmp/ de linux.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
raspistill -o /tmp/cam.jpg -w 640 -h 480&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous prenons soin de limiter la hauteur et la largeur de l'image afin de réduire son poids pour l'envoi par email.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-12.png]]&lt;br /&gt;
&lt;br /&gt;
==== +Append ====&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons décocher la case &amp;quot;msg.payload&amp;quot; si elle est cochée par défaut.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-13.png]]&lt;br /&gt;
&lt;br /&gt;
==== Extra input parameters et Timeout ====&lt;br /&gt;
&lt;br /&gt;
Nous n'aurons pas besoin de compléter ces champs pour notre projet.&lt;br /&gt;
&lt;br /&gt;
Si vous cochez le champ &amp;quot;Use spawn() instead of exec()?&amp;quot;, votre commande sera réalisée sous forme d'un processus résident et continuera de s'exécuter jusqu'à ce qu'elle se termine par elle-même (sauf si elle ne se termine jamais).&lt;br /&gt;
Cette solution implique que le programme n'attendra pas que cette commande soit réalisée pour passer aux étapes suivantes. &lt;br /&gt;
Si la suite de l'exécution de votre flux est susceptible d'utiliser le résultat de cette commande, nous vous déconseillons d'utiliser cette option sous peine de provoquer des erreurs à la suite du traitement du flux.&lt;br /&gt;
&lt;br /&gt;
Le champ &amp;quot;Timeout&amp;quot; permet de définir un temps d'attente maximum avant de mettre un terme à l'exécution de la commande. &lt;br /&gt;
Cela permet de débloquer la situation si la commande exécutée prends un temps anormalement long à s'exécuter.&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite compléter le champs nom, celui-ci sera utilisé pour nommer le bloc dans le &amp;quot;schéma&amp;quot;, mais aussi de nommer les logs comme pour le bloc &amp;quot;Exec&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-14.png]]&lt;br /&gt;
&lt;br /&gt;
=== Encodage de l'image en base64 ===&lt;br /&gt;
&lt;br /&gt;
Nous allons convertir la photo prise juste avant en utilisant une commande de conversion en base64.&lt;br /&gt;
Cela facilitera son injection dans un template HTML que nous allons créer ensuite pour construire un email.&lt;br /&gt;
&lt;br /&gt;
Nous allons tout d'abord cliquer sur le bloc &amp;quot;Exec&amp;quot; dans la section &amp;quot;Advanced&amp;quot; de la colonne de gauche et glisser l'élément dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-10.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, cliquer sur le bloc nouvellement créé et configurer celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-11.png]]&lt;br /&gt;
&lt;br /&gt;
Le menu suivant s'affichera, et nous pourrons configurer le bloc &amp;quot;Exec&amp;quot; nouvellement créé.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-15.png]]&lt;br /&gt;
&lt;br /&gt;
==== Command ====&lt;br /&gt;
&lt;br /&gt;
Nous allons y ajouter la commande à exécuter pour encoder en base 64 la photo prise précédemment avec la caméra du Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
base64 -i &amp;quot;/tmp/cam.jpg&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-16.png]]&lt;br /&gt;
&lt;br /&gt;
==== +Append ====&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons cocher la case &amp;quot;msg.payload&amp;quot; si elle n'est pas cochée par défaut pour que le résultat soit directement renvoyé par cette commande dans le &amp;quot;PayLoad&amp;quot; du flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-17.png]]&lt;br /&gt;
&lt;br /&gt;
==== Extra input parameters et Timeout ====&lt;br /&gt;
&lt;br /&gt;
Nous n'aurons pas besoin de compléter ces champs pour notre projet.&lt;br /&gt;
&lt;br /&gt;
Si vous cochez le champ &amp;quot;Use spawn() instead of exec()?&amp;quot;, votre commande sera réalisée sous forme d'un processus résident et continuera de s'exécuter jusqu'à ce qu'elle se termine par elle-même (sauf si elle ne se termine jamais).&lt;br /&gt;
Cette solution implique que le programme n'attendra pas que cette commande soit réalisée pour passer aux étapes suivantes. &lt;br /&gt;
Si la suite de l'exécution de votre flux est susceptible d'utiliser le résultat de cette commande, nous vous déconseillons d'utiliser cette option sous peine de provoquer des erreurs à la suite du traitement du flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-18.png]]&lt;br /&gt;
&lt;br /&gt;
Le champ &amp;quot;Timeout&amp;quot; permet de définir un temps d'attente maximum avant de mettre un terme à l'exécution de la commande. &lt;br /&gt;
Cela permet de débloquer la situation si la commande exécutée prends un temps anormalement long à s'exécuter.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-19.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite compléter le champs nom, celui-ci sera utilisé pour nommer le bloc dans le &amp;quot;schéma&amp;quot;, mais aussi de nommer les logs comme pour le bloc &amp;quot;Exec&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-20.png]]&lt;br /&gt;
&lt;br /&gt;
=== Création d'un email au format HTML ===&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant créer un template d'email au format HTML afin de mettre en forme le message que nous enverrons ensuite.&lt;br /&gt;
Nous allons pour cela utiliser un bloc &amp;quot;Template&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-21.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons attribuer un nom au bloc afin de l'identifier plus facilement dans le flux.&lt;br /&gt;
Nous allons donc le nommer &amp;quot;Contenu du mail&amp;quot; puisque nous créons le contenu du mail que nous enverrons ensuite.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-22.png]]&lt;br /&gt;
&lt;br /&gt;
==== Set property ====&lt;br /&gt;
&lt;br /&gt;
La propriété que nous souhaitons créer dans le flux est le &amp;quot;PayLoad&amp;quot;.&lt;br /&gt;
Ce PayLoad existe déjà, il contient pour le moment l'image au format &amp;quot;Base64&amp;quot; précédemment encodé.&lt;br /&gt;
Cela n'est pas un problème, après notre noeud (notre bloc), le PayLoad sera intégralement remplacé par le template que nous sommes en train de créer.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-23.png]]&lt;br /&gt;
&lt;br /&gt;
==== Template ====&lt;br /&gt;
&lt;br /&gt;
Dans ce template, nous allons créer une structure HTML de base minimum afin que la structure soit interprétée par la majorité des clients/webmail.&lt;br /&gt;
Vous pouvez la personnaliser à votre guise si vous avez les connaissances en HTML.&lt;br /&gt;
&lt;br /&gt;
Voici la structure de base pour notre projet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
    &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;meta charset=&amp;quot;utf8&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/head&amp;gt;&lt;br /&gt;
    &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Projet Photo par email&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;img src=&amp;quot;data:image/jpg;base64,{{payload}}&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pourrez remarquer que nous intégrons l'image en appelant le PayLoad à 'intérieur du code HTML dans la balise &amp;lt;img&amp;gt;.&lt;br /&gt;
C'est le PayLoad créé précédemment par le bloc &amp;quot;Exec&amp;quot; qui est récupéré à ce moment précis.&lt;br /&gt;
Ce PayLoad est remplacé dans le flux par le PayLoad complet avec notre template dans le flux par notre bloc Template.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-24.png]]&lt;br /&gt;
&lt;br /&gt;
=== Création d'un bloc (noeud) &amp;quot;Debug&amp;quot;  ===&lt;br /&gt;
&lt;br /&gt;
Nous allons ajouter la notion d'expéditeur dans le flux que nous avons créé à travers nos blocs (noeuds).&lt;br /&gt;
Pour rappel, actuellement nous avons deux propriétés avec des données dans notre flux. &lt;br /&gt;
Si nous voulons observer ce que nous avons créé jusque là, nous pouvons faire appel à un bloc &amp;quot;Debug&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Création du bloc &amp;quot;Debug&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Comme pour les blocs précédents, nous allons glisser/déposer un bloc débug dans l'espace de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-25.png]]&lt;br /&gt;
&lt;br /&gt;
Celui-ci s'appelle msg/payload par défaut&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-26.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons double-cliquer sur ce bloc pour le configurer.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-27.png]]&lt;br /&gt;
&lt;br /&gt;
==== Output ====&lt;br /&gt;
&lt;br /&gt;
Dans ce champs, nous allons choisir la partie du flux que nous souhaitons afficher, ou nous allons sélectionner le flux entier.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-28.png]]&lt;br /&gt;
&lt;br /&gt;
Sélectionner le flux entier, nous affichera le flux complet incluant toutes ses propriétés.&lt;br /&gt;
&lt;br /&gt;
 [[fichier:Rasp-Node-Red-picam-mail-29.png]]&lt;br /&gt;
&lt;br /&gt;
==== To =====&lt;br /&gt;
&lt;br /&gt;
La propriété &amp;quot;To&amp;quot; nous permet de choisir ou nous souhaitons afficher les données que nous récupérons. &lt;br /&gt;
Soit nous les affichons uniquement dans l'onglet &amp;quot;Debug&amp;quot; à droite de l'espace de travail, soit nous l'affichons dans cet onglet mais aussi dans la console de NodeJS.&lt;br /&gt;
Dans notre cas, nous allons nous contenter d'afficher nos éléments dans l'onglet de &amp;quot;Debug&amp;quot; à droite de notre espace de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-30.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Le champs Name nous servira à identifier quel bloc de &amp;quot;Debug&amp;quot; affiche les données en console ou dans l'onglet &amp;quot;Debug&amp;quot;. &lt;br /&gt;
Il faut donc le nommer efficacement pour bien attacher et comprendre les données que nous récupérons, surtout si nous en plaçons plusieurs dans le flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-31.png]]&lt;br /&gt;
&lt;br /&gt;
==== Exploitation et compréhension des données récupérées ====&lt;br /&gt;
&lt;br /&gt;
Nous avons placé notre bloc &amp;quot;Debug&amp;quot; à la suite du flux en dernière position. &lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-32.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons donc déployer le programme en cliquant sur &amp;quot;Deploy&amp;quot; en haut à droite de la page. &lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-33.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons exécuter manuellement le programme en cliquant sur le bouton se trouvant en début de chaîne:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-34.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite afficher l'onglet &amp;quot;Debug&amp;quot; sur le coté droit de la page et analyser les données récupérées:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-35.png]]&lt;br /&gt;
&lt;br /&gt;
==== Analyse des données récupérées dans l'onglet &amp;quot;Debug&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
08/05/2017 à 12:54:31 node: FORMATAGE&lt;br /&gt;
MCHobby - Photo bureau : msg : Object&lt;br /&gt;
object&lt;br /&gt;
_msgid: &amp;quot;81efe35c.3208d&amp;quot;&lt;br /&gt;
topic: &amp;quot;MCHobby - Photo bureau&amp;quot;&lt;br /&gt;
payload: &amp;quot;&amp;lt;html&amp;gt;↵ &amp;lt;head&amp;gt;↵ &amp;lt;meta charset=&amp;quot;utf8&amp;quot;/&amp;gt;↵ ↵ &amp;lt;/head&amp;gt;↵ &amp;lt;body&amp;gt;↵ &amp;lt;h1&amp;gt;MCHobby - Photo bureau&amp;lt;/h1&amp;gt;↵ &amp;lt;p&amp;gt;Cette photo est un instantané pris dans les bureaux de MCHobby.&amp;lt;/p&amp;gt;↵ &lt;br /&gt;
&amp;lt;img src=&amp;quot;data:image/jpg;base64,&amp;amp;#x2F;9j&amp;amp;#x2F;4WP6x2.../&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comme vous pourrez le constater, chaque élément du noeud est détaillé.&lt;br /&gt;
Les données sont cependant tronquées, le noeud &amp;quot;Debug&amp;quot; ne nous fourni pas la totalité du &amp;quot;PayLoad&amp;quot; mais nous avons déjà un bon aperçu des données qu'il contient.&lt;br /&gt;
&lt;br /&gt;
* '''_msgid:''' est un Id unique de message&lt;br /&gt;
* '''topic:''' est le sujet du mail, nous l'avons déterminé dans le premier bloc&lt;br /&gt;
* '''payload:''' contient les données du message formatées par le template que nous avons créé et complété par l'image en base64.&lt;br /&gt;
&lt;br /&gt;
{{tmbox | text = Les noeuds &amp;quot;Debug&amp;quot; sont pratiques. Ils nous permettent d'afficher une partie ou la totalité du flux tel qu'il est à l'endroit ou ils sont placés. Cela peut permettre d'identifier et de résoudre plus facilement des problèmes dans des opérations plus complexes et dans notre cas, cela nous permet de mieux comprendre comment fonctionne le noeud et comment les données sont transmises d'un bloc à l'autre.}}&lt;br /&gt;
&lt;br /&gt;
=== Création d'un expéditeur ===&lt;br /&gt;
&lt;br /&gt;
Nous avons construit petit à petit un message avec un sujet, mais il manque encore un détail: l'expéditeur de l'email que nous allons envoyer: le fameux &amp;quot;msg.from&amp;quot; que nous avons évoqué au début de tuto !&lt;br /&gt;
&lt;br /&gt;
Si vous avez bien suivi les étapes précédentes du tuto, jusqu'au noeud &amp;quot;Debug&amp;quot; et à son résultat, vous comprendrez facilement la démarche ci après pour ajouter un expéditeur dans le flux.&lt;br /&gt;
&lt;br /&gt;
Nous allons ajouter un nouveau noeud &amp;quot;Template&amp;quot; dans la zone de travail et double cliquer dessus pour afficher sa page de configuration:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-39.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite sélectionner le type de propriété que nous souhaitons injecter dans le flux: '''&amp;quot;msg.from&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-40.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cette propriété étant une adresse email, nous allons choisir le type '''&amp;quot;plaintext&amp;quot;''' comme type de données.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-41.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous allons enfin donner un nom explicite à notre bloc afin d'identifier facilement sa fonctionnalité parmi les autres blocs.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-42.png]]&lt;br /&gt;
&lt;br /&gt;
=== Création du bloc d'envoi d'email ===&lt;br /&gt;
&lt;br /&gt;
==== To : destinataire ====&lt;br /&gt;
&lt;br /&gt;
Simplement, l'adresse email du destinataire du message.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-43.png]]&lt;br /&gt;
&lt;br /&gt;
==== Server, port, secure connection ====&lt;br /&gt;
&lt;br /&gt;
Dans ce champ, nous allons mettre un serveur SMTP (serveur email) pour permettre l'envoi de l'email. Dans la plupart des cas, le SMTP de votre FAI (fournisseur d'accès à internet) pourra servir d'intermédiaire.&lt;br /&gt;
Nous vous invitons à consulter les paramètres propres à votre fournisseur d'accès pour paramétrer ce bloc.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-44.png]]&lt;br /&gt;
&lt;br /&gt;
==== UserID et Password ====&lt;br /&gt;
&lt;br /&gt;
Ces champs resteront vides si votre FAI ne nécessite pas d'authentification pour envoyer des emails.&lt;br /&gt;
Si vous utilisez un autre fournisseur, tel que GMAIL par exemple, il faudra mettre votre adresse email et votre mot de passe pour vous identifier.&lt;br /&gt;
&lt;br /&gt;
{{ambox-stop|text=&amp;quot;Attention: votre compte gmail devra être configuré au préalable afin d'autoriser un &amp;quot;client email&amp;quot; à utiliser votre compte pour envoyer/recevoir des emails par ce biais. Nous vous invitons à consulter la documentation de Gmail pour en savoir plus.&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-45.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Enfin, le champ &amp;quot;Name&amp;quot; qui vous permet de donner un nom au bloc d'envoi d'email.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-46.png]]&lt;br /&gt;
&lt;br /&gt;
=== Déploiement et premiers tests ===&lt;br /&gt;
&lt;br /&gt;
Afin de &amp;quot;lancer le programme&amp;quot; que nous venons de créer, il suffit de cliquer sur le bouton &amp;quot;Deploy&amp;quot; en haut à droite de la page.&lt;br /&gt;
&lt;br /&gt;
===== La photo ne se réalise pas =====&lt;br /&gt;
&lt;br /&gt;
Si la photo ne se réalise pas, il faut commencer par vérifier la commande dans le bloc de prise de photo.&lt;br /&gt;
Nous vous invitons vivement à tester la commande directement dans le terminal afin de vous assurer que celle-ci soit d'une syntaxe correcte et ne rencontre pas de problème d'exécution.&lt;br /&gt;
Les problèmes d'exécution de commandes externes dans le bloc '''&amp;quot;command&amp;quot;''' peuvent amener à des blocages dans l'exécution et empêcher NodeRED de continuer à exécuter le '''&amp;quot;Schéma&amp;quot;'''.&lt;br /&gt;
&lt;br /&gt;
===== La photo se réalise mais l'encodage en base64 bloque =====&lt;br /&gt;
&lt;br /&gt;
Si le programme bloque à l'encodage, comme précédemment, nous vous invitons à vérifier votre commande en l'exécutant directement dans le terminal.&lt;br /&gt;
Vous pourrez identifier directement le problème et le résoudre le cas échéant.&lt;br /&gt;
&lt;br /&gt;
===== L'encodage fonctionne, mais le PayLoad reste vide =====&lt;br /&gt;
&lt;br /&gt;
N'auriez-vous pas oublié de cocher la case '''&amp;quot;+ Append : msg.payload&amp;quot;''' dans le bloc qui lance la commande de conversion en base64 ?&lt;br /&gt;
&lt;br /&gt;
===== Mon email arrive vide =====&lt;br /&gt;
&lt;br /&gt;
Retournez à l'étape de mise en forme du message afin de vérifier si vous n'avez pas omis un paramètre ou une fonctionnalité.&lt;br /&gt;
&lt;br /&gt;
===== L'image ne s'affiche pas dans l'email reçu  =====&lt;br /&gt;
&lt;br /&gt;
Si l'image ne s'affiche pas, il faudrait vérifier si vous avez bien lié vos blocs sur la première sortie des blocs '''&amp;quot;Exec&amp;quot;'''.&lt;br /&gt;
Les deux autres sorties étant destinées à d'autres états d'exécution/erreur.&lt;br /&gt;
&lt;br /&gt;
===== Le sujet de l'email est vide =====&lt;br /&gt;
&lt;br /&gt;
Dans notre cas, le sujet est fixé dans le premier bloc dans le champ '''&amp;quot;Topic&amp;quot;'''.&lt;br /&gt;
Vous pouvez-donc ré-éditer ce bloc afin de vérifier si celui-ci n'est pas resté vide.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Rasp-Node-Red-TRAILER}}&lt;/div&gt;</summary>
		<author><name>AntoineWrt</name></author>
	</entry>
	<entry>
		<id>https://wiki.mchobby.be/index.php?title=Rasp-Node-Red-picam-mail&amp;diff=22826</id>
		<title>Rasp-Node-Red-picam-mail</title>
		<link rel="alternate" type="text/html" href="https://wiki.mchobby.be/index.php?title=Rasp-Node-Red-picam-mail&amp;diff=22826"/>
		<updated>2017-05-08T13:58:18Z</updated>

		<summary type="html">&lt;p&gt;AntoineWrt : /* Déploiement et premiers tests */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Rasp-Node-Red-NAV}}&lt;br /&gt;
&lt;br /&gt;
{{traduction}}&lt;br /&gt;
&lt;br /&gt;
== PiCamRED - Envoi périodique de photos par email avec PiCam et NodeRED ==&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-01.png|900px]]&lt;br /&gt;
&lt;br /&gt;
=== Description du projet ===&lt;br /&gt;
&lt;br /&gt;
Dans ce tutoriel, nous allons réaliser des photos à l'aide de la caméra du RaspBerry Pi 2/3 et envoyer ces clichés par email de manière périodique grâce à NodeRED.&lt;br /&gt;
Nous allons donc utiliser plusieurs blocs et décrire de manière détaillée le déroulement de chaque étape de la réalisation de ce projet.&lt;br /&gt;
&lt;br /&gt;
Dans NodeRED, il est important de bien identifier la finalité de notre projet afin de connaître au préalable tous les éléments qu'il faudra créer et fournir à l'action finale (celle qui enverra un email).&lt;br /&gt;
&lt;br /&gt;
=== Quels sont les besoins du noeud email ===&lt;br /&gt;
&lt;br /&gt;
==== Composants nécessaires pour constituer un email ====&lt;br /&gt;
&lt;br /&gt;
Un email est composé des éléments suivants: &lt;br /&gt;
&lt;br /&gt;
* Un expéditeur&lt;br /&gt;
* Un destinataire&lt;br /&gt;
* Un sujet&lt;br /&gt;
* Le corps du message&lt;br /&gt;
&lt;br /&gt;
Tous ces éléments vont donc devoir être préparés afin de pouvoir construire le message à envoyer par le noeud final.&lt;br /&gt;
&lt;br /&gt;
Le noeud final aura aussi besoin d'un serveur SMTP (serveur d'envoi d'emails) et éventuellement de paramètres d'identification pour ce serveur d'envoi d'emails.&lt;br /&gt;
&lt;br /&gt;
==== Détail des besoins du noeud email ====&lt;br /&gt;
&lt;br /&gt;
La liste des éléments nécessaires s'affiche lorsque le bloc est dans la zone de travail (Schema).&lt;br /&gt;
Commençons donc par sélectionner le bloc email, et de le glisser dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
Commençons par cliquer sur le bloc email et nous maintenons le clic pour le glisser à droite dans l'espace de travail.&lt;br /&gt;
&lt;br /&gt;
(on choisit celui qui a son point de liaison à gauche, car nous voulons un bloc de sortie)&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-36.png]]&lt;br /&gt;
&lt;br /&gt;
Glissons le dans l'espace de travail, et cliquons un clic simple pour le sélectionner.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-37.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, dans la colonne à droite de cet espace de travail, nous cliquons sur info et nous pourrons découvrir les éléments nécessaires à la constitution d'un bloc email.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-38.png]]&lt;br /&gt;
&lt;br /&gt;
===== Nous utiliserons les champs suivants =====&lt;br /&gt;
&lt;br /&gt;
* '''msg.payload''' --&amp;gt; Ce champ contient le corps de l'email&lt;br /&gt;
* '''msg.topic''' --&amp;gt; Ce champ contient le sujet de l'email&lt;br /&gt;
* '''msg.from''' --&amp;gt; Ce champ contient l'email de l'expéditeur &lt;br /&gt;
* '''msg.to''' --&amp;gt; Ce champ contient l'email du destinataire&lt;br /&gt;
&lt;br /&gt;
Les autres champs ne seront pas utilisés dans notre cas, mais vous pourrez constater que le bloc email est complet de part ses fonctionnalités et possibilités.&lt;br /&gt;
&lt;br /&gt;
Les données de serveur et d'identification seront abordées en fin de tuto lors de la configuration finale du bloc.&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant passer à la réalisation du flux en commençant par le début de celui-ci.&lt;br /&gt;
&lt;br /&gt;
=== Création d'une action périodique ===&lt;br /&gt;
&lt;br /&gt;
Dans la colonne de gauche de NodeRED, se trouvent une liste de blocs à utiliser pour réaliser vos projets. Ils sont classés par &amp;quot;types&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Ainsi nous retrouvons les &amp;quot;types&amp;quot; suivants:&lt;br /&gt;
&lt;br /&gt;
* '''Input''' qui contient tous les blocs d'entrées&lt;br /&gt;
* '''Ouput''' qui contient tous les blocs de sortie&lt;br /&gt;
* '''Function''' qui contient des blocs de fonctions javascript etc...&lt;br /&gt;
* '''Social''' qui sont des blocs d'entrée ou sorties depuis ou vers les réseaux sociaux&lt;br /&gt;
* '''Storage''' qui sont des fonctions de lecture ou d'écriture de fichiers&lt;br /&gt;
* '''Analysis''' -&amp;gt;&amp;gt; Sentiment interprète du texte et détermine un score sur base d'un dictionnaire anglais, renvoie le texte avec ce score de -5 à +5, déterminant ainsi l'émotion susceptible d'être procuré par ce texte&lt;br /&gt;
* '''Advanced''' possède des outils permettant de détecter des changements dans des fichiers ou dossiers, de lire des flux RSS ou encore EXEC qui permet d'exécuter directement des commandes sous linux !&lt;br /&gt;
* '''Raspberry Pi''' contient des outils pour piloter/lire le GPIO du raspberry Pi&lt;br /&gt;
* '''Network''' qui contient un outil réseau de Ping&lt;br /&gt;
 &lt;br /&gt;
Nous allons créer une action périodique, c'est à dire paramétrer un bloc '''&amp;quot;INJECT&amp;quot;''' de manière à déclencher régulièrement une chaine d'actions que nous allons accrocher à la suite les unes après les autres.&lt;br /&gt;
Nous allons donc cliquer sur le bloc '''&amp;quot;Inject&amp;quot;''' dans la liste &amp;quot;Input&amp;quot; et maintenir ce clic pour le déplacer vers la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-02.png]]&lt;br /&gt;
&lt;br /&gt;
Nous obtiendrons donc une nouvelle instance &amp;quot;inject&amp;quot; qui portera le nom '''&amp;quot;Timestamp&amp;quot;''' (ce nom est attribué par défaut par NodeRED) comme dans la capture ci-dessous&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-03.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant double-cliquer sur celle-ci fin de l'éditer pour voir apparaitre le menu ci-dessous&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-04.png]]&lt;br /&gt;
&lt;br /&gt;
Il va falloir configurer ce bloc, mais avant tout voici une explication de celui-ci:&lt;br /&gt;
&lt;br /&gt;
==== Payload ====&lt;br /&gt;
&lt;br /&gt;
Le champs PayLoad est en fait le champ de données qui sera suivi d'un noeud à l'autre jusque à la fin de la chaine.&lt;br /&gt;
Dans ce module '''&amp;quot;inject&amp;quot;''', nous allons donc déterminer quel type de données contiendra le '''&amp;quot;PayLoad&amp;quot;''' jusqu'à la fin de la chaine que l'on va réaliser.&lt;br /&gt;
&lt;br /&gt;
Dans notre cas, nous souhaitons construire un email, donc du contenu textuel, nous allons donc choisir '''&amp;quot;String&amp;quot;''' ce qui correspond à une chaine de caractères (du texte).&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-05.png]]&lt;br /&gt;
&lt;br /&gt;
==== Topic ====&lt;br /&gt;
&lt;br /&gt;
Le champs &amp;quot;Topic&amp;quot; est un champs de texte dans lequel nous allons mettre un sujet succinct décrivant notre chaine. &lt;br /&gt;
Dans notre cas, ce sujet fera office de sujet au mail que nous expédierons. &lt;br /&gt;
Nous allons donc être précis en un minimum de mots pour que le destinataire de l'email puisse facilement deviner le contenu de celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-06.png]]&lt;br /&gt;
&lt;br /&gt;
==== Repeat ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite choisir l'intervalle de déclenchement de notre action, sachant que nous avons le choix entre: &lt;br /&gt;
&lt;br /&gt;
* '''none'''  : pas de déclenchement périodique programmé&lt;br /&gt;
* '''interval''' : nous fixons un temps de déclenchement à partir du lancement du programme, l'action se réalisera à chaque fois que ce temps sera écoulé de manière répétée jusqu'à l'interruption manuelle du programme&lt;br /&gt;
* '''interval between times''' : nous fixons ici le déclenchement par interval, mais nous fixons aussi une fourchette d'heures et des jours pendant lesquels nous exécutons cet interval&lt;br /&gt;
* '''at a specific time''' : nous fixons une heure d'exécution, et un ou plusieurs jours d'exécution. Dans ce cas l'action n'est pas répétée en continu mais éxécutée une seule fois par jour à l'heure programmée&lt;br /&gt;
&lt;br /&gt;
Dans notre exemple, nous allons fixer un intervalle de 15 secondes pour commencer. Nous pourrons ensuite augmenter cette valeur pour éviter de recevoir trop d'emails avec des photos :D&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-07.png]]&lt;br /&gt;
&lt;br /&gt;
La case '''&amp;quot;inject once at start&amp;quot;''' permet de ne pas attendre le premier cycle avant d'exécuter une première fois l'action. Elle se lancera dès le lancement du programme, puis périodiquement selon les cycles déterminés par l'intervalle.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-08.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Le champs Name va déterminer le nom que portera le bloc dans l'espace de travail et dans les logs (si nous créons des blocs de log ensuite pour contrôler des étapes).&lt;br /&gt;
Il est important de bien établir ce nom de manière explicite, car le nom des blocs permettra de comprendre et retrouver facilement la logique du schéma construit, même si l'on a pas consulté celui-ci pendant une longue période.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-09.png]]&lt;br /&gt;
&lt;br /&gt;
=== Capture d'une image depuis la PiCam ===&lt;br /&gt;
&lt;br /&gt;
Nous allons aller à l'essentiel en ce qui concerne la capture photo en utilisant une commande simple pour prendre un cliché et renvoyer celui-ci dans le flux NodeRED grâce à un bloc permettant d'exécuter des commandes bash.&lt;br /&gt;
&lt;br /&gt;
{{ambox | text = Vous trouverez un TUTO détaillé sur la PiCam vous permettant de prendre la main, ou de la paramétrer si vous n'avez pas encore utilisé celle-ci auparavant: ....___TUTO___...}} &lt;br /&gt;
&lt;br /&gt;
Nous allons tout d'abord cliquer sur le bloc &amp;quot;Exec&amp;quot; dans la section &amp;quot;Advanced&amp;quot; de la colonne de gauche et glisser l'élément dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-10.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, cliquer sur le bloc nouvellement créé et configurer celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-11.png]]&lt;br /&gt;
&lt;br /&gt;
Le menu suivant s'affichera, et nous pourrons configurer le bloc &amp;quot;Exec&amp;quot; nouvellement créé.&lt;br /&gt;
&lt;br /&gt;
==== Command ====&lt;br /&gt;
&lt;br /&gt;
Nous allons y ajouter la commande à exécuter pour prendre une photo avec la caméra du Raspberry Pi et la stocker dans un fichier jpg dans le dossier /tmp/ de linux.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
raspistill -o /tmp/cam.jpg -w 640 -h 480&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous prenons soin de limiter la hauteur et la largeur de l'image afin de réduire son poids pour l'envoi par email.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-12.png]]&lt;br /&gt;
&lt;br /&gt;
==== +Append ====&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons décocher la case &amp;quot;msg.payload&amp;quot; si elle est cochée par défaut.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-13.png]]&lt;br /&gt;
&lt;br /&gt;
==== Extra input parameters et Timeout ====&lt;br /&gt;
&lt;br /&gt;
Nous n'aurons pas besoin de compléter ces champs pour notre projet.&lt;br /&gt;
&lt;br /&gt;
Si vous cochez le champ &amp;quot;Use spawn() instead of exec()?&amp;quot;, votre commande sera réalisée sous forme d'un processus résident et continuera de s'exécuter jusqu'à ce qu'elle se termine par elle-même (sauf si elle ne se termine jamais).&lt;br /&gt;
Cette solution implique que le programme n'attendra pas que cette commande soit réalisée pour passer aux étapes suivantes. &lt;br /&gt;
Si la suite de l'exécution de votre flux est susceptible d'utiliser le résultat de cette commande, nous vous déconseillons d'utiliser cette option sous peine de provoquer des erreurs à la suite du traitement du flux.&lt;br /&gt;
&lt;br /&gt;
Le champ &amp;quot;Timeout&amp;quot; permet de définir un temps d'attente maximum avant de mettre un terme à l'exécution de la commande. &lt;br /&gt;
Cela permet de débloquer la situation si la commande exécutée prends un temps anormalement long à s'exécuter.&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite compléter le champs nom, celui-ci sera utilisé pour nommer le bloc dans le &amp;quot;schéma&amp;quot;, mais aussi de nommer les logs comme pour le bloc &amp;quot;Exec&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-14.png]]&lt;br /&gt;
&lt;br /&gt;
=== Encodage de l'image en base64 ===&lt;br /&gt;
&lt;br /&gt;
Nous allons convertir la photo prise juste avant en utilisant une commande de conversion en base64.&lt;br /&gt;
Cela facilitera son injection dans un template HTML que nous allons créer ensuite pour construire un email.&lt;br /&gt;
&lt;br /&gt;
Nous allons tout d'abord cliquer sur le bloc &amp;quot;Exec&amp;quot; dans la section &amp;quot;Advanced&amp;quot; de la colonne de gauche et glisser l'élément dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-10.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, cliquer sur le bloc nouvellement créé et configurer celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-11.png]]&lt;br /&gt;
&lt;br /&gt;
Le menu suivant s'affichera, et nous pourrons configurer le bloc &amp;quot;Exec&amp;quot; nouvellement créé.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-15.png]]&lt;br /&gt;
&lt;br /&gt;
==== Command ====&lt;br /&gt;
&lt;br /&gt;
Nous allons y ajouter la commande à exécuter pour encoder en base 64 la photo prise précédemment avec la caméra du Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
base64 -i &amp;quot;/tmp/cam.jpg&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-16.png]]&lt;br /&gt;
&lt;br /&gt;
==== +Append ====&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons cocher la case &amp;quot;msg.payload&amp;quot; si elle n'est pas cochée par défaut pour que le résultat soit directement renvoyé par cette commande dans le &amp;quot;PayLoad&amp;quot; du flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-17.png]]&lt;br /&gt;
&lt;br /&gt;
==== Extra input parameters et Timeout ====&lt;br /&gt;
&lt;br /&gt;
Nous n'aurons pas besoin de compléter ces champs pour notre projet.&lt;br /&gt;
&lt;br /&gt;
Si vous cochez le champ &amp;quot;Use spawn() instead of exec()?&amp;quot;, votre commande sera réalisée sous forme d'un processus résident et continuera de s'exécuter jusqu'à ce qu'elle se termine par elle-même (sauf si elle ne se termine jamais).&lt;br /&gt;
Cette solution implique que le programme n'attendra pas que cette commande soit réalisée pour passer aux étapes suivantes. &lt;br /&gt;
Si la suite de l'exécution de votre flux est susceptible d'utiliser le résultat de cette commande, nous vous déconseillons d'utiliser cette option sous peine de provoquer des erreurs à la suite du traitement du flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-18.png]]&lt;br /&gt;
&lt;br /&gt;
Le champ &amp;quot;Timeout&amp;quot; permet de définir un temps d'attente maximum avant de mettre un terme à l'exécution de la commande. &lt;br /&gt;
Cela permet de débloquer la situation si la commande exécutée prends un temps anormalement long à s'exécuter.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-19.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite compléter le champs nom, celui-ci sera utilisé pour nommer le bloc dans le &amp;quot;schéma&amp;quot;, mais aussi de nommer les logs comme pour le bloc &amp;quot;Exec&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-20.png]]&lt;br /&gt;
&lt;br /&gt;
=== Création d'un email au format HTML ===&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant créer un template d'email au format HTML afin de mettre en forme le message que nous enverrons ensuite.&lt;br /&gt;
Nous allons pour cela utiliser un bloc &amp;quot;Template&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-21.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons attribuer un nom au bloc afin de l'identifier plus facilement dans le flux.&lt;br /&gt;
Nous allons donc le nommer &amp;quot;Contenu du mail&amp;quot; puisque nous créons le contenu du mail que nous enverrons ensuite.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-22.png]]&lt;br /&gt;
&lt;br /&gt;
==== Set property ====&lt;br /&gt;
&lt;br /&gt;
La propriété que nous souhaitons créer dans le flux est le &amp;quot;PayLoad&amp;quot;.&lt;br /&gt;
Ce PayLoad existe déjà, il contient pour le moment l'image au format &amp;quot;Base64&amp;quot; précédemment encodé.&lt;br /&gt;
Cela n'est pas un problème, après notre noeud (notre bloc), le PayLoad sera intégralement remplacé par le template que nous sommes en train de créer.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-23.png]]&lt;br /&gt;
&lt;br /&gt;
==== Template ====&lt;br /&gt;
&lt;br /&gt;
Dans ce template, nous allons créer une structure HTML de base minimum afin que la structure soit interprétée par la majorité des clients/webmail.&lt;br /&gt;
Vous pouvez la personnaliser à votre guise si vous avez les connaissances en HTML.&lt;br /&gt;
&lt;br /&gt;
Voici la structure de base pour notre projet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
    &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;meta charset=&amp;quot;utf8&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/head&amp;gt;&lt;br /&gt;
    &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Projet Photo par email&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;img src=&amp;quot;data:image/jpg;base64,{{payload}}&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pourrez remarquer que nous intégrons l'image en appelant le PayLoad à 'intérieur du code HTML dans la balise &amp;lt;img&amp;gt;.&lt;br /&gt;
C'est le PayLoad créé précédemment par le bloc &amp;quot;Exec&amp;quot; qui est récupéré à ce moment précis.&lt;br /&gt;
Ce PayLoad est remplacé dans le flux par le PayLoad complet avec notre template dans le flux par notre bloc Template.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-24.png]]&lt;br /&gt;
&lt;br /&gt;
=== Création d'un bloc (noeud) &amp;quot;Debug&amp;quot;  ===&lt;br /&gt;
&lt;br /&gt;
Nous allons ajouter la notion d'expéditeur dans le flux que nous avons créé à travers nos blocs (noeuds).&lt;br /&gt;
Pour rappel, actuellement nous avons deux propriétés avec des données dans notre flux. &lt;br /&gt;
Si nous voulons observer ce que nous avons créé jusque là, nous pouvons faire appel à un bloc &amp;quot;Debug&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Création du bloc &amp;quot;Debug&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Comme pour les blocs précédents, nous allons glisser/déposer un bloc débug dans l'espace de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-25.png]]&lt;br /&gt;
&lt;br /&gt;
Celui-ci s'appelle msg/payload par défaut&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-26.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons double-cliquer sur ce bloc pour le configurer.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-27.png]]&lt;br /&gt;
&lt;br /&gt;
==== Output ====&lt;br /&gt;
&lt;br /&gt;
Dans ce champs, nous allons choisir la partie du flux que nous souhaitons afficher, ou nous allons sélectionner le flux entier.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-28.png]]&lt;br /&gt;
&lt;br /&gt;
Sélectionner le flux entier, nous affichera le flux complet incluant toutes ses propriétés.&lt;br /&gt;
&lt;br /&gt;
 [[fichier:Rasp-Node-Red-picam-mail-29.png]]&lt;br /&gt;
&lt;br /&gt;
==== To =====&lt;br /&gt;
&lt;br /&gt;
La propriété &amp;quot;To&amp;quot; nous permet de choisir ou nous souhaitons afficher les données que nous récupérons. &lt;br /&gt;
Soit nous les affichons uniquement dans l'onglet &amp;quot;Debug&amp;quot; à droite de l'espace de travail, soit nous l'affichons dans cet onglet mais aussi dans la console de NodeJS.&lt;br /&gt;
Dans notre cas, nous allons nous contenter d'afficher nos éléments dans l'onglet de &amp;quot;Debug&amp;quot; à droite de notre espace de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-30.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Le champs Name nous servira à identifier quel bloc de &amp;quot;Debug&amp;quot; affiche les données en console ou dans l'onglet &amp;quot;Debug&amp;quot;. &lt;br /&gt;
Il faut donc le nommer efficacement pour bien attacher et comprendre les données que nous récupérons, surtout si nous en plaçons plusieurs dans le flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-31.png]]&lt;br /&gt;
&lt;br /&gt;
==== Exploitation et compréhension des données récupérées ====&lt;br /&gt;
&lt;br /&gt;
Nous avons placé notre bloc &amp;quot;Debug&amp;quot; à la suite du flux en dernière position. &lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-32.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons donc déployer le programme en cliquant sur &amp;quot;Deploy&amp;quot; en haut à droite de la page. &lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-33.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons exécuter manuellement le programme en cliquant sur le bouton se trouvant en début de chaîne:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-34.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite afficher l'onglet &amp;quot;Debug&amp;quot; sur le coté droit de la page et analyser les données récupérées:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-35.png]]&lt;br /&gt;
&lt;br /&gt;
==== Analyse des données récupérées dans l'onglet &amp;quot;Debug&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
08/05/2017 à 12:54:31 node: FORMATAGE&lt;br /&gt;
MCHobby - Photo bureau : msg : Object&lt;br /&gt;
object&lt;br /&gt;
_msgid: &amp;quot;81efe35c.3208d&amp;quot;&lt;br /&gt;
topic: &amp;quot;MCHobby - Photo bureau&amp;quot;&lt;br /&gt;
payload: &amp;quot;&amp;lt;html&amp;gt;↵ &amp;lt;head&amp;gt;↵ &amp;lt;meta charset=&amp;quot;utf8&amp;quot;/&amp;gt;↵ ↵ &amp;lt;/head&amp;gt;↵ &amp;lt;body&amp;gt;↵ &amp;lt;h1&amp;gt;MCHobby - Photo bureau&amp;lt;/h1&amp;gt;↵ &amp;lt;p&amp;gt;Cette photo est un instantané pris dans les bureaux de MCHobby.&amp;lt;/p&amp;gt;↵ &lt;br /&gt;
&amp;lt;img src=&amp;quot;data:image/jpg;base64,&amp;amp;#x2F;9j&amp;amp;#x2F;4WP6x2.../&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comme vous pourrez le constater, chaque élément du noeud est détaillé.&lt;br /&gt;
Les données sont cependant tronquées, le noeud &amp;quot;Debug&amp;quot; ne nous fourni pas la totalité du &amp;quot;PayLoad&amp;quot; mais nous avons déjà un bon aperçu des données qu'il contient.&lt;br /&gt;
&lt;br /&gt;
* '''_msgid:''' est un Id unique de message&lt;br /&gt;
* '''topic:''' est le sujet du mail, nous l'avons déterminé dans le premier bloc&lt;br /&gt;
* '''payload:''' contient les données du message formatées par le template que nous avons créé et complété par l'image en base64.&lt;br /&gt;
&lt;br /&gt;
{{tmbox | text = Les noeuds &amp;quot;Debug&amp;quot; sont pratiques. Ils nous permettent d'afficher une partie ou la totalité du flux tel qu'il est à l'endroit ou ils sont placés. Cela peut permettre d'identifier et de résoudre plus facilement des problèmes dans des opérations plus complexes et dans notre cas, cela nous permet de mieux comprendre comment fonctionne le noeud et comment les données sont transmises d'un bloc à l'autre.}}&lt;br /&gt;
&lt;br /&gt;
=== Création d'un expéditeur ===&lt;br /&gt;
&lt;br /&gt;
Nous avons construit petit à petit un message avec un sujet, mais il manque encore un détail: l'expéditeur de l'email que nous allons envoyer: le fameux &amp;quot;msg.from&amp;quot; que nous avons évoqué au début de tuto !&lt;br /&gt;
&lt;br /&gt;
Si vous avez bien suivi les étapes précédentes du tuto, jusqu'au noeud &amp;quot;Debug&amp;quot; et à son résultat, vous comprendrez facilement la démarche ci après pour ajouter un expéditeur dans le flux.&lt;br /&gt;
&lt;br /&gt;
Nous allons ajouter un nouveau noeud &amp;quot;Template&amp;quot; dans la zone de travail et double cliquer dessus pour afficher sa page de configuration:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-39.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite sélectionner le type de propriété que nous souhaitons injecter dans le flux: '''&amp;quot;msg.from&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-40.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cette propriété étant une adresse email, nous allons choisir le type '''&amp;quot;plaintext&amp;quot;''' comme type de données.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-41.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous allons enfin donner un nom explicite à notre bloc afin d'identifier facilement sa fonctionnalité parmi les autres blocs.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-42.png]]&lt;br /&gt;
&lt;br /&gt;
=== Création du bloc d'envoi d'email ===&lt;br /&gt;
&lt;br /&gt;
==== To : destinataire ====&lt;br /&gt;
&lt;br /&gt;
Simplement, l'adresse email du destinataire du message.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-43.png]]&lt;br /&gt;
&lt;br /&gt;
==== Server, port, secure connection ====&lt;br /&gt;
&lt;br /&gt;
Dans ce champ, nous allons mettre un serveur SMTP (serveur email) pour permettre l'envoi de l'email. Dans la plupart des cas, le SMTP de votre FAI (fournisseur d'accès à internet) pourra servir d'intermédiaire.&lt;br /&gt;
Nous vous invitons à consulter les paramètres propres à votre fournisseur d'accès pour paramétrer ce bloc.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-44.png]]&lt;br /&gt;
&lt;br /&gt;
==== UserID et Password ====&lt;br /&gt;
&lt;br /&gt;
Ces champs resteront vides si votre FAI ne nécessite pas d'authentification pour envoyer des emails.&lt;br /&gt;
Si vous utilisez un autre fournisseur, tel que GMAIL par exemple, il faudra mettre votre adresse email et votre mot de passe pour vous identifier.&lt;br /&gt;
&lt;br /&gt;
{{ambox-stop|text=&amp;quot;Attention: votre compte gmail devra être configuré au préalable afin d'autoriser un &amp;quot;client email&amp;quot; à utiliser votre compte pour envoyer/recevoir des emails par ce biais. Nous vous invitons à consulter la documentation de Gmail pour en savoir plus.&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-45.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Enfin, le champ &amp;quot;Name&amp;quot; qui vous permet de donner un nom au bloc d'envoi d'email.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-46.png]]&lt;br /&gt;
&lt;br /&gt;
=== Déploiement et premiers tests ===&lt;br /&gt;
&lt;br /&gt;
Afin de &amp;quot;lancer le programme&amp;quot; que nous venons de créer, il suffit de cliquer sur le bouton &amp;quot;Deploy&amp;quot; en haut à droite de la page.&lt;br /&gt;
&lt;br /&gt;
===== La photo ne se réalise pas =====&lt;br /&gt;
&lt;br /&gt;
Si la photo ne se réalise pas, il faut commencer par vérifier la commande dans le bloc de prise de photo.&lt;br /&gt;
Nous vous invitons vivement à tester la commande directement dans le terminal afin de vous assurer que celle-ci soit d'une syntaxe correcte et ne rencontre pas de problème d'exécution.&lt;br /&gt;
Les problèmes d'exécution de commandes externes dans le bloc '''&amp;quot;command&amp;quot;''' peuvent amener à des blocages dans l'exécution et empêcher NodeRED de continuer à exécuter le '''&amp;quot;Schéma&amp;quot;'''.&lt;br /&gt;
&lt;br /&gt;
===== La photo se réalise mais l'encodage en base64 bloque =====&lt;br /&gt;
&lt;br /&gt;
Si le programme bloque à l'encodage, comme précédemment, nous vous invitons à vérifier votre commande en l'exécutant directement dans le terminal.&lt;br /&gt;
Vous pourrez identifier directement le problème et le résoudre le cas échéant.&lt;br /&gt;
&lt;br /&gt;
===== L'encodage fonctionne, mais le PayLoad reste vide =====&lt;br /&gt;
&lt;br /&gt;
N'auriez-vous pas oublié de cocher la case '''&amp;quot;+ Append : msg.payload&amp;quot;''' dans le bloc qui lance la commande de conversion en base64 ?&lt;br /&gt;
&lt;br /&gt;
===== Mon email arrive vide =====&lt;br /&gt;
&lt;br /&gt;
Retournez à l'étape de mise en forme du message afin de vérifier si vous n'avez pas omis un paramètre ou une fonctionnalité.&lt;br /&gt;
&lt;br /&gt;
===== L'image ne s'affiche pas dans l'email reçu  =====&lt;br /&gt;
&lt;br /&gt;
Si l'image ne s'affiche pas, il faudrait vérifier si vous avez bien lié vos blocs sur la première sortie des blocs '''&amp;quot;Exec&amp;quot;'''.&lt;br /&gt;
Les deux autres sorties étant destinées à d'autres états d'exécution/erreur.&lt;br /&gt;
&lt;br /&gt;
===== Le sujet de l'email est vide =====&lt;br /&gt;
&lt;br /&gt;
Dans notre cas, le sujet est fixé dans le premier bloc dans le champ '''&amp;quot;Topic&amp;quot;'''.&lt;br /&gt;
Vous pouvez-donc ré-éditer ce bloc afin de vérifier si celui-ci n'est pas resté vide.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Rasp-Node-Red-TRAILER}}&lt;/div&gt;</summary>
		<author><name>AntoineWrt</name></author>
	</entry>
	<entry>
		<id>https://wiki.mchobby.be/index.php?title=Rasp-Node-Red-picam-mail&amp;diff=22825</id>
		<title>Rasp-Node-Red-picam-mail</title>
		<link rel="alternate" type="text/html" href="https://wiki.mchobby.be/index.php?title=Rasp-Node-Red-picam-mail&amp;diff=22825"/>
		<updated>2017-05-08T13:57:51Z</updated>

		<summary type="html">&lt;p&gt;AntoineWrt : /* Création du bloc d'envoi d'email */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Rasp-Node-Red-NAV}}&lt;br /&gt;
&lt;br /&gt;
{{traduction}}&lt;br /&gt;
&lt;br /&gt;
== PiCamRED - Envoi périodique de photos par email avec PiCam et NodeRED ==&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-01.png|900px]]&lt;br /&gt;
&lt;br /&gt;
=== Description du projet ===&lt;br /&gt;
&lt;br /&gt;
Dans ce tutoriel, nous allons réaliser des photos à l'aide de la caméra du RaspBerry Pi 2/3 et envoyer ces clichés par email de manière périodique grâce à NodeRED.&lt;br /&gt;
Nous allons donc utiliser plusieurs blocs et décrire de manière détaillée le déroulement de chaque étape de la réalisation de ce projet.&lt;br /&gt;
&lt;br /&gt;
Dans NodeRED, il est important de bien identifier la finalité de notre projet afin de connaître au préalable tous les éléments qu'il faudra créer et fournir à l'action finale (celle qui enverra un email).&lt;br /&gt;
&lt;br /&gt;
=== Quels sont les besoins du noeud email ===&lt;br /&gt;
&lt;br /&gt;
==== Composants nécessaires pour constituer un email ====&lt;br /&gt;
&lt;br /&gt;
Un email est composé des éléments suivants: &lt;br /&gt;
&lt;br /&gt;
* Un expéditeur&lt;br /&gt;
* Un destinataire&lt;br /&gt;
* Un sujet&lt;br /&gt;
* Le corps du message&lt;br /&gt;
&lt;br /&gt;
Tous ces éléments vont donc devoir être préparés afin de pouvoir construire le message à envoyer par le noeud final.&lt;br /&gt;
&lt;br /&gt;
Le noeud final aura aussi besoin d'un serveur SMTP (serveur d'envoi d'emails) et éventuellement de paramètres d'identification pour ce serveur d'envoi d'emails.&lt;br /&gt;
&lt;br /&gt;
==== Détail des besoins du noeud email ====&lt;br /&gt;
&lt;br /&gt;
La liste des éléments nécessaires s'affiche lorsque le bloc est dans la zone de travail (Schema).&lt;br /&gt;
Commençons donc par sélectionner le bloc email, et de le glisser dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
Commençons par cliquer sur le bloc email et nous maintenons le clic pour le glisser à droite dans l'espace de travail.&lt;br /&gt;
&lt;br /&gt;
(on choisit celui qui a son point de liaison à gauche, car nous voulons un bloc de sortie)&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-36.png]]&lt;br /&gt;
&lt;br /&gt;
Glissons le dans l'espace de travail, et cliquons un clic simple pour le sélectionner.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-37.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, dans la colonne à droite de cet espace de travail, nous cliquons sur info et nous pourrons découvrir les éléments nécessaires à la constitution d'un bloc email.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-38.png]]&lt;br /&gt;
&lt;br /&gt;
===== Nous utiliserons les champs suivants =====&lt;br /&gt;
&lt;br /&gt;
* '''msg.payload''' --&amp;gt; Ce champ contient le corps de l'email&lt;br /&gt;
* '''msg.topic''' --&amp;gt; Ce champ contient le sujet de l'email&lt;br /&gt;
* '''msg.from''' --&amp;gt; Ce champ contient l'email de l'expéditeur &lt;br /&gt;
* '''msg.to''' --&amp;gt; Ce champ contient l'email du destinataire&lt;br /&gt;
&lt;br /&gt;
Les autres champs ne seront pas utilisés dans notre cas, mais vous pourrez constater que le bloc email est complet de part ses fonctionnalités et possibilités.&lt;br /&gt;
&lt;br /&gt;
Les données de serveur et d'identification seront abordées en fin de tuto lors de la configuration finale du bloc.&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant passer à la réalisation du flux en commençant par le début de celui-ci.&lt;br /&gt;
&lt;br /&gt;
=== Création d'une action périodique ===&lt;br /&gt;
&lt;br /&gt;
Dans la colonne de gauche de NodeRED, se trouvent une liste de blocs à utiliser pour réaliser vos projets. Ils sont classés par &amp;quot;types&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Ainsi nous retrouvons les &amp;quot;types&amp;quot; suivants:&lt;br /&gt;
&lt;br /&gt;
* '''Input''' qui contient tous les blocs d'entrées&lt;br /&gt;
* '''Ouput''' qui contient tous les blocs de sortie&lt;br /&gt;
* '''Function''' qui contient des blocs de fonctions javascript etc...&lt;br /&gt;
* '''Social''' qui sont des blocs d'entrée ou sorties depuis ou vers les réseaux sociaux&lt;br /&gt;
* '''Storage''' qui sont des fonctions de lecture ou d'écriture de fichiers&lt;br /&gt;
* '''Analysis''' -&amp;gt;&amp;gt; Sentiment interprète du texte et détermine un score sur base d'un dictionnaire anglais, renvoie le texte avec ce score de -5 à +5, déterminant ainsi l'émotion susceptible d'être procuré par ce texte&lt;br /&gt;
* '''Advanced''' possède des outils permettant de détecter des changements dans des fichiers ou dossiers, de lire des flux RSS ou encore EXEC qui permet d'exécuter directement des commandes sous linux !&lt;br /&gt;
* '''Raspberry Pi''' contient des outils pour piloter/lire le GPIO du raspberry Pi&lt;br /&gt;
* '''Network''' qui contient un outil réseau de Ping&lt;br /&gt;
 &lt;br /&gt;
Nous allons créer une action périodique, c'est à dire paramétrer un bloc '''&amp;quot;INJECT&amp;quot;''' de manière à déclencher régulièrement une chaine d'actions que nous allons accrocher à la suite les unes après les autres.&lt;br /&gt;
Nous allons donc cliquer sur le bloc '''&amp;quot;Inject&amp;quot;''' dans la liste &amp;quot;Input&amp;quot; et maintenir ce clic pour le déplacer vers la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-02.png]]&lt;br /&gt;
&lt;br /&gt;
Nous obtiendrons donc une nouvelle instance &amp;quot;inject&amp;quot; qui portera le nom '''&amp;quot;Timestamp&amp;quot;''' (ce nom est attribué par défaut par NodeRED) comme dans la capture ci-dessous&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-03.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant double-cliquer sur celle-ci fin de l'éditer pour voir apparaitre le menu ci-dessous&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-04.png]]&lt;br /&gt;
&lt;br /&gt;
Il va falloir configurer ce bloc, mais avant tout voici une explication de celui-ci:&lt;br /&gt;
&lt;br /&gt;
==== Payload ====&lt;br /&gt;
&lt;br /&gt;
Le champs PayLoad est en fait le champ de données qui sera suivi d'un noeud à l'autre jusque à la fin de la chaine.&lt;br /&gt;
Dans ce module '''&amp;quot;inject&amp;quot;''', nous allons donc déterminer quel type de données contiendra le '''&amp;quot;PayLoad&amp;quot;''' jusqu'à la fin de la chaine que l'on va réaliser.&lt;br /&gt;
&lt;br /&gt;
Dans notre cas, nous souhaitons construire un email, donc du contenu textuel, nous allons donc choisir '''&amp;quot;String&amp;quot;''' ce qui correspond à une chaine de caractères (du texte).&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-05.png]]&lt;br /&gt;
&lt;br /&gt;
==== Topic ====&lt;br /&gt;
&lt;br /&gt;
Le champs &amp;quot;Topic&amp;quot; est un champs de texte dans lequel nous allons mettre un sujet succinct décrivant notre chaine. &lt;br /&gt;
Dans notre cas, ce sujet fera office de sujet au mail que nous expédierons. &lt;br /&gt;
Nous allons donc être précis en un minimum de mots pour que le destinataire de l'email puisse facilement deviner le contenu de celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-06.png]]&lt;br /&gt;
&lt;br /&gt;
==== Repeat ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite choisir l'intervalle de déclenchement de notre action, sachant que nous avons le choix entre: &lt;br /&gt;
&lt;br /&gt;
* '''none'''  : pas de déclenchement périodique programmé&lt;br /&gt;
* '''interval''' : nous fixons un temps de déclenchement à partir du lancement du programme, l'action se réalisera à chaque fois que ce temps sera écoulé de manière répétée jusqu'à l'interruption manuelle du programme&lt;br /&gt;
* '''interval between times''' : nous fixons ici le déclenchement par interval, mais nous fixons aussi une fourchette d'heures et des jours pendant lesquels nous exécutons cet interval&lt;br /&gt;
* '''at a specific time''' : nous fixons une heure d'exécution, et un ou plusieurs jours d'exécution. Dans ce cas l'action n'est pas répétée en continu mais éxécutée une seule fois par jour à l'heure programmée&lt;br /&gt;
&lt;br /&gt;
Dans notre exemple, nous allons fixer un intervalle de 15 secondes pour commencer. Nous pourrons ensuite augmenter cette valeur pour éviter de recevoir trop d'emails avec des photos :D&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-07.png]]&lt;br /&gt;
&lt;br /&gt;
La case '''&amp;quot;inject once at start&amp;quot;''' permet de ne pas attendre le premier cycle avant d'exécuter une première fois l'action. Elle se lancera dès le lancement du programme, puis périodiquement selon les cycles déterminés par l'intervalle.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-08.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Le champs Name va déterminer le nom que portera le bloc dans l'espace de travail et dans les logs (si nous créons des blocs de log ensuite pour contrôler des étapes).&lt;br /&gt;
Il est important de bien établir ce nom de manière explicite, car le nom des blocs permettra de comprendre et retrouver facilement la logique du schéma construit, même si l'on a pas consulté celui-ci pendant une longue période.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-09.png]]&lt;br /&gt;
&lt;br /&gt;
=== Capture d'une image depuis la PiCam ===&lt;br /&gt;
&lt;br /&gt;
Nous allons aller à l'essentiel en ce qui concerne la capture photo en utilisant une commande simple pour prendre un cliché et renvoyer celui-ci dans le flux NodeRED grâce à un bloc permettant d'exécuter des commandes bash.&lt;br /&gt;
&lt;br /&gt;
{{ambox | text = Vous trouverez un TUTO détaillé sur la PiCam vous permettant de prendre la main, ou de la paramétrer si vous n'avez pas encore utilisé celle-ci auparavant: ....___TUTO___...}} &lt;br /&gt;
&lt;br /&gt;
Nous allons tout d'abord cliquer sur le bloc &amp;quot;Exec&amp;quot; dans la section &amp;quot;Advanced&amp;quot; de la colonne de gauche et glisser l'élément dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-10.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, cliquer sur le bloc nouvellement créé et configurer celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-11.png]]&lt;br /&gt;
&lt;br /&gt;
Le menu suivant s'affichera, et nous pourrons configurer le bloc &amp;quot;Exec&amp;quot; nouvellement créé.&lt;br /&gt;
&lt;br /&gt;
==== Command ====&lt;br /&gt;
&lt;br /&gt;
Nous allons y ajouter la commande à exécuter pour prendre une photo avec la caméra du Raspberry Pi et la stocker dans un fichier jpg dans le dossier /tmp/ de linux.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
raspistill -o /tmp/cam.jpg -w 640 -h 480&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous prenons soin de limiter la hauteur et la largeur de l'image afin de réduire son poids pour l'envoi par email.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-12.png]]&lt;br /&gt;
&lt;br /&gt;
==== +Append ====&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons décocher la case &amp;quot;msg.payload&amp;quot; si elle est cochée par défaut.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-13.png]]&lt;br /&gt;
&lt;br /&gt;
==== Extra input parameters et Timeout ====&lt;br /&gt;
&lt;br /&gt;
Nous n'aurons pas besoin de compléter ces champs pour notre projet.&lt;br /&gt;
&lt;br /&gt;
Si vous cochez le champ &amp;quot;Use spawn() instead of exec()?&amp;quot;, votre commande sera réalisée sous forme d'un processus résident et continuera de s'exécuter jusqu'à ce qu'elle se termine par elle-même (sauf si elle ne se termine jamais).&lt;br /&gt;
Cette solution implique que le programme n'attendra pas que cette commande soit réalisée pour passer aux étapes suivantes. &lt;br /&gt;
Si la suite de l'exécution de votre flux est susceptible d'utiliser le résultat de cette commande, nous vous déconseillons d'utiliser cette option sous peine de provoquer des erreurs à la suite du traitement du flux.&lt;br /&gt;
&lt;br /&gt;
Le champ &amp;quot;Timeout&amp;quot; permet de définir un temps d'attente maximum avant de mettre un terme à l'exécution de la commande. &lt;br /&gt;
Cela permet de débloquer la situation si la commande exécutée prends un temps anormalement long à s'exécuter.&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite compléter le champs nom, celui-ci sera utilisé pour nommer le bloc dans le &amp;quot;schéma&amp;quot;, mais aussi de nommer les logs comme pour le bloc &amp;quot;Exec&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-14.png]]&lt;br /&gt;
&lt;br /&gt;
=== Encodage de l'image en base64 ===&lt;br /&gt;
&lt;br /&gt;
Nous allons convertir la photo prise juste avant en utilisant une commande de conversion en base64.&lt;br /&gt;
Cela facilitera son injection dans un template HTML que nous allons créer ensuite pour construire un email.&lt;br /&gt;
&lt;br /&gt;
Nous allons tout d'abord cliquer sur le bloc &amp;quot;Exec&amp;quot; dans la section &amp;quot;Advanced&amp;quot; de la colonne de gauche et glisser l'élément dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-10.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, cliquer sur le bloc nouvellement créé et configurer celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-11.png]]&lt;br /&gt;
&lt;br /&gt;
Le menu suivant s'affichera, et nous pourrons configurer le bloc &amp;quot;Exec&amp;quot; nouvellement créé.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-15.png]]&lt;br /&gt;
&lt;br /&gt;
==== Command ====&lt;br /&gt;
&lt;br /&gt;
Nous allons y ajouter la commande à exécuter pour encoder en base 64 la photo prise précédemment avec la caméra du Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
base64 -i &amp;quot;/tmp/cam.jpg&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-16.png]]&lt;br /&gt;
&lt;br /&gt;
==== +Append ====&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons cocher la case &amp;quot;msg.payload&amp;quot; si elle n'est pas cochée par défaut pour que le résultat soit directement renvoyé par cette commande dans le &amp;quot;PayLoad&amp;quot; du flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-17.png]]&lt;br /&gt;
&lt;br /&gt;
==== Extra input parameters et Timeout ====&lt;br /&gt;
&lt;br /&gt;
Nous n'aurons pas besoin de compléter ces champs pour notre projet.&lt;br /&gt;
&lt;br /&gt;
Si vous cochez le champ &amp;quot;Use spawn() instead of exec()?&amp;quot;, votre commande sera réalisée sous forme d'un processus résident et continuera de s'exécuter jusqu'à ce qu'elle se termine par elle-même (sauf si elle ne se termine jamais).&lt;br /&gt;
Cette solution implique que le programme n'attendra pas que cette commande soit réalisée pour passer aux étapes suivantes. &lt;br /&gt;
Si la suite de l'exécution de votre flux est susceptible d'utiliser le résultat de cette commande, nous vous déconseillons d'utiliser cette option sous peine de provoquer des erreurs à la suite du traitement du flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-18.png]]&lt;br /&gt;
&lt;br /&gt;
Le champ &amp;quot;Timeout&amp;quot; permet de définir un temps d'attente maximum avant de mettre un terme à l'exécution de la commande. &lt;br /&gt;
Cela permet de débloquer la situation si la commande exécutée prends un temps anormalement long à s'exécuter.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-19.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite compléter le champs nom, celui-ci sera utilisé pour nommer le bloc dans le &amp;quot;schéma&amp;quot;, mais aussi de nommer les logs comme pour le bloc &amp;quot;Exec&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-20.png]]&lt;br /&gt;
&lt;br /&gt;
=== Création d'un email au format HTML ===&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant créer un template d'email au format HTML afin de mettre en forme le message que nous enverrons ensuite.&lt;br /&gt;
Nous allons pour cela utiliser un bloc &amp;quot;Template&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-21.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons attribuer un nom au bloc afin de l'identifier plus facilement dans le flux.&lt;br /&gt;
Nous allons donc le nommer &amp;quot;Contenu du mail&amp;quot; puisque nous créons le contenu du mail que nous enverrons ensuite.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-22.png]]&lt;br /&gt;
&lt;br /&gt;
==== Set property ====&lt;br /&gt;
&lt;br /&gt;
La propriété que nous souhaitons créer dans le flux est le &amp;quot;PayLoad&amp;quot;.&lt;br /&gt;
Ce PayLoad existe déjà, il contient pour le moment l'image au format &amp;quot;Base64&amp;quot; précédemment encodé.&lt;br /&gt;
Cela n'est pas un problème, après notre noeud (notre bloc), le PayLoad sera intégralement remplacé par le template que nous sommes en train de créer.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-23.png]]&lt;br /&gt;
&lt;br /&gt;
==== Template ====&lt;br /&gt;
&lt;br /&gt;
Dans ce template, nous allons créer une structure HTML de base minimum afin que la structure soit interprétée par la majorité des clients/webmail.&lt;br /&gt;
Vous pouvez la personnaliser à votre guise si vous avez les connaissances en HTML.&lt;br /&gt;
&lt;br /&gt;
Voici la structure de base pour notre projet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
    &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;meta charset=&amp;quot;utf8&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/head&amp;gt;&lt;br /&gt;
    &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Projet Photo par email&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;img src=&amp;quot;data:image/jpg;base64,{{payload}}&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pourrez remarquer que nous intégrons l'image en appelant le PayLoad à 'intérieur du code HTML dans la balise &amp;lt;img&amp;gt;.&lt;br /&gt;
C'est le PayLoad créé précédemment par le bloc &amp;quot;Exec&amp;quot; qui est récupéré à ce moment précis.&lt;br /&gt;
Ce PayLoad est remplacé dans le flux par le PayLoad complet avec notre template dans le flux par notre bloc Template.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-24.png]]&lt;br /&gt;
&lt;br /&gt;
=== Création d'un bloc (noeud) &amp;quot;Debug&amp;quot;  ===&lt;br /&gt;
&lt;br /&gt;
Nous allons ajouter la notion d'expéditeur dans le flux que nous avons créé à travers nos blocs (noeuds).&lt;br /&gt;
Pour rappel, actuellement nous avons deux propriétés avec des données dans notre flux. &lt;br /&gt;
Si nous voulons observer ce que nous avons créé jusque là, nous pouvons faire appel à un bloc &amp;quot;Debug&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Création du bloc &amp;quot;Debug&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Comme pour les blocs précédents, nous allons glisser/déposer un bloc débug dans l'espace de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-25.png]]&lt;br /&gt;
&lt;br /&gt;
Celui-ci s'appelle msg/payload par défaut&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-26.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons double-cliquer sur ce bloc pour le configurer.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-27.png]]&lt;br /&gt;
&lt;br /&gt;
==== Output ====&lt;br /&gt;
&lt;br /&gt;
Dans ce champs, nous allons choisir la partie du flux que nous souhaitons afficher, ou nous allons sélectionner le flux entier.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-28.png]]&lt;br /&gt;
&lt;br /&gt;
Sélectionner le flux entier, nous affichera le flux complet incluant toutes ses propriétés.&lt;br /&gt;
&lt;br /&gt;
 [[fichier:Rasp-Node-Red-picam-mail-29.png]]&lt;br /&gt;
&lt;br /&gt;
==== To =====&lt;br /&gt;
&lt;br /&gt;
La propriété &amp;quot;To&amp;quot; nous permet de choisir ou nous souhaitons afficher les données que nous récupérons. &lt;br /&gt;
Soit nous les affichons uniquement dans l'onglet &amp;quot;Debug&amp;quot; à droite de l'espace de travail, soit nous l'affichons dans cet onglet mais aussi dans la console de NodeJS.&lt;br /&gt;
Dans notre cas, nous allons nous contenter d'afficher nos éléments dans l'onglet de &amp;quot;Debug&amp;quot; à droite de notre espace de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-30.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Le champs Name nous servira à identifier quel bloc de &amp;quot;Debug&amp;quot; affiche les données en console ou dans l'onglet &amp;quot;Debug&amp;quot;. &lt;br /&gt;
Il faut donc le nommer efficacement pour bien attacher et comprendre les données que nous récupérons, surtout si nous en plaçons plusieurs dans le flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-31.png]]&lt;br /&gt;
&lt;br /&gt;
==== Exploitation et compréhension des données récupérées ====&lt;br /&gt;
&lt;br /&gt;
Nous avons placé notre bloc &amp;quot;Debug&amp;quot; à la suite du flux en dernière position. &lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-32.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons donc déployer le programme en cliquant sur &amp;quot;Deploy&amp;quot; en haut à droite de la page. &lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-33.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons exécuter manuellement le programme en cliquant sur le bouton se trouvant en début de chaîne:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-34.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite afficher l'onglet &amp;quot;Debug&amp;quot; sur le coté droit de la page et analyser les données récupérées:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-35.png]]&lt;br /&gt;
&lt;br /&gt;
==== Analyse des données récupérées dans l'onglet &amp;quot;Debug&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
08/05/2017 à 12:54:31 node: FORMATAGE&lt;br /&gt;
MCHobby - Photo bureau : msg : Object&lt;br /&gt;
object&lt;br /&gt;
_msgid: &amp;quot;81efe35c.3208d&amp;quot;&lt;br /&gt;
topic: &amp;quot;MCHobby - Photo bureau&amp;quot;&lt;br /&gt;
payload: &amp;quot;&amp;lt;html&amp;gt;↵ &amp;lt;head&amp;gt;↵ &amp;lt;meta charset=&amp;quot;utf8&amp;quot;/&amp;gt;↵ ↵ &amp;lt;/head&amp;gt;↵ &amp;lt;body&amp;gt;↵ &amp;lt;h1&amp;gt;MCHobby - Photo bureau&amp;lt;/h1&amp;gt;↵ &amp;lt;p&amp;gt;Cette photo est un instantané pris dans les bureaux de MCHobby.&amp;lt;/p&amp;gt;↵ &lt;br /&gt;
&amp;lt;img src=&amp;quot;data:image/jpg;base64,&amp;amp;#x2F;9j&amp;amp;#x2F;4WP6x2.../&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comme vous pourrez le constater, chaque élément du noeud est détaillé.&lt;br /&gt;
Les données sont cependant tronquées, le noeud &amp;quot;Debug&amp;quot; ne nous fourni pas la totalité du &amp;quot;PayLoad&amp;quot; mais nous avons déjà un bon aperçu des données qu'il contient.&lt;br /&gt;
&lt;br /&gt;
* '''_msgid:''' est un Id unique de message&lt;br /&gt;
* '''topic:''' est le sujet du mail, nous l'avons déterminé dans le premier bloc&lt;br /&gt;
* '''payload:''' contient les données du message formatées par le template que nous avons créé et complété par l'image en base64.&lt;br /&gt;
&lt;br /&gt;
{{tmbox | text = Les noeuds &amp;quot;Debug&amp;quot; sont pratiques. Ils nous permettent d'afficher une partie ou la totalité du flux tel qu'il est à l'endroit ou ils sont placés. Cela peut permettre d'identifier et de résoudre plus facilement des problèmes dans des opérations plus complexes et dans notre cas, cela nous permet de mieux comprendre comment fonctionne le noeud et comment les données sont transmises d'un bloc à l'autre.}}&lt;br /&gt;
&lt;br /&gt;
=== Création d'un expéditeur ===&lt;br /&gt;
&lt;br /&gt;
Nous avons construit petit à petit un message avec un sujet, mais il manque encore un détail: l'expéditeur de l'email que nous allons envoyer: le fameux &amp;quot;msg.from&amp;quot; que nous avons évoqué au début de tuto !&lt;br /&gt;
&lt;br /&gt;
Si vous avez bien suivi les étapes précédentes du tuto, jusqu'au noeud &amp;quot;Debug&amp;quot; et à son résultat, vous comprendrez facilement la démarche ci après pour ajouter un expéditeur dans le flux.&lt;br /&gt;
&lt;br /&gt;
Nous allons ajouter un nouveau noeud &amp;quot;Template&amp;quot; dans la zone de travail et double cliquer dessus pour afficher sa page de configuration:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-39.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite sélectionner le type de propriété que nous souhaitons injecter dans le flux: '''&amp;quot;msg.from&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-40.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cette propriété étant une adresse email, nous allons choisir le type '''&amp;quot;plaintext&amp;quot;''' comme type de données.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-41.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous allons enfin donner un nom explicite à notre bloc afin d'identifier facilement sa fonctionnalité parmi les autres blocs.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-42.png]]&lt;br /&gt;
&lt;br /&gt;
=== Création du bloc d'envoi d'email ===&lt;br /&gt;
&lt;br /&gt;
==== To : destinataire ====&lt;br /&gt;
&lt;br /&gt;
Simplement, l'adresse email du destinataire du message.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-43.png]]&lt;br /&gt;
&lt;br /&gt;
==== Server, port, secure connection ====&lt;br /&gt;
&lt;br /&gt;
Dans ce champ, nous allons mettre un serveur SMTP (serveur email) pour permettre l'envoi de l'email. Dans la plupart des cas, le SMTP de votre FAI (fournisseur d'accès à internet) pourra servir d'intermédiaire.&lt;br /&gt;
Nous vous invitons à consulter les paramètres propres à votre fournisseur d'accès pour paramétrer ce bloc.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-44.png]]&lt;br /&gt;
&lt;br /&gt;
==== UserID et Password ====&lt;br /&gt;
&lt;br /&gt;
Ces champs resteront vides si votre FAI ne nécessite pas d'authentification pour envoyer des emails.&lt;br /&gt;
Si vous utilisez un autre fournisseur, tel que GMAIL par exemple, il faudra mettre votre adresse email et votre mot de passe pour vous identifier.&lt;br /&gt;
&lt;br /&gt;
{{ambox-stop|text=&amp;quot;Attention: votre compte gmail devra être configuré au préalable afin d'autoriser un &amp;quot;client email&amp;quot; à utiliser votre compte pour envoyer/recevoir des emails par ce biais. Nous vous invitons à consulter la documentation de Gmail pour en savoir plus.&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-45.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Enfin, le champ &amp;quot;Name&amp;quot; qui vous permet de donner un nom au bloc d'envoi d'email.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-46.png]]&lt;br /&gt;
&lt;br /&gt;
=== Déploiement et premiers tests ===&lt;br /&gt;
&lt;br /&gt;
Afin de &amp;quot;lancer le programme&amp;quot; que nous venons de créer, il suffit de cliquer sur le bouton &amp;quot;Deploy&amp;quot; en haut à droite de la page.&lt;br /&gt;
&lt;br /&gt;
==== Déploiement et débug ====&lt;br /&gt;
&lt;br /&gt;
===== La photo ne se réalise pas =====&lt;br /&gt;
&lt;br /&gt;
Si la photo ne se réalise pas, il faut commencer par vérifier la commande dans le bloc de prise de photo.&lt;br /&gt;
Nous vous invitons vivement à tester la commande directement dans le terminal afin de vous assurer que celle-ci soit d'une syntaxe correcte et ne rencontre pas de problème d'exécution.&lt;br /&gt;
Les problèmes d'exécution de commandes externes dans le bloc '''&amp;quot;command&amp;quot;''' peuvent amener à des blocages dans l'exécution et empêcher NodeRED de continuer à exécuter le '''&amp;quot;Schéma&amp;quot;'''.&lt;br /&gt;
&lt;br /&gt;
===== La photo se réalise mais l'encodage en base64 bloque =====&lt;br /&gt;
&lt;br /&gt;
Si le programme bloque à l'encodage, comme précédemment, nous vous invitons à vérifier votre commande en l'exécutant directement dans le terminal.&lt;br /&gt;
Vous pourrez identifier directement le problème et le résoudre le cas échéant.&lt;br /&gt;
&lt;br /&gt;
===== L'encodage fonctionne, mais le PayLoad reste vide =====&lt;br /&gt;
&lt;br /&gt;
N'auriez-vous pas oublié de cocher la case '''&amp;quot;+ Append : msg.payload&amp;quot;''' dans le bloc qui lance la commande de conversion en base64 ?&lt;br /&gt;
&lt;br /&gt;
===== Mon email arrive vide =====&lt;br /&gt;
&lt;br /&gt;
Retournez à l'étape de mise en forme du message afin de vérifier si vous n'avez pas omis un paramètre ou une fonctionnalité.&lt;br /&gt;
&lt;br /&gt;
===== L'image ne s'affiche pas dans l'email reçu  =====&lt;br /&gt;
&lt;br /&gt;
Si l'image ne s'affiche pas, il faudrait vérifier si vous avez bien lié vos blocs sur la première sortie des blocs '''&amp;quot;Exec&amp;quot;'''.&lt;br /&gt;
Les deux autres sorties étant destinées à d'autres états d'exécution/erreur.&lt;br /&gt;
&lt;br /&gt;
===== Le sujet de l'email est vide =====&lt;br /&gt;
&lt;br /&gt;
Dans notre cas, le sujet est fixé dans le premier bloc dans le champ '''&amp;quot;Topic&amp;quot;'''.&lt;br /&gt;
Vous pouvez-donc ré-éditer ce bloc afin de vérifier si celui-ci n'est pas resté vide.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Rasp-Node-Red-TRAILER}}&lt;/div&gt;</summary>
		<author><name>AntoineWrt</name></author>
	</entry>
	<entry>
		<id>https://wiki.mchobby.be/index.php?title=Fichier:Rasp-Node-Red-picam-mail-45.png&amp;diff=22824</id>
		<title>Fichier:Rasp-Node-Red-picam-mail-45.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.mchobby.be/index.php?title=Fichier:Rasp-Node-Red-picam-mail-45.png&amp;diff=22824"/>
		<updated>2017-05-08T13:42:26Z</updated>

		<summary type="html">&lt;p&gt;AntoineWrt : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AntoineWrt</name></author>
	</entry>
	<entry>
		<id>https://wiki.mchobby.be/index.php?title=Fichier:Rasp-Node-Red-picam-mail-44.png&amp;diff=22823</id>
		<title>Fichier:Rasp-Node-Red-picam-mail-44.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.mchobby.be/index.php?title=Fichier:Rasp-Node-Red-picam-mail-44.png&amp;diff=22823"/>
		<updated>2017-05-08T13:41:49Z</updated>

		<summary type="html">&lt;p&gt;AntoineWrt : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AntoineWrt</name></author>
	</entry>
	<entry>
		<id>https://wiki.mchobby.be/index.php?title=Fichier:Rasp-Node-Red-picam-mail-43.png&amp;diff=22822</id>
		<title>Fichier:Rasp-Node-Red-picam-mail-43.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.mchobby.be/index.php?title=Fichier:Rasp-Node-Red-picam-mail-43.png&amp;diff=22822"/>
		<updated>2017-05-08T13:41:33Z</updated>

		<summary type="html">&lt;p&gt;AntoineWrt : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AntoineWrt</name></author>
	</entry>
	<entry>
		<id>https://wiki.mchobby.be/index.php?title=Rasp-Node-Red-picam-mail&amp;diff=22821</id>
		<title>Rasp-Node-Red-picam-mail</title>
		<link rel="alternate" type="text/html" href="https://wiki.mchobby.be/index.php?title=Rasp-Node-Red-picam-mail&amp;diff=22821"/>
		<updated>2017-05-08T13:41:23Z</updated>

		<summary type="html">&lt;p&gt;AntoineWrt : /* Création du bloc d'envoi d'email */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Rasp-Node-Red-NAV}}&lt;br /&gt;
&lt;br /&gt;
{{traduction}}&lt;br /&gt;
&lt;br /&gt;
== PiCamRED - Envoi périodique de photos par email avec PiCam et NodeRED ==&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-01.png|900px]]&lt;br /&gt;
&lt;br /&gt;
=== Description du projet ===&lt;br /&gt;
&lt;br /&gt;
Dans ce tutoriel, nous allons réaliser des photos à l'aide de la caméra du RaspBerry Pi 2/3 et envoyer ces clichés par email de manière périodique grâce à NodeRED.&lt;br /&gt;
Nous allons donc utiliser plusieurs blocs et décrire de manière détaillée le déroulement de chaque étape de la réalisation de ce projet.&lt;br /&gt;
&lt;br /&gt;
Dans NodeRED, il est important de bien identifier la finalité de notre projet afin de connaître au préalable tous les éléments qu'il faudra créer et fournir à l'action finale (celle qui enverra un email).&lt;br /&gt;
&lt;br /&gt;
=== Quels sont les besoins du noeud email ===&lt;br /&gt;
&lt;br /&gt;
==== Composants nécessaires pour constituer un email ====&lt;br /&gt;
&lt;br /&gt;
Un email est composé des éléments suivants: &lt;br /&gt;
&lt;br /&gt;
* Un expéditeur&lt;br /&gt;
* Un destinataire&lt;br /&gt;
* Un sujet&lt;br /&gt;
* Le corps du message&lt;br /&gt;
&lt;br /&gt;
Tous ces éléments vont donc devoir être préparés afin de pouvoir construire le message à envoyer par le noeud final.&lt;br /&gt;
&lt;br /&gt;
Le noeud final aura aussi besoin d'un serveur SMTP (serveur d'envoi d'emails) et éventuellement de paramètres d'identification pour ce serveur d'envoi d'emails.&lt;br /&gt;
&lt;br /&gt;
==== Détail des besoins du noeud email ====&lt;br /&gt;
&lt;br /&gt;
La liste des éléments nécessaires s'affiche lorsque le bloc est dans la zone de travail (Schema).&lt;br /&gt;
Commençons donc par sélectionner le bloc email, et de le glisser dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
Commençons par cliquer sur le bloc email et nous maintenons le clic pour le glisser à droite dans l'espace de travail.&lt;br /&gt;
&lt;br /&gt;
(on choisit celui qui a son point de liaison à gauche, car nous voulons un bloc de sortie)&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-36.png]]&lt;br /&gt;
&lt;br /&gt;
Glissons le dans l'espace de travail, et cliquons un clic simple pour le sélectionner.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-37.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, dans la colonne à droite de cet espace de travail, nous cliquons sur info et nous pourrons découvrir les éléments nécessaires à la constitution d'un bloc email.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-38.png]]&lt;br /&gt;
&lt;br /&gt;
===== Nous utiliserons les champs suivants =====&lt;br /&gt;
&lt;br /&gt;
* '''msg.payload''' --&amp;gt; Ce champ contient le corps de l'email&lt;br /&gt;
* '''msg.topic''' --&amp;gt; Ce champ contient le sujet de l'email&lt;br /&gt;
* '''msg.from''' --&amp;gt; Ce champ contient l'email de l'expéditeur &lt;br /&gt;
* '''msg.to''' --&amp;gt; Ce champ contient l'email du destinataire&lt;br /&gt;
&lt;br /&gt;
Les autres champs ne seront pas utilisés dans notre cas, mais vous pourrez constater que le bloc email est complet de part ses fonctionnalités et possibilités.&lt;br /&gt;
&lt;br /&gt;
Les données de serveur et d'identification seront abordées en fin de tuto lors de la configuration finale du bloc.&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant passer à la réalisation du flux en commençant par le début de celui-ci.&lt;br /&gt;
&lt;br /&gt;
=== Création d'une action périodique ===&lt;br /&gt;
&lt;br /&gt;
Dans la colonne de gauche de NodeRED, se trouvent une liste de blocs à utiliser pour réaliser vos projets. Ils sont classés par &amp;quot;types&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Ainsi nous retrouvons les &amp;quot;types&amp;quot; suivants:&lt;br /&gt;
&lt;br /&gt;
* '''Input''' qui contient tous les blocs d'entrées&lt;br /&gt;
* '''Ouput''' qui contient tous les blocs de sortie&lt;br /&gt;
* '''Function''' qui contient des blocs de fonctions javascript etc...&lt;br /&gt;
* '''Social''' qui sont des blocs d'entrée ou sorties depuis ou vers les réseaux sociaux&lt;br /&gt;
* '''Storage''' qui sont des fonctions de lecture ou d'écriture de fichiers&lt;br /&gt;
* '''Analysis''' -&amp;gt;&amp;gt; Sentiment interprète du texte et détermine un score sur base d'un dictionnaire anglais, renvoie le texte avec ce score de -5 à +5, déterminant ainsi l'émotion susceptible d'être procuré par ce texte&lt;br /&gt;
* '''Advanced''' possède des outils permettant de détecter des changements dans des fichiers ou dossiers, de lire des flux RSS ou encore EXEC qui permet d'exécuter directement des commandes sous linux !&lt;br /&gt;
* '''Raspberry Pi''' contient des outils pour piloter/lire le GPIO du raspberry Pi&lt;br /&gt;
* '''Network''' qui contient un outil réseau de Ping&lt;br /&gt;
 &lt;br /&gt;
Nous allons créer une action périodique, c'est à dire paramétrer un bloc '''&amp;quot;INJECT&amp;quot;''' de manière à déclencher régulièrement une chaine d'actions que nous allons accrocher à la suite les unes après les autres.&lt;br /&gt;
Nous allons donc cliquer sur le bloc '''&amp;quot;Inject&amp;quot;''' dans la liste &amp;quot;Input&amp;quot; et maintenir ce clic pour le déplacer vers la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-02.png]]&lt;br /&gt;
&lt;br /&gt;
Nous obtiendrons donc une nouvelle instance &amp;quot;inject&amp;quot; qui portera le nom '''&amp;quot;Timestamp&amp;quot;''' (ce nom est attribué par défaut par NodeRED) comme dans la capture ci-dessous&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-03.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant double-cliquer sur celle-ci fin de l'éditer pour voir apparaitre le menu ci-dessous&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-04.png]]&lt;br /&gt;
&lt;br /&gt;
Il va falloir configurer ce bloc, mais avant tout voici une explication de celui-ci:&lt;br /&gt;
&lt;br /&gt;
==== Payload ====&lt;br /&gt;
&lt;br /&gt;
Le champs PayLoad est en fait le champ de données qui sera suivi d'un noeud à l'autre jusque à la fin de la chaine.&lt;br /&gt;
Dans ce module '''&amp;quot;inject&amp;quot;''', nous allons donc déterminer quel type de données contiendra le '''&amp;quot;PayLoad&amp;quot;''' jusqu'à la fin de la chaine que l'on va réaliser.&lt;br /&gt;
&lt;br /&gt;
Dans notre cas, nous souhaitons construire un email, donc du contenu textuel, nous allons donc choisir '''&amp;quot;String&amp;quot;''' ce qui correspond à une chaine de caractères (du texte).&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-05.png]]&lt;br /&gt;
&lt;br /&gt;
==== Topic ====&lt;br /&gt;
&lt;br /&gt;
Le champs &amp;quot;Topic&amp;quot; est un champs de texte dans lequel nous allons mettre un sujet succinct décrivant notre chaine. &lt;br /&gt;
Dans notre cas, ce sujet fera office de sujet au mail que nous expédierons. &lt;br /&gt;
Nous allons donc être précis en un minimum de mots pour que le destinataire de l'email puisse facilement deviner le contenu de celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-06.png]]&lt;br /&gt;
&lt;br /&gt;
==== Repeat ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite choisir l'intervalle de déclenchement de notre action, sachant que nous avons le choix entre: &lt;br /&gt;
&lt;br /&gt;
* '''none'''  : pas de déclenchement périodique programmé&lt;br /&gt;
* '''interval''' : nous fixons un temps de déclenchement à partir du lancement du programme, l'action se réalisera à chaque fois que ce temps sera écoulé de manière répétée jusqu'à l'interruption manuelle du programme&lt;br /&gt;
* '''interval between times''' : nous fixons ici le déclenchement par interval, mais nous fixons aussi une fourchette d'heures et des jours pendant lesquels nous exécutons cet interval&lt;br /&gt;
* '''at a specific time''' : nous fixons une heure d'exécution, et un ou plusieurs jours d'exécution. Dans ce cas l'action n'est pas répétée en continu mais éxécutée une seule fois par jour à l'heure programmée&lt;br /&gt;
&lt;br /&gt;
Dans notre exemple, nous allons fixer un intervalle de 15 secondes pour commencer. Nous pourrons ensuite augmenter cette valeur pour éviter de recevoir trop d'emails avec des photos :D&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-07.png]]&lt;br /&gt;
&lt;br /&gt;
La case '''&amp;quot;inject once at start&amp;quot;''' permet de ne pas attendre le premier cycle avant d'exécuter une première fois l'action. Elle se lancera dès le lancement du programme, puis périodiquement selon les cycles déterminés par l'intervalle.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-08.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Le champs Name va déterminer le nom que portera le bloc dans l'espace de travail et dans les logs (si nous créons des blocs de log ensuite pour contrôler des étapes).&lt;br /&gt;
Il est important de bien établir ce nom de manière explicite, car le nom des blocs permettra de comprendre et retrouver facilement la logique du schéma construit, même si l'on a pas consulté celui-ci pendant une longue période.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-09.png]]&lt;br /&gt;
&lt;br /&gt;
=== Capture d'une image depuis la PiCam ===&lt;br /&gt;
&lt;br /&gt;
Nous allons aller à l'essentiel en ce qui concerne la capture photo en utilisant une commande simple pour prendre un cliché et renvoyer celui-ci dans le flux NodeRED grâce à un bloc permettant d'exécuter des commandes bash.&lt;br /&gt;
&lt;br /&gt;
{{ambox | text = Vous trouverez un TUTO détaillé sur la PiCam vous permettant de prendre la main, ou de la paramétrer si vous n'avez pas encore utilisé celle-ci auparavant: ....___TUTO___...}} &lt;br /&gt;
&lt;br /&gt;
Nous allons tout d'abord cliquer sur le bloc &amp;quot;Exec&amp;quot; dans la section &amp;quot;Advanced&amp;quot; de la colonne de gauche et glisser l'élément dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-10.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, cliquer sur le bloc nouvellement créé et configurer celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-11.png]]&lt;br /&gt;
&lt;br /&gt;
Le menu suivant s'affichera, et nous pourrons configurer le bloc &amp;quot;Exec&amp;quot; nouvellement créé.&lt;br /&gt;
&lt;br /&gt;
==== Command ====&lt;br /&gt;
&lt;br /&gt;
Nous allons y ajouter la commande à exécuter pour prendre une photo avec la caméra du Raspberry Pi et la stocker dans un fichier jpg dans le dossier /tmp/ de linux.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
raspistill -o /tmp/cam.jpg -w 640 -h 480&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous prenons soin de limiter la hauteur et la largeur de l'image afin de réduire son poids pour l'envoi par email.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-12.png]]&lt;br /&gt;
&lt;br /&gt;
==== +Append ====&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons décocher la case &amp;quot;msg.payload&amp;quot; si elle est cochée par défaut.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-13.png]]&lt;br /&gt;
&lt;br /&gt;
==== Extra input parameters et Timeout ====&lt;br /&gt;
&lt;br /&gt;
Nous n'aurons pas besoin de compléter ces champs pour notre projet.&lt;br /&gt;
&lt;br /&gt;
Si vous cochez le champ &amp;quot;Use spawn() instead of exec()?&amp;quot;, votre commande sera réalisée sous forme d'un processus résident et continuera de s'exécuter jusqu'à ce qu'elle se termine par elle-même (sauf si elle ne se termine jamais).&lt;br /&gt;
Cette solution implique que le programme n'attendra pas que cette commande soit réalisée pour passer aux étapes suivantes. &lt;br /&gt;
Si la suite de l'exécution de votre flux est susceptible d'utiliser le résultat de cette commande, nous vous déconseillons d'utiliser cette option sous peine de provoquer des erreurs à la suite du traitement du flux.&lt;br /&gt;
&lt;br /&gt;
Le champ &amp;quot;Timeout&amp;quot; permet de définir un temps d'attente maximum avant de mettre un terme à l'exécution de la commande. &lt;br /&gt;
Cela permet de débloquer la situation si la commande exécutée prends un temps anormalement long à s'exécuter.&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite compléter le champs nom, celui-ci sera utilisé pour nommer le bloc dans le &amp;quot;schéma&amp;quot;, mais aussi de nommer les logs comme pour le bloc &amp;quot;Exec&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-14.png]]&lt;br /&gt;
&lt;br /&gt;
=== Encodage de l'image en base64 ===&lt;br /&gt;
&lt;br /&gt;
Nous allons convertir la photo prise juste avant en utilisant une commande de conversion en base64.&lt;br /&gt;
Cela facilitera son injection dans un template HTML que nous allons créer ensuite pour construire un email.&lt;br /&gt;
&lt;br /&gt;
Nous allons tout d'abord cliquer sur le bloc &amp;quot;Exec&amp;quot; dans la section &amp;quot;Advanced&amp;quot; de la colonne de gauche et glisser l'élément dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-10.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, cliquer sur le bloc nouvellement créé et configurer celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-11.png]]&lt;br /&gt;
&lt;br /&gt;
Le menu suivant s'affichera, et nous pourrons configurer le bloc &amp;quot;Exec&amp;quot; nouvellement créé.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-15.png]]&lt;br /&gt;
&lt;br /&gt;
==== Command ====&lt;br /&gt;
&lt;br /&gt;
Nous allons y ajouter la commande à exécuter pour encoder en base 64 la photo prise précédemment avec la caméra du Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
base64 -i &amp;quot;/tmp/cam.jpg&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-16.png]]&lt;br /&gt;
&lt;br /&gt;
==== +Append ====&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons cocher la case &amp;quot;msg.payload&amp;quot; si elle n'est pas cochée par défaut pour que le résultat soit directement renvoyé par cette commande dans le &amp;quot;PayLoad&amp;quot; du flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-17.png]]&lt;br /&gt;
&lt;br /&gt;
==== Extra input parameters et Timeout ====&lt;br /&gt;
&lt;br /&gt;
Nous n'aurons pas besoin de compléter ces champs pour notre projet.&lt;br /&gt;
&lt;br /&gt;
Si vous cochez le champ &amp;quot;Use spawn() instead of exec()?&amp;quot;, votre commande sera réalisée sous forme d'un processus résident et continuera de s'exécuter jusqu'à ce qu'elle se termine par elle-même (sauf si elle ne se termine jamais).&lt;br /&gt;
Cette solution implique que le programme n'attendra pas que cette commande soit réalisée pour passer aux étapes suivantes. &lt;br /&gt;
Si la suite de l'exécution de votre flux est susceptible d'utiliser le résultat de cette commande, nous vous déconseillons d'utiliser cette option sous peine de provoquer des erreurs à la suite du traitement du flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-18.png]]&lt;br /&gt;
&lt;br /&gt;
Le champ &amp;quot;Timeout&amp;quot; permet de définir un temps d'attente maximum avant de mettre un terme à l'exécution de la commande. &lt;br /&gt;
Cela permet de débloquer la situation si la commande exécutée prends un temps anormalement long à s'exécuter.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-19.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite compléter le champs nom, celui-ci sera utilisé pour nommer le bloc dans le &amp;quot;schéma&amp;quot;, mais aussi de nommer les logs comme pour le bloc &amp;quot;Exec&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-20.png]]&lt;br /&gt;
&lt;br /&gt;
=== Création d'un email au format HTML ===&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant créer un template d'email au format HTML afin de mettre en forme le message que nous enverrons ensuite.&lt;br /&gt;
Nous allons pour cela utiliser un bloc &amp;quot;Template&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-21.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons attribuer un nom au bloc afin de l'identifier plus facilement dans le flux.&lt;br /&gt;
Nous allons donc le nommer &amp;quot;Contenu du mail&amp;quot; puisque nous créons le contenu du mail que nous enverrons ensuite.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-22.png]]&lt;br /&gt;
&lt;br /&gt;
==== Set property ====&lt;br /&gt;
&lt;br /&gt;
La propriété que nous souhaitons créer dans le flux est le &amp;quot;PayLoad&amp;quot;.&lt;br /&gt;
Ce PayLoad existe déjà, il contient pour le moment l'image au format &amp;quot;Base64&amp;quot; précédemment encodé.&lt;br /&gt;
Cela n'est pas un problème, après notre noeud (notre bloc), le PayLoad sera intégralement remplacé par le template que nous sommes en train de créer.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-23.png]]&lt;br /&gt;
&lt;br /&gt;
==== Template ====&lt;br /&gt;
&lt;br /&gt;
Dans ce template, nous allons créer une structure HTML de base minimum afin que la structure soit interprétée par la majorité des clients/webmail.&lt;br /&gt;
Vous pouvez la personnaliser à votre guise si vous avez les connaissances en HTML.&lt;br /&gt;
&lt;br /&gt;
Voici la structure de base pour notre projet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
    &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;meta charset=&amp;quot;utf8&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/head&amp;gt;&lt;br /&gt;
    &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Projet Photo par email&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;img src=&amp;quot;data:image/jpg;base64,{{payload}}&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pourrez remarquer que nous intégrons l'image en appelant le PayLoad à 'intérieur du code HTML dans la balise &amp;lt;img&amp;gt;.&lt;br /&gt;
C'est le PayLoad créé précédemment par le bloc &amp;quot;Exec&amp;quot; qui est récupéré à ce moment précis.&lt;br /&gt;
Ce PayLoad est remplacé dans le flux par le PayLoad complet avec notre template dans le flux par notre bloc Template.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-24.png]]&lt;br /&gt;
&lt;br /&gt;
=== Création d'un bloc (noeud) &amp;quot;Debug&amp;quot;  ===&lt;br /&gt;
&lt;br /&gt;
Nous allons ajouter la notion d'expéditeur dans le flux que nous avons créé à travers nos blocs (noeuds).&lt;br /&gt;
Pour rappel, actuellement nous avons deux propriétés avec des données dans notre flux. &lt;br /&gt;
Si nous voulons observer ce que nous avons créé jusque là, nous pouvons faire appel à un bloc &amp;quot;Debug&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Création du bloc &amp;quot;Debug&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Comme pour les blocs précédents, nous allons glisser/déposer un bloc débug dans l'espace de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-25.png]]&lt;br /&gt;
&lt;br /&gt;
Celui-ci s'appelle msg/payload par défaut&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-26.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons double-cliquer sur ce bloc pour le configurer.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-27.png]]&lt;br /&gt;
&lt;br /&gt;
==== Output ====&lt;br /&gt;
&lt;br /&gt;
Dans ce champs, nous allons choisir la partie du flux que nous souhaitons afficher, ou nous allons sélectionner le flux entier.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-28.png]]&lt;br /&gt;
&lt;br /&gt;
Sélectionner le flux entier, nous affichera le flux complet incluant toutes ses propriétés.&lt;br /&gt;
&lt;br /&gt;
 [[fichier:Rasp-Node-Red-picam-mail-29.png]]&lt;br /&gt;
&lt;br /&gt;
==== To =====&lt;br /&gt;
&lt;br /&gt;
La propriété &amp;quot;To&amp;quot; nous permet de choisir ou nous souhaitons afficher les données que nous récupérons. &lt;br /&gt;
Soit nous les affichons uniquement dans l'onglet &amp;quot;Debug&amp;quot; à droite de l'espace de travail, soit nous l'affichons dans cet onglet mais aussi dans la console de NodeJS.&lt;br /&gt;
Dans notre cas, nous allons nous contenter d'afficher nos éléments dans l'onglet de &amp;quot;Debug&amp;quot; à droite de notre espace de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-30.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Le champs Name nous servira à identifier quel bloc de &amp;quot;Debug&amp;quot; affiche les données en console ou dans l'onglet &amp;quot;Debug&amp;quot;. &lt;br /&gt;
Il faut donc le nommer efficacement pour bien attacher et comprendre les données que nous récupérons, surtout si nous en plaçons plusieurs dans le flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-31.png]]&lt;br /&gt;
&lt;br /&gt;
==== Exploitation et compréhension des données récupérées ====&lt;br /&gt;
&lt;br /&gt;
Nous avons placé notre bloc &amp;quot;Debug&amp;quot; à la suite du flux en dernière position. &lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-32.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons donc déployer le programme en cliquant sur &amp;quot;Deploy&amp;quot; en haut à droite de la page. &lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-33.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons exécuter manuellement le programme en cliquant sur le bouton se trouvant en début de chaîne:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-34.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite afficher l'onglet &amp;quot;Debug&amp;quot; sur le coté droit de la page et analyser les données récupérées:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-35.png]]&lt;br /&gt;
&lt;br /&gt;
==== Analyse des données récupérées dans l'onglet &amp;quot;Debug&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
08/05/2017 à 12:54:31 node: FORMATAGE&lt;br /&gt;
MCHobby - Photo bureau : msg : Object&lt;br /&gt;
object&lt;br /&gt;
_msgid: &amp;quot;81efe35c.3208d&amp;quot;&lt;br /&gt;
topic: &amp;quot;MCHobby - Photo bureau&amp;quot;&lt;br /&gt;
payload: &amp;quot;&amp;lt;html&amp;gt;↵ &amp;lt;head&amp;gt;↵ &amp;lt;meta charset=&amp;quot;utf8&amp;quot;/&amp;gt;↵ ↵ &amp;lt;/head&amp;gt;↵ &amp;lt;body&amp;gt;↵ &amp;lt;h1&amp;gt;MCHobby - Photo bureau&amp;lt;/h1&amp;gt;↵ &amp;lt;p&amp;gt;Cette photo est un instantané pris dans les bureaux de MCHobby.&amp;lt;/p&amp;gt;↵ &lt;br /&gt;
&amp;lt;img src=&amp;quot;data:image/jpg;base64,&amp;amp;#x2F;9j&amp;amp;#x2F;4WP6x2.../&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comme vous pourrez le constater, chaque élément du noeud est détaillé.&lt;br /&gt;
Les données sont cependant tronquées, le noeud &amp;quot;Debug&amp;quot; ne nous fourni pas la totalité du &amp;quot;PayLoad&amp;quot; mais nous avons déjà un bon aperçu des données qu'il contient.&lt;br /&gt;
&lt;br /&gt;
* '''_msgid:''' est un Id unique de message&lt;br /&gt;
* '''topic:''' est le sujet du mail, nous l'avons déterminé dans le premier bloc&lt;br /&gt;
* '''payload:''' contient les données du message formatées par le template que nous avons créé et complété par l'image en base64.&lt;br /&gt;
&lt;br /&gt;
{{tmbox | text = Les noeuds &amp;quot;Debug&amp;quot; sont pratiques. Ils nous permettent d'afficher une partie ou la totalité du flux tel qu'il est à l'endroit ou ils sont placés. Cela peut permettre d'identifier et de résoudre plus facilement des problèmes dans des opérations plus complexes et dans notre cas, cela nous permet de mieux comprendre comment fonctionne le noeud et comment les données sont transmises d'un bloc à l'autre.}}&lt;br /&gt;
&lt;br /&gt;
=== Création d'un expéditeur ===&lt;br /&gt;
&lt;br /&gt;
Nous avons construit petit à petit un message avec un sujet, mais il manque encore un détail: l'expéditeur de l'email que nous allons envoyer: le fameux &amp;quot;msg.from&amp;quot; que nous avons évoqué au début de tuto !&lt;br /&gt;
&lt;br /&gt;
Si vous avez bien suivi les étapes précédentes du tuto, jusqu'au noeud &amp;quot;Debug&amp;quot; et à son résultat, vous comprendrez facilement la démarche ci après pour ajouter un expéditeur dans le flux.&lt;br /&gt;
&lt;br /&gt;
Nous allons ajouter un nouveau noeud &amp;quot;Template&amp;quot; dans la zone de travail et double cliquer dessus pour afficher sa page de configuration:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-39.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite sélectionner le type de propriété que nous souhaitons injecter dans le flux: '''&amp;quot;msg.from&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-40.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cette propriété étant une adresse email, nous allons choisir le type '''&amp;quot;plaintext&amp;quot;''' comme type de données.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-41.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous allons enfin donner un nom explicite à notre bloc afin d'identifier facilement sa fonctionnalité parmi les autres blocs.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-42.png]]&lt;br /&gt;
&lt;br /&gt;
=== Création du bloc d'envoi d'email ===&lt;br /&gt;
&lt;br /&gt;
==== To : destinataire ====&lt;br /&gt;
&lt;br /&gt;
Simplement, l'adresse email du destinataire du message.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-43.png]]&lt;br /&gt;
&lt;br /&gt;
==== Server, port, secure connection ====&lt;br /&gt;
&lt;br /&gt;
Dans ce champ, nous allons mettre un serveur SMTP (serveur email) pour permettre l'envoi de l'email. Dans la plupart des cas, le SMTP de votre FAI (fournisseur d'accès à internet) pourra servir d'intermédiaire.&lt;br /&gt;
Nous vous invitons à consulter les paramètres propres à votre fournisseur d'accès pour paramétrer ce bloc.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-44.png]]&lt;br /&gt;
&lt;br /&gt;
==== UserID et Password ====&lt;br /&gt;
&lt;br /&gt;
Ces champs resteront vides si votre FAI ne nécessite pas d'authentification pour envoyer des emails.&lt;br /&gt;
Si vous utilisez un autre fournisseur, tel que GMAIL par exemple, il faudra mettre votre adresse email et votre mot de passe pour vous identifier.&lt;br /&gt;
&lt;br /&gt;
{{ambox-stop|text=&amp;quot;Attention: votre compte gmail devra être configuré au préalable afin d'autoriser un &amp;quot;client email&amp;quot; à utiliser votre compte pour envoyer/recevoir des emails par ce biais. Nous vous invitons à consulter la documentation de Gmail pour en savoir plus.&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-45.png]]&lt;br /&gt;
&lt;br /&gt;
{{Rasp-Node-Red-TRAILER}}&lt;/div&gt;</summary>
		<author><name>AntoineWrt</name></author>
	</entry>
	<entry>
		<id>https://wiki.mchobby.be/index.php?title=Rasp-Node-Red-picam-mail&amp;diff=22820</id>
		<title>Rasp-Node-Red-picam-mail</title>
		<link rel="alternate" type="text/html" href="https://wiki.mchobby.be/index.php?title=Rasp-Node-Red-picam-mail&amp;diff=22820"/>
		<updated>2017-05-08T13:40:57Z</updated>

		<summary type="html">&lt;p&gt;AntoineWrt : /* UserID et Password */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Rasp-Node-Red-NAV}}&lt;br /&gt;
&lt;br /&gt;
{{traduction}}&lt;br /&gt;
&lt;br /&gt;
== PiCamRED - Envoi périodique de photos par email avec PiCam et NodeRED ==&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-01.png|900px]]&lt;br /&gt;
&lt;br /&gt;
=== Description du projet ===&lt;br /&gt;
&lt;br /&gt;
Dans ce tutoriel, nous allons réaliser des photos à l'aide de la caméra du RaspBerry Pi 2/3 et envoyer ces clichés par email de manière périodique grâce à NodeRED.&lt;br /&gt;
Nous allons donc utiliser plusieurs blocs et décrire de manière détaillée le déroulement de chaque étape de la réalisation de ce projet.&lt;br /&gt;
&lt;br /&gt;
Dans NodeRED, il est important de bien identifier la finalité de notre projet afin de connaître au préalable tous les éléments qu'il faudra créer et fournir à l'action finale (celle qui enverra un email).&lt;br /&gt;
&lt;br /&gt;
=== Quels sont les besoins du noeud email ===&lt;br /&gt;
&lt;br /&gt;
==== Composants nécessaires pour constituer un email ====&lt;br /&gt;
&lt;br /&gt;
Un email est composé des éléments suivants: &lt;br /&gt;
&lt;br /&gt;
* Un expéditeur&lt;br /&gt;
* Un destinataire&lt;br /&gt;
* Un sujet&lt;br /&gt;
* Le corps du message&lt;br /&gt;
&lt;br /&gt;
Tous ces éléments vont donc devoir être préparés afin de pouvoir construire le message à envoyer par le noeud final.&lt;br /&gt;
&lt;br /&gt;
Le noeud final aura aussi besoin d'un serveur SMTP (serveur d'envoi d'emails) et éventuellement de paramètres d'identification pour ce serveur d'envoi d'emails.&lt;br /&gt;
&lt;br /&gt;
==== Détail des besoins du noeud email ====&lt;br /&gt;
&lt;br /&gt;
La liste des éléments nécessaires s'affiche lorsque le bloc est dans la zone de travail (Schema).&lt;br /&gt;
Commençons donc par sélectionner le bloc email, et de le glisser dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
Commençons par cliquer sur le bloc email et nous maintenons le clic pour le glisser à droite dans l'espace de travail.&lt;br /&gt;
&lt;br /&gt;
(on choisit celui qui a son point de liaison à gauche, car nous voulons un bloc de sortie)&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-36.png]]&lt;br /&gt;
&lt;br /&gt;
Glissons le dans l'espace de travail, et cliquons un clic simple pour le sélectionner.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-37.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, dans la colonne à droite de cet espace de travail, nous cliquons sur info et nous pourrons découvrir les éléments nécessaires à la constitution d'un bloc email.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-38.png]]&lt;br /&gt;
&lt;br /&gt;
===== Nous utiliserons les champs suivants =====&lt;br /&gt;
&lt;br /&gt;
* '''msg.payload''' --&amp;gt; Ce champ contient le corps de l'email&lt;br /&gt;
* '''msg.topic''' --&amp;gt; Ce champ contient le sujet de l'email&lt;br /&gt;
* '''msg.from''' --&amp;gt; Ce champ contient l'email de l'expéditeur &lt;br /&gt;
* '''msg.to''' --&amp;gt; Ce champ contient l'email du destinataire&lt;br /&gt;
&lt;br /&gt;
Les autres champs ne seront pas utilisés dans notre cas, mais vous pourrez constater que le bloc email est complet de part ses fonctionnalités et possibilités.&lt;br /&gt;
&lt;br /&gt;
Les données de serveur et d'identification seront abordées en fin de tuto lors de la configuration finale du bloc.&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant passer à la réalisation du flux en commençant par le début de celui-ci.&lt;br /&gt;
&lt;br /&gt;
=== Création d'une action périodique ===&lt;br /&gt;
&lt;br /&gt;
Dans la colonne de gauche de NodeRED, se trouvent une liste de blocs à utiliser pour réaliser vos projets. Ils sont classés par &amp;quot;types&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Ainsi nous retrouvons les &amp;quot;types&amp;quot; suivants:&lt;br /&gt;
&lt;br /&gt;
* '''Input''' qui contient tous les blocs d'entrées&lt;br /&gt;
* '''Ouput''' qui contient tous les blocs de sortie&lt;br /&gt;
* '''Function''' qui contient des blocs de fonctions javascript etc...&lt;br /&gt;
* '''Social''' qui sont des blocs d'entrée ou sorties depuis ou vers les réseaux sociaux&lt;br /&gt;
* '''Storage''' qui sont des fonctions de lecture ou d'écriture de fichiers&lt;br /&gt;
* '''Analysis''' -&amp;gt;&amp;gt; Sentiment interprète du texte et détermine un score sur base d'un dictionnaire anglais, renvoie le texte avec ce score de -5 à +5, déterminant ainsi l'émotion susceptible d'être procuré par ce texte&lt;br /&gt;
* '''Advanced''' possède des outils permettant de détecter des changements dans des fichiers ou dossiers, de lire des flux RSS ou encore EXEC qui permet d'exécuter directement des commandes sous linux !&lt;br /&gt;
* '''Raspberry Pi''' contient des outils pour piloter/lire le GPIO du raspberry Pi&lt;br /&gt;
* '''Network''' qui contient un outil réseau de Ping&lt;br /&gt;
 &lt;br /&gt;
Nous allons créer une action périodique, c'est à dire paramétrer un bloc '''&amp;quot;INJECT&amp;quot;''' de manière à déclencher régulièrement une chaine d'actions que nous allons accrocher à la suite les unes après les autres.&lt;br /&gt;
Nous allons donc cliquer sur le bloc '''&amp;quot;Inject&amp;quot;''' dans la liste &amp;quot;Input&amp;quot; et maintenir ce clic pour le déplacer vers la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-02.png]]&lt;br /&gt;
&lt;br /&gt;
Nous obtiendrons donc une nouvelle instance &amp;quot;inject&amp;quot; qui portera le nom '''&amp;quot;Timestamp&amp;quot;''' (ce nom est attribué par défaut par NodeRED) comme dans la capture ci-dessous&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-03.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant double-cliquer sur celle-ci fin de l'éditer pour voir apparaitre le menu ci-dessous&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-04.png]]&lt;br /&gt;
&lt;br /&gt;
Il va falloir configurer ce bloc, mais avant tout voici une explication de celui-ci:&lt;br /&gt;
&lt;br /&gt;
==== Payload ====&lt;br /&gt;
&lt;br /&gt;
Le champs PayLoad est en fait le champ de données qui sera suivi d'un noeud à l'autre jusque à la fin de la chaine.&lt;br /&gt;
Dans ce module '''&amp;quot;inject&amp;quot;''', nous allons donc déterminer quel type de données contiendra le '''&amp;quot;PayLoad&amp;quot;''' jusqu'à la fin de la chaine que l'on va réaliser.&lt;br /&gt;
&lt;br /&gt;
Dans notre cas, nous souhaitons construire un email, donc du contenu textuel, nous allons donc choisir '''&amp;quot;String&amp;quot;''' ce qui correspond à une chaine de caractères (du texte).&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-05.png]]&lt;br /&gt;
&lt;br /&gt;
==== Topic ====&lt;br /&gt;
&lt;br /&gt;
Le champs &amp;quot;Topic&amp;quot; est un champs de texte dans lequel nous allons mettre un sujet succinct décrivant notre chaine. &lt;br /&gt;
Dans notre cas, ce sujet fera office de sujet au mail que nous expédierons. &lt;br /&gt;
Nous allons donc être précis en un minimum de mots pour que le destinataire de l'email puisse facilement deviner le contenu de celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-06.png]]&lt;br /&gt;
&lt;br /&gt;
==== Repeat ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite choisir l'intervalle de déclenchement de notre action, sachant que nous avons le choix entre: &lt;br /&gt;
&lt;br /&gt;
* '''none'''  : pas de déclenchement périodique programmé&lt;br /&gt;
* '''interval''' : nous fixons un temps de déclenchement à partir du lancement du programme, l'action se réalisera à chaque fois que ce temps sera écoulé de manière répétée jusqu'à l'interruption manuelle du programme&lt;br /&gt;
* '''interval between times''' : nous fixons ici le déclenchement par interval, mais nous fixons aussi une fourchette d'heures et des jours pendant lesquels nous exécutons cet interval&lt;br /&gt;
* '''at a specific time''' : nous fixons une heure d'exécution, et un ou plusieurs jours d'exécution. Dans ce cas l'action n'est pas répétée en continu mais éxécutée une seule fois par jour à l'heure programmée&lt;br /&gt;
&lt;br /&gt;
Dans notre exemple, nous allons fixer un intervalle de 15 secondes pour commencer. Nous pourrons ensuite augmenter cette valeur pour éviter de recevoir trop d'emails avec des photos :D&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-07.png]]&lt;br /&gt;
&lt;br /&gt;
La case '''&amp;quot;inject once at start&amp;quot;''' permet de ne pas attendre le premier cycle avant d'exécuter une première fois l'action. Elle se lancera dès le lancement du programme, puis périodiquement selon les cycles déterminés par l'intervalle.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-08.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Le champs Name va déterminer le nom que portera le bloc dans l'espace de travail et dans les logs (si nous créons des blocs de log ensuite pour contrôler des étapes).&lt;br /&gt;
Il est important de bien établir ce nom de manière explicite, car le nom des blocs permettra de comprendre et retrouver facilement la logique du schéma construit, même si l'on a pas consulté celui-ci pendant une longue période.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-09.png]]&lt;br /&gt;
&lt;br /&gt;
=== Capture d'une image depuis la PiCam ===&lt;br /&gt;
&lt;br /&gt;
Nous allons aller à l'essentiel en ce qui concerne la capture photo en utilisant une commande simple pour prendre un cliché et renvoyer celui-ci dans le flux NodeRED grâce à un bloc permettant d'exécuter des commandes bash.&lt;br /&gt;
&lt;br /&gt;
{{ambox | text = Vous trouverez un TUTO détaillé sur la PiCam vous permettant de prendre la main, ou de la paramétrer si vous n'avez pas encore utilisé celle-ci auparavant: ....___TUTO___...}} &lt;br /&gt;
&lt;br /&gt;
Nous allons tout d'abord cliquer sur le bloc &amp;quot;Exec&amp;quot; dans la section &amp;quot;Advanced&amp;quot; de la colonne de gauche et glisser l'élément dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-10.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, cliquer sur le bloc nouvellement créé et configurer celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-11.png]]&lt;br /&gt;
&lt;br /&gt;
Le menu suivant s'affichera, et nous pourrons configurer le bloc &amp;quot;Exec&amp;quot; nouvellement créé.&lt;br /&gt;
&lt;br /&gt;
==== Command ====&lt;br /&gt;
&lt;br /&gt;
Nous allons y ajouter la commande à exécuter pour prendre une photo avec la caméra du Raspberry Pi et la stocker dans un fichier jpg dans le dossier /tmp/ de linux.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
raspistill -o /tmp/cam.jpg -w 640 -h 480&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous prenons soin de limiter la hauteur et la largeur de l'image afin de réduire son poids pour l'envoi par email.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-12.png]]&lt;br /&gt;
&lt;br /&gt;
==== +Append ====&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons décocher la case &amp;quot;msg.payload&amp;quot; si elle est cochée par défaut.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-13.png]]&lt;br /&gt;
&lt;br /&gt;
==== Extra input parameters et Timeout ====&lt;br /&gt;
&lt;br /&gt;
Nous n'aurons pas besoin de compléter ces champs pour notre projet.&lt;br /&gt;
&lt;br /&gt;
Si vous cochez le champ &amp;quot;Use spawn() instead of exec()?&amp;quot;, votre commande sera réalisée sous forme d'un processus résident et continuera de s'exécuter jusqu'à ce qu'elle se termine par elle-même (sauf si elle ne se termine jamais).&lt;br /&gt;
Cette solution implique que le programme n'attendra pas que cette commande soit réalisée pour passer aux étapes suivantes. &lt;br /&gt;
Si la suite de l'exécution de votre flux est susceptible d'utiliser le résultat de cette commande, nous vous déconseillons d'utiliser cette option sous peine de provoquer des erreurs à la suite du traitement du flux.&lt;br /&gt;
&lt;br /&gt;
Le champ &amp;quot;Timeout&amp;quot; permet de définir un temps d'attente maximum avant de mettre un terme à l'exécution de la commande. &lt;br /&gt;
Cela permet de débloquer la situation si la commande exécutée prends un temps anormalement long à s'exécuter.&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite compléter le champs nom, celui-ci sera utilisé pour nommer le bloc dans le &amp;quot;schéma&amp;quot;, mais aussi de nommer les logs comme pour le bloc &amp;quot;Exec&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-14.png]]&lt;br /&gt;
&lt;br /&gt;
=== Encodage de l'image en base64 ===&lt;br /&gt;
&lt;br /&gt;
Nous allons convertir la photo prise juste avant en utilisant une commande de conversion en base64.&lt;br /&gt;
Cela facilitera son injection dans un template HTML que nous allons créer ensuite pour construire un email.&lt;br /&gt;
&lt;br /&gt;
Nous allons tout d'abord cliquer sur le bloc &amp;quot;Exec&amp;quot; dans la section &amp;quot;Advanced&amp;quot; de la colonne de gauche et glisser l'élément dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-10.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, cliquer sur le bloc nouvellement créé et configurer celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-11.png]]&lt;br /&gt;
&lt;br /&gt;
Le menu suivant s'affichera, et nous pourrons configurer le bloc &amp;quot;Exec&amp;quot; nouvellement créé.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-15.png]]&lt;br /&gt;
&lt;br /&gt;
==== Command ====&lt;br /&gt;
&lt;br /&gt;
Nous allons y ajouter la commande à exécuter pour encoder en base 64 la photo prise précédemment avec la caméra du Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
base64 -i &amp;quot;/tmp/cam.jpg&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-16.png]]&lt;br /&gt;
&lt;br /&gt;
==== +Append ====&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons cocher la case &amp;quot;msg.payload&amp;quot; si elle n'est pas cochée par défaut pour que le résultat soit directement renvoyé par cette commande dans le &amp;quot;PayLoad&amp;quot; du flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-17.png]]&lt;br /&gt;
&lt;br /&gt;
==== Extra input parameters et Timeout ====&lt;br /&gt;
&lt;br /&gt;
Nous n'aurons pas besoin de compléter ces champs pour notre projet.&lt;br /&gt;
&lt;br /&gt;
Si vous cochez le champ &amp;quot;Use spawn() instead of exec()?&amp;quot;, votre commande sera réalisée sous forme d'un processus résident et continuera de s'exécuter jusqu'à ce qu'elle se termine par elle-même (sauf si elle ne se termine jamais).&lt;br /&gt;
Cette solution implique que le programme n'attendra pas que cette commande soit réalisée pour passer aux étapes suivantes. &lt;br /&gt;
Si la suite de l'exécution de votre flux est susceptible d'utiliser le résultat de cette commande, nous vous déconseillons d'utiliser cette option sous peine de provoquer des erreurs à la suite du traitement du flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-18.png]]&lt;br /&gt;
&lt;br /&gt;
Le champ &amp;quot;Timeout&amp;quot; permet de définir un temps d'attente maximum avant de mettre un terme à l'exécution de la commande. &lt;br /&gt;
Cela permet de débloquer la situation si la commande exécutée prends un temps anormalement long à s'exécuter.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-19.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite compléter le champs nom, celui-ci sera utilisé pour nommer le bloc dans le &amp;quot;schéma&amp;quot;, mais aussi de nommer les logs comme pour le bloc &amp;quot;Exec&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-20.png]]&lt;br /&gt;
&lt;br /&gt;
=== Création d'un email au format HTML ===&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant créer un template d'email au format HTML afin de mettre en forme le message que nous enverrons ensuite.&lt;br /&gt;
Nous allons pour cela utiliser un bloc &amp;quot;Template&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-21.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons attribuer un nom au bloc afin de l'identifier plus facilement dans le flux.&lt;br /&gt;
Nous allons donc le nommer &amp;quot;Contenu du mail&amp;quot; puisque nous créons le contenu du mail que nous enverrons ensuite.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-22.png]]&lt;br /&gt;
&lt;br /&gt;
==== Set property ====&lt;br /&gt;
&lt;br /&gt;
La propriété que nous souhaitons créer dans le flux est le &amp;quot;PayLoad&amp;quot;.&lt;br /&gt;
Ce PayLoad existe déjà, il contient pour le moment l'image au format &amp;quot;Base64&amp;quot; précédemment encodé.&lt;br /&gt;
Cela n'est pas un problème, après notre noeud (notre bloc), le PayLoad sera intégralement remplacé par le template que nous sommes en train de créer.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-23.png]]&lt;br /&gt;
&lt;br /&gt;
==== Template ====&lt;br /&gt;
&lt;br /&gt;
Dans ce template, nous allons créer une structure HTML de base minimum afin que la structure soit interprétée par la majorité des clients/webmail.&lt;br /&gt;
Vous pouvez la personnaliser à votre guise si vous avez les connaissances en HTML.&lt;br /&gt;
&lt;br /&gt;
Voici la structure de base pour notre projet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
    &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;meta charset=&amp;quot;utf8&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/head&amp;gt;&lt;br /&gt;
    &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Projet Photo par email&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;img src=&amp;quot;data:image/jpg;base64,{{payload}}&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pourrez remarquer que nous intégrons l'image en appelant le PayLoad à 'intérieur du code HTML dans la balise &amp;lt;img&amp;gt;.&lt;br /&gt;
C'est le PayLoad créé précédemment par le bloc &amp;quot;Exec&amp;quot; qui est récupéré à ce moment précis.&lt;br /&gt;
Ce PayLoad est remplacé dans le flux par le PayLoad complet avec notre template dans le flux par notre bloc Template.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-24.png]]&lt;br /&gt;
&lt;br /&gt;
=== Création d'un bloc (noeud) &amp;quot;Debug&amp;quot;  ===&lt;br /&gt;
&lt;br /&gt;
Nous allons ajouter la notion d'expéditeur dans le flux que nous avons créé à travers nos blocs (noeuds).&lt;br /&gt;
Pour rappel, actuellement nous avons deux propriétés avec des données dans notre flux. &lt;br /&gt;
Si nous voulons observer ce que nous avons créé jusque là, nous pouvons faire appel à un bloc &amp;quot;Debug&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Création du bloc &amp;quot;Debug&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Comme pour les blocs précédents, nous allons glisser/déposer un bloc débug dans l'espace de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-25.png]]&lt;br /&gt;
&lt;br /&gt;
Celui-ci s'appelle msg/payload par défaut&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-26.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons double-cliquer sur ce bloc pour le configurer.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-27.png]]&lt;br /&gt;
&lt;br /&gt;
==== Output ====&lt;br /&gt;
&lt;br /&gt;
Dans ce champs, nous allons choisir la partie du flux que nous souhaitons afficher, ou nous allons sélectionner le flux entier.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-28.png]]&lt;br /&gt;
&lt;br /&gt;
Sélectionner le flux entier, nous affichera le flux complet incluant toutes ses propriétés.&lt;br /&gt;
&lt;br /&gt;
 [[fichier:Rasp-Node-Red-picam-mail-29.png]]&lt;br /&gt;
&lt;br /&gt;
==== To =====&lt;br /&gt;
&lt;br /&gt;
La propriété &amp;quot;To&amp;quot; nous permet de choisir ou nous souhaitons afficher les données que nous récupérons. &lt;br /&gt;
Soit nous les affichons uniquement dans l'onglet &amp;quot;Debug&amp;quot; à droite de l'espace de travail, soit nous l'affichons dans cet onglet mais aussi dans la console de NodeJS.&lt;br /&gt;
Dans notre cas, nous allons nous contenter d'afficher nos éléments dans l'onglet de &amp;quot;Debug&amp;quot; à droite de notre espace de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-30.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Le champs Name nous servira à identifier quel bloc de &amp;quot;Debug&amp;quot; affiche les données en console ou dans l'onglet &amp;quot;Debug&amp;quot;. &lt;br /&gt;
Il faut donc le nommer efficacement pour bien attacher et comprendre les données que nous récupérons, surtout si nous en plaçons plusieurs dans le flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-31.png]]&lt;br /&gt;
&lt;br /&gt;
==== Exploitation et compréhension des données récupérées ====&lt;br /&gt;
&lt;br /&gt;
Nous avons placé notre bloc &amp;quot;Debug&amp;quot; à la suite du flux en dernière position. &lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-32.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons donc déployer le programme en cliquant sur &amp;quot;Deploy&amp;quot; en haut à droite de la page. &lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-33.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons exécuter manuellement le programme en cliquant sur le bouton se trouvant en début de chaîne:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-34.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite afficher l'onglet &amp;quot;Debug&amp;quot; sur le coté droit de la page et analyser les données récupérées:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-35.png]]&lt;br /&gt;
&lt;br /&gt;
==== Analyse des données récupérées dans l'onglet &amp;quot;Debug&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
08/05/2017 à 12:54:31 node: FORMATAGE&lt;br /&gt;
MCHobby - Photo bureau : msg : Object&lt;br /&gt;
object&lt;br /&gt;
_msgid: &amp;quot;81efe35c.3208d&amp;quot;&lt;br /&gt;
topic: &amp;quot;MCHobby - Photo bureau&amp;quot;&lt;br /&gt;
payload: &amp;quot;&amp;lt;html&amp;gt;↵ &amp;lt;head&amp;gt;↵ &amp;lt;meta charset=&amp;quot;utf8&amp;quot;/&amp;gt;↵ ↵ &amp;lt;/head&amp;gt;↵ &amp;lt;body&amp;gt;↵ &amp;lt;h1&amp;gt;MCHobby - Photo bureau&amp;lt;/h1&amp;gt;↵ &amp;lt;p&amp;gt;Cette photo est un instantané pris dans les bureaux de MCHobby.&amp;lt;/p&amp;gt;↵ &lt;br /&gt;
&amp;lt;img src=&amp;quot;data:image/jpg;base64,&amp;amp;#x2F;9j&amp;amp;#x2F;4WP6x2.../&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comme vous pourrez le constater, chaque élément du noeud est détaillé.&lt;br /&gt;
Les données sont cependant tronquées, le noeud &amp;quot;Debug&amp;quot; ne nous fourni pas la totalité du &amp;quot;PayLoad&amp;quot; mais nous avons déjà un bon aperçu des données qu'il contient.&lt;br /&gt;
&lt;br /&gt;
* '''_msgid:''' est un Id unique de message&lt;br /&gt;
* '''topic:''' est le sujet du mail, nous l'avons déterminé dans le premier bloc&lt;br /&gt;
* '''payload:''' contient les données du message formatées par le template que nous avons créé et complété par l'image en base64.&lt;br /&gt;
&lt;br /&gt;
{{tmbox | text = Les noeuds &amp;quot;Debug&amp;quot; sont pratiques. Ils nous permettent d'afficher une partie ou la totalité du flux tel qu'il est à l'endroit ou ils sont placés. Cela peut permettre d'identifier et de résoudre plus facilement des problèmes dans des opérations plus complexes et dans notre cas, cela nous permet de mieux comprendre comment fonctionne le noeud et comment les données sont transmises d'un bloc à l'autre.}}&lt;br /&gt;
&lt;br /&gt;
=== Création d'un expéditeur ===&lt;br /&gt;
&lt;br /&gt;
Nous avons construit petit à petit un message avec un sujet, mais il manque encore un détail: l'expéditeur de l'email que nous allons envoyer: le fameux &amp;quot;msg.from&amp;quot; que nous avons évoqué au début de tuto !&lt;br /&gt;
&lt;br /&gt;
Si vous avez bien suivi les étapes précédentes du tuto, jusqu'au noeud &amp;quot;Debug&amp;quot; et à son résultat, vous comprendrez facilement la démarche ci après pour ajouter un expéditeur dans le flux.&lt;br /&gt;
&lt;br /&gt;
Nous allons ajouter un nouveau noeud &amp;quot;Template&amp;quot; dans la zone de travail et double cliquer dessus pour afficher sa page de configuration:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-39.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite sélectionner le type de propriété que nous souhaitons injecter dans le flux: '''&amp;quot;msg.from&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-40.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cette propriété étant une adresse email, nous allons choisir le type '''&amp;quot;plaintext&amp;quot;''' comme type de données.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-41.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous allons enfin donner un nom explicite à notre bloc afin d'identifier facilement sa fonctionnalité parmi les autres blocs.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-42.png]]&lt;br /&gt;
&lt;br /&gt;
=== Création du bloc d'envoi d'email ===&lt;br /&gt;
&lt;br /&gt;
==== To : destinataire ====&lt;br /&gt;
&lt;br /&gt;
Simplement, l'adresse email du destinataire du message.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-43.png]]&lt;br /&gt;
&lt;br /&gt;
==== Server, port, secure connection ====&lt;br /&gt;
&lt;br /&gt;
Dans ce champ, nous allons mettre un serveur SMTP (serveur email) pour permettre l'envoi de l'email. Dans la plupart des cas, le SMTP de votre FAI (fournisseur d'accès à internet) pourra servir d'intermédiaire.&lt;br /&gt;
Nous vous invitons à consulter les paramètres propres à votre fournisseur d'accès pour paramétrer ce bloc.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-43.png]]&lt;br /&gt;
&lt;br /&gt;
==== UserID et Password ====&lt;br /&gt;
&lt;br /&gt;
Ces champs resteront vides si votre FAI ne nécessite pas d'authentification pour envoyer des emails.&lt;br /&gt;
Si vous utilisez un autre fournisseur, tel que GMAIL par exemple, il faudra mettre votre adresse email et votre mot de passe pour vous identifier.&lt;br /&gt;
&lt;br /&gt;
{{ambox-stop|text=&amp;quot;Attention: votre compte gmail devra être configuré au préalable afin d'autoriser un &amp;quot;client email&amp;quot; à utiliser votre compte pour envoyer/recevoir des emails par ce biais. Nous vous invitons à consulter la documentation de Gmail pour en savoir plus.&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Rasp-Node-Red-TRAILER}}&lt;/div&gt;</summary>
		<author><name>AntoineWrt</name></author>
	</entry>
	<entry>
		<id>https://wiki.mchobby.be/index.php?title=Rasp-Node-Red-picam-mail&amp;diff=22819</id>
		<title>Rasp-Node-Red-picam-mail</title>
		<link rel="alternate" type="text/html" href="https://wiki.mchobby.be/index.php?title=Rasp-Node-Red-picam-mail&amp;diff=22819"/>
		<updated>2017-05-08T13:40:11Z</updated>

		<summary type="html">&lt;p&gt;AntoineWrt : /* UserID et Password */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Rasp-Node-Red-NAV}}&lt;br /&gt;
&lt;br /&gt;
{{traduction}}&lt;br /&gt;
&lt;br /&gt;
== PiCamRED - Envoi périodique de photos par email avec PiCam et NodeRED ==&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-01.png|900px]]&lt;br /&gt;
&lt;br /&gt;
=== Description du projet ===&lt;br /&gt;
&lt;br /&gt;
Dans ce tutoriel, nous allons réaliser des photos à l'aide de la caméra du RaspBerry Pi 2/3 et envoyer ces clichés par email de manière périodique grâce à NodeRED.&lt;br /&gt;
Nous allons donc utiliser plusieurs blocs et décrire de manière détaillée le déroulement de chaque étape de la réalisation de ce projet.&lt;br /&gt;
&lt;br /&gt;
Dans NodeRED, il est important de bien identifier la finalité de notre projet afin de connaître au préalable tous les éléments qu'il faudra créer et fournir à l'action finale (celle qui enverra un email).&lt;br /&gt;
&lt;br /&gt;
=== Quels sont les besoins du noeud email ===&lt;br /&gt;
&lt;br /&gt;
==== Composants nécessaires pour constituer un email ====&lt;br /&gt;
&lt;br /&gt;
Un email est composé des éléments suivants: &lt;br /&gt;
&lt;br /&gt;
* Un expéditeur&lt;br /&gt;
* Un destinataire&lt;br /&gt;
* Un sujet&lt;br /&gt;
* Le corps du message&lt;br /&gt;
&lt;br /&gt;
Tous ces éléments vont donc devoir être préparés afin de pouvoir construire le message à envoyer par le noeud final.&lt;br /&gt;
&lt;br /&gt;
Le noeud final aura aussi besoin d'un serveur SMTP (serveur d'envoi d'emails) et éventuellement de paramètres d'identification pour ce serveur d'envoi d'emails.&lt;br /&gt;
&lt;br /&gt;
==== Détail des besoins du noeud email ====&lt;br /&gt;
&lt;br /&gt;
La liste des éléments nécessaires s'affiche lorsque le bloc est dans la zone de travail (Schema).&lt;br /&gt;
Commençons donc par sélectionner le bloc email, et de le glisser dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
Commençons par cliquer sur le bloc email et nous maintenons le clic pour le glisser à droite dans l'espace de travail.&lt;br /&gt;
&lt;br /&gt;
(on choisit celui qui a son point de liaison à gauche, car nous voulons un bloc de sortie)&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-36.png]]&lt;br /&gt;
&lt;br /&gt;
Glissons le dans l'espace de travail, et cliquons un clic simple pour le sélectionner.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-37.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, dans la colonne à droite de cet espace de travail, nous cliquons sur info et nous pourrons découvrir les éléments nécessaires à la constitution d'un bloc email.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-38.png]]&lt;br /&gt;
&lt;br /&gt;
===== Nous utiliserons les champs suivants =====&lt;br /&gt;
&lt;br /&gt;
* '''msg.payload''' --&amp;gt; Ce champ contient le corps de l'email&lt;br /&gt;
* '''msg.topic''' --&amp;gt; Ce champ contient le sujet de l'email&lt;br /&gt;
* '''msg.from''' --&amp;gt; Ce champ contient l'email de l'expéditeur &lt;br /&gt;
* '''msg.to''' --&amp;gt; Ce champ contient l'email du destinataire&lt;br /&gt;
&lt;br /&gt;
Les autres champs ne seront pas utilisés dans notre cas, mais vous pourrez constater que le bloc email est complet de part ses fonctionnalités et possibilités.&lt;br /&gt;
&lt;br /&gt;
Les données de serveur et d'identification seront abordées en fin de tuto lors de la configuration finale du bloc.&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant passer à la réalisation du flux en commençant par le début de celui-ci.&lt;br /&gt;
&lt;br /&gt;
=== Création d'une action périodique ===&lt;br /&gt;
&lt;br /&gt;
Dans la colonne de gauche de NodeRED, se trouvent une liste de blocs à utiliser pour réaliser vos projets. Ils sont classés par &amp;quot;types&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Ainsi nous retrouvons les &amp;quot;types&amp;quot; suivants:&lt;br /&gt;
&lt;br /&gt;
* '''Input''' qui contient tous les blocs d'entrées&lt;br /&gt;
* '''Ouput''' qui contient tous les blocs de sortie&lt;br /&gt;
* '''Function''' qui contient des blocs de fonctions javascript etc...&lt;br /&gt;
* '''Social''' qui sont des blocs d'entrée ou sorties depuis ou vers les réseaux sociaux&lt;br /&gt;
* '''Storage''' qui sont des fonctions de lecture ou d'écriture de fichiers&lt;br /&gt;
* '''Analysis''' -&amp;gt;&amp;gt; Sentiment interprète du texte et détermine un score sur base d'un dictionnaire anglais, renvoie le texte avec ce score de -5 à +5, déterminant ainsi l'émotion susceptible d'être procuré par ce texte&lt;br /&gt;
* '''Advanced''' possède des outils permettant de détecter des changements dans des fichiers ou dossiers, de lire des flux RSS ou encore EXEC qui permet d'exécuter directement des commandes sous linux !&lt;br /&gt;
* '''Raspberry Pi''' contient des outils pour piloter/lire le GPIO du raspberry Pi&lt;br /&gt;
* '''Network''' qui contient un outil réseau de Ping&lt;br /&gt;
 &lt;br /&gt;
Nous allons créer une action périodique, c'est à dire paramétrer un bloc '''&amp;quot;INJECT&amp;quot;''' de manière à déclencher régulièrement une chaine d'actions que nous allons accrocher à la suite les unes après les autres.&lt;br /&gt;
Nous allons donc cliquer sur le bloc '''&amp;quot;Inject&amp;quot;''' dans la liste &amp;quot;Input&amp;quot; et maintenir ce clic pour le déplacer vers la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-02.png]]&lt;br /&gt;
&lt;br /&gt;
Nous obtiendrons donc une nouvelle instance &amp;quot;inject&amp;quot; qui portera le nom '''&amp;quot;Timestamp&amp;quot;''' (ce nom est attribué par défaut par NodeRED) comme dans la capture ci-dessous&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-03.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant double-cliquer sur celle-ci fin de l'éditer pour voir apparaitre le menu ci-dessous&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-04.png]]&lt;br /&gt;
&lt;br /&gt;
Il va falloir configurer ce bloc, mais avant tout voici une explication de celui-ci:&lt;br /&gt;
&lt;br /&gt;
==== Payload ====&lt;br /&gt;
&lt;br /&gt;
Le champs PayLoad est en fait le champ de données qui sera suivi d'un noeud à l'autre jusque à la fin de la chaine.&lt;br /&gt;
Dans ce module '''&amp;quot;inject&amp;quot;''', nous allons donc déterminer quel type de données contiendra le '''&amp;quot;PayLoad&amp;quot;''' jusqu'à la fin de la chaine que l'on va réaliser.&lt;br /&gt;
&lt;br /&gt;
Dans notre cas, nous souhaitons construire un email, donc du contenu textuel, nous allons donc choisir '''&amp;quot;String&amp;quot;''' ce qui correspond à une chaine de caractères (du texte).&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-05.png]]&lt;br /&gt;
&lt;br /&gt;
==== Topic ====&lt;br /&gt;
&lt;br /&gt;
Le champs &amp;quot;Topic&amp;quot; est un champs de texte dans lequel nous allons mettre un sujet succinct décrivant notre chaine. &lt;br /&gt;
Dans notre cas, ce sujet fera office de sujet au mail que nous expédierons. &lt;br /&gt;
Nous allons donc être précis en un minimum de mots pour que le destinataire de l'email puisse facilement deviner le contenu de celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-06.png]]&lt;br /&gt;
&lt;br /&gt;
==== Repeat ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite choisir l'intervalle de déclenchement de notre action, sachant que nous avons le choix entre: &lt;br /&gt;
&lt;br /&gt;
* '''none'''  : pas de déclenchement périodique programmé&lt;br /&gt;
* '''interval''' : nous fixons un temps de déclenchement à partir du lancement du programme, l'action se réalisera à chaque fois que ce temps sera écoulé de manière répétée jusqu'à l'interruption manuelle du programme&lt;br /&gt;
* '''interval between times''' : nous fixons ici le déclenchement par interval, mais nous fixons aussi une fourchette d'heures et des jours pendant lesquels nous exécutons cet interval&lt;br /&gt;
* '''at a specific time''' : nous fixons une heure d'exécution, et un ou plusieurs jours d'exécution. Dans ce cas l'action n'est pas répétée en continu mais éxécutée une seule fois par jour à l'heure programmée&lt;br /&gt;
&lt;br /&gt;
Dans notre exemple, nous allons fixer un intervalle de 15 secondes pour commencer. Nous pourrons ensuite augmenter cette valeur pour éviter de recevoir trop d'emails avec des photos :D&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-07.png]]&lt;br /&gt;
&lt;br /&gt;
La case '''&amp;quot;inject once at start&amp;quot;''' permet de ne pas attendre le premier cycle avant d'exécuter une première fois l'action. Elle se lancera dès le lancement du programme, puis périodiquement selon les cycles déterminés par l'intervalle.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-08.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Le champs Name va déterminer le nom que portera le bloc dans l'espace de travail et dans les logs (si nous créons des blocs de log ensuite pour contrôler des étapes).&lt;br /&gt;
Il est important de bien établir ce nom de manière explicite, car le nom des blocs permettra de comprendre et retrouver facilement la logique du schéma construit, même si l'on a pas consulté celui-ci pendant une longue période.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-09.png]]&lt;br /&gt;
&lt;br /&gt;
=== Capture d'une image depuis la PiCam ===&lt;br /&gt;
&lt;br /&gt;
Nous allons aller à l'essentiel en ce qui concerne la capture photo en utilisant une commande simple pour prendre un cliché et renvoyer celui-ci dans le flux NodeRED grâce à un bloc permettant d'exécuter des commandes bash.&lt;br /&gt;
&lt;br /&gt;
{{ambox | text = Vous trouverez un TUTO détaillé sur la PiCam vous permettant de prendre la main, ou de la paramétrer si vous n'avez pas encore utilisé celle-ci auparavant: ....___TUTO___...}} &lt;br /&gt;
&lt;br /&gt;
Nous allons tout d'abord cliquer sur le bloc &amp;quot;Exec&amp;quot; dans la section &amp;quot;Advanced&amp;quot; de la colonne de gauche et glisser l'élément dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-10.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, cliquer sur le bloc nouvellement créé et configurer celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-11.png]]&lt;br /&gt;
&lt;br /&gt;
Le menu suivant s'affichera, et nous pourrons configurer le bloc &amp;quot;Exec&amp;quot; nouvellement créé.&lt;br /&gt;
&lt;br /&gt;
==== Command ====&lt;br /&gt;
&lt;br /&gt;
Nous allons y ajouter la commande à exécuter pour prendre une photo avec la caméra du Raspberry Pi et la stocker dans un fichier jpg dans le dossier /tmp/ de linux.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
raspistill -o /tmp/cam.jpg -w 640 -h 480&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous prenons soin de limiter la hauteur et la largeur de l'image afin de réduire son poids pour l'envoi par email.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-12.png]]&lt;br /&gt;
&lt;br /&gt;
==== +Append ====&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons décocher la case &amp;quot;msg.payload&amp;quot; si elle est cochée par défaut.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-13.png]]&lt;br /&gt;
&lt;br /&gt;
==== Extra input parameters et Timeout ====&lt;br /&gt;
&lt;br /&gt;
Nous n'aurons pas besoin de compléter ces champs pour notre projet.&lt;br /&gt;
&lt;br /&gt;
Si vous cochez le champ &amp;quot;Use spawn() instead of exec()?&amp;quot;, votre commande sera réalisée sous forme d'un processus résident et continuera de s'exécuter jusqu'à ce qu'elle se termine par elle-même (sauf si elle ne se termine jamais).&lt;br /&gt;
Cette solution implique que le programme n'attendra pas que cette commande soit réalisée pour passer aux étapes suivantes. &lt;br /&gt;
Si la suite de l'exécution de votre flux est susceptible d'utiliser le résultat de cette commande, nous vous déconseillons d'utiliser cette option sous peine de provoquer des erreurs à la suite du traitement du flux.&lt;br /&gt;
&lt;br /&gt;
Le champ &amp;quot;Timeout&amp;quot; permet de définir un temps d'attente maximum avant de mettre un terme à l'exécution de la commande. &lt;br /&gt;
Cela permet de débloquer la situation si la commande exécutée prends un temps anormalement long à s'exécuter.&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite compléter le champs nom, celui-ci sera utilisé pour nommer le bloc dans le &amp;quot;schéma&amp;quot;, mais aussi de nommer les logs comme pour le bloc &amp;quot;Exec&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-14.png]]&lt;br /&gt;
&lt;br /&gt;
=== Encodage de l'image en base64 ===&lt;br /&gt;
&lt;br /&gt;
Nous allons convertir la photo prise juste avant en utilisant une commande de conversion en base64.&lt;br /&gt;
Cela facilitera son injection dans un template HTML que nous allons créer ensuite pour construire un email.&lt;br /&gt;
&lt;br /&gt;
Nous allons tout d'abord cliquer sur le bloc &amp;quot;Exec&amp;quot; dans la section &amp;quot;Advanced&amp;quot; de la colonne de gauche et glisser l'élément dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-10.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, cliquer sur le bloc nouvellement créé et configurer celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-11.png]]&lt;br /&gt;
&lt;br /&gt;
Le menu suivant s'affichera, et nous pourrons configurer le bloc &amp;quot;Exec&amp;quot; nouvellement créé.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-15.png]]&lt;br /&gt;
&lt;br /&gt;
==== Command ====&lt;br /&gt;
&lt;br /&gt;
Nous allons y ajouter la commande à exécuter pour encoder en base 64 la photo prise précédemment avec la caméra du Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
base64 -i &amp;quot;/tmp/cam.jpg&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-16.png]]&lt;br /&gt;
&lt;br /&gt;
==== +Append ====&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons cocher la case &amp;quot;msg.payload&amp;quot; si elle n'est pas cochée par défaut pour que le résultat soit directement renvoyé par cette commande dans le &amp;quot;PayLoad&amp;quot; du flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-17.png]]&lt;br /&gt;
&lt;br /&gt;
==== Extra input parameters et Timeout ====&lt;br /&gt;
&lt;br /&gt;
Nous n'aurons pas besoin de compléter ces champs pour notre projet.&lt;br /&gt;
&lt;br /&gt;
Si vous cochez le champ &amp;quot;Use spawn() instead of exec()?&amp;quot;, votre commande sera réalisée sous forme d'un processus résident et continuera de s'exécuter jusqu'à ce qu'elle se termine par elle-même (sauf si elle ne se termine jamais).&lt;br /&gt;
Cette solution implique que le programme n'attendra pas que cette commande soit réalisée pour passer aux étapes suivantes. &lt;br /&gt;
Si la suite de l'exécution de votre flux est susceptible d'utiliser le résultat de cette commande, nous vous déconseillons d'utiliser cette option sous peine de provoquer des erreurs à la suite du traitement du flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-18.png]]&lt;br /&gt;
&lt;br /&gt;
Le champ &amp;quot;Timeout&amp;quot; permet de définir un temps d'attente maximum avant de mettre un terme à l'exécution de la commande. &lt;br /&gt;
Cela permet de débloquer la situation si la commande exécutée prends un temps anormalement long à s'exécuter.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-19.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite compléter le champs nom, celui-ci sera utilisé pour nommer le bloc dans le &amp;quot;schéma&amp;quot;, mais aussi de nommer les logs comme pour le bloc &amp;quot;Exec&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-20.png]]&lt;br /&gt;
&lt;br /&gt;
=== Création d'un email au format HTML ===&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant créer un template d'email au format HTML afin de mettre en forme le message que nous enverrons ensuite.&lt;br /&gt;
Nous allons pour cela utiliser un bloc &amp;quot;Template&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-21.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons attribuer un nom au bloc afin de l'identifier plus facilement dans le flux.&lt;br /&gt;
Nous allons donc le nommer &amp;quot;Contenu du mail&amp;quot; puisque nous créons le contenu du mail que nous enverrons ensuite.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-22.png]]&lt;br /&gt;
&lt;br /&gt;
==== Set property ====&lt;br /&gt;
&lt;br /&gt;
La propriété que nous souhaitons créer dans le flux est le &amp;quot;PayLoad&amp;quot;.&lt;br /&gt;
Ce PayLoad existe déjà, il contient pour le moment l'image au format &amp;quot;Base64&amp;quot; précédemment encodé.&lt;br /&gt;
Cela n'est pas un problème, après notre noeud (notre bloc), le PayLoad sera intégralement remplacé par le template que nous sommes en train de créer.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-23.png]]&lt;br /&gt;
&lt;br /&gt;
==== Template ====&lt;br /&gt;
&lt;br /&gt;
Dans ce template, nous allons créer une structure HTML de base minimum afin que la structure soit interprétée par la majorité des clients/webmail.&lt;br /&gt;
Vous pouvez la personnaliser à votre guise si vous avez les connaissances en HTML.&lt;br /&gt;
&lt;br /&gt;
Voici la structure de base pour notre projet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
    &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;meta charset=&amp;quot;utf8&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/head&amp;gt;&lt;br /&gt;
    &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Projet Photo par email&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;img src=&amp;quot;data:image/jpg;base64,{{payload}}&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pourrez remarquer que nous intégrons l'image en appelant le PayLoad à 'intérieur du code HTML dans la balise &amp;lt;img&amp;gt;.&lt;br /&gt;
C'est le PayLoad créé précédemment par le bloc &amp;quot;Exec&amp;quot; qui est récupéré à ce moment précis.&lt;br /&gt;
Ce PayLoad est remplacé dans le flux par le PayLoad complet avec notre template dans le flux par notre bloc Template.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-24.png]]&lt;br /&gt;
&lt;br /&gt;
=== Création d'un bloc (noeud) &amp;quot;Debug&amp;quot;  ===&lt;br /&gt;
&lt;br /&gt;
Nous allons ajouter la notion d'expéditeur dans le flux que nous avons créé à travers nos blocs (noeuds).&lt;br /&gt;
Pour rappel, actuellement nous avons deux propriétés avec des données dans notre flux. &lt;br /&gt;
Si nous voulons observer ce que nous avons créé jusque là, nous pouvons faire appel à un bloc &amp;quot;Debug&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Création du bloc &amp;quot;Debug&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Comme pour les blocs précédents, nous allons glisser/déposer un bloc débug dans l'espace de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-25.png]]&lt;br /&gt;
&lt;br /&gt;
Celui-ci s'appelle msg/payload par défaut&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-26.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons double-cliquer sur ce bloc pour le configurer.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-27.png]]&lt;br /&gt;
&lt;br /&gt;
==== Output ====&lt;br /&gt;
&lt;br /&gt;
Dans ce champs, nous allons choisir la partie du flux que nous souhaitons afficher, ou nous allons sélectionner le flux entier.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-28.png]]&lt;br /&gt;
&lt;br /&gt;
Sélectionner le flux entier, nous affichera le flux complet incluant toutes ses propriétés.&lt;br /&gt;
&lt;br /&gt;
 [[fichier:Rasp-Node-Red-picam-mail-29.png]]&lt;br /&gt;
&lt;br /&gt;
==== To =====&lt;br /&gt;
&lt;br /&gt;
La propriété &amp;quot;To&amp;quot; nous permet de choisir ou nous souhaitons afficher les données que nous récupérons. &lt;br /&gt;
Soit nous les affichons uniquement dans l'onglet &amp;quot;Debug&amp;quot; à droite de l'espace de travail, soit nous l'affichons dans cet onglet mais aussi dans la console de NodeJS.&lt;br /&gt;
Dans notre cas, nous allons nous contenter d'afficher nos éléments dans l'onglet de &amp;quot;Debug&amp;quot; à droite de notre espace de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-30.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Le champs Name nous servira à identifier quel bloc de &amp;quot;Debug&amp;quot; affiche les données en console ou dans l'onglet &amp;quot;Debug&amp;quot;. &lt;br /&gt;
Il faut donc le nommer efficacement pour bien attacher et comprendre les données que nous récupérons, surtout si nous en plaçons plusieurs dans le flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-31.png]]&lt;br /&gt;
&lt;br /&gt;
==== Exploitation et compréhension des données récupérées ====&lt;br /&gt;
&lt;br /&gt;
Nous avons placé notre bloc &amp;quot;Debug&amp;quot; à la suite du flux en dernière position. &lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-32.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons donc déployer le programme en cliquant sur &amp;quot;Deploy&amp;quot; en haut à droite de la page. &lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-33.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons exécuter manuellement le programme en cliquant sur le bouton se trouvant en début de chaîne:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-34.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite afficher l'onglet &amp;quot;Debug&amp;quot; sur le coté droit de la page et analyser les données récupérées:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-35.png]]&lt;br /&gt;
&lt;br /&gt;
==== Analyse des données récupérées dans l'onglet &amp;quot;Debug&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
08/05/2017 à 12:54:31 node: FORMATAGE&lt;br /&gt;
MCHobby - Photo bureau : msg : Object&lt;br /&gt;
object&lt;br /&gt;
_msgid: &amp;quot;81efe35c.3208d&amp;quot;&lt;br /&gt;
topic: &amp;quot;MCHobby - Photo bureau&amp;quot;&lt;br /&gt;
payload: &amp;quot;&amp;lt;html&amp;gt;↵ &amp;lt;head&amp;gt;↵ &amp;lt;meta charset=&amp;quot;utf8&amp;quot;/&amp;gt;↵ ↵ &amp;lt;/head&amp;gt;↵ &amp;lt;body&amp;gt;↵ &amp;lt;h1&amp;gt;MCHobby - Photo bureau&amp;lt;/h1&amp;gt;↵ &amp;lt;p&amp;gt;Cette photo est un instantané pris dans les bureaux de MCHobby.&amp;lt;/p&amp;gt;↵ &lt;br /&gt;
&amp;lt;img src=&amp;quot;data:image/jpg;base64,&amp;amp;#x2F;9j&amp;amp;#x2F;4WP6x2.../&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comme vous pourrez le constater, chaque élément du noeud est détaillé.&lt;br /&gt;
Les données sont cependant tronquées, le noeud &amp;quot;Debug&amp;quot; ne nous fourni pas la totalité du &amp;quot;PayLoad&amp;quot; mais nous avons déjà un bon aperçu des données qu'il contient.&lt;br /&gt;
&lt;br /&gt;
* '''_msgid:''' est un Id unique de message&lt;br /&gt;
* '''topic:''' est le sujet du mail, nous l'avons déterminé dans le premier bloc&lt;br /&gt;
* '''payload:''' contient les données du message formatées par le template que nous avons créé et complété par l'image en base64.&lt;br /&gt;
&lt;br /&gt;
{{tmbox | text = Les noeuds &amp;quot;Debug&amp;quot; sont pratiques. Ils nous permettent d'afficher une partie ou la totalité du flux tel qu'il est à l'endroit ou ils sont placés. Cela peut permettre d'identifier et de résoudre plus facilement des problèmes dans des opérations plus complexes et dans notre cas, cela nous permet de mieux comprendre comment fonctionne le noeud et comment les données sont transmises d'un bloc à l'autre.}}&lt;br /&gt;
&lt;br /&gt;
=== Création d'un expéditeur ===&lt;br /&gt;
&lt;br /&gt;
Nous avons construit petit à petit un message avec un sujet, mais il manque encore un détail: l'expéditeur de l'email que nous allons envoyer: le fameux &amp;quot;msg.from&amp;quot; que nous avons évoqué au début de tuto !&lt;br /&gt;
&lt;br /&gt;
Si vous avez bien suivi les étapes précédentes du tuto, jusqu'au noeud &amp;quot;Debug&amp;quot; et à son résultat, vous comprendrez facilement la démarche ci après pour ajouter un expéditeur dans le flux.&lt;br /&gt;
&lt;br /&gt;
Nous allons ajouter un nouveau noeud &amp;quot;Template&amp;quot; dans la zone de travail et double cliquer dessus pour afficher sa page de configuration:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-39.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite sélectionner le type de propriété que nous souhaitons injecter dans le flux: '''&amp;quot;msg.from&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-40.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cette propriété étant une adresse email, nous allons choisir le type '''&amp;quot;plaintext&amp;quot;''' comme type de données.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-41.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous allons enfin donner un nom explicite à notre bloc afin d'identifier facilement sa fonctionnalité parmi les autres blocs.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-42.png]]&lt;br /&gt;
&lt;br /&gt;
=== Création du bloc d'envoi d'email ===&lt;br /&gt;
&lt;br /&gt;
==== To : destinataire ====&lt;br /&gt;
&lt;br /&gt;
Simplement, l'adresse email du destinataire du message.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-43.png]]&lt;br /&gt;
&lt;br /&gt;
==== Server, port, secure connection ====&lt;br /&gt;
&lt;br /&gt;
Dans ce champ, nous allons mettre un serveur SMTP (serveur email) pour permettre l'envoi de l'email. Dans la plupart des cas, le SMTP de votre FAI (fournisseur d'accès à internet) pourra servir d'intermédiaire.&lt;br /&gt;
Nous vous invitons à consulter les paramètres propres à votre fournisseur d'accès pour paramétrer ce bloc.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-43.png]]&lt;br /&gt;
&lt;br /&gt;
==== UserID et Password ====&lt;br /&gt;
&lt;br /&gt;
Ces champs resteront vides si votre FAI ne nécessite pas d'authentification pour envoyer des emails.&lt;br /&gt;
Si vous utilisez un autre fournisseur, tel que GMAIL par exemple, il faudra mettre votre adresse email et votre mot de passe pour vous identifier.&lt;br /&gt;
&lt;br /&gt;
{{tmbox|text=&amp;quot;Attention: votre compte gmail devra être configuré au préalable afin d'autoriser un &amp;quot;client email&amp;quot; à utiliser votre compte pour envoyer/recevoir des emails par ce biais. Nous vous invitons à consulter la documentation de Gmail pour en savoir plus.&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Rasp-Node-Red-TRAILER}}&lt;/div&gt;</summary>
		<author><name>AntoineWrt</name></author>
	</entry>
	<entry>
		<id>https://wiki.mchobby.be/index.php?title=Rasp-Node-Red-picam-mail&amp;diff=22818</id>
		<title>Rasp-Node-Red-picam-mail</title>
		<link rel="alternate" type="text/html" href="https://wiki.mchobby.be/index.php?title=Rasp-Node-Red-picam-mail&amp;diff=22818"/>
		<updated>2017-05-08T13:39:48Z</updated>

		<summary type="html">&lt;p&gt;AntoineWrt : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Rasp-Node-Red-NAV}}&lt;br /&gt;
&lt;br /&gt;
{{traduction}}&lt;br /&gt;
&lt;br /&gt;
== PiCamRED - Envoi périodique de photos par email avec PiCam et NodeRED ==&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-01.png|900px]]&lt;br /&gt;
&lt;br /&gt;
=== Description du projet ===&lt;br /&gt;
&lt;br /&gt;
Dans ce tutoriel, nous allons réaliser des photos à l'aide de la caméra du RaspBerry Pi 2/3 et envoyer ces clichés par email de manière périodique grâce à NodeRED.&lt;br /&gt;
Nous allons donc utiliser plusieurs blocs et décrire de manière détaillée le déroulement de chaque étape de la réalisation de ce projet.&lt;br /&gt;
&lt;br /&gt;
Dans NodeRED, il est important de bien identifier la finalité de notre projet afin de connaître au préalable tous les éléments qu'il faudra créer et fournir à l'action finale (celle qui enverra un email).&lt;br /&gt;
&lt;br /&gt;
=== Quels sont les besoins du noeud email ===&lt;br /&gt;
&lt;br /&gt;
==== Composants nécessaires pour constituer un email ====&lt;br /&gt;
&lt;br /&gt;
Un email est composé des éléments suivants: &lt;br /&gt;
&lt;br /&gt;
* Un expéditeur&lt;br /&gt;
* Un destinataire&lt;br /&gt;
* Un sujet&lt;br /&gt;
* Le corps du message&lt;br /&gt;
&lt;br /&gt;
Tous ces éléments vont donc devoir être préparés afin de pouvoir construire le message à envoyer par le noeud final.&lt;br /&gt;
&lt;br /&gt;
Le noeud final aura aussi besoin d'un serveur SMTP (serveur d'envoi d'emails) et éventuellement de paramètres d'identification pour ce serveur d'envoi d'emails.&lt;br /&gt;
&lt;br /&gt;
==== Détail des besoins du noeud email ====&lt;br /&gt;
&lt;br /&gt;
La liste des éléments nécessaires s'affiche lorsque le bloc est dans la zone de travail (Schema).&lt;br /&gt;
Commençons donc par sélectionner le bloc email, et de le glisser dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
Commençons par cliquer sur le bloc email et nous maintenons le clic pour le glisser à droite dans l'espace de travail.&lt;br /&gt;
&lt;br /&gt;
(on choisit celui qui a son point de liaison à gauche, car nous voulons un bloc de sortie)&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-36.png]]&lt;br /&gt;
&lt;br /&gt;
Glissons le dans l'espace de travail, et cliquons un clic simple pour le sélectionner.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-37.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, dans la colonne à droite de cet espace de travail, nous cliquons sur info et nous pourrons découvrir les éléments nécessaires à la constitution d'un bloc email.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-38.png]]&lt;br /&gt;
&lt;br /&gt;
===== Nous utiliserons les champs suivants =====&lt;br /&gt;
&lt;br /&gt;
* '''msg.payload''' --&amp;gt; Ce champ contient le corps de l'email&lt;br /&gt;
* '''msg.topic''' --&amp;gt; Ce champ contient le sujet de l'email&lt;br /&gt;
* '''msg.from''' --&amp;gt; Ce champ contient l'email de l'expéditeur &lt;br /&gt;
* '''msg.to''' --&amp;gt; Ce champ contient l'email du destinataire&lt;br /&gt;
&lt;br /&gt;
Les autres champs ne seront pas utilisés dans notre cas, mais vous pourrez constater que le bloc email est complet de part ses fonctionnalités et possibilités.&lt;br /&gt;
&lt;br /&gt;
Les données de serveur et d'identification seront abordées en fin de tuto lors de la configuration finale du bloc.&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant passer à la réalisation du flux en commençant par le début de celui-ci.&lt;br /&gt;
&lt;br /&gt;
=== Création d'une action périodique ===&lt;br /&gt;
&lt;br /&gt;
Dans la colonne de gauche de NodeRED, se trouvent une liste de blocs à utiliser pour réaliser vos projets. Ils sont classés par &amp;quot;types&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Ainsi nous retrouvons les &amp;quot;types&amp;quot; suivants:&lt;br /&gt;
&lt;br /&gt;
* '''Input''' qui contient tous les blocs d'entrées&lt;br /&gt;
* '''Ouput''' qui contient tous les blocs de sortie&lt;br /&gt;
* '''Function''' qui contient des blocs de fonctions javascript etc...&lt;br /&gt;
* '''Social''' qui sont des blocs d'entrée ou sorties depuis ou vers les réseaux sociaux&lt;br /&gt;
* '''Storage''' qui sont des fonctions de lecture ou d'écriture de fichiers&lt;br /&gt;
* '''Analysis''' -&amp;gt;&amp;gt; Sentiment interprète du texte et détermine un score sur base d'un dictionnaire anglais, renvoie le texte avec ce score de -5 à +5, déterminant ainsi l'émotion susceptible d'être procuré par ce texte&lt;br /&gt;
* '''Advanced''' possède des outils permettant de détecter des changements dans des fichiers ou dossiers, de lire des flux RSS ou encore EXEC qui permet d'exécuter directement des commandes sous linux !&lt;br /&gt;
* '''Raspberry Pi''' contient des outils pour piloter/lire le GPIO du raspberry Pi&lt;br /&gt;
* '''Network''' qui contient un outil réseau de Ping&lt;br /&gt;
 &lt;br /&gt;
Nous allons créer une action périodique, c'est à dire paramétrer un bloc '''&amp;quot;INJECT&amp;quot;''' de manière à déclencher régulièrement une chaine d'actions que nous allons accrocher à la suite les unes après les autres.&lt;br /&gt;
Nous allons donc cliquer sur le bloc '''&amp;quot;Inject&amp;quot;''' dans la liste &amp;quot;Input&amp;quot; et maintenir ce clic pour le déplacer vers la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-02.png]]&lt;br /&gt;
&lt;br /&gt;
Nous obtiendrons donc une nouvelle instance &amp;quot;inject&amp;quot; qui portera le nom '''&amp;quot;Timestamp&amp;quot;''' (ce nom est attribué par défaut par NodeRED) comme dans la capture ci-dessous&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-03.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant double-cliquer sur celle-ci fin de l'éditer pour voir apparaitre le menu ci-dessous&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-04.png]]&lt;br /&gt;
&lt;br /&gt;
Il va falloir configurer ce bloc, mais avant tout voici une explication de celui-ci:&lt;br /&gt;
&lt;br /&gt;
==== Payload ====&lt;br /&gt;
&lt;br /&gt;
Le champs PayLoad est en fait le champ de données qui sera suivi d'un noeud à l'autre jusque à la fin de la chaine.&lt;br /&gt;
Dans ce module '''&amp;quot;inject&amp;quot;''', nous allons donc déterminer quel type de données contiendra le '''&amp;quot;PayLoad&amp;quot;''' jusqu'à la fin de la chaine que l'on va réaliser.&lt;br /&gt;
&lt;br /&gt;
Dans notre cas, nous souhaitons construire un email, donc du contenu textuel, nous allons donc choisir '''&amp;quot;String&amp;quot;''' ce qui correspond à une chaine de caractères (du texte).&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-05.png]]&lt;br /&gt;
&lt;br /&gt;
==== Topic ====&lt;br /&gt;
&lt;br /&gt;
Le champs &amp;quot;Topic&amp;quot; est un champs de texte dans lequel nous allons mettre un sujet succinct décrivant notre chaine. &lt;br /&gt;
Dans notre cas, ce sujet fera office de sujet au mail que nous expédierons. &lt;br /&gt;
Nous allons donc être précis en un minimum de mots pour que le destinataire de l'email puisse facilement deviner le contenu de celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-06.png]]&lt;br /&gt;
&lt;br /&gt;
==== Repeat ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite choisir l'intervalle de déclenchement de notre action, sachant que nous avons le choix entre: &lt;br /&gt;
&lt;br /&gt;
* '''none'''  : pas de déclenchement périodique programmé&lt;br /&gt;
* '''interval''' : nous fixons un temps de déclenchement à partir du lancement du programme, l'action se réalisera à chaque fois que ce temps sera écoulé de manière répétée jusqu'à l'interruption manuelle du programme&lt;br /&gt;
* '''interval between times''' : nous fixons ici le déclenchement par interval, mais nous fixons aussi une fourchette d'heures et des jours pendant lesquels nous exécutons cet interval&lt;br /&gt;
* '''at a specific time''' : nous fixons une heure d'exécution, et un ou plusieurs jours d'exécution. Dans ce cas l'action n'est pas répétée en continu mais éxécutée une seule fois par jour à l'heure programmée&lt;br /&gt;
&lt;br /&gt;
Dans notre exemple, nous allons fixer un intervalle de 15 secondes pour commencer. Nous pourrons ensuite augmenter cette valeur pour éviter de recevoir trop d'emails avec des photos :D&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-07.png]]&lt;br /&gt;
&lt;br /&gt;
La case '''&amp;quot;inject once at start&amp;quot;''' permet de ne pas attendre le premier cycle avant d'exécuter une première fois l'action. Elle se lancera dès le lancement du programme, puis périodiquement selon les cycles déterminés par l'intervalle.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-08.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Le champs Name va déterminer le nom que portera le bloc dans l'espace de travail et dans les logs (si nous créons des blocs de log ensuite pour contrôler des étapes).&lt;br /&gt;
Il est important de bien établir ce nom de manière explicite, car le nom des blocs permettra de comprendre et retrouver facilement la logique du schéma construit, même si l'on a pas consulté celui-ci pendant une longue période.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-09.png]]&lt;br /&gt;
&lt;br /&gt;
=== Capture d'une image depuis la PiCam ===&lt;br /&gt;
&lt;br /&gt;
Nous allons aller à l'essentiel en ce qui concerne la capture photo en utilisant une commande simple pour prendre un cliché et renvoyer celui-ci dans le flux NodeRED grâce à un bloc permettant d'exécuter des commandes bash.&lt;br /&gt;
&lt;br /&gt;
{{ambox | text = Vous trouverez un TUTO détaillé sur la PiCam vous permettant de prendre la main, ou de la paramétrer si vous n'avez pas encore utilisé celle-ci auparavant: ....___TUTO___...}} &lt;br /&gt;
&lt;br /&gt;
Nous allons tout d'abord cliquer sur le bloc &amp;quot;Exec&amp;quot; dans la section &amp;quot;Advanced&amp;quot; de la colonne de gauche et glisser l'élément dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-10.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, cliquer sur le bloc nouvellement créé et configurer celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-11.png]]&lt;br /&gt;
&lt;br /&gt;
Le menu suivant s'affichera, et nous pourrons configurer le bloc &amp;quot;Exec&amp;quot; nouvellement créé.&lt;br /&gt;
&lt;br /&gt;
==== Command ====&lt;br /&gt;
&lt;br /&gt;
Nous allons y ajouter la commande à exécuter pour prendre une photo avec la caméra du Raspberry Pi et la stocker dans un fichier jpg dans le dossier /tmp/ de linux.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
raspistill -o /tmp/cam.jpg -w 640 -h 480&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous prenons soin de limiter la hauteur et la largeur de l'image afin de réduire son poids pour l'envoi par email.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-12.png]]&lt;br /&gt;
&lt;br /&gt;
==== +Append ====&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons décocher la case &amp;quot;msg.payload&amp;quot; si elle est cochée par défaut.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-13.png]]&lt;br /&gt;
&lt;br /&gt;
==== Extra input parameters et Timeout ====&lt;br /&gt;
&lt;br /&gt;
Nous n'aurons pas besoin de compléter ces champs pour notre projet.&lt;br /&gt;
&lt;br /&gt;
Si vous cochez le champ &amp;quot;Use spawn() instead of exec()?&amp;quot;, votre commande sera réalisée sous forme d'un processus résident et continuera de s'exécuter jusqu'à ce qu'elle se termine par elle-même (sauf si elle ne se termine jamais).&lt;br /&gt;
Cette solution implique que le programme n'attendra pas que cette commande soit réalisée pour passer aux étapes suivantes. &lt;br /&gt;
Si la suite de l'exécution de votre flux est susceptible d'utiliser le résultat de cette commande, nous vous déconseillons d'utiliser cette option sous peine de provoquer des erreurs à la suite du traitement du flux.&lt;br /&gt;
&lt;br /&gt;
Le champ &amp;quot;Timeout&amp;quot; permet de définir un temps d'attente maximum avant de mettre un terme à l'exécution de la commande. &lt;br /&gt;
Cela permet de débloquer la situation si la commande exécutée prends un temps anormalement long à s'exécuter.&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite compléter le champs nom, celui-ci sera utilisé pour nommer le bloc dans le &amp;quot;schéma&amp;quot;, mais aussi de nommer les logs comme pour le bloc &amp;quot;Exec&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-14.png]]&lt;br /&gt;
&lt;br /&gt;
=== Encodage de l'image en base64 ===&lt;br /&gt;
&lt;br /&gt;
Nous allons convertir la photo prise juste avant en utilisant une commande de conversion en base64.&lt;br /&gt;
Cela facilitera son injection dans un template HTML que nous allons créer ensuite pour construire un email.&lt;br /&gt;
&lt;br /&gt;
Nous allons tout d'abord cliquer sur le bloc &amp;quot;Exec&amp;quot; dans la section &amp;quot;Advanced&amp;quot; de la colonne de gauche et glisser l'élément dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-10.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, cliquer sur le bloc nouvellement créé et configurer celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-11.png]]&lt;br /&gt;
&lt;br /&gt;
Le menu suivant s'affichera, et nous pourrons configurer le bloc &amp;quot;Exec&amp;quot; nouvellement créé.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-15.png]]&lt;br /&gt;
&lt;br /&gt;
==== Command ====&lt;br /&gt;
&lt;br /&gt;
Nous allons y ajouter la commande à exécuter pour encoder en base 64 la photo prise précédemment avec la caméra du Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
base64 -i &amp;quot;/tmp/cam.jpg&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-16.png]]&lt;br /&gt;
&lt;br /&gt;
==== +Append ====&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons cocher la case &amp;quot;msg.payload&amp;quot; si elle n'est pas cochée par défaut pour que le résultat soit directement renvoyé par cette commande dans le &amp;quot;PayLoad&amp;quot; du flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-17.png]]&lt;br /&gt;
&lt;br /&gt;
==== Extra input parameters et Timeout ====&lt;br /&gt;
&lt;br /&gt;
Nous n'aurons pas besoin de compléter ces champs pour notre projet.&lt;br /&gt;
&lt;br /&gt;
Si vous cochez le champ &amp;quot;Use spawn() instead of exec()?&amp;quot;, votre commande sera réalisée sous forme d'un processus résident et continuera de s'exécuter jusqu'à ce qu'elle se termine par elle-même (sauf si elle ne se termine jamais).&lt;br /&gt;
Cette solution implique que le programme n'attendra pas que cette commande soit réalisée pour passer aux étapes suivantes. &lt;br /&gt;
Si la suite de l'exécution de votre flux est susceptible d'utiliser le résultat de cette commande, nous vous déconseillons d'utiliser cette option sous peine de provoquer des erreurs à la suite du traitement du flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-18.png]]&lt;br /&gt;
&lt;br /&gt;
Le champ &amp;quot;Timeout&amp;quot; permet de définir un temps d'attente maximum avant de mettre un terme à l'exécution de la commande. &lt;br /&gt;
Cela permet de débloquer la situation si la commande exécutée prends un temps anormalement long à s'exécuter.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-19.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite compléter le champs nom, celui-ci sera utilisé pour nommer le bloc dans le &amp;quot;schéma&amp;quot;, mais aussi de nommer les logs comme pour le bloc &amp;quot;Exec&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-20.png]]&lt;br /&gt;
&lt;br /&gt;
=== Création d'un email au format HTML ===&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant créer un template d'email au format HTML afin de mettre en forme le message que nous enverrons ensuite.&lt;br /&gt;
Nous allons pour cela utiliser un bloc &amp;quot;Template&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-21.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons attribuer un nom au bloc afin de l'identifier plus facilement dans le flux.&lt;br /&gt;
Nous allons donc le nommer &amp;quot;Contenu du mail&amp;quot; puisque nous créons le contenu du mail que nous enverrons ensuite.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-22.png]]&lt;br /&gt;
&lt;br /&gt;
==== Set property ====&lt;br /&gt;
&lt;br /&gt;
La propriété que nous souhaitons créer dans le flux est le &amp;quot;PayLoad&amp;quot;.&lt;br /&gt;
Ce PayLoad existe déjà, il contient pour le moment l'image au format &amp;quot;Base64&amp;quot; précédemment encodé.&lt;br /&gt;
Cela n'est pas un problème, après notre noeud (notre bloc), le PayLoad sera intégralement remplacé par le template que nous sommes en train de créer.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-23.png]]&lt;br /&gt;
&lt;br /&gt;
==== Template ====&lt;br /&gt;
&lt;br /&gt;
Dans ce template, nous allons créer une structure HTML de base minimum afin que la structure soit interprétée par la majorité des clients/webmail.&lt;br /&gt;
Vous pouvez la personnaliser à votre guise si vous avez les connaissances en HTML.&lt;br /&gt;
&lt;br /&gt;
Voici la structure de base pour notre projet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
    &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;meta charset=&amp;quot;utf8&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/head&amp;gt;&lt;br /&gt;
    &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Projet Photo par email&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;img src=&amp;quot;data:image/jpg;base64,{{payload}}&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pourrez remarquer que nous intégrons l'image en appelant le PayLoad à 'intérieur du code HTML dans la balise &amp;lt;img&amp;gt;.&lt;br /&gt;
C'est le PayLoad créé précédemment par le bloc &amp;quot;Exec&amp;quot; qui est récupéré à ce moment précis.&lt;br /&gt;
Ce PayLoad est remplacé dans le flux par le PayLoad complet avec notre template dans le flux par notre bloc Template.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-24.png]]&lt;br /&gt;
&lt;br /&gt;
=== Création d'un bloc (noeud) &amp;quot;Debug&amp;quot;  ===&lt;br /&gt;
&lt;br /&gt;
Nous allons ajouter la notion d'expéditeur dans le flux que nous avons créé à travers nos blocs (noeuds).&lt;br /&gt;
Pour rappel, actuellement nous avons deux propriétés avec des données dans notre flux. &lt;br /&gt;
Si nous voulons observer ce que nous avons créé jusque là, nous pouvons faire appel à un bloc &amp;quot;Debug&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Création du bloc &amp;quot;Debug&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Comme pour les blocs précédents, nous allons glisser/déposer un bloc débug dans l'espace de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-25.png]]&lt;br /&gt;
&lt;br /&gt;
Celui-ci s'appelle msg/payload par défaut&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-26.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons double-cliquer sur ce bloc pour le configurer.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-27.png]]&lt;br /&gt;
&lt;br /&gt;
==== Output ====&lt;br /&gt;
&lt;br /&gt;
Dans ce champs, nous allons choisir la partie du flux que nous souhaitons afficher, ou nous allons sélectionner le flux entier.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-28.png]]&lt;br /&gt;
&lt;br /&gt;
Sélectionner le flux entier, nous affichera le flux complet incluant toutes ses propriétés.&lt;br /&gt;
&lt;br /&gt;
 [[fichier:Rasp-Node-Red-picam-mail-29.png]]&lt;br /&gt;
&lt;br /&gt;
==== To =====&lt;br /&gt;
&lt;br /&gt;
La propriété &amp;quot;To&amp;quot; nous permet de choisir ou nous souhaitons afficher les données que nous récupérons. &lt;br /&gt;
Soit nous les affichons uniquement dans l'onglet &amp;quot;Debug&amp;quot; à droite de l'espace de travail, soit nous l'affichons dans cet onglet mais aussi dans la console de NodeJS.&lt;br /&gt;
Dans notre cas, nous allons nous contenter d'afficher nos éléments dans l'onglet de &amp;quot;Debug&amp;quot; à droite de notre espace de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-30.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Le champs Name nous servira à identifier quel bloc de &amp;quot;Debug&amp;quot; affiche les données en console ou dans l'onglet &amp;quot;Debug&amp;quot;. &lt;br /&gt;
Il faut donc le nommer efficacement pour bien attacher et comprendre les données que nous récupérons, surtout si nous en plaçons plusieurs dans le flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-31.png]]&lt;br /&gt;
&lt;br /&gt;
==== Exploitation et compréhension des données récupérées ====&lt;br /&gt;
&lt;br /&gt;
Nous avons placé notre bloc &amp;quot;Debug&amp;quot; à la suite du flux en dernière position. &lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-32.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons donc déployer le programme en cliquant sur &amp;quot;Deploy&amp;quot; en haut à droite de la page. &lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-33.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons exécuter manuellement le programme en cliquant sur le bouton se trouvant en début de chaîne:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-34.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite afficher l'onglet &amp;quot;Debug&amp;quot; sur le coté droit de la page et analyser les données récupérées:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-35.png]]&lt;br /&gt;
&lt;br /&gt;
==== Analyse des données récupérées dans l'onglet &amp;quot;Debug&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
08/05/2017 à 12:54:31 node: FORMATAGE&lt;br /&gt;
MCHobby - Photo bureau : msg : Object&lt;br /&gt;
object&lt;br /&gt;
_msgid: &amp;quot;81efe35c.3208d&amp;quot;&lt;br /&gt;
topic: &amp;quot;MCHobby - Photo bureau&amp;quot;&lt;br /&gt;
payload: &amp;quot;&amp;lt;html&amp;gt;↵ &amp;lt;head&amp;gt;↵ &amp;lt;meta charset=&amp;quot;utf8&amp;quot;/&amp;gt;↵ ↵ &amp;lt;/head&amp;gt;↵ &amp;lt;body&amp;gt;↵ &amp;lt;h1&amp;gt;MCHobby - Photo bureau&amp;lt;/h1&amp;gt;↵ &amp;lt;p&amp;gt;Cette photo est un instantané pris dans les bureaux de MCHobby.&amp;lt;/p&amp;gt;↵ &lt;br /&gt;
&amp;lt;img src=&amp;quot;data:image/jpg;base64,&amp;amp;#x2F;9j&amp;amp;#x2F;4WP6x2.../&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comme vous pourrez le constater, chaque élément du noeud est détaillé.&lt;br /&gt;
Les données sont cependant tronquées, le noeud &amp;quot;Debug&amp;quot; ne nous fourni pas la totalité du &amp;quot;PayLoad&amp;quot; mais nous avons déjà un bon aperçu des données qu'il contient.&lt;br /&gt;
&lt;br /&gt;
* '''_msgid:''' est un Id unique de message&lt;br /&gt;
* '''topic:''' est le sujet du mail, nous l'avons déterminé dans le premier bloc&lt;br /&gt;
* '''payload:''' contient les données du message formatées par le template que nous avons créé et complété par l'image en base64.&lt;br /&gt;
&lt;br /&gt;
{{tmbox | text = Les noeuds &amp;quot;Debug&amp;quot; sont pratiques. Ils nous permettent d'afficher une partie ou la totalité du flux tel qu'il est à l'endroit ou ils sont placés. Cela peut permettre d'identifier et de résoudre plus facilement des problèmes dans des opérations plus complexes et dans notre cas, cela nous permet de mieux comprendre comment fonctionne le noeud et comment les données sont transmises d'un bloc à l'autre.}}&lt;br /&gt;
&lt;br /&gt;
=== Création d'un expéditeur ===&lt;br /&gt;
&lt;br /&gt;
Nous avons construit petit à petit un message avec un sujet, mais il manque encore un détail: l'expéditeur de l'email que nous allons envoyer: le fameux &amp;quot;msg.from&amp;quot; que nous avons évoqué au début de tuto !&lt;br /&gt;
&lt;br /&gt;
Si vous avez bien suivi les étapes précédentes du tuto, jusqu'au noeud &amp;quot;Debug&amp;quot; et à son résultat, vous comprendrez facilement la démarche ci après pour ajouter un expéditeur dans le flux.&lt;br /&gt;
&lt;br /&gt;
Nous allons ajouter un nouveau noeud &amp;quot;Template&amp;quot; dans la zone de travail et double cliquer dessus pour afficher sa page de configuration:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-39.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite sélectionner le type de propriété que nous souhaitons injecter dans le flux: '''&amp;quot;msg.from&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-40.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cette propriété étant une adresse email, nous allons choisir le type '''&amp;quot;plaintext&amp;quot;''' comme type de données.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-41.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous allons enfin donner un nom explicite à notre bloc afin d'identifier facilement sa fonctionnalité parmi les autres blocs.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-42.png]]&lt;br /&gt;
&lt;br /&gt;
=== Création du bloc d'envoi d'email ===&lt;br /&gt;
&lt;br /&gt;
==== To : destinataire ====&lt;br /&gt;
&lt;br /&gt;
Simplement, l'adresse email du destinataire du message.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-43.png]]&lt;br /&gt;
&lt;br /&gt;
==== Server, port, secure connection ====&lt;br /&gt;
&lt;br /&gt;
Dans ce champ, nous allons mettre un serveur SMTP (serveur email) pour permettre l'envoi de l'email. Dans la plupart des cas, le SMTP de votre FAI (fournisseur d'accès à internet) pourra servir d'intermédiaire.&lt;br /&gt;
Nous vous invitons à consulter les paramètres propres à votre fournisseur d'accès pour paramétrer ce bloc.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-43.png]]&lt;br /&gt;
&lt;br /&gt;
==== UserID et Password ====&lt;br /&gt;
&lt;br /&gt;
Ces champs resteront vides si votre FAI ne nécessite pas d'authentification pour envoyer des emails.&lt;br /&gt;
Si vous utilisez un autre fournisseur, tel que GMAIL par exemple, il faudra mettre votre adresse email et votre mot de passe pour vous identifier.&lt;br /&gt;
&lt;br /&gt;
{{ambox|text=&amp;quot;Attention: votre compte gmail devra être configuré au préalable afin d'autoriser un &amp;quot;client email&amp;quot; à utiliser votre compte pour envoyer/recevoir des emails par ce biais. Nous vous invitons à consulter la documentation de Gmail pour en savoir plus.&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Rasp-Node-Red-TRAILER}}&lt;/div&gt;</summary>
		<author><name>AntoineWrt</name></author>
	</entry>
	<entry>
		<id>https://wiki.mchobby.be/index.php?title=Rasp-Node-Red-picam-mail&amp;diff=22817</id>
		<title>Rasp-Node-Red-picam-mail</title>
		<link rel="alternate" type="text/html" href="https://wiki.mchobby.be/index.php?title=Rasp-Node-Red-picam-mail&amp;diff=22817"/>
		<updated>2017-05-08T13:23:30Z</updated>

		<summary type="html">&lt;p&gt;AntoineWrt : /* Création d'une action périodique */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Rasp-Node-Red-NAV}}&lt;br /&gt;
&lt;br /&gt;
{{traduction}}&lt;br /&gt;
&lt;br /&gt;
== PiCamRED - Envoi périodique de photos par email avec PiCam et NodeRED ==&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-01.png|900px]]&lt;br /&gt;
&lt;br /&gt;
=== Description du projet ===&lt;br /&gt;
&lt;br /&gt;
Dans ce tutoriel, nous allons réaliser des photos à l'aide de la caméra du RaspBerry Pi 2/3 et envoyer ces clichés par email de manière périodique grâce à NodeRED.&lt;br /&gt;
Nous allons donc utiliser plusieurs blocs et décrire de manière détaillée le déroulement de chaque étape de la réalisation de ce projet.&lt;br /&gt;
&lt;br /&gt;
Dans NodeRED, il est important de bien identifier la finalité de notre projet afin de connaître au préalable tous les éléments qu'il faudra créer et fournir à l'action finale (celle qui enverra un email).&lt;br /&gt;
&lt;br /&gt;
=== Quels sont les besoins du noeud email ===&lt;br /&gt;
&lt;br /&gt;
==== Composants nécessaires pour constituer un email ====&lt;br /&gt;
&lt;br /&gt;
Un email est composé des éléments suivants: &lt;br /&gt;
&lt;br /&gt;
* Un expéditeur&lt;br /&gt;
* Un destinataire&lt;br /&gt;
* Un sujet&lt;br /&gt;
* Le corps du message&lt;br /&gt;
&lt;br /&gt;
Tous ces éléments vont donc devoir être préparés afin de pouvoir construire le message à envoyer par le noeud final.&lt;br /&gt;
&lt;br /&gt;
Le noeud final aura aussi besoin d'un serveur SMTP (serveur d'envoi d'emails) et éventuellement de paramètres d'identification pour ce serveur d'envoi d'emails.&lt;br /&gt;
&lt;br /&gt;
==== Détail des besoins du noeud email ====&lt;br /&gt;
&lt;br /&gt;
La liste des éléments nécessaires s'affiche lorsque le bloc est dans la zone de travail (Schema).&lt;br /&gt;
Commençons donc par sélectionner le bloc email, et de le glisser dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
Commençons par cliquer sur le bloc email et nous maintenons le clic pour le glisser à droite dans l'espace de travail.&lt;br /&gt;
&lt;br /&gt;
(on choisit celui qui a son point de liaison à gauche, car nous voulons un bloc de sortie)&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-36.png]]&lt;br /&gt;
&lt;br /&gt;
Glissons le dans l'espace de travail, et cliquons un clic simple pour le sélectionner.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-37.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, dans la colonne à droite de cet espace de travail, nous cliquons sur info et nous pourrons découvrir les éléments nécessaires à la constitution d'un bloc email.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-38.png]]&lt;br /&gt;
&lt;br /&gt;
===== Nous utiliserons les champs suivants =====&lt;br /&gt;
&lt;br /&gt;
* '''msg.payload''' --&amp;gt; Ce champ contient le corps de l'email&lt;br /&gt;
* '''msg.topic''' --&amp;gt; Ce champ contient le sujet de l'email&lt;br /&gt;
* '''msg.from''' --&amp;gt; Ce champ contient l'email de l'expéditeur &lt;br /&gt;
* '''msg.to''' --&amp;gt; Ce champ contient l'email du destinataire&lt;br /&gt;
&lt;br /&gt;
Les autres champs ne seront pas utilisés dans notre cas, mais vous pourrez constater que le bloc email est complet de part ses fonctionnalités et possibilités.&lt;br /&gt;
&lt;br /&gt;
Les données de serveur et d'identification seront abordées en fin de tuto lors de la configuration finale du bloc.&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant passer à la réalisation du flux en commençant par le début de celui-ci.&lt;br /&gt;
&lt;br /&gt;
=== Création d'une action périodique ===&lt;br /&gt;
&lt;br /&gt;
Dans la colonne de gauche de NodeRED, se trouvent une liste de blocs à utiliser pour réaliser vos projets. Ils sont classés par &amp;quot;types&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Ainsi nous retrouvons les &amp;quot;types&amp;quot; suivants:&lt;br /&gt;
&lt;br /&gt;
* '''Input''' qui contient tous les blocs d'entrées&lt;br /&gt;
* '''Ouput''' qui contient tous les blocs de sortie&lt;br /&gt;
* '''Function''' qui contient des blocs de fonctions javascript etc...&lt;br /&gt;
* '''Social''' qui sont des blocs d'entrée ou sorties depuis ou vers les réseaux sociaux&lt;br /&gt;
* '''Storage''' qui sont des fonctions de lecture ou d'écriture de fichiers&lt;br /&gt;
* '''Analysis''' -&amp;gt;&amp;gt; Sentiment interprète du texte et détermine un score sur base d'un dictionnaire anglais, renvoie le texte avec ce score de -5 à +5, déterminant ainsi l'émotion susceptible d'être procuré par ce texte&lt;br /&gt;
* '''Advanced''' possède des outils permettant de détecter des changements dans des fichiers ou dossiers, de lire des flux RSS ou encore EXEC qui permet d'exécuter directement des commandes sous linux !&lt;br /&gt;
* '''Raspberry Pi''' contient des outils pour piloter/lire le GPIO du raspberry Pi&lt;br /&gt;
* '''Network''' qui contient un outil réseau de Ping&lt;br /&gt;
 &lt;br /&gt;
Nous allons créer une action périodique, c'est à dire paramétrer un bloc '''&amp;quot;INJECT&amp;quot;''' de manière à déclencher régulièrement une chaine d'actions que nous allons accrocher à la suite les unes après les autres.&lt;br /&gt;
Nous allons donc cliquer sur le bloc '''&amp;quot;Inject&amp;quot;''' dans la liste &amp;quot;Input&amp;quot; et maintenir ce clic pour le déplacer vers la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-02.png]]&lt;br /&gt;
&lt;br /&gt;
Nous obtiendrons donc une nouvelle instance &amp;quot;inject&amp;quot; qui portera le nom '''&amp;quot;Timestamp&amp;quot;''' (ce nom est attribué par défaut par NodeRED) comme dans la capture ci-dessous&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-03.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant double-cliquer sur celle-ci fin de l'éditer pour voir apparaitre le menu ci-dessous&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-04.png]]&lt;br /&gt;
&lt;br /&gt;
Il va falloir configurer ce bloc, mais avant tout voici une explication de celui-ci:&lt;br /&gt;
&lt;br /&gt;
==== Payload ====&lt;br /&gt;
&lt;br /&gt;
Le champs PayLoad est en fait le champ de données qui sera suivi d'un noeud à l'autre jusque à la fin de la chaine.&lt;br /&gt;
Dans ce module '''&amp;quot;inject&amp;quot;''', nous allons donc déterminer quel type de données contiendra le '''&amp;quot;PayLoad&amp;quot;''' jusqu'à la fin de la chaine que l'on va réaliser.&lt;br /&gt;
&lt;br /&gt;
Dans notre cas, nous souhaitons construire un email, donc du contenu textuel, nous allons donc choisir '''&amp;quot;String&amp;quot;''' ce qui correspond à une chaine de caractères (du texte).&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-05.png]]&lt;br /&gt;
&lt;br /&gt;
==== Topic ====&lt;br /&gt;
&lt;br /&gt;
Le champs &amp;quot;Topic&amp;quot; est un champs de texte dans lequel nous allons mettre un sujet succinct décrivant notre chaine. &lt;br /&gt;
Dans notre cas, ce sujet fera office de sujet au mail que nous expédierons. &lt;br /&gt;
Nous allons donc être précis en un minimum de mots pour que le destinataire de l'email puisse facilement deviner le contenu de celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-06.png]]&lt;br /&gt;
&lt;br /&gt;
==== Repeat ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite choisir l'intervalle de déclenchement de notre action, sachant que nous avons le choix entre: &lt;br /&gt;
&lt;br /&gt;
* '''none'''  : pas de déclenchement périodique programmé&lt;br /&gt;
* '''interval''' : nous fixons un temps de déclenchement à partir du lancement du programme, l'action se réalisera à chaque fois que ce temps sera écoulé de manière répétée jusqu'à l'interruption manuelle du programme&lt;br /&gt;
* '''interval between times''' : nous fixons ici le déclenchement par interval, mais nous fixons aussi une fourchette d'heures et des jours pendant lesquels nous exécutons cet interval&lt;br /&gt;
* '''at a specific time''' : nous fixons une heure d'exécution, et un ou plusieurs jours d'exécution. Dans ce cas l'action n'est pas répétée en continu mais éxécutée une seule fois par jour à l'heure programmée&lt;br /&gt;
&lt;br /&gt;
Dans notre exemple, nous allons fixer un intervalle de 15 secondes pour commencer. Nous pourrons ensuite augmenter cette valeur pour éviter de recevoir trop d'emails avec des photos :D&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-07.png]]&lt;br /&gt;
&lt;br /&gt;
La case '''&amp;quot;inject once at start&amp;quot;''' permet de ne pas attendre le premier cycle avant d'exécuter une première fois l'action. Elle se lancera dès le lancement du programme, puis périodiquement selon les cycles déterminés par l'intervalle.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-08.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Le champs Name va déterminer le nom que portera le bloc dans l'espace de travail et dans les logs (si nous créons des blocs de log ensuite pour contrôler des étapes).&lt;br /&gt;
Il est important de bien établir ce nom de manière explicite, car le nom des blocs permettra de comprendre et retrouver facilement la logique du schéma construit, même si l'on a pas consulté celui-ci pendant une longue période.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-09.png]]&lt;br /&gt;
&lt;br /&gt;
=== Capture d'une image depuis la PiCam ===&lt;br /&gt;
&lt;br /&gt;
Nous allons aller à l'essentiel en ce qui concerne la capture photo en utilisant une commande simple pour prendre un cliché et renvoyer celui-ci dans le flux NodeRED grâce à un bloc permettant d'exécuter des commandes bash.&lt;br /&gt;
&lt;br /&gt;
{{ambox | text = Vous trouverez un TUTO détaillé sur la PiCam vous permettant de prendre la main, ou de la paramétrer si vous n'avez pas encore utilisé celle-ci auparavant: ....___TUTO___...}} &lt;br /&gt;
&lt;br /&gt;
Nous allons tout d'abord cliquer sur le bloc &amp;quot;Exec&amp;quot; dans la section &amp;quot;Advanced&amp;quot; de la colonne de gauche et glisser l'élément dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-10.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, cliquer sur le bloc nouvellement créé et configurer celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-11.png]]&lt;br /&gt;
&lt;br /&gt;
Le menu suivant s'affichera, et nous pourrons configurer le bloc &amp;quot;Exec&amp;quot; nouvellement créé.&lt;br /&gt;
&lt;br /&gt;
==== Command ====&lt;br /&gt;
&lt;br /&gt;
Nous allons y ajouter la commande à exécuter pour prendre une photo avec la caméra du Raspberry Pi et la stocker dans un fichier jpg dans le dossier /tmp/ de linux.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
raspistill -o /tmp/cam.jpg -w 640 -h 480&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous prenons soin de limiter la hauteur et la largeur de l'image afin de réduire son poids pour l'envoi par email.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-12.png]]&lt;br /&gt;
&lt;br /&gt;
==== +Append ====&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons décocher la case &amp;quot;msg.payload&amp;quot; si elle est cochée par défaut.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-13.png]]&lt;br /&gt;
&lt;br /&gt;
==== Extra input parameters et Timeout ====&lt;br /&gt;
&lt;br /&gt;
Nous n'aurons pas besoin de compléter ces champs pour notre projet.&lt;br /&gt;
&lt;br /&gt;
Si vous cochez le champ &amp;quot;Use spawn() instead of exec()?&amp;quot;, votre commande sera réalisée sous forme d'un processus résident et continuera de s'exécuter jusqu'à ce qu'elle se termine par elle-même (sauf si elle ne se termine jamais).&lt;br /&gt;
Cette solution implique que le programme n'attendra pas que cette commande soit réalisée pour passer aux étapes suivantes. &lt;br /&gt;
Si la suite de l'exécution de votre flux est susceptible d'utiliser le résultat de cette commande, nous vous déconseillons d'utiliser cette option sous peine de provoquer des erreurs à la suite du traitement du flux.&lt;br /&gt;
&lt;br /&gt;
Le champ &amp;quot;Timeout&amp;quot; permet de définir un temps d'attente maximum avant de mettre un terme à l'exécution de la commande. &lt;br /&gt;
Cela permet de débloquer la situation si la commande exécutée prends un temps anormalement long à s'exécuter.&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite compléter le champs nom, celui-ci sera utilisé pour nommer le bloc dans le &amp;quot;schéma&amp;quot;, mais aussi de nommer les logs comme pour le bloc &amp;quot;Exec&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-14.png]]&lt;br /&gt;
&lt;br /&gt;
=== Encodage de l'image en base64 ===&lt;br /&gt;
&lt;br /&gt;
Nous allons convertir la photo prise juste avant en utilisant une commande de conversion en base64.&lt;br /&gt;
Cela facilitera son injection dans un template HTML que nous allons créer ensuite pour construire un email.&lt;br /&gt;
&lt;br /&gt;
Nous allons tout d'abord cliquer sur le bloc &amp;quot;Exec&amp;quot; dans la section &amp;quot;Advanced&amp;quot; de la colonne de gauche et glisser l'élément dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-10.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, cliquer sur le bloc nouvellement créé et configurer celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-11.png]]&lt;br /&gt;
&lt;br /&gt;
Le menu suivant s'affichera, et nous pourrons configurer le bloc &amp;quot;Exec&amp;quot; nouvellement créé.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-15.png]]&lt;br /&gt;
&lt;br /&gt;
==== Command ====&lt;br /&gt;
&lt;br /&gt;
Nous allons y ajouter la commande à exécuter pour encoder en base 64 la photo prise précédemment avec la caméra du Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
base64 -i &amp;quot;/tmp/cam.jpg&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-16.png]]&lt;br /&gt;
&lt;br /&gt;
==== +Append ====&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons cocher la case &amp;quot;msg.payload&amp;quot; si elle n'est pas cochée par défaut pour que le résultat soit directement renvoyé par cette commande dans le &amp;quot;PayLoad&amp;quot; du flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-17.png]]&lt;br /&gt;
&lt;br /&gt;
==== Extra input parameters et Timeout ====&lt;br /&gt;
&lt;br /&gt;
Nous n'aurons pas besoin de compléter ces champs pour notre projet.&lt;br /&gt;
&lt;br /&gt;
Si vous cochez le champ &amp;quot;Use spawn() instead of exec()?&amp;quot;, votre commande sera réalisée sous forme d'un processus résident et continuera de s'exécuter jusqu'à ce qu'elle se termine par elle-même (sauf si elle ne se termine jamais).&lt;br /&gt;
Cette solution implique que le programme n'attendra pas que cette commande soit réalisée pour passer aux étapes suivantes. &lt;br /&gt;
Si la suite de l'exécution de votre flux est susceptible d'utiliser le résultat de cette commande, nous vous déconseillons d'utiliser cette option sous peine de provoquer des erreurs à la suite du traitement du flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-18.png]]&lt;br /&gt;
&lt;br /&gt;
Le champ &amp;quot;Timeout&amp;quot; permet de définir un temps d'attente maximum avant de mettre un terme à l'exécution de la commande. &lt;br /&gt;
Cela permet de débloquer la situation si la commande exécutée prends un temps anormalement long à s'exécuter.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-19.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite compléter le champs nom, celui-ci sera utilisé pour nommer le bloc dans le &amp;quot;schéma&amp;quot;, mais aussi de nommer les logs comme pour le bloc &amp;quot;Exec&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-20.png]]&lt;br /&gt;
&lt;br /&gt;
=== Création d'un email au format HTML ===&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant créer un template d'email au format HTML afin de mettre en forme le message que nous enverrons ensuite.&lt;br /&gt;
Nous allons pour cela utiliser un bloc &amp;quot;Template&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-21.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons attribuer un nom au bloc afin de l'identifier plus facilement dans le flux.&lt;br /&gt;
Nous allons donc le nommer &amp;quot;Contenu du mail&amp;quot; puisque nous créons le contenu du mail que nous enverrons ensuite.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-22.png]]&lt;br /&gt;
&lt;br /&gt;
==== Set property ====&lt;br /&gt;
&lt;br /&gt;
La propriété que nous souhaitons créer dans le flux est le &amp;quot;PayLoad&amp;quot;.&lt;br /&gt;
Ce PayLoad existe déjà, il contient pour le moment l'image au format &amp;quot;Base64&amp;quot; précédemment encodé.&lt;br /&gt;
Cela n'est pas un problème, après notre noeud (notre bloc), le PayLoad sera intégralement remplacé par le template que nous sommes en train de créer.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-23.png]]&lt;br /&gt;
&lt;br /&gt;
==== Template ====&lt;br /&gt;
&lt;br /&gt;
Dans ce template, nous allons créer une structure HTML de base minimum afin que la structure soit interprétée par la majorité des clients/webmail.&lt;br /&gt;
Vous pouvez la personnaliser à votre guise si vous avez les connaissances en HTML.&lt;br /&gt;
&lt;br /&gt;
Voici la structure de base pour notre projet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
    &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;meta charset=&amp;quot;utf8&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/head&amp;gt;&lt;br /&gt;
    &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Projet Photo par email&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;img src=&amp;quot;data:image/jpg;base64,{{payload}}&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pourrez remarquer que nous intégrons l'image en appelant le PayLoad à 'intérieur du code HTML dans la balise &amp;lt;img&amp;gt;.&lt;br /&gt;
C'est le PayLoad créé précédemment par le bloc &amp;quot;Exec&amp;quot; qui est récupéré à ce moment précis.&lt;br /&gt;
Ce PayLoad est remplacé dans le flux par le PayLoad complet avec notre template dans le flux par notre bloc Template.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-24.png]]&lt;br /&gt;
&lt;br /&gt;
=== Création d'un bloc (noeud) &amp;quot;Debug&amp;quot;  ===&lt;br /&gt;
&lt;br /&gt;
Nous allons ajouter la notion d'expéditeur dans le flux que nous avons créé à travers nos blocs (noeuds).&lt;br /&gt;
Pour rappel, actuellement nous avons deux propriétés avec des données dans notre flux. &lt;br /&gt;
Si nous voulons observer ce que nous avons créé jusque là, nous pouvons faire appel à un bloc &amp;quot;Debug&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Création du bloc &amp;quot;Debug&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Comme pour les blocs précédents, nous allons glisser/déposer un bloc débug dans l'espace de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-25.png]]&lt;br /&gt;
&lt;br /&gt;
Celui-ci s'appelle msg/payload par défaut&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-26.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons double-cliquer sur ce bloc pour le configurer.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-27.png]]&lt;br /&gt;
&lt;br /&gt;
==== Output ====&lt;br /&gt;
&lt;br /&gt;
Dans ce champs, nous allons choisir la partie du flux que nous souhaitons afficher, ou nous allons sélectionner le flux entier.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-28.png]]&lt;br /&gt;
&lt;br /&gt;
Sélectionner le flux entier, nous affichera le flux complet incluant toutes ses propriétés.&lt;br /&gt;
&lt;br /&gt;
 [[fichier:Rasp-Node-Red-picam-mail-29.png]]&lt;br /&gt;
&lt;br /&gt;
==== To =====&lt;br /&gt;
&lt;br /&gt;
La propriété &amp;quot;To&amp;quot; nous permet de choisir ou nous souhaitons afficher les données que nous récupérons. &lt;br /&gt;
Soit nous les affichons uniquement dans l'onglet &amp;quot;Debug&amp;quot; à droite de l'espace de travail, soit nous l'affichons dans cet onglet mais aussi dans la console de NodeJS.&lt;br /&gt;
Dans notre cas, nous allons nous contenter d'afficher nos éléments dans l'onglet de &amp;quot;Debug&amp;quot; à droite de notre espace de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-30.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Le champs Name nous servira à identifier quel bloc de &amp;quot;Debug&amp;quot; affiche les données en console ou dans l'onglet &amp;quot;Debug&amp;quot;. &lt;br /&gt;
Il faut donc le nommer efficacement pour bien attacher et comprendre les données que nous récupérons, surtout si nous en plaçons plusieurs dans le flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-31.png]]&lt;br /&gt;
&lt;br /&gt;
==== Exploitation et compréhension des données récupérées ====&lt;br /&gt;
&lt;br /&gt;
Nous avons placé notre bloc &amp;quot;Debug&amp;quot; à la suite du flux en dernière position. &lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-32.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons donc déployer le programme en cliquant sur &amp;quot;Deploy&amp;quot; en haut à droite de la page. &lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-33.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons exécuter manuellement le programme en cliquant sur le bouton se trouvant en début de chaîne:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-34.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite afficher l'onglet &amp;quot;Debug&amp;quot; sur le coté droit de la page et analyser les données récupérées:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-35.png]]&lt;br /&gt;
&lt;br /&gt;
==== Analyse des données récupérées dans l'onglet &amp;quot;Debug&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
08/05/2017 à 12:54:31 node: FORMATAGE&lt;br /&gt;
MCHobby - Photo bureau : msg : Object&lt;br /&gt;
object&lt;br /&gt;
_msgid: &amp;quot;81efe35c.3208d&amp;quot;&lt;br /&gt;
topic: &amp;quot;MCHobby - Photo bureau&amp;quot;&lt;br /&gt;
payload: &amp;quot;&amp;lt;html&amp;gt;↵ &amp;lt;head&amp;gt;↵ &amp;lt;meta charset=&amp;quot;utf8&amp;quot;/&amp;gt;↵ ↵ &amp;lt;/head&amp;gt;↵ &amp;lt;body&amp;gt;↵ &amp;lt;h1&amp;gt;MCHobby - Photo bureau&amp;lt;/h1&amp;gt;↵ &amp;lt;p&amp;gt;Cette photo est un instantané pris dans les bureaux de MCHobby.&amp;lt;/p&amp;gt;↵ &lt;br /&gt;
&amp;lt;img src=&amp;quot;data:image/jpg;base64,&amp;amp;#x2F;9j&amp;amp;#x2F;4WP6x2.../&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comme vous pourrez le constater, chaque élément du noeud est détaillé.&lt;br /&gt;
Les données sont cependant tronquées, le noeud &amp;quot;Debug&amp;quot; ne nous fourni pas la totalité du &amp;quot;PayLoad&amp;quot; mais nous avons déjà un bon aperçu des données qu'il contient.&lt;br /&gt;
&lt;br /&gt;
* '''_msgid:''' est un Id unique de message&lt;br /&gt;
* '''topic:''' est le sujet du mail, nous l'avons déterminé dans le premier bloc&lt;br /&gt;
* '''payload:''' contient les données du message formatées par le template que nous avons créé et complété par l'image en base64.&lt;br /&gt;
&lt;br /&gt;
{{tmbox | text = Les noeuds &amp;quot;Debug&amp;quot; sont pratiques. Ils nous permettent d'afficher une partie ou la totalité du flux tel qu'il est à l'endroit ou ils sont placés. Cela peut permettre d'identifier et de résoudre plus facilement des problèmes dans des opérations plus complexes et dans notre cas, cela nous permet de mieux comprendre comment fonctionne le noeud et comment les données sont transmises d'un bloc à l'autre.}}&lt;br /&gt;
&lt;br /&gt;
=== Création d'un expéditeur ===&lt;br /&gt;
&lt;br /&gt;
Nous avons construit petit à petit un message avec un sujet, mais il manque encore un détail: l'expéditeur de l'email que nous allons envoyer: le fameux &amp;quot;msg.from&amp;quot; que nous avons évoqué au début de tuto !&lt;br /&gt;
&lt;br /&gt;
Si vous avez bien suivi les étapes précédentes du tuto, jusqu'au noeud &amp;quot;Debug&amp;quot; et à son résultat, vous comprendrez facilement la démarche ci après pour ajouter un expéditeur dans le flux.&lt;br /&gt;
&lt;br /&gt;
Nous allons ajouter un nouveau noeud &amp;quot;Template&amp;quot; dans la zone de travail et double cliquer dessus pour afficher sa page de configuration:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-39.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite sélectionner le type de propriété que nous souhaitons injecter dans le flux: '''&amp;quot;msg.from&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-40.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cette propriété étant une adresse email, nous allons choisir le type '''&amp;quot;plaintext&amp;quot;''' comme type de données.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-41.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous allons enfin donner un nom explicite à notre bloc afin d'identifier facilement sa fonctionnalité parmi les autres blocs.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-42.png]]&lt;br /&gt;
&lt;br /&gt;
{{Rasp-Node-Red-TRAILER}}&lt;/div&gt;</summary>
		<author><name>AntoineWrt</name></author>
	</entry>
	<entry>
		<id>https://wiki.mchobby.be/index.php?title=Rasp-Node-Red-picam-mail&amp;diff=22816</id>
		<title>Rasp-Node-Red-picam-mail</title>
		<link rel="alternate" type="text/html" href="https://wiki.mchobby.be/index.php?title=Rasp-Node-Red-picam-mail&amp;diff=22816"/>
		<updated>2017-05-08T13:22:04Z</updated>

		<summary type="html">&lt;p&gt;AntoineWrt : /* Création d'une action périodique */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Rasp-Node-Red-NAV}}&lt;br /&gt;
&lt;br /&gt;
{{traduction}}&lt;br /&gt;
&lt;br /&gt;
== PiCamRED - Envoi périodique de photos par email avec PiCam et NodeRED ==&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-01.png|900px]]&lt;br /&gt;
&lt;br /&gt;
=== Description du projet ===&lt;br /&gt;
&lt;br /&gt;
Dans ce tutoriel, nous allons réaliser des photos à l'aide de la caméra du RaspBerry Pi 2/3 et envoyer ces clichés par email de manière périodique grâce à NodeRED.&lt;br /&gt;
Nous allons donc utiliser plusieurs blocs et décrire de manière détaillée le déroulement de chaque étape de la réalisation de ce projet.&lt;br /&gt;
&lt;br /&gt;
Dans NodeRED, il est important de bien identifier la finalité de notre projet afin de connaître au préalable tous les éléments qu'il faudra créer et fournir à l'action finale (celle qui enverra un email).&lt;br /&gt;
&lt;br /&gt;
=== Quels sont les besoins du noeud email ===&lt;br /&gt;
&lt;br /&gt;
==== Composants nécessaires pour constituer un email ====&lt;br /&gt;
&lt;br /&gt;
Un email est composé des éléments suivants: &lt;br /&gt;
&lt;br /&gt;
* Un expéditeur&lt;br /&gt;
* Un destinataire&lt;br /&gt;
* Un sujet&lt;br /&gt;
* Le corps du message&lt;br /&gt;
&lt;br /&gt;
Tous ces éléments vont donc devoir être préparés afin de pouvoir construire le message à envoyer par le noeud final.&lt;br /&gt;
&lt;br /&gt;
Le noeud final aura aussi besoin d'un serveur SMTP (serveur d'envoi d'emails) et éventuellement de paramètres d'identification pour ce serveur d'envoi d'emails.&lt;br /&gt;
&lt;br /&gt;
==== Détail des besoins du noeud email ====&lt;br /&gt;
&lt;br /&gt;
La liste des éléments nécessaires s'affiche lorsque le bloc est dans la zone de travail (Schema).&lt;br /&gt;
Commençons donc par sélectionner le bloc email, et de le glisser dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
Commençons par cliquer sur le bloc email et nous maintenons le clic pour le glisser à droite dans l'espace de travail.&lt;br /&gt;
&lt;br /&gt;
(on choisit celui qui a son point de liaison à gauche, car nous voulons un bloc de sortie)&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-36.png]]&lt;br /&gt;
&lt;br /&gt;
Glissons le dans l'espace de travail, et cliquons un clic simple pour le sélectionner.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-37.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, dans la colonne à droite de cet espace de travail, nous cliquons sur info et nous pourrons découvrir les éléments nécessaires à la constitution d'un bloc email.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-38.png]]&lt;br /&gt;
&lt;br /&gt;
===== Nous utiliserons les champs suivants =====&lt;br /&gt;
&lt;br /&gt;
* '''msg.payload''' --&amp;gt; Ce champ contient le corps de l'email&lt;br /&gt;
* '''msg.topic''' --&amp;gt; Ce champ contient le sujet de l'email&lt;br /&gt;
* '''msg.from''' --&amp;gt; Ce champ contient l'email de l'expéditeur &lt;br /&gt;
* '''msg.to''' --&amp;gt; Ce champ contient l'email du destinataire&lt;br /&gt;
&lt;br /&gt;
Les autres champs ne seront pas utilisés dans notre cas, mais vous pourrez constater que le bloc email est complet de part ses fonctionnalités et possibilités.&lt;br /&gt;
&lt;br /&gt;
Les données de serveur et d'identification seront abordées en fin de tuto lors de la configuration finale du bloc.&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant passer à la réalisation du flux en commençant par le début de celui-ci.&lt;br /&gt;
&lt;br /&gt;
=== Création d'une action périodique ===&lt;br /&gt;
&lt;br /&gt;
Dans la colonne de gauche de NodeRED, se trouvent une liste de blocs à utiliser pour réaliser vos projets. Ils sont classés par &amp;quot;types&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Ainsi nous retrouvons les &amp;quot;types&amp;quot; suivants:&lt;br /&gt;
&lt;br /&gt;
* '''Input''' qui contient tous les blocs d'entrées&lt;br /&gt;
* '''Ouput''' qui contient tous les blocs de sortie&lt;br /&gt;
* '''Function''' qui contient des blocs de fonctions javascript etc...&lt;br /&gt;
* '''Social''' qui sont des blocs d'entrée ou sorties depuis ou vers les réseaux sociaux&lt;br /&gt;
* '''Storage''' qui sont des fonctions de lecture ou d'écriture de fichiers&lt;br /&gt;
* '''Analysis''' -&amp;gt;&amp;gt; Sentiment interprète du texte et détermine un score sur base d'un dictionnaire anglais, renvoie le texte avec ce score de -5 à +5, déterminant ainsi l'émotion susceptible d'être procuré par ce texte&lt;br /&gt;
* '''Advanced''' possède des outils permettant de détecter des changements dans des fichiers ou dossiers, de lire des flux RSS ou encore EXEC qui permet d'exécuter directement des commandes sous linux !&lt;br /&gt;
* '''Raspberry Pi''' contient des outils pour piloter/lire le GPIO du raspberry Pi&lt;br /&gt;
* '''Network''' qui contient un outil réseau de Ping&lt;br /&gt;
 &lt;br /&gt;
Nous allons créer une action périodique, c'est à dire paramétrer un bloc &amp;quot;INJECT&amp;quot; de manière à déclencher régulièrement une chaine d'actions que nous allons accrocher à la suite les unes après les autres.&lt;br /&gt;
Nous allons donc cliquer sur le bloc &amp;quot;Inject&amp;quot; dans la liste &amp;quot;Input&amp;quot; et maintenir ce clic pour le déplacer vers la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-02.png]]&lt;br /&gt;
&lt;br /&gt;
Nous obtiendrons donc une nouvelle instance &amp;quot;inject&amp;quot; qui portera le nom &amp;quot;Timestamp&amp;quot; (ce nom est attribué par défaut par NodeRED) comme dans la capture ci-dessous&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-03.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant double-cliquer sur celle-ci fin de l'éditer pour voir apparaitre le menu ci-dessous&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-04.png]]&lt;br /&gt;
&lt;br /&gt;
Il va falloir configurer ce bloc, mais avant tout voici une explication de celui-ci:&lt;br /&gt;
&lt;br /&gt;
==== Payload ====&lt;br /&gt;
&lt;br /&gt;
Le champs PayLoad est en fait le champ de données qui sera suivi d'un noeud à l'autre jusque à la fin de la chaine.&lt;br /&gt;
Dans ce module &amp;quot;inject&amp;quot;, nous allons donc déterminer quel type de données contiendra le &amp;quot;PayLoad&amp;quot; jusqu'à la fin de la chaine que l'on va réaliser.&lt;br /&gt;
&lt;br /&gt;
Dans notre cas, nous souhaitons construire un email, donc du contenu textuel, nous allons donc choisir &amp;quot;String&amp;quot; ce qui correspond à une chaine de caractères (du texte).&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-05.png]]&lt;br /&gt;
&lt;br /&gt;
==== Topic ====&lt;br /&gt;
&lt;br /&gt;
Le champs &amp;quot;Topic&amp;quot; est un champs de texte dans lequel nous allons mettre un sujet succinct décrivant notre chaine. &lt;br /&gt;
Dans notre cas, ce sujet fera office de sujet au mail que nous expédierons. &lt;br /&gt;
Nous allons donc être précis en un minimum de mots pour que le destinataire de l'email puisse facilement deviner le contenu de celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-06.png]]&lt;br /&gt;
&lt;br /&gt;
==== Repeat ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite choisir l'intervalle de déclenchement de notre action, sachant que nous avons le choix entre: &lt;br /&gt;
&lt;br /&gt;
* none  : pas de déclenchement périodique programmé&lt;br /&gt;
* interval : nous fixons un temps de déclenchement à partir du lancement du programme, l'action se réalisera à chaque fois que ce temps sera écoulé de manière répétée jusqu'à l'interruption manuelle du programme&lt;br /&gt;
* interval between times : nous fixons ici le déclenchement par interval, mais nous fixons aussi une fourchette d'heures et des jours pendant lesquels nous exécutons cet interval&lt;br /&gt;
* at a specific time : nous fixons une heure d'exécution, et un ou plusieurs jours d'exécution. Dans ce cas l'action n'est pas répétée en continu mais éxécutée une seule fois par jour à l'heure programmée&lt;br /&gt;
&lt;br /&gt;
Dans notre exemple, nous allons fixer un intervalle de 15 secondes pour commencer. Nous pourrons ensuite augmenter cette valeur pour éviter de recevoir trop d'emails avec des photos :D&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-07.png]]&lt;br /&gt;
&lt;br /&gt;
La case &amp;quot;inject once at start&amp;quot; permet de ne pas attendre le premier cycle avant d'exécuter une première fois l'action. Elle se lancera dès le lancement du programme, puis périodiquement selon les cycles déterminés par l'intervalle.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-08.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Le champs Name va déterminer le nom que portera le bloc dans l'espace de travail et dans les logs (si nous créons des blocs de log ensuite pour contrôler des étapes).&lt;br /&gt;
Il est important de bien établir ce nom de manière explicite, car le nom des blocs permettra de comprendre et retrouver facilement la logique du schéma construit, même si l'on a pas consulté celui-ci pendant une longue période.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-09.png]]&lt;br /&gt;
&lt;br /&gt;
=== Capture d'une image depuis la PiCam ===&lt;br /&gt;
&lt;br /&gt;
Nous allons aller à l'essentiel en ce qui concerne la capture photo en utilisant une commande simple pour prendre un cliché et renvoyer celui-ci dans le flux NodeRED grâce à un bloc permettant d'exécuter des commandes bash.&lt;br /&gt;
&lt;br /&gt;
{{ambox | text = Vous trouverez un TUTO détaillé sur la PiCam vous permettant de prendre la main, ou de la paramétrer si vous n'avez pas encore utilisé celle-ci auparavant: ....___TUTO___...}} &lt;br /&gt;
&lt;br /&gt;
Nous allons tout d'abord cliquer sur le bloc &amp;quot;Exec&amp;quot; dans la section &amp;quot;Advanced&amp;quot; de la colonne de gauche et glisser l'élément dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-10.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, cliquer sur le bloc nouvellement créé et configurer celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-11.png]]&lt;br /&gt;
&lt;br /&gt;
Le menu suivant s'affichera, et nous pourrons configurer le bloc &amp;quot;Exec&amp;quot; nouvellement créé.&lt;br /&gt;
&lt;br /&gt;
==== Command ====&lt;br /&gt;
&lt;br /&gt;
Nous allons y ajouter la commande à exécuter pour prendre une photo avec la caméra du Raspberry Pi et la stocker dans un fichier jpg dans le dossier /tmp/ de linux.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
raspistill -o /tmp/cam.jpg -w 640 -h 480&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous prenons soin de limiter la hauteur et la largeur de l'image afin de réduire son poids pour l'envoi par email.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-12.png]]&lt;br /&gt;
&lt;br /&gt;
==== +Append ====&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons décocher la case &amp;quot;msg.payload&amp;quot; si elle est cochée par défaut.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-13.png]]&lt;br /&gt;
&lt;br /&gt;
==== Extra input parameters et Timeout ====&lt;br /&gt;
&lt;br /&gt;
Nous n'aurons pas besoin de compléter ces champs pour notre projet.&lt;br /&gt;
&lt;br /&gt;
Si vous cochez le champ &amp;quot;Use spawn() instead of exec()?&amp;quot;, votre commande sera réalisée sous forme d'un processus résident et continuera de s'exécuter jusqu'à ce qu'elle se termine par elle-même (sauf si elle ne se termine jamais).&lt;br /&gt;
Cette solution implique que le programme n'attendra pas que cette commande soit réalisée pour passer aux étapes suivantes. &lt;br /&gt;
Si la suite de l'exécution de votre flux est susceptible d'utiliser le résultat de cette commande, nous vous déconseillons d'utiliser cette option sous peine de provoquer des erreurs à la suite du traitement du flux.&lt;br /&gt;
&lt;br /&gt;
Le champ &amp;quot;Timeout&amp;quot; permet de définir un temps d'attente maximum avant de mettre un terme à l'exécution de la commande. &lt;br /&gt;
Cela permet de débloquer la situation si la commande exécutée prends un temps anormalement long à s'exécuter.&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite compléter le champs nom, celui-ci sera utilisé pour nommer le bloc dans le &amp;quot;schéma&amp;quot;, mais aussi de nommer les logs comme pour le bloc &amp;quot;Exec&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-14.png]]&lt;br /&gt;
&lt;br /&gt;
=== Encodage de l'image en base64 ===&lt;br /&gt;
&lt;br /&gt;
Nous allons convertir la photo prise juste avant en utilisant une commande de conversion en base64.&lt;br /&gt;
Cela facilitera son injection dans un template HTML que nous allons créer ensuite pour construire un email.&lt;br /&gt;
&lt;br /&gt;
Nous allons tout d'abord cliquer sur le bloc &amp;quot;Exec&amp;quot; dans la section &amp;quot;Advanced&amp;quot; de la colonne de gauche et glisser l'élément dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-10.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, cliquer sur le bloc nouvellement créé et configurer celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-11.png]]&lt;br /&gt;
&lt;br /&gt;
Le menu suivant s'affichera, et nous pourrons configurer le bloc &amp;quot;Exec&amp;quot; nouvellement créé.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-15.png]]&lt;br /&gt;
&lt;br /&gt;
==== Command ====&lt;br /&gt;
&lt;br /&gt;
Nous allons y ajouter la commande à exécuter pour encoder en base 64 la photo prise précédemment avec la caméra du Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
base64 -i &amp;quot;/tmp/cam.jpg&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-16.png]]&lt;br /&gt;
&lt;br /&gt;
==== +Append ====&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons cocher la case &amp;quot;msg.payload&amp;quot; si elle n'est pas cochée par défaut pour que le résultat soit directement renvoyé par cette commande dans le &amp;quot;PayLoad&amp;quot; du flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-17.png]]&lt;br /&gt;
&lt;br /&gt;
==== Extra input parameters et Timeout ====&lt;br /&gt;
&lt;br /&gt;
Nous n'aurons pas besoin de compléter ces champs pour notre projet.&lt;br /&gt;
&lt;br /&gt;
Si vous cochez le champ &amp;quot;Use spawn() instead of exec()?&amp;quot;, votre commande sera réalisée sous forme d'un processus résident et continuera de s'exécuter jusqu'à ce qu'elle se termine par elle-même (sauf si elle ne se termine jamais).&lt;br /&gt;
Cette solution implique que le programme n'attendra pas que cette commande soit réalisée pour passer aux étapes suivantes. &lt;br /&gt;
Si la suite de l'exécution de votre flux est susceptible d'utiliser le résultat de cette commande, nous vous déconseillons d'utiliser cette option sous peine de provoquer des erreurs à la suite du traitement du flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-18.png]]&lt;br /&gt;
&lt;br /&gt;
Le champ &amp;quot;Timeout&amp;quot; permet de définir un temps d'attente maximum avant de mettre un terme à l'exécution de la commande. &lt;br /&gt;
Cela permet de débloquer la situation si la commande exécutée prends un temps anormalement long à s'exécuter.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-19.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite compléter le champs nom, celui-ci sera utilisé pour nommer le bloc dans le &amp;quot;schéma&amp;quot;, mais aussi de nommer les logs comme pour le bloc &amp;quot;Exec&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-20.png]]&lt;br /&gt;
&lt;br /&gt;
=== Création d'un email au format HTML ===&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant créer un template d'email au format HTML afin de mettre en forme le message que nous enverrons ensuite.&lt;br /&gt;
Nous allons pour cela utiliser un bloc &amp;quot;Template&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-21.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons attribuer un nom au bloc afin de l'identifier plus facilement dans le flux.&lt;br /&gt;
Nous allons donc le nommer &amp;quot;Contenu du mail&amp;quot; puisque nous créons le contenu du mail que nous enverrons ensuite.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-22.png]]&lt;br /&gt;
&lt;br /&gt;
==== Set property ====&lt;br /&gt;
&lt;br /&gt;
La propriété que nous souhaitons créer dans le flux est le &amp;quot;PayLoad&amp;quot;.&lt;br /&gt;
Ce PayLoad existe déjà, il contient pour le moment l'image au format &amp;quot;Base64&amp;quot; précédemment encodé.&lt;br /&gt;
Cela n'est pas un problème, après notre noeud (notre bloc), le PayLoad sera intégralement remplacé par le template que nous sommes en train de créer.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-23.png]]&lt;br /&gt;
&lt;br /&gt;
==== Template ====&lt;br /&gt;
&lt;br /&gt;
Dans ce template, nous allons créer une structure HTML de base minimum afin que la structure soit interprétée par la majorité des clients/webmail.&lt;br /&gt;
Vous pouvez la personnaliser à votre guise si vous avez les connaissances en HTML.&lt;br /&gt;
&lt;br /&gt;
Voici la structure de base pour notre projet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
    &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;meta charset=&amp;quot;utf8&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/head&amp;gt;&lt;br /&gt;
    &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Projet Photo par email&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;img src=&amp;quot;data:image/jpg;base64,{{payload}}&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pourrez remarquer que nous intégrons l'image en appelant le PayLoad à 'intérieur du code HTML dans la balise &amp;lt;img&amp;gt;.&lt;br /&gt;
C'est le PayLoad créé précédemment par le bloc &amp;quot;Exec&amp;quot; qui est récupéré à ce moment précis.&lt;br /&gt;
Ce PayLoad est remplacé dans le flux par le PayLoad complet avec notre template dans le flux par notre bloc Template.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-24.png]]&lt;br /&gt;
&lt;br /&gt;
=== Création d'un bloc (noeud) &amp;quot;Debug&amp;quot;  ===&lt;br /&gt;
&lt;br /&gt;
Nous allons ajouter la notion d'expéditeur dans le flux que nous avons créé à travers nos blocs (noeuds).&lt;br /&gt;
Pour rappel, actuellement nous avons deux propriétés avec des données dans notre flux. &lt;br /&gt;
Si nous voulons observer ce que nous avons créé jusque là, nous pouvons faire appel à un bloc &amp;quot;Debug&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Création du bloc &amp;quot;Debug&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Comme pour les blocs précédents, nous allons glisser/déposer un bloc débug dans l'espace de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-25.png]]&lt;br /&gt;
&lt;br /&gt;
Celui-ci s'appelle msg/payload par défaut&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-26.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons double-cliquer sur ce bloc pour le configurer.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-27.png]]&lt;br /&gt;
&lt;br /&gt;
==== Output ====&lt;br /&gt;
&lt;br /&gt;
Dans ce champs, nous allons choisir la partie du flux que nous souhaitons afficher, ou nous allons sélectionner le flux entier.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-28.png]]&lt;br /&gt;
&lt;br /&gt;
Sélectionner le flux entier, nous affichera le flux complet incluant toutes ses propriétés.&lt;br /&gt;
&lt;br /&gt;
 [[fichier:Rasp-Node-Red-picam-mail-29.png]]&lt;br /&gt;
&lt;br /&gt;
==== To =====&lt;br /&gt;
&lt;br /&gt;
La propriété &amp;quot;To&amp;quot; nous permet de choisir ou nous souhaitons afficher les données que nous récupérons. &lt;br /&gt;
Soit nous les affichons uniquement dans l'onglet &amp;quot;Debug&amp;quot; à droite de l'espace de travail, soit nous l'affichons dans cet onglet mais aussi dans la console de NodeJS.&lt;br /&gt;
Dans notre cas, nous allons nous contenter d'afficher nos éléments dans l'onglet de &amp;quot;Debug&amp;quot; à droite de notre espace de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-30.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Le champs Name nous servira à identifier quel bloc de &amp;quot;Debug&amp;quot; affiche les données en console ou dans l'onglet &amp;quot;Debug&amp;quot;. &lt;br /&gt;
Il faut donc le nommer efficacement pour bien attacher et comprendre les données que nous récupérons, surtout si nous en plaçons plusieurs dans le flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-31.png]]&lt;br /&gt;
&lt;br /&gt;
==== Exploitation et compréhension des données récupérées ====&lt;br /&gt;
&lt;br /&gt;
Nous avons placé notre bloc &amp;quot;Debug&amp;quot; à la suite du flux en dernière position. &lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-32.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons donc déployer le programme en cliquant sur &amp;quot;Deploy&amp;quot; en haut à droite de la page. &lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-33.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons exécuter manuellement le programme en cliquant sur le bouton se trouvant en début de chaîne:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-34.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite afficher l'onglet &amp;quot;Debug&amp;quot; sur le coté droit de la page et analyser les données récupérées:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-35.png]]&lt;br /&gt;
&lt;br /&gt;
==== Analyse des données récupérées dans l'onglet &amp;quot;Debug&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
08/05/2017 à 12:54:31 node: FORMATAGE&lt;br /&gt;
MCHobby - Photo bureau : msg : Object&lt;br /&gt;
object&lt;br /&gt;
_msgid: &amp;quot;81efe35c.3208d&amp;quot;&lt;br /&gt;
topic: &amp;quot;MCHobby - Photo bureau&amp;quot;&lt;br /&gt;
payload: &amp;quot;&amp;lt;html&amp;gt;↵ &amp;lt;head&amp;gt;↵ &amp;lt;meta charset=&amp;quot;utf8&amp;quot;/&amp;gt;↵ ↵ &amp;lt;/head&amp;gt;↵ &amp;lt;body&amp;gt;↵ &amp;lt;h1&amp;gt;MCHobby - Photo bureau&amp;lt;/h1&amp;gt;↵ &amp;lt;p&amp;gt;Cette photo est un instantané pris dans les bureaux de MCHobby.&amp;lt;/p&amp;gt;↵ &lt;br /&gt;
&amp;lt;img src=&amp;quot;data:image/jpg;base64,&amp;amp;#x2F;9j&amp;amp;#x2F;4WP6x2.../&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comme vous pourrez le constater, chaque élément du noeud est détaillé.&lt;br /&gt;
Les données sont cependant tronquées, le noeud &amp;quot;Debug&amp;quot; ne nous fourni pas la totalité du &amp;quot;PayLoad&amp;quot; mais nous avons déjà un bon aperçu des données qu'il contient.&lt;br /&gt;
&lt;br /&gt;
* '''_msgid:''' est un Id unique de message&lt;br /&gt;
* '''topic:''' est le sujet du mail, nous l'avons déterminé dans le premier bloc&lt;br /&gt;
* '''payload:''' contient les données du message formatées par le template que nous avons créé et complété par l'image en base64.&lt;br /&gt;
&lt;br /&gt;
{{tmbox | text = Les noeuds &amp;quot;Debug&amp;quot; sont pratiques. Ils nous permettent d'afficher une partie ou la totalité du flux tel qu'il est à l'endroit ou ils sont placés. Cela peut permettre d'identifier et de résoudre plus facilement des problèmes dans des opérations plus complexes et dans notre cas, cela nous permet de mieux comprendre comment fonctionne le noeud et comment les données sont transmises d'un bloc à l'autre.}}&lt;br /&gt;
&lt;br /&gt;
=== Création d'un expéditeur ===&lt;br /&gt;
&lt;br /&gt;
Nous avons construit petit à petit un message avec un sujet, mais il manque encore un détail: l'expéditeur de l'email que nous allons envoyer: le fameux &amp;quot;msg.from&amp;quot; que nous avons évoqué au début de tuto !&lt;br /&gt;
&lt;br /&gt;
Si vous avez bien suivi les étapes précédentes du tuto, jusqu'au noeud &amp;quot;Debug&amp;quot; et à son résultat, vous comprendrez facilement la démarche ci après pour ajouter un expéditeur dans le flux.&lt;br /&gt;
&lt;br /&gt;
Nous allons ajouter un nouveau noeud &amp;quot;Template&amp;quot; dans la zone de travail et double cliquer dessus pour afficher sa page de configuration:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-39.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite sélectionner le type de propriété que nous souhaitons injecter dans le flux: '''&amp;quot;msg.from&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-40.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cette propriété étant une adresse email, nous allons choisir le type '''&amp;quot;plaintext&amp;quot;''' comme type de données.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-41.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous allons enfin donner un nom explicite à notre bloc afin d'identifier facilement sa fonctionnalité parmi les autres blocs.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-42.png]]&lt;br /&gt;
&lt;br /&gt;
{{Rasp-Node-Red-TRAILER}}&lt;/div&gt;</summary>
		<author><name>AntoineWrt</name></author>
	</entry>
	<entry>
		<id>https://wiki.mchobby.be/index.php?title=Rasp-Node-Red-picam-mail&amp;diff=22815</id>
		<title>Rasp-Node-Red-picam-mail</title>
		<link rel="alternate" type="text/html" href="https://wiki.mchobby.be/index.php?title=Rasp-Node-Red-picam-mail&amp;diff=22815"/>
		<updated>2017-05-08T13:18:07Z</updated>

		<summary type="html">&lt;p&gt;AntoineWrt : /* Création d'un expéditeur */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Rasp-Node-Red-NAV}}&lt;br /&gt;
&lt;br /&gt;
{{traduction}}&lt;br /&gt;
&lt;br /&gt;
== PiCamRED - Envoi périodique de photos par email avec PiCam et NodeRED ==&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-01.png|900px]]&lt;br /&gt;
&lt;br /&gt;
=== Description du projet ===&lt;br /&gt;
&lt;br /&gt;
Dans ce tutoriel, nous allons réaliser des photos à l'aide de la caméra du RaspBerry Pi 2/3 et envoyer ces clichés par email de manière périodique grâce à NodeRED.&lt;br /&gt;
Nous allons donc utiliser plusieurs blocs et décrire de manière détaillée le déroulement de chaque étape de la réalisation de ce projet.&lt;br /&gt;
&lt;br /&gt;
Dans NodeRED, il est important de bien identifier la finalité de notre projet afin de connaître au préalable tous les éléments qu'il faudra créer et fournir à l'action finale (celle qui enverra un email).&lt;br /&gt;
&lt;br /&gt;
=== Quels sont les besoins du noeud email ===&lt;br /&gt;
&lt;br /&gt;
==== Composants nécessaires pour constituer un email ====&lt;br /&gt;
&lt;br /&gt;
Un email est composé des éléments suivants: &lt;br /&gt;
&lt;br /&gt;
* Un expéditeur&lt;br /&gt;
* Un destinataire&lt;br /&gt;
* Un sujet&lt;br /&gt;
* Le corps du message&lt;br /&gt;
&lt;br /&gt;
Tous ces éléments vont donc devoir être préparés afin de pouvoir construire le message à envoyer par le noeud final.&lt;br /&gt;
&lt;br /&gt;
Le noeud final aura aussi besoin d'un serveur SMTP (serveur d'envoi d'emails) et éventuellement de paramètres d'identification pour ce serveur d'envoi d'emails.&lt;br /&gt;
&lt;br /&gt;
==== Détail des besoins du noeud email ====&lt;br /&gt;
&lt;br /&gt;
La liste des éléments nécessaires s'affiche lorsque le bloc est dans la zone de travail (Schema).&lt;br /&gt;
Commençons donc par sélectionner le bloc email, et de le glisser dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
Commençons par cliquer sur le bloc email et nous maintenons le clic pour le glisser à droite dans l'espace de travail.&lt;br /&gt;
&lt;br /&gt;
(on choisit celui qui a son point de liaison à gauche, car nous voulons un bloc de sortie)&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-36.png]]&lt;br /&gt;
&lt;br /&gt;
Glissons le dans l'espace de travail, et cliquons un clic simple pour le sélectionner.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-37.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, dans la colonne à droite de cet espace de travail, nous cliquons sur info et nous pourrons découvrir les éléments nécessaires à la constitution d'un bloc email.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-38.png]]&lt;br /&gt;
&lt;br /&gt;
===== Nous utiliserons les champs suivants =====&lt;br /&gt;
&lt;br /&gt;
* '''msg.payload''' --&amp;gt; Ce champ contient le corps de l'email&lt;br /&gt;
* '''msg.topic''' --&amp;gt; Ce champ contient le sujet de l'email&lt;br /&gt;
* '''msg.from''' --&amp;gt; Ce champ contient l'email de l'expéditeur &lt;br /&gt;
* '''msg.to''' --&amp;gt; Ce champ contient l'email du destinataire&lt;br /&gt;
&lt;br /&gt;
Les autres champs ne seront pas utilisés dans notre cas, mais vous pourrez constater que le bloc email est complet de part ses fonctionnalités et possibilités.&lt;br /&gt;
&lt;br /&gt;
Les données de serveur et d'identification seront abordées en fin de tuto lors de la configuration finale du bloc.&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant passer à la réalisation du flux en commençant par le début de celui-ci.&lt;br /&gt;
&lt;br /&gt;
=== Création d'une action périodique ===&lt;br /&gt;
&lt;br /&gt;
Dans la colonne de gauche de NodeRED, se trouvent une liste de blocs à utiliser pour réaliser vos projets. Ils sont classés par &amp;quot;types&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Ainsi nous retrouvons les &amp;quot;types&amp;quot; suivants:&lt;br /&gt;
&lt;br /&gt;
* Input qui contient tous les blocs d'entrées&lt;br /&gt;
* Ouput qui contient tous les blocs de sortie&lt;br /&gt;
* Function qui contient des blocs de fonctions javascript etc...&lt;br /&gt;
* Social qui sont des blocs d'entrée ou sorties depuis ou vers les réseaux sociaux&lt;br /&gt;
* Storage qui sont des fonctions de lecture ou d'écriture de fichiers&lt;br /&gt;
* Analysis -&amp;gt;&amp;gt; Sentiment interprète du texte et détermine un score sur base d'un dictionnaire anglais, renvoie le texte avec ce score de -5 à +5, déterminant ainsi l'émotion susceptible d'être procuré par ce texte&lt;br /&gt;
* Advanced possède des outils permettant de détecter des changements dans des fichiers ou dossiers, de lire des flux RSS ou encore EXEC qui permet d'exécuter directement des commandes sous linux !&lt;br /&gt;
* Raspberry Pi contient des outils pour piloter/lire le GPIO du raspberry Pi&lt;br /&gt;
* Network qui contient un outil réseau de Ping&lt;br /&gt;
 &lt;br /&gt;
Nous allons créer une action périodique, c'est à dire paramétrer un bloc &amp;quot;INJECT&amp;quot; de manière à déclencher régulièrement une chaine d'actions que nous allons accrocher à la suite les unes après les autres.&lt;br /&gt;
Nous allons donc cliquer sur le bloc &amp;quot;Inject&amp;quot; dans la liste &amp;quot;Input&amp;quot; et maintenir ce clic pour le déplacer vers la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-02.png]]&lt;br /&gt;
&lt;br /&gt;
Nous obtiendrons donc une nouvelle instance &amp;quot;inject&amp;quot; qui portera le nom &amp;quot;Timestamp&amp;quot; (ce nom est attribué par défaut par NodeRED) comme dans la capture ci-dessous&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-03.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant double-cliquer sur celle-ci fin de l'éditer pour voir apparaitre le menu ci-dessous&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-04.png]]&lt;br /&gt;
&lt;br /&gt;
Il va falloir configurer ce bloc, mais avant tout voici une explication de celui-ci:&lt;br /&gt;
&lt;br /&gt;
==== Payload ====&lt;br /&gt;
&lt;br /&gt;
Le champs PayLoad est en fait le champ de données qui sera suivi d'un noeud à l'autre jusque à la fin de la chaine.&lt;br /&gt;
Dans ce module &amp;quot;inject&amp;quot;, nous allons donc déterminer quel type de données contiendra le &amp;quot;PayLoad&amp;quot; jusqu'à la fin de la chaine que l'on va réaliser.&lt;br /&gt;
&lt;br /&gt;
Dans notre cas, nous souhaitons construire un email, donc du contenu textuel, nous allons donc choisir &amp;quot;String&amp;quot; ce qui correspond à une chaine de caractères (du texte).&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-05.png]]&lt;br /&gt;
&lt;br /&gt;
==== Topic ====&lt;br /&gt;
&lt;br /&gt;
Le champs &amp;quot;Topic&amp;quot; est un champs de texte dans lequel nous allons mettre un sujet succinct décrivant notre chaine. &lt;br /&gt;
Dans notre cas, ce sujet fera office de sujet au mail que nous expédierons. &lt;br /&gt;
Nous allons donc être précis en un minimum de mots pour que le destinataire de l'email puisse facilement deviner le contenu de celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-06.png]]&lt;br /&gt;
&lt;br /&gt;
==== Repeat ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite choisir l'intervalle de déclenchement de notre action, sachant que nous avons le choix entre: &lt;br /&gt;
&lt;br /&gt;
* none  : pas de déclenchement périodique programmé&lt;br /&gt;
* interval : nous fixons un temps de déclenchement à partir du lancement du programme, l'action se réalisera à chaque fois que ce temps sera écoulé de manière répétée jusqu'à l'interruption manuelle du programme&lt;br /&gt;
* interval between times : nous fixons ici le déclenchement par interval, mais nous fixons aussi une fourchette d'heures et des jours pendant lesquels nous exécutons cet interval&lt;br /&gt;
* at a specific time : nous fixons une heure d'exécution, et un ou plusieurs jours d'exécution. Dans ce cas l'action n'est pas répétée en continu mais éxécutée une seule fois par jour à l'heure programmée&lt;br /&gt;
&lt;br /&gt;
Dans notre exemple, nous allons fixer un intervalle de 15 secondes pour commencer. Nous pourrons ensuite augmenter cette valeur pour éviter de recevoir trop d'emails avec des photos :D&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-07.png]]&lt;br /&gt;
&lt;br /&gt;
La case &amp;quot;inject once at start&amp;quot; permet de ne pas attendre le premier cycle avant d'exécuter une première fois l'action. Elle se lancera dès le lancement du programme, puis périodiquement selon les cycles déterminés par l'intervalle.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-08.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Le champs Name va déterminer le nom que portera le bloc dans l'espace de travail et dans les logs (si nous créons des blocs de log ensuite pour contrôler des étapes).&lt;br /&gt;
Il est important de bien établir ce nom de manière explicite, car le nom des blocs permettra de comprendre et retrouver facilement la logique du schéma construit, même si l'on a pas consulté celui-ci pendant une longue période.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-09.png]]&lt;br /&gt;
&lt;br /&gt;
=== Capture d'une image depuis la PiCam ===&lt;br /&gt;
&lt;br /&gt;
Nous allons aller à l'essentiel en ce qui concerne la capture photo en utilisant une commande simple pour prendre un cliché et renvoyer celui-ci dans le flux NodeRED grâce à un bloc permettant d'exécuter des commandes bash.&lt;br /&gt;
&lt;br /&gt;
{{ambox | text = Vous trouverez un TUTO détaillé sur la PiCam vous permettant de prendre la main, ou de la paramétrer si vous n'avez pas encore utilisé celle-ci auparavant: ....___TUTO___...}} &lt;br /&gt;
&lt;br /&gt;
Nous allons tout d'abord cliquer sur le bloc &amp;quot;Exec&amp;quot; dans la section &amp;quot;Advanced&amp;quot; de la colonne de gauche et glisser l'élément dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-10.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, cliquer sur le bloc nouvellement créé et configurer celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-11.png]]&lt;br /&gt;
&lt;br /&gt;
Le menu suivant s'affichera, et nous pourrons configurer le bloc &amp;quot;Exec&amp;quot; nouvellement créé.&lt;br /&gt;
&lt;br /&gt;
==== Command ====&lt;br /&gt;
&lt;br /&gt;
Nous allons y ajouter la commande à exécuter pour prendre une photo avec la caméra du Raspberry Pi et la stocker dans un fichier jpg dans le dossier /tmp/ de linux.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
raspistill -o /tmp/cam.jpg -w 640 -h 480&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous prenons soin de limiter la hauteur et la largeur de l'image afin de réduire son poids pour l'envoi par email.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-12.png]]&lt;br /&gt;
&lt;br /&gt;
==== +Append ====&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons décocher la case &amp;quot;msg.payload&amp;quot; si elle est cochée par défaut.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-13.png]]&lt;br /&gt;
&lt;br /&gt;
==== Extra input parameters et Timeout ====&lt;br /&gt;
&lt;br /&gt;
Nous n'aurons pas besoin de compléter ces champs pour notre projet.&lt;br /&gt;
&lt;br /&gt;
Si vous cochez le champ &amp;quot;Use spawn() instead of exec()?&amp;quot;, votre commande sera réalisée sous forme d'un processus résident et continuera de s'exécuter jusqu'à ce qu'elle se termine par elle-même (sauf si elle ne se termine jamais).&lt;br /&gt;
Cette solution implique que le programme n'attendra pas que cette commande soit réalisée pour passer aux étapes suivantes. &lt;br /&gt;
Si la suite de l'exécution de votre flux est susceptible d'utiliser le résultat de cette commande, nous vous déconseillons d'utiliser cette option sous peine de provoquer des erreurs à la suite du traitement du flux.&lt;br /&gt;
&lt;br /&gt;
Le champ &amp;quot;Timeout&amp;quot; permet de définir un temps d'attente maximum avant de mettre un terme à l'exécution de la commande. &lt;br /&gt;
Cela permet de débloquer la situation si la commande exécutée prends un temps anormalement long à s'exécuter.&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite compléter le champs nom, celui-ci sera utilisé pour nommer le bloc dans le &amp;quot;schéma&amp;quot;, mais aussi de nommer les logs comme pour le bloc &amp;quot;Exec&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-14.png]]&lt;br /&gt;
&lt;br /&gt;
=== Encodage de l'image en base64 ===&lt;br /&gt;
&lt;br /&gt;
Nous allons convertir la photo prise juste avant en utilisant une commande de conversion en base64.&lt;br /&gt;
Cela facilitera son injection dans un template HTML que nous allons créer ensuite pour construire un email.&lt;br /&gt;
&lt;br /&gt;
Nous allons tout d'abord cliquer sur le bloc &amp;quot;Exec&amp;quot; dans la section &amp;quot;Advanced&amp;quot; de la colonne de gauche et glisser l'élément dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-10.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, cliquer sur le bloc nouvellement créé et configurer celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-11.png]]&lt;br /&gt;
&lt;br /&gt;
Le menu suivant s'affichera, et nous pourrons configurer le bloc &amp;quot;Exec&amp;quot; nouvellement créé.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-15.png]]&lt;br /&gt;
&lt;br /&gt;
==== Command ====&lt;br /&gt;
&lt;br /&gt;
Nous allons y ajouter la commande à exécuter pour encoder en base 64 la photo prise précédemment avec la caméra du Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
base64 -i &amp;quot;/tmp/cam.jpg&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-16.png]]&lt;br /&gt;
&lt;br /&gt;
==== +Append ====&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons cocher la case &amp;quot;msg.payload&amp;quot; si elle n'est pas cochée par défaut pour que le résultat soit directement renvoyé par cette commande dans le &amp;quot;PayLoad&amp;quot; du flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-17.png]]&lt;br /&gt;
&lt;br /&gt;
==== Extra input parameters et Timeout ====&lt;br /&gt;
&lt;br /&gt;
Nous n'aurons pas besoin de compléter ces champs pour notre projet.&lt;br /&gt;
&lt;br /&gt;
Si vous cochez le champ &amp;quot;Use spawn() instead of exec()?&amp;quot;, votre commande sera réalisée sous forme d'un processus résident et continuera de s'exécuter jusqu'à ce qu'elle se termine par elle-même (sauf si elle ne se termine jamais).&lt;br /&gt;
Cette solution implique que le programme n'attendra pas que cette commande soit réalisée pour passer aux étapes suivantes. &lt;br /&gt;
Si la suite de l'exécution de votre flux est susceptible d'utiliser le résultat de cette commande, nous vous déconseillons d'utiliser cette option sous peine de provoquer des erreurs à la suite du traitement du flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-18.png]]&lt;br /&gt;
&lt;br /&gt;
Le champ &amp;quot;Timeout&amp;quot; permet de définir un temps d'attente maximum avant de mettre un terme à l'exécution de la commande. &lt;br /&gt;
Cela permet de débloquer la situation si la commande exécutée prends un temps anormalement long à s'exécuter.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-19.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite compléter le champs nom, celui-ci sera utilisé pour nommer le bloc dans le &amp;quot;schéma&amp;quot;, mais aussi de nommer les logs comme pour le bloc &amp;quot;Exec&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-20.png]]&lt;br /&gt;
&lt;br /&gt;
=== Création d'un email au format HTML ===&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant créer un template d'email au format HTML afin de mettre en forme le message que nous enverrons ensuite.&lt;br /&gt;
Nous allons pour cela utiliser un bloc &amp;quot;Template&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-21.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons attribuer un nom au bloc afin de l'identifier plus facilement dans le flux.&lt;br /&gt;
Nous allons donc le nommer &amp;quot;Contenu du mail&amp;quot; puisque nous créons le contenu du mail que nous enverrons ensuite.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-22.png]]&lt;br /&gt;
&lt;br /&gt;
==== Set property ====&lt;br /&gt;
&lt;br /&gt;
La propriété que nous souhaitons créer dans le flux est le &amp;quot;PayLoad&amp;quot;.&lt;br /&gt;
Ce PayLoad existe déjà, il contient pour le moment l'image au format &amp;quot;Base64&amp;quot; précédemment encodé.&lt;br /&gt;
Cela n'est pas un problème, après notre noeud (notre bloc), le PayLoad sera intégralement remplacé par le template que nous sommes en train de créer.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-23.png]]&lt;br /&gt;
&lt;br /&gt;
==== Template ====&lt;br /&gt;
&lt;br /&gt;
Dans ce template, nous allons créer une structure HTML de base minimum afin que la structure soit interprétée par la majorité des clients/webmail.&lt;br /&gt;
Vous pouvez la personnaliser à votre guise si vous avez les connaissances en HTML.&lt;br /&gt;
&lt;br /&gt;
Voici la structure de base pour notre projet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
    &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;meta charset=&amp;quot;utf8&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/head&amp;gt;&lt;br /&gt;
    &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Projet Photo par email&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;img src=&amp;quot;data:image/jpg;base64,{{payload}}&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pourrez remarquer que nous intégrons l'image en appelant le PayLoad à 'intérieur du code HTML dans la balise &amp;lt;img&amp;gt;.&lt;br /&gt;
C'est le PayLoad créé précédemment par le bloc &amp;quot;Exec&amp;quot; qui est récupéré à ce moment précis.&lt;br /&gt;
Ce PayLoad est remplacé dans le flux par le PayLoad complet avec notre template dans le flux par notre bloc Template.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-24.png]]&lt;br /&gt;
&lt;br /&gt;
=== Création d'un bloc (noeud) &amp;quot;Debug&amp;quot;  ===&lt;br /&gt;
&lt;br /&gt;
Nous allons ajouter la notion d'expéditeur dans le flux que nous avons créé à travers nos blocs (noeuds).&lt;br /&gt;
Pour rappel, actuellement nous avons deux propriétés avec des données dans notre flux. &lt;br /&gt;
Si nous voulons observer ce que nous avons créé jusque là, nous pouvons faire appel à un bloc &amp;quot;Debug&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Création du bloc &amp;quot;Debug&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Comme pour les blocs précédents, nous allons glisser/déposer un bloc débug dans l'espace de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-25.png]]&lt;br /&gt;
&lt;br /&gt;
Celui-ci s'appelle msg/payload par défaut&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-26.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons double-cliquer sur ce bloc pour le configurer.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-27.png]]&lt;br /&gt;
&lt;br /&gt;
==== Output ====&lt;br /&gt;
&lt;br /&gt;
Dans ce champs, nous allons choisir la partie du flux que nous souhaitons afficher, ou nous allons sélectionner le flux entier.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-28.png]]&lt;br /&gt;
&lt;br /&gt;
Sélectionner le flux entier, nous affichera le flux complet incluant toutes ses propriétés.&lt;br /&gt;
&lt;br /&gt;
 [[fichier:Rasp-Node-Red-picam-mail-29.png]]&lt;br /&gt;
&lt;br /&gt;
==== To =====&lt;br /&gt;
&lt;br /&gt;
La propriété &amp;quot;To&amp;quot; nous permet de choisir ou nous souhaitons afficher les données que nous récupérons. &lt;br /&gt;
Soit nous les affichons uniquement dans l'onglet &amp;quot;Debug&amp;quot; à droite de l'espace de travail, soit nous l'affichons dans cet onglet mais aussi dans la console de NodeJS.&lt;br /&gt;
Dans notre cas, nous allons nous contenter d'afficher nos éléments dans l'onglet de &amp;quot;Debug&amp;quot; à droite de notre espace de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-30.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Le champs Name nous servira à identifier quel bloc de &amp;quot;Debug&amp;quot; affiche les données en console ou dans l'onglet &amp;quot;Debug&amp;quot;. &lt;br /&gt;
Il faut donc le nommer efficacement pour bien attacher et comprendre les données que nous récupérons, surtout si nous en plaçons plusieurs dans le flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-31.png]]&lt;br /&gt;
&lt;br /&gt;
==== Exploitation et compréhension des données récupérées ====&lt;br /&gt;
&lt;br /&gt;
Nous avons placé notre bloc &amp;quot;Debug&amp;quot; à la suite du flux en dernière position. &lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-32.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons donc déployer le programme en cliquant sur &amp;quot;Deploy&amp;quot; en haut à droite de la page. &lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-33.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons exécuter manuellement le programme en cliquant sur le bouton se trouvant en début de chaîne:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-34.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite afficher l'onglet &amp;quot;Debug&amp;quot; sur le coté droit de la page et analyser les données récupérées:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-35.png]]&lt;br /&gt;
&lt;br /&gt;
==== Analyse des données récupérées dans l'onglet &amp;quot;Debug&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
08/05/2017 à 12:54:31 node: FORMATAGE&lt;br /&gt;
MCHobby - Photo bureau : msg : Object&lt;br /&gt;
object&lt;br /&gt;
_msgid: &amp;quot;81efe35c.3208d&amp;quot;&lt;br /&gt;
topic: &amp;quot;MCHobby - Photo bureau&amp;quot;&lt;br /&gt;
payload: &amp;quot;&amp;lt;html&amp;gt;↵ &amp;lt;head&amp;gt;↵ &amp;lt;meta charset=&amp;quot;utf8&amp;quot;/&amp;gt;↵ ↵ &amp;lt;/head&amp;gt;↵ &amp;lt;body&amp;gt;↵ &amp;lt;h1&amp;gt;MCHobby - Photo bureau&amp;lt;/h1&amp;gt;↵ &amp;lt;p&amp;gt;Cette photo est un instantané pris dans les bureaux de MCHobby.&amp;lt;/p&amp;gt;↵ &lt;br /&gt;
&amp;lt;img src=&amp;quot;data:image/jpg;base64,&amp;amp;#x2F;9j&amp;amp;#x2F;4WP6x2.../&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comme vous pourrez le constater, chaque élément du noeud est détaillé.&lt;br /&gt;
Les données sont cependant tronquées, le noeud &amp;quot;Debug&amp;quot; ne nous fourni pas la totalité du &amp;quot;PayLoad&amp;quot; mais nous avons déjà un bon aperçu des données qu'il contient.&lt;br /&gt;
&lt;br /&gt;
* '''_msgid:''' est un Id unique de message&lt;br /&gt;
* '''topic:''' est le sujet du mail, nous l'avons déterminé dans le premier bloc&lt;br /&gt;
* '''payload:''' contient les données du message formatées par le template que nous avons créé et complété par l'image en base64.&lt;br /&gt;
&lt;br /&gt;
{{tmbox | text = Les noeuds &amp;quot;Debug&amp;quot; sont pratiques. Ils nous permettent d'afficher une partie ou la totalité du flux tel qu'il est à l'endroit ou ils sont placés. Cela peut permettre d'identifier et de résoudre plus facilement des problèmes dans des opérations plus complexes et dans notre cas, cela nous permet de mieux comprendre comment fonctionne le noeud et comment les données sont transmises d'un bloc à l'autre.}}&lt;br /&gt;
&lt;br /&gt;
=== Création d'un expéditeur ===&lt;br /&gt;
&lt;br /&gt;
Nous avons construit petit à petit un message avec un sujet, mais il manque encore un détail: l'expéditeur de l'email que nous allons envoyer: le fameux &amp;quot;msg.from&amp;quot; que nous avons évoqué au début de tuto !&lt;br /&gt;
&lt;br /&gt;
Si vous avez bien suivi les étapes précédentes du tuto, jusqu'au noeud &amp;quot;Debug&amp;quot; et à son résultat, vous comprendrez facilement la démarche ci après pour ajouter un expéditeur dans le flux.&lt;br /&gt;
&lt;br /&gt;
Nous allons ajouter un nouveau noeud &amp;quot;Template&amp;quot; dans la zone de travail et double cliquer dessus pour afficher sa page de configuration:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-39.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite sélectionner le type de propriété que nous souhaitons injecter dans le flux: '''&amp;quot;msg.from&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-40.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cette propriété étant une adresse email, nous allons choisir le type '''&amp;quot;plaintext&amp;quot;''' comme type de données.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-41.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous allons enfin donner un nom explicite à notre bloc afin d'identifier facilement sa fonctionnalité parmi les autres blocs.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-42.png]]&lt;br /&gt;
&lt;br /&gt;
{{Rasp-Node-Red-TRAILER}}&lt;/div&gt;</summary>
		<author><name>AntoineWrt</name></author>
	</entry>
	<entry>
		<id>https://wiki.mchobby.be/index.php?title=Fichier:Rasp-Node-Red-picam-mail-42.png&amp;diff=22814</id>
		<title>Fichier:Rasp-Node-Red-picam-mail-42.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.mchobby.be/index.php?title=Fichier:Rasp-Node-Red-picam-mail-42.png&amp;diff=22814"/>
		<updated>2017-05-08T13:17:41Z</updated>

		<summary type="html">&lt;p&gt;AntoineWrt : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AntoineWrt</name></author>
	</entry>
	<entry>
		<id>https://wiki.mchobby.be/index.php?title=Fichier:Rasp-Node-Red-picam-mail-41.png&amp;diff=22813</id>
		<title>Fichier:Rasp-Node-Red-picam-mail-41.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.mchobby.be/index.php?title=Fichier:Rasp-Node-Red-picam-mail-41.png&amp;diff=22813"/>
		<updated>2017-05-08T13:17:26Z</updated>

		<summary type="html">&lt;p&gt;AntoineWrt : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AntoineWrt</name></author>
	</entry>
	<entry>
		<id>https://wiki.mchobby.be/index.php?title=Fichier:Rasp-Node-Red-picam-mail-40.png&amp;diff=22812</id>
		<title>Fichier:Rasp-Node-Red-picam-mail-40.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.mchobby.be/index.php?title=Fichier:Rasp-Node-Red-picam-mail-40.png&amp;diff=22812"/>
		<updated>2017-05-08T13:17:00Z</updated>

		<summary type="html">&lt;p&gt;AntoineWrt : AntoineWrt a téléversé une nouvelle version de Fichier:Rasp-Node-Red-picam-mail-40.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AntoineWrt</name></author>
	</entry>
	<entry>
		<id>https://wiki.mchobby.be/index.php?title=Fichier:Rasp-Node-Red-picam-mail-40.png&amp;diff=22811</id>
		<title>Fichier:Rasp-Node-Red-picam-mail-40.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.mchobby.be/index.php?title=Fichier:Rasp-Node-Red-picam-mail-40.png&amp;diff=22811"/>
		<updated>2017-05-08T13:15:47Z</updated>

		<summary type="html">&lt;p&gt;AntoineWrt : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AntoineWrt</name></author>
	</entry>
	<entry>
		<id>https://wiki.mchobby.be/index.php?title=Fichier:Rasp-Node-Red-picam-mail-39.png&amp;diff=22810</id>
		<title>Fichier:Rasp-Node-Red-picam-mail-39.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.mchobby.be/index.php?title=Fichier:Rasp-Node-Red-picam-mail-39.png&amp;diff=22810"/>
		<updated>2017-05-08T13:11:51Z</updated>

		<summary type="html">&lt;p&gt;AntoineWrt : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AntoineWrt</name></author>
	</entry>
	<entry>
		<id>https://wiki.mchobby.be/index.php?title=Rasp-Node-Red-picam-mail&amp;diff=22809</id>
		<title>Rasp-Node-Red-picam-mail</title>
		<link rel="alternate" type="text/html" href="https://wiki.mchobby.be/index.php?title=Rasp-Node-Red-picam-mail&amp;diff=22809"/>
		<updated>2017-05-08T13:10:46Z</updated>

		<summary type="html">&lt;p&gt;AntoineWrt : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Rasp-Node-Red-NAV}}&lt;br /&gt;
&lt;br /&gt;
{{traduction}}&lt;br /&gt;
&lt;br /&gt;
== PiCamRED - Envoi périodique de photos par email avec PiCam et NodeRED ==&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-01.png|900px]]&lt;br /&gt;
&lt;br /&gt;
=== Description du projet ===&lt;br /&gt;
&lt;br /&gt;
Dans ce tutoriel, nous allons réaliser des photos à l'aide de la caméra du RaspBerry Pi 2/3 et envoyer ces clichés par email de manière périodique grâce à NodeRED.&lt;br /&gt;
Nous allons donc utiliser plusieurs blocs et décrire de manière détaillée le déroulement de chaque étape de la réalisation de ce projet.&lt;br /&gt;
&lt;br /&gt;
Dans NodeRED, il est important de bien identifier la finalité de notre projet afin de connaître au préalable tous les éléments qu'il faudra créer et fournir à l'action finale (celle qui enverra un email).&lt;br /&gt;
&lt;br /&gt;
=== Quels sont les besoins du noeud email ===&lt;br /&gt;
&lt;br /&gt;
==== Composants nécessaires pour constituer un email ====&lt;br /&gt;
&lt;br /&gt;
Un email est composé des éléments suivants: &lt;br /&gt;
&lt;br /&gt;
* Un expéditeur&lt;br /&gt;
* Un destinataire&lt;br /&gt;
* Un sujet&lt;br /&gt;
* Le corps du message&lt;br /&gt;
&lt;br /&gt;
Tous ces éléments vont donc devoir être préparés afin de pouvoir construire le message à envoyer par le noeud final.&lt;br /&gt;
&lt;br /&gt;
Le noeud final aura aussi besoin d'un serveur SMTP (serveur d'envoi d'emails) et éventuellement de paramètres d'identification pour ce serveur d'envoi d'emails.&lt;br /&gt;
&lt;br /&gt;
==== Détail des besoins du noeud email ====&lt;br /&gt;
&lt;br /&gt;
La liste des éléments nécessaires s'affiche lorsque le bloc est dans la zone de travail (Schema).&lt;br /&gt;
Commençons donc par sélectionner le bloc email, et de le glisser dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
Commençons par cliquer sur le bloc email et nous maintenons le clic pour le glisser à droite dans l'espace de travail.&lt;br /&gt;
&lt;br /&gt;
(on choisit celui qui a son point de liaison à gauche, car nous voulons un bloc de sortie)&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-36.png]]&lt;br /&gt;
&lt;br /&gt;
Glissons le dans l'espace de travail, et cliquons un clic simple pour le sélectionner.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-37.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, dans la colonne à droite de cet espace de travail, nous cliquons sur info et nous pourrons découvrir les éléments nécessaires à la constitution d'un bloc email.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-38.png]]&lt;br /&gt;
&lt;br /&gt;
===== Nous utiliserons les champs suivants =====&lt;br /&gt;
&lt;br /&gt;
* '''msg.payload''' --&amp;gt; Ce champ contient le corps de l'email&lt;br /&gt;
* '''msg.topic''' --&amp;gt; Ce champ contient le sujet de l'email&lt;br /&gt;
* '''msg.from''' --&amp;gt; Ce champ contient l'email de l'expéditeur &lt;br /&gt;
* '''msg.to''' --&amp;gt; Ce champ contient l'email du destinataire&lt;br /&gt;
&lt;br /&gt;
Les autres champs ne seront pas utilisés dans notre cas, mais vous pourrez constater que le bloc email est complet de part ses fonctionnalités et possibilités.&lt;br /&gt;
&lt;br /&gt;
Les données de serveur et d'identification seront abordées en fin de tuto lors de la configuration finale du bloc.&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant passer à la réalisation du flux en commençant par le début de celui-ci.&lt;br /&gt;
&lt;br /&gt;
=== Création d'une action périodique ===&lt;br /&gt;
&lt;br /&gt;
Dans la colonne de gauche de NodeRED, se trouvent une liste de blocs à utiliser pour réaliser vos projets. Ils sont classés par &amp;quot;types&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Ainsi nous retrouvons les &amp;quot;types&amp;quot; suivants:&lt;br /&gt;
&lt;br /&gt;
* Input qui contient tous les blocs d'entrées&lt;br /&gt;
* Ouput qui contient tous les blocs de sortie&lt;br /&gt;
* Function qui contient des blocs de fonctions javascript etc...&lt;br /&gt;
* Social qui sont des blocs d'entrée ou sorties depuis ou vers les réseaux sociaux&lt;br /&gt;
* Storage qui sont des fonctions de lecture ou d'écriture de fichiers&lt;br /&gt;
* Analysis -&amp;gt;&amp;gt; Sentiment interprète du texte et détermine un score sur base d'un dictionnaire anglais, renvoie le texte avec ce score de -5 à +5, déterminant ainsi l'émotion susceptible d'être procuré par ce texte&lt;br /&gt;
* Advanced possède des outils permettant de détecter des changements dans des fichiers ou dossiers, de lire des flux RSS ou encore EXEC qui permet d'exécuter directement des commandes sous linux !&lt;br /&gt;
* Raspberry Pi contient des outils pour piloter/lire le GPIO du raspberry Pi&lt;br /&gt;
* Network qui contient un outil réseau de Ping&lt;br /&gt;
 &lt;br /&gt;
Nous allons créer une action périodique, c'est à dire paramétrer un bloc &amp;quot;INJECT&amp;quot; de manière à déclencher régulièrement une chaine d'actions que nous allons accrocher à la suite les unes après les autres.&lt;br /&gt;
Nous allons donc cliquer sur le bloc &amp;quot;Inject&amp;quot; dans la liste &amp;quot;Input&amp;quot; et maintenir ce clic pour le déplacer vers la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-02.png]]&lt;br /&gt;
&lt;br /&gt;
Nous obtiendrons donc une nouvelle instance &amp;quot;inject&amp;quot; qui portera le nom &amp;quot;Timestamp&amp;quot; (ce nom est attribué par défaut par NodeRED) comme dans la capture ci-dessous&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-03.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant double-cliquer sur celle-ci fin de l'éditer pour voir apparaitre le menu ci-dessous&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-04.png]]&lt;br /&gt;
&lt;br /&gt;
Il va falloir configurer ce bloc, mais avant tout voici une explication de celui-ci:&lt;br /&gt;
&lt;br /&gt;
==== Payload ====&lt;br /&gt;
&lt;br /&gt;
Le champs PayLoad est en fait le champ de données qui sera suivi d'un noeud à l'autre jusque à la fin de la chaine.&lt;br /&gt;
Dans ce module &amp;quot;inject&amp;quot;, nous allons donc déterminer quel type de données contiendra le &amp;quot;PayLoad&amp;quot; jusqu'à la fin de la chaine que l'on va réaliser.&lt;br /&gt;
&lt;br /&gt;
Dans notre cas, nous souhaitons construire un email, donc du contenu textuel, nous allons donc choisir &amp;quot;String&amp;quot; ce qui correspond à une chaine de caractères (du texte).&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-05.png]]&lt;br /&gt;
&lt;br /&gt;
==== Topic ====&lt;br /&gt;
&lt;br /&gt;
Le champs &amp;quot;Topic&amp;quot; est un champs de texte dans lequel nous allons mettre un sujet succinct décrivant notre chaine. &lt;br /&gt;
Dans notre cas, ce sujet fera office de sujet au mail que nous expédierons. &lt;br /&gt;
Nous allons donc être précis en un minimum de mots pour que le destinataire de l'email puisse facilement deviner le contenu de celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-06.png]]&lt;br /&gt;
&lt;br /&gt;
==== Repeat ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite choisir l'intervalle de déclenchement de notre action, sachant que nous avons le choix entre: &lt;br /&gt;
&lt;br /&gt;
* none  : pas de déclenchement périodique programmé&lt;br /&gt;
* interval : nous fixons un temps de déclenchement à partir du lancement du programme, l'action se réalisera à chaque fois que ce temps sera écoulé de manière répétée jusqu'à l'interruption manuelle du programme&lt;br /&gt;
* interval between times : nous fixons ici le déclenchement par interval, mais nous fixons aussi une fourchette d'heures et des jours pendant lesquels nous exécutons cet interval&lt;br /&gt;
* at a specific time : nous fixons une heure d'exécution, et un ou plusieurs jours d'exécution. Dans ce cas l'action n'est pas répétée en continu mais éxécutée une seule fois par jour à l'heure programmée&lt;br /&gt;
&lt;br /&gt;
Dans notre exemple, nous allons fixer un intervalle de 15 secondes pour commencer. Nous pourrons ensuite augmenter cette valeur pour éviter de recevoir trop d'emails avec des photos :D&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-07.png]]&lt;br /&gt;
&lt;br /&gt;
La case &amp;quot;inject once at start&amp;quot; permet de ne pas attendre le premier cycle avant d'exécuter une première fois l'action. Elle se lancera dès le lancement du programme, puis périodiquement selon les cycles déterminés par l'intervalle.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-08.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Le champs Name va déterminer le nom que portera le bloc dans l'espace de travail et dans les logs (si nous créons des blocs de log ensuite pour contrôler des étapes).&lt;br /&gt;
Il est important de bien établir ce nom de manière explicite, car le nom des blocs permettra de comprendre et retrouver facilement la logique du schéma construit, même si l'on a pas consulté celui-ci pendant une longue période.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-09.png]]&lt;br /&gt;
&lt;br /&gt;
=== Capture d'une image depuis la PiCam ===&lt;br /&gt;
&lt;br /&gt;
Nous allons aller à l'essentiel en ce qui concerne la capture photo en utilisant une commande simple pour prendre un cliché et renvoyer celui-ci dans le flux NodeRED grâce à un bloc permettant d'exécuter des commandes bash.&lt;br /&gt;
&lt;br /&gt;
{{ambox | text = Vous trouverez un TUTO détaillé sur la PiCam vous permettant de prendre la main, ou de la paramétrer si vous n'avez pas encore utilisé celle-ci auparavant: ....___TUTO___...}} &lt;br /&gt;
&lt;br /&gt;
Nous allons tout d'abord cliquer sur le bloc &amp;quot;Exec&amp;quot; dans la section &amp;quot;Advanced&amp;quot; de la colonne de gauche et glisser l'élément dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-10.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, cliquer sur le bloc nouvellement créé et configurer celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-11.png]]&lt;br /&gt;
&lt;br /&gt;
Le menu suivant s'affichera, et nous pourrons configurer le bloc &amp;quot;Exec&amp;quot; nouvellement créé.&lt;br /&gt;
&lt;br /&gt;
==== Command ====&lt;br /&gt;
&lt;br /&gt;
Nous allons y ajouter la commande à exécuter pour prendre une photo avec la caméra du Raspberry Pi et la stocker dans un fichier jpg dans le dossier /tmp/ de linux.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
raspistill -o /tmp/cam.jpg -w 640 -h 480&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous prenons soin de limiter la hauteur et la largeur de l'image afin de réduire son poids pour l'envoi par email.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-12.png]]&lt;br /&gt;
&lt;br /&gt;
==== +Append ====&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons décocher la case &amp;quot;msg.payload&amp;quot; si elle est cochée par défaut.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-13.png]]&lt;br /&gt;
&lt;br /&gt;
==== Extra input parameters et Timeout ====&lt;br /&gt;
&lt;br /&gt;
Nous n'aurons pas besoin de compléter ces champs pour notre projet.&lt;br /&gt;
&lt;br /&gt;
Si vous cochez le champ &amp;quot;Use spawn() instead of exec()?&amp;quot;, votre commande sera réalisée sous forme d'un processus résident et continuera de s'exécuter jusqu'à ce qu'elle se termine par elle-même (sauf si elle ne se termine jamais).&lt;br /&gt;
Cette solution implique que le programme n'attendra pas que cette commande soit réalisée pour passer aux étapes suivantes. &lt;br /&gt;
Si la suite de l'exécution de votre flux est susceptible d'utiliser le résultat de cette commande, nous vous déconseillons d'utiliser cette option sous peine de provoquer des erreurs à la suite du traitement du flux.&lt;br /&gt;
&lt;br /&gt;
Le champ &amp;quot;Timeout&amp;quot; permet de définir un temps d'attente maximum avant de mettre un terme à l'exécution de la commande. &lt;br /&gt;
Cela permet de débloquer la situation si la commande exécutée prends un temps anormalement long à s'exécuter.&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite compléter le champs nom, celui-ci sera utilisé pour nommer le bloc dans le &amp;quot;schéma&amp;quot;, mais aussi de nommer les logs comme pour le bloc &amp;quot;Exec&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-14.png]]&lt;br /&gt;
&lt;br /&gt;
=== Encodage de l'image en base64 ===&lt;br /&gt;
&lt;br /&gt;
Nous allons convertir la photo prise juste avant en utilisant une commande de conversion en base64.&lt;br /&gt;
Cela facilitera son injection dans un template HTML que nous allons créer ensuite pour construire un email.&lt;br /&gt;
&lt;br /&gt;
Nous allons tout d'abord cliquer sur le bloc &amp;quot;Exec&amp;quot; dans la section &amp;quot;Advanced&amp;quot; de la colonne de gauche et glisser l'élément dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-10.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, cliquer sur le bloc nouvellement créé et configurer celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-11.png]]&lt;br /&gt;
&lt;br /&gt;
Le menu suivant s'affichera, et nous pourrons configurer le bloc &amp;quot;Exec&amp;quot; nouvellement créé.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-15.png]]&lt;br /&gt;
&lt;br /&gt;
==== Command ====&lt;br /&gt;
&lt;br /&gt;
Nous allons y ajouter la commande à exécuter pour encoder en base 64 la photo prise précédemment avec la caméra du Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
base64 -i &amp;quot;/tmp/cam.jpg&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-16.png]]&lt;br /&gt;
&lt;br /&gt;
==== +Append ====&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons cocher la case &amp;quot;msg.payload&amp;quot; si elle n'est pas cochée par défaut pour que le résultat soit directement renvoyé par cette commande dans le &amp;quot;PayLoad&amp;quot; du flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-17.png]]&lt;br /&gt;
&lt;br /&gt;
==== Extra input parameters et Timeout ====&lt;br /&gt;
&lt;br /&gt;
Nous n'aurons pas besoin de compléter ces champs pour notre projet.&lt;br /&gt;
&lt;br /&gt;
Si vous cochez le champ &amp;quot;Use spawn() instead of exec()?&amp;quot;, votre commande sera réalisée sous forme d'un processus résident et continuera de s'exécuter jusqu'à ce qu'elle se termine par elle-même (sauf si elle ne se termine jamais).&lt;br /&gt;
Cette solution implique que le programme n'attendra pas que cette commande soit réalisée pour passer aux étapes suivantes. &lt;br /&gt;
Si la suite de l'exécution de votre flux est susceptible d'utiliser le résultat de cette commande, nous vous déconseillons d'utiliser cette option sous peine de provoquer des erreurs à la suite du traitement du flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-18.png]]&lt;br /&gt;
&lt;br /&gt;
Le champ &amp;quot;Timeout&amp;quot; permet de définir un temps d'attente maximum avant de mettre un terme à l'exécution de la commande. &lt;br /&gt;
Cela permet de débloquer la situation si la commande exécutée prends un temps anormalement long à s'exécuter.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-19.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite compléter le champs nom, celui-ci sera utilisé pour nommer le bloc dans le &amp;quot;schéma&amp;quot;, mais aussi de nommer les logs comme pour le bloc &amp;quot;Exec&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-20.png]]&lt;br /&gt;
&lt;br /&gt;
=== Création d'un email au format HTML ===&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant créer un template d'email au format HTML afin de mettre en forme le message que nous enverrons ensuite.&lt;br /&gt;
Nous allons pour cela utiliser un bloc &amp;quot;Template&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-21.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons attribuer un nom au bloc afin de l'identifier plus facilement dans le flux.&lt;br /&gt;
Nous allons donc le nommer &amp;quot;Contenu du mail&amp;quot; puisque nous créons le contenu du mail que nous enverrons ensuite.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-22.png]]&lt;br /&gt;
&lt;br /&gt;
==== Set property ====&lt;br /&gt;
&lt;br /&gt;
La propriété que nous souhaitons créer dans le flux est le &amp;quot;PayLoad&amp;quot;.&lt;br /&gt;
Ce PayLoad existe déjà, il contient pour le moment l'image au format &amp;quot;Base64&amp;quot; précédemment encodé.&lt;br /&gt;
Cela n'est pas un problème, après notre noeud (notre bloc), le PayLoad sera intégralement remplacé par le template que nous sommes en train de créer.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-23.png]]&lt;br /&gt;
&lt;br /&gt;
==== Template ====&lt;br /&gt;
&lt;br /&gt;
Dans ce template, nous allons créer une structure HTML de base minimum afin que la structure soit interprétée par la majorité des clients/webmail.&lt;br /&gt;
Vous pouvez la personnaliser à votre guise si vous avez les connaissances en HTML.&lt;br /&gt;
&lt;br /&gt;
Voici la structure de base pour notre projet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
    &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;meta charset=&amp;quot;utf8&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/head&amp;gt;&lt;br /&gt;
    &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Projet Photo par email&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;img src=&amp;quot;data:image/jpg;base64,{{payload}}&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pourrez remarquer que nous intégrons l'image en appelant le PayLoad à 'intérieur du code HTML dans la balise &amp;lt;img&amp;gt;.&lt;br /&gt;
C'est le PayLoad créé précédemment par le bloc &amp;quot;Exec&amp;quot; qui est récupéré à ce moment précis.&lt;br /&gt;
Ce PayLoad est remplacé dans le flux par le PayLoad complet avec notre template dans le flux par notre bloc Template.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-24.png]]&lt;br /&gt;
&lt;br /&gt;
=== Création d'un bloc (noeud) &amp;quot;Debug&amp;quot;  ===&lt;br /&gt;
&lt;br /&gt;
Nous allons ajouter la notion d'expéditeur dans le flux que nous avons créé à travers nos blocs (noeuds).&lt;br /&gt;
Pour rappel, actuellement nous avons deux propriétés avec des données dans notre flux. &lt;br /&gt;
Si nous voulons observer ce que nous avons créé jusque là, nous pouvons faire appel à un bloc &amp;quot;Debug&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Création du bloc &amp;quot;Debug&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Comme pour les blocs précédents, nous allons glisser/déposer un bloc débug dans l'espace de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-25.png]]&lt;br /&gt;
&lt;br /&gt;
Celui-ci s'appelle msg/payload par défaut&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-26.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons double-cliquer sur ce bloc pour le configurer.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-27.png]]&lt;br /&gt;
&lt;br /&gt;
==== Output ====&lt;br /&gt;
&lt;br /&gt;
Dans ce champs, nous allons choisir la partie du flux que nous souhaitons afficher, ou nous allons sélectionner le flux entier.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-28.png]]&lt;br /&gt;
&lt;br /&gt;
Sélectionner le flux entier, nous affichera le flux complet incluant toutes ses propriétés.&lt;br /&gt;
&lt;br /&gt;
 [[fichier:Rasp-Node-Red-picam-mail-29.png]]&lt;br /&gt;
&lt;br /&gt;
==== To =====&lt;br /&gt;
&lt;br /&gt;
La propriété &amp;quot;To&amp;quot; nous permet de choisir ou nous souhaitons afficher les données que nous récupérons. &lt;br /&gt;
Soit nous les affichons uniquement dans l'onglet &amp;quot;Debug&amp;quot; à droite de l'espace de travail, soit nous l'affichons dans cet onglet mais aussi dans la console de NodeJS.&lt;br /&gt;
Dans notre cas, nous allons nous contenter d'afficher nos éléments dans l'onglet de &amp;quot;Debug&amp;quot; à droite de notre espace de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-30.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Le champs Name nous servira à identifier quel bloc de &amp;quot;Debug&amp;quot; affiche les données en console ou dans l'onglet &amp;quot;Debug&amp;quot;. &lt;br /&gt;
Il faut donc le nommer efficacement pour bien attacher et comprendre les données que nous récupérons, surtout si nous en plaçons plusieurs dans le flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-31.png]]&lt;br /&gt;
&lt;br /&gt;
==== Exploitation et compréhension des données récupérées ====&lt;br /&gt;
&lt;br /&gt;
Nous avons placé notre bloc &amp;quot;Debug&amp;quot; à la suite du flux en dernière position. &lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-32.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons donc déployer le programme en cliquant sur &amp;quot;Deploy&amp;quot; en haut à droite de la page. &lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-33.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons exécuter manuellement le programme en cliquant sur le bouton se trouvant en début de chaîne:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-34.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite afficher l'onglet &amp;quot;Debug&amp;quot; sur le coté droit de la page et analyser les données récupérées:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-35.png]]&lt;br /&gt;
&lt;br /&gt;
==== Analyse des données récupérées dans l'onglet &amp;quot;Debug&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
08/05/2017 à 12:54:31 node: FORMATAGE&lt;br /&gt;
MCHobby - Photo bureau : msg : Object&lt;br /&gt;
object&lt;br /&gt;
_msgid: &amp;quot;81efe35c.3208d&amp;quot;&lt;br /&gt;
topic: &amp;quot;MCHobby - Photo bureau&amp;quot;&lt;br /&gt;
payload: &amp;quot;&amp;lt;html&amp;gt;↵ &amp;lt;head&amp;gt;↵ &amp;lt;meta charset=&amp;quot;utf8&amp;quot;/&amp;gt;↵ ↵ &amp;lt;/head&amp;gt;↵ &amp;lt;body&amp;gt;↵ &amp;lt;h1&amp;gt;MCHobby - Photo bureau&amp;lt;/h1&amp;gt;↵ &amp;lt;p&amp;gt;Cette photo est un instantané pris dans les bureaux de MCHobby.&amp;lt;/p&amp;gt;↵ &lt;br /&gt;
&amp;lt;img src=&amp;quot;data:image/jpg;base64,&amp;amp;#x2F;9j&amp;amp;#x2F;4WP6x2.../&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comme vous pourrez le constater, chaque élément du noeud est détaillé.&lt;br /&gt;
Les données sont cependant tronquées, le noeud &amp;quot;Debug&amp;quot; ne nous fourni pas la totalité du &amp;quot;PayLoad&amp;quot; mais nous avons déjà un bon aperçu des données qu'il contient.&lt;br /&gt;
&lt;br /&gt;
* '''_msgid:''' est un Id unique de message&lt;br /&gt;
* '''topic:''' est le sujet du mail, nous l'avons déterminé dans le premier bloc&lt;br /&gt;
* '''payload:''' contient les données du message formatées par le template que nous avons créé et complété par l'image en base64.&lt;br /&gt;
&lt;br /&gt;
{{tmbox | text = Les noeuds &amp;quot;Debug&amp;quot; sont pratiques. Ils nous permettent d'afficher une partie ou la totalité du flux tel qu'il est à l'endroit ou ils sont placés. Cela peut permettre d'identifier et de résoudre plus facilement des problèmes dans des opérations plus complexes et dans notre cas, cela nous permet de mieux comprendre comment fonctionne le noeud et comment les données sont transmises d'un bloc à l'autre.}}&lt;br /&gt;
&lt;br /&gt;
=== Création d'un expéditeur ===&lt;br /&gt;
&lt;br /&gt;
Nous avons construit petit à petit un message avec un sujet, mais il manque encore un détail: l'expéditeur de l'email que nous allons envoyer: le fameux &amp;quot;msg.from&amp;quot; que nous avons évoqué au début de tuto !&lt;br /&gt;
&lt;br /&gt;
Si vous avez bien suivi les étapes précédentes du tuto, jusqu'au noeud &amp;quot;Debug&amp;quot; et à son résultat, vous comprendrez facilement la démarche ci après pour ajouter un expéditeur dans le flux.&lt;br /&gt;
&lt;br /&gt;
Nous allons ajouter un nouveau noeud &amp;quot;Template&amp;quot; dans la zone de travail et double cliquer dessus pour afficher sa page de configuration:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-39.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite sélectionner le type de propriété que nous souhaitons injecter dans le flux: '''&amp;quot;msg.from&amp;quot;'''&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-40.png]]&lt;br /&gt;
&lt;br /&gt;
Cette propriété étant une adresse email, nous allons choisir le type '''&amp;quot;plaintext&amp;quot;''' comme type de données.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-41.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons enfin donner un nom explicite à notre bloc afin d'identifier facilement sa fonctionnalité parmi les autres blocs.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-42.png]]&lt;br /&gt;
&lt;br /&gt;
{{Rasp-Node-Red-TRAILER}}&lt;/div&gt;</summary>
		<author><name>AntoineWrt</name></author>
	</entry>
	<entry>
		<id>https://wiki.mchobby.be/index.php?title=Rasp-Node-Red-picam-mail&amp;diff=22808</id>
		<title>Rasp-Node-Red-picam-mail</title>
		<link rel="alternate" type="text/html" href="https://wiki.mchobby.be/index.php?title=Rasp-Node-Red-picam-mail&amp;diff=22808"/>
		<updated>2017-05-08T13:07:17Z</updated>

		<summary type="html">&lt;p&gt;AntoineWrt : /* Création d'un expéditeur */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Rasp-Node-Red-NAV}}&lt;br /&gt;
&lt;br /&gt;
{{traduction}}&lt;br /&gt;
&lt;br /&gt;
== PiCamRED - Envoi périodique de photos par email avec PiCam et NodeRED ==&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-01.png|900px]]&lt;br /&gt;
&lt;br /&gt;
=== Description du projet ===&lt;br /&gt;
&lt;br /&gt;
Dans ce tutoriel, nous allons réaliser des photos à l'aide de la caméra du RaspBerry Pi 2/3 et envoyer ces clichés par email de manière périodique grâce à NodeRED.&lt;br /&gt;
Nous allons donc utiliser plusieurs blocs et décrire de manière détaillée le déroulement de chaque étape de la réalisation de ce projet.&lt;br /&gt;
&lt;br /&gt;
Dans NodeRED, il est important de bien identifier la finalité de notre projet afin de connaître au préalable tous les éléments qu'il faudra créer et fournir à l'action finale (celle qui enverra un email).&lt;br /&gt;
&lt;br /&gt;
=== Quels sont les besoins du noeud email ===&lt;br /&gt;
&lt;br /&gt;
==== Composants nécessaires pour constituer un email ====&lt;br /&gt;
&lt;br /&gt;
Un email est composé des éléments suivants: &lt;br /&gt;
&lt;br /&gt;
* Un expéditeur&lt;br /&gt;
* Un destinataire&lt;br /&gt;
* Un sujet&lt;br /&gt;
* Le corps du message&lt;br /&gt;
&lt;br /&gt;
Tous ces éléments vont donc devoir être préparés afin de pouvoir construire le message à envoyer par le noeud final.&lt;br /&gt;
&lt;br /&gt;
Le noeud final aura aussi besoin d'un serveur SMTP (serveur d'envoi d'emails) et éventuellement de paramètres d'identification pour ce serveur d'envoi d'emails.&lt;br /&gt;
&lt;br /&gt;
==== Détail des besoins du noeud email ====&lt;br /&gt;
&lt;br /&gt;
La liste des éléments nécessaires s'affiche lorsque le bloc est dans la zone de travail (Schema).&lt;br /&gt;
Commençons donc par sélectionner le bloc email, et de le glisser dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
Commençons par cliquer sur le bloc email et nous maintenons le clic pour le glisser à droite dans l'espace de travail.&lt;br /&gt;
&lt;br /&gt;
(on choisit celui qui a son point de liaison à gauche, car nous voulons un bloc de sortie)&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-36.png]]&lt;br /&gt;
&lt;br /&gt;
Glissons le dans l'espace de travail, et cliquons un clic simple pour le sélectionner.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-37.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, dans la colonne à droite de cet espace de travail, nous cliquons sur info et nous pourrons découvrir les éléments nécessaires à la constitution d'un bloc email.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-38.png]]&lt;br /&gt;
&lt;br /&gt;
===== Nous utiliserons les champs suivants =====&lt;br /&gt;
&lt;br /&gt;
* '''msg.payload''' --&amp;gt; Ce champ contient le corps de l'email&lt;br /&gt;
* '''msg.topic''' --&amp;gt; Ce champ contient le sujet de l'email&lt;br /&gt;
* '''msg.from''' --&amp;gt; Ce champ contient l'email de l'expéditeur &lt;br /&gt;
* '''msg.to''' --&amp;gt; Ce champ contient l'email du destinataire&lt;br /&gt;
&lt;br /&gt;
Les autres champs ne seront pas utilisés dans notre cas, mais vous pourrez constater que le bloc email est complet de part ses fonctionnalités et possibilités.&lt;br /&gt;
&lt;br /&gt;
Les données de serveur et d'identification seront abordées en fin de tuto lors de la configuration finale du bloc.&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant passer à la réalisation du flux en commençant par le début de celui-ci.&lt;br /&gt;
&lt;br /&gt;
=== Création d'une action périodique ===&lt;br /&gt;
&lt;br /&gt;
Dans la colonne de gauche de NodeRED, se trouvent une liste de blocs à utiliser pour réaliser vos projets. Ils sont classés par &amp;quot;types&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Ainsi nous retrouvons les &amp;quot;types&amp;quot; suivants:&lt;br /&gt;
&lt;br /&gt;
* Input qui contient tous les blocs d'entrées&lt;br /&gt;
* Ouput qui contient tous les blocs de sortie&lt;br /&gt;
* Function qui contient des blocs de fonctions javascript etc...&lt;br /&gt;
* Social qui sont des blocs d'entrée ou sorties depuis ou vers les réseaux sociaux&lt;br /&gt;
* Storage qui sont des fonctions de lecture ou d'écriture de fichiers&lt;br /&gt;
* Analysis -&amp;gt;&amp;gt; Sentiment interprète du texte et détermine un score sur base d'un dictionnaire anglais, renvoie le texte avec ce score de -5 à +5, déterminant ainsi l'émotion susceptible d'être procuré par ce texte&lt;br /&gt;
* Advanced possède des outils permettant de détecter des changements dans des fichiers ou dossiers, de lire des flux RSS ou encore EXEC qui permet d'exécuter directement des commandes sous linux !&lt;br /&gt;
* Raspberry Pi contient des outils pour piloter/lire le GPIO du raspberry Pi&lt;br /&gt;
* Network qui contient un outil réseau de Ping&lt;br /&gt;
 &lt;br /&gt;
Nous allons créer une action périodique, c'est à dire paramétrer un bloc &amp;quot;INJECT&amp;quot; de manière à déclencher régulièrement une chaine d'actions que nous allons accrocher à la suite les unes après les autres.&lt;br /&gt;
Nous allons donc cliquer sur le bloc &amp;quot;Inject&amp;quot; dans la liste &amp;quot;Input&amp;quot; et maintenir ce clic pour le déplacer vers la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-02.png]]&lt;br /&gt;
&lt;br /&gt;
Nous obtiendrons donc une nouvelle instance &amp;quot;inject&amp;quot; qui portera le nom &amp;quot;Timestamp&amp;quot; (ce nom est attribué par défaut par NodeRED) comme dans la capture ci-dessous&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-03.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant double-cliquer sur celle-ci fin de l'éditer pour voir apparaitre le menu ci-dessous&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-04.png]]&lt;br /&gt;
&lt;br /&gt;
Il va falloir configurer ce bloc, mais avant tout voici une explication de celui-ci:&lt;br /&gt;
&lt;br /&gt;
==== Payload ====&lt;br /&gt;
&lt;br /&gt;
Le champs PayLoad est en fait le champ de données qui sera suivi d'un noeud à l'autre jusque à la fin de la chaine.&lt;br /&gt;
Dans ce module &amp;quot;inject&amp;quot;, nous allons donc déterminer quel type de données contiendra le &amp;quot;PayLoad&amp;quot; jusqu'à la fin de la chaine que l'on va réaliser.&lt;br /&gt;
&lt;br /&gt;
Dans notre cas, nous souhaitons construire un email, donc du contenu textuel, nous allons donc choisir &amp;quot;String&amp;quot; ce qui correspond à une chaine de caractères (du texte).&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-05.png]]&lt;br /&gt;
&lt;br /&gt;
==== Topic ====&lt;br /&gt;
&lt;br /&gt;
Le champs &amp;quot;Topic&amp;quot; est un champs de texte dans lequel nous allons mettre un sujet succinct décrivant notre chaine. &lt;br /&gt;
Dans notre cas, ce sujet fera office de sujet au mail que nous expédierons. &lt;br /&gt;
Nous allons donc être précis en un minimum de mots pour que le destinataire de l'email puisse facilement deviner le contenu de celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-06.png]]&lt;br /&gt;
&lt;br /&gt;
==== Repeat ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite choisir l'intervalle de déclenchement de notre action, sachant que nous avons le choix entre: &lt;br /&gt;
&lt;br /&gt;
* none  : pas de déclenchement périodique programmé&lt;br /&gt;
* interval : nous fixons un temps de déclenchement à partir du lancement du programme, l'action se réalisera à chaque fois que ce temps sera écoulé de manière répétée jusqu'à l'interruption manuelle du programme&lt;br /&gt;
* interval between times : nous fixons ici le déclenchement par interval, mais nous fixons aussi une fourchette d'heures et des jours pendant lesquels nous exécutons cet interval&lt;br /&gt;
* at a specific time : nous fixons une heure d'exécution, et un ou plusieurs jours d'exécution. Dans ce cas l'action n'est pas répétée en continu mais éxécutée une seule fois par jour à l'heure programmée&lt;br /&gt;
&lt;br /&gt;
Dans notre exemple, nous allons fixer un intervalle de 15 secondes pour commencer. Nous pourrons ensuite augmenter cette valeur pour éviter de recevoir trop d'emails avec des photos :D&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-07.png]]&lt;br /&gt;
&lt;br /&gt;
La case &amp;quot;inject once at start&amp;quot; permet de ne pas attendre le premier cycle avant d'exécuter une première fois l'action. Elle se lancera dès le lancement du programme, puis périodiquement selon les cycles déterminés par l'intervalle.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-08.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Le champs Name va déterminer le nom que portera le bloc dans l'espace de travail et dans les logs (si nous créons des blocs de log ensuite pour contrôler des étapes).&lt;br /&gt;
Il est important de bien établir ce nom de manière explicite, car le nom des blocs permettra de comprendre et retrouver facilement la logique du schéma construit, même si l'on a pas consulté celui-ci pendant une longue période.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-09.png]]&lt;br /&gt;
&lt;br /&gt;
=== Capture d'une image depuis la PiCam ===&lt;br /&gt;
&lt;br /&gt;
Nous allons aller à l'essentiel en ce qui concerne la capture photo en utilisant une commande simple pour prendre un cliché et renvoyer celui-ci dans le flux NodeRED grâce à un bloc permettant d'exécuter des commandes bash.&lt;br /&gt;
&lt;br /&gt;
{{ambox | text = Vous trouverez un TUTO détaillé sur la PiCam vous permettant de prendre la main, ou de la paramétrer si vous n'avez pas encore utilisé celle-ci auparavant: ....___TUTO___...}} &lt;br /&gt;
&lt;br /&gt;
Nous allons tout d'abord cliquer sur le bloc &amp;quot;Exec&amp;quot; dans la section &amp;quot;Advanced&amp;quot; de la colonne de gauche et glisser l'élément dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-10.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, cliquer sur le bloc nouvellement créé et configurer celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-11.png]]&lt;br /&gt;
&lt;br /&gt;
Le menu suivant s'affichera, et nous pourrons configurer le bloc &amp;quot;Exec&amp;quot; nouvellement créé.&lt;br /&gt;
&lt;br /&gt;
==== Command ====&lt;br /&gt;
&lt;br /&gt;
Nous allons y ajouter la commande à exécuter pour prendre une photo avec la caméra du Raspberry Pi et la stocker dans un fichier jpg dans le dossier /tmp/ de linux.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
raspistill -o /tmp/cam.jpg -w 640 -h 480&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous prenons soin de limiter la hauteur et la largeur de l'image afin de réduire son poids pour l'envoi par email.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-12.png]]&lt;br /&gt;
&lt;br /&gt;
==== +Append ====&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons décocher la case &amp;quot;msg.payload&amp;quot; si elle est cochée par défaut.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-13.png]]&lt;br /&gt;
&lt;br /&gt;
==== Extra input parameters et Timeout ====&lt;br /&gt;
&lt;br /&gt;
Nous n'aurons pas besoin de compléter ces champs pour notre projet.&lt;br /&gt;
&lt;br /&gt;
Si vous cochez le champ &amp;quot;Use spawn() instead of exec()?&amp;quot;, votre commande sera réalisée sous forme d'un processus résident et continuera de s'exécuter jusqu'à ce qu'elle se termine par elle-même (sauf si elle ne se termine jamais).&lt;br /&gt;
Cette solution implique que le programme n'attendra pas que cette commande soit réalisée pour passer aux étapes suivantes. &lt;br /&gt;
Si la suite de l'exécution de votre flux est susceptible d'utiliser le résultat de cette commande, nous vous déconseillons d'utiliser cette option sous peine de provoquer des erreurs à la suite du traitement du flux.&lt;br /&gt;
&lt;br /&gt;
Le champ &amp;quot;Timeout&amp;quot; permet de définir un temps d'attente maximum avant de mettre un terme à l'exécution de la commande. &lt;br /&gt;
Cela permet de débloquer la situation si la commande exécutée prends un temps anormalement long à s'exécuter.&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite compléter le champs nom, celui-ci sera utilisé pour nommer le bloc dans le &amp;quot;schéma&amp;quot;, mais aussi de nommer les logs comme pour le bloc &amp;quot;Exec&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-14.png]]&lt;br /&gt;
&lt;br /&gt;
=== Encodage de l'image en base64 ===&lt;br /&gt;
&lt;br /&gt;
Nous allons convertir la photo prise juste avant en utilisant une commande de conversion en base64.&lt;br /&gt;
Cela facilitera son injection dans un template HTML que nous allons créer ensuite pour construire un email.&lt;br /&gt;
&lt;br /&gt;
Nous allons tout d'abord cliquer sur le bloc &amp;quot;Exec&amp;quot; dans la section &amp;quot;Advanced&amp;quot; de la colonne de gauche et glisser l'élément dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-10.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, cliquer sur le bloc nouvellement créé et configurer celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-11.png]]&lt;br /&gt;
&lt;br /&gt;
Le menu suivant s'affichera, et nous pourrons configurer le bloc &amp;quot;Exec&amp;quot; nouvellement créé.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-15.png]]&lt;br /&gt;
&lt;br /&gt;
==== Command ====&lt;br /&gt;
&lt;br /&gt;
Nous allons y ajouter la commande à exécuter pour encoder en base 64 la photo prise précédemment avec la caméra du Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
base64 -i &amp;quot;/tmp/cam.jpg&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-16.png]]&lt;br /&gt;
&lt;br /&gt;
==== +Append ====&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons cocher la case &amp;quot;msg.payload&amp;quot; si elle n'est pas cochée par défaut pour que le résultat soit directement renvoyé par cette commande dans le &amp;quot;PayLoad&amp;quot; du flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-17.png]]&lt;br /&gt;
&lt;br /&gt;
==== Extra input parameters et Timeout ====&lt;br /&gt;
&lt;br /&gt;
Nous n'aurons pas besoin de compléter ces champs pour notre projet.&lt;br /&gt;
&lt;br /&gt;
Si vous cochez le champ &amp;quot;Use spawn() instead of exec()?&amp;quot;, votre commande sera réalisée sous forme d'un processus résident et continuera de s'exécuter jusqu'à ce qu'elle se termine par elle-même (sauf si elle ne se termine jamais).&lt;br /&gt;
Cette solution implique que le programme n'attendra pas que cette commande soit réalisée pour passer aux étapes suivantes. &lt;br /&gt;
Si la suite de l'exécution de votre flux est susceptible d'utiliser le résultat de cette commande, nous vous déconseillons d'utiliser cette option sous peine de provoquer des erreurs à la suite du traitement du flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-18.png]]&lt;br /&gt;
&lt;br /&gt;
Le champ &amp;quot;Timeout&amp;quot; permet de définir un temps d'attente maximum avant de mettre un terme à l'exécution de la commande. &lt;br /&gt;
Cela permet de débloquer la situation si la commande exécutée prends un temps anormalement long à s'exécuter.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-19.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite compléter le champs nom, celui-ci sera utilisé pour nommer le bloc dans le &amp;quot;schéma&amp;quot;, mais aussi de nommer les logs comme pour le bloc &amp;quot;Exec&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-20.png]]&lt;br /&gt;
&lt;br /&gt;
=== Création d'un email au format HTML ===&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant créer un template d'email au format HTML afin de mettre en forme le message que nous enverrons ensuite.&lt;br /&gt;
Nous allons pour cela utiliser un bloc &amp;quot;Template&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-21.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons attribuer un nom au bloc afin de l'identifier plus facilement dans le flux.&lt;br /&gt;
Nous allons donc le nommer &amp;quot;Contenu du mail&amp;quot; puisque nous créons le contenu du mail que nous enverrons ensuite.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-22.png]]&lt;br /&gt;
&lt;br /&gt;
==== Set property ====&lt;br /&gt;
&lt;br /&gt;
La propriété que nous souhaitons créer dans le flux est le &amp;quot;PayLoad&amp;quot;.&lt;br /&gt;
Ce PayLoad existe déjà, il contient pour le moment l'image au format &amp;quot;Base64&amp;quot; précédemment encodé.&lt;br /&gt;
Cela n'est pas un problème, après notre noeud (notre bloc), le PayLoad sera intégralement remplacé par le template que nous sommes en train de créer.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-23.png]]&lt;br /&gt;
&lt;br /&gt;
==== Template ====&lt;br /&gt;
&lt;br /&gt;
Dans ce template, nous allons créer une structure HTML de base minimum afin que la structure soit interprétée par la majorité des clients/webmail.&lt;br /&gt;
Vous pouvez la personnaliser à votre guise si vous avez les connaissances en HTML.&lt;br /&gt;
&lt;br /&gt;
Voici la structure de base pour notre projet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
    &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;meta charset=&amp;quot;utf8&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/head&amp;gt;&lt;br /&gt;
    &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Projet Photo par email&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;img src=&amp;quot;data:image/jpg;base64,{{payload}}&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pourrez remarquer que nous intégrons l'image en appelant le PayLoad à 'intérieur du code HTML dans la balise &amp;lt;img&amp;gt;.&lt;br /&gt;
C'est le PayLoad créé précédemment par le bloc &amp;quot;Exec&amp;quot; qui est récupéré à ce moment précis.&lt;br /&gt;
Ce PayLoad est remplacé dans le flux par le PayLoad complet avec notre template dans le flux par notre bloc Template.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-24.png]]&lt;br /&gt;
&lt;br /&gt;
=== Création d'un bloc (noeud) &amp;quot;Debug&amp;quot;  ===&lt;br /&gt;
&lt;br /&gt;
Nous allons ajouter la notion d'expéditeur dans le flux que nous avons créé à travers nos blocs (noeuds).&lt;br /&gt;
Pour rappel, actuellement nous avons deux propriétés avec des données dans notre flux. &lt;br /&gt;
Si nous voulons observer ce que nous avons créé jusque là, nous pouvons faire appel à un bloc &amp;quot;Debug&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Création du bloc &amp;quot;Debug&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Comme pour les blocs précédents, nous allons glisser/déposer un bloc débug dans l'espace de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-25.png]]&lt;br /&gt;
&lt;br /&gt;
Celui-ci s'appelle msg/payload par défaut&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-26.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons double-cliquer sur ce bloc pour le configurer.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-27.png]]&lt;br /&gt;
&lt;br /&gt;
==== Output ====&lt;br /&gt;
&lt;br /&gt;
Dans ce champs, nous allons choisir la partie du flux que nous souhaitons afficher, ou nous allons sélectionner le flux entier.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-28.png]]&lt;br /&gt;
&lt;br /&gt;
Sélectionner le flux entier, nous affichera le flux complet incluant toutes ses propriétés.&lt;br /&gt;
&lt;br /&gt;
 [[fichier:Rasp-Node-Red-picam-mail-29.png]]&lt;br /&gt;
&lt;br /&gt;
==== To =====&lt;br /&gt;
&lt;br /&gt;
La propriété &amp;quot;To&amp;quot; nous permet de choisir ou nous souhaitons afficher les données que nous récupérons. &lt;br /&gt;
Soit nous les affichons uniquement dans l'onglet &amp;quot;Debug&amp;quot; à droite de l'espace de travail, soit nous l'affichons dans cet onglet mais aussi dans la console de NodeJS.&lt;br /&gt;
Dans notre cas, nous allons nous contenter d'afficher nos éléments dans l'onglet de &amp;quot;Debug&amp;quot; à droite de notre espace de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-30.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Le champs Name nous servira à identifier quel bloc de &amp;quot;Debug&amp;quot; affiche les données en console ou dans l'onglet &amp;quot;Debug&amp;quot;. &lt;br /&gt;
Il faut donc le nommer efficacement pour bien attacher et comprendre les données que nous récupérons, surtout si nous en plaçons plusieurs dans le flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-31.png]]&lt;br /&gt;
&lt;br /&gt;
==== Exploitation et compréhension des données récupérées ====&lt;br /&gt;
&lt;br /&gt;
Nous avons placé notre bloc &amp;quot;Debug&amp;quot; à la suite du flux en dernière position. &lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-32.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons donc déployer le programme en cliquant sur &amp;quot;Deploy&amp;quot; en haut à droite de la page. &lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-33.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons exécuter manuellement le programme en cliquant sur le bouton se trouvant en début de chaîne:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-34.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite afficher l'onglet &amp;quot;Debug&amp;quot; sur le coté droit de la page et analyser les données récupérées:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-35.png]]&lt;br /&gt;
&lt;br /&gt;
==== Analyse des données récupérées dans l'onglet &amp;quot;Debug&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
08/05/2017 à 12:54:31 node: FORMATAGE&lt;br /&gt;
MCHobby - Photo bureau : msg : Object&lt;br /&gt;
object&lt;br /&gt;
_msgid: &amp;quot;81efe35c.3208d&amp;quot;&lt;br /&gt;
topic: &amp;quot;MCHobby - Photo bureau&amp;quot;&lt;br /&gt;
payload: &amp;quot;&amp;lt;html&amp;gt;↵ &amp;lt;head&amp;gt;↵ &amp;lt;meta charset=&amp;quot;utf8&amp;quot;/&amp;gt;↵ ↵ &amp;lt;/head&amp;gt;↵ &amp;lt;body&amp;gt;↵ &amp;lt;h1&amp;gt;MCHobby - Photo bureau&amp;lt;/h1&amp;gt;↵ &amp;lt;p&amp;gt;Cette photo est un instantané pris dans les bureaux de MCHobby.&amp;lt;/p&amp;gt;↵ &lt;br /&gt;
&amp;lt;img src=&amp;quot;data:image/jpg;base64,&amp;amp;#x2F;9j&amp;amp;#x2F;4WP6x2.../&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comme vous pourrez le constater, chaque élément du noeud est détaillé.&lt;br /&gt;
Les données sont cependant tronquées, le noeud &amp;quot;Debug&amp;quot; ne nous fourni pas la totalité du &amp;quot;PayLoad&amp;quot; mais nous avons déjà un bon aperçu des données qu'il contient.&lt;br /&gt;
&lt;br /&gt;
* '''_msgid:''' est un Id unique de message&lt;br /&gt;
* '''topic:''' est le sujet du mail, nous l'avons déterminé dans le premier bloc&lt;br /&gt;
* '''payload:''' contient les données du message formatées par le template que nous avons créé et complété par l'image en base64.&lt;br /&gt;
&lt;br /&gt;
{{tmbox | text = Les noeuds &amp;quot;Debug&amp;quot; sont pratiques. Ils nous permettent d'afficher une partie ou la totalité du flux tel qu'il est à l'endroit ou ils sont placés. Cela peut permettre d'identifier et de résoudre plus facilement des problèmes dans des opérations plus complexes et dans notre cas, cela nous permet de mieux comprendre comment fonctionne le noeud et comment les données sont transmises d'un bloc à l'autre.}}&lt;br /&gt;
&lt;br /&gt;
=== Création d'un expéditeur ===&lt;br /&gt;
&lt;br /&gt;
Nous avons construit petit à petit un message avec un sujet, mais il manque encore un détail: l'expéditeur de l'email que nous allons envoyer: le fameux &amp;quot;msg.from&amp;quot; que nous avons évoqué au début de tuto !&lt;br /&gt;
&lt;br /&gt;
Si vous avez bien suivi les étapes précédentes du tuto, jusqu'au noeud &amp;quot;Debug&amp;quot; et à son résultat, vous comprendrez facilement la démarche ci après pour ajouter un expéditeur dans le flux.&lt;br /&gt;
&lt;br /&gt;
Nous allons ajouter un nouveau noeud &amp;quot;Template&amp;quot; dans la zone de travail et double cliquer dessus pour afficher sa page de configuration:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Rasp-Node-Red-TRAILER}}&lt;/div&gt;</summary>
		<author><name>AntoineWrt</name></author>
	</entry>
	<entry>
		<id>https://wiki.mchobby.be/index.php?title=Rasp-Node-Red-picam-mail&amp;diff=22807</id>
		<title>Rasp-Node-Red-picam-mail</title>
		<link rel="alternate" type="text/html" href="https://wiki.mchobby.be/index.php?title=Rasp-Node-Red-picam-mail&amp;diff=22807"/>
		<updated>2017-05-08T13:04:49Z</updated>

		<summary type="html">&lt;p&gt;AntoineWrt : /* Analyse des données récupérées dans l'onglet &amp;quot;Debug&amp;quot; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Rasp-Node-Red-NAV}}&lt;br /&gt;
&lt;br /&gt;
{{traduction}}&lt;br /&gt;
&lt;br /&gt;
== PiCamRED - Envoi périodique de photos par email avec PiCam et NodeRED ==&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-01.png|900px]]&lt;br /&gt;
&lt;br /&gt;
=== Description du projet ===&lt;br /&gt;
&lt;br /&gt;
Dans ce tutoriel, nous allons réaliser des photos à l'aide de la caméra du RaspBerry Pi 2/3 et envoyer ces clichés par email de manière périodique grâce à NodeRED.&lt;br /&gt;
Nous allons donc utiliser plusieurs blocs et décrire de manière détaillée le déroulement de chaque étape de la réalisation de ce projet.&lt;br /&gt;
&lt;br /&gt;
Dans NodeRED, il est important de bien identifier la finalité de notre projet afin de connaître au préalable tous les éléments qu'il faudra créer et fournir à l'action finale (celle qui enverra un email).&lt;br /&gt;
&lt;br /&gt;
=== Quels sont les besoins du noeud email ===&lt;br /&gt;
&lt;br /&gt;
==== Composants nécessaires pour constituer un email ====&lt;br /&gt;
&lt;br /&gt;
Un email est composé des éléments suivants: &lt;br /&gt;
&lt;br /&gt;
* Un expéditeur&lt;br /&gt;
* Un destinataire&lt;br /&gt;
* Un sujet&lt;br /&gt;
* Le corps du message&lt;br /&gt;
&lt;br /&gt;
Tous ces éléments vont donc devoir être préparés afin de pouvoir construire le message à envoyer par le noeud final.&lt;br /&gt;
&lt;br /&gt;
Le noeud final aura aussi besoin d'un serveur SMTP (serveur d'envoi d'emails) et éventuellement de paramètres d'identification pour ce serveur d'envoi d'emails.&lt;br /&gt;
&lt;br /&gt;
==== Détail des besoins du noeud email ====&lt;br /&gt;
&lt;br /&gt;
La liste des éléments nécessaires s'affiche lorsque le bloc est dans la zone de travail (Schema).&lt;br /&gt;
Commençons donc par sélectionner le bloc email, et de le glisser dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
Commençons par cliquer sur le bloc email et nous maintenons le clic pour le glisser à droite dans l'espace de travail.&lt;br /&gt;
&lt;br /&gt;
(on choisit celui qui a son point de liaison à gauche, car nous voulons un bloc de sortie)&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-36.png]]&lt;br /&gt;
&lt;br /&gt;
Glissons le dans l'espace de travail, et cliquons un clic simple pour le sélectionner.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-37.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, dans la colonne à droite de cet espace de travail, nous cliquons sur info et nous pourrons découvrir les éléments nécessaires à la constitution d'un bloc email.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-38.png]]&lt;br /&gt;
&lt;br /&gt;
===== Nous utiliserons les champs suivants =====&lt;br /&gt;
&lt;br /&gt;
* '''msg.payload''' --&amp;gt; Ce champ contient le corps de l'email&lt;br /&gt;
* '''msg.topic''' --&amp;gt; Ce champ contient le sujet de l'email&lt;br /&gt;
* '''msg.from''' --&amp;gt; Ce champ contient l'email de l'expéditeur &lt;br /&gt;
* '''msg.to''' --&amp;gt; Ce champ contient l'email du destinataire&lt;br /&gt;
&lt;br /&gt;
Les autres champs ne seront pas utilisés dans notre cas, mais vous pourrez constater que le bloc email est complet de part ses fonctionnalités et possibilités.&lt;br /&gt;
&lt;br /&gt;
Les données de serveur et d'identification seront abordées en fin de tuto lors de la configuration finale du bloc.&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant passer à la réalisation du flux en commençant par le début de celui-ci.&lt;br /&gt;
&lt;br /&gt;
=== Création d'une action périodique ===&lt;br /&gt;
&lt;br /&gt;
Dans la colonne de gauche de NodeRED, se trouvent une liste de blocs à utiliser pour réaliser vos projets. Ils sont classés par &amp;quot;types&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Ainsi nous retrouvons les &amp;quot;types&amp;quot; suivants:&lt;br /&gt;
&lt;br /&gt;
* Input qui contient tous les blocs d'entrées&lt;br /&gt;
* Ouput qui contient tous les blocs de sortie&lt;br /&gt;
* Function qui contient des blocs de fonctions javascript etc...&lt;br /&gt;
* Social qui sont des blocs d'entrée ou sorties depuis ou vers les réseaux sociaux&lt;br /&gt;
* Storage qui sont des fonctions de lecture ou d'écriture de fichiers&lt;br /&gt;
* Analysis -&amp;gt;&amp;gt; Sentiment interprète du texte et détermine un score sur base d'un dictionnaire anglais, renvoie le texte avec ce score de -5 à +5, déterminant ainsi l'émotion susceptible d'être procuré par ce texte&lt;br /&gt;
* Advanced possède des outils permettant de détecter des changements dans des fichiers ou dossiers, de lire des flux RSS ou encore EXEC qui permet d'exécuter directement des commandes sous linux !&lt;br /&gt;
* Raspberry Pi contient des outils pour piloter/lire le GPIO du raspberry Pi&lt;br /&gt;
* Network qui contient un outil réseau de Ping&lt;br /&gt;
 &lt;br /&gt;
Nous allons créer une action périodique, c'est à dire paramétrer un bloc &amp;quot;INJECT&amp;quot; de manière à déclencher régulièrement une chaine d'actions que nous allons accrocher à la suite les unes après les autres.&lt;br /&gt;
Nous allons donc cliquer sur le bloc &amp;quot;Inject&amp;quot; dans la liste &amp;quot;Input&amp;quot; et maintenir ce clic pour le déplacer vers la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-02.png]]&lt;br /&gt;
&lt;br /&gt;
Nous obtiendrons donc une nouvelle instance &amp;quot;inject&amp;quot; qui portera le nom &amp;quot;Timestamp&amp;quot; (ce nom est attribué par défaut par NodeRED) comme dans la capture ci-dessous&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-03.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant double-cliquer sur celle-ci fin de l'éditer pour voir apparaitre le menu ci-dessous&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-04.png]]&lt;br /&gt;
&lt;br /&gt;
Il va falloir configurer ce bloc, mais avant tout voici une explication de celui-ci:&lt;br /&gt;
&lt;br /&gt;
==== Payload ====&lt;br /&gt;
&lt;br /&gt;
Le champs PayLoad est en fait le champ de données qui sera suivi d'un noeud à l'autre jusque à la fin de la chaine.&lt;br /&gt;
Dans ce module &amp;quot;inject&amp;quot;, nous allons donc déterminer quel type de données contiendra le &amp;quot;PayLoad&amp;quot; jusqu'à la fin de la chaine que l'on va réaliser.&lt;br /&gt;
&lt;br /&gt;
Dans notre cas, nous souhaitons construire un email, donc du contenu textuel, nous allons donc choisir &amp;quot;String&amp;quot; ce qui correspond à une chaine de caractères (du texte).&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-05.png]]&lt;br /&gt;
&lt;br /&gt;
==== Topic ====&lt;br /&gt;
&lt;br /&gt;
Le champs &amp;quot;Topic&amp;quot; est un champs de texte dans lequel nous allons mettre un sujet succinct décrivant notre chaine. &lt;br /&gt;
Dans notre cas, ce sujet fera office de sujet au mail que nous expédierons. &lt;br /&gt;
Nous allons donc être précis en un minimum de mots pour que le destinataire de l'email puisse facilement deviner le contenu de celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-06.png]]&lt;br /&gt;
&lt;br /&gt;
==== Repeat ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite choisir l'intervalle de déclenchement de notre action, sachant que nous avons le choix entre: &lt;br /&gt;
&lt;br /&gt;
* none  : pas de déclenchement périodique programmé&lt;br /&gt;
* interval : nous fixons un temps de déclenchement à partir du lancement du programme, l'action se réalisera à chaque fois que ce temps sera écoulé de manière répétée jusqu'à l'interruption manuelle du programme&lt;br /&gt;
* interval between times : nous fixons ici le déclenchement par interval, mais nous fixons aussi une fourchette d'heures et des jours pendant lesquels nous exécutons cet interval&lt;br /&gt;
* at a specific time : nous fixons une heure d'exécution, et un ou plusieurs jours d'exécution. Dans ce cas l'action n'est pas répétée en continu mais éxécutée une seule fois par jour à l'heure programmée&lt;br /&gt;
&lt;br /&gt;
Dans notre exemple, nous allons fixer un intervalle de 15 secondes pour commencer. Nous pourrons ensuite augmenter cette valeur pour éviter de recevoir trop d'emails avec des photos :D&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-07.png]]&lt;br /&gt;
&lt;br /&gt;
La case &amp;quot;inject once at start&amp;quot; permet de ne pas attendre le premier cycle avant d'exécuter une première fois l'action. Elle se lancera dès le lancement du programme, puis périodiquement selon les cycles déterminés par l'intervalle.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-08.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Le champs Name va déterminer le nom que portera le bloc dans l'espace de travail et dans les logs (si nous créons des blocs de log ensuite pour contrôler des étapes).&lt;br /&gt;
Il est important de bien établir ce nom de manière explicite, car le nom des blocs permettra de comprendre et retrouver facilement la logique du schéma construit, même si l'on a pas consulté celui-ci pendant une longue période.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-09.png]]&lt;br /&gt;
&lt;br /&gt;
=== Capture d'une image depuis la PiCam ===&lt;br /&gt;
&lt;br /&gt;
Nous allons aller à l'essentiel en ce qui concerne la capture photo en utilisant une commande simple pour prendre un cliché et renvoyer celui-ci dans le flux NodeRED grâce à un bloc permettant d'exécuter des commandes bash.&lt;br /&gt;
&lt;br /&gt;
{{ambox | text = Vous trouverez un TUTO détaillé sur la PiCam vous permettant de prendre la main, ou de la paramétrer si vous n'avez pas encore utilisé celle-ci auparavant: ....___TUTO___...}} &lt;br /&gt;
&lt;br /&gt;
Nous allons tout d'abord cliquer sur le bloc &amp;quot;Exec&amp;quot; dans la section &amp;quot;Advanced&amp;quot; de la colonne de gauche et glisser l'élément dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-10.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, cliquer sur le bloc nouvellement créé et configurer celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-11.png]]&lt;br /&gt;
&lt;br /&gt;
Le menu suivant s'affichera, et nous pourrons configurer le bloc &amp;quot;Exec&amp;quot; nouvellement créé.&lt;br /&gt;
&lt;br /&gt;
==== Command ====&lt;br /&gt;
&lt;br /&gt;
Nous allons y ajouter la commande à exécuter pour prendre une photo avec la caméra du Raspberry Pi et la stocker dans un fichier jpg dans le dossier /tmp/ de linux.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
raspistill -o /tmp/cam.jpg -w 640 -h 480&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous prenons soin de limiter la hauteur et la largeur de l'image afin de réduire son poids pour l'envoi par email.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-12.png]]&lt;br /&gt;
&lt;br /&gt;
==== +Append ====&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons décocher la case &amp;quot;msg.payload&amp;quot; si elle est cochée par défaut.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-13.png]]&lt;br /&gt;
&lt;br /&gt;
==== Extra input parameters et Timeout ====&lt;br /&gt;
&lt;br /&gt;
Nous n'aurons pas besoin de compléter ces champs pour notre projet.&lt;br /&gt;
&lt;br /&gt;
Si vous cochez le champ &amp;quot;Use spawn() instead of exec()?&amp;quot;, votre commande sera réalisée sous forme d'un processus résident et continuera de s'exécuter jusqu'à ce qu'elle se termine par elle-même (sauf si elle ne se termine jamais).&lt;br /&gt;
Cette solution implique que le programme n'attendra pas que cette commande soit réalisée pour passer aux étapes suivantes. &lt;br /&gt;
Si la suite de l'exécution de votre flux est susceptible d'utiliser le résultat de cette commande, nous vous déconseillons d'utiliser cette option sous peine de provoquer des erreurs à la suite du traitement du flux.&lt;br /&gt;
&lt;br /&gt;
Le champ &amp;quot;Timeout&amp;quot; permet de définir un temps d'attente maximum avant de mettre un terme à l'exécution de la commande. &lt;br /&gt;
Cela permet de débloquer la situation si la commande exécutée prends un temps anormalement long à s'exécuter.&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite compléter le champs nom, celui-ci sera utilisé pour nommer le bloc dans le &amp;quot;schéma&amp;quot;, mais aussi de nommer les logs comme pour le bloc &amp;quot;Exec&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-14.png]]&lt;br /&gt;
&lt;br /&gt;
=== Encodage de l'image en base64 ===&lt;br /&gt;
&lt;br /&gt;
Nous allons convertir la photo prise juste avant en utilisant une commande de conversion en base64.&lt;br /&gt;
Cela facilitera son injection dans un template HTML que nous allons créer ensuite pour construire un email.&lt;br /&gt;
&lt;br /&gt;
Nous allons tout d'abord cliquer sur le bloc &amp;quot;Exec&amp;quot; dans la section &amp;quot;Advanced&amp;quot; de la colonne de gauche et glisser l'élément dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-10.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, cliquer sur le bloc nouvellement créé et configurer celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-11.png]]&lt;br /&gt;
&lt;br /&gt;
Le menu suivant s'affichera, et nous pourrons configurer le bloc &amp;quot;Exec&amp;quot; nouvellement créé.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-15.png]]&lt;br /&gt;
&lt;br /&gt;
==== Command ====&lt;br /&gt;
&lt;br /&gt;
Nous allons y ajouter la commande à exécuter pour encoder en base 64 la photo prise précédemment avec la caméra du Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
base64 -i &amp;quot;/tmp/cam.jpg&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-16.png]]&lt;br /&gt;
&lt;br /&gt;
==== +Append ====&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons cocher la case &amp;quot;msg.payload&amp;quot; si elle n'est pas cochée par défaut pour que le résultat soit directement renvoyé par cette commande dans le &amp;quot;PayLoad&amp;quot; du flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-17.png]]&lt;br /&gt;
&lt;br /&gt;
==== Extra input parameters et Timeout ====&lt;br /&gt;
&lt;br /&gt;
Nous n'aurons pas besoin de compléter ces champs pour notre projet.&lt;br /&gt;
&lt;br /&gt;
Si vous cochez le champ &amp;quot;Use spawn() instead of exec()?&amp;quot;, votre commande sera réalisée sous forme d'un processus résident et continuera de s'exécuter jusqu'à ce qu'elle se termine par elle-même (sauf si elle ne se termine jamais).&lt;br /&gt;
Cette solution implique que le programme n'attendra pas que cette commande soit réalisée pour passer aux étapes suivantes. &lt;br /&gt;
Si la suite de l'exécution de votre flux est susceptible d'utiliser le résultat de cette commande, nous vous déconseillons d'utiliser cette option sous peine de provoquer des erreurs à la suite du traitement du flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-18.png]]&lt;br /&gt;
&lt;br /&gt;
Le champ &amp;quot;Timeout&amp;quot; permet de définir un temps d'attente maximum avant de mettre un terme à l'exécution de la commande. &lt;br /&gt;
Cela permet de débloquer la situation si la commande exécutée prends un temps anormalement long à s'exécuter.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-19.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite compléter le champs nom, celui-ci sera utilisé pour nommer le bloc dans le &amp;quot;schéma&amp;quot;, mais aussi de nommer les logs comme pour le bloc &amp;quot;Exec&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-20.png]]&lt;br /&gt;
&lt;br /&gt;
=== Création d'un email au format HTML ===&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant créer un template d'email au format HTML afin de mettre en forme le message que nous enverrons ensuite.&lt;br /&gt;
Nous allons pour cela utiliser un bloc &amp;quot;Template&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-21.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons attribuer un nom au bloc afin de l'identifier plus facilement dans le flux.&lt;br /&gt;
Nous allons donc le nommer &amp;quot;Contenu du mail&amp;quot; puisque nous créons le contenu du mail que nous enverrons ensuite.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-22.png]]&lt;br /&gt;
&lt;br /&gt;
==== Set property ====&lt;br /&gt;
&lt;br /&gt;
La propriété que nous souhaitons créer dans le flux est le &amp;quot;PayLoad&amp;quot;.&lt;br /&gt;
Ce PayLoad existe déjà, il contient pour le moment l'image au format &amp;quot;Base64&amp;quot; précédemment encodé.&lt;br /&gt;
Cela n'est pas un problème, après notre noeud (notre bloc), le PayLoad sera intégralement remplacé par le template que nous sommes en train de créer.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-23.png]]&lt;br /&gt;
&lt;br /&gt;
==== Template ====&lt;br /&gt;
&lt;br /&gt;
Dans ce template, nous allons créer une structure HTML de base minimum afin que la structure soit interprétée par la majorité des clients/webmail.&lt;br /&gt;
Vous pouvez la personnaliser à votre guise si vous avez les connaissances en HTML.&lt;br /&gt;
&lt;br /&gt;
Voici la structure de base pour notre projet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
    &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;meta charset=&amp;quot;utf8&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/head&amp;gt;&lt;br /&gt;
    &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Projet Photo par email&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;img src=&amp;quot;data:image/jpg;base64,{{payload}}&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pourrez remarquer que nous intégrons l'image en appelant le PayLoad à 'intérieur du code HTML dans la balise &amp;lt;img&amp;gt;.&lt;br /&gt;
C'est le PayLoad créé précédemment par le bloc &amp;quot;Exec&amp;quot; qui est récupéré à ce moment précis.&lt;br /&gt;
Ce PayLoad est remplacé dans le flux par le PayLoad complet avec notre template dans le flux par notre bloc Template.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-24.png]]&lt;br /&gt;
&lt;br /&gt;
=== Création d'un bloc (noeud) &amp;quot;Debug&amp;quot;  ===&lt;br /&gt;
&lt;br /&gt;
Nous allons ajouter la notion d'expéditeur dans le flux que nous avons créé à travers nos blocs (noeuds).&lt;br /&gt;
Pour rappel, actuellement nous avons deux propriétés avec des données dans notre flux. &lt;br /&gt;
Si nous voulons observer ce que nous avons créé jusque là, nous pouvons faire appel à un bloc &amp;quot;Debug&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Création du bloc &amp;quot;Debug&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Comme pour les blocs précédents, nous allons glisser/déposer un bloc débug dans l'espace de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-25.png]]&lt;br /&gt;
&lt;br /&gt;
Celui-ci s'appelle msg/payload par défaut&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-26.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons double-cliquer sur ce bloc pour le configurer.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-27.png]]&lt;br /&gt;
&lt;br /&gt;
==== Output ====&lt;br /&gt;
&lt;br /&gt;
Dans ce champs, nous allons choisir la partie du flux que nous souhaitons afficher, ou nous allons sélectionner le flux entier.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-28.png]]&lt;br /&gt;
&lt;br /&gt;
Sélectionner le flux entier, nous affichera le flux complet incluant toutes ses propriétés.&lt;br /&gt;
&lt;br /&gt;
 [[fichier:Rasp-Node-Red-picam-mail-29.png]]&lt;br /&gt;
&lt;br /&gt;
==== To =====&lt;br /&gt;
&lt;br /&gt;
La propriété &amp;quot;To&amp;quot; nous permet de choisir ou nous souhaitons afficher les données que nous récupérons. &lt;br /&gt;
Soit nous les affichons uniquement dans l'onglet &amp;quot;Debug&amp;quot; à droite de l'espace de travail, soit nous l'affichons dans cet onglet mais aussi dans la console de NodeJS.&lt;br /&gt;
Dans notre cas, nous allons nous contenter d'afficher nos éléments dans l'onglet de &amp;quot;Debug&amp;quot; à droite de notre espace de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-30.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Le champs Name nous servira à identifier quel bloc de &amp;quot;Debug&amp;quot; affiche les données en console ou dans l'onglet &amp;quot;Debug&amp;quot;. &lt;br /&gt;
Il faut donc le nommer efficacement pour bien attacher et comprendre les données que nous récupérons, surtout si nous en plaçons plusieurs dans le flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-31.png]]&lt;br /&gt;
&lt;br /&gt;
==== Exploitation et compréhension des données récupérées ====&lt;br /&gt;
&lt;br /&gt;
Nous avons placé notre bloc &amp;quot;Debug&amp;quot; à la suite du flux en dernière position. &lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-32.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons donc déployer le programme en cliquant sur &amp;quot;Deploy&amp;quot; en haut à droite de la page. &lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-33.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons exécuter manuellement le programme en cliquant sur le bouton se trouvant en début de chaîne:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-34.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite afficher l'onglet &amp;quot;Debug&amp;quot; sur le coté droit de la page et analyser les données récupérées:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-35.png]]&lt;br /&gt;
&lt;br /&gt;
==== Analyse des données récupérées dans l'onglet &amp;quot;Debug&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
08/05/2017 à 12:54:31 node: FORMATAGE&lt;br /&gt;
MCHobby - Photo bureau : msg : Object&lt;br /&gt;
object&lt;br /&gt;
_msgid: &amp;quot;81efe35c.3208d&amp;quot;&lt;br /&gt;
topic: &amp;quot;MCHobby - Photo bureau&amp;quot;&lt;br /&gt;
payload: &amp;quot;&amp;lt;html&amp;gt;↵ &amp;lt;head&amp;gt;↵ &amp;lt;meta charset=&amp;quot;utf8&amp;quot;/&amp;gt;↵ ↵ &amp;lt;/head&amp;gt;↵ &amp;lt;body&amp;gt;↵ &amp;lt;h1&amp;gt;MCHobby - Photo bureau&amp;lt;/h1&amp;gt;↵ &amp;lt;p&amp;gt;Cette photo est un instantané pris dans les bureaux de MCHobby.&amp;lt;/p&amp;gt;↵ &lt;br /&gt;
&amp;lt;img src=&amp;quot;data:image/jpg;base64,&amp;amp;#x2F;9j&amp;amp;#x2F;4WP6x2.../&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comme vous pourrez le constater, chaque élément du noeud est détaillé.&lt;br /&gt;
Les données sont cependant tronquées, le noeud &amp;quot;Debug&amp;quot; ne nous fourni pas la totalité du &amp;quot;PayLoad&amp;quot; mais nous avons déjà un bon aperçu des données qu'il contient.&lt;br /&gt;
&lt;br /&gt;
* '''_msgid:''' est un Id unique de message&lt;br /&gt;
* '''topic:''' est le sujet du mail, nous l'avons déterminé dans le premier bloc&lt;br /&gt;
* '''payload:''' contient les données du message formatées par le template que nous avons créé et complété par l'image en base64.&lt;br /&gt;
&lt;br /&gt;
{{tmbox | text = Les noeuds &amp;quot;Debug&amp;quot; sont pratiques. Ils nous permettent d'afficher une partie ou la totalité du flux tel qu'il est à l'endroit ou ils sont placés. Cela peut permettre d'identifier et de résoudre plus facilement des problèmes dans des opérations plus complexes et dans notre cas, cela nous permet de mieux comprendre comment fonctionne le noeud et comment les données sont transmises d'un bloc à l'autre.}}&lt;br /&gt;
&lt;br /&gt;
=== Création d'un expéditeur ===&lt;br /&gt;
&lt;br /&gt;
Nous avons construit petit à petit un message avec un sujet, mais il manque encore un détail: l'expéditeur de l'email que nous allons envoyer.&lt;br /&gt;
&lt;br /&gt;
Si vous avez bien suivi les étapes précédentes du tuto, jusqu'au noeud &amp;quot;Debug&amp;quot; et à son résultat, vous comprendrez facilement la démarche ci après pour ajouter un expéditeur dans le flux.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Rasp-Node-Red-TRAILER}}&lt;/div&gt;</summary>
		<author><name>AntoineWrt</name></author>
	</entry>
	<entry>
		<id>https://wiki.mchobby.be/index.php?title=Rasp-Node-Red-picam-mail&amp;diff=22806</id>
		<title>Rasp-Node-Red-picam-mail</title>
		<link rel="alternate" type="text/html" href="https://wiki.mchobby.be/index.php?title=Rasp-Node-Red-picam-mail&amp;diff=22806"/>
		<updated>2017-05-08T13:04:31Z</updated>

		<summary type="html">&lt;p&gt;AntoineWrt : /* Analyse des données récupérées dans l'onglet &amp;quot;Debug&amp;quot; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Rasp-Node-Red-NAV}}&lt;br /&gt;
&lt;br /&gt;
{{traduction}}&lt;br /&gt;
&lt;br /&gt;
== PiCamRED - Envoi périodique de photos par email avec PiCam et NodeRED ==&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-01.png|900px]]&lt;br /&gt;
&lt;br /&gt;
=== Description du projet ===&lt;br /&gt;
&lt;br /&gt;
Dans ce tutoriel, nous allons réaliser des photos à l'aide de la caméra du RaspBerry Pi 2/3 et envoyer ces clichés par email de manière périodique grâce à NodeRED.&lt;br /&gt;
Nous allons donc utiliser plusieurs blocs et décrire de manière détaillée le déroulement de chaque étape de la réalisation de ce projet.&lt;br /&gt;
&lt;br /&gt;
Dans NodeRED, il est important de bien identifier la finalité de notre projet afin de connaître au préalable tous les éléments qu'il faudra créer et fournir à l'action finale (celle qui enverra un email).&lt;br /&gt;
&lt;br /&gt;
=== Quels sont les besoins du noeud email ===&lt;br /&gt;
&lt;br /&gt;
==== Composants nécessaires pour constituer un email ====&lt;br /&gt;
&lt;br /&gt;
Un email est composé des éléments suivants: &lt;br /&gt;
&lt;br /&gt;
* Un expéditeur&lt;br /&gt;
* Un destinataire&lt;br /&gt;
* Un sujet&lt;br /&gt;
* Le corps du message&lt;br /&gt;
&lt;br /&gt;
Tous ces éléments vont donc devoir être préparés afin de pouvoir construire le message à envoyer par le noeud final.&lt;br /&gt;
&lt;br /&gt;
Le noeud final aura aussi besoin d'un serveur SMTP (serveur d'envoi d'emails) et éventuellement de paramètres d'identification pour ce serveur d'envoi d'emails.&lt;br /&gt;
&lt;br /&gt;
==== Détail des besoins du noeud email ====&lt;br /&gt;
&lt;br /&gt;
La liste des éléments nécessaires s'affiche lorsque le bloc est dans la zone de travail (Schema).&lt;br /&gt;
Commençons donc par sélectionner le bloc email, et de le glisser dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
Commençons par cliquer sur le bloc email et nous maintenons le clic pour le glisser à droite dans l'espace de travail.&lt;br /&gt;
&lt;br /&gt;
(on choisit celui qui a son point de liaison à gauche, car nous voulons un bloc de sortie)&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-36.png]]&lt;br /&gt;
&lt;br /&gt;
Glissons le dans l'espace de travail, et cliquons un clic simple pour le sélectionner.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-37.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, dans la colonne à droite de cet espace de travail, nous cliquons sur info et nous pourrons découvrir les éléments nécessaires à la constitution d'un bloc email.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-38.png]]&lt;br /&gt;
&lt;br /&gt;
===== Nous utiliserons les champs suivants =====&lt;br /&gt;
&lt;br /&gt;
* '''msg.payload''' --&amp;gt; Ce champ contient le corps de l'email&lt;br /&gt;
* '''msg.topic''' --&amp;gt; Ce champ contient le sujet de l'email&lt;br /&gt;
* '''msg.from''' --&amp;gt; Ce champ contient l'email de l'expéditeur &lt;br /&gt;
* '''msg.to''' --&amp;gt; Ce champ contient l'email du destinataire&lt;br /&gt;
&lt;br /&gt;
Les autres champs ne seront pas utilisés dans notre cas, mais vous pourrez constater que le bloc email est complet de part ses fonctionnalités et possibilités.&lt;br /&gt;
&lt;br /&gt;
Les données de serveur et d'identification seront abordées en fin de tuto lors de la configuration finale du bloc.&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant passer à la réalisation du flux en commençant par le début de celui-ci.&lt;br /&gt;
&lt;br /&gt;
=== Création d'une action périodique ===&lt;br /&gt;
&lt;br /&gt;
Dans la colonne de gauche de NodeRED, se trouvent une liste de blocs à utiliser pour réaliser vos projets. Ils sont classés par &amp;quot;types&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Ainsi nous retrouvons les &amp;quot;types&amp;quot; suivants:&lt;br /&gt;
&lt;br /&gt;
* Input qui contient tous les blocs d'entrées&lt;br /&gt;
* Ouput qui contient tous les blocs de sortie&lt;br /&gt;
* Function qui contient des blocs de fonctions javascript etc...&lt;br /&gt;
* Social qui sont des blocs d'entrée ou sorties depuis ou vers les réseaux sociaux&lt;br /&gt;
* Storage qui sont des fonctions de lecture ou d'écriture de fichiers&lt;br /&gt;
* Analysis -&amp;gt;&amp;gt; Sentiment interprète du texte et détermine un score sur base d'un dictionnaire anglais, renvoie le texte avec ce score de -5 à +5, déterminant ainsi l'émotion susceptible d'être procuré par ce texte&lt;br /&gt;
* Advanced possède des outils permettant de détecter des changements dans des fichiers ou dossiers, de lire des flux RSS ou encore EXEC qui permet d'exécuter directement des commandes sous linux !&lt;br /&gt;
* Raspberry Pi contient des outils pour piloter/lire le GPIO du raspberry Pi&lt;br /&gt;
* Network qui contient un outil réseau de Ping&lt;br /&gt;
 &lt;br /&gt;
Nous allons créer une action périodique, c'est à dire paramétrer un bloc &amp;quot;INJECT&amp;quot; de manière à déclencher régulièrement une chaine d'actions que nous allons accrocher à la suite les unes après les autres.&lt;br /&gt;
Nous allons donc cliquer sur le bloc &amp;quot;Inject&amp;quot; dans la liste &amp;quot;Input&amp;quot; et maintenir ce clic pour le déplacer vers la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-02.png]]&lt;br /&gt;
&lt;br /&gt;
Nous obtiendrons donc une nouvelle instance &amp;quot;inject&amp;quot; qui portera le nom &amp;quot;Timestamp&amp;quot; (ce nom est attribué par défaut par NodeRED) comme dans la capture ci-dessous&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-03.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant double-cliquer sur celle-ci fin de l'éditer pour voir apparaitre le menu ci-dessous&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-04.png]]&lt;br /&gt;
&lt;br /&gt;
Il va falloir configurer ce bloc, mais avant tout voici une explication de celui-ci:&lt;br /&gt;
&lt;br /&gt;
==== Payload ====&lt;br /&gt;
&lt;br /&gt;
Le champs PayLoad est en fait le champ de données qui sera suivi d'un noeud à l'autre jusque à la fin de la chaine.&lt;br /&gt;
Dans ce module &amp;quot;inject&amp;quot;, nous allons donc déterminer quel type de données contiendra le &amp;quot;PayLoad&amp;quot; jusqu'à la fin de la chaine que l'on va réaliser.&lt;br /&gt;
&lt;br /&gt;
Dans notre cas, nous souhaitons construire un email, donc du contenu textuel, nous allons donc choisir &amp;quot;String&amp;quot; ce qui correspond à une chaine de caractères (du texte).&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-05.png]]&lt;br /&gt;
&lt;br /&gt;
==== Topic ====&lt;br /&gt;
&lt;br /&gt;
Le champs &amp;quot;Topic&amp;quot; est un champs de texte dans lequel nous allons mettre un sujet succinct décrivant notre chaine. &lt;br /&gt;
Dans notre cas, ce sujet fera office de sujet au mail que nous expédierons. &lt;br /&gt;
Nous allons donc être précis en un minimum de mots pour que le destinataire de l'email puisse facilement deviner le contenu de celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-06.png]]&lt;br /&gt;
&lt;br /&gt;
==== Repeat ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite choisir l'intervalle de déclenchement de notre action, sachant que nous avons le choix entre: &lt;br /&gt;
&lt;br /&gt;
* none  : pas de déclenchement périodique programmé&lt;br /&gt;
* interval : nous fixons un temps de déclenchement à partir du lancement du programme, l'action se réalisera à chaque fois que ce temps sera écoulé de manière répétée jusqu'à l'interruption manuelle du programme&lt;br /&gt;
* interval between times : nous fixons ici le déclenchement par interval, mais nous fixons aussi une fourchette d'heures et des jours pendant lesquels nous exécutons cet interval&lt;br /&gt;
* at a specific time : nous fixons une heure d'exécution, et un ou plusieurs jours d'exécution. Dans ce cas l'action n'est pas répétée en continu mais éxécutée une seule fois par jour à l'heure programmée&lt;br /&gt;
&lt;br /&gt;
Dans notre exemple, nous allons fixer un intervalle de 15 secondes pour commencer. Nous pourrons ensuite augmenter cette valeur pour éviter de recevoir trop d'emails avec des photos :D&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-07.png]]&lt;br /&gt;
&lt;br /&gt;
La case &amp;quot;inject once at start&amp;quot; permet de ne pas attendre le premier cycle avant d'exécuter une première fois l'action. Elle se lancera dès le lancement du programme, puis périodiquement selon les cycles déterminés par l'intervalle.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-08.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Le champs Name va déterminer le nom que portera le bloc dans l'espace de travail et dans les logs (si nous créons des blocs de log ensuite pour contrôler des étapes).&lt;br /&gt;
Il est important de bien établir ce nom de manière explicite, car le nom des blocs permettra de comprendre et retrouver facilement la logique du schéma construit, même si l'on a pas consulté celui-ci pendant une longue période.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-09.png]]&lt;br /&gt;
&lt;br /&gt;
=== Capture d'une image depuis la PiCam ===&lt;br /&gt;
&lt;br /&gt;
Nous allons aller à l'essentiel en ce qui concerne la capture photo en utilisant une commande simple pour prendre un cliché et renvoyer celui-ci dans le flux NodeRED grâce à un bloc permettant d'exécuter des commandes bash.&lt;br /&gt;
&lt;br /&gt;
{{ambox | text = Vous trouverez un TUTO détaillé sur la PiCam vous permettant de prendre la main, ou de la paramétrer si vous n'avez pas encore utilisé celle-ci auparavant: ....___TUTO___...}} &lt;br /&gt;
&lt;br /&gt;
Nous allons tout d'abord cliquer sur le bloc &amp;quot;Exec&amp;quot; dans la section &amp;quot;Advanced&amp;quot; de la colonne de gauche et glisser l'élément dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-10.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, cliquer sur le bloc nouvellement créé et configurer celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-11.png]]&lt;br /&gt;
&lt;br /&gt;
Le menu suivant s'affichera, et nous pourrons configurer le bloc &amp;quot;Exec&amp;quot; nouvellement créé.&lt;br /&gt;
&lt;br /&gt;
==== Command ====&lt;br /&gt;
&lt;br /&gt;
Nous allons y ajouter la commande à exécuter pour prendre une photo avec la caméra du Raspberry Pi et la stocker dans un fichier jpg dans le dossier /tmp/ de linux.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
raspistill -o /tmp/cam.jpg -w 640 -h 480&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous prenons soin de limiter la hauteur et la largeur de l'image afin de réduire son poids pour l'envoi par email.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-12.png]]&lt;br /&gt;
&lt;br /&gt;
==== +Append ====&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons décocher la case &amp;quot;msg.payload&amp;quot; si elle est cochée par défaut.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-13.png]]&lt;br /&gt;
&lt;br /&gt;
==== Extra input parameters et Timeout ====&lt;br /&gt;
&lt;br /&gt;
Nous n'aurons pas besoin de compléter ces champs pour notre projet.&lt;br /&gt;
&lt;br /&gt;
Si vous cochez le champ &amp;quot;Use spawn() instead of exec()?&amp;quot;, votre commande sera réalisée sous forme d'un processus résident et continuera de s'exécuter jusqu'à ce qu'elle se termine par elle-même (sauf si elle ne se termine jamais).&lt;br /&gt;
Cette solution implique que le programme n'attendra pas que cette commande soit réalisée pour passer aux étapes suivantes. &lt;br /&gt;
Si la suite de l'exécution de votre flux est susceptible d'utiliser le résultat de cette commande, nous vous déconseillons d'utiliser cette option sous peine de provoquer des erreurs à la suite du traitement du flux.&lt;br /&gt;
&lt;br /&gt;
Le champ &amp;quot;Timeout&amp;quot; permet de définir un temps d'attente maximum avant de mettre un terme à l'exécution de la commande. &lt;br /&gt;
Cela permet de débloquer la situation si la commande exécutée prends un temps anormalement long à s'exécuter.&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite compléter le champs nom, celui-ci sera utilisé pour nommer le bloc dans le &amp;quot;schéma&amp;quot;, mais aussi de nommer les logs comme pour le bloc &amp;quot;Exec&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-14.png]]&lt;br /&gt;
&lt;br /&gt;
=== Encodage de l'image en base64 ===&lt;br /&gt;
&lt;br /&gt;
Nous allons convertir la photo prise juste avant en utilisant une commande de conversion en base64.&lt;br /&gt;
Cela facilitera son injection dans un template HTML que nous allons créer ensuite pour construire un email.&lt;br /&gt;
&lt;br /&gt;
Nous allons tout d'abord cliquer sur le bloc &amp;quot;Exec&amp;quot; dans la section &amp;quot;Advanced&amp;quot; de la colonne de gauche et glisser l'élément dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-10.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, cliquer sur le bloc nouvellement créé et configurer celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-11.png]]&lt;br /&gt;
&lt;br /&gt;
Le menu suivant s'affichera, et nous pourrons configurer le bloc &amp;quot;Exec&amp;quot; nouvellement créé.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-15.png]]&lt;br /&gt;
&lt;br /&gt;
==== Command ====&lt;br /&gt;
&lt;br /&gt;
Nous allons y ajouter la commande à exécuter pour encoder en base 64 la photo prise précédemment avec la caméra du Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
base64 -i &amp;quot;/tmp/cam.jpg&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-16.png]]&lt;br /&gt;
&lt;br /&gt;
==== +Append ====&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons cocher la case &amp;quot;msg.payload&amp;quot; si elle n'est pas cochée par défaut pour que le résultat soit directement renvoyé par cette commande dans le &amp;quot;PayLoad&amp;quot; du flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-17.png]]&lt;br /&gt;
&lt;br /&gt;
==== Extra input parameters et Timeout ====&lt;br /&gt;
&lt;br /&gt;
Nous n'aurons pas besoin de compléter ces champs pour notre projet.&lt;br /&gt;
&lt;br /&gt;
Si vous cochez le champ &amp;quot;Use spawn() instead of exec()?&amp;quot;, votre commande sera réalisée sous forme d'un processus résident et continuera de s'exécuter jusqu'à ce qu'elle se termine par elle-même (sauf si elle ne se termine jamais).&lt;br /&gt;
Cette solution implique que le programme n'attendra pas que cette commande soit réalisée pour passer aux étapes suivantes. &lt;br /&gt;
Si la suite de l'exécution de votre flux est susceptible d'utiliser le résultat de cette commande, nous vous déconseillons d'utiliser cette option sous peine de provoquer des erreurs à la suite du traitement du flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-18.png]]&lt;br /&gt;
&lt;br /&gt;
Le champ &amp;quot;Timeout&amp;quot; permet de définir un temps d'attente maximum avant de mettre un terme à l'exécution de la commande. &lt;br /&gt;
Cela permet de débloquer la situation si la commande exécutée prends un temps anormalement long à s'exécuter.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-19.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite compléter le champs nom, celui-ci sera utilisé pour nommer le bloc dans le &amp;quot;schéma&amp;quot;, mais aussi de nommer les logs comme pour le bloc &amp;quot;Exec&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-20.png]]&lt;br /&gt;
&lt;br /&gt;
=== Création d'un email au format HTML ===&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant créer un template d'email au format HTML afin de mettre en forme le message que nous enverrons ensuite.&lt;br /&gt;
Nous allons pour cela utiliser un bloc &amp;quot;Template&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-21.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons attribuer un nom au bloc afin de l'identifier plus facilement dans le flux.&lt;br /&gt;
Nous allons donc le nommer &amp;quot;Contenu du mail&amp;quot; puisque nous créons le contenu du mail que nous enverrons ensuite.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-22.png]]&lt;br /&gt;
&lt;br /&gt;
==== Set property ====&lt;br /&gt;
&lt;br /&gt;
La propriété que nous souhaitons créer dans le flux est le &amp;quot;PayLoad&amp;quot;.&lt;br /&gt;
Ce PayLoad existe déjà, il contient pour le moment l'image au format &amp;quot;Base64&amp;quot; précédemment encodé.&lt;br /&gt;
Cela n'est pas un problème, après notre noeud (notre bloc), le PayLoad sera intégralement remplacé par le template que nous sommes en train de créer.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-23.png]]&lt;br /&gt;
&lt;br /&gt;
==== Template ====&lt;br /&gt;
&lt;br /&gt;
Dans ce template, nous allons créer une structure HTML de base minimum afin que la structure soit interprétée par la majorité des clients/webmail.&lt;br /&gt;
Vous pouvez la personnaliser à votre guise si vous avez les connaissances en HTML.&lt;br /&gt;
&lt;br /&gt;
Voici la structure de base pour notre projet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
    &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;meta charset=&amp;quot;utf8&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/head&amp;gt;&lt;br /&gt;
    &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Projet Photo par email&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;img src=&amp;quot;data:image/jpg;base64,{{payload}}&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pourrez remarquer que nous intégrons l'image en appelant le PayLoad à 'intérieur du code HTML dans la balise &amp;lt;img&amp;gt;.&lt;br /&gt;
C'est le PayLoad créé précédemment par le bloc &amp;quot;Exec&amp;quot; qui est récupéré à ce moment précis.&lt;br /&gt;
Ce PayLoad est remplacé dans le flux par le PayLoad complet avec notre template dans le flux par notre bloc Template.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-24.png]]&lt;br /&gt;
&lt;br /&gt;
=== Création d'un bloc (noeud) &amp;quot;Debug&amp;quot;  ===&lt;br /&gt;
&lt;br /&gt;
Nous allons ajouter la notion d'expéditeur dans le flux que nous avons créé à travers nos blocs (noeuds).&lt;br /&gt;
Pour rappel, actuellement nous avons deux propriétés avec des données dans notre flux. &lt;br /&gt;
Si nous voulons observer ce que nous avons créé jusque là, nous pouvons faire appel à un bloc &amp;quot;Debug&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Création du bloc &amp;quot;Debug&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Comme pour les blocs précédents, nous allons glisser/déposer un bloc débug dans l'espace de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-25.png]]&lt;br /&gt;
&lt;br /&gt;
Celui-ci s'appelle msg/payload par défaut&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-26.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons double-cliquer sur ce bloc pour le configurer.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-27.png]]&lt;br /&gt;
&lt;br /&gt;
==== Output ====&lt;br /&gt;
&lt;br /&gt;
Dans ce champs, nous allons choisir la partie du flux que nous souhaitons afficher, ou nous allons sélectionner le flux entier.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-28.png]]&lt;br /&gt;
&lt;br /&gt;
Sélectionner le flux entier, nous affichera le flux complet incluant toutes ses propriétés.&lt;br /&gt;
&lt;br /&gt;
 [[fichier:Rasp-Node-Red-picam-mail-29.png]]&lt;br /&gt;
&lt;br /&gt;
==== To =====&lt;br /&gt;
&lt;br /&gt;
La propriété &amp;quot;To&amp;quot; nous permet de choisir ou nous souhaitons afficher les données que nous récupérons. &lt;br /&gt;
Soit nous les affichons uniquement dans l'onglet &amp;quot;Debug&amp;quot; à droite de l'espace de travail, soit nous l'affichons dans cet onglet mais aussi dans la console de NodeJS.&lt;br /&gt;
Dans notre cas, nous allons nous contenter d'afficher nos éléments dans l'onglet de &amp;quot;Debug&amp;quot; à droite de notre espace de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-30.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Le champs Name nous servira à identifier quel bloc de &amp;quot;Debug&amp;quot; affiche les données en console ou dans l'onglet &amp;quot;Debug&amp;quot;. &lt;br /&gt;
Il faut donc le nommer efficacement pour bien attacher et comprendre les données que nous récupérons, surtout si nous en plaçons plusieurs dans le flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-31.png]]&lt;br /&gt;
&lt;br /&gt;
==== Exploitation et compréhension des données récupérées ====&lt;br /&gt;
&lt;br /&gt;
Nous avons placé notre bloc &amp;quot;Debug&amp;quot; à la suite du flux en dernière position. &lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-32.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons donc déployer le programme en cliquant sur &amp;quot;Deploy&amp;quot; en haut à droite de la page. &lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-33.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons exécuter manuellement le programme en cliquant sur le bouton se trouvant en début de chaîne:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-34.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite afficher l'onglet &amp;quot;Debug&amp;quot; sur le coté droit de la page et analyser les données récupérées:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-35.png]]&lt;br /&gt;
&lt;br /&gt;
==== Analyse des données récupérées dans l'onglet &amp;quot;Debug&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
08/05/2017 à 12:54:31 node: FORMATAGE&lt;br /&gt;
MCHobby - Photo bureau : msg : Object&lt;br /&gt;
object&lt;br /&gt;
_msgid: &amp;quot;81efe35c.3208d&amp;quot;&lt;br /&gt;
topic: &amp;quot;MCHobby - Photo bureau&amp;quot;&lt;br /&gt;
payload: &amp;quot;&amp;lt;html&amp;gt;↵ &amp;lt;head&amp;gt;↵ &amp;lt;meta charset=&amp;quot;utf8&amp;quot;/&amp;gt;↵ ↵ &amp;lt;/head&amp;gt;↵ &amp;lt;body&amp;gt;↵ &amp;lt;h1&amp;gt;MCHobby - Photo bureau&amp;lt;/h1&amp;gt;↵ &amp;lt;p&amp;gt;Cette photo est un instantané pris dans les bureaux de MCHobby.&amp;lt;/p&amp;gt;↵ &lt;br /&gt;
&amp;lt;img src=&amp;quot;data:image/jpg;base64,&amp;amp;#x2F;9j&amp;amp;#x2F;4WP6x2.../&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comme vous pourrez le constater, chaque élément du noeud est détaillé.&lt;br /&gt;
Les données sont cependant tronquées, le noeud &amp;quot;Debug&amp;quot; ne nous fourni pas la totalité du &amp;quot;PayLoad&amp;quot; mais nous avons déjà un bon aperçu des données qu'il contient.&lt;br /&gt;
&lt;br /&gt;
* '''_msgid:''' est un Id unique de message&lt;br /&gt;
* '''topic:''' est le sujet du mail, nous l'avons déterminé dans le premier bloc&lt;br /&gt;
* '''payload:''' contient les données du message formatées par le template que nous avons créé et complété par l'image en base64.&lt;br /&gt;
&lt;br /&gt;
{{tmbox | text = Les noeuds &amp;quot;Debug&amp;quot; sont pratiques. Ils nous permettent d'afficher une partie ou la totalité du flux tel qu'il est à l'endroit ou ils sont placés. &amp;lt;br/&amp;gt;&amp;lt;br/&amp;gt; Cela peut permettre d'identifier et de résoudre plus facilement des problèmes dans des opérations plus complexes et dans notre cas, cela nous permet de mieux comprendre comment fonctionne le noeud et comment les données sont transmises d'un bloc à l'autre.}}&lt;br /&gt;
&lt;br /&gt;
=== Création d'un expéditeur ===&lt;br /&gt;
&lt;br /&gt;
Nous avons construit petit à petit un message avec un sujet, mais il manque encore un détail: l'expéditeur de l'email que nous allons envoyer.&lt;br /&gt;
&lt;br /&gt;
Si vous avez bien suivi les étapes précédentes du tuto, jusqu'au noeud &amp;quot;Debug&amp;quot; et à son résultat, vous comprendrez facilement la démarche ci après pour ajouter un expéditeur dans le flux.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Rasp-Node-Red-TRAILER}}&lt;/div&gt;</summary>
		<author><name>AntoineWrt</name></author>
	</entry>
	<entry>
		<id>https://wiki.mchobby.be/index.php?title=Rasp-Node-Red-picam-mail&amp;diff=22805</id>
		<title>Rasp-Node-Red-picam-mail</title>
		<link rel="alternate" type="text/html" href="https://wiki.mchobby.be/index.php?title=Rasp-Node-Red-picam-mail&amp;diff=22805"/>
		<updated>2017-05-08T13:04:11Z</updated>

		<summary type="html">&lt;p&gt;AntoineWrt : /* Analyse des données récupérées dans l'onglet &amp;quot;Debug&amp;quot; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Rasp-Node-Red-NAV}}&lt;br /&gt;
&lt;br /&gt;
{{traduction}}&lt;br /&gt;
&lt;br /&gt;
== PiCamRED - Envoi périodique de photos par email avec PiCam et NodeRED ==&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-01.png|900px]]&lt;br /&gt;
&lt;br /&gt;
=== Description du projet ===&lt;br /&gt;
&lt;br /&gt;
Dans ce tutoriel, nous allons réaliser des photos à l'aide de la caméra du RaspBerry Pi 2/3 et envoyer ces clichés par email de manière périodique grâce à NodeRED.&lt;br /&gt;
Nous allons donc utiliser plusieurs blocs et décrire de manière détaillée le déroulement de chaque étape de la réalisation de ce projet.&lt;br /&gt;
&lt;br /&gt;
Dans NodeRED, il est important de bien identifier la finalité de notre projet afin de connaître au préalable tous les éléments qu'il faudra créer et fournir à l'action finale (celle qui enverra un email).&lt;br /&gt;
&lt;br /&gt;
=== Quels sont les besoins du noeud email ===&lt;br /&gt;
&lt;br /&gt;
==== Composants nécessaires pour constituer un email ====&lt;br /&gt;
&lt;br /&gt;
Un email est composé des éléments suivants: &lt;br /&gt;
&lt;br /&gt;
* Un expéditeur&lt;br /&gt;
* Un destinataire&lt;br /&gt;
* Un sujet&lt;br /&gt;
* Le corps du message&lt;br /&gt;
&lt;br /&gt;
Tous ces éléments vont donc devoir être préparés afin de pouvoir construire le message à envoyer par le noeud final.&lt;br /&gt;
&lt;br /&gt;
Le noeud final aura aussi besoin d'un serveur SMTP (serveur d'envoi d'emails) et éventuellement de paramètres d'identification pour ce serveur d'envoi d'emails.&lt;br /&gt;
&lt;br /&gt;
==== Détail des besoins du noeud email ====&lt;br /&gt;
&lt;br /&gt;
La liste des éléments nécessaires s'affiche lorsque le bloc est dans la zone de travail (Schema).&lt;br /&gt;
Commençons donc par sélectionner le bloc email, et de le glisser dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
Commençons par cliquer sur le bloc email et nous maintenons le clic pour le glisser à droite dans l'espace de travail.&lt;br /&gt;
&lt;br /&gt;
(on choisit celui qui a son point de liaison à gauche, car nous voulons un bloc de sortie)&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-36.png]]&lt;br /&gt;
&lt;br /&gt;
Glissons le dans l'espace de travail, et cliquons un clic simple pour le sélectionner.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-37.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, dans la colonne à droite de cet espace de travail, nous cliquons sur info et nous pourrons découvrir les éléments nécessaires à la constitution d'un bloc email.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-38.png]]&lt;br /&gt;
&lt;br /&gt;
===== Nous utiliserons les champs suivants =====&lt;br /&gt;
&lt;br /&gt;
* '''msg.payload''' --&amp;gt; Ce champ contient le corps de l'email&lt;br /&gt;
* '''msg.topic''' --&amp;gt; Ce champ contient le sujet de l'email&lt;br /&gt;
* '''msg.from''' --&amp;gt; Ce champ contient l'email de l'expéditeur &lt;br /&gt;
* '''msg.to''' --&amp;gt; Ce champ contient l'email du destinataire&lt;br /&gt;
&lt;br /&gt;
Les autres champs ne seront pas utilisés dans notre cas, mais vous pourrez constater que le bloc email est complet de part ses fonctionnalités et possibilités.&lt;br /&gt;
&lt;br /&gt;
Les données de serveur et d'identification seront abordées en fin de tuto lors de la configuration finale du bloc.&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant passer à la réalisation du flux en commençant par le début de celui-ci.&lt;br /&gt;
&lt;br /&gt;
=== Création d'une action périodique ===&lt;br /&gt;
&lt;br /&gt;
Dans la colonne de gauche de NodeRED, se trouvent une liste de blocs à utiliser pour réaliser vos projets. Ils sont classés par &amp;quot;types&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Ainsi nous retrouvons les &amp;quot;types&amp;quot; suivants:&lt;br /&gt;
&lt;br /&gt;
* Input qui contient tous les blocs d'entrées&lt;br /&gt;
* Ouput qui contient tous les blocs de sortie&lt;br /&gt;
* Function qui contient des blocs de fonctions javascript etc...&lt;br /&gt;
* Social qui sont des blocs d'entrée ou sorties depuis ou vers les réseaux sociaux&lt;br /&gt;
* Storage qui sont des fonctions de lecture ou d'écriture de fichiers&lt;br /&gt;
* Analysis -&amp;gt;&amp;gt; Sentiment interprète du texte et détermine un score sur base d'un dictionnaire anglais, renvoie le texte avec ce score de -5 à +5, déterminant ainsi l'émotion susceptible d'être procuré par ce texte&lt;br /&gt;
* Advanced possède des outils permettant de détecter des changements dans des fichiers ou dossiers, de lire des flux RSS ou encore EXEC qui permet d'exécuter directement des commandes sous linux !&lt;br /&gt;
* Raspberry Pi contient des outils pour piloter/lire le GPIO du raspberry Pi&lt;br /&gt;
* Network qui contient un outil réseau de Ping&lt;br /&gt;
 &lt;br /&gt;
Nous allons créer une action périodique, c'est à dire paramétrer un bloc &amp;quot;INJECT&amp;quot; de manière à déclencher régulièrement une chaine d'actions que nous allons accrocher à la suite les unes après les autres.&lt;br /&gt;
Nous allons donc cliquer sur le bloc &amp;quot;Inject&amp;quot; dans la liste &amp;quot;Input&amp;quot; et maintenir ce clic pour le déplacer vers la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-02.png]]&lt;br /&gt;
&lt;br /&gt;
Nous obtiendrons donc une nouvelle instance &amp;quot;inject&amp;quot; qui portera le nom &amp;quot;Timestamp&amp;quot; (ce nom est attribué par défaut par NodeRED) comme dans la capture ci-dessous&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-03.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant double-cliquer sur celle-ci fin de l'éditer pour voir apparaitre le menu ci-dessous&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-04.png]]&lt;br /&gt;
&lt;br /&gt;
Il va falloir configurer ce bloc, mais avant tout voici une explication de celui-ci:&lt;br /&gt;
&lt;br /&gt;
==== Payload ====&lt;br /&gt;
&lt;br /&gt;
Le champs PayLoad est en fait le champ de données qui sera suivi d'un noeud à l'autre jusque à la fin de la chaine.&lt;br /&gt;
Dans ce module &amp;quot;inject&amp;quot;, nous allons donc déterminer quel type de données contiendra le &amp;quot;PayLoad&amp;quot; jusqu'à la fin de la chaine que l'on va réaliser.&lt;br /&gt;
&lt;br /&gt;
Dans notre cas, nous souhaitons construire un email, donc du contenu textuel, nous allons donc choisir &amp;quot;String&amp;quot; ce qui correspond à une chaine de caractères (du texte).&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-05.png]]&lt;br /&gt;
&lt;br /&gt;
==== Topic ====&lt;br /&gt;
&lt;br /&gt;
Le champs &amp;quot;Topic&amp;quot; est un champs de texte dans lequel nous allons mettre un sujet succinct décrivant notre chaine. &lt;br /&gt;
Dans notre cas, ce sujet fera office de sujet au mail que nous expédierons. &lt;br /&gt;
Nous allons donc être précis en un minimum de mots pour que le destinataire de l'email puisse facilement deviner le contenu de celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-06.png]]&lt;br /&gt;
&lt;br /&gt;
==== Repeat ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite choisir l'intervalle de déclenchement de notre action, sachant que nous avons le choix entre: &lt;br /&gt;
&lt;br /&gt;
* none  : pas de déclenchement périodique programmé&lt;br /&gt;
* interval : nous fixons un temps de déclenchement à partir du lancement du programme, l'action se réalisera à chaque fois que ce temps sera écoulé de manière répétée jusqu'à l'interruption manuelle du programme&lt;br /&gt;
* interval between times : nous fixons ici le déclenchement par interval, mais nous fixons aussi une fourchette d'heures et des jours pendant lesquels nous exécutons cet interval&lt;br /&gt;
* at a specific time : nous fixons une heure d'exécution, et un ou plusieurs jours d'exécution. Dans ce cas l'action n'est pas répétée en continu mais éxécutée une seule fois par jour à l'heure programmée&lt;br /&gt;
&lt;br /&gt;
Dans notre exemple, nous allons fixer un intervalle de 15 secondes pour commencer. Nous pourrons ensuite augmenter cette valeur pour éviter de recevoir trop d'emails avec des photos :D&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-07.png]]&lt;br /&gt;
&lt;br /&gt;
La case &amp;quot;inject once at start&amp;quot; permet de ne pas attendre le premier cycle avant d'exécuter une première fois l'action. Elle se lancera dès le lancement du programme, puis périodiquement selon les cycles déterminés par l'intervalle.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-08.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Le champs Name va déterminer le nom que portera le bloc dans l'espace de travail et dans les logs (si nous créons des blocs de log ensuite pour contrôler des étapes).&lt;br /&gt;
Il est important de bien établir ce nom de manière explicite, car le nom des blocs permettra de comprendre et retrouver facilement la logique du schéma construit, même si l'on a pas consulté celui-ci pendant une longue période.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-09.png]]&lt;br /&gt;
&lt;br /&gt;
=== Capture d'une image depuis la PiCam ===&lt;br /&gt;
&lt;br /&gt;
Nous allons aller à l'essentiel en ce qui concerne la capture photo en utilisant une commande simple pour prendre un cliché et renvoyer celui-ci dans le flux NodeRED grâce à un bloc permettant d'exécuter des commandes bash.&lt;br /&gt;
&lt;br /&gt;
{{ambox | text = Vous trouverez un TUTO détaillé sur la PiCam vous permettant de prendre la main, ou de la paramétrer si vous n'avez pas encore utilisé celle-ci auparavant: ....___TUTO___...}} &lt;br /&gt;
&lt;br /&gt;
Nous allons tout d'abord cliquer sur le bloc &amp;quot;Exec&amp;quot; dans la section &amp;quot;Advanced&amp;quot; de la colonne de gauche et glisser l'élément dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-10.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, cliquer sur le bloc nouvellement créé et configurer celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-11.png]]&lt;br /&gt;
&lt;br /&gt;
Le menu suivant s'affichera, et nous pourrons configurer le bloc &amp;quot;Exec&amp;quot; nouvellement créé.&lt;br /&gt;
&lt;br /&gt;
==== Command ====&lt;br /&gt;
&lt;br /&gt;
Nous allons y ajouter la commande à exécuter pour prendre une photo avec la caméra du Raspberry Pi et la stocker dans un fichier jpg dans le dossier /tmp/ de linux.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
raspistill -o /tmp/cam.jpg -w 640 -h 480&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous prenons soin de limiter la hauteur et la largeur de l'image afin de réduire son poids pour l'envoi par email.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-12.png]]&lt;br /&gt;
&lt;br /&gt;
==== +Append ====&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons décocher la case &amp;quot;msg.payload&amp;quot; si elle est cochée par défaut.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-13.png]]&lt;br /&gt;
&lt;br /&gt;
==== Extra input parameters et Timeout ====&lt;br /&gt;
&lt;br /&gt;
Nous n'aurons pas besoin de compléter ces champs pour notre projet.&lt;br /&gt;
&lt;br /&gt;
Si vous cochez le champ &amp;quot;Use spawn() instead of exec()?&amp;quot;, votre commande sera réalisée sous forme d'un processus résident et continuera de s'exécuter jusqu'à ce qu'elle se termine par elle-même (sauf si elle ne se termine jamais).&lt;br /&gt;
Cette solution implique que le programme n'attendra pas que cette commande soit réalisée pour passer aux étapes suivantes. &lt;br /&gt;
Si la suite de l'exécution de votre flux est susceptible d'utiliser le résultat de cette commande, nous vous déconseillons d'utiliser cette option sous peine de provoquer des erreurs à la suite du traitement du flux.&lt;br /&gt;
&lt;br /&gt;
Le champ &amp;quot;Timeout&amp;quot; permet de définir un temps d'attente maximum avant de mettre un terme à l'exécution de la commande. &lt;br /&gt;
Cela permet de débloquer la situation si la commande exécutée prends un temps anormalement long à s'exécuter.&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite compléter le champs nom, celui-ci sera utilisé pour nommer le bloc dans le &amp;quot;schéma&amp;quot;, mais aussi de nommer les logs comme pour le bloc &amp;quot;Exec&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-14.png]]&lt;br /&gt;
&lt;br /&gt;
=== Encodage de l'image en base64 ===&lt;br /&gt;
&lt;br /&gt;
Nous allons convertir la photo prise juste avant en utilisant une commande de conversion en base64.&lt;br /&gt;
Cela facilitera son injection dans un template HTML que nous allons créer ensuite pour construire un email.&lt;br /&gt;
&lt;br /&gt;
Nous allons tout d'abord cliquer sur le bloc &amp;quot;Exec&amp;quot; dans la section &amp;quot;Advanced&amp;quot; de la colonne de gauche et glisser l'élément dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-10.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, cliquer sur le bloc nouvellement créé et configurer celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-11.png]]&lt;br /&gt;
&lt;br /&gt;
Le menu suivant s'affichera, et nous pourrons configurer le bloc &amp;quot;Exec&amp;quot; nouvellement créé.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-15.png]]&lt;br /&gt;
&lt;br /&gt;
==== Command ====&lt;br /&gt;
&lt;br /&gt;
Nous allons y ajouter la commande à exécuter pour encoder en base 64 la photo prise précédemment avec la caméra du Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
base64 -i &amp;quot;/tmp/cam.jpg&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-16.png]]&lt;br /&gt;
&lt;br /&gt;
==== +Append ====&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons cocher la case &amp;quot;msg.payload&amp;quot; si elle n'est pas cochée par défaut pour que le résultat soit directement renvoyé par cette commande dans le &amp;quot;PayLoad&amp;quot; du flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-17.png]]&lt;br /&gt;
&lt;br /&gt;
==== Extra input parameters et Timeout ====&lt;br /&gt;
&lt;br /&gt;
Nous n'aurons pas besoin de compléter ces champs pour notre projet.&lt;br /&gt;
&lt;br /&gt;
Si vous cochez le champ &amp;quot;Use spawn() instead of exec()?&amp;quot;, votre commande sera réalisée sous forme d'un processus résident et continuera de s'exécuter jusqu'à ce qu'elle se termine par elle-même (sauf si elle ne se termine jamais).&lt;br /&gt;
Cette solution implique que le programme n'attendra pas que cette commande soit réalisée pour passer aux étapes suivantes. &lt;br /&gt;
Si la suite de l'exécution de votre flux est susceptible d'utiliser le résultat de cette commande, nous vous déconseillons d'utiliser cette option sous peine de provoquer des erreurs à la suite du traitement du flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-18.png]]&lt;br /&gt;
&lt;br /&gt;
Le champ &amp;quot;Timeout&amp;quot; permet de définir un temps d'attente maximum avant de mettre un terme à l'exécution de la commande. &lt;br /&gt;
Cela permet de débloquer la situation si la commande exécutée prends un temps anormalement long à s'exécuter.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-19.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite compléter le champs nom, celui-ci sera utilisé pour nommer le bloc dans le &amp;quot;schéma&amp;quot;, mais aussi de nommer les logs comme pour le bloc &amp;quot;Exec&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-20.png]]&lt;br /&gt;
&lt;br /&gt;
=== Création d'un email au format HTML ===&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant créer un template d'email au format HTML afin de mettre en forme le message que nous enverrons ensuite.&lt;br /&gt;
Nous allons pour cela utiliser un bloc &amp;quot;Template&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-21.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons attribuer un nom au bloc afin de l'identifier plus facilement dans le flux.&lt;br /&gt;
Nous allons donc le nommer &amp;quot;Contenu du mail&amp;quot; puisque nous créons le contenu du mail que nous enverrons ensuite.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-22.png]]&lt;br /&gt;
&lt;br /&gt;
==== Set property ====&lt;br /&gt;
&lt;br /&gt;
La propriété que nous souhaitons créer dans le flux est le &amp;quot;PayLoad&amp;quot;.&lt;br /&gt;
Ce PayLoad existe déjà, il contient pour le moment l'image au format &amp;quot;Base64&amp;quot; précédemment encodé.&lt;br /&gt;
Cela n'est pas un problème, après notre noeud (notre bloc), le PayLoad sera intégralement remplacé par le template que nous sommes en train de créer.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-23.png]]&lt;br /&gt;
&lt;br /&gt;
==== Template ====&lt;br /&gt;
&lt;br /&gt;
Dans ce template, nous allons créer une structure HTML de base minimum afin que la structure soit interprétée par la majorité des clients/webmail.&lt;br /&gt;
Vous pouvez la personnaliser à votre guise si vous avez les connaissances en HTML.&lt;br /&gt;
&lt;br /&gt;
Voici la structure de base pour notre projet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
    &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;meta charset=&amp;quot;utf8&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/head&amp;gt;&lt;br /&gt;
    &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Projet Photo par email&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;img src=&amp;quot;data:image/jpg;base64,{{payload}}&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pourrez remarquer que nous intégrons l'image en appelant le PayLoad à 'intérieur du code HTML dans la balise &amp;lt;img&amp;gt;.&lt;br /&gt;
C'est le PayLoad créé précédemment par le bloc &amp;quot;Exec&amp;quot; qui est récupéré à ce moment précis.&lt;br /&gt;
Ce PayLoad est remplacé dans le flux par le PayLoad complet avec notre template dans le flux par notre bloc Template.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-24.png]]&lt;br /&gt;
&lt;br /&gt;
=== Création d'un bloc (noeud) &amp;quot;Debug&amp;quot;  ===&lt;br /&gt;
&lt;br /&gt;
Nous allons ajouter la notion d'expéditeur dans le flux que nous avons créé à travers nos blocs (noeuds).&lt;br /&gt;
Pour rappel, actuellement nous avons deux propriétés avec des données dans notre flux. &lt;br /&gt;
Si nous voulons observer ce que nous avons créé jusque là, nous pouvons faire appel à un bloc &amp;quot;Debug&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Création du bloc &amp;quot;Debug&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Comme pour les blocs précédents, nous allons glisser/déposer un bloc débug dans l'espace de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-25.png]]&lt;br /&gt;
&lt;br /&gt;
Celui-ci s'appelle msg/payload par défaut&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-26.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons double-cliquer sur ce bloc pour le configurer.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-27.png]]&lt;br /&gt;
&lt;br /&gt;
==== Output ====&lt;br /&gt;
&lt;br /&gt;
Dans ce champs, nous allons choisir la partie du flux que nous souhaitons afficher, ou nous allons sélectionner le flux entier.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-28.png]]&lt;br /&gt;
&lt;br /&gt;
Sélectionner le flux entier, nous affichera le flux complet incluant toutes ses propriétés.&lt;br /&gt;
&lt;br /&gt;
 [[fichier:Rasp-Node-Red-picam-mail-29.png]]&lt;br /&gt;
&lt;br /&gt;
==== To =====&lt;br /&gt;
&lt;br /&gt;
La propriété &amp;quot;To&amp;quot; nous permet de choisir ou nous souhaitons afficher les données que nous récupérons. &lt;br /&gt;
Soit nous les affichons uniquement dans l'onglet &amp;quot;Debug&amp;quot; à droite de l'espace de travail, soit nous l'affichons dans cet onglet mais aussi dans la console de NodeJS.&lt;br /&gt;
Dans notre cas, nous allons nous contenter d'afficher nos éléments dans l'onglet de &amp;quot;Debug&amp;quot; à droite de notre espace de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-30.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Le champs Name nous servira à identifier quel bloc de &amp;quot;Debug&amp;quot; affiche les données en console ou dans l'onglet &amp;quot;Debug&amp;quot;. &lt;br /&gt;
Il faut donc le nommer efficacement pour bien attacher et comprendre les données que nous récupérons, surtout si nous en plaçons plusieurs dans le flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-31.png]]&lt;br /&gt;
&lt;br /&gt;
==== Exploitation et compréhension des données récupérées ====&lt;br /&gt;
&lt;br /&gt;
Nous avons placé notre bloc &amp;quot;Debug&amp;quot; à la suite du flux en dernière position. &lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-32.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons donc déployer le programme en cliquant sur &amp;quot;Deploy&amp;quot; en haut à droite de la page. &lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-33.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons exécuter manuellement le programme en cliquant sur le bouton se trouvant en début de chaîne:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-34.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite afficher l'onglet &amp;quot;Debug&amp;quot; sur le coté droit de la page et analyser les données récupérées:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-35.png]]&lt;br /&gt;
&lt;br /&gt;
==== Analyse des données récupérées dans l'onglet &amp;quot;Debug&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
08/05/2017 à 12:54:31 node: FORMATAGE&lt;br /&gt;
MCHobby - Photo bureau : msg : Object&lt;br /&gt;
object&lt;br /&gt;
_msgid: &amp;quot;81efe35c.3208d&amp;quot;&lt;br /&gt;
topic: &amp;quot;MCHobby - Photo bureau&amp;quot;&lt;br /&gt;
payload: &amp;quot;&amp;lt;html&amp;gt;↵ &amp;lt;head&amp;gt;↵ &amp;lt;meta charset=&amp;quot;utf8&amp;quot;/&amp;gt;↵ ↵ &amp;lt;/head&amp;gt;↵ &amp;lt;body&amp;gt;↵ &amp;lt;h1&amp;gt;MCHobby - Photo bureau&amp;lt;/h1&amp;gt;↵ &amp;lt;p&amp;gt;Cette photo est un instantané pris dans les bureaux de MCHobby.&amp;lt;/p&amp;gt;↵ &lt;br /&gt;
&amp;lt;img src=&amp;quot;data:image/jpg;base64,&amp;amp;#x2F;9j&amp;amp;#x2F;4WP6x2.../&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comme vous pourrez le constater, chaque élément du noeud est détaillé.&lt;br /&gt;
Les données sont cependant tronquées, le noeud &amp;quot;Debug&amp;quot; ne nous fourni pas la totalité du &amp;quot;PayLoad&amp;quot; mais nous avons déjà un bon aperçu des données qu'il contient.&lt;br /&gt;
&lt;br /&gt;
* '''_msgid:''' est un Id unique de message&lt;br /&gt;
* '''topic:''' est le sujet du mail, nous l'avons déterminé dans le premier bloc&lt;br /&gt;
* '''payload:''' contient les données du message formatées par le template que nous avons créé et complété par l'image en base64.&lt;br /&gt;
&lt;br /&gt;
{{tmbox | text = Les noeuds &amp;quot;Debug&amp;quot; sont pratiques. Ils nous permettent d'afficher une partie ou la totalité du flux tel qu'il est à l'endroit ou ils sont placés. &amp;lt;br/&amp;gt; Cela peut permettre d'identifier et de résoudre plus facilement des problèmes dans des opérations plus complexes et dans notre cas, cela nous permet de mieux comprendre comment fonctionne le noeud et comment les données sont transmises d'un bloc à l'autre.}}&lt;br /&gt;
&lt;br /&gt;
=== Création d'un expéditeur ===&lt;br /&gt;
&lt;br /&gt;
Nous avons construit petit à petit un message avec un sujet, mais il manque encore un détail: l'expéditeur de l'email que nous allons envoyer.&lt;br /&gt;
&lt;br /&gt;
Si vous avez bien suivi les étapes précédentes du tuto, jusqu'au noeud &amp;quot;Debug&amp;quot; et à son résultat, vous comprendrez facilement la démarche ci après pour ajouter un expéditeur dans le flux.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Rasp-Node-Red-TRAILER}}&lt;/div&gt;</summary>
		<author><name>AntoineWrt</name></author>
	</entry>
	<entry>
		<id>https://wiki.mchobby.be/index.php?title=Rasp-Node-Red-picam-mail&amp;diff=22804</id>
		<title>Rasp-Node-Red-picam-mail</title>
		<link rel="alternate" type="text/html" href="https://wiki.mchobby.be/index.php?title=Rasp-Node-Red-picam-mail&amp;diff=22804"/>
		<updated>2017-05-08T13:03:44Z</updated>

		<summary type="html">&lt;p&gt;AntoineWrt : /* Analyse des données récupérées dans l'onglet &amp;quot;Debug&amp;quot; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Rasp-Node-Red-NAV}}&lt;br /&gt;
&lt;br /&gt;
{{traduction}}&lt;br /&gt;
&lt;br /&gt;
== PiCamRED - Envoi périodique de photos par email avec PiCam et NodeRED ==&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-01.png|900px]]&lt;br /&gt;
&lt;br /&gt;
=== Description du projet ===&lt;br /&gt;
&lt;br /&gt;
Dans ce tutoriel, nous allons réaliser des photos à l'aide de la caméra du RaspBerry Pi 2/3 et envoyer ces clichés par email de manière périodique grâce à NodeRED.&lt;br /&gt;
Nous allons donc utiliser plusieurs blocs et décrire de manière détaillée le déroulement de chaque étape de la réalisation de ce projet.&lt;br /&gt;
&lt;br /&gt;
Dans NodeRED, il est important de bien identifier la finalité de notre projet afin de connaître au préalable tous les éléments qu'il faudra créer et fournir à l'action finale (celle qui enverra un email).&lt;br /&gt;
&lt;br /&gt;
=== Quels sont les besoins du noeud email ===&lt;br /&gt;
&lt;br /&gt;
==== Composants nécessaires pour constituer un email ====&lt;br /&gt;
&lt;br /&gt;
Un email est composé des éléments suivants: &lt;br /&gt;
&lt;br /&gt;
* Un expéditeur&lt;br /&gt;
* Un destinataire&lt;br /&gt;
* Un sujet&lt;br /&gt;
* Le corps du message&lt;br /&gt;
&lt;br /&gt;
Tous ces éléments vont donc devoir être préparés afin de pouvoir construire le message à envoyer par le noeud final.&lt;br /&gt;
&lt;br /&gt;
Le noeud final aura aussi besoin d'un serveur SMTP (serveur d'envoi d'emails) et éventuellement de paramètres d'identification pour ce serveur d'envoi d'emails.&lt;br /&gt;
&lt;br /&gt;
==== Détail des besoins du noeud email ====&lt;br /&gt;
&lt;br /&gt;
La liste des éléments nécessaires s'affiche lorsque le bloc est dans la zone de travail (Schema).&lt;br /&gt;
Commençons donc par sélectionner le bloc email, et de le glisser dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
Commençons par cliquer sur le bloc email et nous maintenons le clic pour le glisser à droite dans l'espace de travail.&lt;br /&gt;
&lt;br /&gt;
(on choisit celui qui a son point de liaison à gauche, car nous voulons un bloc de sortie)&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-36.png]]&lt;br /&gt;
&lt;br /&gt;
Glissons le dans l'espace de travail, et cliquons un clic simple pour le sélectionner.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-37.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, dans la colonne à droite de cet espace de travail, nous cliquons sur info et nous pourrons découvrir les éléments nécessaires à la constitution d'un bloc email.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-38.png]]&lt;br /&gt;
&lt;br /&gt;
===== Nous utiliserons les champs suivants =====&lt;br /&gt;
&lt;br /&gt;
* '''msg.payload''' --&amp;gt; Ce champ contient le corps de l'email&lt;br /&gt;
* '''msg.topic''' --&amp;gt; Ce champ contient le sujet de l'email&lt;br /&gt;
* '''msg.from''' --&amp;gt; Ce champ contient l'email de l'expéditeur &lt;br /&gt;
* '''msg.to''' --&amp;gt; Ce champ contient l'email du destinataire&lt;br /&gt;
&lt;br /&gt;
Les autres champs ne seront pas utilisés dans notre cas, mais vous pourrez constater que le bloc email est complet de part ses fonctionnalités et possibilités.&lt;br /&gt;
&lt;br /&gt;
Les données de serveur et d'identification seront abordées en fin de tuto lors de la configuration finale du bloc.&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant passer à la réalisation du flux en commençant par le début de celui-ci.&lt;br /&gt;
&lt;br /&gt;
=== Création d'une action périodique ===&lt;br /&gt;
&lt;br /&gt;
Dans la colonne de gauche de NodeRED, se trouvent une liste de blocs à utiliser pour réaliser vos projets. Ils sont classés par &amp;quot;types&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Ainsi nous retrouvons les &amp;quot;types&amp;quot; suivants:&lt;br /&gt;
&lt;br /&gt;
* Input qui contient tous les blocs d'entrées&lt;br /&gt;
* Ouput qui contient tous les blocs de sortie&lt;br /&gt;
* Function qui contient des blocs de fonctions javascript etc...&lt;br /&gt;
* Social qui sont des blocs d'entrée ou sorties depuis ou vers les réseaux sociaux&lt;br /&gt;
* Storage qui sont des fonctions de lecture ou d'écriture de fichiers&lt;br /&gt;
* Analysis -&amp;gt;&amp;gt; Sentiment interprète du texte et détermine un score sur base d'un dictionnaire anglais, renvoie le texte avec ce score de -5 à +5, déterminant ainsi l'émotion susceptible d'être procuré par ce texte&lt;br /&gt;
* Advanced possède des outils permettant de détecter des changements dans des fichiers ou dossiers, de lire des flux RSS ou encore EXEC qui permet d'exécuter directement des commandes sous linux !&lt;br /&gt;
* Raspberry Pi contient des outils pour piloter/lire le GPIO du raspberry Pi&lt;br /&gt;
* Network qui contient un outil réseau de Ping&lt;br /&gt;
 &lt;br /&gt;
Nous allons créer une action périodique, c'est à dire paramétrer un bloc &amp;quot;INJECT&amp;quot; de manière à déclencher régulièrement une chaine d'actions que nous allons accrocher à la suite les unes après les autres.&lt;br /&gt;
Nous allons donc cliquer sur le bloc &amp;quot;Inject&amp;quot; dans la liste &amp;quot;Input&amp;quot; et maintenir ce clic pour le déplacer vers la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-02.png]]&lt;br /&gt;
&lt;br /&gt;
Nous obtiendrons donc une nouvelle instance &amp;quot;inject&amp;quot; qui portera le nom &amp;quot;Timestamp&amp;quot; (ce nom est attribué par défaut par NodeRED) comme dans la capture ci-dessous&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-03.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant double-cliquer sur celle-ci fin de l'éditer pour voir apparaitre le menu ci-dessous&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-04.png]]&lt;br /&gt;
&lt;br /&gt;
Il va falloir configurer ce bloc, mais avant tout voici une explication de celui-ci:&lt;br /&gt;
&lt;br /&gt;
==== Payload ====&lt;br /&gt;
&lt;br /&gt;
Le champs PayLoad est en fait le champ de données qui sera suivi d'un noeud à l'autre jusque à la fin de la chaine.&lt;br /&gt;
Dans ce module &amp;quot;inject&amp;quot;, nous allons donc déterminer quel type de données contiendra le &amp;quot;PayLoad&amp;quot; jusqu'à la fin de la chaine que l'on va réaliser.&lt;br /&gt;
&lt;br /&gt;
Dans notre cas, nous souhaitons construire un email, donc du contenu textuel, nous allons donc choisir &amp;quot;String&amp;quot; ce qui correspond à une chaine de caractères (du texte).&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-05.png]]&lt;br /&gt;
&lt;br /&gt;
==== Topic ====&lt;br /&gt;
&lt;br /&gt;
Le champs &amp;quot;Topic&amp;quot; est un champs de texte dans lequel nous allons mettre un sujet succinct décrivant notre chaine. &lt;br /&gt;
Dans notre cas, ce sujet fera office de sujet au mail que nous expédierons. &lt;br /&gt;
Nous allons donc être précis en un minimum de mots pour que le destinataire de l'email puisse facilement deviner le contenu de celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-06.png]]&lt;br /&gt;
&lt;br /&gt;
==== Repeat ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite choisir l'intervalle de déclenchement de notre action, sachant que nous avons le choix entre: &lt;br /&gt;
&lt;br /&gt;
* none  : pas de déclenchement périodique programmé&lt;br /&gt;
* interval : nous fixons un temps de déclenchement à partir du lancement du programme, l'action se réalisera à chaque fois que ce temps sera écoulé de manière répétée jusqu'à l'interruption manuelle du programme&lt;br /&gt;
* interval between times : nous fixons ici le déclenchement par interval, mais nous fixons aussi une fourchette d'heures et des jours pendant lesquels nous exécutons cet interval&lt;br /&gt;
* at a specific time : nous fixons une heure d'exécution, et un ou plusieurs jours d'exécution. Dans ce cas l'action n'est pas répétée en continu mais éxécutée une seule fois par jour à l'heure programmée&lt;br /&gt;
&lt;br /&gt;
Dans notre exemple, nous allons fixer un intervalle de 15 secondes pour commencer. Nous pourrons ensuite augmenter cette valeur pour éviter de recevoir trop d'emails avec des photos :D&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-07.png]]&lt;br /&gt;
&lt;br /&gt;
La case &amp;quot;inject once at start&amp;quot; permet de ne pas attendre le premier cycle avant d'exécuter une première fois l'action. Elle se lancera dès le lancement du programme, puis périodiquement selon les cycles déterminés par l'intervalle.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-08.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Le champs Name va déterminer le nom que portera le bloc dans l'espace de travail et dans les logs (si nous créons des blocs de log ensuite pour contrôler des étapes).&lt;br /&gt;
Il est important de bien établir ce nom de manière explicite, car le nom des blocs permettra de comprendre et retrouver facilement la logique du schéma construit, même si l'on a pas consulté celui-ci pendant une longue période.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-09.png]]&lt;br /&gt;
&lt;br /&gt;
=== Capture d'une image depuis la PiCam ===&lt;br /&gt;
&lt;br /&gt;
Nous allons aller à l'essentiel en ce qui concerne la capture photo en utilisant une commande simple pour prendre un cliché et renvoyer celui-ci dans le flux NodeRED grâce à un bloc permettant d'exécuter des commandes bash.&lt;br /&gt;
&lt;br /&gt;
{{ambox | text = Vous trouverez un TUTO détaillé sur la PiCam vous permettant de prendre la main, ou de la paramétrer si vous n'avez pas encore utilisé celle-ci auparavant: ....___TUTO___...}} &lt;br /&gt;
&lt;br /&gt;
Nous allons tout d'abord cliquer sur le bloc &amp;quot;Exec&amp;quot; dans la section &amp;quot;Advanced&amp;quot; de la colonne de gauche et glisser l'élément dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-10.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, cliquer sur le bloc nouvellement créé et configurer celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-11.png]]&lt;br /&gt;
&lt;br /&gt;
Le menu suivant s'affichera, et nous pourrons configurer le bloc &amp;quot;Exec&amp;quot; nouvellement créé.&lt;br /&gt;
&lt;br /&gt;
==== Command ====&lt;br /&gt;
&lt;br /&gt;
Nous allons y ajouter la commande à exécuter pour prendre une photo avec la caméra du Raspberry Pi et la stocker dans un fichier jpg dans le dossier /tmp/ de linux.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
raspistill -o /tmp/cam.jpg -w 640 -h 480&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous prenons soin de limiter la hauteur et la largeur de l'image afin de réduire son poids pour l'envoi par email.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-12.png]]&lt;br /&gt;
&lt;br /&gt;
==== +Append ====&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons décocher la case &amp;quot;msg.payload&amp;quot; si elle est cochée par défaut.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-13.png]]&lt;br /&gt;
&lt;br /&gt;
==== Extra input parameters et Timeout ====&lt;br /&gt;
&lt;br /&gt;
Nous n'aurons pas besoin de compléter ces champs pour notre projet.&lt;br /&gt;
&lt;br /&gt;
Si vous cochez le champ &amp;quot;Use spawn() instead of exec()?&amp;quot;, votre commande sera réalisée sous forme d'un processus résident et continuera de s'exécuter jusqu'à ce qu'elle se termine par elle-même (sauf si elle ne se termine jamais).&lt;br /&gt;
Cette solution implique que le programme n'attendra pas que cette commande soit réalisée pour passer aux étapes suivantes. &lt;br /&gt;
Si la suite de l'exécution de votre flux est susceptible d'utiliser le résultat de cette commande, nous vous déconseillons d'utiliser cette option sous peine de provoquer des erreurs à la suite du traitement du flux.&lt;br /&gt;
&lt;br /&gt;
Le champ &amp;quot;Timeout&amp;quot; permet de définir un temps d'attente maximum avant de mettre un terme à l'exécution de la commande. &lt;br /&gt;
Cela permet de débloquer la situation si la commande exécutée prends un temps anormalement long à s'exécuter.&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite compléter le champs nom, celui-ci sera utilisé pour nommer le bloc dans le &amp;quot;schéma&amp;quot;, mais aussi de nommer les logs comme pour le bloc &amp;quot;Exec&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-14.png]]&lt;br /&gt;
&lt;br /&gt;
=== Encodage de l'image en base64 ===&lt;br /&gt;
&lt;br /&gt;
Nous allons convertir la photo prise juste avant en utilisant une commande de conversion en base64.&lt;br /&gt;
Cela facilitera son injection dans un template HTML que nous allons créer ensuite pour construire un email.&lt;br /&gt;
&lt;br /&gt;
Nous allons tout d'abord cliquer sur le bloc &amp;quot;Exec&amp;quot; dans la section &amp;quot;Advanced&amp;quot; de la colonne de gauche et glisser l'élément dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-10.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, cliquer sur le bloc nouvellement créé et configurer celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-11.png]]&lt;br /&gt;
&lt;br /&gt;
Le menu suivant s'affichera, et nous pourrons configurer le bloc &amp;quot;Exec&amp;quot; nouvellement créé.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-15.png]]&lt;br /&gt;
&lt;br /&gt;
==== Command ====&lt;br /&gt;
&lt;br /&gt;
Nous allons y ajouter la commande à exécuter pour encoder en base 64 la photo prise précédemment avec la caméra du Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
base64 -i &amp;quot;/tmp/cam.jpg&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-16.png]]&lt;br /&gt;
&lt;br /&gt;
==== +Append ====&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons cocher la case &amp;quot;msg.payload&amp;quot; si elle n'est pas cochée par défaut pour que le résultat soit directement renvoyé par cette commande dans le &amp;quot;PayLoad&amp;quot; du flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-17.png]]&lt;br /&gt;
&lt;br /&gt;
==== Extra input parameters et Timeout ====&lt;br /&gt;
&lt;br /&gt;
Nous n'aurons pas besoin de compléter ces champs pour notre projet.&lt;br /&gt;
&lt;br /&gt;
Si vous cochez le champ &amp;quot;Use spawn() instead of exec()?&amp;quot;, votre commande sera réalisée sous forme d'un processus résident et continuera de s'exécuter jusqu'à ce qu'elle se termine par elle-même (sauf si elle ne se termine jamais).&lt;br /&gt;
Cette solution implique que le programme n'attendra pas que cette commande soit réalisée pour passer aux étapes suivantes. &lt;br /&gt;
Si la suite de l'exécution de votre flux est susceptible d'utiliser le résultat de cette commande, nous vous déconseillons d'utiliser cette option sous peine de provoquer des erreurs à la suite du traitement du flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-18.png]]&lt;br /&gt;
&lt;br /&gt;
Le champ &amp;quot;Timeout&amp;quot; permet de définir un temps d'attente maximum avant de mettre un terme à l'exécution de la commande. &lt;br /&gt;
Cela permet de débloquer la situation si la commande exécutée prends un temps anormalement long à s'exécuter.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-19.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite compléter le champs nom, celui-ci sera utilisé pour nommer le bloc dans le &amp;quot;schéma&amp;quot;, mais aussi de nommer les logs comme pour le bloc &amp;quot;Exec&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-20.png]]&lt;br /&gt;
&lt;br /&gt;
=== Création d'un email au format HTML ===&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant créer un template d'email au format HTML afin de mettre en forme le message que nous enverrons ensuite.&lt;br /&gt;
Nous allons pour cela utiliser un bloc &amp;quot;Template&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-21.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons attribuer un nom au bloc afin de l'identifier plus facilement dans le flux.&lt;br /&gt;
Nous allons donc le nommer &amp;quot;Contenu du mail&amp;quot; puisque nous créons le contenu du mail que nous enverrons ensuite.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-22.png]]&lt;br /&gt;
&lt;br /&gt;
==== Set property ====&lt;br /&gt;
&lt;br /&gt;
La propriété que nous souhaitons créer dans le flux est le &amp;quot;PayLoad&amp;quot;.&lt;br /&gt;
Ce PayLoad existe déjà, il contient pour le moment l'image au format &amp;quot;Base64&amp;quot; précédemment encodé.&lt;br /&gt;
Cela n'est pas un problème, après notre noeud (notre bloc), le PayLoad sera intégralement remplacé par le template que nous sommes en train de créer.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-23.png]]&lt;br /&gt;
&lt;br /&gt;
==== Template ====&lt;br /&gt;
&lt;br /&gt;
Dans ce template, nous allons créer une structure HTML de base minimum afin que la structure soit interprétée par la majorité des clients/webmail.&lt;br /&gt;
Vous pouvez la personnaliser à votre guise si vous avez les connaissances en HTML.&lt;br /&gt;
&lt;br /&gt;
Voici la structure de base pour notre projet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
    &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;meta charset=&amp;quot;utf8&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/head&amp;gt;&lt;br /&gt;
    &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Projet Photo par email&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;img src=&amp;quot;data:image/jpg;base64,{{payload}}&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pourrez remarquer que nous intégrons l'image en appelant le PayLoad à 'intérieur du code HTML dans la balise &amp;lt;img&amp;gt;.&lt;br /&gt;
C'est le PayLoad créé précédemment par le bloc &amp;quot;Exec&amp;quot; qui est récupéré à ce moment précis.&lt;br /&gt;
Ce PayLoad est remplacé dans le flux par le PayLoad complet avec notre template dans le flux par notre bloc Template.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-24.png]]&lt;br /&gt;
&lt;br /&gt;
=== Création d'un bloc (noeud) &amp;quot;Debug&amp;quot;  ===&lt;br /&gt;
&lt;br /&gt;
Nous allons ajouter la notion d'expéditeur dans le flux que nous avons créé à travers nos blocs (noeuds).&lt;br /&gt;
Pour rappel, actuellement nous avons deux propriétés avec des données dans notre flux. &lt;br /&gt;
Si nous voulons observer ce que nous avons créé jusque là, nous pouvons faire appel à un bloc &amp;quot;Debug&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Création du bloc &amp;quot;Debug&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Comme pour les blocs précédents, nous allons glisser/déposer un bloc débug dans l'espace de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-25.png]]&lt;br /&gt;
&lt;br /&gt;
Celui-ci s'appelle msg/payload par défaut&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-26.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons double-cliquer sur ce bloc pour le configurer.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-27.png]]&lt;br /&gt;
&lt;br /&gt;
==== Output ====&lt;br /&gt;
&lt;br /&gt;
Dans ce champs, nous allons choisir la partie du flux que nous souhaitons afficher, ou nous allons sélectionner le flux entier.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-28.png]]&lt;br /&gt;
&lt;br /&gt;
Sélectionner le flux entier, nous affichera le flux complet incluant toutes ses propriétés.&lt;br /&gt;
&lt;br /&gt;
 [[fichier:Rasp-Node-Red-picam-mail-29.png]]&lt;br /&gt;
&lt;br /&gt;
==== To =====&lt;br /&gt;
&lt;br /&gt;
La propriété &amp;quot;To&amp;quot; nous permet de choisir ou nous souhaitons afficher les données que nous récupérons. &lt;br /&gt;
Soit nous les affichons uniquement dans l'onglet &amp;quot;Debug&amp;quot; à droite de l'espace de travail, soit nous l'affichons dans cet onglet mais aussi dans la console de NodeJS.&lt;br /&gt;
Dans notre cas, nous allons nous contenter d'afficher nos éléments dans l'onglet de &amp;quot;Debug&amp;quot; à droite de notre espace de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-30.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Le champs Name nous servira à identifier quel bloc de &amp;quot;Debug&amp;quot; affiche les données en console ou dans l'onglet &amp;quot;Debug&amp;quot;. &lt;br /&gt;
Il faut donc le nommer efficacement pour bien attacher et comprendre les données que nous récupérons, surtout si nous en plaçons plusieurs dans le flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-31.png]]&lt;br /&gt;
&lt;br /&gt;
==== Exploitation et compréhension des données récupérées ====&lt;br /&gt;
&lt;br /&gt;
Nous avons placé notre bloc &amp;quot;Debug&amp;quot; à la suite du flux en dernière position. &lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-32.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons donc déployer le programme en cliquant sur &amp;quot;Deploy&amp;quot; en haut à droite de la page. &lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-33.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons exécuter manuellement le programme en cliquant sur le bouton se trouvant en début de chaîne:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-34.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite afficher l'onglet &amp;quot;Debug&amp;quot; sur le coté droit de la page et analyser les données récupérées:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-35.png]]&lt;br /&gt;
&lt;br /&gt;
==== Analyse des données récupérées dans l'onglet &amp;quot;Debug&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
08/05/2017 à 12:54:31 node: FORMATAGE&lt;br /&gt;
MCHobby - Photo bureau : msg : Object&lt;br /&gt;
object&lt;br /&gt;
_msgid: &amp;quot;81efe35c.3208d&amp;quot;&lt;br /&gt;
topic: &amp;quot;MCHobby - Photo bureau&amp;quot;&lt;br /&gt;
payload: &amp;quot;&amp;lt;html&amp;gt;↵ &amp;lt;head&amp;gt;↵ &amp;lt;meta charset=&amp;quot;utf8&amp;quot;/&amp;gt;↵ ↵ &amp;lt;/head&amp;gt;↵ &amp;lt;body&amp;gt;↵ &amp;lt;h1&amp;gt;MCHobby - Photo bureau&amp;lt;/h1&amp;gt;↵ &amp;lt;p&amp;gt;Cette photo est un instantané pris dans les bureaux de MCHobby.&amp;lt;/p&amp;gt;↵ &lt;br /&gt;
&amp;lt;img src=&amp;quot;data:image/jpg;base64,&amp;amp;#x2F;9j&amp;amp;#x2F;4WP6x2.../&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comme vous pourrez le constater, chaque élément du noeud est détaillé.&lt;br /&gt;
Les données sont cependant tronquées, le noeud &amp;quot;Debug&amp;quot; ne nous fourni pas la totalité du &amp;quot;PayLoad&amp;quot; mais nous avons déjà un bon aperçu des données qu'il contient.&lt;br /&gt;
&lt;br /&gt;
* '''_msgid:''' est un Id unique de message&lt;br /&gt;
* '''topic:''' est le sujet du mail, nous l'avons déterminé dans le premier bloc&lt;br /&gt;
* '''payload:''' contient les données du message formatées par le template que nous avons créé et complété par l'image en base64.&lt;br /&gt;
&lt;br /&gt;
{{tmbox | text = Les noeuds &amp;quot;Debug&amp;quot; sont pratiques. Ils nous permettent d'afficher une partie ou la totalité du flux tel qu'il est à l'endroit ou ils sont placés.}}&lt;br /&gt;
&lt;br /&gt;
Cela peut permettre d'identifier et de résoudre plus facilement des problèmes dans des opérations plus complexes et dans notre cas, cela nous permet de mieux comprendre comment fonctionne le noeud et comment les données sont transmises d'un bloc à l'autre.&lt;br /&gt;
&lt;br /&gt;
=== Création d'un expéditeur ===&lt;br /&gt;
&lt;br /&gt;
Nous avons construit petit à petit un message avec un sujet, mais il manque encore un détail: l'expéditeur de l'email que nous allons envoyer.&lt;br /&gt;
&lt;br /&gt;
Si vous avez bien suivi les étapes précédentes du tuto, jusqu'au noeud &amp;quot;Debug&amp;quot; et à son résultat, vous comprendrez facilement la démarche ci après pour ajouter un expéditeur dans le flux.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Rasp-Node-Red-TRAILER}}&lt;/div&gt;</summary>
		<author><name>AntoineWrt</name></author>
	</entry>
	<entry>
		<id>https://wiki.mchobby.be/index.php?title=Rasp-Node-Red-picam-mail&amp;diff=22803</id>
		<title>Rasp-Node-Red-picam-mail</title>
		<link rel="alternate" type="text/html" href="https://wiki.mchobby.be/index.php?title=Rasp-Node-Red-picam-mail&amp;diff=22803"/>
		<updated>2017-05-08T13:03:26Z</updated>

		<summary type="html">&lt;p&gt;AntoineWrt : /* Analyse des données récupérées dans l'onglet &amp;quot;Debug&amp;quot; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Rasp-Node-Red-NAV}}&lt;br /&gt;
&lt;br /&gt;
{{traduction}}&lt;br /&gt;
&lt;br /&gt;
== PiCamRED - Envoi périodique de photos par email avec PiCam et NodeRED ==&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-01.png|900px]]&lt;br /&gt;
&lt;br /&gt;
=== Description du projet ===&lt;br /&gt;
&lt;br /&gt;
Dans ce tutoriel, nous allons réaliser des photos à l'aide de la caméra du RaspBerry Pi 2/3 et envoyer ces clichés par email de manière périodique grâce à NodeRED.&lt;br /&gt;
Nous allons donc utiliser plusieurs blocs et décrire de manière détaillée le déroulement de chaque étape de la réalisation de ce projet.&lt;br /&gt;
&lt;br /&gt;
Dans NodeRED, il est important de bien identifier la finalité de notre projet afin de connaître au préalable tous les éléments qu'il faudra créer et fournir à l'action finale (celle qui enverra un email).&lt;br /&gt;
&lt;br /&gt;
=== Quels sont les besoins du noeud email ===&lt;br /&gt;
&lt;br /&gt;
==== Composants nécessaires pour constituer un email ====&lt;br /&gt;
&lt;br /&gt;
Un email est composé des éléments suivants: &lt;br /&gt;
&lt;br /&gt;
* Un expéditeur&lt;br /&gt;
* Un destinataire&lt;br /&gt;
* Un sujet&lt;br /&gt;
* Le corps du message&lt;br /&gt;
&lt;br /&gt;
Tous ces éléments vont donc devoir être préparés afin de pouvoir construire le message à envoyer par le noeud final.&lt;br /&gt;
&lt;br /&gt;
Le noeud final aura aussi besoin d'un serveur SMTP (serveur d'envoi d'emails) et éventuellement de paramètres d'identification pour ce serveur d'envoi d'emails.&lt;br /&gt;
&lt;br /&gt;
==== Détail des besoins du noeud email ====&lt;br /&gt;
&lt;br /&gt;
La liste des éléments nécessaires s'affiche lorsque le bloc est dans la zone de travail (Schema).&lt;br /&gt;
Commençons donc par sélectionner le bloc email, et de le glisser dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
Commençons par cliquer sur le bloc email et nous maintenons le clic pour le glisser à droite dans l'espace de travail.&lt;br /&gt;
&lt;br /&gt;
(on choisit celui qui a son point de liaison à gauche, car nous voulons un bloc de sortie)&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-36.png]]&lt;br /&gt;
&lt;br /&gt;
Glissons le dans l'espace de travail, et cliquons un clic simple pour le sélectionner.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-37.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, dans la colonne à droite de cet espace de travail, nous cliquons sur info et nous pourrons découvrir les éléments nécessaires à la constitution d'un bloc email.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-38.png]]&lt;br /&gt;
&lt;br /&gt;
===== Nous utiliserons les champs suivants =====&lt;br /&gt;
&lt;br /&gt;
* '''msg.payload''' --&amp;gt; Ce champ contient le corps de l'email&lt;br /&gt;
* '''msg.topic''' --&amp;gt; Ce champ contient le sujet de l'email&lt;br /&gt;
* '''msg.from''' --&amp;gt; Ce champ contient l'email de l'expéditeur &lt;br /&gt;
* '''msg.to''' --&amp;gt; Ce champ contient l'email du destinataire&lt;br /&gt;
&lt;br /&gt;
Les autres champs ne seront pas utilisés dans notre cas, mais vous pourrez constater que le bloc email est complet de part ses fonctionnalités et possibilités.&lt;br /&gt;
&lt;br /&gt;
Les données de serveur et d'identification seront abordées en fin de tuto lors de la configuration finale du bloc.&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant passer à la réalisation du flux en commençant par le début de celui-ci.&lt;br /&gt;
&lt;br /&gt;
=== Création d'une action périodique ===&lt;br /&gt;
&lt;br /&gt;
Dans la colonne de gauche de NodeRED, se trouvent une liste de blocs à utiliser pour réaliser vos projets. Ils sont classés par &amp;quot;types&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Ainsi nous retrouvons les &amp;quot;types&amp;quot; suivants:&lt;br /&gt;
&lt;br /&gt;
* Input qui contient tous les blocs d'entrées&lt;br /&gt;
* Ouput qui contient tous les blocs de sortie&lt;br /&gt;
* Function qui contient des blocs de fonctions javascript etc...&lt;br /&gt;
* Social qui sont des blocs d'entrée ou sorties depuis ou vers les réseaux sociaux&lt;br /&gt;
* Storage qui sont des fonctions de lecture ou d'écriture de fichiers&lt;br /&gt;
* Analysis -&amp;gt;&amp;gt; Sentiment interprète du texte et détermine un score sur base d'un dictionnaire anglais, renvoie le texte avec ce score de -5 à +5, déterminant ainsi l'émotion susceptible d'être procuré par ce texte&lt;br /&gt;
* Advanced possède des outils permettant de détecter des changements dans des fichiers ou dossiers, de lire des flux RSS ou encore EXEC qui permet d'exécuter directement des commandes sous linux !&lt;br /&gt;
* Raspberry Pi contient des outils pour piloter/lire le GPIO du raspberry Pi&lt;br /&gt;
* Network qui contient un outil réseau de Ping&lt;br /&gt;
 &lt;br /&gt;
Nous allons créer une action périodique, c'est à dire paramétrer un bloc &amp;quot;INJECT&amp;quot; de manière à déclencher régulièrement une chaine d'actions que nous allons accrocher à la suite les unes après les autres.&lt;br /&gt;
Nous allons donc cliquer sur le bloc &amp;quot;Inject&amp;quot; dans la liste &amp;quot;Input&amp;quot; et maintenir ce clic pour le déplacer vers la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-02.png]]&lt;br /&gt;
&lt;br /&gt;
Nous obtiendrons donc une nouvelle instance &amp;quot;inject&amp;quot; qui portera le nom &amp;quot;Timestamp&amp;quot; (ce nom est attribué par défaut par NodeRED) comme dans la capture ci-dessous&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-03.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant double-cliquer sur celle-ci fin de l'éditer pour voir apparaitre le menu ci-dessous&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-04.png]]&lt;br /&gt;
&lt;br /&gt;
Il va falloir configurer ce bloc, mais avant tout voici une explication de celui-ci:&lt;br /&gt;
&lt;br /&gt;
==== Payload ====&lt;br /&gt;
&lt;br /&gt;
Le champs PayLoad est en fait le champ de données qui sera suivi d'un noeud à l'autre jusque à la fin de la chaine.&lt;br /&gt;
Dans ce module &amp;quot;inject&amp;quot;, nous allons donc déterminer quel type de données contiendra le &amp;quot;PayLoad&amp;quot; jusqu'à la fin de la chaine que l'on va réaliser.&lt;br /&gt;
&lt;br /&gt;
Dans notre cas, nous souhaitons construire un email, donc du contenu textuel, nous allons donc choisir &amp;quot;String&amp;quot; ce qui correspond à une chaine de caractères (du texte).&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-05.png]]&lt;br /&gt;
&lt;br /&gt;
==== Topic ====&lt;br /&gt;
&lt;br /&gt;
Le champs &amp;quot;Topic&amp;quot; est un champs de texte dans lequel nous allons mettre un sujet succinct décrivant notre chaine. &lt;br /&gt;
Dans notre cas, ce sujet fera office de sujet au mail que nous expédierons. &lt;br /&gt;
Nous allons donc être précis en un minimum de mots pour que le destinataire de l'email puisse facilement deviner le contenu de celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-06.png]]&lt;br /&gt;
&lt;br /&gt;
==== Repeat ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite choisir l'intervalle de déclenchement de notre action, sachant que nous avons le choix entre: &lt;br /&gt;
&lt;br /&gt;
* none  : pas de déclenchement périodique programmé&lt;br /&gt;
* interval : nous fixons un temps de déclenchement à partir du lancement du programme, l'action se réalisera à chaque fois que ce temps sera écoulé de manière répétée jusqu'à l'interruption manuelle du programme&lt;br /&gt;
* interval between times : nous fixons ici le déclenchement par interval, mais nous fixons aussi une fourchette d'heures et des jours pendant lesquels nous exécutons cet interval&lt;br /&gt;
* at a specific time : nous fixons une heure d'exécution, et un ou plusieurs jours d'exécution. Dans ce cas l'action n'est pas répétée en continu mais éxécutée une seule fois par jour à l'heure programmée&lt;br /&gt;
&lt;br /&gt;
Dans notre exemple, nous allons fixer un intervalle de 15 secondes pour commencer. Nous pourrons ensuite augmenter cette valeur pour éviter de recevoir trop d'emails avec des photos :D&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-07.png]]&lt;br /&gt;
&lt;br /&gt;
La case &amp;quot;inject once at start&amp;quot; permet de ne pas attendre le premier cycle avant d'exécuter une première fois l'action. Elle se lancera dès le lancement du programme, puis périodiquement selon les cycles déterminés par l'intervalle.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-08.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Le champs Name va déterminer le nom que portera le bloc dans l'espace de travail et dans les logs (si nous créons des blocs de log ensuite pour contrôler des étapes).&lt;br /&gt;
Il est important de bien établir ce nom de manière explicite, car le nom des blocs permettra de comprendre et retrouver facilement la logique du schéma construit, même si l'on a pas consulté celui-ci pendant une longue période.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-09.png]]&lt;br /&gt;
&lt;br /&gt;
=== Capture d'une image depuis la PiCam ===&lt;br /&gt;
&lt;br /&gt;
Nous allons aller à l'essentiel en ce qui concerne la capture photo en utilisant une commande simple pour prendre un cliché et renvoyer celui-ci dans le flux NodeRED grâce à un bloc permettant d'exécuter des commandes bash.&lt;br /&gt;
&lt;br /&gt;
{{ambox | text = Vous trouverez un TUTO détaillé sur la PiCam vous permettant de prendre la main, ou de la paramétrer si vous n'avez pas encore utilisé celle-ci auparavant: ....___TUTO___...}} &lt;br /&gt;
&lt;br /&gt;
Nous allons tout d'abord cliquer sur le bloc &amp;quot;Exec&amp;quot; dans la section &amp;quot;Advanced&amp;quot; de la colonne de gauche et glisser l'élément dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-10.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, cliquer sur le bloc nouvellement créé et configurer celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-11.png]]&lt;br /&gt;
&lt;br /&gt;
Le menu suivant s'affichera, et nous pourrons configurer le bloc &amp;quot;Exec&amp;quot; nouvellement créé.&lt;br /&gt;
&lt;br /&gt;
==== Command ====&lt;br /&gt;
&lt;br /&gt;
Nous allons y ajouter la commande à exécuter pour prendre une photo avec la caméra du Raspberry Pi et la stocker dans un fichier jpg dans le dossier /tmp/ de linux.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
raspistill -o /tmp/cam.jpg -w 640 -h 480&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous prenons soin de limiter la hauteur et la largeur de l'image afin de réduire son poids pour l'envoi par email.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-12.png]]&lt;br /&gt;
&lt;br /&gt;
==== +Append ====&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons décocher la case &amp;quot;msg.payload&amp;quot; si elle est cochée par défaut.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-13.png]]&lt;br /&gt;
&lt;br /&gt;
==== Extra input parameters et Timeout ====&lt;br /&gt;
&lt;br /&gt;
Nous n'aurons pas besoin de compléter ces champs pour notre projet.&lt;br /&gt;
&lt;br /&gt;
Si vous cochez le champ &amp;quot;Use spawn() instead of exec()?&amp;quot;, votre commande sera réalisée sous forme d'un processus résident et continuera de s'exécuter jusqu'à ce qu'elle se termine par elle-même (sauf si elle ne se termine jamais).&lt;br /&gt;
Cette solution implique que le programme n'attendra pas que cette commande soit réalisée pour passer aux étapes suivantes. &lt;br /&gt;
Si la suite de l'exécution de votre flux est susceptible d'utiliser le résultat de cette commande, nous vous déconseillons d'utiliser cette option sous peine de provoquer des erreurs à la suite du traitement du flux.&lt;br /&gt;
&lt;br /&gt;
Le champ &amp;quot;Timeout&amp;quot; permet de définir un temps d'attente maximum avant de mettre un terme à l'exécution de la commande. &lt;br /&gt;
Cela permet de débloquer la situation si la commande exécutée prends un temps anormalement long à s'exécuter.&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite compléter le champs nom, celui-ci sera utilisé pour nommer le bloc dans le &amp;quot;schéma&amp;quot;, mais aussi de nommer les logs comme pour le bloc &amp;quot;Exec&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-14.png]]&lt;br /&gt;
&lt;br /&gt;
=== Encodage de l'image en base64 ===&lt;br /&gt;
&lt;br /&gt;
Nous allons convertir la photo prise juste avant en utilisant une commande de conversion en base64.&lt;br /&gt;
Cela facilitera son injection dans un template HTML que nous allons créer ensuite pour construire un email.&lt;br /&gt;
&lt;br /&gt;
Nous allons tout d'abord cliquer sur le bloc &amp;quot;Exec&amp;quot; dans la section &amp;quot;Advanced&amp;quot; de la colonne de gauche et glisser l'élément dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-10.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, cliquer sur le bloc nouvellement créé et configurer celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-11.png]]&lt;br /&gt;
&lt;br /&gt;
Le menu suivant s'affichera, et nous pourrons configurer le bloc &amp;quot;Exec&amp;quot; nouvellement créé.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-15.png]]&lt;br /&gt;
&lt;br /&gt;
==== Command ====&lt;br /&gt;
&lt;br /&gt;
Nous allons y ajouter la commande à exécuter pour encoder en base 64 la photo prise précédemment avec la caméra du Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
base64 -i &amp;quot;/tmp/cam.jpg&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-16.png]]&lt;br /&gt;
&lt;br /&gt;
==== +Append ====&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons cocher la case &amp;quot;msg.payload&amp;quot; si elle n'est pas cochée par défaut pour que le résultat soit directement renvoyé par cette commande dans le &amp;quot;PayLoad&amp;quot; du flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-17.png]]&lt;br /&gt;
&lt;br /&gt;
==== Extra input parameters et Timeout ====&lt;br /&gt;
&lt;br /&gt;
Nous n'aurons pas besoin de compléter ces champs pour notre projet.&lt;br /&gt;
&lt;br /&gt;
Si vous cochez le champ &amp;quot;Use spawn() instead of exec()?&amp;quot;, votre commande sera réalisée sous forme d'un processus résident et continuera de s'exécuter jusqu'à ce qu'elle se termine par elle-même (sauf si elle ne se termine jamais).&lt;br /&gt;
Cette solution implique que le programme n'attendra pas que cette commande soit réalisée pour passer aux étapes suivantes. &lt;br /&gt;
Si la suite de l'exécution de votre flux est susceptible d'utiliser le résultat de cette commande, nous vous déconseillons d'utiliser cette option sous peine de provoquer des erreurs à la suite du traitement du flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-18.png]]&lt;br /&gt;
&lt;br /&gt;
Le champ &amp;quot;Timeout&amp;quot; permet de définir un temps d'attente maximum avant de mettre un terme à l'exécution de la commande. &lt;br /&gt;
Cela permet de débloquer la situation si la commande exécutée prends un temps anormalement long à s'exécuter.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-19.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite compléter le champs nom, celui-ci sera utilisé pour nommer le bloc dans le &amp;quot;schéma&amp;quot;, mais aussi de nommer les logs comme pour le bloc &amp;quot;Exec&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-20.png]]&lt;br /&gt;
&lt;br /&gt;
=== Création d'un email au format HTML ===&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant créer un template d'email au format HTML afin de mettre en forme le message que nous enverrons ensuite.&lt;br /&gt;
Nous allons pour cela utiliser un bloc &amp;quot;Template&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-21.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons attribuer un nom au bloc afin de l'identifier plus facilement dans le flux.&lt;br /&gt;
Nous allons donc le nommer &amp;quot;Contenu du mail&amp;quot; puisque nous créons le contenu du mail que nous enverrons ensuite.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-22.png]]&lt;br /&gt;
&lt;br /&gt;
==== Set property ====&lt;br /&gt;
&lt;br /&gt;
La propriété que nous souhaitons créer dans le flux est le &amp;quot;PayLoad&amp;quot;.&lt;br /&gt;
Ce PayLoad existe déjà, il contient pour le moment l'image au format &amp;quot;Base64&amp;quot; précédemment encodé.&lt;br /&gt;
Cela n'est pas un problème, après notre noeud (notre bloc), le PayLoad sera intégralement remplacé par le template que nous sommes en train de créer.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-23.png]]&lt;br /&gt;
&lt;br /&gt;
==== Template ====&lt;br /&gt;
&lt;br /&gt;
Dans ce template, nous allons créer une structure HTML de base minimum afin que la structure soit interprétée par la majorité des clients/webmail.&lt;br /&gt;
Vous pouvez la personnaliser à votre guise si vous avez les connaissances en HTML.&lt;br /&gt;
&lt;br /&gt;
Voici la structure de base pour notre projet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
    &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;meta charset=&amp;quot;utf8&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/head&amp;gt;&lt;br /&gt;
    &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Projet Photo par email&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;img src=&amp;quot;data:image/jpg;base64,{{payload}}&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pourrez remarquer que nous intégrons l'image en appelant le PayLoad à 'intérieur du code HTML dans la balise &amp;lt;img&amp;gt;.&lt;br /&gt;
C'est le PayLoad créé précédemment par le bloc &amp;quot;Exec&amp;quot; qui est récupéré à ce moment précis.&lt;br /&gt;
Ce PayLoad est remplacé dans le flux par le PayLoad complet avec notre template dans le flux par notre bloc Template.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-24.png]]&lt;br /&gt;
&lt;br /&gt;
=== Création d'un bloc (noeud) &amp;quot;Debug&amp;quot;  ===&lt;br /&gt;
&lt;br /&gt;
Nous allons ajouter la notion d'expéditeur dans le flux que nous avons créé à travers nos blocs (noeuds).&lt;br /&gt;
Pour rappel, actuellement nous avons deux propriétés avec des données dans notre flux. &lt;br /&gt;
Si nous voulons observer ce que nous avons créé jusque là, nous pouvons faire appel à un bloc &amp;quot;Debug&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Création du bloc &amp;quot;Debug&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Comme pour les blocs précédents, nous allons glisser/déposer un bloc débug dans l'espace de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-25.png]]&lt;br /&gt;
&lt;br /&gt;
Celui-ci s'appelle msg/payload par défaut&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-26.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons double-cliquer sur ce bloc pour le configurer.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-27.png]]&lt;br /&gt;
&lt;br /&gt;
==== Output ====&lt;br /&gt;
&lt;br /&gt;
Dans ce champs, nous allons choisir la partie du flux que nous souhaitons afficher, ou nous allons sélectionner le flux entier.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-28.png]]&lt;br /&gt;
&lt;br /&gt;
Sélectionner le flux entier, nous affichera le flux complet incluant toutes ses propriétés.&lt;br /&gt;
&lt;br /&gt;
 [[fichier:Rasp-Node-Red-picam-mail-29.png]]&lt;br /&gt;
&lt;br /&gt;
==== To =====&lt;br /&gt;
&lt;br /&gt;
La propriété &amp;quot;To&amp;quot; nous permet de choisir ou nous souhaitons afficher les données que nous récupérons. &lt;br /&gt;
Soit nous les affichons uniquement dans l'onglet &amp;quot;Debug&amp;quot; à droite de l'espace de travail, soit nous l'affichons dans cet onglet mais aussi dans la console de NodeJS.&lt;br /&gt;
Dans notre cas, nous allons nous contenter d'afficher nos éléments dans l'onglet de &amp;quot;Debug&amp;quot; à droite de notre espace de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-30.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Le champs Name nous servira à identifier quel bloc de &amp;quot;Debug&amp;quot; affiche les données en console ou dans l'onglet &amp;quot;Debug&amp;quot;. &lt;br /&gt;
Il faut donc le nommer efficacement pour bien attacher et comprendre les données que nous récupérons, surtout si nous en plaçons plusieurs dans le flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-31.png]]&lt;br /&gt;
&lt;br /&gt;
==== Exploitation et compréhension des données récupérées ====&lt;br /&gt;
&lt;br /&gt;
Nous avons placé notre bloc &amp;quot;Debug&amp;quot; à la suite du flux en dernière position. &lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-32.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons donc déployer le programme en cliquant sur &amp;quot;Deploy&amp;quot; en haut à droite de la page. &lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-33.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons exécuter manuellement le programme en cliquant sur le bouton se trouvant en début de chaîne:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-34.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite afficher l'onglet &amp;quot;Debug&amp;quot; sur le coté droit de la page et analyser les données récupérées:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-35.png]]&lt;br /&gt;
&lt;br /&gt;
==== Analyse des données récupérées dans l'onglet &amp;quot;Debug&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
08/05/2017 à 12:54:31 node: FORMATAGE&lt;br /&gt;
MCHobby - Photo bureau : msg : Object&lt;br /&gt;
object&lt;br /&gt;
_msgid: &amp;quot;81efe35c.3208d&amp;quot;&lt;br /&gt;
topic: &amp;quot;MCHobby - Photo bureau&amp;quot;&lt;br /&gt;
payload: &amp;quot;&amp;lt;html&amp;gt;↵ &amp;lt;head&amp;gt;↵ &amp;lt;meta charset=&amp;quot;utf8&amp;quot;/&amp;gt;↵ ↵ &amp;lt;/head&amp;gt;↵ &amp;lt;body&amp;gt;↵ &amp;lt;h1&amp;gt;MCHobby - Photo bureau&amp;lt;/h1&amp;gt;↵ &amp;lt;p&amp;gt;Cette photo est un instantané pris dans les bureaux de MCHobby.&amp;lt;/p&amp;gt;↵ &lt;br /&gt;
&amp;lt;img src=&amp;quot;data:image/jpg;base64,&amp;amp;#x2F;9j&amp;amp;#x2F;4WP6x2.../&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comme vous pourrez le constater, chaque élément du noeud est détaillé.&lt;br /&gt;
Les données sont cependant tronquées, le noeud &amp;quot;Debug&amp;quot; ne nous fourni pas la totalité du &amp;quot;PayLoad&amp;quot; mais nous avons déjà un bon aperçu des données qu'il contient.&lt;br /&gt;
&lt;br /&gt;
'''_msgid:''' est un Id unique de message&lt;br /&gt;
'''topic:''' est le sujet du mail, nous l'avons déterminé dans le premier bloc&lt;br /&gt;
'''payload:''' contient les données du message formatées par le template que nous avons créé et complété par l'image en base64.&lt;br /&gt;
&lt;br /&gt;
{{tmbox | text = Les noeuds &amp;quot;Debug&amp;quot; sont pratiques. Ils nous permettent d'afficher une partie ou la totalité du flux tel qu'il est à l'endroit ou ils sont placés.}}&lt;br /&gt;
&lt;br /&gt;
Cela peut permettre d'identifier et de résoudre plus facilement des problèmes dans des opérations plus complexes et dans notre cas, cela nous permet de mieux comprendre comment fonctionne le noeud et comment les données sont transmises d'un bloc à l'autre.&lt;br /&gt;
&lt;br /&gt;
=== Création d'un expéditeur ===&lt;br /&gt;
&lt;br /&gt;
Nous avons construit petit à petit un message avec un sujet, mais il manque encore un détail: l'expéditeur de l'email que nous allons envoyer.&lt;br /&gt;
&lt;br /&gt;
Si vous avez bien suivi les étapes précédentes du tuto, jusqu'au noeud &amp;quot;Debug&amp;quot; et à son résultat, vous comprendrez facilement la démarche ci après pour ajouter un expéditeur dans le flux.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Rasp-Node-Red-TRAILER}}&lt;/div&gt;</summary>
		<author><name>AntoineWrt</name></author>
	</entry>
	<entry>
		<id>https://wiki.mchobby.be/index.php?title=Rasp-Node-Red-picam-mail&amp;diff=22802</id>
		<title>Rasp-Node-Red-picam-mail</title>
		<link rel="alternate" type="text/html" href="https://wiki.mchobby.be/index.php?title=Rasp-Node-Red-picam-mail&amp;diff=22802"/>
		<updated>2017-05-08T12:58:19Z</updated>

		<summary type="html">&lt;p&gt;AntoineWrt : /* Nous utiliserons les champs suivants */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Rasp-Node-Red-NAV}}&lt;br /&gt;
&lt;br /&gt;
{{traduction}}&lt;br /&gt;
&lt;br /&gt;
== PiCamRED - Envoi périodique de photos par email avec PiCam et NodeRED ==&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-01.png|900px]]&lt;br /&gt;
&lt;br /&gt;
=== Description du projet ===&lt;br /&gt;
&lt;br /&gt;
Dans ce tutoriel, nous allons réaliser des photos à l'aide de la caméra du RaspBerry Pi 2/3 et envoyer ces clichés par email de manière périodique grâce à NodeRED.&lt;br /&gt;
Nous allons donc utiliser plusieurs blocs et décrire de manière détaillée le déroulement de chaque étape de la réalisation de ce projet.&lt;br /&gt;
&lt;br /&gt;
Dans NodeRED, il est important de bien identifier la finalité de notre projet afin de connaître au préalable tous les éléments qu'il faudra créer et fournir à l'action finale (celle qui enverra un email).&lt;br /&gt;
&lt;br /&gt;
=== Quels sont les besoins du noeud email ===&lt;br /&gt;
&lt;br /&gt;
==== Composants nécessaires pour constituer un email ====&lt;br /&gt;
&lt;br /&gt;
Un email est composé des éléments suivants: &lt;br /&gt;
&lt;br /&gt;
* Un expéditeur&lt;br /&gt;
* Un destinataire&lt;br /&gt;
* Un sujet&lt;br /&gt;
* Le corps du message&lt;br /&gt;
&lt;br /&gt;
Tous ces éléments vont donc devoir être préparés afin de pouvoir construire le message à envoyer par le noeud final.&lt;br /&gt;
&lt;br /&gt;
Le noeud final aura aussi besoin d'un serveur SMTP (serveur d'envoi d'emails) et éventuellement de paramètres d'identification pour ce serveur d'envoi d'emails.&lt;br /&gt;
&lt;br /&gt;
==== Détail des besoins du noeud email ====&lt;br /&gt;
&lt;br /&gt;
La liste des éléments nécessaires s'affiche lorsque le bloc est dans la zone de travail (Schema).&lt;br /&gt;
Commençons donc par sélectionner le bloc email, et de le glisser dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
Commençons par cliquer sur le bloc email et nous maintenons le clic pour le glisser à droite dans l'espace de travail.&lt;br /&gt;
&lt;br /&gt;
(on choisit celui qui a son point de liaison à gauche, car nous voulons un bloc de sortie)&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-36.png]]&lt;br /&gt;
&lt;br /&gt;
Glissons le dans l'espace de travail, et cliquons un clic simple pour le sélectionner.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-37.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, dans la colonne à droite de cet espace de travail, nous cliquons sur info et nous pourrons découvrir les éléments nécessaires à la constitution d'un bloc email.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-38.png]]&lt;br /&gt;
&lt;br /&gt;
===== Nous utiliserons les champs suivants =====&lt;br /&gt;
&lt;br /&gt;
* '''msg.payload''' --&amp;gt; Ce champ contient le corps de l'email&lt;br /&gt;
* '''msg.topic''' --&amp;gt; Ce champ contient le sujet de l'email&lt;br /&gt;
* '''msg.from''' --&amp;gt; Ce champ contient l'email de l'expéditeur &lt;br /&gt;
* '''msg.to''' --&amp;gt; Ce champ contient l'email du destinataire&lt;br /&gt;
&lt;br /&gt;
Les autres champs ne seront pas utilisés dans notre cas, mais vous pourrez constater que le bloc email est complet de part ses fonctionnalités et possibilités.&lt;br /&gt;
&lt;br /&gt;
Les données de serveur et d'identification seront abordées en fin de tuto lors de la configuration finale du bloc.&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant passer à la réalisation du flux en commençant par le début de celui-ci.&lt;br /&gt;
&lt;br /&gt;
=== Création d'une action périodique ===&lt;br /&gt;
&lt;br /&gt;
Dans la colonne de gauche de NodeRED, se trouvent une liste de blocs à utiliser pour réaliser vos projets. Ils sont classés par &amp;quot;types&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Ainsi nous retrouvons les &amp;quot;types&amp;quot; suivants:&lt;br /&gt;
&lt;br /&gt;
* Input qui contient tous les blocs d'entrées&lt;br /&gt;
* Ouput qui contient tous les blocs de sortie&lt;br /&gt;
* Function qui contient des blocs de fonctions javascript etc...&lt;br /&gt;
* Social qui sont des blocs d'entrée ou sorties depuis ou vers les réseaux sociaux&lt;br /&gt;
* Storage qui sont des fonctions de lecture ou d'écriture de fichiers&lt;br /&gt;
* Analysis -&amp;gt;&amp;gt; Sentiment interprète du texte et détermine un score sur base d'un dictionnaire anglais, renvoie le texte avec ce score de -5 à +5, déterminant ainsi l'émotion susceptible d'être procuré par ce texte&lt;br /&gt;
* Advanced possède des outils permettant de détecter des changements dans des fichiers ou dossiers, de lire des flux RSS ou encore EXEC qui permet d'exécuter directement des commandes sous linux !&lt;br /&gt;
* Raspberry Pi contient des outils pour piloter/lire le GPIO du raspberry Pi&lt;br /&gt;
* Network qui contient un outil réseau de Ping&lt;br /&gt;
 &lt;br /&gt;
Nous allons créer une action périodique, c'est à dire paramétrer un bloc &amp;quot;INJECT&amp;quot; de manière à déclencher régulièrement une chaine d'actions que nous allons accrocher à la suite les unes après les autres.&lt;br /&gt;
Nous allons donc cliquer sur le bloc &amp;quot;Inject&amp;quot; dans la liste &amp;quot;Input&amp;quot; et maintenir ce clic pour le déplacer vers la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-02.png]]&lt;br /&gt;
&lt;br /&gt;
Nous obtiendrons donc une nouvelle instance &amp;quot;inject&amp;quot; qui portera le nom &amp;quot;Timestamp&amp;quot; (ce nom est attribué par défaut par NodeRED) comme dans la capture ci-dessous&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-03.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant double-cliquer sur celle-ci fin de l'éditer pour voir apparaitre le menu ci-dessous&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-04.png]]&lt;br /&gt;
&lt;br /&gt;
Il va falloir configurer ce bloc, mais avant tout voici une explication de celui-ci:&lt;br /&gt;
&lt;br /&gt;
==== Payload ====&lt;br /&gt;
&lt;br /&gt;
Le champs PayLoad est en fait le champ de données qui sera suivi d'un noeud à l'autre jusque à la fin de la chaine.&lt;br /&gt;
Dans ce module &amp;quot;inject&amp;quot;, nous allons donc déterminer quel type de données contiendra le &amp;quot;PayLoad&amp;quot; jusqu'à la fin de la chaine que l'on va réaliser.&lt;br /&gt;
&lt;br /&gt;
Dans notre cas, nous souhaitons construire un email, donc du contenu textuel, nous allons donc choisir &amp;quot;String&amp;quot; ce qui correspond à une chaine de caractères (du texte).&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-05.png]]&lt;br /&gt;
&lt;br /&gt;
==== Topic ====&lt;br /&gt;
&lt;br /&gt;
Le champs &amp;quot;Topic&amp;quot; est un champs de texte dans lequel nous allons mettre un sujet succinct décrivant notre chaine. &lt;br /&gt;
Dans notre cas, ce sujet fera office de sujet au mail que nous expédierons. &lt;br /&gt;
Nous allons donc être précis en un minimum de mots pour que le destinataire de l'email puisse facilement deviner le contenu de celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-06.png]]&lt;br /&gt;
&lt;br /&gt;
==== Repeat ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite choisir l'intervalle de déclenchement de notre action, sachant que nous avons le choix entre: &lt;br /&gt;
&lt;br /&gt;
* none  : pas de déclenchement périodique programmé&lt;br /&gt;
* interval : nous fixons un temps de déclenchement à partir du lancement du programme, l'action se réalisera à chaque fois que ce temps sera écoulé de manière répétée jusqu'à l'interruption manuelle du programme&lt;br /&gt;
* interval between times : nous fixons ici le déclenchement par interval, mais nous fixons aussi une fourchette d'heures et des jours pendant lesquels nous exécutons cet interval&lt;br /&gt;
* at a specific time : nous fixons une heure d'exécution, et un ou plusieurs jours d'exécution. Dans ce cas l'action n'est pas répétée en continu mais éxécutée une seule fois par jour à l'heure programmée&lt;br /&gt;
&lt;br /&gt;
Dans notre exemple, nous allons fixer un intervalle de 15 secondes pour commencer. Nous pourrons ensuite augmenter cette valeur pour éviter de recevoir trop d'emails avec des photos :D&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-07.png]]&lt;br /&gt;
&lt;br /&gt;
La case &amp;quot;inject once at start&amp;quot; permet de ne pas attendre le premier cycle avant d'exécuter une première fois l'action. Elle se lancera dès le lancement du programme, puis périodiquement selon les cycles déterminés par l'intervalle.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-08.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Le champs Name va déterminer le nom que portera le bloc dans l'espace de travail et dans les logs (si nous créons des blocs de log ensuite pour contrôler des étapes).&lt;br /&gt;
Il est important de bien établir ce nom de manière explicite, car le nom des blocs permettra de comprendre et retrouver facilement la logique du schéma construit, même si l'on a pas consulté celui-ci pendant une longue période.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-09.png]]&lt;br /&gt;
&lt;br /&gt;
=== Capture d'une image depuis la PiCam ===&lt;br /&gt;
&lt;br /&gt;
Nous allons aller à l'essentiel en ce qui concerne la capture photo en utilisant une commande simple pour prendre un cliché et renvoyer celui-ci dans le flux NodeRED grâce à un bloc permettant d'exécuter des commandes bash.&lt;br /&gt;
&lt;br /&gt;
{{ambox | text = Vous trouverez un TUTO détaillé sur la PiCam vous permettant de prendre la main, ou de la paramétrer si vous n'avez pas encore utilisé celle-ci auparavant: ....___TUTO___...}} &lt;br /&gt;
&lt;br /&gt;
Nous allons tout d'abord cliquer sur le bloc &amp;quot;Exec&amp;quot; dans la section &amp;quot;Advanced&amp;quot; de la colonne de gauche et glisser l'élément dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-10.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, cliquer sur le bloc nouvellement créé et configurer celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-11.png]]&lt;br /&gt;
&lt;br /&gt;
Le menu suivant s'affichera, et nous pourrons configurer le bloc &amp;quot;Exec&amp;quot; nouvellement créé.&lt;br /&gt;
&lt;br /&gt;
==== Command ====&lt;br /&gt;
&lt;br /&gt;
Nous allons y ajouter la commande à exécuter pour prendre une photo avec la caméra du Raspberry Pi et la stocker dans un fichier jpg dans le dossier /tmp/ de linux.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
raspistill -o /tmp/cam.jpg -w 640 -h 480&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous prenons soin de limiter la hauteur et la largeur de l'image afin de réduire son poids pour l'envoi par email.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-12.png]]&lt;br /&gt;
&lt;br /&gt;
==== +Append ====&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons décocher la case &amp;quot;msg.payload&amp;quot; si elle est cochée par défaut.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-13.png]]&lt;br /&gt;
&lt;br /&gt;
==== Extra input parameters et Timeout ====&lt;br /&gt;
&lt;br /&gt;
Nous n'aurons pas besoin de compléter ces champs pour notre projet.&lt;br /&gt;
&lt;br /&gt;
Si vous cochez le champ &amp;quot;Use spawn() instead of exec()?&amp;quot;, votre commande sera réalisée sous forme d'un processus résident et continuera de s'exécuter jusqu'à ce qu'elle se termine par elle-même (sauf si elle ne se termine jamais).&lt;br /&gt;
Cette solution implique que le programme n'attendra pas que cette commande soit réalisée pour passer aux étapes suivantes. &lt;br /&gt;
Si la suite de l'exécution de votre flux est susceptible d'utiliser le résultat de cette commande, nous vous déconseillons d'utiliser cette option sous peine de provoquer des erreurs à la suite du traitement du flux.&lt;br /&gt;
&lt;br /&gt;
Le champ &amp;quot;Timeout&amp;quot; permet de définir un temps d'attente maximum avant de mettre un terme à l'exécution de la commande. &lt;br /&gt;
Cela permet de débloquer la situation si la commande exécutée prends un temps anormalement long à s'exécuter.&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite compléter le champs nom, celui-ci sera utilisé pour nommer le bloc dans le &amp;quot;schéma&amp;quot;, mais aussi de nommer les logs comme pour le bloc &amp;quot;Exec&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-14.png]]&lt;br /&gt;
&lt;br /&gt;
=== Encodage de l'image en base64 ===&lt;br /&gt;
&lt;br /&gt;
Nous allons convertir la photo prise juste avant en utilisant une commande de conversion en base64.&lt;br /&gt;
Cela facilitera son injection dans un template HTML que nous allons créer ensuite pour construire un email.&lt;br /&gt;
&lt;br /&gt;
Nous allons tout d'abord cliquer sur le bloc &amp;quot;Exec&amp;quot; dans la section &amp;quot;Advanced&amp;quot; de la colonne de gauche et glisser l'élément dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-10.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, cliquer sur le bloc nouvellement créé et configurer celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-11.png]]&lt;br /&gt;
&lt;br /&gt;
Le menu suivant s'affichera, et nous pourrons configurer le bloc &amp;quot;Exec&amp;quot; nouvellement créé.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-15.png]]&lt;br /&gt;
&lt;br /&gt;
==== Command ====&lt;br /&gt;
&lt;br /&gt;
Nous allons y ajouter la commande à exécuter pour encoder en base 64 la photo prise précédemment avec la caméra du Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
base64 -i &amp;quot;/tmp/cam.jpg&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-16.png]]&lt;br /&gt;
&lt;br /&gt;
==== +Append ====&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons cocher la case &amp;quot;msg.payload&amp;quot; si elle n'est pas cochée par défaut pour que le résultat soit directement renvoyé par cette commande dans le &amp;quot;PayLoad&amp;quot; du flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-17.png]]&lt;br /&gt;
&lt;br /&gt;
==== Extra input parameters et Timeout ====&lt;br /&gt;
&lt;br /&gt;
Nous n'aurons pas besoin de compléter ces champs pour notre projet.&lt;br /&gt;
&lt;br /&gt;
Si vous cochez le champ &amp;quot;Use spawn() instead of exec()?&amp;quot;, votre commande sera réalisée sous forme d'un processus résident et continuera de s'exécuter jusqu'à ce qu'elle se termine par elle-même (sauf si elle ne se termine jamais).&lt;br /&gt;
Cette solution implique que le programme n'attendra pas que cette commande soit réalisée pour passer aux étapes suivantes. &lt;br /&gt;
Si la suite de l'exécution de votre flux est susceptible d'utiliser le résultat de cette commande, nous vous déconseillons d'utiliser cette option sous peine de provoquer des erreurs à la suite du traitement du flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-18.png]]&lt;br /&gt;
&lt;br /&gt;
Le champ &amp;quot;Timeout&amp;quot; permet de définir un temps d'attente maximum avant de mettre un terme à l'exécution de la commande. &lt;br /&gt;
Cela permet de débloquer la situation si la commande exécutée prends un temps anormalement long à s'exécuter.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-19.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite compléter le champs nom, celui-ci sera utilisé pour nommer le bloc dans le &amp;quot;schéma&amp;quot;, mais aussi de nommer les logs comme pour le bloc &amp;quot;Exec&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-20.png]]&lt;br /&gt;
&lt;br /&gt;
=== Création d'un email au format HTML ===&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant créer un template d'email au format HTML afin de mettre en forme le message que nous enverrons ensuite.&lt;br /&gt;
Nous allons pour cela utiliser un bloc &amp;quot;Template&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-21.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons attribuer un nom au bloc afin de l'identifier plus facilement dans le flux.&lt;br /&gt;
Nous allons donc le nommer &amp;quot;Contenu du mail&amp;quot; puisque nous créons le contenu du mail que nous enverrons ensuite.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-22.png]]&lt;br /&gt;
&lt;br /&gt;
==== Set property ====&lt;br /&gt;
&lt;br /&gt;
La propriété que nous souhaitons créer dans le flux est le &amp;quot;PayLoad&amp;quot;.&lt;br /&gt;
Ce PayLoad existe déjà, il contient pour le moment l'image au format &amp;quot;Base64&amp;quot; précédemment encodé.&lt;br /&gt;
Cela n'est pas un problème, après notre noeud (notre bloc), le PayLoad sera intégralement remplacé par le template que nous sommes en train de créer.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-23.png]]&lt;br /&gt;
&lt;br /&gt;
==== Template ====&lt;br /&gt;
&lt;br /&gt;
Dans ce template, nous allons créer une structure HTML de base minimum afin que la structure soit interprétée par la majorité des clients/webmail.&lt;br /&gt;
Vous pouvez la personnaliser à votre guise si vous avez les connaissances en HTML.&lt;br /&gt;
&lt;br /&gt;
Voici la structure de base pour notre projet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
    &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;meta charset=&amp;quot;utf8&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/head&amp;gt;&lt;br /&gt;
    &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Projet Photo par email&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;img src=&amp;quot;data:image/jpg;base64,{{payload}}&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pourrez remarquer que nous intégrons l'image en appelant le PayLoad à 'intérieur du code HTML dans la balise &amp;lt;img&amp;gt;.&lt;br /&gt;
C'est le PayLoad créé précédemment par le bloc &amp;quot;Exec&amp;quot; qui est récupéré à ce moment précis.&lt;br /&gt;
Ce PayLoad est remplacé dans le flux par le PayLoad complet avec notre template dans le flux par notre bloc Template.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-24.png]]&lt;br /&gt;
&lt;br /&gt;
=== Création d'un bloc (noeud) &amp;quot;Debug&amp;quot;  ===&lt;br /&gt;
&lt;br /&gt;
Nous allons ajouter la notion d'expéditeur dans le flux que nous avons créé à travers nos blocs (noeuds).&lt;br /&gt;
Pour rappel, actuellement nous avons deux propriétés avec des données dans notre flux. &lt;br /&gt;
Si nous voulons observer ce que nous avons créé jusque là, nous pouvons faire appel à un bloc &amp;quot;Debug&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Création du bloc &amp;quot;Debug&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Comme pour les blocs précédents, nous allons glisser/déposer un bloc débug dans l'espace de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-25.png]]&lt;br /&gt;
&lt;br /&gt;
Celui-ci s'appelle msg/payload par défaut&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-26.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons double-cliquer sur ce bloc pour le configurer.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-27.png]]&lt;br /&gt;
&lt;br /&gt;
==== Output ====&lt;br /&gt;
&lt;br /&gt;
Dans ce champs, nous allons choisir la partie du flux que nous souhaitons afficher, ou nous allons sélectionner le flux entier.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-28.png]]&lt;br /&gt;
&lt;br /&gt;
Sélectionner le flux entier, nous affichera le flux complet incluant toutes ses propriétés.&lt;br /&gt;
&lt;br /&gt;
 [[fichier:Rasp-Node-Red-picam-mail-29.png]]&lt;br /&gt;
&lt;br /&gt;
==== To =====&lt;br /&gt;
&lt;br /&gt;
La propriété &amp;quot;To&amp;quot; nous permet de choisir ou nous souhaitons afficher les données que nous récupérons. &lt;br /&gt;
Soit nous les affichons uniquement dans l'onglet &amp;quot;Debug&amp;quot; à droite de l'espace de travail, soit nous l'affichons dans cet onglet mais aussi dans la console de NodeJS.&lt;br /&gt;
Dans notre cas, nous allons nous contenter d'afficher nos éléments dans l'onglet de &amp;quot;Debug&amp;quot; à droite de notre espace de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-30.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Le champs Name nous servira à identifier quel bloc de &amp;quot;Debug&amp;quot; affiche les données en console ou dans l'onglet &amp;quot;Debug&amp;quot;. &lt;br /&gt;
Il faut donc le nommer efficacement pour bien attacher et comprendre les données que nous récupérons, surtout si nous en plaçons plusieurs dans le flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-31.png]]&lt;br /&gt;
&lt;br /&gt;
==== Exploitation et compréhension des données récupérées ====&lt;br /&gt;
&lt;br /&gt;
Nous avons placé notre bloc &amp;quot;Debug&amp;quot; à la suite du flux en dernière position. &lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-32.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons donc déployer le programme en cliquant sur &amp;quot;Deploy&amp;quot; en haut à droite de la page. &lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-33.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons exécuter manuellement le programme en cliquant sur le bouton se trouvant en début de chaîne:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-34.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite afficher l'onglet &amp;quot;Debug&amp;quot; sur le coté droit de la page et analyser les données récupérées:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-35.png]]&lt;br /&gt;
&lt;br /&gt;
==== Analyse des données récupérées dans l'onglet &amp;quot;Debug&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
08/05/2017 à 12:54:31 node: FORMATAGE&lt;br /&gt;
MCHobby - Photo bureau : msg : Object&lt;br /&gt;
object&lt;br /&gt;
_msgid: &amp;quot;81efe35c.3208d&amp;quot;&lt;br /&gt;
topic: &amp;quot;MCHobby - Photo bureau&amp;quot;&lt;br /&gt;
payload: &amp;quot;&amp;lt;html&amp;gt;↵ &amp;lt;head&amp;gt;↵ &amp;lt;meta charset=&amp;quot;utf8&amp;quot;/&amp;gt;↵ ↵ &amp;lt;/head&amp;gt;↵ &amp;lt;body&amp;gt;↵ &amp;lt;h1&amp;gt;MCHobby - Photo bureau&amp;lt;/h1&amp;gt;↵ &amp;lt;p&amp;gt;Cette photo est un instantané pris dans les bureaux de MCHobby.&amp;lt;/p&amp;gt;↵ &lt;br /&gt;
&amp;lt;img src=&amp;quot;data:image/jpg;base64,&amp;amp;#x2F;9j&amp;amp;#x2F;4WP6x2.../&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comme vous pourrez le constater, chaque élément du noeud est détaillé.&lt;br /&gt;
Les données sont cependant tronquées, le noeud &amp;quot;Debug&amp;quot; ne nous fourni pas la totalité du &amp;quot;PayLoad&amp;quot; mais nous avons déjà un bon aperçu des données qu'il contient.&lt;br /&gt;
&lt;br /&gt;
_msgid: est un Id unique de message&lt;br /&gt;
topic: est le sujet du mail, nous l'avons déterminé dans le premier bloc&lt;br /&gt;
payload: contient les données du message formatées par le template que nous avons créé et complété par l'image en base64.&lt;br /&gt;
&lt;br /&gt;
Les noeuds &amp;quot;Debug&amp;quot; sont pratiques. Ils nous permettent d'afficher une partie ou la totalité du flux tel qu'il est à l'endroit ou ils sont placés.&lt;br /&gt;
&lt;br /&gt;
Cela peut permettre d'identifier et de résoudre plus facilement des problèmes dans des opérations plus complexes et dans notre cas, cela nous permet de mieux comprendre comment fonctionne le noeud et comment les données sont transmises d'un bloc à l'autre.&lt;br /&gt;
&lt;br /&gt;
=== Création d'un expéditeur ===&lt;br /&gt;
&lt;br /&gt;
Nous avons construit petit à petit un message avec un sujet, mais il manque encore un détail: l'expéditeur de l'email que nous allons envoyer.&lt;br /&gt;
&lt;br /&gt;
Si vous avez bien suivi les étapes précédentes du tuto, jusqu'au noeud &amp;quot;Debug&amp;quot; et à son résultat, vous comprendrez facilement la démarche ci après pour ajouter un expéditeur dans le flux.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Rasp-Node-Red-TRAILER}}&lt;/div&gt;</summary>
		<author><name>AntoineWrt</name></author>
	</entry>
	<entry>
		<id>https://wiki.mchobby.be/index.php?title=Rasp-Node-Red-picam-mail&amp;diff=22801</id>
		<title>Rasp-Node-Red-picam-mail</title>
		<link rel="alternate" type="text/html" href="https://wiki.mchobby.be/index.php?title=Rasp-Node-Red-picam-mail&amp;diff=22801"/>
		<updated>2017-05-08T12:56:23Z</updated>

		<summary type="html">&lt;p&gt;AntoineWrt : /* Nous utiliserons les champs suivants */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Rasp-Node-Red-NAV}}&lt;br /&gt;
&lt;br /&gt;
{{traduction}}&lt;br /&gt;
&lt;br /&gt;
== PiCamRED - Envoi périodique de photos par email avec PiCam et NodeRED ==&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-01.png|900px]]&lt;br /&gt;
&lt;br /&gt;
=== Description du projet ===&lt;br /&gt;
&lt;br /&gt;
Dans ce tutoriel, nous allons réaliser des photos à l'aide de la caméra du RaspBerry Pi 2/3 et envoyer ces clichés par email de manière périodique grâce à NodeRED.&lt;br /&gt;
Nous allons donc utiliser plusieurs blocs et décrire de manière détaillée le déroulement de chaque étape de la réalisation de ce projet.&lt;br /&gt;
&lt;br /&gt;
Dans NodeRED, il est important de bien identifier la finalité de notre projet afin de connaître au préalable tous les éléments qu'il faudra créer et fournir à l'action finale (celle qui enverra un email).&lt;br /&gt;
&lt;br /&gt;
=== Quels sont les besoins du noeud email ===&lt;br /&gt;
&lt;br /&gt;
==== Composants nécessaires pour constituer un email ====&lt;br /&gt;
&lt;br /&gt;
Un email est composé des éléments suivants: &lt;br /&gt;
&lt;br /&gt;
* Un expéditeur&lt;br /&gt;
* Un destinataire&lt;br /&gt;
* Un sujet&lt;br /&gt;
* Le corps du message&lt;br /&gt;
&lt;br /&gt;
Tous ces éléments vont donc devoir être préparés afin de pouvoir construire le message à envoyer par le noeud final.&lt;br /&gt;
&lt;br /&gt;
Le noeud final aura aussi besoin d'un serveur SMTP (serveur d'envoi d'emails) et éventuellement de paramètres d'identification pour ce serveur d'envoi d'emails.&lt;br /&gt;
&lt;br /&gt;
==== Détail des besoins du noeud email ====&lt;br /&gt;
&lt;br /&gt;
La liste des éléments nécessaires s'affiche lorsque le bloc est dans la zone de travail (Schema).&lt;br /&gt;
Commençons donc par sélectionner le bloc email, et de le glisser dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
Commençons par cliquer sur le bloc email et nous maintenons le clic pour le glisser à droite dans l'espace de travail.&lt;br /&gt;
&lt;br /&gt;
(on choisit celui qui a son point de liaison à gauche, car nous voulons un bloc de sortie)&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-36.png]]&lt;br /&gt;
&lt;br /&gt;
Glissons le dans l'espace de travail, et cliquons un clic simple pour le sélectionner.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-37.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, dans la colonne à droite de cet espace de travail, nous cliquons sur info et nous pourrons découvrir les éléments nécessaires à la constitution d'un bloc email.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-38.png]]&lt;br /&gt;
&lt;br /&gt;
===== Nous utiliserons les champs suivants =====&lt;br /&gt;
&lt;br /&gt;
* '''msg.payload''' --&amp;gt; Ce champ contient le corps de l'email&lt;br /&gt;
* '''msg.topic''' --&amp;gt; Ce champ contient le sujet de l'email&lt;br /&gt;
* '''msg.from''' --&amp;gt; Ce champ contient l'email de l'expéditeur &lt;br /&gt;
* '''msg.to''' --&amp;gt; Ce champ contient l'email du destinataire&lt;br /&gt;
&lt;br /&gt;
=== Création d'une action périodique ===&lt;br /&gt;
&lt;br /&gt;
Dans la colonne de gauche de NodeRED, se trouvent une liste de blocs à utiliser pour réaliser vos projets. Ils sont classés par &amp;quot;types&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Ainsi nous retrouvons les &amp;quot;types&amp;quot; suivants:&lt;br /&gt;
&lt;br /&gt;
* Input qui contient tous les blocs d'entrées&lt;br /&gt;
* Ouput qui contient tous les blocs de sortie&lt;br /&gt;
* Function qui contient des blocs de fonctions javascript etc...&lt;br /&gt;
* Social qui sont des blocs d'entrée ou sorties depuis ou vers les réseaux sociaux&lt;br /&gt;
* Storage qui sont des fonctions de lecture ou d'écriture de fichiers&lt;br /&gt;
* Analysis -&amp;gt;&amp;gt; Sentiment interprète du texte et détermine un score sur base d'un dictionnaire anglais, renvoie le texte avec ce score de -5 à +5, déterminant ainsi l'émotion susceptible d'être procuré par ce texte&lt;br /&gt;
* Advanced possède des outils permettant de détecter des changements dans des fichiers ou dossiers, de lire des flux RSS ou encore EXEC qui permet d'exécuter directement des commandes sous linux !&lt;br /&gt;
* Raspberry Pi contient des outils pour piloter/lire le GPIO du raspberry Pi&lt;br /&gt;
* Network qui contient un outil réseau de Ping&lt;br /&gt;
 &lt;br /&gt;
Nous allons créer une action périodique, c'est à dire paramétrer un bloc &amp;quot;INJECT&amp;quot; de manière à déclencher régulièrement une chaine d'actions que nous allons accrocher à la suite les unes après les autres.&lt;br /&gt;
Nous allons donc cliquer sur le bloc &amp;quot;Inject&amp;quot; dans la liste &amp;quot;Input&amp;quot; et maintenir ce clic pour le déplacer vers la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-02.png]]&lt;br /&gt;
&lt;br /&gt;
Nous obtiendrons donc une nouvelle instance &amp;quot;inject&amp;quot; qui portera le nom &amp;quot;Timestamp&amp;quot; (ce nom est attribué par défaut par NodeRED) comme dans la capture ci-dessous&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-03.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant double-cliquer sur celle-ci fin de l'éditer pour voir apparaitre le menu ci-dessous&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-04.png]]&lt;br /&gt;
&lt;br /&gt;
Il va falloir configurer ce bloc, mais avant tout voici une explication de celui-ci:&lt;br /&gt;
&lt;br /&gt;
==== Payload ====&lt;br /&gt;
&lt;br /&gt;
Le champs PayLoad est en fait le champ de données qui sera suivi d'un noeud à l'autre jusque à la fin de la chaine.&lt;br /&gt;
Dans ce module &amp;quot;inject&amp;quot;, nous allons donc déterminer quel type de données contiendra le &amp;quot;PayLoad&amp;quot; jusqu'à la fin de la chaine que l'on va réaliser.&lt;br /&gt;
&lt;br /&gt;
Dans notre cas, nous souhaitons construire un email, donc du contenu textuel, nous allons donc choisir &amp;quot;String&amp;quot; ce qui correspond à une chaine de caractères (du texte).&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-05.png]]&lt;br /&gt;
&lt;br /&gt;
==== Topic ====&lt;br /&gt;
&lt;br /&gt;
Le champs &amp;quot;Topic&amp;quot; est un champs de texte dans lequel nous allons mettre un sujet succinct décrivant notre chaine. &lt;br /&gt;
Dans notre cas, ce sujet fera office de sujet au mail que nous expédierons. &lt;br /&gt;
Nous allons donc être précis en un minimum de mots pour que le destinataire de l'email puisse facilement deviner le contenu de celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-06.png]]&lt;br /&gt;
&lt;br /&gt;
==== Repeat ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite choisir l'intervalle de déclenchement de notre action, sachant que nous avons le choix entre: &lt;br /&gt;
&lt;br /&gt;
* none  : pas de déclenchement périodique programmé&lt;br /&gt;
* interval : nous fixons un temps de déclenchement à partir du lancement du programme, l'action se réalisera à chaque fois que ce temps sera écoulé de manière répétée jusqu'à l'interruption manuelle du programme&lt;br /&gt;
* interval between times : nous fixons ici le déclenchement par interval, mais nous fixons aussi une fourchette d'heures et des jours pendant lesquels nous exécutons cet interval&lt;br /&gt;
* at a specific time : nous fixons une heure d'exécution, et un ou plusieurs jours d'exécution. Dans ce cas l'action n'est pas répétée en continu mais éxécutée une seule fois par jour à l'heure programmée&lt;br /&gt;
&lt;br /&gt;
Dans notre exemple, nous allons fixer un intervalle de 15 secondes pour commencer. Nous pourrons ensuite augmenter cette valeur pour éviter de recevoir trop d'emails avec des photos :D&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-07.png]]&lt;br /&gt;
&lt;br /&gt;
La case &amp;quot;inject once at start&amp;quot; permet de ne pas attendre le premier cycle avant d'exécuter une première fois l'action. Elle se lancera dès le lancement du programme, puis périodiquement selon les cycles déterminés par l'intervalle.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-08.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Le champs Name va déterminer le nom que portera le bloc dans l'espace de travail et dans les logs (si nous créons des blocs de log ensuite pour contrôler des étapes).&lt;br /&gt;
Il est important de bien établir ce nom de manière explicite, car le nom des blocs permettra de comprendre et retrouver facilement la logique du schéma construit, même si l'on a pas consulté celui-ci pendant une longue période.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-09.png]]&lt;br /&gt;
&lt;br /&gt;
=== Capture d'une image depuis la PiCam ===&lt;br /&gt;
&lt;br /&gt;
Nous allons aller à l'essentiel en ce qui concerne la capture photo en utilisant une commande simple pour prendre un cliché et renvoyer celui-ci dans le flux NodeRED grâce à un bloc permettant d'exécuter des commandes bash.&lt;br /&gt;
&lt;br /&gt;
{{ambox | text = Vous trouverez un TUTO détaillé sur la PiCam vous permettant de prendre la main, ou de la paramétrer si vous n'avez pas encore utilisé celle-ci auparavant: ....___TUTO___...}} &lt;br /&gt;
&lt;br /&gt;
Nous allons tout d'abord cliquer sur le bloc &amp;quot;Exec&amp;quot; dans la section &amp;quot;Advanced&amp;quot; de la colonne de gauche et glisser l'élément dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-10.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, cliquer sur le bloc nouvellement créé et configurer celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-11.png]]&lt;br /&gt;
&lt;br /&gt;
Le menu suivant s'affichera, et nous pourrons configurer le bloc &amp;quot;Exec&amp;quot; nouvellement créé.&lt;br /&gt;
&lt;br /&gt;
==== Command ====&lt;br /&gt;
&lt;br /&gt;
Nous allons y ajouter la commande à exécuter pour prendre une photo avec la caméra du Raspberry Pi et la stocker dans un fichier jpg dans le dossier /tmp/ de linux.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
raspistill -o /tmp/cam.jpg -w 640 -h 480&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous prenons soin de limiter la hauteur et la largeur de l'image afin de réduire son poids pour l'envoi par email.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-12.png]]&lt;br /&gt;
&lt;br /&gt;
==== +Append ====&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons décocher la case &amp;quot;msg.payload&amp;quot; si elle est cochée par défaut.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-13.png]]&lt;br /&gt;
&lt;br /&gt;
==== Extra input parameters et Timeout ====&lt;br /&gt;
&lt;br /&gt;
Nous n'aurons pas besoin de compléter ces champs pour notre projet.&lt;br /&gt;
&lt;br /&gt;
Si vous cochez le champ &amp;quot;Use spawn() instead of exec()?&amp;quot;, votre commande sera réalisée sous forme d'un processus résident et continuera de s'exécuter jusqu'à ce qu'elle se termine par elle-même (sauf si elle ne se termine jamais).&lt;br /&gt;
Cette solution implique que le programme n'attendra pas que cette commande soit réalisée pour passer aux étapes suivantes. &lt;br /&gt;
Si la suite de l'exécution de votre flux est susceptible d'utiliser le résultat de cette commande, nous vous déconseillons d'utiliser cette option sous peine de provoquer des erreurs à la suite du traitement du flux.&lt;br /&gt;
&lt;br /&gt;
Le champ &amp;quot;Timeout&amp;quot; permet de définir un temps d'attente maximum avant de mettre un terme à l'exécution de la commande. &lt;br /&gt;
Cela permet de débloquer la situation si la commande exécutée prends un temps anormalement long à s'exécuter.&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite compléter le champs nom, celui-ci sera utilisé pour nommer le bloc dans le &amp;quot;schéma&amp;quot;, mais aussi de nommer les logs comme pour le bloc &amp;quot;Exec&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-14.png]]&lt;br /&gt;
&lt;br /&gt;
=== Encodage de l'image en base64 ===&lt;br /&gt;
&lt;br /&gt;
Nous allons convertir la photo prise juste avant en utilisant une commande de conversion en base64.&lt;br /&gt;
Cela facilitera son injection dans un template HTML que nous allons créer ensuite pour construire un email.&lt;br /&gt;
&lt;br /&gt;
Nous allons tout d'abord cliquer sur le bloc &amp;quot;Exec&amp;quot; dans la section &amp;quot;Advanced&amp;quot; de la colonne de gauche et glisser l'élément dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-10.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, cliquer sur le bloc nouvellement créé et configurer celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-11.png]]&lt;br /&gt;
&lt;br /&gt;
Le menu suivant s'affichera, et nous pourrons configurer le bloc &amp;quot;Exec&amp;quot; nouvellement créé.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-15.png]]&lt;br /&gt;
&lt;br /&gt;
==== Command ====&lt;br /&gt;
&lt;br /&gt;
Nous allons y ajouter la commande à exécuter pour encoder en base 64 la photo prise précédemment avec la caméra du Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
base64 -i &amp;quot;/tmp/cam.jpg&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-16.png]]&lt;br /&gt;
&lt;br /&gt;
==== +Append ====&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons cocher la case &amp;quot;msg.payload&amp;quot; si elle n'est pas cochée par défaut pour que le résultat soit directement renvoyé par cette commande dans le &amp;quot;PayLoad&amp;quot; du flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-17.png]]&lt;br /&gt;
&lt;br /&gt;
==== Extra input parameters et Timeout ====&lt;br /&gt;
&lt;br /&gt;
Nous n'aurons pas besoin de compléter ces champs pour notre projet.&lt;br /&gt;
&lt;br /&gt;
Si vous cochez le champ &amp;quot;Use spawn() instead of exec()?&amp;quot;, votre commande sera réalisée sous forme d'un processus résident et continuera de s'exécuter jusqu'à ce qu'elle se termine par elle-même (sauf si elle ne se termine jamais).&lt;br /&gt;
Cette solution implique que le programme n'attendra pas que cette commande soit réalisée pour passer aux étapes suivantes. &lt;br /&gt;
Si la suite de l'exécution de votre flux est susceptible d'utiliser le résultat de cette commande, nous vous déconseillons d'utiliser cette option sous peine de provoquer des erreurs à la suite du traitement du flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-18.png]]&lt;br /&gt;
&lt;br /&gt;
Le champ &amp;quot;Timeout&amp;quot; permet de définir un temps d'attente maximum avant de mettre un terme à l'exécution de la commande. &lt;br /&gt;
Cela permet de débloquer la situation si la commande exécutée prends un temps anormalement long à s'exécuter.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-19.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite compléter le champs nom, celui-ci sera utilisé pour nommer le bloc dans le &amp;quot;schéma&amp;quot;, mais aussi de nommer les logs comme pour le bloc &amp;quot;Exec&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-20.png]]&lt;br /&gt;
&lt;br /&gt;
=== Création d'un email au format HTML ===&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant créer un template d'email au format HTML afin de mettre en forme le message que nous enverrons ensuite.&lt;br /&gt;
Nous allons pour cela utiliser un bloc &amp;quot;Template&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-21.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons attribuer un nom au bloc afin de l'identifier plus facilement dans le flux.&lt;br /&gt;
Nous allons donc le nommer &amp;quot;Contenu du mail&amp;quot; puisque nous créons le contenu du mail que nous enverrons ensuite.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-22.png]]&lt;br /&gt;
&lt;br /&gt;
==== Set property ====&lt;br /&gt;
&lt;br /&gt;
La propriété que nous souhaitons créer dans le flux est le &amp;quot;PayLoad&amp;quot;.&lt;br /&gt;
Ce PayLoad existe déjà, il contient pour le moment l'image au format &amp;quot;Base64&amp;quot; précédemment encodé.&lt;br /&gt;
Cela n'est pas un problème, après notre noeud (notre bloc), le PayLoad sera intégralement remplacé par le template que nous sommes en train de créer.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-23.png]]&lt;br /&gt;
&lt;br /&gt;
==== Template ====&lt;br /&gt;
&lt;br /&gt;
Dans ce template, nous allons créer une structure HTML de base minimum afin que la structure soit interprétée par la majorité des clients/webmail.&lt;br /&gt;
Vous pouvez la personnaliser à votre guise si vous avez les connaissances en HTML.&lt;br /&gt;
&lt;br /&gt;
Voici la structure de base pour notre projet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
    &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;meta charset=&amp;quot;utf8&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/head&amp;gt;&lt;br /&gt;
    &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Projet Photo par email&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;img src=&amp;quot;data:image/jpg;base64,{{payload}}&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pourrez remarquer que nous intégrons l'image en appelant le PayLoad à 'intérieur du code HTML dans la balise &amp;lt;img&amp;gt;.&lt;br /&gt;
C'est le PayLoad créé précédemment par le bloc &amp;quot;Exec&amp;quot; qui est récupéré à ce moment précis.&lt;br /&gt;
Ce PayLoad est remplacé dans le flux par le PayLoad complet avec notre template dans le flux par notre bloc Template.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-24.png]]&lt;br /&gt;
&lt;br /&gt;
=== Création d'un bloc (noeud) &amp;quot;Debug&amp;quot;  ===&lt;br /&gt;
&lt;br /&gt;
Nous allons ajouter la notion d'expéditeur dans le flux que nous avons créé à travers nos blocs (noeuds).&lt;br /&gt;
Pour rappel, actuellement nous avons deux propriétés avec des données dans notre flux. &lt;br /&gt;
Si nous voulons observer ce que nous avons créé jusque là, nous pouvons faire appel à un bloc &amp;quot;Debug&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Création du bloc &amp;quot;Debug&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Comme pour les blocs précédents, nous allons glisser/déposer un bloc débug dans l'espace de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-25.png]]&lt;br /&gt;
&lt;br /&gt;
Celui-ci s'appelle msg/payload par défaut&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-26.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons double-cliquer sur ce bloc pour le configurer.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-27.png]]&lt;br /&gt;
&lt;br /&gt;
==== Output ====&lt;br /&gt;
&lt;br /&gt;
Dans ce champs, nous allons choisir la partie du flux que nous souhaitons afficher, ou nous allons sélectionner le flux entier.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-28.png]]&lt;br /&gt;
&lt;br /&gt;
Sélectionner le flux entier, nous affichera le flux complet incluant toutes ses propriétés.&lt;br /&gt;
&lt;br /&gt;
 [[fichier:Rasp-Node-Red-picam-mail-29.png]]&lt;br /&gt;
&lt;br /&gt;
==== To =====&lt;br /&gt;
&lt;br /&gt;
La propriété &amp;quot;To&amp;quot; nous permet de choisir ou nous souhaitons afficher les données que nous récupérons. &lt;br /&gt;
Soit nous les affichons uniquement dans l'onglet &amp;quot;Debug&amp;quot; à droite de l'espace de travail, soit nous l'affichons dans cet onglet mais aussi dans la console de NodeJS.&lt;br /&gt;
Dans notre cas, nous allons nous contenter d'afficher nos éléments dans l'onglet de &amp;quot;Debug&amp;quot; à droite de notre espace de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-30.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Le champs Name nous servira à identifier quel bloc de &amp;quot;Debug&amp;quot; affiche les données en console ou dans l'onglet &amp;quot;Debug&amp;quot;. &lt;br /&gt;
Il faut donc le nommer efficacement pour bien attacher et comprendre les données que nous récupérons, surtout si nous en plaçons plusieurs dans le flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-31.png]]&lt;br /&gt;
&lt;br /&gt;
==== Exploitation et compréhension des données récupérées ====&lt;br /&gt;
&lt;br /&gt;
Nous avons placé notre bloc &amp;quot;Debug&amp;quot; à la suite du flux en dernière position. &lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-32.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons donc déployer le programme en cliquant sur &amp;quot;Deploy&amp;quot; en haut à droite de la page. &lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-33.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons exécuter manuellement le programme en cliquant sur le bouton se trouvant en début de chaîne:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-34.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite afficher l'onglet &amp;quot;Debug&amp;quot; sur le coté droit de la page et analyser les données récupérées:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-35.png]]&lt;br /&gt;
&lt;br /&gt;
==== Analyse des données récupérées dans l'onglet &amp;quot;Debug&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
08/05/2017 à 12:54:31 node: FORMATAGE&lt;br /&gt;
MCHobby - Photo bureau : msg : Object&lt;br /&gt;
object&lt;br /&gt;
_msgid: &amp;quot;81efe35c.3208d&amp;quot;&lt;br /&gt;
topic: &amp;quot;MCHobby - Photo bureau&amp;quot;&lt;br /&gt;
payload: &amp;quot;&amp;lt;html&amp;gt;↵ &amp;lt;head&amp;gt;↵ &amp;lt;meta charset=&amp;quot;utf8&amp;quot;/&amp;gt;↵ ↵ &amp;lt;/head&amp;gt;↵ &amp;lt;body&amp;gt;↵ &amp;lt;h1&amp;gt;MCHobby - Photo bureau&amp;lt;/h1&amp;gt;↵ &amp;lt;p&amp;gt;Cette photo est un instantané pris dans les bureaux de MCHobby.&amp;lt;/p&amp;gt;↵ &lt;br /&gt;
&amp;lt;img src=&amp;quot;data:image/jpg;base64,&amp;amp;#x2F;9j&amp;amp;#x2F;4WP6x2.../&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comme vous pourrez le constater, chaque élément du noeud est détaillé.&lt;br /&gt;
Les données sont cependant tronquées, le noeud &amp;quot;Debug&amp;quot; ne nous fourni pas la totalité du &amp;quot;PayLoad&amp;quot; mais nous avons déjà un bon aperçu des données qu'il contient.&lt;br /&gt;
&lt;br /&gt;
_msgid: est un Id unique de message&lt;br /&gt;
topic: est le sujet du mail, nous l'avons déterminé dans le premier bloc&lt;br /&gt;
payload: contient les données du message formatées par le template que nous avons créé et complété par l'image en base64.&lt;br /&gt;
&lt;br /&gt;
Les noeuds &amp;quot;Debug&amp;quot; sont pratiques. Ils nous permettent d'afficher une partie ou la totalité du flux tel qu'il est à l'endroit ou ils sont placés.&lt;br /&gt;
&lt;br /&gt;
Cela peut permettre d'identifier et de résoudre plus facilement des problèmes dans des opérations plus complexes et dans notre cas, cela nous permet de mieux comprendre comment fonctionne le noeud et comment les données sont transmises d'un bloc à l'autre.&lt;br /&gt;
&lt;br /&gt;
=== Création d'un expéditeur ===&lt;br /&gt;
&lt;br /&gt;
Nous avons construit petit à petit un message avec un sujet, mais il manque encore un détail: l'expéditeur de l'email que nous allons envoyer.&lt;br /&gt;
&lt;br /&gt;
Si vous avez bien suivi les étapes précédentes du tuto, jusqu'au noeud &amp;quot;Debug&amp;quot; et à son résultat, vous comprendrez facilement la démarche ci après pour ajouter un expéditeur dans le flux.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Rasp-Node-Red-TRAILER}}&lt;/div&gt;</summary>
		<author><name>AntoineWrt</name></author>
	</entry>
	<entry>
		<id>https://wiki.mchobby.be/index.php?title=Rasp-Node-Red-picam-mail&amp;diff=22800</id>
		<title>Rasp-Node-Red-picam-mail</title>
		<link rel="alternate" type="text/html" href="https://wiki.mchobby.be/index.php?title=Rasp-Node-Red-picam-mail&amp;diff=22800"/>
		<updated>2017-05-08T12:55:56Z</updated>

		<summary type="html">&lt;p&gt;AntoineWrt : /* Nous utiliserons les champs suivants */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Rasp-Node-Red-NAV}}&lt;br /&gt;
&lt;br /&gt;
{{traduction}}&lt;br /&gt;
&lt;br /&gt;
== PiCamRED - Envoi périodique de photos par email avec PiCam et NodeRED ==&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-01.png|900px]]&lt;br /&gt;
&lt;br /&gt;
=== Description du projet ===&lt;br /&gt;
&lt;br /&gt;
Dans ce tutoriel, nous allons réaliser des photos à l'aide de la caméra du RaspBerry Pi 2/3 et envoyer ces clichés par email de manière périodique grâce à NodeRED.&lt;br /&gt;
Nous allons donc utiliser plusieurs blocs et décrire de manière détaillée le déroulement de chaque étape de la réalisation de ce projet.&lt;br /&gt;
&lt;br /&gt;
Dans NodeRED, il est important de bien identifier la finalité de notre projet afin de connaître au préalable tous les éléments qu'il faudra créer et fournir à l'action finale (celle qui enverra un email).&lt;br /&gt;
&lt;br /&gt;
=== Quels sont les besoins du noeud email ===&lt;br /&gt;
&lt;br /&gt;
==== Composants nécessaires pour constituer un email ====&lt;br /&gt;
&lt;br /&gt;
Un email est composé des éléments suivants: &lt;br /&gt;
&lt;br /&gt;
* Un expéditeur&lt;br /&gt;
* Un destinataire&lt;br /&gt;
* Un sujet&lt;br /&gt;
* Le corps du message&lt;br /&gt;
&lt;br /&gt;
Tous ces éléments vont donc devoir être préparés afin de pouvoir construire le message à envoyer par le noeud final.&lt;br /&gt;
&lt;br /&gt;
Le noeud final aura aussi besoin d'un serveur SMTP (serveur d'envoi d'emails) et éventuellement de paramètres d'identification pour ce serveur d'envoi d'emails.&lt;br /&gt;
&lt;br /&gt;
==== Détail des besoins du noeud email ====&lt;br /&gt;
&lt;br /&gt;
La liste des éléments nécessaires s'affiche lorsque le bloc est dans la zone de travail (Schema).&lt;br /&gt;
Commençons donc par sélectionner le bloc email, et de le glisser dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
Commençons par cliquer sur le bloc email et nous maintenons le clic pour le glisser à droite dans l'espace de travail.&lt;br /&gt;
&lt;br /&gt;
(on choisit celui qui a son point de liaison à gauche, car nous voulons un bloc de sortie)&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-36.png]]&lt;br /&gt;
&lt;br /&gt;
Glissons le dans l'espace de travail, et cliquons un clic simple pour le sélectionner.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-37.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, dans la colonne à droite de cet espace de travail, nous cliquons sur info et nous pourrons découvrir les éléments nécessaires à la constitution d'un bloc email.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-38.png]]&lt;br /&gt;
&lt;br /&gt;
===== Nous utiliserons les champs suivants =====&lt;br /&gt;
&lt;br /&gt;
* '''msg.payload''' Ce champ contient le corps de l'email&lt;br /&gt;
* '''msg.topic''' Ce champ contient le sujet de l'email&lt;br /&gt;
* '''msg.from''' Ce champ contient l'email de l'expéditeur &lt;br /&gt;
* '''msg.to''' Ce champ contient l'email du destinataire&lt;br /&gt;
&lt;br /&gt;
=== Création d'une action périodique ===&lt;br /&gt;
&lt;br /&gt;
Dans la colonne de gauche de NodeRED, se trouvent une liste de blocs à utiliser pour réaliser vos projets. Ils sont classés par &amp;quot;types&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Ainsi nous retrouvons les &amp;quot;types&amp;quot; suivants:&lt;br /&gt;
&lt;br /&gt;
* Input qui contient tous les blocs d'entrées&lt;br /&gt;
* Ouput qui contient tous les blocs de sortie&lt;br /&gt;
* Function qui contient des blocs de fonctions javascript etc...&lt;br /&gt;
* Social qui sont des blocs d'entrée ou sorties depuis ou vers les réseaux sociaux&lt;br /&gt;
* Storage qui sont des fonctions de lecture ou d'écriture de fichiers&lt;br /&gt;
* Analysis -&amp;gt;&amp;gt; Sentiment interprète du texte et détermine un score sur base d'un dictionnaire anglais, renvoie le texte avec ce score de -5 à +5, déterminant ainsi l'émotion susceptible d'être procuré par ce texte&lt;br /&gt;
* Advanced possède des outils permettant de détecter des changements dans des fichiers ou dossiers, de lire des flux RSS ou encore EXEC qui permet d'exécuter directement des commandes sous linux !&lt;br /&gt;
* Raspberry Pi contient des outils pour piloter/lire le GPIO du raspberry Pi&lt;br /&gt;
* Network qui contient un outil réseau de Ping&lt;br /&gt;
 &lt;br /&gt;
Nous allons créer une action périodique, c'est à dire paramétrer un bloc &amp;quot;INJECT&amp;quot; de manière à déclencher régulièrement une chaine d'actions que nous allons accrocher à la suite les unes après les autres.&lt;br /&gt;
Nous allons donc cliquer sur le bloc &amp;quot;Inject&amp;quot; dans la liste &amp;quot;Input&amp;quot; et maintenir ce clic pour le déplacer vers la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-02.png]]&lt;br /&gt;
&lt;br /&gt;
Nous obtiendrons donc une nouvelle instance &amp;quot;inject&amp;quot; qui portera le nom &amp;quot;Timestamp&amp;quot; (ce nom est attribué par défaut par NodeRED) comme dans la capture ci-dessous&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-03.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant double-cliquer sur celle-ci fin de l'éditer pour voir apparaitre le menu ci-dessous&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-04.png]]&lt;br /&gt;
&lt;br /&gt;
Il va falloir configurer ce bloc, mais avant tout voici une explication de celui-ci:&lt;br /&gt;
&lt;br /&gt;
==== Payload ====&lt;br /&gt;
&lt;br /&gt;
Le champs PayLoad est en fait le champ de données qui sera suivi d'un noeud à l'autre jusque à la fin de la chaine.&lt;br /&gt;
Dans ce module &amp;quot;inject&amp;quot;, nous allons donc déterminer quel type de données contiendra le &amp;quot;PayLoad&amp;quot; jusqu'à la fin de la chaine que l'on va réaliser.&lt;br /&gt;
&lt;br /&gt;
Dans notre cas, nous souhaitons construire un email, donc du contenu textuel, nous allons donc choisir &amp;quot;String&amp;quot; ce qui correspond à une chaine de caractères (du texte).&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-05.png]]&lt;br /&gt;
&lt;br /&gt;
==== Topic ====&lt;br /&gt;
&lt;br /&gt;
Le champs &amp;quot;Topic&amp;quot; est un champs de texte dans lequel nous allons mettre un sujet succinct décrivant notre chaine. &lt;br /&gt;
Dans notre cas, ce sujet fera office de sujet au mail que nous expédierons. &lt;br /&gt;
Nous allons donc être précis en un minimum de mots pour que le destinataire de l'email puisse facilement deviner le contenu de celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-06.png]]&lt;br /&gt;
&lt;br /&gt;
==== Repeat ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite choisir l'intervalle de déclenchement de notre action, sachant que nous avons le choix entre: &lt;br /&gt;
&lt;br /&gt;
* none  : pas de déclenchement périodique programmé&lt;br /&gt;
* interval : nous fixons un temps de déclenchement à partir du lancement du programme, l'action se réalisera à chaque fois que ce temps sera écoulé de manière répétée jusqu'à l'interruption manuelle du programme&lt;br /&gt;
* interval between times : nous fixons ici le déclenchement par interval, mais nous fixons aussi une fourchette d'heures et des jours pendant lesquels nous exécutons cet interval&lt;br /&gt;
* at a specific time : nous fixons une heure d'exécution, et un ou plusieurs jours d'exécution. Dans ce cas l'action n'est pas répétée en continu mais éxécutée une seule fois par jour à l'heure programmée&lt;br /&gt;
&lt;br /&gt;
Dans notre exemple, nous allons fixer un intervalle de 15 secondes pour commencer. Nous pourrons ensuite augmenter cette valeur pour éviter de recevoir trop d'emails avec des photos :D&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-07.png]]&lt;br /&gt;
&lt;br /&gt;
La case &amp;quot;inject once at start&amp;quot; permet de ne pas attendre le premier cycle avant d'exécuter une première fois l'action. Elle se lancera dès le lancement du programme, puis périodiquement selon les cycles déterminés par l'intervalle.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-08.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Le champs Name va déterminer le nom que portera le bloc dans l'espace de travail et dans les logs (si nous créons des blocs de log ensuite pour contrôler des étapes).&lt;br /&gt;
Il est important de bien établir ce nom de manière explicite, car le nom des blocs permettra de comprendre et retrouver facilement la logique du schéma construit, même si l'on a pas consulté celui-ci pendant une longue période.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-09.png]]&lt;br /&gt;
&lt;br /&gt;
=== Capture d'une image depuis la PiCam ===&lt;br /&gt;
&lt;br /&gt;
Nous allons aller à l'essentiel en ce qui concerne la capture photo en utilisant une commande simple pour prendre un cliché et renvoyer celui-ci dans le flux NodeRED grâce à un bloc permettant d'exécuter des commandes bash.&lt;br /&gt;
&lt;br /&gt;
{{ambox | text = Vous trouverez un TUTO détaillé sur la PiCam vous permettant de prendre la main, ou de la paramétrer si vous n'avez pas encore utilisé celle-ci auparavant: ....___TUTO___...}} &lt;br /&gt;
&lt;br /&gt;
Nous allons tout d'abord cliquer sur le bloc &amp;quot;Exec&amp;quot; dans la section &amp;quot;Advanced&amp;quot; de la colonne de gauche et glisser l'élément dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-10.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, cliquer sur le bloc nouvellement créé et configurer celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-11.png]]&lt;br /&gt;
&lt;br /&gt;
Le menu suivant s'affichera, et nous pourrons configurer le bloc &amp;quot;Exec&amp;quot; nouvellement créé.&lt;br /&gt;
&lt;br /&gt;
==== Command ====&lt;br /&gt;
&lt;br /&gt;
Nous allons y ajouter la commande à exécuter pour prendre une photo avec la caméra du Raspberry Pi et la stocker dans un fichier jpg dans le dossier /tmp/ de linux.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
raspistill -o /tmp/cam.jpg -w 640 -h 480&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous prenons soin de limiter la hauteur et la largeur de l'image afin de réduire son poids pour l'envoi par email.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-12.png]]&lt;br /&gt;
&lt;br /&gt;
==== +Append ====&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons décocher la case &amp;quot;msg.payload&amp;quot; si elle est cochée par défaut.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-13.png]]&lt;br /&gt;
&lt;br /&gt;
==== Extra input parameters et Timeout ====&lt;br /&gt;
&lt;br /&gt;
Nous n'aurons pas besoin de compléter ces champs pour notre projet.&lt;br /&gt;
&lt;br /&gt;
Si vous cochez le champ &amp;quot;Use spawn() instead of exec()?&amp;quot;, votre commande sera réalisée sous forme d'un processus résident et continuera de s'exécuter jusqu'à ce qu'elle se termine par elle-même (sauf si elle ne se termine jamais).&lt;br /&gt;
Cette solution implique que le programme n'attendra pas que cette commande soit réalisée pour passer aux étapes suivantes. &lt;br /&gt;
Si la suite de l'exécution de votre flux est susceptible d'utiliser le résultat de cette commande, nous vous déconseillons d'utiliser cette option sous peine de provoquer des erreurs à la suite du traitement du flux.&lt;br /&gt;
&lt;br /&gt;
Le champ &amp;quot;Timeout&amp;quot; permet de définir un temps d'attente maximum avant de mettre un terme à l'exécution de la commande. &lt;br /&gt;
Cela permet de débloquer la situation si la commande exécutée prends un temps anormalement long à s'exécuter.&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite compléter le champs nom, celui-ci sera utilisé pour nommer le bloc dans le &amp;quot;schéma&amp;quot;, mais aussi de nommer les logs comme pour le bloc &amp;quot;Exec&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-14.png]]&lt;br /&gt;
&lt;br /&gt;
=== Encodage de l'image en base64 ===&lt;br /&gt;
&lt;br /&gt;
Nous allons convertir la photo prise juste avant en utilisant une commande de conversion en base64.&lt;br /&gt;
Cela facilitera son injection dans un template HTML que nous allons créer ensuite pour construire un email.&lt;br /&gt;
&lt;br /&gt;
Nous allons tout d'abord cliquer sur le bloc &amp;quot;Exec&amp;quot; dans la section &amp;quot;Advanced&amp;quot; de la colonne de gauche et glisser l'élément dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-10.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, cliquer sur le bloc nouvellement créé et configurer celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-11.png]]&lt;br /&gt;
&lt;br /&gt;
Le menu suivant s'affichera, et nous pourrons configurer le bloc &amp;quot;Exec&amp;quot; nouvellement créé.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-15.png]]&lt;br /&gt;
&lt;br /&gt;
==== Command ====&lt;br /&gt;
&lt;br /&gt;
Nous allons y ajouter la commande à exécuter pour encoder en base 64 la photo prise précédemment avec la caméra du Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
base64 -i &amp;quot;/tmp/cam.jpg&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-16.png]]&lt;br /&gt;
&lt;br /&gt;
==== +Append ====&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons cocher la case &amp;quot;msg.payload&amp;quot; si elle n'est pas cochée par défaut pour que le résultat soit directement renvoyé par cette commande dans le &amp;quot;PayLoad&amp;quot; du flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-17.png]]&lt;br /&gt;
&lt;br /&gt;
==== Extra input parameters et Timeout ====&lt;br /&gt;
&lt;br /&gt;
Nous n'aurons pas besoin de compléter ces champs pour notre projet.&lt;br /&gt;
&lt;br /&gt;
Si vous cochez le champ &amp;quot;Use spawn() instead of exec()?&amp;quot;, votre commande sera réalisée sous forme d'un processus résident et continuera de s'exécuter jusqu'à ce qu'elle se termine par elle-même (sauf si elle ne se termine jamais).&lt;br /&gt;
Cette solution implique que le programme n'attendra pas que cette commande soit réalisée pour passer aux étapes suivantes. &lt;br /&gt;
Si la suite de l'exécution de votre flux est susceptible d'utiliser le résultat de cette commande, nous vous déconseillons d'utiliser cette option sous peine de provoquer des erreurs à la suite du traitement du flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-18.png]]&lt;br /&gt;
&lt;br /&gt;
Le champ &amp;quot;Timeout&amp;quot; permet de définir un temps d'attente maximum avant de mettre un terme à l'exécution de la commande. &lt;br /&gt;
Cela permet de débloquer la situation si la commande exécutée prends un temps anormalement long à s'exécuter.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-19.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite compléter le champs nom, celui-ci sera utilisé pour nommer le bloc dans le &amp;quot;schéma&amp;quot;, mais aussi de nommer les logs comme pour le bloc &amp;quot;Exec&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-20.png]]&lt;br /&gt;
&lt;br /&gt;
=== Création d'un email au format HTML ===&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant créer un template d'email au format HTML afin de mettre en forme le message que nous enverrons ensuite.&lt;br /&gt;
Nous allons pour cela utiliser un bloc &amp;quot;Template&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-21.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons attribuer un nom au bloc afin de l'identifier plus facilement dans le flux.&lt;br /&gt;
Nous allons donc le nommer &amp;quot;Contenu du mail&amp;quot; puisque nous créons le contenu du mail que nous enverrons ensuite.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-22.png]]&lt;br /&gt;
&lt;br /&gt;
==== Set property ====&lt;br /&gt;
&lt;br /&gt;
La propriété que nous souhaitons créer dans le flux est le &amp;quot;PayLoad&amp;quot;.&lt;br /&gt;
Ce PayLoad existe déjà, il contient pour le moment l'image au format &amp;quot;Base64&amp;quot; précédemment encodé.&lt;br /&gt;
Cela n'est pas un problème, après notre noeud (notre bloc), le PayLoad sera intégralement remplacé par le template que nous sommes en train de créer.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-23.png]]&lt;br /&gt;
&lt;br /&gt;
==== Template ====&lt;br /&gt;
&lt;br /&gt;
Dans ce template, nous allons créer une structure HTML de base minimum afin que la structure soit interprétée par la majorité des clients/webmail.&lt;br /&gt;
Vous pouvez la personnaliser à votre guise si vous avez les connaissances en HTML.&lt;br /&gt;
&lt;br /&gt;
Voici la structure de base pour notre projet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
    &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;meta charset=&amp;quot;utf8&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/head&amp;gt;&lt;br /&gt;
    &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Projet Photo par email&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;img src=&amp;quot;data:image/jpg;base64,{{payload}}&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pourrez remarquer que nous intégrons l'image en appelant le PayLoad à 'intérieur du code HTML dans la balise &amp;lt;img&amp;gt;.&lt;br /&gt;
C'est le PayLoad créé précédemment par le bloc &amp;quot;Exec&amp;quot; qui est récupéré à ce moment précis.&lt;br /&gt;
Ce PayLoad est remplacé dans le flux par le PayLoad complet avec notre template dans le flux par notre bloc Template.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-24.png]]&lt;br /&gt;
&lt;br /&gt;
=== Création d'un bloc (noeud) &amp;quot;Debug&amp;quot;  ===&lt;br /&gt;
&lt;br /&gt;
Nous allons ajouter la notion d'expéditeur dans le flux que nous avons créé à travers nos blocs (noeuds).&lt;br /&gt;
Pour rappel, actuellement nous avons deux propriétés avec des données dans notre flux. &lt;br /&gt;
Si nous voulons observer ce que nous avons créé jusque là, nous pouvons faire appel à un bloc &amp;quot;Debug&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Création du bloc &amp;quot;Debug&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Comme pour les blocs précédents, nous allons glisser/déposer un bloc débug dans l'espace de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-25.png]]&lt;br /&gt;
&lt;br /&gt;
Celui-ci s'appelle msg/payload par défaut&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-26.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons double-cliquer sur ce bloc pour le configurer.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-27.png]]&lt;br /&gt;
&lt;br /&gt;
==== Output ====&lt;br /&gt;
&lt;br /&gt;
Dans ce champs, nous allons choisir la partie du flux que nous souhaitons afficher, ou nous allons sélectionner le flux entier.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-28.png]]&lt;br /&gt;
&lt;br /&gt;
Sélectionner le flux entier, nous affichera le flux complet incluant toutes ses propriétés.&lt;br /&gt;
&lt;br /&gt;
 [[fichier:Rasp-Node-Red-picam-mail-29.png]]&lt;br /&gt;
&lt;br /&gt;
==== To =====&lt;br /&gt;
&lt;br /&gt;
La propriété &amp;quot;To&amp;quot; nous permet de choisir ou nous souhaitons afficher les données que nous récupérons. &lt;br /&gt;
Soit nous les affichons uniquement dans l'onglet &amp;quot;Debug&amp;quot; à droite de l'espace de travail, soit nous l'affichons dans cet onglet mais aussi dans la console de NodeJS.&lt;br /&gt;
Dans notre cas, nous allons nous contenter d'afficher nos éléments dans l'onglet de &amp;quot;Debug&amp;quot; à droite de notre espace de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-30.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Le champs Name nous servira à identifier quel bloc de &amp;quot;Debug&amp;quot; affiche les données en console ou dans l'onglet &amp;quot;Debug&amp;quot;. &lt;br /&gt;
Il faut donc le nommer efficacement pour bien attacher et comprendre les données que nous récupérons, surtout si nous en plaçons plusieurs dans le flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-31.png]]&lt;br /&gt;
&lt;br /&gt;
==== Exploitation et compréhension des données récupérées ====&lt;br /&gt;
&lt;br /&gt;
Nous avons placé notre bloc &amp;quot;Debug&amp;quot; à la suite du flux en dernière position. &lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-32.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons donc déployer le programme en cliquant sur &amp;quot;Deploy&amp;quot; en haut à droite de la page. &lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-33.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons exécuter manuellement le programme en cliquant sur le bouton se trouvant en début de chaîne:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-34.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite afficher l'onglet &amp;quot;Debug&amp;quot; sur le coté droit de la page et analyser les données récupérées:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-35.png]]&lt;br /&gt;
&lt;br /&gt;
==== Analyse des données récupérées dans l'onglet &amp;quot;Debug&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
08/05/2017 à 12:54:31 node: FORMATAGE&lt;br /&gt;
MCHobby - Photo bureau : msg : Object&lt;br /&gt;
object&lt;br /&gt;
_msgid: &amp;quot;81efe35c.3208d&amp;quot;&lt;br /&gt;
topic: &amp;quot;MCHobby - Photo bureau&amp;quot;&lt;br /&gt;
payload: &amp;quot;&amp;lt;html&amp;gt;↵ &amp;lt;head&amp;gt;↵ &amp;lt;meta charset=&amp;quot;utf8&amp;quot;/&amp;gt;↵ ↵ &amp;lt;/head&amp;gt;↵ &amp;lt;body&amp;gt;↵ &amp;lt;h1&amp;gt;MCHobby - Photo bureau&amp;lt;/h1&amp;gt;↵ &amp;lt;p&amp;gt;Cette photo est un instantané pris dans les bureaux de MCHobby.&amp;lt;/p&amp;gt;↵ &lt;br /&gt;
&amp;lt;img src=&amp;quot;data:image/jpg;base64,&amp;amp;#x2F;9j&amp;amp;#x2F;4WP6x2.../&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comme vous pourrez le constater, chaque élément du noeud est détaillé.&lt;br /&gt;
Les données sont cependant tronquées, le noeud &amp;quot;Debug&amp;quot; ne nous fourni pas la totalité du &amp;quot;PayLoad&amp;quot; mais nous avons déjà un bon aperçu des données qu'il contient.&lt;br /&gt;
&lt;br /&gt;
_msgid: est un Id unique de message&lt;br /&gt;
topic: est le sujet du mail, nous l'avons déterminé dans le premier bloc&lt;br /&gt;
payload: contient les données du message formatées par le template que nous avons créé et complété par l'image en base64.&lt;br /&gt;
&lt;br /&gt;
Les noeuds &amp;quot;Debug&amp;quot; sont pratiques. Ils nous permettent d'afficher une partie ou la totalité du flux tel qu'il est à l'endroit ou ils sont placés.&lt;br /&gt;
&lt;br /&gt;
Cela peut permettre d'identifier et de résoudre plus facilement des problèmes dans des opérations plus complexes et dans notre cas, cela nous permet de mieux comprendre comment fonctionne le noeud et comment les données sont transmises d'un bloc à l'autre.&lt;br /&gt;
&lt;br /&gt;
=== Création d'un expéditeur ===&lt;br /&gt;
&lt;br /&gt;
Nous avons construit petit à petit un message avec un sujet, mais il manque encore un détail: l'expéditeur de l'email que nous allons envoyer.&lt;br /&gt;
&lt;br /&gt;
Si vous avez bien suivi les étapes précédentes du tuto, jusqu'au noeud &amp;quot;Debug&amp;quot; et à son résultat, vous comprendrez facilement la démarche ci après pour ajouter un expéditeur dans le flux.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Rasp-Node-Red-TRAILER}}&lt;/div&gt;</summary>
		<author><name>AntoineWrt</name></author>
	</entry>
	<entry>
		<id>https://wiki.mchobby.be/index.php?title=Rasp-Node-Red-picam-mail&amp;diff=22799</id>
		<title>Rasp-Node-Red-picam-mail</title>
		<link rel="alternate" type="text/html" href="https://wiki.mchobby.be/index.php?title=Rasp-Node-Red-picam-mail&amp;diff=22799"/>
		<updated>2017-05-08T12:55:17Z</updated>

		<summary type="html">&lt;p&gt;AntoineWrt : /* Nous utiliserons les champs suivants */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Rasp-Node-Red-NAV}}&lt;br /&gt;
&lt;br /&gt;
{{traduction}}&lt;br /&gt;
&lt;br /&gt;
== PiCamRED - Envoi périodique de photos par email avec PiCam et NodeRED ==&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-01.png|900px]]&lt;br /&gt;
&lt;br /&gt;
=== Description du projet ===&lt;br /&gt;
&lt;br /&gt;
Dans ce tutoriel, nous allons réaliser des photos à l'aide de la caméra du RaspBerry Pi 2/3 et envoyer ces clichés par email de manière périodique grâce à NodeRED.&lt;br /&gt;
Nous allons donc utiliser plusieurs blocs et décrire de manière détaillée le déroulement de chaque étape de la réalisation de ce projet.&lt;br /&gt;
&lt;br /&gt;
Dans NodeRED, il est important de bien identifier la finalité de notre projet afin de connaître au préalable tous les éléments qu'il faudra créer et fournir à l'action finale (celle qui enverra un email).&lt;br /&gt;
&lt;br /&gt;
=== Quels sont les besoins du noeud email ===&lt;br /&gt;
&lt;br /&gt;
==== Composants nécessaires pour constituer un email ====&lt;br /&gt;
&lt;br /&gt;
Un email est composé des éléments suivants: &lt;br /&gt;
&lt;br /&gt;
* Un expéditeur&lt;br /&gt;
* Un destinataire&lt;br /&gt;
* Un sujet&lt;br /&gt;
* Le corps du message&lt;br /&gt;
&lt;br /&gt;
Tous ces éléments vont donc devoir être préparés afin de pouvoir construire le message à envoyer par le noeud final.&lt;br /&gt;
&lt;br /&gt;
Le noeud final aura aussi besoin d'un serveur SMTP (serveur d'envoi d'emails) et éventuellement de paramètres d'identification pour ce serveur d'envoi d'emails.&lt;br /&gt;
&lt;br /&gt;
==== Détail des besoins du noeud email ====&lt;br /&gt;
&lt;br /&gt;
La liste des éléments nécessaires s'affiche lorsque le bloc est dans la zone de travail (Schema).&lt;br /&gt;
Commençons donc par sélectionner le bloc email, et de le glisser dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
Commençons par cliquer sur le bloc email et nous maintenons le clic pour le glisser à droite dans l'espace de travail.&lt;br /&gt;
&lt;br /&gt;
(on choisit celui qui a son point de liaison à gauche, car nous voulons un bloc de sortie)&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-36.png]]&lt;br /&gt;
&lt;br /&gt;
Glissons le dans l'espace de travail, et cliquons un clic simple pour le sélectionner.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-37.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, dans la colonne à droite de cet espace de travail, nous cliquons sur info et nous pourrons découvrir les éléments nécessaires à la constitution d'un bloc email.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-38.png]]&lt;br /&gt;
&lt;br /&gt;
===== Nous utiliserons les champs suivants =====&lt;br /&gt;
&lt;br /&gt;
* msg.payload&lt;br /&gt;
Ce champ contient le corps de l'email&lt;br /&gt;
&lt;br /&gt;
* msg.topic&lt;br /&gt;
Ce champ contient le sujet de l'email&lt;br /&gt;
&lt;br /&gt;
* msg.from&lt;br /&gt;
Ce champ contient l'email de l'expéditeur &lt;br /&gt;
&lt;br /&gt;
* msg.to&lt;br /&gt;
Ce champ contient l'email du destinataire&lt;br /&gt;
&lt;br /&gt;
=== Création d'une action périodique ===&lt;br /&gt;
&lt;br /&gt;
Dans la colonne de gauche de NodeRED, se trouvent une liste de blocs à utiliser pour réaliser vos projets. Ils sont classés par &amp;quot;types&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Ainsi nous retrouvons les &amp;quot;types&amp;quot; suivants:&lt;br /&gt;
&lt;br /&gt;
* Input qui contient tous les blocs d'entrées&lt;br /&gt;
* Ouput qui contient tous les blocs de sortie&lt;br /&gt;
* Function qui contient des blocs de fonctions javascript etc...&lt;br /&gt;
* Social qui sont des blocs d'entrée ou sorties depuis ou vers les réseaux sociaux&lt;br /&gt;
* Storage qui sont des fonctions de lecture ou d'écriture de fichiers&lt;br /&gt;
* Analysis -&amp;gt;&amp;gt; Sentiment interprète du texte et détermine un score sur base d'un dictionnaire anglais, renvoie le texte avec ce score de -5 à +5, déterminant ainsi l'émotion susceptible d'être procuré par ce texte&lt;br /&gt;
* Advanced possède des outils permettant de détecter des changements dans des fichiers ou dossiers, de lire des flux RSS ou encore EXEC qui permet d'exécuter directement des commandes sous linux !&lt;br /&gt;
* Raspberry Pi contient des outils pour piloter/lire le GPIO du raspberry Pi&lt;br /&gt;
* Network qui contient un outil réseau de Ping&lt;br /&gt;
 &lt;br /&gt;
Nous allons créer une action périodique, c'est à dire paramétrer un bloc &amp;quot;INJECT&amp;quot; de manière à déclencher régulièrement une chaine d'actions que nous allons accrocher à la suite les unes après les autres.&lt;br /&gt;
Nous allons donc cliquer sur le bloc &amp;quot;Inject&amp;quot; dans la liste &amp;quot;Input&amp;quot; et maintenir ce clic pour le déplacer vers la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-02.png]]&lt;br /&gt;
&lt;br /&gt;
Nous obtiendrons donc une nouvelle instance &amp;quot;inject&amp;quot; qui portera le nom &amp;quot;Timestamp&amp;quot; (ce nom est attribué par défaut par NodeRED) comme dans la capture ci-dessous&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-03.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant double-cliquer sur celle-ci fin de l'éditer pour voir apparaitre le menu ci-dessous&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-04.png]]&lt;br /&gt;
&lt;br /&gt;
Il va falloir configurer ce bloc, mais avant tout voici une explication de celui-ci:&lt;br /&gt;
&lt;br /&gt;
==== Payload ====&lt;br /&gt;
&lt;br /&gt;
Le champs PayLoad est en fait le champ de données qui sera suivi d'un noeud à l'autre jusque à la fin de la chaine.&lt;br /&gt;
Dans ce module &amp;quot;inject&amp;quot;, nous allons donc déterminer quel type de données contiendra le &amp;quot;PayLoad&amp;quot; jusqu'à la fin de la chaine que l'on va réaliser.&lt;br /&gt;
&lt;br /&gt;
Dans notre cas, nous souhaitons construire un email, donc du contenu textuel, nous allons donc choisir &amp;quot;String&amp;quot; ce qui correspond à une chaine de caractères (du texte).&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-05.png]]&lt;br /&gt;
&lt;br /&gt;
==== Topic ====&lt;br /&gt;
&lt;br /&gt;
Le champs &amp;quot;Topic&amp;quot; est un champs de texte dans lequel nous allons mettre un sujet succinct décrivant notre chaine. &lt;br /&gt;
Dans notre cas, ce sujet fera office de sujet au mail que nous expédierons. &lt;br /&gt;
Nous allons donc être précis en un minimum de mots pour que le destinataire de l'email puisse facilement deviner le contenu de celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-06.png]]&lt;br /&gt;
&lt;br /&gt;
==== Repeat ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite choisir l'intervalle de déclenchement de notre action, sachant que nous avons le choix entre: &lt;br /&gt;
&lt;br /&gt;
* none  : pas de déclenchement périodique programmé&lt;br /&gt;
* interval : nous fixons un temps de déclenchement à partir du lancement du programme, l'action se réalisera à chaque fois que ce temps sera écoulé de manière répétée jusqu'à l'interruption manuelle du programme&lt;br /&gt;
* interval between times : nous fixons ici le déclenchement par interval, mais nous fixons aussi une fourchette d'heures et des jours pendant lesquels nous exécutons cet interval&lt;br /&gt;
* at a specific time : nous fixons une heure d'exécution, et un ou plusieurs jours d'exécution. Dans ce cas l'action n'est pas répétée en continu mais éxécutée une seule fois par jour à l'heure programmée&lt;br /&gt;
&lt;br /&gt;
Dans notre exemple, nous allons fixer un intervalle de 15 secondes pour commencer. Nous pourrons ensuite augmenter cette valeur pour éviter de recevoir trop d'emails avec des photos :D&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-07.png]]&lt;br /&gt;
&lt;br /&gt;
La case &amp;quot;inject once at start&amp;quot; permet de ne pas attendre le premier cycle avant d'exécuter une première fois l'action. Elle se lancera dès le lancement du programme, puis périodiquement selon les cycles déterminés par l'intervalle.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-08.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Le champs Name va déterminer le nom que portera le bloc dans l'espace de travail et dans les logs (si nous créons des blocs de log ensuite pour contrôler des étapes).&lt;br /&gt;
Il est important de bien établir ce nom de manière explicite, car le nom des blocs permettra de comprendre et retrouver facilement la logique du schéma construit, même si l'on a pas consulté celui-ci pendant une longue période.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-09.png]]&lt;br /&gt;
&lt;br /&gt;
=== Capture d'une image depuis la PiCam ===&lt;br /&gt;
&lt;br /&gt;
Nous allons aller à l'essentiel en ce qui concerne la capture photo en utilisant une commande simple pour prendre un cliché et renvoyer celui-ci dans le flux NodeRED grâce à un bloc permettant d'exécuter des commandes bash.&lt;br /&gt;
&lt;br /&gt;
{{ambox | text = Vous trouverez un TUTO détaillé sur la PiCam vous permettant de prendre la main, ou de la paramétrer si vous n'avez pas encore utilisé celle-ci auparavant: ....___TUTO___...}} &lt;br /&gt;
&lt;br /&gt;
Nous allons tout d'abord cliquer sur le bloc &amp;quot;Exec&amp;quot; dans la section &amp;quot;Advanced&amp;quot; de la colonne de gauche et glisser l'élément dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-10.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, cliquer sur le bloc nouvellement créé et configurer celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-11.png]]&lt;br /&gt;
&lt;br /&gt;
Le menu suivant s'affichera, et nous pourrons configurer le bloc &amp;quot;Exec&amp;quot; nouvellement créé.&lt;br /&gt;
&lt;br /&gt;
==== Command ====&lt;br /&gt;
&lt;br /&gt;
Nous allons y ajouter la commande à exécuter pour prendre une photo avec la caméra du Raspberry Pi et la stocker dans un fichier jpg dans le dossier /tmp/ de linux.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
raspistill -o /tmp/cam.jpg -w 640 -h 480&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous prenons soin de limiter la hauteur et la largeur de l'image afin de réduire son poids pour l'envoi par email.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-12.png]]&lt;br /&gt;
&lt;br /&gt;
==== +Append ====&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons décocher la case &amp;quot;msg.payload&amp;quot; si elle est cochée par défaut.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-13.png]]&lt;br /&gt;
&lt;br /&gt;
==== Extra input parameters et Timeout ====&lt;br /&gt;
&lt;br /&gt;
Nous n'aurons pas besoin de compléter ces champs pour notre projet.&lt;br /&gt;
&lt;br /&gt;
Si vous cochez le champ &amp;quot;Use spawn() instead of exec()?&amp;quot;, votre commande sera réalisée sous forme d'un processus résident et continuera de s'exécuter jusqu'à ce qu'elle se termine par elle-même (sauf si elle ne se termine jamais).&lt;br /&gt;
Cette solution implique que le programme n'attendra pas que cette commande soit réalisée pour passer aux étapes suivantes. &lt;br /&gt;
Si la suite de l'exécution de votre flux est susceptible d'utiliser le résultat de cette commande, nous vous déconseillons d'utiliser cette option sous peine de provoquer des erreurs à la suite du traitement du flux.&lt;br /&gt;
&lt;br /&gt;
Le champ &amp;quot;Timeout&amp;quot; permet de définir un temps d'attente maximum avant de mettre un terme à l'exécution de la commande. &lt;br /&gt;
Cela permet de débloquer la situation si la commande exécutée prends un temps anormalement long à s'exécuter.&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite compléter le champs nom, celui-ci sera utilisé pour nommer le bloc dans le &amp;quot;schéma&amp;quot;, mais aussi de nommer les logs comme pour le bloc &amp;quot;Exec&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-14.png]]&lt;br /&gt;
&lt;br /&gt;
=== Encodage de l'image en base64 ===&lt;br /&gt;
&lt;br /&gt;
Nous allons convertir la photo prise juste avant en utilisant une commande de conversion en base64.&lt;br /&gt;
Cela facilitera son injection dans un template HTML que nous allons créer ensuite pour construire un email.&lt;br /&gt;
&lt;br /&gt;
Nous allons tout d'abord cliquer sur le bloc &amp;quot;Exec&amp;quot; dans la section &amp;quot;Advanced&amp;quot; de la colonne de gauche et glisser l'élément dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-10.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, cliquer sur le bloc nouvellement créé et configurer celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-11.png]]&lt;br /&gt;
&lt;br /&gt;
Le menu suivant s'affichera, et nous pourrons configurer le bloc &amp;quot;Exec&amp;quot; nouvellement créé.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-15.png]]&lt;br /&gt;
&lt;br /&gt;
==== Command ====&lt;br /&gt;
&lt;br /&gt;
Nous allons y ajouter la commande à exécuter pour encoder en base 64 la photo prise précédemment avec la caméra du Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
base64 -i &amp;quot;/tmp/cam.jpg&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-16.png]]&lt;br /&gt;
&lt;br /&gt;
==== +Append ====&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons cocher la case &amp;quot;msg.payload&amp;quot; si elle n'est pas cochée par défaut pour que le résultat soit directement renvoyé par cette commande dans le &amp;quot;PayLoad&amp;quot; du flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-17.png]]&lt;br /&gt;
&lt;br /&gt;
==== Extra input parameters et Timeout ====&lt;br /&gt;
&lt;br /&gt;
Nous n'aurons pas besoin de compléter ces champs pour notre projet.&lt;br /&gt;
&lt;br /&gt;
Si vous cochez le champ &amp;quot;Use spawn() instead of exec()?&amp;quot;, votre commande sera réalisée sous forme d'un processus résident et continuera de s'exécuter jusqu'à ce qu'elle se termine par elle-même (sauf si elle ne se termine jamais).&lt;br /&gt;
Cette solution implique que le programme n'attendra pas que cette commande soit réalisée pour passer aux étapes suivantes. &lt;br /&gt;
Si la suite de l'exécution de votre flux est susceptible d'utiliser le résultat de cette commande, nous vous déconseillons d'utiliser cette option sous peine de provoquer des erreurs à la suite du traitement du flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-18.png]]&lt;br /&gt;
&lt;br /&gt;
Le champ &amp;quot;Timeout&amp;quot; permet de définir un temps d'attente maximum avant de mettre un terme à l'exécution de la commande. &lt;br /&gt;
Cela permet de débloquer la situation si la commande exécutée prends un temps anormalement long à s'exécuter.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-19.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite compléter le champs nom, celui-ci sera utilisé pour nommer le bloc dans le &amp;quot;schéma&amp;quot;, mais aussi de nommer les logs comme pour le bloc &amp;quot;Exec&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-20.png]]&lt;br /&gt;
&lt;br /&gt;
=== Création d'un email au format HTML ===&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant créer un template d'email au format HTML afin de mettre en forme le message que nous enverrons ensuite.&lt;br /&gt;
Nous allons pour cela utiliser un bloc &amp;quot;Template&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-21.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons attribuer un nom au bloc afin de l'identifier plus facilement dans le flux.&lt;br /&gt;
Nous allons donc le nommer &amp;quot;Contenu du mail&amp;quot; puisque nous créons le contenu du mail que nous enverrons ensuite.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-22.png]]&lt;br /&gt;
&lt;br /&gt;
==== Set property ====&lt;br /&gt;
&lt;br /&gt;
La propriété que nous souhaitons créer dans le flux est le &amp;quot;PayLoad&amp;quot;.&lt;br /&gt;
Ce PayLoad existe déjà, il contient pour le moment l'image au format &amp;quot;Base64&amp;quot; précédemment encodé.&lt;br /&gt;
Cela n'est pas un problème, après notre noeud (notre bloc), le PayLoad sera intégralement remplacé par le template que nous sommes en train de créer.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-23.png]]&lt;br /&gt;
&lt;br /&gt;
==== Template ====&lt;br /&gt;
&lt;br /&gt;
Dans ce template, nous allons créer une structure HTML de base minimum afin que la structure soit interprétée par la majorité des clients/webmail.&lt;br /&gt;
Vous pouvez la personnaliser à votre guise si vous avez les connaissances en HTML.&lt;br /&gt;
&lt;br /&gt;
Voici la structure de base pour notre projet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
    &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;meta charset=&amp;quot;utf8&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/head&amp;gt;&lt;br /&gt;
    &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Projet Photo par email&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;img src=&amp;quot;data:image/jpg;base64,{{payload}}&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pourrez remarquer que nous intégrons l'image en appelant le PayLoad à 'intérieur du code HTML dans la balise &amp;lt;img&amp;gt;.&lt;br /&gt;
C'est le PayLoad créé précédemment par le bloc &amp;quot;Exec&amp;quot; qui est récupéré à ce moment précis.&lt;br /&gt;
Ce PayLoad est remplacé dans le flux par le PayLoad complet avec notre template dans le flux par notre bloc Template.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-24.png]]&lt;br /&gt;
&lt;br /&gt;
=== Création d'un bloc (noeud) &amp;quot;Debug&amp;quot;  ===&lt;br /&gt;
&lt;br /&gt;
Nous allons ajouter la notion d'expéditeur dans le flux que nous avons créé à travers nos blocs (noeuds).&lt;br /&gt;
Pour rappel, actuellement nous avons deux propriétés avec des données dans notre flux. &lt;br /&gt;
Si nous voulons observer ce que nous avons créé jusque là, nous pouvons faire appel à un bloc &amp;quot;Debug&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Création du bloc &amp;quot;Debug&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Comme pour les blocs précédents, nous allons glisser/déposer un bloc débug dans l'espace de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-25.png]]&lt;br /&gt;
&lt;br /&gt;
Celui-ci s'appelle msg/payload par défaut&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-26.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons double-cliquer sur ce bloc pour le configurer.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-27.png]]&lt;br /&gt;
&lt;br /&gt;
==== Output ====&lt;br /&gt;
&lt;br /&gt;
Dans ce champs, nous allons choisir la partie du flux que nous souhaitons afficher, ou nous allons sélectionner le flux entier.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-28.png]]&lt;br /&gt;
&lt;br /&gt;
Sélectionner le flux entier, nous affichera le flux complet incluant toutes ses propriétés.&lt;br /&gt;
&lt;br /&gt;
 [[fichier:Rasp-Node-Red-picam-mail-29.png]]&lt;br /&gt;
&lt;br /&gt;
==== To =====&lt;br /&gt;
&lt;br /&gt;
La propriété &amp;quot;To&amp;quot; nous permet de choisir ou nous souhaitons afficher les données que nous récupérons. &lt;br /&gt;
Soit nous les affichons uniquement dans l'onglet &amp;quot;Debug&amp;quot; à droite de l'espace de travail, soit nous l'affichons dans cet onglet mais aussi dans la console de NodeJS.&lt;br /&gt;
Dans notre cas, nous allons nous contenter d'afficher nos éléments dans l'onglet de &amp;quot;Debug&amp;quot; à droite de notre espace de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-30.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Le champs Name nous servira à identifier quel bloc de &amp;quot;Debug&amp;quot; affiche les données en console ou dans l'onglet &amp;quot;Debug&amp;quot;. &lt;br /&gt;
Il faut donc le nommer efficacement pour bien attacher et comprendre les données que nous récupérons, surtout si nous en plaçons plusieurs dans le flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-31.png]]&lt;br /&gt;
&lt;br /&gt;
==== Exploitation et compréhension des données récupérées ====&lt;br /&gt;
&lt;br /&gt;
Nous avons placé notre bloc &amp;quot;Debug&amp;quot; à la suite du flux en dernière position. &lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-32.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons donc déployer le programme en cliquant sur &amp;quot;Deploy&amp;quot; en haut à droite de la page. &lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-33.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons exécuter manuellement le programme en cliquant sur le bouton se trouvant en début de chaîne:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-34.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite afficher l'onglet &amp;quot;Debug&amp;quot; sur le coté droit de la page et analyser les données récupérées:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-35.png]]&lt;br /&gt;
&lt;br /&gt;
==== Analyse des données récupérées dans l'onglet &amp;quot;Debug&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
08/05/2017 à 12:54:31 node: FORMATAGE&lt;br /&gt;
MCHobby - Photo bureau : msg : Object&lt;br /&gt;
object&lt;br /&gt;
_msgid: &amp;quot;81efe35c.3208d&amp;quot;&lt;br /&gt;
topic: &amp;quot;MCHobby - Photo bureau&amp;quot;&lt;br /&gt;
payload: &amp;quot;&amp;lt;html&amp;gt;↵ &amp;lt;head&amp;gt;↵ &amp;lt;meta charset=&amp;quot;utf8&amp;quot;/&amp;gt;↵ ↵ &amp;lt;/head&amp;gt;↵ &amp;lt;body&amp;gt;↵ &amp;lt;h1&amp;gt;MCHobby - Photo bureau&amp;lt;/h1&amp;gt;↵ &amp;lt;p&amp;gt;Cette photo est un instantané pris dans les bureaux de MCHobby.&amp;lt;/p&amp;gt;↵ &lt;br /&gt;
&amp;lt;img src=&amp;quot;data:image/jpg;base64,&amp;amp;#x2F;9j&amp;amp;#x2F;4WP6x2.../&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comme vous pourrez le constater, chaque élément du noeud est détaillé.&lt;br /&gt;
Les données sont cependant tronquées, le noeud &amp;quot;Debug&amp;quot; ne nous fourni pas la totalité du &amp;quot;PayLoad&amp;quot; mais nous avons déjà un bon aperçu des données qu'il contient.&lt;br /&gt;
&lt;br /&gt;
_msgid: est un Id unique de message&lt;br /&gt;
topic: est le sujet du mail, nous l'avons déterminé dans le premier bloc&lt;br /&gt;
payload: contient les données du message formatées par le template que nous avons créé et complété par l'image en base64.&lt;br /&gt;
&lt;br /&gt;
Les noeuds &amp;quot;Debug&amp;quot; sont pratiques. Ils nous permettent d'afficher une partie ou la totalité du flux tel qu'il est à l'endroit ou ils sont placés.&lt;br /&gt;
&lt;br /&gt;
Cela peut permettre d'identifier et de résoudre plus facilement des problèmes dans des opérations plus complexes et dans notre cas, cela nous permet de mieux comprendre comment fonctionne le noeud et comment les données sont transmises d'un bloc à l'autre.&lt;br /&gt;
&lt;br /&gt;
=== Création d'un expéditeur ===&lt;br /&gt;
&lt;br /&gt;
Nous avons construit petit à petit un message avec un sujet, mais il manque encore un détail: l'expéditeur de l'email que nous allons envoyer.&lt;br /&gt;
&lt;br /&gt;
Si vous avez bien suivi les étapes précédentes du tuto, jusqu'au noeud &amp;quot;Debug&amp;quot; et à son résultat, vous comprendrez facilement la démarche ci après pour ajouter un expéditeur dans le flux.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Rasp-Node-Red-TRAILER}}&lt;/div&gt;</summary>
		<author><name>AntoineWrt</name></author>
	</entry>
	<entry>
		<id>https://wiki.mchobby.be/index.php?title=Rasp-Node-Red-picam-mail&amp;diff=22798</id>
		<title>Rasp-Node-Red-picam-mail</title>
		<link rel="alternate" type="text/html" href="https://wiki.mchobby.be/index.php?title=Rasp-Node-Red-picam-mail&amp;diff=22798"/>
		<updated>2017-05-08T12:52:28Z</updated>

		<summary type="html">&lt;p&gt;AntoineWrt : /* Composants nécessaires pour constituer un email */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Rasp-Node-Red-NAV}}&lt;br /&gt;
&lt;br /&gt;
{{traduction}}&lt;br /&gt;
&lt;br /&gt;
== PiCamRED - Envoi périodique de photos par email avec PiCam et NodeRED ==&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-01.png|900px]]&lt;br /&gt;
&lt;br /&gt;
=== Description du projet ===&lt;br /&gt;
&lt;br /&gt;
Dans ce tutoriel, nous allons réaliser des photos à l'aide de la caméra du RaspBerry Pi 2/3 et envoyer ces clichés par email de manière périodique grâce à NodeRED.&lt;br /&gt;
Nous allons donc utiliser plusieurs blocs et décrire de manière détaillée le déroulement de chaque étape de la réalisation de ce projet.&lt;br /&gt;
&lt;br /&gt;
Dans NodeRED, il est important de bien identifier la finalité de notre projet afin de connaître au préalable tous les éléments qu'il faudra créer et fournir à l'action finale (celle qui enverra un email).&lt;br /&gt;
&lt;br /&gt;
=== Quels sont les besoins du noeud email ===&lt;br /&gt;
&lt;br /&gt;
==== Composants nécessaires pour constituer un email ====&lt;br /&gt;
&lt;br /&gt;
Un email est composé des éléments suivants: &lt;br /&gt;
&lt;br /&gt;
* Un expéditeur&lt;br /&gt;
* Un destinataire&lt;br /&gt;
* Un sujet&lt;br /&gt;
* Le corps du message&lt;br /&gt;
&lt;br /&gt;
Tous ces éléments vont donc devoir être préparés afin de pouvoir construire le message à envoyer par le noeud final.&lt;br /&gt;
&lt;br /&gt;
Le noeud final aura aussi besoin d'un serveur SMTP (serveur d'envoi d'emails) et éventuellement de paramètres d'identification pour ce serveur d'envoi d'emails.&lt;br /&gt;
&lt;br /&gt;
==== Détail des besoins du noeud email ====&lt;br /&gt;
&lt;br /&gt;
La liste des éléments nécessaires s'affiche lorsque le bloc est dans la zone de travail (Schema).&lt;br /&gt;
Commençons donc par sélectionner le bloc email, et de le glisser dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
Commençons par cliquer sur le bloc email et nous maintenons le clic pour le glisser à droite dans l'espace de travail.&lt;br /&gt;
&lt;br /&gt;
(on choisit celui qui a son point de liaison à gauche, car nous voulons un bloc de sortie)&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-36.png]]&lt;br /&gt;
&lt;br /&gt;
Glissons le dans l'espace de travail, et cliquons un clic simple pour le sélectionner.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-37.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, dans la colonne à droite de cet espace de travail, nous cliquons sur info et nous pourrons découvrir les éléments nécessaires à la constitution d'un bloc email.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-38.png]]&lt;br /&gt;
&lt;br /&gt;
===== Nous utiliserons les champs suivants =====&lt;br /&gt;
&lt;br /&gt;
=== Création d'une action périodique ===&lt;br /&gt;
&lt;br /&gt;
Dans la colonne de gauche de NodeRED, se trouvent une liste de blocs à utiliser pour réaliser vos projets. Ils sont classés par &amp;quot;types&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Ainsi nous retrouvons les &amp;quot;types&amp;quot; suivants:&lt;br /&gt;
&lt;br /&gt;
* Input qui contient tous les blocs d'entrées&lt;br /&gt;
* Ouput qui contient tous les blocs de sortie&lt;br /&gt;
* Function qui contient des blocs de fonctions javascript etc...&lt;br /&gt;
* Social qui sont des blocs d'entrée ou sorties depuis ou vers les réseaux sociaux&lt;br /&gt;
* Storage qui sont des fonctions de lecture ou d'écriture de fichiers&lt;br /&gt;
* Analysis -&amp;gt;&amp;gt; Sentiment interprète du texte et détermine un score sur base d'un dictionnaire anglais, renvoie le texte avec ce score de -5 à +5, déterminant ainsi l'émotion susceptible d'être procuré par ce texte&lt;br /&gt;
* Advanced possède des outils permettant de détecter des changements dans des fichiers ou dossiers, de lire des flux RSS ou encore EXEC qui permet d'exécuter directement des commandes sous linux !&lt;br /&gt;
* Raspberry Pi contient des outils pour piloter/lire le GPIO du raspberry Pi&lt;br /&gt;
* Network qui contient un outil réseau de Ping&lt;br /&gt;
 &lt;br /&gt;
Nous allons créer une action périodique, c'est à dire paramétrer un bloc &amp;quot;INJECT&amp;quot; de manière à déclencher régulièrement une chaine d'actions que nous allons accrocher à la suite les unes après les autres.&lt;br /&gt;
Nous allons donc cliquer sur le bloc &amp;quot;Inject&amp;quot; dans la liste &amp;quot;Input&amp;quot; et maintenir ce clic pour le déplacer vers la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-02.png]]&lt;br /&gt;
&lt;br /&gt;
Nous obtiendrons donc une nouvelle instance &amp;quot;inject&amp;quot; qui portera le nom &amp;quot;Timestamp&amp;quot; (ce nom est attribué par défaut par NodeRED) comme dans la capture ci-dessous&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-03.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant double-cliquer sur celle-ci fin de l'éditer pour voir apparaitre le menu ci-dessous&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-04.png]]&lt;br /&gt;
&lt;br /&gt;
Il va falloir configurer ce bloc, mais avant tout voici une explication de celui-ci:&lt;br /&gt;
&lt;br /&gt;
==== Payload ====&lt;br /&gt;
&lt;br /&gt;
Le champs PayLoad est en fait le champ de données qui sera suivi d'un noeud à l'autre jusque à la fin de la chaine.&lt;br /&gt;
Dans ce module &amp;quot;inject&amp;quot;, nous allons donc déterminer quel type de données contiendra le &amp;quot;PayLoad&amp;quot; jusqu'à la fin de la chaine que l'on va réaliser.&lt;br /&gt;
&lt;br /&gt;
Dans notre cas, nous souhaitons construire un email, donc du contenu textuel, nous allons donc choisir &amp;quot;String&amp;quot; ce qui correspond à une chaine de caractères (du texte).&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-05.png]]&lt;br /&gt;
&lt;br /&gt;
==== Topic ====&lt;br /&gt;
&lt;br /&gt;
Le champs &amp;quot;Topic&amp;quot; est un champs de texte dans lequel nous allons mettre un sujet succinct décrivant notre chaine. &lt;br /&gt;
Dans notre cas, ce sujet fera office de sujet au mail que nous expédierons. &lt;br /&gt;
Nous allons donc être précis en un minimum de mots pour que le destinataire de l'email puisse facilement deviner le contenu de celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-06.png]]&lt;br /&gt;
&lt;br /&gt;
==== Repeat ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite choisir l'intervalle de déclenchement de notre action, sachant que nous avons le choix entre: &lt;br /&gt;
&lt;br /&gt;
* none  : pas de déclenchement périodique programmé&lt;br /&gt;
* interval : nous fixons un temps de déclenchement à partir du lancement du programme, l'action se réalisera à chaque fois que ce temps sera écoulé de manière répétée jusqu'à l'interruption manuelle du programme&lt;br /&gt;
* interval between times : nous fixons ici le déclenchement par interval, mais nous fixons aussi une fourchette d'heures et des jours pendant lesquels nous exécutons cet interval&lt;br /&gt;
* at a specific time : nous fixons une heure d'exécution, et un ou plusieurs jours d'exécution. Dans ce cas l'action n'est pas répétée en continu mais éxécutée une seule fois par jour à l'heure programmée&lt;br /&gt;
&lt;br /&gt;
Dans notre exemple, nous allons fixer un intervalle de 15 secondes pour commencer. Nous pourrons ensuite augmenter cette valeur pour éviter de recevoir trop d'emails avec des photos :D&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-07.png]]&lt;br /&gt;
&lt;br /&gt;
La case &amp;quot;inject once at start&amp;quot; permet de ne pas attendre le premier cycle avant d'exécuter une première fois l'action. Elle se lancera dès le lancement du programme, puis périodiquement selon les cycles déterminés par l'intervalle.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-08.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Le champs Name va déterminer le nom que portera le bloc dans l'espace de travail et dans les logs (si nous créons des blocs de log ensuite pour contrôler des étapes).&lt;br /&gt;
Il est important de bien établir ce nom de manière explicite, car le nom des blocs permettra de comprendre et retrouver facilement la logique du schéma construit, même si l'on a pas consulté celui-ci pendant une longue période.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-09.png]]&lt;br /&gt;
&lt;br /&gt;
=== Capture d'une image depuis la PiCam ===&lt;br /&gt;
&lt;br /&gt;
Nous allons aller à l'essentiel en ce qui concerne la capture photo en utilisant une commande simple pour prendre un cliché et renvoyer celui-ci dans le flux NodeRED grâce à un bloc permettant d'exécuter des commandes bash.&lt;br /&gt;
&lt;br /&gt;
{{ambox | text = Vous trouverez un TUTO détaillé sur la PiCam vous permettant de prendre la main, ou de la paramétrer si vous n'avez pas encore utilisé celle-ci auparavant: ....___TUTO___...}} &lt;br /&gt;
&lt;br /&gt;
Nous allons tout d'abord cliquer sur le bloc &amp;quot;Exec&amp;quot; dans la section &amp;quot;Advanced&amp;quot; de la colonne de gauche et glisser l'élément dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-10.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, cliquer sur le bloc nouvellement créé et configurer celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-11.png]]&lt;br /&gt;
&lt;br /&gt;
Le menu suivant s'affichera, et nous pourrons configurer le bloc &amp;quot;Exec&amp;quot; nouvellement créé.&lt;br /&gt;
&lt;br /&gt;
==== Command ====&lt;br /&gt;
&lt;br /&gt;
Nous allons y ajouter la commande à exécuter pour prendre une photo avec la caméra du Raspberry Pi et la stocker dans un fichier jpg dans le dossier /tmp/ de linux.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
raspistill -o /tmp/cam.jpg -w 640 -h 480&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous prenons soin de limiter la hauteur et la largeur de l'image afin de réduire son poids pour l'envoi par email.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-12.png]]&lt;br /&gt;
&lt;br /&gt;
==== +Append ====&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons décocher la case &amp;quot;msg.payload&amp;quot; si elle est cochée par défaut.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-13.png]]&lt;br /&gt;
&lt;br /&gt;
==== Extra input parameters et Timeout ====&lt;br /&gt;
&lt;br /&gt;
Nous n'aurons pas besoin de compléter ces champs pour notre projet.&lt;br /&gt;
&lt;br /&gt;
Si vous cochez le champ &amp;quot;Use spawn() instead of exec()?&amp;quot;, votre commande sera réalisée sous forme d'un processus résident et continuera de s'exécuter jusqu'à ce qu'elle se termine par elle-même (sauf si elle ne se termine jamais).&lt;br /&gt;
Cette solution implique que le programme n'attendra pas que cette commande soit réalisée pour passer aux étapes suivantes. &lt;br /&gt;
Si la suite de l'exécution de votre flux est susceptible d'utiliser le résultat de cette commande, nous vous déconseillons d'utiliser cette option sous peine de provoquer des erreurs à la suite du traitement du flux.&lt;br /&gt;
&lt;br /&gt;
Le champ &amp;quot;Timeout&amp;quot; permet de définir un temps d'attente maximum avant de mettre un terme à l'exécution de la commande. &lt;br /&gt;
Cela permet de débloquer la situation si la commande exécutée prends un temps anormalement long à s'exécuter.&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite compléter le champs nom, celui-ci sera utilisé pour nommer le bloc dans le &amp;quot;schéma&amp;quot;, mais aussi de nommer les logs comme pour le bloc &amp;quot;Exec&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-14.png]]&lt;br /&gt;
&lt;br /&gt;
=== Encodage de l'image en base64 ===&lt;br /&gt;
&lt;br /&gt;
Nous allons convertir la photo prise juste avant en utilisant une commande de conversion en base64.&lt;br /&gt;
Cela facilitera son injection dans un template HTML que nous allons créer ensuite pour construire un email.&lt;br /&gt;
&lt;br /&gt;
Nous allons tout d'abord cliquer sur le bloc &amp;quot;Exec&amp;quot; dans la section &amp;quot;Advanced&amp;quot; de la colonne de gauche et glisser l'élément dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-10.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, cliquer sur le bloc nouvellement créé et configurer celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-11.png]]&lt;br /&gt;
&lt;br /&gt;
Le menu suivant s'affichera, et nous pourrons configurer le bloc &amp;quot;Exec&amp;quot; nouvellement créé.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-15.png]]&lt;br /&gt;
&lt;br /&gt;
==== Command ====&lt;br /&gt;
&lt;br /&gt;
Nous allons y ajouter la commande à exécuter pour encoder en base 64 la photo prise précédemment avec la caméra du Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
base64 -i &amp;quot;/tmp/cam.jpg&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-16.png]]&lt;br /&gt;
&lt;br /&gt;
==== +Append ====&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons cocher la case &amp;quot;msg.payload&amp;quot; si elle n'est pas cochée par défaut pour que le résultat soit directement renvoyé par cette commande dans le &amp;quot;PayLoad&amp;quot; du flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-17.png]]&lt;br /&gt;
&lt;br /&gt;
==== Extra input parameters et Timeout ====&lt;br /&gt;
&lt;br /&gt;
Nous n'aurons pas besoin de compléter ces champs pour notre projet.&lt;br /&gt;
&lt;br /&gt;
Si vous cochez le champ &amp;quot;Use spawn() instead of exec()?&amp;quot;, votre commande sera réalisée sous forme d'un processus résident et continuera de s'exécuter jusqu'à ce qu'elle se termine par elle-même (sauf si elle ne se termine jamais).&lt;br /&gt;
Cette solution implique que le programme n'attendra pas que cette commande soit réalisée pour passer aux étapes suivantes. &lt;br /&gt;
Si la suite de l'exécution de votre flux est susceptible d'utiliser le résultat de cette commande, nous vous déconseillons d'utiliser cette option sous peine de provoquer des erreurs à la suite du traitement du flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-18.png]]&lt;br /&gt;
&lt;br /&gt;
Le champ &amp;quot;Timeout&amp;quot; permet de définir un temps d'attente maximum avant de mettre un terme à l'exécution de la commande. &lt;br /&gt;
Cela permet de débloquer la situation si la commande exécutée prends un temps anormalement long à s'exécuter.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-19.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite compléter le champs nom, celui-ci sera utilisé pour nommer le bloc dans le &amp;quot;schéma&amp;quot;, mais aussi de nommer les logs comme pour le bloc &amp;quot;Exec&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-20.png]]&lt;br /&gt;
&lt;br /&gt;
=== Création d'un email au format HTML ===&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant créer un template d'email au format HTML afin de mettre en forme le message que nous enverrons ensuite.&lt;br /&gt;
Nous allons pour cela utiliser un bloc &amp;quot;Template&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-21.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons attribuer un nom au bloc afin de l'identifier plus facilement dans le flux.&lt;br /&gt;
Nous allons donc le nommer &amp;quot;Contenu du mail&amp;quot; puisque nous créons le contenu du mail que nous enverrons ensuite.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-22.png]]&lt;br /&gt;
&lt;br /&gt;
==== Set property ====&lt;br /&gt;
&lt;br /&gt;
La propriété que nous souhaitons créer dans le flux est le &amp;quot;PayLoad&amp;quot;.&lt;br /&gt;
Ce PayLoad existe déjà, il contient pour le moment l'image au format &amp;quot;Base64&amp;quot; précédemment encodé.&lt;br /&gt;
Cela n'est pas un problème, après notre noeud (notre bloc), le PayLoad sera intégralement remplacé par le template que nous sommes en train de créer.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-23.png]]&lt;br /&gt;
&lt;br /&gt;
==== Template ====&lt;br /&gt;
&lt;br /&gt;
Dans ce template, nous allons créer une structure HTML de base minimum afin que la structure soit interprétée par la majorité des clients/webmail.&lt;br /&gt;
Vous pouvez la personnaliser à votre guise si vous avez les connaissances en HTML.&lt;br /&gt;
&lt;br /&gt;
Voici la structure de base pour notre projet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
    &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;meta charset=&amp;quot;utf8&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/head&amp;gt;&lt;br /&gt;
    &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Projet Photo par email&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;img src=&amp;quot;data:image/jpg;base64,{{payload}}&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pourrez remarquer que nous intégrons l'image en appelant le PayLoad à 'intérieur du code HTML dans la balise &amp;lt;img&amp;gt;.&lt;br /&gt;
C'est le PayLoad créé précédemment par le bloc &amp;quot;Exec&amp;quot; qui est récupéré à ce moment précis.&lt;br /&gt;
Ce PayLoad est remplacé dans le flux par le PayLoad complet avec notre template dans le flux par notre bloc Template.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-24.png]]&lt;br /&gt;
&lt;br /&gt;
=== Création d'un bloc (noeud) &amp;quot;Debug&amp;quot;  ===&lt;br /&gt;
&lt;br /&gt;
Nous allons ajouter la notion d'expéditeur dans le flux que nous avons créé à travers nos blocs (noeuds).&lt;br /&gt;
Pour rappel, actuellement nous avons deux propriétés avec des données dans notre flux. &lt;br /&gt;
Si nous voulons observer ce que nous avons créé jusque là, nous pouvons faire appel à un bloc &amp;quot;Debug&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Création du bloc &amp;quot;Debug&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Comme pour les blocs précédents, nous allons glisser/déposer un bloc débug dans l'espace de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-25.png]]&lt;br /&gt;
&lt;br /&gt;
Celui-ci s'appelle msg/payload par défaut&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-26.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons double-cliquer sur ce bloc pour le configurer.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-27.png]]&lt;br /&gt;
&lt;br /&gt;
==== Output ====&lt;br /&gt;
&lt;br /&gt;
Dans ce champs, nous allons choisir la partie du flux que nous souhaitons afficher, ou nous allons sélectionner le flux entier.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-28.png]]&lt;br /&gt;
&lt;br /&gt;
Sélectionner le flux entier, nous affichera le flux complet incluant toutes ses propriétés.&lt;br /&gt;
&lt;br /&gt;
 [[fichier:Rasp-Node-Red-picam-mail-29.png]]&lt;br /&gt;
&lt;br /&gt;
==== To =====&lt;br /&gt;
&lt;br /&gt;
La propriété &amp;quot;To&amp;quot; nous permet de choisir ou nous souhaitons afficher les données que nous récupérons. &lt;br /&gt;
Soit nous les affichons uniquement dans l'onglet &amp;quot;Debug&amp;quot; à droite de l'espace de travail, soit nous l'affichons dans cet onglet mais aussi dans la console de NodeJS.&lt;br /&gt;
Dans notre cas, nous allons nous contenter d'afficher nos éléments dans l'onglet de &amp;quot;Debug&amp;quot; à droite de notre espace de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-30.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Le champs Name nous servira à identifier quel bloc de &amp;quot;Debug&amp;quot; affiche les données en console ou dans l'onglet &amp;quot;Debug&amp;quot;. &lt;br /&gt;
Il faut donc le nommer efficacement pour bien attacher et comprendre les données que nous récupérons, surtout si nous en plaçons plusieurs dans le flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-31.png]]&lt;br /&gt;
&lt;br /&gt;
==== Exploitation et compréhension des données récupérées ====&lt;br /&gt;
&lt;br /&gt;
Nous avons placé notre bloc &amp;quot;Debug&amp;quot; à la suite du flux en dernière position. &lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-32.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons donc déployer le programme en cliquant sur &amp;quot;Deploy&amp;quot; en haut à droite de la page. &lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-33.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons exécuter manuellement le programme en cliquant sur le bouton se trouvant en début de chaîne:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-34.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite afficher l'onglet &amp;quot;Debug&amp;quot; sur le coté droit de la page et analyser les données récupérées:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-35.png]]&lt;br /&gt;
&lt;br /&gt;
==== Analyse des données récupérées dans l'onglet &amp;quot;Debug&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
08/05/2017 à 12:54:31 node: FORMATAGE&lt;br /&gt;
MCHobby - Photo bureau : msg : Object&lt;br /&gt;
object&lt;br /&gt;
_msgid: &amp;quot;81efe35c.3208d&amp;quot;&lt;br /&gt;
topic: &amp;quot;MCHobby - Photo bureau&amp;quot;&lt;br /&gt;
payload: &amp;quot;&amp;lt;html&amp;gt;↵ &amp;lt;head&amp;gt;↵ &amp;lt;meta charset=&amp;quot;utf8&amp;quot;/&amp;gt;↵ ↵ &amp;lt;/head&amp;gt;↵ &amp;lt;body&amp;gt;↵ &amp;lt;h1&amp;gt;MCHobby - Photo bureau&amp;lt;/h1&amp;gt;↵ &amp;lt;p&amp;gt;Cette photo est un instantané pris dans les bureaux de MCHobby.&amp;lt;/p&amp;gt;↵ &lt;br /&gt;
&amp;lt;img src=&amp;quot;data:image/jpg;base64,&amp;amp;#x2F;9j&amp;amp;#x2F;4WP6x2.../&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comme vous pourrez le constater, chaque élément du noeud est détaillé.&lt;br /&gt;
Les données sont cependant tronquées, le noeud &amp;quot;Debug&amp;quot; ne nous fourni pas la totalité du &amp;quot;PayLoad&amp;quot; mais nous avons déjà un bon aperçu des données qu'il contient.&lt;br /&gt;
&lt;br /&gt;
_msgid: est un Id unique de message&lt;br /&gt;
topic: est le sujet du mail, nous l'avons déterminé dans le premier bloc&lt;br /&gt;
payload: contient les données du message formatées par le template que nous avons créé et complété par l'image en base64.&lt;br /&gt;
&lt;br /&gt;
Les noeuds &amp;quot;Debug&amp;quot; sont pratiques. Ils nous permettent d'afficher une partie ou la totalité du flux tel qu'il est à l'endroit ou ils sont placés.&lt;br /&gt;
&lt;br /&gt;
Cela peut permettre d'identifier et de résoudre plus facilement des problèmes dans des opérations plus complexes et dans notre cas, cela nous permet de mieux comprendre comment fonctionne le noeud et comment les données sont transmises d'un bloc à l'autre.&lt;br /&gt;
&lt;br /&gt;
=== Création d'un expéditeur ===&lt;br /&gt;
&lt;br /&gt;
Nous avons construit petit à petit un message avec un sujet, mais il manque encore un détail: l'expéditeur de l'email que nous allons envoyer.&lt;br /&gt;
&lt;br /&gt;
Si vous avez bien suivi les étapes précédentes du tuto, jusqu'au noeud &amp;quot;Debug&amp;quot; et à son résultat, vous comprendrez facilement la démarche ci après pour ajouter un expéditeur dans le flux.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Rasp-Node-Red-TRAILER}}&lt;/div&gt;</summary>
		<author><name>AntoineWrt</name></author>
	</entry>
	<entry>
		<id>https://wiki.mchobby.be/index.php?title=Rasp-Node-Red-picam-mail&amp;diff=22797</id>
		<title>Rasp-Node-Red-picam-mail</title>
		<link rel="alternate" type="text/html" href="https://wiki.mchobby.be/index.php?title=Rasp-Node-Red-picam-mail&amp;diff=22797"/>
		<updated>2017-05-08T12:51:46Z</updated>

		<summary type="html">&lt;p&gt;AntoineWrt : /* Détail des besoins du noeud email */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Rasp-Node-Red-NAV}}&lt;br /&gt;
&lt;br /&gt;
{{traduction}}&lt;br /&gt;
&lt;br /&gt;
== PiCamRED - Envoi périodique de photos par email avec PiCam et NodeRED ==&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-01.png|900px]]&lt;br /&gt;
&lt;br /&gt;
=== Description du projet ===&lt;br /&gt;
&lt;br /&gt;
Dans ce tutoriel, nous allons réaliser des photos à l'aide de la caméra du RaspBerry Pi 2/3 et envoyer ces clichés par email de manière périodique grâce à NodeRED.&lt;br /&gt;
Nous allons donc utiliser plusieurs blocs et décrire de manière détaillée le déroulement de chaque étape de la réalisation de ce projet.&lt;br /&gt;
&lt;br /&gt;
Dans NodeRED, il est important de bien identifier la finalité de notre projet afin de connaître au préalable tous les éléments qu'il faudra créer et fournir à l'action finale (celle qui enverra un email).&lt;br /&gt;
&lt;br /&gt;
=== Quels sont les besoins du noeud email ===&lt;br /&gt;
&lt;br /&gt;
==== Composants nécessaires pour constituer un email ====&lt;br /&gt;
&lt;br /&gt;
Un email est composé des éléments suivants: &lt;br /&gt;
&lt;br /&gt;
 * Un expéditeur&lt;br /&gt;
 * Un destinataire&lt;br /&gt;
 * Un sujet&lt;br /&gt;
 * Le corps du message&lt;br /&gt;
&lt;br /&gt;
Tous ces éléments vont donc devoir être préparés afin de pouvoir construire le message à envoyer par le noeud final.&lt;br /&gt;
&lt;br /&gt;
Le noeud final aura aussi besoin d'un serveur SMTP (serveur d'envoi d'emails) et éventuellement de paramètres d'identification pour ce serveur d'envoi d'emails.&lt;br /&gt;
&lt;br /&gt;
==== Détail des besoins du noeud email ====&lt;br /&gt;
&lt;br /&gt;
La liste des éléments nécessaires s'affiche lorsque le bloc est dans la zone de travail (Schema).&lt;br /&gt;
Commençons donc par sélectionner le bloc email, et de le glisser dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
Commençons par cliquer sur le bloc email et nous maintenons le clic pour le glisser à droite dans l'espace de travail.&lt;br /&gt;
&lt;br /&gt;
(on choisit celui qui a son point de liaison à gauche, car nous voulons un bloc de sortie)&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-36.png]]&lt;br /&gt;
&lt;br /&gt;
Glissons le dans l'espace de travail, et cliquons un clic simple pour le sélectionner.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-37.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, dans la colonne à droite de cet espace de travail, nous cliquons sur info et nous pourrons découvrir les éléments nécessaires à la constitution d'un bloc email.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-38.png]]&lt;br /&gt;
&lt;br /&gt;
===== Nous utiliserons les champs suivants =====&lt;br /&gt;
&lt;br /&gt;
=== Création d'une action périodique ===&lt;br /&gt;
&lt;br /&gt;
Dans la colonne de gauche de NodeRED, se trouvent une liste de blocs à utiliser pour réaliser vos projets. Ils sont classés par &amp;quot;types&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Ainsi nous retrouvons les &amp;quot;types&amp;quot; suivants:&lt;br /&gt;
&lt;br /&gt;
* Input qui contient tous les blocs d'entrées&lt;br /&gt;
* Ouput qui contient tous les blocs de sortie&lt;br /&gt;
* Function qui contient des blocs de fonctions javascript etc...&lt;br /&gt;
* Social qui sont des blocs d'entrée ou sorties depuis ou vers les réseaux sociaux&lt;br /&gt;
* Storage qui sont des fonctions de lecture ou d'écriture de fichiers&lt;br /&gt;
* Analysis -&amp;gt;&amp;gt; Sentiment interprète du texte et détermine un score sur base d'un dictionnaire anglais, renvoie le texte avec ce score de -5 à +5, déterminant ainsi l'émotion susceptible d'être procuré par ce texte&lt;br /&gt;
* Advanced possède des outils permettant de détecter des changements dans des fichiers ou dossiers, de lire des flux RSS ou encore EXEC qui permet d'exécuter directement des commandes sous linux !&lt;br /&gt;
* Raspberry Pi contient des outils pour piloter/lire le GPIO du raspberry Pi&lt;br /&gt;
* Network qui contient un outil réseau de Ping&lt;br /&gt;
 &lt;br /&gt;
Nous allons créer une action périodique, c'est à dire paramétrer un bloc &amp;quot;INJECT&amp;quot; de manière à déclencher régulièrement une chaine d'actions que nous allons accrocher à la suite les unes après les autres.&lt;br /&gt;
Nous allons donc cliquer sur le bloc &amp;quot;Inject&amp;quot; dans la liste &amp;quot;Input&amp;quot; et maintenir ce clic pour le déplacer vers la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-02.png]]&lt;br /&gt;
&lt;br /&gt;
Nous obtiendrons donc une nouvelle instance &amp;quot;inject&amp;quot; qui portera le nom &amp;quot;Timestamp&amp;quot; (ce nom est attribué par défaut par NodeRED) comme dans la capture ci-dessous&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-03.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant double-cliquer sur celle-ci fin de l'éditer pour voir apparaitre le menu ci-dessous&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-04.png]]&lt;br /&gt;
&lt;br /&gt;
Il va falloir configurer ce bloc, mais avant tout voici une explication de celui-ci:&lt;br /&gt;
&lt;br /&gt;
==== Payload ====&lt;br /&gt;
&lt;br /&gt;
Le champs PayLoad est en fait le champ de données qui sera suivi d'un noeud à l'autre jusque à la fin de la chaine.&lt;br /&gt;
Dans ce module &amp;quot;inject&amp;quot;, nous allons donc déterminer quel type de données contiendra le &amp;quot;PayLoad&amp;quot; jusqu'à la fin de la chaine que l'on va réaliser.&lt;br /&gt;
&lt;br /&gt;
Dans notre cas, nous souhaitons construire un email, donc du contenu textuel, nous allons donc choisir &amp;quot;String&amp;quot; ce qui correspond à une chaine de caractères (du texte).&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-05.png]]&lt;br /&gt;
&lt;br /&gt;
==== Topic ====&lt;br /&gt;
&lt;br /&gt;
Le champs &amp;quot;Topic&amp;quot; est un champs de texte dans lequel nous allons mettre un sujet succinct décrivant notre chaine. &lt;br /&gt;
Dans notre cas, ce sujet fera office de sujet au mail que nous expédierons. &lt;br /&gt;
Nous allons donc être précis en un minimum de mots pour que le destinataire de l'email puisse facilement deviner le contenu de celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-06.png]]&lt;br /&gt;
&lt;br /&gt;
==== Repeat ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite choisir l'intervalle de déclenchement de notre action, sachant que nous avons le choix entre: &lt;br /&gt;
&lt;br /&gt;
* none  : pas de déclenchement périodique programmé&lt;br /&gt;
* interval : nous fixons un temps de déclenchement à partir du lancement du programme, l'action se réalisera à chaque fois que ce temps sera écoulé de manière répétée jusqu'à l'interruption manuelle du programme&lt;br /&gt;
* interval between times : nous fixons ici le déclenchement par interval, mais nous fixons aussi une fourchette d'heures et des jours pendant lesquels nous exécutons cet interval&lt;br /&gt;
* at a specific time : nous fixons une heure d'exécution, et un ou plusieurs jours d'exécution. Dans ce cas l'action n'est pas répétée en continu mais éxécutée une seule fois par jour à l'heure programmée&lt;br /&gt;
&lt;br /&gt;
Dans notre exemple, nous allons fixer un intervalle de 15 secondes pour commencer. Nous pourrons ensuite augmenter cette valeur pour éviter de recevoir trop d'emails avec des photos :D&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-07.png]]&lt;br /&gt;
&lt;br /&gt;
La case &amp;quot;inject once at start&amp;quot; permet de ne pas attendre le premier cycle avant d'exécuter une première fois l'action. Elle se lancera dès le lancement du programme, puis périodiquement selon les cycles déterminés par l'intervalle.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-08.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Le champs Name va déterminer le nom que portera le bloc dans l'espace de travail et dans les logs (si nous créons des blocs de log ensuite pour contrôler des étapes).&lt;br /&gt;
Il est important de bien établir ce nom de manière explicite, car le nom des blocs permettra de comprendre et retrouver facilement la logique du schéma construit, même si l'on a pas consulté celui-ci pendant une longue période.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-09.png]]&lt;br /&gt;
&lt;br /&gt;
=== Capture d'une image depuis la PiCam ===&lt;br /&gt;
&lt;br /&gt;
Nous allons aller à l'essentiel en ce qui concerne la capture photo en utilisant une commande simple pour prendre un cliché et renvoyer celui-ci dans le flux NodeRED grâce à un bloc permettant d'exécuter des commandes bash.&lt;br /&gt;
&lt;br /&gt;
{{ambox | text = Vous trouverez un TUTO détaillé sur la PiCam vous permettant de prendre la main, ou de la paramétrer si vous n'avez pas encore utilisé celle-ci auparavant: ....___TUTO___...}} &lt;br /&gt;
&lt;br /&gt;
Nous allons tout d'abord cliquer sur le bloc &amp;quot;Exec&amp;quot; dans la section &amp;quot;Advanced&amp;quot; de la colonne de gauche et glisser l'élément dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-10.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, cliquer sur le bloc nouvellement créé et configurer celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-11.png]]&lt;br /&gt;
&lt;br /&gt;
Le menu suivant s'affichera, et nous pourrons configurer le bloc &amp;quot;Exec&amp;quot; nouvellement créé.&lt;br /&gt;
&lt;br /&gt;
==== Command ====&lt;br /&gt;
&lt;br /&gt;
Nous allons y ajouter la commande à exécuter pour prendre une photo avec la caméra du Raspberry Pi et la stocker dans un fichier jpg dans le dossier /tmp/ de linux.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
raspistill -o /tmp/cam.jpg -w 640 -h 480&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous prenons soin de limiter la hauteur et la largeur de l'image afin de réduire son poids pour l'envoi par email.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-12.png]]&lt;br /&gt;
&lt;br /&gt;
==== +Append ====&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons décocher la case &amp;quot;msg.payload&amp;quot; si elle est cochée par défaut.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-13.png]]&lt;br /&gt;
&lt;br /&gt;
==== Extra input parameters et Timeout ====&lt;br /&gt;
&lt;br /&gt;
Nous n'aurons pas besoin de compléter ces champs pour notre projet.&lt;br /&gt;
&lt;br /&gt;
Si vous cochez le champ &amp;quot;Use spawn() instead of exec()?&amp;quot;, votre commande sera réalisée sous forme d'un processus résident et continuera de s'exécuter jusqu'à ce qu'elle se termine par elle-même (sauf si elle ne se termine jamais).&lt;br /&gt;
Cette solution implique que le programme n'attendra pas que cette commande soit réalisée pour passer aux étapes suivantes. &lt;br /&gt;
Si la suite de l'exécution de votre flux est susceptible d'utiliser le résultat de cette commande, nous vous déconseillons d'utiliser cette option sous peine de provoquer des erreurs à la suite du traitement du flux.&lt;br /&gt;
&lt;br /&gt;
Le champ &amp;quot;Timeout&amp;quot; permet de définir un temps d'attente maximum avant de mettre un terme à l'exécution de la commande. &lt;br /&gt;
Cela permet de débloquer la situation si la commande exécutée prends un temps anormalement long à s'exécuter.&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite compléter le champs nom, celui-ci sera utilisé pour nommer le bloc dans le &amp;quot;schéma&amp;quot;, mais aussi de nommer les logs comme pour le bloc &amp;quot;Exec&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-14.png]]&lt;br /&gt;
&lt;br /&gt;
=== Encodage de l'image en base64 ===&lt;br /&gt;
&lt;br /&gt;
Nous allons convertir la photo prise juste avant en utilisant une commande de conversion en base64.&lt;br /&gt;
Cela facilitera son injection dans un template HTML que nous allons créer ensuite pour construire un email.&lt;br /&gt;
&lt;br /&gt;
Nous allons tout d'abord cliquer sur le bloc &amp;quot;Exec&amp;quot; dans la section &amp;quot;Advanced&amp;quot; de la colonne de gauche et glisser l'élément dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-10.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, cliquer sur le bloc nouvellement créé et configurer celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-11.png]]&lt;br /&gt;
&lt;br /&gt;
Le menu suivant s'affichera, et nous pourrons configurer le bloc &amp;quot;Exec&amp;quot; nouvellement créé.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-15.png]]&lt;br /&gt;
&lt;br /&gt;
==== Command ====&lt;br /&gt;
&lt;br /&gt;
Nous allons y ajouter la commande à exécuter pour encoder en base 64 la photo prise précédemment avec la caméra du Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
base64 -i &amp;quot;/tmp/cam.jpg&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-16.png]]&lt;br /&gt;
&lt;br /&gt;
==== +Append ====&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons cocher la case &amp;quot;msg.payload&amp;quot; si elle n'est pas cochée par défaut pour que le résultat soit directement renvoyé par cette commande dans le &amp;quot;PayLoad&amp;quot; du flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-17.png]]&lt;br /&gt;
&lt;br /&gt;
==== Extra input parameters et Timeout ====&lt;br /&gt;
&lt;br /&gt;
Nous n'aurons pas besoin de compléter ces champs pour notre projet.&lt;br /&gt;
&lt;br /&gt;
Si vous cochez le champ &amp;quot;Use spawn() instead of exec()?&amp;quot;, votre commande sera réalisée sous forme d'un processus résident et continuera de s'exécuter jusqu'à ce qu'elle se termine par elle-même (sauf si elle ne se termine jamais).&lt;br /&gt;
Cette solution implique que le programme n'attendra pas que cette commande soit réalisée pour passer aux étapes suivantes. &lt;br /&gt;
Si la suite de l'exécution de votre flux est susceptible d'utiliser le résultat de cette commande, nous vous déconseillons d'utiliser cette option sous peine de provoquer des erreurs à la suite du traitement du flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-18.png]]&lt;br /&gt;
&lt;br /&gt;
Le champ &amp;quot;Timeout&amp;quot; permet de définir un temps d'attente maximum avant de mettre un terme à l'exécution de la commande. &lt;br /&gt;
Cela permet de débloquer la situation si la commande exécutée prends un temps anormalement long à s'exécuter.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-19.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite compléter le champs nom, celui-ci sera utilisé pour nommer le bloc dans le &amp;quot;schéma&amp;quot;, mais aussi de nommer les logs comme pour le bloc &amp;quot;Exec&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-20.png]]&lt;br /&gt;
&lt;br /&gt;
=== Création d'un email au format HTML ===&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant créer un template d'email au format HTML afin de mettre en forme le message que nous enverrons ensuite.&lt;br /&gt;
Nous allons pour cela utiliser un bloc &amp;quot;Template&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-21.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons attribuer un nom au bloc afin de l'identifier plus facilement dans le flux.&lt;br /&gt;
Nous allons donc le nommer &amp;quot;Contenu du mail&amp;quot; puisque nous créons le contenu du mail que nous enverrons ensuite.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-22.png]]&lt;br /&gt;
&lt;br /&gt;
==== Set property ====&lt;br /&gt;
&lt;br /&gt;
La propriété que nous souhaitons créer dans le flux est le &amp;quot;PayLoad&amp;quot;.&lt;br /&gt;
Ce PayLoad existe déjà, il contient pour le moment l'image au format &amp;quot;Base64&amp;quot; précédemment encodé.&lt;br /&gt;
Cela n'est pas un problème, après notre noeud (notre bloc), le PayLoad sera intégralement remplacé par le template que nous sommes en train de créer.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-23.png]]&lt;br /&gt;
&lt;br /&gt;
==== Template ====&lt;br /&gt;
&lt;br /&gt;
Dans ce template, nous allons créer une structure HTML de base minimum afin que la structure soit interprétée par la majorité des clients/webmail.&lt;br /&gt;
Vous pouvez la personnaliser à votre guise si vous avez les connaissances en HTML.&lt;br /&gt;
&lt;br /&gt;
Voici la structure de base pour notre projet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
    &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;meta charset=&amp;quot;utf8&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/head&amp;gt;&lt;br /&gt;
    &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Projet Photo par email&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;img src=&amp;quot;data:image/jpg;base64,{{payload}}&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pourrez remarquer que nous intégrons l'image en appelant le PayLoad à 'intérieur du code HTML dans la balise &amp;lt;img&amp;gt;.&lt;br /&gt;
C'est le PayLoad créé précédemment par le bloc &amp;quot;Exec&amp;quot; qui est récupéré à ce moment précis.&lt;br /&gt;
Ce PayLoad est remplacé dans le flux par le PayLoad complet avec notre template dans le flux par notre bloc Template.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-24.png]]&lt;br /&gt;
&lt;br /&gt;
=== Création d'un bloc (noeud) &amp;quot;Debug&amp;quot;  ===&lt;br /&gt;
&lt;br /&gt;
Nous allons ajouter la notion d'expéditeur dans le flux que nous avons créé à travers nos blocs (noeuds).&lt;br /&gt;
Pour rappel, actuellement nous avons deux propriétés avec des données dans notre flux. &lt;br /&gt;
Si nous voulons observer ce que nous avons créé jusque là, nous pouvons faire appel à un bloc &amp;quot;Debug&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Création du bloc &amp;quot;Debug&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Comme pour les blocs précédents, nous allons glisser/déposer un bloc débug dans l'espace de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-25.png]]&lt;br /&gt;
&lt;br /&gt;
Celui-ci s'appelle msg/payload par défaut&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-26.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons double-cliquer sur ce bloc pour le configurer.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-27.png]]&lt;br /&gt;
&lt;br /&gt;
==== Output ====&lt;br /&gt;
&lt;br /&gt;
Dans ce champs, nous allons choisir la partie du flux que nous souhaitons afficher, ou nous allons sélectionner le flux entier.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-28.png]]&lt;br /&gt;
&lt;br /&gt;
Sélectionner le flux entier, nous affichera le flux complet incluant toutes ses propriétés.&lt;br /&gt;
&lt;br /&gt;
 [[fichier:Rasp-Node-Red-picam-mail-29.png]]&lt;br /&gt;
&lt;br /&gt;
==== To =====&lt;br /&gt;
&lt;br /&gt;
La propriété &amp;quot;To&amp;quot; nous permet de choisir ou nous souhaitons afficher les données que nous récupérons. &lt;br /&gt;
Soit nous les affichons uniquement dans l'onglet &amp;quot;Debug&amp;quot; à droite de l'espace de travail, soit nous l'affichons dans cet onglet mais aussi dans la console de NodeJS.&lt;br /&gt;
Dans notre cas, nous allons nous contenter d'afficher nos éléments dans l'onglet de &amp;quot;Debug&amp;quot; à droite de notre espace de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-30.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Le champs Name nous servira à identifier quel bloc de &amp;quot;Debug&amp;quot; affiche les données en console ou dans l'onglet &amp;quot;Debug&amp;quot;. &lt;br /&gt;
Il faut donc le nommer efficacement pour bien attacher et comprendre les données que nous récupérons, surtout si nous en plaçons plusieurs dans le flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-31.png]]&lt;br /&gt;
&lt;br /&gt;
==== Exploitation et compréhension des données récupérées ====&lt;br /&gt;
&lt;br /&gt;
Nous avons placé notre bloc &amp;quot;Debug&amp;quot; à la suite du flux en dernière position. &lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-32.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons donc déployer le programme en cliquant sur &amp;quot;Deploy&amp;quot; en haut à droite de la page. &lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-33.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons exécuter manuellement le programme en cliquant sur le bouton se trouvant en début de chaîne:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-34.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite afficher l'onglet &amp;quot;Debug&amp;quot; sur le coté droit de la page et analyser les données récupérées:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-35.png]]&lt;br /&gt;
&lt;br /&gt;
==== Analyse des données récupérées dans l'onglet &amp;quot;Debug&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
08/05/2017 à 12:54:31 node: FORMATAGE&lt;br /&gt;
MCHobby - Photo bureau : msg : Object&lt;br /&gt;
object&lt;br /&gt;
_msgid: &amp;quot;81efe35c.3208d&amp;quot;&lt;br /&gt;
topic: &amp;quot;MCHobby - Photo bureau&amp;quot;&lt;br /&gt;
payload: &amp;quot;&amp;lt;html&amp;gt;↵ &amp;lt;head&amp;gt;↵ &amp;lt;meta charset=&amp;quot;utf8&amp;quot;/&amp;gt;↵ ↵ &amp;lt;/head&amp;gt;↵ &amp;lt;body&amp;gt;↵ &amp;lt;h1&amp;gt;MCHobby - Photo bureau&amp;lt;/h1&amp;gt;↵ &amp;lt;p&amp;gt;Cette photo est un instantané pris dans les bureaux de MCHobby.&amp;lt;/p&amp;gt;↵ &lt;br /&gt;
&amp;lt;img src=&amp;quot;data:image/jpg;base64,&amp;amp;#x2F;9j&amp;amp;#x2F;4WP6x2.../&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comme vous pourrez le constater, chaque élément du noeud est détaillé.&lt;br /&gt;
Les données sont cependant tronquées, le noeud &amp;quot;Debug&amp;quot; ne nous fourni pas la totalité du &amp;quot;PayLoad&amp;quot; mais nous avons déjà un bon aperçu des données qu'il contient.&lt;br /&gt;
&lt;br /&gt;
_msgid: est un Id unique de message&lt;br /&gt;
topic: est le sujet du mail, nous l'avons déterminé dans le premier bloc&lt;br /&gt;
payload: contient les données du message formatées par le template que nous avons créé et complété par l'image en base64.&lt;br /&gt;
&lt;br /&gt;
Les noeuds &amp;quot;Debug&amp;quot; sont pratiques. Ils nous permettent d'afficher une partie ou la totalité du flux tel qu'il est à l'endroit ou ils sont placés.&lt;br /&gt;
&lt;br /&gt;
Cela peut permettre d'identifier et de résoudre plus facilement des problèmes dans des opérations plus complexes et dans notre cas, cela nous permet de mieux comprendre comment fonctionne le noeud et comment les données sont transmises d'un bloc à l'autre.&lt;br /&gt;
&lt;br /&gt;
=== Création d'un expéditeur ===&lt;br /&gt;
&lt;br /&gt;
Nous avons construit petit à petit un message avec un sujet, mais il manque encore un détail: l'expéditeur de l'email que nous allons envoyer.&lt;br /&gt;
&lt;br /&gt;
Si vous avez bien suivi les étapes précédentes du tuto, jusqu'au noeud &amp;quot;Debug&amp;quot; et à son résultat, vous comprendrez facilement la démarche ci après pour ajouter un expéditeur dans le flux.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Rasp-Node-Red-TRAILER}}&lt;/div&gt;</summary>
		<author><name>AntoineWrt</name></author>
	</entry>
	<entry>
		<id>https://wiki.mchobby.be/index.php?title=Fichier:Rasp-Node-Red-picam-mail-38.png&amp;diff=22796</id>
		<title>Fichier:Rasp-Node-Red-picam-mail-38.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.mchobby.be/index.php?title=Fichier:Rasp-Node-Red-picam-mail-38.png&amp;diff=22796"/>
		<updated>2017-05-08T12:50:57Z</updated>

		<summary type="html">&lt;p&gt;AntoineWrt : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AntoineWrt</name></author>
	</entry>
	<entry>
		<id>https://wiki.mchobby.be/index.php?title=Fichier:Rasp-Node-Red-picam-mail-37.png&amp;diff=22795</id>
		<title>Fichier:Rasp-Node-Red-picam-mail-37.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.mchobby.be/index.php?title=Fichier:Rasp-Node-Red-picam-mail-37.png&amp;diff=22795"/>
		<updated>2017-05-08T12:50:38Z</updated>

		<summary type="html">&lt;p&gt;AntoineWrt : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AntoineWrt</name></author>
	</entry>
	<entry>
		<id>https://wiki.mchobby.be/index.php?title=Fichier:Rasp-Node-Red-picam-mail-36.png&amp;diff=22794</id>
		<title>Fichier:Rasp-Node-Red-picam-mail-36.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.mchobby.be/index.php?title=Fichier:Rasp-Node-Red-picam-mail-36.png&amp;diff=22794"/>
		<updated>2017-05-08T12:50:25Z</updated>

		<summary type="html">&lt;p&gt;AntoineWrt : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AntoineWrt</name></author>
	</entry>
	<entry>
		<id>https://wiki.mchobby.be/index.php?title=Rasp-Node-Red-picam-mail&amp;diff=22793</id>
		<title>Rasp-Node-Red-picam-mail</title>
		<link rel="alternate" type="text/html" href="https://wiki.mchobby.be/index.php?title=Rasp-Node-Red-picam-mail&amp;diff=22793"/>
		<updated>2017-05-08T12:50:09Z</updated>

		<summary type="html">&lt;p&gt;AntoineWrt : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Rasp-Node-Red-NAV}}&lt;br /&gt;
&lt;br /&gt;
{{traduction}}&lt;br /&gt;
&lt;br /&gt;
== PiCamRED - Envoi périodique de photos par email avec PiCam et NodeRED ==&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-01.png|900px]]&lt;br /&gt;
&lt;br /&gt;
=== Description du projet ===&lt;br /&gt;
&lt;br /&gt;
Dans ce tutoriel, nous allons réaliser des photos à l'aide de la caméra du RaspBerry Pi 2/3 et envoyer ces clichés par email de manière périodique grâce à NodeRED.&lt;br /&gt;
Nous allons donc utiliser plusieurs blocs et décrire de manière détaillée le déroulement de chaque étape de la réalisation de ce projet.&lt;br /&gt;
&lt;br /&gt;
Dans NodeRED, il est important de bien identifier la finalité de notre projet afin de connaître au préalable tous les éléments qu'il faudra créer et fournir à l'action finale (celle qui enverra un email).&lt;br /&gt;
&lt;br /&gt;
=== Quels sont les besoins du noeud email ===&lt;br /&gt;
&lt;br /&gt;
==== Composants nécessaires pour constituer un email ====&lt;br /&gt;
&lt;br /&gt;
Un email est composé des éléments suivants: &lt;br /&gt;
&lt;br /&gt;
 * Un expéditeur&lt;br /&gt;
 * Un destinataire&lt;br /&gt;
 * Un sujet&lt;br /&gt;
 * Le corps du message&lt;br /&gt;
&lt;br /&gt;
Tous ces éléments vont donc devoir être préparés afin de pouvoir construire le message à envoyer par le noeud final.&lt;br /&gt;
&lt;br /&gt;
Le noeud final aura aussi besoin d'un serveur SMTP (serveur d'envoi d'emails) et éventuellement de paramètres d'identification pour ce serveur d'envoi d'emails.&lt;br /&gt;
&lt;br /&gt;
==== Détail des besoins du noeud email ====&lt;br /&gt;
&lt;br /&gt;
La liste des éléments nécessaires s'affiche lorsque le bloc est dans la zone de travail (Schema).&lt;br /&gt;
Commençons donc par sélectionner le bloc email, et de le glisser dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
Commençons par cliquer sur le bloc email et nous maintenons le clic pour le glisser à droite dans l'espace de travail.&lt;br /&gt;
&lt;br /&gt;
(on choisit celui qui a son point de liaison à gauche, car nous voulons un bloc de sortie)&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-36.png]]&lt;br /&gt;
&lt;br /&gt;
Glissons le dans l'espace de travail, et cliquons un clic simple pour le sélectionner.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-37.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, dans la colonne à droite de cet espace de travail, nous cliquons sur info et nous pourrons découvrir les éléments nécessaires à la constitution d'un bloc email.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-38.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Création d'une action périodique ===&lt;br /&gt;
&lt;br /&gt;
Dans la colonne de gauche de NodeRED, se trouvent une liste de blocs à utiliser pour réaliser vos projets. Ils sont classés par &amp;quot;types&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Ainsi nous retrouvons les &amp;quot;types&amp;quot; suivants:&lt;br /&gt;
&lt;br /&gt;
* Input qui contient tous les blocs d'entrées&lt;br /&gt;
* Ouput qui contient tous les blocs de sortie&lt;br /&gt;
* Function qui contient des blocs de fonctions javascript etc...&lt;br /&gt;
* Social qui sont des blocs d'entrée ou sorties depuis ou vers les réseaux sociaux&lt;br /&gt;
* Storage qui sont des fonctions de lecture ou d'écriture de fichiers&lt;br /&gt;
* Analysis -&amp;gt;&amp;gt; Sentiment interprète du texte et détermine un score sur base d'un dictionnaire anglais, renvoie le texte avec ce score de -5 à +5, déterminant ainsi l'émotion susceptible d'être procuré par ce texte&lt;br /&gt;
* Advanced possède des outils permettant de détecter des changements dans des fichiers ou dossiers, de lire des flux RSS ou encore EXEC qui permet d'exécuter directement des commandes sous linux !&lt;br /&gt;
* Raspberry Pi contient des outils pour piloter/lire le GPIO du raspberry Pi&lt;br /&gt;
* Network qui contient un outil réseau de Ping&lt;br /&gt;
 &lt;br /&gt;
Nous allons créer une action périodique, c'est à dire paramétrer un bloc &amp;quot;INJECT&amp;quot; de manière à déclencher régulièrement une chaine d'actions que nous allons accrocher à la suite les unes après les autres.&lt;br /&gt;
Nous allons donc cliquer sur le bloc &amp;quot;Inject&amp;quot; dans la liste &amp;quot;Input&amp;quot; et maintenir ce clic pour le déplacer vers la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-02.png]]&lt;br /&gt;
&lt;br /&gt;
Nous obtiendrons donc une nouvelle instance &amp;quot;inject&amp;quot; qui portera le nom &amp;quot;Timestamp&amp;quot; (ce nom est attribué par défaut par NodeRED) comme dans la capture ci-dessous&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-03.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant double-cliquer sur celle-ci fin de l'éditer pour voir apparaitre le menu ci-dessous&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-04.png]]&lt;br /&gt;
&lt;br /&gt;
Il va falloir configurer ce bloc, mais avant tout voici une explication de celui-ci:&lt;br /&gt;
&lt;br /&gt;
==== Payload ====&lt;br /&gt;
&lt;br /&gt;
Le champs PayLoad est en fait le champ de données qui sera suivi d'un noeud à l'autre jusque à la fin de la chaine.&lt;br /&gt;
Dans ce module &amp;quot;inject&amp;quot;, nous allons donc déterminer quel type de données contiendra le &amp;quot;PayLoad&amp;quot; jusqu'à la fin de la chaine que l'on va réaliser.&lt;br /&gt;
&lt;br /&gt;
Dans notre cas, nous souhaitons construire un email, donc du contenu textuel, nous allons donc choisir &amp;quot;String&amp;quot; ce qui correspond à une chaine de caractères (du texte).&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-05.png]]&lt;br /&gt;
&lt;br /&gt;
==== Topic ====&lt;br /&gt;
&lt;br /&gt;
Le champs &amp;quot;Topic&amp;quot; est un champs de texte dans lequel nous allons mettre un sujet succinct décrivant notre chaine. &lt;br /&gt;
Dans notre cas, ce sujet fera office de sujet au mail que nous expédierons. &lt;br /&gt;
Nous allons donc être précis en un minimum de mots pour que le destinataire de l'email puisse facilement deviner le contenu de celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-06.png]]&lt;br /&gt;
&lt;br /&gt;
==== Repeat ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite choisir l'intervalle de déclenchement de notre action, sachant que nous avons le choix entre: &lt;br /&gt;
&lt;br /&gt;
* none  : pas de déclenchement périodique programmé&lt;br /&gt;
* interval : nous fixons un temps de déclenchement à partir du lancement du programme, l'action se réalisera à chaque fois que ce temps sera écoulé de manière répétée jusqu'à l'interruption manuelle du programme&lt;br /&gt;
* interval between times : nous fixons ici le déclenchement par interval, mais nous fixons aussi une fourchette d'heures et des jours pendant lesquels nous exécutons cet interval&lt;br /&gt;
* at a specific time : nous fixons une heure d'exécution, et un ou plusieurs jours d'exécution. Dans ce cas l'action n'est pas répétée en continu mais éxécutée une seule fois par jour à l'heure programmée&lt;br /&gt;
&lt;br /&gt;
Dans notre exemple, nous allons fixer un intervalle de 15 secondes pour commencer. Nous pourrons ensuite augmenter cette valeur pour éviter de recevoir trop d'emails avec des photos :D&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-07.png]]&lt;br /&gt;
&lt;br /&gt;
La case &amp;quot;inject once at start&amp;quot; permet de ne pas attendre le premier cycle avant d'exécuter une première fois l'action. Elle se lancera dès le lancement du programme, puis périodiquement selon les cycles déterminés par l'intervalle.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-08.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Le champs Name va déterminer le nom que portera le bloc dans l'espace de travail et dans les logs (si nous créons des blocs de log ensuite pour contrôler des étapes).&lt;br /&gt;
Il est important de bien établir ce nom de manière explicite, car le nom des blocs permettra de comprendre et retrouver facilement la logique du schéma construit, même si l'on a pas consulté celui-ci pendant une longue période.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-09.png]]&lt;br /&gt;
&lt;br /&gt;
=== Capture d'une image depuis la PiCam ===&lt;br /&gt;
&lt;br /&gt;
Nous allons aller à l'essentiel en ce qui concerne la capture photo en utilisant une commande simple pour prendre un cliché et renvoyer celui-ci dans le flux NodeRED grâce à un bloc permettant d'exécuter des commandes bash.&lt;br /&gt;
&lt;br /&gt;
{{ambox | text = Vous trouverez un TUTO détaillé sur la PiCam vous permettant de prendre la main, ou de la paramétrer si vous n'avez pas encore utilisé celle-ci auparavant: ....___TUTO___...}} &lt;br /&gt;
&lt;br /&gt;
Nous allons tout d'abord cliquer sur le bloc &amp;quot;Exec&amp;quot; dans la section &amp;quot;Advanced&amp;quot; de la colonne de gauche et glisser l'élément dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-10.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, cliquer sur le bloc nouvellement créé et configurer celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-11.png]]&lt;br /&gt;
&lt;br /&gt;
Le menu suivant s'affichera, et nous pourrons configurer le bloc &amp;quot;Exec&amp;quot; nouvellement créé.&lt;br /&gt;
&lt;br /&gt;
==== Command ====&lt;br /&gt;
&lt;br /&gt;
Nous allons y ajouter la commande à exécuter pour prendre une photo avec la caméra du Raspberry Pi et la stocker dans un fichier jpg dans le dossier /tmp/ de linux.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
raspistill -o /tmp/cam.jpg -w 640 -h 480&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous prenons soin de limiter la hauteur et la largeur de l'image afin de réduire son poids pour l'envoi par email.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-12.png]]&lt;br /&gt;
&lt;br /&gt;
==== +Append ====&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons décocher la case &amp;quot;msg.payload&amp;quot; si elle est cochée par défaut.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-13.png]]&lt;br /&gt;
&lt;br /&gt;
==== Extra input parameters et Timeout ====&lt;br /&gt;
&lt;br /&gt;
Nous n'aurons pas besoin de compléter ces champs pour notre projet.&lt;br /&gt;
&lt;br /&gt;
Si vous cochez le champ &amp;quot;Use spawn() instead of exec()?&amp;quot;, votre commande sera réalisée sous forme d'un processus résident et continuera de s'exécuter jusqu'à ce qu'elle se termine par elle-même (sauf si elle ne se termine jamais).&lt;br /&gt;
Cette solution implique que le programme n'attendra pas que cette commande soit réalisée pour passer aux étapes suivantes. &lt;br /&gt;
Si la suite de l'exécution de votre flux est susceptible d'utiliser le résultat de cette commande, nous vous déconseillons d'utiliser cette option sous peine de provoquer des erreurs à la suite du traitement du flux.&lt;br /&gt;
&lt;br /&gt;
Le champ &amp;quot;Timeout&amp;quot; permet de définir un temps d'attente maximum avant de mettre un terme à l'exécution de la commande. &lt;br /&gt;
Cela permet de débloquer la situation si la commande exécutée prends un temps anormalement long à s'exécuter.&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite compléter le champs nom, celui-ci sera utilisé pour nommer le bloc dans le &amp;quot;schéma&amp;quot;, mais aussi de nommer les logs comme pour le bloc &amp;quot;Exec&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-14.png]]&lt;br /&gt;
&lt;br /&gt;
=== Encodage de l'image en base64 ===&lt;br /&gt;
&lt;br /&gt;
Nous allons convertir la photo prise juste avant en utilisant une commande de conversion en base64.&lt;br /&gt;
Cela facilitera son injection dans un template HTML que nous allons créer ensuite pour construire un email.&lt;br /&gt;
&lt;br /&gt;
Nous allons tout d'abord cliquer sur le bloc &amp;quot;Exec&amp;quot; dans la section &amp;quot;Advanced&amp;quot; de la colonne de gauche et glisser l'élément dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-10.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, cliquer sur le bloc nouvellement créé et configurer celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-11.png]]&lt;br /&gt;
&lt;br /&gt;
Le menu suivant s'affichera, et nous pourrons configurer le bloc &amp;quot;Exec&amp;quot; nouvellement créé.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-15.png]]&lt;br /&gt;
&lt;br /&gt;
==== Command ====&lt;br /&gt;
&lt;br /&gt;
Nous allons y ajouter la commande à exécuter pour encoder en base 64 la photo prise précédemment avec la caméra du Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
base64 -i &amp;quot;/tmp/cam.jpg&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-16.png]]&lt;br /&gt;
&lt;br /&gt;
==== +Append ====&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons cocher la case &amp;quot;msg.payload&amp;quot; si elle n'est pas cochée par défaut pour que le résultat soit directement renvoyé par cette commande dans le &amp;quot;PayLoad&amp;quot; du flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-17.png]]&lt;br /&gt;
&lt;br /&gt;
==== Extra input parameters et Timeout ====&lt;br /&gt;
&lt;br /&gt;
Nous n'aurons pas besoin de compléter ces champs pour notre projet.&lt;br /&gt;
&lt;br /&gt;
Si vous cochez le champ &amp;quot;Use spawn() instead of exec()?&amp;quot;, votre commande sera réalisée sous forme d'un processus résident et continuera de s'exécuter jusqu'à ce qu'elle se termine par elle-même (sauf si elle ne se termine jamais).&lt;br /&gt;
Cette solution implique que le programme n'attendra pas que cette commande soit réalisée pour passer aux étapes suivantes. &lt;br /&gt;
Si la suite de l'exécution de votre flux est susceptible d'utiliser le résultat de cette commande, nous vous déconseillons d'utiliser cette option sous peine de provoquer des erreurs à la suite du traitement du flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-18.png]]&lt;br /&gt;
&lt;br /&gt;
Le champ &amp;quot;Timeout&amp;quot; permet de définir un temps d'attente maximum avant de mettre un terme à l'exécution de la commande. &lt;br /&gt;
Cela permet de débloquer la situation si la commande exécutée prends un temps anormalement long à s'exécuter.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-19.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite compléter le champs nom, celui-ci sera utilisé pour nommer le bloc dans le &amp;quot;schéma&amp;quot;, mais aussi de nommer les logs comme pour le bloc &amp;quot;Exec&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-20.png]]&lt;br /&gt;
&lt;br /&gt;
=== Création d'un email au format HTML ===&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant créer un template d'email au format HTML afin de mettre en forme le message que nous enverrons ensuite.&lt;br /&gt;
Nous allons pour cela utiliser un bloc &amp;quot;Template&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-21.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons attribuer un nom au bloc afin de l'identifier plus facilement dans le flux.&lt;br /&gt;
Nous allons donc le nommer &amp;quot;Contenu du mail&amp;quot; puisque nous créons le contenu du mail que nous enverrons ensuite.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-22.png]]&lt;br /&gt;
&lt;br /&gt;
==== Set property ====&lt;br /&gt;
&lt;br /&gt;
La propriété que nous souhaitons créer dans le flux est le &amp;quot;PayLoad&amp;quot;.&lt;br /&gt;
Ce PayLoad existe déjà, il contient pour le moment l'image au format &amp;quot;Base64&amp;quot; précédemment encodé.&lt;br /&gt;
Cela n'est pas un problème, après notre noeud (notre bloc), le PayLoad sera intégralement remplacé par le template que nous sommes en train de créer.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-23.png]]&lt;br /&gt;
&lt;br /&gt;
==== Template ====&lt;br /&gt;
&lt;br /&gt;
Dans ce template, nous allons créer une structure HTML de base minimum afin que la structure soit interprétée par la majorité des clients/webmail.&lt;br /&gt;
Vous pouvez la personnaliser à votre guise si vous avez les connaissances en HTML.&lt;br /&gt;
&lt;br /&gt;
Voici la structure de base pour notre projet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
    &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;meta charset=&amp;quot;utf8&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/head&amp;gt;&lt;br /&gt;
    &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Projet Photo par email&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;img src=&amp;quot;data:image/jpg;base64,{{payload}}&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pourrez remarquer que nous intégrons l'image en appelant le PayLoad à 'intérieur du code HTML dans la balise &amp;lt;img&amp;gt;.&lt;br /&gt;
C'est le PayLoad créé précédemment par le bloc &amp;quot;Exec&amp;quot; qui est récupéré à ce moment précis.&lt;br /&gt;
Ce PayLoad est remplacé dans le flux par le PayLoad complet avec notre template dans le flux par notre bloc Template.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-24.png]]&lt;br /&gt;
&lt;br /&gt;
=== Création d'un bloc (noeud) &amp;quot;Debug&amp;quot;  ===&lt;br /&gt;
&lt;br /&gt;
Nous allons ajouter la notion d'expéditeur dans le flux que nous avons créé à travers nos blocs (noeuds).&lt;br /&gt;
Pour rappel, actuellement nous avons deux propriétés avec des données dans notre flux. &lt;br /&gt;
Si nous voulons observer ce que nous avons créé jusque là, nous pouvons faire appel à un bloc &amp;quot;Debug&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Création du bloc &amp;quot;Debug&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Comme pour les blocs précédents, nous allons glisser/déposer un bloc débug dans l'espace de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-25.png]]&lt;br /&gt;
&lt;br /&gt;
Celui-ci s'appelle msg/payload par défaut&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-26.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons double-cliquer sur ce bloc pour le configurer.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-27.png]]&lt;br /&gt;
&lt;br /&gt;
==== Output ====&lt;br /&gt;
&lt;br /&gt;
Dans ce champs, nous allons choisir la partie du flux que nous souhaitons afficher, ou nous allons sélectionner le flux entier.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-28.png]]&lt;br /&gt;
&lt;br /&gt;
Sélectionner le flux entier, nous affichera le flux complet incluant toutes ses propriétés.&lt;br /&gt;
&lt;br /&gt;
 [[fichier:Rasp-Node-Red-picam-mail-29.png]]&lt;br /&gt;
&lt;br /&gt;
==== To =====&lt;br /&gt;
&lt;br /&gt;
La propriété &amp;quot;To&amp;quot; nous permet de choisir ou nous souhaitons afficher les données que nous récupérons. &lt;br /&gt;
Soit nous les affichons uniquement dans l'onglet &amp;quot;Debug&amp;quot; à droite de l'espace de travail, soit nous l'affichons dans cet onglet mais aussi dans la console de NodeJS.&lt;br /&gt;
Dans notre cas, nous allons nous contenter d'afficher nos éléments dans l'onglet de &amp;quot;Debug&amp;quot; à droite de notre espace de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-30.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Le champs Name nous servira à identifier quel bloc de &amp;quot;Debug&amp;quot; affiche les données en console ou dans l'onglet &amp;quot;Debug&amp;quot;. &lt;br /&gt;
Il faut donc le nommer efficacement pour bien attacher et comprendre les données que nous récupérons, surtout si nous en plaçons plusieurs dans le flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-31.png]]&lt;br /&gt;
&lt;br /&gt;
==== Exploitation et compréhension des données récupérées ====&lt;br /&gt;
&lt;br /&gt;
Nous avons placé notre bloc &amp;quot;Debug&amp;quot; à la suite du flux en dernière position. &lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-32.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons donc déployer le programme en cliquant sur &amp;quot;Deploy&amp;quot; en haut à droite de la page. &lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-33.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons exécuter manuellement le programme en cliquant sur le bouton se trouvant en début de chaîne:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-34.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite afficher l'onglet &amp;quot;Debug&amp;quot; sur le coté droit de la page et analyser les données récupérées:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-35.png]]&lt;br /&gt;
&lt;br /&gt;
==== Analyse des données récupérées dans l'onglet &amp;quot;Debug&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
08/05/2017 à 12:54:31 node: FORMATAGE&lt;br /&gt;
MCHobby - Photo bureau : msg : Object&lt;br /&gt;
object&lt;br /&gt;
_msgid: &amp;quot;81efe35c.3208d&amp;quot;&lt;br /&gt;
topic: &amp;quot;MCHobby - Photo bureau&amp;quot;&lt;br /&gt;
payload: &amp;quot;&amp;lt;html&amp;gt;↵ &amp;lt;head&amp;gt;↵ &amp;lt;meta charset=&amp;quot;utf8&amp;quot;/&amp;gt;↵ ↵ &amp;lt;/head&amp;gt;↵ &amp;lt;body&amp;gt;↵ &amp;lt;h1&amp;gt;MCHobby - Photo bureau&amp;lt;/h1&amp;gt;↵ &amp;lt;p&amp;gt;Cette photo est un instantané pris dans les bureaux de MCHobby.&amp;lt;/p&amp;gt;↵ &lt;br /&gt;
&amp;lt;img src=&amp;quot;data:image/jpg;base64,&amp;amp;#x2F;9j&amp;amp;#x2F;4WP6x2.../&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comme vous pourrez le constater, chaque élément du noeud est détaillé.&lt;br /&gt;
Les données sont cependant tronquées, le noeud &amp;quot;Debug&amp;quot; ne nous fourni pas la totalité du &amp;quot;PayLoad&amp;quot; mais nous avons déjà un bon aperçu des données qu'il contient.&lt;br /&gt;
&lt;br /&gt;
_msgid: est un Id unique de message&lt;br /&gt;
topic: est le sujet du mail, nous l'avons déterminé dans le premier bloc&lt;br /&gt;
payload: contient les données du message formatées par le template que nous avons créé et complété par l'image en base64.&lt;br /&gt;
&lt;br /&gt;
Les noeuds &amp;quot;Debug&amp;quot; sont pratiques. Ils nous permettent d'afficher une partie ou la totalité du flux tel qu'il est à l'endroit ou ils sont placés.&lt;br /&gt;
&lt;br /&gt;
Cela peut permettre d'identifier et de résoudre plus facilement des problèmes dans des opérations plus complexes et dans notre cas, cela nous permet de mieux comprendre comment fonctionne le noeud et comment les données sont transmises d'un bloc à l'autre.&lt;br /&gt;
&lt;br /&gt;
=== Création d'un expéditeur ===&lt;br /&gt;
&lt;br /&gt;
Nous avons construit petit à petit un message avec un sujet, mais il manque encore un détail: l'expéditeur de l'email que nous allons envoyer.&lt;br /&gt;
&lt;br /&gt;
Si vous avez bien suivi les étapes précédentes du tuto, jusqu'au noeud &amp;quot;Debug&amp;quot; et à son résultat, vous comprendrez facilement la démarche ci après pour ajouter un expéditeur dans le flux.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Rasp-Node-Red-TRAILER}}&lt;/div&gt;</summary>
		<author><name>AntoineWrt</name></author>
	</entry>
	<entry>
		<id>https://wiki.mchobby.be/index.php?title=Rasp-Node-Red-picam-mail&amp;diff=22792</id>
		<title>Rasp-Node-Red-picam-mail</title>
		<link rel="alternate" type="text/html" href="https://wiki.mchobby.be/index.php?title=Rasp-Node-Red-picam-mail&amp;diff=22792"/>
		<updated>2017-05-08T11:08:39Z</updated>

		<summary type="html">&lt;p&gt;AntoineWrt : /* Analyse des données récupérées dans l'onglet &amp;quot;Debug&amp;quot; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Rasp-Node-Red-NAV}}&lt;br /&gt;
&lt;br /&gt;
{{traduction}}&lt;br /&gt;
&lt;br /&gt;
== PiCamRED - Envoi périodique de photos par email avec PiCam et NodeRED ==&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-01.png|900px]]&lt;br /&gt;
&lt;br /&gt;
=== Description du projet ===&lt;br /&gt;
&lt;br /&gt;
Dans ce tutoriel, nous allons réaliser des photos à l'aide de la caméra du RaspBerry Pi 2/3 et envoyer ces clichés par email de manière périodique grâce à NodeRED.&lt;br /&gt;
Nous allons donc utiliser plusieurs blocs et décrire de manière détaillée le déroulement de chaque étape de la réalisation de ce projet.&lt;br /&gt;
&lt;br /&gt;
=== Création d'une action périodique ===&lt;br /&gt;
&lt;br /&gt;
Dans la colonne de gauche de NodeRED, se trouvent une liste de blocs à utiliser pour réaliser vos projets. Ils sont classés par &amp;quot;types&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Ainsi nous retrouvons les &amp;quot;types&amp;quot; suivants:&lt;br /&gt;
&lt;br /&gt;
* Input qui contient tous les blocs d'entrées&lt;br /&gt;
* Ouput qui contient tous les blocs de sortie&lt;br /&gt;
* Function qui contient des blocs de fonctions javascript etc...&lt;br /&gt;
* Social qui sont des blocs d'entrée ou sorties depuis ou vers les réseaux sociaux&lt;br /&gt;
* Storage qui sont des fonctions de lecture ou d'écriture de fichiers&lt;br /&gt;
* Analysis -&amp;gt;&amp;gt; Sentiment interprète du texte et détermine un score sur base d'un dictionnaire anglais, renvoie le texte avec ce score de -5 à +5, déterminant ainsi l'émotion susceptible d'être procuré par ce texte&lt;br /&gt;
* Advanced possède des outils permettant de détecter des changements dans des fichiers ou dossiers, de lire des flux RSS ou encore EXEC qui permet d'exécuter directement des commandes sous linux !&lt;br /&gt;
* Raspberry Pi contient des outils pour piloter/lire le GPIO du raspberry Pi&lt;br /&gt;
* Network qui contient un outil réseau de Ping&lt;br /&gt;
 &lt;br /&gt;
Nous allons créer une action périodique, c'est à dire paramétrer un bloc &amp;quot;INJECT&amp;quot; de manière à déclencher régulièrement une chaine d'actions que nous allons accrocher à la suite les unes après les autres.&lt;br /&gt;
Nous allons donc cliquer sur le bloc &amp;quot;Inject&amp;quot; dans la liste &amp;quot;Input&amp;quot; et maintenir ce clic pour le déplacer vers la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-02.png]]&lt;br /&gt;
&lt;br /&gt;
Nous obtiendrons donc une nouvelle instance &amp;quot;inject&amp;quot; qui portera le nom &amp;quot;Timestamp&amp;quot; (ce nom est attribué par défaut par NodeRED) comme dans la capture ci-dessous&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-03.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant double-cliquer sur celle-ci fin de l'éditer pour voir apparaitre le menu ci-dessous&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-04.png]]&lt;br /&gt;
&lt;br /&gt;
Il va falloir configurer ce bloc, mais avant tout voici une explication de celui-ci:&lt;br /&gt;
&lt;br /&gt;
==== Payload ====&lt;br /&gt;
&lt;br /&gt;
Le champs PayLoad est en fait le champ de données qui sera suivi d'un noeud à l'autre jusque à la fin de la chaine.&lt;br /&gt;
Dans ce module &amp;quot;inject&amp;quot;, nous allons donc déterminer quel type de données contiendra le &amp;quot;PayLoad&amp;quot; jusqu'à la fin de la chaine que l'on va réaliser.&lt;br /&gt;
&lt;br /&gt;
Dans notre cas, nous souhaitons construire un email, donc du contenu textuel, nous allons donc choisir &amp;quot;String&amp;quot; ce qui correspond à une chaine de caractères (du texte).&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-05.png]]&lt;br /&gt;
&lt;br /&gt;
==== Topic ====&lt;br /&gt;
&lt;br /&gt;
Le champs &amp;quot;Topic&amp;quot; est un champs de texte dans lequel nous allons mettre un sujet succinct décrivant notre chaine. &lt;br /&gt;
Dans notre cas, ce sujet fera office de sujet au mail que nous expédierons. &lt;br /&gt;
Nous allons donc être précis en un minimum de mots pour que le destinataire de l'email puisse facilement deviner le contenu de celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-06.png]]&lt;br /&gt;
&lt;br /&gt;
==== Repeat ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite choisir l'intervalle de déclenchement de notre action, sachant que nous avons le choix entre: &lt;br /&gt;
&lt;br /&gt;
* none  : pas de déclenchement périodique programmé&lt;br /&gt;
* interval : nous fixons un temps de déclenchement à partir du lancement du programme, l'action se réalisera à chaque fois que ce temps sera écoulé de manière répétée jusqu'à l'interruption manuelle du programme&lt;br /&gt;
* interval between times : nous fixons ici le déclenchement par interval, mais nous fixons aussi une fourchette d'heures et des jours pendant lesquels nous exécutons cet interval&lt;br /&gt;
* at a specific time : nous fixons une heure d'exécution, et un ou plusieurs jours d'exécution. Dans ce cas l'action n'est pas répétée en continu mais éxécutée une seule fois par jour à l'heure programmée&lt;br /&gt;
&lt;br /&gt;
Dans notre exemple, nous allons fixer un intervalle de 15 secondes pour commencer. Nous pourrons ensuite augmenter cette valeur pour éviter de recevoir trop d'emails avec des photos :D&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-07.png]]&lt;br /&gt;
&lt;br /&gt;
La case &amp;quot;inject once at start&amp;quot; permet de ne pas attendre le premier cycle avant d'exécuter une première fois l'action. Elle se lancera dès le lancement du programme, puis périodiquement selon les cycles déterminés par l'intervalle.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-08.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Le champs Name va déterminer le nom que portera le bloc dans l'espace de travail et dans les logs (si nous créons des blocs de log ensuite pour contrôler des étapes).&lt;br /&gt;
Il est important de bien établir ce nom de manière explicite, car le nom des blocs permettra de comprendre et retrouver facilement la logique du schéma construit, même si l'on a pas consulté celui-ci pendant une longue période.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-09.png]]&lt;br /&gt;
&lt;br /&gt;
=== Capture d'une image depuis la PiCam ===&lt;br /&gt;
&lt;br /&gt;
Nous allons aller à l'essentiel en ce qui concerne la capture photo en utilisant une commande simple pour prendre un cliché et renvoyer celui-ci dans le flux NodeRED grâce à un bloc permettant d'exécuter des commandes bash.&lt;br /&gt;
&lt;br /&gt;
{{ambox | text = Vous trouverez un TUTO détaillé sur la PiCam vous permettant de prendre la main, ou de la paramétrer si vous n'avez pas encore utilisé celle-ci auparavant: ....___TUTO___...}} &lt;br /&gt;
&lt;br /&gt;
Nous allons tout d'abord cliquer sur le bloc &amp;quot;Exec&amp;quot; dans la section &amp;quot;Advanced&amp;quot; de la colonne de gauche et glisser l'élément dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-10.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, cliquer sur le bloc nouvellement créé et configurer celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-11.png]]&lt;br /&gt;
&lt;br /&gt;
Le menu suivant s'affichera, et nous pourrons configurer le bloc &amp;quot;Exec&amp;quot; nouvellement créé.&lt;br /&gt;
&lt;br /&gt;
==== Command ====&lt;br /&gt;
&lt;br /&gt;
Nous allons y ajouter la commande à exécuter pour prendre une photo avec la caméra du Raspberry Pi et la stocker dans un fichier jpg dans le dossier /tmp/ de linux.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
raspistill -o /tmp/cam.jpg -w 640 -h 480&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous prenons soin de limiter la hauteur et la largeur de l'image afin de réduire son poids pour l'envoi par email.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-12.png]]&lt;br /&gt;
&lt;br /&gt;
==== +Append ====&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons décocher la case &amp;quot;msg.payload&amp;quot; si elle est cochée par défaut.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-13.png]]&lt;br /&gt;
&lt;br /&gt;
==== Extra input parameters et Timeout ====&lt;br /&gt;
&lt;br /&gt;
Nous n'aurons pas besoin de compléter ces champs pour notre projet.&lt;br /&gt;
&lt;br /&gt;
Si vous cochez le champ &amp;quot;Use spawn() instead of exec()?&amp;quot;, votre commande sera réalisée sous forme d'un processus résident et continuera de s'exécuter jusqu'à ce qu'elle se termine par elle-même (sauf si elle ne se termine jamais).&lt;br /&gt;
Cette solution implique que le programme n'attendra pas que cette commande soit réalisée pour passer aux étapes suivantes. &lt;br /&gt;
Si la suite de l'exécution de votre flux est susceptible d'utiliser le résultat de cette commande, nous vous déconseillons d'utiliser cette option sous peine de provoquer des erreurs à la suite du traitement du flux.&lt;br /&gt;
&lt;br /&gt;
Le champ &amp;quot;Timeout&amp;quot; permet de définir un temps d'attente maximum avant de mettre un terme à l'exécution de la commande. &lt;br /&gt;
Cela permet de débloquer la situation si la commande exécutée prends un temps anormalement long à s'exécuter.&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite compléter le champs nom, celui-ci sera utilisé pour nommer le bloc dans le &amp;quot;schéma&amp;quot;, mais aussi de nommer les logs comme pour le bloc &amp;quot;Exec&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-14.png]]&lt;br /&gt;
&lt;br /&gt;
=== Encodage de l'image en base64 ===&lt;br /&gt;
&lt;br /&gt;
Nous allons convertir la photo prise juste avant en utilisant une commande de conversion en base64.&lt;br /&gt;
Cela facilitera son injection dans un template HTML que nous allons créer ensuite pour construire un email.&lt;br /&gt;
&lt;br /&gt;
Nous allons tout d'abord cliquer sur le bloc &amp;quot;Exec&amp;quot; dans la section &amp;quot;Advanced&amp;quot; de la colonne de gauche et glisser l'élément dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-10.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, cliquer sur le bloc nouvellement créé et configurer celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-11.png]]&lt;br /&gt;
&lt;br /&gt;
Le menu suivant s'affichera, et nous pourrons configurer le bloc &amp;quot;Exec&amp;quot; nouvellement créé.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-15.png]]&lt;br /&gt;
&lt;br /&gt;
==== Command ====&lt;br /&gt;
&lt;br /&gt;
Nous allons y ajouter la commande à exécuter pour encoder en base 64 la photo prise précédemment avec la caméra du Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
base64 -i &amp;quot;/tmp/cam.jpg&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-16.png]]&lt;br /&gt;
&lt;br /&gt;
==== +Append ====&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons cocher la case &amp;quot;msg.payload&amp;quot; si elle n'est pas cochée par défaut pour que le résultat soit directement renvoyé par cette commande dans le &amp;quot;PayLoad&amp;quot; du flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-17.png]]&lt;br /&gt;
&lt;br /&gt;
==== Extra input parameters et Timeout ====&lt;br /&gt;
&lt;br /&gt;
Nous n'aurons pas besoin de compléter ces champs pour notre projet.&lt;br /&gt;
&lt;br /&gt;
Si vous cochez le champ &amp;quot;Use spawn() instead of exec()?&amp;quot;, votre commande sera réalisée sous forme d'un processus résident et continuera de s'exécuter jusqu'à ce qu'elle se termine par elle-même (sauf si elle ne se termine jamais).&lt;br /&gt;
Cette solution implique que le programme n'attendra pas que cette commande soit réalisée pour passer aux étapes suivantes. &lt;br /&gt;
Si la suite de l'exécution de votre flux est susceptible d'utiliser le résultat de cette commande, nous vous déconseillons d'utiliser cette option sous peine de provoquer des erreurs à la suite du traitement du flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-18.png]]&lt;br /&gt;
&lt;br /&gt;
Le champ &amp;quot;Timeout&amp;quot; permet de définir un temps d'attente maximum avant de mettre un terme à l'exécution de la commande. &lt;br /&gt;
Cela permet de débloquer la situation si la commande exécutée prends un temps anormalement long à s'exécuter.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-19.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite compléter le champs nom, celui-ci sera utilisé pour nommer le bloc dans le &amp;quot;schéma&amp;quot;, mais aussi de nommer les logs comme pour le bloc &amp;quot;Exec&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-20.png]]&lt;br /&gt;
&lt;br /&gt;
=== Création d'un email au format HTML ===&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant créer un template d'email au format HTML afin de mettre en forme le message que nous enverrons ensuite.&lt;br /&gt;
Nous allons pour cela utiliser un bloc &amp;quot;Template&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-21.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons attribuer un nom au bloc afin de l'identifier plus facilement dans le flux.&lt;br /&gt;
Nous allons donc le nommer &amp;quot;Contenu du mail&amp;quot; puisque nous créons le contenu du mail que nous enverrons ensuite.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-22.png]]&lt;br /&gt;
&lt;br /&gt;
==== Set property ====&lt;br /&gt;
&lt;br /&gt;
La propriété que nous souhaitons créer dans le flux est le &amp;quot;PayLoad&amp;quot;.&lt;br /&gt;
Ce PayLoad existe déjà, il contient pour le moment l'image au format &amp;quot;Base64&amp;quot; précédemment encodé.&lt;br /&gt;
Cela n'est pas un problème, après notre noeud (notre bloc), le PayLoad sera intégralement remplacé par le template que nous sommes en train de créer.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-23.png]]&lt;br /&gt;
&lt;br /&gt;
==== Template ====&lt;br /&gt;
&lt;br /&gt;
Dans ce template, nous allons créer une structure HTML de base minimum afin que la structure soit interprétée par la majorité des clients/webmail.&lt;br /&gt;
Vous pouvez la personnaliser à votre guise si vous avez les connaissances en HTML.&lt;br /&gt;
&lt;br /&gt;
Voici la structure de base pour notre projet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
    &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;meta charset=&amp;quot;utf8&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/head&amp;gt;&lt;br /&gt;
    &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Projet Photo par email&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;img src=&amp;quot;data:image/jpg;base64,{{payload}}&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pourrez remarquer que nous intégrons l'image en appelant le PayLoad à 'intérieur du code HTML dans la balise &amp;lt;img&amp;gt;.&lt;br /&gt;
C'est le PayLoad créé précédemment par le bloc &amp;quot;Exec&amp;quot; qui est récupéré à ce moment précis.&lt;br /&gt;
Ce PayLoad est remplacé dans le flux par le PayLoad complet avec notre template dans le flux par notre bloc Template.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-24.png]]&lt;br /&gt;
&lt;br /&gt;
=== Création d'un bloc (noeud) &amp;quot;Debug&amp;quot;  ===&lt;br /&gt;
&lt;br /&gt;
Nous allons ajouter la notion d'expéditeur dans le flux que nous avons créé à travers nos blocs (noeuds).&lt;br /&gt;
Pour rappel, actuellement nous avons deux propriétés avec des données dans notre flux. &lt;br /&gt;
Si nous voulons observer ce que nous avons créé jusque là, nous pouvons faire appel à un bloc &amp;quot;Debug&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Création du bloc &amp;quot;Debug&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Comme pour les blocs précédents, nous allons glisser/déposer un bloc débug dans l'espace de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-25.png]]&lt;br /&gt;
&lt;br /&gt;
Celui-ci s'appelle msg/payload par défaut&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-26.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons double-cliquer sur ce bloc pour le configurer.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-27.png]]&lt;br /&gt;
&lt;br /&gt;
==== Output ====&lt;br /&gt;
&lt;br /&gt;
Dans ce champs, nous allons choisir la partie du flux que nous souhaitons afficher, ou nous allons sélectionner le flux entier.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-28.png]]&lt;br /&gt;
&lt;br /&gt;
Sélectionner le flux entier, nous affichera le flux complet incluant toutes ses propriétés.&lt;br /&gt;
&lt;br /&gt;
 [[fichier:Rasp-Node-Red-picam-mail-29.png]]&lt;br /&gt;
&lt;br /&gt;
==== To =====&lt;br /&gt;
&lt;br /&gt;
La propriété &amp;quot;To&amp;quot; nous permet de choisir ou nous souhaitons afficher les données que nous récupérons. &lt;br /&gt;
Soit nous les affichons uniquement dans l'onglet &amp;quot;Debug&amp;quot; à droite de l'espace de travail, soit nous l'affichons dans cet onglet mais aussi dans la console de NodeJS.&lt;br /&gt;
Dans notre cas, nous allons nous contenter d'afficher nos éléments dans l'onglet de &amp;quot;Debug&amp;quot; à droite de notre espace de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-30.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Le champs Name nous servira à identifier quel bloc de &amp;quot;Debug&amp;quot; affiche les données en console ou dans l'onglet &amp;quot;Debug&amp;quot;. &lt;br /&gt;
Il faut donc le nommer efficacement pour bien attacher et comprendre les données que nous récupérons, surtout si nous en plaçons plusieurs dans le flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-31.png]]&lt;br /&gt;
&lt;br /&gt;
==== Exploitation et compréhension des données récupérées ====&lt;br /&gt;
&lt;br /&gt;
Nous avons placé notre bloc &amp;quot;Debug&amp;quot; à la suite du flux en dernière position. &lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-32.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons donc déployer le programme en cliquant sur &amp;quot;Deploy&amp;quot; en haut à droite de la page. &lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-33.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons exécuter manuellement le programme en cliquant sur le bouton se trouvant en début de chaîne:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-34.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite afficher l'onglet &amp;quot;Debug&amp;quot; sur le coté droit de la page et analyser les données récupérées:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-35.png]]&lt;br /&gt;
&lt;br /&gt;
==== Analyse des données récupérées dans l'onglet &amp;quot;Debug&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
08/05/2017 à 12:54:31 node: FORMATAGE&lt;br /&gt;
MCHobby - Photo bureau : msg : Object&lt;br /&gt;
object&lt;br /&gt;
_msgid: &amp;quot;81efe35c.3208d&amp;quot;&lt;br /&gt;
topic: &amp;quot;MCHobby - Photo bureau&amp;quot;&lt;br /&gt;
payload: &amp;quot;&amp;lt;html&amp;gt;↵ &amp;lt;head&amp;gt;↵ &amp;lt;meta charset=&amp;quot;utf8&amp;quot;/&amp;gt;↵ ↵ &amp;lt;/head&amp;gt;↵ &amp;lt;body&amp;gt;↵ &amp;lt;h1&amp;gt;MCHobby - Photo bureau&amp;lt;/h1&amp;gt;↵ &amp;lt;p&amp;gt;Cette photo est un instantané pris dans les bureaux de MCHobby.&amp;lt;/p&amp;gt;↵ &lt;br /&gt;
&amp;lt;img src=&amp;quot;data:image/jpg;base64,&amp;amp;#x2F;9j&amp;amp;#x2F;4WP6x2.../&amp;gt;&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Comme vous pourrez le constater, chaque élément du noeud est détaillé.&lt;br /&gt;
Les données sont cependant tronquées, le noeud &amp;quot;Debug&amp;quot; ne nous fourni pas la totalité du &amp;quot;PayLoad&amp;quot; mais nous avons déjà un bon aperçu des données qu'il contient.&lt;br /&gt;
&lt;br /&gt;
_msgid: est un Id unique de message&lt;br /&gt;
topic: est le sujet du mail, nous l'avons déterminé dans le premier bloc&lt;br /&gt;
payload: contient les données du message formatées par le template que nous avons créé et complété par l'image en base64.&lt;br /&gt;
&lt;br /&gt;
Les noeuds &amp;quot;Debug&amp;quot; sont pratiques. Ils nous permettent d'afficher une partie ou la totalité du flux tel qu'il est à l'endroit ou ils sont placés.&lt;br /&gt;
&lt;br /&gt;
Cela peut permettre d'identifier et de résoudre plus facilement des problèmes dans des opérations plus complexes...&lt;br /&gt;
&lt;br /&gt;
=== Création d'un expéditeur ===&lt;br /&gt;
&lt;br /&gt;
Nous avons construit petit à petit un message avec un sujet, mais il manque encore un détail: l'expéditeur de l'email que nous allons envoyer.&lt;br /&gt;
&lt;br /&gt;
Voici une méthode pour ajouter cet expéditeur dans le flux.&lt;br /&gt;
&lt;br /&gt;
{{Rasp-Node-Red-TRAILER}}&lt;/div&gt;</summary>
		<author><name>AntoineWrt</name></author>
	</entry>
	<entry>
		<id>https://wiki.mchobby.be/index.php?title=Rasp-Node-Red-picam-mail&amp;diff=22791</id>
		<title>Rasp-Node-Red-picam-mail</title>
		<link rel="alternate" type="text/html" href="https://wiki.mchobby.be/index.php?title=Rasp-Node-Red-picam-mail&amp;diff=22791"/>
		<updated>2017-05-08T10:59:56Z</updated>

		<summary type="html">&lt;p&gt;AntoineWrt : /* Analyse des données récupérées dans l'onglet &amp;quot;Debug&amp;quot; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Rasp-Node-Red-NAV}}&lt;br /&gt;
&lt;br /&gt;
{{traduction}}&lt;br /&gt;
&lt;br /&gt;
== PiCamRED - Envoi périodique de photos par email avec PiCam et NodeRED ==&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-01.png|900px]]&lt;br /&gt;
&lt;br /&gt;
=== Description du projet ===&lt;br /&gt;
&lt;br /&gt;
Dans ce tutoriel, nous allons réaliser des photos à l'aide de la caméra du RaspBerry Pi 2/3 et envoyer ces clichés par email de manière périodique grâce à NodeRED.&lt;br /&gt;
Nous allons donc utiliser plusieurs blocs et décrire de manière détaillée le déroulement de chaque étape de la réalisation de ce projet.&lt;br /&gt;
&lt;br /&gt;
=== Création d'une action périodique ===&lt;br /&gt;
&lt;br /&gt;
Dans la colonne de gauche de NodeRED, se trouvent une liste de blocs à utiliser pour réaliser vos projets. Ils sont classés par &amp;quot;types&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
Ainsi nous retrouvons les &amp;quot;types&amp;quot; suivants:&lt;br /&gt;
&lt;br /&gt;
* Input qui contient tous les blocs d'entrées&lt;br /&gt;
* Ouput qui contient tous les blocs de sortie&lt;br /&gt;
* Function qui contient des blocs de fonctions javascript etc...&lt;br /&gt;
* Social qui sont des blocs d'entrée ou sorties depuis ou vers les réseaux sociaux&lt;br /&gt;
* Storage qui sont des fonctions de lecture ou d'écriture de fichiers&lt;br /&gt;
* Analysis -&amp;gt;&amp;gt; Sentiment interprète du texte et détermine un score sur base d'un dictionnaire anglais, renvoie le texte avec ce score de -5 à +5, déterminant ainsi l'émotion susceptible d'être procuré par ce texte&lt;br /&gt;
* Advanced possède des outils permettant de détecter des changements dans des fichiers ou dossiers, de lire des flux RSS ou encore EXEC qui permet d'exécuter directement des commandes sous linux !&lt;br /&gt;
* Raspberry Pi contient des outils pour piloter/lire le GPIO du raspberry Pi&lt;br /&gt;
* Network qui contient un outil réseau de Ping&lt;br /&gt;
 &lt;br /&gt;
Nous allons créer une action périodique, c'est à dire paramétrer un bloc &amp;quot;INJECT&amp;quot; de manière à déclencher régulièrement une chaine d'actions que nous allons accrocher à la suite les unes après les autres.&lt;br /&gt;
Nous allons donc cliquer sur le bloc &amp;quot;Inject&amp;quot; dans la liste &amp;quot;Input&amp;quot; et maintenir ce clic pour le déplacer vers la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-02.png]]&lt;br /&gt;
&lt;br /&gt;
Nous obtiendrons donc une nouvelle instance &amp;quot;inject&amp;quot; qui portera le nom &amp;quot;Timestamp&amp;quot; (ce nom est attribué par défaut par NodeRED) comme dans la capture ci-dessous&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-03.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant double-cliquer sur celle-ci fin de l'éditer pour voir apparaitre le menu ci-dessous&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-04.png]]&lt;br /&gt;
&lt;br /&gt;
Il va falloir configurer ce bloc, mais avant tout voici une explication de celui-ci:&lt;br /&gt;
&lt;br /&gt;
==== Payload ====&lt;br /&gt;
&lt;br /&gt;
Le champs PayLoad est en fait le champ de données qui sera suivi d'un noeud à l'autre jusque à la fin de la chaine.&lt;br /&gt;
Dans ce module &amp;quot;inject&amp;quot;, nous allons donc déterminer quel type de données contiendra le &amp;quot;PayLoad&amp;quot; jusqu'à la fin de la chaine que l'on va réaliser.&lt;br /&gt;
&lt;br /&gt;
Dans notre cas, nous souhaitons construire un email, donc du contenu textuel, nous allons donc choisir &amp;quot;String&amp;quot; ce qui correspond à une chaine de caractères (du texte).&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-05.png]]&lt;br /&gt;
&lt;br /&gt;
==== Topic ====&lt;br /&gt;
&lt;br /&gt;
Le champs &amp;quot;Topic&amp;quot; est un champs de texte dans lequel nous allons mettre un sujet succinct décrivant notre chaine. &lt;br /&gt;
Dans notre cas, ce sujet fera office de sujet au mail que nous expédierons. &lt;br /&gt;
Nous allons donc être précis en un minimum de mots pour que le destinataire de l'email puisse facilement deviner le contenu de celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-06.png]]&lt;br /&gt;
&lt;br /&gt;
==== Repeat ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite choisir l'intervalle de déclenchement de notre action, sachant que nous avons le choix entre: &lt;br /&gt;
&lt;br /&gt;
* none  : pas de déclenchement périodique programmé&lt;br /&gt;
* interval : nous fixons un temps de déclenchement à partir du lancement du programme, l'action se réalisera à chaque fois que ce temps sera écoulé de manière répétée jusqu'à l'interruption manuelle du programme&lt;br /&gt;
* interval between times : nous fixons ici le déclenchement par interval, mais nous fixons aussi une fourchette d'heures et des jours pendant lesquels nous exécutons cet interval&lt;br /&gt;
* at a specific time : nous fixons une heure d'exécution, et un ou plusieurs jours d'exécution. Dans ce cas l'action n'est pas répétée en continu mais éxécutée une seule fois par jour à l'heure programmée&lt;br /&gt;
&lt;br /&gt;
Dans notre exemple, nous allons fixer un intervalle de 15 secondes pour commencer. Nous pourrons ensuite augmenter cette valeur pour éviter de recevoir trop d'emails avec des photos :D&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-07.png]]&lt;br /&gt;
&lt;br /&gt;
La case &amp;quot;inject once at start&amp;quot; permet de ne pas attendre le premier cycle avant d'exécuter une première fois l'action. Elle se lancera dès le lancement du programme, puis périodiquement selon les cycles déterminés par l'intervalle.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-08.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Le champs Name va déterminer le nom que portera le bloc dans l'espace de travail et dans les logs (si nous créons des blocs de log ensuite pour contrôler des étapes).&lt;br /&gt;
Il est important de bien établir ce nom de manière explicite, car le nom des blocs permettra de comprendre et retrouver facilement la logique du schéma construit, même si l'on a pas consulté celui-ci pendant une longue période.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-09.png]]&lt;br /&gt;
&lt;br /&gt;
=== Capture d'une image depuis la PiCam ===&lt;br /&gt;
&lt;br /&gt;
Nous allons aller à l'essentiel en ce qui concerne la capture photo en utilisant une commande simple pour prendre un cliché et renvoyer celui-ci dans le flux NodeRED grâce à un bloc permettant d'exécuter des commandes bash.&lt;br /&gt;
&lt;br /&gt;
{{ambox | text = Vous trouverez un TUTO détaillé sur la PiCam vous permettant de prendre la main, ou de la paramétrer si vous n'avez pas encore utilisé celle-ci auparavant: ....___TUTO___...}} &lt;br /&gt;
&lt;br /&gt;
Nous allons tout d'abord cliquer sur le bloc &amp;quot;Exec&amp;quot; dans la section &amp;quot;Advanced&amp;quot; de la colonne de gauche et glisser l'élément dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-10.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, cliquer sur le bloc nouvellement créé et configurer celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-11.png]]&lt;br /&gt;
&lt;br /&gt;
Le menu suivant s'affichera, et nous pourrons configurer le bloc &amp;quot;Exec&amp;quot; nouvellement créé.&lt;br /&gt;
&lt;br /&gt;
==== Command ====&lt;br /&gt;
&lt;br /&gt;
Nous allons y ajouter la commande à exécuter pour prendre une photo avec la caméra du Raspberry Pi et la stocker dans un fichier jpg dans le dossier /tmp/ de linux.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
raspistill -o /tmp/cam.jpg -w 640 -h 480&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous prenons soin de limiter la hauteur et la largeur de l'image afin de réduire son poids pour l'envoi par email.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-12.png]]&lt;br /&gt;
&lt;br /&gt;
==== +Append ====&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons décocher la case &amp;quot;msg.payload&amp;quot; si elle est cochée par défaut.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-13.png]]&lt;br /&gt;
&lt;br /&gt;
==== Extra input parameters et Timeout ====&lt;br /&gt;
&lt;br /&gt;
Nous n'aurons pas besoin de compléter ces champs pour notre projet.&lt;br /&gt;
&lt;br /&gt;
Si vous cochez le champ &amp;quot;Use spawn() instead of exec()?&amp;quot;, votre commande sera réalisée sous forme d'un processus résident et continuera de s'exécuter jusqu'à ce qu'elle se termine par elle-même (sauf si elle ne se termine jamais).&lt;br /&gt;
Cette solution implique que le programme n'attendra pas que cette commande soit réalisée pour passer aux étapes suivantes. &lt;br /&gt;
Si la suite de l'exécution de votre flux est susceptible d'utiliser le résultat de cette commande, nous vous déconseillons d'utiliser cette option sous peine de provoquer des erreurs à la suite du traitement du flux.&lt;br /&gt;
&lt;br /&gt;
Le champ &amp;quot;Timeout&amp;quot; permet de définir un temps d'attente maximum avant de mettre un terme à l'exécution de la commande. &lt;br /&gt;
Cela permet de débloquer la situation si la commande exécutée prends un temps anormalement long à s'exécuter.&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite compléter le champs nom, celui-ci sera utilisé pour nommer le bloc dans le &amp;quot;schéma&amp;quot;, mais aussi de nommer les logs comme pour le bloc &amp;quot;Exec&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-14.png]]&lt;br /&gt;
&lt;br /&gt;
=== Encodage de l'image en base64 ===&lt;br /&gt;
&lt;br /&gt;
Nous allons convertir la photo prise juste avant en utilisant une commande de conversion en base64.&lt;br /&gt;
Cela facilitera son injection dans un template HTML que nous allons créer ensuite pour construire un email.&lt;br /&gt;
&lt;br /&gt;
Nous allons tout d'abord cliquer sur le bloc &amp;quot;Exec&amp;quot; dans la section &amp;quot;Advanced&amp;quot; de la colonne de gauche et glisser l'élément dans la zone de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-10.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, cliquer sur le bloc nouvellement créé et configurer celui-ci.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-11.png]]&lt;br /&gt;
&lt;br /&gt;
Le menu suivant s'affichera, et nous pourrons configurer le bloc &amp;quot;Exec&amp;quot; nouvellement créé.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-15.png]]&lt;br /&gt;
&lt;br /&gt;
==== Command ====&lt;br /&gt;
&lt;br /&gt;
Nous allons y ajouter la commande à exécuter pour encoder en base 64 la photo prise précédemment avec la caméra du Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
base64 -i &amp;quot;/tmp/cam.jpg&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-16.png]]&lt;br /&gt;
&lt;br /&gt;
==== +Append ====&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons cocher la case &amp;quot;msg.payload&amp;quot; si elle n'est pas cochée par défaut pour que le résultat soit directement renvoyé par cette commande dans le &amp;quot;PayLoad&amp;quot; du flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-17.png]]&lt;br /&gt;
&lt;br /&gt;
==== Extra input parameters et Timeout ====&lt;br /&gt;
&lt;br /&gt;
Nous n'aurons pas besoin de compléter ces champs pour notre projet.&lt;br /&gt;
&lt;br /&gt;
Si vous cochez le champ &amp;quot;Use spawn() instead of exec()?&amp;quot;, votre commande sera réalisée sous forme d'un processus résident et continuera de s'exécuter jusqu'à ce qu'elle se termine par elle-même (sauf si elle ne se termine jamais).&lt;br /&gt;
Cette solution implique que le programme n'attendra pas que cette commande soit réalisée pour passer aux étapes suivantes. &lt;br /&gt;
Si la suite de l'exécution de votre flux est susceptible d'utiliser le résultat de cette commande, nous vous déconseillons d'utiliser cette option sous peine de provoquer des erreurs à la suite du traitement du flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-18.png]]&lt;br /&gt;
&lt;br /&gt;
Le champ &amp;quot;Timeout&amp;quot; permet de définir un temps d'attente maximum avant de mettre un terme à l'exécution de la commande. &lt;br /&gt;
Cela permet de débloquer la situation si la commande exécutée prends un temps anormalement long à s'exécuter.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-19.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite compléter le champs nom, celui-ci sera utilisé pour nommer le bloc dans le &amp;quot;schéma&amp;quot;, mais aussi de nommer les logs comme pour le bloc &amp;quot;Exec&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-20.png]]&lt;br /&gt;
&lt;br /&gt;
=== Création d'un email au format HTML ===&lt;br /&gt;
&lt;br /&gt;
Nous allons maintenant créer un template d'email au format HTML afin de mettre en forme le message que nous enverrons ensuite.&lt;br /&gt;
Nous allons pour cela utiliser un bloc &amp;quot;Template&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-21.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Nous allons attribuer un nom au bloc afin de l'identifier plus facilement dans le flux.&lt;br /&gt;
Nous allons donc le nommer &amp;quot;Contenu du mail&amp;quot; puisque nous créons le contenu du mail que nous enverrons ensuite.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-22.png]]&lt;br /&gt;
&lt;br /&gt;
==== Set property ====&lt;br /&gt;
&lt;br /&gt;
La propriété que nous souhaitons créer dans le flux est le &amp;quot;PayLoad&amp;quot;.&lt;br /&gt;
Ce PayLoad existe déjà, il contient pour le moment l'image au format &amp;quot;Base64&amp;quot; précédemment encodé.&lt;br /&gt;
Cela n'est pas un problème, après notre noeud (notre bloc), le PayLoad sera intégralement remplacé par le template que nous sommes en train de créer.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-23.png]]&lt;br /&gt;
&lt;br /&gt;
==== Template ====&lt;br /&gt;
&lt;br /&gt;
Dans ce template, nous allons créer une structure HTML de base minimum afin que la structure soit interprétée par la majorité des clients/webmail.&lt;br /&gt;
Vous pouvez la personnaliser à votre guise si vous avez les connaissances en HTML.&lt;br /&gt;
&lt;br /&gt;
Voici la structure de base pour notre projet:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
    &amp;lt;head&amp;gt;&lt;br /&gt;
        &amp;lt;meta charset=&amp;quot;utf8&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/head&amp;gt;&lt;br /&gt;
    &amp;lt;body&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;Projet Photo par email&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &amp;lt;img src=&amp;quot;data:image/jpg;base64,{{payload}}&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Vous pourrez remarquer que nous intégrons l'image en appelant le PayLoad à 'intérieur du code HTML dans la balise &amp;lt;img&amp;gt;.&lt;br /&gt;
C'est le PayLoad créé précédemment par le bloc &amp;quot;Exec&amp;quot; qui est récupéré à ce moment précis.&lt;br /&gt;
Ce PayLoad est remplacé dans le flux par le PayLoad complet avec notre template dans le flux par notre bloc Template.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-24.png]]&lt;br /&gt;
&lt;br /&gt;
=== Création d'un bloc (noeud) &amp;quot;Debug&amp;quot;  ===&lt;br /&gt;
&lt;br /&gt;
Nous allons ajouter la notion d'expéditeur dans le flux que nous avons créé à travers nos blocs (noeuds).&lt;br /&gt;
Pour rappel, actuellement nous avons deux propriétés avec des données dans notre flux. &lt;br /&gt;
Si nous voulons observer ce que nous avons créé jusque là, nous pouvons faire appel à un bloc &amp;quot;Debug&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==== Création du bloc &amp;quot;Debug&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Comme pour les blocs précédents, nous allons glisser/déposer un bloc débug dans l'espace de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-25.png]]&lt;br /&gt;
&lt;br /&gt;
Celui-ci s'appelle msg/payload par défaut&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-26.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons double-cliquer sur ce bloc pour le configurer.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-27.png]]&lt;br /&gt;
&lt;br /&gt;
==== Output ====&lt;br /&gt;
&lt;br /&gt;
Dans ce champs, nous allons choisir la partie du flux que nous souhaitons afficher, ou nous allons sélectionner le flux entier.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-28.png]]&lt;br /&gt;
&lt;br /&gt;
Sélectionner le flux entier, nous affichera le flux complet incluant toutes ses propriétés.&lt;br /&gt;
&lt;br /&gt;
 [[fichier:Rasp-Node-Red-picam-mail-29.png]]&lt;br /&gt;
&lt;br /&gt;
==== To =====&lt;br /&gt;
&lt;br /&gt;
La propriété &amp;quot;To&amp;quot; nous permet de choisir ou nous souhaitons afficher les données que nous récupérons. &lt;br /&gt;
Soit nous les affichons uniquement dans l'onglet &amp;quot;Debug&amp;quot; à droite de l'espace de travail, soit nous l'affichons dans cet onglet mais aussi dans la console de NodeJS.&lt;br /&gt;
Dans notre cas, nous allons nous contenter d'afficher nos éléments dans l'onglet de &amp;quot;Debug&amp;quot; à droite de notre espace de travail.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-30.png]]&lt;br /&gt;
&lt;br /&gt;
==== Name ====&lt;br /&gt;
&lt;br /&gt;
Le champs Name nous servira à identifier quel bloc de &amp;quot;Debug&amp;quot; affiche les données en console ou dans l'onglet &amp;quot;Debug&amp;quot;. &lt;br /&gt;
Il faut donc le nommer efficacement pour bien attacher et comprendre les données que nous récupérons, surtout si nous en plaçons plusieurs dans le flux.&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-31.png]]&lt;br /&gt;
&lt;br /&gt;
==== Exploitation et compréhension des données récupérées ====&lt;br /&gt;
&lt;br /&gt;
Nous avons placé notre bloc &amp;quot;Debug&amp;quot; à la suite du flux en dernière position. &lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-32.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons donc déployer le programme en cliquant sur &amp;quot;Deploy&amp;quot; en haut à droite de la page. &lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-33.png]]&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous allons exécuter manuellement le programme en cliquant sur le bouton se trouvant en début de chaîne:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-34.png]]&lt;br /&gt;
&lt;br /&gt;
Nous allons ensuite afficher l'onglet &amp;quot;Debug&amp;quot; sur le coté droit de la page et analyser les données récupérées:&lt;br /&gt;
&lt;br /&gt;
[[fichier:Rasp-Node-Red-picam-mail-35.png]]&lt;br /&gt;
&lt;br /&gt;
==== Analyse des données récupérées dans l'onglet &amp;quot;Debug&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
08/05/2017 à 12:54:31node: FORMATAGE&lt;br /&gt;
MCHobby - Photo bureau : msg : Object&lt;br /&gt;
object&lt;br /&gt;
_msgid: &amp;quot;81efe35c.3208d&amp;quot;&lt;br /&gt;
topic: &amp;quot;MCHobby - Photo bureau&amp;quot;&lt;br /&gt;
payload: &amp;quot;&amp;lt;html&amp;gt;↵ &amp;lt;head&amp;gt;↵ &amp;lt;meta charset=&amp;quot;utf8&amp;quot;/&amp;gt;↵ ↵ &amp;lt;/head&amp;gt;↵ &amp;lt;body&amp;gt;↵ &amp;lt;h1&amp;gt;MCHobby - Photo bureau&amp;lt;/h1&amp;gt;↵ &amp;lt;p&amp;gt;Cette photo est un instantané pris dans les bureaux de MCHobby.&amp;lt;/p&amp;gt;↵ &amp;lt;img src=&amp;quot;data:image/jpg;base64,&amp;amp;#x2F;9j&amp;amp;#x2F;4WP6RXhpZgAATU0AKgAAAAgACgEAAAQAAAABAAACgAEBAAQAAAABAAAB4AEPAAIAAAAMAAAA↵hgEQAAIAAAAKAAAAkgEaAAUAAAABAAAAnAEbAAUAAAABAAAApAEoAAMAAAABAAIAAAEyAAIAAAAU↵AAAArAITAAMAAAABAAEAAIdpAAQAAAABAAAAwAAAA3xSYXNwYmVycnlQaQBSUF9vdjU2NDcAAAAA↵SAAAAAEAAABIAAAAATIwMTc6MDU6MDggMTI6NTQ6MzAAABeCmgAFAAAAAQAAAdqCnQAFAAAAAQAA↵AeKIIgADAAAAAQADAACIJwADAAAAAQD6AACQAAAHAAAABDAyMjCQAwACAAAAFAAAAeqQBAACAAAA↵FAAAAf6RAQAHAAAABAECAwCSAQAKAAAAAQAAAhKSAgAFAAAAAQAAAhqSAwAKAAAAAQAAAiKSBQAF↵AAAAAQAAAiqSBwADAAAAAQACAACSCQADAAAAAQAAAACSCgAFAAAAAQAAAjKSfAAHAAABMAAAAjqg↵AAAHAAAABDAxMDCgAQADAAAAAQABAACgAgAEAAAAAQAAAoCgAwAEAAAAAQAAAeCgBQAEAAAAAQAA↵A2qkAgADAAAAAQAAAACkAwADAAAAAQAAAAAAAAAAAAEPYwAPQkAAAHE4AAAnEDIwMTc6MDU6MDgg↵MTI6NTQ6MzAAMjAxNzowNTowOCAxMjo1NDozMAAAOrTCAA9CQAAAd&amp;amp;#x2...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Création d'un expéditeur ===&lt;br /&gt;
&lt;br /&gt;
Nous avons construit petit à petit un message avec un sujet, mais il manque encore un détail: l'expéditeur de l'email que nous allons envoyer.&lt;br /&gt;
&lt;br /&gt;
Voici une méthode pour ajouter cet expéditeur dans le flux.&lt;br /&gt;
&lt;br /&gt;
{{Rasp-Node-Red-TRAILER}}&lt;/div&gt;</summary>
		<author><name>AntoineWrt</name></author>
	</entry>
</feed>