<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Battery Level]]></title><description><![CDATA[<p dir="auto">Hello,</p>
<p dir="auto">I'm trying to get the battery level percentage reported but only get battery voltage. Here is my sketch:</p>
<pre><code>// General settings
#define SKETCH_NAME "TempSensorSuite"
#define SKETCH_VERSION "2.0"
#define MY_BAUD_RATE 9600
#define MY_NODE_ID 2

#define MY_RADIO_NRF24
#define MY_SIGNAL_REPORT_ENABLED

#define MY_SPLASH_SCREEN_DISABLED

//#define MY_TRANSPORT_UPLINK_CHECK_DISABLED
#define MY_TRANSPORT_WAIT_READY_MS  5000
#define MY_SLEEP_TRANSPORT_RECONNECT_TIMEOUT_MS 2000
//#define MY_PARENT_NODE_ID 0
//#define MY_PARENT_NODE_IS_STATIC

#define NODEMANAGER_DEBUG OFF //
#define NODEMANAGER_DEBUG_VERBOSE OFF
#define NODEMANAGER_SLEEP ON //
#define NODEMANAGER_RECEIVE OFF
#define NODEMANAGER_POWER_MANAGER OFF
#define NODEMANAGER_CONDITIONAL_REPORT ON
#define NODEMANAGER_INTERRUPTS OFF
#define NODEMANAGER_EEPROM OFF
#define NODEMANAGER_TIME OFF
#define NODEMANAGER_RTC OFF
#define NODEMANAGER_SD OFF
#define NODEMANAGER_HOOKING OFF
#define NODEMANAGER_OTA_CONFIGURATION OFF
#define NODEMANAGER_SERIAL_INPUT OFF

// disable Forecast on BME280 - not working with OTA conf Off!
#define NODEMANAGER_SENSOR_BOSCH_LITE ON

#include &lt;MySensors_NodeManager.h&gt;

// BME280
#include &lt;sensors/SensorBME280.h&gt;
#define BME280_ADDRESS (0x76)
#define SEALEVELPRESSURE_HPA (1019.7)
//#define CHILD_ID_AMBIENT 1
SensorBME280 ambient;

// Battery Level (default child_id 201)
#include &lt;sensors/SensorBattery.h&gt;
SensorBattery battery;

// Radio Signal Quality (default child_id 202)
#include &lt;sensors/SensorSignal.h&gt;
SensorSignal signal;

// before
void before() {

  // call NodeManager setup routine
   
  ambient.children.get(1)-&gt;setDescription("tssuite_temp");
  ambient.children.get(2)-&gt;setDescription("tssuite_hum");
  ambient.children.get(3)-&gt;setDescription("tssuite_press");
  ambient.children.get(4)-&gt;setDescription("tssuite_fcast");
  /*ambient.children.get(1)-&gt;setValueDelta(0.2);
  ambient.children.get(2)-&gt;setValueDelta(0.5);
  ambient.children.get(3)-&gt;setValueDelta(0.5);*/
   // let controller know ambient pressure sensor reports in hPa
  ambient.children.get(3)-&gt;setUnitPrefix("hPa");
   
  // send unit prefixes to controller (i.e. V, A, hPa, %, etc.)
  nodeManager.setSendUnitPrefix(true);

  // battery level - BOD set to 1.8V, 2xAA = 3V max
  battery.children.get(1)-&gt;setDescription("tssuite_bat");
  battery.setSendBatteryLevel(true);
  battery.setMinVoltage(1.8);
  battery.setMaxVoltage(3.2);

  // sleep cycle
  nodeManager.setSleepMinutes(5);
  //nodeManager.setSleepMinutes(1);
  // 500ms to let the transport send all buffer before sleeping.
  //nodeManager.setSleepBetweenSend(500);
  
  // report freq for ambient measurements
  ambient.setReportIntervalMinutes(5);
  //ambient.setReportIntervalMinutes(1);

  // report freq for battery
  battery.setReportIntervalDays(1);
  //battery.setReportIntervalMinutes(1);

  // report freq for radio signal - pseudo SR_TX_RSSI and SR_UPLINK_QUALITY are available for NRF24
  signal.children.get(1)-&gt;setDescription("tssuite_sin");
  signal.setReportIntervalDays(1);
  //signal.setReportIntervalMinutes(1);  
  signal.setSignalCommand(SR_UPLINK_QUALITY);

  //nodeManager.setPowerManager(power);

  // call NodeManager before routine
  nodeManager.before();
}

// presentation
void presentation() {
//  long int t1 = millis();
  // call NodeManager presentation routine
  nodeManager.presentation();
//  long int t2 = millis();
//  Serial.print("Presentation: "); Serial.print(t2-t1); Serial.println(" milliseconds");
}

// setup
void setup() { 
//  long int t1 = millis();
  nodeManager.setup();  
  ambient.setSampling(Adafruit_BME280::MODE_FORCED,
        Adafruit_BME280::SAMPLING_X1,  // temperature
        Adafruit_BME280::SAMPLING_X1, // pressure
        Adafruit_BME280::SAMPLING_X1,  // humidity
        Adafruit_BME280::FILTER_OFF, //filter
        Adafruit_BME280::STANDBY_MS_0_5);        
//  long int t2 = millis();
//  Serial.print("Setup: "); Serial.print(t2-t1); Serial.println(" milliseconds");
}

// loop
void loop() {
  //long int t1 = millis();
  ambient.takeForcedMeasurement(); 
  nodeManager.loop();
  //long int t2 = millis();
  //Serial.print("Loop: "); Serial.print(t2-t1); Serial.println(" milliseconds");
}

#if NODEMANAGER_RECEIVE == ON
// receive
void receive(const MyMessage &amp;message) {
  // call NodeManager receive routine
  nodeManager.receive(message);
}
#endif

#if NODEMANAGER_TIME == ON
// receiveTime
void receiveTime(unsigned long ts) {
  // call NodeManager receiveTime routine
  nodeManager.receiveTime(ts);
}
#endif
</code></pre>
<p dir="auto">I'm probably doing something wrong. Any help will be much appreciated.</p>
<p dir="auto">Thanks</p>
]]></description><link>https://forum.mysensors.org/topic/12008/battery-level</link><generator>RSS for Node</generator><lastBuildDate>Fri, 15 May 2026 02:11:30 GMT</lastBuildDate><atom:link href="https://forum.mysensors.org/topic/12008.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 07 Aug 2022 21:11:09 GMT</pubDate><ttl>60</ttl></channel></rss>