Estoy escribiendo un código que se suscribe a un servidor MQTT y recibe un cuerpo de respuesta que contiene información que almacenaría en una base de datos. Me he suscrito con éxito y recibo una respuesta, que traté de analizar sin éxito, para recuperar los datos que necesito. JSON.stringify(message) que da un búfer ilegible. También probé JSON.parse(message) , que devuelve [object Object] . ¿Cuál es la mejor manera de analizar los datos? También me gustaría convertir solo los 4 dígitos en el atributo "datos" a un valor de punto flotante HEX de 32 bits, por ejemplo, "C382" = -260 , de https://babbage.cs.qc.cuny.edu/ieee-754. viejo/32bit.html
y de vuelta al decimal.
Este es un ejemplo del cuerpo de respuesta sin análisis.
{"devId":"493C220223030476","msgType":"rs485ValueRpt" "data":"0103046026C382D569","timestamp":"1650447596"}.Aquí está mi código
const mqtt = require('mqtt'); const options={ port:someport, username:'someusername', password:'somepassword', clientId:"randomnumber" } const client= mqtt.connect("mqtt://site.com", options); var topic_list="sometopic" client.on('connect',function () { client.subscribe(topic_list, function (err, granted) { if (err) { console.error(err); return; } console.log('Subscribed to topic: ' + topic_list); }); client.on('message',function(topic, message, packet){ console.log("message is " + JSON.stringify(message)); console.log("topic is "+ topic); }); console.log("connected flag "+ client.connected); }) 
también probé JSON.parse(message) , que devuelve [objeto objeto].
JSON.parse() solo funciona cuando la entrada es una cadena
JSON.stringify() solo funciona cuando la entrada es un objeto JavaScript
El objeto de message pasado a la devolución de llamada no es ninguno, es un búfer. Por lo tanto, primero deberá convertir el búfer en una cadena.
Lo siguiente debería obtener un objeto del mensaje y luego convertirlo nuevamente en una cadena embellecida para imprimirlo.
client.on('message',function(topic, message, packet){ var msgObject = JSON.parse(message.toString()) console.log("message is " + JSON.stringify(msgObject,'',2)); console.log("topic is "+ topic); });