Overblog Suivre ce blog
Administration Créer mon blog
7 à voir

Articles avec #overblog tag

Le point sur la réalité augmentée: ARKit, ARCode, Tango, Hololens et les autres

13 Octobre 2017 , Rédigé par Lionel Publié dans #Overblog, #realiteaugmentee

La réalité augmentée est le mot à la mode. Quelles technologies aujourd'hui et à quoi s'attendre demain, ce sont les questions à laquelle je vais essayer de répondre dans cet article.

 

 

Il y a un an, dans un précédent article, je présentais le casque de réalité Hololens de Microsoft et j'expliquais ce qu'il permettait de faire. Depuis un an le marché de la réalité augmentée s'est emballé et les annonces et produits se sont multipliés. Au Spot Bouygues nous avons également eu l'opportunité d'explorer les technologies et de développer plusieurs prototypes. Je me suis donc dit qu'il était temps de refaire le point sur le sujet.

 

Quelles fonctionnalités ?

Même si c'est paraphraser, il n'est pas inutile de rappeler que pour faire de la réalité augmentée il faut… augmenter la réalité. Et pour "augmenter" la réalité il faut déjà la percevoir, c’est-à-dire avoir un dispositif qui permet de voir et comprendre la réalité. Les technologies de réalité augmenté doivent donc permettre trois choses:

Le point sur la réalité augmentée: ARKit, ARCode, Tango, Hololens et les autres

 

Comprendre l'environnement: c’est-à-dire pouvoir identifier les formes et surfaces de manière à pouvoir y ajouter un élément qui pourra "coller" à la réalité.

Le point sur la réalité augmentée: ARKit, ARCode, Tango, Hololens et les autres

 

Détecter les mouvements: détecter les déplacements de l'utilisateur afin d'adapter la vue de l'élément qui a été ajouté à la scène, à l'angle de vision de l'utilisateur.

Le point sur la réalité augmentée: ARKit, ARCode, Tango, Hololens et les autres

 

Mesurer la luminosité: adapter la brillance de l'élément aux changements de luminosité de la scène pour le rendre plus réaliste et faire apparaître des ombres.

 

 

Pour disposer de ces fonctionnalités, il y a deux possibilités: soit avec un matériel spécifique, soit par logiciel.

 

 

Des matériels spécifiques pour la réalité augmentée

 

Pour comprendre l'environnement, tous les matériels de réalité augmentée utilisent un outil spécifique: un capteur infrarouge. C'est par exemple ce type de capteur qui est intégré dans les Hololens de Microsoft ou les tablets Tango de Google mais aussi, de manière un peu différente, dans les Lidar qu'utilisent les véhicules autonomes.

 

Ce matériel se décompose en deux outils:

 

Un projecteur Infrarouge qui envoie un grille de faisceaux Infrarouge.

Vu de la caméra Infra Rouge sur les nuages de points Infra Rouge projetés

Vu de la caméra Infra Rouge sur les nuages de points Infra Rouge projetés

Une caméra Infrarouge qui filme la scène pour retrouver les fameux points infrarouge dans l'image. Comme le projecteur envoi les points selon une forme géométrique précise, l'analyse de l'image permet de voir le décalage des points qui se projettent sur les obstacles et donc d'en déduire la profondeur de la scène autour de l'utilisateur.

Le point sur la réalité augmentée: ARKit, ARCode, Tango, Hololens et les autres

Une découpe des Hololens montre  d'ailleurs la présence de ces capteurs IR dans le casque.

Découpe de l'Hololens

Découpe de l'Hololens

On voit également ces capteurs IR dans le dos des smartphones supportant la technologie Tango, comme ci-dessous le  Phab 2 Pro de Lenovo.

Le dos du Lenovo Phab2 Pro utilisant Tango

Le dos du Lenovo Phab2 Pro utilisant Tango

 

Il faut noter que si Hololens et Tango sont les plus connus, d'autres constructeurs produisent des matériels de réalité augmentée reposant sur ces mêmes technologies. Par exemple les lunettes Meta 2 de Metavision ou celle de Daqri.

Les lunettes de réalité augmentée de Daqri et MetavisionLes lunettes de réalité augmentée de Daqri et Metavision

Les lunettes de réalité augmentée de Daqri et Metavision

Pour détecter les mouvements de l'utilisateur les outils de réalité augmentée utilisent également un traditionnel Gyroscope/Accéléromètre. Pour plus de précision, ce capteur est généralement associé à la caméra pour mesurer en temps réel les déplacements de l'image et déduire les mouvement de l'utilisateur.

 

Enfin, un simple capteur de luminosité permet de détecter la lumière ambiante et l'appliquer sur la scène qui est projetée.

 

 

La réalité augmentée dans la poche

 

Mais est-il possible de faire de la réalité sans avoir un matériel spécifique ?

Oui car la réalité augmentée n'est pas née l'année dernière. Elle est apparue en même temps que la démocratisation des smartphone et la possibilité qu'ils offraient de prendre des photos.

Le point sur la réalité augmentée: ARKit, ARCode, Tango, Hololens et les autres

En 2009 (!) par exemple, Bouygues Telecom proposait sa première application en réalité augmentée: "Ici Info". Lorsqu'on lançait l'application, elle affichait en surimpression de l'appareil photo la direction de points d'intérêts (stations de métro, boutique Bouygues Telecom, …) à proximité de l'utilisateur. Comme elle s'appuyait sur le gyroscope du téléphone, la position des points d'intérêts se déplaçait en fonction des points d'intérêts.

Chocapic et réalité augmentée

Chocapic et réalité augmentée

 

La même année, les céréales Chocapic faisaient leur révolution en intégrant un jeu vidéo interactif en réalité augmentée sur leur paquet. C'était ici la webcam du PC qui faisait office de caméra. Grâce à une image spécifique imprimée sur le paquet, le programme analysait en temps réel les déplacements de l'image et adaptait la vue au déplacement. Le jeu fonctionnait sur PC car à l'époque on ne pouvait pas demander beaucoup de puissance de calculs à nos smartphones.

 

Il a été rapidement possible d'intégrer directement ces fonctionnalités dans un smartphone. Depuis 2013, Ikea propose ainsi son catalogue en réalité augmentée: on pose le catalogue par terre, on lance l'application, on sélectionne un article et il apparaît en réalité augmentée au dessus de l'image du catalogue.

Le catalogue Ikea en réalité augmentée

Le catalogue Ikea en réalité augmentée

Mais c'est Apple qui est passé à l'étape supérieure en juin dernier lors de l'annonce d'iOS 11 en lançant ARKit. ARKit est une technologie permettant de faire de la réalité augmentée avec l'appareil photo de son iPhone mais sans avoir à reconnaître une image spécifique, contrairement à la boite de Chocapic ou au catalogue Ikea.

 

Ce sont à la fois l'augmentation de la puissance de calcul des processeurs des smartphones et les progrès dans l'analyse d'image qui ont permis les avancées d'ARKit. ARKit analyse en temps réel les images de la caméra et détecte automatiquement des points dans l'image qui lui apparaissent comme des surfaces horizontales (uniquement horizontales pour l'instant) et permet ensuite aux applications de poser des objets virtuels par-dessus.

Comment ARKit voit une scène

Comment ARKit voit une scène

La promesse d'ARKit est donc importante: c'est la possibilité pour n'importe quel smartphone (sous iOS…) de faire de la réalité augmentée. Depuis l'annonce d'ARKit et avant même sa sortie officielle, les vidéos de développeurs d'applications utilisant ARKit se sont d'ailleurs multipliées: voir par exemple ici.

ARKit en action

ARKit en action

Même si évidemment la précision est moindre qu'avec un matériel spécifique, cela ne pouvait laisser indifférent Google qui poussait la technologie Tango. Et à la surprise générale, Google a donc annoncé en septembre sa propre technologie de réalité augmentée appelée ARCore. Et il n'y a pas que le nom qui ressemble à ARKit ! les fonctionnalités de ARCore et ARKit sont quasi-identiques et les exemples proposés au développeurs sont presque les mêmes.

ARCore en action

ARCore en action

 

Et comme ARKit, la promesse d'ARCore est d'apporter la réalité augmentée à n'importe quel téléphone Android. Que vous soyez donc sous iOS ou sous Android, vous allez donc pouvoir bénéficier de toutes les promesses de la réalité augmentée.

 

 

