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. Troubleshooting
  3. Analog to digital how ?

Analog to digital how ?

Scheduled Pinned Locked Moved Troubleshooting
5 Posts 2 Posters 1.4k 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.
  • R Offline
    R Offline
    Rene046
    wrote on last edited by
    #1

    Hi there,

    I would like to know what and where i have to look for.

    I reading with my nano 328 port A0, A1, A2 voltage from "3" motion senors
    and get a specific value >700
    if one of those ports gets above this 700
    I would like to send this true mysensors as an normal motion sensor normal true trigger
    but im not using any interrupt
    How do i send this ?

    if (analogRead(A0) >=700)
    {
    send(msgmotion0.set(tripped0?"1":"0"));

    and for the others.
    send(msgmotion0.set(tripped0?"1":"0"));
    send(msgmotion1.set(tripped1?"1":"0"));
    send(msgmotion3.set(tripped3?"1":"0"));

    1 Reply Last reply
    0
    • R Offline
      R Offline
      Rene046
      wrote on last edited by
      #2
      #define MY_RADIO_NRF24
      #define MY_REPEATER_FEATURE
      #define MY_DEBUG
      //#include <SPI.h>
      #include <MySensors.h>
      boolean sensorUpperActive;
      boolean sensorBottomActive;
      boolean PIR00;
      #define MY_NODE_ID 30
      #define CHILD_ID_PIR00 31   // Id of the sensor child
      #define CHILD_ID_PIR01 32   // Id of the sensor child
      #define CHILD_ID_PIR02 33   // Id of the sensor child
      
      void presentation()
      {
      // Send the sketch version information to the gateway and Controller
        sendSketchInfo("PIR Sensor", "4.0");
      
      // Register all sensors to gw (they will be created as child devices)
        present(CHILD_ID_PIR00, S_MOTION, "PIR Sensor 0");
        present(CHILD_ID_PIR01, S_MOTION, "PIR Sensor 1");
        present(CHILD_ID_PIR02, S_MOTION, "PIR Sensor 2");
       
       }
      // Initialize motion message
       MyMessage msgPIR00(CHILD_ID_PIR00, V_TRIPPED);
       MyMessage msgPIR01(CHILD_ID_PIR01, V_TRIPPED);
       MyMessage msgPIR02(CHILD_ID_PIR02, V_TRIPPED);
      
      // the setup routine runs once when you press reset:
      void setup() {
        // initialize serial communication at 9600 bits per second:
      //  Serial.begin(9600);
        pinMode(LED_BUILTIN, OUTPUT);
      
      }
      
      // the loop routine runs over and over again forever:
      void loop() {
       Pir0lezen();
       Pir1lezen();
       Pir2lezen();
       effopneer();
       effneerop();
       Tegelijk();
       
      //  delay(1000);        // delay in between reads for stability
      }
      
      void Pir0lezen() {
        int PIR0 = analogRead(A0);
        if (analogRead(A0) >=700) 
        {
        Serial.println("PIR0----");
        Serial.println(PIR0);
        PIR00 = true;
        // Send status to Domoticz
      }}
      
      
      void Pir1lezen() {
        int PIR1 = analogRead(A1);
        if (analogRead(A1) >=700) {
        sensorBottomActive = true;
        // Send status to Domoticz
        Serial.println("PIR1----");
        Serial.println(PIR1);
         
      }}
      
      void Pir2lezen() {
        int PIR2 = analogRead(A2);
        if (analogRead(A2) >=700) {
        sensorUpperActive = true;
        // Send status to Domoticz
        Serial.println("PIR2----");
        Serial.println(PIR2);
        
      }}
      
      void effopneer() {
        if (sensorBottomActive==true && sensorUpperActive==false){
        // do something
        digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
        delay(100);                       // wait for a second
        digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
        sensorBottomActive = false ;  
        Serial.println("PIR1--uit");
        }
      }
      
      void effneerop() {
        if (sensorBottomActive==false && sensorUpperActive==true){
        digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
        delay(500);                       // wait for a second
        digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
        sensorUpperActive = false ;  
        Serial.println("PIR2--uit");
        }
      }
      
      void  Tegelijk() {
        if (sensorBottomActive==true && sensorUpperActive==true){
        digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
        delay(5000);                       // wait for a second
        digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
        sensorUpperActive = false ; 
        sensorBottomActive = false ;  
        Serial.println("PIR1&2--uit");
      }
      }
      
      mfalkviddM 1 Reply Last reply
      0
      • R Rene046
        #define MY_RADIO_NRF24
        #define MY_REPEATER_FEATURE
        #define MY_DEBUG
        //#include <SPI.h>
        #include <MySensors.h>
        boolean sensorUpperActive;
        boolean sensorBottomActive;
        boolean PIR00;
        #define MY_NODE_ID 30
        #define CHILD_ID_PIR00 31   // Id of the sensor child
        #define CHILD_ID_PIR01 32   // Id of the sensor child
        #define CHILD_ID_PIR02 33   // Id of the sensor child
        
        void presentation()
        {
        // Send the sketch version information to the gateway and Controller
          sendSketchInfo("PIR Sensor", "4.0");
        
        // Register all sensors to gw (they will be created as child devices)
          present(CHILD_ID_PIR00, S_MOTION, "PIR Sensor 0");
          present(CHILD_ID_PIR01, S_MOTION, "PIR Sensor 1");
          present(CHILD_ID_PIR02, S_MOTION, "PIR Sensor 2");
         
         }
        // Initialize motion message
         MyMessage msgPIR00(CHILD_ID_PIR00, V_TRIPPED);
         MyMessage msgPIR01(CHILD_ID_PIR01, V_TRIPPED);
         MyMessage msgPIR02(CHILD_ID_PIR02, V_TRIPPED);
        
        // the setup routine runs once when you press reset:
        void setup() {
          // initialize serial communication at 9600 bits per second:
        //  Serial.begin(9600);
          pinMode(LED_BUILTIN, OUTPUT);
        
        }
        
        // the loop routine runs over and over again forever:
        void loop() {
         Pir0lezen();
         Pir1lezen();
         Pir2lezen();
         effopneer();
         effneerop();
         Tegelijk();
         
        //  delay(1000);        // delay in between reads for stability
        }
        
        void Pir0lezen() {
          int PIR0 = analogRead(A0);
          if (analogRead(A0) >=700) 
          {
          Serial.println("PIR0----");
          Serial.println(PIR0);
          PIR00 = true;
          // Send status to Domoticz
        }}
        
        
        void Pir1lezen() {
          int PIR1 = analogRead(A1);
          if (analogRead(A1) >=700) {
          sensorBottomActive = true;
          // Send status to Domoticz
          Serial.println("PIR1----");
          Serial.println(PIR1);
           
        }}
        
        void Pir2lezen() {
          int PIR2 = analogRead(A2);
          if (analogRead(A2) >=700) {
          sensorUpperActive = true;
          // Send status to Domoticz
          Serial.println("PIR2----");
          Serial.println(PIR2);
          
        }}
        
        void effopneer() {
          if (sensorBottomActive==true && sensorUpperActive==false){
          // do something
          digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
          delay(100);                       // wait for a second
          digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
          sensorBottomActive = false ;  
          Serial.println("PIR1--uit");
          }
        }
        
        void effneerop() {
          if (sensorBottomActive==false && sensorUpperActive==true){
          digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
          delay(500);                       // wait for a second
          digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
          sensorUpperActive = false ;  
          Serial.println("PIR2--uit");
          }
        }
        
        void  Tegelijk() {
          if (sensorBottomActive==true && sensorUpperActive==true){
          digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
          delay(5000);                       // wait for a second
          digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
          sensorUpperActive = false ; 
          sensorBottomActive = false ;  
          Serial.println("PIR1&2--uit");
        }
        }
        
        mfalkviddM Offline
        mfalkviddM Offline
        mfalkvidd
        Mod
        wrote on last edited by
        #3

        @Rene046 how about something like this?

        void Pirlezen() {
          bool pir = analogRead(A0)>=700;
          send(msgmotion0.set(pir));
        }}
        
        R 1 Reply Last reply
        0
        • mfalkviddM mfalkvidd

          @Rene046 how about something like this?

          void Pirlezen() {
            bool pir = analogRead(A0)>=700;
            send(msgmotion0.set(pir));
          }}
          
          R Offline
          R Offline
          Rene046
          wrote on last edited by
          #4

          @mfalkvidd

          Thx

          I already got it running after a long night ...lol

          here is what i have sofar...

          #define MY_RADIO_NRF24
          #define MY_REPEATER_FEATURE
          #define MY_DEBUG
          //#include <SPI.h>
          #include <MySensors.h>
          boolean sensorUpperActive;
          // boolean sensorBottomActive;
          int sensorBottomActive;
          int PIR1new;
          int PIR1old;
          int PIR2new;
          int PIR2old;
          
          boolean PIR00;
          #define MY_NODE_ID 30
          #define CHILD_ID_PIR00 31   // Id of the sensor child
          #define CHILD_ID_PIR01 32   // Id of the sensor child
          #define CHILD_ID_PIR02 33   // Id of the sensor child
          
          void presentation()
          {
          // Send the sketch version information to the gateway and Controller
            sendSketchInfo("PIR Sensor", "4.0");
          
          // Register all sensors to gw (they will be created as child devices)
            present(CHILD_ID_PIR00, S_MOTION, "PIR Sensor 0");
            present(CHILD_ID_PIR01, S_MOTION, "PIR Sensor 1");
            present(CHILD_ID_PIR02, S_MOTION, "PIR Sensor 2");
           
           }
          // Initialize motion message
           MyMessage msgPIR00(CHILD_ID_PIR00, V_TRIPPED);
           MyMessage msgPIR01(CHILD_ID_PIR01, V_TRIPPED);
           MyMessage msgPIR02(CHILD_ID_PIR02, V_TRIPPED);
          
          // the setup routine runs once when you press reset:
          void setup() {
            // initialize serial communication at 9600 bits per second:
          //  Serial.begin(9600);
            pinMode(LED_BUILTIN, OUTPUT);
          
          }
          
          // the loop routine runs over and over again forever:
          void loop() {
           Pir0lezen();
           
           Pir1lezen();
           Pir2lezen();
           effopneer();
           effneerop();
           Tegelijk();
           
          //  delay(1000);        // delay in between reads for stability
          }
          
          void Pir0lezen() {
            int PIR0 = analogRead(A0);
            if (analogRead(A0) >=700) 
            {
            Serial.println("PIR0----");
            Serial.println(PIR0);
            PIR00 = true;
          }}
          
          void Pir1lezen() {
            int PIR1new = analogRead(A1);
            if (PIR1new != PIR1old && PIR1new >=700) {
            sensorBottomActive = true ;
            send (msgPIR01.set(sensorBottomActive?"1":"0"));
            // Send status to Domoticz
            Serial.println("PIR1----");
            Serial.println(PIR1new);
            PIR1old = PIR1new;
          }}
          
          void Pir2lezen() {
            int PIR2new = analogRead(A2);
            if (PIR2new != PIR2old && PIR2new >=700) {
            sensorUpperActive = true ;
            send (msgPIR02.set(sensorUpperActive?"1":"0"));
            // Send status to Domoticz
            Serial.println("PIR2----");
            Serial.println(PIR2new);
            PIR2old = PIR2new;
           }
          }
          
          void effopneer() {
            if (sensorBottomActive==true && sensorUpperActive==false){
            // do something
            digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
            delay(100);                       // wait for a second
            digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
            sensorBottomActive = false ;  
            send (msgPIR01.set(sensorBottomActive));
            Serial.println("PIR1--uit");
            }
          }
          
          void effneerop() {
            if (sensorBottomActive==false && sensorUpperActive==true){
            digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
            delay(500);                       // wait for a second
            digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
            sensorUpperActive = false ;  
            send (msgPIR02.set(sensorUpperActive));
            Serial.println("PIR2--uit");
            }
          }
          
          void  Tegelijk() {
            if (sensorBottomActive==true && sensorUpperActive==true){
            digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
            delay(5000);                       // wait for a second
            digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
            sensorUpperActive = false ; 
            sensorBottomActive = false ;  
            send (msgPIR01.set(sensorUpperActive));
            send (msgPIR01.set(sensorBottomActive));
            Serial.println("PIR1&2--uit");
          }
          }
          
          1 Reply Last reply
          1
          • R Offline
            R Offline
            Rene046
            wrote on last edited by
            #5

            All working fine sometimes the pir reaction could be a bid faster, and sometimes i get a false reading think i'll have to put the pir signal lines to the ground with an resistor.

            Any advice is welcome, to make thing faster, and less complex.
            else use this with fun......

            
            
            
            #define MY_RADIO_NRF24
            #define MY_REPEATER_FEATURE
            #define MY_DEBUG
            
            #include <Wire.h>        // Wire library t.b.v. I²C
            #include <MySensors.h>
            
            byte GPIOA  = 0x12;      // GPIOA adres in 16-bit mode, is directe aansturing 1e groep van 8 I/O poorten.
            byte GPIOB  = 0x13;      // GPIOA adres in 16-bit mode, is directe aansturing 1e groep van 8 I/O poorten.
            
            boolean sensorBovenActive;    // Status of Pir motion sensor 2.
            boolean sensorOnderActive;    // Status of Pir motion sensor 1.
            boolean sensorKelderActive;    // Status of Pir motion sensor 0.
            
            int PIR0new;      // Pir motion sensor 0 updated value "Kelder".
            int PIR0old;      // Pir motion sensor 0 old value "Kelder".
            int PIR1new;      // Pir motion sensor 1 updated value "sensorOnderActive".
            int PIR1old;      // Pir motion sensor 1 old value "sensorOnderActive".
            int PIR2new;      // Pir motion sensor 2 updated value. "sensorBovenActive"
            int PIR2old;      // Pir motion sensor 2 old value. sensorBovenActive"
            
            int StairDelay = 250; // Delay for stairs
            int StairOn = 30000; // Delay to keep stair light on
            
            #define MY_NODE_ID 30
            #define CHILD_ID_PIR00 31   // Id of the sensor child
            #define CHILD_ID_PIR01 32   // Id of the sensor child
            #define CHILD_ID_PIR02 33   // Id of the sensor child
            
            void presentation(){
            // Send the sketch version information to the gateway and Controller
              sendSketchInfo("Trap Controller", "4.0");
            
            // Register all sensors to gw (they will be created as child devices)
              present(CHILD_ID_PIR00, S_MOTION, "PIR Sensor Kelder");
              present(CHILD_ID_PIR01, S_MOTION, "PIR Sensor Trap Onder");
              present(CHILD_ID_PIR02, S_MOTION, "PIR Sensor Trap Boven");
            } 
            
            // Initialize motion message
             MyMessage msgPIR00(CHILD_ID_PIR00, V_TRIPPED);
             MyMessage msgPIR01(CHILD_ID_PIR01, V_TRIPPED);
             MyMessage msgPIR02(CHILD_ID_PIR02, V_TRIPPED);
            
            // the setup routine runs once when you press reset:
            void setup() {
              
             Wire.begin(); // wake up I2C bus 
             // set I/O pins to outputs
             Wire.beginTransmission(0x20); // Start adress of mcp23017
             Wire.write(0x00); // IODIRA register
             Wire.write(0x00); // set all of port A to outputs
             Wire.endTransmission();
             Wire.beginTransmission(0x20);
             Wire.write(0x01); // IODIRB register
             Wire.write(0x00); // set all of port B to outputs
             Wire.endTransmission();
            }
            
            // the loop routine runs over and over again forever:
            void loop() {
             Pir0lezen();
             Pir1lezen();
             Pir2lezen();
             effneerop();
             effopneer();
             effKelder();
            }
            
            void Pir0lezen() {
              int PIR0new = analogRead(A0);
              if (PIR0new >=900) {
              sensorKelderActive = true;
              // Send status to Domoticz
              send (msgPIR00.set(sensorKelderActive?"1":"0"));
              Serial.println("PIR0new----");
              Serial.println(PIR0new);
              PIR0old = PIR0new;
              sensorKelderActive = false;
              send (msgPIR00.set(sensorKelderActive));
            }}
            
            void Pir1lezen() {
              int PIR1new = analogRead(A1);
              if (PIR1new != PIR1old && PIR1new >=710) {
              sensorOnderActive = true ;
              sensorBovenActive = false ;
              // Send status to Domoticz
              send (msgPIR01.set(sensorOnderActive?"1":"0"));
              Serial.println("PIR1----");
              Serial.println(PIR1new);
              PIR1old = PIR1new;
              
            }}
            
            void Pir2lezen() {
              int PIR2new = analogRead(A2);
              if (PIR2new != PIR2old && PIR2new >=710) {
              sensorBovenActive = true ;
              sensorOnderActive = false ;
              // Send status to Domoticz
              send (msgPIR02.set(sensorBovenActive?"1":"0"));
              Serial.println("PIR2----");
              Serial.println(PIR2new);
              PIR2old = PIR2new;
              
            }}
            
            void effopneer() {
                if (sensorOnderActive==true && sensorBovenActive==false){
                Serial.println("PIR1--aan");
                sensorOnderActive = false ;  
                setLEDA(B01111111);  // Tree 1
                delay(StairDelay); 
                setLEDA(B00111111);  // Tree 2
                delay(StairDelay); 
                setLEDA(B00011111);  // Tree 3
                delay(StairDelay); 
                setLEDA(B00001111);  // Tree 4
                delay(StairDelay); 
                setLEDA(B00000111);  // Tree 5
                delay(StairDelay); 
                setLEDA(B00000011);  // Tree 6
                delay(StairDelay); 
                setLEDA(B00000001);  // Tree 7
                delay(StairDelay); 
                setLEDA(B00000000);  // Tree 8
                delay(StairDelay); 
                setLEDB(B01111111);  // Tree 9
                delay(StairDelay); 
                setLEDB(B00111111);  // Tree 10
                delay(StairDelay); 
                setLEDB(B00011111);  // Tree 11
                delay(StairDelay); 
                setLEDB(B00001111);  // Tree 12
                delay(StairDelay); 
                setLEDB(B00000111);  // Tree 13
                delay(StairDelay); 
                setLEDB(B00000011);  // Tree 14
                send (msgPIR01.set(sensorOnderActive)); // switch off before delay
                delay(StairOn); 
                setLEDA(B11111111);  // all off
                setLEDB(B11111111);  // all off
                Serial.println("PIR1--uit");
            }}
            
            void effneerop() {
              if (sensorOnderActive==false && sensorBovenActive==true){
                Serial.println("PIR2--aan");
                sensorBovenActive = false ;
                setLEDB(B11111011);  // Tree 14
                delay(StairDelay); 
                setLEDB(B11110011);  // Tree 13
                delay(StairDelay); 
                setLEDB(B11100011);  // Tree 12
                delay(StairDelay); 
                setLEDB(B11000011);  // Tree 11
                delay(StairDelay); 
                setLEDB(B10000111);  // Tree 10
                delay(StairDelay); 
                setLEDB(B00000011);  // Tree 9
                delay(StairDelay); 
                setLEDA(B11111110);  // Tree 8
                delay(StairDelay); 
                setLEDA(B11111100);  // Tree 7
                delay(StairDelay); 
                setLEDA(B11111000);  // Tree 6
                delay(StairDelay); 
                setLEDA(B11110000);  // Tree 5
                delay(StairDelay); 
                setLEDA(B11100000);  // Tree 4
                delay(StairDelay); 
                setLEDA(B11000000);  // Tree 3
                delay(StairDelay); 
                setLEDA(B10000000);  // Tree 2
                delay(StairDelay); 
                setLEDA(B00000000);  // Tree 1
                send (msgPIR02.set(sensorBovenActive));
                delay(StairOn); 
                setLEDA(B11111111);  // all off
                setLEDB(B11111111);  // all off
                Serial.println("PIR2--uit");
            }}
            
            void effKelder() {
            }
            
            void setLEDA(byte value)
            {
            
             Wire.beginTransmission(0x20);
             Wire.write(GPIOA);                            // gpioa
             Wire.write(byte(value));                      // set LEDs volgens waarde 'value'
             Wire.endTransmission();
            }
            
            void setLEDB(byte value)
            {
            
             Wire.beginTransmission(0x20);
             Wire.write(GPIOB);                            // gpiob
             Wire.write(byte(value));                      // set LEDs volgens waarde 'value'
             Wire.endTransmission();
            }
            
            void bonuseff() {
              
                setLEDB(B11111011);  // Tree 14
                delay(StairDelay); 
                setLEDB(B11110111);  // Tree 13
                delay(StairDelay); 
                setLEDB(B11101111);  // Tree 12
                delay(StairDelay); 
                setLEDB(B11011111);  // Tree 11
                delay(StairDelay); 
                setLEDB(B10111111);  // Tree 10
                delay(StairDelay); 
                setLEDB(B01111111);  // Tree 9
                delay(StairDelay); 
                setLEDA(B11111110);  // Tree 8
                delay(StairDelay); 
                setLEDA(B11111101);  // Tree 7
                delay(StairDelay); ;
                setLEDA(B11111011);  // Tree 6
                delay(StairDelay); ;
                setLEDA(B11110111);  // Tree 5
                delay(StairDelay); 
                setLEDA(B11101111);  // Tree 4
                delay(StairDelay); 
                setLEDA(B11011111);  // Tree 3
                delay(StairDelay); 
                setLEDB(B10111110);  // Tree 2
                delay(StairDelay); 
                setLEDB(B01111111);  // Tree 1
                delay(StairDelay); 
                setLEDA(B10111111);  // Tree 2
                delay(StairDelay); 
                setLEDA(B11011111);  // Tree 3
                delay(StairDelay); 
                setLEDA(B11101111);  // Tree 4
                delay(StairDelay); 
                setLEDA(B11110111);  // Tree 5
                delay(StairDelay); 
                setLEDA(B11111011);  // Tree 6
                delay(StairDelay); 
                setLEDA(B11111101);  // Tree 7
                delay(StairDelay); 
                setLEDA(B11111110);  // Tree 8
                delay(StairDelay); 
                setLEDB(B01111111);  // Tree 9
                delay(StairDelay); 
                setLEDB(B10111111);  // Tree 10
                delay(StairDelay); 
                setLEDB(B11011111);  // Tree 11
                delay(StairDelay); 
                setLEDB(B11101111);  // Tree 12
                delay(StairDelay); 
                setLEDB(B11110111);  // Tree 13
                delay(StairDelay); 
                setLEDB(B11111011);  // Tree 14
            }```
            1 Reply Last reply
            0
            Reply
            • Reply as topic
            Log in to reply
            • Oldest to Newest
            • Newest to Oldest
            • Most Votes


            20

            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