Accueil | Niveau de difficulté | Avancé | Blynk : installer un serveur local privé sur Raspberry Pi 3 (énergie illimitée, test Wemos DHT22)

Blynk : installer un serveur local privé sur Raspberry Pi 3 (énergie illimitée, test Wemos DHT22)

Blynk est un projet Open Source très populaire. Le développement de Blynk a été soutenu par une campagne de financement participative Kickstarter en 2015. Blynk se compose de librairies (Arduino, ESP8266, Nodejs pour Raspberry Pi…) et d’une application mobile sur iOS et Android. Il est très facile de créer des objets connectés ou de piloter des objets à distance (éclairage, servo-moteur…) depuis internet en quelques lignes de code. Nous allons commencer cette nouvelle série d’article en installant un serveur privé sur un ordinateur local. Le serveur Blynk a été développé en Java. Il est donc possible de l’installer sur toutes les plateformes. Dans le cadre d’une utilisation privée, Blynk s’accommodera très bien d’un Raspberry Pi 3. Dans un prochain tutoriel, nous testerons Blynk sur Orange Pi+ 2e, plus puissant et moins cher que le Raspberry Pi 3.

Installer un serveur local Blynk sur Raspberry Pi 3

Le schéma ci-dessous montre comment fonctionne le système Blynk. Une serveur permet de relier un objet connecté développé à l’aide d’un Arduino ou d’un ordinateur (Raspberry Pi, Orange Pi…) à l’application mobile Blynk fonctionnant sur un smartphone ou une tablette (iOS ou Android). Nous allons ici installer notre propre serveur à la place du serveur officiel sur un Raspberry Pi 3.

blynk iot architecture local server

L’installation est très bien détaillée sur la page officielle du dépôt sur GitHub.

La première chose à faire est de vérifier que Java 8 est installé sur votre distribution

Si ce n’est pas le cas, exécutez la commande suivante pour installer Java 8

Placez vous dans le répertoire ou vous voulez installer Blynk puis téléchargez le serveur

C’est terminé !

Configuration du serveur local

Avant de démarrer le serveur, voici quelques réglages utiles à faire. Le serveur est prêt à fonctionner out of the box, dès la fin de l’installation. Voici quelques réglages que je vous conseille de faire car vous en aurez rapidement besoin, vous allez comprendre pourquoi. La configuration est faite à l’aide de fichiers. Les deux suivants sont particulièrement importants

  • server.properties : permet de configurer tous les paramètres du serveur
  • mail.properties : permet de configurer le serveur d’envoi des emails

Dans un prochaine tutoriel, nous verrons comment ajouter un certificat pour sécuriser la communication avec le serveur Blynk.

Configuration du serveur (fichier server.properties)

Le premier fichier de configuration à créer est server.properties. Vous pouvez récupérez un fichier de base sur GitHub ici. Outre les dossiers de destination des fichiers, vous allez pouvoir modifier les ports de communication. C’est particulièrement important si vous avez installé un serveur domotique (ou un autre logiciel) qui utilise les mêmes ports que le serveur local Blynk. Par exemple, par défaut le port http (et web socket) est le 8080. Si vous utilisez Domoticz, ça va coincer. Vous pouvez utiliser le port 8082 à la place.

Blynk dispose d’une interface de gestion accessible depuis un navigateur internet. Par défaut cette interface n’est accessible que depuis l’ordinateur le raspberry Pi sur lequel est installé le serveur. Si vous voulez pouvoir y accéder depuis n’importe quel ordinateur du réseau local, modifiez le paramètre allowed.administrator.ips  qui se trouve en fin de fichier comme ceci

Enregistrez le fichier server.properties dans le même dossier que le serveur.

Configuration du compte email (fichier mail.properties)

Vous aurez besoin d’un token pour votre code Arduino. C’est un (long) identifiant composé de chiffres et de lettres. Plutôt que de le recopier, ce qui est fastidieux et source d’erreur, Blynk envoi un email contenant le token dès qu’un nouveau Projet (une nouvelle carte Arduino / ESP8266) est créé. Il est également possible de renvoyer à tout moment un Token par email depuis l’application mobile. Créez un nouveau fichier de configuration nommé mail.properties et enregistrez dans le même dossier que le serveur. Voici un exemple de fichier de configuration pour gmail.

Démarrage du serveur

Démarrer manuellement le serveur

Pour démarrer le serveur, exécutez la commande suivante

On passe en paramètre le chemin du répertoire des données ( -dataFolder). Le serveur démarre en une dizaine de secondes.

Démarrer le serveur Blynk au démarrage du système

Pour démarrer le serveur automatiquement au démarrage, il suffit d’exécuter la commande de lancement en lui ajoutant & à la fin de la commande. Cela donne

Si ça ne fonctionne pas, éditez le crontab

Allez à la fin du fichier et ajoutez la commande suivante. N’oubliez pas de modifier le chemin pour qu’il corresponde à votre répertoire d’installation.

Journaux (logs)

