Skip to content
  • 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. My Project
  3. My 2AA battery sensor
  • Getting Started
  • Controller
  • Build
  • Hardware
  • Download/API
  • Forum
  • Store

My 2AA battery sensor

Scheduled Pinned Locked Moved My Project
90 Posts 27 Posters 106.6k Views 36 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.
  • m26872M m26872

    @funky81 said:

    @m26872 I still dont get it. Why I cant get the same efficient power like you....

    I see that your sketch uses the internal battery monitoring method. That isn't possible when using the design as in this threads subject, with a step-up regulator that makes Vbat different from Vcc. Are you sure you're not confusing my design with EaysIoTs ?

    Anyhow, I can't explain the sleep mode consumption, it seems like something isn't sleeping like it should.

    Here's my sketch for Node 105/106:

    // Egen kombo-nod för DHT22, BMP180 och batterimonitering.
    // 20141019
    // DHT-22 Working voltage: DC 3.3-5.5V (so connect after step-up regulator). http://www.adafruit.com/datasheets/Digital%20humidity%20and%20temperature%20sensor%20AM2302.pdf
    // BMP180 (compatible with BMP085) working voltage 1.8-3.6V. Different boards with different power and pullups. Datasheet for ic only: http://www.adafruit.com/datasheets/BST-BMP180-DS000-09.pdf 
    #include <SPI.h>
    #include <MySensor.h>  
    #include <DHT.h>
    #include <Wire.h>
    #include <Adafruit_BMP085.h> // N.b. The new library includes the function readSealevelPressure() 
    
    #define NODE_ID 106  // Manually asign Node Id  <<<<<<<<<<<<<<<<<<<  ENTER THIS !!!!
    #define ONE_WIRE_BUS 3 // Pin where dallase sensor bus is connected. <<<<<<<<<<<<<<<  DON'T FORGET 4k7 PULL-UP !!! >>>>>>>>>>>>>>>>
    #define VBAT_PER_BITS 0.003363075  // Calculated volts per bit from the used battery montoring voltage divider.   Internal_ref=1.1V, res=10bit=2^10-1=1023, Eg for 3V (2AA): Vin/Vb=R1/(R1+R2)=470e3/(1e6+470e3),  Vlim=Vb/Vin*1.1=3.44V, Volts per bit = Vlim/1023= 0.003363075
    #define VMIN 1.9  // Battery monitor lower level. Vmin_radio=1.9V
    #define VMAX 3.3  //  " " " high level. Vmin<Vmax<=3.44
    #define CHILD_ID_HUM 0
    #define CHILD_ID_TEMP 1
    #define BARO_CHILD 2
    //#define TEMP_CHILD 3  // Commented since don't need the Bmp tempsensor
    #define HUMIDITY_SENSOR_DIGITAL_PIN 3  // <<<<<<<<<<<<<<<<<<<<<<<<  Use 4k7 Pull-up. MySensors webpage doesn't use, datasheet does. Adafruit does https://learn.adafruit.com/dht/using-a-dhtxx-sensor
    
    unsigned long SLEEP_TIME = 15*60000; //  sleep time between reads (in milliseconds)
    unsigned long preSleepTime = 5*60000; //  sleep time for extra pre hum-reading for simple avaraging filter
    Adafruit_BMP085 bmp = Adafruit_BMP085();      // Digital Pressure Sensor 
    MySensor gw;
    DHT dht;
    float lastTemp;
    float lastHum;
    float lastPressure = -1;
    //float lastBmpTemp = -1; // Commented since don't need the Bmp tempsensor
    MyMessage msgHum(CHILD_ID_HUM, V_HUM);
    MyMessage msgTemp(CHILD_ID_TEMP, V_TEMP);
    //MyMessage tempMsg(TEMP_CHILD, V_TEMP); // Commented since don't need the Bmp tempsensor
    MyMessage pressureMsg(BARO_CHILD, V_PRESSURE);
    int BATTERY_SENSE_PIN = A0;  // select the input pin for the battery sense point
    int oldBatteryPcnt = 0;
    
    void setup()  
    { 
      analogReference(INTERNAL);    // use the 1.1 V internal reference for battery level measuring
      delay(500); // Allow time for radio if power used as reset <<<<<<<<<<<<<< Experimented with good result 
      gw.begin(NULL,NODE_ID); // Startup and initialize MySensors library. Set callback for incoming messages. 
      dht.setup(HUMIDITY_SENSOR_DIGITAL_PIN); 
    
      gw.sendSketchInfo("EgHumBarTemBatv2", "2.0 20141110");   // Send the Sketch Version Information to the Gateway
      
      if (!bmp.begin()) {
    	Serial.println("Could not find a valid BMP085 sensor, check wiring!");
    	while (1) {  }
      }
    
      gw.present(CHILD_ID_HUM, S_HUM);   // Register all sensors to gw (they will be created as child devices)
      gw.present(CHILD_ID_TEMP, S_TEMP);
      gw.present(BARO_CHILD, S_BARO);
    //  gw.present(TEMP_CHILD, S_TEMP); // Commented since don't need the Bmp tempsensor
      
    }
    
    void loop()      
    {  
      delay(dht.getMinimumSamplingPeriod());
      
      float humidity_1 = dht.getHumidity();
      if (isnan(humidity_1)) {
    	  Serial.println("Failed reading humidity_1 from DHT");
      } 
    //  else {
    //      Serial.print("Hum1: ");
    //      Serial.println(humidity_1);
    //  }  
      
      gw.sleep(preSleepTime); //sleep shortly until the "real" processing happens
      
      delay(dht.getMinimumSamplingPeriod());
    
      float humidity_2 = dht.getHumidity();
      if (isnan(humidity_2)) {
    	  Serial.println("Failed reading humidity_2 from DHT");
      } 
    //  else {
    //      Serial.print("Hum2: ");
    //      Serial.println(humidity_2);
    //  }
      if ( isnan(humidity_1) && isnan(humidity_2) ) {
    	Serial.println("Failed reading humidity_1 and humidity_2 from DHT");
      }
      else if ( isnan(humidity_2) && !isnan(humidity_1) ) { // && abs(humidity_1-lastHum)>2. ) {  // Ev hysteres
    	gw.send(msgHum.set(humidity_1, 1));
    	lastHum = humidity_1;
    //    Serial.println("Humidity_1 sent to gw.");
      } 
      else if ( isnan(humidity_1) && !isnan(humidity_2) ) { // && abs(humidity_2-lastHum)>2. ) {
    	gw.send(msgHum.set(humidity_2, 1));
    	lastHum = humidity_2;
    //    Serial.println("Humidity_2 sent to gw.");
      }  
      else {
    //    Serial.println("Else mean calc");
    	float humidity_m = (humidity_1+humidity_2)/2. ;  // Averageing the two.
    //    if ( abs(humidity_m-lastHum) > 2. ) {  
    	  gw.send(msgHum.set(humidity_m, 1));
    	  lastHum = humidity_m;
    //      Serial.println("The mean humidity_m sent to gw.");
    //    }
      }
    
      float temperature = dht.getTemperature();
      if (isnan(temperature)) {
    	  Serial.println("Failed reading temperature from DHT");
      } else if (temperature != lastTemp) {
    	lastTemp = temperature;
    	gw.send(msgTemp.set(temperature, 1));  // Always send temperature
    //      Serial.print("Sent temp: ");
    //      Serial.println(temperature);
      }
    
      float pressure = bmp.readPressure()/100;
    //  float pressureS = bmp.readSealevelPressure(75.)/100;
    //  Serial.print("Pressure = "); Serial.print(pressure); Serial.println(" Pa");
    //  Serial.print("SeaLevelPressure = "); Serial.print(pressureS); Serial.println(" Pa");
      if (pressure != lastPressure) {
    	gw.send(pressureMsg.set(pressure, 0));
    	lastPressure = pressure;
    //    Serial.print("Sent pressure: ");
    //    Serial.println(pressure);
      }
    //  float bmpTemperature = bmp.readTemperature(); // Commented since don't need the Bmp tempsensor
    ////  Serial.print("Temperature = "); Serial.print(bmpTemperature); Serial.println(" *C");
    //  if (bmpTemperature != lastBmpTemp) {
    //    gw.send(tempMsg.set(bmpTemperature,1));
    //    lastBmpTemp = bmpTemperature;
    //  }
    
      int sensorValue = analogRead(BATTERY_SENSE_PIN);    // Battery monitoring reading
    //  Serial.println(sensorValue);
      float Vbat  = sensorValue * VBAT_PER_BITS;
    //  Serial.print("Battery Voltage: "); Serial.print(Vbat); Serial.println(" V");
     //int batteryPcnt = sensorValue / 10;
      int batteryPcnt = static_cast<int>(((Vbat-VMIN)/(VMAX-VMIN))*100.);   
    //  Serial.print("Battery percent: "); Serial.print(batteryPcnt); Serial.println(" %");
      if (oldBatteryPcnt != batteryPcnt) {
    	gw.sendBatteryLevel(batteryPcnt);
    	oldBatteryPcnt = batteryPcnt;
      }
    
      gw.sleep(SLEEP_TIME); //sleep a bit
    }
    
    funky81F Offline
    funky81F Offline
    funky81
    wrote on last edited by
    #38

    @m26872 in my previous sketch, yes, i'm trying to use EasyIOT's (Thanks @EasyIoT :+1: )
    anyway, i'll flash with yours. I'll let know the result

    1 Reply Last reply
    0
    • m26872M Offline
      m26872M Offline
      m26872
      Hardware Contributor
      wrote on last edited by
      #39

      I declare the 6 months criteria easily passed. And the chinese step up regulator to be good value for money. Next target; 12 months.
      Nod105106_maj09.png

      m26872M 1 Reply Last reply
      1
      • sundberg84S Offline
        sundberg84S Offline
        sundberg84
        Hardware Contributor
        wrote on last edited by sundberg84
        #40

        Hi!
        This is also what im trying to do... have the same components/material as you and added the resistors for battery measurement. I dont get this long life (sleeps 15min, activated and sends).

        Can you post some sort of schematics or more detailed pictures so i can see your connections?
        Would be great!
        Here is my own try for a schematics:
        http://forum.mysensors.org/uploads/upload-5ed3f6ed-2d8c-4e6e-83bf-407973550c49.jpg

        Controller: Proxmox VM - Home Assistant
        MySensors GW: Arduino Uno - W5100 Ethernet, Gw Shield Nrf24l01+ 2,4Ghz
        MySensors GW: Arduino Uno - Gw Shield RFM69, 433mhz
        RFLink GW - Arduino Mega + RFLink Shield, 433mhz

        m26872M 1 Reply Last reply
        0
        • SweebeeS Offline
          SweebeeS Offline
          Sweebee
          wrote on last edited by
          #41

          A tip for much better batterylife: burn a new bootloader for 1mhz. Now you can attach the arduino and nrf directly to the batteries and you can measure the battery with the Internal voltage meter of the 328p. If you use a dht you attach the step-up conv. And only attach the dht to it.

          m26872M 1 Reply Last reply
          0
          • sundberg84S sundberg84

            Hi!
            This is also what im trying to do... have the same components/material as you and added the resistors for battery measurement. I dont get this long life (sleeps 15min, activated and sends).

            Can you post some sort of schematics or more detailed pictures so i can see your connections?
            Would be great!
            Here is my own try for a schematics:
            http://forum.mysensors.org/uploads/upload-5ed3f6ed-2d8c-4e6e-83bf-407973550c49.jpg

            m26872M Offline
            m26872M Offline
            m26872
            Hardware Contributor
            wrote on last edited by
            #42

            @sundberg84
            I've looked at your lovely drawing before and I don't see anything wrong with it except from that 0.1uF capacitor should be in parallell just with the 470k resistor, but it shouldn't matter regarding battery life time. What would be more interesting is to see your sketch. Or do you use the same as I do?

            A schematic and a few better pictures is on my to do list, but will probably come sooner now since you asked for it.

            1 Reply Last reply
            0
            • sundberg84S Offline
              sundberg84S Offline
              sundberg84
              Hardware Contributor
              wrote on last edited by sundberg84
              #43

              @m26872
              Pretty much the same, i have stolen majority of your code:
              Ive a array to get an average battery value each hour:

              #include <SPI.h>
              #include <MySensor.h>  
              #include <DHT.h>  
              
              //ställ in varje gång!=========================
              #define SketchName "Sovrum Uppe"
              #define SketchVer "1.0"
              #define NodeID 2
              #define VBAT_PER_BITS 0.003363075  // Calculated volts per bit from the used battery montoring voltage divider.   Internal_ref=1.1V, res=10bit=2^10-1=1023, Eg for 3V (2AA): Vin/Vb=R1/(R1+R2)=470e3/(1e6+470e3),  Vlim=Vb/Vin*1.1=3.44V, Volts per bit = Vlim/1023= 0.003363075
              #define VMIN 1.9  // Battery monitor lower level. Vmin_radio=1.9V
              #define VMAX 3.3  //  " " " high level. Vmin<Vmax<=3.44
              #define CHILD_ID_HUM 0
              #define CHILD_ID_TEMP 1
              #define HUMIDITY_SENSOR_DIGITAL_PIN 3
              int BATTERY_SENSE_PIN = A0;  // select the input pin for the battery sense point
              unsigned long SLEEP_TIME = 15*60000;
              //unsigned long SLEEP_TIME = 5000; //debug
              //Ställ även in gw.begin(,,,)
              //ställ in varje gång!=========================
              
              float lastTemp;
              float lastHum;
              boolean metric = true; 
              int batteryPcnt = 0;
              int batLoop = 0;
              int batArray[3];
              
              MySensor gw;
              DHT dht;
              
              MyMessage msgHum(CHILD_ID_HUM, V_HUM);
              MyMessage msgTemp(CHILD_ID_TEMP, V_TEMP);
              
              void setup()  
              { 
              // use the 1.1 V internal reference
                analogReference(INTERNAL);
                delay(500); // Allow time for radio if power used as reset <<<<<<<<<<<<<< Experimented with good result 
                 
                gw.begin(NULL, NodeID, false);
              //incomingMessageCallback - Callback function for incoming messages from other nodes or controller and request responses. Default is NULL.
              //nodeId - The unique id (1-254) for this sensor. Default is AUTO(255) which means sensor tries to fetch an id from controller.
              //repeaterMode - Activate repeater mode. This node will forward messages to other nodes in the radio network. Make sure to call process() regularly. Default in false
                
                dht.setup(HUMIDITY_SENSOR_DIGITAL_PIN); 
              
                // Send the Sketch Version Information to the Gateway
                gw.sendSketchInfo(SketchName, SketchVer);
              
                // Register all sensors to gw (they will be created as child devices)
                gw.present(CHILD_ID_HUM, S_HUM);
                gw.present(CHILD_ID_TEMP, S_TEMP);
                
                metric = gw.getConfig().isMetric;
              }
              
              void loop()      
              {  
                int sensorValue = analogRead(BATTERY_SENSE_PIN);    // Battery monitoring reading
              delay(1000);
                delay(dht.getMinimumSamplingPeriod());
              
               
                float temperature = dht.getTemperature();
                Serial.print("Temp: "); Serial.print(temperature); Serial.println(" C");
                
               if (temperature > 0) {
                 gw.send(msgTemp.set(temperature, 1));
                }
               
              delay(1000);
               
                float humidity = dht.getHumidity();
                Serial.print("Hum: "); Serial.print(humidity); Serial.println(" %");
                 
                 if (humidity > 0) {
                  gw.send(msgHum.set(humidity, 1));
              }
              
              delay(1000);
                 
                 float Vbat  = sensorValue * VBAT_PER_BITS;
                 int batteryPcnt = static_cast<int>(((Vbat-VMIN)/(VMAX-VMIN))*100.);   
               Serial.print("Battery percent: "); Serial.print(batteryPcnt); Serial.println(" %");  
                 batArray[batLoop] = batteryPcnt;
                
                 if (batLoop > 2) {
                   
                   batteryPcnt = (batArray[0] + batArray[1] + batArray[2] + batArray[3]);
                   batteryPcnt = batteryPcnt / 4;
                  Serial.print("Battery percent (Avg (4):) "); Serial.print(batteryPcnt); Serial.println(" %");
              
                     gw.sendBatteryLevel(batteryPcnt);
                     batLoop = 0;   
                   }
                   else 
                   {
                   batLoop = batLoop + 1;
                   }
                 
                gw.sleep(SLEEP_TIME); //sleep a bit
              }
              

              Controller: Proxmox VM - Home Assistant
              MySensors GW: Arduino Uno - W5100 Ethernet, Gw Shield Nrf24l01+ 2,4Ghz
              MySensors GW: Arduino Uno - Gw Shield RFM69, 433mhz
              RFLink GW - Arduino Mega + RFLink Shield, 433mhz

              m26872M 1 Reply Last reply
              0
              • SweebeeS Sweebee

                A tip for much better batterylife: burn a new bootloader for 1mhz. Now you can attach the arduino and nrf directly to the batteries and you can measure the battery with the Internal voltage meter of the 328p. If you use a dht you attach the step-up conv. And only attach the dht to it.

                m26872M Offline
                m26872M Offline
                m26872
                Hardware Contributor
                wrote on last edited by
                #44

                @Sweebee
                It's already been discussed earlier in this thread (see EasyIoTs posts above), it's nevertheless a very good tip. I also have some test nodes running, but I consider it to be the next step from the "basic" design which was this threads concept. If I'll post something with this low-power-tweaked design it'll therefore be in a new thread. I should probably write something about this as an update in the first post...

                1 Reply Last reply
                0
                • sundberg84S sundberg84

                  @m26872
                  Pretty much the same, i have stolen majority of your code:
                  Ive a array to get an average battery value each hour:

                  #include <SPI.h>
                  #include <MySensor.h>  
                  #include <DHT.h>  
                  
                  //ställ in varje gång!=========================
                  #define SketchName "Sovrum Uppe"
                  #define SketchVer "1.0"
                  #define NodeID 2
                  #define VBAT_PER_BITS 0.003363075  // Calculated volts per bit from the used battery montoring voltage divider.   Internal_ref=1.1V, res=10bit=2^10-1=1023, Eg for 3V (2AA): Vin/Vb=R1/(R1+R2)=470e3/(1e6+470e3),  Vlim=Vb/Vin*1.1=3.44V, Volts per bit = Vlim/1023= 0.003363075
                  #define VMIN 1.9  // Battery monitor lower level. Vmin_radio=1.9V
                  #define VMAX 3.3  //  " " " high level. Vmin<Vmax<=3.44
                  #define CHILD_ID_HUM 0
                  #define CHILD_ID_TEMP 1
                  #define HUMIDITY_SENSOR_DIGITAL_PIN 3
                  int BATTERY_SENSE_PIN = A0;  // select the input pin for the battery sense point
                  unsigned long SLEEP_TIME = 15*60000;
                  //unsigned long SLEEP_TIME = 5000; //debug
                  //Ställ även in gw.begin(,,,)
                  //ställ in varje gång!=========================
                  
                  float lastTemp;
                  float lastHum;
                  boolean metric = true; 
                  int batteryPcnt = 0;
                  int batLoop = 0;
                  int batArray[3];
                  
                  MySensor gw;
                  DHT dht;
                  
                  MyMessage msgHum(CHILD_ID_HUM, V_HUM);
                  MyMessage msgTemp(CHILD_ID_TEMP, V_TEMP);
                  
                  void setup()  
                  { 
                  // use the 1.1 V internal reference
                    analogReference(INTERNAL);
                    delay(500); // Allow time for radio if power used as reset <<<<<<<<<<<<<< Experimented with good result 
                     
                    gw.begin(NULL, NodeID, false);
                  //incomingMessageCallback - Callback function for incoming messages from other nodes or controller and request responses. Default is NULL.
                  //nodeId - The unique id (1-254) for this sensor. Default is AUTO(255) which means sensor tries to fetch an id from controller.
                  //repeaterMode - Activate repeater mode. This node will forward messages to other nodes in the radio network. Make sure to call process() regularly. Default in false
                    
                    dht.setup(HUMIDITY_SENSOR_DIGITAL_PIN); 
                  
                    // Send the Sketch Version Information to the Gateway
                    gw.sendSketchInfo(SketchName, SketchVer);
                  
                    // Register all sensors to gw (they will be created as child devices)
                    gw.present(CHILD_ID_HUM, S_HUM);
                    gw.present(CHILD_ID_TEMP, S_TEMP);
                    
                    metric = gw.getConfig().isMetric;
                  }
                  
                  void loop()      
                  {  
                    int sensorValue = analogRead(BATTERY_SENSE_PIN);    // Battery monitoring reading
                  delay(1000);
                    delay(dht.getMinimumSamplingPeriod());
                  
                   
                    float temperature = dht.getTemperature();
                    Serial.print("Temp: "); Serial.print(temperature); Serial.println(" C");
                    
                   if (temperature > 0) {
                     gw.send(msgTemp.set(temperature, 1));
                    }
                   
                  delay(1000);
                   
                    float humidity = dht.getHumidity();
                    Serial.print("Hum: "); Serial.print(humidity); Serial.println(" %");
                     
                     if (humidity > 0) {
                      gw.send(msgHum.set(humidity, 1));
                  }
                  
                  delay(1000);
                     
                     float Vbat  = sensorValue * VBAT_PER_BITS;
                     int batteryPcnt = static_cast<int>(((Vbat-VMIN)/(VMAX-VMIN))*100.);   
                   Serial.print("Battery percent: "); Serial.print(batteryPcnt); Serial.println(" %");  
                     batArray[batLoop] = batteryPcnt;
                    
                     if (batLoop > 2) {
                       
                       batteryPcnt = (batArray[0] + batArray[1] + batArray[2] + batArray[3]);
                       batteryPcnt = batteryPcnt / 4;
                      Serial.print("Battery percent (Avg (4):) "); Serial.print(batteryPcnt); Serial.println(" %");
                  
                         gw.sendBatteryLevel(batteryPcnt);
                         batLoop = 0;   
                       }
                       else 
                       {
                       batLoop = batLoop + 1;
                       }
                     
                    gw.sleep(SLEEP_TIME); //sleep a bit
                  }
                  
                  m26872M Offline
                  m26872M Offline
                  m26872
                  Hardware Contributor
                  wrote on last edited by
                  #45

                  @sundberg84
                  I'm no code expert, and the only thing I can think of is that your "delay(1000)" will keep the power hungry radio awake. If you need delays (apart from debug) I'd prefer sleep instead. What's your battery life time look like?

                  1 Reply Last reply
                  0
                  • m26872M Offline
                    m26872M Offline
                    m26872
                    Hardware Contributor
                    wrote on last edited by m26872
                    #46

                    UPDATE
                    I've updated the first post with

                    • A wiring layout.
                    • Added a text about the low-power option
                    • A few minor details.
                    1 Reply Last reply
                    2
                    • sundberg84S Offline
                      sundberg84S Offline
                      sundberg84
                      Hardware Contributor
                      wrote on last edited by
                      #47

                      Great layout/way to show your project - really nice!

                      Its exactly as I do it so im getting a bit jealus here... . One node is down after a week.
                      It might be the hardware or me not so good soldering so i short something out.

                      I will try some more nodes now you have comfirmed I do it the right way and that should work.

                      @m26872
                      Thank you!

                      Controller: Proxmox VM - Home Assistant
                      MySensors GW: Arduino Uno - W5100 Ethernet, Gw Shield Nrf24l01+ 2,4Ghz
                      MySensors GW: Arduino Uno - Gw Shield RFM69, 433mhz
                      RFLink GW - Arduino Mega + RFLink Shield, 433mhz

                      m26872M 1 Reply Last reply
                      0
                      • sundberg84S sundberg84

                        Great layout/way to show your project - really nice!

                        Its exactly as I do it so im getting a bit jealus here... . One node is down after a week.
                        It might be the hardware or me not so good soldering so i short something out.

                        I will try some more nodes now you have comfirmed I do it the right way and that should work.

                        @m26872
                        Thank you!

                        m26872M Offline
                        m26872M Offline
                        m26872
                        Hardware Contributor
                        wrote on last edited by
                        #48

                        @sundberg84
                        Thx, good you liked it.
                        With such fast battery drain it should be easier to trace the current draw. First you'll need to measure the current. Second option is of course the good old switch-and-replace troubleshooting method.
                        I've read about hardware and quality issues, but let's hope it isn't...

                        1 Reply Last reply
                        0
                        • sundberg84S Offline
                          sundberg84S Offline
                          sundberg84
                          Hardware Contributor
                          wrote on last edited by sundberg84
                          #49

                          @m26872 What kind of pro-mini do you use?
                          Im using deek robot 3.3v 8mhz and it seems like there is a problem with this: (http://forum.mysensors.org/topic/230/power-conservation-with-battery-powered-sensors) i kill them when i try to remove voltage regulator so i guess i havent suceeded yet with that.

                          I dont have any good equipment to measure current... Ill have made a new sensor today - lets see how it operates.

                          Controller: Proxmox VM - Home Assistant
                          MySensors GW: Arduino Uno - W5100 Ethernet, Gw Shield Nrf24l01+ 2,4Ghz
                          MySensors GW: Arduino Uno - Gw Shield RFM69, 433mhz
                          RFLink GW - Arduino Mega + RFLink Shield, 433mhz

                          1 Reply Last reply
                          0
                          • m26872M Offline
                            m26872M Offline
                            m26872
                            Hardware Contributor
                            wrote on last edited by
                            #50

                            Here are some close-up pictures of my Node 105 (which I opened with maximum care not to spoil my long term testing)
                            1_IMG_1694.JPG
                            2_IMG_1685.JPG
                            3_IMG_1687.JPG
                            4_IMG_1688.JPG
                            5_IMG_1689.JPG
                            6_IMG_1691.JPG
                            7_IMG_1686.JPG
                            8_IMG_1692.JPG
                            9_IMG_1693.JPG

                            1 Reply Last reply
                            1
                            • hekH Online
                              hekH Online
                              hek
                              Admin
                              wrote on last edited by
                              #51

                              Node 105 starts to become famous here :)
                              We all follow him(?) with great excitement.

                              1 Reply Last reply
                              0
                              • epierreE Offline
                                epierreE Offline
                                epierre
                                Hero Member
                                wrote on last edited by
                                #52

                                yes, @m26872 any news ?

                                z-wave - Vera -&gt; Domoticz
                                rfx - Domoticz &lt;- MyDomoAtHome &lt;- Imperihome
                                mysensors -&gt; mysensors-gw -&gt; Domoticz

                                1 Reply Last reply
                                0
                                • m26872M Offline
                                  m26872M Offline
                                  m26872
                                  Hardware Contributor
                                  wrote on last edited by
                                  #53

                                  The news is that my Vera Lite gave up (soft-wise) after all hacking, plug-ins and un-clean factory resets, so I gave up on her (and Z-wave too, at least for a while). We've been fighting with each other for too long, so I'd say the divorce was welcome.

                                  Instead, in the controller jungle I decided to try Fhem, aware of the challanges as I'm not German- (nor Perl) speaking. I'm still in the sens-but-no-control-phase and have a few test nodes running, including "the" node 105. (Very easy transition btw, just one press at reset button then a node is in production with a new controller.)

                                  Back home today after 2w holiday I think it's looking good. The only problem now is of course that my trending is broken. If anyone knows how to merge the old trend data with the new, you're very welcome? Or just on how to rescue the Datamine data (from NAS)? If possible? I haven't researched anything yet.
                                  fhem_2w.PNG

                                  1 Reply Last reply
                                  0
                                  • M Offline
                                    M Offline
                                    Meister_Petz
                                    wrote on last edited by
                                    #54

                                    Just an idea... I'm not sure if someone mentioned it:
                                    If sending consumes so much power... what about collecting sensor data every 5 minutes and then send the data (array) once per hour? Of course there would be some time calculating before logging in the controller (fhem), but this way, I can save power... What do you think?

                                    m26872M 1 Reply Last reply
                                    0
                                    • M Meister_Petz

                                      Just an idea... I'm not sure if someone mentioned it:
                                      If sending consumes so much power... what about collecting sensor data every 5 minutes and then send the data (array) once per hour? Of course there would be some time calculating before logging in the controller (fhem), but this way, I can save power... What do you think?

                                      m26872M Offline
                                      m26872M Offline
                                      m26872
                                      Hardware Contributor
                                      wrote on last edited by
                                      #55

                                      @Meister_Petz Kind of what I already do in the test nodes 105/106 if you look at code above. Update frequencey and battery life time is a balance that can be adjusted just as you wish. Right now these node send update every 15 min and take sample for calculation 5 min before, which is about what I need. If you and your application is more interested in trending, history and data collection, I think your suggestion is excellent. If you need a fast response or action from your automation system it's not.

                                      But, what I think is most unneseccary with my test nodes 105/106 is that they check battery level every 15 min and send update if it has changed. Since the level typically is unstable right after the first transmission, it will generate a lot of useless transmissions. The only reason for me not to update code in node 105/106 is to keep it as an untouched study case. In my new nodes I usually set a fixed battery check/update frequency (1/week) which also works as a heartbeat signal for less active nodes.

                                      1 Reply Last reply
                                      0
                                      • TheoLT Offline
                                        TheoLT Offline
                                        TheoL
                                        Contest Winner
                                        wrote on last edited by
                                        #56

                                        Not sure if any one has had the same question. But the other day I stumbled on this little thing ;)
                                        https://www.adafruit.com/product/1572 It's a really small rechargeable battery. Now I don't no much about batteries. But I know that my LiOn powerd handdrill is very strong. The batteries of my handdril hardly lose power over time.

                                        So I was wondering if this could be used to power an Arduino and some sensors and how long it will take for the battery te become empty. It would make my 3.3V Sensors really small. I could almost install them in a small matchbox. Which I think is really cool!

                                        m26872M 1 Reply Last reply
                                        0
                                        • TheoLT TheoL

                                          Not sure if any one has had the same question. But the other day I stumbled on this little thing ;)
                                          https://www.adafruit.com/product/1572 It's a really small rechargeable battery. Now I don't no much about batteries. But I know that my LiOn powerd handdrill is very strong. The batteries of my handdril hardly lose power over time.

                                          So I was wondering if this could be used to power an Arduino and some sensors and how long it will take for the battery te become empty. It would make my 3.3V Sensors really small. I could almost install them in a small matchbox. Which I think is really cool!

                                          m26872M Offline
                                          m26872M Offline
                                          m26872
                                          Hardware Contributor
                                          wrote on last edited by
                                          #57

                                          @TheoL There are endless discussions about different batteries in the forum. Just search and read. I recall one issue with LiXx batteries is that max voltage is too high for the NRF24L01+ radio.

                                          1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          17

                                          Online

                                          11.7k

                                          Users

                                          11.2k

                                          Topics

                                          113.0k

                                          Posts


                                          Copyright 2019 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
                                          • OpenHardware.io
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular