การพยากรณ์อากาศจากข้อมูลที่ IoT hub ได้รับจากเซ็นเซอร์โดยใช้ Azure Machine Learning

End-to-end diagram

[!อย่าลืม]
ก่อนที่เราจะลงมือทำตัวอย่างนี้ ลองตรวจดูก่อนซิว่าคุณได้ตั้งค่าอุปกรณ์ IoT, IoT hub และติดตั้งโปรแกรมลงบนอุปกรณ์ IoT เป็นที่เรียบร้อยแล้ว เพื่อให้เราสามารถส่งข้อมูลจากเซ็นเซอร์ไปยัง IoT hub ของคุณได้

Machine learning นั้นเป็นเทคนิคในการนำ data science มาช่วยให้คอมพิวเตอร์สามารถเรียนรู้จากข้อมูลที่มีอยู่เพื่อนำไปทำนาย พฤติกรรม, ผลลัพท์ หรือแนวโน้ม ที่จะเกิดขึ้นในอนาคต ซึ่ง Azure Machine Learning นี้เป็นหนึ่งในรูปแบบการให้บริการบน cloud ที่สามารถสร้าง predictive models ได้อย่างรวดเร็ว

คุณจะได้อะไรจากบทเรียนนี้

คุณจะได้เรียนวิธีการใช้ Azure Machine Learning เพื่อทำการพยากรณ์อากาศว่าฝนจะตกหรือไม่ โดยใช้อุณหภูมิและค่าความชื้นที่ได้รับจาก IoT hub โดยการทำนายโอกาสที่ฝนจะตกนี้ได้ถูกจัดเตรียมรูปแบบการทำนายไว้ให้เรียบร้อยแล้ว

คุณจะต้องทำอะไรบ้าง

  • สร้างการพยากรณ์อากาศเป็นเว็บเซอร์วิส
  • จัดเตรียม IoT hub ของคุณให้พร้อมโดยการเพิ่ม consumer group ใหม่
  • สร้าง Stream Analytics พร้อมกับทำการตั้งค่าเพื่อให้สามารถทำสิ่งเหล่านี้ได้
    • อ่านข้อมูลอุณหภูมิและค่าความชื้นจาก IoT hub
    • เรียกเว็บเซอร์วิสเพื่อพยากรณ์โอกาสที่ฝนจะตก
    • บันทึกผลการพยากรณ์ไว้บน Azure blob storage
  • เรียกใช้ Microsoft Azure Storage Explorer เพื่อใช้ในการดูผลลัพท์การพยากรณ์

สิ่งที่คุณต้องมีก่อนลงมือทำ

  • ผ่านขั้นตอนตั้งค่าอุปกรณ์จากตัวอย่าง Setup your device ซึ่งสิ่งที่จะได้จากตัวอย่างคือ
    • บัญชี Azure subscription ที่พร้อมใช้งาน
    • IoT hub ที่พร้อมใช้งาน และอยู่ภายใต้บัญชี Azure subscription ของคุณ
    • โปรแกรมที่จะส่งข้อมูลไปยัง IoT hub ของคุณ
  • บัญชี Azure Machine Learning Studio (Try Machine Learning Studio for free).

สร้างการพยากรณ์อากาศเป็นเว็บเซอร์วิส

  1. เข้าไปที่ weather prediction model page.
  2. คลิกที่ปุ่ม Open in Studio Open the weather prediction model page in Cortana Intelligence Gallery
  3. ที่เมนูด้านล่างคลิกที่ Run เพื่อทำการตรวจสอบขั้นตอนต่างๆ ในขั้นตอนนี้อาจจะใช้เวลาในการตรวจสอบถึง 2 นาที เมื่อเสร็จแล้วจะมีเครื่องหมายถูกสีเขียวขึ้นจนครบทุกกล่อง Open the weather prediction model in Azure Machine Learning Studio
  4. ที่เมนูด้านล่างคลิกที่ SET UP WEB SERVICE > Predictive Web Service (รอสักครู่) Deploy the weather prediction model in Azure Machine Learning Studio
  5. ที่ diagram ให้ลากกล่อง Web service input มาใกล้ๆกับกล่อง Score Model
  6. ที่กล่อง Web service input คลิกวงกลมเล็กๆด้านล่างของกล่อง แล้วลากไปเชื่อมกับวงกลมเล็กๆที่อยู่ด้านบนของกล่อง Score Model Connect two modules in Azure Machine Learning Studio
  7. ที่เมนูด้านล่างคลิก RUN อีกครั้งเพื่อทำการตรวจสอบความถูกต้อง
  8. ที่เมนูด้านล่างคลิก DEPLOY WEB SERVICE เพื่อสร้างเว็บเซอร์วิส เมื่อเสร็จแล้วโปรแกรมจะพาเราไปยังหน้า dashboard
  9. ที่หน้า dashboard ให้คลิกดาวโหลด Excel 2010 or earlier workbook เพื่อนำมาทำ REQUEST/RESPONSE.

    [!อย่าลืม]
    กรุณาตรวจสอบว่าไฟล์ที่ดาวโหลดมาเป็นไฟล์ Excel 2010 or earlier workbook จริงๆ แม้ว่าคุณจะติดตั้งโปรแกรม Excel เป็นเวอร์ชั่นล่าสุดบนเครื่องคุณไว้ก็ตาม

    Download the Excel for the REQUEST RESPONSE endpoint

  10. เปิดไฟล์ Excel ที่ทำการดาวโหลดมา แล้วทำการจด WEB SERVICE URL และ ACCESS KEY ไว้ใช้ในขั้นตอนต่อไป

