如何使用 micropython 从 Raspberry Pi Pico W 上传文件?

问题描述 投票:0回答:0

首先感谢您的帮助。 Pico Pi W - Micropython - 最新固件

我设置了一个脚本,用于使用传感器数据构建 csv 并通过 FTP 定期发送 csv。 数据被一致地读取到文件中,LAN 连接已成功建立,但我在上传文件时遇到问题 - 连接失败。 服务器设置正确,Pico 和服务器都在本地可见

标准 ftplib 与 python 不兼容,所以我使用:

https://github.com/SpotlightKid/micropython-ftplib

我进入控制台:

2023-05-11 14:23:17 连接到 Wi-Fi 网络:xxxxxx 2023-05-11 14:23:18 1683814998, 400, 0, 22, 38 2023-05-11 14:23:20 1683815000, 400, 0, 22, 38 2023-05-11 14:23:23 1683815003, 400, 0, 22, 38 2023-05-11 14:23:23 FTP 上传时出错:无法连接到 ('192.168.1.x', 21)

代码:

        def format_timestamp():
        localtime = utime.localtime()
        timestamp = "{:04}-{:02}-{:02} {:02}:{:02}:{:02}".format(
            localtime[0], localtime[1], localtime[2], localtime[3], localtime[4], localtime[5]
        )
        return timestamp
    
    def log_print(message):
        timestamp = format_timestamp()
        with open(LOCAL_TXT, "a") as f:
            f.write("{} {}\n".format(timestamp, message))
        print("{} {}".format(timestamp, message))
    
    # Define local CSV file
    LOCAL_CSV = "/data.csv"
    
# Connect to Wi-Fi
WIFI_SSID = "xxxxxx"
WIFI_PASSWORD = "xxxxxx"

# Define FTP server credentials
SERVER = "192.168.1.x"
FTP_USERNAME = "username"
FTP_PASSWORD = "password"

    # Connect to WLAN
    try:
        wlan = network.WLAN(network.STA_IF)
        wlan.active(True)
        wlan.connect(WIFI_SSID, WIFI_PASSWORD)
        log_print("Connected to Wi-Fi network: {}".format(WIFI_SSID))
    except Exception as e:
        log_print("Error connecting to WiFi network: {}".format(e))
    
    # Upload CSV data to FTP server
def upload_csv_to_ftp():
    # Upload CSV data to FTP server
    try:
        ftp_client = FTP(SERVER)
        ftp_client.login(user= FTP_USERNAME,passwd= FTP_PASSWORD)
        ftp_client.encoding = "utf-8"
        log_print("Connecting to FTP server...")
        with open(LOCAL_CSV, "rb") as f:
            data = f.read()
            ftp_client.storbinary("STOR data.csv", io.BytesIO(data))
        log_print("Closing FTP connection...")
        ftp_client.quit()
    except Exception as e:
        log_print("Error during FTP upload: {}".format(e))
python ftp micropython ftplib raspberry-pi-pico
© www.soinside.com 2019 - 2024. All rights reserved.