Constellation https://developer.myconstellation.io/ Votre plateforme d'interconnexion Mon, 24 Feb 2020 08:34:58 +0000 fr-FR hourly 1 https://wordpress.org/?v=6.0.9 https://developer.myconstellation.io/wp-content/uploads/2016/02/256x256-e1457476015859.png Constellation https://developer.myconstellation.io/ 32 32 Vorwerk : connectez votre robot aspirateur Kobold ou Neato dans Constellation https://developer.myconstellation.io/package-library/vorwerk/ https://developer.myconstellation.io/package-library/vorwerk/#respond Sun, 23 Feb 2020 14:41:07 +0000 https://developer.myconstellation.io/miscellaneous/vorwerk/ Le package Vorwerk vous permet connecter votre robot aspirateur Kobold VR200 ou VR300 dans Constellation.
L'API utilisée par Vorwerk est la même que celle des Neato Botvac, vous pouvez donc également connecter vos robots Botvac.

The post Vorwerk : connectez votre robot aspirateur Kobold ou Neato dans Constellation appeared first on Constellation.

]]>
Le package Vorwerk vous permet connecter votre robot aspirateur Kobold VR200 ou VR300 dans Constellation.

L’API utilisée par Vorwerk est la même que celle des Neato Botvac, vous pouvez donc également connecter vos robots Botvac.

Installation

Depuis le "Online Package Repository" de votre Console Constellation, installez et déployez le package sur la sentinelle de votre choix (compatible Windows et Linux).

Sur la page de Settings, vous devez obligatoirement définir vos identifiants de connexion au Cloud Vorwerk ou Neato.

Vous pouvez également déployer ce package manuellement dans la configuration de votre Constellation :

<package name="Vorwerk">
  <settings>
    <setting key="Username" value="xxxx@yyyyy.com" />
    <setting key="Password" value="xxxxxxx" />
    <setting key="Vendor" value="Vorwerk" />
  </settings>
</package>

Settings

Nom Type Requis ? Description du Setting
Username String OUI Nom d’utilisateur Vorwerk/Neato
Password String OUI Mot de passe Vorwerk/Neato
Vendor String NON Marque du robot : "Vorwerk" ou "Neato" (par défaut Vorwerk)
RobotPollingInterval Int NON Interval en seconde d’interrogation du robot (par défaut 10 sec)
DashboardPollingInterval Int NON Interval en seconde d’interrogation du "dashboard" (par défaut 900 sec soit 15 min)

StateObjects

Vous retrouverez un StateObject "Dashboard" qui contient les informations sur le compte utilisé ainsi que la liste des robots attachés et un StateObject par robot (le nom du StateObject est le nom du robot) qui contient les informations sur l’état du robot.

Nom Type Description
Dashboard Vorwerk.Models.Dashboard Information sur le compte et robots attachés
<< nom du robot >> Vorwerk.Models.RobotState Information sur l’état du robot

MessageCallbacks

Le package expose 2 MessageCallbacks :

Signature Réponse (saga) Description
StartCleaning(string robotName, bool ecoMode = true) RobotState Démarre un néttoyage
StartSpotCleaning(string robotName, bool ecoMode = true, int height = 200, int width = 200, bool repeat = false) RobotState Démarre un néttoyage d’une zone
StopCleaning(string robotName) RobotState Arrete le néttoyage
PauseCleaning(string robotName) RobotState Pause le néttoyage
ResumeCleaning(string robotName) RobotState Résume le néttoyage
SendToBase(string robotName) RobotState Démarre un néttoyage

Quelques exemples

  • Lancer le néttoyage en journée lorsque l’alarme est armée
  • Contrôler le robot depuis vos Dashboards HTML ou WPF

Ressources

Quelques ressources pour le developpement du package :

The post Vorwerk : connectez votre robot aspirateur Kobold ou Neato dans Constellation appeared first on Constellation.

]]>
https://developer.myconstellation.io/package-library/vorwerk/feed/ 0
Constellation SDK 1.8.6 : extension asynchrone et fin du support pour Visual Studio 2012 et 2013 https://developer.myconstellation.io/blog/constellation-sdk-1-8-6/ https://developer.myconstellation.io/blog/constellation-sdk-1-8-6/#comments Thu, 13 Jun 2019 13:58:01 +0000 https://developer.myconstellation.io/?p=6330 Peu de temps après la version 1.8.5 annonçant le support de Visual Studio 2019, le SDK sort une nouvelle mise à jour, la version 1.8.6. Extension Visual Studio « Asynchrone » La grande nouveauté de cette mise à jour est la réécriture

The post Constellation SDK 1.8.6 : extension asynchrone et fin du support pour Visual Studio 2012 et 2013 appeared first on Constellation.

]]>
Peu de temps après la version 1.8.5 annonçant le support de Visual Studio 2019, le SDK sort une nouvelle mise à jour, la version 1.8.6.

Extension Visual Studio « Asynchrone »

La grande nouveauté de cette mise à jour est la réécriture du « package » Visual Studio en « package asynchrone ».

La notion d’extension (ou package) « asynchrone » a été introduite depuis la version 2015 de Visual Studio (14.0) afin de charger les extensions non plus au démarrage de VS de manière séquentielle mais de façon asynchrone, sans bloquer ou ralentir le démarrage de l’IDE.

L’extension Visual Studio du SDK Constellation a un temps d’initialisation extrêmement rapide et est restée depuis sa première version en Mars 2015 un package « classique » et non asynchrone.

Seulement depuis les dernières versions de Visual Studio, les extensions « non-asynchrones » sont désormais considérées comme obsolètes et sont/seront automatiquement désactivées dans l’IDE :

C’est pourquoi la roadmap concernant le SDK a été accéléré afin de porter le SDK dans une extension de type « asynchrone ».

Le SDK n’est donc plus initialisé au démarrage de Visual Studio, mais en tache de fond afin de se conformer aux nouvelles exigences en matière de performance et UX de l’IDE de Microsoft.

Fin du support pour Visual Studio 2012 et 2013

La migration vers cette notion de « package asynchrone » (introduite depuis VS2015) met de côté Visual Studio 2012 et Visual Studio 2013.

Comme le support officiel de Microsoft pour ces deux versions de l’IDE a déjà pris fin, le SDK Constellation ne supportera plus non plus ces deux versions.

Ainsi, à compter de cette version du SDK 1.8.6, nous supportons officiellement Visual Studio 2015 (14.x), VIsual Studio 2017 (15.x) et  le nouveau Visual Studio 2019 (16.x)

Pour installer ou mettre à jour votre SDK, rien de plus simple, lancez simplement le Web Platform Installer et sélectionnez “Constellation SDK” dans la liste des composants à installer/mettre à jour.