Plusieurs journaux sont créés dans le répertoire logs :

  • blynk.log : le journal d’exécution du serveur
  • postgres.log : le journal si vous avez activé l’enregistrement des données dans la base de données. Attention, c’est consommateur en espace.
  • stats.log : statistiques diverses sur la santé du serveur, les requêtes…
  • worker.log : journal des requêtes vers des services internet externes (dans un prochain tutoriel)

Se connecter à un serveur Blynk local depuis l’application iOS ou Android

Allez sur l’App Store ou le Google Play sur votre smartphone et installez l’application Blynk. Lancez l’application.

Créer un nouveau compte utilisateur

Vous arrivez sur un écran de connexion. Cliquez sur Create New account

blynk ecran demarrage

Sur l’écran qui s’affiche, cliquez sur le bouton de sélection du serveur (encadré en rouge sur la copie d’écran ci-dessous). Cliquez sur le bouton pour activer le mode Custom. Indiquez l’adresse IP du serveur Blynk local et le port. Par défaut, c’est le 8443 (sauf si vous avez modifié ce dernier dans le fichier de paramètres server.properties). Validez avec OK. Saisissez un identifiant et un mot de passe. Vous êtes maintenant connecté à votre serveur Blynk local avec un compte utilisateur valide.

blynk create account local server

Connexion avec un compte existant sur un serveur local

Une fois que vous avez créé un compte, choisissez Login pour vous reconnecter. Vous trouverez le même bouton pour changer de serveur.

blynk connect private server button

Indiquez comme précédemment l’adresse IP du serveur local puis vos identifiant. Si vous avez configuré le serveur d’email, vous pourrez réinitialiser votre mot de passe en cas de perte.

blynk connect private server parameters

Interface d’administration : Ajoutez de l’énergie illimitée

Blynk fonctionne avec un système d’énergie. Chaque Widget (gauge, afficheur, notification, email, bouton…) consomme de l’énergie. On part avec un capital de 2000 points.On recharge l’énergie en l’achetant via un achat in-app. Cela permet à Blynk de financer les serveurs, les salaires et les futurs développement. Comme Blynk est aussi un projet Open Source, les concepteurs nous permettent de modifier la quantité d’énergie lorsqu’on dispose de son propre serveur Blynk privé. Voici comment faire.

Ouvrez l’interface d’administration depuis un navigateur internet. Si vous avez autorisé l’accès depuis n’importe quel autre poste, modifiez l’adresse par l’adresse IP du Raspberry Pi/

Sinon directement depuis le Raspberry Pi, saisissez l’adresse suivante (localhost n’est pas déclaré)

Le certificat installé par défaut est auto-signé. Il sera donc considéré comme non fiable. Vous devrez accepter le message d’alerte affiché par votre navigateur internet.

blynk private server alerte certificat non valide

Ouvrez l’onglet Users et cliquez sur votre compte.

blynk local server raspberry pi administration user list

Saisissez les points d’énergie dans le champ Energy (par exemple 200000).

blynk local server rapsberry pi free energy points administration user

Descendez en bas de la page et enregistrez la modification en appuyant sur Save Changes. Vous pouvez maintenant profiter de l’application mobile sans aucun limitation d’énergie.

Rendre le serveur Blynk accessible depuis internet

Pour pouvoir accéder à votre serveur privé Blynk, vous devez configurer votre box internet pour rendre accessible le Raspberry Pi depuis internet. Vous pouvez par exemple utiliser un service en ligne comme noip.com. Certains fournisseurs d’accès internet proposent un service gratuit DynDNS. Vous pouvez également tout simplement utiliser votre adresse IP si celle-ci est fixe (ce qui est généralement le cas). Il faudra ajouter une règle dans les réglages NAT de votre box pour renvoyer les appels du port externe 8443 vers le port 8443 du Raspberry Pi.

 blynk server accessible depuis internet nat box traduction

Créer son premier objet connecté avec Blynk

Maintenant que tout est prêt, nous allons réaliser une petite sonde de température à l’aide d’un ESP8266. Dans ce tutoriel, nous allons créer rapidement un projet. Nous découvrirons tous les autres widgets proposés par Blynk dans d’autres tutoriels.

Matériel utilisé

esp8266 Wemos D1 miniWemos D1 Mini
chargeur raspbery pi 3 5v 3000maAlimentation 5/3A micro-usb

Une alimentation de qualité est recommandée.

wemos d1 mini oled shieldEcran OLED SSD1306 I2C 64×48 pixels. Broches par défaut : D1 – SCL, D2 – SDA

environ 4,40€

wemos d1 mini dht22 shieldShield DHT22 ou DHT11 pour Wemos D1 Mini

Le capteur est connecté à la broche D4 (GPIO2)

Projet Blynk

Après vous être connecté, vous allez arriver sur un projet vierge. Cliquez sur Create New Project.

Blynk local server raspberry pi wemos new project

Donnez un nom au projet. Ce qu’il faut retenir, c’est qu’on créé un projet pour chaque carte. Il est ensuite possible de créer des ponts (bridge) entre les projets (cartes). Ici, j’ai donné le nom de Wemos DHT22. Cherchez dans la liste ESP8266 ou Wemos d1 mini. Les deux fonctionnent. Je n’ai pas encore vu de différence au niveau du code. Il y a certainement des optimisations coté serveur. Terminez avec Create Project.

