IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> Capgemini 如何利用 Amazon IoT 通过农业洞察监控农田 -> 正文阅读

[嵌入式]Capgemini 如何利用 Amazon IoT 通过农业洞察监控农田

预计到 2050 年,全球人口将达到 100 亿左右。为了满足这种增长在粮食和营养方面的指数级需求,我们现有的耕作方法必须在有限的可用土地供应范围内提高产量。

目前提高农业产量的方法包括使用化学肥料和广泛使用杀虫剂。这些方法的优点是增产,但代价是会对整个环境造成不利影响:破坏生物多样性,污染地下水、土壤及其肥力,甚至空气。

?????09.09-09.14亚马逊云科技中国峰会线上峰会正在火热进行中!想要了解更多亚马逊云科技最新技术发布和实践创新,点击图片报名吧~

Capgemini??亚马逊云科技高级咨询合作伙伴和托管服务提供商 (MSP),拥有一支遍及 40 多个国家/地区的由 220,000 人组成的多元文化团队。本博文中概述的 Capgemini 解决方案提出了一种替代方法,使用技术来管理水分以实现最优植物生长。

  • Capgemini

    https://www.capgemini.com/

  • 亚马逊云科技高级咨询合作伙伴

    https://partners.amazonaws.com/partners/001E000000Qcj4uIAB/Capgemini

Capgemini 信奉可持续 IT 解决方案,这是指应用 IT 实践和技术惠及客户和其他利益攸关方,确保经济、社会和环境可持续性支柱的长期福祉。

  • 可持续 IT 解决方案

    https://www.linkedin.com/pulse/sustainability-ict-time-take-seriously-gunnar-menzel/?articleId=6688366368653377536

Capgemini 的解决方案被称为“Smart Hub Cropping”,它可以检查农田的降水量,结合政府的天气数据,并分析农业数据,为农民提供切实可行的见解和灌溉流程自动化。所有这些都与农民最需要的提高作物产量的体验相一致。

为了实现这一成果,亚马逊云科技在物联网 (IoT)、监控、洞察、集成和机器学习 (ML) 等领域推出了 Capgemini 云技术。

解决方案概览

Capgemini 的 Smart Hub Crop 解决方案为农民提供了一个界面,可显示有关农场中田地水分含量的数据和见解。这与侧重于预测降水量的天气数据以及印度农业合作与农民福利司提供的数据相结合,详述了全国收获的作物量和作物种类。

  • 农业合作与农民福利司

    https://agricoop.nic.in/en

此组合数据集不仅帮助农民了解要种植哪类作物以及在农场的哪个区域种植,还有助于他们维持作物以确保生产性增长。

农民通过移动应用程序注册并进行身份验证来访问他们的数据集、查看有关田地的数据、下周的天气预报数据以及查看农田水分含量的图形表示。

Smart Hub Crop 包含以下内容:

  • 部署到农场的湿度传感器和支持 GPS 的 (IoT) 设备。

  • 亚马逊云科技上的中央监控和分析平台。

  • 用于在亚马逊云科技上获得洞察和互动的移动应用程序。

图 1 – 高级解决方案示意图

该解决方案使用与?Arduino?电子设备连接的湿度传感器。这提供了通过互连 GPS 接口向 Smart Hub Crop 核心发送含水量数据的功能。

  • Arduino

    https://www.arduino.cc/en/Guide/Introduction

Amazon IoT 设备被设置为定期将数据发送到 Smart Hub Crop 服务,以便通过水分算法与农民田地的土壤类型一起处理。之后,将这些数据以及收到的第三方环境数据存储在 Smart Hub Crop 数据库中。

这些信息通过网页版或手机版移动应用程序提供给农民。

图 2 – 高级架构示意图

亚马逊云科技工具箱

