Outils pour utilisateurs

Outils du site


cours:oc:gr10_16_17:gr10_16_17

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
Prochaine révision Les deux révisions suivantes
cours:oc:gr10_16_17:gr10_16_17 [2017/02/14 13:16]
kbuisson [Groupe :]
cours:oc:gr10_16_17:gr10_16_17 [2017/02/18 17:03]
tober [Groupe :]
Ligne 17: Ligne 17:
    ​***Scénario 2 :** En tant que Bob, je veux que mon aquarium ajuste son niveau d'eau de manière autonome    ​***Scénario 2 :** En tant que Bob, je veux que mon aquarium ajuste son niveau d'eau de manière autonome
    ​***Scénario 3:** En tant que Bob, je veux pouvoir spécifier le niveau de nitrate et le volume de mon bac afin de pouvoir rééquilibrer le niveau par ajout d’eau saine dans le bac    ​***Scénario 3:** En tant que Bob, je veux pouvoir spécifier le niveau de nitrate et le volume de mon bac afin de pouvoir rééquilibrer le niveau par ajout d’eau saine dans le bac
-   ​***Scénario 4:** En tant que Bob, je veux pouvoir récupérer suivre l'​état des différents relevés sur mon téléphone en spécifiant la période concernée+   ​***Scénario 4:** En tant que Bob, je veux pouvoir récupérer suivre l'​état des différents relevés sur mon navigateur
  
 === Services proposés: === === Services proposés: ===
Ligne 36: Ligne 36:
 |Electrovanne 12 Vcc droite EV12V| 0,00€ |1| 0,00€ |http://​www.gotronic.fr/​art-electrovanne-12-vcc-droite-ev12v-19587.htm| |Electrovanne 12 Vcc droite EV12V| 0,00€ |1| 0,00€ |http://​www.gotronic.fr/​art-electrovanne-12-vcc-droite-ev12v-19587.htm|
 |Pompe submersible JT180| 0,00€ |1| 0,00€ |http://​www.gotronic.fr/​art-pompe-submersible-jt180-19363.htm| |Pompe submersible JT180| 0,00€ |1| 0,00€ |http://​www.gotronic.fr/​art-pompe-submersible-jt180-19363.htm|
-|Pompe miniature pour eau PE3201| 0,00€ |1| 0,00€ |http://​www.gotronic.fr/​art-pompe-miniature-pour-eau-pe3201-7452.htm| 
 |Lot de 5 câbles Grove 5 cm| 0,00€ |1| 0,00€ |http://​www.gotronic.fr/​art-lot-de-5-cables-grove-5-cm-19055.htm| |Lot de 5 câbles Grove 5 cm| 0,00€ |1| 0,00€ |http://​www.gotronic.fr/​art-lot-de-5-cables-grove-5-cm-19055.htm|
 |Lot de 5 câbles Grove 50 cm| 0,00€ |1| 0,00€ |http://​www.gotronic.fr/​art-lot-de-5-cables-grove-50-cm-22297.htm| |Lot de 5 câbles Grove 50 cm| 0,00€ |1| 0,00€ |http://​www.gotronic.fr/​art-lot-de-5-cables-grove-50-cm-22297.htm|
Ligne 58: Ligne 57:
 \\ \\
  
-On compte ​réaliser un composant par capteur/actionneur.+Nous comptons ​réaliser un composant par capteurs/actionneurs\\ 
 +Les composants communiqueront avec notre serveur WComp en utilisant le protocole UPnP. 
 +Ces messages permettront de maintenir à jour le status courant de l'​objet et de déclencher les actionneurs si nécessaire. \\ 
 +Notre objet connecté se veut autonome, mais la partie intelligente est externalisée sur le serveur WComp.  
 +Ainsi, rien n'est figé dans l'​objet,​ qui ne se contente que de fournir les informations sur l'​état des capteurs, et des méthodes permettant d'​activer les actionneurs. \\ 
 +La partie intelligente déportée sur un serveur externe fournit un certain nombre d'​avantages : 
 +  * Maintenance 
 +  * Ajout de fonctionnalités 
 +  * Mise à jour
 \\ \\
-Les composants communiqueront avec la partie metier (intelligente) à l'aide de BlockingQueue (1 pour les capteurs ​et 1 par actionneurs) à l'​aide ​de messagesCes messages permettront ​de mettre à jour le status courant de l'​objet et d’appeler ​les actionneurs si nécessaire.+Notre serveur central WComp exposera une route vers l'extérieur, fournissant ​les informations des capteurs ​lors de leurs modificationsCela permettra ​de venir connecter un application externe, comme un site web ou une application mobile, qui pourra suivre en temps réel les données des capteurs, fournir des graphiques, envoyer des alertes, etc.
 \\ \\
-Notre objet connecté se veut autonome, la partie métier est calculée en interne, dans l'​objet. On pourrait avoir recourt à des webservices locaux pour discuter avec nos composants mais cela aurait pour effet d’alourdir la tache de ces derniers, un canal de communication dédiée entre différent thread par l'​intermédiaire de Queue est plus facile à mettre en place, on évite la lourde de tache de pulling des données à intervalles régulier, ce sont les capteurs qui remplissent quand bon leur semble leur canal de communication.+{{:​cours:​oc:​gr10_16_17:​archi.jpg?500|}}
 \\ \\
