บทความ

กำลังแสดงโพสต์จาก เมษายน, 2017

การทำหน้าจอแสดงผลข้อมูลด้วย php refresh โดยมีเฉพาะข้อมูลที่ refresh จาก thingspeak

รูปภาพ
    เนื่องจากข้อมูลจากอุปกรณ์ iot ที่เราเก็บไว้ที่ thingspeak ยังแสดงผลได้ไม่ตรงใจกับที่เราต้องการ และผู้เขียนพอมีความรู้เรื่อง php กับ javascript อยู่บ้างนิดหน่อย เลยหาวิธีนำข้อมูลจาก thingspeak มาแสดงผลในรูปแบบที่เราต้องการด้วย php และ javasript      ปกติหากเราเขียน php ปกติ แล้วต้องการให้หน้าจอเปลี่ยนข้อมูลใหม่ ก็ต้องทำหน้าจอ refresh  แต่บางครั้ง เราไม่ต้องการให้หน้าจอส่วนอื่นต้อง refresh เช่น พวกภาพหรือไอคอนต่างๆ ที่ไม่มีการเปลี่ยนแปลง แต่ต้องการเฉพาะข้อมูลที่เป็น text เท่านั้นที่มีการเปลี่ยนแปลงข้อมูล โดยใช้ javascript เข้ามาช่วย ตัวอย่างนี้   จะเป็นการดึงข้อมูลมาจาก thingspeak ซึ่งเป็น cloud IOT code php สำหรับข้อมูล //// <?php $temp = file_get_contents('https://api.thingspeak.com/channels/252xxx/fields/1/last.txt'); echo  substr($temp,0,-3); ?> ////  หน้าจอหลัก /// <html> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <head> <title>Monitor</title> </head> <

การประยุกต์ใช้งาน thingspeak ในแบบต่างๆ นอกเหนือจากแค่เก็บข้อมูลจาก iot

  Thingspeak เป็น cloud ที่ถูกออกแบบสำหรับเก็บข้อมูลของอุปกรณ์ IOT(internet of things) เป็นบริการฟรีที่มีข้อจำกัด  เช่น การเก็บข้อมูลของ arduino , raspberry pi เป็นต้น ไม่เป็นแค่เก็บข้อมูลเท่านั้น ยังสามารถแสดผลข้อมูลที่เก็บเป็นกราฟ หรือ export ข้อมูลเพื่อทำไปใช้ต่อได้ จริงๆ มันไม่เพียงเก็บข้อมูลเฉพาะพวก iot แต่ยังเก็บข้อมูลของ server ได้อีก บทความนี้เราจะแสดงตัวอย่างว่าเราสามารถนำ thingspeak ไปประยุกต์ใช้ได้อย่างไรบ้าง 1.การส่งข้อมูลจาก arduino หรือ nodemcu ขึ้นไปเก็บ 2.การส่งข้อมูลจาก raspberry pi ขึ้นไปเก็บ 3.การส่งข้อมูลจาก server linux ขึ้นไปเก็บ 4.การส่งข้อมูลจาก server windows ขึ้นไปเก็บ 5.การนำกรา่ฟจาก thinspeak มาแสดงทีหน้าเว็บของตัวเอง 6.การนำข้อมูลจาก thingspeak มาแสดงผลบน google chart แบบ gauge 7.การนำข้อมูลจาก thingspeak มาแสดงผลด้วย PHP  ///////////////////////////////////////////////////////////////////////////// 1.การส่งข้อมูลจาก arduino หรือ nodemcu ขึ้นไปเก็บ ด้วยภาษา C++ ตัวอย่างใช้ nodemcu รับค่าจาก sensor อุณหภูมิ  DS18B20 ////////////////

NodeMCU รับค่าอุณหภูมิจาก Sensor DHT11 และดึงค่าอุณหภูมิด้วย php api จากเว็บ openweathermap.org แบบ realtime มาเปรียบเทียบกัน โดยใช้ http get

รูปภาพ
แนวคิด     จากบทความที่แล้ว เราสามารถเก็บอุณหภูมิและความชื้นจาก  DHT11  ลงในฐานข้อมูล Mysql ได้แล้ว (อ่านบทความเก่าได้ที่ https://havespirit.blogspot.com/2017/03/esp8266-dht11-mysql-thingspeak-line.html  ) บทความนี้เราจะมาต่อยอด คือ  เราเอาค่าอุณหภูมิจาก DHT11 ภายในห้อง  มาเปรียบเทียบกับอุณหภูมิภายนอก จากข้อมูล openweathermap.org  ด้วย API เขียนด้วย PHP  โดยใช้ method http get  โดยอ่านค่าแบบ real time อุณหภูมิจาก DHT 11  -->  อุณหภูมิภายในห้อง อุณหภูมิจาก openweathermap.org -> อุณหภูมิภายนอกห้อง (ดึงมาแบบ realtime โดยใส่ละติจูดและลองติจูดเข้าไปเพื่อความแม่นยำ) สาเหตุที่ทำไมไม่ใช้ sensor รับอุณหภูมิอีกตัวติดตั้งภายนอกแทนที่จากดึงจากเว็บ 1.ต้องเพิ่ม sensor ที่นอกห้องเพื่อวัดอุณหภูมิ และต้องต่อสายยาวๆ เข้ามาในห้องซึ่งยุ่งยากต้องมีการเจาะช่องสายสัญญาณ ซึ่งรวมๆ แล้ว ไม่เหมาะ อาจเจอฝน ฝุ่น ทำให้ค่าอุณหภูมิไม่แม่นยำ และเนื่องจากกายภาพของห้องไม่เหมาะ 2.ต้องการใช้ประโยชน์จากเว็บที่บริการอยู่แล้ว เช่น openweathermap หรือ google weather โดยจะต่อยอดนำพยากรณ์อากาศล่วงหน้ามาใ

การนำข้อมูล อุณหภูมิและความชื้นจาก DHT11 หรือ DHT22 มาเก็บลงบนฐานข้อมูล Mysql ของตัวเอง

รูปภาพ
  แนวคิด         คือเราสามารถส่งข้อมูลจาก arduino หรือ nodemcu ผ่านทางโปรโตคอล HTTP ด้วย  method get หรือ post ได้ ดังนั้นเราก็สามารถส่งค่าต่างๆ ลงฐานข้อมูล MYSQL ผ่านทาง php ได้ ด้วยเหมือนกัน ขั้นตอน   ต้องทำการติดตั้ง Xampp หรือ Wamp ก่อน 1. สร้าง ฐานข้อมูล Mysql โดย เปิด http://localhost/phpmyadmin                     และสร้าง database ชื่อ arduino         จากนั้น  copy code ส่วนนี้ไปวางใน phpmyadmin ส่วนของ sql แล้ว run          CREATE TABLE `temp` (   `id` int(11) NOT NULL auto_increment,   `temp` int(2) default NULL,   `humidity` int(2) default NULL,   `date` datetime default NULL,   PRIMARY KEY  (`id`)   ) ENGINE=InnoDB DEFAULT CHARSET=utf8;        จาก code นี้ จะทำให้เราได้ตางรางเก็บข้อมูล อุณหภูมิ และ ความชื้น      2.สร้างไฟล์ php เพื่อ insert ข้อมูลลงฐานข้อมูล     ?php  date_default_timezone_set('Asia/Bangkok'); $servername ="localhost"; $username = "root"; $password = " "; $dbname = "ardu