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

  • Default (No Skin)
  • No Skin
Collapse
Brand Logo
  1. Home
  2. General Discussion
  3. How to stop receiving messages temporarily?

How to stop receiving messages temporarily?

Scheduled Pinned Locked Moved General Discussion
4 Posts 3 Posters 1.0k Views 3 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.
  • rzyliusR Offline
    rzyliusR Offline
    rzylius
    wrote on last edited by
    #1

    Is there a neat way to stop receiving messages temporarily in mysensors node? I have a node which must perform a routine of sequence of actions of roughly 5 seconds upon receiving a command. If another command comes when the routine is performed it produces unwanted side effects.

    So I am looking for a method or workaround, which would allow when command is received to stop listening to radio, after the routine is completed - restart listening again.

    Any advice?

    regards, rimantas

    B tbowmoT 2 Replies Last reply
    0
    • rzyliusR rzylius

      Is there a neat way to stop receiving messages temporarily in mysensors node? I have a node which must perform a routine of sequence of actions of roughly 5 seconds upon receiving a command. If another command comes when the routine is performed it produces unwanted side effects.

      So I am looking for a method or workaround, which would allow when command is received to stop listening to radio, after the routine is completed - restart listening again.

      Any advice?

      regards, rimantas

      B Offline
      B Offline
      boozz
      wrote on last edited by
      #2

      @rzylius
      maybe too simple, but can't you put your specific code within a 'while' loop?
      Something like:

      unsigned long Wait_time;
      unsigned long Start_time;
      ...
      ...
      //
      Start_time = millis();
      Wait_time = millis() - Start_time;
      
      while (Wait_time < 5000){
      //insert your code for the routine of actions of roughly 5000 ms here
      Wait_time = millis() - Start_time;
      }
      

      BR,
      Boozz

      1 Reply Last reply
      0
      • rzyliusR rzylius

        Is there a neat way to stop receiving messages temporarily in mysensors node? I have a node which must perform a routine of sequence of actions of roughly 5 seconds upon receiving a command. If another command comes when the routine is performed it produces unwanted side effects.

        So I am looking for a method or workaround, which would allow when command is received to stop listening to radio, after the routine is completed - restart listening again.

        Any advice?

        regards, rimantas

        tbowmoT Offline
        tbowmoT Offline
        tbowmo
        Admin
        wrote on last edited by
        #3

        @rzylius

        Can't you do this with a state variable? something like:

        boolean state = false;
        void receive(const MyMessage &message) {
          if (!state) {
            if (message.cmd = xxx) {
              state = true;
              startOperation();
            }
          }
        }
        
        void startOperation() {
           delay(5000);
           state = false;
        }
        
        rzyliusR 1 Reply Last reply
        0
        • tbowmoT tbowmo

          @rzylius

          Can't you do this with a state variable? something like:

          boolean state = false;
          void receive(const MyMessage &message) {
            if (!state) {
              if (message.cmd = xxx) {
                state = true;
                startOperation();
              }
            }
          }
          
          void startOperation() {
             delay(5000);
             state = false;
          }
          
          rzyliusR Offline
          rzyliusR Offline
          rzylius
          wrote on last edited by
          #4

          @tbowmo works like a charm, thank you.

          1 Reply Last reply
          1
          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.1k

          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