Comment connecter Raspberry Pi à Mainflux

Configuration de MQTT sur le Raspberry Pi sans tête et connexion à la plate-forme Mainflux sur la gouttelette DigitalOcean

Dans ce tutoriel, nous allons:

  • Installez Raspbian Strech Lite sur le Raspberry Pi 3 sans tête modèle B
  • Configurer le WiFi sur Raspberry Pi
  • Installer Mosquitto (serveur MQTT) sur Raspberry Pi
  • Configurer Mainflux (plateforme IoT) sur la gouttelette de l'océan numérique
  • Connectez Raspberry Pi avec Mainflux

Pour suivre ce tutoriel, vous aurez besoin d'un ordinateur (je le fais avec un ordinateur portable Windows 7), Raspberry Pi (j'ai RPi 3 modèle B), une carte microSD et une connexion WiFi

Installation de Raspbian

Si c'est la première fois que vous utilisez Raspberry Pi, nous devons y installer le système d'exploitation. Comme nous utiliserons le Raspberry Pi sans tête (sans moniteur), une version minimale de Raspbian sera suffisante. Téléchargez Raspbian Strech Lite et téléchargez Etcher. Mettez la carte microSD dans votre PC et exécutez Etcher.

Choisissez l'image Raspbian (vous n'avez pas besoin de la déballer), choisissez le lecteur où se trouve votre carte microSD et cliquez sur Flash!

Connexion de Raspberry Pi

Nous devons connecter le PC au Raspberry Pi et connecter le Pi au WiFi. Pour cette tâche, notre PC et notre Raspberry Pi doivent se connecter sur le même réseau WiFi. Pendant que votre carte microSD est dans votre PC, créez deux fichiers à sa racine: wpa_supplicant.conf etssh.

Dans wpa_supplicant.conf entrez ce texte et modifiez vos coordonnées: code du pays, nom WiFi et mot de passe:

pays = US
ctrl_interface = DIR = / var / run / wpa_supplicant GROUP = netdev
update_config = 1
réseau = {
 ssid = "WiFiNetworkName"
 psk = "WiFiPassword"
 key_mgmt = WPA-PSK
}

Le fichier avec namessh doit rester vide et sans aucune extension.

Éjectez la carte microSD de votre ordinateur et insérez-la dans votre Raspberry Pi. Mettez votre Pi sous tension et après quelques instants, votre Pi devrait être opérationnel et connecté au WiFi. Mais nous ne le voyons pas tant que nous ne nous connectons pas du PC au Raspberry Pi. Pour cela, nous devons trouver l'adresse IP locale de Raspberry Pi. Une façon de le trouver consiste à se connecter à votre routeur et à trouver les périphériques connectés. Une autre façon consiste à découvrir d'abord l'adresse IP locale de votre PC. Si vous utilisez Windows, exécutez l'invite de commande (appuyez sur Win + R et tapez cmd) et tapez ipconfig

Adresse IP locale du PC