Capgemini 使用?React Native(一种开源移动应用程序框架)和?Amazon SDK for JavaScript?开发了 Smart Hub Crop 解决方案。React 基元通过 Amazon SDK 呈现用户界面 (UI) 和应用程序,并使用相同的原生平台 API 与亚马逊云科技服务进行交互。

  • React Native

    https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/getting-started-react-native.html

  • Amazon SDK for JavaScript

    https://aws.amazon.com/sdk-for-javascript/

终端用户(在本例中为农民)使用移动应用程序界面作为解决方案的一部分。用户使用?Amazon Cognito?通过 React 应用程序界面进行身份验证并接收 JWT 令牌。此令牌用于授权从应用程序对?Amazon AppSync?的 API 调用。

  • Amazon Cognito?

    https://aws.amazon.com/cognito/

  • Amazon AppSync?

    https://aws.amazon.com/appsync/

经过身份验证后,用户将从?Amazon DynamoDB?表中检索信息,该表用于保存位于农民田间的 IoT 设备提供的数据。

  • Amazon DynamoDB?

    https://aws.amazon.com/dynamodb/

Smart Hub Crop 使用以下亚马逊云科技服务:

  • Amazon AppSync?是一项使用 GraphQL 的托管式服务,它允许您创建灵活的 API 来安全地访问、操作和组合来自一个或多个数据源的数据,从而让应用程序轻松获取所需的数据。

  • Amazon Amplify Framework?可让开发人员轻松创建、配置和实施由亚马逊云科技提供支持的可扩展移动和 Web 应用程序,并与之交互。Amazon Amplify 可无缝配置和管理您的移动后端,并提供一个简单的框架,轻松将后端与 iOS、Android、Web 和 React Native 前端集成。Amazon Amplify 还可以自动执行前端和后端的应用程序发布流程,从而允许您交付。

  • Amazon Amplify CLI?是一个统一的工具链,用于为您的应用程序创建、集成和管理亚马逊云科技服务。

  • Amazon Cognito?是一项用户管理服务,对用户的身份验证和授权提供丰富的支持。您可以在 Amazon Cognito 中或通过其他联合第三方身份提供商 (IdP) 管理这些用户。

  • Amazon DynamoDB?是一个键值和文档数据库,可以任何规模提供单个位毫秒级性能。

  • Amazon IoT Core?提供将 Amazon IoT 设备连接到其他设备和亚马逊云科技服务的云服务。

  • Amazon AppSync?

    https://aws.amazon.com/appsync/

  • Amazon Amplify Framework?

    https://docs.amplify.aws/

  • Amazon Amplify CLI?

    https://aws-amplify.github.io/docs/cli-toolchain/quickstart

  • Amazon Cognito?

    https://aws.amazon.com/cognito/

  • Amazon DynamoDB?

    https://aws.amazon.com/dynamodb/

  • Amazon IoT Core?

    https://docs.aws.amazon.com/iot/index.html

构建解决方案

要实施 Smart Hub Crop 解决方案,请完成下列步骤。

第 1 步:初始化项目并设置 Amazon Amplify

首先,您需要安装并配置?Amazon 命令行界面 (CLI)Amazon Amplify CLI?

和?NPM

  • Amazon 命令行界面 (CLI)

    https://aws.amazon.com/cli/

  • Amazon Amplify CLI?

    https://aws-amplify.github.io/docs/cli-toolchain/quickstart

  • NPM

    https://www.npmjs.com/get-npm

要创建 React 项目,请运行以下命令:

npx?create-react-app?farmhub-demo

此命令会创建一个名为?farmhub-demo?的文件夹,其中包含空的 React 应用程序。

按照以下说明在 React 应用程序中初始化 Amazon Amplify 项目:

  • 通过键入 cd farmhub-demo 切换到项目目录。

  • 通过运行以下命令并回答提示来初始化 Amazon Amplify 项目:

amplify?init
  • 输入项目的名称:farmhubdemo

  • 输入环境的名称:dev

  • 选择默认编辑器:Visual Studio Code(或您选择的编辑器)

  • 选择您要构建的应用程序的类型:JavaScript

  • 您在使用什么 JavaScript 框架:React

  • 源目录路径:src

  • 分发目录路径:build

  • “构建”命令:npm run-script build

  • “启动”命令:npm run-script start

  • 选择要使用的身份验证方法:Amazon 配置文件/Amazon 密钥

amplify init 命令在 React 站点内初始化了一个新项目,并使用 Amazon CloudFormation 堆栈在云中部署资源。

您会在项目的根目录中看到一个名为 Amazon Amplify 的新文件夹,还会在 src 目录中看到一个名为 aws-exports.js 的文件。此文件夹和文件用于保存 Amazon Amplify 项目配置。

第 2 步:为 Amazon Amplify 项目配置身份验证

要向应用程序添加身份验证,请使用以下命令:

amplify?add?auth
  • 您想使用默认身份验证和安全配置吗??默认配置

  • 您希望用户在使用 Amazon Cognito 用户池时如何登录??用户名

  • 您想配置高级设置吗??不,我已完成

第 3 步:在 Amazon Amplify 项目中配置 API

要向应用程序添加 GraphQL API,请使用以下命令:

amplify?add?api
  • 从上述服务中选择其中一个:GraphQL

  • 提供 API 名称:farmhubdemo

  • 为 API 选择授权类型:Amazon Cognito User Pool

  • 您想配置 GraphQL API 的高级设置吗??不,我已完成

  • 您有已注释的 GraphQL 架构吗??否

  • 选择架构模板(使用箭头键):包含字段的单个对象(例如包含 ID、名称、描述的“Todo”)

  • 您现在想编辑架构吗??

当您收到所选代码编辑器的提示时,将任何默认文本替换为以下架构:

type?Farm?@model?{
??id:?ID!
??user_id:?String!??
??field_name:?String!
??soil_type:?String!
??location:?String!
??moisture_level:?String!
??timestamp:?Int!
}

这就完成了 Amazon Amplify 项目所需的配置。要部署应用程序,请使用以下命令:

amplify?push
  • 确定要继续吗??

  • 您想为新建的 GraphQL API 生成代码吗??

  • 选择代码生成语言目标:JavaScript

  • 输入 GraphQL 查询、突变和订阅的文件名格式:src/graphql/**/*.js

  • 您想生成/更新所有可能的 GraphQL 操作(查询、突变和订阅)吗??

  • 输入最大语句深度:2

第 4 步:配置前端 React 应用程序

首先要做的是将 Amazon Amplify 库添加到项目中。这提供了可简化与亚马逊云科技服务集成所需的代码的模块。

在项目的根目录中运行以下命令:

npm?install?-S?aws-amplify?&&?npm?install?-S?aws-amplify-react

要将 React 应用程序配置为感知新的 Amazon Amplify 项目,请在?src?文件夹中?src/index.js?文件内引用自动生成的?aws-exports.js?文件。

打开?src/index.js?并在上次导入的下面添加以下代码:

import?Amplify?from?'aws-amplify'
import?config?from?'./aws-exports'
Amplify.configure(config)

现在,将该代码添加到将用于与 API 交互的网站。打开?src/app.js?并添加以下代码,替换默认内容:

import?React?from?'react';

//?从?Amplify?库导入
import?{?API,?graphqlOperation,?Auth?}?from?'aws-amplify'

//?导入查询定义
import?{?listFarms?}?from?'./graphql/queries'

//?导入新的?Amplify?身份验证组件
import?{?withAuthenticator?}?from?'aws-amplify-react'

