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
T

tomrask

@tomrask
About
Posts
12
Topics
1
Shares
0
Groups
0
Followers
0
Following
0

Posts

Recent Best Controversial

  • Multisensor PIR and Lux
    T tomrask

    Hey Kcest

    Nice work!
    Can you help me if I would like two PIR sensors in the same sketches.

    thank you in advance, Tom

    My Project

  • Clone 2 skelets Relay and Button's
    T tomrask

    @hek

    Hey Hek

    Thank you for your good advice. I have a little vacation here in Easter. so I got it to work with 2 door sensors maybe it's not the best looking program . but it works .
    Where can I learn more about these lines, I do not understand 100 % yet :

    Bounce debouncer1 = Bounce();
    
    debouncer1.attach(BUTTON_PIN1);
    
    digitalWrite(message.sensor-1+RELAY_1, message.getBool()?RELAY_ON:RELAY_OFF);
    

    Thanks for the help .

    Tom Rask

    // Sketch control 4 physical relays and 2 Doorsensors. 
    // This example will remember relay state even after power failure.
    
    #include <MySensor.h>
    #include <SPI.h>
    #include <Bounce2.h> // button/reed switch program
    
    #define RELAY_1  3  // Arduino Digital I/O pin number for first relay (second on pin+1 etc)
    #define RELAY_ON 0  // GPIO value to write to turn on attached relay
    #define RELAY_OFF 1 // GPIO value to write to turn off attached relay
    #define CHILD_ID1 5 // Arduino Digital I/O pin for button/reed switch
    #define CHILD_ID2 6 // Arduino Digital I/O pin for button/reed switch
    #define BUTTON_PIN1 7 // Arduino Digital I/O pin for button/reed switch
    #define BUTTON_PIN2 8 // Arduino Digital I/O pin for button/reed switch
    
    MySensor gw;
    
    Bounce debouncer1 = Bounce(); 
    Bounce debouncer2 = Bounce(); 
    int oldValue1=-1;
    int oldValue2=-1;
    
    // Change to V_LIGHT if you use S_LIGHT in presentation below
    MyMessage msg1(CHILD_ID1,V_TRIPPED); // button/reed switch program
    MyMessage msg2(CHILD_ID2,V_TRIPPED);
    
    
    void setup()  
    {   
      // Initialize library and add callback for incoming messages
      gw.begin(incomingMessage, AUTO, true);
      // Send the sketch version information to the gateway and Controller
      gw.sendSketchInfo("Relay and Door", "1.0");
    
      // Fetch relay status
      
        // Register all sensors to gw (they will be created as child devices)
        gw.present(1, S_LIGHT);
        gw.present(2, S_LIGHT);
        gw.present(3, S_LIGHT);
        gw.present(4, S_LIGHT);
        // Then set relay pins in output mode
        pinMode(3, OUTPUT);   
        pinMode(4, OUTPUT); 
        pinMode(5, OUTPUT); 
        pinMode(6, OUTPUT); 
        
       // Setup the button
        pinMode(BUTTON_PIN1,INPUT);// button/reed switch program
        pinMode(BUTTON_PIN2,INPUT);// button/reed switch program
        
        // Set relay to last known state (using eeprom storage) 
        digitalWrite(3, gw.loadState(1)?RELAY_ON:RELAY_OFF);
        digitalWrite(4, gw.loadState(1)?RELAY_ON:RELAY_OFF);
        digitalWrite(5, gw.loadState(1)?RELAY_ON:RELAY_OFF);
        digitalWrite(6, gw.loadState(1)?RELAY_ON:RELAY_OFF);
        // Activate internal pull-up
        
        digitalWrite(BUTTON_PIN1,HIGH);// button/reed switch program
        digitalWrite(BUTTON_PIN2,HIGH);// button/reed switch program
          
        // After setting up the button, setup debouncer
        debouncer1.attach(BUTTON_PIN1);// button/reed switch program
        debouncer2.attach(BUTTON_PIN2);// button/reed switch program
        debouncer1.interval(5);// button/reed switch program
        debouncer2.interval(5);// button/reed switch program   
      
        // Register binary input sensor to gw (they will be created as child devices)
        // You can use S_DOOR, S_MOTION or S_LIGHT here depending on your usage. 
        // If S_LIGHT is used, remember to update variable type you send in. See "msg" above.
        gw.present(CHILD_ID1, S_DOOR); // button/reed switch program  
        gw.present(CHILD_ID2, S_DOOR); // button/reed switch program 
    }
    
    
    void loop() 
    {
      // Alway process incoming messages whenever possible
      gw.process();
     debouncer1.update();
      // Get the update value
      int value1 = debouncer1.read();
     
      if (value1 != oldValue1) {
         // Send in the new value
         gw.send(msg1.set(value1==HIGH ? 1 : 0));
         oldValue1 = value1;
      }
    
    debouncer2.update();
      // Get the update value
      int value2 = debouncer2.read();
     
      if (value2 != oldValue2) {
         // Send in the new value
         gw.send(msg2.set(value2==HIGH ? 1 : 0));
         oldValue2 = value2;
      }
    }
    
    void incomingMessage(const MyMessage &message) {
      // We only expect one type of message from controller. But we better check anyway.
      if (message.type==V_LIGHT) {
         // Change relay state
         digitalWrite(message.sensor-1+RELAY_1, message.getBool()?RELAY_ON:RELAY_OFF);
         // Store state in eeprom
         gw.saveState(message.sensor, message.getBool());
         // Write some debug info
         Serial.print("Incoming change for sensor:");
         Serial.print(message.sensor);
         Serial.print(", New status: ");
         Serial.println(message.getBool());
      }  
    }
    
    
    My Project

  • Clone 2 skelets Relay and Button's
    T tomrask

    @Vladut-Grecu

    Hey Vladut

    This is the seriel output on my Nano

    repeater started, id 1
    send: 1-1-0-0 s=255,c=0,t=18,pt=0,l=5,st=ok:1.4.1
    send: 1-1-0-0 s=255,c=3,t=6,pt=1,l=1,st=ok:0
    read: 0-0-1 s=255,c=3,t=6,pt=0,l=1:M
    send: 1-1-0-0 s=255,c=3,t=11,pt=0,l=12,st=ok:Relay&Botton
    send: 1-1-0-0 s=255,c=3,t=12,pt=0,l=3,st=ok:1.0
    send: 1-1-0-0 s=0,c=0,t=3,pt=0,l=5,st=ok:1.4.1

    The nr 0 relay has been presented
    send: 1-1-0-0 s=1,c=0,t=3,pt=0,l=5,st=ok:1.4.1

    The nr 1 relay has been presented
    send: 1-1-0-0 s=2,c=0,t=0,pt=0,l=5,st=ok:1.4.1

    The nr 2 switch has been presented
    send: 1-1-0-0 s=3,c=0,t=0,pt=0,l=5,st=ok:1.4.1

    The nr 3 switch has been presented
    send: 1-1-0-0 s=4,c=0,t=0,pt=0,l=5,st=ok:1.4.1

    The nr 4 switch has been presented
    send: 1-1-0-0 s=4,c=1,t=0,pt=2,l=2,st=ok:0
    send: 1-1-0-0 s=3,c=1,t=0,pt=2,l=2,st=ok:0
    send: 1-1-0-0 s=4,c=1,t=0,pt=2,l=2,st=ok:1
    send: 1-1-0-1 s=2,c=1,t=0,pt=2,l=2,st=ok:1
    send: 1-1-0-1 s=3,c=1,t=0,pt=2,l=2,st=ok:1
    send: 1-1-0-1 s=4,c=1,t=0,pt=2,l=2,st=ok:1
    send: 1-1-0-1 s=3,c=1,t=0,pt=2,l=2,st=ok:1
    send: 1-1-0-1 s=4,c=1,t=0,pt=2,l=2,st=fail:1
    read: 1-0-1 s=4,c=1,t=0,pt=2,l=2:1
    send: 1-1-0-1 s=3,c=1,t=0,pt=2,l=2,st=ok:1
    send: 1-1-0-1 s=4,c=1,t=0,pt=2,l=2,st=ok:1
    send: 1-1-0-1 s=3,c=1,t=0,pt=2,l=2,st=ok:1
    send: 1-1-0-1 s=4,c=1,t=0,pt=2,l=2,st=fail:1
    read: 1-0-1 s=4,c=1,t=0,pt=2,l=2:1
    send: 1-1-0-1 s=3,c=1,t=0,pt=2,l=2,st=fail:1
    send: 1-1-0-1 s=4,c=1,t=0,pt=2,l=2,st=fail:1
    send: 1-1-0-1 s=3,c=1,t=0,pt=2,l=2,st=ok:1
    send: 1-1-0-1 s=4,c=1,t=0,pt=2,l=2,st=fail:1
    read: 1-0-1 s=3,c=1,t=0,pt=2,l=2:1
    send: 1-1-0-1 s=3,c=1,t=0,pt=2,l=2,st=fail:1
    send: 1-1-0-1 s=4,c=1,t=0,pt=2,l=2,st=ok:1
    read: 1-0-1 s=4,c=1,t=0,pt=2,l=2:1
    send: 1-1-0-1 s=3,c=1,t=0,pt=2,l=2,st=ok:1
    send: 1-1-0-1 s=4,c=1,t=0,pt=2,l=2,st=fail:1

    My Project

  • Clone 2 skelets Relay and Button's
    T tomrask

    @Vladut-Grecu

    thanks, I 'll be glad if you will

    My Project

  • Clone 2 skelets Relay and Button's
    T tomrask

    @Vladut-Grecu

    This is what I get from serial output

    repeater started, id 1
    send: 1-1-0-0 s=255,c=0,t=18,pt=0,l=5,st=ok:1.4.1
    send: 1-1-0-0 s=255,c=3,t=6,pt=1,l=1,st=ok:0
    read: 0-0-1 s=255,c=3,t=6,pt=0,l=1:M
    send: 1-1-0-0 s=255,c=3,t=11,pt=0,l=12,st=ok:Relay&Botton
    send: 1-1-0-0 s=255,c=3,t=12,pt=0,l=3,st=ok:1.0
    send: 1-1-0-0 s=0,c=0,t=0,pt=0,l=5,st=ok:1.4.1
    send: 1-1-0-0 s=1,c=0,t=0,pt=0,l=5,st=ok:1.4.1
    send: 1-1-0-0 s=2,c=0,t=0,pt=0,l=5,st=ok:1.4.1

    My Project

  • Clone 2 skelets Relay and Button's
    T tomrask

    Is there anyone out there who just want to give me a hand by getting this skeleton to work. I will be very happy just a little help. It could be great.

    My Project

  • Clone 2 skelets Relay and Button's
    T tomrask

    Hey Ferpando

    thanks, now the sensor is displayed on vera. but only one contact and a door sensor works .
    I have not quite mastered the code yet , help wanted.

    // 3 Door 1 virker 2 relays 1 virker
    #include <MySensor.h>
    #include <SPI.h>
    #include <Bounce2.h>
    
    #define NUMBER_OF_SWITCHES 3
    #define RELAY_1  3  // Arduino Digital I/O pin number for first relay (second on pin+1 etc)
    #define NUMBER_OF_RELAYS 2 // Total number of attached relays
    #define RELAY_ON 1  // GPIO value to write to turn on attached relay
    #define RELAY_OFF 0 // GPIO value to write to turn off attached relay
    
    MySensor gw;
    Bounce debouncer[NUMBER_OF_SWITCHES];
    
    int oldValue[NUMBER_OF_SWITCHES];
    byte switchPin[NUMBER_OF_SWITCHES] = {5,6,7}; //<<<<<<<<<<< set your switch pins here
    
    MyMessage msg(0,V_TRIPPED);
    
    void setup()  
    {  
      // Initialize library and add callback for incoming messages
      gw.begin(incomingMessage, AUTO, true);
      // Send the sketch version information to the gateway and Controller
      gw.sendSketchInfo("Relay&Botton", "1.0");
    
      // Fetch relay status
      for (int sensor=0, pin=RELAY_1; sensor<NUMBER_OF_RELAYS;sensor++, pin++) {
        // Register all sensors to gw (they will be created as child devices)
        gw.present(sensor, S_LIGHT);
        // Then set relay pins in output mode
        pinMode(pin, OUTPUT);   
        // Set relay to last known state (using eeprom storage) 
        digitalWrite(pin, gw.loadState(sensor)?RELAY_ON:RELAY_OFF);
      }
     
      // Switches setup
      for (int i = 0; i < NUMBER_OF_SWITCHES; i++)
      {
        pinMode(switchPin[i],INPUT_PULLUP);
        debouncer[i] = Bounce();
        debouncer[i].attach(switchPin[i]);
        debouncer[i].interval(5);
      }
      for (int i = NUMBER_OF_RELAYS; i < (NUMBER_OF_RELAYS+NUMBER_OF_SWITCHES); i++)
      {
        gw.present(i, S_DOOR);
        delay(250);
      }
     }
    //
    void loop() 
    {
     
    
       for (int i = 0; i < NUMBER_OF_SWITCHES; i++)
      {
        debouncer[i].update();
        int value = debouncer[i].read();
        if (value != oldValue[i]) 
        {
          gw.send(msg.setSensor(i).set(value == HIGH? true : false), false); 
        }
        oldValue[i] = value;
     
     }
    
     // Alway process incoming messages whenever possible
      gw.process();
    }
    
    void incomingMessage(const MyMessage &message) {
      // We only expect one type of message from controller. But we better check anyway.
      if (message.type==V_LIGHT) {
         // Change relay state
         digitalWrite(message.sensor-1+RELAY_1, message.getBool()?RELAY_ON:RELAY_OFF);
         // Store state in eeprom
         gw.saveState(message.sensor, message.getBool());
         // Write some debug info
         Serial.print("Incoming change for sensor:");
         Serial.print(message.sensor);
         Serial.print(", New status: ");
         Serial.println(message.getBool());
       } 
    
    }
    
    Here
    
    My Project

  • Clone 2 skelets Relay and Button's
    T tomrask

    @hek

    Hey Hek I changed the code, but it will not help. Now I get 3 door sensor and nothing else. hope you will help a little so that I understand the code. thank you

    // 1 Door virker 2 relays virker
    #include <MySensor.h>
    #include <SPI.h>
    #include <Bounce2.h>
    
    #define NUMBER_OF_SWITCHES 3
    #define RELAY_1  3  // Arduino Digital I/O pin number for first relay (second on pin+1 etc)
    #define NUMBER_OF_RELAYS 2 // Total number of attached relays
    #define RELAY_ON 1  // GPIO value to write to turn on attached relay
    #define RELAY_OFF 0 // GPIO value to write to turn off attached relay
    
    MySensor gw;
    Bounce debouncer[NUMBER_OF_SWITCHES];
    
    int oldValue[NUMBER_OF_SWITCHES];
    byte switchPin[NUMBER_OF_SWITCHES] = {5,6,7}; //<<<<<<<<<<< set your switch pins here
    
    MyMessage msg(0,V_TRIPPED);
    
    void setup()  
    {  
      // Initialize library and add callback for incoming messages
      gw.begin(incomingMessage, AUTO, true);
      // Send the sketch version information to the gateway and Controller
      gw.sendSketchInfo("Relay&Botton", "1.0");
    
    // Switches setup
      for (int i = 0; i < NUMBER_OF_SWITCHES; i++)
      {
        pinMode(switchPin[i],INPUT_PULLUP);
        debouncer[i] = Bounce();
        debouncer[i].attach(switchPin[i]);
        debouncer[i].interval(5);
      }
      for (int i = 0; i < NUMBER_OF_SWITCHES; i++)
      {
        gw.present(i, S_DOOR);
        delay(250);
      }
    
      // Fetch relay status
      for (int sensor=3, pin=RELAY_1; sensor<=NUMBER_OF_RELAYS;sensor++, pin++) {
        // Register all sensors to gw (they will be created as child devices)
        gw.present(sensor, S_LIGHT);
        // Then set relay pins in output mode
        pinMode(pin, OUTPUT);   
        // Set relay to last known state (using eeprom storage) 
        digitalWrite(pin, gw.loadState(sensor)?RELAY_ON:RELAY_OFF);
      }
     
      
     }
    //
    void loop() 
    {
     
    
      for (int i = 0; i < NUMBER_OF_SWITCHES; i++)
      {
        debouncer[i].update();
        int value = debouncer[i].read();
        if (value != oldValue[i]) 
        {
          gw.send(msg.setSensor(i).set(value == HIGH? true : false), false); 
        }
        oldValue[i] = value;
     
     }
    
     // Alway process incoming messages whenever possible
      gw.process();
    }
    
    void incomingMessage(const MyMessage &message) {
      // We only expect one type of message from controller. But we better check anyway.
      if (message.type==V_LIGHT) {
         // Change relay state
         digitalWrite(message.sensor-1+RELAY_1, message.getBool()?RELAY_ON:RELAY_OFF);
         // Store state in eeprom
         gw.saveState(message.sensor, message.getBool());
         // Write some debug info
         Serial.print("Incoming change for sensor:");
         Serial.print(message.sensor);
         Serial.print(", New status: ");
         Serial.println(message.getBool());
       } 
    
    }
    
    
    My Project

  • Clone 2 skelets Relay and Button's
    T tomrask

    Hey Hek

    Thanks for a really exciting home page , I really got interested in building a sensor myself just need some start help.

    My Project

  • Clone 2 skelets Relay and Button's
    T tomrask

    I've tried to build together a relay and door sensor program from Hek one cloned program without success. I have a vera light. but I'm new about building sensors. Are there some who will look at the program and see where errors.

    What I see in vera is only one door sensors and 2 relay, where there should have been 3 door sensor. I use a Nano with series connection to vera.

    Hope some one can help me, last 3 weeks I have tried unsuccessfully various changes.

    // 1 Door virker 2 relays virker
    #include <MySensor.h>
    #include <SPI.h>
    #include <Bounce2.h>
    
    #define NUMBER_OF_SWITCHES 3
    #define RELAY_1  3  // Arduino Digital I/O pin number for first relay (second on pin+1 etc)
    #define NUMBER_OF_RELAYS 2 // Total number of attached relays
    #define RELAY_ON 1  // GPIO value to write to turn on attached relay
    #define RELAY_OFF 0 // GPIO value to write to turn off attached relay
    
    MySensor gw;
    Bounce debouncer[NUMBER_OF_SWITCHES];
    
    int oldValue[NUMBER_OF_SWITCHES];
    byte switchPin[NUMBER_OF_SWITCHES] = {5,6,7}; //<<<<<<<<<<< set your switch pins here
    
    MyMessage msg(0,V_TRIPPED);
    
    void setup()  
    {  
      // Initialize library and add callback for incoming messages
      gw.begin(incomingMessage, AUTO, true);
      // Send the sketch version information to the gateway and Controller
      gw.sendSketchInfo("Relay&Botton", "1.0");
    
      // Fetch relay status
      for (int sensor=1, pin=RELAY_1; sensor<=NUMBER_OF_RELAYS;sensor++, pin++) {
        // Register all sensors to gw (they will be created as child devices)
        gw.present(sensor, S_LIGHT);
        // Then set relay pins in output mode
        pinMode(pin, OUTPUT);   
        // Set relay to last known state (using eeprom storage) 
        digitalWrite(pin, gw.loadState(sensor)?RELAY_ON:RELAY_OFF);
      }
     
      // Switches setup
      for (int i = 0; i < NUMBER_OF_SWITCHES; i++)
      {
        pinMode(switchPin[i],INPUT_PULLUP);
        debouncer[i] = Bounce();
        debouncer[i].attach(switchPin[i]);
        debouncer[i].interval(5);
      }
      for (int i = 0; i < NUMBER_OF_SWITCHES; i++)
      {
        gw.present(i, S_DOOR);
        delay(250);
      }
     }
    //
    void loop() 
    {
     
    
      for (int i = 0; i < NUMBER_OF_SWITCHES; i++)
      {
        debouncer[i].update();
        int value = debouncer[i].read();
        if (value != oldValue[i]) 
        {
          gw.send(msg.setSensor(i).set(value == HIGH? true : false), false); 
        }
        oldValue[i] = value;
     
     }
    
     // Alway process incoming messages whenever possible
      gw.process();
    }
    
    void incomingMessage(const MyMessage &message) {
      // We only expect one type of message from controller. But we better check anyway.
      if (message.type==V_LIGHT) {
         // Change relay state
         digitalWrite(message.sensor-1+RELAY_1, message.getBool()?RELAY_ON:RELAY_OFF);
         // Store state in eeprom
         gw.saveState(message.sensor, message.getBool());
         // Write some debug info
         Serial.print("Incoming change for sensor:");
         Serial.print(message.sensor);
         Serial.print(", New status: ");
         Serial.println(message.getBool());
       } 
    
    }
    
    
    My Project

  • Rain Guage
    T tomrask

    I use a vera light with a USB key where the data can be stored. It vill be better if I the date was on my dropbox og sendt to my NAS.

    But I have not fount a way to do it.

    Tom

    My Project

  • Rain Guage
    T tomrask

    Hey Francois

    Thanks for a nice projekt. I am thinking on building one myself. But is it possible to log the rain for everyday and writing the data to a csv file so I can use the data in Excel on Windows.

    Hope that you can help my.

    Tom

    My Project
  • Login

  • Don't have an account? Register

  • Login or register to search.
  • First post
    Last post
0
  • MySensors
  • OpenHardware.io
  • Categories
  • Recent
  • Tags
  • Popular