เหตุการณ์เป็นแบบอะซิงโครนัสและจัดการโดย Google Cloud Pub/Sub ในหัวข้อเดียวต่อ Projectเหตุการณ์จะให้ข้อมูลอัปเดตสำหรับอุปกรณ์และโครงสร้างทั้งหมด และรับประกันการรับเหตุการณ์ ตราบใดที่ผู้ใช้ยังไม่ได้เพิกถอนโทเค็นเพื่อการเข้าถึงและข้อความเหตุการณ์ยังไม่หมดอายุ
เหตุการณ์เป็นฟีเจอร์ที่ไม่บังคับของ SDM API ซึ่งสามารถนำไปใช้และยืนยันได้ง่ายๆ โดยใช้โปรเจ็กต์ Google Cloud
เปิดใช้กิจกรรม
คุณอาจเปิดใช้เหตุการณ์ใน Device Access คอนโซล เลือกโปรเจ็กต์ใน Console หากยังไม่ได้เลือก
หากคุณเปิดใช้เหตุการณ์แล้ว (เช่น ระหว่างการสร้างโปรเจ็กต์) ช่องหัวข้อ Pub/Sub ในส่วนเปิดใช้หัวข้อ Pubsub สำหรับเหตุการณ์ ควรมีค่าอยู่แล้ว ซึ่งเรียกว่ารหัสหัวข้อ ในรูปแบบเดิมคือ
projects/sdm-prod/topics/enterprise-project-id
หากต้องการย้ายข้อมูลจากหัวข้อที่โฮสต์โดย Google ให้ปิดใช้หัวข้อ Pub/Sub ที่โฮสต์โดย Google ใน Device Access คอนโซลและเปิดใช้เหตุการณ์อีกครั้งโดยใช้ Pub/Sub ที่โฮสต์ด้วยตนเอง ซึ่งสร้างขึ้นในโปรเจ็กต์ที่อยู่ในระบบคลาวด์ Google ของคุณเอง การย้ายข้อมูลการกำหนดค่าหัวข้อ Pub/Sub จะไม่ทำให้โทเค็นการเข้าถึงของผู้ใช้ที่มีอยู่หรือสิทธิ์ OAuth ใช้งานไม่ได้
คุณสามารถสร้างหรือเปลี่ยนหัวข้อ Pub/Sub ที่โฮสต์ด้วยตนเองในโปรเจ็กต์ที่อยู่ในระบบคลาวด์ Google Cloud ของคุณเองได้ และจะขึ้นอยู่กับราคาของ Google Cloud Pub/Sub มาตรฐาน (ซึ่งรวมถึงรุ่นฟรี 10 GB ต่อเดือน)
สร้างหัวข้อ Pub/Sub โดยทำดังนี้
gcloud pubsub topics create {topic} --message-retention-duration=0sให้สิทธิ์ SDM API ที่จำเป็นเพื่อเข้าถึงและ เผยแพร่ข้อมูลเหตุการณ์สำหรับรหัสหัวข้อของโปรเจ็กต์
gcloud pubsub topics add-iam-policy-binding projects/{project}/topics/{topic} \
--member="group:sdm-publisher@googlegroups.com" \
--role="roles/pubsub.publisher"รูปแบบของรหัสหัวข้อที่สร้างใหม่จะเป็นดังนี้
projects/gcp-project-name/subscriptions/topic-id
จดรหัสหัวข้อไว้ คุณจะต้องใช้รหัสดังกล่าวเพื่อเปิดใช้เหตุการณ์ให้เสร็จสมบูรณ์ ดูข้อมูลเพิ่มเติมได้ที่ สร้างหัวข้อ
วิธีเปิดใช้กิจกรรม (หรือย้ายข้อมูลจากหัวข้อที่ Google โฮสต์)
- หากสร้างโปรเจ็กต์ใหม่ ให้เลือกเปิดใช้เหตุการณ์ แล้วคลิกสร้างโปรเจ็กต์ หากจะย้ายข้อมูลโปรเจ็กต์ที่มีอยู่จากหัวข้อที่โฮสต์โดย Google ให้ปิดใช้หัวข้อ Pub/Sub ที่มีอยู่ในหน้าจอข้อมูลของโปรเจ็กต์ก่อน
- คลิกไอคอน สำหรับหัวข้อ Pub/Sub แล้วเลือกเปิดใช้เหตุการณ์ด้วยหัวข้อ PubSub (หรือแก้ไขหัวข้อปัจจุบัน )
- ป้อนรหัสหัวข้อ Pub/Sub ที่โฮสต์ด้วยตนเองซึ่งคุณสร้างไว้ก่อนหน้านี้
คัดลอกรหัสหัวข้อ คุณจะต้องใช้รหัสนี้เพื่อสร้างการสมัครรับข้อมูลในหัวข้อเพื่อให้ดึงข้อความเหตุการณ์ได้
สร้างการสมัครใช้บริการแบบดึงข้อมูล
การสมัครรับข้อมูลแบบดึงข้อมูลเองคือการที่ผู้สมัครรับข้อมูลเริ่มส่งคำขอไปยังเซิร์ฟเวอร์ Pub/Sub สำหรับข้อความเหตุการณ์ที่อยู่ในคิว วิธีนี้เป็นวิธีที่ง่ายและรวดเร็วในการยืนยันว่า มีการสร้างเหตุการณ์สำหรับอุปกรณ์ที่ได้รับอนุญาต
เปิด Cloud Shell สำหรับโปรเจ็กต์ Google Cloud โดยทำดังนี้
ที่พรอมต์ของ Cloud Shell ให้เรียกใช้คำสั่งต่อไปนี้เพื่อสร้างการสมัครใช้บริการแบบดึง สำหรับหัวข้อ โดยใช้subscription-idที่คุณต้องการ และรหัสหัวข้อที่ไม่ซ้ำกัน
gcloud pubsub subscriptions create subscription-id --topic=projects/gcp-project-name/subscriptions/topic-id
Created subscription [projects/gcp-project-name/subscriptions/subscription-id].เริ่มเหตุการณ์
หากต้องการเริ่มเหตุการณ์เป็นครั้งแรกเมื่อสร้างการสมัครใช้บริการ Pub/Sub แล้ว ให้เรียกใช้เพื่อแสดงรายการอุปกรณ์เป็นทริกเกอร์แบบครั้งเดียว
curl -X GET 'https://smartdevicemanagement.googleapis.com/v1/enterprises/project-id/devices' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer access-token'ระบบจะเผยแพร่เหตุการณ์สำหรับโครงสร้างและอุปกรณ์ทั้งหมดหลังจากเรียก API นี้
สร้างเหตุการณ์
ระบบจะสร้างเหตุการณ์สำหรับการเปลี่ยนแปลงฟิลด์ลักษณะทั้งหมด ซึ่งบางส่วนเป็นแบบอัตโนมัติ และบางส่วนเป็นแบบกำหนดเอง
ตัวอย่างเช่น หากอุณหภูมิแวดล้อมใกล้กับ
Nest Thermostat เปลี่ยนแปลง ระบบจะส่งเหตุการณ์สำหรับลักษณะอุณหภูมิ โดยอัตโนมัติพร้อมกับค่า ambientTemperatureCelsius ใหม่
หากต้องการสร้างด้วยตนเอง ให้ทำอย่างใดอย่างหนึ่งต่อไปนี้
- เปลี่ยนสถานะของอุปกรณ์ด้วยตนเอง เช่น เปลี่ยนโหมดของ ตัวควบคุมอุณหภูมิ Nest
- ทริกเกอร์เหตุการณ์ เช่น การเคลื่อนไหว คน หรือเสียงใน Google Nest Cam Indoor
- เรียกใช้คำสั่งของอุปกรณ์ โดยใช้ SDM API
ดูข้อความ
คุณดูข้อความเหตุการณ์ได้ในโปรเจ็กต์ที่อยู่ในระบบคลาวด์ของ Google ในส่วนการสมัครใช้บริการ Pub/Sub ดังนี้
ไปที่การสมัครใช้บริการ Google Cloud Pub/Sub
- คลิกรหัสการสมัครใช้บริการที่คุณสร้างไว้ก่อนหน้านี้
- ในหน้าจอรายละเอียดการสมัครใช้บริการ คุณควรเห็นกิจกรรมสำหรับแผนภูมิจำนวนข้อความที่ยังไม่ได้รับทราบ ซึ่งหมายความว่าคุณได้รับการแจ้งเตือนเกี่ยวกับกิจกรรม ผ่านการสมัครใช้บริการแล้ว หากไม่เห็นกิจกรรมใดๆ โปรดรอสักครู่ หรือสร้างเหตุการณ์เพิ่มเติม
- คลิก ดูข้อความเพื่อเปิดแผงข้อความ
- คลิกดึงเพื่อดูข้อความ ซึ่งควรสอดคล้องกับการดำเนินการ ที่คุณใช้สร้างเหตุการณ์
นอกจากนี้ คุณยังดูข้อความใน Cloud Shell ได้ด้วยคำสั่ง pull พื้นฐาน ดังนี้
gcloud pubsub subscriptions pull subscription-idดูข้อมูลเพิ่มเติมเกี่ยวกับประเภทการสมัครใช้บริการ รวมถึงประเภทของเหตุการณ์ที่ SDM API ส่งและวิธีใช้ได้ที่เหตุการณ์
จัดการข้อความ
คุณควรรับทราบและลบข้อความเป็นประจำเพื่อให้การติดตามสะอาดและหลีกเลี่ยงการส่งข้อความที่ซ้ำกันไปยังผู้ติดตามรายอื่นๆ คุณลบข้อความการสมัครใช้บริการทั้งหมดได้ด้วยตนเองในส่วนการสมัครใช้บริการ Pub/Sub โดยทำดังนี้
ไปที่การสมัครใช้บริการ Google Cloud Pub/Sub
- คลิกรหัสการสมัครใช้บริการ
- คุณรับทราบและล้างข้อมูลได้หลายวิธี ดังนี้
- คลิก ดูข้อความเพื่อเปิดแผงข้อความ เลือกช่องทำเครื่องหมายเปิดใช้ข้อความ ACK แล้วคลิก PULL เพื่อดูและรับทราบข้อความทั้งหมด
- คลิก ล้างข้อมูล ข้อความเพื่อล้างข้อมูลข้อความที่มีอยู่ทั้งหมดโดยการรับทราบโดยไม่ต้อง ดูข้อความ คลิกPURGEเพื่อยืนยัน
นอกจากนี้ คุณยังล้างข้อความใน Cloud Shell ได้โดยใช้แฟล็ก --auto-ack กับคำสั่ง pull พื้นฐาน
gcloud pubsub subscriptions pull subscription-id --auto-ackจัดการการสมัครใช้บริการ
คุณกำหนดค่าการสมัครใช้บริการได้หลายวิธีตามที่อธิบายไว้ในการใช้พร็อพเพอร์ตี้การสมัครใช้บริการ
แม้ว่าคุณจะจัดการการติดตามและข้อความอย่างไรก็ได้ แต่สำหรับแอปพลิเคชันเวอร์ชันที่ใช้งานจริง เราขอแนะนำให้คุณใช้บัญชีบริการสำหรับการตรวจสอบสิทธิ์ แทนที่จะใช้บัญชีผู้ใช้เหมือนที่ผ่านมาในคู่มือเริ่มต้นฉบับย่อนี้ แอปพลิเคชันหรือเครื่องเสมือนจะใช้บัญชีบริการ ไม่ใช่บุคคล และมีคีย์บัญชีที่ไม่ซ้ำกันของตัวเอง
ดูข้อมูลเพิ่มเติมเกี่ยวกับการตรวจสอบสิทธิ์บัญชีบริการด้วย Device Accessได้ที่ เหตุการณ์