# Data logger

## Data logger คืออะไร

&#x20;             data logger เป็นอุปกรณ์สำหรับบันทึกข้อมูล เช่น ค่าเซนเซอร์หรือข้อมูลการทำงานของเครื่องจักรในโรงงาน สำหรับ data logger บางตัวอาจมีเซนเซอร์มาให้พร้อมโปรแกรมในการอ่านค่าจากเซนเซอร์ หรือเราสามารถสร้างdata logger ได้โดยใช้บอร์ดสมองกลฝั่งตัวในการเขียนโปรแกรมให้อ่านค่าเซนเซอร์พร้อมบันทึกช่วงเวลาที่อ่านค่าเซนเซอร์ลงไฟล์ เช่น .txt .csv .json ได้เช่นกัน หลักการทำงานของ data logger จะทำการอ่านข้อมูลจากเซนเซอร์ที่ส่งค่ามาในลักษณะของสัญญาณ Analog มาแปลงเป็นข้อมูล Digital แล้วเก็บลงไฟล์ไว้ในพื้นที่หน่วยความจำของตัวมันเอง เมื่อผู้ใช้ต้องการใช้งานก็สามารถนำไฟล์ออกมาใช้ได้ ซึ่งข้อมูลที่จะบันทึกลง data logger จะเป็นการเก็บค่าข้อมูลของเซนเซอร์พร้อมกับการบันทึกช่วงเวลาที่ได้รับข้อมูลนั้นมา

### ประโยชน์ของ Data Logger&#x20;

&#x20;             การใช้ประโยชน์จากการทำ data logger คือการที่ data logger จะเป็นการเก็บไฟล์แบบ offline ที่ไม่ได้พึ่งอินเตอร์เน็ตแต่เป็นการเก็บข้อมูลโดยตรงจากอุปกรณ์ดังนั้นจะไม่มีปัญหาเกี่ยวกับอินเตอร์เน็ต ซึ่ง data logger ส่วนใหญ่จะเก็บข้อมูลไฟล์ขนาดเล็กแต่มีการเก็บข้อมูลต่อเนื่องแบบอัตโนมัติแล้วยาวนาน ซึ่งข้อมูลที่ได้สามารถนำไปใช้งานต่าง ๆ เช่น การแสดงกราฟข้อมูลเซนเซอร์ในแต่ละช่วงเวลา หรือการนำข้อมูลไปวิเคราะห์เปรียบเทียบข้อมูลแต่ละช่วงเวลา( time series) เบื้องต้นได้ และอาจเขียนกำหนดการทำงานรวมกับเครื่องคอมพิวเตอร์ หรือ บอร์ดสมองกลฝั่งตัว (Embedded boards) ให้ส่งข้อมูลที่บันทึกไว้ไปอัพเดทเป็น รายเดือน สัปดาห์ วัน หรือทุก ๆ ชั่วโมง ส่งต่อไปยัง cloud ในการเก็บข้อมูล หรือการนำไปแสดงผลแบบ Real-time บนแอพพลิเคชั่น หรือนำไปใช้ในการทำ AI ก็ได้

### Create Datalog File .CSV ใน python&#x20;

&#x20;            ในภาษา python เราสามารถสร้าง datalog file ได้หลายประเภท เช่น ไฟล์ .txt .json .xml หรือ .csv เป็นต้นขึ้นอยู่กับความต้องการใช้งาน โดยแต่ละแบบที่เราต้องการใช้งานก็สามารถ import library ของ ไฟล์ประเภทนั้น ลงในโค้ดโปรแกรม python ของเราได้ ซึ่งในที่ต้องการใช้ ไฟล์ .csv ดังนั้นโปรแกรมของเราจะต้องใส่คำสั่ง import csv ลงในโค้ดโปรแกรมด้วยดังนี้

```python
import csv
```

### What is a CSV File ?

&#x20;       CSV หรือชื่อเต็มว่า “Comma Separated Values” เป็นรูปแบบอย่างง่ายในการเก็บข้อมูลลงตารางโดยไฟล์ csv จะใช้ comma เป็นตัวแยกข้อมูลออกเป็น column ซึ่งง่ายสำหรับการแยกข้อมูลและนำไปใช้ในการแสดงผลแบบกราฟหรือการวิเคราะห์ข้อมูล

