Estoy tratando de descubrir cómo obtener datos del sensor de una salida de secuencia de comandos de Python en Highcharts. En lugar de escribir todo mi código directamente en javascript, decidí guardar los datos del sensor de Python como un diccionario en un archivo de texto. Mi archivo data.txt se ve así:
{'outdoor_temp': 45.7, 'outdoor_humid': 91.8}La parte relevante de mi código de Highcharts se ve así:
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);¿Por qué esto no lee el valor del diccionario almacenado en data.txt?
Si desea almacenar sus datos en archivos, le recomiendo que use JSON . JSON es compatible desde el primer momento tanto con Python como con JavaScript y es muy fácil trabajar con él.
import json data = {'outdoor_temp': 45.7, 'outdoor_humid': 91.8} with open("data.json", "w") as f: json.dump(data, f) El archivo data.json creado se ve así:
{"outdoor_temp": 45.7, "outdoor_humid": 91.8}Luego puede leer el archivo creado usando el siguiente programa 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) })()Tenga en cuenta: usted mismo deberá implementar algún manejo de errores para los programas anteriores.
Si desea almacenar los datos y tal vez hacer algunos cálculos, hacer más visualizaciones, etc. Le recomiendo que use una base de datos como MongoDB o una base de datos de series temporales como InfluxDB en lugar de archivos individuales. Grafana también tiene integraciones para ellos si está buscando una buena herramienta de visualización para sus datos.