Service Usage Calculation¶
การคำนวณปริมาณการใช้งาน Service ต่างๆ ของ NEXIIOT Platform ดูปริมาณการใช้งานในแต่ละรอบบิลได้จาก Web Portal โดยคลิกที่ชื่อผู้ใช้มุมบนขวามือ และเลือกเมนู "Billing" ดูรายละเอียดเพิ่มเติมได้ที่ billing-page จะถูกแยกการคิดได้เป็นประเภทใหญ่ๆ ดังต่อนี้
API Call¶
ปริมาณการใช้บริการ REST API ทั้งหมดใน NEXIIOT Platform มีหน่วยนับเป็น Operation โดยการกระทำที่จะถูกนับเป็นการใช้งานประเภทนี้ คือ
- API Request
: จำนวนการ Request ผ่าน REST APT โดยดูจากขนาดของ Payload ที่ส่งไป แต่ละ Block มีขนาดไม่เกิน 4 kilobytes
- API Response
: จำนวนการ Response ผ่าน REST APT โดยดูจากขนาดของ Payload ที่ตอบกลับ แต่ละ Block มีขนาดไม่เกิน 4 kilobytes
ตัวอย่าง¶
การอ่านข้อมูลจาก Time Series Database ผ่าน REST API 1 ครั้ง ข้อมูลที่ส่งไปตอน Request มีขนาด 71 bytes และข้อมูล Response กลับมามีขนาด 10 kilobytes ดังนั้น การนับในครั้งนี้จะเป็นดังนี้
Request ส่ง Payload ไป ขนาด 71 bytes = 71 / 1024*4 = 1 Operation(Request) เศษที่หาร 4KB ไม่ลงตัวต้องปัดขึ้นเป็นอีก 1 Block
Response ตอบกลับ Payload ขนาด 10KB = 10 / 4 = 3 Operations(Response) เศษที่หาร 4KB ไม่ลงตัวต้องปัดขึ้นเป็นอีก 1 Block
รวม API Call Quota ที่ถูกใช้ไป = 1 + 3 = 4 Operations
Device Online¶
ระยะเวลารวมทั้งหมดที่ Device เชื่อมต่ออยู่ใน NEXIIOT Platform มีหน่วยนับเป็นวินาที(Second)
ตัวอย่าง¶
มี Device ที่ลงทะเบียนใช้งาน NEXIIOT Platform อยู่ 2 Devices Device เพื่อส่งข้อมูลสถานะการทำงานต่างๆ ของเครื่องจักรไปเก็บที่ Platform โดย Device1 เชื่อมต่อ Platform เวลา 08:00:03 ส่งข้อมูลเสร็จและตัดการเชื่อมต่อ Platform ที่เวลา 08:00:15 ส่วน Device2 เชื่อมต่อ Platform เวลา 08:00:05 ส่งข้อมูลเสร็จและตัดการเชื่อมต่อ Platform ที่เวลา 08:00:20 ดังนั้น เวลารวมในกรณีนี้จะเป็น
Device1 Online (08:00:03 - 08:00:15) = 12 วินาที
Device2 Online (08:00:05 - 08:00:20) = 15 วินาที
รวม Connection Quota ที่ถูกใช้ไป = 12 + 15 = 27 วินาที
Real Time Message¶
ปริมาณการใช้บริการที่เกี่ยวกับ MQTT มีหน่วยนับเป็น Message โดยการกระทำที่จะถูกนับเป็นการใช้งานประเภทนี้ คือ
- MQTT Publish
: จำนวน Message ที่ Publish โดยดูจากขนาดของ Message แต่ละ Block มีขนาดไม่เกิน 4 kilobytes
- MQTT Subscribe
: จำนวนครั้งในการขอ Subscribe แต่ละครั้งนับเป็น 1 Message
- MQTT Deliver
: จำนวน Message ที่ส่งให้ Device ที่ขอ Subscribe ไว้ โดยดูจากขนาดของ Message แต่ละ Block มีขนาดไม่เกิน 4 kilobytes
- MQTT Connect
: จำนวนครั้งในการขอเชื่อมต่อ (Connect) มายัง NEXIIOT Platform แต่ละครั้งนับเป็น 1 Message
ตัวอย่าง¶
มี 5 Devices เชื่อมต่อมายัง NEXIIOT Platform โดย Device1 Publish Message ขนาด 6 kilobytes ไปที่ myDevice Topic ซึ่ง Device2, Device3, Device4 และ Device5 ได้ทำการ Subscribe ที่ myDevice Topic อยู่ ดังนั้น การนับในครั้งนี้จะเป็นดังนี้
5 Devices เชื่อมต่อ NEXIIOT Platform = 5 x 1 = 5 Messages(MQTT Connect)
Device1 Publish Message ขนาด 6 KB = 6 / 4 = 2 Messages(MQTT Publish) เศษที่หาร 4 ไม่ลงตัวต้องปัดขึ้นเป็นอีก 1 Block
Device2-5 (4 Devices) ขอ Subscribe Topic = 4 x 1 = 4 Messages(MQTT Subscribe)
Device2-5 (4 Devices) ได้รับ Message = 4 x 2 = 8 Messages(MQTT Deliver) จากการ Subscribe ได้ Message ที่ Device1 Publish ขนาด 6 KB
รวม Message Quota ที่ถูกใช้ไป = 5 + 2 + 4 + 8 = 19 Messages
Shadow Read/Write¶
ปริมาณการใช้บริการที่เกี่ยวกับ Shadow มีหน่วยนับเป็น Operation โดยการกระทำที่จะถูกนับเป็นการใช้งานประเภทนี้ คือ
- Shadow Read
: จำนวนการอ่าน Shadow โดยดูจากขนาดของ Shadow ที่ถูกอ่านออกมา แต่ละ Block มีขนาดไม่เกิน 1 kilobyte
- Shadow Write
: จำนวนการเขียน Shadow โดยดูจากขนาดของ Shadow ที่ส่งไปเขียน แต่ละ Block มีขนาดไม่เกิน 1 kilobyte
- Shadow Expression
: จำนวนครั้งที่ Shadow มีการรัน Expression จะอยู่ในส่วนของการแปลงข้อมูล (Data Transformation)
ตัวอย่าง¶
Device 1 ตัว เมื่อ online ขึ้นมาจะทำการอ่าน Shadow ทั้งหมดของตนเอง (ขนาด Shadow 2 kilobytes) มาเป็นค่าเริ่มต้นสำหรับการตั้งค่าการทำงาน หลังจากนั้น Device จะส่งค่าอุณหภูมิปัจจุบันของตัวเองไปอัพเดทที่ Shadow (ขนาดข้อมูลที่ส่งไป 20 bytes) โดยค่าที่ส่งไปมีหน่วยเป็นฟาเรนไฮต์ ซึ่งมีการกำหนด Expression สำหรับแปลงหน่วยเป็นเซลเซียส คำนวนปริมาณ Shadow Operation Quota ที่ถูกใช้ไปได้ดังนี้
2 Operations(Shadow Read) + 1 Operation(Shadow Write) + 1 Operation(Shadow Expression) = 4 Operations
Time Series Data Store¶
ปริมาณข้อมูล (Time Series Data) และระยะเวลาที่ต้องการเก็บข้อมูล มีหน่วยนับเป็น Point-Day หมายความว่า ข้อมูลที่ส่งมาเก็บ 1 จุดข้อมูล (ขนาดข้อมูลไม่เกิน 1 kilobyte) ระยะเวลาในการเก็บ (TTL) 30 วัน ถูกนับเป็น 1 Point-Month หรือ 30 Point-Day
ตัวอย่าง¶
Device สำหรับวัดความชื้นและอุณหภูมิ(2 data point), วัดค่าและส่งข้อมูลไปเก็บทุก 1 ชั่วโมง(24 time/day), เก็บค่าย้อนหลัง 30 วัน(TTL), ระยะเวลาใช้บริการ 31 วัน คำนวนปริมาณ Quota ที่ถูกใช้ไปได้ดังนี้
2(data point) x 30(TTL) X 24(time/day) x 31(day) = 44,640 Point-Day หรือเท่ากับ
44,640 Point-Day / 30 = 1,488 Point-Month
Trigger & Action¶
ปริมาณการใช้บริการที่เกี่ยวกับ Trigger มีหน่วยนับเป็น Operation โดยการกระทำที่จะถูกนับเป็นการใช้งานประเภทนี้ คือ
- Device Trigger
: Trigger ที่เกิดจาก Device เปลี่ยนสถานะการเชื่อมต่อ Platform จากเชื่อมต่อ (Online) เป็นไม่เชื่อมต่อ (Offline) หรือ จากไม่เชื่อมต่อ (Offline) เป็นเชื่อมต่อ (Online) เซ็ต Trigger Event เป็น
DEVICE.STATUSCHANGED
ดูรายละเอียดเพิ่มเติมจาก Device Trigger and Event Hook ถ้ามีการตั้งค่า Trigger นี้ไว้ ทุกครั้งที่มีการเปลี่ยนสถานะจะถูกนับเป็น 1 Operation / 1 Trigger Event ที่เซ็ตไว้- Shadow Trigger
: Trigger ที่เกิดจาก Shadow มีการเปลี่ยนแปลงและมีการเซ็ตเงื่อนไขสำหรับตรวจสอบการเปลี่ยนไว้ด้วย เซ็ต Trigger Event เป็น
SHADOW.UPDATED
ดูรายละเอียดเพิ่มเติมจาก Device Trigger and Event Hook ถ้ามีการตั้งค่า Trigger นี้ไว้ ทุกครั้งที่ Shadow มีการเปลี่ยนแปลงและเงื่อนไขเป็นจริง (Trigger Condition ได้ค่าเป็น True) จะถูกนับเป็น 1 Operation / 1 Trigger Condition
ตัวอย่าง¶
จากตัวอย่างการตั้งค่า Trigger ด้านล่าง จะมีทั้งทั้งหมด 3 Triggers (Device Trigger 2 และ Shadow Trigger 1) ถ้ามี 1 Device เชื่อมต่อมายัง Platform และส่งค่าอุณหภูมิ (temp) เข้ามา 3 ครั้ง แต่ละครั้งห่างกันประมาณ 1 นาที ค่าที่ส่งไปเป็น 1, 0 , -1 ตามลำดับ โดยเริ่มต้นอุณหภูมิใน Shadow เป็น 0 เมื่อส่งครบ 3 ครั้ง Device จะตัดการเชื่อมต่อจาก Platform คำนวนปริมาณ Trigger & Action ที่ถูกใช้ไปได้ดังนี้
Device Online ทำ action
LINENOTIFY
และmyApp
= 2 Operationsส่งอุณหภูมิ (temp) ครั้งที่ 1 ค่าเป็น 1 ทำ action
checkTemp
ตรวจสอบเงื่อนไขและค่าเป็น True = 1 Operationsส่งอุณหภูมิ (temp) ครั้งที่ 2 ค่าเป็น 0 ทำ action
checkTemp
ตรวจสอบเงื่อนไขและค่าเป็น False = 0 Operationsส่งอุณหภูมิ (temp) ครั้งที่ 3 ค่าเป็น -1 ทำ action
checkTemp
ตรวจสอบเงื่อนไขและค่าเป็น False = 0 OperationsDevice Offline (
DEVICE.STATECHANGED
) ทำ actionLINENOTIFY
และmyApp
= 2 Operationsรวม Trigger & Action Quota ที่ถูกใช้ไป = 2 + 1 + 0 + 0 + 2 = 5 Operations
{
"enabled": true,
"trigger": [{
"action": "LINENOTIFY",
"event": "DEVICE.STATECHANGED",
"msg": "My Device {{$NEW.statustext}}, statuscode: {{$NEW.status}}",
"option": {
"url": "https://notify-api.line.me/api/notify",
"linetoken": "HBfiJA309FWFouCPzK5WhGUvJT1RvN3xb6hGxnIqAAA"
}
},
{
"action": "myApp",
"event": "DEVICE.STATECHANGED",
"msg": "{{$NEW.statustext}}",
"option": {
"deviceid": "155941ce-1f4a-4e57-1864-1759af4f872c"
}
},
{
"action": "checkTemp",
"event": "SHADOW.UPDATED",
"condition": "$NEW.bedroom.temp > 0",
"msg": "My temperature was change from {{$PREV.bedroom.temp}} to {{$NEW.bedroom.temp}}",
"option": {
"url": "https://mywebhook/devicetemp"
}
}]
}
Datasource¶
ปริมาณขนาดข้อมูลสะสม (หน่วยเป็น Byte) ที่เกิดจากการ Download ข้อมูลจาก Time-series data storage หรือก็คือ Data Transfer ซึ่งการดึงข้อมูลทั้งจากระบบภายนอก หรือ Dashboard ที่มีให้ใช้งานภายในจะถูกคิดโควต้าส่วนนี้ทั้งหมด
ตัวอย่าง¶
มีการเก็บข้อมูลอุณหภุมิและความชื้นลงใน Time-series data storage มีการพัฒนา Web Application เพื่อมาดึงข้อมูลจาก Time-series data storage ไปแสดงผลเป็นกราฟ โดยความถี่ในการดึงข้อมูลมาอัพเดทในกราฟ คือ ทุก 5 นาที (Auto Refresh), ขนาดข้อมูลที่ดึงไปแสดงผลในแต่ละครั้ง คือ 2.5 KB ดังนั้น ถ้ามีการเปิด Web Application ให้แสดงผลกราฟทิ้งไว้นาน 1 ชั่วโมง จะคำนวณปริมาณ Datasource ที่ถูกใช้ไปได้ ดังนี้
Datasource = 60(นาที) / 5(นาที) x 2.5(KB) = 30 KB
คิดเป็นหน่วย Byte = 30 * 1024 = 30,720 B