How to toggle light on and off , between Cayenne app and momentary switch, for home automation?

Trying to do some home automation and I can’t figure out how to get Cayenne app on my Raspberry Pi to do what I want it to do. I want to be able to turn a light on and off from the Cayenne app on my phone and be able to press a momentary switch in that room to do the same thing.The momentary switch has to latch to keep the light on too. So if I turn the light on at the momentary switch in the room and say I leave my house and forgot to turn the light off I can just turn if off using the app. I want to be able to toggle the light on and off, between the app and momentary switch.

1 Like

I used the remote Pi3 GPIO (x) as a binary switch input-
wired to a standard light switch,

and I use GPIO (y) as a binary output to a generic power relay.

when the light switch is on, the GPIO (x) (usually floating high)
line is shorted to (-).

If GPIO (x) = 0, turn GPIO (y) on
If GPIO (x) = 1, turn GPIO (y) off

-concurrently, you have the Cayenne App,
controlling GPIO (y) via WiFi…
in THEORY, it works.

(I’m using this way right now)
Think I’ll make a short video…

OR

-you could 3.way the remote Cayenne relay,
and add a standard 3-way light switch.

1 Like

OR use the brilliant solution

offered by @joaoduarte_89

-using a remote GPIO-out pin
to toggle a remote associated GPIO-in.
that, in turn, sends an “off”,
and you have a momentary contact!

Here’s a video

showing the “software” 3-way switch.
Either the physical switch or the Cayenne can control the light-

The video does do want I want but I need to see how he did it. I cant find anything on the his youtube account. The Cayenne software doesn’t have a way to make it a three way from what I’ve seen. Is it possible to make a trigger that just changes the state of an GPIO output?

Look up 3-way switch diagrams. when I install 3 way switches I start with the travel wire. Start your wiring at the wall switch be sure that you have a 3 conductor (red,black,white and ground) romex running between wall switch and relay. Hook up the hot at the wall switch first assuming you have shut off the circuit breaker :slight_smile: . look up these images for reference, 3-way light switch diagram - Yahoo Image Search Results

You may have to sacrifice a 3-way switch to get an idea how the terminals are switched internally so you can wire your relay appropriately unless you can find an image, just drill out the rivets. I think the travel wire goes to the center tap of the relay. When 1 switch is switched off it passes hot to the other switch(relay) so that switch can get voltage to turn on the light so forth as so on.

Best image I could find:

Hope this helps a little more and not confused you more. W

Um- I gave you screen shots, and the 2 trigger rules to make it happen-
The video shows SOFTWARE switching- (low voltage switch)
ANY remote Cayenne device can trigger the light-
using the If Then argument.
The relay just follows the last sent command-

I showed when the light switch was off, -and I triggered the relay via my android.
The physical switch still showed off, but the relay was on.
When I turned the physical switch on, -nothing happened, because the light was already on.
The app correctly shows the states of all the inputs and outputs.
Stop the video to observe the screenshot more closely.

BTW, -if you can’t confidently wire
a line-voltage3-way or 4-way switch,
you probably shouldn’t do it…
at the very least,
don’t do it with the line current on!

1 Like

Thanks for the info wmontg. High tech thanks too, I finally got around to actually wiring an led to my pi to actually see everything working. I already had the triggers set up like the ones you sent me. The only problem I thought I would have was turning the light off at the switch in the room while it was already being turned on from the app. I decided to do away with a momentary switch too. After testing everything I figured out that I could turn the light off at the switch if I just turned it on then back off. Doing that shut the light off even though the app had it turned on. Thank you for your concern on wiring a three way switch too. If I didn’t know how to wire that I won’t be a very good electrician lol. One reason I’m wanting to do this is because is I’m trying to find a affordable home automation for some of my customers.

1 Like

Yup. :slight_smile: Software 3-way, or 4-way, or whatever way.
Latest command to be sent gets executed,
regardless of the GPIO input.

The problem with software switches vs. hardwired 3-way is-
with LV, you can’t control a series (standard) dimmer,
and
with LV, if you system fails,
you have no switching control.

With HV 3-way, you still have
physical switching control
and you can use standard 3-way dimmers.

for HIGH Voltage 3-way switching,
High Voltage RELAY outputs-
Use the Normally Open (N/O), black traveler on #14-3 romex
Normally Closed (N/C) , red traveler on #14-3 romex
The Line-In neutral (white) simply passes from the Neutral Line in
to the #14 romex white Neutral line out…
to the white #14 romex of the remote Neutral line load.
Connect your Line Power(in) BLACK to the (C), relay Commuter.
Now, power will flow
to the RED traveler when the relay is relaxed,
and the black traveler when the relay is energized.

At the OTHER end of the 3-way,
your #14-3 romex red and black will plug into
the 3-way Switch Traveler screw lugs…
The BLACK screw on the 3-way is the Commuter (C).
That screw will attach to (P-load)
go to your LOAD (light, whatever).
Tie the white Neutrals together.
If you want to add an additional physical 4-way switch,
just run the red and black #14 romex travelers
to the respective in/out screw lugs on the 4-way switch.
You can add as many functional 4-way switches as you need.

So- 1 of the 3-ways must be the Form C of the Cayenne project,
and 1 must be the physical 3-way to complete the circuit.
You can add additional physical 4-way switches as needed.

See- on a 3-way, one of the screw terminals is painted black. That is the Commuter.

Here’s a 4-way switch. Travelers in, travelers out…

Could some of you help me? The triggers don’t work for me.It just doesn’t do anything even though the button is pushed.

the code:
#include <CayenneMQTTESP8266.h>
#include <DHT.h>
#define CAYENNE_DEBUG
#define CAYENNE_PRINT Serial

char ssid[] = "im";
char password[] = "not clever";

char username[]="k";
char mqtt_password[] = "boi";
char client_id[] = "thanks";
int buttonstate;


void setup() {
  // put your setup code here, to run once:
Cayenne.begin(username,mqtt_password,client_id,ssid,password);
pinMode(D6, OUTPUT);
digitalWrite(D6, LOW);
pinMode(D5, OUTPUT);
digitalWrite(D5, LOW);
pinMode(D7, INPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
int  buttonstate = digitalRead(D7);
Cayenne.loop();
if(buttonstate == HIGH) {
  Cayenne.virtualWrite(2, HIGH);
}else {
  Cayenne.virtualWrite(2, LOW);
}
}


CAYENNE_IN(0)
{
  digitalWrite(D6, getValue.asInt());
}
CAYENNE_IN(1)
{
  digitalWrite(D5, getValue.asInt());
}

Note to yourself, be sure to edit out user name, password and client id.:blush:

Not sure if you were able to solve the issue, but my triggers didn’t work until I followed the write format for changing the state dashboard button that will evoke a trigger.

/* NOTE: Cayenne.virtualWrite(mqtt_channel , value , “type value”, “unit value”) */
Cayenne.virtualWrite(6,ButtonState_RLED , “digital_actuator”, “d” );

2 Likes