nodemcu_json

เรามาทำความรู้จักเกี่ยวกับ Json กันก่อน

Json หรือมีอีกชื่อหนึ่งเรียกว่า JavaScript Object Notation คือ รูปแบบของข้อมูลที่ใช้สำหรับแลกเปลี่ยน ข้อมูลที่มีขนาดเล็ก เป็นคำ หรือตัวแปรที่สามารถทำความเข้าใจได้ง่าย และถูกสร้างและอ่านได้ง่ายภายใต้ภาษา JavaScript (Java Script Programming Language)

โครงสร้างของ Json นั้นใช้ลักษณะภาษาของ JavaScript แต่ไม่ถูกมองว่าเป็นภาษาโปรแกรม กลับถูกมองว่าเป็นภาษาในการแลกเปลี่ยนข้อมูลมากกว่า ตัวอย่างของ Json โครงสร้างดังนี้

[

{"firstname":"name11","lastname":"name12"}

{"firstname1":"name21","lastname1":"name22"}

]

ปัจจุบัน มีการนำ json ไปใช้งานทางด้าน App การสื่อสารแบบต่างๆ การดึงค่าต่างๆ เช่น api พยากรณ์อากาศ ราคาทองคำ ราคาน้ำมัน มี api เยอะแยะมากมากให้เราสามารถนำมาใช้งาน ดึงมาใช้ หรือมาแสดงได้ครับ

สามารถศึกษาข้อมูลเพิมเติมได้ที่ http://www.json.org/

เมื่อเข้าใจ เกี่ยวกับ Json แล้วคราวนี้เรามาเริ่มต้นเขียน Code เพื่อดึงค่า Json มาใช้งานกัน

ก่อนอื่นเริ่มสร้าง Json ด้วย PHP จาก Code

$arr = [

[

"ch1" => "1",

"ch2" => "2",

"ch3" => "3",

"ch4" => "4"

]

];

echo json_encode($arr);

?>

เว็บที่ได้ หน้าตาก็จะเป็นแบบนี้

สามารถดูตัวอย่างได้ที่เว็บ : http://9arduino.nisit.net/api/json.php

ถัดมาก็มาถึง ในส่วนของ Nodemcu esp8266

#include

const char* ssid = "Use Wifi";

const char* password = "Pass Wifi";

const char* host = "9arduino.nisit.net"; //Doamin ที่ต้องการดึงค่ามาใช้

int ch1,ch2,ch3,ch4 = 0;

void setup() {

Serial.begin(9600);

pinMode(D4, OUTPUT);

delay(10);

Serial.println();

Serial.println();

Serial.print("Connecting to ");

Serial.println(ssid);

WiFi.mode(WIFI_STA);

WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED) {

delay(500);

Serial.print(".");

}

Serial.println("");

Serial.println("WiFi connected");

Serial.println("IP address: ");

Serial.println(WiFi.localIP());

}

int value = 0;

void loop() {

delay(2000);

++value;

Serial.print("connecting to ");

Serial.println(host);

WiFiClient client;

const int httpPort = 80;

if (!client.connect(host, httpPort)) {

Serial.println("connection failed");

return;

}

String url = "/api/json.php"; //ดึงค่าจากไฟล์ http://9arduino.nisit.net/api/json.php

Serial.print("Requesting URL: ");

Serial.println(url);

client.print(String("GET ") + url + " HTTP/1.1\r\n" +

"Host: " + host + "\r\n" +

"Connection: close\r\n\r\n");

unsigned long timeout = millis();

while (client.available() == 0) {

if (millis() - timeout > 5000) {

Serial.println(">>> Client Timeout !");

client.stop();

return;

}

}

// ในส่วนของการดึง Json โดยการดึง ตัวแปรที่ชื่อว่าตัวแปรมาใช้งาน

// ยกตัวอย่าง ตัวแปร ch1 ค่าที่ได้จะเป็น 1 แสดงออกมา เราสามารถนำ ตัว แปร ch1 ไปใช้งานต่างๆได้เช่นการแสดงข้อความออกจอ LCD เปิดปิดไฟตามกำหนด

if(client.find("")){

client.find("ch1"); //

ch1 = client.parseFloat();

client.find("ch2");

ch2 = client.parseFloat();

client.find("ch3");

ch3 = client.parseFloat();

client.find("ch4");

ch4 = client.parseFloat();

}

Serial.print("Output = ");

Serial.println(ch1);

Serial.print("Output = ");

Serial.println(ch2);

Serial.print("Output = ");

Serial.println(ch3);

Serial.print("Output = ");

Serial.println(ch4);

Serial.print("Output = ");

Serial.println();

Serial.println("closing connection");

}

ก็จะได้ข้อความดังภาพ