local mavlink_msgs = require("mavlink/mavlink_msgs")
local msg_map = {}
local battery_status_msgid = mavlink_msgs.get_msgid("BATTERY_STATUS")
msg_map[battery_status_msgid] = "BATTERY_STATUS"
-- initialise mavlink rx with number of messages, and buffer depth
mavlink.init(1, 10)
-- register message id to receive
mavlink.register_rx_msgid(battery_status_msgid)
function update()
local telem_data = ESCTelemetryData()
local msg,_,timestamp_ms = mavlink.receive_chan()
if msg then
local parsed_msg = mavlink_msgs.decode(msg, msg_map)
if(parsed_msg.msgid ~= nil and parsed_msg.msgid == battery_status_msgid) then
telem_data:voltage((parsed_msg.voltages[0] or parsed_msg.voltages[1]) / 100)
telem_data:temperature_cdeg(parsed_msg.temperature)
telem_data:current(parsed_msg.current_consumed / 1000)
esc_telem:update_telem_data(1, telem_data, 0x0D)
end
end
return update, 1000
end
return update, 1000
This is the LUA script to do that.