Ensuite, nous scannerons le sous-réseau de classe C de cette adresse IP avec Advanced IP Scanner (tapez l'adresse de votre PC et cliquez sur le bouton "C" dans Advanced IP Scanner). Vous devriez voir tous les appareils connectés à votre WiFi et reconnaître votre Raspberry Pi.

Recherche de l'adresse IP locale de Rasberry Pi

Sur votre ordinateur, ouvrez PuTTY et connectez-vous à l'adresse IP de Pi

Connectez-vous en tant que pi avec le mot de passe framboise, et enfin nous sommes connectés à notre Raspberry Pi et pouvons y installer des moustiques.

Installation de MQTT sur Raspberry Pi

MQTT est un protocole de messagerie de machine à machine, conçu pour fournir une communication légère de publication / abonnement aux appareils «Internet des objets».

Nous allons installer Mosquitto, serveur / courtier MQTT populaire, sur Raspbery Pi avec cette commande:

sudo apt-get install mosquitto mosquitto-clients

Testons-le avec deux connexions SSH à Pi.

Dans une fenêtre, nous nous abonnerons aux messages sur le canal «test / sujet»:

mosquitto_sub -v -t "test / sujet"

Dans une autre fenêtre, nous publierons des messages sur le même canal:

mosquitto_pub -t "test / sujet" -m "Bonjour tout le monde!"

Abonnement et publication de messages MQTT sur localhost

Les messages que nous publions dans une fenêtre de terminal s'afficheront sur l'autre.

Ces messages s'échangent sur l'hôte local de Raspberry Pi, et notre objectif est de les envoyer sur la plateforme Mainflux dans le cloud.

Installer Mainflux sur DigitalOcean

Mainflux est une plateforme cloud Internet des objets moderne, évolutive, sécurisée, open source et sans brevet. Il accepte les connexions sur plusieurs protocoles réseau (par exemple HTTP, MQTT, WebSocket), créant ainsi un pont transparent entre eux.

Nous vous montrerons étape par étape comment l'installer sur la droplet DigitalOcean.

Créez une gouttelette Ubuntu 16.04.4 x64, les ressources les plus faibles seront suffisantes pour ce test (1 Go de RAM, 1 vCPU, 25 Go de SSD).

Créez un utilisateur non root avec les privilèges sudo et basculez vers cet utilisateur:

adduser ivan
usermod -aG sudo ivan
su ivan

Ensuite, installez Docker à partir du référentiel Docker officiel. Nous n'avons besoin d'exécuter que ces quatre commandes, si vous voulez explorer les détails, vous pouvez regarder ici.

Pour éviter de taper sudo chaque fois que vous exécutez la commande docker, ajoutez votre nom d'utilisateur au groupe docker.

sudo usermod -aG docker ivan

Pour appliquer la nouvelle appartenance à un groupe, vous devez vous déconnecter et vous reconnecter.

Ensuite, nous allons installer Docker Compose.

Tout d'abord, vérifiez ici quelle est la dernière version et modifiez la commande ci-dessous:

Et définissez enfin les autorisations:
sudo chmod + x / usr / local / bin / docker-compose

Maintenant, nous sommes prêts à configurer Mainflux. Connectez-vous à votre droplet (lancez PuTTY ou la console sur le tableau de bord DigitalOcean).

L'installation et le démarrage de la plate-forme Mainflux avec des services supplémentaires impliquent uniquement ces trois étapes:

Voilà, nous avons installé et démarré la plateforme Mainflux avec des services supplémentaires (ces services sont la base de données InfluxDB, le service d'écriture InfluxDB et l'outil Grafana).

Vous pouvez maintenant ouvrir le tableau de bord dans votre navigateur sur votre adresse IP de droplet, n'oubliez pas https: // et ignorez les avertissements de sécurité.

Vous pouvez y créer des utilisateurs, des canaux et des choses sur Dasboard ou vous pouvez le faire avec des commandes curl sur le serveur comme décrit dans la documentation. Nous allons nous enregistrer sur le tableau de bord, créer deux choses (nommées MyThing1 et MyThing2) et les connecter au canal (nommé MyChann).

Ajoutez des éléments et connectez-les à la chaîne

Créez un jeton d'autorisation pour le compte que vous venez de vous inscrire en envoyant une demande HTTP POST depuis votre ordinateur. Vous pouvez utiliser Postman pour cela, vous envoyez une demande à l'adresse IP de votre droplet et n'oubliez pas de désactiver la vérification de certification SSL (dans Postman: Paramètres -> Général). Pour obtenir le jeton d'autorisation POST to / tokens e-mail et mot de passe de votre compte Mainflux

Obtention d'une clé d'autorisation dans Postman

Voyons ce que nous avons créé sur le tableau de bord. Basculez vers la méthode GET et dans l'en-tête créez la clé d'autorisation avec la valeur du jeton de la réponse précédente. OBTENIR de / choses

Obtention des identifiants et des clés des choses dans Postman

Nous utiliserons ces clés plus tard lorsque nous connecterons Raspberry Pi comme ces choses. Avec le service Mosquitto installé sur Raspberry Pi, nous enverrons des messages SenML et Mainflux stockera ces données dans sa base de données InfluxDB. Donc, avant de connecter et d'envoyer des messages, configurons Grafana, l'outil que nous utiliserons pour afficher les données stockées dans la base de données.

Accédez à l'adresse IP de votre serveur sur le port 3001. Vous devriez voir la page de connexion de Grafana:

Page de connexion Grafana. Nom d'utilisateur: admin, mot de passe: admin

Nous allons utiliser les informations d'identification d'administrateur par défaut pour Grafana: admin / admin

Cliquez pour ajouter une source de données et vous devriez voir le formulaire pour ajouter une nouvelle source de données.

Choisissez le nom que vous voulez, nous utiliserons Mainflux. Ensuite, choisissez InfluxDB dans la liste déroulante comme type de base de données.

L'URL de la base de données est http: // mainflux-influxdb: 8086.

Si nous ne mentionnons pas certains des champs, cela signifie que ces champs sont laissés à leurs valeurs par défaut. Enfin, configurez les détails d'InfluxDB. La base de données, l'utilisateur et le mot de passe ont tous la même valeur: mainflux.

Après avoir rempli ces champs, votre formulaire devrait ressembler à ceci:

Paramètres de la source de données InfluxDB dans Grafana

Cliquez sur enregistrer et tester. Envoyons quelques données à Mainflux afin que nous puissions les suivre dans Grafana.

Connectez Raspberry Pi à Mainflux

Nous avons déjà utilisé les commandes mosquitto_pub et mosquitto_sub sur Raspbery Pi pour publier des messages simples et les recevoir en vous abonnant à des rubriques. Les messages ont été envoyés et reçus sur le serveur MQTT local. Mais maintenant, publions les messages de Raspbery Pi sur la plate-forme Mainflux installée sur le serveur cloud. Ainsi, mosquitto_sub et mosquitto_pub auront plus d'options, car nous devons définir le nom d'hôte (-h) de notre serveur, le nom d'utilisateur (-u) et le mot de passe (-P) de la chose que Raspbery Pi représentera.

Nous allons d'abord nous abonner en tant que MyThing1 aux canaux de sujet / 1 / messages
Le format de canal est channel / / messages puisque nous n'avons créé qu'un seul canal (MyChann), son identifiant est 1. Si vous avez créé plus de canaux, vous pouvez obtenir leurs identifiants avec Postman avec demande GET de / channels

Le nom d'utilisateur (-u) et le mot de passe (-P) sont l'ID et la clé de la chose que nous avons déjà obtenus de / Things avec Postman dans le chapitre précédent. Le nom d'hôte (-h) est l'adresse IP de la droplet où nous avons installé Mainflux.

Enfin, publions quelque chose sur le même sujet, ouvrons une nouvelle fenêtre de terminal sur Raspbbery Pi et maintenant nous allons représenter MyThing2

Nous devrions voir les messages que nous publions dans le terminal où nous sommes abonnés à des sujets.

Pour le dernier test, au lieu de publier des chaînes, nous publierons des messages au format SenML. SenML signifie Sensor Markup Language et représente le type de support pour représenter des mesures de capteur simples et des paramètres de périphérique.

Donc, au lieu de -m "Bonjour, monde!" Dans la dernière commande, envoyez:

-m '[{"bn": "nom", "bu": "A", "n": "tension", "u": "V", "v": 120.1}, {"n": " courant "," t ": -2," v ": 1,5}, {" n ":" courant "," t ": -1," v ": 1,6}, {" n ":" courant "," t ": 0," v ": 1.7}] '

Nous simulons un appareil qui mesure la tension et la température. Continuez à envoyer des messages comme ça et changez certaines valeurs de tension par exemple.

Assurons-nous que ces valeurs sont écrites dans la base de données sur Mainflux. Créer un nouveau tableau de bord dans Grafana:

Créer un nouveau tableau de bord dans Grafana

Ajouter un nouveau graphique

Cliquez ensuite sur le titre du panneau et choisissez de modifier le panneau:

Vous devriez pouvoir configurer différents paramètres. Tout d'abord, définissez la source de données comme la source que vous venez d'ajouter (dans notre cas, nous l'avons nommée Mainflux). Vous pouvez exécuter la requête de votre choix sur les messages stockés dans InfluxDB. Par exemple, nous utiliserons la sélection simple:

Et maintenant, nous pouvons voir le graphique des valeurs de tension que nous envoyons.

Dans Grafana, vous pouvez exécuter plusieurs requêtes, par exemple, vous pouvez définir une autre requête comme étant les valeurs de courant électrique que nous envoyions également depuis Raspbbery Pi.

Dans ce tutoriel, je voulais expliquer comment configurer à partir de zéro Raspberry Pi et Mainflux sur l'hébergement cloud et envoyer des messages entre eux. J'essayais de ne sauter aucune étape, donc si vous suivez ce tutoriel, vous pouvez également avoir cette connexion. J'ai publié des liens dans l'article où vous pouvez en savoir plus sur les outils et technologies que j'utilisais et des liens vers d'autres tutoriels qui m'ont aidé.

Jusqu'à la prochaine fois,
Ivan Milošević

À propos de la société Mainfluix:
Mainflux est une société de technologie offrant une plate-forme IoT open source complète et sans brevet reconnue par la Fondation Linux et O'Reilly Media avec des services de conseil en logiciels et matériel basés sur une vaste expérience de travail dans les entreprises Fortune 500.

Site Web de Mainflux: https://www.mainflux.com
Mainflux Github: https://github.com/Mainflux/mainflux