เพิ่ม consumer group ลงใน IoT hub ของคุณ

Consumer groups นั่้นจะถูกเรียกใช้จากโปรแกรมอื่นๆ เพื่อใช้ในการดึงข้อมูลจาก IoT hub ซึ่งในบทเรียนนี้เราจะสร้าง consumer group เพื่อให้ Azure service ของเราเข้ามาอ่านข้อมูลจาก IoT hub ของคุณ

ในการเพิ่ม consumer group ใน IoT hub มีขั้นตอนดังนี้

  1. เข้าไปที่ Azure portal แล้วเปิด IoT hub ที่เตรียมไว้
  2. ที่เมนูคลิก Endpoints แล้วเลือก Events แล้วจะมีเมนูใหม่เปิดขึ้นมา ภายใต้ Consumer groups ให้ทำการเพิ่มชื่อใหม่เข้าไป (ในตัวอย่างจะตั้งชื่อว่า stream) แล้วคลิกปุ่ม Save.Create consumer group in Azure IoT Hub

สร้าง Stream Analytics พร้อมกับทำการตั้งค่า

สร้าง Stream Analytics job

  1. เข้าไปที่ Azure portal แล้วคลิก New > Internet of Things > Stream Analytics job.
  2. ใส่ข้อมูลดังนี้

    Job name: ชื่อของ stream analytic โดยชื่อนี้จะต้องไม่ซ้ำกันคนอื่น

    Resource group: เลือกให้เป็นที่อยู่เดียวกับ IoT hub ที่จะใช้งาน

    Location: เลือกให้่เป็นที่อยู่เดียวกับ resource group

    Pin to dashboard: ติ๊กตัวเลือกนี้ไว้ เพื่อง่ายต่อการเข้าถึงจากหน้า dashboard

    Create a Stream Analytics job in Azure

  3. คลิกที่ปุ่ม Create.

เพิ่ม input ให้กับ Stream Analytics job

  1. เลือก Stream Analytics job ที่สร้างขึ้นมาใหม่
  2. ที่เมนูภายใต้กลุ่มของ Job Topology ให้คลิกที่ Inputs.
  3. ที่หน้าจอ Inputs คลิกปุ่ม Add แล้วใส่ข้อมูลดังนี้

    Input alias: ชื่อของ input ที่ต้องการ (ในตัวอย่างจะใช้ชื่อว่า mlinput) อย่าลืมจดชื่อที่ตั้งไว้ด้วย

    Source: เลือกเป็น IoT hub.

    Consumer group: เลือก consumer group ที่คุณสร้างไว้ (ในตัวอย่างสร้างไว้ชื่อ stream)

    Add an input to the Stream Analytics job in Azure

  4. คลิกที่ปุ่ม Create

เพิ่ม output ให้กับ Stream Analytics job

  1. ที่เมนูภายใต้กลุ่มของ Job Topology ให้คลิกที่ Outputs
  2. ที่หน้าจอ Outputs คลิกปุ่ม Add แล้วใส่ข้อมูลดังนี้

    Output alias: ชื่อ output ที่ต้องการ (ในตัวอย่างจะใช้ชื่อว่า mlresult) อย่าลืมจดชื่อที่ตั้งไว้ด้วย

    Sink: เลือกเป็น Blob Storage.

    Storage account: ใช้สำหรับเก็บข้อมูลผลการพยากรณ์ โดยจะเลือก storage ที่มีอยู่แล้วหรือจะทำการสร้างใหม่ก็ได้

    Container: ใช้สำหรับอ้าง container ที่ใช้เก็บผลลัพท์การพยากรณ์ โดยจะเลือก container ที่มีอยู่แล้วหรือจะสร้างใหม่ก็ได้Event serialization format: เลือกเป็น CSV

    Add an output to the Stream Analytics job in Azure

  3. คลิกที่ปุ่ม Create