Conclusion: la réalité augmentée partout pour tous ?

 

La réalité augmentée sera donc bientôt dans votre poche sans avoir de matériel spécifique. D'ailleurs avec ARCore, Google a laissé planer de sérieux doutes sur la survie de la technologie Tango alors que - comme l'ont démontré Michaël et Quian dans un récent Meetup Xebia - le code source d'ARCore est directement dérivé de celui du projet Tango !

 

Mais si la démocratisation de la réalité augmentée laisse entrevoir des applications amusantes comme un Pikachu en véritable réalité augmentée sautant dans les éléments du décor, il n'en reste pas moins que pour une utilisation professionnelle, il est peu vraisemblable que des technologies sans matériel spécifique puissent convenir.

Le point sur la réalité augmentée: ARKit, ARCode, Tango, Hololens et les autres

Lorsqu'il s'agira par exemple de "caler" avec précision une maquette numérique avec la réalité, il sera difficilement acceptable d'avoir des erreurs de plusieurs dizaines de centimètres ou des sauts dans l'image.

 

On peut donc supposer que la présence de capteurs IR dans les smartphones pourrait, malgré le renoncement provisoire de Google, se généraliser. La preuve: le futur iPhone X posséde lui-même un capteur Infrarouge mais… en façade afin de reconnaître le visage de l'utilisateur pour FaceID.

Démonstration des possibilités du capteur Infra Rouge de l'iPhone X

Démonstration des possibilités du capteur Infra Rouge de l'iPhone X

Lire la suite

Je ne veux pas activer la localisation de mon smartphone

3 Octobre 2017 , Rédigé par Lionel Publié dans #Overblog

Je ne veux pas activer la localisation de mon smartphone

La localisation est-elle devenue tellement banale qu'on doit la donner à toutes les applications même quand elles n'en ont pas besoin ? Dans ce billet "coup de gueule", je vous raconte l'expérience malheureuse que j'ai vécu avec la localisation sous Android 6.0 et les conclusions techniques que j'en tire.

 

 

Je n'active jamais la localisation sur mon smartphone. Ça fait même des années que ça dure et je ne m'en porte pas plus mal. Bien sûr il m'arrive de l'activer lorsque j'ai besoin d'un accès ponctuel à Google Map mais je l'arrête dès que je n'en ai plus besoin. Donc: non je n'utilise pas Waze, non je ne m'attends pas à ce que mon smartphone me dise qu'il y a des embouteillages sur mon trajet du retour et non je ne veux pas qu'il me recommande les promos du resto en bas de la rue.

 

Les raisons sont multiples mais la principale est le respect de ma vie privée. L'endroit où je me trouve ne regarde que moi et je ne veux pas le partager. Je confie ma position a mon opérateur (mais  bon c'est Bouygues Telecom, c'est donc la famille :-) mais je ne veux pas la confier à Google ou à quelqu'un d'autres. Par ailleurs j'utilise Qwant comme moteur de recherche, Firefox comme navigateur et je privilégie les solutions Open Source quand je le peux.

 

C'est mon droit.

 

Enfin je croyais. Car ces derniers temps ce droit est sérieusement mise en cause par Android 6.0. Je vous raconte toute l'histoire.

 

 

Allo Nokia, j'ai un problème

 

J'utilise une montre connectée. En fait j'en ai même testé plusieurs: Pebble, Samsung Gear et en ce moment la Nokia HR (ex Withings). Une montre connectée n'a rien d'indispensable à vrai dire mais c'est pratique: j'y reçois les notifications lors d'un appel/SMS sans devoir sortir mon smartphone de ma poche et accessoirement elle comptabilise mon activité physique.

 

Mon smartphone est un Android. Assez récemment j'ai changé de téléphone et par la même occasion je suis passé de la version 5.0 d'Android à la version 7.0. Et soudainement j'ai eu droit à ce message sur mon application Nokia Health qui synchronise la montre connectée avec le téléphone:

Nokia veut votre localisation

Nokia veut votre localisation

"Votre géolocalisation est désactivée": ça je sais, c'est fait exprès.

"Pour synchroniser, mettez en marche la géolocalisation": ah bon ? Mais jusqu'à présent ça a toujours fonctionné. Pourquoi donc faudrait-il que la géolocalisation soit activée ? D'autant que l'application ne fourni aucune information géolocalisée, je ne vois donc pas en quoi la géolocalisation lui serait utile.

J'active donc la géolocalisation pour voir et en effet la synchronisation se déroule correctement. Je refais l'expérience plusieurs fois et effectivement il faut que la géolocalisation soit activée pour que la montre se connecte. Par contre, lorsqu'on arrête la géolocalisation alors que la montre est connectée, elle n'arrive pas à se synchroniser mais les autres fonctionnalités (notifications d'appels et de SMS) semblent fonctionner correctement.

Bon je me dis que je vais réussir à vivre avec ça mais dès que j'ai un peu de temps j'envoi quand même un mail au support Nokia pour m'étonner de ce fonctionnement qui me semble à ce moment là, lié à une mise à jour de l'application puisqu'en changeant de téléphone j'ai aussi mis à jour l'application Nokia Health.

 

Le support de Nokia me répond (trop) rapidement:

Réponse un peu rapide du support Nokia

Réponse un peu rapide du support Nokia

Il semble que j'ai affaire au niveau 1 du support: celui qui est toujours optimiste :-) Sa réponse est simple: non il n'y a pas besoin de la localisation. Bon quelques part ça me rassure mais en réalité moi je ne peux pas faire autrement qu'activer la localisation pour que l'application fonctionne, je leur répond donc avec la copie d'écran qui démontre que leur réponse n'est pas adaptée à mon cas. Deuxième réponse un jour plus tard.

Deuxième réponse de Nokia

Deuxième réponse de Nokia

Cette fois le support (niveau 2 surement) me dit que j'ai raison (il me semblait aussi :-) et  me renvoi vers un lien sur la page de leur site qui indique les pré-requis pour faire fonctionner les device Nokia.

La page de support de Nokia

La page de support de Nokia

Sans surprise, il est indiqué sur cette page qu'il faut que le Bluetooth soit activé sur le smartphone pour que la synchronisation fonctionne. C'est logique puisque les montres/bracelets connectées communiquent en Bluetooth avec le smartphone.

Par contre, une petite note indique en effet que sur Android 6 et supérieur, il faut que la localisation soit activée également pour que le device soit détecté.

Cette note renvoi sur le deuxième lien de la réponse de Nokia qui n'est autre que… la release note de la version 6 d'Android !

Release notes d'Android 6

Release notes d'Android 6

Ooch ! un support utilisateur qui renvoi le grand public vers un site pour les développeurs: voilà qui n'est pas banal. Et ça ressemble même à un moyen de "botter en touche" dans le genre: c'est vrai vous avez raison mais ce n'est pas de notre faute c'est la faute à Android.

 

Mais il se trouve que je suis développeur: voilà donc un problème amusant à explorer.

 

 

Où je reprends ma casquette de développeur

 

L'endroit pointé sur le site de développeur Android est une petite partie de la release note Android 6 et semble assez anodine. L'explication mentionnée n'est pas complétement claire mais en gros, elle indique que pour accéder à des périphériques Bluetooth et WiFi il faut avoir la permission localisation activée pour l'application sinon l'API va retourner une valeur bidon pour l'identifiant du device (sa Mac Address).

 

Hmmm, ça ressemble à mon problème mais pour être franc la première idée qui me vient c'est que les développeurs Android chez Nokia sont mauvais et qu'il doit forcément y avoir un contournement possible :-)

 

Je fais donc un benchmark pour voir si d'autres outils connectés ont le problème et mauvaise nouvelle: le problème semble similaire pour les montres/bracelets Fitbit comme l'indique le lien sur le support Fitbit ci-dessous.

 

Les bracelets Fitbit ont le même problème

Les bracelets Fitbit ont le même problème

Comme pour Nokia, Fitbit indique que le problème est lié à un changement opéré par Google dans Android 6.0. Au moins les sources convergent.

 

Je creuse un peu plus le sujet en recherchant sur les forums de développement Android et je tombe finalement sur un bug déclaré sur la plate-forme de déclaration d'incident de Google et qui référence explicitement le problème.

