Progress Update:
I have recently been able to toggle the relay via the Arduino.
After some additional digging, I discovered the following:
Turns out I didn't know how to use the capture software properly (probably still dont), and it ended up that I was missing an earlier start bit that I didn't see initially. I slowed my capture down to 1Khz, and learned that I needed a 470us start bit, followed by a 12ms delay, then the data (data only repeated 3x) .
I also learned that after the start bit, for whatever reason, I need to send my data 3 times. Not 100% sure why... might be a timing issue, or something else I am unaware of at this time. I don't have access to a fancy logic analyzer, so I'm out of luck here as best I can tell.
But in the end, I got it to work.
In case this helps anyone else out in the future, here are some specifics about the item I was working with:
Living Solutions
Outdoor 2-outlet remote control
Distributed by Walgreen's
model number YLT-11
UPC: 049022614611
PS: I bought 2 of them, and they each use the same remote control signal.
Here is my test code:
//Timings
int longDelay = 1250;
int shortDelay = 480;
//output pin that sends signal
int pin = 8;
void setup() {
pinMode(pin, OUTPUT);
digitalWrite(pin,LOW);
Serial.begin(115200);
}
void loop() {
//Turn it On
burst(pin);
for(int i = 0; i < 3; i++){
common(pin);
common(pin);
common(pin);
common(pin);
shortOn(pin);
common(pin);
shortOn(pin);
shortOn(pin);
common(pin);
common(pin);
delayMicroseconds(12000);
}
//Admire
delay(2000);
//now turn it off
burst(pin);
for(int i = 0; i< 3; i++){
common(pin);
common(pin);
common(pin);
common(pin);
common(pin);
longOn(pin);
longOn(pin);
longOn(pin);
shortOn(pin);
common(pin);
shortOn(pin);
delayMicroseconds(12000);
}
//Admire
delay(2000);
}
void burst(int pinNum){
digitalWrite(pinNum,HIGH);
delayMicroseconds(470);
digitalWrite(pinNum,LOW);
//short off
delayMicroseconds(12000);
}
void common(int pinNum){
//long on
digitalWrite(pinNum,HIGH);
delayMicroseconds(longDelay);
digitalWrite(pinNum,LOW);
//short off
delayMicroseconds(shortDelay);
//short on
digitalWrite(pinNum,HIGH);
delayMicroseconds(shortDelay);
digitalWrite(pinNum,LOW);
//long off
delayMicroseconds(longDelay);
}
void shortOn(int pinNum){
//short on
digitalWrite(pinNum,HIGH);
delayMicroseconds(shortDelay);
digitalWrite(pinNum,LOW);
delayMicroseconds(longDelay);
}
void longOn(int pinNum){
//long on
digitalWrite(pinNum,HIGH);
delayMicroseconds(longDelay);
digitalWrite(pinNum,LOW);
//short off
delayMicroseconds(shortDelay);
}