เพิ่ม function ให้กับ Stream Analytics job เพื่อไปเรียกใช้เว็บเซอร์วิสที่สร้างไว้

  1. ที่เมนูภายใต้กลุ่มของ Job Topology ให้คลิกที่ Functions
  2. กดปุ่ม Add แล้วใส่ข้อมูลดังนี้

    Function Alias: ใส่คำว่าmachinelearning

    Function Type: เลือกเป็น Azure ML

    Import option: เลือกเป็น Import from a different subscription

    URL: เปิดดูไฟล์ Excel ที่ดาวโหลดไว้ แล้ว copy ช่อง WEB SERVICE URL ลงมาใส่ในช่องนี้

    Key: เปิดดูไฟล์ Excel ที่ดาวโหลดไว้ แล้ว copy ช่อง ACCESS KEY ลงมาใส่ในช่องนี้

    Add a function to the Stream Analytics job in Azure

  3. คลิกที่ปุ่ม Create

ตั้งค่า query ให้กับ Stream Analytics job

  1. ที่เมนูภายใต้กลุ่มของ Job Topology ให้คลิกที่ Query
  2. Copy code ด้านล่างนี้ไปทับ code ที่มีอยู่

    WITH machinelearning AS (
       SELECT EventEnqueuedUtcTime, temperature, humidity, machinelearning(temperature, humidity) as result from [YourInputAlias]
    )
    Select System.Timestamp time, CAST (result.[temperature] AS FLOAT) AS temperature, CAST (result.[humidity] AS FLOAT) AS humidity, CAST (result.[Scored Probabilities] AS FLOAT ) AS 'probabalities of rain'
    Into [YourOutputAlias]
    From machinelearning
    

    เปลี่ยน[YourInputAlias] ให้เป็นชื่อ input alias ที่ตั้งไว้ (ในตัวอย่างใช้ชื่อว่า mlinput)

    เปลี่ยน[YourOutputAlias] ให้เป็นชื่อ output alias ที่ตั้งไว้ (ในตัวอย่างใช้ชื่อว่า mlresult)

  3. คลิกที่ปุ่ม Save

เริ่มสั่งให้ Stream Analytics job ทำงาน

ที่ Stream Analytics job คลิกที่ Start > Now > Start เมื่อโปรแกรมเริ่มทำงานแล้ว สถานะของ job จะเปลี่ยนจาก Stopped เป็น Running.

Run the Stream Analytics job

เรียกใช้ Microsoft Azure Storage Explorer เพื่อใช้ในการดูผลลัพท์การพยากรณ์

เมื่อโปรแกรมส่งข้อมูลอุณหภูมิและค่าความชื้นไปให้กับ IoT hub ข้อมูลเหล่านั้นก็จะถูก Stream Analytics job ส่งไปให้กับเว็บเซอร์วิสเพื่อทำการพยากรณ์โอกาสที่ฝนจะตกกลับมา ซึ่งผลลัพท์ที่ได้นั้นจะถูกบันทึกไว้ใน Azure blob storage แล้วเราจะใช้เครื่องมือ Azure Storage Explorer เป็นตัวเข้าไปดูผลลัพท์ที่ได้

  1. ดาวโหลดโปรแกรม Azure Storage Explorer (Download and install Microsoft Azure Storage Explorer)
  2. เปิดโปรแกรม Azure Storage Explorer ที่ดาวโหลดมา
  3. ลงชื่อเข้าใช้งานบัญชี Azure ของคุณ
  4. เลือก subscription ที่จะทำงานด้วย
  5. คลิกที่ subscription > Storage Accounts > เลือก Storage account ที่ทำการบันทึกผลลัพท์ไว้ > Blob Containers > เลือก container ที่บันทึกผลลัพท์ไว้
  6. เปิดไฟล์นามสกุล .csv เพื่อทำการดูผลลัพท์การพยากรณ์ จะเห็นโอกาสที่ฝนจะตกอยู่ช่องด้านขวาสุด

    Get weather forecast result with Azure Machine Learning

บทสรุป

คุณได้ลองสร้าง Azure Machine Learning เพื่อทำการทำนายโอกาสที่ฝนจะตกจากข้อมูลอุณหภูมิและค่าความชื้นที่ IoT hub ได้รับเสร็จเรียบร้อยแล้ว

results matching ""

    No results matching ""