You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

树莓派PZEM-004T模块实时数据存入MongoDB分步指导需求

分步实现树莓派PZEM-004T数据存储至MongoDB(优先后端搭建)

一、MongoDB后端环境搭建

不管你是把MongoDB装在树莓派本地,还是单独的云/本地服务器,先按以下步骤完成基础配置:

1. 安装MongoDB(以Debian/Raspbian系统为例)

sudo apt update
sudo apt install mongodb
  • 验证安装:mongod --version
  • 启动服务并设置开机自启:
    sudo systemctl start mongodb
    sudo systemctl enable mongodb
    

2. 配置远程访问(若MongoDB不在树莓派本地)

编辑MongoDB配置文件:

sudo nano /etc/mongodb.conf

找到bindIp字段,将默认的127.0.0.1改为0.0.0.0(生产环境建议限制为树莓派的固定IP,提高安全性),保存后重启服务:

sudo systemctl restart mongodb

3. 创建专用数据库与授权用户

进入MongoDB shell:

mongo

执行以下命令创建数据库和读写权限用户:

// 创建并切换到pzem_data数据库
use pzem_data

// 创建具备读写权限的用户
db.createUser({
  user: "pzem_user",
  pwd: "your_strong_password", // 替换为你的安全密码
  roles: [{ role: "readWrite", db: "pzem_data" }]
})

退出shell:exit

(可选)开启身份认证:再次编辑配置文件,找到security段落,添加authorization: enabled,重启服务生效。

二、树莓派端基础准备(衔接后端必备)

1. 安装PZEM-004T依赖

用Python操作模块的话,直接安装专用库:

pip install pzem-004t pyserial

2. 安装MongoDB Python驱动

pip install pymongo

三、数据上传脚本编写

下面是核心的Python脚本,实现读取PZEM数据并写入MongoDB:

import serial
from pymongo import MongoClient
import time
from pzem import PZEM004T

# 连接MongoDB(替换为你的MongoDB地址、用户名、密码)
client = MongoClient('mongodb://pzem_user:your_strong_password@192.168.1.100:27017/pzem_data')
db = client['pzem_data']
readings_col = db['real_time_data']

# 初始化PZEM串口连接(根据你的实际串口路径调整,比如/dev/ttyUSB0或/dev/ttyAMA0)
ser = serial.Serial('/dev/ttyUSB0', 9600, timeout=1)
pzem = PZEM004T(ser)

try:
    while True:
        # 读取PZEM数据
        data = pzem.read()
        if data:
            # 构造带时间戳的数据文档
            reading_doc = {
                'voltage': data['voltage'],
                'current': data['current'],
                'power': data['power'],
                'energy': data['energy'],
                'frequency': data['frequency'],
                'power_factor': data['power_factor'],
                'record_time': time.strftime('%Y-%m-%d %H:%M:%S')
            }
            # 插入数据库
            readings_col.insert_one(reading_doc)
            print(f"已存储数据: {reading_doc}")
        # 每5秒读取一次,可根据需求调整间隔
        time.sleep(5)
except KeyboardInterrupt:
    # 程序终止时关闭连接
    ser.close()
    client.close()
    print("程序已停止")

四、验证数据存储

运行脚本后,进入MongoDB shell验证数据:

mongo -u pzem_user -p your_strong_password --authenticationDatabase pzem_data
use pzem_data
# 查看最新的5条数据
db.real_time_data.find().sort({'record_time': -1}).limit(5)

如果能看到带时间戳的PZEM读数,说明后端搭建和数据上传流程正常。

内容的提问来源于stack exchange,提问作者AMAYE GATALAWAR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 15:37:54