Set Battery Monitor voltage and current

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.

1 Like