La clé du problème: un "bug" Android

La clé du problème: un "bug" Android

La lecture est très intéressante au milieu de l'étonnement/l'agacement des développeurs face à ce problème et leur demande de revenir en arrière sur cette implémentation, il faut surtout lire la réponse "officielle" de Google:

Ce n'est pas un bug, c'est une fonctionnalité

Ce n'est pas un bug, c'est une fonctionnalité

Si je traduis la réponse: "Ce n'est pas un bug c'est un comportement voulu, on ne le corrigera pas. Le fait d'avoir l'identifiant d'un objet revient à avoir sa position, il faut donc avoir l'accès à la localisation pour accéder à la recherche d'équipement Bluetooth ou WiFi".

 

Il me faut un moment pour comprendre l'implication de la réponse de Google: si on a accès à l'identifiant d'un objet via Bluetooth ou WiFi, on a accès à sa localisation. Autrement dit: si vous avez téléchargé un logiciel malveillant sur votre Android il peut déterminer votre position sans que vous ayez activé votre localisation, en utilisant uniquement le Bluetooth ou le WiFi.

 

Hmmm, intéressant. Étudions ça en détail.

 

 

Le Bluetooth vous espionne ?

 

Au Spot Bouygues nous avons développé plusieurs fois des applications utilisant la technologie iBeacon. Les iBeacons sont des petits tags qui émettent en permanence en Bluetooth (Bluetooth Low Energy précisément) un identifiant. Si on place ces petits tags à des endroits précis (dans un magasin, à côté d'un objet, …) et que l'utilisateur a installé une application qui va scanner régulièrement le Bluetooth à la recherche de ces tags, il pourra être notifié quand il arrive à proximité. Ce mécanisme a été intégré dans de nombreuses applications (y compris Facebook) pour vous alerter lorsqu'il y a des promotions d'un magasin devant lequel vous passez ou pour vous proposer plus d'informations sur un article dont vous vous approchez.

Les balises iBeacon estimote

Les balises iBeacon estimote

Plus fort: si vous avez préalablement "mappé" une pièce, c’est-à-dire positionné précisément sur un plan de la pièce chaque iBeacon, vous avez possibilité - via des calculs de triangulation fonction de l'intensité du signal reçu de chaque iBeacon - de vous localiser précisément dans une pièce.

 

Le revendeur de iBeacon estimote propose même une application spécifique qui permet de réaliser ce "mapping" (voir ci-dessous).

Localisation indoor avec estimote

Localisation indoor avec estimote

Du coup, on peut dire qu'effectivement, sous réserve que l'on dispose d'une base de données contenant l'identifiant et la position de différentes balises Bluetooth, on peut repérer la position de l'utilisateur simplement avec son Bluetooth.

Je ne veux pas activer la localisation de mon smartphone

A défaut de disposer de cette base, on peut aussi déterminer son changement de position selon ce qu'on détecte ou pas le device. Prenons par exemple, le cas d'un thermostat connecté Nest. Vous avez installé ce thermostat connecté chez vous et vous vous y connectez par Bluetooth. Pour le logiciel malveillant qui utilise le Bluetooth le simple fait de savoir que vous êtes connecté à ce thermostat permet de savoir que vous êtes chez vous.

 

Le Bluetooth est donc potentiellement une source d'information pour la localisation.

 

 

Le WiFi vous encercle

 

Est-ce le cas aussi pour le WiFi que mentionne Google dans sa réponse ?

 

Il est impressionnant lorsque vous activez le WiFi de votre smartphone de voir le nombre de réseaux autour de vous.    Peut-on imaginer que simplement en détectant les réseaux autour de vous on puisse détecter l'endroit où vous êtes ? Il suffit pour cela que l'on puisse disposer d'une carte indiquant l'endroit où se situent tous les réseaux WiFi. Et bien figurez-vous que cette carte existe.

 

Voici par exemple une carte, proposée par Wigle, de tous les réseaux WiFi autour du Spot Bouygues . Pour chaque réseau la carte indique son nom (souvent FreeWiFi, LiveBox, …) mais aussi son identifiant unique (Mac Address encore) et sa position GPS.

Carte détaillée des réseaux WiFi autour du Spot

Carte détaillée des réseaux WiFi autour du Spot

La base de données de Wigle est réalisée de manière collaborative par les utilisateurs de l'application et s'enrichi régulièrement mais il en existe beaucoup d'autres, notamment référencées ici.

 

En utilisant ce genre de base de données et en écoutant les accès WiFi autour de vous, il est donc simple pour une application malveillante de déterminer votre position approximative sans avoir accès à votre localisation.

 

 

Conclusion

 

Il est donc bien possible de géolocaliser un téléphone en utilisant du Bluetooth et/ou du WiFi. D'ailleurs, dans les versions récentes d'Android l'utilisateur peut lui-même indiquer le mode de localisation dans le paramétrage d'Android.

Je ne veux pas activer la localisation de mon smartphone

Ainsi on peut indiquer d'utiliser uniquement le WiFi, le bluetooth et les réseaux mobiles (c’est-à-dire l'emplacement des bornes réseaux des opérateurs mobile  qui est aussi accessible dans plusieurs bases de données publiques).

 

Google a-t-il pour autant raison d'imposer la géolocalisation pour synchroniser sa smartwatch ?

 

Non, car il lui suffirait de forcer les applications à demander l'accès à la localisation pour prévenir l'utilisateur du risque potentiel mais sans l'obliger à activer effectivement la localisation dans le système.

 

Non, car il est possible de faire autrement en masquant ces problématiques système à l'utilisateur. Par exemple sur iOS, lors de la 1er découverte d'un périphérique Bluetooth par l'application, le système génère un identifiant unique mais masque l'identifiant interne à l'application. Ainsi seul l'utilisateur pourra retrouver le périphérique avec cet identifiant.

 

Dois-je donc passer sur iOS pour vivre sans géolocalisation ?

Lire la suite

Comment rebooter automatiquement son routeur ?

25 Juillet 2017 , Rédigé par Lionel Publié dans #Overblog

Que faire quand son routeur ou sa box s'arrête de temps en temps de fonctionner ? Dans ce billet un peu technique, je vous propose de découvrir ma solution à base d'une prise connectée et d'un peu de hacking.

Comment rebooter automatiquement son routeur ?

Le Spot Bouygues est un lieu sur le campus de l'EPITECH où étudiants et collaborateurs de Bouygues viennent se poser pour travailler sur des projets communs. L'infrastructure du lieu est très limitée: en gros il y a juste un routeur qui diffuse un accès WiFi et permet l'accès à Internet.

C'est tout à fait suffisant mais, de temps en temps, ce routeur se met à ne plus fonctionner: s'il y a des utilisateurs connectés il restent connectés mais perdent l'accès à Internet et les nouveaux arrivant ne peuvent plus se connecter au réseau. Rien de grave, j'imagine que vous avez ça de temps en temps sur votre box ou sur votre routeur ? Il suffit de redémarrer le routeur (juste le débrancher et le rebrancher…) et tout rentre de l'ordre en quelques minutes. La seule particularité est que pour des raisons de sécurité, au Spot, ce routeur est dans un caisson fermé à clé. Il faut donc avoir la clé pour réaliser l'opération.

 

Ce dysfonctionnement se produit de "temps en temps" une à deux fois par mois. Évidemment, cela se produit TOUJOURS au plus mauvais moment, c’est-à-dire quand je ne suis pas là. Les occupants n'ont alors pas d'autres choix que de m'appeler pour que je leur dise où est cachée la fameuse clé (sous le paillasson  ;-) afin qu'ils redémarrent le routeur. C'est également ennuyeux parce que le Spot contient des équipements de sécurité (caméras, détecteurs, …) qu'il est embêtant de ne pas pouvoir consulter à distance à tout moment.

 

Tentative de solution

Ce problème dure depuis des mois, à l'occasion j'ai essayé de faire de faire des recherches pour identifier les causes possibles et j'ai fait régulièrement les mises à jours du firmware du routeur mais hélas sans résoudre le problème jusqu'à présent. D'ailleurs si vous avez des suggestions, je suis preneur !

 

