Membuat format JSON di Arduino

JSON atau JavaScript Object Notation adalah salah satu format yang sangat penting, jika kita ingin membuat aplikasi yang bergantung pada komunikasi jaringan. Dengan format JSON dua aplikasi bisa saling berkirim data dengan mudah, termasuk dalam Arduino

Beberapa aplikasi membutuhkan komunikasi untuk pengiriman data, misalnya aplikasi balon cuaca yang harus mengirimkan data melalui gelombang radio. Sebelum kita terjun langsung ke proyek weather baloon, maka pelajari dahulu bagaimana cara membuat format JSON dari data kita

Contoh format JSON adalah sbb :

{ 
  'day' : 'Senin',
  'temperature':25,
  'humidity':78,
  'dust':1200
}

Mengapa pakai JSON? Karena saat ini format tersebut sudah banyak diterima. Bahasa-bahasa pemrograman biasanya sudah menyediakan parser untuk membaca format JSON ini. Format JSON lebih ringkas dibandingkan format XML dan lebih bisa dibaca dibandingkan menggunakan format csv atau tab delimited

Beruntung, di Arduino sudah ada library untuk membuat format JSON dengan mudah, yaitu aJson yang bisa didownload di https://github.com/interactive-matter/aJson:

#include <aJSON.h>
#include <DHT.h>

//set DHT pin 2
DHT dht(2, DHT11);

void setup(){
  Serial.begin(9600);

  dht.begin();
}

void loop(){
  int temperature = dht.readTemperature();
  int humidity = dht.readHumidity();
 
  aJsonObject* root = aJson.createObject();

  aJson.addNumberToObject(root, "temperature", temperature);
  aJson.addNumberToObject(root, "humidity", humidity);
  aJson.addStringToObject(root, "suasana","Senang");
 
  char* pesan = aJson.print(root);
  aJson.deleteItem(root);
 
  Serial.println(pesan);
 
  delay(500);
}
 

Oke, pelajari dahulu bagaimana membuat data dengan format JSON, nanti kita akan gunakan untuk mengirimkan data dari Arduino ke iPad. Berikut ini fungsi-funsgi yang tersedia dan harus dipelajar:

aJson.parse(json_string)

Berfungsi untuk mengubah string berformat JSON menjadi JSON object

//contoh
  char* json_string = "{  'day' : 'Senin',  'temperature':25,   'humidity':78,  'dust':1200}"
  aJsonObject* jsonObject = aJson.parse(json_string);

aJson.getObjectItem(jsonObject , "temperature")

jsonObject *another = aJson.getObjectItem(jsonObject , "temperature");
//untuk mengambil nilai maka bisa digunakan :
Serial.println(another ->value.valuestring);

Untuk lebih detilnya bisa lihat di blog ini

Source Code: 
LampiranUkuran
Package icon ajson_dht11.zip532 byte
Komponen: 
Bahasa Indonesia