Created
September 13, 2015 08:37
-
-
Save mokjpn/e72cefd59063381c4d35 to your computer and use it in GitHub Desktop.
Using Espruino board, obtain pressure/humidity/temperature data by BME280 sensor, then send it to MQTT server by ESP-WROOM-02(ESP8266) Wi-Fi module.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Main | |
console.log("Start!"); | |
// Espruinoのピンのうち, B8とB9ピンをI2C用として使う | |
I2C1.setup({scl:B8,sda:B9}); | |
console.log("Initialize BME280..."); | |
// BME280用モジュールを読み込んで初期化 | |
var bme = require("BME280").connect(I2C1); | |
// MQTTサーバにつながるまではデータを送らないためのフラグ | |
var mqttconnected = false; | |
console.log("Initialize MQTT..."); | |
// MQTTサーバのIPアドレス | |
var server = "192.168.10.11"; | |
// MQTTモジュールを読み込んで初期化 | |
var mqtt = require("MQTT").create(server, { | |
port: 22839, // MQTTサーバのポート番号 | |
keep_alive: 180, | |
username: "user", // MQTTサーバのログイン名 | |
password: "password", // MQTTサーバのパスワード | |
protocol_name: "MQTT", | |
protocol_level: 4 | |
}); | |
// MQTTサーバに接続したらmqttconnectedフラグを立てる | |
mqtt.on('connected', function() { | |
console.log("MQTT connected."); | |
mqttconnected = true; | |
}); | |
// ESP-WROOM-02へのシリアル接続のため、EspruinoのB7ピンをRX, B6ピンをTXとして設定する。 | |
// シリアル通信速度は115200bps. | |
Serial1.setup(115200, { rx: B7, tx : B6 }); | |
// EspruinoのATモジュール、ESP8266WIFI_0v25モジュールを使って簡単に接続可能 | |
require("AT"); | |
var wifi = require("ESP8266WiFi_0v25").connect(Serial1, function(err) { | |
if (err) throw err; | |
wifi.reset(function(err) { | |
if (err) throw err; | |
console.log("Connecting to WiFi"); | |
// Wi-FiのSSIDとパスフレーズを設定 | |
wifi.connect("WIFISSID","WIFIPASSPHRASE", function(err) { | |
if (err) throw err; | |
console.log("Connected"); | |
// Wi-Fiにつながったので、MQTTサーバに接続する | |
mqtt.connect( ); | |
}); | |
}); | |
}); | |
// 2000msecごとに繰り返し | |
setInterval(function() { | |
if(!mqttconnected) return; // MQTTサーバにつながっていなければ何もしない | |
bme.readRawData(); // BME280からデータを取得 | |
var temp_cal = bme.calibration_T(bme.temp_raw); // 生のセンサデータから摂氏温度を計算 | |
var press_cal = bme.calibration_P(bme.pres_raw); // 生のセンサデータからhPaの気圧を計算 | |
var hum_cal = bme.calibration_H(bme.hum_raw); // 生のセンサデータから%の湿度を計算 | |
var temp_act = temp_cal / 100.0; | |
var press_act = press_cal / 100.0; | |
var hum_act = hum_cal / 1024.0; | |
console.log("Pressure: " + press_act + " hPa"); | |
console.log("Temperature: " + temp_act + " C"); | |
console.log("Humidity: "+ hum_act+" %"); | |
// MQTTのトピック mokada/BME280 に、JSON化した測定値をpublishする。 | |
mqtt.publish("mokada/BME280", JSON.stringify({ | |
Pressure: press_act, | |
Temperature: temp_act, | |
Humidity: hum_act | |
})); | |
}, 2000); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment