Page 45 sur 53

Re: Tous les capteurs reliés au RPI par Wifi avec module ESP

Posté : mar. 9 juin 2015 21:56
par Korhm
Bonsoir fidoboulettes,

Quand je bloque sur un script sans voir l'erreur, j'essais de le faire marcher morceaux par morceaux et de mettre des print (ou autre suivant le langage) à chaque étape pour déterminer où cela coince.
Pourrais tu nous indiquer ce qu'affiche ton script actuellement ?

De plus, pense à mettre ton code entre les balises "code", c'est plus facile à lire ;)

Re: Tous les capteurs reliés au RPI par Wifi avec module ESP

Posté : mar. 9 juin 2015 22:50
par smba38
Bonsoir Fidoboulettes

J'ai posté le mercredi 25 février (page4) un envoi de données au serveur thingspeak.com

J’ai modifié le programme pour juste envoyer des données à thingspeak

Code : Tout sélectionner

--wifi.setmode(wifi.STATION)  -- Wifi en mode station 
--cfg = { ip="192.168.1.154", netmask="255.255.255.0", gatway="192.168.1.1"}
--wifi.sta.setip(cfg)  -- on force l'adresse IP
--wifi.sta.config("WRT54G_409B","KEY WIFI FIDOBOULETTES")
while (wifi.sta.getip() == nil) do  tmr.delay(500000) end  print(wifi.sta.getip())  -- vérification adresse IP


--- Get temp and send data to thingspeak.com
function sendData()
-- connection to thingspeak.com
print("Sending data to thingspeak.com")
conn=net.createConnection(net.TCP, 0) 
conn:on("receive", function(conn, payload) print(payload) end)
-- api.thingspeak.com 184.106.153.149
conn:connect(80,'184.106.153.149') 
conn:send("GET /update?key= KEY FidoBoulettes  &field1=29 &field2=39 \r\n") 
conn:send("Host: api.thingspeak.com\r\n") 
conn:send("Accept: */*\r\n") 
conn:send("User-Agent: Mozilla/4.0 (compatible; esp8266 Lua; Windows NT 5.1)\r\n")
conn:send("\r\n")
conn:on("sent",function(conn)
print("Closing connection")
conn:close()
end)
conn:on("disconnection", function(conn)
print("Got disconnection...")
end)
end
sendData()
print("fin")

Résultat dans la console Lua

Code : Tout sélectionner

dofile("test-thingspeak.lua")
192.168.1.154	255.255.255.0	192.168.1.1
Sending data to thingspeak.com
fin
> Closing connection
Got disconnection...
Quelques remarques
Il faut mettre tes clefs WiFi et thingspeak à la place de FidoBoulettes.
Dans mon script, il n’y a pas de http/1.1 en fin du Send (Avec le texte HTTP ça n'a pas l'air de fonctionner)
Il est préférable de faire la connexion Wifi une seule fois car elle est conservée en mémoire Flash.
Ensuite on vérifie seulement l'adresse IP.
Voici le résultat dans Thingspeak ( Vue privée)
thingspeak2.JPG
thingspeak2.JPG (44.92 Kio) Vu 8608 fois
Essaye de lancer le programme avec ta clef en indiquant les données des capteurs en dur.

Suite

Voici une autre version plus compacte ( en fait avec le texte HTTP/1.1 ça marche également)

Code : Tout sélectionner

--wifi.setmode(wifi.STATION)  -- Wifi en mode station 
--cfg = { ip="192.168.1.154", netmask="255.255.255.0", gatway="192.168.1.1"}
--wifi.sta.setip(cfg)  -- on force l'adresse IP
--wifi.sta.config("WRT54G_409B","Key WiFi Fidoboulettes")
while (wifi.sta.getip() == nil) do  tmr.delay(500000) end  print(wifi.sta.getip())  -- vérification adresse IP

--- Get temp and send data to thingspeak.com
function sendData()
-- connection to thingspeak.com
print("Sending data to thingspeak.com")
conn=net.createConnection(net.TCP, 0) 
conn:on("receive", function(conn, payload) print(payload) end)
conn:connect(80,'184.106.153.149') 
--conn:send("GET /update?key=KEY Fidoboulettes &field1=29 &field2=39 \r\n") 

