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. Feature Requests
  3. Filter node

Filter node

Scheduled Pinned Locked Moved Feature Requests
17 Posts 6 Posters 79 Views 6 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.
  • SnyfirS Offline
    SnyfirS Offline
    Snyfir
    wrote on last edited by
    #2

    Something like that can works ?

    MyTransport.cpp::transportProcessMessage(void)

    } else if (destination == BROADCAST_ADDRESS) {
    		TRANSPORT_DEBUG(PSTR("TSF:MSG:BC\n"));	// broadcast msg
    		if (command == C_INTERNAL) {
    			if (isTransportReady()) {
    				// only reply if node is fully operational
    				if (type == I_FIND_PARENT_REQUEST) {
    #if defined(MY_REPEATER_FEATURE)
    
                        #if defined(MY_REPEATER_FEATURE_WITHOUT_BATTERY)
                        if (sender < 100) {
                            return;
                        }
                        #endif
    
    					if (sender != _transportConfig.parentNodeId) {	// no circular reference
    						TRANSPORT_DEBUG(PSTR("TSF:MSG:FPAR REQ,ID=%" PRIu8 "\n"), sender);	// FPAR: find parent request
    						// check if uplink functional - node can only be parent node if link to GW functional
    						// this also prevents circular references in case GW ooo
    						if (transportCheckUplink()) {
    							_transportSM.lastUplinkCheck = hwMillis();
    							TRANSPORT_DEBUG(PSTR("TSF:MSG:GWL OK\n")); // GW uplink ok
    							// random delay minimizes collisions
    							delay(hwMillis() & 0x3ff);
    							(void)transportRouteMessage(build(_msgTmp, sender, NODE_SENSOR_ID, C_INTERNAL,
    							                                  I_FIND_PARENT_RESPONSE).set(_transportConfig.distanceGW));
    						} else {
    							TRANSPORT_DEBUG(PSTR("!TSF:MSG:GWL FAIL\n")); // GW uplink fail, do not respond to parent request
    						}
    					}
    #endif
    					return; // no further processing required, do not forward
    				}
    			} // isTransportReady
    
    1 Reply Last reply
    0
    • BearWithBeardB Offline
      BearWithBeardB Offline
      BearWithBeard
      wrote on last edited by
      #3

      What about using MY_PARENT_NODE_ID on the nodes that should connect to a specific repeater? If you also want to prevent the node to connect to other repeaters as a fall back in case the specified parent is unavailable, combine it with MY_PARENT_NODE_IS_STATIC.

      #define MY_PARENT_NODE_ID 2 // Set node 2 as preferred parent
      #define MY_PARENT_NODE_IS_STATIC // Disables fall back
      SnyfirS 1 Reply Last reply
      1
      • SnyfirS Snyfir

        Hello,

        I have two nodes repeater with battery and one node repeater without battery.

        Instead of all node can pass throw all repeater nodes, i want for some particular node to pass throw only by repeater with battery.

        Is it possible to do it, without modify a lot of code of MySensors ?

        I was thinking to filter by node ID. For example, if a node as an ID below 100, the repeater without battery will not respond to I_FIND_PARENT message. So, the node will not use the repeater without battery. Is it a good approach?

        TheoLT Offline
        TheoLT Offline
        TheoL
        Contest Winner
        wrote on last edited by TheoL
        #4

        @Snyfir Hello my friend,

        I'm not the one who's deep into the Mysensors code. But I assume you have to either clone it from github and adjust the code. Which means you'll have to merge all fixes and changes yourself to your clone.
        Or you have to implement your own repeater code. But not sure if that is possible. Because I don't think your sketch receives all the messages not intended for the node itself.

        I'm not really sure why you'd want this. But I don't know the problem you're trying to solve. As I've always understood it. Each node would always try to connect to the gateway first. If that is not possible it will try to find a repeater.

        So if your particular node can not reach the battery powered repeater. It will have no connection to the gateway at all I suppose.

        What @BearWithBeard suggests might be an easier fix. But you have to be really sure your node can always contact the battery operated repeater.

        1 Reply Last reply
        0
        • BearWithBeardB BearWithBeard

          What about using MY_PARENT_NODE_ID on the nodes that should connect to a specific repeater? If you also want to prevent the node to connect to other repeaters as a fall back in case the specified parent is unavailable, combine it with MY_PARENT_NODE_IS_STATIC.

          #define MY_PARENT_NODE_ID 2 // Set node 2 as preferred parent
          #define MY_PARENT_NODE_IS_STATIC // Disables fall back
          SnyfirS Offline
          SnyfirS Offline
          Snyfir
          wrote on last edited by
          #5

          Thank you for your answer @BearWithBeard.
          I don't want to use this solution because it will stuck my nodes to use only the same parent and i don't want because i have several repeaters, and my nodes are likely to move from room to another room.

          1 Reply Last reply
          0
          • SnyfirS Snyfir

            Hello,

            I have two nodes repeater with battery and one node repeater without battery.

            Instead of all node can pass throw all repeater nodes, i want for some particular node to pass throw only by repeater with battery.

            Is it possible to do it, without modify a lot of code of MySensors ?

            I was thinking to filter by node ID. For example, if a node as an ID below 100, the repeater without battery will not respond to I_FIND_PARENT message. So, the node will not use the repeater without battery. Is it a good approach?

            mfalkviddM Offline
            mfalkviddM Offline
            mfalkvidd
            Mod
            wrote on last edited by
            #6

            @Snyfir could you share more details on why you don’t want to go through that repeater?

            1 Reply Last reply
            0
            • SnyfirS Offline
              SnyfirS Offline
              Snyfir
              wrote on last edited by
              #7

              I want to have a network (A) which will not stop working when the power of the house is down. Because I have door sensor for the alarm of the house.

              And I want another network (B) which can be down when the power is off because it is not for security (temperature, humidity sensor…). This network needs to used the repeater of the network A also.

              That’s why I want nodes of network (A) use only repeaters of network (A), and nodes of network (B) use repeaters of networks (A) and (B)

              E mfalkviddM 2 Replies Last reply
              1
              • SnyfirS Snyfir

                I want to have a network (A) which will not stop working when the power of the house is down. Because I have door sensor for the alarm of the house.

                And I want another network (B) which can be down when the power is off because it is not for security (temperature, humidity sensor…). This network needs to used the repeater of the network A also.

                That’s why I want nodes of network (A) use only repeaters of network (A), and nodes of network (B) use repeaters of networks (A) and (B)

                E Offline
                E Offline
                evb
                wrote on last edited by evb
                #8

                @Snyfir another approach is to use another radio channel for your B network? That includes of course another gateway also...
                An advantage is that you can stick with the standard MySensors library.
                More information on : https://www.mysensors.org/download/sensor_api_20 : search channel

                of course:
                That’s why I want nodes of network (A) use only repeaters of network (A), and nodes of network (B) use repeaters of networks (A) and (B)
                This will not be possible....

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

                  In all honesty mixing rfm69 and nrf24L01+, as @evb, suggests seems to me to be a way that isn't complicated and doesn't acquire any additional coding. I think I'd go that route

                  E 1 Reply Last reply
                  1
                  • TheoLT TheoL

                    In all honesty mixing rfm69 and nrf24L01+, as @evb, suggests seems to me to be a way that isn't complicated and doesn't acquire any additional coding. I think I'd go that route

                    E Offline
                    E Offline
                    evb
                    wrote on last edited by
                    #10

                    @TheoL sorry, I didn't have that in mind, but of course that is also a possibility. :-)

                    With the RF24, we can configure another channel

                    /**
                     * @def MY_RF24_CHANNEL
                     * @brief RF channel for the sensor net, 0-125.
                     *
                     * Frequencies: 2400 Mhz - 2525 Mhz
                     *
                     * Channels: 126
                     * @see https://www.nordicsemi.com/eng/nordic/download_resource/8765/2/42877161/2726
                     *
                     * - 0 => 2400 Mhz (RF24 channel 1)
                     * - 1 => 2401 Mhz (RF24 channel 2)
                     * - 76 => 2476 Mhz (RF24 channel 77)
                     * - 83 => 2483 Mhz (RF24 channel 84)
                     * - 124 => 2524 Mhz (RF24 channel 125)
                     * - 125 => 2525 Mhz (RF24 channel 126)
                     *
                     * In some countries there might be limitations, in Germany for example only the range
                     * 2400,0 - 2483,5 Mhz is allowed.
                     * @see http://www.bundesnetzagentur.de/SharedDocs/Downloads/DE/Sachgebiete/Telekommunikation/Unternehmen_Institutionen/Frequenzen/Allgemeinzuteilungen/2013_10_WLAN_2,4GHz_pdf.pdf
                     */
                    #ifndef MY_RF24_CHANNEL
                    #define MY_RF24_CHANNEL (76)
                    #endif
                    
                    /**
                    

                    If we use RFM69 radio, we can define the network ID

                    #define 	MY_RFM69_NETWORKID   (100)
                     	RFM69 Network ID. Use the same for all nodes that will talk to each other.
                    
                    1 Reply Last reply
                    0
                    • SnyfirS Offline
                      SnyfirS Offline
                      Snyfir
                      wrote on last edited by
                      #11

                      I understand what you said. For further project I wild I think used two channels.
                      But right now, I don’t want to change the hardware. If nobody can tell me if the solution i propose in post 2 works, I will try it.

                      1 Reply Last reply
                      0
                      • SnyfirS Snyfir

                        I want to have a network (A) which will not stop working when the power of the house is down. Because I have door sensor for the alarm of the house.

                        And I want another network (B) which can be down when the power is off because it is not for security (temperature, humidity sensor…). This network needs to used the repeater of the network A also.

                        That’s why I want nodes of network (A) use only repeaters of network (A), and nodes of network (B) use repeaters of networks (A) and (B)

                        mfalkviddM Offline
                        mfalkviddM Offline
                        mfalkvidd
                        Mod
                        wrote on last edited by mfalkvidd
                        #12

                        @Snyfir thanks for explaining. How come you want the B sensors to be disabled when the power is off? Why can’t they be allowed to continue working?

                        SnyfirS 1 Reply Last reply
                        0
                        • mfalkviddM mfalkvidd

                          @Snyfir thanks for explaining. How come you want the B sensors to be disabled when the power is off? Why can’t they be allowed to continue working?

                          SnyfirS Offline
                          SnyfirS Offline
                          Snyfir
                          wrote on last edited by
                          #13

                          @mfalkvidd said in Filter node:

                          @Snyfir thanks for explaining. How come you want the B sensors to be disabled when the power is off? Why can’t they be allowed to continue working?

                          I don't want the B sensors to be disable when the power is off. It's juste because sensors B is not on battery and if the power of the house is off, sensors B can't works

                          mfalkviddM 1 Reply Last reply
                          0
                          • SnyfirS Snyfir

                            @mfalkvidd said in Filter node:

                            @Snyfir thanks for explaining. How come you want the B sensors to be disabled when the power is off? Why can’t they be allowed to continue working?

                            I don't want the B sensors to be disable when the power is off. It's juste because sensors B is not on battery and if the power of the house is off, sensors B can't works

                            mfalkviddM Offline
                            mfalkviddM Offline
                            mfalkvidd
                            Mod
                            wrote on last edited by
                            #14

                            @Snyfir if they can't work anyway, why do you want to filter them?

                            SnyfirS 1 Reply Last reply
                            0
                            • mfalkviddM mfalkvidd

                              @Snyfir if they can't work anyway, why do you want to filter them?

                              SnyfirS Offline
                              SnyfirS Offline
                              Snyfir
                              wrote on last edited by Snyfir
                              #15

                              @mfalkvidd said in Filter node:

                              @Snyfir if they can't work anyway, why do you want to filter them?

                              I don't want that repeaters without battery are used by security nodes (door status, PIR...). Because if the power of the house is down, security nodes while not works during a moment.
                              That's why i want repeaters without battery to reject security nodes

                              alexeliteA 1 Reply Last reply
                              1
                              • SnyfirS Snyfir

                                @mfalkvidd said in Filter node:

                                @Snyfir if they can't work anyway, why do you want to filter them?

                                I don't want that repeaters without battery are used by security nodes (door status, PIR...). Because if the power of the house is down, security nodes while not works during a moment.
                                That's why i want repeaters without battery to reject security nodes

                                alexeliteA Offline
                                alexeliteA Offline
                                alexelite
                                wrote on last edited by
                                #16

                                @Snyfir In your first post you say that only one node is mains powered. Instead of modifying the library, why not provide a UPS type power supply for that node. Something with an old phone battery or 1-2 18650 cells.
                                But I guess the other two already have something like this, they are not battery only.
                                That way if the power goes down all your repeaters are up.

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

                                  In all honesty, I'm not quite convinced you'd need two separate networks. Just provide the security sensors, the repeaters, the gateway and your controller - that form the security system - with some sort of ups and they will keep running until the UPS has no more power left.
                                  The none security devices will stop working when the power goes out and, unless I don't really understand your problem well. That does what I think you want to achieve? Unless you have combined a lot of sensors within a repeater it would really be my way to go. It wouldn't mean any modifications to your security hardware, because they need to be battery powered or have some sort of UPS anyway, to keep working when the power goes down.
                                  But again it's hard to judge when you don't really understand the problem some one is trying to solve.

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


                                  15

                                  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