Constellation Web Platform Installer
Constellation Web Platform Installer » Article
Constellation-Web-Platform-Installer-1.9.735.exe
Version: 1.9.735
1.2 MiB
2008 Downloads
Détails

The post Constellation SDK 1.8.6 : extension asynchrone et fin du support pour Visual Studio 2012 et 2013 appeared first on Constellation.

]]>
https://developer.myconstellation.io/blog/constellation-sdk-1-8-6/feed/ 1
Mise à jour de la Console 1.8.5 https://developer.myconstellation.io/blog/mise-jour-de-la-console-1-8-5/ https://developer.myconstellation.io/blog/mise-jour-de-la-console-1-8-5/#respond Thu, 13 Jun 2019 13:17:55 +0000 https://developer.myconstellation.io/?p=6317 La Console Constellation a suivi plusieurs mises à jour sur le canal “Beta” depuis le début de l’année avant d’être promue en version 1.8.5 officiellement sur le canal Stable. Cet article vous présente les nouveautés de cette mise à jour.

The post Mise à jour de la Console 1.8.5 appeared first on Constellation.

]]>
La Console Constellation a suivi plusieurs mises à jour sur le canal “Beta” depuis le début de l’année avant d’être promue en version 1.8.5 officiellement sur le canal Stable. Cet article vous présente les nouveautés de cette mise à jour.

Amélioration des performances

Le fait le plus marquant de cette version 1.8.5 est l’amélioration des performances notamment en ce qui concerne les explorateurs de StateObject et MessageCallbacks.

Explorers

Là où une Constellation avec des milliers de SO/MC pouvait avoir du mal à être explorée depuis la Console, la réécriture du modèle de “binding” sur ces pages permette maintenant une navigation fluide.

Support de la recherche

Le “Configuration Editor” permettant d’éditer directement la configuration de votre Constellation se dote de différentes fonctions facilitant l’édition comme la Recherche, le remplacement ou encore le “aller à la ligne” :

Support de la recherche

Pour vous aider avec les différentes fonctions et raccourcis ajoutés, un écran d’aide a été ajouté :

Raccourcis clavier

Support des types Nullable<T>

Jusqu’à présent les paramètres de MessageCallback ou propriété d’objet de type “Nullable<T>” n’étaient pas pris en compte dans le “MessageCallback Explorer”. C’est désormais le cas avec la version 1.8.5 ce qui vous permettra de tester vos MC avec des types Nullable.

Support des types Nullable

Aussi les valeurs par défaut pour les champs “Bool” ou “Enum” sont également supportés.

Des petits détails

En vrac :

  • Il est désormais possible de copier dans le presse-papier (Ctrl+C) la sortie de la Console Log

image

  • Il y a une demande de confirmation à chaque fermeture de modale si des changements sont en attente d’enregistrement

Confirmation

  • L’expérience sur mobile est améliorée
  • Mise à niveau des librairies utilisées par la Console Constellation (jQuery 3.4.1, AngularJS 1.7.8, SignalR 2.4.1, jQueryTerminal 2.6.1, UI Bootstrap 2.5, CodeMirror 5.47)

Comme d’habitude, relancez le “Web Platform Installer” sur Windows ou Linux pour mettre à jour votre Console.

The post Mise à jour de la Console 1.8.5 appeared first on Constellation.

]]>
https://developer.myconstellation.io/blog/mise-jour-de-la-console-1-8-5/feed/ 0
TPLinkSmartHome : Prises et autres périphériques connectés https://developer.myconstellation.io/package-library/tplinksmarthome/ https://developer.myconstellation.io/package-library/tplinksmarthome/#respond Wed, 29 May 2019 13:21:06 +0000 https://developer.myconstellation.io/miscellaneous/tplinksmarthome/ Le package TPLinkSmartHome vous permet de contrôler et monitorer les périphériques TPLink Smart Home (kasa smarthome).
ATTENTION, pour le moment seules les prises HS100 et HS110 sont prises en charge par ce package.

The post TPLinkSmartHome : Prises et autres périphériques connectés appeared first on Constellation.

]]>
Le package TPLinkSmartHome vous permet de contrôler et monitorer les périphériques TPLink Smart Home (kasa smarthome).
ATTENTION, pour le moment seules les prises HS100 et HS110 sont prises en charge par ce package.

Installation

Depuis le “Online Package Repository” de votre Console Constellation, installez et déployez le package sur la sentinelle de votre choix (compatible Windows et Linux).

Sur la page de Settings, vous devez obligatoirement définir un ou plusieurs périphériques.

Par exemple :

[{
        "HostName": "192.168.0.123",
        "Type": "PlugWithEnergyMeter"
        }, {
        "HostName": "192.168.0.234",
        "Type": "Plug"
    }]

Vous pouvez également déployer ce package manuellement dans la configuration de votre Constellation :

<package name="TPLinkSmartHome">
    <settings>
        <setting key="poolingInterval" value="2000" />
        <setting key="devices">
            <content>[{
            "HostName": "192.168.0.123",
            "Type": "PlugWithEnergyMeter"
        }, {
            "HostName": "192.168.0.234",
            "Type": "PlugWithEnergyMeter"
        }]</content>
        </setting>
    </settings>
</package>

Settings

Nom Type Requis ? Description du Setting
devices JsonObject OUI liste de périphériques
poolingInterval int NON interval en millisecondes entre deux récupération de l’état des périphériques (défaut : 2000ms)

StateObjects

Vous retrouverez 1 StateObject publié par périphérique par le package :

Nom Type Description
TPLink-##Hostname## JsonObject les informations d’un périphérique

MessageCallbacks

Le package expose 3 MessageCallbacks :

Signature Réponse (saga) Description
GetDailyStat(string hostname, int? year = null, int? month = null) JsonObject Les statistiques d’utilisation quotidiennes pour une année et un mois donné (Pour les prises HS110 uniquement)
GetMonthStat(string hostname, int? year = null) JsonObject Les statistiques d’utilisation mensuelles pour une année donnée (Pour les prises HS110 uniquement)
SetOutputState(string hostname, bool state) void Change l’état (ON/OFF) d’une prise (Pour les prises HS100 et HS110 uniquement)
SetLedOff(string hostname, bool isOff) Object Change l’état (ON/OFF) de la LED d’une prise (Pour les prises HS100 et HS110 uniquement)

Quelques exemples

  • Surveiller la consommation d’une prise connectée
  • Contrôler à distance une prise connectée, éteindre la nuit certaines prises etc.

License

Apache License

