Python物联网与传感器数据分析

Python物联网与传感器数据分析

一、 物联网世界的探秘者:Python与传感器的奇妙邂逅

当Python遇上传感器:一场数据盛宴的序章

在这个万物互联的时代,我们周围充满了各种各样的智能设备。而在这个由无数节点组成的巨大网络中,Python就像是一位技艺高超的指挥家,能够将传感器们演奏出的数据交响乐指挥得井井有条。Python凭借其简洁优雅的语法、强大的第三方库支持以及灵活多变的应用场景,成为了物联网领域不可或缺的一员。

想象一下,在一个普通的家庭里,当温湿度传感器检测到室内温度过高时,Python程序可以自动启动空调降温;光照传感器感知到光线变暗时,灯光会自动开启,这一切都发生在我们不知不觉之间。Python与传感器之间的这种“邂逅”,就像是在演奏一首动听的乐曲,每一个音符都恰到好处地落在了它应该出现的位置上。

传感器的魅力:感知万物的触角

传感器就像是物联网世界的触角,它们无处不在,时刻感受着周围的环境变化。从简单的温湿度传感器到复杂的图像传感器,它们都能准确地捕捉到环境中的细微变化,并将其转化为可以被计算机理解的信号。

例如,一个温湿度传感器可以用来监测家中的温湿度条件,这对于种植爱好者来说非常重要,因为不同的植物需要不同的生长环境。而图像传感器则可以用于人脸识别、物体识别等领域,使得机器能够“看到”这个世界。

Python:连接物理世界与数字空间的桥梁

Python不仅是一种编程语言,更是一种连接现实世界与虚拟世界的桥梁。通过Python,我们可以轻松地与各种传感器进行交互,获取它们收集的数据,并利用这些数据做出有意义的事情。

例如,使用Python的GPIO库,我们可以在树莓派上读取DHT11温湿度传感器的数据。下面是一个简单的Python脚本示例,展示如何读取DHT11传感器的数据:

import Adafruit_DHT

sensor = Adafruit_DHT.DHT11
pin = 4

humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)

if humidity is not None and temperature is not None:
    print("Temp={0:0.1f}*C  Humidity={1:0.1f}%".format(temperature, humidity))
else:
    print("Failed to retrieve data from humidity sensor")

这段代码使用了Adafruit_DHT库来读取DHT11传感器的数据,并打印出温度和湿度值。

二、 Python技能树:从数据采集到智能分析

数据采集:捕捉每一刻的精彩瞬间

数据采集是整个数据分析流程的基础,也是最核心的部分之一。在这个阶段,我们需要确定哪些传感器最适合我们的项目,并使用Python编写相应的代码来连接这些传感器,从而收集数据。

传感器选型:找到最适合的伙伴

选择合适的传感器对于数据采集至关重要。例如,如果你正在做一个智能温室项目,那么就需要挑选那些能够精确测量温度、湿度以及光照强度的传感器。选择传感器时要考虑的因素包括精度、稳定性、成本以及是否易于与你的硬件平台集成。

Python编程:轻松连接传感器

一旦选择了合适的传感器,接下来就是使用Python来连接这些传感器了。这里以树莓派为例,介绍如何连接一个温湿度传感器。首先,你需要安装必要的库,比如Adafruit_DHT,然后编写如下的Python脚本来读取数据:

import Adafruit_DHT
import time

sensor = Adafruit_DHT.DHT11
pin = 4

while True:
    humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)
    if humidity is not None and temperature is not None:
        print("Temp={0:0.1f}°C  Humidity={1:0.1f}%".format(temperature, humidity))
    else:
        print("Failed to retrieve data from humidity sensor")
    time.sleep(2)

这段代码会不断地读取DHT11传感器的数据,并每隔两秒输出一次温度和湿度的值。

数据清洗:给数据来一场美容SPA

数据采集之后,紧接着的就是数据清洗的过程。这一步骤就像是给数据做美容SPA,让它变得更加干净、整洁。

