{"id":246,"date":"2023-01-17T06:31:01","date_gmt":"2023-01-17T05:31:01","guid":{"rendered":"https:\/\/tutos.jusdeliens.com\/?p=246"},"modified":"2023-01-17T06:31:01","modified_gmt":"2023-01-17T05:31:01","slug":"onboarding","status":"publish","type":"post","link":"https:\/\/tutos.jusdeliens.com\/index.php\/2023\/01\/17\/onboarding\/","title":{"rendered":"Ova phone home \ud83d\udc7d"},"content":{"rendered":"\n<p>Vous venez de faire l\u2019acquisition d&#8217;un robot Ova et il vous tarde de d\u00e9couvrir les talents de votre nouvelle compagne programmable ? <\/p>\n\n\n\n<p>Dans ce tutoriel, nous allons voir ensemble comment la prendre en main pour pouvoir la d\u00e9marrer, la programmer, et bien plus encore. <\/p>\n\n\n\n<!--more-->\n\n\n\n<h2 class=\"wp-block-heading\" id=\"demarrage\">1. \ud83d\ude80 D\u00e9marrage<\/h2>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/media.tenor.com\/FXRKjEVM60EAAAAM\/et-whoa.gif\" alt=\"Et Finger Touch GIFs | Tenor\" width=\"220\" height=\"151\"\/><\/figure>\n\n\n\n<p>Pour d\u00e9marrer Ova, tirez d\u00e9licatement vers l&#8217;avant le slider en dessous de l\u2019\u0153il gauche d&#8217;Ova. <\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/tutos.jusdeliens.com\/wp-content\/uploads\/2023\/01\/image-2-1024x308.png\" alt=\"\" class=\"wp-image-275\" width=\"614\" height=\"184\"\/><\/figure>\n\n\n\n<p>Elle se met alors \u00e0 faire 2 notes de musiques (Do Sol) puis clignote \u00e0 une certaine fr\u00e9quence et d&#8217;une certaine couleur indiquant la tension de la batterie. Si la couleur est proche du rouge et qu&#8217;elle clignote \u00e0 une fr\u00e9quence \u00e9lev\u00e9e, cela signifie qu&#8217;elle a besoin d&#8217;\u00eatre recharg\u00e9e.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/tutos.jusdeliens.com\/wp-content\/uploads\/2024\/10\/image-6.png\" alt=\"\" class=\"wp-image-761\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">1.1. \ud83d\udca1 La machine \u00e0 \u00e9tat d&#8217;Ova<\/h3>\n\n\n\n<p>Apr\u00e8s quoi, selon sa batterie, Ova d\u00e9marre sa &#8220;booting dance&#8221;, puis son syst\u00e8me d&#8217;exploitation se lance pendant qu&#8217;une animation HUE du rose au bleu se r\u00e9p\u00e8te en boucle. A tout moment, vous pouvez savoir dans quel \u00e9tat Ova est selon sa couleur :<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/tutos.jusdeliens.com\/wp-content\/uploads\/2024\/10\/image-4-1024x527.png\" alt=\"\" class=\"wp-image-757\"\/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>Couleur changeant progressivement de teinte (\u00e9tat HUE SETUP)<\/strong> : Ova est en cours de lancement apr\u00e8s son (re)d\u00e9marrage. Apr\u00e8s une dizaine de seconde, Ova passe en \u00e9tat AP MODE.<\/li><li><strong>Couleur bleue scintillant p\u00e9riodiquement toutes les 3 secondes, AP visible (\u00e9tat AP MODE)<\/strong> : Ova est accessible et visible autour d&#8217;elle via son Access Point (AP) en wifi 2.4 GHz. Elle est joignable via HTTP sur son r\u00e9seau \u00e0 l&#8217;adresse 192.168.71.1 (OvaOS 2.x.x) ou sur les anciennes versions \u00e0 l&#8217;adresse 192.168.4.1 (OvaOS 1.x.x). Si un point d&#8217;acc\u00e8s\/station wifi (STA) est renseign\u00e9 dans ses param\u00e8tres (voir Settings dans IDEAL) et qu&#8217;aucun appareil ne s&#8217;est connect\u00e9 \u00e0 Ova depuis son dernier d\u00e9marrage, elle cherchera \u00e0 se connecter \u00e0 ce point d&#8217;acc\u00e8s de mani\u00e8re concomitante, et une fois connect\u00e9 passera en STA MODE. Sinon elle restera dans ce mode ad vitam aeternam. Notez que l&#8217;animation de sa LED (ainsi que ses capteurs et actionneurs) peut \u00eatre programm\u00e9 dans ce mode via son API HTTP connaissant son IP.<\/li><li><strong>Couleur magenta scintillant p\u00e9riodiquement toutes les 3 secondes, AP visible (\u00e9tat STA MODE)<\/strong>  : Ova est connect\u00e9e au point d&#8217;acc\u00e8s\/station wifi 2.4GHz renseign\u00e9 dans ses param\u00e8tres, et est joignable sur ce r\u00e9seau \u00e0 l&#8217;adresse IP dynamique donn\u00e9e par le DHCP du r\u00e9seau (pour l&#8217;obtenir, demander \u00e0 votre administrateur r\u00e9seau). Si un broker MQTT est renseign\u00e9 dans ses param\u00e8tres (voir Settings dans IDEAL), elle cherchera \u00e0 s&#8217;y connecter de mani\u00e8re concomitante, et une fois connect\u00e9, passera en \u00e9tat STA MQTT. Ova reste visible et accessible via son AP en wifi 2.4GHz et si un device s&#8217;y connecte, elle retournera en AP MODE et ne sera plus joignable sur le r\u00e9seau STA. De la m\u00eame mani\u00e8re qu&#8217;en AP MODE, son comportement peut \u00eatre programm\u00e9 via API HTTP connaissant son IP sur le r\u00e9seau STA.<\/li><li><strong>Aucune couleur, AP visible (\u00e9tat STA MQTT)<\/strong> : Ova est connect\u00e9e au point d&#8217;acc\u00e8s\/station wifi 2.4GHz (couche r\u00e9seau du mod\u00e8le TCP\/IP) ainsi qu&#8217;au broker MQTT (couche applicative du mod\u00e8le TCP\/IP) renseign\u00e9 dans ses param\u00e8tres. Comme l&#8217;\u00e9tat STA MODE, elle reste visible via son AP et si un device s&#8217;y connecte, elle retournera en AP MODE et ne sera plus joignable sur le r\u00e9seau STA. Contrairement au AP MODE, son comportement est programmable via son API MQTT par l&#8217;interm\u00e9diaire du broker dont l&#8217;adresse IP ou DNS est \u00e0 obtenir aupr\u00e8s de votre administrateur r\u00e9seau, ou vous m\u00eame si vous administrez ce broker sur votre machine (voir le <a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/jusdeliens\/ovahub\" target=\"_blank\">repository github Jusdeliens ovahub<\/a>).<\/li><\/ul>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>\ud83e\udd14 Pourquoi autant d&#8217;API et de protocoles diff\u00e9rents ?<\/p><\/blockquote>\n\n\n\n<p class=\"has-background\" style=\"background-color:#d4efff\">\ud83d\udd0d <strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">Information<\/mark><\/strong><br>Pour r\u00e9pondre au maximum de cas d&#8217;usage, Ova utilise principalement 2 protocoles (et donc 2 types d&#8217;API) pour communiquer, comme la plupart des objets connect\u00e9s. Le protocole HTTP qui permet une utilisation simple, fiable (via TCP) et crossplatform, mais qui est plus lourd et moins adapt\u00e9 pour du temps r\u00e9el (flux capteurs et cam\u00e9ra), ni pour g\u00e9rer une flotte de robots dispatch\u00e9s g\u00e9ographiquement avec la s\u00e9curit\u00e9 qui s&#8217;impose (gestion des droits utilisateurs et mots de passe). Tandis que le protocole MQTT permet ces 2 derniers usages, i.e. vous pourrez dans un m\u00eame programme piloter une centaine de robots dans le monde entier, en limitant l&#8217;acc\u00e8s aux capteurs en lecture seule pour certains utilisateurs, et l&#8217;acc\u00e8s aux actionneurs pour d&#8217;autres avec mot de passe.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1.2. \ud83d\udeb5\u200d\u2642\ufe0f Cas d&#8217;usage<\/h3>\n\n\n\n<p>Selon ses param\u00e8tres r\u00e9seaux enregistr\u00e9s (accessibles dans la section Settings de son IDEAL), vous pourrez utiliser Ova selon diff\u00e9rent cas d&#8217;usage parmi les suivants<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/tutos.jusdeliens.com\/wp-content\/uploads\/2024\/10\/image-12-1024x488.png\" alt=\"\" class=\"wp-image-880\"\/><\/figure>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"has-text-align-center has-medium-font-size\"><strong>1. Sur le point d&#8217;acc\u00e8s Wifi d&#8217;Ova HTTP (AP)<\/strong><\/p>\n\n\n\n<p class=\"has-text-align-center\"><strong>N\u00e9cessite<\/strong><\/p>\n\n\n\n<p>\ud83e\udd16 1 robot par utilisateur<br>\ud83d\udcbb 1 ordinateur par utilisateur \u00e9quip\u00e9 de wifi (ou dongle wifi)<br>\ud83d\udcc2 1 workspace \u00e0 transmettre \u00e0 chaque utilisateur <br>\ud83d\udc68\u200d\ud83d\udcbb 1 IDE install\u00e9 sur chaque ordinateur, ou bien un navigateur web pour IDEAL<\/p>\n\n\n\n<p class=\"has-text-align-center\"><strong>A privil\u00e9gier<\/strong><\/p>\n\n\n\n<p>\ud83e\udd16 Pour contr\u00f4ler 1 Ova par utilisateur <br>\ud83d\udcf5 Si connexion Internet instable\/inexistante ou LAN\/wifi inaccessible<br>\ud83c\udfe4 En pr\u00e9sentiel<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"has-text-align-center has-medium-font-size\"><strong>2. Sur un point d&#8217;acc\u00e8s Wifi en LAN HTTP (STA)<\/strong><\/p>\n\n\n\n<p class=\"has-text-align-center\"><strong>N\u00e9cessite<\/strong><\/p>\n\n\n\n<p>\ud83e\udd16 1 robot par utilisateur param\u00e9tr\u00e9 en STA<br>\ud83d\udcbb 1 ordinateur par utilisateur reli\u00e9 au m\u00eame LAN que les robots (en Wifi ou RJ45)<br>\ud83d\udcf6 1 point d\u2019acc\u00e8s wifi connu et joinable par les robots, reli\u00e9 au m\u00eame LAN que les ordinateurs <br>\ud83d\udc68\u200d\ud83d\udcbb 1 IDE install\u00e9 sur chaque ordinateur, ou bien un navigateur web pour IDEAL<\/p>\n\n\n\n<p class=\"has-text-align-center\"><strong>A privil\u00e9gier<\/strong><\/p>\n\n\n\n<p>\u2705 Si possible de connecter les robots et ordinateurs \u00e0 un m\u00eame LAN<br>\ud83e\udd16 Pour contr\u00f4ler 1 ou plusieurs Ova par utilisateur<br>\ud83c\udfe4 En pr\u00e9sentiel<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"has-text-align-center has-medium-font-size\"><strong>2 et 3. Sur un point d&#8217;acc\u00e8s Wifi MQTT <strong>LAN ou WAN<\/strong><\/strong> <strong>(STA)<\/strong><\/p>\n\n\n\n<p class=\"has-text-align-center\"><strong>N\u00e9cessite<\/strong><\/p>\n\n\n\n<p>\ud83e\udd16 1 robot par utilisateur param\u00e9tr\u00e9 en STA et MQTT<br>\ud83d\udcbb 1 ordinateur par utilisateur reli\u00e9 au m\u00eame LAN (ou WAN) que les robots (en Wifi ou RJ45)<br>\ud83d\udcf6 1 point d\u2019acc\u00e8s wifi connu et joinable par les robots, reli\u00e9 au m\u00eame LAN (ou WAN) que les ordinateurs  <br>\ud83d\udc68\u200d\ud83d\udcbb 1 IDE install\u00e9 sur chaque ordinateur, ou bien un navigateur web pour IDEAL<br>\ud83c\udf10 1 broker MQTT connu et joignable<\/p>\n\n\n\n<p class=\"has-text-align-center\"><strong>A privil\u00e9gier<\/strong><\/p>\n\n\n\n<p>\u2705 Si possible de connecter les robots et ordinateurs \u00e0 un m\u00eame LAN (ou WAN)<br>\ud83e\udd16 Pour contr\u00f4ler 1 ou plusieurs Ova par utilisateur<br>\ud83c\udfe4 En pr\u00e9sentiel ou distanciel<br>\ud83c\udfce\ufe0f Pour avoir les meilleures performances<br>\ud83d\udc6e\ud83c\udffb\u200d\u2642\ufe0f Pour administrer les robots et surveiller les utilisateurs<br>\ud83c\udfc6 Pour r\u00e9aliser des challenges gamifi\u00e9s entre robots<\/p>\n<\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"connexion-directe\">2. \ud83e\udd16 Connexion directe \u00e0 Ova (AP MODE, cas d&#8217;usage 1)<\/h2>\n\n\n\n<p>Se connecter en direct sur Ova vous permettra de<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Modifier ses param\u00e8tres r\u00e9seaux (voir section <a href=\"\/#settings-ideal\">Settings IDEAL<\/a>) <\/li><li>Programmer cette Ova (et seulement celle-ci) avec votre IDE via HTTP (voir section <a href=\"\/#dev-ide-tiers\">Programmez Ova dans votre IDE pr\u00e9f\u00e9r\u00e9<\/a>)<\/li><li>Programmer cette Ova (et seulement celle-ci) sans rien installer avec son IDEAL embarqu\u00e9 (voir section <a href=\"\/#dev-ideal\">Programmez Ova sans rien installer<\/a>)<\/li><\/ul>\n\n\n\n<p>Pour programmer plusieurs Ova \u00e0 la fois, pr\u00e9f\u00e9rez le cas d&#8217;usage 2 et 3 param\u00e9trable via le menu <a href=\"\/#settings-ideal\">Settings IDEAL<\/a>.<\/p>\n\n\n\n<p class=\"has-background\" style=\"background-color:#d4efff\">\ud83d\udd0d <strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">Information<\/mark><\/strong><br>La connexion directe avec Ova en wifi, vous prive d&#8217;acc\u00e8s \u00e0 Internet (si vous ne disposez pas d&#8217;une autre carte r\u00e9seaux reli\u00e9e \u00e0 Internet sur votre ordinateur). Si vous disposez d&#8217;un point d&#8217;acc\u00e8s wifi avec Internet et pour lequel vous connaissez le mot de passe, nous vous d\u00e9conseillons ce cas d&#8217;usage 1. Utiliser le uniquement pour param\u00e9trer votre (ou vos) Ova pour se connecter \u00e0 ce point d&#8217;acc\u00e8s wifi en STA MODE, afin de pouvoir les programmer via les cas d&#8217;usage 2 ou 3.  <\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"connexion-directe-phy\">2.1. \ud83d\udedc Connexion physique \u00e0 Ova<\/h3>\n\n\n\n<p>Le robot d\u00e9marre le mode point d&#8217;acc\u00e8s (AP) une fois que la LED scintille en bleu. D\u00e8s lors, vous pouvez voir un nouveau SSID visible commen\u00e7ant par &#8220;ova&#8221;.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/tutos.jusdeliens.com\/wp-content\/uploads\/2024\/10\/image-11-1024x430.png\" alt=\"\" class=\"wp-image-875\"\/><\/figure>\n\n\n\n<p>Sur Windows, cliquez sur l&#8217;ic\u00f4ne wifi dans la barre des t\u00e2ches en bas \u00e0 droite, attendez quelques instants que le syst\u00e8me scanne les points d&#8217;acc\u00e8s aux alentours. Si besoin, \u00e9teignez et red\u00e9marrez votre carte wifi. Vous devriez voir apparaitre votre Ova apr\u00e8s quelques secondes.<\/p>\n\n\n\n<p class=\"has-background\" style=\"background-color:#d4efff\">\ud83d\udd0d <strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">Information<\/mark><\/strong><br>Si vous ne trouvez pas toujours pas Ova apr\u00e8s plus de 30 secondes, v\u00e9rifiez bien que vous \u00eates bien d\u00e9connect\u00e9 de tout point d&#8217;acc\u00e8s. Si vous ne trouvez pas l&#8217;ic\u00f4ne wifi, vous n&#8217;avez peut-\u00eatre pas de carte wifi sur votre ordinateur. Dans ce cas, vous pouvez vous procurez un <a rel=\"noreferrer noopener\" href=\"https:\/\/www.amazon.fr\/TP-Link-TL-WN725N-Nano-Adaptateur-Wi-Fi\/dp\/B008IFXQFU\/ref=sr_1_6?keywords=dongle+wifi&amp;qid=1673935470&amp;sr=8-6\" target=\"_blank\">dongle wifi 2.4Ghz<\/a> dans le commerce, ou bien utiliser un ordinateur portable.<\/p>\n\n\n\n<p>Pour se connecter, veuillez saisir le mot de passe par d\u00e9faut (\u00e0 changer \u00e0 la premi\u00e8re connexion dans la section <strong>Settings<\/strong>)<\/p>\n\n\n\n<p class=\"has-very-light-gray-background-color has-background\">ovaladiva<\/p>\n\n\n\n<p>Une fois connect\u00e9 en wifi, Ova se met \u00e0 chanter une petite m\u00e9lodie de grave \u00e0 aigu\u00eb (les 5 premi\u00e8res notes de la gamme Do majeur\/ CM pour les puristes \ud83d\ude01). Notez qu&#8217;Ova ma\u00eetrise aussi sa gamme de l\u2019aigu\u00eb au grave, ce qu&#8217;elle ne manquera pas de vous signaler en cas de d\u00e9connexion.<\/p>\n\n\n\n<p class=\"has-background\" style=\"background-color:#ead1d1\">\u26d4 <strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">Important<\/mark><\/strong><br>La <strong>connexion <\/strong>avec Ova peut \u00eatre <strong>alt\u00e9r\u00e9e <\/strong>voir interrompue inopin\u00e9ment dans les cas suivants : <strong>distance \u00e0 Ova trop grande<\/strong> (id\u00e9alement &lt;5 m\u00e8tres), <strong>obstacles <\/strong>entre Ova et l&#8217;ordinateur (\u00e9viter les murs \u00e9pais ou <strong>cage de faraday<\/strong>), <strong>r\u00e9seaux wifi pr\u00e9f\u00e9r\u00e9 \u00e0 proximit\u00e9<\/strong> de l&#8217;ordinateur avec connexion Internet (oublier ces r\u00e9seaux de l&#8217;ordinateur et cocher l&#8217;option reconnexion automatique pour rester connecter Ova), <strong>batterie d&#8217;Ova faible<\/strong> <strong>ou en cours de recharge<\/strong> (fonction id\u00e9al en tension nominale, quand Ova est non reli\u00e9e au secteur), ou plus rarement quand <strong>plusieurs interfaces r\u00e9seaux<\/strong> sont connect\u00e9es en m\u00eame temps sur l&#8217;ordinateur (activer uniquement l&#8217;interface wifi et d\u00e9sactiver les autres i.e. Ethernet et\/ou machine virtuelle). <\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"connexion-directe-log\">2.2. \ud83d\udcbb Connexion logique \u00e0 Ova<\/h3>\n\n\n\n<p>En \u00e9tant connect\u00e9 sur le m\u00eame r\u00e9seau qu&#8217;Ova et en connaissant son adresse IP, il est possible de requ\u00eater le serveur HTTP embarqu\u00e9 dans Ova pour piloter ses actionneurs, lire l&#8217;\u00e9tat de ses capteurs et changer ses param\u00e8tres r\u00e9seaux, soit <\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Dans l&#8217;interface fullweb IDEAL embarqu\u00e9e dans Ova, accessible via votre navigateur web<\/li><li>Directement dans votre navigateur via la barre d&#8217;adresse ou avec des outils de requ\u00eatage HTTP comme <a rel=\"noreferrer noopener\" href=\"https:\/\/www.postman.com\/downloads\/\" target=\"_blank\">Postman<\/a><\/li><li>Dans un environnement de d\u00e9veloppement (IDE) via un langage de programmation comme <a href=\"https:\/\/www.python.org\/downloads\/\" target=\"_blank\" rel=\"noreferrer noopener\">Python<\/a><\/li><\/ul>\n\n\n\n<p>Pour connaitre l&#8217;adresse IP d&#8217;Ova sur ovaOS 2.x.x<\/p>\n\n\n\n<p class=\"has-very-light-gray-background-color has-background\"><a href=\"http:\/\/192.168.4.1\">http:\/\/192.168.71.1<\/a> (plus rapide)<br>ou<br><a href=\"http:\/\/ova.local\">http:\/\/ovaXXXXXXX.local<\/a> (plus long car n\u00e9cessite une r\u00e9solution DNS pr\u00e9alable, XXXXXXX \u00e0 remplacer par le nom de votre Ova)<\/p>\n\n\n\n<p>Sur ovaOS 1.x.x (pour les anciennes versions d&#8217;Ova avant 2024)<\/p>\n\n\n\n<p class=\"has-very-light-gray-background-color has-background\"><a href=\"http:\/\/192.168.4.1\">http:\/\/192.168.4.1<\/a><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"dev-ide-tiers\">2.3. \u2328\ufe0f Programmez votre Ova dans votre IDE pr\u00e9f\u00e9r\u00e9<\/h3>\n\n\n\n<p>Vous souhaitez programmer Ova dans votre IDE pr\u00e9f\u00e9r\u00e9 comme VS Code ou Pycharm ? Pour cela, 2 options s&#8217;offrent \u00e0 vous selon le langage de programmation que vous souhaitez utiliser<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">2.3.1. \ud83d\udc0d Python<\/h4>\n\n\n\n<p>T\u00e9l\u00e9chargez notre module Python <strong>pyrobotx <\/strong>sur la page des t\u00e9l\u00e9chargements pour vous permettre de programmer les actionneurs et lire les capteurs d&#8217;Ova en orient\u00e9 objet, via la classe OvaClientHttpV2 (ou OvaClientHttpV1 pour les anciennes versions d&#8217;ovaOS 1.X.X avant 2024), exposant les m\u00e9thodes de l&#8217;interface IRobot.<\/p>\n\n\n\n<p>Vous pouvez \ud83d\udc49 <a rel=\"noreferrer noopener\" href=\"https:\/\/jusdeliens.com\/ovapythonapi\/\" target=\"_blank\">r\u00e9cup\u00e9rer un zip standalone en cliquant ici<\/a>, ou bien \ud83d\udc49 <a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/jusdeliens\/pyrobotx\" target=\"_blank\">cloner notre repository github en suivant les \u00e9tapes du README.md<\/a> si vous \u00eates \u00e0 l&#8217;aise avec git et les submodules.<\/p>\n\n\n\n<p class=\"has-background\" style=\"background-color:#d4efff\">\ud83d\udd0d <strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">Information<\/mark><\/strong><br>Comme son nom l&#8217;indique, la classe <strong>OvaClientHttpV2 <\/strong>impl\u00e9mente les responsabilit\u00e9s de l&#8217;interface, via un client HTTP (d&#8217;o\u00f9 la d\u00e9pendence avec le module request pour effectuer des requ\u00eates HTTP sur le serveur embarqu\u00e9 dans le robot). Cette m\u00eame interface <a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/jusdeliens\/pyrobotx\/blob\/main\/client.py\" target=\"_blank\">IRobot est \u00e9galement h\u00e9rit\u00e9e par d&#8217;autres clients<\/a> (<strong>OvaClientMqtt<\/strong>, <strong>OvaClientHttpV1<\/strong>, <strong>OvaClientHttpV2<\/strong>) selon la version du robot et du protocole, ce qui vous permettra de changer de cas d&#8217;usage (en STA LAN plut\u00f4t qu&#8217;en AP, ou bien en MQTT WAN ou LAN) en changeant qu&#8217;une seule ligne dans votre programme, celle o\u00f9 vous instanciez le client via le constructeur de la classe fille h\u00e9ritant de IRobot.<\/p>\n\n\n\n<p class=\"has-background\" style=\"background-color:#ead1d1\">\u26d4 <strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">Important<\/mark><\/strong><br>Gardez \u00e0 l&#8217;esprit que le protocole HTTP repose sur le TCP et est donc assez gourmand en bande passante (3 ways handshake \u00e0 chaque session) surtout pour serveur web embarqu\u00e9 sur votre minuscule Ova. Si vous souhaitez vous abonner \u00e0 un flux constant des capteurs avec un faible temps de r\u00e9ponse (ex: pour du streaming camera), privil\u00e9gier le protocole MQTT (case d&#8217;usage 2 ou 3) qui sera plus r\u00e9actif, bien que plus complexe \u00e0 administrer par l&#8217;interm\u00e9diaire d&#8217;un broker.<\/p>\n\n\n\n<p class=\"has-background\" style=\"background-color:#ead1d1\">\u26d4 <strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">Important<\/mark><\/strong><br>N&#8217;oubliez pas de bien r\u00e9cup\u00e9rer tous les submodules de mani\u00e8re r\u00e9cursive, suite \u00e0 quoi vous devriez avoir les sous dossiers pyanalytx pychromatx pymusx remplis. S&#8217;ils sont vides, ouvrez un terminal \u00e0 la racine du projet et entrer :<br><strong>git submodule update &#8211;init &#8211;recursive<\/strong><\/p>\n\n\n\n<p>Vous trouverez \u00e0 la racine du projet clon\u00e9 ou dezipp\u00e9, le fichier <strong>main.py <\/strong>dans lequel un programme d&#8217;exemple est fourni.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from client import *\n\nimport random\nimport time\nimport env\n\n# Comment this line above \ud83d\udc47 to disable OvaClientMQTT\n<strong># robot:IRobot = OvaClientMqtt(robotId=env.ROBOTID, clientId=env.PLAYERID, arena=env.ARENA, username=env.USERNAME, password=env.PASSWORD, server=env.BROKERADDRESS, port=env.BROKERPORT, verbosity=env.VERBOSITY, useProxy=env.USEPROXY)<\/strong>\n\n# Uncomment this line above \ud83d\udc47 to control Ova on a LAN\n<strong>robot:IRobot = OvaClientHttpV2(url=\"192.168.71.1\", verbosity=3)<\/strong>\n\n...<\/code><\/pre>\n\n\n\n<p>Commencer par commenter la ligne d&#8217;instanciation du robot avec le constructeur <strong>OvaClientMQTT<\/strong>, et d\u00e9commentez celle utilisant le constructeur <strong>OvaClientHttpV2<\/strong>.<\/p>\n\n\n\n<p>V\u00e9rifiez que les d\u00e9pendences list\u00e9es dans le fichier requirements.txt sont install\u00e9es en executant l&#8217;instruction suivante dans une console<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pip install --no-cache-dir -r requirements.txt<\/code><\/pre>\n\n\n\n<p>V\u00e9rifiez que vous \u00eates bien connect\u00e9 sur le m\u00eame r\u00e9seau que votre Ova, et qu&#8217;elle est bien allum\u00e9e en \u00e9tat AP MODE (LED devrait scintiller en bleue de mani\u00e8re p\u00e9riodique, avant d&#8217;executer le script).<\/p>\n\n\n\n<p>Enfin, d\u00e9marrez l&#8217;interpreteur python pour executer le script main.py et Ova devrait suivre les instructions du programme, qui selon les versions devrait<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>attendre un certain temps pour qu&#8217;Ova r\u00e9ponde<\/li><li>puis jouer une m\u00e9lodie de d\u00e9marrage<\/li><li>puis renvoyer l&#8217;\u00e9tat des capteurs dans la console pendant une dizaine de seconde (&#8220;Test sensors&#8221;)<\/li><li>puis se d\u00e9placer de mani\u00e8re al\u00e9atoire en jouant une note et une couleur \u00e0 chaque changement de d&#8217;ordre moteur, et ce pendant une dizaine de seconde<\/li><li>puis capture r\u00e9guli\u00e8rement des images de la cam\u00e9ra accessible dans un fichier <strong><em>img.jpeg<\/em><\/strong> cr\u00e9\u00e9 \u00e0 la rachine, en affichant le d\u00e9lai entre chaque prise dans la console pendant une dizaine de seconde \u00e9galement<\/li><li>enfin jouer une m\u00e9lodie de fin avant que le programme et le robot ne s&#8217;arr\u00eate<\/li><\/ul>\n\n\n\n<h4 class=\"wp-block-heading\" id=\"api-http\">2.3.2. \ud83c\udf10 API HTTP<\/h4>\n\n\n\n<p>Vous souhaitez programmer en langage web ou tout autre langage disposant de librairie cliente HTTP ? C&#8217;est \u00e9galement possible, en cr\u00e9ant vous m\u00eame votre surcouche <strong>OvaClientX <\/strong>en orient\u00e9 objet ou en imp\u00e9ratif en requ\u00eatant le serveur HTTP d&#8217;Ova via les m\u00e9thodes GET et POST.<\/p>\n\n\n\n<p><strong>Pour piloter les actionneurs<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>\ud83d\udceb<strong>POST<\/strong> sur l&#8217;URL <strong>http:\/\/&lt;ip_robot&gt;\/api\/robot <\/strong>avec &lt;ip_robot&gt; \u00e0 remplacer par <a href=\"\/#connexion-directe-log\">l&#8217;adresse IP fixe d&#8217;Ova sur son AP<\/a><\/li><li>\u2709\ufe0f <strong>Content-Type: &#8220;application\/json&#8221;<\/strong> \u00e0 POST en contenu de la requ\u00eate HTTP <ul><li><strong>&#8220;buzzer&#8221; <\/strong>: <em>(Uint16,Uint16)<\/em>. Set a sequence of tones, with each tone described with 2 params<\/li><li><strong>&#8220;motor&#8221;<\/strong> : <em>(Int8,Int8,Uint16)<\/em>. Set a sequence of motor moves, with each move described with 3 params : motor power left (from -100 to 100 ), motor power right, and duration (in ms)<\/li><li><strong>&#8220;led&#8221;<\/strong> : Set a animation of colors, described with several keys according to animation type<ul><li><strong>&#8220;animation&#8221;<\/strong> : <em>&#8220;static&#8221; | &#8220;twinkle&#8221; | &#8220;fade&#8221; | &#8220;hue&#8221; | &#8220;custom&#8221; <\/em><\/li><li><strong>&#8220;rgb&#8221;<\/strong> : <em>(Uint8, Uint8, Uint8)<\/em>. The base color of the animation. Required only for animation values &#8220;static&#8221; &#8220;twinkle&#8221; &#8220;fade&#8221; <\/li><li><strong>&#8220;repeat&#8221;<\/strong> : <em>Uint8<\/em>. How many time the animation must repeat before ending. Required only for animation values &#8220;twinkle&#8221; &#8220;fade&#8221; &#8220;hue&#8221; &#8220;custom&#8221;<\/li><li><strong>&#8220;duration&#8221;<\/strong> : <em>Uint16<\/em>. The duration of the animation period in milliseconds. Required only for animation values &#8220;twinkle&#8221; &#8220;fade&#8221; &#8220;hue&#8221; &#8220;custom&#8221;<\/li><li><strong>&#8220;colors&#8221;<\/strong> : <em>Array[ (Uint8, Uint8, Uint8, Uint16) ]<\/em>. A sequence of fixed array of 4 params describing in the order : red, green, blue color (from 0 to 255 each) and the duration in milliseconds. Required only for animation value &#8220;custom&#8221;.<\/li><\/ul><\/li><li><strong>&#8220;reboot&#8221;<\/strong> : <em>Uint8<\/em>. For restarting Ova whatever the value<\/li><\/ul><\/li><\/ul>\n\n\n\n<p><strong>Pour lire les capteurs<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>\ud83d\udceb<strong>GET <\/strong>sur l&#8217;URL <strong><strong>http:\/\/&lt;ip_robot&gt;\/api\/robot<\/strong><\/strong> avec &lt;ip_robot&gt; \u00e0 remplacer par <a href=\"\/#connexion-directe-log\">l&#8217;adresse IP fixe d&#8217;Ova sur son AP<\/a><\/li><li>\u2709\ufe0f <strong>Content-Type: &#8220;application\/json&#8221;<\/strong> \u00e0 GET en contenu de la r\u00e9ponse HTTP <ul><li><strong>&#8220;version&#8221; <\/strong>: <em>string<\/em>. La version d&#8217;OvaOS embarqu\u00e9 dans Ova<\/li><\/ul><ul><li><strong>&#8220;battery&#8221;<\/strong> : State of the robot LIPO battery<ul><li><strong>&#8220;voltage&#8221;<\/strong> : <em>Uint16<\/em>. In millivolt, nominal between 3.6V (empty) and 4.2V (fully recharged)<\/li><li><strong>&#8220;isCharging&#8221;<\/strong> : <em>bool<\/em>. True if the battery is charging, false otherwise. <em>Not implemented.<\/em><\/li><\/ul><\/li><li><strong>&#8220;photo_front&#8221;<\/strong> : state of the front photosensor below Ova, to be use to track lane on an active surface (like tablet)<ul><li><strong>&#8220;lum&#8221;<\/strong> : <em>Uint8<\/em>. From 0 (dark) to 255 (light)<\/li><\/ul><\/li><li><strong>&#8220;photo_back&#8221;<\/strong> : state of the back photosensor below Ova<ul><li><strong>&#8220;lum&#8221;<\/strong> : <em>Uint8<\/em>. From 0 (dark) to 255 (light)<\/li><\/ul><\/li><\/ul><ul><li><strong>&#8220;reboot&#8221;<\/strong> : <em>Uint8<\/em>. For restarting Ova whatever the value<\/li><\/ul><\/li><\/ul>\n\n\n\n<p class=\"has-background\" style=\"background-color:#d4efff\">\ud83d\udd0d <strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">Information<\/mark><\/strong><br>Il existe d&#8217;autres routes requetable en HTTP sur l&#8217;API d&#8217;Ova pour des fonctionnalit\u00e9s plus avanc\u00e9es. N&#8217;h\u00e9sitez pas \u00e0 <a rel=\"noreferrer noopener\" href=\"https:\/\/jusdeliens.com\/contact\" target=\"_blank\">nous contacter<\/a> si vos besoins ne sont pas couverts par les \u00e9l\u00e9ments pr\u00e9sent\u00e9s ci-dessus.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"dev-ideal\">2.4. \u2728 Programmez votre Ova sans rien installer, gr\u00e2ce \u00e0 son IDEAL embarqu\u00e9 (version beta)<\/h3>\n\n\n\n<p>L&#8217;environnement de d\u00e9veloppement IDEAL d&#8217;Ova est con\u00e7u pour fonctionner dans votre navigateur web, sans rien n&#8217;avoir \u00e0 installer ni configurer sur votre ordinateur, et ce, sans n\u00e9cessiter de connexion \u00e0 Internet. <\/p>\n\n\n\n<p>Il est IDEAL pour configurer Ova et pour r\u00e9pondre aux probl\u00e8mes fr\u00e9quents quand il est impossible d&#8217;installer des logiciels soit parce que<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>les machines sont prot\u00e9g\u00e9s par des droits administrateurs non communiqu\u00e9s<\/li><li>les versions des OS install\u00e9s ne sont pas compatibles<\/li><li>le(s) proxy(ies) de l&#8217;\u00e9tablissement emp\u00eache(nt) leur usage<\/li><li>par manque de temps<\/li><\/ul>\n\n\n\n<p>Notre leitmotiv est d&#8217;en faire votre IDEAL, un <strong>IDE <\/strong>pour permettre un apprentissage optimal de l&#8217;<strong>AL<\/strong>gorithmique par le jeu et la robotique, en s&#8217;adaptant \u00e0 tous les contextes p\u00e9dagogiques imaginables.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">2.4.1 \ud83d\udcbb Ouvrir IDEAL embarqu\u00e9 dans Ova<\/h4>\n\n\n\n<p>Ouvrez votre navigateur web pr\u00e9f\u00e9r\u00e9 (de pr\u00e9f\u00e9rence Firefox, Chrome, ou Safari pour lesquels nous avons optimis\u00e9 les fonctionnalit\u00e9s), puis tapez dans la barre d&#8217;adresse l&#8217;URL suivante, selon la version du firmware d&#8217;Ova (2.x.x par d\u00e9faut depuis octobre 2023).<\/p>\n\n\n\n<p>Apr\u00e8s quelques instants (environ 10 secondes), le launcher d&#8217;IDEAL s&#8217;affiche et une animation de chargement d&#8217;Ova d\u00e9bute, indiquant la progression du d\u00e9marrage. Le chargement devrait prendre moins de 1 minute selon la distance qui vous s\u00e9pare de votre robot.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/tutos.jusdeliens.com\/wp-content\/uploads\/2023\/10\/image-1-1024x555.png\" alt=\"\" class=\"wp-image-389\"\/><\/figure>\n\n\n\n<p class=\"has-background\" style=\"background-color:#d4efff\">\ud83d\udd0d <strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">Information<\/mark><\/strong><br>La plupart des navigateurs mettent en veille les applications web qu&#8217;ils ex\u00e9cutent une fois qu&#8217;ils sont mis en arri\u00e8re plan, ce qui peut entrainer une d\u00e9connexion du robot vous obligeant \u00e0 recharger IDEAL. Pour \u00e9viter d&#8217;attendre \u00e0 nouveau ce chargement, nous vous recommandons de conserver votre navigateur en premier plan pendant toute votre utilisation d&#8217;IDEAL.<\/p>\n\n\n\n<p>Une fois le chargement termin\u00e9, vous devriez voir s&#8217;afficher le workspace (dossier de travail) initial d&#8217;IDEAL <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/tutos.jusdeliens.com\/wp-content\/uploads\/2023\/10\/image-4-1024x576.png\" alt=\"\" class=\"wp-image-393\"\/><\/figure>\n\n\n\n<p class=\"has-background\" style=\"background-color:#d4efff\">\ud83d\udd0d <strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">Information<\/mark><\/strong><br>Il est possible comme sur la capture ci-dessus qu&#8217;aucun projet n\u2019apparaissent dans <strong>Workspace <\/strong>si l&#8217;administrateur de votre Ova ne l&#8217;a pas souhait\u00e9. Si vous souhaitez charger les projets de prise en main d&#8217;Ova, <a href=\"https:\/\/jusdeliens.com\/ovaidealsamples\" target=\"_blank\" rel=\"noreferrer noopener\">r\u00e9cup\u00e9rer le workspace .tar depuis notre site accessible \u00e0 la page suivante<\/a>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/tutos.jusdeliens.com\/wp-content\/uploads\/2023\/10\/image-14-1024x576.png\" alt=\"\" class=\"wp-image-431\"\/><\/figure>\n\n\n\n<p class=\"has-background\" style=\"background-color:#d4efff\">\ud83d\udd0d <strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">Information<\/mark><\/strong><br>Il est possible que IDEAL s&#8217;affiche en mode sombre sur votre navigateur. Cela d\u00e9pend du mode s\u00e9lectionn\u00e9 dans votre syst\u00e8me d&#8217;exploitation. Par s\u00e9lectionner le th\u00e8me clair ou sombre, rendez vous dans les param\u00e8tres de personnalisation des couleurs de votre OS. <br>Sous Windows 11 : dans Param\u00e8tres -&gt; Personnalisation -&gt; Couleurs -&gt; Choisir votre mode<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">2.4.2 \ud83e\udded Barre de navigation<\/h4>\n\n\n\n<p>Toujours pr\u00e9sente \u00e0 gauche, la barre de navigation vous permet de savoir dans quelle partie du logiciel vous vous trouvez. Vous trouverez de haut en bas<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\">\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img decoding=\"async\" src=\"https:\/\/tutos.jusdeliens.com\/wp-content\/uploads\/2023\/10\/image-6.png\" alt=\"\" class=\"wp-image-395\"\/><\/figure><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\">\n<ul class=\"wp-block-list\"><li>La section <strong>Workspace<\/strong> tout en haut, pour votre permettre de cr\u00e9er, charger, sauvegarder, ouvrir ou supprimer les projets de d\u00e9veloppement<\/li><li>La section <strong>Code<\/strong> qui s&#8217;affichera une fois un projet de d\u00e9veloppement ouvert pour vous permettre d&#8217;acc\u00e9der \u00e0 la modification de ses sources et \u00e0 son ex\u00e9cution en debug<\/li><li>D&#8217;\u00e9ventuelles extensions si le workspace charg\u00e9 en contient<\/li><li>D&#8217;\u00e9ventuels raccourcis des projets \ud83d\udccc en dessous du s\u00e9parateur horizontal, pour les ex\u00e9cuter directement en release, sans voir les sources du projet <\/li><li>La section <strong>Settings <\/strong>tout en bas, pour modifier les param\u00e8tres r\u00e9seaux du robot<\/li><\/ul>\n<\/div>\n<\/div>\n\n\n\n<h4 class=\"wp-block-heading\">2.4.3. \u26a1 Barre de status<\/h4>\n\n\n\n<p>Toujours pr\u00e9sente en bas, la barre de status vous donne les informations suivantes de gauche \u00e0 droite :<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/tutos.jusdeliens.com\/wp-content\/uploads\/2023\/10\/image-7.png\" alt=\"\" class=\"wp-image-396\"\/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>la version d&#8217;IDEAL actuellement utilis\u00e9e sur votre navigateur, ainsi que celle du firmware ex\u00e9cut\u00e9 sur le robot<\/li><li>les liens hypertextes vers les mentions l\u00e9gales ainsi que vers la page contact pour nous joindre en cas de probl\u00e8me avec le robot<\/li><li>l&#8217;\u00e9tat du robot en temps r\u00e9el : la taille de sa m\u00e9moire flash embarqu\u00e9e, la tension de sa batterie, la RAM consomm\u00e9e, la temp\u00e9rature interne de son processeur, ainsi que l&#8217;\u00e9tat de connexion sans fil.<\/li><\/ul>\n\n\n\n<p class=\"has-background\" style=\"background-color:#d4efff\">\ud83d\udd0d <strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">Information<\/mark><\/strong><br>Les t\u00e9moins d&#8217;\u00e9tat d&#8217;Ova vous donne de pr\u00e9cieuses indications pour travailler dans les meilleures conditions. Veuillez \u00e0 la garder la plus proche de votre ordinateur (t\u00e9moin de connexion en vert avec 3 barres), dans une plage de temp\u00e9rature processeur entre 20\u00b0C et 60\u00b0C (t\u00e9moin de temp\u00e9rature gris), et tension batterie &gt; 10% et de m\u00e9moire flash &lt; 90%. <\/p>\n\n\n\n<p class=\"has-background\" style=\"background-color:#ead1d1\">\u26d4 <strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">Important<\/mark><\/strong><br>En dehors de cette plage de fonctionnement optimale, le robot risque de s&#8217;endommager de mani\u00e8re irr\u00e9versible ! La garantie ne couvre pas les \u00e9ventuels probl\u00e8mes qui surviendraient apr\u00e8s un tel usage. Plus d&#8217;informations dans nos <a href=\"https:\/\/jusdeliens.com\/mentions-legales\" target=\"_blank\" rel=\"noreferrer noopener\">conditions d&#8217;utilisation et mentions l\u00e9gales en cliquant ici<\/a>.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">2.4.4 \ud83d\udcc2 Les grands projets d&#8217;Ova<\/h4>\n\n\n\n<p>Une fois connect\u00e9 \u00e0 Ova en AP MODE et IDEAL ouvert dans votre navigateur, plusieurs cartes apparaissent apr\u00e8s le chargement :<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/tutos.jusdeliens.com\/wp-content\/uploads\/2023\/10\/image-2-1024x576.png\" alt=\"\" class=\"wp-image-391\"\/><\/figure>\n\n\n\n<h5 class=\"wp-block-heading\">\ud83e\uddea Les projets &#8220;samples&#8221;<\/h5>\n\n\n\n<p>N&#8217;h\u00e9sitez pas \u00e0 regarder et modifier les projets d\u2019exemple pour d\u00e9couvrir tous les pouvoirs d&#8217;Ova <\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>sa led pour la faire briller comme un diamant (alias <strong>ovashines<\/strong>)<\/li><li>son \u0153il de cyborg pour voir tout ce qu&#8217;elle voit (alias <strong>ovasees<\/strong>)<\/li><li>son corps d\u2019athl\u00e8te pour la faire bouger avec ses moteurs (alias <strong>ovamoves<\/strong>)<\/li><li>sa voix de diva pour la faire chanter en boucle encore et encore (alias <strong>ovasings<\/strong>)<\/li><li>ses capteurs de lumi\u00e8res sous son ch\u00e2ssis pour la faire suivre des trajectoires lumineuses (alias <strong>ovasenses<\/strong>)<\/li><\/ul>\n\n\n\n<p class=\"has-background\" style=\"background-color:#fdebb9\">\ud83d\udea7 <strong><mark style=\"background-color:rgba(0, 0, 0, 0);color:#dca306\" class=\"has-inline-color\">Work in progress<\/mark><\/strong> <br>D&#8217;autres projets sont dans les cartons et vous seront partag\u00e9s lors des prochaines mises \u00e0 jour : pour utiliser sa boussole, son acc\u00e9l\u00e9rom\u00e8tre&#8230; Pour r\u00e9cup\u00e9rer les derniers projets de prise en main, <a href=\"https:\/\/jusdeliens.com\/ovaidealsamples\" target=\"_blank\" rel=\"noreferrer noopener\">r\u00e9cup\u00e9rer le workspace .tar depuis notre site accessible \u00e0 la page suivante<\/a>.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">\u2697\ufe0f Cr\u00e9ez et g\u00e9rez vos propres projets<\/h5>\n\n\n\n<p>Les cartes en gris pointill\u00e9 sont toujours pr\u00e9sentes et vous permettent :<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>de cr\u00e9er un nouveau projet<\/li><li>de charger un workspace de projets dans une archive .tar depuis votre ordinateur, ou un ordinateur distant via son url http<\/li><li>de sauvegarder les projets r\u00e9alis\u00e9s sur votre ordinateur et\/ou pouvoir les transmettre sur d&#8217;autres ordinateurs<\/li><\/ul>\n\n\n\n<p>Pour pouvoir cr\u00e9er votre propre workspace et alterner les d\u00e9veloppement entre IDEAL et votre IDE pr\u00e9f\u00e9r\u00e9 (fonctionnalit\u00e9 en version beta), voici les \u00e9tapes \u00e0 suivre <\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Cr\u00e9er un dossier <strong>workspaces<\/strong> comme racine de tous vos projets<\/li><li>Cr\u00e9er \u00e0 l&#8217;int\u00e9rieur du dossier <strong>workspaces <\/strong>racine <strong>1 dossier par projet<\/strong> portant le nom du projet sans espaces ni caract\u00e8res sp\u00e9ciaux.<\/li><li>Ajouter dans chaque dossier projet \u00e0 c\u00f4t\u00e9 de ses sources un fichier <em>settings.json<\/em> contenant a minima les informations pr\u00e9cis\u00e9es ci-apr\u00e8s.<\/li><li>Privil\u00e9gier des noms courts pour tous vos fichiers et sous dossiers, sans espaces ni caract\u00e8res sp\u00e9ciaux<\/li><li>Utiliser votre outil de compression pr\u00e9f\u00e9r\u00e9 pour archiver le dossier workspaces<br>&#8211; graphique <br>avec <strong>7zip <\/strong>: clic droit sur dossier racine <strong>workspaces <\/strong>-&gt; pr\u00e9ciser &#8220;format de l&#8217;archive&#8221; <strong>tar<\/strong>, et &#8220;m\u00e9thode de compression&#8221; <strong>POSIX<\/strong><br>&#8211; en ligne de commande dans le dossier contenant le dossier racine workspaces<br><strong>tar -cf workspace.tar workspaces<\/strong><\/li><li>Cliquer sur <strong>Load project<\/strong> puis s\u00e9lectionner votre archive dans l&#8217;explorateur de fichiers<\/li><\/ol>\n\n\n\n<p>Les cartes entour\u00e9es en gris continue sont les projets charg\u00e9s de votre workspace que vous pouvez<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Ouvrir pour \u00e9dition dans la section <strong>Code <\/strong>en cliquant dessus (clic gauche souris)<\/li><li>Placer en raccourci dans la barre de navigation en cliquant sur le bouton punaise\ud83d\udccc<\/li><li>Dupliquer en cliquant sur le bouton de copie<\/li><li>Ex\u00e9cuter en mode debug dans la section <strong>Code <\/strong>en cliquant sur le bouton play \u25b6\ufe0f<\/li><li>Supprimer en cliquant sur le bouton corbeille \ud83d\uddd1\ufe0f <\/li><\/ul>\n\n\n\n<p class=\"has-background\" style=\"background-color:#ead1d1\">\u26d4 <strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">Important<\/mark><\/strong><br>Une fois supprim\u00e9, le projet est d\u00e9finitivement supprim\u00e9 d&#8217;IDEAL et sera impossible \u00e0 r\u00e9cup\u00e9rer en cas d&#8217;erreur. Prenez garde \u00e0 bien sauvegarder le workspace en cliquant sur la carte en pointill\u00e9 <strong>Save projects<\/strong>.<\/p>\n\n\n\n<p>L&#8217;affichage et la gestion de chaque projet dans IDEAL est r\u00e9git par son fichier<em> settings.json<\/em> qu&#8217;il contient. Pour toute modification avanc\u00e9e dans ce projet, ouvrez celui dans la section <strong>Code <\/strong>pour y apporter des modifications. <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/tutos.jusdeliens.com\/wp-content\/uploads\/2023\/10\/image-8.png\" alt=\"\" class=\"wp-image-398\"\/><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>Le nom du projet affich\u00e9 dans la carte du workspace est la valeur associ\u00e9e \u00e0 la cl\u00e9 <strong>name<\/strong><\/li><li>Le valeur de <strong>description <\/strong>est affich\u00e9e en dessous de son nom<\/li><li>Tous les projets tagg\u00e9s <strong>public<\/strong> (cl\u00e9 <strong>&#8220;private&#8221;: true<\/strong>) charg\u00e9s dans votre workspace, sont accessibles \u00e0 toute personne connect\u00e9e sur le m\u00eame r\u00e9seau que votre Ova, et pourront \u00eatre charg\u00e9s dans IDEAL sur une autre machine. Par d\u00e9faut tous les projets cr\u00e9\u00e9s sont d\u00e9finis en priv\u00e9.<\/li><li>Si la valeur de la cl\u00e9 <strong>pinned<\/strong> est \u00e0 <strong>true<\/strong>, un raccourci d\u2019ex\u00e9cution du projet sera disponible dans la barre de navigation en dessous du s\u00e9parateur horizontale. Utiliser la cl\u00e9 extension pour appara\u00eetre au dessus du s\u00e9parateur.<\/li><li>Si la valeur de la cl\u00e9 <strong>idealonly <\/strong>est \u00e0 <strong>true<\/strong>, le projet ne sera pas sauvegard\u00e9 dans l&#8217;archive au clic sur <strong>Save projects<\/strong><\/li><li>Si la valeur de la cl\u00e9 <strong>hidden <\/strong>est \u00e0 <strong>true<\/strong>, le projet ne sera pas affich\u00e9 dans la section <strong>Workspace<\/strong><\/li><li>Si votre projet d\u00e9pend d&#8217;autre projets du workspace pour fonctionner, rajouter le nom de cette d\u00e9pendance dans les valeurs \u00e0 la cl\u00e9 <strong>dependencies<\/strong><\/li><li>La cl\u00e9 <strong>displayFileOnProjectOpened <\/strong>permet de pr\u00e9ciser le fichier du projet qui sera charg\u00e9 par d\u00e9faut dans la section <strong>Code<\/strong><\/li><\/ul>\n\n\n\n<p class=\"has-background\" style=\"background-color:#d4efff\">\ud83d\udd0d <strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">Information<\/mark><\/strong><br>Les modifications du fichier <em>settings.json<\/em> d&#8217;un projet ne sont pas charg\u00e9es \u00e0 chaud par IDEAL. Pour que ces derni\u00e8res prennent effet, sauvegarder le projet avec le bouton <strong>Save projects<\/strong> et recharger le en cliquant sur <strong>Load projects<\/strong> dans la section <strong>Workspace<\/strong>.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">2.4.5 \ud83d\udc14 Code code codec<\/h4>\n\n\n\n<p>Envie de coder ? C&#8217;est parti !<\/p>\n\n\n\n<p>Commen\u00e7ons par un projet existant pour se faire la main en cliquant sur la carte du projet <strong>ovatalks<\/strong>. La page suivante s&#8217;affiche.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/tutos.jusdeliens.com\/wp-content\/uploads\/2023\/10\/image-9-1024x576.png\" alt=\"\" class=\"wp-image-403\"\/><\/figure>\n\n\n\n<p>L&#8217;\u00e9cran se divise en plusieurs parties que nous allons rapidement parcourir ensemble de gauche \u00e0 droite.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">\ud83d\udcd1 Le s\u00e9lecteur de fichiers<\/h5>\n\n\n\n<p>A gauche de l&#8217;\u00e9diteur de code, il liste tous les fichiers du projets. Cliquez sur le fichier que vous souhaitez \u00e9diter. Une fois s\u00e9lectionn\u00e9, le contenu du fichier s&#8217;ouvre dans l&#8217;\u00e9diteur \u00e0 droite dans lequel vous pourrez le modifier. <\/p>\n\n\n\n<h5 class=\"wp-block-heading\">\ud83d\udcdd L&#8217;\u00e9diteur de fichier<\/h5>\n\n\n\n<p>L&#8217;\u00e9diteur embarqu\u00e9 vous permet de modifier le contenu des fichiers directement dans votre navigateur. Un t\u00e9moin orange apparait \u00e0 droite du fichier dans le s\u00e9lecteur une fois modifi\u00e9, indiquant que des modifications n&#8217;ont pas \u00e9t\u00e9 sauvegard\u00e9es. N&#8217;oubliez pas de r\u00e9guli\u00e8rement sauvegarder votre travail avec le raccourci CTRL+S.<\/p>\n\n\n\n<p class=\"has-background\" style=\"background-color:#ead1d1\">\u26d4 <strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">Important<\/mark><\/strong><br>Par d\u00e9faut, les modifications apport\u00e9es sont enregistr\u00e9es dans la m\u00e9moire du navigateur (et non sur le robot). Attention donc \u00e0 ne pas fermer pr\u00e9matur\u00e9ment le navigateur ou l&#8217;onglet IDEAL, ou bien changer de page par un retour arri\u00e8re, sous peine de perdre tout le travail effectu\u00e9.<\/p>\n\n\n\n<p>Une fois votre code \u00e9crit, cliquez sur le bouton play \u25b6\ufe0f en bas de l&#8217;\u00e9diteur pour d\u00e9marrer l\u2019ex\u00e9cution de votre projet dans l&#8217;iframe de droite.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">\ud83d\udcac La console<\/h5>\n\n\n\n<p>Une fois d\u00e9marr\u00e9, utilisez la console pour dialoguer avec votre programme en cours d&#8217;ex\u00e9cution. Pour bien utiliser cette console dans votre <em>script.js<\/em>, reportez vous \u00e0 la librairie <strong>jsideal<\/strong> dans les d\u00e9pendances du projet, et utiliser les fonctions <em>Ideal.prompt<\/em> et <em>console.log<\/em>. <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/tutos.jusdeliens.com\/wp-content\/uploads\/2023\/10\/image-11-1024x576.png\" alt=\"\" class=\"wp-image-407\"\/><\/figure>\n\n\n\n<p>Quand le programme vous pose une question, le champs input &gt;_ en bas de la console se mettra \u00e0 clignoter en orange. Vous pourrez donc \u00e9crire dans ce champs puis appuyer sur la touche entr\u00e9e du clavier pour envoyer votre r\u00e9ponse. Suite \u00e0 cela, le programme reprendra son ex\u00e9cution. <\/p>\n\n\n\n<p>N&#8217;h\u00e9sitez surtout pas \u00e0 utiliser cette console pour d\u00e9boguer votre programme et v\u00e9rifier s&#8217;il fait tout ce que vous attendez de lui ! N&#8217;oubliez pas, en algorithmique, le probl\u00e8me se situe bien souvent entre la chaise et le clavier \ud83e\udef5\ud83d\ude01 !<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">\ud83c\udfa8 L&#8217;iframe de rendu<\/h5>\n\n\n\n<p>Si vous avez l&#8217;\u00e2me d&#8217;un Picasso des temps modernes, vous serez ravi d&#8217;utiliser l&#8217;HTML et le CSS pour ajouter une interface graphique \u00e0 votre <em>script.js<\/em>, gr\u00e2ce \u00e0 cette iframe de rendu situ\u00e9e \u00e0 droite de l&#8217;\u00e9cran.<\/p>\n\n\n\n<p>Quand le bouton play est cliqu\u00e9, votre navigateur ex\u00e9cutera en premier le fichier <em>index.html<\/em>. C&#8217;est &#8220;le point d&#8217;entr\u00e9e&#8221; dans une application web. <\/p>\n\n\n\n<p>Voyant ce fichier index.html dans votre projet, le navigateur chargera son contenu dans cette iframe de rendu. S&#8217;il trouve une balise script dans ce fichier html (ce qui est le cas par d\u00e9faut), il ex\u00e9cutera dynamiquement son contenu. S&#8217;il trouve une balise style, il appliquera les style d\u00e9crits en CSS sur la page index.html.<\/p>\n\n\n\n<p>Connaissant cela, \u00e0 votre pinceau Picasso !<\/p>\n\n\n\n<p>Not\u00e9 que vous pouvez cacher l&#8217;\u00e9diteur pour profiter en plein \u00e9cran de votre \u0153uvre d&#8217;art, en cliquant sur l&#8217;ic\u00f4ne de rectangulaire en haut \u00e0 droite de l\u2019iframe. Cliquez \u00e0 nouveau dessus pour le faire r\u00e9apparaitre.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"settings-ideal\">2.5. \u2699\ufe0f Lib\u00e9rer le potentiel d&#8217;Ova avec la section Settings d&#8217;IDEAL<\/h3>\n\n\n\n<p>Vous souhaitez acc\u00e9der aux \u00e9tat STA MODE et STA MQTT (cas d&#8217;usage 2 et 3) pour programmer 1 ou plusieurs Ova avec un seul programme, pour relever un d\u00e9fi de programmation \u00e0 plusieurs ou bien cr\u00e9er par vous m\u00eame un jeu robotique ? Ou bien vous souhaiter administrer plusieurs Ova dans le cadre d&#8217;un cours ou d&#8217;un \u00e9v\u00e8nement robotique ?<\/p>\n\n\n\n<p>Pour cela vous aurez besoin de modifier ses param\u00e8tres r\u00e9seaux, accessibles dans la section Settings, pour lequel vous aurez besoin du mot de passe administrateur.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/tutos.jusdeliens.com\/wp-content\/uploads\/2023\/10\/image-12-1024x576.png\" alt=\"\" class=\"wp-image-408\"\/><\/figure>\n\n\n\n<p class=\"has-background\" style=\"background-color:#d4efff\">\ud83d\udd0d <strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">Information<\/mark><\/strong><br>Le mot de passe de la section <strong>Settings <\/strong>vous est envoy\u00e9 sur votre adresse mail apr\u00e8s l&#8217;achat du robot. Si vous \u00eates le propri\u00e9taire de l&#8217;Ova que vous utilisez et que vous ne l&#8217;avez pas re\u00e7u ou que vous l&#8217;avez \u00e9gar\u00e9, <a href=\"https:\/\/jusdeliens.com\/contact\" target=\"_blank\" rel=\"noreferrer noopener\">contactez-nous en cliquant ici<\/a>. Si vous n&#8217;\u00eates pas le propri\u00e9taire, contactez le responsable de cette Ova.<\/p>\n\n\n\n<p>Une fois le mot de passe saisie, l&#8217;acc\u00e8s \u00e0 cette section vous permettra de modifier les credentials suivantes. Une fois les modifications effectu\u00e9es, cliquez sur le bouton Save &amp; Restart pour que ces derni\u00e8res soient enregistr\u00e9es et appliqu\u00e9es par Ova apr\u00e8s son red\u00e9marrage. Seuls les champs modifi\u00e9s seront enregistr\u00e9s, ceux laiss\u00e9s vides ne seront pas enregistr\u00e9s.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/tutos.jusdeliens.com\/wp-content\/uploads\/2023\/10\/image-13-1024x576.png\" alt=\"\" class=\"wp-image-409\"\/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">2.5.1. \ud83e\udd16 Access Point (AP Mode, cas d&#8217;usage 1)<\/h4>\n\n\n\n<p>Ces champs vous permettront de modifier le nom du point d&#8217;acc\u00e8s wifi du robot, ainsi que le mot de passe pour se connecter.<\/p>\n\n\n\n<p>Ova est accessible en wifi sous son nom de SSID commen\u00e7ant par <strong>ova<\/strong>, suivi de son adresse mac, suivi de la valeur entr\u00e9e dans le champs Network SSID. Par d\u00e9faut, ce champs est vide et le SSID affich\u00e9 est &#8220;ovaXXXXXXXX&#8221; avec XXXXXXXX son adresse mac. Attention, ce champs ne doit pas d\u00e9passer 8 caract\u00e8res ASCII.<\/p>\n\n\n\n<p class=\"has-background\" style=\"background-color:#d4efff\">\ud83d\udd0d <strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">Information<\/mark><\/strong><br>Le SSID du robot peut contenir des caract\u00e8res unicodes comme des \u00e9moji. N&#8217;h\u00e9sitez pas \u00e0 bien vous en servir pour facilement distinguer chaque Ova parmi plusieurs !<br>Ex: entrer &#8220;\u2764\ufe0fred&#8221; affichera &#8220;ovaXXXXXXXX \u2764\ufe0fred&#8221; ce qui sera tr\u00e8s utile pour l&#8217;utilisateur d&#8217;une ova rouge, qu&#8217;il soit daltonien ou non.<\/p>\n\n\n\n<p>Vous pouvez \u00e9galement changer le mot de passe du point d&#8217;acc\u00e8s, qui doit contenir \u00e0 minima 8 caract\u00e8res avec au moins 1 chiffre et 1 caract\u00e8re sp\u00e9cial.<\/p>\n\n\n\n<p class=\"has-background\" style=\"background-color:#ead1d1\">\u26d4 <strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">Important<\/mark><\/strong><br>Quelque soit le mode de connexion de votre Ova (AP, STA et\/ou MQTT), son point d&#8217;acc\u00e8s sera toujours visible. Une connexion en AP sera trait\u00e9e prioritairement aux autres modes pour permettre une administration en cas de mauvais param\u00e9trage r\u00e9seau.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">2.5.2. \ud83c\udf10 Wifi network (STA Mode, cas d&#8217;usage 2)<\/h4>\n\n\n\n<p>Ces champs permettront de connecter votre Ova \u00e0 n&#8217;importe quel point d&#8217;acc\u00e8s (comme une box, un r\u00e9p\u00e9teur wifi ou votre t\u00e9l\u00e9phone en partage de connexion), avec ou sans connexion Internet.<\/p>\n\n\n\n<p>Assurez vous d&#8217;entrer les bon identifiants et mot de passe de votre point d&#8217;acc\u00e8s. Une fois les param\u00e8tres enregistr\u00e9s, Ova tentera \u00e0 chaque d\u00e9marrage de se connecter au point d&#8217;acc\u00e8s demand\u00e9 si elle le trouve \u00e0 proximit\u00e9.<\/p>\n\n\n\n<p>Une fois connect\u00e9e en STA (i.e. \u00e0 la STAtion wifi enregistr\u00e9e), Ova jouera la super (wo)man avec 4 notes qui devrait vous rappeler la bande son d&#8217;un h\u00e9ro aux supers pouvoirs extraterrestres \ud83e\uddb8, ou encore celle d&#8217;un voleur transform\u00e9 en sultan suite \u00e0 une rencontre g\u00e9niale \ud83e\uddde!<\/p>\n\n\n\n<p>Sur STA l&#8217;attribution de l&#8217;adresse IP d&#8217;Ova se fait de mani\u00e8re dynamique via le serveur DHCP du r\u00e9seau. Il vous faudra donc la demander \u00e0 votre administrateur r\u00e9seau (celui qui peut se connecter \u00e0 l&#8217;interface admin du DHCP pour lister les IP et baux attribu\u00e9s sur le r\u00e9seau).<\/p>\n\n\n\n<p>Si vous ne pouvez pas r\u00e9cup\u00e9rer l&#8217;adresse IP d&#8217;Ova sur le r\u00e9seau, le protocole MQTT est fait pour vous.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">2.5.3. \ud83d\udce1 MQTT (cas d&#8217;usage 2 et 3)<\/h4>\n\n\n\n<p>Ce protocole ubiquiste dans le monde de l&#8217;IOT permettra de r\u00e9aliser vos projets les plus fous et de connecter votre Ova avec d&#8217;autres robots de diff\u00e9rentes esp\u00e8ces et ce, dans le monde entier, par l&#8217;interm\u00e9diaire d&#8217;un serveur un peu sp\u00e9cial appel\u00e9 broker !<\/p>\n\n\n\n<p>Pour lib\u00e9rer tout le potentiel d&#8217;Ova, remplissez ces champs pour indiquer <\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>l&#8217;url du broker MQTT sur un LAN ou n&#8217;importe o\u00f9 dans le monde via Internet. L&#8217;url doit commencer par <strong>mqtt:\/\/<\/strong> suivi de l&#8217;adresse IP de pr\u00e9f\u00e9rence (plus rapide), ou bien du nom de domaine du broker (plus long car n\u00e9cessite des requ\u00eates DNS suppl\u00e9mentaire pour la r\u00e9solution du nom de domaine)<\/li><li>son port. Par d\u00e9faut il s&#8217;agit du port 1883 <\/li><li>Le username et password selon les ACL (Access Control List) d\u00e9finis par l&#8217;administrateur du broker<\/li><\/ul>\n\n\n\n<h5 class=\"wp-block-heading\">\ud83c\udf0e MQTT sur WAN (cas d&#8217;usage 3)<\/h5>\n\n\n\n<p>Si vous disposez d&#8217;un broker en ligne, et d&#8217;une bonne connexion Internet dans votre \u00e9tablissement, ce cas d&#8217;usage est id\u00e9al. Chaque utilisateur peut travailler avec son ordinateur et son robot en pr\u00e9sentiel ou distanciel, et ce, connect\u00e9 \u00e0 d&#8217;autres robots d&#8217;autres utilisateurs potentiellement dans le monde entier via Internet, ainsi que via un serveur applicatif (i.e. une ar\u00e8ne) <a rel=\"noreferrer noopener\" href=\"https:\/\/play.jusdeliens.com\" target=\"_blank\">pour gamifier et augmenter le terrain de jeu des robots<\/a>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/tutos.jusdeliens.com\/wp-content\/uploads\/2024\/10\/image-7-1024x557.png\" alt=\"\" class=\"wp-image-789\"\/><\/figure>\n\n\n\n<p>H\u00e9berger un broker MQTT en ligne peut s\u2019av\u00e9rer assez complexe (surtout de mani\u00e8re s\u00e9curis\u00e9) car il faut disposer <\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>d&#8217;un serveur reli\u00e9 \u00e0 Internet 24\/24 7j\/7 <\/li><li>d&#8217;un bon fournisseur d&#8217;acc\u00e8s Internet avec une bonne bande passante<\/li><li>d&#8217;une adresse IP publique fixe<\/li><li>ainsi qu&#8217;un nom de domaine avec des certificats valides pour chiffrer la communication avec le broker<\/li><\/ul>\n\n\n\n<p>C&#8217;est pourquoi nous vous proposons une <a rel=\"noreferrer noopener\" href=\"https:\/\/jusdeliens.com\/ideal-tarifs\/\" target=\"_blank\">offre cl\u00e9 en main pour monter vos ar\u00e8nes<\/a> et connecter vos robots, accessibles dans le monde entier de mani\u00e8re s\u00e9curiser, sans vous soucier de la maintenance du broker.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">\ud83c\udf10 MQTT sur LAN STA (cas d&#8217;usage 2)<\/h5>\n\n\n\n<p>Dans les cas o\u00f9 vous souhaiteriez utiliser des robots localement sur LAN (Local Area Network), il est possible d\u2019<a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/jusdeliens\/ovahub\" target=\"_blank\">h\u00e9berger localement le broker sur votre ordinateur<\/a> (minimum 8Go de RAM et un bon processeur permettant une virtualisation hardware).<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/tutos.jusdeliens.com\/wp-content\/uploads\/2024\/10\/image-8-1024x538.png\" alt=\"\" class=\"wp-image-790\"\/><\/figure>\n\n\n\n<p>L&#8217;avantage principal est que vous pouvez vous passer d&#8217;une connexion Internet : toutes les donn\u00e9es circulent uniquement localement, ce qui est id\u00e9al pour des usages \u00e9v\u00e8nementiels locaux (salons, journ\u00e9es portes ouvertes &#8230;).<\/p>\n\n\n\n<p>L&#8217;inconv\u00e9nient de cette option est qu&#8217;il ne sera pas possible de travailler en distanciel, o\u00f9 chaque utilisateur (leur robot et leur ordinateur) \u00e9tant potentiellement sur autant de r\u00e9seaux LAN diff\u00e9rents.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">2.5.4. \ud83d\udd10 Administrator<\/h4>\n\n\n\n<p>Utiliser ces champs pour modifier le mot de passe requis pour acc\u00e9der aux Settings.<\/p>\n\n\n\n<p class=\"has-background\" style=\"background-color:#ead1d1\">\u26d4 <strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-red-color\">Important<\/mark><\/strong><br>Si vous \u00eates propri\u00e9taire de votre Ova, pensez \u00e0 modifier ce mot de passe directement apr\u00e8s l&#8217;acquisition de votre Ova. Choisissez un mot de passe diff\u00e9rent de celui du point d&#8217;acc\u00e8s AP, de mani\u00e8re \u00e0 permettre \u00e0 des utilisateurs non administrateurs de travailler avec votre Ova, sans sans qu&#8217;ils puissent modifier les param\u00e8tres r\u00e9seaux.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"ova-arena\">3.  \ud83c\udf10 Connexion \u00e0 plusieurs Ova en HTTP (STA MODE, cas d&#8217;usage 2)<\/h2>\n\n\n\n<p>Les <a href=\"\/#dev-ide-tiers\">\u00e9tapes \u00e0 suivre sont les m\u00eames qu&#8217;en LAN AP MODE<\/a>, \u00e0 l&#8217;exception de l&#8217;adresse IP des Ova \u00e0 contr\u00f4ler, qui seront soit <\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>\u00e0 r\u00e9cup\u00e9rer aupr\u00e8s de votre administrateur r\u00e9seau (i.e. celui qui peut acc\u00e9der et lister les baux IP attribu\u00e9s automatiquement par le serveur DHCP du r\u00e9seau)<\/li><li>\u00e0 r\u00e9soudre automatiquement en DNS en connaissant le nom des Ova via l&#8217;url http:\/\/ovaXXXXXXX.local (XXXXXXX \u00e0 remplacer par la mac visible dans le SSID wifi du AP d&#8217;Ova)<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"ova-arena\">4.  \ud83c\udf0d Connexion \u00e0 plusieurs Ova en MQTT (STA MODE, cas d&#8217;usage 2 et 3)<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">4.1. \ud83d\udedc Connexion physique et logique au broker<\/h3>\n\n\n\n<p>Une fois vos Ova parametr\u00e9es pour se connecter en STA MODE sur un point d&#8217;acc\u00e8s wifi reli\u00e9 au broker MQTT renseign\u00e9 dans leurs settings, allumez-les, puis attendez que leurs machines \u00e0 \u00e9tat se connectent en STA MQTT.<\/p>\n\n\n\n<p>D\u00e8s lors, elles enverront au broker en temps r\u00e9el l&#8217;\u00e9tat de leurs capteurs \u00e0 periode d\u00e9finie par votre administrateur (300ms par d\u00e9faut \u00e0 chaque allumage, puis parametrable en tant qu&#8217;<a href=\"https:\/\/github.com\/jusdeliens\/ovahub\" target=\"_blank\" rel=\"noreferrer noopener\">administrateur autoris\u00e9 par le broker dans les ACLS<\/a>).<\/p>\n\n\n\n<p class=\"has-background\" style=\"background-color:#d4efff\">\ud83d\udd0d <strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">Information<\/mark><\/strong><br>Par d\u00e9faut, Ova est param\u00e9tr\u00e9e pour se connecter au point d&#8217;acc\u00e8s suivant <br>\ud83d\udedc <strong>SSID <\/strong>: ovawan <br>\ud83d\udd11 <strong>PWD <\/strong>: ovaladiva<br>Une fois connect\u00e9e au point d&#8217;acc\u00e8s, elle se connecte au broker officiel de Jusdeliens et est accessible \ud83d\udc49<a rel=\"noreferrer noopener\" href=\"https:\/\/play.jusdeliens.com\/login\/?arena=RobotX&amp;viewer=robotx&amp;url=mqtt.jusdeliens.com&amp;port=443\" target=\"_blank\">dans l&#8217;ar\u00e8ne RobotX<\/a> en rentrant au login &#8216;ova+adress mac&#8217;.<br>Cela peut \u00eatre utile pour visualiser sa cam\u00e9ra et l&#8217;\u00e9tat de ses capteurs \u00e0 distance, mais aussi pour participer \u00e0 des challenges robotiques dans le monde entier !<\/p>\n\n\n\n<p>Connectez \u00e9galement votre ordinateur \u00e0 un r\u00e9seau (Wifi, Ethernet &#8230;) reli\u00e9 \u00e9galement au m\u00eame broker (soit sur le m\u00eame LAN, soit via routeur ou VPN si WAN).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4.2. \u2328\ufe0f Programmez vos Ova dans votre IDE pr\u00e9f\u00e9r\u00e9<\/h3>\n\n\n\n<p>Comme pour le mode AP, vous pouvez utiliser n&#8217;importe quel IDE selon le langage de programmation souhait\u00e9.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">4.2.1.\ud83d\udc0d Python<\/h4>\n\n\n\n<p>Procedez aux <a href=\"\/#dev-ide-tiers\">m\u00eames \u00e9tapes que si vous \u00e9tiez en LAN AP MODE<\/a>, puis d\u00e9commenter dans le fichier <strong>main.py<\/strong> la ligne d&#8217;instanciation du client MQTT et commenter celle du client HTTP.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from client import *\n\nimport random\nimport time\nimport env\n\n# Uncomment this line above \ud83d\udc47 to control an Ova bot all around the world\n<strong>robot:IRobot = OvaClientMqtt(robotId=env.ROBOTID, clientId=env.PLAYERID, arena=env.ARENA, username=env.USERNAME, password=env.PASSWORD, server=env.BROKERADDRESS, port=env.BROKERPORT, verbosity=env.VERBOSITY, useProxy=env.USEPROXY)<\/strong>\n\n# Comment this line above \ud83d\udc47 to control on Ova on a LAN\n<strong>#robot:IRobot = OvaClientHttpV2(url=\"192.168.71.1\", verbosity=3)<\/strong>\n\n...<\/code><\/pre>\n\n\n\n<p>Puis cr\u00e9ez un fichier <strong>.env<\/strong> \u00e0 la racine (au m\u00eame niveau que le <strong>main.py<\/strong>) et copiez-collez les textes ci-dessous dedants, en rentrant les param\u00e8tres de connexion \u00e0 la place des <strong>&#8230;<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># The name of your robot ID as str (i.e. ovaXXXXXXXX for physical robots)\nROBOTID         = ...\n# 1 if you want to control the bot through the arena (needed in some arena), 0 otherwise\nUSEPROXY        = 0\n# The name of the arena to join as str\nARENA           = RobotX\n# The broker user name provided by a Jusdeliens administrator as str\nUSERNAME        = ...\n# The broker user password as str\nPASSWORD        = ...\n# The broker ip address or dns as str\nBROKERADDRESS   = ...\n# The broker port as int \nBROKERPORT      = ...\n# Verbosity level as int from 0:no log, to 4: full debug logs\nVERBOSITY       = ... <\/code><\/pre>\n\n\n\n<p>Selon les r\u00e8gles d&#8217;acc\u00e8s (ACLS) d\u00e9finies par le broker et votre username renseign\u00e9, vous n&#8217;aurez peut-\u00eatre acc\u00e8s qu&#8217;en lecture aux capteurs de vos robots. C&#8217;est le cas sur le broker Jusdeliens accessible avec le <strong>.env <\/strong>suivant <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># The name of your robot ID as str (i.e. ovaXXXXXXXX for physical robots with XXXXXXXX to be replaced by its mac address)\nROBOTID         = ovaXXXXXXXX\n# 1 if you want to control the bot through the arena (needed in some arena), 0 otherwise\nUSEPROXY        = 0\n# The name of the arena to join as str\nARENA           = RobotX\n# The broker user name provided by a Jusdeliens administrator as str\nUSERNAME        = demo\n# The broker user password as str\nPASSWORD        = demo\n# The broker ip address or dns as str\nBROKERADDRESS   = mqtt.jusdeliens.com\n# The broker port as int \nBROKERPORT      = 1883\n# Verbosity level as int 0:no log, 1:error, 2:warning, 3:info, 4: full debug logs\nVERBOSITY       = 2<\/code><\/pre>\n\n\n\n<p>Si vous souhaitez plus de contr\u00f4le, il vous faudra<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/play.jusdeliens.com\">Rejoindre des ar\u00e8nes Jusdeliens<\/a> en renseignant un ROBOTID et PLAYERID donn\u00e9 par l&#8217;administrateur de l&#8217;ar\u00e8ne \u00e0 la connexion (valable uniquement lors de challenges organis\u00e9s par Jusdeliens)<\/li><li>ou bien <a rel=\"noreferrer noopener\" href=\"https:\/\/github.com\/jusdeliens\/ovahub\" target=\"_blank\">cr\u00e9er et h\u00e9berger votre propre broker<\/a> pour pouvoir g\u00e9rer vos r\u00e8gles et vos robots en modifiant les ACLS et les <em>username:password<\/em> \u00e0 votre convenance<\/li><\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">4.2.2. \ud83c\udf10 API MQTT<\/h4>\n\n\n\n<p>Vous souhaitez programmer Ova dans d&#8217;autres langage que Python ? C&#8217;est \u00e9galement possible car le protocole MQTT dispose de nombreuses impl\u00e9mentations via des <a rel=\"noreferrer noopener\" href=\"https:\/\/www.emqx.com\/en\/mqtt-client-sdk\" target=\"_blank\">librairies de la plupart des langages de programmations actuels<\/a>, avec des codes d&#8217;exemple pour bien d\u00e9marr\u00e9 (ex: <a rel=\"noreferrer noopener\" href=\"https:\/\/www.hivemq.com\/blog\/implementing-mqtt-in-c\/\" target=\"_blank\">en C avec eclipse paho mqtt<\/a>).<\/p>\n\n\n\n<p>Une fois la librairie install\u00e9e et import\u00e9e, il ne reste plus qu&#8217;\u00e0 comprendre comment requ\u00eater (publish) et \u00e9couter (subscribe) les robots par l&#8217;interm\u00e9diaire du broker et des topics et usernames d\u00e9finis dans ses ACLS (Access Control List).<\/p>\n\n\n\n<p>Le sch\u00e9ma ci-dessous pr\u00e9sente 2 robots (Users Bots : Ova1 et Ova2) connect\u00e9s chacun \u00e0 son ma\u00eetre (Users PC via leur IDE : respectivement User1 et User2) via le <a href=\"https:\/\/github.com\/jusdeliens\/ovahub\" target=\"_blank\" rel=\"noreferrer noopener\">Broker server param\u00e9tr\u00e9 avec les ACLS par d\u00e9faut<\/a>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/tutos.jusdeliens.com\/wp-content\/uploads\/2024\/10\/image-10.png\" alt=\"\" class=\"wp-image-846\"\/><\/figure>\n\n\n\n<p><strong>Pour piloter les actionneurs<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>\ud83d\udceb<strong>publish <\/strong>sur le topic <strong>robotx\/clients\/state\/&lt;robotID&gt;<\/strong> avec &lt;robotId&gt; \u00e0 remplacer par l&#8217;identifiant du robot ova+mac (ovaXXXXXXXXXX)<\/li><li>\u2709\ufe0fpayload json \u00e0 publier<ul><li><strong>&#8220;buzzer&#8221; <\/strong>: <em>(Uint16,Uint16)<\/em>. Set a sequence of tones, with each tone described with 2 params<\/li><li><strong>&#8220;motor&#8221;<\/strong> : <em>(Int8,Int8,Uint16)<\/em>. Set a sequence of motor moves, with each move described with 3 params : motor power left (from -100 to 100 ), motor power right, and duration (in ms)<\/li><li><strong>&#8220;led&#8221;<\/strong> : Set a animation of colors, described with several keys according to animation type<ul><li><strong>&#8220;animation&#8221;<\/strong> : <em>&#8220;static&#8221; | &#8220;twinkle&#8221; | &#8220;fade&#8221; | &#8220;hue&#8221; | &#8220;custom&#8221; <\/em><\/li><li><strong>&#8220;rgb&#8221;<\/strong> : <em>(Uint8, Uint8, Uint8)<\/em>. The base color of the animation. Required only for animation values &#8220;static&#8221; &#8220;twinkle&#8221; &#8220;fade&#8221; <\/li><li><strong>&#8220;repeat&#8221;<\/strong> : <em>Uint8<\/em>. How many time the animation must repeat before ending. Required only for animation values &#8220;twinkle&#8221; &#8220;fade&#8221; &#8220;hue&#8221; &#8220;custom&#8221;<\/li><li><strong>&#8220;duration&#8221;<\/strong> : <em>Uint16<\/em>. The duration of the animation period in milliseconds. Required only for animation values &#8220;twinkle&#8221; &#8220;fade&#8221; &#8220;hue&#8221; &#8220;custom&#8221;<\/li><li><strong>&#8220;colors&#8221;<\/strong> : <em>Array[ (Uint8, Uint8, Uint8, Uint16) ]<\/em>. A sequence of fixed array of 4 params describing in the order : red, green, blue color (from 0 to 255 each) and the duration in milliseconds. Required only for animation value &#8220;custom&#8221;.<\/li><\/ul><\/li><li><strong>&#8220;reboot&#8221;<\/strong> : <em>Uint8<\/em>. For restarting Ova whatever the value<\/li><\/ul><\/li><\/ul>\n\n\n\n<p><strong>Pour lire les capteurs<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>\ud83d\udceb<strong>subscribe <\/strong>sur le topic <strong>robotx\/clients\/state\/&lt;robotID&gt;<\/strong> avec &lt;robotId&gt; \u00e0 remplacer par l&#8217;identifiant du robot ova+mac (ovaXXXXXXXXXX)<\/li><li>\u2709\ufe0fpayload json notifi\u00e9<ul><li><strong>&#8220;version&#8221; <\/strong>: <em>string<\/em>. La version d&#8217;OvaOS embarqu\u00e9 dans Ova<\/li><\/ul><ul><li><strong>&#8220;battery&#8221;<\/strong> : State of the robot LIPO battery<ul><li><strong>&#8220;voltage&#8221;<\/strong> : <em>Uint16<\/em>. In millivolt, nominal between 3.6V (empty) and 4.2V (fully recharged)<\/li><li><strong>&#8220;is_charging&#8221;<\/strong> : <em>bool<\/em>. True if the battery is charging, false otherwise. <em>Not implemented.<\/em><\/li><\/ul><\/li><li><strong>&#8220;photo_front&#8221;<\/strong> : state of the front photosensor below Ova, to be use to track lane on an active surface (like tablet)<ul><li><strong>&#8220;lum&#8221;<\/strong> : <em>Uint8<\/em>. From 0 (dark) to 255 (light)<\/li><\/ul><\/li><li><strong>&#8220;photo_back&#8221;<\/strong> : state of the back photosensor below Ova<ul><li><strong>&#8220;lum&#8221;<\/strong> : <em>Uint8<\/em>. From 0 (dark) to 255 (light)<\/li><\/ul><\/li><\/ul><ul><li><strong>&#8220;reboot&#8221;<\/strong> : <em>Uint8<\/em>. For restarting Ova whatever the value<\/li><\/ul><\/li><\/ul>\n\n\n\n<p class=\"has-background\" style=\"background-color:#d4efff\">\ud83d\udd0d <strong><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">Information<\/mark><\/strong><br>Il existe d&#8217;autres topics sur Ova pour des fonctionnalit\u00e9s plus avanc\u00e9es. N&#8217;h\u00e9sitez pas \u00e0 <a href=\"https:\/\/jusdeliens.com\/contact\" target=\"_blank\" rel=\"noreferrer noopener\">nous contacter<\/a> si vos besoins ne sont pas couverts par les topics pr\u00e9sent\u00e9s ci-dessus.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">4.3. \ud83d\udcf1 Pilotez vos Ova sur votre t\u00e9l\u00e9phone portable<\/h3>\n\n\n\n<p>Le protocole MQTT \u00e9tant un standard pour connecter des devices \u00e0 l&#8217;IOT (Internet Of Things), il existe de nombreuses applications sur t\u00e9l\u00e9phone permettant de cr\u00e9er son propre dashboard que ce soit pour faire de la datavisualisation sur votre flotte d&#8217;objets connect\u00e9s, ou bien pour prendre le contr\u00f4le \u00e0 distance.<\/p>\n\n\n\n<p>Nous vous recommendons l&#8217;<a href=\"https:\/\/play.google.com\/store\/apps\/details?id=snr.lab.iotmqttpanel.prod&amp;hl=fr\" target=\"_blank\" rel=\"noreferrer noopener\">application IoT MQTT Panel sur Play Store<\/a>, vous permettant de param\u00e9trer des widgets sans coder en WYSIWYG (What You See Is What You Get). Le plus dur \u00e9tant de bien comprendre le m\u00e9canisme de topic, subscribe et publish du protocole MQTT, ainsi que le protocole JSON et la mani\u00e8re dont sont formatter les requ\u00eates (publish) et notifications (subscribe) des robots.<\/p>\n\n\n\n<p class=\"has-background\" style=\"background-color:#fdebb9\">\ud83d\udea7 <strong><mark style=\"background-color:rgba(0, 0, 0, 0);color:#dca306\" class=\"has-inline-color\">Work in progress<\/mark><\/strong> <br>Nous mettrons bient\u00f4t en ligne un tutoriel pour d\u00e9marrer un dashboard MQTT de zero. Pour les plus impatients d&#8217;entre-vous, n&#8217;h\u00e9sitez pas \u00e0 <a href=\"https:\/\/jusdeliens.com\/contact\" target=\"_blank\" rel=\"noreferrer noopener\">nous contacter<\/a> pour participer \u00e0 une prochaine masterclasse robotique o\u00f9 nous verrons tout cela ensemble.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"ova-arena\">4.4.  \ud83c\udfb2 Cr\u00e9ez des d\u00e9fis robotiques avec Ova et IDEAL Arena<\/h3>\n\n\n\n<p>Vous avez aim\u00e9 les <a rel=\"noreferrer noopener\" href=\"https:\/\/jusdeliens.com\/ideal-arena\" target=\"_blank\">ar\u00e8nes virtuelles avec IDEAL Arena<\/a> et vous r\u00eavez d&#8217;augmenter ces d\u00e9fis robotiques avec des vrais robots Ova ? Le mode administrateur d&#8217;IDEAL Arena et le protocole MQTT sont faits pour vous \ud83d\ude09<\/p>\n\n\n\n<p class=\"has-background\" style=\"background-color:#fdebb9\">\ud83d\udea7 <strong><mark style=\"background-color:rgba(0, 0, 0, 0);color:#dca306\" class=\"has-inline-color\">Work in progress<\/mark><\/strong> <br>Cette section du tutoriel est en cours de r\u00e9daction. N&#8217;h\u00e9sitez pas \u00e0 nous \ud83d\udc49 <a rel=\"noreferrer noopener\" href=\"https:\/\/g.page\/r\/CQoJnRiyLqsqEB0\/review\" target=\"_blank\">partager vos avis et envies<\/a> ou <a href=\"https:\/\/jusdeliens.com\/contact\" target=\"_blank\" rel=\"noreferrer noopener\">nous contacter directement<\/a> pour nous permettre de r\u00e9pondre au mieux \u00e0 vos attentes.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"contact\">5. \ud83e\udde0 Vous voulez monter en comp\u00e9tences pour donner des supers pouvoirs \u00e0 Ova ?<\/h2>\n\n\n\n<p>Chez Jusdeliens, nous avons la passion du code et de la p\u00e9dagogie dans l&#8217;ADN. Nous travaillons avec des \u00e9coles et centres de formations pour donner aux apprenants d\u00e9sireux de parfaire leurs comp\u00e9tences, les meilleurs cours possibles avec des challenges \u00e9piques m\u00e9langeant jeux, strat\u00e9gies, intelligences, et d\u00e9passement de soi !<\/p>\n\n\n\n<p>Avec nous, vos jeux favoris deviennent r\u00e9alit\u00e9 par l&#8217;algorithmique et la robotique : Pokemon n&#8217;est plus une fiction, c&#8217;est vous le ma\u00eetre et Ova votre pok\u00e9bot !<\/p>\n\n\n\n<p>N\u2019h\u00e9sitez pas \u00e0 <a rel=\"noreferrer noopener\" href=\"https:\/\/jusdeliens.com\/contact\/\" target=\"_blank\">nous contacter<\/a> si vous souhaitez nous retrouver pour le prochain concours de robot, et\/ou en formation et\/ou cours particuliers adapt\u00e9s \u00e0 vos besoins.<\/p>\n\n\n\n<p>Si vous souhaitez comprendre davantage le web et les langages \u00e9voqu\u00e9s, voici quelques courtes vid\u00e9os que nous vous recommandons pour comprendre :<\/p>\n\n\n\n<p><a href=\"https:\/\/ressources.numeres.net\/id-58\">Ce qu\u2019est le web et comment il permet d\u2019acc\u00e9der \u00e0 des sites web<\/a><br><a href=\"https:\/\/vimeo.com\/138623558\">Le mod\u00e8le client-serveur<\/a><br><a href=\"https:\/\/vimeo.com\/138623678\">Ce qu\u2019il se passe quand vous tapez un url dans votre navigateur<\/a><br><a href=\"https:\/\/vimeo.com\/138623721\">Comment une page web est structur\u00e9e en html<\/a><br><a href=\"https:\/\/vimeo.com\/138623826\">Comment une page web est mise en forme en css<\/a><\/p>\n\n\n\n<p>Pour un apprentissage plus complet et pas \u00e0 pas de ces langages, vous avez aussi les supers tutoriels gratuits d&#8217;Openclassroom <\/p>\n\n\n\n<p><a href=\"https:\/\/openclassrooms.com\/fr\/courses\/1603881-creez-votre-site-web-avec-html5-et-css3\">https:\/\/openclassrooms.com\/fr\/courses\/1603881-creez-votre-site-web-avec-html5-et-css3<\/a><br><a href=\"https:\/\/openclassrooms.com\/fr\/courses\/6175841-apprenez-a-programmer-avec-javascript\">https:\/\/openclassrooms.com\/fr\/courses\/6175841-apprenez-a-programmer-avec-javascript<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"feedback\">6. \ud83d\udee3\ufe0f Et apr\u00e8s ?<\/h2>\n\n\n\n<p>Vous avez aim\u00e9 ce tutoriel et vous en voulez d&#8217;autres ? <\/p>\n\n\n\n<p>Faites le nous savoir en donnant vos avis et vos envies et nous nous empresserons de vous en r\u00e9digez d&#8217;autres \ud83d\ude09<\/p>\n\n\n\n<p><strong>Suivez le <\/strong>\ud83d\udc49 <a rel=\"noreferrer noopener\" href=\"https:\/\/g.page\/r\/CQoJnRiyLqsqEB0\/review\" target=\"_blank\">(jus de) <strong>lien<\/strong>(s) en cliquant ici<\/a>. <\/p>\n\n\n\n<p>C\u2019est fini pour ce tutoriel ! A vous de <a href=\"https:\/\/play.jusdeliens.com\" target=\"_blank\" rel=\"noreferrer noopener\">jouer<\/a> maintenant \ud83d\ude09<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"http:\/\/jusdeliens.com\/wp-content\/uploads\/2019\/01\/R2D2.gif\" alt=\"\" class=\"wp-image-355\"\/><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Vous venez de faire l\u2019acquisition d&#8217;un robot Ova et il vous tarde de d\u00e9couvrir les talents de votre nouvelle compagne programmable ? Dans ce tutoriel, nous allons voir ensemble comment la prendre en main pour pouvoir la d\u00e9marrer, la programmer, et bien plus encore.<\/p>\n","protected":false},"author":1,"featured_media":763,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"class_list":["post-246","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-robotx"],"_links":{"self":[{"href":"https:\/\/tutos.jusdeliens.com\/index.php\/wp-json\/wp\/v2\/posts\/246","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tutos.jusdeliens.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tutos.jusdeliens.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tutos.jusdeliens.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tutos.jusdeliens.com\/index.php\/wp-json\/wp\/v2\/comments?post=246"}],"version-history":[{"count":0,"href":"https:\/\/tutos.jusdeliens.com\/index.php\/wp-json\/wp\/v2\/posts\/246\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/tutos.jusdeliens.com\/index.php\/wp-json\/"}],"wp:attachment":[{"href":"https:\/\/tutos.jusdeliens.com\/index.php\/wp-json\/wp\/v2\/media?parent=246"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tutos.jusdeliens.com\/index.php\/wp-json\/wp\/v2\/categories?post=246"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tutos.jusdeliens.com\/index.php\/wp-json\/wp\/v2\/tags?post=246"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}