-{{:cours:​oc:​gr10_16_17:​diag2.png?​450|}} +**Exemple d'​utilisation ​:** Le niveau d'eau baisse (et passe en dessous du seuil minimum), le serveur ​WComp détecte une baisse ​de niveau, et demande à notre aquarium ​de déclencher ​l'éléctro-vanne,​ afin de remplir ​l'​aquarium ​à un niveau ​correcte.
-\\ +
-Dans une seconde étape, nous mettrons en place des webservices pour offrir la possibilité de piloter l'objet et de récupérer ses données par un serveur ​intermédiaire qui pourra être implémenté à l'​aide ​de WCOMP. Ce serveur intermédiaire/​orchestrateur pourra nous être utile pour notre client mobile ou pour entretenir un cloudenvoyer des notifications ... +
-\\ +
-L'​ajout de nouvel fonctionnalité se veut facile ​et indépendant ​de l'objet. +
-\\ +
-**Par exemple:​** +
-Je récupère l'​état courant ​de l'​aquarium, si le niveau ​d'eau est trop bas je génère une requête post pour allumer l'​électrovalve (composition de webservice).+
  
 +\\
 {{:​cours:​oc:​gr10_16_17:​orchest.png?​400|}} {{:​cours:​oc:​gr10_16_17:​orchest.png?​400|}}
  
  
-Nous aurons+== Liste des Web Services== 
-  * 1 webservice pour récupérer le status ​de l'​objet, l'​état ​courant de la machine, accessible en HTTP GET +\\ 
-  * 1 webservice par actionneur en fournissant l'​état voulue dans le corps de la requête, accessible en HTTP POST.+Nous mettons à dispositions un certains nombre ​de web servicesaccessible via le protocole UPnP 
 +Vous pouvez subscribe aux évènements suivants qui vous donnerons ​l'​état ​actuel du sensor (isListenning) et la dernière valeur récupéree:​ 
 +  * Temperature °C 
 +  * Ph  
 +  * Potar [0-300] 
 +  * Light lux
  
-Nous n'avons pas encore décidé entre une implémentation SOAP ou RESTREST est plus facile ​à mettre en place mais interdis toute découverte automatisée. Nos besoins sont assez simple, récupérer ​l'​état ​des différents capteurs et activer/désactiver un actionneur. Nous verrons au moment voulue sur quelle approche partir.+Vous pouvez agir sur le système via différents actionneurs et leurs webservice, vous pouvez récupérer l'état actuel du capteur (onoff) 
 +Vous avez à votre disposition:​ 
 +  * Pump: pour actionner/​éteindre la pompe  
 +  * ServoMoteur:​ Pour augmenter/​réduire ​l'intensité de la lumière ou l'​éteindre sans vous préoccupez de son état actuel 
 +  * Heater: pour allumer/éteindre le chauffage 
 +  * Valve: Pour ouvrir/​fermer l'​électrovalve
  
-Exemple de HTTP **get** sur **/​status**:​ 
  
-{   +== Environnements== 
-   ​***alert**:0, +\\ 
-   ***temperature**:​25,​ +Nous travaillons sur raspberry pi 2, nous disposons d'un serveur servant d'​orchestrateur du système avec l'aide de WCOMP et d'un serveur WEB écrit en python avec la librairie Flask. Le serveur en python fait office de cloud et d'​interface web pour l'​utilisateuron y stock des données et mettons à dispositions des graphiques sur l'​évolution de certains capteurs.
-   ***PH**:7.2, +
-   ​***water_level**:​10, +
-   ​***light**:​1 +
-}+
  
 +== Installations:​ ==
 +\\
 +Pour installer les différents composants suivre les consignes disponibles sur nos répertoires github
  
 +[[https://​github.com/​Paltoquet/​concordia/​tree/​master]] pour le code embarqué sur la raspberry
 +[[https://​github.com/​Paltoquet/​concordia_comp]] pour le code WCOMP
 +[[https://​github.com/​Paltoquet/​concordia_web/​tree/​master]] pour le serveur web
  
 +Si vous disposez de l'​aquarium:​
 +
 +  * Allumer la raspberry
 +  * Aller dans le répertoire **concord**
 +  * Executer python **upnp_concordia.py**
 +\\
 +  * Vérifier que les webservices apparaissent dans device spy
 +  * Lancer le serveur web, run.bat disponsible sur le répertoire github
 +  * Ouvrez WCOMP, créer un nouveau container et importez **tmp.wcc** (voir github)
 +
 +== Images du projet: ==
 +\\
 +\\
 +{{:​cours:​oc:​gr10_16_17:​concord.jpg?​500|}}
  
cours/oc/gr10_16_17/gr10_16_17.txt · Dernière modification: 2017/02/19 22:58 par kbuisson