如何从 IoT Edge 自定义模块中获取设备名称 (python)
How can I get a device name from within a IoT Edge Custom module (python)
摘要
当通过 python 代码请求时,我没有从设备获得预期的主机名;我得到一些容器 ID
背景
当运行下面的代码在python中Raspbian3:
import socket
print(socket.gethostname())
或:
import platform
platform.node()
...您将获得 运行 代码所在机器的主机名。
(这就是我所期望的)
当从自定义 IoT Edge 模块执行相同操作时,我认为容器会得到某种标识符?
如何在容器模块本身中获取容器 运行 所在系统的主机名?
解决方案
正如所建议的那样,设备 ID 和模块 ID 公开为环境变量:
IOTEDGE_DEVICEID 和 IOTEDGE_MODULEID.
所以现在在 python 中您可以执行以下操作:
DEVICEID = os.environ["IOTEDGE_DEVICEID"]
MODULEID = os.environ["IOTEDGE_MODULEID"]
然后在您的 (python) 代码中使用类似的变量。
有关类似问题,请参阅 here。简短回答:在您的自定义模块容器上执行 docker inspect
并查看可用的不同环境变量。其中之一是您的 Edge 设备的主机名。
摘要
当通过 python 代码请求时,我没有从设备获得预期的主机名;我得到一些容器 ID
背景
当运行下面的代码在python中Raspbian3:
import socket
print(socket.gethostname())
或:
import platform
platform.node()
...您将获得 运行 代码所在机器的主机名。 (这就是我所期望的)
当从自定义 IoT Edge 模块执行相同操作时,我认为容器会得到某种标识符?
如何在容器模块本身中获取容器 运行 所在系统的主机名?
解决方案
正如所建议的那样,设备 ID 和模块 ID 公开为环境变量: IOTEDGE_DEVICEID 和 IOTEDGE_MODULEID.
所以现在在 python 中您可以执行以下操作:
DEVICEID = os.environ["IOTEDGE_DEVICEID"]
MODULEID = os.environ["IOTEDGE_MODULEID"]
然后在您的 (python) 代码中使用类似的变量。
有关类似问题,请参阅 here。简短回答:在您的自定义模块容器上执行 docker inspect
并查看可用的不同环境变量。其中之一是您的 Edge 设备的主机名。