設備數據通過Azure Functions 推送到 Power BI 數據大屏進行展示(1準備工作)

640?wx_fmt=png

本案例適用於開發者入門理解Azure Functions/ IoT Hub / Service Bus / Power BI等幾款產品。


640?wx_fmt=png

主要實戰的內容爲:


  1. 將設備遙測數據上傳到物聯網中心,

  2. 將遙測數據路由到消息中間件的Topic中,

  3. 使用Azure Function解析消息中間件Topic中的消息並推送到大屏 。


本文主要是本案例的準備工作,即(第1條和第2條的內容):


1.創建IoT Hub:

https://v.qq.com/x/page/h3031pnaxi8.html


2.創建Service Bus:

https://v.qq.com/x/page/b3031hdv9yk.html


3. 創建IoT Hub 消息路由,將遙測消息路由到Service Bus Topic

https://v.qq.com/x/page/i3031hkec4q.html



本示例中的Python Device 代碼來自於微軟官網,請參照:

https://docs.azure.cn/zh-cn/iot-hub/quickstart-send-telemetry-python

# Copyright (c) Microsoft. All rights reserved.# Licensed under the MIT license. See LICENSE file in the project root for full license information.import randomimport timeimport sys# Using the Python Device SDK for IoT Hub:#   https://github.com/Azure/azure-iot-sdk-python# The sample connects to a device-specific MQTT endpoint on your IoT Hub.import iothub_client# pylint: disable=E0611from iothub_client import IoTHubClient, IoTHubClientError, IoTHubTransportProvider, IoTHubClientResultfrom iothub_client import IoTHubMessage, IoTHubMessageDispositionResult, IoTHubError, DeviceMethodReturnValue# The device connection string to authenticate the device with your IoT hub.# Using the Azure CLI:# az iot hub device-identity show-connection-string --hub-name {YourIoTHubName} --device-id MyNodeDevice --output tableCONNECTION_STRING = "your device conn string"# Using the MQTT protocol.PROTOCOL = IoTHubTransportProvider.MQTTMESSAGE_TIMEOUT = 10000# Define the JSON message to send to IoT Hub.TEMPERATURE = 20.0HUMIDITY = 60MSG_TXT = "{\"temperature\": %.2f,\"humidity\": %.2f}"def send_confirmation_callback(message, result, user_context):    print ( "IoT Hub responded to message with status: %s" % (result) )def iothub_client_init():    # Create an IoT Hub client    client = IoTHubClient(CONNECTION_STRING, PROTOCOL)    return clientdef iothub_client_telemetry_sample_run():    try:        client = iothub_client_init()        print ( "IoT Hub device sending periodic messages, press Ctrl-C to exit" )        while True:            # Build the message with simulated telemetry values.            temperature = TEMPERATURE + (random.random() * 15)            humidity = HUMIDITY + (random.random() * 20)            msg_txt_formatted = MSG_TXT % (temperature, humidity)            message = IoTHubMessage(msg_txt_formatted)            # Add a custom application property to the message.            # An IoT hub can filter on these properties without access to the message body.            prop_map = message.properties()            if temperature > 30:              prop_map.add("temperatureAlert", "true")            else:              prop_map.add("temperatureAlert", "false")            # Send the message.            print( "Sending message: %s" % message.get_string() )            client.send_event_async(message, send_confirmation_callback, None)            time.sleep(3)    except IoTHubError as iothub_error:        print ( "Unexpected error %s from IoTHub" % iothub_error )        return    except KeyboardInterrupt:        print ( "IoTHubClient sample stopped" )if __name__ == '__main__':    print ( "IoT Hub Quickstart #1 - Simulated device" )    print ( "Press Ctrl-C to exit" )    iothub_client_telemetry_sample_run()


640?wx_fmt=gif



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章