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. Has anyone made a 2 or 4 channel relay , and is that worked correct ?

Has anyone made a 2 or 4 channel relay , and is that worked correct ?

Scheduled Pinned Locked Moved Troubleshooting
40 Posts 7 Posters 9.2k Views 5 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 Reza

    @mfalkvidd said:

    What does the serial debug output say?

    How do I check this?

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

    @Reza said:

    How do I check this?

    See question 1 in http://forum.mysensors.org/topic/666/debug-faq-and-how-ask-for-help

    R 1 Reply Last reply
    1
    • mfalkviddM mfalkvidd

      @Reza said:

      How do I check this?

      See question 1 in http://forum.mysensors.org/topic/666/debug-faq-and-how-ask-for-help

      R Offline
      R Offline
      Reza
      wrote on last edited by
      #5

      @mfalkvidd
      thank you

      1 Reply Last reply
      1
      • mfalkviddM mfalkvidd

        What does the serial debug output say?

        R Offline
        R Offline
        Reza
        wrote on last edited by
        #6

        @mfalkvidd said:

        What does the serial debug output say?

        hi I build a 2channel relay but this is same problem ( just one relay is working
        it is serial manitor :
        send: 2-2-0-0 s=255,c=0,t=18,pt=0,l=3,sg=0,st=ok:1.5
        send: 2-2-0-0 s=255,c=3,t=6,pt=1,l=1,sg=0,st=ok:0
        read: 0-0-2 s=255,c=3,t=6,pt=0,l=1,sg=0:M
        repeater started, id=2, parent=0, distance=1
        send: 2-2-0-0 s=255,c=3,t=11,pt=0,l=5,sg=0,st=ok:Relay
        send: 2-2-0-0 s=255,c=3,t=12,pt=0,l=3,sg=0,st=ok:1.0
        send: 2-2-0-0 s=1,c=0,t=3,pt=0,l=0,sg=0,st=ok:
        send: 2-2-0-0 s=2,c=0,t=3,pt=0,l=0,sg=0,st=ok:

        1 Reply Last reply
        0
        • sundberg84S Offline
          sundberg84S Offline
          sundberg84
          Hardware Contributor
          wrote on last edited by
          #7

          Hi @Reza

          The start logs looks ok. Does the relay/node log say anything when you send a command from your controller. Any info from your controller?

          Did you define your pins for the relay? A long shot but someone wrote it worked when they changed from 3,4,5,6 to 4,5,6,7 for some reason.
          In most cases though it seems to be a power problem. Try changin your power source and see what happens.

          What im most curous about at this point is to see the log from your relay when you send a on/off command for the two relays.

          Controller: Proxmox VM - Home Assistant
          MySensors GW: Arduino Uno - W5100 Ethernet, Gw Shield Nrf24l01+ 2,4Ghz
          MySensors GW: Arduino Uno - Gw Shield RFM69, 433mhz
          RFLink GW - Arduino Mega + RFLink Shield, 433mhz

          R 1 Reply Last reply
          1
          • sundberg84S sundberg84

            Hi @Reza

            The start logs looks ok. Does the relay/node log say anything when you send a command from your controller. Any info from your controller?

            Did you define your pins for the relay? A long shot but someone wrote it worked when they changed from 3,4,5,6 to 4,5,6,7 for some reason.
            In most cases though it seems to be a power problem. Try changin your power source and see what happens.

            What im most curous about at this point is to see the log from your relay when you send a on/off command for the two relays.

            R Offline
            R Offline
            Reza
            wrote on last edited by
            #8

            @sundberg84 said:

            Hi @Reza

            The start logs looks ok. Does the relay/node log say anything when you send a command from your controller. Any info from your controller?

            Did you define your pins for the relay? A long shot but someone wrote it worked when they changed from 3,4,5,6 to 4,5,6,7 for some reason.
            In most cases though it seems to be a power problem. Try changin your power source and see what happens.

            What im most curous about at this point is to see the log from your relay when you send a on/off command for the two relays.

            now I have a 2channel relay , i want test for 2channel but this is similar to 4channel .
            in pics 2_1459249017068_photo_2016-03-29_15-23-20.jpg 1_1459249017064_photo_2016-03-29_15-23-10.jpg 0_1459249017027_123223454.jpg
            in1=pin3 , in2=pin4 . the pin 3 is not working , now in2 is working , but if i change pin3 and 4 in1 will working. also i change 2 line of program to and wiring in1=5 and in2=4 but now pin4 dont work ....
            #define RELAY_1 4 // Arduino Digital I/O pin number for first relay (second on pin+1 etc)
            #define NUMBER_OF_RELAYS 2 // Total number of attached relays
            now

            AWIA 1 Reply Last reply
            0
            • sundberg84S Offline
              sundberg84S Offline
              sundberg84
              Hardware Contributor
              wrote on last edited by sundberg84
              #9

              Looks great - but taking steps here i want to know what happens in the serial log on your node when you send a on/off command from your controller?

              Controller: Proxmox VM - Home Assistant
              MySensors GW: Arduino Uno - W5100 Ethernet, Gw Shield Nrf24l01+ 2,4Ghz
              MySensors GW: Arduino Uno - Gw Shield RFM69, 433mhz
              RFLink GW - Arduino Mega + RFLink Shield, 433mhz

              R 1 Reply Last reply
              1
              • R Reza

                @sundberg84 said:

                Hi @Reza

                The start logs looks ok. Does the relay/node log say anything when you send a command from your controller. Any info from your controller?

                Did you define your pins for the relay? A long shot but someone wrote it worked when they changed from 3,4,5,6 to 4,5,6,7 for some reason.
                In most cases though it seems to be a power problem. Try changin your power source and see what happens.

                What im most curous about at this point is to see the log from your relay when you send a on/off command for the two relays.

                now I have a 2channel relay , i want test for 2channel but this is similar to 4channel .
                in pics 2_1459249017068_photo_2016-03-29_15-23-20.jpg 1_1459249017064_photo_2016-03-29_15-23-10.jpg 0_1459249017027_123223454.jpg
                in1=pin3 , in2=pin4 . the pin 3 is not working , now in2 is working , but if i change pin3 and 4 in1 will working. also i change 2 line of program to and wiring in1=5 and in2=4 but now pin4 dont work ....
                #define RELAY_1 4 // Arduino Digital I/O pin number for first relay (second on pin+1 etc)
                #define NUMBER_OF_RELAYS 2 // Total number of attached relays
                now

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

                @Reza we are kind of guessing in the dark right now. Can you post your sketch (as code, use the </> format button)

                R 1 Reply Last reply
                1
                • sundberg84S sundberg84

                  Looks great - but taking steps here i want to know what happens in the serial log on your node when you send a on/off command from your controller?

                  R Offline
                  R Offline
                  Reza
                  wrote on last edited by
                  #11

                  @sundberg84 said:

                  Looks great - but taking steps here i want to know what happens in the serial log on your node when you send a on/off command from your controller?

                  read: 0-0-2 s=2,c=1,t=2,pt=0,l=1,sg=0:1
                  send: 2-2-0-0 s=2,c=1,t=2,pt=0,l=1,sg=0,st=ok:1
                  Incoming change for sensor:2, New status: 1

                  1 Reply Last reply
                  0
                  • AWIA AWI

                    @Reza we are kind of guessing in the dark right now. Can you post your sketch (as code, use the </> format button)

                    R Offline
                    R Offline
                    Reza
                    wrote on last edited by sundberg84
                    #12

                    @AWI said:

                    @Reza we are kind of guessing in the dark right now. Can you post your sketch (as code, use the </> format button)

                    #include <MySigningNone.h>
                    #include <MyTransportNRF24.h>
                    #include <MyTransportRFM69.h>
                    #include <MyHwATMega328.h>
                    #include <MySensor.h>
                    #include <SPI.h>
                    
                    #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
                    
                    // NRFRF24L01 radio driver (set low transmit power by default) 
                    MyTransportNRF24 radio(RF24_CE_PIN, RF24_CS_PIN, RF24_PA_LEVEL_GW);  
                    //MyTransportRFM69 radio;
                    // Message signing driver (none default)
                    //MySigningNone signer;
                    // Select AtMega328 hardware profile
                    MyHwATMega328 hw;
                    // Construct MySensors library
                    MySensor gw(radio, hw);
                    
                    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", "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);
                      }
                    }
                    
                    
                    void loop() 
                    {
                      // 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());
                       } 
                    }
                    
                    1 Reply Last reply
                    0
                    • R Offline
                      R Offline
                      Reza
                      wrote on last edited by Reza
                      #13

                      I change power supply and use a 5v 1A adaptor , but one relay is off always ( led off). and 2channel relay is not failure because when I change output pin 3 and 4 , that relay is on and work !!

                      1 Reply Last reply
                      0
                      • barduinoB Offline
                        barduinoB Offline
                        barduino
                        wrote on last edited by barduino
                        #14
                        This post is deleted!
                        1 Reply Last reply
                        0
                        • R Offline
                          R Offline
                          Reza
                          wrote on last edited by
                          #15

                          :/ why delete your post ? :(

                          barduinoB 1 Reply Last reply
                          0
                          • sundberg84S Offline
                            sundberg84S Offline
                            sundberg84
                            Hardware Contributor
                            wrote on last edited by
                            #16

                            @Reza - ok communication looks good. My vote will be on power.
                            I would try to power the relay separately and see what happens (not from Arduino).

                            Controller: Proxmox VM - Home Assistant
                            MySensors GW: Arduino Uno - W5100 Ethernet, Gw Shield Nrf24l01+ 2,4Ghz
                            MySensors GW: Arduino Uno - Gw Shield RFM69, 433mhz
                            RFLink GW - Arduino Mega + RFLink Shield, 433mhz

                            R 1 Reply Last reply
                            1
                            • sundberg84S sundberg84

                              @Reza - ok communication looks good. My vote will be on power.
                              I would try to power the relay separately and see what happens (not from Arduino).

                              R Offline
                              R Offline
                              Reza
                              wrote on last edited by Reza
                              #17

                              @sundberg84 said:

                              @Reza - ok communication looks good. My vote will be on power.
                              I would try to power the relay separately and see what happens (not from Arduino).

                              i test this . with a adaptor 5v 1A but dont any happen !?

                              1 Reply Last reply
                              0
                              • sundberg84S Offline
                                sundberg84S Offline
                                sundberg84
                                Hardware Contributor
                                wrote on last edited by
                                #18

                                @Reza From your images you are not - do you have another adaptor for the relay?

                                Controller: Proxmox VM - Home Assistant
                                MySensors GW: Arduino Uno - W5100 Ethernet, Gw Shield Nrf24l01+ 2,4Ghz
                                MySensors GW: Arduino Uno - Gw Shield RFM69, 433mhz
                                RFLink GW - Arduino Mega + RFLink Shield, 433mhz

                                R 1 Reply Last reply
                                0
                                • sundberg84S sundberg84

                                  @Reza From your images you are not - do you have another adaptor for the relay?

                                  R Offline
                                  R Offline
                                  Reza
                                  wrote on last edited by
                                  #19

                                  @sundberg84 said:

                                  @Reza From your images you are not - do you have another adaptor for the relay?

                                  I disconnect relay from arduino and connect to a adaptor 5v 1A

                                  1 Reply Last reply
                                  0
                                  • sundberg84S Offline
                                    sundberg84S Offline
                                    sundberg84
                                    Hardware Contributor
                                    wrote on last edited by
                                    #20

                                    Strange... im out of ideas at this point. Hardware failure?
                                    Im not that good looking at the code, but I maybe someone else is.

                                    Controller: Proxmox VM - Home Assistant
                                    MySensors GW: Arduino Uno - W5100 Ethernet, Gw Shield Nrf24l01+ 2,4Ghz
                                    MySensors GW: Arduino Uno - Gw Shield RFM69, 433mhz
                                    RFLink GW - Arduino Mega + RFLink Shield, 433mhz

                                    R 1 Reply Last reply
                                    0
                                    • sundberg84S sundberg84

                                      Strange... im out of ideas at this point. Hardware failure?
                                      Im not that good looking at the code, but I maybe someone else is.

                                      R Offline
                                      R Offline
                                      Reza
                                      wrote on last edited by
                                      #21

                                      @sundberg84 said:

                                      Strange... im out of ideas at this point. Hardware failure?
                                      Im not that good looking at the code, but I maybe someone else is.

                                      :( thank you
                                      this is strange for me too . pin 3 dont working . but pin4 worked . also if i change cable of pin 3 and 4 other relay working and pin 3 dont work
                                      I change 2 line :
                                      #define RELAY_1 4
                                      #define NUMBER_OF_RELAYS 2
                                      but so pin 4 dont work and pin 5 working....

                                      barduinoB 1 Reply Last reply
                                      0
                                      • R Reza

                                        :/ why delete your post ? :(

                                        barduinoB Offline
                                        barduinoB Offline
                                        barduino
                                        wrote on last edited by
                                        #22

                                        @Reza,

                                        I'm a noob at electronics and arduinos and have a wild imagination :smiley:

                                        I had a theory but was unsure, so I decided to test it first rather than cause more confusion.

                                        I know this is a place of sharing, but more than once I caused more problems when trying to help.

                                        I don't want to bring some stupid idea into the fold.

                                        I'll report back.

                                        1 Reply Last reply
                                        0
                                        • R Reza

                                          @sundberg84 said:

                                          Strange... im out of ideas at this point. Hardware failure?
                                          Im not that good looking at the code, but I maybe someone else is.

                                          :( thank you
                                          this is strange for me too . pin 3 dont working . but pin4 worked . also if i change cable of pin 3 and 4 other relay working and pin 3 dont work
                                          I change 2 line :
                                          #define RELAY_1 4
                                          #define NUMBER_OF_RELAYS 2
                                          but so pin 4 dont work and pin 5 working....

                                          barduinoB Offline
                                          barduinoB Offline
                                          barduino
                                          wrote on last edited by barduino
                                          #23

                                          @Reza,

                                          I guess reality is stranger than fiction.

                                          To eliminate any bad connections I started by this:

                                          void setup()  
                                          { 
                                            pinMode(3, OUTPUT); 
                                            pinMode(4, OUTPUT); 
                                            pinMode(5, OUTPUT); 
                                            pinMode(6, OUTPUT); 
                                            
                                            digitalWrite(3,LOW);
                                            digitalWrite(4,LOW);
                                            digitalWrite(5,LOW);
                                            digitalWrite(6,LOW);
                                          }
                                          
                                          void loop() 
                                          {
                                              for( int i=3;i<=6;i++){
                                                digitalWrite(i,HIGH);
                                                delay(500);
                                              
                                              }
                                              for( int i=3;i<=6;i++){
                                                digitalWrite(i,LOW);
                                                delay(500);
                                              }
                                          }
                                          

                                          Using a 4 relay board, connected pins 3 through 6, I get a nice effect of all pins light up in sequence and then turn off in sequence.

                                          With the relay sketch from the examples (lib 2.0.0) and debugging the load state values which where set to 0 for each sensor I have for each relay (off, ON, ON, ON).

                                          Then on the setup I decide to reduce it to this:

                                          void setup()  
                                          { 
                                            for (int sensor=1, pin=RELAY_1; sensor<=NUMBER_OF_RELAYS;sensor++, pin++) {
                                              // Then set relay pins in output mode
                                              pinMode(pin, OUTPUT);  
                                              digitalWrite(pin,LOW);
                                              Serial.print("Pin ");
                                              Serial.print(pin);
                                              Serial.println(" to LOW");
                                            }
                                          }
                                          

                                          Same result or each relay (off, ON, ON, ON).

                                          Starting repeater (RNNRA-, 2.0.0-beta)
                                          Radio init successful.
                                          Pin 3 to LOW
                                          Pin 4 to LOW
                                          Pin 5 to LOW
                                          Pin 6 to LOW
                                          send: 15-15-0-0 s=255,c=3,t=15,pt=0,l=2,sg=0,st=ok:
                                          send: 15-15-0-0 s=255,c=0,t=18,pt=0,l=10,sg=0,st=ok:2.0.0-beta
                                          send: 15-15-0-0 s=255,c=3,t=6,pt=1,l=1,sg=0,st=ok:0
                                          read: 0-0-15 s=255,c=3,t=6,pt=0,l=1,sg=0:M
                                          send: 15-15-0-0 s=255,c=3,t=11,pt=0,l=5,sg=0,st=ok:Relay
                                          send: 15-15-0-0 s=255,c=3,t=12,pt=0,l=3,sg=0,st=ok:1.0
                                          send: 15-15-0-0 s=1,c=0,t=3,pt=0,l=0,sg=0,st=ok:
                                          Presenting sensor:1
                                          send: 15-15-0-0 s=2,c=0,t=3,pt=0,l=0,sg=0,st=ok:
                                          Presenting sensor:2
                                          send: 15-15-0-0 s=3,c=0,t=3,pt=0,l=0,sg=0,st=ok:
                                          Presenting sensor:3
                                          send: 15-15-0-0 s=4,c=0,t=3,pt=0,l=0,sg=0,st=ok:
                                          Presenting sensor:4
                                          Init complete, id=15, parent=0, distance=1
                                          

                                          So I decided to re-initialize the pins once more in the loop section:

                                          void loop() 
                                          {
                                              if (isFirstTime){
                                                for (int sensor=1, pin=RELAY_1; sensor<=NUMBER_OF_RELAYS;sensor++,pin++) {
                                                    
                                                    currState = loadState(sensor);  
                                                    
                                                    pinMode(pin, OUTPUT);  
                                                    digitalWrite(pin,LOW);
                                                  
                                                    Serial.print("Current Status sensor:");
                                                    Serial.print(sensor);
                                                    Serial.print("\t");
                                                    Serial.print("State:");
                                                    Serial.print(currState);
                                                    Serial.print("\t");
                                                    Serial.print("Pin:");
                                                    Serial.println(pin);
                                          
                                                    // Set relay to last known state (using eeprom storage) 
                                                    digitalWrite(pin, currState?RELAY_ON:RELAY_OFF);
                                                    wait(500);
                                                }
                                                isFirstTime = false;
                                              }
                                          
                                          }
                                          

                                          Now I have all relays off:

                                          Init complete, id=15, parent=0, distance=1
                                          Current Status sensor:1	State:0	Pin:3
                                          Current Status sensor:2	State:0	Pin:4
                                          Current Status sensor:3	State:0	Pin:5
                                          Current Status sensor:4	State:0	Pin:6
                                          

                                          Now sending some messages:
                                          Relay 1

                                          Current Status sensor:4	State:0	Pin:6
                                          read: 0-0-15 s=1,c=1,t=2,pt=0,l=1,sg=0:1
                                          Incoming change for sensor:1 On pin:3, New status: 1
                                          read: 0-0-15 s=1,c=1,t=2,pt=0,l=1,sg=0:0
                                          Incoming change for sensor:1 On pin:3, New status: 0
                                          

                                          Works fine but guess what, Relay 4 also turned ON after Relay 1

                                          Relay 2:

                                          read: 0-0-15 s=2,c=1,t=2,pt=0,l=1,sg=0:1
                                          Incoming change for sensor:2 On pin:4, New status: 1
                                          read: 0-0-15 s=2,c=1,t=2,pt=0,l=1,sg=0:0
                                          Incoming change for sensor:2 On pin:4, New status: 0
                                          

                                          Works fine but Relay 4 blinks and stays on

                                          Relay 3:

                                          read: 0-0-15 s=3,c=1,t=2,pt=0,l=1,sg=0:1
                                          Incoming change for sensor:3 On pin:5, New status: 1
                                          read: 0-0-15 s=3,c=1,t=2,pt=0,l=1,sg=0:0
                                          Incoming change for sensor:3 On pin:5, New status: 0
                                          

                                          Works fine but Relay 4 blinks and stays on

                                          Relay 4:

                                          read: 0-0-15 s=4,c=1,t=2,pt=0,l=1,sg=0:1
                                          Incoming change for sensor:4 On pin:6, New status: 1
                                          read: 0-0-15 s=4,c=1,t=2,pt=0,l=1,sg=0:0
                                          Incoming change for sensor:4 On pin:6, New status: 0
                                          

                                          Relay 4 blinks and stays on

                                          These relays are solid state 5v, arduino pro mini 5v and I both used the power from computer USB and a 6000 mAh phone battery with the same results.

                                          Here is the full code:

                                          /**
                                           * The MySensors Arduino library handles the wireless radio link and protocol
                                           * between your home built sensors/actuators and HA controller of choice.
                                           * The sensors forms a self healing radio network with optional repeaters. Each
                                           * repeater and gateway builds a routing tables in EEPROM which keeps track of the
                                           * network topology allowing messages to be routed to nodes.
                                           *
                                           * Created by Henrik Ekblad <henrik.ekblad@mysensors.org>
                                           * Copyright (C) 2013-2015 Sensnology AB
                                           * Full contributor list: https://github.com/mysensors/Arduino/graphs/contributors
                                           *
                                           * Documentation: http://www.mysensors.org
                                           * Support Forum: http://forum.mysensors.org
                                           *
                                           * This program is free software; you can redistribute it and/or
                                           * modify it under the terms of the GNU General Public License
                                           * version 2 as published by the Free Software Foundation.
                                           *
                                           *******************************
                                           *
                                           * REVISION HISTORY
                                           * Version 1.0 - Henrik Ekblad
                                           * 
                                           * DESCRIPTION
                                           * Example sketch showing how to control physical relays. 
                                           * This example will remember relay state after power failure.
                                           * http://www.mysensors.org/build/relay
                                           */ 
                                          // Define Node ID
                                          #define MY_NODE_ID 15
                                          
                                          
                                          // Enable debug prints to serial monitor
                                          #define MY_DEBUG 
                                          
                                          // Enable and select radio type attached
                                          #define MY_RADIO_NRF24
                                          //#define MY_RADIO_RFM69
                                          
                                          // Enable repeater functionality for this node
                                          #define MY_REPEATER_FEATURE
                                          
                                          #include <SPI.h>
                                          #include <MySensor.h>
                                          
                                          #define RELAY_1  3  // Arduino Digital I/O pin number for first relay (second on pin+1 etc)
                                          #define NUMBER_OF_RELAYS 4 // Total number of attached relays
                                          #define RELAY_ON HIGH  // GPIO value to write to turn on attached relay
                                          #define RELAY_OFF LOW // GPIO value to write to turn off attached relay
                                          
                                          bool isFirstTime = true;
                                          
                                          bool currState;
                                          
                                          void setup()  
                                          { 
                                            for (int sensor=1, pin=RELAY_1; sensor<=NUMBER_OF_RELAYS;sensor++, pin++) {
                                              // Then set relay pins in output mode
                                              pinMode(pin, OUTPUT);  
                                              digitalWrite(pin,LOW);
                                              Serial.print("Pin ");
                                              Serial.print(pin);
                                              Serial.println(" to LOW");
                                            }
                                          }
                                          
                                          void presentation()  
                                          {   
                                            // Send the sketch version information to the gateway and Controller
                                            sendSketchInfo("Relay", "1.0");
                                          
                                            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)
                                              present(sensor, S_LIGHT);
                                              Serial.print("Presenting sensor:");
                                              Serial.println(sensor);
                                            }
                                          }
                                          
                                          
                                          void loop() 
                                          {
                                              if (isFirstTime){
                                                for (int sensor=1, pin=RELAY_1; sensor<=NUMBER_OF_RELAYS;sensor++,pin++) {
                                                    
                                                    currState = loadState(sensor);  
                                                    
                                                    pinMode(pin, OUTPUT);  
                                                    digitalWrite(pin,LOW);
                                                  
                                                    Serial.print("Current Status sensor:");
                                                    Serial.print(sensor);
                                                    Serial.print("\t");
                                                    Serial.print("State:");
                                                    Serial.print(currState);
                                                    Serial.print("\t");
                                                    Serial.print("Pin:");
                                                    Serial.println(pin);
                                          
                                                    // Set relay to last known state (using eeprom storage) 
                                                    digitalWrite(pin, currState?RELAY_ON:RELAY_OFF);
                                                    wait(500);
                                                }
                                                isFirstTime = false;
                                              }
                                          
                                          }
                                          
                                          void receive(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
                                               saveState(message.sensor, message.getBool());
                                               // Write some debug info
                                               Serial.print("Incoming change for sensor:");
                                               Serial.print(message.sensor);
                                               Serial.print(" On pin:");
                                               Serial.print(message.sensor-1+RELAY_1);
                                               Serial.print(", New status: ");
                                               Serial.println(message.getBool());
                                             } 
                                          }
                                          

                                          This could be some issue with the development branch of 2.0.0, its been some time since I refreshed.

                                          So refreshing the libs I see a new before() section and an empty setup() from the RelayActuator example

                                          void before() { 
                                            for (int sensor=1, pin=RELAY_1; sensor<=NUMBER_OF_RELAYS;sensor++, pin++) {
                                              // Then set relay pins in output mode
                                              pinMode(pin, OUTPUT);   
                                              // Set relay to last known state (using eeprom storage) 
                                              digitalWrite(pin, loadState(sensor)?RELAY_ON:RELAY_OFF);
                                            }
                                          }
                                          
                                          void setup() {
                                            
                                          }
                                          

                                          Now it runs fine

                                          Starting repeater (RNNRA-, 2.0.0-beta)
                                          Radio init successful.
                                          send: 15-15-0-0 s=255,c=3,t=15,pt=0,l=2,sg=0,st=ok:
                                          send: 15-15-0-0 s=255,c=0,t=18,pt=0,l=10,sg=0,st=fail:2.0.0-beta
                                          send: 15-15-0-0 s=255,c=3,t=6,pt=1,l=1,sg=0,st=ok:0
                                          read: 0-0-15 s=2Starting repeater (RNNRA-, 2.0.0-beta)
                                          Radio init successful.
                                          send: 15-15-0-0 s=255,c=3,t=15,pt=0,l=2,sg=0,st=ok:
                                          send: 15-15-0-0 s=255,c=0,t=18,pt=0,l=10,sg=0,st=fail:2.0.0-beta
                                          send: 15-15-0-0 s=255,c=3,t=6,pt=1,l=1,sg=0,st=ok:0
                                          read: 0-0-15 s=255,c=3,t=6,pt=0,l=1,sg=0:M
                                          send: 15-15-0-0 s=255,c=3,t=11,pt=0,l=5,sg=0,st=ok:Relay
                                          send: 15-15-0-0 s=255,c=3,t=12,pt=0,l=3,sg=0,st=ok:1.0
                                          send: 15-15-0-0 s=1,c=0,t=3,pt=0,l=0,sg=0,st=ok:
                                          send: 15-15-0-0 s=2,c=0,t=3,pt=0,l=0,sg=0,st=ok:
                                          send: 15-15-0-0 s=3,c=0,t=3,pt=0,l=0,sg=0,st=fail:
                                          send: 15-15-0-0 s=4,c=0,t=3,pt=0,l=0,sg=0,st=ok:
                                          Init complete, id=15, parent=0, distance=1
                                          read: 0-0-15 s=1,c=1,t=2,pt=0,l=1,sg=0:1
                                          Incoming change for sensor:1, New status: 1
                                          read: 0-0-15 s=1,c=1,t=2,pt=0,l=1,sg=0:0
                                          Incoming change for sensor:1, New status: 0
                                          read: 0-0-15 s=2,c=1,t=2,pt=0,l=1,sg=0:1
                                          Incoming change for sensor:2, New status: 1
                                          read: 0-0-15 s=2,c=1,t=2,pt=0,l=1,sg=0:0
                                          Incoming change for sensor:2, New status: 0
                                          read: 0-0-15 s=3,c=1,t=2,pt=0,l=1,sg=0:1
                                          Incoming change for sensor:3, New status: 1
                                          read: 0-0-15 s=3,c=1,t=2,pt=0,l=1,sg=0:0
                                          Incoming change for sensor:3, New status: 0
                                          read: 0-0-15 s=4,c=1,t=2,pt=0,l=1,sg=0:1
                                          Incoming change for sensor:4, New status: 1
                                          read: 0-0-15 s=4,c=1,t=2,pt=0,l=1,sg=0:0
                                          Incoming change for sensor:4, New status: 0
                                          

                                          All relays behaving as expected before and after running a clearEEPROMconfig sketch.

                                          So perhaps there is an issue with v1.5 but it seems the development branch of 2.0 is fine.

                                          Or you can try to debug the hell out of it with plenty of Serial.prints.

                                          Check with a simple sketch if your relays are fine.

                                          If so check what are you getting from the loadState, make sure its boolean, initialize the pins to LOW in setup and if it doesn't work again in loop just once.

                                          Try to have the relays always starting as off with no load or save state.

                                          Cheers

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


                                          16

                                          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