65.9K
CodeProject 正在变化。 阅读更多。
Home

Python 植物照明系统

starIconstarIconstarIconstarIconstarIcon

5.00/5 (1投票)

2017年4月11日

CPOL

8分钟阅读

viewsIcon

9985

此植物照明系统应用程序是 Intel® 物联网 (IoT) 代码示例练习系列的一部分,该系列使用了 Intel® IoT Developer Kit、Intel® Edison 板、Intel® IoT Gateway、云平台、API 及其他技术。

获取新的 Intel® IoT Developer Kit,这是一个完整的硬件和软件解决方案,可让开发人员使用 Intel® Galileo 和 Intel® Edison 板创建激动人心的新解决方案。请访问 Intel® 物联网开发者中心

引言

此植物照明系统应用程序是 Intel® 物联网 (IoT) 代码示例练习系列的一部分,该系列使用了 Intel® IoT Developer Kit、Intel® Edison 板、Intel® IoT Gateway、云平台、API 及其他技术。

通过此练习,开发人员将学习如何:

  • 连接 Intel® Edison 板或 Intel® IoT 网关,这些计算平台专为原型设计和生产物联网和可穿戴计算产品而设计。
  • 使用 Intel® IoT Developer Kit 中的 MRAA 和 UPM 与 Intel® Edison 板或 Arduino 101*(美国以外地区品牌为 Genuino 101*)板的 IO 和传感器库进行接口,这是一个完整的硬件和软件解决方案,可帮助开发人员探索物联网并实施创新项目。
  • 使用 Microsoft Azure* 的 Azure Redis Cache*、IBM Bluemix* 的 Redis Store* 或 Amazon Web Services (AWS)* 的 Redis* ElastiCache* 来存储植物照明系统数据,这些都是用于连接物联网解决方案的各种云服务,包括数据分析、机器学习以及简化将传感器连接到云并快速启动物联网项目的各种生产力工具。
  • 使用 Microsoft Azure* 的 IoT Hub、IBM Bluemix* 的 IoT 或 Amazon Web Services (AWS)* 的 IoT 设置基于行业标准 MQTT 协议的 MQTT 服务器,这些是各种云机对机消息服务。
  • 调用 Twilio* API 的服务以发送短信。

它是什么

使用 Intel® Edison 板或 Intel® IoT Gateway,该项目可让您创建一个自动植物照明监控系统,该系统

  • 使用光传感器根据可配置的计划确定独立的自动照明系统是开启还是关闭。
  • 可以通过内置的 Web 界面使用手机访问,以设置照明时间。
  • 使用连接的湿度传感器监控水位。
  • 使用基于云的数据存储记录照明系统的事件。
  • 如果系统未能按预期工作,则会发送短信通知收件人。

工作原理

该系统允许通过 Intel® Edison 板或 Intel® IoT Gateway 直接提供的网页来设置照明计划,您可以使用手机进行操作。

如果照明应该开启,但光传感器未检测到任何光,则通过 Twilio* 发送短信警报到指定号码。

它还会在定期间隔自动检查和记录湿度传感器数据。

可选地,所有数据都可以使用 Intel® IoT Examples Datastore 或在您自己的 Microsoft Azure*、IBM Bluemix* 或 AWS* 账户中运行的 MQTT 服务器来存储。

硬件要求

此示例可与 Seeed Studio 的 Grove* Indoor Environment Kit 或 DFRobot* Starter Kit for Intel® Edison 板以及一些额外的 DFRobot* 部件一起使用。

Grove* Indoor Environment Kit,包含

  1. Intel® Edison(带 Arduino* 分线板)或 Intel® IoT Gateway(带 Arduino 101*,美国以外地区品牌为 Genuino 101*)
  2. Grove* 湿度传感器
  3. Grove* 光传感器
  4. Grove* RGB LCD

DFRobot* Starter Kit for Intel® Edison,包含

  1. Intel® Edison 板(带 Arduino* 分线板)或 Intel® IoT Gateway(带 Arduino 101*,美国以外地区品牌为 Genuino 101*)
  2. 湿度传感器.
  3. 模拟环境光传感器
  4. LCD 键盘 Shield

