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. Advice about RF nRF24L01+ to send/receive sensory information

Advice about RF nRF24L01+ to send/receive sensory information

Scheduled Pinned Locked Moved My Project
29 Posts 3 Posters 9.3k Views 2 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.
  • Walyson Albuquerque MachadoW Offline
    Walyson Albuquerque MachadoW Offline
    Walyson Albuquerque Machado
    wrote on last edited by
    #18

    I have pins and I have already done this. :stuck_out_tongue_closed_eyes:

    1 Reply Last reply
    0
    • Walyson Albuquerque MachadoW Offline
      Walyson Albuquerque MachadoW Offline
      Walyson Albuquerque Machado
      wrote on last edited by
      #19

      Is that how I send ? Can I use BINARY to my hall effect sensor? I'm using the digital pin to count every time it passes through a magnet.

      MyMessage msg(NODE_ID, V_STATUS);
      
      float value = 0;
      
      void presentation()
      {
          present(NODE_ID, S_BINARY);
      }
      
      void loop()
      {
          send(msg.set(value));
      }
      

      Is that how I receive?

      void receive(const MyMessage &message) {
          // Handle incoming message
      }
      
      1 Reply Last reply
      0
      • Walyson Albuquerque MachadoW Offline
        Walyson Albuquerque MachadoW Offline
        Walyson Albuquerque Machado
        wrote on last edited by
        #20

        Please, someone tell me how to get the voltage that i'm receiving. I've tried many things, I don't know why this doesn't work.

        msgvolt.getFloat();
        

        I can see the battery in the gateway through serial, but I don't know how to get it to show on the LCD.

        Node:

        #define MY_DEBUG 
        #define MY_DEBUG_VERBOSE_RF24
        #define MY_RADIO_NRF24
        #define DESTINATION_NODE 0      
        #define MY_NODE_ID 10
        #define MY_PARENT_NODE_ID  0
        #define MY_PARENT_NODE_IS_STATIC
        #define MY_RF24_CE_PIN 9
        #define MY_RF24_CS_PIN 10
        #define MY_RF24_PA_LEVEL RF24_PA_LOW
        #define MY_RF24_PA_LEVEL_GW RF24_PA_LOW
        #define MY_RF24_CHANNEL 76
        #define MY_RF24_DATARATE RF24_250KBPS
        
        
        #include <SPI.h>
        #include <MySensors.h>
        
        
        int sensorTensaoDC = A0;
        float valorTensaoDC;
        int amostragem = 1000;
        float mediaTotalTensaoDC = 0;
        float R1 = 28000.0;  
        float R2 = 7600.0;
        int sensorValue_aux = 0;
        float voltsporUnidade = 0.005278592; // 5%1023
        
        float dadosenviados;
        
        
        MyMessage msgvolt(4, V_VOLTAGE);
        
        void setup()  
        {
          analogReference(DEFAULT);
          pinMode(A0, INPUT);
        }
        
        void presentation() {
           sendSketchInfo("Battery Meter", "1.0");
           present(4, S_MULTIMETER, "Voltage", true);
        }
        
        void loop()
        {
           mediaTotalTensaoDC = 0;
          for(int i=0; i < amostragem ; i++)
          {
            valorTensaoDC = analogRead(sensorTensaoDC);
        
            valorTensaoDC =(valorTensaoDC*voltsporUnidade);
            mediaTotalTensaoDC = mediaTotalTensaoDC+ (valorTensaoDC / (R2/(R1+R2)));
          }
          dadosenviados = mediaTotalTensaoDC / amostragem;
          
          
           Serial.print("Battery Voltage: ");
           Serial.print(dadosenviados);
           Serial.println(" V");
        
         send(msgvolt.setDestination(DESTINATION_NODE).set(dadosenviados, 2), 1);
          wait(2000);
        
        }
        

        Gateway:

        #define MY_DEBUG
        #define MY_RADIO_NRF24
        #define MY_GATEWAY_SERIAL
        #define MY_NODE_ID 0
        #define DESTINATION_NODE 10 
        #define MY_RF24_CE_PIN 9
        #define MY_RF24_CS_PIN 10
        #define MY_RF24_PA_LEVEL RF24_PA_LOW
        #define MY_RF24_PA_LEVEL_GW RF24_PA_LOW
        #define MY_RF24_CHANNEL 76
        #define MY_RF24_DATARATE RF24_250KBPS
        
        #include <MySensors.h>
        #include <LiquidCrystal.h>
        #include <SPI.h>
        
        float dadosenviados = 0;
        
        MyMessage msgvolt(4, V_VOLTAGE);
        
        LiquidCrystal lcd(3, 2, 7, 6, 5, 4);
        
        void setup()  
        {
          lcd.begin(20, 4);
          lcd.clear();
          lcd.setCursor(5, 0);
          lcd.print("Teste 1.6");
          delay(5000);
          lcd.setCursor(3, 2);
          lcd.print("Carregando...");
          delay(5000);
          lcd.clear();
        }
        
        void presentation() {
              sendSketchInfo("Battery Meter", "2.0");
              present(4, S_MULTIMETER);
        }
        
        void receive(const MyMessage &msgvolt) {
          saveState(msgvolt.sensor, msgvolt.getFloat());
         dadosenviados = msgvolt.getFloat();
        request(4, V_VOLTAGE, 10);
        
        }         
        
        void incomingMessage(const MyMessage &msgvolt) {
        
        request(4, V_VOLTAGE, 10);
        dadosenviados = msgvolt.getFloat();
        
            lcd.clear();
            lcd.setCursor(0, 0);
            lcd.print("TENSAO");
            lcd.setCursor(7, 0);
            lcd.print(dadosenviados);
            lcd.print("VOLTS");
            lcd.setCursor(0, 1);
            lcd.print(msgvolt.getFloat());
            wait(1000);
              Serial.print("Battery Voltage: ")`;
           Serial.print(dadosenviados);
           Serial.println(" V");
        }
        
        void loop() {
        }
        
        AWIA 1 Reply Last reply
        0
        • Walyson Albuquerque MachadoW Walyson Albuquerque Machado

          Please, someone tell me how to get the voltage that i'm receiving. I've tried many things, I don't know why this doesn't work.

          msgvolt.getFloat();
          

          I can see the battery in the gateway through serial, but I don't know how to get it to show on the LCD.

          Node:

          #define MY_DEBUG 
          #define MY_DEBUG_VERBOSE_RF24
          #define MY_RADIO_NRF24
          #define DESTINATION_NODE 0      
          #define MY_NODE_ID 10
          #define MY_PARENT_NODE_ID  0
          #define MY_PARENT_NODE_IS_STATIC
          #define MY_RF24_CE_PIN 9
          #define MY_RF24_CS_PIN 10
          #define MY_RF24_PA_LEVEL RF24_PA_LOW
          #define MY_RF24_PA_LEVEL_GW RF24_PA_LOW
          #define MY_RF24_CHANNEL 76
          #define MY_RF24_DATARATE RF24_250KBPS
          
          
          #include <SPI.h>
          #include <MySensors.h>
          
          
          int sensorTensaoDC = A0;
          float valorTensaoDC;
          int amostragem = 1000;
          float mediaTotalTensaoDC = 0;
          float R1 = 28000.0;  
          float R2 = 7600.0;
          int sensorValue_aux = 0;
          float voltsporUnidade = 0.005278592; // 5%1023
          
          float dadosenviados;
          
          
          MyMessage msgvolt(4, V_VOLTAGE);
          
          void setup()  
          {
            analogReference(DEFAULT);
            pinMode(A0, INPUT);
          }
          
          void presentation() {
             sendSketchInfo("Battery Meter", "1.0");
             present(4, S_MULTIMETER, "Voltage", true);
          }
          
          void loop()
          {
             mediaTotalTensaoDC = 0;
            for(int i=0; i < amostragem ; i++)
            {
              valorTensaoDC = analogRead(sensorTensaoDC);
          
              valorTensaoDC =(valorTensaoDC*voltsporUnidade);
              mediaTotalTensaoDC = mediaTotalTensaoDC+ (valorTensaoDC / (R2/(R1+R2)));
            }
            dadosenviados = mediaTotalTensaoDC / amostragem;
            
            
             Serial.print("Battery Voltage: ");
             Serial.print(dadosenviados);
             Serial.println(" V");
          
           send(msgvolt.setDestination(DESTINATION_NODE).set(dadosenviados, 2), 1);
            wait(2000);
          
          }
          

          Gateway:

          #define MY_DEBUG
          #define MY_RADIO_NRF24
          #define MY_GATEWAY_SERIAL
          #define MY_NODE_ID 0
          #define DESTINATION_NODE 10 
          #define MY_RF24_CE_PIN 9
          #define MY_RF24_CS_PIN 10
          #define MY_RF24_PA_LEVEL RF24_PA_LOW
          #define MY_RF24_PA_LEVEL_GW RF24_PA_LOW
          #define MY_RF24_CHANNEL 76
          #define MY_RF24_DATARATE RF24_250KBPS
          
          #include <MySensors.h>
          #include <LiquidCrystal.h>
          #include <SPI.h>
          
          float dadosenviados = 0;
          
          MyMessage msgvolt(4, V_VOLTAGE);
          
          LiquidCrystal lcd(3, 2, 7, 6, 5, 4);
          
          void setup()  
          {
            lcd.begin(20, 4);
            lcd.clear();
            lcd.setCursor(5, 0);
            lcd.print("Teste 1.6");
            delay(5000);
            lcd.setCursor(3, 2);
            lcd.print("Carregando...");
            delay(5000);
            lcd.clear();
          }
          
          void presentation() {
                sendSketchInfo("Battery Meter", "2.0");
                present(4, S_MULTIMETER);
          }
          
          void receive(const MyMessage &msgvolt) {
            saveState(msgvolt.sensor, msgvolt.getFloat());
           dadosenviados = msgvolt.getFloat();
          request(4, V_VOLTAGE, 10);
          
          }         
          
          void incomingMessage(const MyMessage &msgvolt) {
          
          request(4, V_VOLTAGE, 10);
          dadosenviados = msgvolt.getFloat();
          
              lcd.clear();
              lcd.setCursor(0, 0);
              lcd.print("TENSAO");
              lcd.setCursor(7, 0);
              lcd.print(dadosenviados);
              lcd.print("VOLTS");
              lcd.setCursor(0, 1);
              lcd.print(msgvolt.getFloat());
              wait(1000);
                Serial.print("Battery Voltage: ")`;
             Serial.print(dadosenviados);
             Serial.println(" V");
          }
          
          void loop() {
          }
          
          AWIA Offline
          AWIA Offline
          AWI
          Hero Member
          wrote on last edited by AWI
          #21

          @Walyson-Albuquerque-Machado a few things :

          • the receive routine should be the only place where you receive and read the incoming messages. So skip the incomingmessage routine and add its functionality to receive.

          • you don't need to 'request' anything as the node already sends messages all the time.

          • savestate writes only byte (8 bit) values, so you need to decompose a float to bytes in order to save it. (best to use an 'union' for that)

          Be aware that the gateway (node 0) receives the messages from all nodes connected. You need to make sure that that the incoming message is the one to display.

          In summary, to receive messages : the receive routine is called automatically when a message is received. You read the message content (store in a global variable) , and display it.

          1 Reply Last reply
          0
          • Walyson Albuquerque MachadoW Offline
            Walyson Albuquerque MachadoW Offline
            Walyson Albuquerque Machado
            wrote on last edited by Walyson Albuquerque Machado
            #22

            Ok, I'm going to erase the void incomingMessage(const MyMessage &msgvolt) and the request(4, V_VOLTAGE, 10).
            Also no savestate.

            I tried to store in a global variable and display, but I didn't understand It, how do I read!?

            void receive(const MyMessage &msgvolt) {
              if (msgvolt.type==V_VOLTAGE) {
                digitalWrite(msgvolt.sensor, msgvolt.getFloat());
              
             dadosenviados = msgvolt.getFloat();
            
            
            Serial.println(msgvolt.getFloat());
            Serial.println(dadosenviados);
            Serial.println(msgvolt.data);
            }
            

            This is what I'm getting in the serial:

            Node:

            Battery Voltage: 8.68 V
            RF24:stop listening
            RF24:write register, reg=0, value=14
            RF24:open writing pipe, recipient=0
            RF24:write register, reg=10, value=0
            RF24:write register, reg=16, value=0
            RF24:send message to 0, len=12
            RF24:flushTX
            RF24:write register, reg=7, value=48
            RF24:start listening
            RF24:write register, reg=0, value=15
            RF24:write register, reg=10, value=10
            TSP:MSG:SEND 10-10-0-0 s=4,c=1,t=38,pt=7,l=5,sg=0,ft=0,st=ok:8.68
            RF24:read message, len=12
            RF24:write register, reg=7, value=64
            TSP:MSG:READ 0-0-10 s=4,c=1,t=38,pt=7,l=5,sg=0:8.68
            Battery Voltage: 8.69 V
            

            Gateway:

            10;4;1;0;38;8.68
            0;255;3;0;9;TSP:MSG:READ 10-10-0 s=4,c=1,t=38,pt=7,l=5,sg=0:8.68
            0;255;3;0;9;TSP:MSG:ACK msg
            0;255;3;0;9;TSP:MSG:SEND 0-0-10-10 s=4,c=1,t=38,pt=7,l=5,sg=0,ft=0,st=ok:8.68
            10;4;1;0;38;8.68
            
            AWIA 1 Reply Last reply
            0
            • Walyson Albuquerque MachadoW Walyson Albuquerque Machado

              Ok, I'm going to erase the void incomingMessage(const MyMessage &msgvolt) and the request(4, V_VOLTAGE, 10).
              Also no savestate.

              I tried to store in a global variable and display, but I didn't understand It, how do I read!?

              void receive(const MyMessage &msgvolt) {
                if (msgvolt.type==V_VOLTAGE) {
                  digitalWrite(msgvolt.sensor, msgvolt.getFloat());
                
               dadosenviados = msgvolt.getFloat();
              
              
              Serial.println(msgvolt.getFloat());
              Serial.println(dadosenviados);
              Serial.println(msgvolt.data);
              }
              

              This is what I'm getting in the serial:

              Node:

              Battery Voltage: 8.68 V
              RF24:stop listening
              RF24:write register, reg=0, value=14
              RF24:open writing pipe, recipient=0
              RF24:write register, reg=10, value=0
              RF24:write register, reg=16, value=0
              RF24:send message to 0, len=12
              RF24:flushTX
              RF24:write register, reg=7, value=48
              RF24:start listening
              RF24:write register, reg=0, value=15
              RF24:write register, reg=10, value=10
              TSP:MSG:SEND 10-10-0-0 s=4,c=1,t=38,pt=7,l=5,sg=0,ft=0,st=ok:8.68
              RF24:read message, len=12
              RF24:write register, reg=7, value=64
              TSP:MSG:READ 0-0-10 s=4,c=1,t=38,pt=7,l=5,sg=0:8.68
              Battery Voltage: 8.69 V
              

              Gateway:

              10;4;1;0;38;8.68
              0;255;3;0;9;TSP:MSG:READ 10-10-0 s=4,c=1,t=38,pt=7,l=5,sg=0:8.68
              0;255;3;0;9;TSP:MSG:ACK msg
              0;255;3;0;9;TSP:MSG:SEND 0-0-10-10 s=4,c=1,t=38,pt=7,l=5,sg=0,ft=0,st=ok:8.68
              10;4;1;0;38;8.68
              
              AWIA Offline
              AWIA Offline
              AWI
              Hero Member
              wrote on last edited by
              #23

              @Walyson-Albuquerque-Machado Apart from the line digitalWrite(msgvolt.sensor, msgvolt.getFloat()); (what do you want to accomplish here? wrtie a float value to a digital output?) it should be fine. The gateway is receiving the volt message so communication is working.

              this dadosenviados = msgvolt.getFloat(); variable should hold the value, but does not seem to be executed. Try with a println if the "receive" routine is called at all. As you are receiving values with a gateway (node = 0) this is a special case. I need to emulate this. As we seem to be living in a different timezones it can take a while...

              So if anybody else has a direct answer...

              1 Reply Last reply
              1
              • Walyson Albuquerque MachadoW Offline
                Walyson Albuquerque MachadoW Offline
                Walyson Albuquerque Machado
                wrote on last edited by
                #24

                Hello! Hm, I removed the digitalWrite and I don't undestand why it doesn't get the data. I tried to print something in the receive routine and I got nothing. What do you mean about special case?

                Thanks for the time spent with me.

                AWIA 1 Reply Last reply
                0
                • Walyson Albuquerque MachadoW Walyson Albuquerque Machado

                  Hello! Hm, I removed the digitalWrite and I don't undestand why it doesn't get the data. I tried to print something in the receive routine and I got nothing. What do you mean about special case?

                  Thanks for the time spent with me.

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

                  @Walyson-Albuquerque-Machado I mirrored your setup and tried to read the messages coming into the gateway, No succes :-(

                  The "special" situation is that it's only recent that a Gateway can have locally attached sensors (and actuators..) As mentioned before the gateway receives messages from all the sensors in a (standard) MySensors netword (node 0) to forward them to a controller.

                  I'm sure I did this before so need to investigate a little further.

                  Basic question is: Does the receive() function in a gateway react to incoming sensor messages?

                  1 Reply Last reply
                  1
                  • Walyson Albuquerque MachadoW Offline
                    Walyson Albuquerque MachadoW Offline
                    Walyson Albuquerque Machado
                    wrote on last edited by
                    #26

                    Is my send routine from the arduino + nRF24L01 + sensor correct?

                    send(msgvolt.setDestination(DESTINATION_NODE).set(dadosenviados, 2), 1);
                    

                    Or:

                    send(msgvolt.set(dadosenviados, 2),  1);
                    

                    And the receive routine from the arduino + nRF24L01 ?

                    void receive(const MyMessage &msgvolt) {
                    
                      if (msgvolt.type == V_VOLTAGE) {
                          
                     dadosenviados = msgvolt.getFloat();
                    
                    Serial.print("Incoming");
                    Serial.println(msgvolt.getFloat());
                    Serial.println(dadosenviados);
                    }
                    

                    The configuration of the arduino + nRF24L01 + sensor:

                    #define MY_DEBUG 
                    #define MY_DEBUG_VERBOSE_RF24
                    #define MY_RADIO_NRF24
                    
                    #define MY_NODE_ID 10
                    
                    #define MY_RF24_CE_PIN 9
                    #define MY_RF24_CS_PIN 10
                    #define MY_RF24_PA_LEVEL RF24_PA_LOW
                    #define MY_RF24_PA_LEVEL_GW RF24_PA_LOW
                    #define MY_RF24_CHANNEL 76
                    #define MY_RF24_DATARATE RF24_250KBPS
                    
                    #include <SPI.h>
                    #include <MySensors.h>
                    

                    The configuration of the arduino + nRF24L01:

                    #define MY_DEBUG
                    #define MY_RADIO_NRF24
                    #define MY_DEBUG_VERBOSE_RF24
                    
                    #define MY_GATEWAY_SERIAL
                    #define MY_NODE_ID 0
                    
                    #define MY_RF24_CE_PIN 9
                    #define MY_RF24_CS_PIN 10
                    #define MY_RF24_PA_LEVEL RF24_PA_HIGH
                    #define MY_RF24_PA_LEVEL_GW RF24_PA_LOW
                    #define MY_RF24_CHANNEL 76
                    #define MY_RF24_DATARATE RF24_250KBPS
                    
                    
                    #include <MySensors.h>
                    #include <LiquidCrystal.h>
                    #include <SPI.h>
                    
                    AWIA 1 Reply Last reply
                    0
                    • Walyson Albuquerque MachadoW Walyson Albuquerque Machado

                      Is my send routine from the arduino + nRF24L01 + sensor correct?

                      send(msgvolt.setDestination(DESTINATION_NODE).set(dadosenviados, 2), 1);
                      

                      Or:

                      send(msgvolt.set(dadosenviados, 2),  1);
                      

                      And the receive routine from the arduino + nRF24L01 ?

                      void receive(const MyMessage &msgvolt) {
                      
                        if (msgvolt.type == V_VOLTAGE) {
                            
                       dadosenviados = msgvolt.getFloat();
                      
                      Serial.print("Incoming");
                      Serial.println(msgvolt.getFloat());
                      Serial.println(dadosenviados);
                      }
                      

                      The configuration of the arduino + nRF24L01 + sensor:

                      #define MY_DEBUG 
                      #define MY_DEBUG_VERBOSE_RF24
                      #define MY_RADIO_NRF24
                      
                      #define MY_NODE_ID 10
                      
                      #define MY_RF24_CE_PIN 9
                      #define MY_RF24_CS_PIN 10
                      #define MY_RF24_PA_LEVEL RF24_PA_LOW
                      #define MY_RF24_PA_LEVEL_GW RF24_PA_LOW
                      #define MY_RF24_CHANNEL 76
                      #define MY_RF24_DATARATE RF24_250KBPS
                      
                      #include <SPI.h>
                      #include <MySensors.h>
                      

                      The configuration of the arduino + nRF24L01:

                      #define MY_DEBUG
                      #define MY_RADIO_NRF24
                      #define MY_DEBUG_VERBOSE_RF24
                      
                      #define MY_GATEWAY_SERIAL
                      #define MY_NODE_ID 0
                      
                      #define MY_RF24_CE_PIN 9
                      #define MY_RF24_CS_PIN 10
                      #define MY_RF24_PA_LEVEL RF24_PA_HIGH
                      #define MY_RF24_PA_LEVEL_GW RF24_PA_LOW
                      #define MY_RF24_CHANNEL 76
                      #define MY_RF24_DATARATE RF24_250KBPS
                      
                      
                      #include <MySensors.h>
                      #include <LiquidCrystal.h>
                      #include <SPI.h>
                      
                      AWIA Offline
                      AWIA Offline
                      AWI
                      Hero Member
                      wrote on last edited by
                      #27

                      @Walyson-Albuquerque-Machado All of the code snippets you show seem to be ok. With respect to the #defines... most of these are default so need to include them (but nothing wrong in showing them). The Verbose output also gives me tooo much information if the radio is working.

                      1 Reply Last reply
                      1
                      • Walyson Albuquerque MachadoW Offline
                        Walyson Albuquerque MachadoW Offline
                        Walyson Albuquerque Machado
                        wrote on last edited by Walyson Albuquerque Machado
                        #28

                        @AWI, @mfalkvidd Thank you for your time trying to help me.

                        I just found a Modified SD library to use pins A0-A3 for software SPI. I got it to work!!! So happy. :laughing:

                        If anyone interests, the link is below:

                        Modified SD library to use pins A0-A3 for software SPI
                        0_1475856752676_SD-hardcode-use-pins-A0-A3.zip

                        AWIA 1 Reply Last reply
                        1
                        • Walyson Albuquerque MachadoW Walyson Albuquerque Machado

                          @AWI, @mfalkvidd Thank you for your time trying to help me.

                          I just found a Modified SD library to use pins A0-A3 for software SPI. I got it to work!!! So happy. :laughing:

                          If anyone interests, the link is below:

                          Modified SD library to use pins A0-A3 for software SPI
                          0_1475856752676_SD-hardcode-use-pins-A0-A3.zip

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

                          @Walyson-Albuquerque-Machado Thanks for the lib.
                          Back to the issue that you are not receiving messages from your voltage sensor on your Gateway node:
                          What is found is that messages sent to the gateway node are not interpreted by the node but directly forwarded to the serial port to the controller. The #else code below in my MyTransport.cpp is responsible for that. It don't know if it was for a reason but it gives a kind of inconsistency.. it is changed in the development branch..

                          			// Hand over message to controller
                          			gatewayTransportSend(_msg);
                          		#else
                          			// Call incoming message callback if available
                          			if (receive) {
                          				receive(_msg);
                          			}
                          
                          1 Reply Last reply
                          1
                          Reply
                          • Reply as topic
                          Log in to reply
                          • Oldest to Newest
                          • Newest to Oldest
                          • Most Votes


                          21

                          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