Highcharts:从存储在文本文件中的字典中读取数据

Highcharts: reading data from a dictionary stored in a text file

我正在尝试弄清楚如何从 python 脚本输出中获取传感器数据到 Highcharts。我决定将 python 传感器数据作为字典保存在文本文件中,而不是直接在 javascript 中编写所有代码。我的 data.txt 文件如下所示:

    {'outdoor_temp': 45.7, 'outdoor_humid': 91.8}

我的 Highcharts 代码的相关部分如下所示:

    load: function () {
    var series = this.series[0];
    setInterval(function () {
      var x = (new Date()).getTime(), 
      file=fopen(data.txt,0)
      y = (file["outdoor_temp"]);
      series.addPoint([x, y], true, true);
    }, 2000);

为什么这不读取存储在 data.txt 中的字典值?

如果您想将数据存储在文件中,我建议您使用 JSON。 JSON 开箱即用地受到 Python 和 JavaScript 的支持,并且非常易于使用。

使用Python

写入文件
import json

data = {'outdoor_temp': 45.7, 'outdoor_humid': 91.8}

with open("data.json", "w") as f:
    json.dump(data, f)

创建的 data.json 文件如下所示:

{"outdoor_temp": 45.7, "outdoor_humid": 91.8}

使用 Node 和 JavaScript

读取文件

然后您可以使用以下 Node 程序读取创建的文件:

import { readFile } from "fs/promises";

// await can only be used in an async function 
(async () => {
  const file = await readFile("data.json", { encoding: "utf-8"});
  const parsed = JSON.parse(file);
  // log all data
  console.log(parsed);
  // log outdoor temperature
  console.log(parsed.outdoor_temp)
})()

Please note: You will need to implement some error handling for the above programs yourself.

备注

如果您想存储数据并可能进行一些计算,做更多的可视化等。我建议您使用数据库,例如 MongoDB or a timeseries database such as InfluxDB instead of single files. Grafana 如果您正在寻找一些不错的可视化,那么也可以集成它们数据工具。