conn:send("GET /update?key=G3V5LQ4368P4I0X2 &field1=30 &field2=40 HTTP/1.1 \r\n" 
.. "Host: api.thingspeak.com\r\n"
.. "Connection: close\r\n"
.. "Accept: */*\r\n"
.. "User-Agent: Mozilla/4.0 (compatible; esp8266 Lua; Windows NT 5.1)\r\n"
.. "\r\n")


conn:on("sent",              function(conn) print("Closing connection") conn:close() end)
conn:on("disconnection", function(conn) print("Got disconnection...") end)

end

sendData()
Mais attention le message est envoyé seulement si on a le texte "Closing Connection" qui s'affiche dans la console
If faut donc tester que le Sent a bien eu lieu et sinon renvoyer le message.

SMBA38

Re: Tous les capteurs reliés au RPI par Wifi avec module ESP

Posté : mer. 10 juin 2015 17:06
par fidoboulettes
Bonjour à tous,

Merci pour ton bout de code qui a parfaitement fonctionné pour envoyer des données "manuelles" vers une de mes chaines thinspeak... maintenant, l'objectif est d'envoyer de vraies données et c'est là ou ça se corse.... Il y a qd même quelque chose que je ne comprend pas dans le code lua.... je suppose que lorsque le script est lu, il est lu par étape (?)... je me suis donc dit, comme étape intermédiaire, que je vais accoler le script de SMBA38 à mon script de lecture de données, juste pour voir si ça marche ... mais non, toujours pas... ça reboot mon ESP....
Alors désolé mais ça va être longuet à lire ( :? )....
Voici mon premier script de lecture... et qui fonctionne.... spéciale dédicace à Korhm... je ne connaissait pas cette fonctionalité des forums.... :D
LECTURE DES DONNEES DU CAPTEUR --> OK:

Code : Tout sélectionner

bmp085 = require("bmp085")
sda = 3
scl = 4
bmp085.init(sda, scl)
-- Get string of temperature.
t = bmp085.getUT(false)
print(t)

--lecture pression
p = bmp085.getUP()
print(p)

-- Réinitialisation du capteur?? Est ce nécessaire???
bmp085 = nil
package.loaded["bmp085"]=nil
ENVOI DE DONNEES EN MANUEL VERS THINKSPEAK - CODE DE SMBA38 --> OK

Code : Tout sélectionner

--- Get temp and send data to thingspeak.com
function sendData()
-- connection to thingspeak.com
print("Sending data to thingspeak.com")
conn=net.createConnection(net.TCP, 0)
conn:on("receive", function(conn, payload) print(payload) end)
conn:connect(80,'184.106.153.149')

conn:send("GET /update?key=YG5WIF3I6HN1YAJS &field1=30 &field2=40 HTTP/1.1 \r\n"
.. "Host: api.thingspeak.com\r\n"
.. "Connection: close\r\n"
.. "Accept: */*\r\n"
.. "User-Agent: Mozilla/4.0 (compatible; esp8266 Lua; Windows NT 5.1)\r\n"
.. "\r\n")


conn:on("sent", function(conn) print("Closing connection") conn:close() end)
conn:on("disconnection", function(conn) print("Got disconnection...") end)

end

sendData()

Je pensais naïvement que si, dans 1 premier temps, je colle ce script à la suite du deuxième, j'observerai 2 phases, une 1° ou je lis mes données du capteur, une 2ème ou j'envoie des données fictives vers thinspeak...
une fois cela fonctionnel, je pensais dans un 2ème temps, remplacer les valeurs manuelles par les données du capteur et envoyer le tout vers thinkspeak....

Or, dans cette première phase, ben l'ESP reboot... je pense que Lua n'apprécie pas du tout ça.... et je ne comprend pas pk...

ASSEMBLAGE DES 2 CODES --> PAS OK

Code : Tout sélectionner

bmp085 = require("bmp085")
sda = 3
scl = 4
bmp085.init(sda, scl)
-- Get string of temperature.
t = bmp085.getUT(false)
print(t)

--lecture pression
p = bmp085.getUP()
print(p)

-- Réinitialisation du capteur?? Est ce nécessaire???
bmp085 = nil
package.loaded["bmp085"]=nil

--- Get temp and send data to thingspeak.com
function sendData()
-- connection to thingspeak.com
print("Sending data to thingspeak.com")
conn=net.createConnection(net.TCP, 0)
conn:on("receive", function(conn, payload) print(payload) end)
conn:connect(80,'184.106.153.149')

