C'est une question très large, mais j'essaierai de donner quelques indications générales, si tout va bien utiles aux autres, ainsi qu'à vous (donc, veuillez accepter mes excuses si je poste des choses que vous connaissez déjà).
Si vous posez des questions sur la lecture des capteurs, il s'agit de télémétrie et pas nécessairement d'IoT. J'ai codé de nombreux projets où un PC autonome lit et affiche des mesures.
Si vous souhaitez également contrôler le matériel connecté, il s'agit de SCADA . Encore une fois, il ne doit pas nécessairement être connecté à Internet.
Voici un schéma de SCADA, qui donne une très bonne idée de l'IoT en général. Notez que les API sur le schéma sont des capteurs et des commandes d'appareils compatibles IoT.
Vous pouvez demander des félicitations matérielles pour les capteurs et les contrôleurs dans Hardware Recommendations .
Et, une fois que vous avez du code, vous pouvez obtenir des conseils sur les problèmes sur Stack Overflow .
En général, l'IoT pour l'industrie implique le modèle client / serveur, le client mesurant / contrôlant les périphériques matériels et rapportant / recevant des commandes du serveur. Le serveur possède également généralement une base de données et permet de générer des rapports pour la gestion et les alarmes (et peut demander au matériel distant de reconfigurer / arrêter en fonction des données reçues).
Phew! Voilà l'intro à l'écart. Maintenant pour se salir les mains.
Si vous voulez entrer dans le vif du sujet du codage, regardez les sockets et comprenez la différence entre TCP et UDP .
Heureusement, les décennies ont enveloppé la plupart des choses les plus délicates dans les bibliothèques, et il est probablement préférable de lire les services RESTful. Il existe de nombreux tutoriels, cours et vidéos en ligne gratuits, selon votre langue; C est un langage embarqué traditionnel, certains utilisant C ++, mais bien sûr, utilisez tout ce que vous savez / vous sentez à l'aise. Python est extrêmement populaire et simple à apprendre, tout en étant le langage recommandé pour le Raspberry Pi.
Personnellement, je préfère les langages compilés à interprétés, car il est plus facile de supprimer les bogues, mais le choix vous appartient entièrement. Assurez-vous simplement qu'il a un bon support pour accéder aux périphériques via USB, Ethernet et - toujours très courant dans l'industrie - le port série.
Côté serveur, plus de 90% des serveurs mondiaux fonctionnent toujours en PHP. Cependant, il y a une adoption de l'utilisation de NodeJS, principalement par des personnes qui codent des applications de navigateur, qui ne peuvent actuellement être effectuées qu'en JavaScript et ne veulent pas apprendre deux langues. Je ne recommande pas de développer des applications IoT basées sur un navigateur, en raison des restrictions sur le code du navigateur accédant au système de fichiers et aux périphériques (bien que, je mentionnerais les goûts de Cordova , si vous souhaitez développer pour smartphone).
Pour commencer, je recommanderais un Raspberry Pi (codage en Python ou C).
Et je recommande fortement un chapeau de capteur. Celui-ci n'est qu'un exemple, mais il n'est pas cher et contient
- Gyroscope - capteur de vitesse angulaire: +/- 245/500 / 2000dps Accéléromètre
- Capteur d'accélération linéaire: +/- 2/4/8/16 g
- Magnétomètre - Capteur magnétique: +/- 4/8/12/16
- Baromètre Gauss: plage absolue de 260 à 1260 hPa (la précision dépend de la température et de la pression, +/- 0,1 hPa dans des conditions normales)
- Capteur de température (température précise à +/- 2 ° C dans la plage de 0 à 65 ° C)
- Capteur d'humidité relative (précis à +/- 4,5% dans la gamme 20-80% rH, précis à +/- 0,5 degC dans la gamme 15-40 degC)
- Affichage matriciel LED 8x8 RGB
- Petit joystick à 5 boutons
Cela vous permettra de collecter des données et de les rapporter à votre serveur. Vous pourrez peut-être trouver un service gratuit en ligne pour recevoir et afficher vos données. J'en ai vu sur d'autres sites SO, mais oubliez où.
Mais, vous voulez probablement coder votre propre serveur. Je recommanderais PHP comme langage de programmation. Pour Linux, vous êtes bien fourni avec LAMP (Linux, Apache, Mysql et PHP). Pour Windows, vous devez installer un WAMP (Windows… etc).
Vous pouvez faire votre choix. J'utilise XAMPP dans des applications industrielles depuis plus d'une décennie. Vous n'avez pas besoin d'utiliser Mysql, Sqlite peut tout aussi bien servir (prise shaless pour ma propre question SO d'il y a 6 ans, " Sqlite ou MySql? Comment décider? "). Vous devrez également vous renseigner sur CRUD .
Sur la base des données reçues du client / capteur, vous souhaiterez peut-être renvoyer une commande, même simple (affichage: "température trop élevée", ce qui peut se traduire par la fermeture d'une vanne dans un système industriel).
Vous voudrez peut-être déclencher des alarmes en temps réel (envoyez un e-mail disant que la température est trop élevée).
Et, vous pouvez également penser à générer des rapports. Commencez avec un tableau montrant les données reçues. Considérez un tableau ou quelque chose de plus sophistiqué. Ajoutez une option d'exportation vers des valeurs séparées par des virgules (CSV) qui permet à l'utilisateur final d'importer les données dans une feuille de calcul pour une analyse et une manipulation supplémentaires.
Si vous ne décidez que vous voulez rapports de fantaisie, vous pouvez le faire en PHP, mais, après quelques décennies de ce que j'ai déménagé à faire une grande partie du côté client stuff rapport, dans le navigateur.
Pour les principes généraux, obtenez un aperçu des applications à page unique et AJAX . Personnellement, j'ai fait beaucoup de recherches et j'ai choisi AngularJS de Google comme langage de programmation (il y a beaucoup de tutoriels et un excellent support), mais vous êtes libre d'utiliser JS, Jquery, etc., comme vous le souhaitez.
Si vous décidez également de coder des éléments du navigateur, et vous pourriez aussi bien utiliser NodeJs côté serveur, de sorte que vous n'avez qu'à apprendre un nouveau langage de programmation.
Trop de choix? Pardon :-(
J'espère que cela vous a donné quelques conseils, mais n'hésitez pas à poser des questions et faites-moi savoir s'il manque des conseils généraux ici.