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. General Discussion
  3. Reporting Battery Level

Reporting Battery Level

Scheduled Pinned Locked Moved General Discussion
23 Posts 6 Posters 11.8k Views 8 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.
  • Fat FlyF Offline
    Fat FlyF Offline
    Fat Fly
    wrote on last edited by
    #1

    How to add to sketch this feature? I use Domoticz controller and serial gateway. Nodes is Arduino mini pro 3,3V with batteries. Today i use door open/close sensor, elecricity meter, moisture sensor.

    A 1 Reply Last reply
    0
    • B Offline
      B Offline
      bjacobse
      wrote on last edited by bjacobse
      #2

      I don't have my sketch available, but I used this code below for measuring 2xAA. I have changed #define MIN_V 1900 (milliVolt) since I have disabled BOD, so Arduino runs to 1,8V, bur NRF24L01+ is working down t0 1,9V
      NOTE: This is only showing battery measuring, it's not a full sketch...

        void loop() 
        {
        #define MIN_V 2700
        #define MAX_V 3200
        int batteryPcnt = min(map(readVcc(), MIN_V, MAX_V, 0, 100), 100); // Convert voltage to percentage
        gw.sendBatteryLevel(batteryPcnt); // Send battery percentage to gateway
         
        } 
        long readVcc() {
          // Read 1.1V reference against AVcc
          // set the reference to Vcc and the measurement to the internal 1.1V reference
          #if defined(__AVR_ATmega32U4__) || defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
            ADMUX = _BV(REFS0) | _BV(MUX4) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
          #elif defined (__AVR_ATtiny24__) || defined(__AVR_ATtiny44__) || defined(__AVR_ATtiny84__)
            ADMUX = _BV(MUX5) | _BV(MUX0);
          #elif defined (__AVR_ATtiny25__) || defined(__AVR_ATtiny45__) || defined(__AVR_ATtiny85__)
            ADMUX = _BV(MUX3) | _BV(MUX2);
          #else
            ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
          #endif  
         
          delay(2); // Wait for Vref to settle
          ADCSRA |= _BV(ADSC); // Start conversion
          while (bit_is_set(ADCSRA,ADSC)); // measuring
         
          uint8_t low  = ADCL; // must read ADCL first - it then locks ADCH  
          uint8_t high = ADCH; // unlocks both
         
          long result = (high<<8) | low;
         
          result = 1125300L / result; // Calculate Vcc (in mV); 1125300 = 1.1*1023*1000
          return result; // Vcc in millivolts
        }
      
      1 Reply Last reply
      1
      • Fat FlyF Offline
        Fat FlyF Offline
        Fat Fly
        wrote on last edited by
        #3

        Okay. I understand but how to add this piece from software to each sketch? Each what arduino powerted from batteryes.

        1 Reply Last reply
        0
        • Fat FlyF Fat Fly

          How to add to sketch this feature? I use Domoticz controller and serial gateway. Nodes is Arduino mini pro 3,3V with batteries. Today i use door open/close sensor, elecricity meter, moisture sensor.

          A Offline
          A Offline
          AWI
          Hero Member
          wrote on last edited by
          #4

          @Fat-Fly Easiest way is to use the Vcc library by @Yveaux

          1 Reply Last reply
          0
          • Fat FlyF Offline
            Fat FlyF Offline
            Fat Fly
            wrote on last edited by
            #5

            This is better. I need cut off Arduino voltage regulator and power led ?

            A 1 Reply Last reply
            0
            • Fat FlyF Fat Fly

              This is better. I need cut off Arduino voltage regulator and power led ?

              A Offline
              A Offline
              AWI
              Hero Member
              wrote on last edited by
              #6

              @Fat-Fly To save power you can... but not needed for the Vcc library to work if you power your pro-mini from the vcc pin ;-)

              1 Reply Last reply
              0
              • Fat FlyF Offline
                Fat FlyF Offline
                Fat Fly
                wrote on last edited by
                #7

                Ok. I try to write sketch.

                1 Reply Last reply
                0
                • Fat FlyF Offline
                  Fat FlyF Offline
                  Fat Fly
                  wrote on last edited by AWI
                  #8
                   * The MySensors Arduino library handles the wireless radio link and protocol
                   * between your home built sensors/actuators and HA controller of choice.
                   * The sensors forms a self healing radio network with optional repeaters. Each
                   * repeater and gateway builds a routing tables in EEPROM which keeps track of the
                   * network topology allowing messages to be routed to nodes.
                   *
                   * Created by Henrik Ekblad <henrik.ekblad@mysensors.org>
                   * Copyright (C) 2013-2015 Sensnology AB
                   * Full contributor list: https://github.com/mysensors/Arduino/graphs/contributors
                   *
                   * Documentation: http://www.mysensors.org
                   * Support Forum: http://forum.mysensors.org
                   *
                   * This program is free software; you can redistribute it and/or
                   * modify it under the terms of the GNU General Public License
                   * version 2 as published by the Free Software Foundation.
                   *
                   *******************************
                   *
                   * DESCRIPTION
                   *
                   * Simple binary switch example 
                   * Connect button or door/window reed switch between 
                   * digitial I/O pin 3 (BUTTON_PIN below) and GND.
                   * http://www.mysensors.org/build/binary
                   */
                  
                  
                  #include <MySensor.h>
                  #include <SPI.h>
                  #include <Bounce2.h>
                  #include <Vcc.h>
                  
                  
                  #define CHILD_ID 3
                  #define BUTTON_PIN  3  // Arduino Digital I/O pin for button/reed switch
                  
                  MySensor gw;
                  Bounce debouncer = Bounce(); 
                  int oldValue=-1;
                  
                  // Change to V_LIGHT if you use S_LIGHT in presentation below
                  MyMessage msg(CHILD_ID,V_TRIPPED);
                  
                  
                  //battery voltage
                  const float VccExpected   = 3.0;
                  const float VccCorrection = 2.860/2.92;  // Measured Vcc by multimeter divided by reported Vcc
                  Vcc vcc(VccCorrection);
                  
                  static int oldBatteryPcnt = 0;
                  
                  void setup()  
                  {  
                    gw.begin();
                  
                   // Setup the button
                    pinMode(BUTTON_PIN,INPUT);
                    // Activate internal pull-up
                    digitalWrite(BUTTON_PIN,HIGH);
                    
                    // After setting up the button, setup debouncer
                    debouncer.attach(BUTTON_PIN);
                    debouncer.interval(5);
                    
                    // Register binary input sensor to gw (they will be created as child devices)
                    // You can use S_DOOR, S_MOTION or S_LIGHT here depending on your usage. 
                    // If S_LIGHT is used, remember to update variable type you send in. See "msg" above.
                    gw.present(CHILD_ID, S_DOOR);  
                  }
                  
                  
                  //  Check if digital input has changed and send in new value
                  void loop() 
                  {
                    debouncer.update();
                    // Get the update value
                    int value = debouncer.read();
                   
                    if (value != oldValue) {
                       // Send in the new value
                       gw.send(msg.set(value==HIGH ? 1 : 0));
                       oldValue = value;
                    }
                    {
                      int batteryPcnt = (int)vcc.Read_Perc(VccExpected);
                      if (oldBatteryPcnt != batteryPcnt)
                      {
                          gw.sendBatteryLevel(batteryPcnt);
                          oldBatteryPcnt = batteryPcnt;
                      }
                  }
                    
                    
                  }'''
                  1 Reply Last reply
                  0
                  • Fat FlyF Offline
                    Fat FlyF Offline
                    Fat Fly
                    wrote on last edited by
                    #9

                    Verification successful says codebender. I do not know working this or not. I can't try. Only in home after working day.

                    1 Reply Last reply
                    1
                    • Fat FlyF Offline
                      Fat FlyF Offline
                      Fat Fly
                      wrote on last edited by
                      #10

                      https://codebender.cc/sketch:337094 This is modified electricity meter sketch with battery level .

                      N 1 Reply Last reply
                      0
                      • Fat FlyF Fat Fly

                        https://codebender.cc/sketch:337094 This is modified electricity meter sketch with battery level .

                        N Offline
                        N Offline
                        Nuubi
                        wrote on last edited by
                        #11

                        @Fat-Fly Nice, interested to try this also.
                        Any idea how long the batteries will last? Electricity meters tend to blink quite often, so not that much sleep..

                        1 Reply Last reply
                        0
                        • Fat FlyF Offline
                          Fat FlyF Offline
                          Fat Fly
                          wrote on last edited by Fat Fly
                          #12

                          At the moment i try this with 2xAA recargeable batteryes but no luck. Gnd and vcc pin. Not working , not reported. if i find batterys.... I search. All remotes is AAA :( 2.68volts from recargeable AA's. where is the fish ?

                          1 Reply Last reply
                          0
                          • Fat FlyF Offline
                            Fat FlyF Offline
                            Fat Fly
                            wrote on last edited by
                            #13

                            From recargeable 2x AA and 2,68V not working.

                            1 Reply Last reply
                            0
                            • Fat FlyF Offline
                              Fat FlyF Offline
                              Fat Fly
                              wrote on last edited by
                              #14

                              I bought 2AA batteries. Working.Domoticz devices page report battery level 3. How to see battery level graph ?

                              A 1 Reply Last reply
                              0
                              • Fat FlyF Fat Fly

                                I bought 2AA batteries. Working.Domoticz devices page report battery level 3. How to see battery level graph ?

                                A Offline
                                A Offline
                                AWI
                                Hero Member
                                wrote on last edited by
                                #15

                                @Fat-Fly to report battery voltage you have to create a S_MULTIMETER sensor and send the voltage with V_VOLTAGE.

                                Sendbatterylevel only changes the battery level in Domoticz in % and can not be shown separate.

                                Tot use your arduino with low voltages you need to change the fuse settings (BOD) with an ISP programmer.

                                1 Reply Last reply
                                0
                                • Fat FlyF Offline
                                  Fat FlyF Offline
                                  Fat Fly
                                  wrote on last edited by
                                  #16

                                  How to i do this ?

                                  A 1 Reply Last reply
                                  0
                                  • Fat FlyF Fat Fly

                                    How to i do this ?

                                    A Offline
                                    A Offline
                                    AWI
                                    Hero Member
                                    wrote on last edited by
                                    #17

                                    @Fat-Fly I will post some code later when I get to a pc. :eyes:

                                    Fat FlyF 1 Reply Last reply
                                    0
                                    • A AWI

                                      @Fat-Fly I will post some code later when I get to a pc. :eyes:

                                      Fat FlyF Offline
                                      Fat FlyF Offline
                                      Fat Fly
                                      wrote on last edited by
                                      #18

                                      @AWI said:

                                      @Fat-Fly I will post some code later when I get to a pc. :eyes:

                                      This is great. I do not find from google search. My mother tongue is Estonian :)

                                      A 1 Reply Last reply
                                      0
                                      • Fat FlyF Fat Fly

                                        @AWI said:

                                        @Fat-Fly I will post some code later when I get to a pc. :eyes:

                                        This is great. I do not find from google search. My mother tongue is Estonian :)

                                        A Offline
                                        A Offline
                                        AWI
                                        Hero Member
                                        wrote on last edited by AWI
                                        #19

                                        @Fat-Fly "Estonia: Between East, West and the World" ;-)

                                        These are the lines of code which should do the trick... you need to put them in the right spot yourself

                                        #define VOLTAGE_CHILD_ID 		5
                                        
                                        MyMessage voltageMsg(VOLTAGE_CHILD_ID, V_VOLTAGE);	// Node voltage
                                        
                                        gw.present(VOLTAGE_CHILD_ID, S_MULTIMETER, "Battery " );
                                        	
                                        float voltage = vcc.Read_Volts() ;
                                        gw.send(voltageMsg.set(voltage,2));				//send battery in Volt 
                                        		
                                        
                                        
                                        1 Reply Last reply
                                        2
                                        • Fat FlyF Offline
                                          Fat FlyF Offline
                                          Fat Fly
                                          wrote on last edited by
                                          #20

                                          Estonia between world and russia. :)

                                          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


                                          13

                                          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