C'est un sujet auquel je pense depuis un moment, notamment parce que le concept "IoT" a beaucoup circulé ces derniers temps.
Je vais commencer par ce que je veux dire quand je dis "IoT" . Je sais que le terme IoT pourrait signifier différentes choses et qu'il est parfois mal utilisé. Ce pourrait être un terme qui n'est pas clairement défini et peut conduire à de grandes discussions sur ce que cela signifie exactement, je ne connais pas moi-même la définition correcte et largement acceptée du terme. Donc, pour moi, l'IoT est un concept, un concept qui définit la possibilité de se connecter à distance à un appareil embarqué via Internet, soit depuis un autre appareil embarqué, soit depuis un téléphone portable . Aussi simple que cela.
Dans ce contexte, l'objectif de la connexion n'a pas d'importance, si vous pouvez connecter un appareil dans votre bureau à un autre à la maison, ou si vous pouvez vous connecter à un appareil à la maison à partir de votre téléphone portable, tout cela via Internet, nous parlons ensuite des appareils IoT (les appareils embarqués, pas le téléphone).
Donc, après avoir convenu de ce que je veux dire par IoT, je vais maintenant décrire ce que j'essaie de réaliser.
Ce que j'essaie d'atteindre, c'est précisément ce que je décris dans ma définition de l'IoT.
Je veux avoir un ou plusieurs appareils embarqués à la maison connectés à mon routeur Internet, soit par Ethernet ou wifi et pouvoir me connecter à distance avec d'autres appareils embarqués dans un endroit distant (et par télécommande je veux dire pas sur le même réseau) et peut-être aussi pour pouvoir me connecter avec une application de surveillance sur mon téléphone
Par exemple, je peux avoir un simple appareil intégré agissant comme un interrupteur marche / arrêt accroché à mon ouvre-porte de garage et un autre appareil intégré agissant comme un gros bouton rouge sur mon bureau au travail afin que je puisse appuyer sur le bouton rouge de mon bureau et la porte du garage s'ouvre.
Un autre exemple serait d'avoir un appareil intégré avec des capacités ADC qui peut surveiller la température de ma maison et m'envoyer une alerte lorsqu'elle atteint un seuil. La notification peut être reçue soit par une simple application Android, soit par un autre appareil intégré avec un petit écran posé sur mon bureau au travail.
Ces exemples peuvent être stupides, mais ne sont que pour illustrer les scénarios possibles et les cas d'utilisation pour ce que j'essaie de réaliser. À la fin, l'idée est la même: connecter un appareil intégré à un autre via Internet.
Une autre chose à clarifier est que l'échange de données entre ces appareils sera très léger, seulement quelques octets à chaque fois, ce n'est pas que des centaines de kilo-octets soient nécessaires pour être échangés entre les appareils.
De plus, le type d '«appareils intégrés» dont je parle sont des appareils simples mais capables basés sur des microcontrôleurs cortex-m4 100 MHz ou 200 MHz. Et c'est important de clarifier car il n'y aura pas de Linux ou de bibliothèques complexes fonctionnant sur ces appareils. En fin de compte, c'est un tel gaspillage de ressources et complètement inutile d'avoir un processeur puissant exécutant Linux juste pour allumer et éteindre une ampoule . Dans tous les cas, je prévois d'utiliser un BeagleBoard, un Raspberry Pi ou toute autre carte comme celle-ci comme appareils intégrés. Juste des microcontrôleurs car pas plus de complexité que nécessaire.
Je ne connais pas grand-chose aux plateformes IoT et à ce genre de solutions complexes. Lorsque j'ai commencé ce voyage pour trouver un moyen de connecter un appareil intégré à un autre via Internet, je suis tombé sur deux sites avec des services IoT.
Je sais qu'il existe des services cloud IoT comme:
Juste pour en nommer quelques-uns. Les principaux problèmes avec ceux-ci sont le coût et la complexité. Vous devez payer pour obtenir ces services et vous devez également apprendre à mettre en œuvre tous les services dont ils disposent, au cas où vous en auriez besoin tous, et leurs API et peut-être un tas d'autres choses qui ne me semblent pas nécessaires pour être capable d'échanger seulement quelques octets entre les appareils. Je veux juste quelque chose de plus simple que ça, quelque chose que je peux faire moi-même.
Vous pouvez dire que l'implémentation de mon propre "cloud", si c'est quelque chose que je dois faire, n'est pas simple et qu'il est parfois préférable d'utiliser ce genre de services pour des raisons de simplicité, mais il y a deux raisons principales pour lesquelles je veux savoir comment implémenter mes propres services IoT.
La raison principale est que je veux le faire moi-même. Je ne veux pas compter sur une tierce partie pour connecter mes appareils entre eux et comme je développerai le code et le matériel de mes appareils, il est préférable de créer également mes propres moyens pour les connecter en tant qu'appareils IoT.
La deuxième raison est d'apprendre à le faire. En sachant tout ce dont j'ai besoin pour y parvenir, j'aurai une meilleure compréhension du monde IoT.
De plus, je tiens à mentionner que je maîtrise C et j'utilise Linux comme système d'exploitation de tous les jours au travail comme à la maison, alors s'il vous plaît, évitez les trucs Windows car cela ne me sert à rien. Je n'ai pas peur de tout ce que j'ai à implémenter en C pour mes appareils embarqués ou sur Linux pour implémenter tout ce qui est nécessaire pour atteindre mon objectif.
Ma question est donc la suivante: que faut-il mettre en œuvre et où, pour pouvoir connecter deux ou plusieurs appareils intégrés entre eux dans le but d'échanger des données entre eux?
Cette question Que puis-je utiliser pour créer un IoT sur notre propre serveur? ont quelque chose de similaire mais est fermé et n'a pas de réponse, suppose également qu'une infrastructure cloud déjà existante soit utilisée. Donc ça ne m'aide pas.
Cet autre article Quels services IoT sont disponibles pour stocker / envoyer / publier des données génériques dans le cloud? a une question similaire, mais le PO demande explicitement des services IoT et j'essaye de les éviter.