异常值检测:揪出数据中的捣蛋鬼

在数据清洗的过程中,一个重要的环节是检测并处理异常值。异常值就像是数据中的捣蛋鬼,如果不加以处理,可能会导致分析结果出现偏差。Python提供了多种方法来检测异常值,比如使用标准差法、箱线图法等。

下面是一个使用标准差法来检测异常值的简单例子:

import numpy as np

data = [10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 500]

mean = np.mean(data)
std_dev = np.std(data)

lower_bound = mean - (3 * std_dev)
upper_bound = mean + (3 * std_dev)

outliers = [x for x in data if x < lower_bound or x > upper_bound]
print("Outliers:", outliers)

这段代码使用了numpy库计算数据的平均值和标准差,并找出超出三倍标准差范围之外的异常值。

缺失值填补:不让数据留下空白

缺失值就像是数据中的黑洞,会让分析结果产生漏洞。为了保证分析结果的准确性,我们需要对缺失值进行填补。常见的填补方法包括前向填充、后向填充以及均值填充等。

这里有一个使用pandas库填补缺失值的例子:

import pandas as pd

data = {'Temperature': [22, 24, 26, np.nan, 28],
        'Humidity': [45, 48, np.nan, 52, 55]}

df = pd.DataFrame(data)

# 填充缺失值
df['Temperature'].fillna(method='ffill', inplace=True)
df['Humidity'].fillna(df['Humidity'].mean(), inplace=True)

print(df)

这段代码创建了一个包含缺失值的DataFrame,并使用前向填充和均值填充的方法来处理缺失值。

数据分析:挖掘数据背后的秘密

数据清洗完成之后,我们就可以开始深入分析数据了。数据分析就像是在挖掘宝藏,每一步都充满惊喜。

描述性统计:数据的宏观视角

描述性统计分析可以帮助我们从宏观角度了解数据的基本特征。常用的描述性统计指标包括均值、中位数、众数、方差、标准差等。下面是一个使用pandas进行描述性统计的例子:

import pandas as pd

data = {'Temperature': [22, 24, 26, 28, 30],
        'Humidity': [45, 48, 52, 55, 58]}

df = pd.DataFrame(data)

# 描述性统计
print(df.describe())

这段代码使用pandas库中的describe()函数来计算数据的基本统计量。

时间序列分析:洞悉数据的趋势

时间序列分析是一种特别的数据分析方法,它可以让我们发现数据随时间变化的趋势。在智能家居监控系统中,时间序列分析可以帮助我们预测未来的温湿度变化趋势,进而采取适当的措施。

下面是一个使用pandas进行简单的时间序列分析的例子:

import pandas as pd
import matplotlib.pyplot as plt

# 创建时间序列数据
date_rng = pd.date_range(start="2023-01-01", end="2023-01-31", freq="H")
df = pd.DataFrame(date_rng, columns=['Date'])
df['Temperature'] = [22 + i / 100 for i in range(len(date_rng))]
df.set_index('Date', inplace=True)

# 绘制时间序列图
plt.figure(figsize=(10, 5))
plt.plot(df['Temperature'], label='Temperature')
plt.title('Time Series Analysis of Temperature')
plt.xlabel('Date')
plt.ylabel('Temperature')
plt.legend()
plt.show()

这段代码创建了一个包含时间序列数据的DataFrame,并绘制了温度随时间变化的趋势图。

数据可视化:让数据说话

数据可视化是数据分析的重要组成部分,它能够帮助我们更加直观地理解数据。通过数据可视化,我们可以将抽象的数据转换为图表、图形等形式,让数据“说话”。

Matplotlib与Seaborn:绘制精美的图表

MatplotlibSeaborn是Python中非常流行的绘图库。它们可以用来创建各种类型的图表,从简单的折线图到复杂的热力图,无所不能。

下面是一个使用MatplotlibSeaborn绘制温度和湿度数据的例子:

import matplotlib.pyplot as plt
import seaborn as sns

data = {'Date': ['2023-01-01', '2023-01-02', '2023-01-03'],
        'Temperature': [22, 24, 26],
        'Humidity': [45, 48, 52]}

df = pd.DataFrame(data)

# 使用Matplotlib绘制折线图
plt.figure(figsize=(10, 5))
plt.plot(df['Date'], df['Temperature'], label='Temperature')
plt.plot(df['Date'], df['Humidity'], label='Humidity')
plt.title('Temperature and Humidity Over Time')
plt.xlabel('Date')
plt.ylabel('Value')
plt.legend()
plt.show()

# 使用Seaborn绘制散点图
plt.figure(figsize=(10, 5))
sns.scatterplot(x='Date', y='Temperature', data=df, color='blue', label='Temperature')
sns.scatterplot(x='Date', y='Humidity', data=df, color='green', label='Humidity')
plt.title('Temperature and Humidity Scatter Plot')
plt.xlabel('Date')
plt.ylabel('Value')
plt.legend()
plt.show()

这段代码使用Matplotlib绘制了一张折线图,显示温度和湿度随时间的变化趋势;使用Seaborn绘制了一张散点图,展示了温度和湿度的具体分布。

Plotly:交互式图表的魅力

Plotly是一个强大的交互式图表库,它可以让用户通过鼠标悬停等方式与图表互动。下面是一个使用Plotly创建交互式图表的例子:

import plotly.express as px

data = {'Date': ['2023-01-01', '2023-01-02', '2023-01-03'],
        'Temperature': [22, 24, 26],
        'Humidity': [45, 48, 52]}

df = pd.DataFrame(data)

fig = px.line(df, x='Date', y=['Temperature', 'Humidity'], title='Temperature and Humidity Over Time')

fig.show()

这段代码使用Plotly创建了一个交互式的折线图,用户可以通过鼠标操作查看具体的温度和湿度值。

三、 实战演练:构建智能家居监控系统

设备清单:打造智能家居的第一步

构建一个智能家居监控系统,我们需要准备一些基础设备。这些设备就像是智能家居系统的基石,为我们的项目打下坚实的基础。

温湿度传感器:守护家的温度

温湿度传感器是我们系统中的重要组成部分,它们负责监测室内的温度和湿度变化。选择一款精度高、响应快的温湿度传感器,可以让你的智能家居系统更加智能。

例如,DHT11是一款性价比很高的温湿度传感器,适用于初学者。而DHT22则提供了更高的精度,适合对数据质量要求较高的场合。

光照传感器:捕捉光影变化

光照传感器可以用来检测环境中的光照强度,这对于智能照明系统来说至关重要。通过光照传感器,你可以根据环境亮度自动调节灯光的明暗程度,既节能又舒适。

TSL2561是一款常用的光照传感器,它能够精确测量可见光和红外光的强度,非常适合智能家居应用。

智能插座:控制电器的开关

智能插座可以让普通的电器变成智能电器。只需将普通电器插在智能插座上,就可以通过手机APP或者语音助手控制电器的开关状态。这对于实现远程控制和定时开关非常有用。

环境搭建:Python环境配置与依赖库安装

在开始编写代码之前,我们需要先搭建好开发环境。这包括安装Python及其相关的库,以及配置硬件平台。

必备工具:Python与必要的库

为了构建智能家居监控系统,我们需要安装Python及其相关库。这些库包括但不限于pandasmatplotlibseabornplotly等。

安装Python及其库的方法很简单,可以通过pip命令来安装:

pip install pandas matplotlib seaborn plotly
实战环境:Raspberry Pi或其他开发板

树莓派(Raspberry Pi)是一款非常受欢迎的小型计算机,它体积小巧、价格实惠,非常适合用来搭建智能家居监控系统。除此之外,还有ESP32、Arduino等其他开发板可供选择。

数据采集:从硬件到软件的无缝连接