The post TPLinkSmartHome : Prises et autres périphériques connectés appeared first on Constellation.

]]>
https://developer.myconstellation.io/package-library/tplinksmarthome/feed/ 0
OrangeTV : pilotez votre décodeur TV Orange https://developer.myconstellation.io/package-library/orangetv/ https://developer.myconstellation.io/package-library/orangetv/#respond Thu, 23 May 2019 13:37:30 +0000 https://developer.myconstellation.io/miscellaneous/orangetv/ Documentation en cours de rédaction! Connect your Orange Set-top box (Orange LiveBox TV) to Constellation StateObjects State : the current state of the Set-top box (with the current standby state, current context, current played media, etc.) MessageCallbacks SwitchTo(string epgId) :

The post OrangeTV : pilotez votre décodeur TV Orange appeared first on Constellation.

]]>
Documentation en cours de rédaction!

Connect your Orange Set-top box (Orange LiveBox TV) to Constellation

StateObjects

  • State : the current state of the Set-top box (with the current standby state, current context, current played media, etc.)

MessageCallbacks

  • SwitchTo(string epgId) : Switches to EPG identifier
  • SwitchToChannel(Channel channel) : Switches to channel
  • SendKey(Key key, PressKeyMode mode = PressKeyMode.SinglePress) : Sends the remote controller key
  • RefreshState() : Refreshes the current state

Installation

Declare the package in a Sentinel with the following configuration :

<package name="OrangeTV">
  <settings>
    <setting key="Hostname" value="192.168.x.x" />
  </settings>
</package>

License

Apache License

The post OrangeTV : pilotez votre décodeur TV Orange appeared first on Constellation.

]]>
https://developer.myconstellation.io/package-library/orangetv/feed/ 0
Support de Python 3, des environnements virtuels et autres nouveautés de l’API Python https://developer.myconstellation.io/blog/support-python-3-et-environnements-virtuels/ https://developer.myconstellation.io/blog/support-python-3-et-environnements-virtuels/#respond Tue, 21 May 2019 12:54:02 +0000 https://developer.myconstellation.io/?p=6201 L’API Python Constellation embarquée dans le package NuGet Constellation.PythonProxy a connu trois mises à jour depuis la dernière news sur le blog : la version 1.8.5 en Octobre 2018 avec le support des environnements virtuels, la 1.8.6 en Février 2019

The post Support de Python 3, des environnements virtuels et autres nouveautés de l’API Python appeared first on Constellation.

]]>
L’API Python Constellation embarquée dans le package NuGet Constellation.PythonProxy a connu trois mises à jour depuis la dernière news sur le blog : la version 1.8.5 en Octobre 2018 avec le support des environnements virtuels, la 1.8.6 en Février 2019 avec plusieurs nouveautés dont le support de Python 3.x et pour finir la version 1.8.7 publiée début Mai 2019 avec quelques ajouts dont la substitution de configuration du Proxy Python par des settings Constellation.

Retour en détail sur les nouveautés …

Le choix de l’interpréteur Python et les environnements virtuels

Depuis la version 1.8.5 il est possible de définir la commande pour lancer les scripts Python de votre package.  Par défaut chaque script était lancé avec la commande “python” ce qui vous obligez à définir la commande “python” dans le PATH de votre système.

Désormais vous pouvez définir dans le fichier App.config de votre package Python, l’attribut “pythonCmd” pour spécifier la commande à lancer. Ci-dessous un exemple avec l’interpréteur Python 2.7 :

<pythonProxy xmlns="urn:Constellation.PythonProxy" pythonCmd="C:\Python27\python.exe">
  <scripts>
    <script filename="Scripts\Demo.py" />
    <script filename="Scripts\Demo2.py" />
  </scripts>
</pythonProxy>

L’attribut “pythonCmd” peut-être également défini de manière individuelle pour chaque script. Prenez par exemple la configuration suivante :

<pythonProxy xmlns="urn:Constellation.PythonProxy" pythonCmd="python3">
  <scripts>
    <script filename="Scripts\Demo.py" />
    <script filename="Scripts\Demo2.py" pythonCmd="C:\Users\Sebastien\venv\Scripts\python.exe" />
    <script filename="Scripts\Demo3.py" pythonCmd="C:\Python27\python.exe" />
  </scripts>
</pythonProxy>

Ci-dessus le package Python démarre trois scripts Demo.py, Demo2.py et Demo3.py de la façon suivante :

  • Demo.py sera lancé par l’interpréteur Python 3 (via la commande “python3” défini au niveau global)
  • Demo2.py sera lancé par un environnement virtuel ici nommé “venv” (défini pour le script)
  • Demo3.py sera lancé par l’interpréteur Python 2.7 installé dans “C:\Python27”

Il devient donc possible d’utiliser des interpréteurs Python spécifiques dont les environnements virtuels. Notez que si rien n’est défini, les scripts seront lancés par la commande “python”.

Le support de Python 3.x

La version 1.8.6 du Proxy Python est désormais compatible Python 2.x et Python 3.x.

Python 3.x

Il est donc maintenant possible d’écrire des packages Constellation en Python 2.x ou en Python 3.x (ou les deux en même temps, avec ou sans environnements virtuels avec l’attribut “pythonCmd” vu précédemment).

La configuration du “Proxy” par settings Constellation

Il est possible d’utiliser des settings Constellation (c’est à dire des variables de configuration que l’on peut administrer depuis la Constellation par l’API ou la Console) dans la section de configuration de votre App.config qui défini les scripts et les interpréteurs Python à utiliser.

Pour cela, au démarrage de votre package le Proxy Python remplacera les tags au format $(xxxx) où xxxx est la clé d’un setting de votre package.

Pour bien comprendre imaginez que vous souhaitez changer l’interpréteur Python à utiliser dans les settings Constellation.

Commençons par déclarer un setting dans le manisfest de votre package que nous nommerons “PythonPath” avec la valeur par défaut “python”. Dans le fichier PackageInfo.xml :

<Settings>
  <Setting name="PythonPath" defaultValue="python" type="String" />
</Settings>

Maintenant dans la configuration de notre proxy Python définissons l’attribut “pythonCmd”, c’est à dire la commande à utiliser pour lancer nos scripts Python, par la valeur de notre setting Constellation en utilisant le tag $(PythonPath). Soit dans le fichier App.config :

<pythonProxy xmlns="urn:Constellation.PythonProxy" pythonCmd="$(PythonPath)">
  <scripts>
    <script filename="Scripts\Demo.py" />
  </scripts>
</pythonProxy>

Dans la Console Constellation, la valeur par défaut est donc “python” :

image

Lorsque nous démarrons le package, on peut constater dans les logs que le tag est bien remplacé par la valeur par défaut ici “python”, qui dans mon environnement est un alias vers Python 3.6.8 :

Python 3.6

Sans changer notre cas, modifions la valeur du setting “PythonPath” depuis l’interface Web de la Console Constellation en spécifiant la valeur “C:\Python27\python.exe” :

