# 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)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.aic-eec.com/embedded-systems/resources/iot-connectivity/data-logger.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
