Irrigation Controller (up to 16 valves with Shift Registers)
-
Hi, I've done recently this setup - it works greate with domoticz and Raspberry Pi 0.
After some tests I findout that when I plug in power - sometimes all, sometimes 3 or 4 relays are turning ON for 1second.
If that happend my 24V power adapter will be in trash. How to prevent that? Do I need to add something in code (I'm not a programmer)?
-
Hi, I've done recently this setup - it works greate with domoticz and Raspberry Pi 0.
After some tests I findout that when I plug in power - sometimes all, sometimes 3 or 4 relays are turning ON for 1second.
If that happend my 24V power adapter will be in trash. How to prevent that? Do I need to add something in code (I'm not a programmer)?
try adding a delay in various places in setup() start with 5 or even 10 seconds.
-
ok, I just get back from Hackerspace. Some people fix this issue:
SN74HC595 - 13 pin (OE from datascheet) - remove GND and then add pull up 1k resistor and wire it to Arduino pin 6and software, added three lines in code:
const int outputEnablePin = 6; pinMode(outputEnablePin, OUTPUT); digitalWrite (outputEnablePin, LOW);put them after 190 line https://github.com/mysensors/MySensorsArduinoExamples/blob/master/examples/IrrigationController/IrrigationController.ino
should be like that:
<some code> //Setup Shift Register... const int latchPin = 8; const int clockPin = 4; const int dataPin = 7; const int outputEnablePin = 6; // byte clock[8] = {0x0, 0xe, 0x15, 0x17, 0x11, 0xe, 0x0}; // fetching time indicator byte raindrop[8] = {0x4, 0x4, 0xA, 0xA, 0x11, 0xE, 0x0,}; // fetching Valve Data indicator // Set the pins on the I2C chip used for LCD connections: // addr, en,rw,rs,d4,d5,d6,d7,bl,blpol LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Set the LCD I2C address to 0x27 MySensor gw; // MyMessage msg1valve(CHILD_ID_SPRINKLER, V_LIGHT); MyMessage var1valve(CHILD_ID_SPRINKLER, V_VAR1); MyMessage var2valve(CHILD_ID_SPRINKLER, V_VAR2); // void setup() { SERIAL_START(115200); DEBUG_PRINTLN(F("Initialising...")); pinMode(latchPin, OUTPUT); pinMode(clockPin, OUTPUT); pinMode(dataPin, OUTPUT); pinMode(ledPin, OUTPUT); pinMode(waterButtonPin, INPUT_PULLUP); //pinMode(waterButtonPin, INPUT); attachInterrupt(1, PushButton, RISING); //May need to change for your Arduino model digitalWrite (ledPin, HIGH); DEBUG_PRINTLN(F("Turning All Valves Off...")); updateRelays(ALL_VALVES_OFF); pinMode(outputEnablePin, OUTPUT); digitalWrite (outputEnablePin, LOW); <some code>If somebody can update this project in github and that fritzling draw - would be super nice.
-
ok, I just get back from Hackerspace. Some people fix this issue:
SN74HC595 - 13 pin (OE from datascheet) - remove GND and then add pull up 1k resistor and wire it to Arduino pin 6and software, added three lines in code:
const int outputEnablePin = 6; pinMode(outputEnablePin, OUTPUT); digitalWrite (outputEnablePin, LOW);put them after 190 line https://github.com/mysensors/MySensorsArduinoExamples/blob/master/examples/IrrigationController/IrrigationController.ino
should be like that:
<some code> //Setup Shift Register... const int latchPin = 8; const int clockPin = 4; const int dataPin = 7; const int outputEnablePin = 6; // byte clock[8] = {0x0, 0xe, 0x15, 0x17, 0x11, 0xe, 0x0}; // fetching time indicator byte raindrop[8] = {0x4, 0x4, 0xA, 0xA, 0x11, 0xE, 0x0,}; // fetching Valve Data indicator // Set the pins on the I2C chip used for LCD connections: // addr, en,rw,rs,d4,d5,d6,d7,bl,blpol LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Set the LCD I2C address to 0x27 MySensor gw; // MyMessage msg1valve(CHILD_ID_SPRINKLER, V_LIGHT); MyMessage var1valve(CHILD_ID_SPRINKLER, V_VAR1); MyMessage var2valve(CHILD_ID_SPRINKLER, V_VAR2); // void setup() { SERIAL_START(115200); DEBUG_PRINTLN(F("Initialising...")); pinMode(latchPin, OUTPUT); pinMode(clockPin, OUTPUT); pinMode(dataPin, OUTPUT); pinMode(ledPin, OUTPUT); pinMode(waterButtonPin, INPUT_PULLUP); //pinMode(waterButtonPin, INPUT); attachInterrupt(1, PushButton, RISING); //May need to change for your Arduino model digitalWrite (ledPin, HIGH); DEBUG_PRINTLN(F("Turning All Valves Off...")); updateRelays(ALL_VALVES_OFF); pinMode(outputEnablePin, OUTPUT); digitalWrite (outputEnablePin, LOW); <some code>If somebody can update this project in github and that fritzling draw - would be super nice.
-
@Huczas Great, thanks! Have you tested these updates? Also, can you post a link the info on hackerspace?
-
@petewill
Yes, I've tested this and it's working well!
Link to the hackerspace - HackerSpace Warsaw, they are on irc - where I talk with them, #hackerspace-pl at freenode servers. -
@petewill
Yes, I've tested this and it's working well!
Link to the hackerspace - HackerSpace Warsaw, they are on irc - where I talk with them, #hackerspace-pl at freenode servers. -
@Huczas the code has been updated in the 2.0 GitHub branch. The wiring diagram has also been updated. Thanks for the fix!
-
@petewill as I sad before - pull up 1k resistor and wire it to Arduino pin 6 - I mean
pull up - connect to power,
so should be 1k resistor connected with power source(that make sence with pull up) and also with pin 6. Like below:

-
I just finished building this but when I go to upload the code to my arduino i get this error
'byte clock [8]' redeclared as different kind of symbol
what does this mean ?
thanks
@bsivley Are you using the libraries from the MySensors github page (https://github.com/mysensors/MySensorsArduinoExamples/tree/master/libraries)? I just compiled it without any errors. What version of the Arduino IDE are you using? What version of MySensors are you using?
-
@bsivley Are you using the libraries from the MySensors github page (https://github.com/mysensors/MySensorsArduinoExamples/tree/master/libraries)? I just compiled it without any errors. What version of the Arduino IDE are you using? What version of MySensors are you using?
-
@petewill Hi, Please can you advise what version Arduino IDE you are using for this sketch?
-
Hi, Maybe somebody can help me with this issue? Managed to upload code for irrigation controller with Arduino IDE 1.6.12 but can't pair with Vera controller.
-
@Andrej_AB I'm using 1.6.12 but I haven't changed my node to 2.0 yet.
What is the issue you are having with pairing? Do you see the presentation messages on your gateway? Do you have other nodes successfully paired with your Vera? -
@petewill Hi, All my other nodes have successfully paired with Vera, but irrigation controller node can't pair with Vera, I have started inclusion mode on Vera, one minute passed 0 devices found.
Please see attached picture.


@Andrej_AB It looks like it's communicating ok because it's getting the time. Have you ever had a mysenors node #5 in your Vera previously and deleted it? Could it be that the Vera thinks it's already there? What happens if you clear your eeprom on your irrigation controller then manually assign a different ID and then try to pair it again?
-
@Andrej_AB It looks like it's communicating ok because it's getting the time. Have you ever had a mysenors node #5 in your Vera previously and deleted it? Could it be that the Vera thinks it's already there? What happens if you clear your eeprom on your irrigation controller then manually assign a different ID and then try to pair it again?
@petewill said:
@Andrej_AB It looks like it's communicating ok because it's getting the time. Have you ever had a mysenors node #5 in your Vera previously and deleted it? Could it be that the Vera thinks it's already there? What happens if you clear your eeprom on your irrigation controller then manually assign a different ID and then try to pair it again?
Also thinking about it, eprom was cleaned and manually assigned new ID but still can't pair with Vera.
Today I tried upload sketch from My sensors library 1.5.4 and node was successfully paired with Vera, then tried again last sketch and again can't pair. -
@petewill said:
@Andrej_AB It looks like it's communicating ok because it's getting the time. Have you ever had a mysenors node #5 in your Vera previously and deleted it? Could it be that the Vera thinks it's already there? What happens if you clear your eeprom on your irrigation controller then manually assign a different ID and then try to pair it again?
Also thinking about it, eprom was cleaned and manually assigned new ID but still can't pair with Vera.
Today I tried upload sketch from My sensors library 1.5.4 and node was successfully paired with Vera, then tried again last sketch and again can't pair.@Andrej_AB Can you post the full log from your sensor? The device is never getting presented in what you've posted so far. I don't have enough time to dig in to the code to know if this will help but can you try moving
void presentation() { sendSketchInfo(SKETCH_NAME, SKETCH_VERSION); for (byte i = 0; i <= NUMBER_OF_VALVES; i++) { present(i, S_LIGHT); } }so it's above
void setup()I still haven't updated my irrigation controller to 2.0 yet so I haven't tested any of the code.
-
@Andrej_AB Can you post the full log from your sensor? The device is never getting presented in what you've posted so far. I don't have enough time to dig in to the code to know if this will help but can you try moving
void presentation() { sendSketchInfo(SKETCH_NAME, SKETCH_VERSION); for (byte i = 0; i <= NUMBER_OF_VALVES; i++) { present(i, S_LIGHT); } }so it's above
void setup()I still haven't updated my irrigation controller to 2.0 yet so I haven't tested any of the code.
@petewill Finally managed to pair node with Vera controller, many thanks to @petewill for assistance with this issue.
// #define NUMBER_OF_VALVES 6 // Change this to set your valve count up to 16. #define VALVE_RESET_TIME 7500UL // Change this (in milliseconds) for the time you need your valves to hydraulically reset and change state #define RADIO_ID 7 // Set this to fix your Radio ID or use Auto```