image

Redémarrons notre package et on constatera dans les logs que notre script est maintenant exécuté par l’interpréteur Python 2.7.13 :

image

Il devient alors possible de jongler entre les différentes versions des interpréteurs Python ou même les environnements virtuels depuis les settings Constellation sans devoir toucher au package lui-même.

Utilisation des settings Constellation avant le “Start” et notification de mise à jour

Depuis vos scripts Python pour récupérer la valeur d’un setting Constellation il faut utiliser la méthode GetSetting :

Constellation.GetSetting("MonSetting")

Jusqu’à la version 1.8.6, on ne pouvait appeller cette méthode qu’après le “Start”, mais désormais vous pouvez l’utiliser juste après l’import de la libraire Constellation, par exemple :

print("Initilisation")

import Constellation

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

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

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

Constellation.Start(Start);

Vous pouvez ainsi initialiser vos scripts en ayant accès aux settings de votre package Constellation.

Autre nouveauté, l’ajout de l’évènement “OnSettingsUpdated” vous permettant d’être notifié lorsque qu’une valeur d’un setting de votre package est mis à jour dans Constellation.

import Constellation

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

def Start():
    Constellation.OnSettingsUpdated = OnSettingsUpdated

Constellation.Start(Start);

Autres nouveautés

Tout d’abord les MessageCallbacks et  lesStateObjectLinks, c’est à dire les méthodes de votre code que vous déclarez pour répondre à un message ou pour suivre un StateObject sont désormais invoquées dans un thread asynchrone pour éviter de bloquer le package.

Ensuite le « Working Directory » (os.getcwd()) est maintenant le répertoire du package et non le répertoire du script Python lui-même.

Il y a eu une revue du mécanisme de ping entre le proxy .NET et la sandbox Python basé maintenant sur le temps CPU et non l’horloge système (afin d’éviter les problèmes liés au changement d’heure).

On peut également citer l’affichage de la stacktrace complète lorsqu’une exception est levée dans le dispatch d’un MessageCallback ou d’un StateObjectLink, l’ajout automatique de la section XML de configuration dans le fichier « app.config » lors de l’installation du package ou encore l’affichage des numéros de version du Proxy python et interpréteur python au démarrage des scripts.

Pour mettre à jour votre API Python, lancez simplement le gestionnaire de package NuGet !

The post Support de Python 3, des environnements virtuels et autres nouveautés de l’API Python appeared first on Constellation.

]]>
https://developer.myconstellation.io/blog/support-python-3-et-environnements-virtuels/feed/ 0
Constellation SDK 1.8.5 avec le support de Visual Studio 2019 https://developer.myconstellation.io/blog/constellation-sdk-1-8-5-avec-le-support-de-visual-studio-2019/ https://developer.myconstellation.io/blog/constellation-sdk-1-8-5-avec-le-support-de-visual-studio-2019/#respond Sun, 19 May 2019 11:52:28 +0000 https://developer.myconstellation.io/?p=6190 Disponible depuis le début de la semaine sur le canal Beta, la nouvelle version du SDK Constellation pour Visual Studio vient d’être publiée sur le canal Stable. Principale nouveauté de cette version : le support de Visual Studio 2019 !

The post Constellation SDK 1.8.5 avec le support de Visual Studio 2019 appeared first on Constellation.

]]>
Disponible depuis le début de la semaine sur le canal Beta, la nouvelle version du SDK Constellation pour Visual Studio vient d’être publiée sur le canal Stable.

Principale nouveauté de cette version : le support de Visual Studio 2019 !

Visual Studio 2019

Vous pourrez donc créer, développer, tester et publier vos packages Constellation depuis Visual Studio 2012, 2013, 2015, 2017 et maintenant 2019 toute édition (de l’édition gratuite Community et l’édition haut de gamme Enterprise).

Création d'un projet Constellation dans Visual Studio 2019

Pour installer ou mettre à jour votre SDK, rien de plus simple, lancez simplement le Web Platform Installer et sélectionnez “Constellation SDK” dans la liste des composants à installer/mettre à jour.

Constellation Web Platform Installer
Constellation Web Platform Installer » Article
Constellation-Web-Platform-Installer-1.9.735.exe
Version: 1.9.735
1.2 MiB
2008 Downloads
Détails

The post Constellation SDK 1.8.5 avec le support de Visual Studio 2019 appeared first on Constellation.

]]>
https://developer.myconstellation.io/blog/constellation-sdk-1-8-5-avec-le-support-de-visual-studio-2019/feed/ 0
Mises à jour des Web Platform Installers Windows et Linux https://developer.myconstellation.io/blog/mises-jour-des-web-platform-installers-windows-et-linux/ https://developer.myconstellation.io/blog/mises-jour-des-web-platform-installers-windows-et-linux/#respond Sat, 18 May 2019 12:45:00 +0000 https://developer.myconstellation.io/?p=6168 Les Web Platform Installers (WPI) en version 1.9 pour Windows et Linux sont désormais disponibles. Ils adoptent par la même occasion une nouvelle philosophie pour le versioning en passant le cap “1.8”.  En effet ces deux “logiciels” sont indépendants des

The post Mises à jour des Web Platform Installers Windows et Linux appeared first on Constellation.

]]>
Les Web Platform Installers (WPI) en version 1.9 pour Windows et Linux sont désormais disponibles.

Ils adoptent par la même occasion une nouvelle philosophie pour le versioning en passant le cap “1.8”.  En effet ces deux “logiciels” sont indépendants des composants Constellation, leurs numéros de version évolueront eux aussi de manière indépendante.

Pour rappel les WPI sont deux programmes (un pour Windows et un pour Linux) permettant d’orchestrer les programmes d’installation des composants Constellation. En tant que tel un WPI n’installe pas (directement) Constellation, il se charge de vous guider, de télécharger et d’exécuter les programmes d’installation des différents composants que vous souhaitez installer. Ils gèrent également les mises à jour, les configurations des composants à installer, etc…  Pour en savoir plus, rendez-vous ici !

Petit aperçu des nouveautés des WPI 1.9 publiés ce mois-ci !

Choix du dépôt des composants Constellation

Principale nouveauté à la fois implémentée côté Windows et côté Linux, le choix du dépôt des composants Constellation : Stable Vs  Pre-release (beta).

Historiquement il y avait un WPI Windows “Stable” connecté sur le dépôt “Stable” et une version Beta du WPI connectée sur le dépôt “Beta”. Côté Linux, un seul WPI avec possibilité de changer le dépôt via un argument dans la ligne de commande !

