Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Installation Serveur Blynk Local

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 17

Blynk : installer un serveur local privé sur

Raspberry Pi 3 (énergie illimitée)

Table des matières


 Configuration du serveur (fichier server.properties)
 Configuration du compte email (fichier mail.properties)
 Démarrer manuellement le serveur
 Démarrer le serveur Blynk au démarrage du système
 Journaux (logs)
 Créer un nouveau compte utilisateur
 Connexion avec un compte existant sur un serveur local
 Projet Blynk
 Code Arduino

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.

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.

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).

1
La première chose à faire est de vérifier que Java 8 est installé sur votre distribution
pi@raspberrypi:~ $ java -version
java version "1.8.0_65"
Java(TM) SE Runtime Environment (build 1.8.0_65-b17)
Java HotSpot(TM) Client VM (build 25.65-b01, mixed mode)

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

sudo apt-get install oracle-java8-jdk

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

Wget "https://github.com/blynkkk/blynk-server/releases/download/v0.23.0/server-
0.23.0.jar"

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

2
Configuration du serveur (fichier server.properties)

Le premier fichier de configuration à créer est server.properties. Vous pouvez récupérer un fichier
de base sur GitHub à l’adresse :
https://github.com/blynkkk/blynk-server/blob/master/server/core/src/main/resources/server.properties
. 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.
#hardware mqtt port
hardware.mqtt.port=8440

#hardware ssl port


hardware.ssl.port=8441

#hardware plain tcp/ip port


hardware.default.port=8442

#http and web sockets port


http.port=8080

#https and web sockets port


https.port=9443

#application ssl port


app.ssl.port=8443

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
allowed.administrator.ips=0.0.0.0/0

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

3
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.
mail.smtp.auth=true
mail.smtp.starttls.enable=true
mail.smtp.host=smtp.gmail.com
mail.smtp.port=587
mail.smtp.username=EMAIL
mail.smtp.password=PWD

Démarrage du serveur

Démarrer manuellement le serveur

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

java -jar server-0.23.0.jar -dataFolder /home/pi/Blynk

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


une dizaine de secondes.
Blynk Server successfully started.
All server output is stored in current folder in 'logs/blynk.log' file.

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
java -jar server-0.23.0.jar -dataFolder /home/pi/Blynk &

Si ça ne fonctionne pas, éditez le crontab

pi@raspberrypi:~ $ crontab -e
no crontab for pi - using an empty one

Select an editor. To change later, run 'select-editor'.


1. /bin/ed
2. /bin/nano <---- easiest
3. /usr/bin/vim.tiny

Choose 1-3 [2]: 2

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.

@reboot java -jar /home/pi/server-0.23.0.jar -dataFolder /home/pi/Blynk &

4
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

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

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

5
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.

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.

6
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.

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/

https://IP_BLINK_SERVER:7443/admin

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

7
https://127.0.0.1:7443/admin

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.

Ouvrez l’onglet Users et cliquez sur votre compte.

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

8
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.

9
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.

Projet Blynk

Après vous être connecté, vous allez arriver sur un projet vierge. Cliquez sur Create 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.

10
Terminez avec Create Project.

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

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

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

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.

12
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

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

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

14
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.
//#define BLYNK_DEBUG // Optional, this enables lots of prints
#define BLYNK_PRINT Serial // Comment this out to disable prints and save
space
#include <SPI.h>
#include <Wire.h>
#include <BlynkSimpleEsp8266.h>
#include <SimpleTimer.h>
#include <DHT.h>

#define OLED_RESET 0 // GPIO0


Adafruit_SSD1306 display(OLED_RESET);

#define DHTPIN D4
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);

//SHT3X sht30(0x45);
SimpleTimer timer;

// Vos paramètres de connexion WiFi - Your WiFi credentials.


char ssid[] = "yourSSID";
char pass[] = "yourPASSWORD";

// Jeton Blynk - Blynk Token


char auth[] = "yourTOKEN";

void sendSensor(){
float t = dht.readTemperature();
float h = dht.readHumidity();
Blynk.virtualWrite(V0, t);
Blynk.virtualWrite(V1, h);
}

void setup() {
Serial.begin(115200);
// Authentification auprès du serveur local Blynk
//- Authenticate to Blynk Private Server
Blynk.begin(auth, ssid, pass, IPAddress(192,168,1,24), 8442);

// Démarre un timer qui affiche et envoi les données chaque seconde


// Setup a Timer to display and send values every second
timer.setInterval(1000L, sendSensor);
}
void loop() {
Blynk.run();
timer.run();
}

15
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
Blynk.begin(auth, ssid, pass, IPAddress(192,168,1,24), 8442);

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

SimpleTimer timer;

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.
timer.setInterval(1000L, sendSensor);

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

Blynk.virtualWrite(V0, t);

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

16
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
[1757] Connected to WiFi
[1757] IP: 192.168.1.21
[1757]
___ __ __
/ _ )/ /_ _____ / /__
/ _ / / // / _ \/ '_/
/____/_/\_, /_//_/_/\_\
/___/ v0.4.3 on Arduino

[5001] Connecting to 192.168.1.24


[5110] Ready (ping: 8ms).

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

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.

17

Vous aimerez peut-être aussi