Terminé d'écrire la documentation pour la mesure d'humidité avec le HTU21D ;-)

This commit is contained in:
Christian Zufferey
2019-12-19 19:16:18 +01:00
parent f7b0f65379
commit 2e61241c8c
4 changed files with 109 additions and 45 deletions

View File

@@ -2,7 +2,6 @@
Petit projet pour mesurer l'humidité et la température pour l'afficher sur Grafana avec une DB InfluxDB. Comme par exemple pour monitorer l'humidité d'un local au cours du temps.
![Image](https://raw.githubusercontent.com/zuzu59/NodeMCU_Lua/master/Mesures/humidity/bolo/img/Constellation_sondes_mesures.jpg)
Constellation de sondes de mesures
@@ -16,12 +15,11 @@ Montage du capteur HTU21D directement sur le NodeMCU, chose à ne PAS faire, car
Exemple de sortie du Grafana
<br><bR>
On peut voir ici, avec ce projet assez complet, toutes les possibilités offertes de la programmation des NodeMCU en LUA, en mode événementiel. <br>
<br><br>
On peut voir ici, avec ce projet assez complet, toutes les possibilités offertes de la programmation d'un NodeMCU en LUA, en mode événementiel. <br>
Choses qui ne seraient pas possible si on l'avait fait en C++ (mode Arduino), comme par exemple:
* serveur WEB Active Server Pages ZYX, permet de faire des pages HTML dynamiques avec du code LUA in line. Les pages HTML sont sauve dans la FLASH du NodeMCU
* serveur WEB service pour le HUB concentrateur de mesures de différents NodeMCU (API GET)
* serveur WEB *Active Server Pages ZYX*, permet de faire des pages HTML dynamiques avec du code LUA in line. Les pages HTML sont sauvées dans le système de fichiers de la FLASH du NodeMCU
* serveur WEB pour l'affichage de l'humidité et de la température
* serveur WEB pour l'IDE, modification du code source en remote directement depuis une page WEB, pas besoin d'IDE
* crontab, horloge pour les mesures
@@ -31,6 +29,7 @@ Toutes les fonctions sont bien séparées dans des scripts, cela *complexifie* l
## Astuces de mesures
On utilise un tout petit capteur, le **HTU21D**, d'humidité et de température I2C.
![Image](https://raw.githubusercontent.com/zuzu59/NodeMCU_Lua/master/Mesures/humidity/bolo/img/HTU21D.jpg)
@@ -54,23 +53,22 @@ https://cdn.sparkfun.com/assets/6/a/8/e/f/525778d4757b7f50398b4567.pdf
Il faut *flasher* le NodeMCU avec ce firmware:
https://github.com/zuzu59/NodeMCU_Lua/blob/master/Firmware/nodemcu-master-11-modules-2019-12-15-16-45-47-float.bin
https://github.com/zuzu59/NodeMCU_Lua/blob/master/Firmware/nodemcu-master-18-modules-2019-12-17-20-28-32-float.bin
Avec ces modules:
```
bit,file,gpio,http,i2c,net,node,rtctime,tmr,uart,wifi
adc,ads1115,bit,enduser_setup,file,gpio,http,i2c,net,node,ow,rtctime,si7021,sntp,spi,tmr,uart,wifi
```
## Utilisation
### Visualisation des données dans Grafana
Exemple de sortie dans Grafana
https://snapshot.raintank.io/dashboard/snapshot/LUqdTJYLNuC6WatmJoN21yQSEQ0UJ0oy
### Distribution des rôles de NodeMCU
Comme on peut avoir plusieurs points de mesures à différents endroit dans le local, il n'y a qu'un seul fichier de *secrets*. C'est dans ce fichier de *secrets* qu'il y a l'information de l'adresse IP de la base de donnée InfluxDB et c'est l'id des NodeMCU qui sont enregistrés dans la DB InfluxDB !<br>
@@ -80,69 +78,53 @@ secrets_projet.lua
```
### Exportation des données en CSV depuis Grafana
**ATTENTION, readme pas encore terminé, il faut encore modifier le readme depuis ici ! zf190922.1740**
Quand on a trouvé la mesure qui nous convient sur Grafana, on peut l'exporter en CSV pour en faire un rapport dans un tableur par exemple.
<br>
<br>
<br>
<br>
<br>
<br>
![Image](https://raw.githubusercontent.com/zuzu59/NodeMCU_Lua/master/Mesures/humidity/bolo/img/exportation_data_csv.jpg)
### Affichage des températures en local sur le NodeMCU
![Image](https://raw.githubusercontent.com/zuzu59/NodeMCU_Lua/master/Mesures/humidity/bolo/img/coisir_series_as_columns.jpg)
On peut lire la température directement sur le NodeMCU au moyen de cet url (il faut modifier l'adresse IP du NodeMCU en question):
nodemcu 28 int, http://192.168.0.171/disp_temp.html
### Affichage des températures/humidité en local sur le NodeMCU
nodemcu 29 sud, http://192.168.0.180/disp_temp.html
On peut lire la température et l'humidité directement sur le NodeMCU au moyen de cette url (il faut modifier l'adresse IP du NodeMCU en question):
nodemcu 30 nord, http://192.168.0.105/disp_temp.html
```
http://192.168.0.xxx/disp_temp.html
```
### Affichage du petit serveur web du NodeMCU_Lua
Chaque NodeMCU a son propre serveur WEB, on peut l'accéder simplement depuis son adresse IP:
nodemcu 28 int, http://192.168.0.171
nodemcu 29 sud, http://192.168.0.180
nodemcu 30 nord, http://192.168.0.105
```
http://192.168.0.xxx
```
### Modification du code source du NodeMCU en remote
Très pratique pour le debug, on peut directement modifier le code source Lua du NodeMCU en remote avec cet url:
Très pratique pour le debug, on peut directement modifier le code source Lua du NodeMCU en remote avec ce petit WEB IDE:
nodemcu 28 int, http://192.168.0.171:88
nodemcu 29 sud, http://192.168.0.180:88
nodemcu 30 sord, http://192.168.0.105:88
```
http://192.168.0.xxx:88
```
### Utilisation de la console du NodeMCU en remote
Très pratique pour le debug, on peut accéder à la console du NodeMCU en remote avec telnet:
nodemcu 28 int, **telnet -rN 192.168.0.171**
nodemcu 29 sud, **telnet -rN 192.168.0.180**
nodemcu 30 nord, **telnet -rN 192.168.0.105**
```
telnet -rN 192.168.0.xxx
```
## Visualisation sur ThingSpeak
La totale en détail
https://thingspeak.com/channels/817940
Seulement la corrélation entre les trois température
https://thingspeak.com/apps/plugins/300559
zf191219.1642
zf191219.1912
pense bête:

View File

@@ -0,0 +1,29 @@
-- Petit script pour configurer les secrets dans ce projet
-- et que l'on n'aimerait pas être exportés sur Internet (github)
-- Il faut donc modifier le .gitignore avec secrets*.lua
-- il faut le renommer en 'secrets_project.lua' et sera exécuté
-- par 'boot2.lua' au moment du boot
function secrets_project()
print("\n secrets_project.lua zf191218.0818 \n")
influxdb_url="http://www.xxx.ml:8086/write?db=xxx&u=admin&p=xxx"
print("influxdb_url: "..influxdb_url)
th_id = "generic"
if node.chipid() == 3049014 then th_id = "th0" end
if node.chipid() == 3049553 then th_id = "th1" end
if node.chipid() == 14975023 then th_id = "th2" end
if node.chipid() == 14972372 then th_id = "th3" end
if node.chipid() == 12557128 then th_id = "th4" end
if node.chipid() == 3048165 then th_id = "th5" end
if node.chipid() == 14973009 then th_id = "th6" end
print("th_id: "..th_id)
end
secrets_project()
secrets_project=nil

View File

@@ -0,0 +1,23 @@
-- Petit script pour configurer les secrets utilisés pour le wifi
-- et que l'on n'aimerait pas être exportés sur Internet (github)
-- Il faut donc modifier le .gitignore avec secrets*.lua
-- il faut le renommer en 'secrets_wifi.lua' et sera exécuté
-- par 'wifi_init.lua' une fois pour la configuration du WIFI
function secrets_wifi()
print("\n secrets_wifi.lua zf191108.1744 \n")
-- cli_ssid="3g-s7"
-- cli_ssid="3G-zf2"
-- cli_ssid="apzuzu6_EXT"
cli_ssid="apzuzu6"
cli_pwd="xxx"
-- cli_ssid="voie4."
-- cli_pwd="xxx"
ap_ssid="NodeMCU"
ap_pwd="xxx"
end
secrets_wifi()

View File

@@ -0,0 +1,30 @@
<!DOCTYPE html>
<html lang="fr" dir="ltr">
<head>
<meta charset='utf-8' name='viewport' content='width=device-width, initial-scale=1.0'>
<title>Affichage des températures</title>
</head>
<body>
<h1>Affichage des températures 190727.1349</h1>
<br>
Les températures mesurées sont:<br>
<%
if (ztemp1 ~= nil) then
zout("<br>Température intérieure chambre à coucher "..ztemp1.."°C")
end
if (ztemp2 ~= nil) then
zout("<br>Température extérieure sud (nodemcu 29) "..ztemp2.."°C")
end
if (ztemp3 ~= nil) then
zout("<br>Température extérieure nord (nodemcu 30) "..ztemp3.."°C")
end
zout("<br><br>RAM: "..node.heap().."<br>")
%>
</body>
</html>