Tout cela a été revu, au démarrage du WPI (sur Windows comme sur Linux), vous aurez la possibilité de sélectionner la source du dépôt pour installer les composants Constellation disponibles sur le canal “Stable” ou sur le canal “Beta” (Pre-release).

Choix du depot

Choix du depot

Un nouveau bootstrapper Linux

Le bootstrapper Linux est le script Bash que vous lancez pour démarrer le WPI Linux. Il s’occupe de vérifier et d’installer les prérequis (dont Mono, Supervisor, Python etc..) avant de télécharger et lancer la dernière version du WPI Linux disponible.

Ce script a été profondément revu pour mieux gérer l’installation de Mono en fonction de votre OS et de votre architecture CPU ainsi que les autres dépendances.

WPI Bootstrapper

Il s’assure de pouvoir sélectionner la version la plus récente de Mono selon votre système et améliore également la gestion des erreurs.

Une révision complète du WPI Linux

Le WPI Linux a lui aussi suivi une profonde réécriture. Tout d’abord ce programme écrit en Python supporte désormais Python 3. Il est donc compatible Python 2.7 et Python 3.x. Il n’est donc plus nécessaire d’installer Python 2.7 sur les systèmes où Python 3.x est déjà installé. Pour les autres nouveautés :

  • Un nouveau « menu général » indiquant clairement les opérations possibles (Installation, Réinstallation, Upgrade ou Downgrade des différents composants en se basant sur les capacités du système et les versions déjà installées)
  • Installation et enregistrement automatique de la sentinelle sur le serveur Constellation local (détection et configuration automatique)
  • Suggestion d’installation et de configuration automatique de la Console puis de la Sentinelle lors de l’installation du serveur
  • Réécriture du programme WPI en « All-In-One » (un seul programme Python gérant l’ensemble du processus d’installation pour une meilleure UX)
  • Correction des problèmes liés aux mots de passe trop complexes
  • Autre amélioration et correctif mineur

image

WPI Stable vs Beta

Afin d’harmoniser l’ensemble notez également que nous publions désormais les versions « Stable » et « Beta » pour les WPI Windows et Linux en toute indépendance vis à vis des composants Constellation.

Concrètement vous continuerez d’utiliser la version « Stable » du WPI Windows en téléchargeant l’exécutable suivant :

Constellation Web Platform Installer
Constellation Web Platform Installer » Article
Constellation-Web-Platform-Installer-1.9.735.exe
Version: 1.9.735
1.2 MiB
2008 Downloads
Détails

Pour Linux la commande reste également la même à savoir :

wget -O install.sh https://developer.myconstellation.io/download/installers/install-linux.sh && chmod +x install.sh && ./install.sh

Seulement comme nous l’avons dit ci-dessus, vous serez désormais en mesure de sélectionner le canal de distribution (Stable ou Beta) pour les composants Constellation à installer.

A côté de çà, nous diffusions également sur la page de téléchargement les versions « Beta » pour chacun des deux WPI.

Autrement dit les WPI et les composants Constellation sont deux choses distincts. Vous pouvez utiliser les WPI en version stable pour installer les composants Constellation en version beta et vice-versa, utiliser les WPI en version beta pour installer des composants Constellation en version stable.

The post Mises à jour des Web Platform Installers Windows et Linux appeared first on Constellation.

]]>
https://developer.myconstellation.io/blog/mises-jour-des-web-platform-installers-windows-et-linux/feed/ 0
Migration du serveur NuGet Constellation vers nuget.org https://developer.myconstellation.io/blog/migration-serveur-nuget-constellation-vers-nuget-org/ https://developer.myconstellation.io/blog/migration-serveur-nuget-constellation-vers-nuget-org/#respond Fri, 01 Mar 2019 12:24:00 +0000 https://developer.myconstellation.io/?p=6158 Historiquement depuis 2015 les différentes libraires Constellation (.NET, Javascript, AngularJS, Python, etc…) étaient diffusées sur un serveur Nuget privé. Il fallait alors sélectionner la source “Constellation” (ajoutée automatiquement par le SDK Constellation pour Visual Studio) pour pouvoir se connecter et

The post Migration du serveur NuGet Constellation vers nuget.org appeared first on Constellation.

]]>
Historiquement depuis 2015 les différentes libraires Constellation (.NET, Javascript, AngularJS, Python, etc…) étaient diffusées sur un serveur Nuget privé.

Il fallait alors sélectionner la source “Constellation” (ajoutée automatiquement par le SDK Constellation pour Visual Studio) pour pouvoir se connecter et récupérer les mises à jour des librairies Constellation.

L'ancienne source Nuget

Pour des raisons pratiques et parce qu’il n’y a plus d’intérêt de conserver ce serveur privé, tous les packages NuGet sont désormais publiés et disponibles sur la galerie publique NuGet.org

nuget-logo

Concrètement cela ne change rien du tout côté développement hormis le fait de prendre garde à ne plus utiliser le “Package source” Constellation dans votre gestionnaire NuGet et utiliser la source officielle nommée “nuget.org” ou “nuget v3” :

Package source

A noter également que lorsque vous installerez le SDK Constellation à partir de la version 1.8.5 actuellement disponible l’ancienne source sera automatiquement supprimée évitant ainsi les confusions !

Constellation Web Platform Installer
Constellation Web Platform Installer » Article
Constellation-Web-Platform-Installer-1.9.735.exe
Version: 1.9.735
1.2 MiB
2008 Downloads
Détails

The post Migration du serveur NuGet Constellation vers nuget.org appeared first on Constellation.

]]>
https://developer.myconstellation.io/blog/migration-serveur-nuget-constellation-vers-nuget-org/feed/ 0
FriendLeaf : la serre connectée grâce à Constellation https://developer.myconstellation.io/tutorials/friendleaf-la-serre-connectee-grace-a-constellation/ https://developer.myconstellation.io/tutorials/friendleaf-la-serre-connectee-grace-a-constellation/#respond Tue, 17 Jul 2018 09:40:50 +0000 https://developer.myconstellation.io/?p=6084 Plus besoin de disposer d’un espace extérieur pour faire pousser vos propres herbes aromatiques, salades et fleurs. Grâce à la serre connectée FriendLeaf, vous pouvez faire pousser plusieurs plantes et vous en occuper facilement. Projet réalisé par Théo DELOOSE, Clara

The post FriendLeaf : la serre connectée grâce à Constellation appeared first on Constellation.

]]>
Plus besoin de disposer d’un espace extérieur pour faire pousser vos propres herbes aromatiques, salades et fleurs. Grâce à la serre connectée FriendLeaf, vous pouvez faire pousser plusieurs plantes et vous en occuper facilement.

FriendLeaf : la serre connectée grâce à Constellation

Projet réalisé par Théo DELOOSE, Clara BOMY, Clément NOUGÉ, Mathieu GABRIEL, Marine DAEL et Thaï-Son DANG.

