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. My Project
  3. 3 in 1 incl battery monitor

3 in 1 incl battery monitor

Scheduled Pinned Locked Moved My Project
60 Posts 11 Posters 30.0k Views 12 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.
  • icebobI Offline
    icebobI Offline
    icebob
    wrote on last edited by
    #32

    Currently I'm developing my boards, so there is no live device/sensor in my home. But in the future I plan to make a custom controller, and it will turn on/off the PIR sensors on the nodes, depending on the house is armed or not. So if I'm at home, PIR sensor won't watching. (It's just a plan for the present)

    1 Reply Last reply
    0
    • H Offline
      H Offline
      Heizelmann
      wrote on last edited by
      #33

      I am new in this forum so may be what I will tell here is posted already somewhere else.
      Firstly I would measure the battery voltage at the end after sending some values to see the voltage after some stress. Often it is the case for a nearly empty battery that it shows a relaxed high voltage after a long sleep and the break down on some stress. I think it is better to measure the lower level.
      Secondly for a motion sensor I would implement a wakeup on a pin change interrupt. As a stand-alone sensor this would be optimal for battery life time. In combination the other components you can use a large cycle time for getting temperature humidity and so on and for the motion sensor you get an intermediate interrupt on demand. If those event are too often for your desire, you can check it against time or count of last event and go back to sleep without sending.

      1 Reply Last reply
      0
      • carlierdC carlierd

        Hello,

        You need to power the motion sensor all time as you want to detect any mouvement and not only every 2 minutes.

        Caution, in your sketch, the battery level is sent at the beginning and at the end.

        Did you tweak the motion sensor ?? Not tested yet but it seems that modification could (must ?) be done to reduce power consumption (LINK).

        Why do you wake-up the arduino every 30 seconds ? For temperature, every 5 or 15 minutes is enough.

        the cosmic gateT Offline
        the cosmic gateT Offline
        the cosmic gate
        wrote on last edited by
        #34

        @carlierd said:

        Hello,

        You need to power the motion sensor all time as you want to detect any mouvement and not only every 2 minutes.

        Caution, in your sketch, the battery level is sent at the beginning and at the end.

        Did you tweak the motion sensor ?? Not tested yet but it seems that modification could (must ?) be done to reduce power consumption (LINK).

        Why do you wake-up the arduino every 30 seconds ? For temperature, every 5 or 15 minutes is enough.

        Sure i modded the motion sensor as shown in the hyperlink , modded it this way :
        upload-91e4fc48-511f-46de-8512-a86c74023af3.JPG
        I don't know why i wake-up this arduino every 30 seconds, the sketch was fabricated by combine 2 or 3 other sketches to this one ( with help from @AWI )
        So if there are some tweaking thing to do, do not hesitate and change the sketch as you think it must be

        @icebob what's the sketch you using /testing ?

        There's more than meets the eye

        AWIA 1 Reply Last reply
        0
        • the cosmic gateT the cosmic gate

          @carlierd said:

          Hello,

          You need to power the motion sensor all time as you want to detect any mouvement and not only every 2 minutes.

          Caution, in your sketch, the battery level is sent at the beginning and at the end.

          Did you tweak the motion sensor ?? Not tested yet but it seems that modification could (must ?) be done to reduce power consumption (LINK).

          Why do you wake-up the arduino every 30 seconds ? For temperature, every 5 or 15 minutes is enough.

          Sure i modded the motion sensor as shown in the hyperlink , modded it this way :
          upload-91e4fc48-511f-46de-8512-a86c74023af3.JPG
          I don't know why i wake-up this arduino every 30 seconds, the sketch was fabricated by combine 2 or 3 other sketches to this one ( with help from @AWI )
          So if there are some tweaking thing to do, do not hesitate and change the sketch as you think it must be

          @icebob what's the sketch you using /testing ?

          AWIA Offline
          AWIA Offline
          AWI
          Hero Member
          wrote on last edited by mfalkvidd
          #35

          @the-cosmic-gate No specific reason to have a 30 second interval. You can just change the SLEEP_TIME to whatever eg. 5 minutes == 300000UL. The pin change interrupt is present in the code..

          gw.sleep(INTERRUPT,CHANGE, SLEEP_TIME);
          
          1 Reply Last reply
          0
          • the cosmic gateT Offline
            the cosmic gateT Offline
            the cosmic gate
            wrote on last edited by
            #36

            @icebob could you share us you're code ?

            There's more than meets the eye

            1 Reply Last reply
            0
            • icebobI Offline
              icebobI Offline
              icebob
              wrote on last edited by
              #37

              @the-cosmic-gate sorry, I'm working a big complex sketch, I can't share my code currently.

              the cosmic gateT 1 Reply Last reply
              0
              • icebobI icebob

                @the-cosmic-gate sorry, I'm working a big complex sketch, I can't share my code currently.

                the cosmic gateT Offline
                the cosmic gateT Offline
                the cosmic gate
                wrote on last edited by
                #38

                @icebob said:

                @the-cosmic-gate sorry, I'm working a big complex sketch, I can't share my code currently.

                Big and complex sounds interesting :)
                Could you maybe share us a sneak peak ;-)

                There's more than meets the eye

                1 Reply Last reply
                0
                • icebobI Offline
                  icebobI Offline
                  icebob
                  wrote on last edited by
                  #39

                  @the-cosmic-gate Nothing special. I made a big sketch, which contains 7-8 sensors (DHT, Si7021, MQ-2/9, PIR, Door magnet, Light, battery) reading code because I would like to upload the same sketch to all nodes and configurate it on controller side, which sensors is on the node and need to read.
                  But currently I reached the limit with I2C includes, so I need to think over this solution.

                  D 1 Reply Last reply
                  0
                  • carlierdC Offline
                    carlierdC Offline
                    carlierd
                    wrote on last edited by
                    #40

                    @the-cosmic-gate Did you solved your power consumption issue ?

                    the cosmic gateT 1 Reply Last reply
                    0
                    • carlierdC carlierd

                      @the-cosmic-gate Did you solved your power consumption issue ?

                      the cosmic gateT Offline
                      the cosmic gateT Offline
                      the cosmic gate
                      wrote on last edited by
                      #41

                      @carlierd said:

                      @the-cosmic-gate Did you solved your power consumption issue ?
                      Not yet, this because we moved to oneother house and didn't have the time now .
                      Also i had to disconnect and reconect all te sensors and domotica in this new house

                      There's more than meets the eye

                      1 Reply Last reply
                      0
                      • carlierdC Offline
                        carlierdC Offline
                        carlierd
                        wrote on last edited by
                        #42

                        I just finished my first motion sensor node and the power consumption in idle is about 75uA. Could be better but not too bad ;)
                        The only thing is that the range is a little bit low for good detection. It's between 1 and 3 meters ...

                        David.

                        the cosmic gateT 1 Reply Last reply
                        0
                        • carlierdC carlierd

                          I just finished my first motion sensor node and the power consumption in idle is about 75uA. Could be better but not too bad ;)
                          The only thing is that the range is a little bit low for good detection. It's between 1 and 3 meters ...

                          David.

                          the cosmic gateT Offline
                          the cosmic gateT Offline
                          the cosmic gate
                          wrote on last edited by
                          #43

                          @carlierd said:

                          I just finished my first motion sensor node and the power consumption in idle is about 75uA. Could be better but not too bad ;)
                          The only thing is that the range is a little bit low for good detection. It's between 1 and 3 meters ...

                          David.

                          Hello David

                          Could you share what and how ? :)

                          Thnx

                          There's more than meets the eye

                          1 Reply Last reply
                          0
                          • D Offline
                            D Offline
                            Dylano
                            wrote on last edited by
                            #44

                            And how is this sensor acting?

                            This is what i am looking for..
                            How lang can this sensor work? [ i wil try this with a 9Volt battery with a nano ]
                            What battery do you use?

                            Domoticz, with a lot of working hardware, include mysensors :-)
                            OpenPLI, RuneAudio, Solarmeter, etc......

                            Not a great builder of software and hardware, more a user...
                            Only i try to do my best :-(

                            1 Reply Last reply
                            0
                            • carlierdC Offline
                              carlierdC Offline
                              carlierd
                              wrote on last edited by
                              #45

                              Hello,

                              This is the code I use but it's not perfect especially with the battery report.

                              The principle is as follow when the sensor start:

                              • node in sleep mode with interrupt enable
                              • if a move is detected, the detection is reported to the gateway
                              • the node then go in sleep mode WITHOUT interrupt for 5 minutes
                              • then the node return to sleep mode with interrupt enable

                              This is to avoid having many report (and power consumption) to the gateway.

                              The code (not perfect ! I have to rework on it but it's ok for the moment):

                              /**
                               * 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.
                               *
                               */
                              
                              /**************************************************************************************/
                              /* Motion sensor.                                                                     */
                              /*                                                                                    */
                              /* Version     : 1.1.5                                                                */
                              /* Date        : 30/01/2016                                                           */
                              /* Modified by : David Carlier                                                        */
                              /**************************************************************************************/
                              /*                                ---------------                                     */
                              /*                            RST |             |  A5                                 */
                              /*                            RX  |             |  A4                                 */
                              /*                            TX  |   ARDUINO   |  A3                                 */
                              /*     RFM69 (DIO0) --------- D2  |     UNO     |  A2                                 */
                              /*           Motion --------- D3  |             |  A1                                 */
                              /*            Power --------- D4  | ATMEGA 328p |  A0                                 */
                              /*              +3v --------- VCC |             | GND --------- GND                   */
                              /*              GND --------- GND |  8MHz int.  | REF                                 */
                              /*                            OSC |             | VCC --------- +3v                   */
                              /*                            OSC |             | D13 --------- RFM69 (SCK)           */
                              /*                            D5  |             | D12 --------- RFM69 (MISO)          */
                              /*                            D6  |             | D11 --------- RFM69 (MOSI)          */
                              /*                            D7  |             | D10 --------- RFM69 (NSS)           */
                              /*                            D8  |             |  D9                                 */
                              /*                                ---------------                                     */
                              /*                                                                                    */
                              /* +3v = 2*AA                                                                         */
                              /*                                                                                    */
                              /**************************************************************************************/
                              
                              #include <SPI.h>
                              #include <MySensor.h>
                              #include <MyTransportRFM69.h>
                              #include <MySigningAtsha204Soft.h>
                              
                              //Constants
                              #define SKETCH_NAME           "Motion Sensor"
                              #define SKETCH_VERSION        "1.1.5"
                              #define CHILD_ID              0
                              #define CHILD_ID_VOLTAGE      1
                              #define DIGITAL_INPUT_SENSOR  3
                              #define BATTERY_REPORT_CYCLE  4   //Report each hour (4 * 15')
                              
                              //Misc. variables
                              uint8_t switchState = 2;
                              unsigned long SLEEP_TIME = 820000; // Sleep time between reads (in milliseconds) (close to 15')
                              unsigned long SLEEP_TIME2 = 275000; // Sleep time after int. (in milliseconds) (close to 5')
                              uint8_t cycleInProgress = 0;
                              uint8_t firstReportDone = 0;
                              uint8_t firstReportWithZeroDone = 0;
                              
                              //Construct MySensors library
                              MySigningAtsha204Soft signer;
                              MyHwATMega328 hw;
                              MyTransportRFM69 transport;
                              MySensor node(transport, hw, signer);
                              MyMessage msgSwitch(CHILD_ID, V_TRIPPED);
                              MyMessage msgVolt(CHILD_ID_VOLTAGE, V_VOLTAGE);
                              
                              /**************************************************************************************/
                              /* Initialization                                                                     */
                              /**************************************************************************************/
                              void setup()  
                                {
                                //Get time (for setup duration)
                                #ifdef DEBUG
                                  unsigned long startTime = millis();
                                #endif
                              
                                //Start MySensors and send the Sketch Version Information to the Gateway
                                node.begin();
                                node.sendSketchInfo(SKETCH_NAME, SKETCH_VERSION);
                              
                                //Setup the button
                                pinMode(DIGITAL_INPUT_SENSOR, INPUT);
                              
                                //Register all sensors
                                node.present(CHILD_ID, S_MOTION);
                                node.present(CHILD_ID_VOLTAGE, S_MULTIMETER);
                              
                                //Print setup debug
                                #ifdef DEBUG
                                  int duration = millis() - startTime;
                                  Serial.print("[Setup duration: "); Serial.print(duration, DEC); Serial.println(" ms]");
                                #endif
                                }
                              
                              /**************************************************************************************/
                              /* Main loop                                                                          */
                              /**************************************************************************************/
                              void loop()
                                {
                                //Get time (for a complete loop)
                                #ifdef DEBUG
                                  unsigned long startTime = millis();
                                #endif
                              
                                //Read digital motion value
                                uint8_t value = digitalRead(DIGITAL_INPUT_SENSOR);
                              
                                //Get voltage for battery capacity report (add 0.1v to the read value)
                                float realVoltage = (getVoltage() / 100.0) + 0.1;
                                int batteryPcnt = realVoltage * 100 / 3.0;
                                if (batteryPcnt > 100) {batteryPcnt = 100;}
                              
                                //Check is state change
                                if (value != switchState)
                                  {
                                  //Report result if not first loop
                                  if (firstReportDone != 0)
                                    {
                                    node.send(msgSwitch.set(value==HIGH ? 1 : 0));
                                    }
                              
                                  //Store result
                                  switchState = value;
                                  }
                              
                                //Report data to the gateway each hour
                                if (cycleInProgress >= BATTERY_REPORT_CYCLE || firstReportDone == 0)
                                  {
                                  node.send(msgSwitch.set(value==HIGH ? 1 : 0));
                                  node.send(msgVolt.set(realVoltage, 2));
                                  node.sendBatteryLevel(batteryPcnt);
                                  cycleInProgress = 0;
                                  firstReportDone = 1;
                                  }
                              
                                //Change cycle number
                                cycleInProgress++;
                              
                                //Print debug
                                #ifdef DEBUG
                                  Serial.print("Value is ");
                                  Serial.print(value, 1);
                                  Serial.print("   ");
                                  Serial.print("Cycle is ");
                                  Serial.print(cycleInProgress, 1);
                                  Serial.print("   ");
                                  Serial.print(realVoltage);
                                  Serial.print(" v");
                                  int duration = millis() - startTime;
                                  Serial.print("   ");
                                  Serial.print("["); Serial.print(duration, DEC); Serial.println(" ms]");
                                  Serial.flush();
                                #endif
                              
                                //Check if the motion was triggered and if it's not the first report
                                if (switchState == 0 && firstReportWithZeroDone == 1)
                                  {
                                  //Sleep 5' without interrupt
                                  node.sleep(SLEEP_TIME2);
                                  }
                              
                                //Check if it's the first loop
                                if (switchState == 0 && firstReportWithZeroDone == 0)
                                  {
                                  firstReportWithZeroDone = 1;
                                  }
                              
                                //Sleep until something happens with the sensor
                                node.sleep(DIGITAL_INPUT_SENSOR-2, CHANGE, SLEEP_TIME);
                                }
                              
                              /**************************************************************************************/
                              /* Allows to get the real Vcc (return value * 100).                                   */
                              /**************************************************************************************/
                              int getVoltage()
                                {
                                const long InternalReferenceVoltage = 1056L;
                                ADMUX = (0<<REFS1) | (1<<REFS0) | (0<<ADLAR) | (1<<MUX3) | (1<<MUX2) | (1<<MUX1) | (0<<MUX0);
                                delay(50);  // Let mux settle a little to get a more stable A/D conversion
                                //Start a conversion  
                                ADCSRA |= _BV( ADSC );
                                //Wait for it to complete
                                while (((ADCSRA & (1<<ADSC)) != 0));
                                //Scale the value
                                int result = (((InternalReferenceVoltage * 1023L) / ADC) + 5L) / 10L;
                                return result;
                                }
                              

                              On one sensor I tweak the PIR (remove regulator and diode) but on a second one, I just plug the 3 v to the H pin (see other topic on the forum).

                              Working correctly for the moment (one month) but it depends on the presence in the house.

                              David.

                              1 Reply Last reply
                              0
                              • D Offline
                                D Offline
                                Dylano
                                wrote on last edited by Dylano
                                #46

                                @ Carlied,

                                What code is better that one of you or the one from cosmi gate?

                                What are the different thing? Is your code check'the battery status?

                                And i get a error:
                                no matching function for call to 'MySensor::MySensor(MyTransportRFM69&, MyHwATMega328&, MySigningAtsha204Soft&)'

                                Domoticz, with a lot of working hardware, include mysensors :-)
                                OpenPLI, RuneAudio, Solarmeter, etc......

                                Not a great builder of software and hardware, more a user...
                                Only i try to do my best :-(

                                1 Reply Last reply
                                0
                                • carlierdC Offline
                                  carlierdC Offline
                                  carlierd
                                  wrote on last edited by
                                  #47

                                  The error is because I enable the signing function !
                                  Remove the following line:

                                  MySigningAtsha204Soft signer;
                                  

                                  And replace

                                  MySensor node(transport, hw, signer);
                                  

                                  by

                                  MySensor node(transport, hw);
                                  

                                  I don't know who had the best sketch.
                                  I measure internal battery status using the 1.1 reference.

                                  David.

                                  1 Reply Last reply
                                  0
                                  • D Offline
                                    D Offline
                                    Dylano
                                    wrote on last edited by
                                    #48

                                    When i put this sketch in to a nano..
                                    With a 9volt battery....
                                    How long do think this working?

                                    Or how long is this acting on your 3 volt battery's?

                                    Domoticz, with a lot of working hardware, include mysensors :-)
                                    OpenPLI, RuneAudio, Solarmeter, etc......

                                    Not a great builder of software and hardware, more a user...
                                    Only i try to do my best :-(

                                    1 Reply Last reply
                                    0
                                    • carlierdC Offline
                                      carlierdC Offline
                                      carlierd
                                      wrote on last edited by
                                      #49

                                      It depends on the activity close to the sensor so not possible to say but some people reach several month without problem.
                                      In my house it's very fresh so I have not a lot of feedback to give.

                                      David.

                                      1 Reply Last reply
                                      0
                                      • D Offline
                                        D Offline
                                        Dylano
                                        wrote on last edited by Dylano
                                        #50

                                        5 days....:-1: on a 9volt block
                                        The sketch on a nano
                                        On my toilet.... so not a very busy room

                                        Is there some one that live longer, with this sketch......?

                                        Domoticz, with a lot of working hardware, include mysensors :-)
                                        OpenPLI, RuneAudio, Solarmeter, etc......

                                        Not a great builder of software and hardware, more a user...
                                        Only i try to do my best :-(

                                        1 Reply Last reply
                                        0
                                        • icebobI icebob

                                          @the-cosmic-gate Nothing special. I made a big sketch, which contains 7-8 sensors (DHT, Si7021, MQ-2/9, PIR, Door magnet, Light, battery) reading code because I would like to upload the same sketch to all nodes and configurate it on controller side, which sensors is on the node and need to read.
                                          But currently I reached the limit with I2C includes, so I need to think over this solution.

                                          D Offline
                                          D Offline
                                          Dylano
                                          wrote on last edited by
                                          #51

                                          @icebob said:

                                          @the-cosmic-gate Nothing special. I made a big sketch, which contains 7-8 sensors (DHT, Si7021, MQ-2/9, PIR, Door magnet, Light, battery) reading code because I would like to upload the same sketch to all nodes and configurate it on controller side, which sensors is on the node and need to read.
                                          But currently I reached the limit with I2C includes, so I need to think over this solution.

                                          Dear..
                                          Did you finish your big code....

                                          Domoticz, with a lot of working hardware, include mysensors :-)
                                          OpenPLI, RuneAudio, Solarmeter, etc......

                                          Not a great builder of software and hardware, more a user...
                                          Only i try to do my best :-(

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


                                          12

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