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

คลิกที่แถบเมนู Dropdown "Managements" ทางด้านบนนขวามือ ในส่วนนี้จะเป็นแถบเมนูที่จัดการข้อมูลต่างๆ
เลือก "Service Stack"
คลิกที่ปุ่ม "Install" เพื่อทำการติดตั้ง PostgreSQL
เมื่อติดตั้งเสร็จเรียบร้อยแล้วให้คลิกที่ปุ่ม "Action Toggle" เพื่อรัน PostgreSQL
คลิกที่แถบเมนู Database เลือก "PostgreSQL" ในแถบเมนูนี้ถ้าติดตั้ง Service ที่เกี่ยวกับ Database จะอยู่ในแถบเมนูนี้

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

ตัวอย่าง
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/OFFtimestamp
คือ เวลาที่บันทึกข้อมูล type เป็น timestamp
เมื่อกรอก Command SQL ที่ต้องการสร้าง Table แล้วกด "Ctrl + Enter" ถ้าสร้าง Table สำเร็จจะแสดงข้อความดังรูป

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

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

[{"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"

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

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

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