Il y a quelques mois je tombe sur un article de Gizmodo qui parle d'une prise magique capable de régler le problème: le "ResetPlug". Le ResetPlug s'intercale entre l'alimentation de votre box/routeur et la prise de courant. Il fonctionne comme un client WiFi qui écoute en permanence votre connexion Internet. Dès qu'il ne détecte plus Internet, il coupe l'alimentation quelques secondes ce qui a pour effet de redémarrer votre box/routeur.

Comment rebooter automatiquement son routeur ?

Cool. C'est exactement ce qu'il me faut !

Seul problème: ce gadget est vendu exclusivement aux US pour 60$. La prise supportée  est d'ailleurs une prise au format US. Le site laisse supposer qu'une version pour des prises Européennes pourrait être disponible mais en fait après plusieurs mois d'attentes il n'en est rien :-(

 

La prise connectée Kankun

L'été approche donc une période de vacances où le problème risque d'être encore plus visible car évidemment dans ces périodes je ne suis pas présent tout le temps au Spot. Il me fallait une solution.

En lisant attentivement la FAQ de la ResetPlug, je tombe sur une question qui éveille ma curiosité:

 

Q:  Isn't this a Kankun smart plug? They look the same?

A:  No, this is not the same as the Kankun smart plug. We both use the same plug hardware (outside) from iKonke, but the software (inside) is very different. The ResetPlug detects an Internet outage and cycles power automatically. The Kankun plug is meant to turn on or off the outlet from an app while on the same WiFi network.

 

Le ResetPlug utiliserait donc le même hardware qu'une mystérieuse prise intelligente "Kankun" mais y ajoute un logiciel spécifique. Hmmm. N'y aurait-il pas moyen de faire la même chose ?

Quelques recherches sur Internet me font tomber sur cette fameuse prise Kankun vendue par Amazon US pour 30$. C'est une prise contrôlable via son smartphone Android/iOS. Ce n'est pas exactement mon besoin mais c'est intéressant. Accessoirement, la Kankun est vendue moitié prix de la ResetPlug: le prix à payer pour le logiciel ajouté par ResetPlug ?

 

En cherchant un peu plus, je tombe sur un article de blog de Kenneth Burgener qui explique comment "hacker" la Kankun. L'article explique que la prise Kankun est en fait sous OpenWRT. Mes souvenirs de visiteur régulier du /tmp/lab (un des premiers hacker space en France) me reviennent à l'esprit: OpenWRT est une mini-distribution Linux qui équipe de nombreux équipement réseaux. Et si c'est une distribution Linux, il doit être facile d'y ajouter l'intelligence nécessaire au pilotage de la prise. En effet, l'article de Kenneth explique comment il est possible de se connecter à la prise en SSH et même y installer un mini-serveur HTTP pour la piloter à distance: cool, voilà la solution !

 

Je me lance donc dans l'achat de cette fameuse prise. Comme conseillé dans l'article, je la commande à 16,99$ sur Aliexpress, qui est moins cher qu'Amazon (j'ai encore gagné 50% !), qui y ajoute un adaptateur pour les prises EU et qui livre en France. Après quelques semaines (ça vient de Chine), l'objet arrive finalement au Spot.

Comment rebooter automatiquement son routeur ?

Hacktime

La prise en main n'est pas facile au début. Naïvement, j'essai d'installer l'appli Android pour configurer la prise mais depuis l'article de Kenneth qui date de 2015, l'application n'est plus disponible qu'en Chinois et honnêtement, même pour s'y connecter, c'est compliqué quand on ne comprends pas un mot (pas même un caractère !) de chinois.

 

Bref, je me retourne finalement vers la configuration via SSH. Une fois compris comment on réinitialise la prise (un petit bouton sur le côté) et qu'il faut quelques minutes pour qu'elle expose son WiFi de configuration ("0K_SP3"), j'arrive finalement à me connecter à la console.

 

 

BusyBox v1.19.4 (2014-03-27 17:39:06 CST) built-in shell (ash)

Enter 'help' for a list of built-in commands.

 

  _    _               _    _

 | | _-_| _____ _____  | | _-_| _____ ____

 |  -_-  |     ||     ||  -_-  |     ||    |

 | |-_   |  -  ||  |  || |-_   |  -__||   _|

 |  _ -_ |_____||__|__||  _ -_ |_____||__|  

 |_| -__|  S M A L L   |_| -__| S M A R T

 -----------------------------------------------------

 KONKE Technology Co., Ltd. All rights reserved.

 -----------------------------------------------------

  * www.konke.com            All other products and   

  * QQ:27412237              company names mentioned

  * 400-871-3766             may be the trademarks of

  * fae@konke.com            their respective owners.

 -----------------------------------------------------

root@koven:~# 

 

 

Je commence par configurer l'accès de la prise au WiFi du Spot. C'est expliqué dans l'article de Kenneth: il suffit de modifier deux fichiers de configurations Linux "/etc/config/wireless" et "/etc/config/network" pour y indiquer les informations de connexion au WiFi. Au redémarrage suivant, la prise est donc désormais connectée au WiFi du Spot.

 

Reste à rajouter l'intelligence pour tester la connexion au WiFi et arrêter la prise si la connexion échoue.

L'article de Kenneth et assez détaillé et il existe un groupe Google+ (pas très actif néanmoins) qui propose quelques astuces et programmes pour jouer avec la prise. J'apprends ainsi que pour couper l'alimentation de la prise il suffit d'écrire un 0 dans un endroit très précis du filesystem, ce qui se fait en une commande shell très simple:

 

echo 0 > /sys/class/leds/tp-link:blue:relay/brightness

 

Et pour remettre l'alimentation, il suffit d'écrire 1 au même endroit:

 

echo 1 > /sys/class/leds/tp-link:blue:relay/brightness

 

On ne peut pas faire plus simple ! J'ai donc de quoi piloter la prise pour pouvoir redémarrer le routeur une fois qu'il y sera branché.

 

Il faut maintenant tester la connexion. La prise étant connectée en WiFi au réseau du Spot, il suffit de tester l'accès à Internet pour vérifier que le routeur fonctionne. Il y a plusieurs méthodes pour faire ça mais comme OpenWRT n'intègre qu'un sous-ensemble des commandes Linux habituelles, j'opte pour une solution simple en utilisant la commande "wget" qui permet de lancer une requête HTTP sur une URL. Si l'URL répond la commande retourne 0, si elle ne répond pas elle retournera autre chose. Voilà donc mon test de connexion:

 

wget -q -s http://google.com

if [[ $? -eq 0 ]]; then

        echo 'Il y a internet'

     else

        echo 'Il n'y a pas internet'

fi

 

Comme vous le voyez, je teste l'accès à Google. Si Google tombe, on peut considérer qu'il y a un problème de connexion :-)

 

Bon il n'y a plus qu'à assembler les morceaux: s'il n'y a pas Internet, je coupe l'alimentation et je la remets. Dans la réalité c'est un peu plus compliqué, j'y rajoute un peu d'intelligence:

  • Inutile de tester en permanence la connexion, je considère qu'il suffit de le faire un test toutes les 5 minutes.
  • Par ailleurs il peut y avoir une micro-coupure, je décide qu'en cas d'échec du test de connexion on refait un test 30 secondes plus tard et on ne redémarre que si celui-ci échoue aussi.
  • Enfin, il est un peu brutal de redémarrer sans prévenir les utilisateurs potentiels qui se trouvent dans la salle. Comme justement je viens de recevoir au Spot un afficheur digital LaMetric, j'en profite pour écrire également un petit script (je ne le détaille pas ici mais si ça vous intéresse n'hésitez pas à demander) qui va déclencher un son et un affichage pour indiquer qu'il y a un problème.
Comment rebooter automatiquement son routeur ?

Bref, voici ce que donne le script final qui constitue "l'intelligence" de ma prise.

 

# checkinternet

while true

do

        wget -q -s http://google.com

        if [[ $? -eq 0 ]]; then

                echo $(date) was: online

        else

                echo $(date) was: OFFLINE, retry in 30 seconds

                /root/sendtolametric "Internet issue, retrying in 30s" > /dev/null

  sleep 30

                wget -q -s http://google.com

                if [[ $? -eq 0 ]]; then

                         echo $(date) was: now online

                else

                         echo $(date) was: still OFFLINE, reboot in 10s

                         /root/sendtolametric "Reboot in 10s" i2633 knock-knock critical > /dev/null

                         sleep 10

                         echo 0 > /sys/class/leds/tp-link:blue:relay/brightness

                         sleep 3

                         echo 1 > /sys/class/leds/tp-link:blue:relay/brightness

