部署新的模拟设备

远程监视和设备模拟解决方案加速器都允许你定义自己的模拟设备。 本文介绍如何将自定义冷却器设备类型和新灯泡设备类型部署到远程监视解决方案加速器。

本文中的步骤假设你已完成创建并测试新模拟设备操作指南,并拥有定义自定义冷却器和新灯泡设备类型的文件。

本操作指南中的步骤介绍如何:

  1. 使用 SSH 访问承载远程监视解决方案加速器的虚拟机的文件系统。

  2. 配置 Docker 以从 Docker 容器外的位置加载设备模型。

  3. 使用自定义设备模型文件运行远程监视解决方案加速器。

使用 Azure Cloud Shell

Azure 托管 Azure Cloud Shell(一个可通过浏览器使用的交互式 shell 环境)。 可以将 Bash 或 PowerShell 与 Cloud Shell 配合使用来使用 Azure 服务。 可以使用 Azure Cloud Shell 预安装的命令来运行本文中的代码,而不必在本地环境中安装任何内容。

若要启动 Azure Cloud Shell,请执行以下操作:

选项 示例/链接
选择代码块右上角的“试用”。 选择“试用”不会自动将代码复制到 Cloud Shell。 Azure Cloud Shell 的“试用”示例
转到 https://shell.azure.com 或选择“启动 Cloud Shell”按钮可在浏览器中打开 Cloud Shell。 在新窗口中启动 Cloud Shell
选择 Azure 门户右上角菜单栏上的 Cloud Shell 按钮。 Azure 门户中的“Cloud Shell”按钮

若要在 Azure Cloud Shell 中运行本文中的代码,请执行以下操作:

  1. 启动 Cloud Shell。

  2. 选择代码块上的“复制”按钮以复制代码。

  3. 在 Windows 和 Linux 上选择 Ctrl+Shift+V 将代码粘贴到 Cloud Shell 会话中,或在 macOS 上选择 Cmd+Shift+V 将代码粘贴到 Cloud Shell 会话中。

  4. 选择 Enter 运行此代码。

完成本操作方法指南中的步骤需要有效的 Azure 订阅。

如果还没有 Azure 订阅,可以在开始前创建一个免费帐户

先决条件

按照本操作方法指南操作需要:

  • 远程监视解决方案加速器的一个部署实例。
  • 一个用于运行 sshscp 命令的本地 bash shell。 在 Windows 上,安装 bash 的简单方法是安装 git
  • 自定义的设备模型文件,如创建并测试新模拟设备中所述的文件。

访问虚拟机

以下步骤在 Azure Cloud Shell 中使用 Azure CLI。 如果愿意,可以在开发计算机上安装 Azure CLI,并在本地运行命令。

以下步骤演示如何配置 Azure 虚拟机,以允许 SSH 访问。 所示步骤假定为解决方案加速器选择的名称为 contoso-simulation - 将此值替换为部署名称

  1. 列出包含解决方案加速器资源的资源组的内容:

    az resource list -g contoso-simulation -o table
    

    记下虚拟机名称、公共 IP 地址和网络安全组 - 稍后需要使用这些值。

  2. 更新网络安全组,以允许 SSH 访问。 以下命令假定网络安全组的名称为 contoso-simulation-nsg - 将此值替换为你的网络安全组的名称

    az network nsg rule update --name SSH --nsg-name contoso-simulation-nsg -g contoso-simulation --access Allow -o table
    

    仅在测试和开发期间启用 SSH 访问。 如果启用 SSH, 应尽快将其禁用

  3. 在虚拟机上将 azureuser 帐户的密码更新为你知道的密码。 运行以下命令时,选择自己的密码:

    az vm user update --name vm-vikxv --username azureuser --password YOURSECRETPASSWORD  -g contoso-simulation
    
  4. 查找虚拟机的公共 IP 地址。 以下命令假定虚拟机的名称为 vm-vikxv - 将此值替换为之前记下的虚拟机的名称

    az vm list-ip-addresses --name vm-vikxv -g contoso-simulation -o table
    

    记下虚拟机的公共 IP 地址。

