Skip to main content

Amazon Lookout for Equipment

Amazon Lookout for Equipment คือบริการ Machine Learning สำหรับ predictive maintenance ของเครื่องจักรอุตสาหกรรม โดยวิเคราะห์ข้อมูลจาก sensors เพื่อตรวจจับ anomalies และพยากรณ์ความเสียหายก่อนเกิดขึ้นจริง แตกต่างจาก Amazon Monitron ตรงที่ Lookout for Equipment ออกแบบมาสำหรับองค์กรที่มีระบบ sensor และ data collection อยู่แล้ว โดย train โมเดลเฉพาะสำหรับเครื่องจักรแต่ละประเภทของคุณ

บริการนี้สามารถวิเคราะห์ข้อมูลจาก sensors หลายร้อยตัวพร้อมกันและตรวจจับ patterns ที่ซับซ้อนซึ่งมนุษย์ไม่สามารถสังเกตเห็นได้ รองรับการ integrate กับ AWS IoT SiteWise, S3 และระบบ SCADA/DCS ที่มีอยู่ เหมาะสำหรับอุตสาหกรรมหนักเช่น ปิโตรเคมี, พลังงาน, เหมืองแร่ และการผลิต

AWS Docs: https://docs.aws.amazon.com/lookout-for-equipment/latest/ug/what-is-lookoutequipment.html

สถาปัตยกรรม


ฟีเจอร์หลัก

Ingest Sensor Data (Vibration, Temperature, Pressure, etc.)

รับข้อมูลจาก sensors ประเภทต่างๆ เช่น การสั่นสะเทือน (vibration), อุณหภูมิ (temperature), ความดัน (pressure), กระแสไฟฟ้า (current), ความเร็วรอบ (RPM), การไหลของของเหลว (flow rate) รองรับข้อมูลความถี่สูงได้ถึง 1 Hz และ support หลาย data formats

Detect Anomalies in Equipment Behavior

ใช้ deep learning ตรวจจับ anomalies ที่ subtle ในการทำงานของเครื่องจักร โดย model เรียนรู้ "normal behavior" ของเครื่องจักรแต่ละตัว จากนั้นตั้งค่า threshold อัตโนมัติสำหรับการแจ้งเตือน ไม่ต้องกำหนด rules ด้วยตนเอง

Predict Failures Before They Happen

ตรวจจับสัญญาณเตือนล่วงหน้าหลายวันหรือหลายสัปดาห์ก่อนที่เครื่องจักรจะเสีย ทำให้ทีม maintenance มีเวลาวางแผนและสั่งอะไหล่ล่วงหน้า เปลี่ยนจาก reactive maintenance เป็น proactive maintenance

Diagnosis (Which Sensors Triggered Alert)

เมื่อตรวจพบ anomaly ระบบจะระบุว่า sensors ไหนมีส่วนสำคัญในการ trigger การแจ้งเตือน ทำให้ทีม maintenance รู้จุดเริ่มต้นของปัญหาและสามารถวินิจฉัยสาเหตุได้รวดเร็วขึ้น

Scheduled Inference

ตั้ง schedule ให้ระบบรัน inference อัตโนมัติตามความถี่ที่กำหนด เช่น ทุก 5 นาที, ทุกชั่วโมง หรือทุกวัน ผลลัพธ์จะถูกส่งไปยัง S3 หรือ CloudWatch สำหรับการ monitoring

Real-Time Inference

รัน inference แบบ on-demand สำหรับ equipment ที่ต้องการ monitoring แบบ real-time ส่งข้อมูล sensor ผ่าน API และรับ anomaly score กลับทันที เหมาะสำหรับ equipment ที่ critical มาก

Integration with AWS IoT SiteWise

เชื่อมต่อกับ AWS IoT SiteWise โดยตรงเพื่อรับข้อมูล sensor แบบ real-time โดยไม่ต้องเขียน code pipeline เพิ่มเติม ระบบจะดึงข้อมูลจาก asset models ที่กำหนดไว้ใน SiteWise อัตโนมัติ

Multiple Equipment Support

จัดการ models สำหรับเครื่องจักรหลายประเภทและหลายหน่วยพร้อมกันในโปรเจกต์เดียว เปรียบเทียบประสิทธิภาพระหว่างเครื่องจักรชนิดเดียวกันเพื่อระบุตัวที่เริ่มเสื่อมสภาพ


การติดตั้งและการตั้งค่า

เปิดใช้งานผ่าน Console

  1. เข้า AWS Console > Amazon Lookout for Equipment
  2. สร้าง Dataset และ upload historical sensor data จาก S3
  3. สร้าง Model และ Train (ใช้เวลา training ขึ้นอยู่กับ data size)
  4. Deploy Model เพื่อรัน inference
  5. กำหนด Inference Scheduler หรือรัน manual inference
  6. ดู anomalies และ diagnostic information

ติดตั้ง SDK

pip install boto3

IAM Permissions ที่จำเป็น

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"lookoutequipment:*",
"s3:GetObject",
"s3:PutObject",
"s3:ListBucket",
"iam:PassRole"
],
"Resource": "*"
}
]
}