软件要求

  1. 微软 Azure*、IBM Bluemix* 或 AWS* 账户(可选)
  2. Twilio* 账户(可选)

连接 Grove* 传感器

您需要将 Grove* Shield 连接到兼容 Arduino* 的分线板,以便将所有 Grove* 设备插入 Grove* Shield。确保 Grove* Shield 上的微型 VCC 开关设置为 5V

  1. 将 Grove 电缆的一端插入 Grove* 光传感器,另一端连接到 Grove* Shield 上的 A2 端口。

  2. 将 Grove 电缆的一端插入 Grove* 湿度传感器,另一端连接到 Grove* Shield 上的 A3 端口。

  3. 将 Grove 电缆的一端插入 Grove* RGB LCD,另一端连接到 Grove* Shield 上的任何 I2C 端口。

连接 DFRobot* 传感器

您需要将 LCD Keypad Shield 连接到与 Arduino* 兼容的 breakout 板,才能将所有 DFRobot* 设备插入 LCD Keypad Shield。

  1. 将 DFRobot* 电缆的一端插入模拟环境光传感器,另一端连接到 LCD 键盘 Shield 上的 A1 端口。

  2. 将 DFRobot* 电缆的一端插入湿度传感器,另一端连接到 LCD 键盘 Shield 上的 A2 端口。

英特尔® Edison 开发板设置

如果您在 Intel® Edison 板上运行此代码,则需要通过建立 SSH 会话并运行以下命令来安装一些依赖项。

要在 Intel® Edison 板上安装 Git*(如果您还没有的话),请建立与该板的 SSH 连接并运行以下命令

$ opkg install git

获取此示例在 Intel® Edison 板上执行所需的 Python* 包

运行以下命令更新到最新版本的 Python 包安装程序

$ pip install --upgrade pip setuptools

运行以下命令更新到最新版本的 MRAA 和 UPM 库

$ echo "src mraa-upm http://iotdk.intel.com/repos/3.5/intelgalactic/opkg/i586" > /etc/opkg/mraa-upm.conf
$ opkg update
$ opkg install mraa upm

依赖项安装完成后,您可以使用以下命令安装示例本身

$ pip install --src ~/python/examples/ -e "git+https://github.com/intel-iot-devkit/how-to-code-samples.git#egg=iot_plant_lighting_system&subdirectory=plant-lighting-system/python"

pip 命令将安装所需的 Python 依赖项,将示例的源代码保存在 ~/python/examples/iot_plant_lighting_system/ 中,并将该包链接到全局 Python site-packages 文件夹。

Intel® IoT 网关设置

您可以使用连接到 Arduino 101*(美国以外地区品牌为 Genuino 101*)板的 Intel® IoT Gateway 来运行此示例。

请确保您的 Intel® IoT 网关已使用 Intel® IoT 网关软件套件设置,请按照此处网站上的说明操作

https://software.intel.com/en-us/getting-started-with-intel-iot-gateways-and-iotdk

要安装和运行该示例,您需要安装 Python setuptools。这很容易做到,只需运行

$ wget https://bootstrap.pypa.io/ez_setup.py -O - | python

安装完这些依赖项后,您可以使用以下命令安装示例本身

$ pip install --src ~/python/examples/ -e "git+https://github.com/intel-iot-devkit/how-to-code-samples.git#egg=iot_plant_lighting_system&subdirectory=plant-lighting-system/python"    

pip 命令将安装所需的 Python 依赖项,将示例的源代码保存在 ~/python/examples/iot_plant_lighting_system/ 中,并将该包链接到全局 Python site-packages 文件夹。

Arduino 101 需要安装 Firmata* 固件。如果您在网关上安装了 IMRAA,这将自动完成。否则,请手动将 StandardFirmata 或 ConfigurableFirmata 草图安装到您的 Arduino 101。

