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

  • Default (No Skin)
  • No Skin
Collapse
Brand Logo
  1. Home
  2. Development
  3. battery level doesn't appear ?

battery level doesn't appear ?

Scheduled Pinned Locked Moved Development
25 Posts 6 Posters 6.0k Views 4 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.
  • XanderX Offline
    XanderX Offline
    Xander
    wrote on last edited by
    #9

    "Battery Level" is a internal message.
    See: http://www.mysensors.org/download/serial_api_15
    This means it is going to the gateway and nobody knows what the gateway is doing with it...
    Please correct me if I am wrong.

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

      I have several nodes reporting battery level to Domoticz.

      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
      • flylowgofastF Offline
        flylowgofastF Offline
        flylowgofast
        wrote on last edited by
        #11

        hello,
        here is logs from gateway

        2;4;1;1;3;70;0;3;0;9;send: 0-0-2-2 s=4,c=1,t=3,pt=0,l=1,sg=0,st=fail:7
        Finished
        0;0;3;0;18;PINGFinished
        2;4;1;1;3;70;0;3;0;9;send: 0-0-2-2 s=4,c=1,t=3,pt=0,l=1,sg=0,st=fail:7
        0;0;3;0;9;read: 1-1-0 s=255,c=3,t=0,pt=1,l=1,sg=0:97
        0;0;3;0;9;send: 0-0-1-1 s=255,c=3,t=0,pt=1,l=1,sg=0,st=ok:97
        1;255;3;0;0;97
        Finished
        0;0;3;0;18;PING0;0;3;0;9;read: 65-65-0 s=255,c=3,t=0,pt=1,l=1,sg=0:99
        0;0;3;0;9;send: 0-0-65-65 s=255,c=3,t=0,pt=1,l=1,sg=0,st=fail:99
        65;255;3;0;0;99
        0;0;3;0;9;read: 1-1-0 s=255,c=3,t=0,pt=1,l=1,sg=0:97
        0;0;3;0;9;send: 0-0-1-1 s=255,c=3,t=0,pt=1,l=1,sg=0,st=ok:97
        1;255;3;0;0;97
        Finished
        

        Is there a documentation to understand better ?

        thanks

        AWIA 1 Reply Last reply
        0
        • F Offline
          F Offline
          flopp
          wrote on last edited by
          #12

          Can you post your sketch here?

          1 Reply Last reply
          0
          • F Offline
            F Offline
            flopp
            wrote on last edited by flopp
            #13

            This is from my GW

            0;0;3;0;18;PING0;0;3;0;9;read: 12-12-0 s=255,c=3,t=0,pt=1,l=1,sg=0:98
            12;255;3;0;0;98
            0;0;3;0;9;read: 12-12-0 s=1,c=1,t=38,pt=7,l=5,sg=0:2.979
            12;1;1;0;38;2.979
            0;0;3;0;9;read: 12-12-0 s=0,c=1,t=23,pt=3,l=2,sg=0:66
            12;0;1;0;23;66
            Finished
            
            

            98% battery
            2.979 voltage
            66 lux

            1 Reply Last reply
            0
            • F Offline
              F Offline
              flopp
              wrote on last edited by
              #14

              You can also restart your Node and then it will send all data again like, Sketchname, version and also all childs

              1 Reply Last reply
              0
              • flylowgofastF Offline
                flylowgofastF Offline
                flylowgofast
                wrote on last edited by
                #15

                my loop(){}

                // the loop routine runs over and over again forever:
                void loop() {
                
                  // Process incoming messages (like config from server)
                  gw.process();  
                
                  //---------------Lecture des ouvertures de porte------------------
                  doorOpenOffState = digitalRead(HALLOFFICEDOOR); // lecture à chaque cycle (urgence)
                  if (doorOpenOffState != doorOpenOffChange){
                    gw.send(msgDoorOffice.setSensor(OFFICEDOOR).set(doorOpenOffState));
                    doorOpenOffChange = doorOpenOffState;
                  }
                
                  doorOpenBedState = digitalRead(HALLBEDROOMDOOR); // lecture à chaque cycle (urgence)
                  if (doorOpenBedState != doorOpenBedChange){
                    gw.send(msgDoorBedroom.setSensor(BEDROOMDOOR).set(doorOpenBedState));
                    doorOpenBedChange = doorOpenBedState;
                  }
                  
                  if (digitalRead(ECLEXT) != oldInterExt){
                    oldInterExt = !oldInterExt;
                    eclState = !eclState;
                    gw.send(msgLightSwitch.set(eclState));
                  }
                
                  //---------------Envoi du niveau de batterie !! pour rester eveillé------------------
                  /*if ((millis() - myTime) > 10000) { // toutes les dix secondes
                    myTime = millis();
                    gw.sendBatteryLevel(97,1);
                  } else {
                    if ((millis() - myTime) < 0) {
                      myTime = millis();
                    }
                  }*/
                  gw.sendBatteryLevel(97,1);
                
                // ---------------Traitement volet 1-----------------
                  analogUpV1 = analogRead(UPV1);
                  if ((analogUpV1 <25) && !manOnV1) { //analogUp proche de zéro et ancienne valeur niveau haut (en l'air)
                    digitalWrite(TRIAC5, HIGH);
                    digitalWrite(TRIAC2, LOW);
                    triacTempoV1 = millis();
                    triacManPriorityV1 = true;
                    manOnV1 = true;
                    memoStopV1 = false;
                  } else {
                    analogDownV1 = analogRead(DOWNV1);
                    if ((analogDownV1 <25) && !manOnV1) { //proche de zéro
                      digitalWrite(TRIAC5, LOW);
                      digitalWrite(TRIAC2, HIGH);
                      triacTempoV1 = millis();
                      triacManPriorityV1 = true;
                      manOnV1 = true;
                      memoStopV1 = false;
                    } else {
                      if (analogUpV1 > 800 && analogDownV1 > 800 && !memoStopV1){ // les deux fils en l'air
                        digitalWrite(TRIAC5, LOW);
                        digitalWrite(TRIAC2, LOW);
                        triacManPriorityV1 = false;
                        manOnV1 = false;
                        memoStopV1 = true;
                      } else {
                        if (!triacManPriorityV1){
                          if (shutterOff1State && shutterOff2State) {
                            shutterOff1State = false;
                            shutterOff2State = false;
                            digitalWrite(TRIAC5, LOW);
                            digitalWrite(TRIAC2, LOW);
                          } else {
                            if (shutterOff1State) {
                              shutterOff1State = false;
                              digitalWrite(TRIAC5, HIGH);
                              digitalWrite(TRIAC2, LOW);
                              triacTempoV1 = millis();
                            } else {
                              if (shutterOff2State) {
                                shutterOff2State = false;
                                digitalWrite(TRIAC5, LOW);
                                digitalWrite(TRIAC2, HIGH);
                                triacTempoV1 = millis();
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                  if (((triacTempoV1 + TEMPOOPENV1) < millis())) {
                    digitalWrite(TRIAC5, LOW);
                    digitalWrite(TRIAC2, LOW);
                    triacManPriorityV1 = false;
                  }
                
                // --------------------------Traitement volet 2------------------------
                  analogUpV2 = analogRead(UPV2);
                  if ((analogUpV2 <25) && !manOnV2) { //analogUp proche de zéro et ancienne valeur niveau haut (en l'air)
                    digitalWrite(TRIAC3, HIGH);
                    digitalWrite(TRIAC4, LOW);
                    triacTempoV2 = millis();
                    triacManPriorityV2 = true;
                    manOnV2 = true;
                    memoStopV2 = false;
                  } else {
                    analogDownV2 = analogRead(DOWNV2);
                    if ((analogDownV2 <25) && !manOnV2) { //proche de zéro
                      digitalWrite(TRIAC3, LOW);
                      digitalWrite(TRIAC4, HIGH);      
                      triacTempoV2 = millis();
                      triacManPriorityV2 = true;
                      manOnV2 = true;
                      memoStopV2 = false;
                    } else {
                      if (analogUpV2 > 800 && analogDownV2 > 800 && !memoStopV2){ // les deux fils en l'air
                        digitalWrite(TRIAC3, LOW);
                        digitalWrite(TRIAC4, LOW);        
                        //triac3 = false;
                        //triac4 = false;
                        triacManPriorityV2 = false;
                        manOnV2 = false;
                        memoStopV2 = true;
                      } else {
                        if (!triacManPriorityV2){
                          if (shutterBed1State && shutterBed2State) {
                            shutterBed1State = false;
                            shutterBed2State = false;
                            digitalWrite(TRIAC3, LOW);
                            digitalWrite(TRIAC4, LOW);            
                          } else {
                            if (shutterBed1State) {
                              shutterBed1State = false;
                              digitalWrite(TRIAC3, HIGH);
                              digitalWrite(TRIAC4, LOW);              
                              triacTempoV2 = millis();
                            } else {
                              if (shutterBed2State) {
                                shutterBed2State = false;
                                digitalWrite(TRIAC3, LOW);
                                digitalWrite(TRIAC4, HIGH);                
                                triacTempoV2 = millis();
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                  if (((triacTempoV2 + TEMPOOPENV2) < millis())) {
                    digitalWrite(TRIAC3, LOW);
                    digitalWrite(TRIAC4, LOW);      
                    triacManPriorityV2 = false;
                  }
                }
                
                F 1 Reply Last reply
                0
                • flylowgofastF flylowgofast

                  my loop(){}

                  // the loop routine runs over and over again forever:
                  void loop() {
                  
                    // Process incoming messages (like config from server)
                    gw.process();  
                  
                    //---------------Lecture des ouvertures de porte------------------
                    doorOpenOffState = digitalRead(HALLOFFICEDOOR); // lecture à chaque cycle (urgence)
                    if (doorOpenOffState != doorOpenOffChange){
                      gw.send(msgDoorOffice.setSensor(OFFICEDOOR).set(doorOpenOffState));
                      doorOpenOffChange = doorOpenOffState;
                    }
                  
                    doorOpenBedState = digitalRead(HALLBEDROOMDOOR); // lecture à chaque cycle (urgence)
                    if (doorOpenBedState != doorOpenBedChange){
                      gw.send(msgDoorBedroom.setSensor(BEDROOMDOOR).set(doorOpenBedState));
                      doorOpenBedChange = doorOpenBedState;
                    }
                    
                    if (digitalRead(ECLEXT) != oldInterExt){
                      oldInterExt = !oldInterExt;
                      eclState = !eclState;
                      gw.send(msgLightSwitch.set(eclState));
                    }
                  
                    //---------------Envoi du niveau de batterie !! pour rester eveillé------------------
                    /*if ((millis() - myTime) > 10000) { // toutes les dix secondes
                      myTime = millis();
                      gw.sendBatteryLevel(97,1);
                    } else {
                      if ((millis() - myTime) < 0) {
                        myTime = millis();
                      }
                    }*/
                    gw.sendBatteryLevel(97,1);
                  
                  // ---------------Traitement volet 1-----------------
                    analogUpV1 = analogRead(UPV1);
                    if ((analogUpV1 <25) && !manOnV1) { //analogUp proche de zéro et ancienne valeur niveau haut (en l'air)
                      digitalWrite(TRIAC5, HIGH);
                      digitalWrite(TRIAC2, LOW);
                      triacTempoV1 = millis();
                      triacManPriorityV1 = true;
                      manOnV1 = true;
                      memoStopV1 = false;
                    } else {
                      analogDownV1 = analogRead(DOWNV1);
                      if ((analogDownV1 <25) && !manOnV1) { //proche de zéro
                        digitalWrite(TRIAC5, LOW);
                        digitalWrite(TRIAC2, HIGH);
                        triacTempoV1 = millis();
                        triacManPriorityV1 = true;
                        manOnV1 = true;
                        memoStopV1 = false;
                      } else {
                        if (analogUpV1 > 800 && analogDownV1 > 800 && !memoStopV1){ // les deux fils en l'air
                          digitalWrite(TRIAC5, LOW);
                          digitalWrite(TRIAC2, LOW);
                          triacManPriorityV1 = false;
                          manOnV1 = false;
                          memoStopV1 = true;
                        } else {
                          if (!triacManPriorityV1){
                            if (shutterOff1State && shutterOff2State) {
                              shutterOff1State = false;
                              shutterOff2State = false;
                              digitalWrite(TRIAC5, LOW);
                              digitalWrite(TRIAC2, LOW);
                            } else {
                              if (shutterOff1State) {
                                shutterOff1State = false;
                                digitalWrite(TRIAC5, HIGH);
                                digitalWrite(TRIAC2, LOW);
                                triacTempoV1 = millis();
                              } else {
                                if (shutterOff2State) {
                                  shutterOff2State = false;
                                  digitalWrite(TRIAC5, LOW);
                                  digitalWrite(TRIAC2, HIGH);
                                  triacTempoV1 = millis();
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                    if (((triacTempoV1 + TEMPOOPENV1) < millis())) {
                      digitalWrite(TRIAC5, LOW);
                      digitalWrite(TRIAC2, LOW);
                      triacManPriorityV1 = false;
                    }
                  
                  // --------------------------Traitement volet 2------------------------
                    analogUpV2 = analogRead(UPV2);
                    if ((analogUpV2 <25) && !manOnV2) { //analogUp proche de zéro et ancienne valeur niveau haut (en l'air)
                      digitalWrite(TRIAC3, HIGH);
                      digitalWrite(TRIAC4, LOW);
                      triacTempoV2 = millis();
                      triacManPriorityV2 = true;
                      manOnV2 = true;
                      memoStopV2 = false;
                    } else {
                      analogDownV2 = analogRead(DOWNV2);
                      if ((analogDownV2 <25) && !manOnV2) { //proche de zéro
                        digitalWrite(TRIAC3, LOW);
                        digitalWrite(TRIAC4, HIGH);      
                        triacTempoV2 = millis();
                        triacManPriorityV2 = true;
                        manOnV2 = true;
                        memoStopV2 = false;
                      } else {
                        if (analogUpV2 > 800 && analogDownV2 > 800 && !memoStopV2){ // les deux fils en l'air
                          digitalWrite(TRIAC3, LOW);
                          digitalWrite(TRIAC4, LOW);        
                          //triac3 = false;
                          //triac4 = false;
                          triacManPriorityV2 = false;
                          manOnV2 = false;
                          memoStopV2 = true;
                        } else {
                          if (!triacManPriorityV2){
                            if (shutterBed1State && shutterBed2State) {
                              shutterBed1State = false;
                              shutterBed2State = false;
                              digitalWrite(TRIAC3, LOW);
                              digitalWrite(TRIAC4, LOW);            
                            } else {
                              if (shutterBed1State) {
                                shutterBed1State = false;
                                digitalWrite(TRIAC3, HIGH);
                                digitalWrite(TRIAC4, LOW);              
                                triacTempoV2 = millis();
                              } else {
                                if (shutterBed2State) {
                                  shutterBed2State = false;
                                  digitalWrite(TRIAC3, LOW);
                                  digitalWrite(TRIAC4, HIGH);                
                                  triacTempoV2 = millis();
                                }
                              }
                            }
                          }
                        }
                      }
                    }
                    if (((triacTempoV2 + TEMPOOPENV2) < millis())) {
                      digitalWrite(TRIAC3, LOW);
                      digitalWrite(TRIAC4, LOW);      
                      triacManPriorityV2 = false;
                    }
                  }
                  
                  F Offline
                  F Offline
                  flopp
                  wrote on last edited by
                  #16

                  @flylowgofast
                  Look ok

                  1 Reply Last reply
                  0
                  • flylowgofastF flylowgofast

                    hello,
                    here is logs from gateway

                    2;4;1;1;3;70;0;3;0;9;send: 0-0-2-2 s=4,c=1,t=3,pt=0,l=1,sg=0,st=fail:7
                    Finished
                    0;0;3;0;18;PINGFinished
                    2;4;1;1;3;70;0;3;0;9;send: 0-0-2-2 s=4,c=1,t=3,pt=0,l=1,sg=0,st=fail:7
                    0;0;3;0;9;read: 1-1-0 s=255,c=3,t=0,pt=1,l=1,sg=0:97
                    0;0;3;0;9;send: 0-0-1-1 s=255,c=3,t=0,pt=1,l=1,sg=0,st=ok:97
                    1;255;3;0;0;97
                    Finished
                    0;0;3;0;18;PING0;0;3;0;9;read: 65-65-0 s=255,c=3,t=0,pt=1,l=1,sg=0:99
                    0;0;3;0;9;send: 0-0-65-65 s=255,c=3,t=0,pt=1,l=1,sg=0,st=fail:99
                    65;255;3;0;0;99
                    0;0;3;0;9;read: 1-1-0 s=255,c=3,t=0,pt=1,l=1,sg=0:97
                    0;0;3;0;9;send: 0-0-1-1 s=255,c=3,t=0,pt=1,l=1,sg=0,st=ok:97
                    1;255;3;0;0;97
                    Finished
                    

                    Is there a documentation to understand better ?

                    thanks

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

                    @flylowgofast for information on the logs take a look at the debug topic

                    1 Reply Last reply
                    0
                    • flylowgofastF Offline
                      flylowgofastF Offline
                      flylowgofast
                      wrote on last edited by
                      #18

                      My real problem is not to send battery level. I try to do that because after 24 or 48 hours my node stop sending messages . So, I hoped that was a way to make it awake !

                      AWIA F 2 Replies Last reply
                      0
                      • flylowgofastF flylowgofast

                        My real problem is not to send battery level. I try to do that because after 24 or 48 hours my node stop sending messages . So, I hoped that was a way to make it awake !

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

                        @flylowgofast From what I read from your sketch you seem to do some high voltage / current switching. Especially the radio doesn't like all kinds of electronic disturbances (emc etc.) To avoid lockups you need to pay special attention/separate power supplies (if you haven't done already).

                        1 Reply Last reply
                        0
                        • flylowgofastF Offline
                          flylowgofastF Offline
                          flylowgofast
                          wrote on last edited by
                          #20

                          Hello AWI,

                          Thanks for your reply, yes my node trigs 5 triacs. I use snubber, regulator, capacitor. And ond the other hand, all commands to the node work properly ? just battery level doesn't work and after several hours NRF24L01 stop to work.
                          I would like to reset NRF24L01 but with MySensors we don't have direct access to it anymore. Perhaps there is a way to reset the sketch globaly ?

                          thanks for your help

                          1 Reply Last reply
                          0
                          • flylowgofastF flylowgofast

                            My real problem is not to send battery level. I try to do that because after 24 or 48 hours my node stop sending messages . So, I hoped that was a way to make it awake !

                            F Offline
                            F Offline
                            flopp
                            wrote on last edited by flopp
                            #21

                            @flylowgofast said:

                            My real problem is not to send battery level. I try to do that because after 24 or 48 hours my node stop sending messages . So, I hoped that was a way to make it awake !

                            It would have been nice if you had wrote this in your first post.:disappointed:
                            So everyone could focus on the main problem

                            1 Reply Last reply
                            0
                            • flylowgofastF Offline
                              flylowgofastF Offline
                              flylowgofast
                              wrote on last edited by
                              #22

                              Hello @flopp ,

                              Sorry I was myself focus on this second problem that's interesting to solve too ?
                              At the end twice aren't solve ! :disappointed:

                              1 Reply Last reply
                              0
                              • flylowgofastF Offline
                                flylowgofastF Offline
                                flylowgofast
                                wrote on last edited by
                                #23

                                Hello all,

                                At the end, I choose to do a software reset every 24 hours. This solution is very bad for me but it works !!

                                bye

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

                                  @flylowgofast One simple thing can be to move the radio away a bit and see if that helps. Its as AWI said probably interferance power-radio.

                                  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

                                  flylowgofastF 1 Reply Last reply
                                  0
                                  • sundberg84S sundberg84

                                    @flylowgofast One simple thing can be to move the radio away a bit and see if that helps. Its as AWI said probably interferance power-radio.

                                    flylowgofastF Offline
                                    flylowgofastF Offline
                                    flylowgofast
                                    wrote on last edited by
                                    #25

                                    Hello @sundberg84,
                                    I already considered this idea but my node have been running perfectly for two days before failed. So I think, power consideration are not the problem. I can trigg on and off my shutters many and many times without problem.

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


                                    18

                                    Online

                                    11.7k

                                    Users

                                    11.2k

                                    Topics

                                    113.0k

                                    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