class?App?extends?React.Component?{
??//?定义状态来保存从?API?返回的数据
??state?=?{
????farms:?[]
??}

??//?在浏览器中呈现页面时执行查询,从?API?中检索数据
??async?componentDidMount()?{

????const?user?=?await?Auth.currentAuthenticatedUser()
????console.log('user:',?user)
????console.log('user?info:',?user.signInUserSession.idToken.payload)

????try?{
??????const?farmData?=?await?API.graphql(graphqlOperation(listFarms))
??????console.log('farmData:',?farmData)
??????this.setState({
????????farms:?farmData.data.listFarms.items
??????})
????}?catch?(err)?{
??????console.log('error?fetching?farms...',?err)
????}
??}
??render()?{
????return?(
??????<>
????????{
??????????this.state.farms.map((farm,?index)?=>?(
????????????<div?key={index}>
??????????????<p>{farm.user_id}</p>
??????????????<p>{farm.field_name}</p>
??????????????<p>{farm.soil_type}</p>
??????????????<p>{farm.location}</p>
??????????????<p>{farm.moisture_Level}</p>
??????????????<p>{farm.timestamp}</p>
????????????</div>
??????????))
????????}
??????</>
????)
??}
}

export?default?withAuthenticator(App,?{?includeGreetings:?true?})

如果您愿意,可为此站点添加任意样式。使用以下命令在本地系统上启动站点:

yarn?start

此命令会在本地编译 React 站点。您可以在?http://localhost:3000?上查看该网站并与之互动

第 5 步:测试前端和 API

浏览至本地系统上的 React 站点,然后按照说明创建和验证新账户。您需要使用有效的电子邮件地址才能接收确认码。

注册账户并登录后,您将看到一个带有“hello”消息和注销按钮的页面。接下来,登录?亚马逊云科技管理控制台以测试 API 并使用 GraphQL 突变添加一些数据。

  • 亚马逊云科技管理控制台

    https://aws.amazon.com/console/

打开?Amazon AppSync 控制台,然后进入?farmhubdemo-dev?API。在控制台的左侧,导航到查询

  • Amazon AppSync 控制台

    https://eu-west-1.console.aws.amazon.com/appsync

首先要做的是向 Amazon Cognito 进行身份验证。为此,请单击使用用户池登录,输入您在上一步中使用的账户信息,然后选择登录

图 3 – 登录屏幕,可让您通过 Amazon Cognito 用户池访问 Amazon AppSync API

要向应用程序添加一些数据,请执行以下突变并创建新的水分记录条目:

mutation?createFarm?{
createFarm(input:?{
????user_id:?"farmer@farmmail.com",
????field_name:?"Corn?field?1?",
????soil_type:?"Loam?Soil",
????location:?"London",
????moisture_level:?"1.2",
????timestamp:?687247
}?)?{
??user_id
??field_name
??soil_type
??location
??moisture_level
??timestamp
??id
??}
}

如果成功,控制台右侧将显示已写入存储的 JSON 记录。要对此进行验证,请打开?Amazon DynamoDB 控制台,然后打开带有 Farm 前缀的表并选择项目选项卡。您应该看到一条记录:

  • Amazon DynamoDB 控制台

    https://eu-west-1.console.aws.amazon.com/dynamodb

图 4 – Amazon DynamoDB 表中的项目。

记下完整的表名称,因为这将在下一节中用到。

最后,刷新 React 网页以查看显示的数据。

设置 Amazon IoT Core 组件

Amazon IoT 使联网设备能够连接到亚马逊云科技,允许应用程序与物理设备进行交互,或者收集来自这些设备的数据并进行处理。

下一节将向您介绍在 Amazon IoT Core 控制台中创建逻辑 Amazon IoT 设备,这条 Amazon IoT 规则用于获取 Amazon IoT 设备发送的数据,然后将其添加到我们应用程序的 Amazon DynamoDB 表中。

第 1 步:在 Amazon IoT Core 中创建“事物”

打开?Amazon IoT 控制台并展开管理,然后选择事物

  • Amazon IoT 控制台

    https://eu-west-1.console.aws.amazon.com/iot

选择创建(或者,如果您还没有任何事物,请注册一个),然后选择创建单个事物。指定?moisture_thing?作为事物的名称,然后选择下一步

请注意,您可以对此事物应用类型,这样可以简化管理并为共享类型的事物提供一致的注册表数据。您也可以将此内容添加到组中,这样就可以同时管理多个事物了。对于本演练,我们不会配置其中任何一个。