L'équipe FriendLeaf

Introduction

Nous sommes six étudiants en troisième année à l’ISEN Lille. Dans le cadre de notre projet de fin d’année, nous avons conçu une serre connectée dédiée à un usage en intérieur. Celle-ci est équipée d’un système d’éclairage intelligent, d’une pompe d’arrosage automatique et d’un brumisateur intégré afin de garantir la bonne croissance des plantes, rassemblant les conditions nécessaires à leur développement. Pour une plus grande facilité d’utilisation, notre serre est associée à une application mobile simple et ludique permettant de suivre en temps réel les données de l’environnement de la serre et de contrôler celle-ci à distance.

En réalisant ce projet, notre but était de proposer une solution de serre connectée à un prix raisonnable et possédant une interface attrayante pour améliorer l’expérience de l’utilisateur.

De plus nous voulions que la serre puisse être intégrée dans différents systèmes facilement pour que l’utilisateur puisse utiliser les données à sa guise.

Fonctionnement général

Nous avons pensé FriendLeaf comme un système de monitoring et de pilotage. Il propose en effet de gérer automatiquement l’arrosage, l’humidité et la luminosité de la serre, ou bien de les activer manuellement à notre guise. Il synchronise les données récupérées par les différents capteurs grâce à la plateforme Constellation et active, par le biais d’un relais, les actionneurs. Enfin, FriendLeaf alerte l’utilisateur lorsque le réservoir d’eau est vide. Tout est synchronisé en temps réel comme par magie grâce à Constellation.

Communication

Nous avons donc ajouté dans la serre les capteurs permettant de relever les informations sur l’humidité de l’air et du sol, sur la température et sur la luminosité.  L’équipement installé comporte aussi une guirlande lumineuse ayant pour but d’éclairer et d’afficher les alertes, une pompe pour le système d’arrosage et un brumisateur permettant d’humidifier l’air.

 Schéma général de la serre

Matériel utilisé

Pour réaliser notre projet, nous nous sommes servis des composants suivants :

Pour la Serre :

Pour les capteurs :

  • Humidité et température air : DHT11 (1,31€), Amazon
  • Luminosité : TSL2561 (6,95€), Gotronic
  • Humidité sol : GT110 (2,40€), Gotronic
  • Niveau d’eau : Gravity SEN0205 (10,50€), Gotronic

Pour le brumisateur :

  • Un émetteur à ultrasons (9,89€), Amazon
  • Une alimentation pour le brumisateur (24V DC, 1A) (25€), Derotronic, Lille
  • Un bol

Pour le système d’arrosage :

  • Une pompe à eau (5,48€), Amazon
  • Une alimentation 12V 600mA (12€), Derotronic, Lille
  • Un jerrican (environ 10€)
  • Un tuyau (ø7mm -ø10mm), Diall

Pour l’éclairage :

  • 2m de guirlandes lumineuses (1m LED et 1m incandescent), Blachère
  • Une alimentation pour fil lumière, Blachère
  • Colliers de serrage

Conception de la serre

Étape 1 : Préparation de la serre

Dans la serre, nous avons disposé les capteurs, le pot et un bol pour le brumisateur. Nous avons également percé des trous pour pouvoir faire passer tous les capteurs et le tuyau d’arrosage.

Pour ce qui est de la guirlande lumineuse, il nous a fallu percer quelques trous supplémentaires dans les montants de la serre pour y glisser les colliers de serrage.

 La serre "nue"

Étape 2 : Branchement du relais

 Les relais

Afin de pouvoir contrôler les actionneurs, nous avons branché le relais quatre canaux à une carte Raspberry Pi.

Celui-ci est analogue à un interrupteur. Pour chaque canal, une alimentation est nécessaire et chacun d’entre eux peut être piloté individuellement grâces aux différents pins dont dispose le relais. Il faut également prévoir une masse que l’on branche sur le pin “Gnd” du relais.

Par défaut, lorsque les pins d’entrée ne sont pas alimentés, les canaux du relais délivrent la tension d’alimentation correspondante sur la sortie NC (“Normally Closed”) ou sur la sortie NO (“Normally Open”) dans le cas contraire.

Etape 3 : Éclairage de la serre

Pour l’éclairage de notre serre, nous avons percé des trous dans la structure et fixé la guirlande avec des colliers de serrage. Celle-ci doit être alimentée par une tension de 230V (tension secteur) et est composée d’un mètre de LEDs rouge et d’un mètre incandescent jaune.

Les LEDs

Les LEDs

Elle est connectée au relais par la phase et le neutre, chacun branchés sur un canal différent, afin d’isoler totalement la guirlande du secteur et ainsi éviter tout problème avec le reste des composants.

Etape 4 : Installation du brumisateur

 Le relais avec les LEDs et le brumisateur

Pour augmenter l’humidité de l’air dans la serre, nous avons installé un brumisateur fonctionnant par émissions d’ultrasons. Il nécessite une alimentation de 24V/1A maximum. On le relie ensuite au relais. La masse est directement connectée à l’adaptateur secteur par le biais d’un domino.

Etape 5 : Installation du système d’arrosage

Installation du système d’arrosage

En ce qui concerne l’arrosage, nous disposons d’une pompe submersible qui nécessite une alimentation de 12V et 400mA. Elle est branchée en sortie à un tuyau percé pour un arrosage homogène. Nous la connectons ensuite à un des canaux du relais.

 Le reservoir

Pour le réservoir, nous avons récupéré un bidon de vinaigre de 5L sur lequel nous avons fait un trou pour le capteur de niveau d’eau et une ouverture pour le remplir et y faire passer la pompe.

Pour résumer…

Schéma du relais et de la Raspberry

Rendu dans la boite

Étape 6 : Mise en place des capteurs et paramétrage de la carte Arduino

Nous installons à présent les capteurs d’humidité/température de l’air, d’humidité du sol, de de luminosité et de niveau d’eau. Nous branchons tous ces capteurs aux pins de la Raspberry ou de l’Arduino en faisant attention au fait que :

  • Les capteurs d’humidité du sol et de niveau d’eau se branchent sur du 5V.
  • Les capteurs d’humidité/température de l’air et de luminosité sont alimentés en 3,3V.
Étape 6.1 : Capteur d’humidité et de température de l’air

Le capteur d’humidité et de température de l’air fournissant des données numériques, nous le relions directement à notre Raspberry Pi comme montré sur le schéma ci-dessous :

Capteur d'humidité/température

Étape 6.2 : Capteurs de luminosité, d’humidité du sol et de niveau d’eau

 Capteurs et Arduino sur la Raspberry