配置 Docker

本部分将配置 Docker,以从虚拟机中的 /tmp/devicemodels 文件夹加载设备模型文件,而不是从 Docker 容器内部加载。 在本地计算机上的 bash shell 中运行本部分中的命令

本部分将配置 Docker,以从虚拟机中的 /tmp/devicemodels 文件夹加载设备模型文件,而不是从 Docker 容器内部加载。 在本地计算机上的 bash shell 中运行本部分中的命令

  1. 使用 SSH 从本地计算机连接到 Azure 中的虚拟机。 以下命令假设虚拟机 vm-vikxv 的公共 IP 地址为 104.41.128.108,将此值替换为上一部分中虚拟机的公共 IP 地址

     ssh azureuser@104.41.128.108
    

    按照提示使用在上一部分中设置的密码登录虚拟机。

  2. 配置设备模拟服务,从容器外加载设备模型。 请先打开 Docker 配置文件:

    sudo nano /app/docker-compose.yml
    

    找到 devicesimulation 容器的设置,然后编辑卷设置,如以下代码片段所示

    devicesimulation:
      image: azureiotpcs/device-simulation-dotnet:1.0.0
      networks:
        - default_net
      depends_on:
        - storageadapter
      environment:
        - PCS_KEYVAULT_NAME
        - PCS_AAD_APPID
        - PCS_AAD_APPSECRET
      # How one could mount custom device models
      volumes:
        - /tmp/devicemodels:/app/webservice/data/devicemodels:ro
    

    保存更改。

  3. 将容器中的现有设备模型文件复制到新位置。 首先,找到设备模拟容器的容器 ID:

    sudo docker ps
    

    然后将设备模型文件复制到虚拟机中的 tmp 文件夹。 以下命令假定容器 ID 为 c378d6878407,将此值替换为你的设备模拟容器 ID:

    sudo docker cp c378d6878407:/app/webservice/data/devicemodels /tmp
    sudo chown -R azureuser /tmp/devicemodels/
    

    使 bash 窗口和 SSH 会话处于打开状态

  4. 将自定义设备模型文件复制到虚拟机中。 在创建自定义设备模型的计算机上的另一 bash shell 中运行此命令。 首先,导航到包含设备模型 JSON 文件的本地文件夹。 以下命令假设虚拟机的公共 IP 地址为 104.41.128.108,将此值替换为你的虚拟机的公共 IP 地址。 出现提示时输入虚拟机密码:

    scp *json azureuser@104.41.128.108:/tmp/devicemodels
    cd scripts
    scp *js azureuser@104.41.128.108:/tmp/devicemodels/scripts
    
  5. 重新启动设备模拟 Docker 容器以使用新设备模型。 在打开到虚拟机的 SSH 会话的 bash shell 中运行以下命令

    sudo /app/start.sh
    

    如果要查看正在运行的 Docker 容器的状态及其容器 ID,请使用以下命令:

    sudo docker ps
    

    如果要查看设备模拟容器中的日志,请运行以下命令。 将容器 ID 替换为你的设备模拟容器的 ID:

    sudo docker logs -f 5d3f3e78822e
    

运行模拟

现在即可在远程监视解决方案中使用自定义设备模型:

  1. 启动远程监视仪表板。

  2. 通过“设备”页添加模拟设备。 添加新的模拟设备时,可选择新的设备模型。

  3. 可使用仪表板查看设备遥测并调用设备方法。

清理资源

如果打算深入探索,请保留部署的远程监视解决方案加速器。

如果不再需要解决方案加速器,请将其删除。

后续步骤

本指南介绍如何将自定义设备模型部署到远程监视解决方案加速器。 我们建议接下来了解如何将真实设备连接到远程监视解决方案