您还需要配置示例中的 config.json 以使用 Arduino 101。请参阅下面的“配置示例”部分。

Twilio* API 密钥

要选择性地发送短信,您需要注册一个账户并从 Twilio* 网站获取 API 密钥

https://www.twilio.com

您必须先获取 Twilio API 密钥才能发送短信。您仍然可以运行该示例,但无法发送短信。

数据存储服务器设置

可选地,您可以将此示例程序生成的数据存储在后端数据库中,该数据库使用 Microsoft Azure*、IBM Bluemix* 或 AWS* 部署,以及 Node.js* 和 Redis* 数据存储。

有关如何设置自己的云数据服务器的信息,请访问:

https://github.com/intel-iot-devkit/intel-iot-examples-datastore

MQTT 服务器设置

您还可以选择使用 MQTT(一种机对机消息传递服务器)来存储此示例程序生成的数据。您可以使用 MQTT 连接到 Microsoft Azure*、IBM Bluemix* 或 AWS*。

有关如何连接到您自己的云 MQTT 消息服务器的信息,请访问

https://github.com/intel-iot-devkit/intel-iot-examples-mqtt

配置示例

当示例通过 pip 安装时,保存示例配置的 config.json 文件位于 ~/python/examples/iot_plant_lighting_system/plant-lighting-system/python/iot_plant_lighting_system/config.json

要为 Grove* 套件配置示例,只需将 config.json 中的 kit 键设置为 grove。要为 DFRobot* 套件配置示例,请将 config.json 中的 kit 键更改为 dfrobot,如下所示:

{
  "kit": "dfrobot"
}

要为 Arduino 101*(美国以外地区品牌为 Genuino 101*)配置示例,请在 config.json 中添加一个值为 firmataplatform 键,如下所示:

{
  "kit": "grove",
  "platform": "firmata"
}

要配置发送可选短信的示例,请从 Twilio* 网站获取 API 密钥(如上所述),然后将 TWILIO_ACCT_SIDTWILIO_AUTH_TOKEN 键添加到 config.json 文件中,如下所示:

{
  "kit": "grove",
  "TWILIO_ACCT_SID": "YOURAPIKEY",
  "TWILIO_AUTH_TOKEN": "YOURTOKEN"
}

要同时为短信和 Microsoft Azure*、IBM Bluemix* 或 AWS* 数据存储配置示例,请将 TWILIO_ACCT_SIDTWILIO_AUTH_TOKENSERVERAUTH_TOKEN 键添加到 config.json 文件中,如下所示:

{
  "kit": "grove",
  "TWILIO_ACCT_SID": "YOURAPIKEY",
  "TWILIO_AUTH_TOKEN": "YOURTOKEN",
  "SERVER": "http://Intel-examples.azurewebsites.net/logger/lighting-system",
  "AUTH_TOKEN": "s3cr3t"
}

有关如何为可选的 Microsoft Azure*、IBM Bluemix* 或 AWS* MQTT 消息传递服务器配置示例的信息,请访问:

https://github.com/intel-iot-devkit/intel-iot-examples-mqtt/

运行程序

示例通过 pip 安装后,您可以通过在与板的 SSH 会话中运行以下命令来运行程序:

$ python -m iot_plant_lighting_system

确定 Intel® Edison 板的 IP 地址

您可以通过运行以下命令来确定 Intel® Edison 板连接到的 IP 地址

ip addr show | grep wlan

您将看到类似以下的输出:

3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
    inet 192.168.1.13/24 brd 192.168.1.255 scope global wlan0

IP 地址显示在 inet 旁边。在上例中,IP 地址为 192.168.1.13

重要提示:本软件为示例软件。它并非为用于任何医疗、救生或生命维持系统、运输系统、核系统或任何其他关键任务应用而设计或 intended,在这些应用中,系统的故障可能导致严重伤害或死亡。该软件可能未经完全测试,可能包含错误或缺陷;它可能并非 intended 或适用于商业发布。该软件未获得任何监管批准,因此在某些国家或地区可能未经认证使用。

© . All rights reserved.