Ces capteurs fournissant des données analogiques, nous les avons branchés à une carte Arduino nano qui permet de lire ces données, contrairement à la Raspberry. Elle est reliée directement par USB à la Raspberry Pi comme montré ci-après :

Arduino et ses capteursArduino et ses capteurs

Étape 6.3 : Programmation de la carte Arduino

Dans l’IDE Arduino, nous avons donc commencé par programmer la carte.

Nous ajoutons tout d’abord les librairies d’Adafruit pour pouvoir initialiser le capteur de luminosité et régler le temps d’intégration des données. Dans le gestionnaire de bibliothèque (menu Croquis > Inclure une bibliothèque), nous avons installé les librairies suivantes :

  • Adafruit Unified Sensor
  • Adafruit TSL2561

Les librairies Arduino

Au démarrage, dans la méthode “setup()”, nous configurons les pins utilisés. Nous décidons d’utiliser les pins analogiques A0 et A1, respectivement pour le capteur d’humidité du sol et du niveau d’eau et les pins A4 et A5 pour le capteur de luminosité :

void setup(void) 
{
  Serial.begin(9600);
 
  /*Réglage du capteur de luminosité*/
  if(!tsl.begin()) //Initialisation du capteur
  {
    //S'il y a un problème pour détecter le capteur, vérifier votre connexion
    Serial.print("Ooops, pas de capteur détecté... Vérifier votre connexion!");
    while(1);
  }
  
    //Configuration du gain du capteur et du temps d'intégration
    tsl.enableAutoRange(true);          
    tsl.setIntegrationTime(TSL2561_INTEGRATIONTIME_13MS);    
 
}

Dans la méthode “loop()”, nous recueillons ensuite les valeurs des capteurs et les faisons afficher sur le Monitor Série en utilisant les commandes analogRead() et Serial.print()  :

void loop(void) 
{  
  /*Pour recevoir une nouvelle donnée par le capteur de luminosité*/ 
  sensors_event_t event;
  tsl.getEvent(&event);
 
  //Lecture des pins analogiques pour les données des capteurs d'humidité du sol et de niveau d'eau
  Hum_value = analogRead(A0);
  Liquid_value=analogRead(A1);
 
  //Affichage des valeurs sur le Moniteur série
  Serial.print(event.light,0);
  Serial.print(',');
  Serial.print(map(Hum_value,0,1024,0,100)); //Le capteur d'humidité renvoie une valeur en pourcentage 
  Serial.print(',');
  Serial.println(map(Liquid_value,0,512,0,1)); //Le capteur de niveau d'eau retourne la valeur 1 quand il est en contact avec l'eau, 0 sinon
  delay(5000); //Retard de 5s pour éviter de surcharger le buffer de la Raspberry 
}

Nous récupèrerons ensuite les données des différents capteurs à l’aide de la carte Raspberry Pi.

La programmation vers Constellation

La programmation vers Constellation est divisée en deux packages : le premier correspond à la récupération des données des capteurs et à l’activation des actionneurs, le second a été créé pour gérer le stockage des données en vue de créer des graphiques sur notre application.

Etape 1 : Package relatif aux capteurs et actionneurs

Etape 1.1 : Acquisition des données des capteurs

Pour récupérer les données des différents capteurs cités précédemment, nous avons utilisé la librairie “Adafruit_DHT” pour Raspberry Pi et la librairie “serial” qui permet de faire le lien entre l’Arduino-Nano et la Raspberry Pi. Ces valeurs vont nous permettre de décider s’il faut activer ou non les actionneurs tels que la pompe, le brumisateur ou les LED.

La fonction ci-après permet de récupérer les valeurs des différents capteurs.

def getCapteur():
    humiditeAir, temperature = Adafruit_DHT.read_retry(11,4)
    lux, humiditeSol, eau = ser.readline()[:-2].split(",")

Nous avons ensuite créé un State Object rassemblant les valeurs d’humidité du sol, d’humidité de l’air, de température et de luminosité ambiante pour pouvoir les publier sur notre Constellation.

Constellation.PushStateObject("Capteurs", {"HumiditeSol": int(self.humiditeSol), "HumiditeAir": int(self.humiditeAir), "Temperature": int(self.temperature), "Luminosite": int(self.lux)}, "CapteursInfos")

  Le State Object des capteurs

Etape 1.2 : Activation et désactivation des différents actionneurs (brumisateur, guirlande lumineuse et pompe à eau)

Comme mentionné précédemment, les actionneurs sont reliés à la Raspberry Pi via un relais quatre canaux. Cela simplifie grandement la programmation : il nous suffit simplement de gérer l’ouverture et la fermeture des relais.

Nous avons donc fait en sorte que chaque actionneur soit associé à son relais grâce à la librairie GPIO de la Raspberry Pi. Ainsi, le code diffère seulement au niveau des numéros des pins utilisés par les actionneurs.

Voici un exemple du code de l’activation et de la désactivation de notre pompe :

GPIO.setmode(GPIO.BOARD)
GPIO.setup(12,GPIO.OUT)
GPIO.output(12,0)

Le pin 12 de la Raspberry est celui relié au relais contrôlant la pompe.

Etape 1.3 : Automatisation des actionneurs

Pour réaliser la fonction d’automatisation, nous nous sommes tout d’abord renseignés sur les conditions propices à la bonne croissance des plantes au niveau de l’humidité du sol et de l’air, de la luminosité et de la température de l’air.

Pour le brumisateur, nous avons choisi de l’activer si l’humidité est inférieure à 35% et de le désactiver si l’humidité remonte au dessus de 37%.

if humiditeAir > 37 and brumisateur:
    DesactiverBrumisateur()
elif humiditeAir < 35 and not brumisateur:
    ActiverBrumisateur()
    time.sleep(1)

Pour la pompe, le fonctionnement est différent. Puisque la diffusion de l’eau dans la terre est plus lente, nous activons la pompe pendant 5s avant de la désactiver pendant 30s pour laisser le temps au capteur de ressentir les changements.

if humiditeSol < 30 and not pompe:
    if self.ticks == 0:
            if self.next_water == 0:
                    ActiverPompe()
            self.next_water = 15
        else:
                    self.next_water -= 1
        elif humiditeSol > 30:
                    self.next_water = 0
    elif pompe:
            self.ticks += 1
               if self.ticks >= 3:
                    DesactiverPompe()
                       self.ticks = 0
time.sleep(1)

Ces différentes fonctions sont exécutées dans des threads séparés pour ne pas que le code soit bloquant.

Maintenant, il ne reste plus qu’à sécuriser notre système d’arrosage via le capteur de niveau d’eau. Connecté à la carte Arduino nano, ce capteur va nous renvoyer 1 s’il y a de l’eau dans le réservoir, 0 sinon.

Package PushBullet

