Skip to content
  • MySensors
  • OpenHardware.io
  • Categories
  • Recent
  • Tags
  • Popular
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Brand Logo
  1. Home
  2. Development
  3. NodeManager
  4. Battery Level

Battery Level

Scheduled Pinned Locked Moved NodeManager
1 Posts 1 Posters 468 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • B Offline
    B Offline
    bbastos
    wrote on last edited by
    #1

    Hello,

    I'm trying to get the battery level percentage reported but only get battery voltage. Here is my sketch:

    // 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 <MySensors_NodeManager.h>
    
    // BME280
    #include <sensors/SensorBME280.h>
    #define BME280_ADDRESS (0x76)
    #define SEALEVELPRESSURE_HPA (1019.7)
    //#define CHILD_ID_AMBIENT 1
    SensorBME280 ambient;
    
    // Battery Level (default child_id 201)
    #include <sensors/SensorBattery.h>
    SensorBattery battery;
    
    // Radio Signal Quality (default child_id 202)
    #include <sensors/SensorSignal.h>
    SensorSignal signal;
    
    // before
    void before() {
    
      // call NodeManager setup routine
       
      ambient.children.get(1)->setDescription("tssuite_temp");
      ambient.children.get(2)->setDescription("tssuite_hum");
      ambient.children.get(3)->setDescription("tssuite_press");
      ambient.children.get(4)->setDescription("tssuite_fcast");
      /*ambient.children.get(1)->setValueDelta(0.2);
      ambient.children.get(2)->setValueDelta(0.5);
      ambient.children.get(3)->setValueDelta(0.5);*/
       // let controller know ambient pressure sensor reports in hPa
      ambient.children.get(3)->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)->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)->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 &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
    

    I'm probably doing something wrong. Any help will be much appreciated.

    Thanks

    1 Reply Last reply
    0

    Hello! It looks like you're interested in this conversation, but you don't have an account yet.

    Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

    With your input, this post could be even better 💗

    Register Login
    Reply
    • Reply as topic
    Log in to reply
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes


    17

    Online

    12.0k

    Users

    11.2k

    Topics

    113.4k

    Posts


    Copyright 2025 TBD   |   Forum Guidelines   |   Privacy Policy   |   Terms of Service
    • Login

    • Don't have an account? Register

    • Login or register to search.
    • First post
      Last post
    0
    • MySensors
    • OpenHardware.io
    • Categories
    • Recent
    • Tags
    • Popular