2016-12-05 3 views
0

J'utilise un module ESP-12F (ESP8266) avec le microprogramme NodeMCU sur lequel le module BME280 est activé. J'ai testé le capteur en interrogeant manuellement la température et l'humidité, tout va bien.Pourquoi bme280.startreadout() ne se déclenche qu'une fois?

Maintenant, je voulais utiliser la fonction bme280.startreadout(...) afin d'envoyer périodiquement les valeurs à mon serveur (ou simplement les imprimer sur le terminal série dans ESPlorer pour l'instant). Le code suivant ne renvoie aucune erreur, mais la fonction de rappel ne s'exécute qu'une seule fois. Quelqu'un peut-il me dire pourquoi? Lorsque j'envoie ce script au module et que je l'exécute, la température correcte est écrite une fois au bout de 2 secondes, c'est tout.

Voici quelques détails sur le firmware:

NodeMCU custom build by frightanic.com 
    branch: dev 
    commit: 79013ae79a85798cba470ac1168e75c755f58f42 
    SSL: true 
    modules: adc,adxl345,am2320,apa102,bme280,crypto,dht,file,gpio,hmc5883l,http,i2c,l3g4200d,mqtt,net,node,ow,pwm,spi,tmr,tsl2561,uart,websocket,wifi 
build built on: 2016-12-05 17:30 
powered by Lua 5.1.4 on SDK 1.5.4.1(39cb9a32) 

Mise à jour: Je n'ai pas pensé avant: est startreadoutsignifiait pour déclencher la fonction de rappel une seule fois? Ou pour le mettre en termes JavaScript: fonctionne-t-il comme setTimeout par opposition à setInterval?

+0

Est-ce fermé ou avez-vous besoin de plus de commentaires? –

Répondre

1

Il y a un few issues with that module mais aucun qui vous affecte AFAICT.

Les docs sont tout à fait clair que votre rappel n'est déclenché qu'une seule fois. Le premier paramètre est appelé delay plutôt que "intervalle" ou similaire. Donc, vous avez besoin d'un timer pour lire les valeurs des capteurs périodiquement.