云上树莓派(2):将传感器数据上传到 AWS IoT 并利用Kibana进行展示

云上树莓派(1):环境准备

云上树莓派(2):将传感器数据上传到AWS IoT 并利用Kibana进行展示

1. 传感器安装及配置

1.1 DHT22 安装

DHT22 是一款温度与湿度传感器,它有3个针脚,左边的第一个引脚(#1)为3-5V电源,第二个引脚(#2)连接到数据输入引脚,最右边的引脚(#4)接地。

而树莓派3B 一共有40个针脚(GPIO,General Purpose I/O Ports,通用输入/输出端口),只需要将传感器的3个引脚接入板子上的合适引脚即可。我的连接是 1 - 01,2 - 07, 4 - 09。注意 DHT22的数据引脚连接的GPIO编号为 07名称为 GPIO04。下面的代码中会用到。

1.2 简单测试

安装代码库:

git clonehttps://github.com/adafruit/Adafruit_Python_DHT.git
cd Adafruit_Python_DHT
sudo apt-get update
sudo apt-get install build-essential python-dev
sudo python setup.py install

简单的python测试代码:

import Adafruit_DHT as dht
import time

while True:
time.sleep(2.5)
h,t = dht.read_retry(dht.DHT22, 4) #这里的 4 就指的是 GPIO04
print ‘Temp = %.1f"C, Humidity = %.1f%%RH‘ % (t, h)

测试结果:

2. AWS IoT 实现

要实现的效果如下:

2.1 AWS IoT 配置

在 https://ap-southeast-1.console.aws.amazon.com/iot/home?region=ap-southeast-1#/thinghub 上做如下操作。

(1)创建 thing

(2)创建 thing 的证书,并下载

(3)创建 policy

policy 负责授权,上面的配置表示对所有资源都允许所有 aws iot 操作。

(4)将 policy 附加给第二步中创建的证书,将 thing 也附加给证书。

(5)创建一个 AWS ElasticSearch domain

(6)创建一条 rule,将树莓派传上来的数据导入 ElasticSearch

操作的具体配置:

几个配置项:

  • ID:ES 中每个文档的_id,这里使用自动生成的uuid
  • 索引:保存树莓派文档的索引,取名为 homepi,它是一个逻辑命名空间
  • 类型:索引下面的一个 type,表示对应树莓派的数据

2.2 树莓派中的配置

(1)安装 AWS IoT device python SDK

   git clone https://github.com/aws/aws-iot-device-sdk-python
   cd aws-iot-device-sdk-python/
   python setup.py install

(2)将 2.1 中下载到的四个证书上传到树莓派中

[email protected]:/home/pi/awsiot# ls -lt
total 16
-rw-r--r-- 1 pi pi 1758 Aug  6 10:26 VeriSign-Class3-Public-Primary-Certification-Authority-G5.pem
-rw-r--r-- 1 pi pi 1220 Aug  6 09:46 aec2731afd-certificate.pem.crt
-rw-r--r-- 1 pi pi 1679 Aug  6 09:46 aec2731afd-private.pem.key
-rw-r--r-- 1 pi pi  451 Aug  6 09:46 aec2731afd-public.pem.key

(3)编写代码

import RPi.GPIO as GPIO
import Adafruit_DHT as dht
from AWSIoTPythonSDK.MQTTLib import AWSIoTMQTTClient
from time import sleep
from datetime import date, datetime

# initialize GPIO
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.cleanup()

# AWS IoT certificate based connection
myMQTTClient = AWSIoTMQTTClient("123afhlss411")
myMQTTClient.configureEndpoint("*************.iot.ap-southeast-1.amazonaws.com", 8883)
myMQTTClient.configureCredentials("/home/pi/awsiot/VeriSign-Class3-Public-Primary-Certification-Authority-G5.pem", "/home/pi/awsiot/aec2731afd-private.pem.key", "/home/pi/awsiot/aec2731afd-certificate.pem.crt")
myMQTTClient.configureOfflinePublishQueueing(-1)  # Infinite offline Publish queueing
myMQTTClient.configureDrainingFrequency(2)  # Draining: 2 Hz
myMQTTClient.configureConnectDisconnectTimeout(10)  # 10 sec
myMQTTClient.configureMQTTOperationTimeout(5)  # 5 sec

#connect and publish
myMQTTClient.connect()
myMQTTClient.publish("homepi/dht22", "connected", 0)

#loop and publish sensor reading
while 1:
    now = datetime.utcnow()
    now_str = now.strftime(‘%Y-%m-%dT%H:%M:%SZ‘) #e.g. 2016-04-18T06:12:25.877Z
    h,t = dht.read_retry(dht.DHT22, 4) #07 引脚的名称是 GPIO04
    print ‘Temp = %.1f"C, Humidity = %.1f%%RH‘ % (t, h)
    payload = ‘{ "timestamp": "‘ + now_str + ‘","temperature": ‘ + "{:.2f}".format(t)+ ‘,"humidity": ‘+ "{:.2f}".format(h) + ‘ }‘
    print payload
    myMQTTClient.publish("homepi/dht22", payload, 0)
    sleep(10)

代码很简单,稍微解释一下:

  • 利用 AWS IoT device sdk 创建和 AWS IoT Core 的 MQTT 连接
  • 利用 DHT22 sdk 每隔10秒从传感器获取温度和湿度数据
  • 利用 AWS IoT device sdk 将数据发到 MQTT topic

(4)运行代码,在 AWS IoT 中进行测试,能够收到传上来的树莓派传感器数据

(5)在 ElasticSearch 中也能看到数据统计

2.3 配置 Kibana

AWS ElasticSearch 默认内置了一个 Kibana,可以在 ES 的界面上看到其链接。打开该链接,然后做以下配置:

(1)配置 index pattern

配置的目的是让 Kibana 定位到 ES 中的某个或者某几个 index。这里就是用 homepi 这个index。

(2)配置 Virsualize,然后就可以看到图了

话说最近家里气温一直都在30度以上,本来以为晚上会低点的。湿度倒是有一些变化。

3. 一点感受

  • github 是个好地方,大家分享的东西避免了大量重复造轮子的劳动
  • AWS free tier 是个好东西,做一些PoC测试基本上不用花钱,但是要注意得看清楚免费提供的资源的内容,否则钱不小心就花出去了,另外就是定期看看账单
  • AWS 文档实在太丰富了,一个文件动辄两三百页
  • AWS IoT 平台应该归类为 应用支持平台AEP(Application Enablement Platform),提供了设备接入(MQTT)、与AWS服务对接、数据分析、安全等内容。
  • AWS ElasticSearch 功能感觉还不是太全面,界面上能做的事情不多,权限管理有些复杂
  • 动手做,做了之后再分享,是一件蛮有意思的事情

参考链接:

原文地址:https://www.cnblogs.com/sammyliu/p/9441096.html

时间: 2024-07-31 00:01:37

云上树莓派(2):将传感器数据上传到 AWS IoT 并利用Kibana进行展示的相关文章

【AllJoyn专题】基于AllJoyn和Yeelink的传感器数据上传与指令下行的研究

笔者接触高通物联网框架AllJoyn不太久,但确是被深深地吸引了.在我看来,促进我深入学习的原因有三点:一.AllJoyn开源,对开源的软硬件总会有种莫名的喜爱,尽管也许不会都深入下去:二.顺应潮流,物联网虽远未普及,但已是大势所趋,高通公司在领域布局,致力于打造舒适高效的智能家居场景,推出AllJoyn软件框架,适应了发展趋势:三.文档丰富,开源软件的使用,特别是框架,若没有文档相助,相信没有多少开发者愿意尝试,AllJoyn在这方面做得不错,日后还需做得更好.当然啦,也有些额外原因,包括高通

信息提示板RS232,RS485传感器数据上传到服务器

方案需求 为了解决日益严重的交通拥挤情况,并减缓地面交通对环境的影响,城市已经建立先进的交通管理中心来整合通讯网络,道路可变信息板(CMS)就是其中之一.道路可变信息板是一种智能交通系统,可以提供各种交通信息,例如意外事故.封路.建设延误.限速,以及其他相关交通信息.CMS的通信接口可以是串口或以 太网,如果将所有的CMS用有线的方式整合进一个庞大的交通网络中,并进行安装和维护,是需要大量的成本消耗和时间消耗. 系统部署 由于现有的网络已经就位,交通部门需要一个可以满足以下要求的解决方案: ★

魅族大数据上云之路

背景介绍以及总体规划 首先我先介绍一下魅族大数据上云的背景,即我们为什么要上云? 在开始之前我们默认今天参与直播的各位同学对Hadoop相关技术和docker都有一定的了解,另外以下提到Hadoop是泛指目前魅族大数据使用的Hadoop生态圈技术,资源除特别说明则泛指存储资源.计算资源和网络资源的总和. 我们先来看一下魅族大数据在没有上云的时候所遇到的主要问题有以下几个方面: 1.资源隔离不彻底 由于一些历史问题,我们跑在Hadoop上的任务脚本质量参差不齐,导致经常有一些异常任务会短时间吃掉所

数据进入MaxCompute的N种方式,大数据实战Demo系统数据上云实践

摘要: 2018"MaxCompute开发者交流"钉钉群直播分享,由阿里云数据技术专家彬甫带来以"MaxCompute数据仓库数据转换实践"为题的演讲.本文首先介绍了MaxCompute的数据架构和流程,其次介绍了ETL算法中的三大算法,即更新插入算法.直接加载算法.全量历史表算法,再次介绍了在OLTP系统中怎样处理NULL值,最后对ETL相关知识进行了详细地介绍. 2018"MaxCompute开发者交流"钉钉群直播分享,由阿里云数据技术专家彬

raspberry pi 上使用 MQ-7一氧化碳传感器模块

MQ-7一氧化碳传感器模块介绍 简要说明: 一. 尺寸:32mm X22mm X27mm   长X宽X高 二. 主要芯片:LM393.MQ-7气体传感器 三. 工作电压:直流5伏 四. 特点: 1.具有信号输出指示. 2.双路信号输出(模拟量输出及TTL电平输出) 3.TTL输出有效信号为低电平.(当输出低电平时信号灯亮,可直接接单片机) 4.模拟量输出0~5V电压,浓度越高电压越高. 5.对一氧化碳具有很高的灵敏度和良好的选择性. 6.具有长期的使用寿命和可靠的稳定性 五.应用: 用于家庭.环

C#工业物联网和集成系统解决方案的技术路线(数据源、数据采集、数据上传与接收、ActiveMQ、Mongodb、WebApi、手机App)

目       录 工业物联网和集成系统解决方案的技术路线... 1 前言... 1 第一章           系统架构... 3 1.1           硬件构架图... 3 1.2           组件构架图... 4 第二章           技术选型与介绍... 5 2.1           开发环境... 5 2.2           数据源... 5 2.3           数据采集... 5 2.4           数据上传服务... 6 2.5      

绿色 | 企业:上云将会是常态,不上云是例外

在人工智能技术与实体经济结合日益紧密的今天,云计算等技术的潜力正被各行业的有识之士挖掘出来.目前,云计算正以其特有的优势给我国内各领域的建设提供有力的技术支撑.为提升相关产业发展的质量和水平,许多企业已经开始探索将云计算等信息技术用于产业发展的新途径.企业上云三问:①为什么上云?对于中国企业而言,正在进入互联网和数字化转型阶段,对云计算的依赖程度不断提升,云计算为中小公司提高企业信息化应用水平,降低企业信息系统构建成本,被得到更多的认可.为给企业上云营造良好的环境,日前,工业和信息化部印发了<推

MaxCompute在高德大数据上的应用

2019年1月18日,由阿里巴巴 MaxCompute 开发者社区和阿里云栖社区联合主办的"阿里云栖开发者沙龙大数据技术专场"走近北京联合大学,本次技术沙龙上,高德数据技术专家苗翌辰为大家分享了高德如何应用MaxCompute来管理数据架构,开发易用.高效以及弹性的高德应用,为用户提供更优质的出行服务. 以下内容根据演讲视频以及PPT整理而成 一.高德的业务和数据 地图描绘需要很多支撑数据,包括现实中的道路信息.路形以及路况等.下面的轨迹热力图展示了高德地图显示的北京联合大学的周边路况

个人永久性免费-Excel催化剂功能第20波-Excel与Sqlserver零门槛交互-数据上传篇

Excel作为众多数据存储的交换介质,在不同的系统内的数据很少可以很连贯地进行整合分析,一般的业务系统都会提供导出Excel作为标配功能供用户使用系统内生成的数据. 此时最大的问题是,Excel很维去成为各个数据源的整合方,其数据存储能力和运算能力一直是众多深度Excel用户们一大头痛的事情,当数据量一大,做什么操作都会慢下来. 今天Excel催化剂将给大家带来全新的解决方案,Excel与Sqlserver深度集成,在Excel上的数据源能轻松上传至Sqlserver中,实现以Sqlserver