在JavaScript函数中计算加速计方向(节点红色)

在JavaScript函数中计算加速计方向(节点红色),javascript,math,Javascript,Math,如何计算JavaScript函数中传感器的方向?我在中看到了示例,但我不确定如何在计算中应用msg.payload.xAxis/yAxis/zAxis的值。如果可能的话,我需要以新字段的形式将其应用于下面的示例有效负载 { "device":"368640", "deviceType":"Sigfox-Tracker", "version":3, "timestamp":"1535121228", "rssi":"-113.00", "battery":3.28, "temp":21.5, "s

如何计算JavaScript函数中传感器的方向?我在中看到了示例,但我不确定如何在计算中应用msg.payload.xAxis/yAxis/zAxis的值。如果可能的话,我需要以新字段的形式将其应用于下面的示例有效负载

{
"device":"368640",
"deviceType":"Sigfox-Tracker",
"version":3,
"timestamp":"1535121228",
"rssi":"-113.00",
"battery":3.28,
"temp":21.5,
"soil":2107,
"xAxis":61,
"yAxis":-26,
"zAxis":994
}

粘贴的是javascript对象,访问其属性的方法之一是使用下面的like
data.xAxis

我在你的链接中创建了两个函数来进行计算。然后,我使用内置的公式

下面是一个例子:

let数据={
“设备”:“368640”,
“设备类型”:“Sigfox跟踪器”,
“版本”:3,
“时间戳”:“1535121228”,
“rssi”:“-113.00”,
“电池”:3.28,
“温度”:21.5,
“土壤”:2107,
“xAxis”:61,
“yAxis”:-26,
“扎克西斯”:994
}
函数calcRoll(y,z){
返回Math.atan2(y,z)*180/Math.PI;
}
函数calcPitch(x、y、z){
返回Math.atan2(-x,Math.sqrt(y*y+z*z))*180/Math.PI;
}
设dataX=data.xAxis;
设dataY=data.yAxis;
设dataZ=data.zAxis;
让辊=calcRoll(数据Y,数据Z);
让螺距=calcPitch(数据x、数据y、数据z);

log(`roll是:${roll},pitch是${pitch}`)谢谢Andrew,当每个负载报告不同的值时,这是msg.payload中的正确语法吗

let data = msg.payload

function calcRoll(y, z){
  return Math.atan2(y, z) * 180/Math.PI;
}

function calcPitch(x, y, z){
  return Math.atan2(-x, Math.sqrt(y*y + z*z)) * 180/Math.PI;
}

let dataX = data.xAxis;
let dataY = data.yAxis;
let dataZ = data.zAxis;

let roll = calcRoll(dataY, dataZ);
let pitch = calcPitch(dataX, dataY, dataZ);

msg.payload.roll = roll;
msg.payload.pitch = pitch;
return msg;
以下是当新修改的有效负载到达时,我以节点红色查看的调试消息:

{"device":"368640","deviceType":"Sigfox-Tracker","version":3,"timestamp":"1535136195","rssi":"-109.00","battery":3.28,"temp":19.5,"soil":2105,"xAxis":71,"yAxis":-32,"zAxis":1002,"roll":-1.8291836314227448,"pitch":-4.05104777734416}

是否询问如何访问粘贴的对象内部的属性?你也可以展示更多的代码,这将有助于了解上下文,并为你提供一个最有帮助的答案。谢谢你,安德鲁。我试图获取msg.payload的属性:xAxis、yAxis和zAxis,并以与上面发布的链接类似的方式计算方向,但是它需要在JavaScript中完成,因为这是Node-RED的工作原理。嗨,Andrew,我在上面发布了一个答案。这是获取当前msg.payload并生成新的msg.payload的正确语法吗?我已经展示了一个新生成的有效载荷的示例代码-如果是正确的数字。@MatthewButler您应该用这些额外的信息编辑您的问题,而不是创建一个答案,但这看起来是正确的