โครงสร้างข้อมูล Sensor (CSV)

Timestamp,Pump_Temperature,Pump_Vibration_X,Pump_Vibration_Y,Pump_Pressure_In,Pump_Pressure_Out,Motor_Current,Motor_RPM
2023-01-01 00:00:00,65.2,0.12,0.08,2.1,8.5,15.3,1485
2023-01-01 00:05:00,65.8,0.13,0.09,2.1,8.4,15.4,1484
2023-01-01 00:10:00,66.1,0.14,0.10,2.0,8.3,15.6,1483

วิธีใช้งาน

สร้าง Dataset และ Import ข้อมูล

import boto3
import json

lookout = boto3.client('lookoutequipment', region_name='us-east-1')

# สร้าง dataset
dataset_response = lookout.create_dataset(
DatasetName='pump-sensor-dataset',
DatasetSchema={
'InlineDataSchema': json.dumps({
"Components": [
{
"ComponentName": "pump_001",
"Columns": [
{"Name": "Pump_Temperature", "Type": "DOUBLE"},
{"Name": "Pump_Vibration_X", "Type": "DOUBLE"},
{"Name": "Pump_Vibration_Y", "Type": "DOUBLE"},
{"Name": "Pump_Pressure_In", "Type": "DOUBLE"},
{"Name": "Pump_Pressure_Out", "Type": "DOUBLE"},
{"Name": "Motor_Current", "Type": "DOUBLE"},
{"Name": "Motor_RPM", "Type": "DOUBLE"}
]
}
]
})
}
)
dataset_arn = dataset_response['DatasetArn']

# Import ข้อมูลจาก S3
import_response = lookout.start_data_ingestion_job(
DatasetName='pump-sensor-dataset',
IngestionInputConfiguration={
'S3InputConfiguration': {
'Bucket': 'my-sensor-data-bucket',
'Prefix': 'pump-data/',
'KeyPattern': 'component-name/yyyy/mm/dd/HH/'
}
},
RoleArn='arn:aws:iam::123456789:role/LookoutEquipmentRole'
)

Train Model

# สร้างและ train model
model_response = lookout.create_model(
ModelName='pump-anomaly-detector',
DatasetName='pump-sensor-dataset',
DataPreProcessingConfiguration={
'TargetSamplingRate': 'PT5M' # sample ทุก 5 นาที
},
TrainingDataStartTime='2022-01-01T00:00:00Z',
TrainingDataEndTime='2023-06-30T23:59:59Z',
EvaluationDataStartTime='2023-07-01T00:00:00Z',
EvaluationDataEndTime='2023-12-31T23:59:59Z',
RoleArn='arn:aws:iam::123456789:role/LookoutEquipmentRole',
LabelsInputConfiguration={
'S3InputConfiguration': {
'Bucket': 'my-sensor-data-bucket',
'Prefix': 'labels/' # ไฟล์ CSV ที่ระบุช่วงเวลาที่เครื่องเสีย
}
}
)

model_arn = model_response['ModelArn']
print(f"Training model: {model_arn}")

# ตรวจสอบสถานะ training
model_info = lookout.describe_model(ModelName='pump-anomaly-detector')
print(f"Status: {model_info['Status']}")
print(f"Model Quality: {model_info.get('ModelQuality', 'N/A')}")

Deploy และ Run Inference

# สร้าง inference scheduler (real-time monitoring)
scheduler_response = lookout.create_inference_scheduler(
ModelName='pump-anomaly-detector',
InferenceSchedulerName='pump-monitor-5min',
DataUploadFrequency='PT5M', # รัน inference ทุก 5 นาที
DataInputConfiguration={
'S3InputConfiguration': {
'Bucket': 'my-sensor-data-bucket',
'Prefix': 'live-data/'
},
'InputTimeZoneOffset': '+07:00',
'InferenceInputNameConfiguration': {
'TimestampFormat': 'yyyy-MM-dd HH:mm:ss',
'ComponentTimestampDelimiter': ','
}
},
DataOutputConfiguration={
'S3OutputConfiguration': {
'Bucket': 'my-sensor-data-bucket',
'Prefix': 'inference-results/'
}
},
RoleArn='arn:aws:iam::123456789:role/LookoutEquipmentRole'
)

# ดู inference results
results = lookout.list_inference_executions(
InferenceSchedulerName='pump-monitor-5min',
Status='SUCCESS',
MaxResults=10
)

for execution in results['InferenceExecutionSummaries']:
print(f"Time: {execution['ScheduledStartTime']}")
print(f"Status: {execution['Status']}")
print(f"Data Output: {execution.get('CustomerResultObject', {}).get('Bucket', 'N/A')}")

อ่านผลลัพธ์และแจ้งเตือน

import json

# อ่านผล inference จาก S3
s3 = boto3.client('s3')

# ผลลัพธ์ในรูปแบบ JSON
result_object = s3.get_object(
Bucket='my-sensor-data-bucket',
Key='inference-results/pump-anomaly-detector/2024/01/15/results.jsonl'
)

