如何将传感器连接到 TeamViewer IoT 代理

无评分

本文适用于所有TeamViewer 物联网用户。

使用Iot agent MQTT API

  • 完整的API 细节可以点击此文章参阅:TeamViewer IoT 设备 MQTT API
  • 以下步骤简要概述了如何安全的(加密和可信任)使用IoT 代理 MQTT API连接到 IoT 代理 MQTT IoT, 以实现注册传感器和指标,查看设备库存以及将数据推送到 TeamViewer IoT 云储存。

前提条件

  1. TeamViewer IoT 代理 已下载,安装并配置到您的 TeamViewer 帐户(更多详细信息请参考安装 TeamViewer IoT 代理
  2. 您将使用三个单独的命令行终端来执行以下步骤:
    - 终端一将用于从 验证 API 接收消息
    - 终端二将用于向 API 发布命令
    - 终端三将用于接收来自注册和数据 API 的消息。
  3. 登录到您的 TeamViewer IoT 云储存帐户(https://teamviewer-iot.com
  4. 安装 Mosquitto 客户端到您的 Raspberry Pi/Linux 设备
    -  sudo apt-get install mosquitto-clients

开始

  1. 终端一中订阅所有身份验证和授权信息以从IoT 代理 MQTT API接收数据/信息
    mosquitto_sub -h localhost -p 18883 --cafile /var/lib/teamviewer-iot-agent/certs/TeamViewerAuthority.crt -t /#
    - 注意:您可以单独订阅每个主题信息,如 API 文档中所示。在此示例中,我们使用 '# '占位符来订阅所有主题,包括成功和错误消息。
  2. 在新终端(终端2)中生成证书签名请求和私钥
    openssl req -nodes -new -newkey rsa:2048 -sha256 -out csr.pem
    - 输入证书申请的信息后,您将创建两个文件:
       - privkey.pem(用于发布/订阅主题的私钥)
       - csr.pem(将提交给TeamViewer IoT代理以生成证书)
  3. 在终端2中,显示csr.pem并将输出复制到剪贴板
    cat csr.pem
  4. 在终端2中,将证书签名请求发布到API以接收IoT代理生成和签名的证书。
    mosquitto_pub -h localhost -p 18883 --cafile /var/lib/teamviewer-iot-agent/certs/TeamViewerAuthority.crt -t /v1.0/createClient -m "-----BEGIN CERTIFICATE REQUEST-----MIICijCCAXICAQAwRTELMAkGA1UEBhMCREUxEzARBgNVBAgMClNvbWUtU3RhdGUx
    ITAfBgNVBAoMGEludGVybmV0IFdpZGdpdHMgUHR5IEx0ZDCCASIwDQYJKoZIhvcN
    AQEBBQADggEPADCCAQoCggEBALxww/Pyulld+zK2I3EeokpxvmD/y2xS/x0/bDwx
    bHIl4Apk8CebpZRil+VhtDwHwwkHk90jMuRbEOeYsXvuoE7r7EUbQnpf8/WO+orL
    yBwFO0x7BP1GYuene78b9jkWRaKVaek5uhldN4I3WBKDj2mdxzTS1ZoZIoyFYD5L
    zCDXcm4igfyEZutHa0757gHNrVRbe3iWNpVYw9wqoTGPvH2G+Hcvec64hYHccVOu
    R/UEbcSb553wLnFWKRWLGi6f3WJFGX6tqFw1QoLyE2p24mrUAqP0/myDbEc+dEPk
    sbYqPunz/0d71jtS+W+/XmTAw5WyLq3D/k8iNQI/ODzGho0CAwEAAaAAMA0GCSqG
    SIb3DQEBCwUAA4IBAQA+tuZW9o7BkC4wGZyrtqKFSfS7KWAYDId15Zb34DBDg4c2
    HPhhA7KRCtxY30nM+EpDp0MU95VgLFo6NmMY3MR/E4aoZwO60K+NdHvkPaqNo57t
    eqycZchcsJx/jKGQwagBp4CjNKtenR3TiE0sHCoCEEwC5+tuPD1p6z64OdbS/w8k
    HIXVhC/W2/1GEE7K15n9fdrtObUY36IOf8bPAfJNexaeoy/eTFzq5bvEcY7DS1XO
    YxyLqWtcaatysudJNRH33nb/ow2RMU0Q694Q2GAsQXgW90vdZtoAaQfAyg/gz/AC
    wTvOtbP9xVULQQR8+krTRDn0JWFPuHpjTSF6eSEH-----END CERTIFICATE REQUEST-----"
    - 注意:“----开始证书请求---- ......终止证书请求----”应该是用引号[“]括起来的csr.pem的内容。
  5. 在1号航站楼,您的证书应如下例所示。 将证书内容复制到名为clientCert.crt的新文件中,并保存在与privkey.key相同的位置
    -----BEGIN CERTIFICATE-----
    MIIEPjCCAiagAwIBAgIBADANBgkqhkiG9w0BAQsFADBEMQswCQYDVQQGEwJERTEc
    MBoGA1UEAwwTVGVhbVZpZXdlckF1dGhvcml0eTEXMBUGA1UECgwOVGVhbVZpZXdl
    EwJBVTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lk
    NmZhOTljMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOc6fESUBd2l
    NdaofgstrysWaJQsQmFEFay7GIqk3AO6JUrPzfo4v2+3Yrb3RYOo3PvqphyBnvi9
    UN4a+nu1kwIGu9sLetWL8RDvySF5GnXBdMCiwG9pJ/tfLy300t+9LgIgG54QZhXw
    +9BP8KXbiQMJiAoOvkW4nNGUCsGUOBA9fwZ4SKqkTsKoF3GyJWf+Zr1Ge5X7LqRb
    9Wh+VKPP7wFsLr/P4bu9ELxQV5lPLTnyoWaZJIvjZFRmfg==
    -----END CERTIFICATE-----
  6. 在终端2中,执行以下命令以解析用于所有后续消息的安全连接的唯一客户端ID。 记录生成的ID以备将来使用。
    openssl x509 -noout -subject -in clientCert.crt -nameopt multiline | grep commonName | sed -r 's/commonName/ /g' | sed -r 's/=/ /g' | xargs | tr -d " \t\n\r"
  7. 在新终端(终端3)中,使用您的私钥和证书,安全地订阅所有注册和数据主题,以从IoT代理MQTT API接收数据/消息
    mosquitto_sub -h localhost -p 18884 --cert clientCert.crt --key privkey.pem --cafile /var/lib/teamviewer-iot-agent/certs/TeamViewerAuthority.crt -t /#
    - 注意:您可以单独订阅每个主题,如API文档中所示。 在此示例中,我们使用'#'占位符来订阅所有主题,包括成功和错误消息
  8. 在终端2中,通过执行此命令并验证终端3中是否收到消息,验证您与API的安全连接是否存在。
    mosquitto_pub -h localhost -p 18884 --cert clientCert.crt --key privkey.pem --cafile /var/lib/teamviewer-iot-agent/certs/TeamViewerAuthority.crt -t /v1.0/c6c5e217089743da8ec3f1d256fa99c2/ping -m  "{ \"request\" : \"Some Message\" }"
    - 请注意,该命令包含我唯一的客户端ID(c6c5e217089743da8ec3f1d256fa99c2)作为消息的一部分
  9. 在终端2中,执行此命令以显示您的库存,该库存将显示在3号终端中。
    mosquitto_pub -h localhost -p 18884 --cert clientCert.crt --key privkey.pem --cafile /var/lib/teamviewer-iot-agent/certs/TeamViewerAuthority.crt -t /v1.0/c6c5e217089743da8ec3f1d256fa99c2/sensor/list -m "{}"
    - 注意:库存应为空[],因为我们尚未注册任何传感器
  10. 在终端2中,执行此命令以注册名为Temperature1的新传感器; 结果将显示在3号航站楼。
    mosquitto_pub -h localhost -p 18884 --cert clientCert.crt --key privkey.pem --cafile /var/lib/teamviewer-iot-agent/certs/TeamViewerAuthority.crt -t /v1.0/c6c5e217089743da8ec3f1d256fa99c2/sensor/create -m  "{ \"name\" : \"Temperature1\" }"
    - 注意:您可以在以下命令中更新名称值以自定义数据
    - 记录来自终端3输出的sensor Id 将在后续消息中使用。
  11. 在终端2中,执行此命令以注册Temperature1传感器的3个指标; 结果将显示在3号航站楼。
    mosquitto_pub -h localhost -p 18884 --cert clientCert.crt --key privkey.pem --cafile /var/lib/teamviewer-iot-agent/certs/TeamViewerAuthority.crt -t /v1.0/c6c5e217089743da8ec3f1d256fa99c2/sensor/d43862fd65ac4a0f9054cfe1749cad82/metric/create -m "{\"metrics\" : [{\"matchingId\" : \"1\", \"valueUnit\": \"NoSI.Dimensionless.PERCENT\", \"name\" : \"CPUUsage\" },{\"matchingId\" : \"2\",\"valueUnit\": \"NoSI.Dimensionless.PERCENT\", \"name\" :\"CPUIdle\" }, {\"matchingId\" : \"3\", \"valueType\" : \"integer\" , \"valueAnnotation\": \"goods per minute\", \"name\" : \"ShopFloor1\"}]}"
    - 注意:您可以在以下命令中更新valueUnit,valueType,valueAnnotation和name值以自定义数据
    - 记录终端3输出中每个度量标准的metricId,因为它将在后续消息中使用。
  12. 在终端2中,执行此命令以显示其中一个度量标准的详细信息,该度量标准将显示在终端3中。
    mosquitto_pub -h localhost -p 18884 --cert clientCert.crt --key privkey.pem --cafile /var/lib/teamviewer-iot-agent/certs/TeamViewerAuthority.crt -t /v1.0/c6c5e217089743da8ec3f1d256fa99c2/sensor/d43862fd65ac4a0f9054cfe1749cad82/metric/226ede40e42b458d88d09414fa44e7bf/describe -m "{}"
    - 注意:终端3中显示的度量标准详细信息应与您创建的度量标准一致
  13. 在终端2中,执行此命令以显示您的库存,该库存将显示在3号终端中。
    mosquitto_pub -h localhost -p 18884 --cert clientCert.crt --key privkey.pem --cafile /var/lib/teamviewer-iot-agent/certs/TeamViewerAuthority.crt -t /v1.0/c6c5e217089743da8ec3f1d256fa99c2/sensor/list -m "{}"
    - 注意:终端3中显示的清单应与您创建的传感器和指标一致
  14. 导航到TeamViewer IoT Cloud“度量标准”选项卡并验证传感器和度量标准信息是否与您在API中注册的信息一致。
  15. 在终端2中,执行此命令将Sensor的名称更新为Temperature2; 3号航站楼将显示已进行的更改。
    mosquitto_pub -h localhost -p 18884 --cert clientCert.crt --key privkey.pem --cafile /var/lib/teamviewer-iot-agent/certs/TeamViewerAuthority.crt -t /v1.0/c6c5e217089743da8ec3f1d256fa99c2/sensor/d43862fd65ac4a0f9054cfe1749cad82/update -m "{ \"name\" : \"Temperature2\" }"
    - 注意:您可以在以下命令中更新名称值以自定义数据
    - 导航到TeamViewer IoT Cloud“Metrics”选项卡并验证传感器名称是否已更新
  16. 在终端2中,执行此命令以显示您的库存,该库存将显示在3号终端中。
    mosquitto_pub -h localhost -p 18884 --cert clientCert.crt --key privkey.pem --cafile /var/lib/teamviewer-iot-agent/certs/TeamViewerAuthority.crt -t /v1.0/c6c5e217089743da8ec3f1d256fa99c2/sensor/list -m "{}"
    - 注意:传感器名称应显示更新的名称Temperature2。
  17. 在终端2中,执行此命令以从Sensor中删除指标
    mosquitto_pub -h localhost -p 18884 --cert clientCert.crt --key privkey.pem --cafile /var/lib/teamviewer-iot-agent/certs/TeamViewerAuthority.crt -t /v1.0/c6c5e217089743da8ec3f1d256fa99c2/sensor/d43862fd65ac4a0f9054cfe1749cad82/metric/delete -m "{\"metrics\": [{\"metricId\" : \"9712270f8fd04c2baab6a2409b3e4b9d\" }]}"
    - 注意:“9712270f8fd04c2baab6a2409b3e4b9d”是已删除指标的指标ID
  18. 在终端2中,执行此命令以显示您的库存,该库存将显示在终端3中并验证是否已删除度量标准
    mosquitto_pub -h localhost -p 18884 --cert clientCert.crt --key privkey.pem --cafile /var/lib/teamviewer-iot-agent/certs/TeamViewerAuthority.crt -t /v1.0/c6c5e217089743da8ec3f1d256fa99c2/sensor/list -m "{}"
    - 注意:终端3中显示的清单不应再显示已删除的指标ID
  19. 在终端2中,执行此命令以发送剩余的两个度量标准的数据值,终端3将显示值已成功更新
    mosquitto_pub -h localhost -p 18884 --cert clientCert.crt --key privkey.pem --cafile /var/lib/teamviewer-iot-agent/certs/TeamViewerAuthority.crt -t /v1.0/c6c5e217089743da8ec3f1d256fa99c2/sensor/d43862fd65ac4a0f9054cfe1749cad82/metric/pushValues -m "{ \"metrics\": [ {\"value\" : 21, \"metricId\" : \"226ede40e42b458d88d09414fa44e7bf\" }, {\"value\" : 215, \"metricId\" : \"520b4d8854454e0ea3a4f9a225afb862\" } ] }"
    - 注意:度量标准“226ede40e42b458d88d09414fa44e7bf”已更新为值21;
    度量标准“520b4d8854454e0ea3a4f9a225afb862”已更新为值215。
  20. 导航到TeamViewer IoT Cloud“度量标准”选项卡,并将设备的2个度量标准固定到仪表板。
    - 查看“仪表板”选项卡以查看您的两个小部件。 窗口小部件应显示针对每个度量标准在上一步中推送的数据点。

 

版本历史
修订号
4 / 4
上次更新时间:
‎10 九月 2019, 11:23 AM
更新依据:
 
标签 (2)
贡献者