Les données du capteur de niveau d’eau nous permettent d’arrêter le système d’arrosage lorsque le réservoir est presque vide et d’informer l’utilisateur via un PushBullet et l’allumage des LEDs qu’il faut remplir le réservoir.

Constellation.SendMessage("PushBullet", "PushNote", [ "FriendLead", "Le reservoir d'eau est vide"], Constellation.MessageScope.package)

Notification sur smartphone

Étape 2 : Package relatif au stockage des données

Afin d’historiser les valeurs des capteurs stockées dans un des State Objects du premier package, nous en avons créé un autre que l’on a déployé sur le même serveur que Constellation.

Enregistrement CSV

Ce package génère une base de données dans un fichier .csv qui est mis à jour toutes les minutes avec les nouvelles données.

Chaque ligne contient la date, l’heure, l’humidité du sol, l’humidité de l’air, la température et la luminosité.

@Constellation.StateObjectLink(package = "FriendLeafCapteurs", name = "Capteurs")
def RecupValue(stateObject):
    humiditeSol = stateObject.Value.HumiditeSol
    humiditeAir = stateObject.Value.HumiditeAir
    temperature = stateObject.Value.Temperature

Nous avons ensuite créé un message callback qui permet de visualiser le fichier CSV dans notre Constellation.

@Constellation.MessageCallback()
def LireBDD():
'''
: return string : La base de données 
'''
    file = open('BDD.csv','r')
    lines = file.readlines()
    return lines

La saga du Message Callback

L’interface utilisateur : l’application mobile de monitoring et de pilotage de la serre

Étape 1 : Le noyau de l’application

L'application Cordova

Pour développer l’application mobile nous nous sommes aidés de Cordova, un Framework permettant de créer des application Android et iOS avec des technologies web.

Cordova

Nous avons également utilisé jQuery et AngularJS pour faciliter l’interaction entre Javascript et HTML.

AngularJS

De plus, pour gérer certaines fonctionnalités comme le traitement du CSV ou l’affichage des graphiques, nous avons utilisé des librairies externes comme PapaParser et Chartist. Finalement, pour embellir le CSS, nous avons utilisé le Framework SemanticUI qui ressemble en certain points à Bootstrap.

Étape 2 : Connexion à Constellation, State Object et Messages Callback

Pour nous connecter à Constellation avec AngularJS, nous avons utilisé ces lignes de codes :

Constellation.initializeClient(url_port, sha, "FriendLeaf");

Constellation.onConnectionStateChanged(function (change) {
   //suite
});

et une ligne de ce type pour chaque State Object :

Constellation.registerStateObjectLink("*", "FriendLeafCapteurs", "Actionneurs", "*", function (so) {
    //suite
});

Quant aux messages Callback, ils sont envoyés comme suit :

Constellation.sendMessage({ Scope: 'Package', Args: ['FriendLeafCapteurs'] }, 'DesactiverBrumisateur');

Page de configuration

Pour que l’application soit utilisable sur n’importe quelle Constellation, nous avons créé un page de configuration où l’utilisateur rentre l’adresse de sa constellation, le port, et des identifiants.

Une fois tout cela rempli, le nom d’utilisateur et le mot de passe sont hachés en SHA1 grâce à une librairie externe et la connexion à Constellation commence.

Lorsque l’application se lance pour la première fois, l’utilisateur est directement redirigé vers cette page pour entrer les informations nécessaires.

Étape 3 : Affichage des données en temps réel

Le tableau de bord

Pour l’affichage des données en temps réel nous avons utilisé des images SVG car elles sont très flexibles et nous voulions réaliser des barres de progression en arc de cercle. Pour les valeurs numériques on affiche un scope AngularJS dans lequel sont stockés les valeurs des capteurs.

Le code JS :

//Stockage des valeurs des capteurs dans la variable capteur
scope.capteurs["humiditeAir"] = so.Value.HumiditeAir;
scope.$apply(); //Applications des modifications du scope

//Pour changer le remplissage de la jauge 
$("#h_air_gauge").css("stroke-dasharray",(so.Value.HumiditeAir*18)/100 + " 18 0");

SVG en HTML :

<svg viewbox="0 0.5 10 8">
    <defs>
    <linearGradient id="linear" x1="0%" y1="0%" x2="100%" y2="0%">
        <stop offset="0%" stop-color="#00ee4f"/>
        <stop offset="66%" stop-color="#eeae00"/>
        <stop offset="100%" stop-color="#ee0000"/>
    </linearGradient>
    </defs>
    <text x="50%" y="50%" id="h_air_value" text-anchor="middle"  alignment-baseline="middle" fill="#00ee4f">
        {{Math.round(capteurs["humiditeAir"])}}%
    </text>
    <path d="M2 8 A 4 4 0 1 1 8 8" fill="none" stroke-width="0.78" stroke="#E8F6FD" />
    <path class="loader" id="h_air_gauge" d="M2 8 A 4 4 0 1 1 8 8" fill="none" stroke-width="0.8" 
stroke="url(#linear)" />
</svg>

Étape 4 : Contrôler sa serre

Page de contrôlePage de contrôlePage de contrôle

Nous avons également prévu dans l’application de pouvoir gérer les différents actionneurs de la serre.

Pour gérer le côté automatique du package responsable des capteurs nous avons utilisés des sliders qui lorsqu’activés, vont envoyer un Message Callback comme décrit ci-dessus. On va également suivre l’évolution du State Object indiquant si l’automatisation est activée pour tel ou tel actionneur et ainsi bloqué ou non le bouton d’activation manuel. Car oui, il est également possible d’activer manuellement chaque actionneur grâce à un bouton.

Étape 5 : Les graphiques

Graphiques

Pour ce qui est des graphiques nous avons utilisé une librairie externe que nous avons modifié pour la rendre compatible sur mobile. Cette librairie s’appelle Chartist. Grâce à elle nous avons pu faire de superbes graphiques.

Conclusion

Voilà qui conclut les grandes étapes de la réalisation de FriendLeaf. Comme vous avez pu le voir, la serre remplit complètement son rôle. C’est un projet ludique, simple à réaliser et facilement transposable sur d’autres installations grâce aux State Objects et aux messages Callback. C’est également un bon point de départ pour prendre en main la plateforme Constellation. Nous espérons vraiment qu’il vous a plu et que vous allez réaliser votre propre serre.

Nous tenons également à remercier Léa, le jardin de Théo et les parents de Marine qui nous ont fourni quelques accessoires nécessaires à la serre.

The post FriendLeaf : la serre connectée grâce à Constellation appeared first on Constellation.

]]>
https://developer.myconstellation.io/tutorials/friendleaf-la-serre-connectee-grace-a-constellation/feed/ 0