conn:send("GET /update?key=YG5WIF3I6HN1YAJS &field1=30 &field2=40 HTTP/1.1 \r\n"
.. "Host: api.thingspeak.com\r\n"
.. "Connection: close\r\n"
.. "Accept: */*\r\n"
.. "User-Agent: Mozilla/4.0 (compatible; esp8266 Lua; Windows NT 5.1)\r\n"
.. "\r\n")


conn:on("sent", function(conn) print("Closing connection") conn:close() end)
conn:on("disconnection", function(conn) print("Got disconnection...") end)

end

sendData()
Question annexe: il me manque la relance de mon code toutes les X secondes: trm.alarm quelque chose si j'ai bien compris...
Bref, je suis complètement perdu... merci à vous...

Re: Tous les capteurs reliés au RPI par Wifi avec module ESP

Posté : mer. 10 juin 2015 19:34
par smba38
Hello Fidoboulettes,

En principe ton code devrait fonctionner.

Lua est très capricieux.

Avant de lancer un script faire un reset pour avoir une mémoire vierge.

Il arrive que la gestion des fichiers se mélange les pinceaux , on peut lister les fichiers en mémoire flash par

Code : Tout sélectionner

l = file.list();
for k,v in pairs(l) do
      print("name:"..k..", size:"..v)
end
Si pb dans la liste des fichiers il faut reflasher car un file.format() ne règle pas le problème.

Encore plus bizarre, il arrive qu'une demande d'exécution via l'IDE fasse rebouter l'ESP alors qu'un dofile("xxx.lua") fonctionne (essaye cette astuce pour voir).

On peut également compiler un script via un node.compile("xxx.lua")
Un fichier xxx.lc est créé (c'est du pseudo code).
On lance un fichier compilé par un dofile("xxx.lc")

Vérifie également que du flash bien avec les bons paramètres en particulier la taille de la mémoire flash.

lance le script

Code : Tout sélectionner

print("majorVer, minorVer, devVer, chipid,            flashid, flashsize, flashmode, flashspeed")
print (node.info())
Dans mon cas la taille est de 4096 (antépénultième paramètre).

Code : Tout sélectionner

majorVer, minorVer, devVer, chipid,            flashid, flashsize, flashmode, flashspeed
0	9	6	10197774	1458415	4096	0	40000000
Vérifie si tu as bien la version 0.9.6 de NodeMcu, et que tu flashe avec la bonne taille de mémoire.

J'utilise l'IDE nodemcu studio 2015 et dans certains cas l'IDE se plante, je le relance et les prints s'affichent ( donc l'ESP n'est pas planté, c'est seulement l'IDE qui a un problème de connexion).

les xxx.nil servent à récupérer de la mémoire.

Lua possède un garbage collector( ramasse miettes) qui essaye de temps en temps de faire le ménage dans la mémoire.
On peut le vérifier en utilisant avant et après les xxx.nil un print(node.heap())

la valeur retournée est la taille restante dans la pile.
Toutes les variables sont allouées dans la pile, si plus de place dans la pile c'est le plantage assuré.

SMBA38.

Re: Tous les capteurs reliés au RPI par Wifi avec module ESP

Posté : jeu. 11 juin 2015 05:18
par fidoboulettes
Hello SMBA38,

Pour rappel, j'utilise ESplorer....
Alors,
j'ai essayé la commande dofile en direct --> Même Pb.
A propos de ma liste de fichier.... j'ai un fichier bizarre qui est systématiquement installé après flash:
  • name:DHthinkspeak.lua, size:2357
    name:-=-à> …bõö"(-Eí>-=Ó Ð- , size:539873312
    name:veriflash.lua, size:115
J'utilise la version 0.9.5 de Nodemcu... parce qu'elle fonctionnait bien... je vais passer à la 0.9.6 mais laquelle choisir... la float ou la integer? Quelle est la différence?

Voici ce que me retourne le script de verification du Flash (au passage merci... ;) )

Code : Tout sélectionner

> dofile('veriflash.lua')
majorVer, minorVer, devVer, chipid, flashid, flashsize, flashmode, flashspeed
0	9	5	10532780	1261768	4096	2	40000000
> 
Sur la fin de ton message..... là tu m'as perdu.... :lol: mais ok, je vais placer des print(node.heap())

