
本教程详细指导如何利用micropython在esp32开发板上实现传感器数据向firebase实时数据库的传输。文章涵盖了从firebase项目配置、wifi连接到使用`urequests`库构建http post请求发送json数据的完整流程,并提供了可直接运行的示例代码,帮助开发者高效地将物联网设备数据集成到云端。
物联网(IoT)设备,如基于ESP32的传感器,通常需要将采集到的数据上传至云端进行存储、分析和可视化。Firebase Realtime Database作为一个NoSQL云数据库,以其实时同步和易用性,成为许多物联网项目的理想选择。本教程将重点介绍如何使用MicroPython固件的ESP32,通过HTTP POST请求将数据安全、高效地发送到Firebase Realtime Database。
在开始编写代码之前,您需要完成以下准备工作:
{
  "rules": {
    ".read": "true",
    ".write": "true"
  }
}数据从ESP32传输到Firebase Realtime Database主要包含以下几个步骤:
以下是一个完整的MicroPython示例代码,演示了如何将模拟的传感器数据发送到Firebase Realtime Database:
立即学习“Python免费学习笔记(深入)”;
import urequests
import ujson
import network
import time
# --- 配置信息 ---
# 您的WiFi凭据
WIFI_SSID = "YourWiFiSSID"
WIFI_PASSWORD = "YourWiFiPassword"
# Firebase项目凭据
# 替换为您的Firebase项目ID,例如:https://your-project-id.firebaseio.com
FIREBASE_URL = "https://your-project-id.firebaseio.com"
# 替换为您的Firebase认证密钥。
# 注意:直接在设备端硬编码敏感密钥存在安全风险。
# 对于Realtime Database REST API,更常见的是使用 ?auth=YOUR_DATABASE_SECRET 作为URL参数。
# 如果您使用Bearer Token,请确保您的Firebase项目配置支持此认证方式。
SECRET_KEY = "YourFirebaseSecretKey" 
# --- WiFi连接函数 ---
def connect_wifi():
    """连接ESP32到指定的WiFi网络"""
    wlan = network.WLAN(network.STA_IF)
    wlan.active(True)
    if not wlan.isconnected():
        print("正在连接到WiFi...")
        wlan.connect(WIFI_SSID, WIFI_PASSWORD)
        timeout = 10
        while not wlan.isconnected() and timeout > 0:
            print(".", end="")
            time.sleep(1)
            timeout -= 1
        if wlan.isconnected():
            print("\nWiFi连接成功!")
            print("IP地址:", wlan.ifconfig()[0])
        else:
            print("\nWiFi连接失败,请检查SSID和密码。")
            return False
    else:
        print("WiFi已连接。")
        print("IP地址:", wlan.ifconfig()[0])
    return True
# --- 发送数据到Firebase函数 ---
def send_to_firebase(data, collection_path="sensor_data"):
    """
    将数据发送到Firebase Realtime Database。
    Args:
        data (dict): 要发送的Python字典数据。
        collection_path (str): Firebase数据库中的集合路径,例如 "sensor_data"。
    """
    headers = {
        "Content-Type": "application/json",
        "Authorization": "Bearer " + SECRET_KEY # 根据您的Firebase认证方式调整
    }
    # 构建Firebase REST API的POST请求URL
    # 例如:https://your-project-id.firebaseio.com/sensor_data.json
    url = FIREBASE_URL + "/" + collection_path + ".json"  
    try:
        # 将Python字典转换为JSON字符串
        json_data = ujson.dumps(data)
        print(f"正在发送数据到Firebase: {url}")
        print(f"数据: {json_data}")
        # 发送HTTP POST请求
        response = urequests.post(url, data=json_data, headers=headers)
        print("Firebase响应状态码:", response.status_code)
        print("Firebase响应内容:", response.text)
        # 检查响应状态码
        if 200 <= response.status_code < 300:
            print("数据成功发送到Firebase。")
        else:
            print(f"发送数据失败,状态码: {response.status_code}")
            print(f"错误信息: {response.text}")
    except Exception as e:
        print(f"发送数据到Firebase时发生错误: {e}")
    finally:
        if 'response' in locals() and response:
            response.close() # 务必关闭响应,释放资源
# --- 主程序逻辑 ---
if __name__ == "__main__":
    if connect_wifi():
        # 模拟传感器数据
        sensor_data = {
            "temperature": 25.5,
            "humidity": 60,
            "timestamp": time.time() # 添加时间戳
        }
        # 发送数据到Firebase的 'sensor_data' 集合
        send_to_firebase(sensor_data, "esp32_readings")
        # 您可以根据需要定时发送数据
        # 例如:
        # while True:
        #     # 获取实时传感器数据
        #     current_temp = ...
        #     current_hum = ...
        #     data = {"temperature": current_temp, "humidity": current_hum, "timestamp": time.time()}
        #     send_to_firebase(data, "esp32_readings")
        #     time.sleep(60) # 每60秒发送一次
    else:
        print("无法连接WiFi,数据发送中止。")
导入模块:
配置信息:
connect_wifi() 函数:
send_to_firebase() 函数:
通过本教程,您应该已经掌握了如何使用MicroPython在ESP32上实现传感器数据到Firebase Realtime Database的传输。这一方法为物联网设备与云端服务集成提供了灵活且强大的解决方案。在实际部署时,请务必重视安全性、错误处理和资源管理,以构建稳定可靠的物联网应用。随着您对MicroPython和Firebase的深入了解,您可以进一步探索更高级的认证机制、数据处理和实时交互功能。
以上就是ESP32 MicroPython与Firebase实时数据库数据传输教程的详细内容,更多请关注php中文网其它相关文章!
 
                        
                        每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
 
                Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号