数据采集是智能家居监控系统的核心功能之一。我们需要编写Python脚本来读取传感器数据,并将其保存起来供后续分析使用。

Python脚本编写:与传感器对话

下面是一个简单的Python脚本示例,展示如何读取DHT11温湿度传感器的数据,并将其保存到CSV文件中:

import Adafruit_DHT
import csv
import time

sensor = Adafruit_DHT.DHT11
pin = 4
filename = 'sensor_data.csv'

with open(filename, mode='w', newline='') as file:
    writer = csv.writer(file)
    writer.writerow(['Date', 'Temperature', 'Humidity'])

while True:
    humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)
    if humidity is not None and temperature is not None:
        with open(filename, mode='a', newline='') as file:
            writer = csv.writer(file)
            writer.writerow([time.strftime('%Y-%m-%d %H:%M:%S'), temperature, humidity])
    else:
        print("Failed to retrieve data from humidity sensor")
    time.sleep(60)

这段代码会不断地读取DHT11传感器的数据,并将其保存到CSV文件中。

数据存储:SQLite数据库管理

为了更好地管理和查询数据,我们可以使用SQLite数据库来存储传感器数据。下面是一个简单的例子,展示如何使用Python将数据存储到SQLite数据库中:

import sqlite3
import Adafruit_DHT
import time

sensor = Adafruit_DHT.DHT11
pin = 4
dbname = 'sensor_data.db'

def log_data(temp, humi):
    conn = sqlite3.connect(dbname)
    curs = conn.cursor()
    
    curs.execute("INSERT INTO temps values(datetime('now'), (?), (?))", (temp, humi))
    
    conn.commit()
    conn.close()

while True:
    humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)
    if humidity is not None and temperature is not None:
        log_data(temperature, humidity)
    else:
        print("Failed to retrieve data from humidity sensor")
    time.sleep(60)

这段代码使用了sqlite3库来连接数据库,并将读取到的温度和湿度数据存储到数据库中。

数据分析与可视化:解读家的数据故事

有了数据之后,我们就可以开始进行数据分析和可视化了。这一步骤能够帮助我们更好地理解数据背后的故事。

实时图表:监控家的状态

实时图表可以帮助我们即时地了解到家中的状态。下面是一个使用matplotlib库创建实时温度图表的例子:

import matplotlib.pyplot as plt
import matplotlib.animation as animation
from matplotlib import style
import Adafruit_DHT
import time

sensor = Adafruit_DHT.DHT11
pin = 4

style.use('fivethirtyeight')

fig = plt.figure()
ax1 = fig.add_subplot(1, 1, 1)

xs = []
ys = []

def animate(i):
    humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)
    if humidity is not None and temperature is not None:
        xs.append(time.strftime('%H:%M:%S'))
        ys.append(temperature)
        
        ax1.clear()
        ax1.plot(xs, ys)
        ax1.set_title('Real-Time Temperature Monitoring')
        ax1.set_xlabel('Time')
        ax1.set_ylabel('Temperature (°C)')
        
ani = animation.FuncAnimation(fig, animate, interval=1000)
plt.show()

这段代码使用matplotlibanimation模块来创建一个实时更新的温度图表。

预警机制:及时响应异常情况

预警机制可以让我们在异常情况发生时及时得到通知。例如,当温度超过设定阈值时,系统可以通过发送短信或电子邮件的方式提醒我们。

下面是一个简单的预警机制实现示例:

import Adafruit_DHT
import smtplib
from email.mime.text import MIMEText

sensor = Adafruit_DHT.DHT11
pin = 4
threshold = 30

def send_email(subject, body):
    sender = 'your_email@example.com'
    receivers = ['receiver_email@example.com']
    msg = MIMEText(body)
    msg['Subject'] = subject
    msg['From'] = sender
    msg['To'] = ', '.join(receivers)
    
    try:
        server = smtplib.SMTP('smtp.example.com', 587)
        server.starttls()
        server.login(sender, 'your_password')
        server.sendmail(sender, receivers, msg.as_string())
        server.quit()
    except Exception as e:
        print(f"Error sending email: {e}")

