Database

Database (ฐานข้อมูล) คือ ที่เก็บข้อมูลอย่างเป็นระบบเพื่อให้สามารถ จัดเก็บ, ค้นหา, เรียกใช้, และ แก้ไขข้อมูล ได้ง่ายและรวดเร็ว

PostgreSQL

PostgreSQL คือ ระบบการจัดการฐานข้อมูลเชิงวัตถุสัมพันธ์ หรือ Object Relation Database Management System (ORDBMS) ในรูปแบบ OpenSource โดยภายใน Flowstack จะมี Service PostgreSQL ไว้สำหรับเก็บข้อมูลลงใน Table PostgreSQL เพื่อนำข้อมูลมาแสดงผลในรูปแบบของ Widget ต่างๆโดยใช้ Grafana ได้

Create table

เมื่อเข้ามาในหน้า Flowstack ถ้ายังไม่ได้ติดตั้ง Service PostgreSQL ให้ทำการติดตั้งก่อนโดยมีขั้นตอนดังนี้

_images/postgresql1.png
  1. คลิกที่แถบเมนู Dropdown "Managements" ทางด้านบนนขวามือ ในส่วนนี้จะเป็นแถบเมนูที่จัดการข้อมูลต่างๆ

  2. เลือก "Service Stack"

  3. คลิกที่ปุ่ม "Install" เพื่อทำการติดตั้ง PostgreSQL

  4. เมื่อติดตั้งเสร็จเรียบร้อยแล้วให้คลิกที่ปุ่ม "Action Toggle" เพื่อรัน PostgreSQL

คลิกที่แถบเมนู Database เลือก "PostgreSQL" ในแถบเมนูนี้ถ้าติดตั้ง Service ที่เกี่ยวกับ Database จะอยู่ในแถบเมนูนี้

_images/postgresql2.png

เมื่อเข้ามาในหน้า PostgreSQL แล้วต่อมาจะเป็นการจะเป็นการสร้าง Table โดยใช้ Command SQL

_images/postgresql3.png

ตัวอย่าง

CREATE TABLE sensor_data (
id SERIAL PRIMARY KEY,
temperature FLOAT,
humidity FLOAT,
relay_status VARCHAR(10),
timestamp TIMESTAMP DEFAULT NOW()
);
  • CREATE TABLE คือ คำสั่งการสร้าง Table ของ SQL ตามด้วยชื่อที่ต้องการ

  • id คือ เก็บตัวเลขที่เพิ่มขึ้นอัตโนมัติ เป็น Primary Key ป้องกันการเกิดข้อมูลซ้ำกัน

  • temperature คือ เก็บอุณหภูมิด้วย type เป็นทศนิยม

  • humidity คือ เก็บความชื้นด้วย type เป็นทศนิยม

  • relay_status คือ เก็บสถานะของรีเลย์ ON/OFF

  • timestamp คือ เวลาที่บันทึกข้อมูล type เป็น timestamp

เมื่อกรอก Command SQL ที่ต้องการสร้าง Table แล้วกด "Ctrl + Enter" ถ้าสร้าง Table สำเร็จจะแสดงข้อความดังรูป

_images/postgresql4.png

Insert data to PostgreSQL

คลิกมาที่แถบ Floweditor ทำการสร้างข้อมูลเพื่อส่งไปเก็บที่ PostgreSQL

_images/postgresql5.png

ตัวอย่าง

ทำการ Copy flow json โดยการกดปุ่ม "Ctrl + i" หรือเข้ามาที่แถบ 3 ขีดมุมบนขวามือ จากนั้นเลือก "Import"

_images/postgresql6.png
[{"id":"b0a0ce63d96cea01","type":"tab","label":"Flow 1","disabled":false,"info":"","env":[]},{"id":"bee39506396124a2","type":"PgConnect","z":"b0a0ce63d96cea01","name":"","query":"SELECT datname FROM pg_database;","postgreSQLConfig":"$.default.postgres.server","split":false,"rowsPerMsg":1,"outputs":1,"x":810,"y":220,"wires":[[]]},{"id":"7b77207bb68ae635","type":"inject","z":"b0a0ce63d96cea01","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":400,"y":200,"wires":[["93740b885a1bf02d"]]},{"id":"93740b885a1bf02d","type":"function","z":"b0a0ce63d96cea01","name":"function 1","func":"const temperature = (Math.random() * 10 + 20).toFixed(2);\nconst humidity = (Math.random() * 40 + 40).toFixed(2);\nconst relay_status = Math.random() > 0.5 ? \"ON\" : \"OFF\";\n\nmsg.query = `\n    INSERT INTO sensor_data (temperature, humidity, relay_status)\n    VALUES (${temperature}, ${humidity}, '${relay_status}');\n`;\n\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":580,"y":280,"wires":[["bee39506396124a2"]]},{"id":"$.default.postgres.server","type":"PgConnectConfig","name":"Default Postgresql Server"}]

นำ flow json มาวางในช่องดังรูป แล้วคลิกที่ปุ่ม "Import"

_images/postgresql7.png

จะได้ flow ที่สามารถ insert data ลงใน PostgreSQL

_images/postgresql8.png

โดยภายใน node function คือภาษา Javascript จะเป็นการ random ค่า temperature,humidity และ relay_status

_images/postgresql9.png

จากนั้นทดสอบโดยการคลิกที่ node inject ส่งข้อมูลไปเก็บที่ PostgreSQL Table ที่สร้างไว้ก่อนหน้านี้จะอยู่ที่แถบทางด้านซ้ายมือ PostgreSQL > Databases > postgres > Schemas > public > Tables > sensor_data

_images/postgresql10.png