for line in result_object['Body'].iter_lines():
result = json.loads(line)
if result['prediction'] == 1: # anomaly detected
print(f"ANOMALY DETECTED at {result['timestamp']}")
print(f"Anomaly Score: {result['anomaly_score']}")
print("Diagnostic Info:")
for sensor in result.get('diagnostics', []):
print(f" - {sensor['name']}: contribution {sensor['value']:.2%}")

ราคา (ประมาณการในบาท)

รายการราคา USDราคา THB (1 USD = 35 บาท)
Model training$0.25/hour~8.75 บาท/ชั่วโมง
Inference (scheduled)$0.10/month per inference unit~3.50 บาท/เดือน/unit
Data ingestionตาม S3 rates~0.12 บาท/GB
IoT SiteWise integrationตาม SiteWise ratesแยกคิด

ตัวอย่างค่าใช้จ่าย: โรงงานที่ monitor 20 เครื่องจักร inference ทุก 5 นาที

  • Training: 20 assets x 10 ชั่วโมง x $0.25 = $50 (ครั้งแรก)
  • Monthly inference: 20 assets x $0.10 = $2/เดือน (~70 บาท/เดือน)
  • ค่าใช้จ่าย running รายเดือนต่ำมากเพียง ~70 บาท/เดือน

เหมาะสำหรับ

  • โรงงานอุตสาหกรรมที่มีระบบ sensor อยู่แล้วและต้องการ upgrade เป็น predictive maintenance
  • อุตสาหกรรมหนักเช่น ปิโตรเคมี, โรงไฟฟ้า, เหมืองแร่ ที่เครื่องจักร downtime มีต้นทุนสูงมาก
  • ทีม data science ที่ต้องการ ML platform สำหรับ industrial IoT
  • บริษัทที่มีข้อมูล sensor ประวัติศาสตร์และต้องการสร้าง anomaly detection model
  • องค์กรที่ต้องการลด unplanned downtime และเพิ่ม equipment availability
  • ธุรกิจที่ต้องการ data-driven maintenance scheduling แทน time-based maintenance

ใช้ร่วมกับ AWS Services

  • AWS IoT SiteWise - รับข้อมูล sensor แบบ real-time จาก industrial assets
  • Amazon S3 - เก็บ training data, labels และ inference results
  • Amazon CloudWatch - monitor inference scheduler และ alert เมื่อพบ anomaly
  • AWS Lambda - process inference results และส่ง notifications
  • Amazon SNS - แจ้งเตือน maintenance team เมื่อพบ anomaly
  • AWS IoT Core - รับข้อมูลจาก IoT devices และ forward ไปยัง Lookout
  • Amazon Kinesis - stream sensor data สำหรับ high-frequency monitoring
  • Amazon QuickSight - visualize anomaly trends และ equipment health dashboard

Use Case ตัวอย่าง

1. โรงไฟฟ้าพลังงานลมตรวจจับ Gearbox Failure ล่วงหน้า

โรงไฟฟ้าพลังงานลมในภาคอีสานใช้ Lookout for Equipment วิเคราะห์ข้อมูลจาก 300 sensors ต่อกังหันลม 60 ตัว โดย sensors วัดค่า vibration, temperature, oil pressure, RPM และ power output ระบบ train model เฉพาะสำหรับแต่ละกังหัน โดยใช้ข้อมูล 2 ปีย้อนหลังรวมถึงช่วงที่เคยเกิดความเสียหาย ผลคือตรวจจับความผิดปกติของ gearbox ล่วงหน้า 2-3 สัปดาห์ ลดค่า emergency repair ได้ 45% และเพิ่ม turbine availability จาก 93% เป็น 98%

2. โรงกลั่นปิโตรเคมีป้องกัน Compressor Failure

โรงกลั่นปิโตรเคมีในมาบตาพุดใช้ Lookout for Equipment monitor compressors วิกฤต 15 ตัว โดย integrate กับ AWS IoT SiteWise ที่รับข้อมูลจาก DCS (Distributed Control System) เดิม ระบบตรวจพบสัญญาณความผิดปกติของ seal pressure ใน compressor ล่วงหน้า 10 วัน ทำให้หยุดซ่อมแบบ planned แทน emergency shutdown ประหยัดการหยุดสายการผลิตได้กว่า 72 ชั่วโมง มูลค่าความเสียหายที่ป้องกันได้กว่า 50 ล้านบาท

3. โรงงานน้ำตาลวางแผน Maintenance ตาม Condition

โรงงานน้ำตาลในอ้อยใช้ Lookout for Equipment monitor motors, pumps และ centrifuges กว่า 80 ตัว ในช่วง crushing season ระบบวิเคราะห์ข้อมูล sensor ทุก 15 นาที และ generate anomaly report รายวันให้ทีม maintenance ทำให้เปลี่ยนจากการซ่อมตาม fixed schedule เป็น condition-based maintenance ลดค่าอะไหล่ที่ไม่จำเป็นได้ 30% และลด unplanned downtime ได้ 55% ในฤดูกาลผลิต