while True:
    humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)
    if humidity is not None and temperature is not None:
        if temperature > threshold:
            send_email("Temperature Alert", f"Temperature has exceeded the threshold: {temperature:.1f}°C")
    else:
        print("Failed to retrieve data from humidity sensor")
    time.sleep(60)

这段代码会在温度超过设定阈值时发送电子邮件提醒。

四、 探索进阶:物联网项目自动化与远程控制

自动化脚本:定时任务与Cron Jobs

在智能家居监控系统中,自动化脚本可以帮助我们定期执行特定的任务,比如定时备份数据、自动清理日志等。

定期备份:数据安全的第一道防线

数据备份是保障数据安全的重要手段。下面是一个使用Python脚本进行数据备份的例子:

import shutil
import os
import datetime

source_dir = '/path/to/source/directory'
backup_dir = '/path/to/backup/directory'
timestamp = datetime.datetime.now().strftime("%Y%m%d%H%M%S")

backup_filename = f"backup_{timestamp}.zip"
backup_path = os.path.join(backup_dir, backup_filename)

shutil.make_archive(backup_path, 'zip', source_dir)

print(f"Backup created at {backup_path}")

这段代码会创建一个压缩文件作为备份。

任务调度:自动化数据采集流程

使用Cron Jobs可以让我们在特定时间执行脚本。例如,我们可以在树莓派上设置Cron Job,每天凌晨自动备份数据。

下面是如何在树莓派上设置Cron Job的步骤:

  1. 打开终端。

  2. 输入 crontab -e 命令编辑Cron文件。

  3. 添加如下行来设置每天凌晨1点运行备份脚本:

    0 1 * * * /usr/bin/python3 /path/to/your/backup_script.py
    
  4. 保存并退出编辑器。

远程控制:随时随地掌控家中一切

通过远程控制,我们可以随时随地监控和控制家中的设备。这需要我们在设备上运行Web服务器,并通过移动应用或其他设备与其通信。

Flask Web服务器:搭建简易控制面板

Flask是一个轻量级的Web框架,非常适合用来搭建智能家居系统的控制面板。下面是一个简单的Flask应用示例,用于控制智能插座:

from flask import Flask, render_template, request
import RPi.GPIO as GPIO

app = Flask(__name__)
GPIO.setmode(GPIO.BCM)
relay_pin = 18
GPIO.setup(relay_pin, GPIO.OUT)

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/toggle_relay')
def toggle_relay():
    state = GPIO.input(relay_pin)
    GPIO.output(relay_pin, not state)
    return str(not state)

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=80)

这个Flask应用提供了一个简单的网页界面,用户可以通过点击按钮来切换智能插座的状态。

MQTT协议:实现双向通信

MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息发布/订阅协议,非常适合于低带宽和高延迟的物联网环境。下面是一个使用paho-mqtt库的MQTT客户端示例:

import paho.mqtt.client as mqtt

def on_connect(client, userdata, flags, rc):
    print("Connected with result code "+str(rc))
    client.subscribe("home/temperature")

def on_message(client, userdata, msg):
    print(msg.topic+" "+str(msg.payload))

client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message

client.connect("mqtt.example.com", 1883, 60)

client.loop_forever()

这段代码创建了一个MQTT客户端,当连接成功后会订阅home/temperature主题,并在接收到消息时打印出来。

移动应用集成:用手机控制家居

为了方便地控制家中的设备,我们还可以开发一个简单的移动应用。这个应用可以使用MQTT协议与家中的设备进行通信。

云端同步:数据永不丢失

将数据同步到云端不仅可以保证数据的安全,还能让我们随时随地访问数据。下面是一些常用的云平台选项:

AWS IoT Core:连接云平台

