Advertisement

Tutorial Mongoose OS – 2 : Menghubungkan ke mDash

0 623

Internet of things adalah  jaringan antar perangkat (thing)  seperti kendaraan, perabot rumah tangga yang terdiri dari elektronika perangkat keras, software dan konektivitas antar perangkat yang memungkinkan semuanya untuk saling berkomunikasi, beriteraksi dan bertukar data.

Setelah pada tulisan sebelumnya kita telah menginstal Mongoose OS  pada ESP8266 dan menghubungkannya dengan Internet   melalui jaringan Wi-Fi. Pada sesi ini, penulis akan menunjukan bagaimana melakukan setup lanjutan untuk menghubungkan ESP8266 dengan Dashboard milik Mongoose yang bernama mDash

Diasumsikan pembaca telah mengikuti tulisan sebelumnya tentang bagaimana menginstal Mongoose OS pada ESP8266. Jika belum, sangat direkomendasikan untuk membacanya terlebih dahulu sebelum melanjutkan tulisan ini.

  • Login ke mDash

Buka dan login ke  mDash melalui alamat dash.mongoose-os.com. Daftar jika belum memiliki akun mDash, jika ingin praktis, dapat digunakan akun  Google ataupun akun Github untuk login. Pada halaman dashboard klik button Add new device. mDash akan membuat 1 device bernama My Device #1 yang muncul pada tabel

Klik tautan pada kolom tabel Token (***cc0c), ini sama dengan meng-copy kode token dari My Device #1 yang baru saja dibuat. Lalu pada mos tool  ketikan perintah berikut pada command input

mos config-set dash.enable=true dash.token=TOKEN_HERE

ganti TOKEN_HERE dengan kode token yang tadi dicopy dari mDash lalu tekan enter.

Adverstiment

 

Perhatikan pada log device yang awalnya status online: false setelah kode token dimasukan akan berubah menjadi status online: true, status device pada mDash juga akan berubah menjadi online lengkap dengan nama aplikasi hingga arsitektur dari device.

Begitupula version pada kolom Device Shadow akan terus bertambah berdasarkan data yang dikirim oleh ESP8266. Klik tanda + pada Device Shadow untuk melihat lebih lengkap tentang uptime report.

Pada checkpoint ini mDash sudah terhubung dengan ESP8266, data yang dikirimkan oleh perangkat. juga akan dapat diakses melalui dashboard mDash.

Adverstiment

  • Ubah Program 

Mari bereksplorasi lebih lanjut, buka direktori tempat aplikasi berada di  C:\mos\app1\ lalu klik buka dengan code editor (bisa dengan notepad++) file init.js yang berada di subdirektori fs. Penulis akan mengubah beberapa baris di baris 23 dan baris 38 menjadi sebagai berikut


