Skip to content

添加手动继电器控制

说明

无服务器代码可以由多种方式触发,包括 HTTP 请求。你可以使用 HTTP 触发器为继电器控制添加手动覆盖功能,从而允许通过网页请求来打开或关闭继电器。

在本任务中,你需要为你的 Functions App 添加两个 HTTP 触发器,用于打开和关闭继电器,复用本课中学到的知识向设备发送命令。

一些提示:

  • 你可以使用以下命令为现有的 Functions App 添加一个 HTTP 触发器:

    sh
    func new --name <trigger name> --template "HTTP trigger"

    <trigger name> 替换为你的 HTTP 触发器的名称。可以使用类似 relay_onrelay_off 的名称。

  • HTTP 触发器可以设置访问控制。默认情况下,它们需要一个特定于函数的 API 密钥随 URL 一起传递才能运行。对于本任务,你可以移除此限制,以便任何人都可以运行该函数。为此,请在 HTTP 触发器的 function.json 文件中将 authLevel 设置更新为以下内容:

    json
    "authLevel": "anonymous"

    💁 你可以在 Function access keys documentation 中阅读更多关于此访问控制的信息。

  • HTTP 触发器默认支持 GET 和 POST 请求。这意味着你可以使用网页浏览器调用它们——网页浏览器会发出 GET 请求。

    当你在本地运行 Functions App 时,你会看到触发器的 URL:

    text
    Functions:
    
        relay_off: [GET,POST] http://localhost:7071/api/relay_off
    
        relay_on: [GET,POST] http://localhost:7071/api/relay_on
    
        iot-hub-trigger: eventHubTrigger

    将 URL 粘贴到浏览器中并按下 回车,或者在 VS Code 的终端窗口中 Ctrl+点击(macOS 上为 Cmd+点击)链接以在默认浏览器中打开。这将运行触发器。

    💁 注意 URL 中包含 /api——HTTP 触发器默认位于 api 子域中。

  • 当你部署 Functions App 时,HTTP 触发器的 URL 将是:

    https://<functions app name>.azurewebsites.net/api/<trigger name>

    其中 <functions app name> 是你的 Functions App 的名称,<trigger name> 是触发器的名称。

评分标准

标准优秀合格需要改进
创建 HTTP 触发器创建了两个用于打开和关闭继电器的触发器,并使用了合适的名称创建了一个具有合适名称的触发器未能创建任何触发器
从 HTTP 触发器控制继电器能够将两个触发器连接到 IoT Hub 并正确控制继电器能够将一个触发器连接到 IoT Hub 并正确控制继电器未能将触发器连接到 IoT Hub