pour voir ce que ça affiche...

merci à toi.

Re: Tous les capteurs reliés au RPI par Wifi avec module ESP

Posté : ven. 12 juin 2015 18:57
par smba38
Hello FidoBoulettes,
J'ai essayé ton code tel quel avec les deux programmes concaténés, il ne fonctionne pas sur ma version 0.9.6.
Il s'agit peut être d'une saturation mémoire.
Pour infos:
Dans la puce esp8266 il y a plusieurs types de mémoires.
-32KBytes de RAM (instructions) ,96KBytes of data RAM(données), 64KBytes boot ROM
Plus la mémoire flash SPI pour les programmes et/ou les données persistantes de 512KO[ESP-01] , et de 4MO ESP-12=kit NodeMcu.

L'ESP8266 a une architecture des données de type Harvard.

L’architecture de type Harvard est une conception de microprocesseurs qui sépare physiquement la mémoire de données et la mémoire programme. L’accès à chacune des deux mémoires s’effectue via deux bus distincts.

La saturation peut provenir de la mémoire iram (instructions) ou dram (données=pile).
Durant un dofile("xxx.lua") ou dofile ("xxx.lc") le programme est copié de ma mémoire flash vers la mémoire iram(instructions).

La pile est utilisée en particulier pour stocker les variables locales.
A l'entrée dans une fonction, l'emplacement des variables locales est réservée dans la pile.
A la sortie d'une fonction l'emplacement des variables locales est récupérée dans la pile.
On déclare une variable locale par
local x
En fonction du code la pile est plus ou moins sollicitée.
voir par exemple
http://www.esp8266.com/viewtopic.php?f=18&t=663

Voici la taille de la pile pour différentes versions (avec aucun programme en mémoire).
Les version Float permettent d'utiliser des variables flottantes (avec des décimales).

0.9.5 intégrée 22688
0.9.5 integer version 21400
0.9.6 integer version print(node.heap()) -> 21120
0.9.6 float version print(node.heap()) ->20200
la version intégré correspond à celle que l'on utilise en cliquant sur "restore Default"
C'est avec cette version que la pile à le plus de place.

Voici ton code un peu remanié, chez moi il fonctionne avec la version 0.9.5 intégrée (heap=22688) et avec la version 0.9.6 Integer (heap=21120) Mais comme je n'ai pas de BMPO85 donc les valeurs des capteurs sont toujours les mêmes.

Avant j'ai chargé et compilé bmp085.lua en bmp085.lc
node.compile("bmp085.lua")

J'initialise la connexion Wifi une seule fois après un flash par le programme init-wifi.lua

Code : Tout sélectionner

wifi.setmode(wifi.STATION)  -- Wifi en mode station 
cfg = { ip="192.168.1.154", netmask="255.255.255.0", gatway="192.168.1.1"}
wifi.sta.setip(cfg)  -- on force l'adresse IP
wifi.sta.config("WRT54G_409B","xxxxxxxxxxxxxxxxxxxxx")
while (wifi.sta.getip() == nil) do  tmr.delay(500000) end  print(wifi.sta.getip())  -- verification adresse IP
Voici ton code un peu remanié

Code : Tout sélectionner

bmp085 = require("bmp085")
bmp085.init(3, 4)

tmr.alarm(0, 15000, 1, function() 
conn=net.createConnection(net.TCP, 0)
conn:on("receive", function(conn, payload) print(payload) end)
conn:connect(80,'184.106.153.149')

conn:send("GET /update?key=xxxxxxxxxxxxxxx "
.." &field1="..bmp085.getUT(true) 
.." &field2="..bmp085.getUP()
.." HTTP/1.1 \r\n"
.. "Host: api.thingspeak.com\r\n"
.. "Connection: close\r\n"
.. "Accept: */*\r\n"
.. "User-Agent: Mozilla/4.0 (compatible; esp8266 Lua; Windows NT 5.1)\r\n"
.. "\r\n")

conn:on("sent", function(conn) print("Envoi OK") conn:close() end)
conn:on("disconnection", function(conn) print("Deconnexion ")   end)

 end ) 
 
Et voici la trace

Code : Tout sélectionner

dofile("fido.lua")
init done
> Envoi OK
Deconnexion
Envoi OK
Deconnexion
Envoi OK
Deconnexion
Envoi OK
Deconnexion
Envoi OK
Deconnexion
Envoi OK
Deconnexion
Envoi OK
Deconnexion
Envoi OK
Deconnexion
Envoi OK