### How to Write a CSV File&#x20;

การเขียนไฟล์ csv ด้วย python สามารถเขียนได้โดยการ สร้างตัวแปร object สำหรับ สร้างไฟล์หรือเรียกไฟล์ด้วยคำสั่ง open และตามด้วย “ชื่อไฟล์.csv” ตามด้วยcomma(,) และใส่mode ที่ต้องการเขียน ซึ่งมี 2 mode คือ ‘w’ สำหรับสร้างและเขียนไฟล์ใหม่ หรือ mode ‘a’ สำหรับการเขียนไฟล์ต่อจากไฟล์เดิมที่มีอยู่ ถ้าไม่มีจะทำการสร้างใหม่

**Example code**&#x20;

```python
import csv
def write_csv():
    with open("data.csv","w",newline="") as file : 
       file_write = csv.writer(file)
       file_write.writerow(["id","name"])
write_csv()
```

&#x20;                                                         <img src="https://lh6.googleusercontent.com/Lfq5zGDewV_sItxGHFOd1Iuhfno6JVdxXfMIBlsHDqumWX9E7FK8jSl6UjX8fu5s27PL9tJ2_UAqQgSsgavacD-b9rNyP_mgyEAvF_VDDcYAypjXS8PojScAD-1hl62g1GRPZytQ" alt="" data-size="original">

&#x20;                 สำหรับฟังก์ชัน writerow() จะเป็นการเขียนลงไฟล์แบบ row เดียวถ้าต้องการให้เขียนในแต่ละรอบเพิ่ม row ไปเรื่อย ๆ ให้ใช้ writerows()

```python
import csv
data =[
    ["a",1,1,1,1],
    ["b",2,2,2,2],
    ["c",2,2,2,2],    
 
def write_data():
    with open("data.csv","a",newline="") as file :
       file_write = csv.writer(file)
       file_write.writerows(data)  
write_data()
```

&#x20;                                                             <img src="https://lh5.googleusercontent.com/sEvg5ckRqYN2wnl6zJe8oD1QwSMRVWVcotS7ODgxEneKOVvucVgfgHImy_OTcSRXOgM0gJVHQvUxNklT0Y2zKwUZH2kiE5LRxOSPnSwiazjZSTeoq6K4qC2-VK77L9iuwbT181Kp" alt="" data-size="original">

### การเก็บข้อมูลกับTime stamp

&#x20;            เมื่อข้อมูลมีการอ่านข้อมูลมา เราจำเป็นจะต้องจดเวลาที่ได้รับข้อมูลมาเพื่อที่จะได้นำไปสืบค้นได้ง่าย หรือสามารถนำไปนำเสนอในรูปแบบของกราฟที่เป็น time series ได้ โดยกาบันทึกเวลาลงไปพร้อมกับข้อมูลนี้เรียกว่าการทำ time stamp เราสามารถใส่ time stamp ลงไปบนข้อมูลได้อย่างง่ายโดยการเพิ่มไลบรารี่

```python
import time
from datetime import datetime
```

และกำหนดค่ารูปแบบเวลาที่ต้องการแสดงได้เช่น ต้องการให้แสดง เดือน/วัน/ปี เวลา

```python
datetime_format = "%m/%d/%Y %H:%M:%S"
```

**ตัวอย่างการเรียนใช้งาน timestamp**

```python
import csv
import time
from datetime import datetime
 
datetime_format = "%m/%d/%Y %H:%M:%S"
time_now = datetime.now()
timestamp = time_now.strftime(datetime_format)
 
data =[
    ["a",timestamp],
    ["b",timestamp],
    ["c",timestamp],    
    ]
def write_data():
    with open("data.csv","a",newline="") as file :
       file_write = csv.writer(file)
       file_write.writerows(data)
write_data()
```

&#x20;                                                  ![](https://lh6.googleusercontent.com/VFeqb3OQgqCGdfVQqS91lyjv-kkWwtsrcywEGyLA0VEz2RlMLO-lP5Yo30r13SKZjh47iOvrh0KnXAMs3lRDdgdQLemUWJU6Jv782PYsSdiyKIYCcgY_hkbFNF8ysVivlGSa5K4v)

Update: May 2023

Author: Soontree Jaikhong (AIC-Researcher)

Author: Thanaluk Pranekunakol (AIC-Researcher)
