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

Python 中的访问控制

starIconstarIconstarIconstarIconstarIcon

5.00/5 (4投票s)

2017年4月11日

CPOL

7分钟阅读

viewsIcon

17677

此访问控制系统应用程序是使用 Intel® IoT Developer Kit、Intel® Edison 板、Intel® IoT Gateway、云平台、API 和其他技术创建的 Intel® 物联网 (IoT) 操作指南代码示例系列的一部分。

获取新的 Intel® IoT Developer Kit,这是一个完整的硬件和软件解决方案,允许开发人员使用 Intel® Galileo 和 Intel® Edison 板创建令人兴奋的新解决方案。访问 Intel® 物联网开发者专区

引言

此访问控制系统应用程序是使用 Intel® IoT Developer Kit、Intel® Edison 板、Intel® IoT Gateway、云平台、API 和其他技术创建的 Intel® 物联网 (IoT) 操作指南代码示例系列的一部分。

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

  • 连接 Intel® Edison 板或 Intel® IoT 网关,这些计算平台专为原型设计和生产物联网和可穿戴计算产品而设计。
  • 使用 Intel® IoT Developer Kit 的 MRAA 和 UPM 与 Intel® Edison 板或 Arduino 101*(美国以外地区品牌为 Genuino 101*)的 IO 和传感器存储库进行交互,这是一个完整的硬件和软件解决方案,可帮助开发人员探索物联网并实施创新项目。
  • 设置一个 Web 应用程序服务器,允许用户输入访问码以禁用警报系统,并使用 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 协议的不同云机对机消息服务。

它是什么

使用 Intel® Edison 板或 Intel® IoT Gateway,此项目允许您创建一个智能访问控制系统,该系统

  • 监控运动传感器以检测何时有人出现在需要授权的区域。
  • 可以通过内置的 Web 界面使用您的手机进行访问以禁用警报。
  • 使用基于云的数据存储跟踪访问情况。

工作原理

此访问控制系统提供以下用户流程:

  1. 无源红外 (PIR) 运动传感器用于检测运动。
  2. 用户触发运动检测器,并在 30 秒内输入正确的密码。用户有 30 秒时间输入正确的密码。
  3. 如果用户未能在规定时间内输入密码,警报将响起。
  4. 如果用户输入了正确的密码,系统将等待 30 秒,然后才允许用户通过。

此外,还会记录各种事件(looking-for-motionmotion-detectedinvalid-code 等)。

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

硬件要求

此示例可与 Seeed Studio* 的 Grove* Transportation and Safety Kit 或 DFRobot* 的 Intel® Edison/Galileo 入门套件一起使用。

Grove* Transportation and Safety Kit,包含

  1. Intel® Edison 配备 Arduino 兼容的 breakout 板或 Intel® IoT Gateway 配备 Intel® Arduino 101
  2. Grove* PIR 运动传感器
  3. Grove* RGB LCD

DFRobot* 适用于 Intel® Edison 的入门套件,包含

  1. Intel® Edison 配备 Arduino 兼容的 breakout 板或 Intel® IoT Gateway 配备 Intel® Arduino 101
  2. PIR(运动)传感器.
  3. LCD 键盘 Shield

软件要求

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

连接 Grove* 传感器

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

  1. 将 Grove* 电缆的一端插入 Grove* PIR Motion Sensor,另一端连接到 Grove* Shield 上的 D4 端口。

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

连接 DFRobot* 传感器

您需要一个 LCD Display Shield 连接到 Arduino*-兼容的 breakout 板,以便将所有 DFRobot* 设备插入 LCD Display Shield。

  1. 将 DFRobot* 电缆的一端插入 PIR(运动)传感器,另一端连接到 LCD Display Shield 上的 A2 端口。

手动设置 Intel® Edison

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

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

$ opkg install git

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

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

$ pip install --upgrade pip setuptools

运行以下命令将 Intel 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_access_control&subdirectory=access-control/python"

pip 命令将安装所需的 Python 依赖项,将示例的源代码保存在 ~/python/examples/iot-access-control/ 中,并将包链接到全局 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_access_control&subdirectory=access-control/python"    

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

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

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

数据存储服务器设置

可选地,您可以将此示例程序生成的数据存储在后端数据库中,该数据库使用 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_access_control/access-control/python/iot_access_control/config.json

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

{
  "kit": "dfrobot",
  "CODE": "4321"
}

要为 Arduino 101 配置示例,请在 config.json 中添加一个值为 firmataPLATFORM 键,如下所示

{
  "kit": "dfrobot",
  "CODE": "4321",
  "PLATFORM": "firmata"
}

要为可选的 Microsoft Azure*、IBM Bluemix* 或 AWS* 数据存储配置示例,请在 config.json 文件中的“CODE”键下方添加 SERVERAUTH_TOKEN 键,如下所示

{
  "kit": "grove",
  "CODE": "4321",
  "SERVER": "http://intel-examples.azurewebsites.net/logger/access-control",
  "AUTH_TOKEN": "s3cr3t"
}

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

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

运行程序

一旦按照上述详细说明安装和配置了程序,您就可以通过在主板的 SSH 会话中运行以下命令来执行该程序

$ python -m iot_access_control

禁用警报

警报是通过在示例程序运行时直接从 Intel® Edison 板提供的单页 Web 界面禁用。

Web 服务器在端口 3000 上运行,因此如果英特尔® Edison 开发板通过 Wi-Fi* 连接到 192.168.1.13,那么如果您在同一网络上,要浏览的地址是 http://192.168.1.13:3000

确定 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.