SMBA38

Re: Tous les capteurs reliés au RPI par Wifi avec module ESP

Posté : ven. 12 juin 2015 19:26
par smba38
Hello Fidoboulettes.

Attention si tu as lu mon message précédent avant 19:20 j'avais oublié décommenter la ligne de code

conn:send("GET /update?key=G3V5LQ4368P4I0X2 &field1="..bmp085.getUT(false) .." &field2="..bmp085.getUP() .." HTTP/1.1 \r\n"

dans laquelle j'appelle directement les fonctions getUT et getUP.
De cette façon à part bmp085.init(3, 4) tout se passe dans la fonction sendData()

SMBA38.

Re: Tous les capteurs reliés au RPI par Wifi avec module ESP

Posté : ven. 12 juin 2015 22:08
par smba38
Hello Fidoboulettes,

Voici une autre façon d'appeler le package bmp085.
J'ai récupéré dans les exemples yet-another-bmp085.lua
J'ai modifié cet exemple j'ai changé les données en retour return "&field1="..t.." &field2=".. p * 3 / 40

Code : Tout sélectionner

------------------------------------------------------------------------------
-- BMP085 query module
--
-- LICENCE: http://opensource.org/licenses/MIT
-- Vladimir Dronnikov <dronnikov@gmail.com>
-- Heavily based on work of Christee <Christee@nodemcu.com>
--
-- Example:
-- dofile("bmp085.lua").read(sda, scl)
------------------------------------------------------------------------------
local M
do
  -- cache
  local i2c, tmr = i2c, tmr
  -- helpers
  local r8 = function(reg)
    i2c.start(0)
    i2c.address(0, 0x77, i2c.TRANSMITTER)
    i2c.write(0, reg)
    i2c.stop(0)
    i2c.start(0)
    i2c.address(0, 0x77, i2c.RECEIVER)
    local r = i2c.read(0, 1)
    i2c.stop(0)
    return r:byte(1)
  end
  local w8 = function(reg, val)
    i2c.start(0)
    i2c.address(0, 0x77, i2c.TRANSMITTER)
    i2c.write(0, reg)
    i2c.write(0, val)
    i2c.stop(0)
  end
  local r16u = function(reg)
    return r8(reg) * 256 + r8(reg + 1)
  end
  local r16 = function(reg)
    local r = r16u(reg)
    if r > 32767 then r = r - 65536 end
    return r
  end
  -- calibration data
  local AC1, AC2, AC3, AC4, AC5, AC6, B1, B2, MB, MC, MD
  -- read
  local read = function(sda, scl, oss)
    i2c.setup(0, sda, scl, i2c.SLOW)
    -- cache calibration data
    if not AC1 then
      AC1 = r16(0xAA)
      AC2 = r16(0xAC)
      AC3 = r16(0xAE)
      AC4 = r16u(0xB0)
      AC5 = r16u(0xB2)
      AC6 = r16u(0xB4)
      B1  = r16(0xB6)
      B2  = r16(0xB8)
      MB  = r16(0xBA)
      MC  = r16(0xBC)
      MD  = r16(0xBE)
    end
    -- get raw P
    if not oss then oss = 0 end
    if oss <= 0 then oss = 0 end
    if oss > 3 then oss = 3 end
    w8(0xF4, 0x34 + 64 * oss)
    tmr.delay((4 + 3 ^ oss) * 1000)
    local p = r8(0xF6) * 65536 + r8(0xF7) * 256 + r8(0xF8)
    p = p / 2 ^ (8 - oss)
    -- get T
    w8(0xF4, 0x2E)
    tmr.delay(5000)
    local t = r16(0xF6)
    local X1 = (t - AC6) * AC5 / 32768
    local X2 = MC * 2048 / (X1 + MD)
    t = (X2 + X1 + 8) / 16
    -- normalize P
    local B5 = t * 16 - 8;
    local B6 = B5 - 4000
    local X1 = B2 * (B6 * B6 / 4096) / 2048
    local X2 = AC2 * B6 / 2048
    local X3 = X1 + X2
    local B3 = ((AC1 * 4 + X3) * 2 ^ oss + 2) / 4
    X1 = AC3 * B6 / 8192
    X2 = (B1 * (B6 * B6 / 4096)) / 65536
    X3 = (X1 + X2 + 2) / 4
    local B4 = AC4 * (X3 + 32768) / 32768
    local B7 = (p - B3) * (50000 / 2 ^ oss)
    p = B7 / B4 * 2
    X1 = (p / 256) ^ 2
    X1 = (X1 * 3038) / 65536
    X2 = (-7357 * p) / 65536
    p = p + (X1 + X2 + 3791) / 16
    -- Celsius * 10, Hg mm * 10
    return "&field1="..t..  " &field2=".. p * 3 / 40
  end
  -- expose
  M = {
    read = read,
  }
end
return M
J'ai appelé le programme bmp085b.lua,
J'ai compilé le programme
node.compile("bmp085b.lua")

voici le code qui appelle bmp085b

Code : Tout sélectionner

--bmp085 = require("bmp085b")
function sendData()
conn=net.createConnection(net.TCP, 0)
conn:on("receive", function(conn, payload) print(payload) end)
conn:connect(80,'184.106.153.149')

conn:send("GET /update?key=xxxxxxxxxxxxxxxxxxx"
..dofile("bmp085b.lc").read(3,4)
.."HTTP/1.1 \r\n"
.. "Host: api.thingspeak.com\r\n"
.. "Connection: close\r\n"
.. "Accept: */*\r\n"
.. "User-Agent: Mozilla/4.0 (compatible; esp8266 Lua; Windows NT 5.1)\r\n"
.. "\r\n")

conn:on("sent", function(conn) print("Envoi OK") conn:close() end)
conn:on("disconnection", function(conn) print("Deconnexion ..") print(node.heap()) end)

end

sendData()  -- première fois
tmr.alarm(2, 15000, 1, function() sendData()  end ) 
Et voici la trace

Code : Tout sélectionner

dofile("fido.lua")
> Envoi OK
Deconnexion ..
17688
Envoi OK
Deconnexion ..
17672
Envoi OK
Deconnexion ..
17664
Envoi OK
Deconnexion ..
17672
Envoi OK
Deconnexion ..
17672
Envoi OK
Deconnexion ..
17672

Bmp085b est appelé à chaque boucle, ce qui permet d'avoitr plus de place sur la pile.

SMBA38.

Re: Tous les capteurs reliés au RPI par Wifi avec module ESP

Posté : sam. 13 juin 2015 08:14
par fidoboulettes
Ouaouh, là t'as pas déconné.... :D
Merci à toi pour tes modifications... je vais tester ça....

Par contre, tes explications concernant la mémoire... je n'y comprend rien... :roll:

Donc si je comprends bien, tu me conseilles d'installer soit la version 0.9.5 integer ou la version 0.9.6 integer? Mes soucis sont que je ne sais pas où trouver la première:
https://github.com/nodemcu/nodemcu-firm ... uild/0.9.5 à priori là... mais quelle version choisir?
et là pour la deuxième (?):https://github.com/nodemcu/nodemcu-firm ... uild/0.9.5

J'ai par contre un pb d'instabilité avec la deuxième... j'arrive à envoyer des scripts mais si par malheur je suis obligé de redémarrer l'ESP, je n'arrive plus à communiquer avec celui ci... ESplorer cherche à communiquer mais n'y arrive pas... même si je fais un reset avant ou si je déconnecte et reconnecte brièvement le CH_PD...
je suis quasiment obligé de repasser par un flash du firmware pour y arriver.... Est lié à mon montage qui est pourtant très basique... Clé FTDI qui fournit le 3v3 et récupère les données, ESP connecté sur une bredboard...

Je me suis même aperçu que je suis obligé par un flash Firmware type AT... bref c'est un peu pénible.

Re: Tous les capteurs reliés au RPI par Wifi avec module ESP

Posté : sam. 13 juin 2015 08:17
par fidoboulettes
Ah oui, autre question: A quoi sert la compilation? C'est une espèce de compression du script? Pour gagner de la place?

Sinon, j'ai commandé un capteur d'humidité/température en I2c... est ce qu'a terme, on peut brancher le BMP et ce capteur sur les mêmes gpio de l'ESP ou bien faudra t'il passer par 1 ESP ayant plus de GPIO... il me semble que oui (en tout cas sur les arduino) mais je n'en suis pas sur...