Blynk local server raspberry pi wemos

Vous avez du recevoir un email avec le token (jeton) à coller dans le code Arduino. Si ce n’est pas le cas, vérifiez les logs pour vous assurer que les paramètres du serveur mail sont corrects. Vous pouvez renvoyer le token à n’importe quel moment en appuyant sur le losange

Blynk local server raspberry pi wemos resend token email project

Maintenant, faites glisser le bord de l’écran depuis la droite pour faire apparaitre la liste des Widgets.

 Blynk local server raspberry pi wemos widget menu

Descendez dans la liste et choisissez Gauge. La jauge vient se placer sur la grille.

Blynk local server raspberry pi wemos gauge

Chaque Widget prend donc un nombre de ligne et de colonnes. Il n’est pas possible de se déplacer sur la page (haut/bas, droite/gauche) mais il existe un système d’onglets si on a beaucoup d’éléments à insérer.

Cliquez sur la jauge pour la modifier :

  • Donnez lui un nom. Ici Température
  • Vous pouvez changer la couleur d’affichage en appuyant sur le cercle de couleur (vert par défaut). On peut choisir entre 6 couleurs : vert, mauve, bleu clair, orange, violet, blanc
  • Cliquer sur PIN pour faire apparaître la liste de choix. Choisissez un PIN de type Virtual (virtuel) puis V0 dans la liste de droite
  • Indiquez la plage. Par exemple de -10 (°C) à 50 (°C)
  • Terminez en appuyant sur OK

Blynk local server raspberry pi wemos gauge temperature

Ajoutez une seconde jauge pour l’humidité. C’est exactement la même chose mais en choisissant V1

Ajoutez enfin un History Graph :

  • Il est possible de tracer jusqu’à 4 mesures sur un graphique. Cliquez sur PIN et choisissez Virtual puis V0 pour la température. Faites de même sur la seconde ligne en choisissant V1 pour l’humidité
  • L’intitulé est automatiquement ajouté (copié depuis la jauge), mais il est possible de le modifier. On pourra par exemple ajouter l’unité
  • On peut laisser l’application gérer l’échelle de l’axe Y ou le gérer manuellement
  • On peut afficher la légende

Blynk local server raspberry pi wemos history graph

Voilà, tout est prêt du coté de l’application Blynk.

Blynk local server raspberry pi wemos project ready

Code Arduino

Récupérer le token dans vos emails et collez le dans le code Arduino ci-dessous. Modifier également les paramètres de connexion à votre réseau WiFi. Téléversez le code et ouvrez le moniteur série. Pour faire fonctionner le shield OLED, vous aurez besoin d’ajouter la librairie Adafruit_SSD1306 modifiée par Mike Causer disponible sur Github ici.

Comment fonctionne un programme Blynk ?

La librairie Blynk (BlynkSimpleEsp8266.h) s’occupe de se connecter au réseau WiFi est de se connecter au serveur. Pour se connecter à un serveur local, on doit lui indiquer :

  • Le Token
  • Les paramètres de connexion au réseau WiFi (ssid et mot de passe)
  • L’adresse IP du serveur Blynk
  • Le port de communication

On doit appeler à chaque passage dans la boucle loop() Blynk à l’aide de la commande Blynk.run()  pour récupérer des données en provenance du serveur.

Pour publier régulièrement des mesures, le plus simple est de créer un timer, une fonction qui est appelée à intervalle régulier. La librairie SimpleTimer de Jean-Francois Turcot (dépôt GitHub) est idéal pour ça.

On créé un objet timer en début de programme

Et dans le setup(), on définit la fréquence d’exécution d’une fonction. Ici, la fonction sendSensor chargée d’envoyer les mesures au serveur Blynk sera exécutée chaque seconde.

La fonction sendSensor lit la température et l’humidité. On publie la température sur le PIN virtuel V0 la température avec la fonction virtualWrite

On fait de même pour v1 qui contient la valeur de l’humidité

Test de fonctionnement avec l’application Blynk

Une fois le programme Arduino téléversé, si la librairie n’a renvoyé aucune erreur sur le moniteur série, vous pouvez retourner sur l’appli iOS ou Android

Au lancement, l’application se connecte au serveur et actualise les données.

9 Blynk local server raspberry pi wemos d1 mini dht22

Voilà, vous venez de connecter votre premier objet connecté à votre smartphone. Si vous avez rendu accessible votre Raspberry Pi depuis internet, vous pouvez même accéder à vos sondes et actionneurs hors de chez vous.

Voici une petite vidéo de démonstration qui résume ce tutoriel.

 

  • gandolfi

    Superbe tuto avec la vidéo en prime. Que dire de plus. MERCI.

    • Merci beaucoup. Ca devrait vraiment vous simplifier le développement de vos objets connectés et en plus toutes les données restent au chaud à la maison. Bonne soirée