单击下一步,然后选择创建证书选项。这将生成 X.509 证书,用于保护您的设备与 Amazon IoT Core 之间的通信。

图 5 – 成功创建 IoT 设备证书

下载证书,然后选择激活以激活 X.509 证书。最后,选择附加策略

要进行测试,请选择默认策略。策略用于授权您的设备执行 Amazon IoT 操作,例如订阅或发布到主题。

接下来,选择注册事物

第 2 步:设置 Amazon IoT 规则以将数据移至存储

接下来要做的是配置一个规则,该规则将获取发送到相应事物的数据,并将其写入 API 将与之交互的 Amazon DynamoDB 表中。

在?Amazon IoT 控制台中,展开操作,然后选择规则。

  • Amazon IoT 控制台

    https://eu-west-1.console.aws.amazon.com/iot

选择创建规则。为该规则指定名称、moisture_rule?和描述。在规则查询语句部分中,添加以下 Amazon IoT SQL 语句:

SELECT?state.reported.field_data.id?as?id,
????????state.reported.field_data.user_id?as?user_id,
????????state.reported.field_data.field_id?as?field_id,
????????state.reported.field_data.field_name?as?field_name,
????????state.reported.field_data.soil_type?as?soil_type,
????????state.reported.field_data.location?as?location,
????????state.reported.field_data.moisture_level?as?moisture_level,
????????state.reported.field_data.timestamp?as?timestamp,
????????state.reported.field_data.createdAt?as?createdAt,
????????state.reported.field_data.updatedAt?as?updatedAt
FROM??'farmhubcropping/moisture_thing'

此规则查询语句会监听使用 FROM 条件定义的主题

farmhubcropping/moisture_thing

这意味着向此主题发送数据的每台设备都将触发该规则。当规则触发 SELECT 子句时,它会从消息中提取信息。

接下来,在设置一项或多项操作部分中,选择添加操作

选择操作页面上,选择将消息拆分为 Amazon DynamoDB 表 (DynamoDBv2) 的多列,然后选择配置操作

选择创建资源,然后选择在测试突变之后创建的 Amazon DynamoDB 表,首先是?farm-

然后,选择创建角色以授予该规则对此表的所需访问权限。最后,指定名称?farmhub_dynamodb_rule_role?并选择创建角色

图 6 – 配置了表和角色的 IoT“配置操作”屏幕

选择添加操作将此操作添加到该规则,然后选择创建规则

第 3 步:测试系统

要测试系统,请使用 Node.js 脚本创建一个模拟“事物”。

打开终端窗口并使用以下命令创建一个名为 iot_thing 的新文件夹:

mkdir?iot_thing

在?iot_thing 文件夹中,创建一个名为?certs?的文件夹以存储之前下载的证书,以及将用于模拟我们的湿度 IoT 设备的 Node.js 脚本:

cd?iot_thing
mkdir?certs
touch?index.js

将之前下载的证书文件复制到?iot_thing/cert?目录中。为了简单些,请按如下方式重命名这些文件:

  • ?certificate.pem.crt?结尾的文件重命名为?moisture_thing_crt.pem

  • 以?private.pem.key?结尾的文件重命名为?moisture_thing_key.pem

在终端的 iot_thing 目录中,运行以下命令以下载亚马逊根证书颁发机构 (CA):

wget?-O?certs/rootCA.pem?https://www.amazontrust.com/repository/AmazonRootCA1.pem

现在,您应该有以下文件夹和文件:

Iot_thing????#?root?folder
|___certs?????#?folder?with?certificate?files
???????|_____moisture_thing_crt.pem???#?certificate
???????|_____moisture_thing_key.pem???#?private?key
???????|_____rootCA.pem???#?Amazon?Root?CA

在?iot_thing?中,使用以下命令添加?Amazon IoT SDK

  • Amazon IoT SDK

    https://docs.aws.amazon.com/iot/latest/developerguide/iot-sdks.html

