在开始将英特尔® Edison 开发板连接到 Azure 之前,您需要确保安装了最新的操作系统映像。 要确保这一点,请按照英特尔官方文档门户上的入门说明操作。 按照标准英特尔® Edison 设置说明操作后,您需要从您的机器上建立一个串行连接到您的设备。 向英特尔® Edison 开发板建立串行连接(命令行)后,接下来您可以按照以下说明安装 Azure 物联网软件开发套件。
开始之前...
- 确保您运行了 configure_edison --setup命令来设置开发板
- 确保英特尔® Edison 开发板通过本地 Wi-Fi 网络连接上线(应在 configure_edison 设置过程中发生)
cmake 注意事项
据微软准备 Linux 开发环境的说明(https://github.com/Azure/azure-iot-sdks/blob/master/c/doc/devbox_setup.md),使用 Azure 物联网软件开发套件需要 cmake 版本 3.0 或更高版本。
在英特尔® Edison 上安装 Git
Git 是一款广泛使用的分发版本控制工具,我们需要在开发板上安装 Git 来克隆 Azure 物联网软件开发套件并在本地构建它。 如要做到这一点,我们必须先添加包括 Git 的扩展软件包。 英特尔® Edison 的 Yocto Project Linux build 使用 opkg 管理器,该管理器默认情况下不包括 Git 支持。
- 首先,在您的英特尔® Edison 开发板命令行上,使用
vi
将以下命令行添加到您的 base-feed 中:$ vi /etc/opkg/base-feeds.conf
- 将以下命令行添加至 base-feeds.conf 文件:
src/gz all http://repo.opkg.net/edison/repo/all src/gz edison http://repo.opkg.net/edison/repo/edison src/gz core2-32 http://repo.opkg.net/edison/repo/core2-32
- 点击 esc退出,输入 SHIFT+:,然后输入
wq
,最后点击 Enter。 如果您对 vi 编辑不熟悉,请阅读此链接的内容。 - 接下来,进行更新并升级命令行:
$ opkg update 上的 opkg base-feed
- 将会出现下列信息:
将 Azure 物联网软件开发套件下载到您的英特尔® Edison 开发板上
- 在您的英特尔® Edison 开发板上,使用 Git 并直接使用以下命令克隆 Azure 软件开发套件库。 我们建议使用位于 /home/root:
$ opkg install git
$ git clone git@github.com:Azure/azure-iot-sdks.git
中的默认文件夹 - 系统可能会提示在设备中添加 RSA 密钥,请回复“是”。
备用部署方法
- 如果由于某种原因,您无法将 Azure 物联网软件开发套件直接克隆到到开发板上,您可以将库克隆到 PC / Mac / Linux 桌面上,然后通过网络使用 FileZilla或 SCP 将文件传输至您的英特尔® Edison 开发板上。
- 对于 FileZilla,可以在英特尔® Edison 上运行
wpa_cli status
来查找 IP 地址,然后使用 “sftp://your.ip.address”,使用密码 “root” 和英特尔® Edison 密码通过 FileZilla 建立 SFTP 连接。 完成后,您可以通过网络直接拖放文件。
在英特尔® Edison 开发板上构建 Azure 物联网软件开发套件
我们想要向自己证明已经成功构建了 Azure 物联网软件开发套件。 为此,我们将构建了一个基于软件开发套件的示例应用。 为此,我们需要更新示例 AMPQ 应用中的证书,以便与 Azure IoT Hub 应用相匹配。 当我们构建 Azure 物联网软件开发套件时,示例 C 应用默认自动构建,我们需要在构建软件开发套件时将证书添加到示例应用中,以便其在我们构建之后能够正常运行。
- 使用 vi 或其他编辑器按照以下方式编辑 "/c/iothub_client/samples/iothub_client_sample_amqp/iothub_client_sample_amqp.c":
- 使用如下信息 (static const char* ….) 更换 IoT Hub 连接,即 connectionString字符串占位符,当您完成后,结果应如以下连接字符串,括号中的是您的证书而非占位符。
- 重要提示:使用您的证书或示例更换括号中的项目无效。
static const char* connectionString = “HostName=[YOUR-HOST-NAME];CredentialType=SharedAccessKey;CredentialScope=Device;DeviceId=[YOUR-DEVICE-ID];SharedAccessKey=[YOUR-ACCESS-KEY];
- 在终端中,输入 /c/build_all/linux并执行以下步骤:
$ opkg install util-linux-libuuid-dev $ ./build_proton.sh $ ./build.sh
更新 ldconfig 高速缓存
当构建 Azure 物联网软件开发套件时,我们需要先构建名为 Qpid Proton的依赖性。 但是,我们需要先注册包含 ldconfig的结果库才能进一步测试和构建我们的 C 语言示例。 为此,我们需要先找到 Proton lib,然后将其复制到 Yocto 的 /lib 文件夹中。
- 通过运行以下终端命令将 libqpid-proton.so.2 添加到共享 lib 中:
$ find -name 'libqpid-proton.so.2'
将该命令调用的目录复制到剪切板上。 $ cp [directory_to_libqpid-proton.so.2] /lib
使用第一步中 find命令所得的结果替换 [directory_to_libqpid-proton.so.2]。$ ldconfig
这将自动更新高速缓存;它是一个单行命令。$ ldconfig -v | grep "libqpid-p*"
如果您正确完成操作,屏幕上将会列出 "libqpid-proton.so.2” 。- 现在我们已经将 Qpid Proton 添加到 ldcache 中,接下来我们将能够构建基于 Proton 的示例 C 项目:
- 返回: /c/iothub_client/samples/iothub_client_sample_amqp/iothub_client_sample_amqp/linux
- 运行 “make -f makefile.linux”
- 运行 “./iothub_client_sample_amqp"
- 结果应与如下一致:
# ./iothub_client_sample_amqp hub_client/samples/iothub_client_sample_amqp/linux# Starting the IoTHub client sample AMQP... IoTHubClient_SetNotificationCallback...successful. IoTHubClient_SendTelemetryAsync accepted data for transmission to IoT Hub. IoTHubClient_SendTelemetryAsync accepted data for transmission to IoT Hub. IoTHubClient_SendTelemetryAsync accepted data for transmission to IoT Hub. IoTHubClient_SendTelemetryAsync accepted data for transmission to IoT Hub. IoTHubClient_SendTelemetryAsync accepted data for transmission to IoT Hub. Press any key to exit the application. Confirmation[0] received for message tracking id = 0 with result = IOTHUB_CLIENT_CONFIRMATION_OK Confirmation[1] received for message tracking id = 1 with result = IOTHUB_CLIENT_CONFIRMATION_OK Confirmation[2] received for message tracking id = 2 with result = IOTHUB_CLIENT_CONFIRMATION_OK Confirmation[3] received for message tracking id = 3 with result = IOTHUB_CLIENT_CONFIRMATION_OK Confirmation[4] received for message tracking id = 4 with result = IOTHUB_CLIENT_CONFIRMATION_OK