Skip to content

Instantly share code, notes, and snippets.

@mokjpn
Created September 13, 2015 08:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mokjpn/e72cefd59063381c4d35 to your computer and use it in GitHub Desktop.
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.
// 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