﻿<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Auteur Sebastien Warin - Constellation</title>
	<atom:link href="https://developer.myconstellation.io/author/admin/feed/" rel="self" type="application/rss+xml" />
	<link>https://developer.myconstellation.io/author/admin/</link>
	<description>Votre plateforme d&#039;interconnexion</description>
	<lastBuildDate>Thu, 13 Jun 2019 13:58:18 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.0.11</generator>

<image>
	<url>https://developer.myconstellation.io/wp-content/uploads/2016/02/256x256-e1457476015859.png</url>
	<title>Auteur Sebastien Warin - Constellation</title>
	<link>https://developer.myconstellation.io/author/admin/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Constellation SDK 1.8.6 : extension asynchrone et fin du support pour Visual Studio 2012 et 2013</title>
		<link>https://developer.myconstellation.io/blog/constellation-sdk-1-8-6/</link>
					<comments>https://developer.myconstellation.io/blog/constellation-sdk-1-8-6/#comments</comments>
		
		<dc:creator><![CDATA[Sebastien Warin]]></dc:creator>
		<pubDate>Thu, 13 Jun 2019 13:58:01 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[SDK]]></category>
		<category><![CDATA[VisualStudio]]></category>
		<guid isPermaLink="false">https://developer.myconstellation.io/?p=6330</guid>

					<description><![CDATA[<p>Peu de temps après la version 1.8.5 annonçant le support de Visual Studio 2019, le SDK sort une nouvelle mise à jour, la version 1.8.6. Extension Visual Studio « Asynchrone » La grande nouveauté de cette mise à jour est la réécriture</p>
<p>The post <a rel="nofollow" href="https://developer.myconstellation.io/blog/constellation-sdk-1-8-6/">Constellation SDK 1.8.6 : extension asynchrone et fin du support pour Visual Studio 2012 et 2013</a> appeared first on <a rel="nofollow" href="https://developer.myconstellation.io">Constellation</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Peu de temps après <a href="/blog/constellation-sdk-1-8-5-avec-le-support-de-visual-studio-2019/">la version 1.8.5 annonçant</a> le support de Visual Studio 2019, le SDK sort une nouvelle mise à jour, la version 1.8.6.</p>
<h3>Extension Visual Studio « Asynchrone »</h3>
<p>La grande nouveauté de cette mise à jour est la réécriture du « package » Visual Studio en « package asynchrone ».</p>
<p>La notion d&rsquo;extension (ou package) « asynchrone » a été introduite depuis la version 2015 de Visual Studio (14.0) afin de charger les extensions non plus au démarrage de VS de manière séquentielle mais de façon asynchrone, sans bloquer ou ralentir le démarrage de l&rsquo;IDE.</p>
<p>L&rsquo;extension Visual Studio du SDK Constellation a un temps d&rsquo;initialisation extrêmement rapide et est restée depuis sa première version en Mars 2015 un package « classique » et non asynchrone.</p>
<p>Seulement depuis les dernières versions de Visual Studio, les extensions « non-asynchrones » sont désormais considérées comme obsolètes et sont/seront automatiquement désactivées dans l&rsquo;IDE :</p>
<p><a href="https://developer.myconstellation.io/wp-content/uploads/2019/06/vs16-sdk-warning.png"><img loading="lazy" class="alignnone wp-image-6331 aligncenter colorbox-6330" src="https://developer.myconstellation.io/wp-content/uploads/2019/06/vs16-sdk-warning.png" alt="" width="450" height="44" srcset="https://developer.myconstellation.io/wp-content/uploads/2019/06/vs16-sdk-warning.png 960w, https://developer.myconstellation.io/wp-content/uploads/2019/06/vs16-sdk-warning-300x29.png 300w, https://developer.myconstellation.io/wp-content/uploads/2019/06/vs16-sdk-warning-768x75.png 768w" sizes="(max-width: 450px) 100vw, 450px" /></a></p>
<p>C&rsquo;est pourquoi la roadmap concernant le SDK a été accéléré afin de porter le SDK dans une extension de type « asynchrone ».</p>
<p>Le SDK n&rsquo;est donc plus initialisé au démarrage de Visual Studio, mais en tache de fond afin de se conformer aux nouvelles exigences en matière de performance et UX de l&rsquo;IDE de Microsoft.</p>
<h3>Fin du support pour Visual Studio 2012 et 2013</h3>
<p>La migration vers cette notion de « package asynchrone » (introduite depuis VS2015) met de côté Visual Studio 2012 et Visual Studio 2013.</p>
<p>Comme le support officiel de Microsoft pour ces deux versions de l&rsquo;IDE a déjà pris fin, le SDK Constellation ne supportera plus non plus ces deux versions.</p>
<p>Ainsi, à compter de cette version du SDK 1.8.6, nous supportons officiellement Visual Studio 2015 (14.x), VIsual Studio 2017 (15.x) et  le nouveau Visual Studio 2019 (16.x)</p>
<p>Pour installer ou mettre à jour votre SDK, rien de plus simple, lancez simplement le Web Platform Installer et sélectionnez “<em>Constellation SDK</em>” dans la liste des composants à installer/mettre à jour. <div class="wpfilebase-file-default" onclick="if('undefined' == typeof event.target.href) document.getElementById('wpfb-file-link-1').click();">
  <div class="icon"><a href="https://developer.myconstellation.io/download/installers/Constellation-Web-Platform-Installer-1.9.735.exe" target="_blank" title="Download Constellation Web Platform Installer"><img class="colorbox-6330"  align="middle" src="https://developer.myconstellation.io/wp-includes/images/crystal/interactive.png" alt="Constellation Web Platform Installer" /></a></div>
  <div class="filetitle">
    <a href="https://developer.myconstellation.io/download/installers/Constellation-Web-Platform-Installer-1.9.735.exe" title="Download Constellation Web Platform Installer" target="_blank" id="wpfb-file-link-1">Constellation Web Platform Installer</a>
    <a href="https://developer.myconstellation.io/getting-started/installer-constellation/#wpfb-file-42" class="postlink">» Article</a>
    <br />
    Constellation-Web-Platform-Installer-1.9.735.exe<br />
    Version: 1.9.735<br />
  </div>
  <div class="info">
    1.2 MiB<br />
    2136 Downloads<br />
    <a href="#" onclick="return wpfilebase_filedetails(1);">Détails</a>
  </div>
  <div class="details" id="wpfilebase-filedetails1" style="display: none;">
  <p>Constellation Web Platform Installer pour Windows</p>
  <table border="0">
   
   <tr><td><strong>Auteur:</strong></td><td>MyConstellation.io</td></tr>
   <tr><td><strong>Plateformes:</strong></td><td>Windows</td></tr>
   
   <tr><td><strong>Catégorie:</strong></td><td>Web Platform Installers</td></tr>
   <tr><td><strong>Licence:</strong></td><td>Constellation License Agreement</td></tr>
   <tr><td><strong>Date:</strong></td><td>juin 15, 2020</td></tr>
  </table>
  </div>
 <div style="clear: both;"></div>
</div></p>
<p>The post <a rel="nofollow" href="https://developer.myconstellation.io/blog/constellation-sdk-1-8-6/">Constellation SDK 1.8.6 : extension asynchrone et fin du support pour Visual Studio 2012 et 2013</a> appeared first on <a rel="nofollow" href="https://developer.myconstellation.io">Constellation</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://developer.myconstellation.io/blog/constellation-sdk-1-8-6/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Mise à jour de la Console 1.8.5</title>
		<link>https://developer.myconstellation.io/blog/mise-jour-de-la-console-1-8-5/</link>
					<comments>https://developer.myconstellation.io/blog/mise-jour-de-la-console-1-8-5/#respond</comments>
		
		<dc:creator><![CDATA[Sebastien Warin]]></dc:creator>
		<pubDate>Thu, 13 Jun 2019 13:17:55 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Console]]></category>
		<guid isPermaLink="false">https://developer.myconstellation.io/?p=6317</guid>

					<description><![CDATA[<p>La Console Constellation a suivi plusieurs mises à jour sur le canal “Beta” depuis le début de l’année avant d&#8217;être promue en version 1.8.5 officiellement sur le canal Stable. Cet article vous présente les nouveautés de cette mise à jour.</p>
<p>The post <a rel="nofollow" href="https://developer.myconstellation.io/blog/mise-jour-de-la-console-1-8-5/">Mise à jour de la Console 1.8.5</a> appeared first on <a rel="nofollow" href="https://developer.myconstellation.io">Constellation</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>La Console Constellation a suivi plusieurs mises à jour sur le canal “Beta” depuis le début de l’année avant d&rsquo;être promue en version 1.8.5 officiellement sur le canal Stable. Cet article vous présente les nouveautés de cette mise à jour.</p>
<h3>Amélioration des performances</h3>
<p>Le fait le plus marquant de cette version 1.8.5 est l’amélioration des performances notamment en ce qui concerne les explorateurs de <a href="/constellation-platform/constellation-console/stateobjects-explorer/">StateObject</a> et <a href="/constellation-platform/constellation-console/messagecallbacks-explorer/">MessageCallbacks</a>.</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2019/06/image-3.png"><img class="colorbox-6317"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Explorers" src="https://developer.myconstellation.io/wp-content/uploads/2019/06/image_thumb-3.png" alt="Explorers" width="204" height="95" border="0" /></a></p>
<p align="left">Là où une Constellation avec des milliers de SO/MC pouvait avoir du mal à être explorée depuis la Console, la réécriture du modèle de “binding” sur ces pages permette maintenant une navigation fluide.</p>
<h3>Support de la recherche</h3>
<p>Le “<a href="/constellation-platform/constellation-console/configuration-editor/">Configuration Editor</a>” permettant d’éditer directement la configuration de votre Constellation se dote de différentes fonctions facilitant l’édition comme la Recherche, le remplacement ou encore le “aller à la ligne” :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2019/06/image.png"><img class="colorbox-6317"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Support de la recherche" src="https://developer.myconstellation.io/wp-content/uploads/2019/06/image_thumb.png" alt="Support de la recherche" width="454" height="192" border="0" /></a></p>
<p>Pour vous aider avec les différentes fonctions et raccourcis ajoutés, un écran d’aide a été ajouté :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2019/06/image-1.png"><img class="colorbox-6317"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Raccourcis clavier" src="https://developer.myconstellation.io/wp-content/uploads/2019/06/image_thumb-1.png" alt="Raccourcis clavier" width="354" height="250" border="0" /></a></p>
<h3>Support des types Nullable&lt;T&gt;</h3>
<p>Jusqu’à présent les paramètres de MessageCallback ou propriété d&rsquo;objet de type “Nullable&lt;T&gt;” n’étaient pas pris en compte dans le “MessageCallback Explorer”. C’est désormais le cas avec la version 1.8.5 ce qui vous permettra de tester vos MC avec des types Nullable.</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2019/06/image-2.png"><img class="colorbox-6317"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Support des types Nullable" src="https://developer.myconstellation.io/wp-content/uploads/2019/06/image_thumb-2.png" alt="Support des types Nullable" width="454" height="193" border="0" /></a></p>
<p>Aussi les valeurs par défaut pour les champs “Bool” ou “Enum” sont également supportés.</p>
<h3>Des petits détails</h3>
<p>En vrac :</p>
<ul>
<li>Il est désormais possible de copier dans le presse-papier (Ctrl+C) la sortie de la Console Log</li>
</ul>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2019/06/image-4.png"><img class="colorbox-6317"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="image" src="https://developer.myconstellation.io/wp-content/uploads/2019/06/image_thumb-4.png" alt="image" width="454" height="113" border="0" /></a></p>
<ul>
<li>Il y a une demande de confirmation à chaque fermeture de modale si des changements sont en attente d’enregistrement</li>
</ul>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2019/06/image-5.png"><img class="colorbox-6317"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Confirmation" src="https://developer.myconstellation.io/wp-content/uploads/2019/06/image_thumb-5.png" alt="Confirmation" width="354" height="87" border="0" /></a></p>
<ul>
<li>L&rsquo;expérience sur mobile est améliorée</li>
<li>Mise à niveau des librairies utilisées par la Console Constellation (jQuery 3.4.1, AngularJS 1.7.8, SignalR 2.4.1, jQueryTerminal 2.6.1, UI Bootstrap 2.5, CodeMirror 5.47)</li>
</ul>
<p align="left">Comme d’habitude, relancez le “<a href="/getting-started/premiers-pas-avec-constellation/">Web Platform Installer</a>” sur Windows ou Linux pour mettre à jour votre Console.</p>
<p>The post <a rel="nofollow" href="https://developer.myconstellation.io/blog/mise-jour-de-la-console-1-8-5/">Mise à jour de la Console 1.8.5</a> appeared first on <a rel="nofollow" href="https://developer.myconstellation.io">Constellation</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://developer.myconstellation.io/blog/mise-jour-de-la-console-1-8-5/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Support de Python 3, des environnements virtuels et autres nouveaut&#233;s de l&#8217;API Python</title>
		<link>https://developer.myconstellation.io/blog/support-python-3-et-environnements-virtuels/</link>
					<comments>https://developer.myconstellation.io/blog/support-python-3-et-environnements-virtuels/#respond</comments>
		
		<dc:creator><![CDATA[Sebastien Warin]]></dc:creator>
		<pubDate>Tue, 21 May 2019 12:54:02 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[PythonProxy]]></category>
		<guid isPermaLink="false">https://developer.myconstellation.io/?p=6201</guid>

					<description><![CDATA[<p>L’API Python Constellation embarquée dans le package NuGet Constellation.PythonProxy a connu trois mises à jour depuis la dernière news sur le blog : la version 1.8.5 en Octobre 2018 avec le support des environnements virtuels, la 1.8.6 en Février 2019</p>
<p>The post <a rel="nofollow" href="https://developer.myconstellation.io/blog/support-python-3-et-environnements-virtuels/">Support de Python 3, des environnements virtuels et autres nouveaut&eacute;s de l&rsquo;API Python</a> appeared first on <a rel="nofollow" href="https://developer.myconstellation.io">Constellation</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>L’API Python Constellation embarquée dans le package NuGet <a href="https://www.nuget.org/packages/Constellation.PythonProxy/">Constellation.PythonProxy</a> a connu trois mises à jour depuis la dernière news sur le blog : la <strong>version 1.8.5 en Octobre 2018</strong> avec le support des<strong> environnements virtuels</strong>, la <strong>1.8.6 en Février 2019</strong> avec plusieurs nouveautés dont le <strong>support de Python 3.x</strong> et pour finir la <strong>version 1.8.7 publiée début Mai 2019</strong> avec quelques ajouts dont la substitution de configuration du Proxy Python par des settings Constellation.</p>
<p>Retour en détail sur les nouveautés …</p>
<h3>Le choix de l’interpréteur Python et les environnements virtuels</h3>
<p>Depuis la version 1.8.5<strong> il est possible de définir la commande pour lancer les scripts Python de votre package</strong>.  Par défaut chaque script était lancé avec la commande “python” ce qui vous obligez à définir la commande “python” dans le PATH de votre système.</p>
<p>Désormais vous pouvez définir dans le fichier <em>App.config</em> de votre package Python, l’attribut “<em>pythonCmd</em>” pour spécifier la commande à lancer. Ci-dessous un exemple avec l’interpréteur Python 2.7 :</p>
<p></p><pre class="crayon-plain-tag">&lt;pythonProxy xmlns="urn:Constellation.PythonProxy" pythonCmd="C:\Python27\python.exe"&gt;
  &lt;scripts&gt;
    &lt;script filename="Scripts\Demo.py" /&gt;
    &lt;script filename="Scripts\Demo2.py" /&gt;
  &lt;/scripts&gt;
&lt;/pythonProxy&gt;</pre><p></p>
<p>L’attribut “<em>pythonCmd</em>” peut-être également défini de manière individuelle pour chaque script. Prenez par exemple la configuration suivante :</p>
<p></p><pre class="crayon-plain-tag">&lt;pythonProxy xmlns="urn:Constellation.PythonProxy" pythonCmd="python3"&gt;
  &lt;scripts&gt;
    &lt;script filename="Scripts\Demo.py" /&gt;
    &lt;script filename="Scripts\Demo2.py" pythonCmd="C:\Users\Sebastien\venv\Scripts\python.exe" /&gt;
    &lt;script filename="Scripts\Demo3.py" pythonCmd="C:\Python27\python.exe" /&gt;
  &lt;/scripts&gt;
&lt;/pythonProxy&gt;</pre><p></p>
<p>Ci-dessus le package Python démarre trois scripts Demo.py, Demo2.py et Demo3.py de la façon suivante :</p>
<ul>
<li>Demo.py sera lancé par l’interpréteur Python 3 (via la commande “python3” défini au niveau global)</li>
<li>Demo2.py sera lancé par un environnement virtuel ici nommé “venv” (défini pour le script)</li>
<li>Demo3.py sera lancé par l’interpréteur Python 2.7 installé dans “C:\Python27”</li>
</ul>
<p><strong>Il devient donc possible d’utiliser des interpréteurs Python spécifiques dont les environnements virtuels. </strong>Notez que si rien n’est défini, les scripts seront lancés par la commande “<em>python</em>”.</p>
<h3>Le support de Python 3.x</h3>
<p>La version 1.8.6 du Proxy Python est désormais compatible Python 2.x et Python 3.x.</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2019/05/image-10.png"><img class="colorbox-6201"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Python 3.x" src="https://developer.myconstellation.io/wp-content/uploads/2019/05/image_thumb-9.png" alt="Python 3.x" width="454" height="92" border="0" /></a></p>
<p align="left"><strong>Il est donc maintenant possible d’écrire des packages Constellation en Python 2.x ou en Python 3.x</strong> (ou les deux en même temps, avec ou sans environnements virtuels avec l’attribut “<em>pythonCmd</em>” vu précédemment).</p>
<h3>La configuration du “Proxy” par settings Constellation</h3>
<p>Il est possible d’utiliser des settings Constellation (c’est à dire des variables de configuration que l’on peut administrer depuis la Constellation par l’<a href="/client-api/rest-api/interface-rest-management/#Settings_dune_instance_dun_package">API</a> ou la <a href="/constellation-platform/constellation-console/gerer-packages-avec-la-console-constellation/#Editer_les_settings_dun_package">Console</a>) dans la section de configuration de votre <em>App.config</em> qui défini les scripts et les interpréteurs Python à utiliser.</p>
<p>Pour cela, au démarrage de votre package le Proxy Python remplacera les tags au format <em>$(xxxx)</em> où xxxx est la clé d’un setting de votre package.</p>
<p>Pour bien comprendre imaginez que vous souhaitez changer l’interpréteur Python à utiliser dans les settings Constellation.</p>
<p>Commençons par <a href="/client-api/net-package-api/settings/">déclarer un setting dans le manisfest</a> de votre package que nous nommerons “<em>PythonPath</em>” avec la valeur par défaut “<em>python</em>”. Dans le fichier <em>PackageInfo.xml</em> :</p>
<p></p><pre class="crayon-plain-tag">&lt;Settings&gt;
  &lt;Setting name="PythonPath" defaultValue="python" type="String" /&gt;
&lt;/Settings&gt;</pre><p></p>
<p>Maintenant dans la configuration de notre proxy Python définissons l’attribut “pythonCmd”, c’est à dire la commande à utiliser pour lancer nos scripts Python, par la valeur de notre setting Constellation en utilisant le tag <em>$(PythonPath).</em> Soit dans le fichier <em>App.config</em> :</p>
<p></p><pre class="crayon-plain-tag">&lt;pythonProxy xmlns="urn:Constellation.PythonProxy" pythonCmd="$(PythonPath)"&gt;
  &lt;scripts&gt;
    &lt;script filename="Scripts\Demo.py" /&gt;
  &lt;/scripts&gt;
&lt;/pythonProxy&gt;</pre><p></p>
<p>Dans la Console Constellation, la valeur par défaut est donc “python” :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2019/05/image-11.png"><img class="colorbox-6201"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" src="https://developer.myconstellation.io/wp-content/uploads/2019/05/image_thumb-10.png" alt="image" width="454" height="246" border="0" /></a></p>
<p>Lorsque nous démarrons le package, on peut constater dans les logs que le tag est bien remplacé par la valeur par défaut ici “python”, qui dans mon environnement est un alias vers Python 3.6.8 :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2019/05/image-12.png"><img class="colorbox-6201"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="Python 3.6" src="https://developer.myconstellation.io/wp-content/uploads/2019/05/image_thumb-11.png" alt="Python 3.6" width="454" height="34" border="0" /></a></p>
<p>Sans changer notre cas, modifions la valeur du setting “PythonPath” depuis l’interface Web de la Console Constellation en spécifiant la valeur “C:\Python27\python.exe” :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2019/05/image-13.png"><img class="colorbox-6201"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" src="https://developer.myconstellation.io/wp-content/uploads/2019/05/image_thumb-12.png" alt="image" width="454" height="240" border="0" /></a></p>
<p>Redémarrons notre package et on constatera dans les logs que notre script est maintenant exécuté par l’interpréteur Python 2.7.13 :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2019/05/image-14.png"><img class="colorbox-6201"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" src="https://developer.myconstellation.io/wp-content/uploads/2019/05/image_thumb-13.png" alt="image" width="454" height="49" border="0" /></a></p>
<p align="left">Il devient alors possible de jongler entre les différentes versions des interpréteurs Python ou même les environnements virtuels depuis les settings Constellation sans devoir toucher au package lui-même.</p>
<h3>Utilisation des settings Constellation avant le “Start” et notification de mise à jour</h3>
<p>Depuis vos scripts Python pour récupérer la valeur d’un setting Constellation il faut utiliser la méthode GetSetting :</p>
<p></p><pre class="crayon-plain-tag">Constellation.GetSetting("MonSetting")</pre><p></p>
<p>Jusqu’à la version 1.8.6, on ne pouvait appeller cette méthode <a href="/getting-started/creez-votre-premier-package-constellation-en-python/#Les_bases">qu’après le “Start”</a>, mais désormais vous pouvez l’utiliser juste après l’import de la libraire Constellation, par exemple :</p>
<p></p><pre class="crayon-plain-tag">print("Initilisation")

import Constellation

demo = Constellation.GetSetting("Demo")
demo2 = Constellation.GetSetting("Demo2") or "Sebastien"

print("Setting Test = %s" % Constellation.GetSetting("test"))
print("setting Demo = %s et Demo2 %s" % (demo, demo2))

def Start():
    print("Démarrage !")

Constellation.Start(Start);</pre><p></p>
<p>Vous pouvez ainsi initialiser vos scripts en ayant accès aux settings de votre package Constellation.</p>
<p>Autre nouveauté, l’ajout de l’évènement “<em>OnSettingsUpdated</em>” vous permettant d’être notifié lorsque qu’une valeur d’un setting de votre package est mis à jour dans Constellation.</p>
<p></p><pre class="crayon-plain-tag">import Constellation

def OnSettingsUpdated():
    print("Mise à jour de mes settings depuis Constellation !!")

def Start():
    Constellation.OnSettingsUpdated = OnSettingsUpdated

Constellation.Start(Start);</pre><p></p>
<h3>Autres nouveautés</h3>
<p>Tout d’abord les <a href="/client-api/python-api/messagecallbacks-exposer-des-methodes-python/">MessageCallbacks</a> et  les<a href="/client-api/python-api/consommer-des-stateobjects-en-python/">StateObjectLinks</a>, c’est à dire les méthodes de votre code que vous déclarez pour répondre à un message ou pour suivre un StateObject sont désormais invoquées dans un thread asynchrone pour éviter de bloquer le package.</p>
<p>Ensuite le « Working Directory » (<em>os.getcwd()</em>) est maintenant le répertoire du package et non le répertoire du script Python lui-même.</p>
<p>Il y a eu une revue du mécanisme de ping entre le proxy .NET et la sandbox Python basé maintenant sur le temps CPU et non l’horloge système (afin d’éviter les problèmes liés au changement d’heure).</p>
<p>On peut également citer l’affichage de la stacktrace complète lorsqu’une exception est levée dans le dispatch d’un MessageCallback ou d’un StateObjectLink, l’ajout automatique de la section XML de configuration dans le fichier « app.config » lors de l’installation du package ou encore l’affichage des numéros de version du Proxy python et interpréteur python au démarrage des scripts.</p>
<p>Pour mettre à jour votre API Python, lancez simplement le gestionnaire de package NuGet !</p>
<p>The post <a rel="nofollow" href="https://developer.myconstellation.io/blog/support-python-3-et-environnements-virtuels/">Support de Python 3, des environnements virtuels et autres nouveaut&eacute;s de l&rsquo;API Python</a> appeared first on <a rel="nofollow" href="https://developer.myconstellation.io">Constellation</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://developer.myconstellation.io/blog/support-python-3-et-environnements-virtuels/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Constellation SDK 1.8.5 avec le support de Visual Studio 2019</title>
		<link>https://developer.myconstellation.io/blog/constellation-sdk-1-8-5-avec-le-support-de-visual-studio-2019/</link>
					<comments>https://developer.myconstellation.io/blog/constellation-sdk-1-8-5-avec-le-support-de-visual-studio-2019/#respond</comments>
		
		<dc:creator><![CDATA[Sebastien Warin]]></dc:creator>
		<pubDate>Sun, 19 May 2019 11:52:28 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[SDK]]></category>
		<category><![CDATA[VisualStudio]]></category>
		<guid isPermaLink="false">https://developer.myconstellation.io/?p=6190</guid>

					<description><![CDATA[<p>Disponible depuis le début de la semaine sur le canal Beta, la nouvelle version du SDK Constellation pour Visual Studio vient d’être publiée sur le canal Stable. Principale nouveauté de cette version : le support de Visual Studio 2019 !</p>
<p>The post <a rel="nofollow" href="https://developer.myconstellation.io/blog/constellation-sdk-1-8-5-avec-le-support-de-visual-studio-2019/">Constellation SDK 1.8.5 avec le support de Visual Studio 2019</a> appeared first on <a rel="nofollow" href="https://developer.myconstellation.io">Constellation</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Disponible depuis le début de la semaine sur le canal Beta, la nouvelle version du <a href="/constellation-platform/constellation-sdk/">SDK Constellation</a> pour Visual Studio vient d’être publiée sur le canal Stable.</p>
<p>Principale nouveauté de cette version : le support de <strong>Visual Studio 2019</strong> !</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2019/05/image-8.png"><img class="colorbox-6190"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="Visual Studio 2019" src="https://developer.myconstellation.io/wp-content/uploads/2019/05/image_thumb-7.png" alt="Visual Studio 2019" width="454" height="282" border="0" /></a></p>
<p align="left">Vous pourrez donc créer, développer, tester et publier vos packages Constellation depuis Visual Studio 2012, 2013, 2015, 2017 et maintenant 2019 toute édition (de l’édition gratuite Community et l’édition haut de gamme Enterprise).</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2019/05/image-9.png"><img class="colorbox-6190"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="Création d'un projet Constellation dans Visual Studio 2019" src="https://developer.myconstellation.io/wp-content/uploads/2019/05/image_thumb-8.png" alt="Création d'un projet Constellation dans Visual Studio 2019" width="454" height="315" border="0" /></a></p>
<p align="left">Pour installer ou mettre à jour votre SDK, rien de plus simple, lancez simplement le Web Platform Installer et sélectionnez “<em>Constellation SDK</em>” dans la liste des composants à installer/mettre à jour. <div class="wpfilebase-file-default" onclick="if('undefined' == typeof event.target.href) document.getElementById('wpfb-file-link-2').click();">
  <div class="icon"><a href="https://developer.myconstellation.io/download/installers/Constellation-Web-Platform-Installer-1.9.735.exe" target="_blank" title="Download Constellation Web Platform Installer"><img class="colorbox-6190"  align="middle" src="https://developer.myconstellation.io/wp-includes/images/crystal/interactive.png" alt="Constellation Web Platform Installer" /></a></div>
  <div class="filetitle">
    <a href="https://developer.myconstellation.io/download/installers/Constellation-Web-Platform-Installer-1.9.735.exe" title="Download Constellation Web Platform Installer" target="_blank" id="wpfb-file-link-2">Constellation Web Platform Installer</a>
    <a href="https://developer.myconstellation.io/getting-started/installer-constellation/#wpfb-file-42" class="postlink">» Article</a>
    <br />
    Constellation-Web-Platform-Installer-1.9.735.exe<br />
    Version: 1.9.735<br />
  </div>
  <div class="info">
    1.2 MiB<br />
    2136 Downloads<br />
    <a href="#" onclick="return wpfilebase_filedetails(2);">Détails</a>
  </div>
  <div class="details" id="wpfilebase-filedetails2" style="display: none;">
  <p>Constellation Web Platform Installer pour Windows</p>
  <table border="0">
   
   <tr><td><strong>Auteur:</strong></td><td>MyConstellation.io</td></tr>
   <tr><td><strong>Plateformes:</strong></td><td>Windows</td></tr>
   
   <tr><td><strong>Catégorie:</strong></td><td>Web Platform Installers</td></tr>
   <tr><td><strong>Licence:</strong></td><td>Constellation License Agreement</td></tr>
   <tr><td><strong>Date:</strong></td><td>juin 15, 2020</td></tr>
  </table>
  </div>
 <div style="clear: both;"></div>
</div></p>
<p>The post <a rel="nofollow" href="https://developer.myconstellation.io/blog/constellation-sdk-1-8-5-avec-le-support-de-visual-studio-2019/">Constellation SDK 1.8.5 avec le support de Visual Studio 2019</a> appeared first on <a rel="nofollow" href="https://developer.myconstellation.io">Constellation</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://developer.myconstellation.io/blog/constellation-sdk-1-8-5-avec-le-support-de-visual-studio-2019/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Mises &#224; jour des Web Platform Installers Windows et Linux</title>
		<link>https://developer.myconstellation.io/blog/mises-jour-des-web-platform-installers-windows-et-linux/</link>
					<comments>https://developer.myconstellation.io/blog/mises-jour-des-web-platform-installers-windows-et-linux/#respond</comments>
		
		<dc:creator><![CDATA[Sebastien Warin]]></dc:creator>
		<pubDate>Sat, 18 May 2019 12:45:00 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Web Platform Installer]]></category>
		<category><![CDATA[installation]]></category>
		<category><![CDATA[wpi]]></category>
		<guid isPermaLink="false">https://developer.myconstellation.io/?p=6168</guid>

					<description><![CDATA[<p>Les Web Platform Installers (WPI) en version 1.9 pour Windows et Linux sont désormais disponibles. Ils adoptent par la même occasion une nouvelle philosophie pour le versioning en passant le cap “1.8”.  En effet ces deux “logiciels” sont indépendants des</p>
<p>The post <a rel="nofollow" href="https://developer.myconstellation.io/blog/mises-jour-des-web-platform-installers-windows-et-linux/">Mises &agrave; jour des Web Platform Installers Windows et Linux</a> appeared first on <a rel="nofollow" href="https://developer.myconstellation.io">Constellation</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Les <strong>Web Platform Installers</strong> (WPI) en version 1.9 pour Windows et Linux sont désormais disponibles.</p>
<p>Ils adoptent par la même occasion une nouvelle philosophie pour le versioning en passant le cap “1.8”.  En effet ces deux “logiciels” sont indépendants des composants Constellation, leurs numéros de version évolueront eux aussi de manière indépendante.</p>
<p>Pour rappel les WPI sont deux programmes (un pour Windows et un pour Linux) permettant d’orchestrer les programmes d’installation des composants Constellation. En tant que tel un WPI n’installe pas (directement) Constellation, il se charge de vous guider, de télécharger et d&rsquo;exécuter les programmes d’installation des différents composants que vous souhaitez installer. Ils gèrent également les mises à jour, les configurations des composants à installer, etc…  Pour en savoir plus, <a href="https://developer.myconstellation.io/getting-started/premiers-pas-avec-constellation/">rendez-vous ici</a> !</p>
<p>Petit aperçu des nouveautés des WPI 1.9 publiés ce mois-ci !</p>
<h3>Choix du dépôt des composants Constellation</h3>
<p>Principale nouveauté à la fois implémentée côté Windows et côté Linux, <strong>le choix du dépôt des composants Constellation : Stable Vs  Pre-release (beta).</strong></p>
<p>Historiquement il y avait un WPI Windows “Stable” connecté sur le dépôt “Stable” et une version Beta du WPI connectée sur le dépôt “Beta”. Côté Linux, un seul WPI avec possibilité de changer le dépôt via un argument dans la ligne de commande !</p>
<p>Tout cela a été revu, au démarrage du WPI (sur Windows comme sur Linux), vous aurez la possibilité de sélectionner la source du dépôt pour installer les composants Constellation disponibles sur le canal “Stable” ou sur le canal “Beta” (Pre-release).</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2019/05/image-5.png"><img class="colorbox-6168"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="Choix du depot" src="https://developer.myconstellation.io/wp-content/uploads/2019/05/image_thumb-4.png" alt="Choix du depot" width="354" height="159" border="0" /></a></p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2019/05/image-6.png"><img class="colorbox-6168"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="Choix du depot" src="https://developer.myconstellation.io/wp-content/uploads/2019/05/image_thumb-5.png" alt="Choix du depot" width="354" height="275" border="0" /></a></p>
<h3>Un nouveau bootstrapper Linux</h3>
<p>Le bootstrapper Linux est le script Bash que vous lancez pour démarrer le WPI Linux. Il s’occupe de vérifier et d&rsquo;installer les prérequis (dont Mono, Supervisor, Python etc..) avant de télécharger et lancer la dernière version du WPI Linux disponible.</p>
<p>Ce script a été profondément revu pour mieux gérer l’installation de Mono en fonction de votre OS et de votre architecture CPU ainsi que les autres dépendances.</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2019/05/image-7.png"><img class="colorbox-6168"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="WPI Bootstrapper" src="https://developer.myconstellation.io/wp-content/uploads/2019/05/image_thumb-6.png" alt="WPI Bootstrapper" width="354" height="186" border="0" /></a></p>
<p>Il s’assure de pouvoir sélectionner la version la plus récente de Mono selon votre système et améliore également la gestion des erreurs.</p>
<h3>Une révision complète du WPI Linux</h3>
<p>Le WPI Linux a lui aussi suivi une profonde réécriture. Tout d’abord ce programme écrit en Python supporte désormais Python 3. Il est donc <strong>compatible Python 2.7 et Python 3.x</strong>. Il n’est donc plus nécessaire d’installer Python 2.7 sur les systèmes où Python 3.x est déjà installé. Pour les autres nouveautés :</p>
<ul>
<li>Un nouveau « menu général » indiquant clairement les opérations possibles (Installation, Réinstallation, Upgrade ou Downgrade des différents composants en se basant sur les capacités du système et les versions déjà installées)</li>
<li>Installation et enregistrement automatique de la sentinelle sur le serveur Constellation local (détection et configuration automatique)</li>
<li>Suggestion d&rsquo;installation et de configuration automatique de la Console puis de la Sentinelle lors de l&rsquo;installation du serveur</li>
<li>Réécriture du programme WPI en « All-In-One » (un seul programme Python gérant l&rsquo;ensemble du processus d&rsquo;installation pour une meilleure UX)</li>
<li>Correction des problèmes liés aux mots de passe trop complexes</li>
<li>Autre amélioration et correctif mineur</li>
</ul>
<p style="text-align: center;"><a href="https://developer.myconstellation.io/wp-content/uploads/2019/05/image-4.png"><img loading="lazy" class="aligncenter colorbox-6168" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="image" src="https://developer.myconstellation.io/wp-content/uploads/2019/05/image_thumb-3.png" alt="image" width="404" height="151" border="0" /></a></p>
<h3>WPI Stable vs Beta</h3>
<p>Afin d&rsquo;harmoniser l&rsquo;ensemble notez également que nous publions désormais les versions « Stable » et « Beta » pour les WPI Windows et Linux en toute indépendance vis à vis des composants Constellation.</p>
<p>Concrètement vous continuerez d&rsquo;utiliser la version « Stable » du WPI <strong>Windows</strong> en téléchargeant l’exécutable suivant : <div class="wpfilebase-file-default" onclick="if('undefined' == typeof event.target.href) document.getElementById('wpfb-file-link-3').click();">
  <div class="icon"><a href="https://developer.myconstellation.io/download/installers/Constellation-Web-Platform-Installer-1.9.735.exe" target="_blank" title="Download Constellation Web Platform Installer"><img class="colorbox-6168"  align="middle" src="https://developer.myconstellation.io/wp-includes/images/crystal/interactive.png" alt="Constellation Web Platform Installer" /></a></div>
  <div class="filetitle">
    <a href="https://developer.myconstellation.io/download/installers/Constellation-Web-Platform-Installer-1.9.735.exe" title="Download Constellation Web Platform Installer" target="_blank" id="wpfb-file-link-3">Constellation Web Platform Installer</a>
    <a href="https://developer.myconstellation.io/getting-started/installer-constellation/#wpfb-file-42" class="postlink">» Article</a>
    <br />
    Constellation-Web-Platform-Installer-1.9.735.exe<br />
    Version: 1.9.735<br />
  </div>
  <div class="info">
    1.2 MiB<br />
    2136 Downloads<br />
    <a href="#" onclick="return wpfilebase_filedetails(3);">Détails</a>
  </div>
  <div class="details" id="wpfilebase-filedetails3" style="display: none;">
  <p>Constellation Web Platform Installer pour Windows</p>
  <table border="0">
   
   <tr><td><strong>Auteur:</strong></td><td>MyConstellation.io</td></tr>
   <tr><td><strong>Plateformes:</strong></td><td>Windows</td></tr>
   
   <tr><td><strong>Catégorie:</strong></td><td>Web Platform Installers</td></tr>
   <tr><td><strong>Licence:</strong></td><td>Constellation License Agreement</td></tr>
   <tr><td><strong>Date:</strong></td><td>juin 15, 2020</td></tr>
  </table>
  </div>
 <div style="clear: both;"></div>
</div></p>
<p>Pour <strong>Linux</strong> la commande reste également la même à savoir :</p>
<p></p><pre class="crayon-plain-tag">wget -O install.sh https://developer.myconstellation.io/download/installers/install-linux.sh &amp;&amp; chmod +x install.sh &amp;&amp; ./install.sh</pre><p></p>
<p>Seulement comme nous l&rsquo;avons dit ci-dessus, vous serez désormais en mesure de sélectionner le canal de distribution (Stable ou Beta) pour les composants Constellation à installer.</p>
<p>A côté de çà, nous diffusions également sur <a href="/downloads/">la page de téléchargement</a> les versions « Beta » pour chacun des deux WPI.</p>
<p>Autrement dit les WPI et les composants Constellation sont deux choses distincts. Vous pouvez utiliser les WPI en version stable pour installer les composants Constellation en version beta et vice-versa, utiliser les WPI en version beta pour installer des composants Constellation en version stable.</p>
<p>The post <a rel="nofollow" href="https://developer.myconstellation.io/blog/mises-jour-des-web-platform-installers-windows-et-linux/">Mises &agrave; jour des Web Platform Installers Windows et Linux</a> appeared first on <a rel="nofollow" href="https://developer.myconstellation.io">Constellation</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://developer.myconstellation.io/blog/mises-jour-des-web-platform-installers-windows-et-linux/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Migration du serveur NuGet Constellation vers nuget.org</title>
		<link>https://developer.myconstellation.io/blog/migration-serveur-nuget-constellation-vers-nuget-org/</link>
					<comments>https://developer.myconstellation.io/blog/migration-serveur-nuget-constellation-vers-nuget-org/#respond</comments>
		
		<dc:creator><![CDATA[Sebastien Warin]]></dc:creator>
		<pubDate>Fri, 01 Mar 2019 12:24:00 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[SDK]]></category>
		<category><![CDATA[nuget]]></category>
		<guid isPermaLink="false">https://developer.myconstellation.io/?p=6158</guid>

					<description><![CDATA[<p>Historiquement depuis 2015 les différentes libraires Constellation (.NET, Javascript, AngularJS, Python, etc…) étaient diffusées sur un serveur Nuget privé. Il fallait alors sélectionner la source “Constellation” (ajoutée automatiquement par le SDK Constellation pour Visual Studio) pour pouvoir se connecter et</p>
<p>The post <a rel="nofollow" href="https://developer.myconstellation.io/blog/migration-serveur-nuget-constellation-vers-nuget-org/">Migration du serveur NuGet Constellation vers nuget.org</a> appeared first on <a rel="nofollow" href="https://developer.myconstellation.io">Constellation</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Historiquement depuis 2015 les différentes libraires Constellation (.NET, Javascript, AngularJS, Python, etc…) étaient diffusées sur un serveur Nuget privé.</p>
<p>Il fallait alors sélectionner la source “Constellation” (ajoutée automatiquement par le SDK Constellation pour Visual Studio) pour pouvoir se connecter et récupérer les mises à jour des librairies Constellation.</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2019/05/image.png"><img class="colorbox-6158"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="L'ancienne source Nuget" src="https://developer.myconstellation.io/wp-content/uploads/2019/05/image_thumb.png" alt="L'ancienne source Nuget" width="354" height="132" border="0" /></a></p>
<p>Pour des raisons pratiques et parce qu’il n’y a plus d’intérêt de conserver ce serveur privé, <strong>tous les packages NuGet sont désormais publiés et disponibles sur la </strong><a href="https://www.nuget.org/profiles/Constellation"><strong>galerie publique NuGet.org</strong></a></p>
<p align="center"><a href="https://www.nuget.org/profiles/Constellation"><img class="colorbox-6158"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="nuget-logo" src="https://developer.myconstellation.io/wp-content/uploads/2019/05/nuget-logo.png" alt="nuget-logo" width="350" height="106" border="0" /></a></p>
<p align="left">Concrètement cela ne change rien du tout côté développement hormis le fait de prendre garde à ne plus utiliser le “Package source” Constellation dans votre gestionnaire NuGet et utiliser la source officielle nommée “nuget.org” ou “nuget v3” :</p>
<p align="center"><img class="colorbox-6158"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="Package source" src="https://developer.myconstellation.io/wp-content/uploads/2019/05/image-1.png" alt="Package source" width="454" height="38" border="0" /></p>
<p align="left">A noter également que lorsque vous installerez le SDK Constellation à partir de la version 1.8.5 actuellement disponible l’ancienne source sera automatiquement supprimée évitant ainsi les confusions !</p>
<div class="wpfilebase-file-default" onclick="if('undefined' == typeof event.target.href) document.getElementById('wpfb-file-link-4').click();">
  <div class="icon"><a href="https://developer.myconstellation.io/download/installers/Constellation-Web-Platform-Installer-1.9.735.exe" target="_blank" title="Download Constellation Web Platform Installer"><img class="colorbox-6158"  align="middle" src="https://developer.myconstellation.io/wp-includes/images/crystal/interactive.png" alt="Constellation Web Platform Installer" /></a></div>
  <div class="filetitle">
    <a href="https://developer.myconstellation.io/download/installers/Constellation-Web-Platform-Installer-1.9.735.exe" title="Download Constellation Web Platform Installer" target="_blank" id="wpfb-file-link-4">Constellation Web Platform Installer</a>
    <a href="https://developer.myconstellation.io/getting-started/installer-constellation/#wpfb-file-42" class="postlink">» Article</a>
    <br />
    Constellation-Web-Platform-Installer-1.9.735.exe<br />
    Version: 1.9.735<br />
  </div>
  <div class="info">
    1.2 MiB<br />
    2136 Downloads<br />
    <a href="#" onclick="return wpfilebase_filedetails(4);">Détails</a>
  </div>
  <div class="details" id="wpfilebase-filedetails4" style="display: none;">
  <p>Constellation Web Platform Installer pour Windows</p>
  <table border="0">
   
   <tr><td><strong>Auteur:</strong></td><td>MyConstellation.io</td></tr>
   <tr><td><strong>Plateformes:</strong></td><td>Windows</td></tr>
   
   <tr><td><strong>Catégorie:</strong></td><td>Web Platform Installers</td></tr>
   <tr><td><strong>Licence:</strong></td><td>Constellation License Agreement</td></tr>
   <tr><td><strong>Date:</strong></td><td>juin 15, 2020</td></tr>
  </table>
  </div>
 <div style="clear: both;"></div>
</div>
<p>The post <a rel="nofollow" href="https://developer.myconstellation.io/blog/migration-serveur-nuget-constellation-vers-nuget-org/">Migration du serveur NuGet Constellation vers nuget.org</a> appeared first on <a rel="nofollow" href="https://developer.myconstellation.io">Constellation</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://developer.myconstellation.io/blog/migration-serveur-nuget-constellation-vers-nuget-org/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>FriendLeaf : la serre connectée grâce à Constellation</title>
		<link>https://developer.myconstellation.io/tutorials/friendleaf-la-serre-connectee-grace-a-constellation/</link>
					<comments>https://developer.myconstellation.io/tutorials/friendleaf-la-serre-connectee-grace-a-constellation/#respond</comments>
		
		<dc:creator><![CDATA[Sebastien Warin]]></dc:creator>
		<pubDate>Tue, 17 Jul 2018 09:40:50 +0000</pubDate>
				<category><![CDATA[Tutoriels]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[IoT]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[Saga]]></category>
		<category><![CDATA[Relais]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Raspberry Pi]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[smartphone]]></category>
		<category><![CDATA[PushBullet]]></category>
		<category><![CDATA[Notification]]></category>
		<category><![CDATA[AngularJS]]></category>
		<category><![CDATA[jQuery]]></category>
		<guid isPermaLink="false">https://developer.myconstellation.io/?p=6084</guid>

					<description><![CDATA[<p>Plus besoin de disposer d&#8217;un espace extérieur pour faire pousser vos propres herbes aromatiques, salades et fleurs. Grâce à la serre connectée FriendLeaf, vous pouvez faire pousser plusieurs plantes et vous en occuper facilement. Projet réalisé par Théo DELOOSE, Clara</p>
<p>The post <a rel="nofollow" href="https://developer.myconstellation.io/tutorials/friendleaf-la-serre-connectee-grace-a-constellation/">FriendLeaf : la serre connectée grâce à Constellation</a> appeared first on <a rel="nofollow" href="https://developer.myconstellation.io">Constellation</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><i>Plus besoin de disposer d&rsquo;un espace extérieur pour faire pousser vos propres herbes aromatiques, salades et fleurs. Grâce à la serre connectée FriendLeaf, vous pouvez faire pousser plusieurs plantes et vous en occuper facilement.</i></p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure1.png"><img class="colorbox-6084"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title=" FriendLeaf : la serre connectée grâce à Constellation" src="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure1_thumb.png" alt="FriendLeaf : la serre connectée grâce à Constellation" width="354" height="266" border="0" /></a></p>
<p>Projet réalisé par Théo DELOOSE, Clara BOMY, Clément NOUGÉ, Mathieu GABRIEL, Marine DAEL et Thaï-Son DANG.</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure2.png"><img class="colorbox-6084"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="L'équipe FriendLeaf" src="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure2_thumb.png" alt="L'équipe FriendLeaf" width="254" height="208" border="0" /></a></p>
<p><span id="more-6084"></span></p>

<h3>Introduction</h3>
<p>Nous sommes six étudiants en troisième année à l’ISEN Lille. Dans le cadre de notre projet de fin d’année, nous avons conçu une serre connectée dédiée à un usage en intérieur. Celle-ci est équipée d’un système d’éclairage intelligent, d’une pompe d’arrosage automatique et d’un brumisateur intégré afin de garantir la bonne croissance des plantes, rassemblant les conditions nécessaires à leur développement. Pour une plus grande facilité d&rsquo;utilisation, notre serre est associée à une application mobile simple et ludique permettant de suivre en temps réel les données de l’environnement de la serre et de contrôler celle-ci à distance.</p>
<p>En réalisant ce projet, notre but était de proposer une solution de serre connectée à un prix raisonnable et possédant une interface attrayante pour améliorer l’expérience de l’utilisateur.</p>
<p>De plus nous voulions que la serre puisse être intégrée dans différents systèmes facilement pour que l’utilisateur puisse utiliser les données à sa guise.</p>
<h3>Fonctionnement général</h3>
<p>Nous avons pensé<i> FriendLeaf </i>comme un système de monitoring et de pilotage. Il propose en effet de gérer automatiquement l’arrosage, l’humidité et la luminosité de la serre, ou bien de les activer manuellement à notre guise. Il synchronise les données récupérées par les différents capteurs grâce à la plateforme Constellation et active, par le biais d’un relais, les actionneurs. Enfin, <i>FriendLeaf </i>alerte l’utilisateur lorsque le réservoir d’eau est vide. Tout est synchronisé en temps réel comme par magie grâce à Constellation.</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure3.png"><img class="colorbox-6084"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Communication" src="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure3_thumb.png" alt="Communication" width="400" height="150" border="0" /></a></p>
<p>Nous avons donc ajouté dans la serre les capteurs permettant de relever les informations sur l’humidité de l’air et du sol, sur la température et sur la luminosité.  L’équipement installé comporte aussi une guirlande lumineuse ayant pour but d’éclairer et d’afficher les alertes, une pompe pour le système d’arrosage et un brumisateur permettant d’humidifier l’air.</p>
<p align="center"> <a href="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure4.png"><img class="colorbox-6084"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Schéma général de la serre " src="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure4_thumb.png" alt="Schéma général de la serre " width="450" height="244" border="0" /></a></p>
<h3>Matériel utilisé</h3>
<p>Pour réaliser notre projet, nous nous sommes servis des composants suivants :</p>
<p>Pour la Serre :</p>
<ul>
<li><u><a href="https://www.ikea.com/fr/fr/catalog/products/70186603/">Serre SOCKER Ikea</a></u> (12,99€), Ikea</li>
<li>Bac pour le terreau (1,50€), Jardinerie</li>
<li><u><a href="https://www.amazon.fr/Raspberry-Pi-3-Mod%C3%A8le-B-Carte-m%C3%A8re/dp/B07BDR5PDW/ref=sr_1_cc_3?s=aps&amp;ie=UTF8&amp;qid=1528895423&amp;sr=1-3-catcorr&amp;keywords=raspberry+pi+3B">Carte Raspberry Pi 3B </a></u>(40,80€), Amazon</li>
<li><u><a href="https://www.amazon.fr/Elegoo-Optocoupleur-Continu-Arduino-Raspberry/dp/B06XKST8XC/ref=sr_1_1?s=computers&amp;ie=UTF8&amp;qid=1528792288&amp;sr=1-1&amp;keywords=4%2Bcanaux%2B250V&amp;th=1">Relais 4 canaux</a></u> supportant jusqu’à 5A et 250V (AC) et 30V (DC) (9,99€), Amazon</li>
<li>Câbles de connexion</li>
<li>Boîte de dérivation</li>
</ul>
<p>Pour les capteurs :</p>
<ul>
<li>Humidité et température air : <u><a href="https://www.amazon.fr/SODIAL-Humidite-Numerique-Temperature-Arduino/dp/B00K67XRFC/ref=sr_1_1?ie=UTF8&amp;qid=1529502640&amp;sr=8-1&amp;keywords=dht+11">DHT11</a></u> (1,31€), Amazon</li>
<li>Luminosité : <u><a href="https://www.gotronic.fr/art-capteur-de-luminosite-tsl2561-19569.htm">TSL2561</a></u> (6,95€), Gotronic</li>
<li>Humidité sol : <u><a href="https://www.gotronic.fr/art-capteur-d-humidite-gt110-26091.htm#complte_desc">GT110</a></u> (2,40€), Gotronic</li>
<li>Niveau d’eau : <u><a href="https://www.gotronic.fr/art-detecteur-de-niveau-gravity-sen0205-25296.htm">Gravity SEN0205</a></u> (10,50€), Gotronic</li>
</ul>
<p>Pour le brumisateur :</p>
<ul>
<li>Un <u><a href="https://www.amazon.fr/Ultrasons-Shineus-Humidificateur-Fontaine-Atomisation/dp/B077HSKYN8/ref=sr_1_4?ie=UTF8&amp;qid=1528895226&amp;sr=8-4&amp;keywords=mist+maker">émetteur à ultrasons</a></u> (9,89€), Amazon</li>
<li>Une alimentation pour le brumisateur (24V DC, 1A) (25€), Derotronic, Lille</li>
<li>Un bol</li>
</ul>
<p>Pour le système d’arrosage :</p>
<ul>
<li>Une <u><a href="https://www.amazon.fr/Gugutogo-submersible-%C3%A9lectrique-silencieux-m%C3%A9canique/dp/B07BXJTND4/ref=sr_1_3?s=electronics&amp;ie=UTF8&amp;qid=1529927406&amp;sr=1-3&amp;keywords=pompe+%C3%A0+eau+12v">pompe à eau</a></u> (5,48€), Amazon</li>
<li>Une alimentation 12V 600mA (12€), Derotronic, Lille</li>
<li>Un jerrican (environ 10€)</li>
<li>Un tuyau (ø7mm -ø10mm), Diall</li>
</ul>
<p>Pour l’éclairage :</p>
<ul>
<li>2m de <u><a href="http://www.blachere-illumination-store.com/fr/nos-creations/326-fil-lumiere-blanc-8m-3587880017658.html">guirlandes lumineuses</a></u> (1m LED et 1m incandescent), Blachère</li>
<li>Une alimentation pour fil lumière, Blachère</li>
<li>Colliers de serrage</li>
</ul>
<h3>Conception de la serre</h3>
<h4>Étape 1 : Préparation de la serre</h4>
<p>Dans la serre, nous avons disposé les capteurs, le pot et un bol pour le brumisateur. Nous avons également percé des trous pour pouvoir faire passer tous les capteurs et le tuyau d’arrosage.</p>
<p>Pour ce qui est de la guirlande lumineuse, il nous a fallu percer quelques trous supplémentaires dans les montants de la serre pour y glisser les colliers de serrage.</p>
<p align="center"> <a href="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure5.png"><img class="colorbox-6084"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="La serre &quot;nue&quot; " src="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure5_thumb.png" alt="La serre &quot;nue&quot; " width="354" height="266" border="0" /></a></p>
<h4>Étape 2 : Branchement du relais</h4>
<p align="center"> <a href="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure6.png"><img class="colorbox-6084"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Les relais" src="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure6_thumb.png" alt="Les relais" width="240" height="240" border="0" /></a></p>
<p>Afin de pouvoir contrôler les actionneurs, nous avons branché le relais quatre canaux à une carte Raspberry Pi.</p>
<p>Celui-ci est analogue à un interrupteur. Pour chaque canal, une alimentation est nécessaire et chacun d’entre eux peut être piloté individuellement grâces aux différents pins dont dispose le relais. Il faut également prévoir une masse que l’on branche sur le pin “Gnd” du relais.</p>
<p>Par défaut, lorsque les pins d’entrée ne sont pas alimentés, les canaux du relais délivrent la tension d’alimentation correspondante sur la sortie NC (“Normally Closed”) ou sur la sortie NO (“Normally Open”) dans le cas contraire.</p>
<h4>Etape 3 : Éclairage de la serre</h4>
<p>Pour l’éclairage de notre serre, nous avons percé des trous dans la structure et fixé la guirlande avec des colliers de serrage. Celle-ci doit être alimentée par une tension de 230V (<i>tension secteur</i>) et est composée d’un mètre de LEDs rouge et d’un mètre incandescent jaune.</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure7.png"><img class="colorbox-6084"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Les LEDs" src="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure7_thumb.png" alt="Les LEDs" width="244" height="160" border="0" /></a></p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure7bis.png"><img class="colorbox-6084"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Les LEDs" src="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure7bis_thumb.png" alt="Les LEDs" width="244" height="184" border="0" /></a></p>
<p>Elle est connectée au relais par la phase et le neutre, chacun branchés sur un canal différent, afin d’isoler totalement la guirlande du secteur et ainsi éviter tout problème avec le reste des composants.</p>
<h4>Etape 4 : Installation du brumisateur</h4>
<p align="center"> <a href="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure8.png"><img class="colorbox-6084"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Le relais avec les LEDs et le brumisateur " src="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure8_thumb.png" alt="Le relais avec les LEDs et le brumisateur " width="244" height="324" border="0" /></a></p>
<p>Pour augmenter l’humidité de l’air dans la serre, nous avons installé un brumisateur fonctionnant par émissions d’ultrasons. Il nécessite une alimentation de 24V/1A maximum. On le relie ensuite au relais. La masse est directement connectée à l’adaptateur secteur par le biais d’un domino.</p>
<h4>Etape 5 : Installation du système d’arrosage</h4>
<h4 align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure9.png"><img class="colorbox-6084"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Installation du système d’arrosage" src="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure9_thumb.png" alt="Installation du système d’arrosage" width="184" height="244" border="0" /></a></h4>
<p>En ce qui concerne l’arrosage, nous disposons d’une pompe submersible qui nécessite une alimentation de 12V et 400mA. Elle est branchée en sortie à un tuyau percé pour un arrosage homogène. Nous la connectons ensuite à un des canaux du relais.</p>
<p align="center"> <a href="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure10.png"><img class="colorbox-6084"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Le reservoir" src="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure10_thumb.png" alt="Le reservoir" width="184" height="244" border="0" /></a></p>
<p>Pour le réservoir, nous avons récupéré un bidon de vinaigre de 5L sur lequel nous avons fait un trou pour le capteur de niveau d’eau et une ouverture pour le remplir et y faire passer la pompe.</p>
<h4>Pour résumer&#8230;</h4>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure11.png"><img class="colorbox-6084"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Schéma du relais et de la Raspberry" src="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure11_thumb.png" alt="Schéma du relais et de la Raspberry" width="404" height="301" border="0" /></a></p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure12.png"><img class="colorbox-6084"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Rendu dans la boite " src="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure12_thumb.png" alt="Rendu dans la boite " width="185" height="244" border="0" /></a></p>
<h4>Étape 6 : Mise en place des capteurs et paramétrage de la carte Arduino</h4>
<p>Nous installons à présent les capteurs d’humidité/température de l’air, d’humidité du sol, de de luminosité et de niveau d’eau. Nous branchons tous ces capteurs aux pins de la Raspberry ou de l’Arduino en faisant attention au fait que :</p>
<ul>
<li>Les capteurs d’humidité du sol et de niveau d’eau se branchent sur du 5V.</li>
<li>Les capteurs d’humidité/température de l’air et de luminosité sont alimentés en 3,3V.</li>
</ul>
<h5>Étape 6.1 : Capteur d’humidité et de température de l’air</h5>
<p>Le capteur d’humidité et de température de l’air fournissant des données numériques, nous le relions directement à notre Raspberry Pi comme montré sur le schéma ci-dessous :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure13.png"><img class="colorbox-6084"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Capteur d'humidité/température " src="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure13_thumb.png" alt="Capteur d'humidité/température " width="350" height="134" border="0" /></a></p>
<h5>Étape 6.2 : Capteurs de luminosité, d’humidité du sol et de niveau d’eau</h5>
<p><a href="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure14.png"><img class="colorbox-6084"  loading="lazy" style="background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin-left: auto; display: block; padding-right: 0px; margin-right: auto; border-width: 0px;" title=" Capteurs et Arduino sur la Raspberry " src="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure14_thumb.png" alt=" Capteurs et Arduino sur la Raspberry " width="350" height="274" border="0" /></a></p>
<p>Ces capteurs fournissant des données analogiques, nous les avons branchés à une carte Arduino nano qui permet de lire ces données, contrairement à la Raspberry. Elle est reliée directement par USB à la Raspberry Pi comme montré ci-après :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure15.png"><img class="colorbox-6084"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Arduino et ses capteurs" src="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure15_thumb.png" alt="Arduino et ses capteurs" width="244" height="184" border="0" /></a><a href="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure16.png"><img class="colorbox-6084"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Arduino et ses capteurs" src="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure16_thumb.png" alt="Arduino et ses capteurs" width="244" height="185" border="0" /></a></p>
<h5>Étape 6.3 : Programmation de la carte Arduino</h5>
<p>Dans l’IDE Arduino, nous avons donc commencé par programmer la carte.</p>
<p>Nous ajoutons tout d’abord les librairies d’Adafruit pour pouvoir initialiser le capteur de luminosité et régler le temps d’intégration des données. Dans le gestionnaire de bibliothèque (menu<i> Croquis &gt; Inclure une bibliothèque</i>), nous avons installé les librairies suivantes :</p>
<ul>
<li>Adafruit Unified Sensor</li>
<li>Adafruit TSL2561</li>
</ul>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure17.png"><img class="colorbox-6084"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Les librairies Arduino " src="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure17_thumb.png" alt="Les librairies Arduino " width="350" height="76" border="0" /></a></p>
<p>Au démarrage, dans la méthode “setup()”, nous configurons les pins utilisés. Nous décidons d’utiliser les pins analogiques A0 et A1, respectivement pour le capteur d’humidité du sol et du niveau d’eau et les pins A4 et A5 pour le capteur de luminosité :</p>
<p></p><pre class="crayon-plain-tag">void setup(void) 
{
  Serial.begin(9600);
 
  /*Réglage du capteur de luminosité*/
  if(!tsl.begin()) //Initialisation du capteur
  {
    //S'il y a un problème pour détecter le capteur, vérifier votre connexion
    Serial.print("Ooops, pas de capteur détecté... Vérifier votre connexion!");
    while(1);
  }
  
    //Configuration du gain du capteur et du temps d'intégration
    tsl.enableAutoRange(true);          
    tsl.setIntegrationTime(TSL2561_INTEGRATIONTIME_13MS);    
 
}</pre><p></p>
<p>Dans la méthode “loop()”, nous recueillons ensuite les valeurs des capteurs et les faisons afficher sur le Monitor Série en utilisant les commandes analogRead() et Serial.print()  :</p>
<p></p><pre class="crayon-plain-tag">void loop(void) 
{  
  /*Pour recevoir une nouvelle donnée par le capteur de luminosité*/ 
  sensors_event_t event;
  tsl.getEvent(&amp;event);
 
  //Lecture des pins analogiques pour les données des capteurs d'humidité du sol et de niveau d'eau
  Hum_value = analogRead(A0);
  Liquid_value=analogRead(A1);
 
  //Affichage des valeurs sur le Moniteur série
  Serial.print(event.light,0);
  Serial.print(',');
  Serial.print(map(Hum_value,0,1024,0,100)); //Le capteur d'humidité renvoie une valeur en pourcentage 
  Serial.print(',');
  Serial.println(map(Liquid_value,0,512,0,1)); //Le capteur de niveau d'eau retourne la valeur 1 quand il est en contact avec l'eau, 0 sinon
  delay(5000); //Retard de 5s pour éviter de surcharger le buffer de la Raspberry 
}</pre><p></p>
<p>Nous récupèrerons ensuite les données des différents capteurs à l’aide de la carte Raspberry Pi.</p>
<h3>La programmation vers Constellation</h3>
<p>La programmation vers Constellation est divisée en deux packages : le premier correspond à la récupération des données des capteurs et à l’activation des actionneurs, le second a été créé pour gérer le stockage des données en vue de créer des graphiques sur notre application.</p>
<h4>Etape 1 : Package relatif aux capteurs et actionneurs</h4>
<h5>Etape 1.1 : Acquisition des données des capteurs</h5>
<p>Pour récupérer les données des différents capteurs cités précédemment, nous avons utilisé la librairie “Adafruit_DHT” pour Raspberry Pi et la librairie “serial” qui permet de faire le lien entre l’Arduino-Nano et la Raspberry Pi. Ces valeurs vont nous permettre de décider s’il faut activer ou non les actionneurs tels que la pompe, le brumisateur ou les LED.</p>
<p>La fonction ci-après permet de récupérer les valeurs des différents capteurs.</p>
<p></p><pre class="crayon-plain-tag">def getCapteur():
    humiditeAir, temperature = Adafruit_DHT.read_retry(11,4)
    lux, humiditeSol, eau = ser.readline()[:-2].split(",")</pre><p></p>
<p>Nous avons ensuite créé un State Object rassemblant les valeurs d’humidité du sol, d’humidité de l’air, de température et de luminosité ambiante pour pouvoir les publier sur notre Constellation.</p>
<p></p><pre class="crayon-plain-tag">Constellation.PushStateObject("Capteurs", {"HumiditeSol": int(self.humiditeSol), "HumiditeAir": int(self.humiditeAir), "Temperature": int(self.temperature), "Luminosite": int(self.lux)}, "CapteursInfos")</pre><p></p>
<p align="center"> <a href="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure18.png"><img class="colorbox-6084"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title=" Le State Object des capteurs " src="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure18_thumb.png" alt=" Le State Object des capteurs " width="350" height="169" border="0" /></a></p>
<h5>Etape 1.2 : Activation et désactivation des différents actionneurs (brumisateur, guirlande lumineuse et pompe à eau)</h5>
<p>Comme mentionné précédemment, les actionneurs sont reliés à la Raspberry Pi via un relais quatre canaux. Cela simplifie grandement la programmation : il nous suffit simplement de gérer l’ouverture et la fermeture des relais.</p>
<p>Nous avons donc fait en sorte que chaque actionneur soit associé à son relais grâce à la librairie GPIO de la Raspberry Pi. Ainsi, le code diffère seulement au niveau des numéros des pins utilisés par les actionneurs.</p>
<p>Voici un exemple du code de l’activation et de la désactivation de notre pompe :</p>
<p></p><pre class="crayon-plain-tag">GPIO.setmode(GPIO.BOARD)
GPIO.setup(12,GPIO.OUT)
GPIO.output(12,0)</pre><p></p>
<p>Le pin 12 de la Raspberry est celui relié au relais contrôlant la pompe.</p>
<h5>Etape 1.3 : Automatisation des actionneurs</h5>
<p>Pour réaliser la fonction d’automatisation, nous nous sommes tout d’abord renseignés sur les conditions propices à la bonne croissance des plantes au niveau de l’humidité du sol et de l’air, de la luminosité et de la température de l’air.</p>
<p>Pour le brumisateur, nous avons choisi de l’activer si l’humidité est inférieure à 35% et de le désactiver si l’humidité remonte au dessus de 37%.</p>
<p></p><pre class="crayon-plain-tag">if humiditeAir &gt; 37 and brumisateur:
    DesactiverBrumisateur()
elif humiditeAir &lt; 35 and not brumisateur:
    ActiverBrumisateur()
    time.sleep(1)</pre><p></p>
<p>Pour la pompe, le fonctionnement est différent. Puisque la diffusion de l’eau dans la terre est plus lente, nous activons la pompe pendant 5s avant de la désactiver pendant 30s pour laisser le temps au capteur de ressentir les changements.</p>
<p></p><pre class="crayon-plain-tag">if humiditeSol &lt; 30 and not pompe:
    if self.ticks == 0:
            if self.next_water == 0:
                    ActiverPompe()
            self.next_water = 15
        else:
                    self.next_water -= 1
        elif humiditeSol &gt; 30:
                    self.next_water = 0
    elif pompe:
            self.ticks += 1
               if self.ticks &gt;= 3:
                    DesactiverPompe()
                       self.ticks = 0
time.sleep(1)</pre><p></p>
<p>Ces différentes fonctions sont exécutées dans des threads séparés pour ne pas que le code soit bloquant.</p>
<p>Maintenant, il ne reste plus qu&rsquo;à sécuriser notre système d’arrosage via le capteur de niveau d’eau. Connecté à la carte Arduino nano, ce capteur va nous renvoyer 1 s’il y a de l’eau dans le réservoir, 0 sinon.</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure19.png"><img class="colorbox-6084"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Package PushBullet" src="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure19_thumb.png" alt="Package PushBullet" width="354" height="163" border="0" /></a></p>
<p>Les données du capteur de niveau d’eau nous permettent d’arrêter le système d’arrosage lorsque le réservoir est presque vide et d’informer l’utilisateur via un PushBullet et l’allumage des LEDs qu’il faut remplir le réservoir.</p>
<p></p><pre class="crayon-plain-tag">Constellation.SendMessage("PushBullet", "PushNote", [ "FriendLead", "Le reservoir d'eau est vide"], Constellation.MessageScope.package)</pre><p></p>
<div align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure20.png"><img class="colorbox-6084"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Notification sur smartphone" src="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure20_thumb.png" alt="Notification sur smartphone" width="184" height="364" border="0" /></a></div>
<h4>Étape 2 : Package relatif au stockage des données</h4>
<p>Afin d’historiser les valeurs des capteurs stockées dans un des State Objects du premier package, nous en avons créé un autre que l’on a déployé sur le même serveur que Constellation.</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure21.png"><img class="colorbox-6084"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Enregistrement CSV" src="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure21_thumb.png" alt="Enregistrement CSV" width="177" height="244" border="0" /></a></p>
<p>Ce package génère une base de données dans un fichier .csv qui est mis à jour toutes les minutes avec les nouvelles données.</p>
<p>Chaque ligne contient la date, l’heure, l’humidité du sol, l’humidité de l’air, la température et la luminosité.</p>
<p></p><pre class="crayon-plain-tag">@Constellation.StateObjectLink(package = "FriendLeafCapteurs", name = "Capteurs")
def RecupValue(stateObject):
    humiditeSol = stateObject.Value.HumiditeSol
    humiditeAir = stateObject.Value.HumiditeAir
    temperature = stateObject.Value.Temperature</pre><p></p>
<p>Nous avons ensuite créé un message callback qui permet de visualiser le fichier CSV dans notre Constellation.</p>
<p></p><pre class="crayon-plain-tag">@Constellation.MessageCallback()
def LireBDD():
'''
: return string : La base de données 
'''
    file = open('BDD.csv','r')
    lines = file.readlines()
    return lines</pre><p></p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure22.png"><img class="colorbox-6084"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="La saga du Message Callback " src="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure22_thumb.png" alt="La saga du Message Callback " width="350" height="203" border="0" /></a></p>
<h3>L’interface utilisateur : l’application mobile de monitoring et de pilotage de la serre</h3>
<h4>Étape 1 : Le noyau de l’application</h4>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure23.png"><img class="colorbox-6084"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="L'application Cordova" src="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure23_thumb.png" alt="L'application Cordova" width="184" height="364" border="0" /></a></p>
<p>Pour développer l’application mobile nous nous sommes aidés de Cordova, un Framework permettant de créer des application Android et iOS avec des technologies web.</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure24.png"><img class="colorbox-6084"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Cordova" src="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure24_thumb.png" alt="Cordova" width="240" height="98" border="0" /></a></p>
<p>Nous avons également utilisé jQuery et AngularJS pour faciliter l’interaction entre Javascript et HTML.</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure27.png"><img class="colorbox-6084"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="AngularJS" src="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure27_thumb.png" alt="AngularJS" width="240" height="143" border="0" /></a></p>
<p>De plus, pour gérer certaines fonctionnalités comme le traitement du CSV ou l’affichage des graphiques, nous avons utilisé des librairies externes comme PapaParser et Chartist. Finalement, pour embellir le CSS, nous avons utilisé le Framework SemanticUI qui ressemble en certain points à Bootstrap.</p>
<h4>Étape 2 : Connexion à Constellation, State Object et Messages Callback</h4>
<p>Pour nous connecter à Constellation avec AngularJS, nous avons utilisé ces lignes de codes :</p>
<p></p><pre class="crayon-plain-tag">Constellation.initializeClient(url_port, sha, "FriendLeaf");

Constellation.onConnectionStateChanged(function (change) {
   //suite
});</pre><p></p>
<p>et une ligne de ce type pour chaque State Object :</p>
<p></p><pre class="crayon-plain-tag">Constellation.registerStateObjectLink("*", "FriendLeafCapteurs", "Actionneurs", "*", function (so) {
    //suite
});</pre><p></p>
<p>Quant aux messages Callback, ils sont envoyés comme suit :</p>
<p></p><pre class="crayon-plain-tag">Constellation.sendMessage({ Scope: 'Package', Args: ['FriendLeafCapteurs'] }, 'DesactiverBrumisateur');</pre><p></p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure28.png"><img class="colorbox-6084"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Page de configuration" src="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure28_thumb.png" alt="Page de configuration" width="184" height="364" border="0" /></a></p>
<p>Pour que l’application soit utilisable sur n’importe quelle Constellation, nous avons créé un page de configuration où l’utilisateur rentre l’adresse de sa constellation, le port, et des identifiants.</p>
<p>Une fois tout cela rempli, le nom d’utilisateur et le mot de passe sont hachés en SHA1 grâce à une librairie externe et la connexion à Constellation commence.</p>
<p>Lorsque l’application se lance pour la première fois, l&rsquo;utilisateur est directement redirigé vers cette page pour entrer les informations nécessaires.</p>
<h4>Étape 3 : Affichage des données en temps réel</h4>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure29.png"><img class="colorbox-6084"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Le tableau de bord " src="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure29_thumb.png" alt="Le tableau de bord" width="184" height="364" border="0" /></a></p>
<p>Pour l’affichage des données en temps réel nous avons utilisé des images SVG car elles sont très flexibles et nous voulions réaliser des barres de progression en arc de cercle. Pour les valeurs numériques on affiche un scope AngularJS dans lequel sont stockés les valeurs des capteurs.</p>
<p>Le code JS :</p>
<p></p><pre class="crayon-plain-tag">//Stockage des valeurs des capteurs dans la variable capteur
scope.capteurs["humiditeAir"] = so.Value.HumiditeAir;
scope.$apply(); //Applications des modifications du scope

//Pour changer le remplissage de la jauge 
$("#h_air_gauge").css("stroke-dasharray",(so.Value.HumiditeAir*18)/100 + " 18 0");</pre><p></p>
<p>SVG en HTML :</p>
<p></p><pre class="crayon-plain-tag">&lt;svg viewbox="0 0.5 10 8"&gt;
    &lt;defs&gt;
    &lt;linearGradient id="linear" x1="0%" y1="0%" x2="100%" y2="0%"&gt;
        &lt;stop offset="0%" stop-color="#00ee4f"/&gt;
        &lt;stop offset="66%" stop-color="#eeae00"/&gt;
        &lt;stop offset="100%" stop-color="#ee0000"/&gt;
    &lt;/linearGradient&gt;
    &lt;/defs&gt;
    &lt;text x="50%" y="50%" id="h_air_value" text-anchor="middle"  alignment-baseline="middle" fill="#00ee4f"&gt;
        {{Math.round(capteurs["humiditeAir"])}}%
    &lt;/text&gt;
    &lt;path d="M2 8 A 4 4 0 1 1 8 8" fill="none" stroke-width="0.78" stroke="#E8F6FD" /&gt;
    &lt;path class="loader" id="h_air_gauge" d="M2 8 A 4 4 0 1 1 8 8" fill="none" stroke-width="0.8" 
stroke="url(#linear)" /&gt;
&lt;/svg&gt;</pre><p></p>
<h4>Étape 4 : Contrôler sa serre</h4>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure32.png"><img class="colorbox-6084"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Page de contrôle" src="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure32_thumb.png" alt="Page de contrôle" width="124" height="244" border="0" /></a><a href="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure30.png"><img class="colorbox-6084"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Page de contrôle" src="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure30_thumb.png" alt="Page de contrôle" width="124" height="244" border="0" /></a><a href="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure31.png"><img class="colorbox-6084"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Page de contrôle" src="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure31_thumb.png" alt="Page de contrôle" width="124" height="244" border="0" /></a></p>
<p>Nous avons également prévu dans l’application de pouvoir gérer les différents actionneurs de la serre.</p>
<p>Pour gérer le côté automatique du package responsable des capteurs nous avons utilisés des sliders qui lorsqu’activés, vont envoyer un Message Callback comme décrit ci-dessus. On va également suivre l’évolution du State Object indiquant si l’automatisation est activée pour tel ou tel actionneur et ainsi bloqué ou non le bouton d’activation manuel. Car oui, il est également possible d’activer manuellement chaque actionneur grâce à un bouton.</p>
<h4>Étape 5 : Les graphiques</h4>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure33.png"><img class="colorbox-6084"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Graphiques" src="https://developer.myconstellation.io/wp-content/uploads/2018/07/figure33_thumb.png" alt="Graphiques" width="184" height="361" border="0" /></a></p>
<p>Pour ce qui est des graphiques nous avons utilisé une librairie externe que nous avons modifié pour la rendre compatible sur mobile. Cette librairie s’appelle Chartist. Grâce à elle nous avons pu faire de superbes graphiques.</p>
<h3>Conclusion</h3>
<p>Voilà qui conclut les grandes étapes de la réalisation de FriendLeaf. Comme vous avez pu le voir, la serre remplit complètement son rôle. C’est un projet ludique, simple à réaliser et facilement transposable sur d’autres installations grâce aux State Objects et aux messages Callback. C’est également un bon point de départ pour prendre en main la plateforme Constellation. Nous espérons vraiment qu’il vous a plu et que vous allez réaliser votre propre serre.</p>
<p>Nous tenons également à remercier Léa, le jardin de Théo et les parents de Marine qui nous ont fourni quelques accessoires nécessaires à la serre.</p>
<p>The post <a rel="nofollow" href="https://developer.myconstellation.io/tutorials/friendleaf-la-serre-connectee-grace-a-constellation/">FriendLeaf : la serre connectée grâce à Constellation</a> appeared first on <a rel="nofollow" href="https://developer.myconstellation.io">Constellation</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://developer.myconstellation.io/tutorials/friendleaf-la-serre-connectee-grace-a-constellation/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Créer un boitier connecté « Mix box » permettant de contrôler votre ordinateur</title>
		<link>https://developer.myconstellation.io/tutorials/creer-un-boitier-connecte-mix-box-permettant-de-controler-votre-ordinateur/</link>
					<comments>https://developer.myconstellation.io/tutorials/creer-un-boitier-connecte-mix-box-permettant-de-controler-votre-ordinateur/#respond</comments>
		
		<dc:creator><![CDATA[Sebastien Warin]]></dc:creator>
		<pubDate>Wed, 16 May 2018 14:24:43 +0000</pubDate>
				<category><![CDATA[Tutoriels]]></category>
		<category><![CDATA[WindowsControl]]></category>
		<category><![CDATA[tutoriel]]></category>
		<category><![CDATA[MessageCallback]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[ESP8266]]></category>
		<category><![CDATA[Pression]]></category>
		<guid isPermaLink="false">https://developer.myconstellation.io/?p=5991</guid>

					<description><![CDATA[<p>Tutoriel proposé par Marc-Antoine DUVAL, Joël GUILLEM et Quentin LEVERT. Dans ce tutoriel, nous allons créer un boitier qui est relié à un ou plusieurs ordinateurs de la maison grâce à un ESP8266 connecté à constellation. Des LEDs permettent à</p>
<p>The post <a rel="nofollow" href="https://developer.myconstellation.io/tutorials/creer-un-boitier-connecte-mix-box-permettant-de-controler-votre-ordinateur/">Créer un boitier connecté « Mix box » permettant de contrôler votre ordinateur</a> appeared first on <a rel="nofollow" href="https://developer.myconstellation.io">Constellation</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><em>Tutoriel proposé par Marc-Antoine DUVAL, Joël GUILLEM et Quentin LEVERT.</em></p>

<p>Dans ce tutoriel, nous allons créer un boitier qui est relié à un ou plusieurs ordinateurs de la maison grâce à un ESP8266 connecté à constellation. Des LEDs permettent à l’utilisateur de suivre le résultat des commandes en temps réel. Le boitier permet de commander à distance le lecteur de vidéo VLC media player à travers différentes fonctionnalités. Il gère :</p>
<ul>
<li>Le volume</li>
<li>La marche avant / marche arrière au cours d’un visionnage</li>
<li>La mise en lecture / pause d’une vidéo</li>
<li>La fermeture de VLC</li>
</ul>
<h2>Prérequis</h2>
<ul>
<li>Un ESP8266, nous utilisons un D1-mini</li>
<li>6 boutons poussoirs tactiles blancs</li>
<li>2 LEDs RGB</li>
<li>Une plaque de plexiglas noire</li>
<li>Une imprimante laser</li>
<li>Un serveur constellation</li>
<li>Le package « Windows Control » déployé sur une ou plusieurs sentinelles</li>
</ul>
<h2>Etape 1 : Réaliser le montage des boutons et LEDs</h2>
<p>Dans un premier temps, nous allons réaliser le montage électronique des composants. Tout d’abord il est nécessaire de brancher l’ESP8266 à la breadboard et de l’alimenter en le connectant en mini-USB à une source d&rsquo;alimentation. Il faut ensuite brancher la masse de l’ESP à la colonne de masse de la breadboard.</p>
<p>Pour les besoins de l’explication du montage, tous les autres composants seront connectés à la breadboard, cependant il est tout à fait possible de les connecter une fois insérés dans le boitier (voir Etape 2). Le schéma global est présenté ci-après.</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2018/05/Cablage.png"><img class="colorbox-5991"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="Cablage" src="https://developer.myconstellation.io/wp-content/uploads/2018/05/Cablage_thumb.png" alt="Cablage" width="354" height="357" border="0" /></a></p>
<p>&nbsp;</p>
<p>Ici nous avons choisi 2 LEDs RGB afin d’améliorer l’effet visuel pour obtenir une LED de couleur jaune. La première LED verte pourra être connectée directement au pin D8 de l’ESP. Quant à la seconde LED RGB, il suffit de connecter les pattes correspondant aux LEDs rouge et verte à la même ligne, puis de lier cette ligne au pin D7 de l’ESP.</p>
<p>Les boutons poussoirs sont à connecter avec les broches 1 et 3 d’un côté et les broches 2 et 4 de l’autre. Le branchement est classique, à savoir les pin D1 à D6 connectés directement sur la patte 1 de chaque bouton, puis retour à la masse sur la patte 3 des boutons. Lorsque l’on appuie sur le bouton, le pin correspondant passera donc en état bas (LOW) et est en état haut (HIGH) tant que l’on n’appuie pas.</p>
<p>Une fois le câblage terminé, nous allons passer à la réalisation du boitier qui contiendra à l’intérieur l’ESP et la breadboard.</p>
<h2>Etape 2 : Réaliser le boitier</h2>
<p>Dans un second temps, il nous faut un boitier que nous pourrons ouvrir pour mettre notre ESP. Le design de la face de devant doit aussi correspondre au nombre de boutons et LED que l’on souhaite mettre en place.</p>
<p>Afin de résoudre cette problématique, nous avons décidé d’imprimer le boitier grâce à une imprimante laser. Nous avons utilisé une plaque de plexiglas noir d’une épaisseur de 3mm.</p>
<p>Tout d’abord, nous avons créé le fond de la boite sans le couvercle. Nous avons utilisé le site : <a href="http://carrefour-numerique.cite-sciences.fr/fablab/wiki/doku.php?id=projets:generateur_de_boites">http://carrefour-numerique.cite-sciences.fr/fablab/wiki/doku.php?id=projets:generateur_de_boites</a> qui permet de générer automatique le fichier .svg qui sera reconnu et utilisé pour l’impression laser. Il suffit d’entrer les dimensions voulues.</p>
<p>Ensuite nous avons utilisé SolidWorks afin de créer notre face avant personnalisée. Nous avons choisi percer 2 trous pour les LEDs et 6 pour les boutons carrés. Après la réalisation de la pièce, plusieurs étapes sont alors nécessaires pour exporter le fichier SolidWorks en fichier .svg.</p>
<ul>
<li>Sélectionner la vue correspondant à la pièce à réaliser</li>
<li>Enregistrer le fichier SolidWorks au format .DXF.</li>
<li>Sélectionner la vue à exporter. Ici, on sélectionne la vue en cours.</li>
</ul>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2018/05/face_avant.png"><img class="colorbox-5991"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="Choix de la face à sauvegarder" src="https://developer.myconstellation.io/wp-content/uploads/2018/05/face_avant_thumb.png" alt="Choix de la face à sauvegarder" width="354" height="194" border="0" /></a></p>
<ul>
<li>Installer Inkscape, ce logiciel permettra de créer le fichier pour l’imprimante laser.</li>
<li>Importer le fichier dans Inkscape. Il faut désactiver mise à l’échelle automatique.</li>
<li>Sauvegarder le fichier qui sera utilisé pour l’impression laser.</li>
</ul>
<p>Enfin, nous avons assemblé toutes les pièces du boitier :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2018/05/Boitier.jpg"><img class="colorbox-5991"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="Boitier" src="https://developer.myconstellation.io/wp-content/uploads/2018/05/Boitier_thumb.jpg" alt="Boitier" width="254" height="316" border="0" /></a></p>
<h2>Etape 3 : Programmation</h2>
<p>Dans un premier temps, il faut vous assurer que votre ESP8266 soit connecté à votre constellation, si vous ne savez pas comment vous y prendre, je vous invite donc à suivre le tutoriel réalisé par Sébastien Warin : <a href="https://developer.myconstellation.io/getting-started/connecter-un-arduino-ou-un-esp8266-constellation/">https://developer.myconstellation.io/getting-started/connecter-un-arduino-ou-un-esp8266-constellation/</a> .</p>
<p>Pour commencer, il faut déclarer le matériel dans la méthode setup de notre ESP8266, conformément à <b>l&rsquo;étape 1, </b>nous avons choisi les pin 1 à 6 en mode PULLUP pour les boutons et les pins 7 &amp; 8 pour les LEDs :</p>
<p></p><pre class="crayon-plain-tag">pinMode(D1,INPUT_PULLUP);
  pinMode(D2,INPUT_PULLUP);
  pinMode(D3,INPUT_PULLUP);
  pinMode(D4,INPUT_PULLUP);
  pinMode(D5,INPUT_PULLUP);
  pinMode(D6,INPUT_PULLUP);
  pinMode(D7,OUTPUT);
  pinMode(D8,OUTPUT);
  digitalWrite(D7,LOW);
  digitalWrite(D8,LOW);</pre><p></p>
<p>Nous avons associé à chaque bouton un messageCallback avec les paramètres permettant d&rsquo;effectuer l&rsquo;action voulu. Pour faire cela, nous avons réalisé une fonction « checkButtonState » qui permet de gérer les évènements d&rsquo;appuie sur les boutons et d&rsquo;appeler le messageCallback correspondant au bouton. Juste avant l&rsquo;appel du messageCallback, la led cablée au pin D7 est allumée pour une période de 2 secondes afin de montrer à l&rsquo;utilisateur que l&rsquo;ESP8266 a bien réalisé l&rsquo;action. Cela permettra en cas de disfonctionnement, que l&rsquo;utilisateur puisse savoir si c&rsquo;est le hardware ou la transmission Wifi/Constellation qui est défectueux.</p>
<p>Le tableau ci-dessous récapitule les actions, messageCallback et pins qui sont associés ensemble :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2018/05/image-8.png"><img class="colorbox-5991"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="image" src="https://developer.myconstellation.io/wp-content/uploads/2018/05/image_thumb-6.png" alt="image" width="450" height="109" border="0" /></a></p>
<p>Ci-dessous le code de la fonction checkButtonState :</p>
<p></p><pre class="crayon-plain-tag">void checkButtonState(){
  
  static int lastButtonStateD1 = HIGH;
  static int lastButtonStateD2 = HIGH;
  static int lastButtonStateD3 = HIGH;
  static int lastButtonStateD4 = HIGH;
  static int lastButtonStateD5 = HIGH;
  static int lastButtonStateD6 = HIGH;
  static long led1TimeLitUP = 0;
  // If the led is lit up for 2 secondes, we shut off the led
  if(millis() - led1TimeLitUP &gt;2000){
      digitalWrite(D7, LOW);
    }
  // We retrieve the pin value
  int reading = digitalRead(D1);
// If pin value has changed
  if (reading != lastButtonStateD1){
   // And if pin value is high which mean button is pushed, then we make the associated action
    if (reading == HIGH){
      // We lit up the led in order to show to the user that the messageCallback is sending
       digitalWrite(D7,HIGH);
       // "led1TimeLitUp" take the value of the moment when it has been litted up
       led1TimeLitUP = millis();
       // we use the messageCallback to do the wanted action
       constellation.sendMessage(Package, "WindowsControl", "VolumeUp","{}");
     
      }
      lastButtonStateD1 = reading ;
     
      return;
  }
  reading = digitalRead(D2);
  if (reading != lastButtonStateD2){
     if (reading == HIGH){
        digitalWrite(D7,HIGH); 
        led1TimeLitUP = millis();
        constellation.sendMessage(Package, "WindowsControl", "VolumeDown", "{}"); 
        
      }
      lastButtonStateD2 = reading;
      return;
    }
  reading = digitalRead(D3);
  if (reading != lastButtonStateD3){
     if (reading == HIGH){
        digitalWrite(D7,HIGH); 
        led1TimeLitUP = millis();
        constellation.sendMessage(Package, "WindowsControl", "SendKey", "SpaceBar");
       
      }
      lastButtonStateD3 = reading;
      return;
    }
    
  reading = digitalRead(D4);
  if (reading != lastButtonStateD4){
     if (reading == HIGH){
        digitalWrite(D7,HIGH); 
        led1TimeLitUP = millis();
        constellation.sendMessage(Package, "WindowsControl", "SendCombinationOfKey", "['ALT', 'Left']");
        
      }
      lastButtonStateD4 = reading;
      return;
    }
   reading = digitalRead(D5);
    if (reading != lastButtonStateD5){
     if (reading == HIGH){
        digitalWrite(D7,HIGH); 
        led1TimeLitUP = millis();
        constellation.sendMessage(Package, "WindowsControl", "SendCombinationOfKey", "['ALT', 'Right']");
      
      }
      lastButtonStateD5 = reading;
      return;
    }
    reading = digitalRead(D6);
    if (reading != lastButtonStateD6){
     if (reading == HIGH){
        digitalWrite(D7,HIGH); 
        led1TimeLitUP = millis();
        constellation.sendMessage(Package, "WindowsControl", "SendCombinationOfKey", "['CTRL', 'Q']");
        
      }
      lastButtonStateD6 = reading;
      return;
    }  
  }</pre><p></p>
<p>Et voilà notre boitier de contrôle est opérationnel. Il ne reste plus qu’à l’alimenter et vous avons à notre disposition des boutons physiques pour piloter notre Windows facilement.</p>
<p>The post <a rel="nofollow" href="https://developer.myconstellation.io/tutorials/creer-un-boitier-connecte-mix-box-permettant-de-controler-votre-ordinateur/">Créer un boitier connecté « Mix box » permettant de contrôler votre ordinateur</a> appeared first on <a rel="nofollow" href="https://developer.myconstellation.io">Constellation</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://developer.myconstellation.io/tutorials/creer-un-boitier-connecte-mix-box-permettant-de-controler-votre-ordinateur/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Créer une serrure connectée à Constellation</title>
		<link>https://developer.myconstellation.io/tutorials/creer-une-serrure-connectee-constellation/</link>
					<comments>https://developer.myconstellation.io/tutorials/creer-une-serrure-connectee-constellation/#respond</comments>
		
		<dc:creator><![CDATA[Sebastien Warin]]></dc:creator>
		<pubDate>Wed, 16 May 2018 14:05:31 +0000</pubDate>
				<category><![CDATA[Tutoriels]]></category>
		<category><![CDATA[AngularJS]]></category>
		<category><![CDATA[Arduino]]></category>
		<category><![CDATA[ESP8266]]></category>
		<category><![CDATA[Serrure]]></category>
		<category><![CDATA[tutoriel]]></category>
		<category><![CDATA[MessageCallback]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Constellation]]></category>
		<guid isPermaLink="false">https://developer.myconstellation.io/?p=5979</guid>

					<description><![CDATA[<p>Article proposé par Olivier MOUILLOT, Mohammed TAHRI JOUTEI HASSANI et Gaëtan DELABY Vous attendez quelqu’un chez vous mais vous êtes occupé à faire autre chose. Cette serrure connectée vous permettra de contrôler l’ouverture de la porte d’entrée depuis n’importe quelle</p>
<p>The post <a rel="nofollow" href="https://developer.myconstellation.io/tutorials/creer-une-serrure-connectee-constellation/">Créer une serrure connectée à Constellation</a> appeared first on <a rel="nofollow" href="https://developer.myconstellation.io">Constellation</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p><em>Article proposé par Olivier MOUILLOT, Mohammed TAHRI JOUTEI HASSANI et Gaëtan DELABY</em></p>
<p>Vous attendez quelqu’un chez vous mais vous êtes occupé à faire autre chose. Cette serrure connectée vous permettra de contrôler l’ouverture de la porte d’entrée depuis n’importe quelle pièce de votre domicile, et cela en un clic grâce à votre smartphone. Nous allons voir pas à pas comment la mettre en place simplement.</p>

<h2>Prérequis</h2>
<p>Pour réaliser ce projet, il vous faut :</p>
<ul>
<li>Une gâche électrique 12V / 500 A</li>
<li>Un ESP8266</li>
<li>Un régulateur de tension LM1117</li>
<li>Un transistor NPN TIP 110</li>
<li>Une résistance 5,6 KΩ</li>
<li>Deux condensateurs 0,1 µF et 0,33 µF</li>
<li>Du fil électrique</li>
<li>Une batterie 12V</li>
<li>Un serveur Constellation (Un ordinateur pourra faire l’affaire)</li>
</ul>
<h2>Etape 1 : réaliser une serrure connectée</h2>
<p>Dans un premier temps, il nous a fallu trouver une serrure adaptée au développement du projet sur laquelle nous pouvions brancher nos fils électriques. Nous avons donc opté pour la serrure suivante que vous pourrez vous procurer via <a href="https://www.amazon.fr/Extel-90301-3-%C3%A9lectrique-passage-serrure/dp/B002LS6OTA/ref=sr_1_2?ie=UTF8&amp;qid=1511196788&amp;sr=8-2&amp;keywords=g%C3%A2che+%C3%A9lectrique&amp;dpID=31-7q-yaD0L&amp;preST=_SX300_QL70_&amp;dpSrc=srch">ce lien </a>.</p>
<p align="center"><a href="https://www.amazon.fr/Extel-90301-3-%C3%A9lectrique-passage-serrure/dp/B002LS6OTA/ref=sr_1_2?ie=UTF8&amp;qid=1511196788&amp;sr=8-2&amp;keywords=g%C3%A2che+%C3%A9lectrique&amp;dpID=31-7q-yaD0L&amp;preST=_SX300_QL70_&amp;dpSrc=srch"><img class="colorbox-5979"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="Extel Weca 90301.3 Gâche électrique sans passage de serrure" src="https://developer.myconstellation.io/wp-content/uploads/2018/05/image.png" alt="Extel Weca 90301.3 Gâche électrique sans passage de serrure" width="146" height="331" border="0" /></a></p>
<p>Pour de plus amples informations techniques sur la gâchette, vous pouvez également regarder <a href="http://www.produktinfo.conrad.com/datenblaetter/75000-99999/094195-an-01-ml-gache_elec_de_en_fr_nl.pdf">ici</a>.</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2018/05/image-1.png"><img class="colorbox-5979"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="serrure de dessus" src="https://developer.myconstellation.io/wp-content/uploads/2018/05/image_thumb.png" alt="serrure de dessus " width="354" height="266" border="0" /></a></p>
<p>Il faut ensuite créer le câblage nécessaire au fonctionnement de la serrure. Notre principal problème a été de convertir l’alimentation indispensable de 12V pour la serrure en une alimentation de 3,3V nécessaire à l’utilisation de notre ESP. A l’aide du régulateur de tension, nous avons réalisé le montage suivant en entrée de l’ESP.</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2018/05/image-2.png"><img class="colorbox-5979"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title=" régulateur de tension" src="https://developer.myconstellation.io/wp-content/uploads/2018/05/image_thumb-1.png" alt=" régulateur de tension" width="400" height="138" border="0" /></a></p>
<p>Afin de laisser passer le courant et de faire fonctionner la gâchette, le transistor TIP110 en série avec une résistance 5,6kΩ se placent en sortie GPIO de l’ESP. Une LED peut être également placée à cette même sortie afin de visualiser l’état de la serrure.</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2018/05/image-3.png"><img class="colorbox-5979"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="sortie ESP" src="https://developer.myconstellation.io/wp-content/uploads/2018/05/image_thumb-2.png" alt="sortie ESP" width="350" height="232" border="0" /></a></p>
<p>Enfin, voici le montage final reprenant tous les composants :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2018/05/image-4.png"><img class="colorbox-5979"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="Schéma global du circuit" src="https://developer.myconstellation.io/wp-content/uploads/2018/05/image_thumb-3.png" alt="Schéma global du circuit" width="350" height="184" border="0" /></a></p>
<h2>Etape 2 : Programmation</h2>
<p>Vous avez fait la moitié du travail, voyons ensemble comment coder notre ESP8266.</p>
<p>La fonction de base de la gâche électrique est assez simple : couper le courant à travers la serrure pour la fermer ou le laisser passer le courant afin d’ouvrir la serrure. En premier lieu, nous avons développé le code Arduino servant à faire faire passer du courant ou non dans la gâche. Pour cela nous devons dans un premier temps connecter notre ESP8266 à Constellation. Pour découvrir comment connecter votre ESP à Constellation, <a href="https://developer.myconstellation.io/getting-started/connecter-un-arduino-ou-un-esp8266-constellation/">suivez ce guide</a>.</p>
<p>En ce qui concerne le code Arduino permettant de contrôler la serrure, vous en trouverez ci-dessous l’intégralité.</p>
<p></p><pre class="crayon-plain-tag">#include &lt;Constellation.h&gt;

// ESP8266 Wifi
#include &lt;ESP8266WiFi.h&gt;
char ssid[] = "MY-WIFI";
char password[] = "xxxxxxxx";

define LOCK_PIN D3

// Constellation client
Constellation&lt;WiFiClient&gt; constellation("172.20.10.2", 8088, "d1mini", "demoisen", "xxxxxxxx");

void setup(void) {
  Serial.begin(115200);  delay(10);

  //SET I/O 
  pinMode(LOCK_PIN, OUTPUT);
  // INITIAL mode
  digitalWrite(LOCK_PIN , LOW);

  // Set Wifi mode
  if (WiFi.getMode() != WIFI_STA) {
    WiFi.mode(WIFI_STA);
    delay(10);
  }
  
  // Connecting to Wifi  
  Serial.print("Connecting to ");
  Serial.println(ssid);  
  WiFi.begin(ssid, password);  
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("WiFi connected. IP: ");
  Serial.println(WiFi.localIP());

  constellation.pushStateObject("State", false);
  
  constellation.registerMessageCallback("OpenDoor", MessageCallbackDescriptor().setDescription("Ouvres la porte"),
      [](JsonObject&amp; message) {
            digitalWrite(LOCK_PIN, HIGH);
            constellation.pushStateObject("State", true);
            delay(4000);
            digitalWrite(LOCK_PIN, LOW);   
            constellation.pushStateObject("State", false);    
      });
  
  // Declare the package descriptor
  constellation.declarePackageDescriptor();

  // WriteLog info
  constellation.writeInfo("Virtual Package on '%s' is started !", constellation.getSentinelName());  
}

void loop(void) {
  constellation.loop();
}</pre><p></p>
<p>L’étape suivante a été d’utiliser la librairie Constellation <a href="https://developer.myconstellation.io/client-api/arduino-esp-api/recevoir-des-messages-et-exposer-des-methodes-messagecallback-sur-arduino-esp/">pour ajouter un « MessageCallback</a> » afin de contrôler le GPIO de la gâchette, <a href="https://developer.myconstellation.io/client-api/arduino-esp-api/produire-des-stateobjects-depuis-arduino-esp/">couplé à un « StateObject</a> » permettant de maintenir l’état de la serrure dans Constellation :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2018/05/image-5.png"><img class="colorbox-5979"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="StateObject" src="https://developer.myconstellation.io/wp-content/uploads/2018/05/image_thumb-4.png" alt="StateObject" width="354" height="258" border="0" /></a></p>
<p>Constellation va aller garder en permanence l’état de la serrure grâce au StateObject « State ».</p>
<p>Dorénavant, n’importe qui connecté au serveur peut se servir du MessageCallback « OpenDoor» exposé par l’ESP que nous avons utilisé pour faire permuter l’ouverture et la fermeture automatique de la serrure. Un délai de 4 secondes est programmé avant que la serrure ne se referme après ouverture de la gâche. Nous avons ajouté cette fonctionnalité afin d’ajouter une partie sécurité à notre dispositif.</p>
<p align="center"><img class="colorbox-5979"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="MessageCallback" src="https://developer.myconstellation.io/wp-content/uploads/2018/05/image-6.png" alt="MessageCallback" width="350" height="73" border="0" /></p>
<p>&nbsp;</p>
<p>On obtient alors simplement le pilotage de notre gâchette avec Constellation, dont l’état pourra être contrôlé grâce à une page Web qu’on vous présente dans la partie suivante.</p>
<h2>Etape 3 : Piloter sa serrure à l’aide d’une page web</h2>
<p>Pour cette dernière étape qui consiste à piloter notre serrure connectée grâce à une page Web. Il s’agit principalement de l’interface via laquelle vous pourrez facilement décider de l’ouverture ou la fermeture de la serrure.</p>
<p>Voici le code HTML que nous avons mis en place :</p>
<p></p><pre class="crayon-plain-tag">&lt;!DOCTYPE html&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml" ng-app="MyDemoApp"&gt;
&lt;head&gt;
    &lt;link rel="stylesheet" href="bruh.css" /&gt;
    &lt;title&gt;Serrure connectée&lt;/title&gt;
    &lt;link rel="stylesheet" href="style.css" /&gt;
    &lt;script type="text/javascript" src="https://code.jquery.com/jquery-2.2.4.min.js"&gt;&lt;/script&gt;
    &lt;script type="text/javascript" src="https://ajax.aspnetcdn.com/ajax/signalr/jquery.signalr-2.2.2.min.js"&gt;&lt;/script&gt;
    &lt;script type="text/javascript" src="https://cdn.myconstellation.io/js/Constellation-1.8.2.min.js"&gt;&lt;/script&gt;
    &lt;script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.7/angular.min.js"&gt;&lt;/script&gt;
    &lt;script type="text/javascript" src="https://cdn.myconstellation.io/js/ngConstellation-1.8.2.min.js"&gt;&lt;/script&gt;
    
    &lt;script&gt;
        var myDemoApp = angular.module('MyDemoApp', ['ngConstellation']);
        myDemoApp.controller('MyController', ['$scope',  'constellationConsumer', function ($scope, constellation) {
  
          constellation.initializeClient("http://172.20.10.2:8088", "xxxxxxxxxx", "WebPage");
          constellation.onConnectionStateChanged(function (change) {
            if (change.newState === $.signalR.connectionState.connected) {
                console.log("Je suis connecté !");
                constellation.requestSubscribeStateObjects("*", "DoorLock", "*", "*");
                }
            });

          constellation.onUpdateStateObject(function (stateObject) {
              console.log(stateObject);
              $scope[stateObject.Name] = stateObject.Value;
              $scope.$apply();
          });
          
          $scope.openDoor = function(){
                constellation.sendMessage({Scope: 'Package', Args: ['DoorLock']}, 'OpenDoor');
            };

            
          constellation.connect();

                }]);
    &lt;/script&gt;
 
&lt;/head&gt;

&lt;body ng-controller="MyController"&gt;
        
    &lt;button ng-click="openDoor()"&gt; OPEN &lt;/button&gt;

&lt;/body&gt;
&lt;/html&gt;</pre><p></p>
<p>Avec quelques lignes de CSS, le rendu final de notre page est le suivant et on ne peut plus simple d’utilisation pour le pilotage :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2018/05/image-7.png"><img class="colorbox-5979"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="Page Web" src="https://developer.myconstellation.io/wp-content/uploads/2018/05/image_thumb-5.png" alt="Page web" width="354" height="169" border="0" /></a></p>
<p>Pour la suite il suffit d’héberger cette page HTML sur un serveur Web quelconque et vous pourrez ouvrir votre porte depuis un PC, un smartphone, une table ou autre.</p>
<p>Et comme l’ouverture de la porte est exposer comme un <a href="https://developer.myconstellation.io/concepts/messaging-message-scope-messagecallback-saga/">MessageCallback</a>, vous pourrez l’ouvrir depusi un code <a href="https://developer.myconstellation.io/client-api/net-package-api/envoyer-des-messages-invoquer-des-messagecallbacks/">C#,</a> <a href="https://developer.myconstellation.io/client-api/python-api/envoyer-des-messages-et-invoquer-des-messagecallbacks-en-python/">Python</a>, <a href="https://developer.myconstellation.io/client-api/arduino-esp-api/envoyer-des-messages-et-invoquer-des-messagecallbacks-depuis-arduino-esp/">Arduino</a> ou même un simple <a href="https://developer.myconstellation.io/client-api/rest-api/interface-rest-consumer/#Envoyer_des_messages">appel HTTP</a> à l’API Constellation. N’hésitez pas à utiliser le “<a href="https://developer.myconstellation.io/constellation-platform/constellation-console/messagecallbacks-explorer/">Code Generator</a>” de la console Constellation.</p>
<p>Au final avec une gâche électrique, un ESP8266, une Constellation et quelques lignes d’Arduino, on est capable d’ouvrir une porte depuis tous type d’application.</p>
<p>The post <a rel="nofollow" href="https://developer.myconstellation.io/tutorials/creer-une-serrure-connectee-constellation/">Créer une serrure connectée à Constellation</a> appeared first on <a rel="nofollow" href="https://developer.myconstellation.io">Constellation</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://developer.myconstellation.io/tutorials/creer-une-serrure-connectee-constellation/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Décrire les MessagesCallbacks en Python avec la mise à jour du PythonProxy 1.8.4</title>
		<link>https://developer.myconstellation.io/blog/decrire-les-messagescallbacks-en-python-avec-la-mise-a-jour-du-pythonproxy-1-8-4/</link>
					<comments>https://developer.myconstellation.io/blog/decrire-les-messagescallbacks-en-python-avec-la-mise-a-jour-du-pythonproxy-1-8-4/#respond</comments>
		
		<dc:creator><![CDATA[Sebastien Warin]]></dc:creator>
		<pubDate>Mon, 30 Apr 2018 13:10:59 +0000</pubDate>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[StateObject]]></category>
		<category><![CDATA[MessageCallback]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[PythonProxy]]></category>
		<category><![CDATA[CLI]]></category>
		<guid isPermaLink="false">https://developer.myconstellation.io/?p=5954</guid>

					<description><![CDATA[<p>Passée inaperçue sur le repository Nuget, une nouvelle version 1.8.4 du PythonProxy a été publié en début d’année. Cette mise à jour de version accompagne désormais le SDK Visual Studio ainsi que les templates du Constellation Package Tools CLI depuis</p>
<p>The post <a rel="nofollow" href="https://developer.myconstellation.io/blog/decrire-les-messagescallbacks-en-python-avec-la-mise-a-jour-du-pythonproxy-1-8-4/">Décrire les MessagesCallbacks en Python avec la mise à jour du PythonProxy 1.8.4</a> appeared first on <a rel="nofollow" href="https://developer.myconstellation.io">Constellation</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Passée inaperçue sur le repository Nuget, une <strong>nouvelle version 1.8.4 du </strong><a href="https://developer.myconstellation.io/client-api/python-api/"><strong>PythonProxy</strong></a> a été publié en début d’année.</p>
<p>Cette mise à jour de version accompagne désormais le SDK Visual Studio ainsi que les templates du <a href="https://developer.myconstellation.io/client-api/python-api/developper-avec-le-package-tools-cli/"><em>Constellation Package Tools CLI</em></a> depuis la semaine dernière.</p>
<p>Au programme de cette nouvelle version : <strong>la description des arguments des MessageCallbacks</strong> et <strong>des types de StateObjects</strong>.</p>
<p>En effet, comme <a href="/client-api/python-api/messagecallbacks-exposer-des-methodes-python/" target="_blank" rel="noopener">vous le savez</a> déjà, pour déclarer un MessageCallback en Python il suffit d’ajouter le décorateur <em>Constellation.MessageCallback()</em> :</p>
<p></p><pre class="crayon-plain-tag">@Constellation.MessageCallback()
def MultipleParameterCallback(a, b, c):
    '''
    MessageCallback with 3 parameters
    '''
    Constellation.WriteInfo("a = %s - type: %s" % (a, type(a)))
    Constellation.WriteInfo("b = %s - type: %s" % (b, type(b)))
    Constellation.WriteInfo("c = %s - type: %s" % (c, type(c)))</pre><p></p>
<p>Dans l&rsquo;exemple ci-dessus, une méthode Python avec 3 paramètres, le simple fait d&rsquo;ajouter le décorateur <em>Constellation.MessageCallback() </em>permet d&rsquo;invoquer cette méthode depuis n&rsquo;importe quel client (package ou consommateur) connecté dans notre Constellation.</p>
<p>D&rsquo;ailleurs, ce MC est également référencé dans Constellation. Nous pouvons le découvrir sur le ControlHub ou via le <a href="/constellation-platform/constellation-console/messagecallbacks-explorer/">MessageCallbacks Explorer</a> de la Console Constellation :<a href="https://developer.myconstellation.io/wp-content/uploads/2016/08/image-71.png"><img loading="lazy" class="alignnone size-medium wp-image-2517 aligncenter colorbox-5954" src="https://developer.myconstellation.io/wp-content/uploads/2016/08/image-71-300x172.png" alt="" width="300" height="172" srcset="https://developer.myconstellation.io/wp-content/uploads/2016/08/image-71-300x172.png 300w, https://developer.myconstellation.io/wp-content/uploads/2016/08/image-71-768x440.png 768w, https://developer.myconstellation.io/wp-content/uploads/2016/08/image-71.png 1024w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>Seulement à l&rsquo;<a href="/client-api/net-package-api/messagecallbacks/">inverse de l&rsquo;API .NET</a>, les parametres d&rsquo;une méthode Python (et les variables de manière globale) ne sont pas fortement typés comme en .NET. Autrement dit, il n&rsquo;y a rien qui indique le type des arguments de notre MessageCallback. Côté <a href="/constellation-platform/constellation-console/messagecallbacks-explorer/">MessageCallbacks Explorer</a> les arguments sont alors reconnus comme « Objects ».</p>
<p><strong>Cette mise à jour 1.8.4 permet la description des arguments</strong> en utilisant une syntaxe empruntée à S<em>phinx </em>dans les commentaires.</p>
<p>Pour cela utilisez la syntaxe suivante dans la description du MC :</p>
<p></p><pre class="crayon-plain-tag">:param &lt;type&gt; &lt;name&gt; : &lt;description&gt;</pre><p></p>
<p>Par exemple pour décrire les 3 arguments de notre exemple :</p>
<p></p><pre class="crayon-plain-tag">@Constellation.MessageCallback()
def Demo(a, b, c):
    '''
    Ceci est un exemple de MC avec 3 parametres

    :param int a: My int value
    :param bool b: My boolean value
    :param string c: My string value
    '''
    Constellation.WriteInfo("a = %s - type: %s" % (a, type(a)))
    Constellation.WriteInfo("b = %s - type: %s" % (b, type(b)))
    Constellation.WriteInfo("c = %s - type: %s" % (c, type(c)))</pre><p></p>
<p align="left">Ainsi en retournant sur le MC Explorer, chaque argument est correctement typé dans Constellation :</p>
<p style="text-align: center;" align="left"><a href="https://developer.myconstellation.io/wp-content/uploads/2018/04/image-10.png"><img loading="lazy" class="aligncenter colorbox-5954" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Description des arguments d'un MC en Python" src="https://developer.myconstellation.io/wp-content/uploads/2018/04/image_thumb-9.png" alt="Description des arguments d'un MC en Python" width="484" height="166" border="0" /></a></p>
<p align="left">Notez que vous pouvez également<a href="/client-api/python-api/messagecallbacks-exposer-des-methodes-python/#Decrire_les_arguments_de_type_complexe"> décrire des types complexes utilisés</a> comme type de paramètre d&rsquo;entrée, <a href="/client-api/python-api/messagecallbacks-exposer-des-methodes-python/#Parametres_optionnels_avec_valeur_par_defaut">définir les paramètres qui sont optionnels</a>, ou encore <a href="/client-api/python-api/messagecallbacks-exposer-des-methodes-python/#Repondre_aux_Sagas">décrire les types de retour</a>.</p>
<p align="left">Egalement compris dans cette mise à jour la <a href="/getting-started/creez-votre-premier-package-constellation-en-python/#Publier_des_StateObjects">description des types complexe utilisés comme modèle de données de vos StateObjects</a>.</p>
<p align="left">Pour en profiter il suffit de mettre à jour le package Nuget depuis Visual Studio ou de taper la commande « <a href="/client-api/python-api/developper-avec-le-package-tools-cli/#Mise_a_jour_du_template">ctln update</a> » si vous utilisez la CLI.</p>
<p>The post <a rel="nofollow" href="https://developer.myconstellation.io/blog/decrire-les-messagescallbacks-en-python-avec-la-mise-a-jour-du-pythonproxy-1-8-4/">Décrire les MessagesCallbacks en Python avec la mise à jour du PythonProxy 1.8.4</a> appeared first on <a rel="nofollow" href="https://developer.myconstellation.io">Constellation</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://developer.myconstellation.io/blog/decrire-les-messagescallbacks-en-python-avec-la-mise-a-jour-du-pythonproxy-1-8-4/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin

Mise en cache de page à l’aide de Disk: Enhanced 

Served from: developer.myconstellation.io @ 2026-01-21 04:41:56 by W3 Total Cache
-->