# ESP32 - BMP180

## Objectif(s)

Créer un objet connecté en wifi qui enverra via **MQTT** la température et la pression atmosphérique vers un serveur qui stockera ces informations en base de données **InfluxDB** avant de les restituer au travers de la solution **Grafana**.

<p class="callout warning">Répartissez vous bien les tâches : le travail est divisible et il y a pas mal de choses à faire ...</p>

## Arduino

Ajout de l'ESP 32 à Arduino si ce n'est pas déjà fait : [https://doc.creatronic.fr/books/i2---conception-dun-syst%C3%A8me-embarqu%C3%A9-temps-r%C3%A9el/page/installation-arduino](https://doc.creatronic.fr/books/i2---conception-dun-syst%C3%A8me-embarqu%C3%A9-temps-r%C3%A9el/page/installation-arduino)

<p class="callout info">Utiliser la board **Wemos LOLIN32**.</p>

Librairie conseillé(e) : Adafruit\_BMP085

Pour l'installer il faudra ajouter l'URL suivante dans le menu préférences :

`https://adafruit.github.io/arduino-board-index/package_adafruit_index.json`

## Rpi

#### Préparation du Raspberry Pi (installation Raspian)

![](https://doc.creatronic.fr/uploads/images/gallery/2019-08/scaled-840-/image-1566303883258.png)

**Si Raspbian est déjà installé vous pouvez sauté cette étape.**

Télécharger la dernière version de Raspbian : [https://www.raspberrypi.org/downloads/raspbian/](https://www.raspberrypi.org/downloads/raspbian/)

Flasher l'image sur la carte SD avec Balena Etcher : [https://www.balena.io/etcher/](https://www.balena.io/etcher/)

<p class="callout warning">Avant de débrancher la carte SD, sur la partition boot ajouter un fichier **ssh** (<span style="text-decoration: underline;">pas un .ssh, un fichier ssh tout court **sans extension**</span>) afin que le système autorise le ssh bloqué par défaut.</p>

Si vous souhaitez travailler en Wifi, il faut le configurer avant de mettre la carte SD dans le Raspberry : [https://www.raspberrypi-spy.co.uk/2017/04/manually-setting-up-pi-wifi-using-wpa\_supplicant-conf/](https://www.raspberrypi-spy.co.uk/2017/04/manually-setting-up-pi-wifi-using-wpa_supplicant-conf/)

Mise à jour du système :

` sudo apt update && sudo apt dist-upgrade && sudo apt upgrade`

#### Installation de NodeRed

![](https://doc.creatronic.fr/uploads/images/gallery/2019-08/scaled-840-/image-1566303867152.png)

```shell
cd ~ 
bash <(curl -sL https://raw.githubusercontent.com/node-red/raspbian-deb-package/master/resources/update-nodejs-and-nodered) 
sudo systemctl enable nodered.service
sudo node-red-start
```

#### Installation de InfluxDB

![](https://doc.creatronic.fr/uploads/images/gallery/2019-08/scaled-840-/image-1566303899619.png)

```shell
curl -sL https://repos.influxdata.com/influxdb.key | sudo apt-key add -
echo "deb https://repos.influxdata.com/debian buster stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
sudo apt-get update && sudo apt-get install influxdb
sudo service influxdb start
```

Si tout va bien, taper "influx" pour accéder à la console influxdb.

Créer une base de donnée : `create database lenomquevousvoulez;`

#### Installation de Grafana

![](https://doc.creatronic.fr/uploads/images/gallery/2019-08/scaled-840-/image-1566303726710.png)

![](https://doc.creatronic.fr/uploads/images/gallery/2019-08/scaled-840-/image-1566303821844.png)

```shell
sudo apt update && sudo apt-get install -y software-properties-common apt-transport-https
sudo nano /etc/apt/sources.list.d/grafana.list
```

Ajouter le dépôt suivant puis enregistrer.

`deb https://packages.grafana.com/oss/deb stable main`

Puis :

```shell
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
sudo apt-get update && sudo apt-get install grafana
sudo service grafana-server start
```

Doc officielle en cas de problème : [https://grafana.com/docs/installation/debian/](https://grafana.com/docs/installation/debian/)

Accessible sous [http://ip:3000](http://ip:3000/)

Login/mdp par défaut : admin/admin

#### Ajout des nodes nécessaires dans node-red

Ajouter les nodes suivants :

**node-red-contrib-influxdb** =&gt; va nous permettre de dialoguer avec les bases influxDB

## Travail à réaliser 

Sur **nodeRED**, créer un flow permettant de récupérer et stocker les données de l'objet connecté et de l'insérer dans un *measurement* influxDB.

Sur Grafana : créer un nouveau dashboard qui permettra d'afficher un graph et une gauge de la charge CPU (penser à activer l'auto refresh).