sleep 600

                fi

        fi

        sleep 300

done

 

En gros c'est un script qui teste toutes les 5 minutes ("sleep 300") la connexion (commande "wget"). Si elle échoue il attend 30 secondes ("sleep 30") puis refait le test. Si elle échoue à nouveau il prévient les utilisateurs (appel "sendtolametric" pour piloter l'afficheur digital), attend 10 secondes puis coupe la prise pendant 3 secondes puis la redémarre. Il attend ensuite bien sagement 10 minutes que le réseau refonctionne et relance son cycle de test.

 

Et ça marche ?

Avant de brancher ma prise ainsi configurée sur le routeur du Spot, j'ai d'abord fait tourner le script "à vide" quelques jours pour vérifier que tout allait bien. J'ai pu ainsi constater qu'il détectait correctement les coupures réseau. J'en ai profité pour le modifier en intégrant quelques temps d'attentes que vous voyez dans le script final ci-dessus. Il faut noter aussi que le script "loggue" chacune de ses actions ce qui me permet de voir à postériori ce qu'il a fait.

 

Finalement la prise est branchée au routeur du Spot depuis 3 semaines. Et j'ai eut la joie de constater qu'elle a déjà "corrigé" deux coupures réseau. Voici par exemple une de ses actions il y a quelques jours:

 

Mon Jul 17 03:18:45 CST 2017 was: online

Mon Jul 17 03:22:52 CST 2017 was: OFFLINE, retry in 30 seconds

Mon Jul 17 03:23:22 CST 2017 was: still OFFLINE, reboot in 10s

Mon Jul 17 03:36:55 CST 2017 was: online

Mon Jul 17 03:41:55 CST 2017 was: online

 

Je suis donc plus serein en me disant que, même en mon absence et même à 3h du matin, ma prise connectée veille à ce que le réseau du Spot soit toujours actif !

 

Amusant non ?

N'hésitez pas à laisser vos remarques ou suggestions en commentaire.

Lire la suite

Conférence sur le Google Summer of Code 2017

9 Mars 2017 , Rédigé par Lionel Publié dans #Overblog, #Google

Conférence sur le Google Summer of Code 2017

Pour la quatrième fois, je suis mentor pour le Google Summer of Code cette année.

Pour présenter ce programme et les projets proposées par l'organisation Open Source SugarLabs à laquelle je contribue, j'ai donné avec Michaël Ohayon une conférence à l'EPITECH le 2 mars dernier.

La conférence est disponible en vidéo ci-dessous. N'hésitez pas à me solliciter si vous voulez participer au Google Summer of Code ou si vous avez des questions sur les sujets présentés.

Lire la suite

Partageons l'expérience de réalité virtuelle

8 Mars 2017 , Rédigé par Lionel Publié dans #Overblog, #realitevirtuelle

Et si la réalité virtuelle pouvait sortir du casque et être une expérience partagée ? Compte-rendu d'une expérimentation dans ce sens menée au Spot Bouygues.

Vous avez peut-être déjà vu cette photo, Mark Zuckerberg - le patron de Facebook - marchant dans une allée au milieu d'une foule qui ne le voit pas, trop occupée à regarder une démonstration dans leurs casques de réalité virtuelle. C'était lors de la conférence Oculus l'année dernière, Mark Zuckerberg était l'invité surprise de la conférence et ce fut donc une vraie surprise pour tous ces spectateurs plongés dans leur monde virtuel.

 

Partageons l'expérience de réalité virtuelle

L'image fait réfléchir. En effet la réalité virtuelle est aujourd'hui une expérience solitaire qui ne se partage pas et surtout qui vous isole complétement du monde extérieur. Difficile d'imaginer que dans une entreprise, vous vous isoliez des vos collègues en mettant un casque sur les yeux alors que mettre un casque audio sur les oreilles n'est déjà pas supporté partout ! C'est le constat qu'a fait Philippe Choyer alors Directeur Général de C2S et auquel il a voulu remédier en faisant appel au Spot Bouygues et à une équipe d'étudiants de l'EPITECH.

 

De cette rencontre est né le projet CubeVR. L'idée: recréer l'immersion d'un casque de réalité virtuelle dans une salle en plaçant différents écrans autour des utilisateurs. Imaginez que vous êtes dans une voiture et que les écrans sont les fenêtres de la voiture ou que vous êtes dans une salle de réunion et que les écrans sont les fenêtres de la salle. En projetant de manière synchronisé une vidéo 360 sur les différents écrans en fonction de leur position géographique, vous pouvez donnez l'impression de vous trouvez ailleurs et être plusieurs à partager cette expérience. La réalité virtuelle sans le casque.

Partageons l'expérience de réalité virtuelle

Pour tester le mécanisme une salle a été emménagé dans les locaux de C2S. L'utilisateur se trouve au milieu de 6 écrans. Chaque paire d'écran représente le NORD, l'EST et l'OUEST. Ils sont reliés à 3 PC qui via le programme développé par les étudiants affichent simultanément une portion de l'angle de vue d'une vidéo 360°.  Via un paramétrage logiciel préalable on détermine la continuité des différentes vues pour qu'une personne ou un objet passant dans le champ de vision passe réellement d'un écran à l'autre. Une immersion sonore est également proposée via un système de haut parleurs disposés autour de l'utilisateur.

 

Voilà une petite vidéo qui montre le système en action pour une visite de Paris.

Techniquement la solution développée en C#/.NET par les étudiants consiste en un serveur qui va jouer le rôle d'ordonnanceur et un client qui encapsule un lecteur vidéo 360 à base de VLC. Chaque client peut être configuré de manière autonome et on peut avoir autant de clients qu'on veut lancé sur une même machine. Dans notre configuration de tests, un PC est utilisé comme serveur et 3 PC reliés à 2 écrans exécutent chacun 2 clients qui pilotent chacun un écran. En fait nous sommes montés jusqu'à 11 écrans simultanés mais nous avons atteints les limites des PC qui ne parvenaient pas à gérer de manière fluides l'affichage de 3 vidéos 360 en parallèle :-)

Partageons l'expérience de réalité virtuelle

La solution reste rudimentaire (à base de vieux PC et vieux écrans) et nécessite aujourd'hui de la configuration manuelle en fonction de la vidéo néanmoins elle donne déjà une bonne impression de ce que l'immersion sans casque peut donner. De plus, les étudiants à l'origine de la solution, Baptiste Moutier, Brian Zabandith et Ronan Camus, continuent à améliorer l'application dans le cadre de leur projet de fin d'étude EPITECH (EIP).

 

Et si la réalité virtuelle pouvait se partager simplement ?

Lire la suite

Quels langages pour développer demain ?

17 Janvier 2017 , Rédigé par Lionel Publié dans #Overblog

Quelles sont les plateformes de développement utilisées aujourd'hui par les étudiants en informatique ? Seront-elles les plateformes de demain ? Tentative de réponse dans ce billet.

Quels langages pour développer demain ?