npm?i?–save?aws-iot-device-sdk

将以下代码复制到?iot_thing?文件夹中的?index.js?文件:

//?声明适用于?JavaScript?和节点库的?AWS?IoT?设备?SDK
const?awsiot?=?require('aws-iot-device-sdk')

//?声明?thingName?和主题
const?thingName?=?'moisture_thing'
const?topic?=?`farmhubcropping/${thingName}`

//?声明?aws?IoT?终端节点
const?endpoint?=?YOUR?AWS?IOT?ENDPOINT'?//?xxxxxxxxxxxxx-ats.iot.AWS_REGION.amazonaws.com

const?device?=?awsiot.device({
???keyPath:?`./certs/${thingName}_key.pem`,
??certPath:?`./certs/${thingName}_crt.pem`,
????caPath:?`./certs/rootCA.pem`,
??clientId:?thingName,
??????host:?endpoint?
????})


????let?field_data?=?{
????????id:?Math.random().toString(36).substr(2,?12),
????????user_id:?"farmer@farmmail.com",
????????field_name:?"Corn?Field",
????????soil_type:?"Loam?Soil",
????????location:?"London",
????????moisture_level:?"1",
????????timestamp:?“12345678”,
????????createdAt:?"2021-04-01T15:54:59.713Z",
????????updatedAt:?"2021-04-01T15:54:59.713Z"

????}

device.on('connect',?()?=>?{
????console.log(`${thingName}?is?connected?to?${endpoint}`)
????device.publish(topic,?JSON.stringify({?state:{
????????????????reported:?{
????????????????????field_data
????????????????}?}}))
})

在 index.js 文件中,将变量“YOUR AMAZON IOT ENDPOINT”替换为您自己的?IoT 终端节点。这是允许您连接到 Amazon IoT 的自定义终端节点。您的每个事物都在此终端节点上有一个可用的 REST API。

Amazon IoT 控制台的左侧导航窗格中,选择设置。您的终端节点将列在顶部的设备数据终端节点部分。

  • Amazon IoT 控制台

    https://console.aws.amazon.com/iot/

从 Amazon IoT 控制台中,选择测试

对于订阅主题,输入?#,然后选择订阅主题。我们将订阅所有主题以检查您的设备是否正在发布。

在本地系统上的 iot_thing 文件夹中,使用以下命令启动脚本 index.js:

node?index.js

回到 Amazon IoT 控制台中,您将看到正在发送到主题的数据:

图 7 – 显示?Amazon IoT 控制台正在捕获传入数据的图片

由于我们已经设置了 Amazon IoT 规则,数据也已添加到 Amazon DynamoDB 表中。因此,刷新本地主机上运行的网站,现在您将看到第二个条目。

结论

借助 Capgemini 的“Smart Hub Cropping” Amazon IoT 解决方案,农民可以获得农田的实时状态,例如土壤类型和含水量,并随时随地监控和执行操作。

您可以让农民轻松安全地分享他们的田地状态。这有助于他们维持作物以确保生产性增长。

我们期望看到您如何按照本示例开始利用 Amazon IoT 打造 Smart Hub Cropping 的未来。

Capgemini – 亚马逊云科技合作伙伴聚焦

Capgemini 是亚马逊云科技高级咨询合作伙伴和 MSP。Capgemini 拥有一支由遍及 40 多个国家/地区的 22 万人组成的多元文化团队,拥有 12,000 多项亚马逊云科技认证和 2,700 多项有效亚马逊云科技认证。


本篇作者

Pete Moles

亚马逊云科技

合作伙伴解决方案构架师

Charudath Doddanakatte

Capgemini?

数字客户体验总监

Ragavie Dakshinamoorthy

Capgemini

技术解决方案架构师?

听说,点完下面4个按钮

就不会碰到bug了!

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-09-14 13:30:52  更:2021-09-14 13:33:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 2:40:44-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码