﻿<?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>Catégorie Guide de démarrage - Constellation</title>
	<atom:link href="https://developer.myconstellation.io/getting-started/feed/" rel="self" type="application/rss+xml" />
	<link>https://developer.myconstellation.io/getting-started/</link>
	<description>Votre plateforme d&#039;interconnexion</description>
	<lastBuildDate>Mon, 27 May 2019 22:12:49 +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>Catégorie Guide de démarrage - Constellation</title>
	<link>https://developer.myconstellation.io/getting-started/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Déployez Constellation</title>
		<link>https://developer.myconstellation.io/getting-started/premiers-pas-avec-constellation/</link>
					<comments>https://developer.myconstellation.io/getting-started/premiers-pas-avec-constellation/#respond</comments>
		
		<dc:creator><![CDATA[Sebastien Warin]]></dc:creator>
		<pubDate>Fri, 25 Nov 2016 09:33:33 +0000</pubDate>
				<category><![CDATA[Guide de démarrage]]></category>
		<guid isPermaLink="false">https://developer.myconstellation.io/?p=3857</guid>

					<description><![CDATA[<p>Ça y est, on y arrive… C’est l’heure de démarrer votre première expérience Constellation mais avant de commencer, vous devez obligatoirement avoir créé un compte pour pouvoir déployer Constellation. Si pour vous Constellation est encore nouveau je vous recommande vivement</p>
<p>The post <a rel="nofollow" href="https://developer.myconstellation.io/getting-started/premiers-pas-avec-constellation/">Déployez Constellation</a> appeared first on <a rel="nofollow" href="https://developer.myconstellation.io">Constellation</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Ça y est, on y arrive… C’est l’heure de démarrer votre première expérience Constellation mais avant de commencer, <strong>vous devez obligatoirement avoir <a href="/login/?reauth=1&amp;redirect_to=/getting-started/premiers-pas-avec-constellation/">créé un compte</a></strong> pour pouvoir déployer Constellation.</p>
<p align="center"><img loading="lazy" class="size-full wp-image-3693 aligncenter colorbox-3857" style="background-image: none; padding-top: 0px; padding-left: 0px; padding-right: 0px; border: 0px;" src="https://developer.myconstellation.io/wp-content/uploads/2016/11/clip_image002.png" alt="" width="211" height="211" border="0" srcset="https://developer.myconstellation.io/wp-content/uploads/2016/11/clip_image002.png 211w, https://developer.myconstellation.io/wp-content/uploads/2016/11/clip_image002-150x150.png 150w" sizes="(max-width: 211px) 100vw, 211px" /></p>
<p>Si pour vous Constellation est encore nouveau je vous recommande vivement la lecture de ces deux articles :</p>
<ul>
<li><a href="/plateforme/">Introduction à la plateforme Constellation</a></li>
<li><a href="/plateforme/fonctionnalites/">Les fonctionnalité de la plateforme Constellation</a></li>
</ul>
<p>Vous découvrirez ce qu’est (et ce que n’est pas) Constellation et ce qu’elle vous apportera. Vous découvrirez également les notions/concepts de base : les sentinelles, les packages, les MessageCallbacks ou encore les StateObjects.</p>
<p>En parlant de concepts, il important de bien les comprendre :</p>
<ul>
<li><a href="/concepts/architecture-constellation-sentinel-package/">L’architecture Constellation : Sentinelle &amp; Package</a> et les <a href="/concepts/sentinels-packages-virtuels/">Sentinelles et Packages « virtuels »</a></li>
<li><a href="/concepts/messaging-message-scope-messagecallback-saga/">Messaging : Message, Scope, MessageCallback &amp; Saga</a></li>
<li><a href="/concepts/stateobjects/">Les StateObjects</a></li>
</ul>
<p>Ca va ? Vous en savez suffisamment ? Prêt pour le grand bain ?</p>
<p>N&rsquo;oubliez pas de<strong> <a href="/login/?reauth=1&amp;redirect_to=/getting-started/premiers-pas-avec-constellation/">créer un compte</a></strong> avant de pouvoir déployer votre serveur Constellation, la Console, ajouter des sentinelles, installer le SDK et gérer les mises à jour grâce au <strong>Web Platform Installer</strong>.</p>
<p>Sous <strong>Windows</strong> téléchargez et lancez l’exécutable ci-dessous : <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-3857"  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>
<ul>
<li><a href="/getting-started/installer-constellation/">Voir le tutoriel d’installation en détail</a></li>
</ul>
<p>Sous <strong>Linux</strong> lancez la commande suivante :</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>Et ensuite ?</p>
<ul>
<li><a href="/getting-started/ajouter-des-sentinelles/">Ajoutez des sentinelles dans votre Constellation</a></li>
<li><a href="/getting-started/telecharger-et-deployer-des-packages-sur-vos-sentinelles/">Téléchargez et déployez des packages sur vos sentinelles</a></li>
</ul>
<p>Prêt pour développer avec Constellation ?</p>
<ul>
<li><a href="/getting-started/creez-votre-premier-package-constellation-en-csharp/">Créez votre premier package Constellation en C#</a></li>
<li><a href="/client-api/net-package-api/packages-ui-wpf-winform/">Créez des packages UI en Winform ou WPF</a></li>
<li><a href="/getting-started/connectez-vos-pages-web-constellation/">Connectez vos pages Web à Constellation</a></li>
<li><a href="/getting-started/creez-votre-premier-package-constellation-en-python/">Créez votre premier package Constellation en Python</a></li>
<li><a href="/getting-started/connecter-un-arduino-ou-un-esp8266-constellation/">Connectez un Arduino ou un ESP8266 à Constellation</a></li>
<li>Suivez également <a href="/tutorials/">les tutoriels</a> avec des projets prêts à l&#8217;emploi</li>
</ul>
<p>Pas envie de lire ? Visionnez les webcasts de découverte :</p>
<p style="text-align: center;"><iframe loading="lazy" width="560" height="315" src="https://www.youtube.com/embed/videoseries?list=PLZd0WwMuqdfAirIlnlsrTlCHTJ5UJZIvU" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p>
<p>Besoin d’aide ?</p>
<ul>
<li>N’hésitez pas à <a href="/questions/">poser vos questions ici</a></li>
<li>Ou discuter de vos projets, de vos idées <a href="/forums/">sur les forums</a></li>
<li>C’est privé ? <a href="/contact/">Contactez-nous</a></li>
</ul>
<p>The post <a rel="nofollow" href="https://developer.myconstellation.io/getting-started/premiers-pas-avec-constellation/">Déployez Constellation</a> appeared first on <a rel="nofollow" href="https://developer.myconstellation.io">Constellation</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://developer.myconstellation.io/getting-started/premiers-pas-avec-constellation/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Installer la plateforme Constellation 1.8</title>
		<link>https://developer.myconstellation.io/getting-started/installer-constellation/</link>
					<comments>https://developer.myconstellation.io/getting-started/installer-constellation/#comments</comments>
		
		<dc:creator><![CDATA[Sebastien Warin]]></dc:creator>
		<pubDate>Sun, 13 Mar 2016 18:22:53 +0000</pubDate>
				<category><![CDATA[Constellation Server]]></category>
		<category><![CDATA[Guide de démarrage]]></category>
		<category><![CDATA[Sentinel]]></category>
		<category><![CDATA[SDK]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[Sentinel UI]]></category>
		<category><![CDATA[Console]]></category>
		<guid isPermaLink="false">https://developer.myconstellation.io/?p=1016</guid>

					<description><![CDATA[<p>Après avoir introduit Constellation, découvrons comment installer la plateforme sur vos ordinateurs ou serveurs. Prérequis La plateforme Constellation se compose : d’un serveur qui héberge et expose la Constellation en HTTP/s (un serveur = une Constellation) de sentinelles (UI ou Service) à</p>
<p>The post <a rel="nofollow" href="https://developer.myconstellation.io/getting-started/installer-constellation/">Installer la plateforme Constellation 1.8</a> appeared first on <a rel="nofollow" href="https://developer.myconstellation.io">Constellation</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Après avoir <a href="/plateforme/">introduit Constellation</a>, découvrons comment installer la plateforme sur vos ordinateurs ou serveurs.</p>
<p style="text-align: center;"><iframe loading="lazy" width="560" height="315" src="https://www.youtube.com/embed/hD8Upyb2jXo" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p>
<h3>Prérequis</h3>
<p>La plateforme Constellation se compose :</p>
<ul>
<li>d’un <strong>serveur</strong> qui héberge et expose la Constellation en HTTP/s (un serveur = une Constellation)</li>
<li>de <strong>sentinelles</strong> (UI ou Service) à installer sur vos différentes machines (tout système Windows ou Linux)</li>
<li>d’une <strong>Console</strong> d&rsquo;administration : application Web de pilotage de votre Constellation</li>
</ul>
<p>Vous pouvez installer le serveur Constellation sur une machine Windows ou <a href="/constellation-platform/constellation-server/installer-constellation-sur-linux/">Linux</a>, que ce soit un laptop, un desktop, un NUC, un SoC, un serveur local ou dans le Cloud.</p>
<p>Dans la rubrique <a href="/constellation-platform/constellation-server/">Constellation Server</a> vous retrouverez plusieurs articles sur les différentes installations possibles (système Linux,  Raspberry, cloud Azure ou Amazon, etc…).</p>
<p>Pour démarrer, nous allons déployer dans ce guide une Constellation complète (serveur, sentinelle, console et le SDK) sur une machine Windows.</p>
<p>Vous avez donc besoin pour suivre ce guide :</p>
<ul>
<li>d&rsquo;un ordinateur ou serveur sous <strong>Windows</strong> (Windows 7/8/10 ou Windows Server)</li>
<li>Pour installer le SDK : <strong>Visual Studio 2015, 2017 ou 2019</strong></li>
</ul>
<p>Si vous ne disposez pas de licence de Visual Studio, vous pouvez installer la version  “Community”, une version gratuite de Visual Studio compatible avec le SDK Constellation : <a title="https://www.visualstudio.com/fr-fr/products/visual-studio-community-vs.aspx" href="https://www.visualstudio.com/fr-fr/products/visual-studio-community-vs.aspx">https://www.visualstudio.com/fr-fr/products/visual-studio-community-vs.aspx</a></p>
<h3>Télécharger la plateforme Constellation</h3>
<p>Sur la <a href="/download/">page de téléchargement</a> vous trouverez plusieurs programmes d’installation pour chaque composant Constellation  :</p>
<ul>
<li>Le serveur</li>
<li>Les sentinelles (UI ou Service)</li>
<li>La console</li>
<li>Le SDK Visual Studio</li>
</ul>
<p>Mais pour gagner en productivité, vous avez à votre disposition le “<strong>Web Platform Installer</strong>” (WPI), un programme d’installation tout-en-un qui télécharge automatiquement et configure les composants que vous souhaitez installer.</p>
<p>Commencez donc par télécharger le programme  “<strong>Constellation Web Platform Installer</strong>” pour Windows :</p>
<p align="center"><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-1016"  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>
    
    <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>
<h3>Installer la plateforme</h3>
<h4>Etape 1 : lancement de l’installation</h4>
<p>Lancez le programme “Constellation Web Platform Installer.exe”</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/05/image-8.png"><img class="colorbox-1016"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="Web Platform Installer" src="https://developer.myconstellation.io/wp-content/uploads/2016/05/image_thumb-8.png" alt="Web Platform Installer" width="428" height="333" border="0" /></a></p>
<h4>Etape 2 : identification</h4>
<p>Vous devez dans cette étape renseigner votre compte myConstellation.io afin de pouvoir télécharger les composants Constellation et accéder à vos licences :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/05/image-9.png"><img class="colorbox-1016"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="Identification" src="https://developer.myconstellation.io/wp-content/uploads/2016/05/image_thumb-9.png" alt="Identification" width="428" height="333" border="0" /></a></p>
<h4>Etape 3 : acceptez la licence d’utilisation</h4>
<p>Vous retrouverez le détail des licences Constellation <a href="/licensing/">sur cette page</a>. Pour résumer, Constellation est gratuit pour un usage personnel ou éducatif sans aucun but lucratif et soumis à l’acquisition d’une licence pour un usage professionnel ou entreprise.</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image11.png"><img class="colorbox-1016"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Licence d'utilisation" src="https://developer.myconstellation.io/wp-content/uploads/2016/03/image11_thumb.png" alt="Licence d'utilisation" width="424" height="347" border="0" /></a></p>
<h4 align="left">Etape 4 : choix du canal de distribution</h4>
<p>Vous devez sélectionner le canal de distribution à utiliser : Stable ou Pre-release (versions Beta) :</p>
<p style="text-align: center;"><a href="https://developer.myconstellation.io/wp-content/uploads/2019/05/image-6.png"><img loading="lazy" class="alignnone aligncenter colorbox-1016" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Choix du canal" src="https://developer.myconstellation.io/wp-content/uploads/2019/05/image-6.png" alt="Choix du canal" width="424" height="347" border="0" /></a></p>
<h4 align="left">Etape 5 : répertoire d’installation</h4>
<p align="left">Vous devez choisir le répertoire d’installation racine de la plateforme Constellation :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image47.png"><img class="colorbox-1016"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Repertoire d'installation de la plateforme" src="https://developer.myconstellation.io/wp-content/uploads/2016/03/image47_thumb.png" alt="Repertoire d'installation de la plateforme" width="424" height="347" border="0" /></a></p>
<h4 align="left">Etape 6 : sélectionnez les composants Constellation à installer</h4>
<p align="left">Vous pouvez sélectionner ici les composants à installer ou utiliser les profils prédéfinis :</p>
<ul>
<li>
<div align="left"><u>Full server installation</u> : installation typique pour un serveur (le serveur, la sentinelle en version service et la console Constellation)</div>
</li>
<li>
<div align="left"><u>Full developer installation</u> : installation typique pour un poste de développement (le serveur, la sentinelle UI, la console et le SDK Visual Studio)</div>
</li>
<li>
<div align="left"><u>Custom installation</u> : sélectionnez à la carte les composants que vous souhaitez installer</div>
</li>
</ul>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/05/image-10.png"><img class="colorbox-1016"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="Selection des composants" src="https://developer.myconstellation.io/wp-content/uploads/2016/05/image_thumb-10.png" alt="Selection des composants" width="428" height="333" border="0" /></a></p>
<p>Notez que le WPI vous indiquera la dernière version de chaque composant à installer et est capable de déployer les mises à jour pour chacun de ces composants si une nouvelle version plus récente est disponible.</p>
<p>Notez également que si Visual Studio n’est pas installé, le composant SDK sera grisé avec la mention “Not applicable”.</p>
<p>Dans ce guide, sélectionnons le profil “Développeur” :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/05/image-11.png"><img class="colorbox-1016"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="Selection des composants" src="https://developer.myconstellation.io/wp-content/uploads/2016/05/image_thumb-11.png" alt="Selection des composants" width="428" height="333" border="0" /></a></p>
<h4 align="left">Etape 7 : configuration du serveur Constellation</h4>
<p align="left">Entrons désormais dans les étapes de configuration de chacun des composants à installer en commençant par le serveur Constellation.</p>
<h5 align="left">Etape 7.1 : sélection de la licence</h5>
<p align="left">Premièrement, vous devez sélectionner <a href="/licensing/">une licence</a> pour l’utilisation du serveur. Vous pouvez utiliser une licence que vous aurez préalablement téléchargée depuis le portail Constellation ou  vous connecter directement sur le service de licence de Constellation depuis le WPI :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/05/image-12.png"><img class="colorbox-1016"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="Selection de la licence" src="https://developer.myconstellation.io/wp-content/uploads/2016/05/image_thumb-12.png" alt="Selection de la licence" width="428" height="333" border="0" /></a></p>
<p align="left">Vous obtiendrez l’ensemble des licences associées à votre compte avec la possibilité de créer des licences gratuites pour un usage personnel (<a href="/licensing/">plus d’information ici</a>).</p>
<p align="left">Dans notre cas créons une licence personnelle :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/05/image-13.png"><img class="colorbox-1016"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="Selection/Création de la licence" src="https://developer.myconstellation.io/wp-content/uploads/2016/05/image_thumb-13.png" alt="Selection/Création de la licence" width="428" height="333" border="0" /></a></p>
<h5 align="left">Etape 7.2 : choix du répertoire des packages</h5>
<p align="left">Dans cette étape vous devez définir le répertoire pour votre catalogue de packages de votre Constellation.</p>
<p align="left">Par défaut, il s’agit du sous-dossier “Packages” de votre répertoire d’installation :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/05/image-14.png"><img class="colorbox-1016"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="Configuration du Package Repository" src="https://developer.myconstellation.io/wp-content/uploads/2016/05/image_thumb-14.png" alt="Configuration du Package Repository" width="428" height="333" border="0" /></a></p>
<h5 align="left">Etape 7.3 : choix du port d’écoute du serveur</h5>
<p align="left">Le serveur Constellation utilise le protocole HTTP pour exposer ses différents hubs et API. Pour cela vous avez besoin de choisir le port d’écoute et de l’ouvrir au niveau de votre firewall.</p>
<p align="left">L’assistant peut déclarer le port que vous avez choisi dans le pare-feu de Windows. Si vous souhaitez ouvrir Constellation à l’extérieur de votre réseau local, à vous d’ouvrir le port sur votre routeur.</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/05/image-15.png"><img class="colorbox-1016"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="Configuration réseau" src="https://developer.myconstellation.io/wp-content/uploads/2016/05/image_thumb-15.png" alt="Configuration réseau" width="428" height="333" border="0" /></a></p>
<p align="left">A noter que vous pouvez déclarer dans la configuration du serveur Constellation sur plusieurs ports HTTP et/ou HTTPS ou même définir un chemin HTTP personnalisé. Il est d’ailleurs conseillé d’activer le protocole HTTPS si vous souhaitez exposer votre serveur Constellation sur Internet. Vous retrouverez plusieurs articles sur la configuration avancée du serveur dans la rubrique <a href="https://developer.myconstellation.io/constellation-platform/constellation-server/">Constellation Server</a>.</p>
<h5 align="left">Etape 7.4 : choix des clés d’accès</h5>
<p align="left">Pour se connecter à Constellation vous avez besoin de créer des clés d’accès (les “Access Keys”). Dans le cas d’une nouvelle installation, l’assistant vous proposera de créer deux clés :</p>
<ul>
<li>
<div align="left">Une clé “Standard” (accès de base) que vous utiliserez pour connecter vos sentinelles et packages</div>
</li>
<li>
<div align="left">Une clé “Administrator” qui dispose des droits d’accès au hub de contrôle (pour le pilotage de la Constellation) et à l’API de Management (pour la configuration du serveur) :</div>
</li>
</ul>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/05/image-16.png"><img class="colorbox-1016"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="Configuration des Access Keys" src="https://developer.myconstellation.io/wp-content/uploads/2016/05/image_thumb-16.png" alt="Configuration des Access Keys" width="428" height="333" border="0" /></a></p>
<p align="left">Une clé d’accès est une chaîne de caractère. Il est conseillé de choisir des clés d’accès assez longues (&gt; 16 caractères) et compliquées.</p>
<p align="left">Pour simplifier leurs mémorisations et générations, Constellation propose d’utiliser un couple login/password pour créer des clés d’accès. Pour cela, on utilise le hash SHA1.</p>
<p align="left">Exemple : pour le login “Admin” et le mot de passe “Password”, la clé d’accès sera “d882b8721a224d38ebb54559e6b54e5df3a1bc6d » (soit SHA1(“AdminPassword”)). Notez bien que la casse est importante !</p>
<p align="left">Dans l’assistant d’installation, cliquez sur le bouton “Use Password” pour renseigner un couple login/password afin de générer les Access Keys :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/05/image-17.png"><img class="colorbox-1016"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="Création des Access Keys" src="https://developer.myconstellation.io/wp-content/uploads/2016/05/image_thumb-17.png" alt="Création des Access Keys" width="354" height="275" border="0" /></a><a href="https://developer.myconstellation.io/wp-content/uploads/2016/05/image-18.png"><img class="colorbox-1016"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="Création des Access Keys" src="https://developer.myconstellation.io/wp-content/uploads/2016/05/image_thumb-18.png" alt="Création des Access Keys" width="354" height="275" border="0" /></a></p>
<p align="left">Pour finir, vous pouvez ajouter le droit de débogage sur la clé “Administrator” en cochant la case correspondante. Cela nous permettra de tester des packages connectés à votre Constellation depuis Visual Studio.</p>
<h4 align="left">Etape 8 : configuration de la Console Constellation</h4>
<p align="left">Comme la Console Constellation est déployée sur la même machine que le serveur Constellation, l’assistant vous propose héberger la console par le serveur Constellation lui-même.</p>
<p align="left">Si vous désirez utiliser votre propre serveur Web pour exposer la Console (Apache, IIS ou autre) sélectionnez la deuxième option mais dans notre guide laissons le serveur Constellation héberger la console :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/05/image-19.png"><img class="colorbox-1016"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="Hosting de la console" src="https://developer.myconstellation.io/wp-content/uploads/2016/05/image_thumb-19.png" alt="Hosting de la console" width="428" height="333" border="0" /></a></p>
<p align="left">Vous pouvez ensuite fixer une clé d’accès en dur ou utiliser une page de login. De plus vous pouvez également restreindre l’accès à la console en local seulement.</p>
<p align="left">Laissons les options par défaut (c’est à dire Console ouverte à tous avec une page de login) :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/05/image-20.png"><img class="colorbox-1016"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="Configuration de la console" src="https://developer.myconstellation.io/wp-content/uploads/2016/05/image_thumb-20.png" alt="Configuration de la console" width="428" height="333" border="0" /></a></p>
<h4 align="left">Etape 9 : configuration de la Sentinelle Constellation</h4>
<p align="left">Dans la sélection des composants nous avons indiqué vouloir installer la sentinelle UI. Vous arrivez donc à cette étape de configuration.</p>
<p align="left">Comme la sentinelle est installée sur la même machine sur le serveur, vous pouvez l’inclure automatiquement dans votre Constellation ou bien l’inclure dans une autre Constellation en sélectionnant la deuxième option.</p>
<p align="left">Dans notre cas, laissons la première option sélectionnée pour ajouter notre sentinelle UI à notre Constellation en cours d”installation :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/05/image-21.png"><img class="colorbox-1016"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="Ajout de la sentinelle" src="https://developer.myconstellation.io/wp-content/uploads/2016/05/image_thumb-21.png" alt="Ajout de la sentinelle" width="428" height="333" border="0" /></a></p>
<h4>Etape 10 : Installation</h4>
<p>La configuration des composants est désormais terminée. Vous retrouverez tout le détail sur l’écran de confirmation :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/05/image-22.png"><img class="colorbox-1016"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="Confirmation d'installation" src="https://developer.myconstellation.io/wp-content/uploads/2016/05/image_thumb-22.png" alt="Confirmation d'installation" width="428" height="333" border="0" /></a></p>
<p align="left">En cliquant sur le bouton “Install”, le <em>Web Platform Installer </em>va télécharger les dernières versions de composants Constellation à installer :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/05/image-23.png"><img class="colorbox-1016"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="Téléchargement des composants" src="https://developer.myconstellation.io/wp-content/uploads/2016/05/image_thumb-23.png" alt="Téléchargement des composants" width="428" height="333" border="0" /></a></p>
<p align="left">Puis il déroulera l’installation et la configuration de chacun de ces composants :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/05/image-24.png"><img class="colorbox-1016"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="Installation des composants" src="https://developer.myconstellation.io/wp-content/uploads/2016/05/image_thumb-24.png" alt="Installation des composants" width="428" height="333" border="0" /></a></p>
<p align="left">A la fin de l’installation, l’assistant vous proposera de lancer la Console et la Sentinelle UI (car ces deux composants ont été installés) :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/05/image-25.png"><img class="colorbox-1016"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="Fin de l'installation" src="https://developer.myconstellation.io/wp-content/uploads/2016/05/image_thumb-25.png" alt="Fin de l'installation" width="428" height="333" border="0" /></a></p>
<h4 align="left">Etape 11 : Validation de l’installation</h4>
<p align="left">En fermant le programme d’installation, la sentinelle UI va être lancée :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image73.png"><img class="colorbox-1016"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Démarrage de la sentinelle UI" src="https://developer.myconstellation.io/wp-content/uploads/2016/03/image73_thumb.png" alt="Démarrage de la sentinelle UI" width="424" height="140" border="0" /></a></p>
<p align="left">En double-cliquant sur l’icone vous pourrez visualiser les logs de cette sentinelle qui doit être correctement connectée au serveur :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image77.png"><img class="colorbox-1016"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Sentinel UI" src="https://developer.myconstellation.io/wp-content/uploads/2016/03/image77_thumb.png" alt="Sentinel UI" width="424" height="207" border="0" /></a></p>
<p align="left">Vous aurez également la Console Constellation qui se lancera dans votre navigateur Internet par défaut :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image81.png"><img class="colorbox-1016"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Page de connexion à la Console" src="https://developer.myconstellation.io/wp-content/uploads/2016/03/image81_thumb.png" alt="Page de connexion à la Console" width="424" height="332" border="0" /></a></p>
<p>Utilisez le Login/Password de la clé d’accès “Administrator” pour vous connecter. Sur la page “Sentinels” vous devriez voir votre sentinelle UI locale connectée :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image85.png"><img class="colorbox-1016"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Sentinelle connectée" src="https://developer.myconstellation.io/wp-content/uploads/2016/03/image85_thumb.png" alt="Sentinelle connectée" width="424" height="332" border="0" /></a></p>
<p align="left">Bravo vous avez déployé votre première Constellation avec succès !</p>
<h4>Optionnellement : ajouter ou mettre à jour un composant</h4>
<p>Vous pouvez à tout moment relancer le “Web Platform Installer” (WPI) pour<strong> ajouter</strong> ou <strong>mettre à jour</strong> des composants Constellation.</p>
<p>Ainsi quand des mises à jour Constellation sont disponibles, vous avez juste à relancer le WPI et vous laissez guider par l&rsquo;assistant.</p>
<p>Dans notre exemple, relançons le WPI. Comme nous le montre l&rsquo;écran ci-dessous, tous les composants sont bien à jour mais vous pouvez encore ajouter la “Sentinel Service” sur cette machine :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/05/image-26.png"><img class="colorbox-1016"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="Ajout de composant" src="https://developer.myconstellation.io/wp-content/uploads/2016/05/image_thumb-26.png" alt="Ajout de composant" width="428" height="333" border="0" /></a></p>
<p>Vous entrez alors dans la configuration de la sentinelle avec la possibilité d’ajouter cette nouvelle sentinelle à votre Constellation locale (car précédemment installée) ou de l’ajouter à une autre Constellation.</p>
<h3>Next steps</h3>
<ul>
<li><a href="https://developer.myconstellation.io/getting-started/ajouter-des-sentinelles/">Ajoutez des sentinelles dans votre Constellation</a></li>
<li><a href="https://developer.myconstellation.io/getting-started/telecharger-et-deployer-des-packages-sur-vos-sentinelles/">Téléchargez et déployez des packages sur vos sentinelles</a></li>
<li>Exposer votre serveur Constellation derrière avec reverse proxy <a href="/constellation-platform/constellation-server/exposer-constellation-derrire-un-serveur-web-reverse-proxy/">IIS</a> ou <a href="/constellation-platform/constellation-server/exposer-constellation-en-https-derriere-un-reverse-proxy-avec-nginx-et-lets-encrypt/">Nginx</a> et ajouter le <a href="https://developer.myconstellation.io/constellation-platform/constellation-server/configuration-ssl/">support du HTTPS/SSL</a></li>
</ul>
<p>Vous souhaitez installer le serveur et sa console sur un système Linux ?</p>
<ul>
<li>
<p class="header-post-title-class"><a href="/constellation-platform/constellation-server/installer-constellation-sur-linux/">Installer Constellation sur Linux</a></p>
</li>
</ul>
<p>Prêt pour développer avec Constellation ?</p>
<ul>
<li><a href="https://developer.myconstellation.io/getting-started/creez-votre-premier-package-constellation-en-csharp/">Créez votre premier package Constellation en C#</a></li>
<li><a href="https://developer.myconstellation.io/client-api/net-package-api/packages-ui-wpf-winform/">Créez des packages UI en Winform ou WPF</a></li>
<li><a href="https://developer.myconstellation.io/getting-started/connectez-vos-pages-web-constellation/">Connectez vos pages Web à Constellation</a></li>
<li><a href="https://developer.myconstellation.io/getting-started/creez-votre-premier-package-constellation-en-python/">Créez votre premier package Constellation en Python</a></li>
<li><a href="https://developer.myconstellation.io/getting-started/connecter-un-arduino-ou-un-esp8266-constellation/">Connectez un Arduino ou un ESP8266 à Constellation</a></li>
</ul>
<p>The post <a rel="nofollow" href="https://developer.myconstellation.io/getting-started/installer-constellation/">Installer la plateforme Constellation 1.8</a> appeared first on <a rel="nofollow" href="https://developer.myconstellation.io">Constellation</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://developer.myconstellation.io/getting-started/installer-constellation/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
			</item>
		<item>
		<title>Ajouter des sentinelles dans votre Constellation</title>
		<link>https://developer.myconstellation.io/getting-started/ajouter-des-sentinelles/</link>
					<comments>https://developer.myconstellation.io/getting-started/ajouter-des-sentinelles/#respond</comments>
		
		<dc:creator><![CDATA[Sebastien Warin]]></dc:creator>
		<pubDate>Wed, 30 Mar 2016 15:26:53 +0000</pubDate>
				<category><![CDATA[Guide de démarrage]]></category>
		<category><![CDATA[Constellation Sentinel]]></category>
		<category><![CDATA[Sentinel]]></category>
		<category><![CDATA[Mono]]></category>
		<category><![CDATA[Raspberry Pi]]></category>
		<category><![CDATA[Sentinel UI]]></category>
		<guid isPermaLink="false">https://developer.myconstellation.io/?p=1727</guid>

					<description><![CDATA[<p>Les sentinelles sont des agents exécutés sur des systèmes Windows ou Linux qui, connectés à votre Constellation, permettent de déployer des packages Constellation. En suivant le guide d’installation vous avez pu installer une sentinelle Service ou UI sur la même</p>
<p>The post <a rel="nofollow" href="https://developer.myconstellation.io/getting-started/ajouter-des-sentinelles/">Ajouter des sentinelles dans votre Constellation</a> appeared first on <a rel="nofollow" href="https://developer.myconstellation.io">Constellation</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Les sentinelles sont des agents exécutés sur des systèmes Windows ou Linux qui, connectés à votre Constellation, permettent de déployer des packages Constellation.</p>
<p>En suivant <a href="/getting-started/installer-constellation/">le guide d’installation</a> vous avez pu installer une sentinelle Service ou UI sur la même machine que le serveur Constellation.</p>
<p>Voyons maintenant comment installer des sentinelles sur vos autres machines (laptops, desktop, serveurs, Raspberry, etc..).</p>
<p style="text-align: center;"><iframe loading="lazy" width="560" height="315" src="https://www.youtube.com/embed/OIPI6VYK5Jw" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p>
<h3>Prérequis</h3>
<p>Il existe deux types de sentinelle :</p>
<ul>
<li>La “<strong>Sentinel Service</strong>” : il s’agit d’un service compatible Windows et Linux qui tourne en arrière plan et permet de déployer des packages Constellation sans interface graphique.</li>
<li>La “<strong>Sentinel UI</strong>” : il s’agit d’une application Windows s’exécutant au sein d’une session Windows et permettant de déployer des packages Constellation avec interface graphique (dit <a href="/client-api/net-package-api/packages-ui-wpf-winform/">Package UI</a>) ou encore des packages ayant besoin d’interagir avec la session de l’utilisateur.</li>
</ul>
<p>Les prérequis pour installer une sentinelle sont :</p>
<ul>
<li>Un système Windows avec le .NET Framework 4.0 installé (soit au minimum un Windows XP SP3 ou un Windows 2003 SP2)</li>
<li>Un système Linux avec Mono 3.10 au minimum</li>
</ul>
<p><u>Note</u> : la sentinelle UI n’est disponible que pour Windows.</p>
<h3>Installation d’une sentinelle sur un système Windows</h3>
<p>Les installeurs pour la sentinelle Service et UI sont similaires, la procédure d’installation est donc identique.</p>
<p><u>Note</u> : vous pouvez installer sur la même machine une sentinelle UI et une sentinelle Service.</p>
<p>Pour cela, vous pouvez soit <a href="/download/">télécharger</a> le programme d’installation spécifique à la Sentinelle UI et/ou Service ou, pour faire plus simple, utiliser le “<em>Web Platform Installer</em>” pour installer et mettre à jour les dernières versions des composants Constellation.</p>
<h4>Etape 1 : lancez le “Web Platform Installer</h4>
<p align="center"><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-1727"  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>
<h4>Etape 2 : sélection des composants</h4>
<p>Commencez par vous identifier avec votre compte Constellation et acceptez la licence d’utilisation avant de pouvoir sélectionner les composants à installer :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/05/image-30.png"><img class="colorbox-1727"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Selection des composants" src="https://developer.myconstellation.io/wp-content/uploads/2016/05/image_thumb-30.png" alt="Selection des composants" width="424" height="330" border="0" /></a></p>
<p align="left">Dans le cas ci-dessus, nous avons déjà installé la dernière version du SDK Constellation comme vous pouvez le constater !</p>
<p align="left">Dans ce guide nous allons installer les deux sentinelles (UI et Service) que nous connecterons à notre Constellation <a href="/getting-started/installer-constellation/">précédemment</a> installée sur une autre machine.</p>
<h4 align="left">Etape 3 : type d’installation des sentinelles</h4>
<p align="left">Vous avez ensuite le choix entre :</p>
<ol>
<li>
<div align="left">Installer la sentinelle <strong>et l’enregistrer</strong> dans votre Constellation en utilisant l’API de Management (il vous faudra connaitre une AccessKey qui a les droits de management pour procéder à l’enregistrement).</div>
</li>
<li>
<div align="left">Installer la sentinelle seulement</div>
</li>
</ol>
<p align="left">Bien entendu pour automatiser le processus, choisissons la première option :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/05/image-31.png"><img class="colorbox-1727"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Choix d'installation" src="https://developer.myconstellation.io/wp-content/uploads/2016/05/image_thumb-31.png" alt="Choix d'installation" width="424" height="330" border="0" /></a></p>
<p align="left">Notez que si vous souhaitez ajouter une sentinelle sur un système sur lequel un serveur Constellation est installé, l’assistant vous proposera d’installer et d’enregistrer automatiquement votre sentinelle sur le serveur local.</p>
<h4 align="left">Etape 4 : sélection du serveur Constellation à joindre</h4>
<p align="left">Vous devez indiquer l’URI de votre serveur Constellation ainsi que la clé d’accès avec les droits d’administration pour enregistrer vos sentinelles.</p>
<p align="left">Dans cet exemple le serveur Constellation est accessible sur l’URL “http://pc-seb.ajsinfo.loc:8088/” avec le couple “admin/password” (cliquez sur le bouton “Use Password” pour générer l’AccessKey à partir de ce couple) :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/05/image-32.png"><img class="colorbox-1727"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Enregistrement de la sentinelle" src="https://developer.myconstellation.io/wp-content/uploads/2016/05/image_thumb-32.png" alt="Enregistrement de la sentinelle" width="424" height="330" border="0" /></a></p>
<h4 align="left">Etape 5 : choix de la clé d’accès pour la sentinelle</h4>
<p align="left">Vous aurez ensuite à choisir parmi les clé d’accès configurées sur votre serveur, laquelle doit être utilisée pour la connexion de vos sentinelles :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/05/image-33.png"><img class="colorbox-1727"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Choix de la clé d'accès pour la sentinelle" src="https://developer.myconstellation.io/wp-content/uploads/2016/05/image_thumb-33.png" alt="Choix de la clé d'accès pour la sentinelle" width="424" height="332" border="0" /></a></p>
<h4 align="left">Etape 6 : installation</h4>
<p align="left">Il ne vous reste plus qu’à confirmer l’installation :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/05/image-34.png"><img class="colorbox-1727"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Confirmation de l'installation" src="https://developer.myconstellation.io/wp-content/uploads/2016/05/image_thumb-34.png" alt="Confirmation de l'installation" width="424" height="330" border="0" /></a></p>
<p align="left">L’installeur téléchargera et installera les composants puis réalisera l’enregistrement vos deux nouvelles sentinelles sur votre serveur Constellation avant de lancer le service (pour la Sentinel Service) ou l’application (pour la Sentinel UI).</p>
<p align="left">Depuis la Console Constellation, nous pouvons observer nos deux nouvelles sentinelles (PO-SWARIN et PO-SWARIN_UI) fraichement connectées :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/05/image-46.png"><img class="colorbox-1727"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Sentinelles connectées" src="https://developer.myconstellation.io/wp-content/uploads/2016/05/image_thumb-46.png" alt="Sentinelles connectées" width="428" height="140" border="0" /></a></p>
<h3>Installation d’une sentinelle sur un système Linux</h3>
<p>Sur un système Linux utilisez le “Web Platform Installer” pour automatiser le processus d’installation et de configuration.</p>
<p>Le WPI se chargera d’installer tous les prérequis (Mono, Python, PIP, etc..) et les dernières versions des composants Constellation.</p>
<h4>Etape 1 : lancez le “Web Platform Installer</h4>
<p>Pour lancer le WPI entrez la commande suivante :</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>Le programme d’installation doit être lancé en “root” pour cela, le script se relancera automatiquement en “sudo” si la commande est présente. Autrement il tentera de se relancer automatiquement en “su root”. Si cette commande n’existe pas non plus, il affichera un message d’erreur. Vous aurez alors besoin de relancer manuellement le script “install.sh” en root.</p>
<p>Avec “sudo” ou “su root”, vous aurez dans certain cas besoin de fournir votre mot de passe “root” pour pouvoir autoriser le script d’installation à se lancer  :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/05/image-35.png"><img class="colorbox-1727"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Web Platform Installer" src="https://developer.myconstellation.io/wp-content/uploads/2016/05/image_thumb-35.png" alt="Web Platform Installer" width="428" height="271" border="0" /></a></p>
<p align="left">Le script va vérifier les prérequis à savoir :</p>
<ul>
<li>
<div align="left">Python (2.7 ou 3.x)</div>
</li>
<li>
<div align="left">Python-dev</div>
</li>
<li>
<div align="left">Mono 3.10 sur un ARMv6 ou autrement Mono 3.12 minimum</div>
</li>
<li>
<div align="left">Supervisor</div>
</li>
</ul>
<p align="left">Sur un système Debian ou dérivé, le programme d’installation vous proposera d’installer automatiquement les prérequis si besoin.</p>
<h4 align="left">Etape 2 : sélection des composants</h4>
<p align="left">Une fois les prérequis validés, vous pourrez choisir les composants Constellation à installer :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/05/image-36.png"><img class="colorbox-1727"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Selection des composants" src="https://developer.myconstellation.io/wp-content/uploads/2016/05/image_thumb-36.png" alt="Selection des composants" width="428" height="271" border="0" /></a></p>
<p>Dans ce guide, sélectionnons le composant “Sentinel”. Vous commencerez par accepter la licence d’utilisation :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/05/image-37.png"><img class="colorbox-1727"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Licence d'utilisation" src="https://developer.myconstellation.io/wp-content/uploads/2016/05/image_thumb-37.png" alt="Licence d'utilisation" width="428" height="271" border="0" /></a></p>
<p>Puis vous devrez renseigner vos identifiants de votre compte myConstellation.io :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/05/image-38.png"><img class="colorbox-1727"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Identification" src="https://developer.myconstellation.io/wp-content/uploads/2016/05/image_thumb-38.png" alt="Identification" width="428" height="271" border="0" /></a></p>
<p align="left">Définissez ensuite le répertoire d’installation de la sentinelle sur votre système :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/05/image-39.png"><img class="colorbox-1727"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Répertoire d'installation" src="https://developer.myconstellation.io/wp-content/uploads/2016/05/image_thumb-39.png" alt="Répertoire d'installation" width="428" height="271" border="0" /></a></p>
<h4 align="left">Etape 3 : sélection du serveur Constellation à rejoindre</h4>
<p align="left">Renseignez maintenant l’URI de votre serveur Constellation sur laquelle votre sentinelle doit se connecter :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/05/image-40.png"><img class="colorbox-1727"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="URI du serveur Constellation" src="https://developer.myconstellation.io/wp-content/uploads/2016/05/image_thumb-40.png" alt="URI du serveur Constellation" width="428" height="271" border="0" /></a></p>
<p align="left">Notez que si vous souhaitez ajouter une sentinelle sur un système sur lequel un serveur Constellation est installé, l’assistant vous proposera d’installer et d’enregistrer automatiquement votre sentinelle sur le serveur local.</p>
<h4 align="left">Etape 4 : type d’installation de la sentinelle</h4>
<p align="left">Comme pour l’installation d’une sentinelle sous Windows, indiquez si vous souhaitez également procéder à son enregistrement :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/05/image-41.png"><img class="colorbox-1727"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Choix d'installation" src="https://developer.myconstellation.io/wp-content/uploads/2016/05/image_thumb-41.png" alt="Choix d'installation" width="428" height="271" border="0" /></a></p>
<p align="left">Au quel cas il faudra spécifier un compte avec les droits de management pour pouvoir joindre la sentinelle dans votre Constellation :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/05/image-42.png"><img class="colorbox-1727"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Identification sur le serveur Constellation" src="https://developer.myconstellation.io/wp-content/uploads/2016/05/image_thumb-42.png" alt="Identification sur le serveur Constellation" width="244" height="155" border="0" /></a><a href="https://developer.myconstellation.io/wp-content/uploads/2016/05/image-43.png"><img class="colorbox-1727"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Identification sur le serveur Constellation" src="https://developer.myconstellation.io/wp-content/uploads/2016/05/image_thumb-43.png" alt="Identification sur le serveur Constellation" width="244" height="155" border="0" /></a></p>
<h4 align="left">Etape 5 : choix de la clé d’accès pour la sentinelle</h4>
<p align="left">Vous pourrez ensuite choisir parmi les clé d’accès configurées sur votre serveur, laquelle doit être utilisée par votre sentinelle :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/05/image-44.png"><img class="colorbox-1727"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Choix de la clé d'accès" src="https://developer.myconstellation.io/wp-content/uploads/2016/05/image_thumb-44.png" alt="Choix de la clé d'accès" width="428" height="271" border="0" /></a></p>
<h4 align="left">Etape 6 : prérequis pour les packages Python</h4>
<p align="left">Enfin si vous comptez déployer des packages Constellation Python vous devez installer le runtime Python ainsi que différentes librairies (<a href="/getting-started/creez-votre-premier-package-constellation-en-python/">plus d&rsquo;informations</a>).</p>
<p align="left">Le WPI vous proposera d’installer ces prérequis pour vous de manière automatique :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2017/05/image-10.png"><img class="colorbox-1727"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Installation des prérequis Python" src="https://developer.myconstellation.io/wp-content/uploads/2017/05/image_thumb-10.png" alt="Installation des prérequis Python" width="432" height="273" border="0" /></a></p>
<h4 align="left">Etape 7 : installation et démarrage</h4>
<p align="left">Le WPI procèdera à l’installation et à la configuration de la sentinelle et des prérequis.</p>
<p align="left">A la fin de ce processus, la sentinelle sera automatiquement démarrée :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/05/image-45.png"><img class="colorbox-1727"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Fin de l'installation" src="https://developer.myconstellation.io/wp-content/uploads/2016/05/image_thumb-45.png" alt="Fin de l'installation" width="428" height="271" border="0" /></a></p>
<p align="left">En retournant sur la Console de notre Constellation, on pourra constater qu’une nouvelle sentinelle ici nommée “rpi2” s’est bien connectée dans notre Constellation :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/05/image-47.png"><img class="colorbox-1727"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Sentinelles connectées" src="https://developer.myconstellation.io/wp-content/uploads/2016/05/image_thumb-47.png" alt="Sentinelles connectées" width="428" height="170" border="0" /></a></p>
<p align="left">Votre sentinelle Linux est prête, vous pouvez maintenant y <a href="/getting-started/telecharger-et-deployer-des-packages-sur-vos-sentinelles/">déployer des packages</a> ou développer vos propres packages en <a href="/getting-started/creez-votre-premier-package-constellation-en-csharp/">C#</a> ou en <a href="/getting-started/creez-votre-premier-package-constellation-en-python/">Python</a>.</p>
<p>The post <a rel="nofollow" href="https://developer.myconstellation.io/getting-started/ajouter-des-sentinelles/">Ajouter des sentinelles dans votre Constellation</a> appeared first on <a rel="nofollow" href="https://developer.myconstellation.io">Constellation</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://developer.myconstellation.io/getting-started/ajouter-des-sentinelles/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Télécharger et déployer des packages sur vos sentinelles</title>
		<link>https://developer.myconstellation.io/getting-started/telecharger-et-deployer-des-packages-sur-vos-sentinelles/</link>
					<comments>https://developer.myconstellation.io/getting-started/telecharger-et-deployer-des-packages-sur-vos-sentinelles/#respond</comments>
		
		<dc:creator><![CDATA[Sebastien Warin]]></dc:creator>
		<pubDate>Tue, 15 Mar 2016 10:58:25 +0000</pubDate>
				<category><![CDATA[Guide de démarrage]]></category>
		<category><![CDATA[Package]]></category>
		<category><![CDATA[Sentinel]]></category>
		<guid isPermaLink="false">https://developer.myconstellation.io/?p=1149</guid>

					<description><![CDATA[<p>Télécharger et déployer des packages depuis la Console Constellation Sur la Console Constellation, rendez-vous sur la page “Package Repository”, le catalogue des packages de votre Constellation. C’est là que vous pourrez gérer votre catalogue de package. Pour ajouter des packages</p>
<p>The post <a rel="nofollow" href="https://developer.myconstellation.io/getting-started/telecharger-et-deployer-des-packages-sur-vos-sentinelles/">Télécharger et déployer des packages sur vos sentinelles</a> appeared first on <a rel="nofollow" href="https://developer.myconstellation.io">Constellation</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p style="text-align: center;"><iframe loading="lazy" width="560" height="315" src="https://www.youtube.com/embed/cJ6oV9x-grc" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p>
<h3>Télécharger et déployer des packages depuis la Console Constellation</h3>
<p>Sur la Console Constellation, rendez-vous sur la page “Package Repository”, le catalogue des packages de votre Constellation. C’est là que vous pourrez gérer votre catalogue de package.</p>
<p>Pour ajouter des packages dans votre catalogue, vous pouvez soit <a href="#Uploader_des_packages_manuellement">les uploader manuellement</a> ou soit les télécharger directement depuis la catalogue de package gratuit Constellation en cliquant sur le bouton “Online Package Repository” :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/09/image-142.png"><img class="colorbox-1149"  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/2016/09/image_thumb-137.png" alt="image" width="350" height="198" border="0" /></a></p>
<p align="left">Vous pourrez alors choisir sur le catalogue en ligne les packages à télécharger dans votre catalogue local.</p>
<p align="left">Par exemple, ajoutons le package “NetworkTools” en cliquant sur le bouton “Deploy” :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/09/image-143.png"><img class="colorbox-1149"  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/2016/09/image_thumb-138.png" alt="image" width="350" height="214" border="0" /></a></p>
<p>Le téléchargement débutera alors :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/09/image-144.png"><img class="colorbox-1149"  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/2016/09/image_thumb-139.png" alt="image" width="240" height="69" border="0" /></a></p>
<p>Une fois le package télécharger un assistant de déploiement s’affichera vous invitant à sélectionner la sentinelle sur laquelle déployer votre package :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/09/image-145.png"><img class="colorbox-1149"  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/2016/09/image_thumb-140.png" alt="image" width="350" height="114" border="0" /></a></p>
<p>Dans mon cas je choisis de déployer ce package sur la sentinelle “PO-SWARIN”.</p>
<p>Vous pouvez ensuite sélectionner les options de déploiement, pour démarrer laissez les paramètres par défaut :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/09/image-146.png"><img class="colorbox-1149"  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/2016/09/image_thumb-141.png" alt="image" width="350" height="312" border="0" /></a></p>
<p align="left">Ensuite chaque package peut déclarer des settings. Ici le package “NetworkTools” ne déclare qu’un setting pour le monitoring. Vous pouvez éditer le JSON pour définir les ressources à monitorer :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/09/image-147.png"><img class="colorbox-1149"  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/2016/09/image_thumb-142.png" alt="image" width="350" height="287" border="0" /></a></p>
<p align="left">En cliquant sur le bouton “Deploy”, Constellation va automatiquement déployer ce package sur la sentinelle de votre choix. Sur la page “Packages” vous retrouverez vos packages démarrés. Vous pourrez suivre l’état et l’uptime de chaque package, sa consommation CPU et RAM, etc… Vous pouvez également arrêter, redémarrer ou mettre à jour vos packages sur n’importe quelle sentinelles grâce à cette page :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/09/image-148.png"><img class="colorbox-1149"  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/2016/09/image_thumb-143.png" alt="image" width="350" height="226" border="0" /></a></p>
<p align="left">Sur la page “Console log” vous pourrez suivre en temps réel les logs produit par l’ensemble des packages de votre Constellation :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/09/image-149.png"><img class="colorbox-1149"  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/2016/09/image_thumb-144.png" alt="image" width="350" height="223" border="0" /></a></p>
<p align="left">Sur le StateObject Explorer vous pourrez consulter les StateObjects publiés par chaque package. Ici le package “NetworkTools” publie un StateObject pour chaque ressource qu’il monitore (décrit dans ses settings) :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/09/image-150.png"><img class="colorbox-1149"  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/2016/09/image_thumb-145.png" alt="image" width="350" height="118" border="0" /></a></p>
<p align="left">Vous pouvez cliquer sur le bouton “View” pour afficher le détail de chaque StateObject et le suivre en temps réel :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/09/image-151.png"><img class="colorbox-1149"  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/2016/09/image_thumb-146.png" alt="image" width="350" height="277" border="0" /></a></p>
<p align="left">Sur le MessageCallback Explorer, vous pouvez consulter toutes les méthodes que vos packages exposent. Un formulaire permet même de tester les MC depuis la Console :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/09/image-152.png"><img class="colorbox-1149"  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/2016/09/image_thumb-147.png" alt="image" width="350" height="220" border="0" /></a></p>
<p>Notez qu’à tout moment vous pouvez vous rendre dans votre Package Repository et cliquez sur le bouton “Deploy package” dans le menu “Action” du package que vous souhaitez à nouveau déployer :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/09/image-153.png"><img class="colorbox-1149"  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/2016/09/image_thumb-148.png" alt="image" width="350" height="257" border="0" /></a></p>
<h3 align="left">Quelques packages pour démarrer</h3>
<ul>
<li>
<div align="left"><a href="/package-library/BatteryChecker"><u>BatteryChecker</u> </a>: permet de publier un StateObject sur l’état de votre batterie (pour les PC portables ou onduleurs)</div>
</li>
<li>
<div align="left"><a href="/package-library/DayInfo/"><u>DayInfo</u></a> : information sur l’heure du levé et couché du soleil et la fete du jour</div>
</li>
<li>
<div align="left"><a href="/package-library/HWMonitor/"><u>HWMonitor</u> </a>: permet de publier des StateObjects sur les compteurs “Hardware” de votre machines (CPU, RAM, réseau, disques durs, etc…)</div>
</li>
<li>
<div align="left"><a href="/package-library/WindowsControl"><u>WindowsControl</u> </a>: exposer des MessageCallbacks pour contrôler l’état d’une machine Windows (Reboot, Shutdown, Sleep, Lock, …)</div>
</li>
<li>
<div align="left"><a href="/package-library/ForecastIO"><u>ForecastIO</u></a> : service de météo</div>
</li>
<li>
<div align="left"><a href="/package-library/FreeboxTV"><u>FreeboxTV</u></a> : pour les possesseurs de Freebox</div>
</li>
<li>
<div align="left"><a href="/package-library/hue/"><u>Hue</u> </a>: pilotage des lampes Hue</div>
</li>
<li>
<div align="left"><a href="/package-library/Nest"><u>Nest</u> </a>: pilotage des thermostats et détecteur de fumée Nest</div>
</li>
<li>
<div align="left"><a href="/package-library/NetAtmo"><u>NetAtmo</u></a> : intégration des capteurs NetAtmo dans Constellation</div>
</li>
<li>
<div align="left"><a href="https://developer.myconstellation.io/plateforme/package-repository/"><u>PushBullet</u> </a>: envoi de notification sur smartphone, tablette et PC</div>
</li>
<li>
<div align="left"><a href="/package-library/rfxcom"><u>Rfxcom</u> </a>: intégration des capteur RF</div>
</li>
<li>
<div align="left"><a href="/package-library/vera"><u>Vera</u> </a>: intégration de la box domotique Vera</div>
</li>
<li>
<div align="left"><a href="/package-library/Wemo"><u>Wemo</u></a> : intégration des prises connectée Wemo</div>
</li>
<li>
<div align="left"><a href="/package-library/xml"><u>Xbmc</u> </a>: intégration des media-centers Kodi</div>
<p><!--EndFragment--></li>
</ul>
<p>Rendez-vous dans la <a href="/package-library/">rubrique packages</a>.</p>
<h3>Autres moyens</h3>
<h4>Uploader des packages manuellement</h4>
<p>Vous pouvez par exemple télécharger des packages manuellement depuis <a href="/plateforme/package-repository/">le catalogue officiel</a> ou tout autre source.</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image-187.png"><img class="colorbox-1149"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Catalogue de packages" src="https://developer.myconstellation.io/wp-content/uploads/2016/03/image_thumb-164.png" alt="Catalogue de packages" width="244" height="469" border="0" /></a></p>
<p align="left">Depuis la Console, rendez-vous sur la page “Package Repository” et cliquez sur le bouton “Upload” :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image-45.png"><img class="colorbox-1149"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Upload des packages" src="https://developer.myconstellation.io/wp-content/uploads/2016/03/image_thumb-44.png" alt="Upload des packages" width="424" height="275" border="0" /></a></p>
<p align="left">Vous pouvez alors glisser-déplacer les package Constellation (fichiers ZIP) dans le rectangle ou cliquer dessus pour ouvrir la fenêtre de sélection du fichier :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image-46.png"><img class="colorbox-1149"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Upload des packages" src="https://developer.myconstellation.io/wp-content/uploads/2016/03/image_thumb-45.png" alt="Upload des packages" width="424" height="221" border="0" /></a></p>
<p>Déposons les différents packages téléchargés dans le rectangle afin de les uploader dans votre catalogue :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image_thumb65.png"><img class="colorbox-1149"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Upload des packages" src="https://developer.myconstellation.io/wp-content/uploads/2016/03/image_thumb65_thumb.png" alt="Upload des packages" width="420" height="355" border="0" /></a></p>
<p align="left">Et voilà les packages sont disponibles dans le Package Repository de votre Constellation :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image_thumb66.png"><img class="colorbox-1149"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Package Repository" src="https://developer.myconstellation.io/wp-content/uploads/2016/03/image_thumb66_thumb.png" alt="Package Repository" width="420" height="169" border="0" /></a></p>
<h4 align="left">Uploader des packages depuis Visual Studio</h4>
<p>Vous pouvez publier un package Constellation directement depuis Visual Studio :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/09/image-91.png"><img class="colorbox-1149"  loading="lazy" title="image" src="https://developer.myconstellation.io/wp-content/uploads/2016/09/image_thumb-86.png" alt="image" width="350" height="144" border="0" /></a></p>
<p>Le package publié est celui marqué comme “Projet de démarrage” dans le cas où vous avez plusieurs projet dans votre solution. Autrement cliquez-droit sur le projet que vous souhaitez publier et cliquer sur “Publish Constellation package” dans le menu “Constellation” :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/09/image-92.png"><img class="colorbox-1149"  loading="lazy" title="image" src="https://developer.myconstellation.io/wp-content/uploads/2016/09/image_thumb-87.png" alt="image" width="350" height="318" border="0" /></a></p>
<p>Vous pourrez ensuite publier votre package en local ou directement sur un serveur Constellation.</p>
<p align="left">Pour plus d’information, <a href="/constellation-platform/constellation-sdk/publier-package-visual-studio/">consultez cet article</a>.</p>
<h4 align="left">Déployer manuellement des packages sur vos sentinelles</h4>
<p align="left">La définition des déploiements, c’est à dire “quel package sur quelle sentinelle” es t décrite dans <a href="/constellation-platform/constellation-server/fichier-de-configuration/">le fichier de configuration de la Constellation</a>.</p>
<p align="left">Vous pouvez éditer ce fichier manuellement sur votre serveur Constellation avec notre éditeur de texte préféré, <a href="/constellation-platform/constellation-sdk/editer-configuration-constellation-depuis-visual-studio/">depuis Visual Studio</a> ou directement depuis la <a href="/constellation-platform/constellation-console/configuration-editor/">Console Constellation</a> :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image-188.png"><img class="colorbox-1149"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Edition de la configuration" src="https://developer.myconstellation.io/wp-content/uploads/2016/03/image_thumb-165.png" alt="Edition de la configuration" width="424" height="134" border="0" /></a></p>
<p align="left">Par exemple déployons les 5 packages ci-dessous sur la sentinelle nommée “PO-SEB” :</p>
<p></p><pre class="crayon-plain-tag">&lt;sentinel name="PO-SEB" credential="StandardAccess"&gt;
    &lt;packages&gt;        
        &lt;package name="BatteryChecker"&gt;&lt;/package&gt; 
        &lt;package name="GoogleTraffic"&gt;&lt;/package&gt; 
        &lt;package name="HWMonitor"&gt;&lt;/package&gt; 
        &lt;package name="WakeOnLan"&gt;&lt;/package&gt; 
        &lt;package name="WindowsControl"&gt;&lt;/package&gt; 
    &lt;/packages&gt;        
&lt;/sentinel&gt;</pre><p></p>
<p align="left">En cliquant sur le bouton “Save &amp; Deploy”, vous allez enregistrer la configuration sur le serveur et déployer cette configuration dans votre Constellation.</p>
<p align="left">Pour plus d’information sur le schéma XML de <a href="/constellation-platform/constellation-server/fichier-de-configuration/">la configuration Constellation</a> consultez <a href="/constellation-platform/constellation-server/fichier-de-configuration/#Section_sentinels">cet article</a>.</p>
<p>The post <a rel="nofollow" href="https://developer.myconstellation.io/getting-started/telecharger-et-deployer-des-packages-sur-vos-sentinelles/">Télécharger et déployer des packages sur vos sentinelles</a> appeared first on <a rel="nofollow" href="https://developer.myconstellation.io">Constellation</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://developer.myconstellation.io/getting-started/telecharger-et-deployer-des-packages-sur-vos-sentinelles/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Créez votre premier package Constellation en C#</title>
		<link>https://developer.myconstellation.io/getting-started/creez-votre-premier-package-constellation-en-csharp/</link>
					<comments>https://developer.myconstellation.io/getting-started/creez-votre-premier-package-constellation-en-csharp/#respond</comments>
		
		<dc:creator><![CDATA[Sebastien Warin]]></dc:creator>
		<pubDate>Wed, 16 Mar 2016 10:00:22 +0000</pubDate>
				<category><![CDATA[.NET API]]></category>
		<category><![CDATA[Guide de démarrage]]></category>
		<category><![CDATA[Package]]></category>
		<category><![CDATA[PackageHost]]></category>
		<category><![CDATA[WriteLog]]></category>
		<category><![CDATA[Setting]]></category>
		<category><![CDATA[Publish]]></category>
		<guid isPermaLink="false">https://developer.myconstellation.io/?p=1287</guid>

					<description><![CDATA[<p>Dans cet article nous allons découvrir comment créer et déployer votre premier package Constellation en C# avec Visual Studio. Prérequis Un accès “Administrator” à une Constellation (Management API &#38; Developper access) Le SDK Constellation installé Nous vous conseillons de suivre</p>
<p>The post <a rel="nofollow" href="https://developer.myconstellation.io/getting-started/creez-votre-premier-package-constellation-en-csharp/">Créez votre premier package Constellation en C#</a> appeared first on <a rel="nofollow" href="https://developer.myconstellation.io">Constellation</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Dans cet article nous allons découvrir comment créer et déployer votre premier package Constellation en C# avec Visual Studio.</p>
<p style="text-align: center;"><span id="more-1287"></span><br />
<iframe loading="lazy" width="560" height="315" src="https://www.youtube.com/embed/wo3960Gwv6k" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p>
<h3>Prérequis</h3>
<ul>
<li>Un accès “Administrator” à une Constellation (Management API &amp; Developper access)</li>
<li>Le SDK Constellation installé</li>
</ul>
<p>Nous vous conseillons de suivre <a href="/getting-started/installer-constellation/">le guide de démarrage ici</a> avant de démarrer.</p>
<h3>Créez le package dans Visual Studio</h3>
<ul>
<li>Lancez Visual Studio</li>
<li>Créez un nouveau projet de type “Constellation Package Console” (dans la catégorie Constellation) :</li>
</ul>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image-98.png"><img class="colorbox-1287"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Création d'un package Constellation" src="https://developer.myconstellation.io/wp-content/uploads/2016/03/image_thumb-75.png" alt="Création d'un package Constellation" width="424" height="294" border="0" /></a></p>
<ul>
<li>Démarrez le package en mode debug en cliquant sur le bouton “Start” ou en pressant la touche “F5” :</li>
</ul>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image-160.png"><img class="colorbox-1287"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="Debugging Visual Studio" src="https://developer.myconstellation.io/wp-content/uploads/2016/03/image_thumb-137.png" alt="Debugging Visual Studio" width="424" height="111" border="0" /></a></p>
<ul>
<li>
<div align="left">Au démarrage, votre package affichera une sorte de ”Hello World” :</div>
</li>
</ul>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image-100.png"><img class="colorbox-1287"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Hello World" src="https://developer.myconstellation.io/wp-content/uploads/2016/03/image_thumb-77.png" alt="Hello World" width="424" height="209" border="0" /></a></p>
<p align="left">Vous constaterez que :</p>
<ul>
<li>
<div align="left">La méthode “<em>OnStart</em>” est la méthode invoquée au démarrage de votre package</div>
</li>
<li>
<div align="left"><em>PackageHost.WriteInfo</em> est une méthode pour écrire des logs de type “info”</div>
</li>
<li>
<div align="left">PackageHost.IsRunning = true (votre package est bien en cours)</div>
</li>
<li>
<div align="left">PackageHost.IsConnected = false (votre package n’est pas connecté à Constellation, car nous l’avons lancé en local)</div>
</li>
</ul>
<h3 align="left">Fonctionnement de base</h3>
<p align="left">Un package est une application !</p>
<p align="left">Il faut impérativement appeler la méthode “<em>PackageHost.Start</em>” au démarrage de l’application, c’est à dire dans la méthode “Main” autrement, ce n’est pas un package Constellation mais une simple application !</p>
<p align="left">Lorsque vous appelez la méthode “<em>PackageHost.Start</em>” vous devez impérativement transférer les arguments (args) et indiquer la classe de votre package qui est dans notre exemple “Program”.</p>
<p></p><pre class="crayon-plain-tag">static void Main(string[] args)
{
    PackageHost.Start&lt;Program&gt;(args);
}</pre><p></p>
<p align="left">La classe d’un package doit être une classe qui implémente l’interface “<u>IPackage</u>”. Cette interface définie trois méthodes :</p>
<ul>
<li>
<div align="left"><u>OnStart</u> qui sera invoqué lorsque le package a démarré</div>
</li>
<li>
<div align="left"><u>OnPreShutdown</u> : invoqué lorsque le package va s’arrêter (à ce stade votre package est toujours connecté à Constellation, vous pouvez encore pusher des StateObjects, envoyer des messages, écrire des logs sur le hub, etc..)</div>
</li>
<li>
<div align="left">OnShutdown : invoqué après le <u>OnPreShutdown</u> et après avoir fermé les connexions.</div>
</li>
</ul>
<p>Pour vous éviter de devoir implémenter ces trois méthodes, votre classe peut hériter de la classe “PackageBase”. Cette classe abstraite implémente l’interface <u>IPackage</u> dans des méthodes virtuelles vides.</p>
<p>Libre à vous d’implémenter les méthodes que vous souhaitez !</p>
<p>Dans le template de projet créé ci-dessus, la classe “Program” hérite de “PackageBase” et redéfinie la méthode “OnStart” pour écrire un message de type “info” (<em>PackageHost.WriteInfo</em>) lorsque le package a démarré.</p>
<h3>Ecrire des logs</h3>
<p>Pour écrire des logs depuis un package Constellation vous disposez des méthodes :</p>
<ul>
<li>PackageHost.WriteDebug</li>
<li>PackageHost.WriteInfo</li>
<li>PackageHost.WriteWarn</li>
<li>PackageHost.WriteError</li>
</ul>
<p>Chacune de ces méthodes écrivent un message qui peut être formaté avec des arguments à la manière d’un “string.Format” :</p>
<p></p><pre class="crayon-plain-tag">PackageHost.WriteInfo("Je suis le package nommé {0} version {1}", PackageHost.PackageName, PackageHost.PackageVersion);</pre><p></p>
<p><u>Attention</u> : bien respecter les index dans le format de votre message sous peine d’avoir une erreur.</p>
<p><u>Note</u> : la méthode WriteDebug écrit seulement dans la console (mode debug local). Les logs de type “Debug” ne sont jamais envoyés dans la Constellation.</p>
<h3>Accéder aux settings</h3>
<p>Chaque package peut définir des paramètres de configuration définis au niveau du serveur Constellation. Cela vous permet de changer ces paramètres directement depuis la Constellation qui se chargera de redescendre ces paramètres sur vos packages.</p>
<p>Il y a deux types de settings :</p>
<ul>
<li>Les “Setting Value” : très simple il s’agit d’un couple clé/value à l’instant des &lt;appSettings&gt; d’une application .NET</li>
<li>Les “Setting Content”  : au lieu de définir la valeur d’un paramètre dans un attribut XML, on peut la définir dans un élément XML enfant permettant d’avoir des settings qui renferme du XML ou JSON</li>
</ul>
<p>Voici par exemple des “SettingValues”  déclarés dans notre configuration :</p>
<p></p><pre class="crayon-plain-tag">&lt;setting key="MyBoolSetting" value="true" /&gt;      
&lt;setting key="MyStringSetting" value="This is a string" /&gt;
&lt;setting key="MyIntSetting" value="123" /&gt;</pre><p></p>
<p>Ces trois settings définissent la valeur dans l’attribut “value” (= SettingValue).</p>
<p>Pour récupérer la valeur du paramètre “MyStringSetting”  dans votre code, utilisez la méthode “GetSettingValue” :</p>
<p></p><pre class="crayon-plain-tag">PackageHost.WriteInfo("My String = {0}", PackageHost.GetSettingValue("MyStringSetting"));</pre><p></p>
<p>La méthode “GetSettingValue” renvoie la valeur d’un setting de type “string” mais vous pouvez également caster la valeur depuis cette méthode en utilisant sa forme générique :</p>
<p></p><pre class="crayon-plain-tag">int myIntSetting = PackageHost.GetSettingValue&lt;int&gt;("MyIntSetting");
bool myBoolSetting = PackageHost.GetSettingValue&lt;bool&gt;("MyBoolSetting");</pre><p></p>
<p>Si par contre vous avez un modèle de configuration plus compliqué qu’une série de clé/valeur vous pouvez utiliser les “Setting Contents” pour définir du XML ou JSON comme valeur de setting.</p>
<p>Par exemple la configuration de votre package peut définir deux autres settings, contenant du XML ou JSON de cette façon :</p>
<p></p><pre class="crayon-plain-tag">&lt;setting key="MyXmlDocument"&gt;
  &lt;content&gt;
    &lt;note date="09-02-2016"&gt;
      &lt;to&gt;Tove&lt;/to&gt;
      &lt;from&gt;Jani&lt;/from&gt;
      &lt;heading&gt;Reminder&lt;/heading&gt;
      &lt;body&gt;Don't forget me this weekend!&lt;/body&gt;
    &lt;/note&gt;
  &lt;/content&gt;
&lt;/setting&gt;

&lt;setting key="MyJsonObject"&gt;
  &lt;content&gt;
    &lt;![CDATA[
    {
      "Number": 123,
      "String" : "This is a test (local)",
      "Boolean": true
    }
    ]]&gt;
  &lt;/content&gt;
&lt;/setting&gt;</pre><p></p>
<p>Plusieurs méthodes pour récupérer ces settings :</p>
<ul>
<li><u>GetSettingValue</u> : vous pouvez toujours récupérer le contenu brute de votre setting sous forme d’un string</li>
<li><u>GetSettingAsJsonObject</u> : dé-sérialise le contenu JSON de votre setting et vous retourne un objet dynamique</li>
<li><u>GetSettingAsJsonObject&lt;T&gt;</u> : dé-sérialise le contenu JSON de votre setting et le convertie dans un objet de votre type (T)</li>
<li><u>GetSettingAsXmlDocument</u> : dé-sérialise le contenu XML de votre setting et vous retourne un XmlDocument</li>
<li><u>GetSettingAsConfigurationSection&lt;TConfigurationSection&gt;</u> : dé-sérialise le contenu XML de votre setting sous forme d’un ConfigurationSection .NET</li>
</ul>
<p>Par exemple, pour manipuler le setting XML on pourrait écrire :</p>
<p></p><pre class="crayon-plain-tag">var xml = PackageHost.GetSettingAsXmlDocument("MyXmlDocument");
PackageHost.WriteInfo("My XmlDocument Attribute = {0} , first node value = {1}", xml.ChildNodes[0].Attributes["date"].Value, xml.ChildNodes[0].FirstChild.InnerText);</pre><p></p>
<p>Autre exemple avec le setting JSON :</p>
<p></p><pre class="crayon-plain-tag">dynamic json = PackageHost.GetSettingAsJsonObject("MyJsonObject");
PackageHost.WriteInfo("My JsonObject String={0}, Int={1}, Boolean={2}", json.String, json.Number, json.Boolean);</pre><p></p>
<p>Les settings d’un package sont déclarés au niveau du serveur dans la déclaration du package et/ou dans le fichier App.config.</p>
<p>Tous les settings doivent être déclarés dans le manifeste du package (fichier PackageInfo.xml).</p>
<p>Retrouvez plus d’information sur les settings <a href="/client-api/net-package-api/les-settings/">dans cet article</a>.</p>
<h3>Publier des StateObjects</h3>
<p>Pour publier (Push) un StateObject dans Constellation vous devez invoquer la méthode “<em>PackageHost.PushStateObject</em>” en précisant obligatoirement le nom du StateObject et sa valeur.</p>
<p>Par exemple, vous pouvez publié n’importe quel type de base :</p>
<p></p><pre class="crayon-plain-tag">PackageHost.PushStateObject("MyString", "OK");
PackageHost.PushStateObject("MyNumber", 123);
PackageHost.PushStateObject("MyDecimal", 123.12);
PackageHost.PushStateObject("MyBoolean", true);</pre><p></p>
<p>Pouvez également publié des objets anonymes :</p>
<p></p><pre class="crayon-plain-tag">PackageHost.PushStateObject("AnonymousObject", new { String = "test", Number = 123 });</pre><p></p>
<p>Ou encore avec des types plus complexes :</p>
<p></p><pre class="crayon-plain-tag">PackageHost.PushStateObject&lt;MyCustomObject&gt;("MyObject",  new MyCustomObject() { String = "test", Number = 123 });</pre><p></p>
<p>Vous avez également la possibilité de définir des paramètres optionnels comme les métadonnées de votre StateObject ou sa durée de vie.</p>
<p>Par exemple, le StateObject “ShortLife” a une durée de vie de 20 secondes après sa publication. Au delà il sera marqué comme expiré.</p>
<p></p><pre class="crayon-plain-tag">PackageHost.PushStateObject("ShortLife", "Expire in 20 secs !!!", lifetime: 20);</pre><p></p>
<p>Ici, on publie un StateObject “Salon” en lui associé les metadatas “Id” et “Zone”.</p>
<p></p><pre class="crayon-plain-tag">PackageHost.PushStateObject("Salon", monObjetZoneSalon, metadatas: new Dictionary&lt;string, object&gt; { { "Id", 42 }, { "Zone", "Salon" } });</pre><p></p>
<p>Sur les objets personnalisés il est recommande de décorer les classes de l’attribut [StateObject] si vous avez possibilité de modifier le code de la classe. Autrement, sur votre classe IPackage, ajoutez l’attribut [StateObjectKnownTypes] en définissant tous les types de StateObjects que vous serez amener à publier. Cela permet de décrire ces types dans la Constellation pour l’auto-description (utilisez entre autre par les générateurs de code).</p>
<p>Pour plus d’information sur <a href="/client-api/net-package-api/les-stateobjects/">les StateObjects dans l’API .NET cliquez ici</a>.</p>
<h3>Tester son package dans sa Constellation</h3>
<p>Pour tester nous allons créer un package qui push à intervalle régulier un StateObject.</p>
<p>Le code de notre Package sera :</p>
<p></p><pre class="crayon-plain-tag">public class Program : PackageBase
{
    static void Main(string[] args)
    {
        PackageHost.Start&lt;Program&gt;(args);
    }

    public override void OnStart()
    {
        PackageHost.WriteInfo("Package starting - IsRunning: {0} - IsConnected: {1}", PackageHost.IsRunning, PackageHost.IsConnected);
        PackageHost.WriteInfo("Je suis le package nommé {0} version {1}", PackageHost.PackageName, PackageHost.PackageVersion);

        while (PackageHost.IsRunning)
        {
            PackageHost.WriteInfo("Je push un long !");
            PackageHost.PushStateObject("DemoLong", DateTime.Now.Ticks);

            Thread.Sleep(PackageHost.GetSettingValue&lt;int&gt;("Interval"));
        }
    }
}</pre><p></p>
<p>Notre application console démarre bien le package au démarrage (Main) où le package est notre classe Program qui hérite de PackageBase (donc c’est un IPackage).</p>
<p>Au démarrage on écrit deux logs de type information qui indique notamment le nom du package, sa version, si il est démarré (IsRunning) et si il est connecté (IsConnected).</p>
<p>Ensuite on crée une boucle qui tournera tant que le package est démarré. A chaque itération on écrit un log, publie un StateObject avant de mettre le thread en pause avant la prochaine itération.</p>
<p>Le temps de pause est un setting de type “Int” que l’on a nommé “Interval”.</p>
<p>L’utilisateur pourra le configurer dans la configuration du package sur le serveur, mais pour être sûr d’avoir une valeur par défaut nous allons déclarer ce setting ainsi que sa valeur par default dans son manifest.</p>
<p>Editez le fichier PackageInfo.xml pour ajouter :</p>
<p></p><pre class="crayon-plain-tag">&lt;Setting name="Interval" type="Int32" defaultValue="5000" description="Interval en millisecondes" /&gt;</pre><p></p>
<p>Ainsi même si le setting n’est pas déclaré sur le serveur ni dans le App.config local,  cette valeur sera par défaut égale à 5 secondes.</p>
<p>Vous pouvez démarrer le projet en mode debug (“F5” ou bouton “Start”) mais bien entendu il ne sera pas connecté à Constellation.</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image-101.png"><img class="colorbox-1287"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Debug dans Constellation" src="https://developer.myconstellation.io/wp-content/uploads/2016/03/image_thumb-78.png" alt="Debug dans Constellation" width="424" height="216" border="0" /></a></p>
<p>Pour débugger dans Constellation, vous trouverez une icone dans la toolbar (en en pressant Ctrl+Alt+F8) :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image-161.png"><img class="colorbox-1287"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="Debug dans Constellation" src="https://developer.myconstellation.io/wp-content/uploads/2016/03/image_thumb-138.png" alt="Debug dans Constellation" width="424" height="100" border="0" /></a></p>
<p>Vous pouvez également cliquez droit sur votre projet et dans le menu Constellation sélectionnez “Debug On Constellation” :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image-102.png"><img class="colorbox-1287"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Debug dans Constellation" src="https://developer.myconstellation.io/wp-content/uploads/2016/03/image_thumb-79.png" alt="Debug dans Constellation" width="424" height="307" border="0" /></a></p>
<p align="left">Si vous n’avez pas encore configuré la Constellation utilisée pour le débogage, vous devriez voir une alerte vous invitant à configurer vos accès :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image-103.png"><img class="colorbox-1287"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Enregistrement de la Constellation dans VS" src="https://developer.myconstellation.io/wp-content/uploads/2016/03/image_thumb-80.png" alt="Enregistrement de la Constellation dans VS" width="424" height="205" border="0" /></a></p>
<p align="left">Cette fois ci, votre package tourne bien en étant connecté à votre Constellation :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image-104.png"><img class="colorbox-1287"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Hello World Constellation" src="https://developer.myconstellation.io/wp-content/uploads/2016/03/image_thumb-81.png" alt="Hello World Constellation" width="424" height="216" border="0" /></a></p>
<p align="left">Lancez maintenant votre Console Constellation, vous verrez en temps réel les logs de votre package.</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image-105.png"><img class="colorbox-1287"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Hello World Constellation" src="https://developer.myconstellation.io/wp-content/uploads/2016/03/image_thumb-82.png" alt="Hello World Constellation" width="424" height="232" border="0" /></a></p>
<p align="left">Sur le StateObject Explorer, vous verrez également le StateObject “DemoLong” publié par le package “MonPremierPackage”.</p>
<p align="left">Notez que la sentinelle qui héberge le package est une sentinelle virtuelle nommée “Developer”.</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image-106.png"><img class="colorbox-1287"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="StateObject Explorer" src="https://developer.myconstellation.io/wp-content/uploads/2016/03/image_thumb-83.png" alt="StateObject Explorer" width="424" height="140" border="0" /></a></p>
<p align="left">Vous pouvez cliquer sur “View” pour voir toutes les informations à propos de ce StateObject.</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image-107.png"><img class="colorbox-1287"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Visualisation des StateObjects" src="https://developer.myconstellation.io/wp-content/uploads/2016/03/image_thumb-84.png" alt="Visualisation des StateObjects" width="227" height="244" border="0" /></a></p>
<p align="left">Pour finir, cliquez sur “Subscribe” pour vous abonner aux mises à jour.</p>
<h3 align="left">Publier son package dans Constellation</h3>
<p align="left">Nous voulons maintenant publier ce package et le déployer sur une des sentinelles de notre Constellation.</p>
<p align="left">Toujours dans la toolbar “Constellation”, cliquez sur “Publish Constellation package” :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image-162.png"><img class="colorbox-1287"  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/2016/03/image_thumb-139.png" alt="image" width="424" height="100" border="0" /></a></p>
<p align="left">Ou depuis le menu contextuel de votre projet, sélectionnez “Publish Constellation package” :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image-108.png"><img class="colorbox-1287"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Publier un package Constellation" src="https://developer.myconstellation.io/wp-content/uploads/2016/03/image_thumb-85.png" alt="Publier un package Constellation" width="424" height="324" border="0" /></a></p>
<p align="left">Vous pouvez soit le publier en local puis l’uploader manuellement via la Console par exemple, soit le publier directement dans votre Constellation.</p>
<p align="left">Pour cela, sélectionnez “Upload on Constellation Server”.</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image-109.png"><img class="colorbox-1287"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Publier un package Constellation" src="https://developer.myconstellation.io/wp-content/uploads/2016/03/image_thumb-86.png" alt="Publier un package Constellation" width="424" height="212" border="0" /></a></p>
<p align="left">Sélectionnez ensuite l’adresse de votre Constellation et cliquez sur “Publish”.</p>
<p align="left">Un message vous informera de la réussite de la publication. Dans le panneau “Ouput” de Visual Studio vous retrouvez également le détail de la publication :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image-110.png"><img class="colorbox-1287"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Publier un package Constellation" src="https://developer.myconstellation.io/wp-content/uploads/2016/03/image_thumb-87.png" alt="Publier un package Constellation" width="424" height="98" border="0" /></a></p>
<p align="left">Depuis la Console, sur la page “Package Repository” vous pourrez apercevoir votre package fraichement publié :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image-111.png"><img class="colorbox-1287"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Package Repository" src="https://developer.myconstellation.io/wp-content/uploads/2016/03/image_thumb-88.png" alt="Package Repository" width="424" height="153" border="0" /></a></p>
<p align="left">Pour le déployer, vous devez éditer la configuration de votre Constellation pour ajouter le package à une (ou plusieurs) sentinelle. Vous pouvez également redéfinir le setting “Interval” que nous exploitations dans notre package (bien que nous avons défini une valeur par défaut).</p>
<p></p><pre class="crayon-plain-tag">&lt;package name="MonPremierPackage" enable="true"&gt;
    &lt;settings&gt;
        &lt;setting key="Interval" value="2000" /&gt;
  &lt;/settings&gt;
&lt;/package&gt;</pre><p></p>
<p align="left">Vous pouvez éditer la configuration du serveur Constellation directement depuis Visual Studio en cloquant sur “Edit Constellation Server configuration” (depuis la toolbar ou via le menu contextuel).</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image-163.png"><img class="colorbox-1287"  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/2016/03/image_thumb-140.png" alt="image" width="424" height="100" border="0" /></a></p>
<p align="left">La configuration sera automatiquement téléchargée du serveur et ouverte dans Visual Studio :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image-164.png"><img class="colorbox-1287"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="Edition de la configuration depuis VS" src="https://developer.myconstellation.io/wp-content/uploads/2016/03/image_thumb-141.png" alt="Edition de la configuration depuis VS" width="424" height="230" border="0" /></a></p>
<p align="left">L’avantage est de pouvoir profiter de la validation du schéma XML et de l&rsquo;IntelliSense de Visual Studio :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image-165.png"><img class="colorbox-1287"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="Intellisense" src="https://developer.myconstellation.io/wp-content/uploads/2016/03/image_thumb-142.png" alt="Intellisense" width="420" height="163" border="0" /></a></p>
<p align="left">Dès que vous enregistrerez votre configuration, Visual Studio détectera les modifications et vous proposera d’uploader et de recharger la nouvelle configuration sur votre serveur Constellation :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image-166.png"><img class="colorbox-1287"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="Upload de la configuration" src="https://developer.myconstellation.io/wp-content/uploads/2016/03/image_thumb-143.png" alt="Upload de la configuration" width="242" height="144" border="0" /></a></p>
<p align="left">Vous pouvez aussi éditer la configuration de votre Constellation depuis la Console. Après avoir ajouter votre package, cliquez sur “Save &amp; Deploy” (pour informer les sentinelles des nouveaux packages) :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image-115.png"><img class="colorbox-1287"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Edition de la configuration" src="https://developer.myconstellation.io/wp-content/uploads/2016/03/image_thumb-92.png" alt="Edition de la configuration" width="424" height="233" border="0" /></a></p>
<p align="left">Vous pourrez alors voir dans les logs que le package est automatiquement téléchargé et déployé sur sa sentinelle et commence à pusher des StateObject toutes les 2 secondes comme nous l’avons indiqué dans sa configuration :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image-113.png"><img class="colorbox-1287"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Console log temps réel" src="https://developer.myconstellation.io/wp-content/uploads/2016/03/image_thumb-90.png" alt="Console log temps réel" width="424" height="207" border="0" /></a></p>
<p align="left">Sur la page “Packages” vous pouvez maintenant contrôler votre package, l’arrêter, le redémarrer ou le recharger (= déploiement d’une nouvelle version).</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image-114.png"><img class="colorbox-1287"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Contrôle des packages" src="https://developer.myconstellation.io/wp-content/uploads/2016/03/image_thumb-91.png" alt="Contrôle des packages" width="424" height="126" border="0" /></a></p>
<h3 align="left">Next steps</h3>
<ul>
<li>
<div align="left">Les <a href="/client-api/net-package-api/les-bases-des-packages-net/">bases des packages .NET</a></div>
</li>
<li>
<div align="left"><a href="/client-api/net-package-api/settings/">Les Settings</a> : paramètres de configuration de vos packages</div>
</li>
<li>
<div align="left"><a href="/client-api/net-package-api/pushstateobject/">Publier des StateObjects</a></div>
</li>
<li>
<div align="left">Exposer vos méthodes dans Constellation grâce aux <a href="/client-api/net-package-api/messagecallbacks/">MessageCallbacks</a></div>
</li>
<li>
<div align="left"><a href="/client-api/net-package-api/envoyer-des-messages-invoquer-des-messagecallbacks/">Envoyer des messages &amp; Invoquer des méthodes</a></div>
</li>
<li>
<div align="left"><a href="/client-api/net-package-api/consommer-des-stateobjects/">Consommer des StateObjects</a></div>
</li>
<li>
<div align="left">Accéder au hub de contrôle depuis un package C# avec le <a href="/client-api/net-package-api/controlmanager/">ControlManager</a></div>
</li>
<li>
<div align="left">Créer des <a href="/client-api/net-package-api/packages-ui-wpf-winform/">Packages UI</a> en Winform ou WPF</div>
</li>
</ul>
<p>The post <a rel="nofollow" href="https://developer.myconstellation.io/getting-started/creez-votre-premier-package-constellation-en-csharp/">Créez votre premier package Constellation en C#</a> appeared first on <a rel="nofollow" href="https://developer.myconstellation.io">Constellation</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://developer.myconstellation.io/getting-started/creez-votre-premier-package-constellation-en-csharp/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Connectez vos pages Web à Constellation</title>
		<link>https://developer.myconstellation.io/getting-started/connectez-vos-pages-web-constellation/</link>
					<comments>https://developer.myconstellation.io/getting-started/connectez-vos-pages-web-constellation/#respond</comments>
		
		<dc:creator><![CDATA[Sebastien Warin]]></dc:creator>
		<pubDate>Wed, 06 Jul 2016 14:22:29 +0000</pubDate>
				<category><![CDATA[Guide de démarrage]]></category>
		<category><![CDATA[Javascript API]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[AngularJS]]></category>
		<category><![CDATA[Consumer]]></category>
		<category><![CDATA[Controller]]></category>
		<guid isPermaLink="false">https://developer.myconstellation.io/?p=2114</guid>

					<description><![CDATA[<p>Introduction Il existe actuellement deux librairies Constellation JavaScript : Constellation for Javascript Constellation for AngularJS La première est basée sur jQuery, la deuxième est une surcouche de la 1ère encapsulée dans un module AngularJS. Vous retrouverez ces deux librairies depuis</p>
<p>The post <a rel="nofollow" href="https://developer.myconstellation.io/getting-started/connectez-vos-pages-web-constellation/">Connectez vos pages Web à Constellation</a> appeared first on <a rel="nofollow" href="https://developer.myconstellation.io">Constellation</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h3>Introduction</h3>
<p>Il existe actuellement deux librairies Constellation JavaScript :</p>
<ol>
<li>Constellation for Javascript</li>
<li>Constellation for AngularJS</li>
</ol>
<p>La première est basée sur jQuery, la deuxième est une surcouche de la 1ère encapsulée dans un module AngularJS.</p>
<p>Vous retrouverez ces deux librairies depuis le gestionnaire de package Nuget intégré à Visual Studio :</p>
<p align="center"><img class="colorbox-2114"  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/2016/07/image.png" alt="image" width="300" height="118" border="0" /></p>
<p>Chacune de ces deux librairies propose deux types de client :</p>
<ol>
<li>Consumer</li>
<li>Controller</li>
</ol>
<p>Le client “Consumer” permet de se connecter à Constellation en tant que “consommateur” pour pouvoir interroger des StateObjects et envoyer/recevoir des messages.</p>
<p>Le client “Controller” permet lui de se connecter à Constellation en tant que « contrôleur » pour récupérer par exemple en temps réel les logs produits par vos packages, arrêter/démarrer les packages, surveiller la consommation de ressources de chacun d&rsquo;entre eux, etc.</p>
<p>Dans ce guide nous allons utiliser le client « Consumer » afficher en temps réel le StateObject produit par le package <a href="/package-library/hwmonitor/">HWMonitor </a>représentant la consommation de votre CPU dans une page Web.</p>
<p>Pour cela vous devez avoir déployé le package “HWMonitor” sur au moins une de vos sentinelles (Windows).</p>
<h3>Etape 1 : ajouter la librairie Constellation</h3>
<h4>En utilisant le CDN</h4>
<p>Les librairies JavaScripts sont accessibles sur : <a href="http://cdn.myconstellation.io/js/">http://cdn.myconstellation.io/js/</a> (en HTTP ou HTTPS).</p>
<p>De ce fait, vous pouvez créer une simple pages HTML et ajoutez dans l’entête les balises suivantes :</p>
<p></p><pre class="crayon-plain-tag">&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;</pre><p></p>
<p>Si vous souhaitez connecter votre page à Constellation en utilisant le framework AngularJS :</p>
<p></p><pre class="crayon-plain-tag">&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;</pre><p></p>
<h4>Par Nuget en utilisant Visual Studio</h4>
<p>Créez une application Web vide dans Visual Studio et ouvrez le gestionnaire de package NuGet.</p>
<p>En sélectionnant la source “Constellation”, installez le package Nuget “Constellation.Javascript” :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/08/image-12.png"><img class="colorbox-2114"  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/2016/08/image_thumb-12.png" alt="image" width="354" height="122" border="0" /></a></p>
<p align="left">Une fois installée vous obtiendrez dans le dossier “Scripts” de votre projet Web les librairies jQuery, SignalR et Constellation :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/08/image-13.png"><img class="colorbox-2114"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="image" src="https://developer.myconstellation.io/wp-content/uploads/2016/08/image_thumb-13.png" alt="image" width="244" height="224" border="0" /></a></p>
<p align="left">Créez ensuite une page Web (HTML ou ASPX) et dans l’entête de votre code HTML référencez les scripts (à adapter en fonction des n° de version des librairies contenues dans les packages Nuget) :</p>
<p></p><pre class="crayon-plain-tag">&lt;script type="text/javascript" src="Scripts/jquery-2.2.4.min.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript" src="Scripts/jquery.signalR-2.2.2.min.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript" src="Scripts/Constellation-1.8.2.js"&gt;&lt;/script&gt;</pre><p></p>
<h3>Etape 2 : Initialiser le client</h3>
<p>Tout d’abord il faut déterminer la clé d’accès qui sera utilisée par votre page. Ici, depuis la Console Constellation, nous créons un credential “DemoWeb” avec la clé d&rsquo;accès “123456789” :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/08/image-14.png"><img class="colorbox-2114"  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/2016/08/image_thumb-14.png" alt="image" width="354" height="141" border="0" /></a></p>
<p align="left">Dans notre page HTML, créons un client “Consumer” en spécifiant l’URI de notre Constellation, la clé d’accès utilisée pour se connecter et le “friendly name” de votre client :</p>
<p></p><pre class="crayon-plain-tag">var constellation = $.signalR.createConstellationConsumer("http://localhost:8088", "123456789", "Test API JS");</pre><p></p>
<h3>Etape 3 : Etablir la connexion à Constellation</h3>
<p>Ajoutons un handler sur le changement d’état de la connection pour afficher le message “Je suis connecté” dans la console de votre navigateur :</p>
<p></p><pre class="crayon-plain-tag">constellation.connection.stateChanged(function (change) {
    if (change.newState === $.signalR.connectionState.connected) {
        console.log("Je suis connecté");
    }
});</pre><p></p>
<p>Pour finir lançons la connexion en invoquant la méthode Start :</p>
<p></p><pre class="crayon-plain-tag">constellation.connection.start();</pre><p></p>
<p>Testons la page dans Chrome par exemple :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/08/image-15.png"><img class="colorbox-2114"  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/2016/08/image_thumb-15.png" alt="image" width="354" height="77" border="0" /></a></p>
<h3>Etape 4 : Afficher le contenu d’un StateObject en temps réel</h3>
<p>Dans notre cas nous voulons afficher en temps réel la consommation CPU de notre sentinelle.</p>
<p>Ce StateObject se nomme “/intelcpu/0/load/0” et est produit par le package “HWMonitor” que vous aurez pris le soin de déployer sur une de vos sentinelles (ici ma sentinelle se nomme “PO-SWARIN”) :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/08/image-16.png"><img class="colorbox-2114"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="image" src="https://developer.myconstellation.io/wp-content/uploads/2016/08/image_thumb-16.png" alt="image" width="244" height="176" border="0" /></a></p>
<p align="left">On peut donc enregistrer un “StateObjectLink” avec la méthode “registerStateObjectLink” en demandant un filtre sur la sentinelle nommée “MON-PC”, le package “HWMonitor” et le nom “/intelcpu/load/0” (le dernier argument de cette méthode correspond au type du StateObject, ici ”*” indique qu’il n’y a pas de filtre sur le type) et en indiquant la fonction à invoquer à chaque mise à jour du et des StateObjects liés, ici mettre à jour un &lt;span&gt; de la page.</p>
<p>Vous devez impérativement faire cet enregistrement lorsque vous êtes connecté, c’est à dire lorsque le handler “stateChanged” est invoqué avec l’état “Connected”.</p>
<p>Le code final sera donc :</p>
<p></p><pre class="crayon-plain-tag">constellation.connection.stateChanged(function (change) {
    if (change.newState === $.signalR.connectionState.connected) {
        console.log("Je suis connecté");
        constellation.client.registerStateObjectLink("MON-PC", "HWMonitor", "/intelcpu/0/load/0", "*", function (so) {
            console.log(so);
            $("#cpu").text(so.Value.Value);
        });
    }
});</pre><p></p>
<p>Dès que le StateObject est réceptionné par notre page nous affectons la propriété “Value” de la valeur du StateObject comme contenu du span “cpu” de la page. De ce fait, ajoutons un “span” nommé “cpu” dans le corps de notre page :</p>
<p></p><pre class="crayon-plain-tag">&lt;body&gt;
    &lt;span id="cpu"&gt;&lt;/span&gt; %
&lt;/body&gt;</pre><p></p>
<p>Ainsi vous aurez en temps réel votre CPU dans une page HTML grâce à l’exploitation du StateObject ici produit par le package HWMonitor :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/08/image-17.png"><img class="colorbox-2114"  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/2016/08/image_thumb-17.png" alt="image" width="354" height="71" border="0" /></a></p>
<p align="left">Vous remarquerez que dans le handler ci-dessus nous loguons également l’objet “stateobject” réceptionné par notre page.</p>
<p align="left">Cet objet contient les différentes propriétés du StateObject : la sentinelle et le package qui ont produit ce StateObject, le nom du StateObject, son type, sa durée de vue (ici “lifetime=0” donc n’expire jamais), la date de mise à jour du StateObject, ses métadonnées et surtout sa valeur (propriété “Value”).</p>
<p align="left">Ici la valeur de ce StateObject produit par le package “HWMonitor” est un objet complexe (entouré en vert) qui contient différentes propriétés :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/08/image-18.png"><img class="colorbox-2114"  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/2016/08/image_thumb-18.png" alt="image" width="354" height="248" border="0" /></a></p>
<p align="left">Pour la suite je vous recommande vivement l’utilisation du framework AngularJS permettant de développer des pages plus facilement.</p>
<h3>Next step</h3>
<ul>
<li><a href="/client-api/javascript-api/consommer-constellation-api-javascript/">Consommer Constellation avec l’API Javascript</a></li>
<li><a href="/client-api/javascript-api/consommer-constellation-angular-js/">Consommer Constellation avec Angular JS</a></li>
<li><a href="/client-api/javascript-api/controler-constellation-api-javascript/">Contrôler votre Constellation en Javascript</a></li>
<li><a href="/client-api/javascript-api/application-mobile-multi-plateforme-avec-cordova-et-javascript/">Créer une application mobile multi-plateforme avec Cordova et l’API Javascript</a></li>
<li><a href="/client-api/javascript-api/application-mobile-multi-plateforme-avec-ionic-et-angular-js/">Créer une application mobile multi-plateforme avec Ionic et Angular JS</a></li>
<li><a href="/client-api/javascript-api/creer-application-montre-samsung-gear-tizen-angularjs/">Créer une application pour une montre Samsung Gear avec Tizen et AngularJS</a></li>
</ul>
<p>The post <a rel="nofollow" href="https://developer.myconstellation.io/getting-started/connectez-vos-pages-web-constellation/">Connectez vos pages Web à Constellation</a> appeared first on <a rel="nofollow" href="https://developer.myconstellation.io">Constellation</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://developer.myconstellation.io/getting-started/connectez-vos-pages-web-constellation/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Cr&#233;ez votre premier package Constellation en Python</title>
		<link>https://developer.myconstellation.io/getting-started/creez-votre-premier-package-constellation-en-python/</link>
					<comments>https://developer.myconstellation.io/getting-started/creez-votre-premier-package-constellation-en-python/#respond</comments>
		
		<dc:creator><![CDATA[Sebastien Warin]]></dc:creator>
		<pubDate>Fri, 01 Apr 2016 08:28:19 +0000</pubDate>
				<category><![CDATA[Guide de démarrage]]></category>
		<category><![CDATA[Python API]]></category>
		<category><![CDATA[Raspberry Pi]]></category>
		<category><![CDATA[PushStateObject]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Publish]]></category>
		<category><![CDATA[Package]]></category>
		<category><![CDATA[Settings]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Linux]]></category>
		<guid isPermaLink="false">https://developer.myconstellation.io/?p=1737</guid>

					<description><![CDATA[<p>Vous pouvez développer des packages Constellation avec le langage Python. Sur vos sentinelles Windows comme sur vos sentinelles Linux vous pourrez profiter des différentes libraires et de l’écosystème Python connectés dans Constellation. Découvrons dans cet article comment créer et déployer</p>
<p>The post <a rel="nofollow" href="https://developer.myconstellation.io/getting-started/creez-votre-premier-package-constellation-en-python/">Cr&eacute;ez votre premier package Constellation en Python</a> appeared first on <a rel="nofollow" href="https://developer.myconstellation.io">Constellation</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Vous pouvez développer des packages Constellation avec le langage Python. Sur vos sentinelles Windows comme sur vos sentinelles Linux vous pourrez profiter des différentes libraires et de l’écosystème Python connectés dans Constellation.</p>
<p>Découvrons dans cet article comment créer et déployer votre premier package Constellation en Python.</p>
<p><span id="more-1737"></span></p>
<h3>Prérequis</h3>
<p>Tout d’abord, que vous soyez sur Windows ou Linux, il vous faudra un interpréteur Python 2 ou Python 3 et une ou deux libraires indispensables pour Constellation.</p>
<p>Notez que ces prérequis sont automatiquement installés sur Linux avec le <em><a href="/dowload/">Web Platform Installer</a></em>.</p>
<h4>Installer Python sur Windows</h4>
<p>Téléchargez <a href="https://www.python.org/downloads/windows/">Python pour Windows</a> (en version 2.x ou 3.x) puis lancez l’installation en choisissant une installation pour tous les utilisateurs :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/04/image-1.png"><img class="colorbox-1737"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Installation Python" src="https://developer.myconstellation.io/wp-content/uploads/2016/04/image_thumb-1.png" alt="Installation Python" width="424" height="364" border="0" /></a></p>
<p align="left">Sélectionnez le composant “PIP” ( le gestionnaire de package Python) et ajoutez “Python.exe” dans les “Paths” Windows :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/04/image-2.png"><img class="colorbox-1737"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Installation des composants Python" src="https://developer.myconstellation.io/wp-content/uploads/2016/04/image_thumb-2.png" alt="Installation des composants Python" width="424" height="363" border="0" /></a></p>
<p align="left">Une fois l’installation terminée, lancez une invite de commande (cmd.exe) et assurez-vous que la commande “python” fonctionne :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/04/image-3.png"><img class="colorbox-1737"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Python.exe fonctionnel" src="https://developer.myconstellation.io/wp-content/uploads/2016/04/image_thumb-3.png" alt="Python.exe fonctionnel" width="424" height="130" border="0" /></a></p>
<p align="left">Toujours dans une invite de commande Windows, installez via PIP les librairies “pyzmq” (et “enum34” si vous êtes en Python 2.x) grâce aux commandes suivantes :</p>
<p></p><pre class="crayon-plain-tag">pip install pyzmq
pip install enum34</pre><p></p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/04/install-python-tools-windows.png"><img class="colorbox-1737"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Installation des libs pour Python" src="https://developer.myconstellation.io/wp-content/uploads/2016/04/install-python-tools-windows_thumb.png" alt="Installation des libs pour Python" width="424" height="330" border="0" /></a></p>
<p align="left">Si vous êtes sur Python 3.x, vous n’avez pas besoin du module “enum34”, seulement “pyzmq”.</p>
<p align="left">Et voilà, votre environnement Windows est prêt !</p>
<h4>Installer Python sur Linux</h4>
<p>Sur un système Debian ou similaire (Raspbian, Ubuntu, etc …), vous n’avez qu’à installer (et enregistrer dans votre Constellation) <a href="/getting-started/ajouter-des-sentinelles/#Installation_dune_sentinelle_sur_un_systeme_Linux">une sentinelle Constellation</a>.</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2017/05/image-1.png"><img class="colorbox-1737"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Installation des prérequis via PIP" src="https://developer.myconstellation.io/wp-content/uploads/2017/05/image_thumb-1.png" alt="Installation des prérequis via PIP" width="350" height="222" border="0" /></a></p>
<p>Le <a href="/dowload/"><em>Web Platform Installer</em></a> vous proposera d’installer tous les prérequis nécessaires à savoir Python et les librairies “pyZmq” et “enum34” (si Python 2.x) via PIP.</p>
<p>Autrement, pour installer manuellement ces prérequis, vous pouvez utiliser les mêmes commandes que sur Windows :</p>
<p></p><pre class="crayon-plain-tag">sudo easy_install pip
sudo pip install pyzmq
sudo pip install enum34</pre><p></p>
<p>Encore une fois, la libraire “enum34” est seulement requise sur Python 2.x.</p>
<p>Enfin si vous utilisez un Raspberry Pi, vous pouvez également <a href="/constellation-platform/constellation-server/constellation-raspberry-pi/">consulter cet article en particulier</a>.</p>
<p>Et voilà, votre environnement Linux est prêt !</p>
<h3>Développer un package Python en ligne de commande</h3>
<p>Vous pouvez soit utiliser le SDK Constellation basé sur Visual Studio pour créer, tester et déployer des packages Constellation (.NET ou Python) ou bien, utiliser l&rsquo;outil en ligne de commande nommé <a href="/client-api/python-api/developper-avec-le-package-tools-cli/"><strong><em>« Constellation Package Tools CLI »</em></strong></a>.</p>
<p>Le développement sous Visual Studio est abordé ci-dessous. Pour l&rsquo;outil en ligne de commande, rendez-vous sur la page : <a href="/client-api/python-api/developper-avec-le-package-tools-cli/">Créer, tester et déployer des packages Python en ligne de commande</a></p>
<h3>Développer un package Python avec Visual Studio</h3>
<p>Après avoir installé les prérequis et le <a href="/getting-started/installer-constellation/#Etape_5_selectionnez_les_composants_Constellation_a_installer">SDK Constellation</a>, lancez Visual Studio et créez un nouveau package Constellation de type “Python” :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/04/image.png"><img class="colorbox-1737"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Création d'un package Python" src="https://developer.myconstellation.io/wp-content/uploads/2016/04/image_thumb.png" alt="Création d'un package Python" width="424" height="294" border="0" /></a></p>
<p align="left">Une fois créé le projet Visual Studio a la structure suivante :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/04/image-4.png"><img class="colorbox-1737"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Structure d'un package Python" src="https://developer.myconstellation.io/wp-content/uploads/2016/04/image_thumb-4.png" alt="Structure d'un package Python" width="244" height="199" border="0" /></a></p>
<p align="left">Vous retrouverez une structure classique pour un package Constellation :</p>
<ul>
<li>
<div align="left"><u>App.config</u> : le fichier de configuration local pour définir les valeurs locales de vos settings (<a href="/client-api/net-package-api/settings/">lire ici</a>) ainsi que<span style="text-decoration: underline;"> les scripts Python à démarrer</span></div>
</li>
<li>
<div align="left"><u>PackageInfo.xml</u> : le <a href="/concepts/package-manifest/">manifeste de votre package</a></div>
</li>
<li>
<div align="left"><u>packages.config</u> : le fichier des packages Nuget de votre projet (réservé à Nuget)</div>
</li>
<li>
<div align="left"><u>Program.cs</u> : le point d’entrée (C#) de votre package qui se chargera de lancer le “Python Proxy” (le pont entre vos scripts Python et Constellation)</div>
</li>
<li>
<div align="left">Le répertoire “Scripts” (qui contient vos scripts Python)</div>
<ul>
<li>
<div align="left"><u>Constellation.py</u> : le proxy Python Constellation (la librairie Python) : <u>ne pas modifier</u> !</div>
</li>
<li>
<div align="left"><u>Demo.py</u> : un script Python d’exemple</div>
</li>
</ul>
</li>
</ul>
<h4 align="left">Configurer les scripts à démarrer</h4>
<p align="left">Vous pouvez ajouter autant de scripts Python dans le dossier “Scripts” comme vous le souhaitez. Pour cela, cliquez-droit sur ce répertoire et sélectionnez « <em>Ajouter un nouvel élément »</em>.</p>
<p align="left">Dans la catégorie « Constellation » sélectionnez « <strong><em>Constellation Python Script</em></strong> » :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2017/06/image-1.png"><img class="colorbox-1737"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Création d'un nouveau script Constellation Python" src="https://developer.myconstellation.io/wp-content/uploads/2017/06/image_thumb-1.png" alt="Création d'un nouveau script Constellation Python" width="354" height="246" border="0" /></a></p>
<p align="left">Chaque script sera démarré dans un processus dédié et connecté à Constellation.</p>
<p align="left"><u>Attention</u> : si vous rajoutez des scripts Python dans ce dossier, il faut obligatoirement les inclure dans le package en sélectionnant “<em>Copy if newer</em>” pour la propriété “<em>Copy to Output directory</em>”. Cette propriété est automatiquement définie à cette valeur si vous avez créé votre fichier Python en sélectionnant l’élément « <em>Constellation Python Script</em> » comme expliqué ci-dessus.</p>
<p align="left"><strong>Dans le fichier « <em>App.config</em> » vous devez déclarer les fichiers Python à démarrer</strong>. Les scripts Python créé en sélectionnant l’élément « Constellation Python Script » sont automatiquement ajoutés dans ce fichier lors de la création. <strong>Si vous renommez ou supprimer vos scripts, n&rsquo;oubliez pas de mettre à jour ce fichier</strong>.</p>
<p></p><pre class="crayon-plain-tag">&lt;pythonProxy xmlns="urn:Constellation.PythonProxy"&gt;
  &lt;scripts&gt;
    &lt;script filename="Scripts\Demo.py" /&gt;
    &lt;script filename="Scripts\LightSensor.py" /&gt;
    &lt;script filename="Scripts\Camera.py" /&gt;
  &lt;/scripts&gt;
&lt;/pythonProxy&gt;</pre><p></p>
<p align="left">Le script “Demo.py” est créé à titre d’exemple. Vous pouvez le supprimer, renommer ou modifier à votre convenance.</p>
<p align="left">Grâce à Visual Studio et au SDK Constellation, vous bénéficiez d’un environnement de développement agréable pour créer vos packages Python avec la coloration syntaxique et l’IntelliSense :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/04/image-6.png"><img class="colorbox-1737"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="IntelliSense VisualStudio" src="https://developer.myconstellation.io/wp-content/uploads/2016/04/image_thumb-6.png" alt="IntelliSense VisualStudio" width="420" height="276" border="0" /></a></p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/04/image-7.png"><img class="colorbox-1737"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="IntelliSense VisualStudio" src="https://developer.myconstellation.io/wp-content/uploads/2016/04/image_thumb-7.png" alt="IntelliSense VisualStudio" width="420" height="61" border="0" /></a></p>
<h4 align="left">Les bases</h4>
<p align="left">Chaque script Python doit impérativement importer la librairie Constellation et démarrer la “connexion” avec le proxy Python en invoquant la méthode “Start” :</p>
<p></p><pre class="crayon-plain-tag">import Constellation
# Votre code !
Constellation.Start()</pre><p></p>
<p align="left">Vous avez trois façon de démarrer cette connexion :</p>
<p align="left">1 – La plus simple est d’invoquer la méthode “Start” :</p>
<p></p><pre class="crayon-plain-tag">Constellation.Start()</pre><p></p>
<p align="left">La méthode “Start” démarre la connexion et maintient le script en “vie” grâce à une boucle qui tourne tant que le package Constellation est lancé.</p>
<p align="left">Autrement dit le code après la méthode “Start” ne sera jamais appelé !</p>
<p align="left">2 – Invoquer la méthode “Start” en passant une fonction de démarrage :</p>
<p align="left">Vous pouvez passer le nom d’une fonction en paramètre de la méthode “Start” qui sera invoquée dès que le script Python est connecté à Constellation.</p>
<p align="left">Cela vous permet de définir du code au démarrage du package :</p>
<p></p><pre class="crayon-plain-tag">def OnStart():
    # Mon code de démarrage ici
    pass

Constellation.Start(OnStart);</pre><p></p>
<p align="left">3 – Troisième méthode : invoquer la méthode “StartAsync” (non bloquante)</p>
<p align="left">Mais attention vous devrez vous même créer une boucle pour maintenant votre script “en vie” autrement il s’arrêtera automatiquement !</p>
<p></p><pre class="crayon-plain-tag">Constellation.StartAsync()
while Constellation.IsRunning:
    pass
    time.sleep(1)</pre><p></p>
<h4 align="left">Interpréteurs Python et environnements virtuels</h4>
<p align="left">Par défaut chaque script est lancé avec la commande “python”. C’est pour cela qu’il est recommandé d’ajouter Python dans le PATH de votre système afin de pouvoir “résoudre” la commande “python”.</p>
<p>Vous pouvez aussi 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>Vous pouvez donc utiliser cet attribut pour spécifier l’interpréteur Python à utiliser (Python 2 vs 3 ou même des interpréteurs dans des environnements virtuels). Quelque soit l’interpréteur utilisé n’oubliez d’installer les librairies “pyzmq” (et “enum34” si Python 2.x).</p>
<p><span style="text-decoration: underline;">Note</span> : vous pouvez aussi les Settings Constellation dans l&rsquo;attribut « pythonCmd » vous permettant ainsi de définir/changer d&rsquo;interpréteur sans modifier le code de votre package, simplement en manipulant les settings de votre package depuis la Console Constellation. Plus d&rsquo;information <a href="/blog/support-python-3-et-environnements-virtuels/#La_configuration_du_Proxy_par_settings_Constellation">sur ce billet</a>.</p>
<h4 align="left">Produire des logs</h4>
<p align="left">Pour écrire des logs dans le hub Constellation, <a href="/client-api/net-package-api/les-bases-des-packages-net/#Ecrire_des_logs">tout comme en C#,</a> vous disposez des méthodes suivantes :</p>
<ul>
<li>
<div align="left">WriteInfo</div>
</li>
<li>
<div align="left">WriteWarn</div>
</li>
<li>
<div align="left">WriteError</div>
</li>
</ul>
<p align="left">Exemple :</p>
<p></p><pre class="crayon-plain-tag">Constellation.WriteInfo("Hello world from Python !")
Constellation.WriteWarn("This is a warning !")
Constellation.WriteError("This is an error !")</pre><p></p>
<p align="left">En Python vous pouvez formater vos messages avec des variables grâce à l’opérateur “%”.</p>
<p align="left">Par exemple, affichons dans les logs Constellation l’état de notre package :</p>
<p></p><pre class="crayon-plain-tag">Constellation.WriteInfo("Hi I'm '%s' and I run on %s" % (Constellation.PackageName, Constellation.SentinelName))
Constellation.WriteInfo("IsConnected = %s | IsStandAlone = %s " % (Constellation.IsConnected, Constellation.IsStandAlone))</pre><p></p>
<p align="left">Vous remarquez par la même occasion <a href="/client-api/net-package-api/les-bases-des-packages-net/#Proprietes_du_PackageHost">quelques propriétés</a> accessibles dans vos scripts Python (<em>IsConnected</em>, <em>IsStandAlone</em>, <em>SentinelName</em>, <em>PackageName</em>, etc…).</p>
<h4 align="left">Accès aux settings</h4>
<p align="left">Le fonctionnement des settings est strictement identique à l’API .NET <a href="/client-api/net-package-api/settings/">décrite ici</a>.</p>
<p align="left">Les settings sont définis sur le serveur au niveau du package ou via des groupes, et par héritage peuvent être définis dans le fichier local App.config et/ou dans le manifeste. Je vous invite vivement <a href="/client-api/net-package-api/settings/">à lire cet article</a> pour bien comprendre le fonctionnement des settings.</p>
<p align="left">Avec l’API Python de Constellation vous disposez de la méthode “GetSetting” pour récupérer la valeur de vos settings.</p>
<p align="left">Par exemple pour afficher la valeur du setting “Demo1” :</p>
<p></p><pre class="crayon-plain-tag">Constellation.WriteInfo("Demo1 = " + str(Constellation.GetSetting("Demo1")))</pre><p></p>
<p align="left">Si la valeur du setting n’existe pas, la méthode vous retourne un “Null” :</p>
<p></p><pre class="crayon-plain-tag">if Constellation.GetSetting("Demo1") &lt;&gt; Null:
     Constellation.WriteInfo("Demo1 = " + str(Constellation.GetSetting("Demo1")))</pre><p></p>
<p align="left">Vous avez également la possibilité d’attacher une méthode callback pour être notifier dans votre code Python lorsque les settings de votre packages sont mises à 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>
<h4 align="left">Publier des StateObjects</h4>
<p align="left"><a href="/client-api/net-package-api/stateobjects/">Comme pour l’API .NET</a>, vous disposez de la méthode PushStateObject pour publier un StateObject.</p>
<p align="left">Chaque StateObject a obligatoirement un nom et une valeur de n’importe quel type :</p>
<p></p><pre class="crayon-plain-tag">Constellation.PushStateObject("MyString", "OK")
Constellation.PushStateObject("MyNumber", 123)
Constellation.PushStateObject("MyDecimal", 123.12)
Constellation.PushStateObject("MyBoolean", True)</pre><p></p>
<p align="left">Vous pouvez publier des StateObjects dont la valeur est un objet complexe :</p>
<p></p><pre class="crayon-plain-tag">Constellation.PushStateObject("Demo", { "UneString": "DemoPython", "UnNombre": 123 })</pre><p></p>
<p align="left">Dans l&rsquo;exemple ce-dessus, le StateObject « Demo » est un objet contenant deux propriétés : « UneString » et « UnNombre ».</p>
<p align="left">Lorsqu&rsquo;il s&rsquo;agit de type complexe, il est vivement conseiller de décrire le type du StateObject à Constellation.</p>
<p align="left">Pour cela au démarrage de votre package (méthode Start), enregistrez vos différents types de StateObjects avec la méthode « DescribeStateObjectType ».</p>
<p align="left">Par exemple :</p>
<p></p><pre class="crayon-plain-tag">Constellation.DescribeStateObjectType("MyStateObject", "StateObject à deux propriétés de démonstration", [
    { 'Name':'UneString', 'Type':'string', 'Description': 'Une chaine de caractère tout simplement' },        
    { 'Name':'UnNombre', 'Type':'int', 'Description': 'Un nombre entier' }
])</pre><p></p>
<p>Pour chaque type on spécifiera un nom, une description du type et la liste ses propriétés. Sachant que pour chaque propriété nous avons un nom, un type et une description.</p>
<p>Le type d&rsquo;une propriété peut faire elle-même référence à un autre type complexe que vous avez enregistré.</p>
<p>Pour finir il faudra déclarer le package descriptor après avoir décrit tous vos types :</p>
<p></p><pre class="crayon-plain-tag">Constellation.DeclarePackageDescriptor()</pre><p></p>
<p align="left">Enfin, pour chaque publication de StateObject, vous pouvez spécifier le type (simple ou complexe que vous aurez enregistré ci-dessus), un dictionnaire de méta-données ou encore une durée de vie (en seconde)  :</p>
<p></p><pre class="crayon-plain-tag">Constellation.PushStateObject("Demo", { "UneString": "DemoPython", "UnNombre": 123 }, type = "MyStateObject", metadatas = { "DeviceId": "RPi", "SerialNumber":"123" }, lifetime = 300)</pre><p></p>
<h4 align="left">Tester son package dans Visual Studio</h4>
<p align="left">Laissons le code de démo du script “Demo.py” créé par le Template du projet tel quel :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/04/image-8.png"><img class="colorbox-1737"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Demo Python" src="https://developer.myconstellation.io/wp-content/uploads/2016/04/image_thumb-8.png" alt="Demo Python" width="420" height="130" border="0" /></a></p>
<p align="left">Notons simplement qu’au démarrage du package on enregistre la méthode “OnStart” pour :</p>
<ul>
<li>
<div align="left">Produire différents logs via des “WriteInfo” (Warning &amp; Error) contenant notamment différentes propriétés comme le <em>IsConnected</em> &amp; <em>IsStandalone</em>.</div>
</li>
<li>
<div align="left">Publier le StateObject “Demo”</div>
</li>
</ul>
<h5 align="left">Debug local (hors Constellation)</h5>
<p align="left">Commençons par tester notre package hors Constellation en lançant simplement le package avec le bouton “Start” de Visual Studio (F5) :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/04/image-9.png"><img class="colorbox-1737"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Debug local" src="https://developer.myconstellation.io/wp-content/uploads/2016/04/image_thumb-9.png" alt="Debug local" width="424" height="55" border="0" /></a></p>
<p align="left">Votre package démarre et vous pouvez suivre dans la console les différents logs produits par votre package.</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/04/image-10.png"><img class="colorbox-1737"  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/2016/04/image_thumb-10.png" alt="image" width="420" height="138" border="0" /></a></p>
<p align="left">Vous observerez que votre package n’est pas connecté à Constellation (<em>IsConnected = false</em>).</p>
<h5 align="left">Debug dans Constellation</h5>
<p align="left">Maintenant lançons toujours le debugging de votre package Constellation depuis Visual Studio mais en connectant votre package à Constellation. (Assurez-vous d’avoir défini dans Visual Studio la Constellation à utiliser pour le debug comme nous l’avons vu dans <a href="/getting-started/creez-votre-premier-package-constellation-en-csharp/#Tester_son_package_dans_sa_Constellation">ce guide</a>).</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/04/image-11.png"><img class="colorbox-1737"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Debug On Constellation" src="https://developer.myconstellation.io/wp-content/uploads/2016/04/image_thumb-11.png" alt="Debug On Constellation" width="424" height="55" border="0" /></a></p>
<p align="left">Cette fois ci, votre package démarre dans Visual Studio mais en étant connecté à Constellation (<em>IsConnected = true</em>).</p>
<p align="left">Vous pouvez donc suivre en temps réel les logs depuis la Console Constellation :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/04/image-12.png"><img class="colorbox-1737"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Debug On Constellation" src="https://developer.myconstellation.io/wp-content/uploads/2016/04/image_thumb-12.png" alt="Debug On Constellation" width="424" height="226" border="0" /></a></p>
<p align="left">Vous retrouverez également dans le StateObject Explorer de la Console, le StateObject “Demo” publié par notre package :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/04/image-13.png"><img class="colorbox-1737"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="StateObject Demo" src="https://developer.myconstellation.io/wp-content/uploads/2016/04/image_thumb-13.png" alt="StateObject Demo" width="424" height="302" border="0" /></a></p>
<h4 align="left">Publiez votre package</h4>
<p align="left">Lorsque votre package est testé et validé, nous pouvons le publier dans Constellation.</p>
<p align="left">Pour cela cliquez sur le bouton de publication :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/04/image-14.png"><img class="colorbox-1737"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Publication du package" src="https://developer.myconstellation.io/wp-content/uploads/2016/04/image_thumb-14.png" alt="Publication du package" width="424" height="55" border="0" /></a></p>
<p align="left">Sélectionnez votre serveur Constellation cible et cliquez sur “Publish” :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/04/image-15.png"><img class="colorbox-1737"  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/2016/04/image_thumb-15.png" alt="image" width="424" height="212" border="0" /></a></p>
<p align="left">Une fois publié, vous retrouverez votre package dans le “Package Repository” de la Console.</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/04/image-16.png"><img class="colorbox-1737"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Package Repository" src="https://developer.myconstellation.io/wp-content/uploads/2016/04/image_thumb-16.png" alt="Package Repository" width="424" height="158" border="0" /></a></p>
<p align="left">N’oubliez pas que vous pouvez personnaliser les différentes informations (nom du package, auteur, URL, version, description, etc…) en <a href="/concepts/package-manifest/">éditant le manifeste</a> de votre package.</p>
<h4 align="left">Déployez votre package sur une sentinelle</h4>
<p align="left">Maintenant que votre package est dans le catalogue de votre Constellation, vous pouvez le déployer sur autant de sentinelle que vous le souhaitez!</p>
<h5 align="left">Par l&rsquo;édition du fichier de configuration</h5>
<p align="left">Pour cela, vous pouvez éditer manuellement la configuration (via le <em><a href="/constellation-platform/constellation-console/configuration-editor/">Configuration Editor</a></em>) pour ajouter une instance de package sur la sentinelle de votre choix par la ligne :</p>
<p></p><pre class="crayon-plain-tag">&lt;package name="MonPackagePython" /&gt;</pre><p></p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/04/image-17.png"><img class="colorbox-1737"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Deploiement du package" src="https://developer.myconstellation.io/wp-content/uploads/2016/04/image_thumb-17.png" alt="Deploiement du package" width="424" height="195" border="0" /></a></p>
<p align="left">On peut également déclarer le setting “Demo1” pour cette instance de package :</p>
<p></p><pre class="crayon-plain-tag">&lt;package name="MonPackagePython"&gt;
  &lt;settings&gt;
    &lt;setting key="Demo1" value="Hello Python !!!!" /&gt;
  &lt;/settings&gt;
&lt;/package&gt;</pre><p></p>
<p align="left">Cliquez sur le bouton “Save &amp; Deploy” et votre package sera automatiquement démarré sur la sentinelle ici nommée “PO-SWARIN” !</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/04/image-18.png"><img class="colorbox-1737"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Package déployé" src="https://developer.myconstellation.io/wp-content/uploads/2016/04/image_thumb-18.png" alt="Package déployé" width="424" height="182" border="0" /></a></p>
<h5 align="left">Par l&rsquo;interface graphique de la Console Constellation</h5>
<p align="left">Autre moyen, plus intuitif et rapide pour déployer un package, cliquez sur le bouton “Deploy” dans menu contextuel de votre package Python :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2017/05/image-6.png"><img class="colorbox-1737"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Déploiement d'un package" src="https://developer.myconstellation.io/wp-content/uploads/2017/05/image_thumb-6.png" alt="Déploiement d'un package" width="428" height="149" border="0" /></a></p>
<p align="left">Vous pouvez également cliquer sur le bouton “<a href="/constellation-platform/constellation-console/gerer-packages-avec-la-console-constellation/#Deployer_un_package">Deploy new package</a>” sur la page “Packages”.</p>
<p align="left">Un assistant vous proposera de sélectionner la sentinelle sur laquelle déployer votre package Python :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2017/05/image-7.png"><img class="colorbox-1737"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Déploiement d'un package" src="https://developer.myconstellation.io/wp-content/uploads/2017/05/image_thumb-7.png" alt="Déploiement d'un package" width="428" height="158" border="0" /></a></p>
<p align="left">Si les settings de votre package sont déclarés dans le manifeste (<a href="/concepts/package-manifest/#Informations_sur_les_Settings_du_package">voir ici</a>), la Console vous affichera une fenêtre de paramétrage :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2017/05/image-8.png"><img class="colorbox-1737"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Configuration des settings" src="https://developer.myconstellation.io/wp-content/uploads/2017/05/image_thumb-8.png" alt="Configuration des settings" width="428" height="246" border="0" /></a></p>
<p align="left">Une fois votre package déployé, vous pourrez suivre dans la Console Log votre package :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2017/05/image-9.png"><img class="colorbox-1737"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Démarrage du package" src="https://developer.myconstellation.io/wp-content/uploads/2017/05/image_thumb-9.png" alt="Démarrage du package" width="428" height="163" border="0" /></a></p>
<p align="left">Et voilà votre premier package Python créé et déployé dans votre Constellation !</p>
<h4 align="left">Next steps</h4>
<ul>
<li>
<div align="left"><a href="/client-api/python-api/messagecallbacks-exposer-des-methodes-python/">MessageCallback : exposer des méthodes Python dans la Constellation</a></div>
</li>
<li>
<div align="left"><a href="/client-api/python-api/envoyer-des-messages-et-invoquer-des-messagecallbacks-en-python/">Envoyer des messages et invoquer des MessageCallbacks de la Constellation</a></div>
</li>
<li>
<div align="left"><a href="/client-api/python-api/consommer-des-stateobjects-en-python/">StateObjectLink : consommer des StateObjects de votre Constellation</a></div>
</li>
</ul>
<p>The post <a rel="nofollow" href="https://developer.myconstellation.io/getting-started/creez-votre-premier-package-constellation-en-python/">Cr&eacute;ez votre premier package Constellation en Python</a> appeared first on <a rel="nofollow" href="https://developer.myconstellation.io">Constellation</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://developer.myconstellation.io/getting-started/creez-votre-premier-package-constellation-en-python/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Connecter un Arduino ou un ESP8266 à Constellation</title>
		<link>https://developer.myconstellation.io/getting-started/connecter-un-arduino-ou-un-esp8266-constellation/</link>
					<comments>https://developer.myconstellation.io/getting-started/connecter-un-arduino-ou-un-esp8266-constellation/#respond</comments>
		
		<dc:creator><![CDATA[Sebastien Warin]]></dc:creator>
		<pubDate>Fri, 19 Aug 2016 09:22:50 +0000</pubDate>
				<category><![CDATA[Guide de démarrage]]></category>
		<category><![CDATA[Arduino / ESP API]]></category>
		<category><![CDATA[StateObject]]></category>
		<category><![CDATA[ESP8266]]></category>
		<category><![CDATA[Package]]></category>
		<category><![CDATA[ESP]]></category>
		<category><![CDATA[WriteLog]]></category>
		<category><![CDATA[Settings]]></category>
		<category><![CDATA[Sentinel]]></category>
		<category><![CDATA[Credential]]></category>
		<category><![CDATA[PushStateObject]]></category>
		<category><![CDATA[Console]]></category>
		<category><![CDATA[Virtuel]]></category>
		<category><![CDATA[Arduino]]></category>
		<guid isPermaLink="false">https://developer.myconstellation.io/?p=2342</guid>

					<description><![CDATA[<p>Vous pouvez connecter tout type d’objet ou système dans Constellation à partir du moment où vous disposez d’une connectivité IP pour réaliser des appels HTTP. Introduction Par exemple si vous disposez d’un Arduino il vous faudra un shield Ethernet ou</p>
<p>The post <a rel="nofollow" href="https://developer.myconstellation.io/getting-started/connecter-un-arduino-ou-un-esp8266-constellation/">Connecter un Arduino ou un ESP8266 à Constellation</a> appeared first on <a rel="nofollow" href="https://developer.myconstellation.io">Constellation</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Vous pouvez connecter tout type d’objet ou système dans Constellation à partir du moment où vous disposez d’une connectivité IP pour réaliser des appels HTTP.</p>
<h3>Introduction</h3>
<p>Par exemple si vous disposez d’un Arduino il vous faudra un shield Ethernet ou Wifi bien que ces derniers ont été retirés du support Arduino.</p>
<p>Arduino propose en alternative des modèles déjà équipés d’une connectivité Ethernet et/ou Wifi comme le <a href="https://www.arduino.cc/en/Main/ArduinoMKR1000">MKR1000</a>, le <a href="https://www.arduino.cc/en/Main/ArduinoYunShield">Yun Shield</a> ou le <a href="https://www.arduino.cc/en/Main/ArduinoWiFiShield101">Wifi Shield 101</a>.</p>
<p align="center"><a href="https://www.arduino.cc/en/Main/ArduinoMKR1000"><img class="colorbox-2342"  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/2016/08/image-25.png" alt="image" width="240" height="145" border="0" /></a><a href="https://www.arduino.cc/en/Main/ArduinoYunShield"><img class="colorbox-2342"  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/2016/08/image-26.png" alt="image" width="225" height="145" border="0" /></a><a href="https://www.arduino.cc/en/Main/ArduinoWiFiShield101"><img class="colorbox-2342"  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/2016/08/image-27.png" alt="image" width="176" height="145" border="0" /></a></p>
<p align="left">En alternative vous avez les ESP8266 que j’ai <a href="http://sebastien.warin.fr/2016/07/12/4138-decouverte-des-esp8266-le-microcontroleur-connecte-par-wifi-pour-2-au-potentiel-phenomenal-avec-constellation/">pu vous présenter sur mon blog personnel</a>.</p>
<blockquote>
<p align="left">Ce microcontrôleur est cadencé à 80Mhz par un processeur 32bits RISC avec 96K de RAM et une mémoire flash de 512Ko à 4Mo selon les modèles.</p>
<p align="left">Il dispose d’une connectivité Wifi 802.11 b/g/n supportant le WEP, WPA/2/WPS et réseau ouvert et 16 GPIO dont le support du SPI, I²C, UART et un port ADC (pour les I/O analogiques).</p>
</blockquote>
<p align="center"><a href="http://sebastien.warin.fr/2016/07/12/4138-decouverte-des-esp8266-le-microcontroleur-connecte-par-wifi-pour-2-au-potentiel-phenomenal-avec-constellation/"><img class="colorbox-2342"  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/2016/08/image-22.png" alt="image" width="204" height="132" border="0" /></a></p>
<p align="left">Vous trouverez différents modèles sur internet, comme ceux produit par AI-Thinker mais il faudra réaliser vous même la carte de programmation comme <a href="http://sebastien.warin.fr/2016/07/12/4138-decouverte-des-esp8266-le-microcontroleur-connecte-par-wifi-pour-2-au-potentiel-phenomenal-avec-constellation/#prettyPhoto">je l’explique sur mon blog</a> ou bien des modules “tout en un” comme ceux d’<a href="https://www.adafruit.com/product/2821">Adafruit</a> ou <a href="https://www.sparkfun.com/products/13231">Sparkfun</a> disposant d’un port USB intégré pour une programmation facile :</p>
<p align="center"><a href="https://www.adafruit.com/product/2821"><img class="colorbox-2342"  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/2016/08/image-28.png" alt="image" width="240" height="185" border="0" /></a> <a href="https://www.sparkfun.com/products/13231"><img class="colorbox-2342"  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/2016/08/image-29.png" alt="image" width="231" height="185" border="0" /></a></p>
<p align="left">Si vous débutez je vous recommande la Wemos D1 Mini qui intègre un ESP8266 avec 4M de mémoire Flash, 11 I/O digitales et 1 analogique (ADC) ainsi qu’une interface USB le tout pour moins de 5€ :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/09/mini_v2.jpg"><img class="colorbox-2342"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="mini_v2" src="https://developer.myconstellation.io/wp-content/uploads/2016/09/mini_v2_thumb.jpg" alt="mini_v2" width="305" height="211" border="0" /></a></p>
<p align="left">Pour bien comprendre les ESP8266, je vous recommande une nouvelle fois mon article <a href="http://sebastien.warin.fr/2016/07/12/4138-decouverte-des-esp8266-le-microcontroleur-connecte-par-wifi-pour-2-au-potentiel-phenomenal-avec-constellation/#prettyPhoto"><strong>Découverte des ESP8266 : le microcontrôleur connecté par Wifi pour 2€ au potentiel phénoménal avec Constellation</strong></a></p>
<p align="left">Le plus important étant que les ESP8266 peuvent être programmés comme les Arduino avec l’IDE Arduino.</p>
<h3 align="left">Arduino/ESP8266 = package virtuel</h3>
<p>Ce <a href="/concepts/sentinels-packages-virtuels/">concept a déjà été abordé ici</a>. En clair le micro-programme d’un Arduino ou d’un ESP est stocké dans la puce elle même et il n’y a pas de concept de “processus” sur ce genre de device. Il n’est donc pas possible d’avoir une véritable sentinelle qui tourne ce genre d’objet pour déployer et superviser des packages Constellation à la volée comme sur un système Windows ou Linux.</p>
<p>C’est pour cela qu’on parle de sentinelle et de package “<strong>virtuel</strong>” : on déclare bien dans la <a href="/constellation-platform/constellation-server/fichier-de-configuration/">configuration de notre Constellation</a> une sentinelle (par exemple nommée “Arduino” et associée à un credential) et contenant un package (par exemple nommé  “TemperatureSensor”). Ce package peut être joint à des groupes et avoir des settings qui lui sont propres.</p>
<p>Dans le microprogramme téléversé sur votre Arduino/ESP vous allez vous connecter en spécifiant le nom de la sentinelle et du package virtuel (ici Arduino/TemperatureSensor) et la clé d’accès associée. Votre device sera alors connecté à Constellation comme étant le package “TemperatureSensor” sur la sentinelle “Arduino”. Comme n&rsquo;importe quel package il pourra produire des logs, publier des StateObjects, récupérer ses settings, envoyer ou recevoir des messages ou encore consommer les StateObjects d’autres packages.</p>
<p>Techniquement parlant l’Arduino/ESP utilise <a href="/client-api/rest-api/interface-rest-constellation/">l’API REST “Constellation”</a>.</p>
<h3>Installer la librairie Constellation dans l’IDE Arduino</h3>
<p>Ouvrez le « Gestionnaire de bibliothèque » dans le menu « <i>Croquis &gt; Inclure une bibliothèque &gt; Gérer les bibliothèques</i> » :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/12/image-2.png"><img class="colorbox-2342"  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/2016/12/image_thumb-2.png" alt="image" width="450" height="274" border="0" /></a></p>
<p>Avec le moteur de recherche, recherchez le terme « <i>ArduinoJson</i> » :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/12/image-3.png"><img class="colorbox-2342"  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/2016/12/image_thumb-3.png" alt="image" width="450" height="253" border="0" /></a></p>
<p>Vous trouverez lors la bibliothèque « ArduinoJson » de Benoit Blanchon (dépendance de la librairie Constellation) ainsi que la librairie Constellation.</p>
<p>Pour ces deux bibliothèques, cliquez sur le bouton « Installer » (ou « Mise à jour » si la librairie est déjà installée).</p>
<h3>Hello World, Hello Constellation</h3>
<p>Commencez par créer un nouveau sketch et ajoutez la librairie Constellation :</p>
<p></p><pre class="crayon-plain-tag">#include &lt;Constellation.h&gt;</pre><p></p>
<p>Vous pouvez maintenant déclarer le client “Constellation” en l’initialisant avec l’adresse (IP ou DNS) de votre serveur Constellation, le port et les informations de connexion de Constellation, c’est à dire le nom de votre sentinelle et package ainsi que la clé d’accès que vous aurez déclarés sur votre serveur :</p>
<p></p><pre class="crayon-plain-tag">Constellation&lt;WiFiClient&gt; constellation("IP or DNS du serveur constellation", 8088, "MyVirtualSentinel", "MyVirtualPackage", "123456789");</pre><p></p>
<p>Pour ajouter <a href="/constellation-platform/constellation-console/gerer-sentinelles-avec-la-console-constellation/#Ajouter_une_sentinelle">une sentinelle virtuelle</a> cliquez sur le bouton “Add sentinel” sur la page “Sentinels” de la Console Constellation :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/08/image-61.png"><img class="colorbox-2342"  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/2016/08/image_thumb-50.png" alt="image" width="350" height="111" border="0" /></a></p>
<p align="left">Puis ajoutons un <a href="/constellation-platform/constellation-console/gerer-packages-avec-la-console-constellation/#Les_packages_virtuels">package virtuel</a> en cliquant sur le bouton contextuel de notre sentinelle “Deploy package” ou directement depuis la package “Packages” :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/08/image-62.png"><img class="colorbox-2342"  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/2016/08/image_thumb-51.png" alt="image" width="350" height="124" border="0" /></a></p>
<p align="left">Déclarez ensuite le nom de votre package, ici “MyVirtualPackage” utilisant la même clé que celle définie au niveau de la sentinelle :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/08/image-63.png"><img class="colorbox-2342"  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/2016/08/image_thumb-52.png" alt="image" width="350" height="143" border="0" /></a></p>
<p>Vous remarquerez que dans la déclaration du client Constellation nous avons spécifié dans le template de la classe Constellation le type de notre client réseau, qui dans le cas d’un ESP8266 ou d’un Arduino MKR1000 est “WifiClient”.</p>
<p>N’oubliez pas d’ajouter les librairies de votre client réseau, quelques exemples :</p>
<p></p><pre class="crayon-plain-tag">/* Arduino Wifi (ex: Wifi Shield) */
#include &lt;SPI.h&gt;
#include &lt;WiFi.h&gt;

/* Arduino Wifi101 (for WiFi Shield 101 and MKR1000 board) */
#include &lt;SPI.h&gt;
#include &lt;WiFi101.h&gt;

/* Arduino Ethernet */
#include &lt;SPI.h&gt;
#include &lt;Ethernet.h&gt;

/* ESP8266 Wifi */
#include &lt;ESP8266WiFi.h&gt;</pre><p></p>
<p>Au démarrage du programme, nous allons d’abord connecter votre client réseau sur le réseau. Dans le cas d’un ESP8266, on se connecte au réseau Wifi de cette façon :</p>
<p></p><pre class="crayon-plain-tag">void setup(void) {
  Serial.begin(115200);

  // Connect to Wifi  
  WiFi.begin("MY-SSID", "MY-WIFI_KEY");  
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  // For WiFi101, wait 10 seconds for connection!
  // delay(10000);

  Serial.println("WiFi connected. IP: ");
  Serial.println(WiFi.localIP());
}</pre><p></p>
<p>Une fois connecté au réseau, on peut utiliser les méthodes de la librairie Constellation.</p>
<p>Par exemple, produisons un log avec la méthode “WriteInfo” :</p>
<p></p><pre class="crayon-plain-tag">constellation.writeInfo("Hello Constellation");</pre><p></p>
<p>Cette méthode gère nativement le formatage “à la printf”, par exemple :</p>
<p></p><pre class="crayon-plain-tag">constellation.writeInfo("Hello Constellation, I'm '%s !", constellation.getSentinelName());</pre><p></p>
<p>Notez que vous pouvez produire de la même façon des messages de type “Info”, “Warning” ou “Error” :</p>
<p></p><pre class="crayon-plain-tag">constellation.writeInfo("This is an information"); 
constellation.writeWarn("This is a warning"); 
constellation.writeError("This is an error");</pre><p></p>
<p>Bien entendu, comme n’importe quel package, les logs sont remontés en temps réel dans la Constellation ce qui permet à n’importe quel “contrôleur” de voir les logs de votre Arduino/ESP en temps réel.</p>
<p>Par exemple, en ouvrant la Console Constellation on pourra suivre votre Arduino/ESP en temps réel :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/08/image-37.png"><img class="colorbox-2342"  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/2016/08/image_thumb-26.png" alt="image" width="425" height="118" border="0" /></a></p>
<h3>Accès aux settings</h3>
<p>Tous les settings des packages de votre Constellation sont déclarés depuis <a href="/constellation-platform/constellation-server/fichier-de-configuration/#Les_parametres_de_configuration">le fichier de configuration</a> de votre Constellation. Vous pouvez aussi utiliser la <a href="/constellation-platform/constellation-console/gerer-packages-avec-la-console-constellation/#Editer_les_settings_dun_package">Console Constellation pour les administrer</a>.</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/08/image-68.png"><img class="colorbox-2342"  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/2016/08/image_thumb-57.png" alt="image" width="230" height="118" border="0" /></a> <a href="https://developer.myconstellation.io/wp-content/uploads/2016/08/image-69.png"><img class="colorbox-2342"  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/2016/08/image_thumb-58.png" alt="image" width="240" height="118" border="0" /></a></p>
<p align="left">Dans votre code Arduino, vous devez utiliser la méthode “getSettings” pour récupérer un objet JSON contenant les settings (clé/valeur).</p>
<p></p><pre class="crayon-plain-tag">JsonObject&amp; settings = constellation.getSettings();</pre><p></p>
<p align="left">Par exemple pour récupérer la valeur du setting “MonChiffre” déclarée sur le serveur à 42 :</p>
<p></p><pre class="crayon-plain-tag">JsonObject&amp; settings = constellation.getSettings();
static int monChiffre= settings["MonChiffre"].as&lt;int&gt;()</pre><p></p>
<p align="left">La variable “monChiffre” sera donc affectée à la valeur “42”. Dans l’exemple ci-dessus, la variable est statique pour pouvoir être utilisée n’importe où dans votre code.</p>
<p align="left">Pour les chaines de caractères vous pouvez utiliser la classe “String” :</p>
<p></p><pre class="crayon-plain-tag">JsonObject&amp; settings = constellation.getSettings();
static String strMaChaine = String(settings["MaChaine"].as&lt;char *&gt;());</pre><p></p>
<p>Encore une fois la variable est statique pour pouvoir l’utiliser n’importe où dans votre code.</p>
<p>Si vous devez convertir votre chaîne de caractères en <em>const char *</em>, vous pouvez utiliser la fonction <em>c_str()</em> :</p>
<p></p><pre class="crayon-plain-tag">const char* maChaine = strMaChaine.c_str();</pre><p></p>
<p>Vous pouvez également tester la présence d&rsquo;un setting avec la méthode « containsKey » :</p>
<p></p><pre class="crayon-plain-tag">if(settings.containsKey("MySetting")) {  
  // Do something with settings["MySetting"]  
}</pre><p></p>
<p>Par exemple vous pouvez gérer les valeurs par défaut. Imaginez un code où la valeur d&rsquo;un timeout est de 5 secondes par défaut mais vous vous laissez la possibilité de surcharger cette variable depuis les settings Constellation :</p>
<p></p><pre class="crayon-plain-tag">// Default value
int timeout = 5; // sec

setup() {
  // .....
  JsonObject&amp; settings = constellation.getSettings();
  if(settings.containsKey("Timeout")) {  
    timeout = settings["Timeout"].as&lt;int&gt;();
  }
}

void loop() {
   // DO something with 'timeout'
}</pre><p></p>
<p>Si le setting « Timeout » est défini dans les settings de votre package sur Constellation, la variable « timeout » sera affectée à votre valeur, autrement, si le setting n&rsquo;existe pas, la valeur de cette variable sera de 5.</p>
<h3>Publier des StateObjects</h3>
<p>Pour produire et publier un StateObject dans votre Constellation vous devez invoquer la méthode “pushStateObject” :</p>
<p></p><pre class="crayon-plain-tag">constellation.pushStateObject(name, value);</pre><p></p>
<p>Vous pouvez aussi passer le “type” de votre StateObject :</p>
<p></p><pre class="crayon-plain-tag">constellation.pushStateObject(name, value, type);</pre><p></p>
<p>Notez que pour les types simples (int,bool, long, float et double) le type est spécifié implicitement.</p>
<p>Par exemple, pour publier un StateObject dont la valeur est un chiffre :</p>
<p></p><pre class="crayon-plain-tag">constellation.pushStateObject("Temperature", 21);</pre><p></p>
<p>Vous pouvez aussi publier des StateObject avec un objet complexe en utilisant la fonction “stringFormat” pour formater votre valeur en JSON.</p>
<p>Par exemple pour publier un StateObject nommé “Lux” étant un objet contenant 3 propriétés :</p>
<p></p><pre class="crayon-plain-tag">constellation.pushStateObject("Lux", stringFormat("{ 'Lux':%d, 'Broadband':%d, 'IR':%d }", lux, full, ir));</pre><p></p>
<p>Vous pouvez également faire la même chose en construisant un “JsonObject” :</p>
<p></p><pre class="crayon-plain-tag">StaticJsonBuffer&lt;200&gt; jsonBuffer;
JsonObject&amp; root = jsonBuffer.createObject();

root["Lux"] = lux;
root["Broadband"] = full;
root["IR"] = ir;
constellation.pushStateObject("Lux", &amp;root);</pre><p></p>
<p>Une fois vos StateObjects publiés, ils sont accessibles en temps réel aux autres packages et consommateurs de votre Constellation. Vous pouvez également utiliser le “StateObject Explorer” de la Console Constellation pour explorer tous les StateObjects de votre Constellation :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/08/image-70.png"><img class="colorbox-2342"  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/2016/08/image_thumb-59.png" alt="image" width="240" height="181" border="0" /></a></p>
<h3>Next steps</h3>
<ul>
<li><a href="/client-api/arduino-esp-api/produire-des-stateobjects-depuis-arduino-esp/">Publier des StateObjects</a></li>
<li><a href="/client-api/arduino-esp-api/envoyer-des-messages-et-invoquer-des-messagecallbacks-depuis-arduino-esp/">Envoyer des messages</a></li>
<li><a href="/client-api/arduino-esp-api/recevoir-des-messages-et-exposer-des-methodes-messagecallback-sur-arduino-esp/">Recevoir des messages</a></li>
<li><a href="/client-api/arduino-esp-api/consommer-des-stateobjects-depuis-arduino-esp/">Consommer des StateObjects</a></li>
<li><a href="/client-api/arduino-esp-api/utiliser-lua-sur-nodemcu-pour-connecter-des-esp8266/">Connectez vos ESP8266 à Constellation en Lua avec NodeMCU</a></li>
</ul>
<p>The post <a rel="nofollow" href="https://developer.myconstellation.io/getting-started/connecter-un-arduino-ou-un-esp8266-constellation/">Connecter un Arduino ou un ESP8266 à Constellation</a> appeared first on <a rel="nofollow" href="https://developer.myconstellation.io">Constellation</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://developer.myconstellation.io/getting-started/connecter-un-arduino-ou-un-esp8266-constellation/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Créer des packages UI en Winform ou WPF</title>
		<link>https://developer.myconstellation.io/client-api/net-package-api/packages-ui-wpf-winform/</link>
					<comments>https://developer.myconstellation.io/client-api/net-package-api/packages-ui-wpf-winform/#respond</comments>
		
		<dc:creator><![CDATA[Sebastien Warin]]></dc:creator>
		<pubDate>Tue, 22 Mar 2016 16:12:30 +0000</pubDate>
				<category><![CDATA[.NET API]]></category>
		<category><![CDATA[Guide de démarrage]]></category>
		<category><![CDATA[StateObject]]></category>
		<category><![CDATA[Package]]></category>
		<category><![CDATA[MessageCallback]]></category>
		<category><![CDATA[StateObjectLink]]></category>
		<category><![CDATA[Sentinel UI]]></category>
		<category><![CDATA[WPF]]></category>
		<category><![CDATA[Winform]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[XAML]]></category>
		<guid isPermaLink="false">https://developer.myconstellation.io/?p=1563</guid>

					<description><![CDATA[<p>Vous pouvez créer des applications graphiques et les déployer sur vos sentinelles UI grâce à Constellation. Chaque package UI pourra invoquer ou exposer des MessageCallbacks, consommer ou produire des StateObjects, etc… Hello World WPF Dans Visual Studio, vous créez un</p>
<p>The post <a rel="nofollow" href="https://developer.myconstellation.io/client-api/net-package-api/packages-ui-wpf-winform/">Créer des packages UI en Winform ou WPF</a> appeared first on <a rel="nofollow" href="https://developer.myconstellation.io">Constellation</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Vous pouvez créer des applications graphiques et les déployer sur vos sentinelles UI grâce à Constellation.</p>
<p>Chaque package UI pourra <a href="/client-api/net-package-api/envoyer-des-messages-invoquer-des-messagecallbacks/">invoquer</a> ou <a href="/client-api/net-package-api/messagecallbacks/">exposer</a> des MessageCallbacks, <a href="/client-api/net-package-api/consommer-des-stateobjects/">consommer</a> ou <a href="/client-api/net-package-api/stateobjects/">produire</a> des StateObjects, etc…</p>
<p><span id="more-1563"></span></p>
<h3>Hello World WPF</h3>
<p>Dans Visual Studio, vous créez un package WPF :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image-153.png"><img class="colorbox-1563"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Création d'un package UI" src="https://developer.myconstellation.io/wp-content/uploads/2016/03/image_thumb-130.png" alt="Création d'un package UI" width="424" height="294" border="0" /></a></p>
<p align="left">Le template est une application WPF classique :</p>
<p align="left"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image-154.png"><img class="colorbox-1563"  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="Structure du package WPF" src="https://developer.myconstellation.io/wp-content/uploads/2016/03/image_thumb-131.png" alt="Structure du package WPF" width="244" height="204" border="0" /></a></p>
<p align="left">Le <em><a href="/client-api/net-package-api/les-bases-des-packages-net/#Fonctionnement_de_base">IPackage</a></em> de ce package est la classe “App” (App.xaml.cs). Ce package lance la fenêtre MainWindow au démarrage (méthode “OnStart”).</p>
<p align="left">La “MainWindow” est une Window WPF classique à l’exception que dans le constructeur, on enregistre automatiquement les <a href="/client-api/net-package-api/consommer-des-stateobjects/#StateObjectLink_et_Notifier_personnalises">[StateObjectLink]</a> et les <a href="/client-api/net-package-api/messagecallbacks/#Exposer_des_methodes">[MessageCallback]</a> de la classe. De plus on renvoie la description du package (dans le cas où vous avez ajoutez des MessageCallbacks).</p>
<p></p><pre class="crayon-plain-tag">public partial class MainWindow : Window
{
    public MainWindow()
    {
        PackageHost.RegisterStateObjectLinks(this);
        PackageHost.RegisterMessageCallbacks(this);
        PackageHost.DeclarePackageDescriptor();
        InitializeComponent();
    }

    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        this.Title = string.Format("IsRunning: {0} - IsConnected: {1} - IsStandAlone: {2}", PackageHost.IsRunning, PackageHost.IsConnected, PackageHost.IsStandAlone);
        PackageHost.WriteInfo("I'm running !");
    }
}</pre><p></p>
<p align="left">Au chargement de la fenêtre on logge un message dans Constellation et on affiche quelques propriété sur l’état du package dans le titre de cette fenêtre !</p>
<p align="left">Ajoutons un simple label “Hello World” au centre de notre fenêtre :</p>
<p></p><pre class="crayon-plain-tag">&lt;Label x:Name="label" Content="Hello World" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="48"/&gt;</pre><p></p>
<p align="left">Le code XAML sera donc:</p>
<p></p><pre class="crayon-plain-tag">&lt;Window x:Class="MonPackageWPF.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525" Loaded="Window_Loaded"&gt;
    &lt;Grid&gt;
        &lt;Label x:Name="label" Content="Hello World" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="48"/&gt;
    &lt;/Grid&gt;
&lt;/Window&gt;</pre><p></p>
<p align="left">Pour tester notre package en debug sans être connecté à Constellation : “F5”</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image-167.png"><img class="colorbox-1563"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Debug du package en local" src="https://developer.myconstellation.io/wp-content/uploads/2016/03/image_thumb-144.png" alt="Debug du package en local" width="424" height="344" border="0" /></a></p>
<p align="left">Vous noterez que les <a href="/client-api/net-package-api/les-bases-des-packages-net/#Ecrire_des_logs">WriteLog</a> Constellation sont toujours afficher dans la fenêtre de sortie de Visual Studio.</p>
<p align="left">Maintenant pour lançons le debug de notre package dans Visual Studio tout en le connectant à Constellation (raccourci Ctrl+Alt+F8)</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image-168.png"><img class="colorbox-1563"  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/2016/03/image_thumb-145.png" alt="image" width="424" height="102" border="0" /></a></p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image-169.png"><img class="colorbox-1563"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Debug du package dans Constellation" src="https://developer.myconstellation.io/wp-content/uploads/2016/03/image_thumb-146.png" alt="Debug du package dans Constellation" width="424" height="228" border="0" /></a></p>
<h3 align="left">Invoquer des MessageCallbacks</h3>
<p align="left">Vous pouvez <a href="/client-api/net-package-api/envoyer-des-messages-invoquer-des-messagecallbacks/">invoquer</a> ou <a href="/client-api/net-package-api/messagecallbacks/">exposer</a> des MessageCallbacks comme n’importe quel package connecté dans votre Constellation.</p>
<p align="left">Pour <a href="/client-api/net-package-api/messagecallbacks/">exposer</a> des MessageCallbacks (des méthodes NET), il suffit d’ajouter l’attribut [MessageCallback] sur vos méthodes.</p>
<p align="left">Pour <a href="/client-api/net-package-api/envoyer-des-messages-invoquer-des-messagecallbacks/">invoquer</a> des MessageCallbacks, il faut créer un scope et envoyer le message. Grace au proxy dynamique, vous pouvez invoquer un MessageCallback comme vous invoquerez une méthode .NET.</p>
<p align="left">Dans cet exemple nous allons invoquer des MessageCallbacks des packages WindowsControl et GoogleTraffic. Vous pouvez <a href="/getting-started/telecharger-et-deployer-des-packages-sur-vos-sentinelles/">suivre le guide ici</a> pour déployer ces deux packages.</p>
<p align="left">En vous rendant sur la page “MessageCallbacks Explorer” de la Console, vous pouvez explorer les MC exposés par les packages.</p>
<p align="left">Par exemple, le package WindowsControl expose plusieurs MessageCallbacks pour arrêter, redémarrer, mettre en veille ou verrouiller l’ordinateur (= la sentinelle) sur lequel le package est déployé.</p>
<p align="left">Le package GoogleTraffic expose un MessageCallback “GetRoute” pour calculer le temps de route en spécifiant un point de départ et d’arrivée. Ce MessageCallback  est une saga pour vous retourner la réponse.</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image-191.png"><img class="colorbox-1563"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="MessageCallbacks Explorer" src="https://developer.myconstellation.io/wp-content/uploads/2016/03/image_thumb-168.png" alt="MessageCallbacks Explorer" width="424" height="237" border="0" /></a></p>
<p align="left">Pour simplifier le développement et éviter de travailler avec des types dynamiques, nous allons auto-générer le code.</p>
<p align="left">Cliquez sur le bouton “Generate Code” :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image-185.png"><img class="colorbox-1563"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Génération de code" src="https://developer.myconstellation.io/wp-content/uploads/2016/03/image_thumb-162.png" alt="Génération de code" width="424" height="67" border="0" /></a></p>
<p align="left">Sélectionnez votre Constellation, cliquez sur “Discover” et sélectionnez les packages que vous souhaitez ajouter dans le code généré puis cliquez sur “Generate” :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image-186.png"><img class="colorbox-1563"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Génération de code" src="https://developer.myconstellation.io/wp-content/uploads/2016/03/image_thumb-163.png" alt="Génération de code" width="424" height="474" border="0" /></a></p>
<p align="left">Editez le code de la MainWindow (<em>MainWindow.xaml.cs</em>) pour ajouter le code généré des MessageCallbacks pour les packages GoogleTraffic et WindowsControl :</p>
<p></p><pre class="crayon-plain-tag">using MonPackageWPF.GoogleTraffic.MessageCallbacks;
using MonPackageWPF.WindowsControl.MessageCallbacks;</pre><p></p>
<p align="left">Dans la vue XAML, ajoutons deux boutons : l’un pour mettre en veille et l’autre pour faire un test d’itinéraire :</p>
<p></p><pre class="crayon-plain-tag">&lt;Button x:Name="btSleep" Content="Sleep !" HorizontalAlignment="Left" VerticalAlignment="Bottom" Margin="10" Width="75" Click="btSleep_Click"/&gt;
&lt;Button x:Name="btTestRoute" Content="Test Route" HorizontalAlignment="Center" VerticalAlignment="Bottom" Margin="10,0,0,10" Width="75" Click="btTestRoute_Click" /&gt;</pre><p></p>
<p align="left">Pour le premier bouton, nous allons sélectionner l’instance du package “WindowsControl” sur la sentinelle “PO_SEB” pour créer un scope afin d’invoquer le MessageCallback “Sleep” :</p>
<p></p><pre class="crayon-plain-tag">private void btSleep_Click(object sender, RoutedEventArgs e)
{
    MyConstellation.PackageInstances.PO_SEB_WindowsControl.CreateWindowsControlScope().Sleep();
}</pre><p></p>
<p align="left">Prenez garde à créer un scope sur une instance (sentinelle + package) car sinon, si vous créez un scope sur le package “WindowsControl”, toutes les sentinelles hébergeant ce package se mettront en veille !</p>
<p align="left">Pour le deuxième bouton, nous allons demander les différentes routes pour un “Lille-Paris”. Comme il s’agit d’une saga (message avec réponse) nous allons l’invoquer en “async/await” et afficher dans le label la meilleure route :</p>
<p></p><pre class="crayon-plain-tag">private async void btTestRoute_Click(object sender, RoutedEventArgs e)
{
    label.Content = "Calcul en cours ...";
    var route = await MyConstellation.Packages.GoogleTraffic.CreateGoogleTrafficScope().GetRoutes("lille", "paris");
    var bestRoute = route.OrderBy(r =&gt; r.TimeWithTraffic).FirstOrDefault();
    label.Content = $"{bestRoute.Name}\nDistance:{bestRoute.DistanceInKm}km\nTemps : {bestRoute.TimeWithTraffic}";
}</pre><p></p>
<p align="left">Lancer le debug dans Constellation : <img class="colorbox-1563"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Debug On Constellation" src="https://developer.myconstellation.io/wp-content/uploads/2016/03/image-196.png" alt="Debug On Constellation" width="104" height="34" border="0" />  (ou Ctrl+Alt+F8).</p>
<p align="left">Premier test, en cliquant sur Sleep, vous allez envoyer un message pour invoquer le MessageCallback “Sleep” du package “WindowsControl” sur la sentinelle ici nommée “PO-SEB”. Ainsi le Windows “PO-SEB” se mettra instantanément en veille !</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image-193.png"><img class="colorbox-1563"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Test du MC &quot;Sleep&quot;" src="https://developer.myconstellation.io/wp-content/uploads/2016/03/image_thumb-170.png" alt="Test du MC &quot;Sleep&quot;" width="244" height="165" border="0" /></a></p>
<p align="left">Deuxième test, pour invoquer le MessageCallback “GetRoutes” du package GoogleTraffic :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image-194.png"><img class="colorbox-1563"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Test du MC &quot;GetRoutes&quot; en Async" src="https://developer.myconstellation.io/wp-content/uploads/2016/03/image_thumb-171.png" alt="Test du MC &quot;GetRoutes&quot; en Async" width="244" height="165" border="0" /></a><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image-195.png"><img class="colorbox-1563"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Réponse à la saga &quot;GetRoutes&quot;" src="https://developer.myconstellation.io/wp-content/uploads/2016/03/image_thumb-172.png" alt="Réponse à la saga &quot;GetRoutes&quot;" width="244" height="165" border="0" /></a></p>
<h3 align="left">Consommer des StateObjects dans votre vue XAML</h3>
<p align="left">Assurez-vous d’avoir dans votre Constellation au moins un package “HWMonitor” déployé sur une sentinelle. Au besoin, vous pouvez <a href="/getting-started/telecharger-et-deployer-des-packages-sur-vos-sentinelles/">suivre ce guide ici</a>.</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image-197.png"><img class="colorbox-1563"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="HWMonitor" src="https://developer.myconstellation.io/wp-content/uploads/2016/03/image_thumb-173.png" alt="HWMonitor" width="424" height="223" border="0" /></a></p>
<p align="left">Pour comprendre en détail, la <a href="/client-api/net-package-api/consommer-des-stateobjects/">consommation des StateObjects</a> dans vos packages n’hésitez pas à relire <a href="/client-api/net-package-api/consommer-des-stateobjects/">cet article</a>.</p>
<p align="left">Par exemple, pour afficher en temps réel la consommation CPU (StateObject nommé “/intelcpu/0/load/0”) mesurée par le package HWMonitor sur sa sentinelle (ici “PO-SEB”), ajoutons un StateObjectLink :</p>
<p></p><pre class="crayon-plain-tag">[StateObjectLink("PO-SEB", "HWMonitor", "/intelcpu/0/load/0")]
public StateObjectNotifier CPU { get; set; }</pre><p></p>
<p align="left">Vous pouvez également générer du code en sélectionnant le package HWMonitor. Vous pourrez ensuite ajouter un “using” vers les StateObjects de ce package :</p>
<p></p><pre class="crayon-plain-tag">using MonPackageWPF.HWMonitor.StateObjects;</pre><p></p>
<p align="left">Cela vous permettra d’utiliser un le “HWMonitorStateObjectLink” avec des énumérations générées pour vos sentinelles et nom de StateObjects :</p>
<p></p><pre class="crayon-plain-tag">[HWMonitorStateObjectLink(MyConstellation.Sentinels.PO_SEB, HWMonitorStateObjectNames._intelcpu_0_load_0)]
public StateObjectNotifier CPU { get; set; }</pre><p></p>
<p align="left">Comme vous le savez, le StateObjectNotifier implémente l’interface INotifyPropertyChanged. Vous pouvez donc lier cette propriété dans votre vue XAML pour voir votre StateObject en temps réel sur votre interface.</p>
<p align="left">Nous allons modifier le label “Hello World” pour afficher en temps réel votre consommation CPU. Pour cela changeons le contenu (Content) du label avec la propriété “Value” du StateObject publié par le package HWMonitor.</p>
<p align="left">Cette propriété contient la valeur (ici de l’utilisation du CPU) avec un nombre décimal. Nous ajoutons également l’attribut “ContentStringFormat” pour n’afficher que 2 chiffres après la virgule.</p>
<p></p><pre class="crayon-plain-tag">&lt;Label x:Name="label" Content="{Binding Path=CPU.DynamicValue.Value}" ContentStringFormat="{}{0:N2}%" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="48"/&gt;</pre><p></p>
<p align="left">Pour pourvoir utiliser des propriétés .NET comme binding dans votre vue XAML, vous devez spécifier le DataContext de votre fenêtre vers votre classe MainWindow soit via le code (<em>this.DataContent = this</em>) ou soit directement dans votre vue XAML en ajoutant cette attribut sur l’élément Window :</p>
<p></p><pre class="crayon-plain-tag">DataContext="{Binding RelativeSource={RelativeSource Self}}"</pre><p></p>
<p align="left">Résultat, vous pouvez suivre en temps réel le CPU ici de la machine “PO-SEB” :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image-200.png"><img class="colorbox-1563"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Binding au CPU du package HWMonitor" src="https://developer.myconstellation.io/wp-content/uploads/2016/03/image_thumb-176.png" alt="Binding au CPU du package HWMonitor" width="424" height="284" border="0" /></a></p>
<p align="left">Allons un peu plus loin en ajoutons dans notre code C#, un nouveau StateObjectLink :</p>
<p></p><pre class="crayon-plain-tag">[HWMonitorStateObjectLink(HWMonitorStateObjectNames._intelcpu_0_load_0)]
public StateObjectCollectionNotifier CPUs { get; set; }</pre><p></p>
<p align="left">Ce “lien” ne précise que le nom du StateObject (ici “/intelcpu/0/load/0”) et le package (HWMonitorStateObjectLink est la classe générée qui spécifie implicitement le package à “HWMonitor).</p>
<p align="left">De ce fait, toutes les consommations CPU mesurées par les instances du package HWMonitor seront captées par ce “link” ! On utilisera donc un StateObject<strong>Collection</strong>Notifier car on aura autant de StateObjects qu’on a d’instance de ce package.</p>
<p align="left">Dans la vue XAML, ajoutons un menu déroulant (combobox) pour afficher le nom des sentinelles (= le nom des machines) des StateObjects de votre collection “CPUs” :</p>
<p></p><pre class="crayon-plain-tag">&lt;ComboBox x:Name="comboBox" ItemsSource="{Binding Path=CPUs}" DisplayMemberPath="Value.SentinelName" HorizontalAlignment="Left" Margin="10" VerticalAlignment="Top" /&gt;</pre><p></p>
<p align="left">Enfin, modifions une nouvelle fois notre label. Cette fois ci la valeur à afficher n’est pas celle du StateObject “CPU”, mais celle du StateObject sélectionné par la combobox :</p>
<p></p><pre class="crayon-plain-tag">&lt;Label x:Name="label" Content="{Binding ElementName=comboBox, Path=SelectedItem.DynamicValue.Value}" ContentStringFormat="{}{0:N2}%" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="48"/&gt;</pre><p></p>
<p align="left">On obtient donc la possibilité de suivre la consommation de chaque machine (= sentinelle) où le package HWMonitor est déployé :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image-201.png"><img class="colorbox-1563"  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/2016/03/image_thumb-177.png" alt="image" width="424" height="286" border="0" /></a></p>
<p align="left">Pour terminer on pourrait également ajouter un StateObjectLink qui contiendrait TOUS les StateObjects produits par les packages HWMonitor, peut importe le nom du StateObject et la sentinelle :</p>
<p></p><pre class="crayon-plain-tag">[HWMonitorStateObjectLink]
public StateObjectCollectionNotifier HWMonitor { get; set; }</pre><p></p>
<p align="left">Pour afficher toutes ces données, on peut utiliser un DataGrid lié à votre collection de StateObject “HWMonitor” :</p>
<p></p><pre class="crayon-plain-tag">&lt;DataGrid ItemsSource="{Binding HWMonitor}"&gt;&lt;/DataGrid&gt;</pre><p></p>
<p align="left">On obtiendrait une vue avec deux colonnes, la propriété DynamicValue et Value des StateObjectNotifier :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image-198.png"><img class="colorbox-1563"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="DataGrid sur une collection de StateObjectNotifier" src="https://developer.myconstellation.io/wp-content/uploads/2016/03/image_thumb-174.png" alt="DataGrid sur une collection de StateObjectNotifier" width="424" height="426" border="0" /></a></p>
<p align="left">Pour rendre cela plus visuelle, définissions explicitement des colonnes avec le nom de la sentinelle, le nom du StateObject, la propriété “Name” de la valeur du StateObject  (le nom du compteur), la “Value” et l’unité de la mesure (Unit).</p>
<p align="left">En XAML cela se traduit par le code suivant :</p>
<p></p><pre class="crayon-plain-tag">&lt;DataGrid ItemsSource="{Binding HWMonitor}" AutoGenerateColumns="False" Margin="0, 0, 0, 40"&gt;
    &lt;DataGrid.Columns&gt;
        &lt;DataGridTextColumn Header="Sentinel" Binding="{Binding Path=Value.SentinelName}"&gt;&lt;/DataGridTextColumn&gt;
        &lt;DataGridTextColumn Header="StateObject name" Binding="{Binding Path=Value.Name}"&gt;&lt;/DataGridTextColumn&gt;
        &lt;DataGridTextColumn Header="Counter name" Binding="{Binding Path=DynamicValue.Name}"&gt;&lt;/DataGridTextColumn&gt;
        &lt;DataGridTextColumn Header="Value" Binding="{Binding Path=DynamicValue.Value}"&gt;&lt;/DataGridTextColumn&gt;
        &lt;DataGridTextColumn Header="Unit" Binding="{Binding Path=DynamicValue.Unit}"&gt;&lt;/DataGridTextColumn&gt;
    &lt;/DataGrid.Columns&gt;
&lt;/DataGrid&gt;</pre><p></p>
<p align="left">Le résultat :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image-202.png"><img class="colorbox-1563"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="StateObjects des packages HWMonitor" src="https://developer.myconstellation.io/wp-content/uploads/2016/03/image_thumb-178.png" alt="StateObjects des packages HWMonitor" width="424" height="615" border="0" /></a></p>
<p align="left">Prenez garde car les StateObjects sont mis à jour dans le StateObjectsCollectionNotifier par des threads différents. Vous risquez donc d’avoir des exceptions du type “<em>An ItemsControl is inconsistent with its items source</em>”. Afin d’éviter ce genre d’erreur, utilisez la  méthode “<em>BindingOperations.EnableCollectionSynchronization</em>”.</p>
<p align="left">Pour cela, dans votre classe, ajoutez un objet de synchronisation :</p>
<p></p><pre class="crayon-plain-tag">private static object _syncLock = new object();</pre><p></p>
<p align="left">Puis dans le constructeur de votre fenêtre, après le <em>InitializeComponent()</em>, activez la synchronisation de la collection sur votre StateObjectCollectionNotifier (ici nommé ‘HWMonitor’) :</p>
<p></p><pre class="crayon-plain-tag">BindingOperations.EnableCollectionSynchronization(HWMonitor, _syncLock);</pre><p></p>
<p align="left">Si lancez votre package dans une Constellation avec plusieurs instances du packages HWMonitor sur vos différentes sentinelles, vous aurez une vision temps réel de l’ensemble de vos machines Windows avec seulement ces quelques lignes de XAML et Constellation :</p>
<p align="left"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image-203.png"><img class="colorbox-1563"  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: 0px;" title="StateObjects des packages HWMonitor" src="https://developer.myconstellation.io/wp-content/uploads/2016/03/image_thumb-179.png" alt="StateObjects des packages HWMonitor" width="424" height="580" border="0" /></a></p>
<h3 align="left">Déployez votre package UI</h3>
<h4 align="left">Publier le package</h4>
<p align="left">Le sujet a été traité dans <a href="/getting-started/creez-votre-premier-package-constellation-en-csharp/#Publier_son_package_dans_Constellation">le guide de démarrage,</a> il suffit de cliquer-droit sur votre projet et sélectionner dans le menu Constellation “Publish On Constellation” ou directement depuis la toolbar :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image-170.png"><img class="colorbox-1563"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Publication du package" src="https://developer.myconstellation.io/wp-content/uploads/2016/03/image_thumb-147.png" alt="Publication du package" width="424" height="97" border="0" /></a></p>
<p align="left">Vous pourrez alors choisir le type de publication (Local ou Upload sur le serveur Constellation) :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image-157.png"><img class="colorbox-1563"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Publication du package" src="https://developer.myconstellation.io/wp-content/uploads/2016/03/image_thumb-134.png" alt="Publication du package" width="424" height="212" border="0" /></a></p>
<h4 align="left">Déployer le package sur une sentinelle UI</h4>
<p align="left">Vous devez impérativement déployer un package “UI” sur une sentinelle UI. Si vous tentez d’ajouter un package UI sur une sentinelle service, le package démarrera mais aucune fenêtre ne pourra être visible (le service ne peut pas interagir avec le bureau Windows).</p>
<p align="left">Les sentinelles UI ont le suffixe “_UI” dans leurs noms. Ici pour cette Constellation, il y a deux sentinelles connectées, l’une de type “Service” et l’autre “UI”, toutes deux sur la même machine (nommé “PO-SEB”).</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image-171.png"><img class="colorbox-1563"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Sentinelles connectées" src="https://developer.myconstellation.io/wp-content/uploads/2016/03/image_thumb-148.png" alt="Sentinelles connectées" width="424" height="263" border="0" /></a></p>
<p align="left">Pour ajouter notre package à la sentinelle UI, vous pouvez éditer la configuration de vos Constellation directement depuis Visual Studio :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image-172.png"><img class="colorbox-1563"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Ajout du package depuis Visual Studio" src="https://developer.myconstellation.io/wp-content/uploads/2016/03/image_thumb-149.png" alt="Ajout du package depuis Visual Studio" width="424" height="232" border="0" /></a></p>
<p align="left">Ou bien depuis la Console Constellation :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image-173.png"><img class="colorbox-1563"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Ajout du package dans une sentinelle UI" src="https://developer.myconstellation.io/wp-content/uploads/2016/03/image_thumb-150.png" alt="Ajout du package dans une sentinelle UI" width="424" height="263" border="0" /></a></p>
<p align="left">Pour déployer la configuration, cliquez sur le bouton “Save &amp; Deploy” depuis la Console, ou directement sur la page des “Packages” cliquez sur “Reload &amp; Deploy”.</p>
<p align="left">Votre package UI sera démarré et vous pourrez le contrôler depuis la Console comme pour les autres packages.</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image-174.png"><img class="colorbox-1563"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="Contrôle du package UI sur la Console" src="https://developer.myconstellation.io/wp-content/uploads/2016/03/image_thumb-151.png" alt="Contrôle du package UI sur la Console" width="424" height="263" border="0" /></a></p>
<h4 align="left">Démarrer son package “manuellement”</h4>
<p align="left">Si vous créez une application à destination d’une borne d’affichage, comme un miroir, le package est démarré automatiquement par la sentinelle (comportement par défaut) et est relancé si le package plante !</p>
<p align="left">Cependant, si votre package est destiné à être utilisé par un utilisateur comme une application Windows classique vous voudriez certainement ne pas la lancer automatiquement au démarrage de la sentinelle. Au contraire vous voudriez que ce soit l’utilisateur qui décide de la lancer en lançant un raccourci Windows par exemple sans devoir se connecter sur la Console de votre Constellation.</p>
<p align="left">Pour cela vous pouvez lancer la sentinelle en passant un ordre en paramètre :</p>
<p></p><pre class="crayon-plain-tag">Constellation.Sentinel.UI.exe &lt;action&gt; &lt;package&gt;</pre><p></p>
<p align="left">Les actions peuvent être :</p>
<ul>
<li>
<div align="left">Start</div>
</li>
<li>
<div align="left">Stop</div>
</li>
<li>
<div align="left">Restart</div>
</li>
<li>
<div align="left">Reload</div>
</li>
</ul>
<p align="left">Par exemple, créons un raccourci sur le bureau vers :</p>
<p></p><pre class="crayon-plain-tag">Constellation.Sentinel.UI.exe Reload MonPackageWPF</pre><p></p>
<p align="left">Ainsi dès que vous double-cliquerez sur ce raccourci, la sentinelle téléchargera la dernière version du package sur le serveur et lancera votre package (Reload) :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image-175.png"><img class="colorbox-1563"  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/2016/03/image_thumb-152.png" alt="image" width="424" height="322" border="0" /></a></p>
<p align="left">Bien entendu, l’état du package sera automatiquement synchronisé dans la Constellation. Vous pourrez donc contrôler l’état du package depuis la Console par exemple.</p>
<p align="left">Par défaut, une sentinelle démarre tous les packages qui lui sont assignés. Si c’est un package destiné à être lancé manuellement par l’utilisateur, vous voudriez peut être ne pas lancer automatiquement le package. Vous pouvez donc définir l’attribut “autoStart” à false au niveau de la configuration de votre package.</p>
<p align="left">Aussi l’ordre d’arrêt d’un package doit provenir du hub de contrôle de Constellation, qui se chargera de communiquer l’ordre au package lui même (de s’arrêter) et à sa sentinelle (de tuer le package si il ne s’est pas arrêté dans le temps imparti).</p>
<p align="left">Seulement, dans un package UI de ce type, c’est à dire “application Windows classique”, l’utilisateur fermera naturellement l’application en cliquant sur la croix rouge en haut à droite !</p>
<p align="left">La sentinelle détectera la mort du processus du package alors qu’elle n’a pas eu l’ordre de Constellation d’arrêter le package ! Du point de vue de la sentinelle, c’est un arrêt brutal !</p>
<p align="left">Elle appliquera donc les options de récupération qui par défaut redémarre un package 30 secondes après un arrêt brutal :</p>
<p align="left"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image-176.png"><img class="colorbox-1563"  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="RecoveryOption par défaut" src="https://developer.myconstellation.io/wp-content/uploads/2016/03/image_thumb-153.png" alt="RecoveryOption par défaut" width="424" height="46" border="0" /></a></p>
<p align="left">Les options par défaut sont définis dans la configuration de la Constellation :</p>
<p align="center"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image-177.png"><img class="colorbox-1563"  loading="lazy" style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-width: 0px;" title="RecoveryOption par défaut" src="https://developer.myconstellation.io/wp-content/uploads/2016/03/image_thumb-154.png" alt="RecoveryOption par défaut" width="424" height="137" border="0" /></a></p>
<p align="left">Dans notre cas, nous allons redéfinir ces options de récupération au niveau du package lui même pour ne pas redémarrer un package suite à un arrêt forcé et ne pas démarrer automatiquement notre package au démarrage. La configuration du package sera :</p>
<p align="left"><a href="https://developer.myconstellation.io/wp-content/uploads/2016/03/image-178.png"><img class="colorbox-1563"  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="Configuration d'un package UI" src="https://developer.myconstellation.io/wp-content/uploads/2016/03/image_thumb-155.png" alt="Configuration d'un package UI" width="424" height="134" border="0" /></a></p>
<p>The post <a rel="nofollow" href="https://developer.myconstellation.io/client-api/net-package-api/packages-ui-wpf-winform/">Créer des packages UI en Winform ou WPF</a> appeared first on <a rel="nofollow" href="https://developer.myconstellation.io">Constellation</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://developer.myconstellation.io/client-api/net-package-api/packages-ui-wpf-winform/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 06:07:10 by W3 Total Cache
-->