2

I am using Visual Studio Code and python. I downloaded the Azure Functions extension for Visual Studio Code and created a local project. I edited the init.py file to process a sample telemetry message and extract person count and I added codes to publish telemetry messages for a digital twin (from SDK for Azure Digital Twins API in python). However, after I deploy the function and try to connect it to the IoT Hub, Azure cannot find the function inside the function app (see snapshot).

Here is my code for __init__.py:

import logging
import azure.functions as func
from azure.identity import DefaultAzureCredential
from azure.digitaltwins.core import DigitalTwinsClient


def processHubToDTEvents(telemetry_payload):

    url = "https://ADT-instance-xut.api.wcus.digitaltwins.azure.net"
    credential = DefaultAzureCredential()
    service_client = DigitalTwinsClient(url, credential)

    digita_twin_id = "spaceTwin-1"
    service_client.publish_telemetry(
        digita_twin_id,
        telemetry_payload
    )


def main(req: func.HttpRequest) -> func.HttpResponse:
    logging.info('Python HTTP trigger function processed a request.')

    req_body = req.get_json()

    detected = req_body.get("body")
    count = 0
    for obj in detected:
        if obj.get('label') == "person":
            count += 1

    telemetry_payload = '{"Occupancy": ' + str(count) + '}'

    processHubToDTEvents(telemetry_payload)

    return func.HttpResponse(telemetry_payload)

I would really appreciate it if someone could explain how I could setup the Azure Function app. Thanks in advance

tongxu95
  • 21
  • 1

1 Answers1

0

Looks like you've set up an HTTP triggered function when you need an IoT Hub triggered function. See this document for the code changes and function.json changes you'll need to make: https://learn.microsoft.com/en-us/azure/azure-functions/functions-bindings-event-iot-trigger?tabs=python