AWS IoT Core是一个全面托管的服务,它允许设备安全地与云应用程序和其他设备进行通信。下面是一个简单的示例,展示如何使用AWS IoT SDK发送数据到AWS IoT Core:

import boto3
import json

client = boto3.client('iot-data', region_name='us-west-2')

def publish_data(topic, payload):
    response = client.publish(
        topic=topic,
        qos=1,
        payload=json.dumps(payload)
    )
    print("Data published to AWS IoT Core")

payload = {
    'device_id': 'MyDevice',
    'temperature': 25.0,
    'humidity': 55.0
}

publish_data('home/sensors', payload)

这段代码使用boto3库将数据发送到指定的主题。

Google Cloud IoT:数据的安全港湾

Google Cloud IoT Core也是一个强大的云服务,可以用来连接和管理设备。下面是一个简单的示例,展示如何使用Google Cloud IoT Core SDK发送数据:

from google.cloud import iot_v1
import json

client = iot_v1.DeviceManagerClient()
registry_path = 'projects/my-project/locations/us-central1/registries/my-registry'
device_path = '{}/devices/my-device'.format(registry_path)

def publish_data(device_path, data):
    data = json.dumps(data).encode('utf-8')
    response = client.publish_device_state(device_path=device_path, binary_data=data)
    print("Data published to Google Cloud IoT Core")

data = {
    'temperature': 25.0,
    'humidity': 55.0
}

publish_data(device_path, data)

这段代码使用Google Cloud IoT Core SDK将数据发送到指定的设备路径。

数据同步策略:确保数据一致性

为了确保数据的一致性和完整性,我们需要制定合理的数据同步策略。例如,我们可以设置定期同步任务,或者在数据发生变化时立即同步。

下面是一个使用Python脚本进行数据同步的例子:

import requests
import json

url = 'https://api.example.com/data'
data = {
    'temperature': 25.0,
    'humidity': 55.0
}

response = requests.post(url, json=data)

if response.status_code == 200:
    print("Data synced successfully")
else:
    print("Error syncing data")

这段代码使用requests库将数据发送到远程服务器。

通过上述的介绍和示例,我们已经完成了从理论到实践的全过程,从数据采集到智能分析,再到实际应用的构建。希望这篇博客能够为你在Python物联网与传感器数据分析方面提供一些有价值的见解和灵感!

  • 13
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python物联网是指使用Python编程语言来搭建和开发物联网系统的技术和方法。Python作为一种简单、易用、跨平台、可扩展的编程语言,在物联网领域有着广泛的应用。 物联网系统的基本架构可以包括设备端和云端两部分。设备端使用物联网终端设备,例如ESP32等,通过Wifi或其他通信方式接入互联网,并使用Python编程语言进行开发和控制。设备端可以采集传感器数据、控制执行器等,然后通过网络将数据传输到云端。 云端部分可以使用阿里云等云平台提供的服务,通过MQTT等通信协议接收设备端上传的数据,并进行存储、处理和分析。云端可以提供数据可视化、数据管理等功能,同时也可以通过云端将数据转发到其他设备或应用程序中。 在Python物联网开发中,可以使用MicroPython来进行嵌入式设备的编程,它是可以在低端硬件上运行的Python。MicroPython可以直接操作IO和MCU的外设,如UART、I2C等,极大地方便了开发者的工作。 此外,Python物联网领域还有许多其他用途,比如构建物联网网关、数据编码与处理、多进程与多线程、数据持久化、网络编程等。Python的面向对象和简单易用的特性使其在物联网开发中表现出色。 综上所述,Python物联网是一种使用Python编程语言搭建和开发物联网系统的技术和方法,它具有简单易用、跨平台、可扩展等特点,并可以应用于设备端编程、云端数据处理和分析等多个方面。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [使用Python来做物联网,就是这么easy!](https://blog.csdn.net/weixin_33850015/article/details/91380551)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [物联网python开发实践](https://blog.csdn.net/weixin_38628101/article/details/126889723)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值