42 lines
1.0 KiB
JavaScript
42 lines
1.0 KiB
JavaScript
const states = global.get('homeassistant.homeAssistant.states')
|
|
const temp_F = states['sensor.home_tempest_temperature'].state
|
|
const elevation_ft = 693
|
|
|
|
// Get the pressure from the payload
|
|
let pressure_inHg = msg.payload
|
|
|
|
if (isNaN(pressure_inHg)) {
|
|
node.error("Invalid pressure value in msg.payload: " + msg.payload)
|
|
msg.payload = null
|
|
return null
|
|
}
|
|
|
|
// Convert pressure from inHg to hPa
|
|
let pressure_hPa = pressure_inHg * 33.8639
|
|
|
|
// Convert temperature to °C
|
|
let temp_C = (temp_F - 32) * (5 / 9)
|
|
|
|
// Convert elevation from feet to meters
|
|
let elevation_m = elevation_ft / 3.28084
|
|
|
|
// Apply the barometric formula
|
|
let slp = pressure_hPa * Math.pow(
|
|
1 - ((0.0065 * elevation_m) / (temp_C + (0.0065 * elevation_m) + 273.15)),
|
|
-5.257
|
|
)
|
|
|
|
// Optional: Convert back to inHg
|
|
let slp_inHg = slp / 33.8639
|
|
|
|
// Round both values
|
|
slp = Math.round(slp * 100) / 100
|
|
slp_inHg = Math.round(slp_inHg * 100) / 100
|
|
|
|
// Return the SLP value
|
|
msg.payload = slp_inHg
|
|
|
|
node.status({fill:'Success',shape:'dot',text:'green'})
|
|
|
|
return msg
|