load('api_aws.js');
load('api_azure.js');
load('api_config.js');
load('api_dash.js');
load('api_events.js');
load('api_gcp.js');
load('api_gpio.js');
load('api_mqtt.js');
load('api_shadow.js');
load('api_timer.js');
load('api_sys.js');
load('api_watson.js');
let btn = Cfg.get('board.btn1.pin'); // Built-in button GPIO
let led = Cfg.get('board.led1.pin'); // Built-in LED GPIO number
let onhi = Cfg.get('board.led1.active_high'); // LED on when high?
let state = {on: false, btnCount: 0, uptime: 0}; // Device state
let online = false; // Connected to the cloud?
let setLED = function(on) {
let level = onhi ? on : !on;
GPIO.write(led, level);
print('halo MongooseOS LED on ->', on);
};
GPIO.set_mode(led, GPIO.MODE_OUTPUT);
setLED(state.on);
let reportState = function() {
Shadow.update(0, state);
};
// Update state every second, and report to cloud if online
Timer.set(1000, Timer.REPEAT, function() {
state.uptime = Sys.uptime();
state.ram_free = Sys.free_ram();
print('online:', online, JSON.stringify(state));
print('ini embeddednesia.com');
if (online) reportState();
}, null);
// Set up Shadow handler to synchronise device state with the shadow state
Shadow.addHandler(function(event, obj) {
if (event === 'UPDATE_DELTA') {
print('GOT DELTA:', JSON.stringify(obj));
for (let key in obj) { // Iterate over all keys in delta
if (key === 'on') { // We know about the 'on' key. Handle it!
state.on = obj.on; // Synchronise the state
setLED(state.on); // according to the delta
} else if (key === 'reboot') {
state.reboot = obj.reboot; // Reboot button clicked: that
Timer.set(750, 0, function() { // incremented 'reboot' counter
Sys.reboot(); // Sync and schedule a reboot
}, null);
}
}
reportState(); // Report our new state, hopefully clearing delta
}
});
if (btn >= 0) {
let btnCount = 0;
let btnPull, btnEdge;
if (Cfg.get('board.btn1.pull_up') ? GPIO.PULL_UP : GPIO.PULL_DOWN) {
btnPull = GPIO.PULL_UP;
btnEdge = GPIO.INT_EDGE_NEG;
} else {
btnPull = GPIO.PULL_DOWN;
btnEdge = GPIO.INT_EDGE_POS;
}
GPIO.set_button_handler(btn, btnPull, btnEdge, 20, function() {
state.btnCount++;
let message = JSON.stringify(state);
let sendMQTT = true;
if (Azure.isConnected()) {
print('== Sending Azure D2C message:', message);
Azure.sendD2CMsg('', message);
sendMQTT = false;
}
if (GCP.isConnected()) {
print('== Sending GCP event:', message);
GCP.sendEvent(message);
sendMQTT = false;
}
if (Watson.isConnected()) {
print('== Sending Watson event:', message);
Watson.sendEventJSON('ev', {d: state});
sendMQTT = false;
}
if (Dash.isConnected()) {
print('== Click!');
// TODO: Maybe do something else?
sendMQTT = false;
}
// AWS is handled as plain MQTT since it allows arbitrary topics.
if (AWS.isConnected() || (MQTT.isConnected() && sendMQTT)) {
let topic = 'devices/' + Cfg.get('device.id') + '/events';
print('== Publishing to ' + topic + ':', message);
MQTT.pub(topic, message, 0 /* QoS */);
} else if (sendMQTT) {
print('== Not connected!');
}
}, null);
}
Event.on(Event.CLOUD_CONNECTED, function() {
online = true;
Shadow.update(0, {ram_total: Sys.total_ram()});
}, null);
Event.on(Event.CLOUD_DISCONNECTED, function() {
online = false;
}, null);
view raw

init.js

hosted with ❤ by GitHub

Pada fungsi setLED, penulis ubah satu baris print menjadi

[js] print(‘halo MongooseOS LED on ->’, on);
[/js]

Juga pada fungsi Timer yang ditrigger tiap satu detik, penulis ubah menjadi

[js] Timer.set(1000, Timer.REPEAT, function() {
state.uptime = Sys.uptime();
state.ram_free = Sys.free_ram();
print(‘online:’, online, JSON.stringify(state));
print(‘ini embeddednesia.com’);

if (online) reportState();
}, null);
[/js]

Kemudian build dengan  mos tool sebagaimana tutorial sebelumnya dengan menggunakan command mos build

- Advertisement -

  • Update Firmware Over The Air

Pada tutorial sebelumnya, telah ditunjukan bagaimana menggunakan perintah mos flash untuk melakukan flashing firmware melalui antarmuka serial. Lalu bagaimana jika anda mempunyai banyak perangkat yang tersebar di lebih dari 100 titik hingga luar kota, bahkan luar pulau dan kemudian dihadapkan pada keharuskan untuk mengupdate firmware perangkat. Tentu menjadi tidak efisien jika harus mendatangi perangkat tersebut satu persatu hanya untuk mengupdate firmware masing – masing perangkat. Untung dengan mDash, programmer dapat mengupdate firmware secara remote melalui jaringan internet atau OTA (over the air)

Caranya, pada mDash klik button OTA update Selected  > Choose firmware .zip file lalu pilih lokasi fw.zip di c:\mos\build\fw.zip Tunggu beberapa saat hingga proses update firmware selesei

Setelah proses update firmware selesei, buka mos tool dan perhatikan pada console log akan menampilkan print sebagaimana ditunjukan pada langkah sebelumnya

 

Baca juga tulisan lain tentang # Tutorial Mongoose OS atau tulisan menarik lainnya tentang #ESP8266

Tinggalkan Balasan

Situs ini menggunakan Akismet untuk mengurangi spam. Pelajari bagaimana data komentar Anda diproses.