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 如果您正在寻找一些不错的可视化,那么也可以集成它们数据工具。
我正在尝试弄清楚如何从 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 如果您正在寻找一些不错的可视化,那么也可以集成它们数据工具。