在 JavaScript 中为 Raspberry Pi 气象站发布读取 .txt 文件(来自保管箱)

Issue reading .txt files (from dropbox) in JavaScript for Raspberry Pi Weather station

如何从 Dropbox 文件中读取 JavaScript 中的 .txt 文件?我最近为我的 raspberry pi 买了一个天气传感器,我想每小时将当前天气数据保存到保管箱中的 .txt 文件(代码如下所示)。然而,我有点坚持将数据从 Dropbox 文件链接到我的网页,这样我就可以绘制天气模式图表。

我试过使用 Dropbox API 但没有用。

下面是我在 Python 中的代码:

# Weather Station App by Rob

# Will get current temperatures every minute, then will write data to a seperate file, which will then be added to dropbox.

from time import *
from random import randint

def writeTemperature():
    output = open("output.txt", "w")

    # Instead of using a variable, get the temperature from the Raspberry Pi.
    # Fahrenheight or Celcius
    temperature = randint(1, 32)

    listOfTemperatures.append(temperature)

    averageTotal = 0

    for temp in listOfTemperatures:
        averageTotal = averageTotal + temp

    average = averageTotal / len(listOfTemperatures)

    output.write(("Temperature: " + str(temperature)) + '\n')
    output.write("Average: " + str(average)) 
    output.write(listOfTemperatures)

    print "Added!"

    output.close()

listOfTemperatures = []
average = 0    

while True:
    writeTemperature()
    sleep(1)

函数将天气数据保存到文件中。 (忽略温度变量和睡眠函数,只是调试)

output.txt 文件将如下所示:

Temperature: 22
Average: 12

在此之后,我唯一的麻烦就是将它链接到 JavaScript。只是对这部分感到困惑。非常感谢指向正确方向的指针。

谢谢。

linking the data from a dropbox file to my web page

据我所知,您不能简单地将本地文件加载到浏览器中 javascript。你可以做的是设置一个简单的网络服务器,比如 pythons SimpleHTTPServer or a simple nodejs server with express.js。然后交付您的 html, js 并定义一个路径,例如通过 ajax 加载您的文本文件。

Express.js 示例:

var express = require('express')
var app = express()

app.get('/', function (req, res) {
  res.sendFile('index.html')
})

app.use(express.static('public')) // now you can load any file from your public folder (e.g. public/weather_data.txt)

app.listen(3000, function () {
  console.log('Example app listening on port 3000!')
})

在您的浏览器中 javascript 然后您可以执行(使用 jquery):

$.ajax({
  url: "./public/weather_data.txt",
  async: false,
  success: function (data){
    // Do whatever you want with the data
    document.getElementById('myElement').innerHTML = data
  }
})

这有用吗?