Au Spot Bouygues (http://lespot-bouygues.com), je suis en contact en permanence avec des étudiants pour faire de l'Open Innovation. Le fossé est grand entre le fonctionnement de l'entreprise et celui des étudiants. Et il y a un domaine où la comparaison entre l'entreprise et les étudiants est intéressant c'est celui des plateformes de développement.

 

En effet, il est parfois étonnant de constater à quel point les langages utilisés par les étudiants sont souvent éloignés de ce que l'on connait en entreprise. Comme vous êtes nombreux à me poser la question des outils qu'utilisent les étudiants, je vous propose dans cet article une petite synthèse de ce que je vois au quotidien.

 

Précisons que cette synthèse s'appuie sur une observation du choix des étudiants sur les projets "libres": c’est-à-dire ceux ou ni l'école ni moi n'imposons une technologie spécifique. Bref: quand ils peuvent utiliser la technologie qu'ils veulent.

 

Architecture 3 couches

Sans grande surprise, l'architecture choisie par les étudiants est une architecture à trois niveaux:

  • Base de données
  • Couche de service, backend
  • Couche de présentation, frontend

 

Base de données: No SQL !

Si en entreprise on trouve plus facilement des bases de données SQL de type SQL Server ou Oracle, la base de données la plus utilisée sur les projets des étudiants est incontestablement MongoDB (https://www.mongodb.com). Ce n'est pas forcément un choix réfléchi par rapport aux mérites du NoSQL vs SQL mais c'est tout simplement plus facile: pas de schéma à imaginer, facilité d'utilisation du JSON, simplicité d'installation, gratuité, …

Quels langages pour développer demain ?

En fréquence d'utilisation par les étudiants, viennent ensuite loin derrière, PostgreSQL (https://www.postgresql.org/) et, plus rarement MySQL (https://www.mysql.fr/). Et ces bases sont souvent utilisées par les étudiants dans le cas où l'école impose un support multiDB.

 

REST pour longtemps

Pour ce qui est de la couche de services, le backend est systématiquement constitué par des services REST (https://en.wikipedia.org/wiki/Representational_state_transfer). Je n'ai jamais entendu parler de Web Services SOAP qu'on trouve pourtant encore beaucoup en entreprise.

La gestion d'authentification sur l'API REST se fait généralement de manière "propre" - l'EPITECH leur apprend très tôt les problèmes de sécurité :-) - en utilisant des tokens qui sont générés lors du login et véhiculé d'une requête à l'autre sur l'API.

Quels langages pour développer demain ?

Le langage de développement utilisé pour le backend est très souvent du node.js (https://nodejs.org). Il est régulièrement associé à un framework de type Express (http://expressjs.com), ou un "ORM" type Mongoose (http://mongoosejs.com/).

 

Je vois aussi de plus en plus souvent le langage Go (https://golang.org/) utilisé sur la partie backend. Ses performances sont souvent mises en avant par les étudiants même si cela est rarement un impératif dans leur projet.

 

Le langage PHP (http://php.net/) reste présent, notamment associé au framework Symfony (http://symfony.com/) qui est pas mal utilisé sur l'école et facilite la génération d'une API.

 

De manière plus anecdotique, je rencontre aussi du Ruby on Rails (http://rubyonrails.org/) ou du Python avec le framework Django (https://www.djangoproject.com). Il m'est arrivé une seul fois d'avoir un groupe d'étudiants ayant réalisé leur backend en .NET ! Je n'ai pas manqué de les féliciter d'être déjà "Entreprise Ready" ! Je n'ai jamais vu de projets d'étudiants avec un backend en J2EE ;-)

 

Inutile de dire que 100% du backend utilisé par les étudiants s'exécute sur Linux. Beaucoup de groupe mettent en place de véritables infrastructures de déploiement en s'appuyant sur des containers Docker (https://www.docker.com/). Sinon, pour le serveur Web, on trouve plus souvent du Nginx (http://nginx.org/) que du Apache (https://httpd.apache.org/).

 

 

AngularJS est dans le coin

Pour la réalisation du FrontEnd web des applications, AngularJS (https://angularjs.org/) , le framework de Google, fait clairement l'unanimité. Il est rare de trouver des projets où il n'est pas présent. J'ai même rencontré plusieurs groupes qui avaient passé du temps (et soufferts) à faire la migration d'AngularJS 1 vers AngularJS 2.

Quels langages pour développer demain ?

Pour les projets avec des IHM moins ambitieuses, je rencontre aussi beaucoup Bootstrap (http://getbootstrap.com/) - créé par Twitter - qui permet rapidement d'obtenir des pages HTML sympathiques.

Je commence également à rencontrer des projets utilisant React (https://facebook.github.io/react/ - créé par… Facebook), c'est un framework qui attise beaucoup la curiosité des étudiants.

 

Pour les développement mobile, je ne rencontre que des développements natifs. En effet, comme c'est trop facile (sic), les étudiants n'ont pas le droit à l'école d'utiliser des plateformes hybrides de type Cordova (http://cordova.apache.org/), PhoneGap (http://phonegap.com/) ou Ionic (http://ionicframework.com/) même s'ils m'en parlent régulièrement.

 

Les développements côté Android se font donc naturellement sous Android Studio (https://developer.android.com/studio). En arrivant à l'école je me suis ainsi rendu compte que j'étais le seul (le dernier ?) qui utilisait encore Eclipse.

 

Pour les développements iOS, il n'y a pas le choix, c'est Xcode (https://developer.apple.com/xcode/) qui est utilisé. Par contre la majorité des projets se font maintenant en Swift plutôt qu'en ObjectiveC. J'ai même vu des projets migrer d'ObjectiveC vers Swift et je rencontre régulièrement des étudiants qui migrent - dans la douleur - vers la dernière version de Swift.

 

Cela peut paraître surprenant mais il y a très souvent des développements sous… Windows Phone (si, si). Bon en fait c'est un peu de la triche car là l'école impose aux étudiants de faire du multi-plateforme, y compris Windows. J'ai rencontré plusieurs projets qui avait fait le choix de faire du Windows Universal (https://msdn.microsoft.com/en-us/windows/uwp/get-started/universal-application-platform-guide) pour fonctionner à la fois sur Windows 10 et Windows 10 Mobile, sinon ils font du classique (et périmé) développement Windows Phone.

 

A noter que je rencontre beaucoup de développeurs "Fullstack", c’est-à-dire capable de travailler sur toutes les couches. Par contre, les développeurs mobiles sont généralement spécialisés: ceux qui font de l'Android ne font pas de l'iOS et réciproquement. Question de religion probablement :-)

 

Les autres outils

Pour ce qui est de la gestion de source, même si l'école utilise encore SVN, c'est clairement Git qui fait l'unanimité. Les projets des étudiants sont donc hébergés sur une des plateformes principales:

Github (https://github.com/) qui propose un  abonnement "Pro" gratuit pour les étudiants, Gitlab (https://gitlab.com/) ou Bitbucket (https://bitbucket.org/). Les étudiants maîtrisent généralement assez bien la gestion des branches dans Git.

Quels langages pour développer demain ?

L'école sensibilise les étudiants au développement agile et à l'intégration continue. Les projets intègrent donc presque systématiquement des tests unitaires, notamment avec Mocha (http://mochajs.org/) pour node.js. On trouve également sur certains projets des vraies plateforme d'intégration continue comme Jenkins (https://jenkins.io/).

 

Pour la documentation des APIs, qui est également imposée, les étudiants utilisent des plateformes de génération automatique à partir des commentaires dans le code: principalement APIDoc (http://apidocjs.com/) ou Swagger (http://swagger.io/).

 

Pour ce qui est de la communication au sein du projet Slack (https://slack.com/) est utilisé par tous. Pour l'organisation des tâches, on retrouve également souvent Trello (https://trello.com/).

 

 

Conclusion

Le titre de ce billet est volontairement provocant: l'ensemble des technologies décrites ici ne sont pas nécessairement celles que l'on retrouvera demain dans toutes les entreprises. Elles sont pour beaucoup très récentes, ne sont pas toujours matures, et certaines disparaîtront peut-être sans jamais arriver à maturité !

Il n'empêche que ces technologies sont portées par de nombreuses startups et qu'elles disposent d'un véritable écosystème. Il est donc important, même dans une entreprise avec un SI qui a quelques années, de s'y intéresser si ce n'est pas déjà le cas. D'autant que les étudiants que je côtoie, qui sont vos futurs collaborateurs, vous en parlerons surement lors de leur entretien de recrutement et que votre réponse sera déterminante pour leur choix :-)

Lire la suite

10 minutes pour briller et parler digital en soirée

23 Décembre 2016 , Rédigé par Lionel Publié dans #Overblog

Lors de la Journée de la Transformation Numérique de Bouygues le 18 novembre dernier, j'ai donné une conférence intitulée "10 minutes pour briller et parler digital en soirée".

Derrière ce titre volontairement racoleur c'est l'occasion pour moi d'expliquer, dans un langage accessible à tous, tout le bien que je pense du développement et des développeurs. J'espère que ça vous inspirera. Si c'est le cas n'hésitez pas à partager.

Retrouvez également l'ambiance de cette très intéressante journée dans cette vidéo.

Lire la suite

A la découverte des Hololens: réalité augmentée et 3D

22 Novembre 2016 , Rédigé par Lionel Publié dans #Microsoft, #Overblog

Les Hololens sont les fameuses lunettes de réalité augmentée de Microsoft. Elles sont arrivées depuis quelques semaines à l'EPITECH, j'ai donc eu l'opportunité au Spot Bouygues de les manipuler et de commencer à travailler avec des étudiants sur plusieurs prototypes. Je vous invite dans cet article à une plongée à la découverte de cet OVNI de l'informatique.

Les Hololens se présentent comme un casque qui enserre la tête de l'utilisateur et place des écrans en forme de lunette devant ses yeux. Il est très important pour vivre au mieux l'expérience de positionner et de serrer le casque pour que le champ de vision soit optimal. Une molette et un bandeau permettent assez facilement de le faire mais quand on essai le matériel vite fait sur un salon, ce n'est pas toujours possible et j'ai reçu plusieurs personnes m'ayant dit "j'ai testé les Hololens, c'est nul" qui ont changé d'avis après les avoir essayées correctement au Spot.

Le casque Hololens

Le casque Hololens

Concrètement ce casque est en fait un véritable PC qui fonctionne sur un espèce de Windows 10. A la différence des dispositifs de réalité virtuelle type Oculus Rift ou HTC Vive, il est donc autonome: on ne traine pas une armée de fils derrière soi. La batterie est tout à fait correcte, le casque se recharge en USB et tient plusieurs heures. Enfin, il faut noter que l'Hololens est très cher (3000€) mais il ne faut pas le considérer aujourd'hui comme un outil grand public mais plutôt comme un outil pour explorer de nouvelles formes d'interaction.

 

Quelles fonctionnalités ?

 

Les Hololens sont des lunettes de réalité augmentée. De manière plus précise, les Hololens ont quatre fonctionnalités principales:

 

Afficher une scène 3D en réalité augmentée: c’est-à-dire projeter dans votre champ de vision, en surimpression par rapport à ce que vous voyez, des objets en 3D. Concrètement les lunettes ont des écrans transparents: lorsque le casque affiche quelque chose vous le voyez donc dans votre champ de vision en plus de la réalité que vous voyez par transparence. C'est très différent de la réalité virtuelle qui réinvente un monde virtuel dans un casque fermé.

 

Possibilité d'évoluer dans l'espace autour de la scène 3D: Grâce à différents capteurs intégrés dans le casque, les Hololens peuvent déterminer les mouvements de la tête que vous réalisez et modifier en temps réel la vue de la scène 3D par rapport à votre champ de vision actuel. Vous pouvez ainsi, par exemple, avoir l'impression de tourner autour des objets.

 

Possibilité de manipuler la scène 3D: lorsque vos mains sont dans votre champs de vision, les Hololens peuvent comprendre certains gestes que vous réalisez et faire réagir les objets 3D de la scène en fonction de ces gestes.

 

Voici une vidéo qui résume ces 3 fonctionnalités.

Comprendre la forme de l'espace autour de vous: Autre fonctionnalité importante, les Hololens embarquent des capteurs du type de ceux de la Kinect et peuvent donc comprendre les objets qui sont autour: sol, murs, table, ... Il est ainsi possible d'intégrer complètement la scène 3D dans son environnement.  C'était le cas dans la vidéo précédente avec le chien posé sur un meuble et les lettres plaquées au mur. La vidéo suivante montre une interaction plus amusante dans le jeu Roboraid où les Aliens sortent littéralement du mur !

Comment faire des choses avec ?

 

Les Hololens sont livrées avec un Kit de Développement s'appuyant sur la technologie Unity. L'outil n'est d'ailleurs par une nouveauté pour les spécialistes de la réalité virtuelle car il permet également de produire des applications pour l'Oculus Rift ou pour le HTC Vive.

 

Concrètement, Unity propose un environnement de développement 3D qui vous permet de dessiner/d'importer des formes 3D dans une scène, d'y ajouter des comportements en .NET et de générer cette scène en tant qu'application pour les Hololens.

Développement Hololens dans l'outil Unity

Développement Hololens dans l'outil Unity

L'API Hololens vous permet également de récupérer dans votre scène les informations de contexte fournies par les capteurs du casque: vous avez ainsi la possibilité de récupérer dans votre application l'ensemble du champ de vision sous forme de polygones ou sous forme d'objets reconstitués par l'API (sol, murs, tables, …).  La vidéo ci-dessous vous montre par exemple les polygones que "voit" les Hololens par rapport à la réalité et qui peuvent être exploitées par les applications.

Pour quoi faire ?

 

Les scénarios d'usage sont innombrables: que ce soit pour la formation, le support, la construction, le design …  En fait partout où l'intégration d'un objet 3D dans la réalité a un sens, les Hololens peuvent être pertinentes.

Les gens sont néanmoins souvent désemparés à l'idée de concevoir une application pour les Hololens: l'ajout de la 3ème dimension peut en effet être déroutante. Pourtant les questions à se poser sont les mêmes que lorsqu'on veut développer - par exemple - un site web:

  • Quels contenus je veux présenter ?
  • D'où proviennent ces contenus ? Est-ce qu'ils sont statiques (des objets 3D dont je dispose) ? Est-ce qu'ils sont dynamiques et dans ce cas où vais-je les récupérer ou comment vais-je les générer ?
  • Quel interactions peut-il y avoir avec ces objets ? Par défaut les Hololens permettent de  tourner autour mais puis-je interagir avec eux ? Si oui avec quels gestes ? Que provoqueront les interactions: l'affichage de nouveaux contenux ? Le changement (taille, propriété) du contenu existant ?

Une fois la réponse à ces questions posées, ce n'est plus qu'une affaire de développement, plus ou moins complexe selon les interactions à réaliser.

 

Au final

 

Les Hololens sont un outil formidables, de toutes les lunettes de réalité augmentée que j'ai pu tester (Google Glass, Optinvent, Metaglass, …) c'est sans aucun doute le matériel le plus abouti aujourd'hui. Elles proposent une expérience unique et  permettent de se projeter dans un avenir où l'interaction 3D serait la norme. C'est en tout cas l'avis de Microsoft dont la prochaine version de Windows intégrera la 3D partout (Paint, Office).

 

Alors, et si vous tentiez l'expérience Microsoft Hololens vous aussi ?

Lire la suite

I'm back: Twist and shout

25 Août 2016 , Rédigé par Lionel Publié dans #Overblog

Amis follower, vous l'avez probablement remarqué ma veille s'est considérablement réduite depuis quelques semaines. Et ce n'est pas (simplement) parce que c'était les vacances :-)

En fait, suite à mon passage au Mac, l'outil maison que j'utilise pour partager ma veille - Twist - est devenu inutilisable car il s'agissait d'un programme Windows (écrit en .NET pour être précis).

J'ai donc consacré pas mal de temps ces dernières semaines à le réécrire pour qu'il soit utilisable sur Mac. J'en ai profité pour lui adjoindre plein de fonctionnalités, à le rendre multiplateforme, multiutilisateur, cloud ready, ... bref, à le remettre au goût du jour. Cerise sur le gâteau il est désormais Open Source, vous pourrez donc suivre son évolution ici. Je ferai également un post dans quelques semaines pour vous raconter mon expérience sur ce premier vrai développement sur mon Mac.

Bon l'outil n'est encore qu'une version limitée (tout juste utilisable par moi :-) et vous constaterez donc probablement quelques erreurs dans mes publications mais en tout cas je suis de retour et vous allez être à nouveau pollué par ma veille sur tous les réseaux sociaux !

Chouette.

Lire la suite

Ma transformation numérique à moi, épisode 3

2 Août 2016 , Rédigé par Lionel Publié dans #Overblog

Troisième épisode de ma transformation numérique à moi et de mon passage au Mac. Après les difficultés du précédent épisode, il est temps d'apprivoiser la bête.

 

Les règles de la transformation

En me lançant dans ma transformation je me suis fixé quelques règles implicites que j'aimerai vous faire partager:

  • Pas de retour arrière. Je ne suis pas en train d'expérimenter le passage de PC à Mac. Je le fais vraiment. Je ne reviendrai pas sur PC si je ne suis pas satisfait. Ça change beaucoup de chose dans mon état d'esprit et dans mes actions, je me met en danger et je n'ai pas le choix. Il FAUT que je trouve des solutions pour éviter de vivre avec les problèmes que j'ai découvert. C'est cette angoisse qui me fait avancer aussi.
  • Pas de Window sur Mac. Dans l'absolu, je pourrais résoudre mes problèmes en installant une machine virtuelle Windows sur mon Mac. Je pourrais ainsi utiliser sur Mac les outils dont j'avais l'habitude sur  PC. Je retrouverai comme cela les fonctionnalités Outlook 2016 qui me manquent tant. Mais évidemment ça n'aurait aucun sens pour mon expérience et surtout ça ajouterai une contrainte supplémentaire (la machine virtuelle à démarrer) pour faire la même chose que je faisais avant. Il faut aussi savoir abandonner le passé.
  • Des fonctionnalités en plus. Je ne vais pas changer de solution pour avoir moins qu'avant. Sinon pourquoi changer ? Dans mes recherches je veillerai à chaque fois à ce que les outils que je choisirai soient plus efficaces ou plus riches que ceux que j'utilisais jusqu'à présent. C'est à ce prix uniquement que ma transformation sera réussie.

 

Il y a des logiciels sur Mac !

Armé de ces règles me voici donc lancé dans le changement de mes outils.

 

Et évidemment le premier outil à changer est ma gestion des tâches. C'est même la première tâche à faire (!) tant cela impacte mon quotidien. A dire vrai, je n'ai pas de mal à trouver des outils pour gérer ses tâches, il en existe une quantité impressionnante sur Internet et sur le Store. Après quelques essais, mon choix se porte sur todoist. Comme beaucoup il s'agit d'un outil cloud, il est donc accessible sur de nombreux supports (web, mobile, Windows et Mac). Son intégration au Mac est très bien faite. Il se place sur le dock et indique le nombre de tâches à faire dans la journée. Il est également présent sur la barre en haut où il est facile en 1 clic / 1 raccourci de créer une nouvelle tâche. Amusant: il vous félicite lorsque vous avez terminé toutes vos tâches et évalue votre nombre de "points de Karma" qui vous emmène vers le zen et la tranquillité.

 

L'outil est en freemium. La version payante permet d'intégrer des notes ou fichiers dans les tâches, d'avoir un archivage et des statistiques plus poussées sur son activité. Je n'en ai pas le besoin mais à 30€ par an, ça reste un investissement intéressant.  J'adopte assez rapidement todoist. Son gros avantage par rapport à la gestion des tâches Outlook est le multi-plateforme. Cela lui permet d'être très présent dans votre environnement: sur le bureau Mac, sous forme de notification sur le téléphone et il vous envoie même un mail récapitulatif en début de journée. Et son côté un peu ludique avec les félicitations et les points de karma est agréable. Évidemment la migration de Outlook vers todoist est "manuelle": il faut reporter ses tâches dans l'outil mais cela ne pose pas de problème (une quinzaine de tâches à reporter dans mon cas). Amusant: il existe un plugin permettant d'intégrer todoist dans Outlook mais… sur PC uniquement :-)

 

Autre point sensible pour moi la gestion de mes flux RSS et de la veille technologique que je pratique. Là non plus les outils ne manquent pas sur le web. Mais je souhaite vraiment un outil qui me permette de traiter les flux à mon rythme tout en étant lui aussi suffisamment présent dans mon environnement pour m'inciter facilement à m'informer. C'était l'avantage de recevoir les news dans Outlook. Après quelques essais j'opte pour l'outil feedly. C'est encore un outil cloud et il est lui aussi multi-plateforme notamment parce qu'il dispose d'une API ouverte. Il n'y a donc pas un seul device où vous ne pourrez pas le trouver : il est même disponible sur Blackberry, webOS et Firefox OS !

 

Comme c'est le cas pour ce genre d'outil, son interface propose d'organiser ses flux par thème et affiche une vue synthétique qui permet de parcourir les news de manière agréable. On peut cliquer dessus pour avoir le détail ce qui ouvre la news dans une nouvelle fenêtre et affiche le contenu total s'il est présent dans le flux (ce qui est de moins en moins le cas pour des raisons publicitaires). Mais il permet aussi d'ouvrir le navigateur pour voir le contenu sur le site. On peut marquer les articles comme lus au fur et à mesure, ils disparaissent alors du flux, ou les enregistrer pour les lire plus tard.

L'intégration sur Mac et intelligente puisqu'une fois de plus l'application s'affiche dans le dock avec le nombre d'articles à lire.

 

Mails, ToDo et Flux : tout ce qu'il y a à traiter et ici

Comme le montre la capture d'écran ci-dessus, je me retrouve ainsi sur mon bureau avec un vrai tableau de bord de mes choses à traiter: mails, todo et flux. Très efficace.

Avantage par rapport à Outlook, je peux facilement faire ma veille en mobilité, l'application Android étant tout à fait fonctionnelle. Autre bonus: feedly étant un outil cloud, il suggère de nouveaux contenus en rapport avec ceux que vous consultez en se basant sur cela sur les autres utilisateurs de l'outil. C'est souvent pertinent.

La migration depuis Outlook est assez facile car il est possible d'exporter tous les flux RSS enregistrés dans Outlook sous forme de fichier "OPML" qui est importable dans feedly. En quelques minutes, l'outil est donc complétement opérationnel dans mon cas.

 

Je procède de la même manière pour changer mes autres outils, je le fais au fur et à mesure, un outil à la fois en essayant différentes solutions. Ça prend du temps mais je suis surpris de constater une chose: "il y a des logiciels sur Mac !". Moi qui naïvement en vieil utilisateur de PC pensais que ce serait difficile, je n'ai aucun mal à trouver des outils équivalents à ceux à ce que j'utilisais: tout existe sur Mac.

Je ne vais pas détailler tous mes choix mais pour vous donner une idée, voici ce que donne ma barre d'outils sur Mac par rapport à celle que j'avais sur PC.

 

Avant: Windows 10

Après: Mac OS

 

On remarquera qu'il n'y a presque aucun outil Apple: pour une raison simple, ils ne sont généralement pas portables et non je ne veux pas changer mon Android contre un iPhone :-) J'essaye aussi, chaque fois que c'est pertinent, d'utiliser plutôt des solutions Open Source.

 

 

Un bureau, plusieurs bureaux, aucun bureau

Mise à part la partie logiciel, j'arrive maintenant de mieux en mieux à "dompter" mon touchpad. Je le trouve même d'une redoutable efficacité lorsqu'il s'agit de changer de "bureau". En effet, comme c'est le cas depuis peu sous Windows 10, il est possible d'organiser sous MacOS ses fenêtres dans différents "bureaux virtuels" qui sont autant d'espace de travail spécifique. J'étais sceptique sur cette fonctionnalité que n'ai jamais utilisé dans d'autres environnements mais elle très utile associée au touchpad et au défilement à trois doigts qui permet en un instant de zapper d'un bureau à un autre ou de réorganiser les fenêtres de son bureau.

 

 

En gros on peut laisser toutes les fenêtres ouvertes dans tous ces logiciels tout en restant productif !

 

Au fur et à mesure que j'utilise mon Mac je suis aussi surpris d'une chose: je n'ai plus de fil à la patte… Je m'explique: avant mon bureau ressemblait à ça:

Avant mon bureau c'était là…

 

Certes j'avais un PC portable mais je devais y ajouter pour travailler de manière confortable, un écran externe, un clavier, une souris, une encombrante "dock station" pour brancher tout ça et accéder au réseau, etc, …

Aujourd'hui j'ai un écran fantastique, un clavier très efficace, un touchpad plus efficace qu'une souris et l'absence de câble réseau, que je trouvais surprenante dans mon précédent billet, me parait un vrai avantage: le WiFi est largement suffisant.

 

Du coup je me rends compte que je n'ai plus besoin de bureau et que partout cela peut être mon bureau ! On parle beaucoup aujourd'hui de tiers lieux et d'aménagements de bureaux pour que chacun puisse s'installer où il veut: encore faut-il qu'on n'est pas à trainer avec soi tous ces accessoires de branchement !

 

…maintenant mon bureau c'est partout !

 

Ravi de cette découverte, je m'achète un sac à doc, j'y glisse mon nouveau bureau et je pars pour de nouvelles explorations. Vous venez ?

Lire la suite
1 2 3 4 5 > >>