Skip to content

Instantly share code, notes, and snippets.

@zopieux
Last active January 10, 2021 18:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save zopieux/b4a51bca101d59339a839e3cc8e0ec98 to your computer and use it in GitHub Desktop.
Save zopieux/b4a51bca101d59339a839e3cc8e0ec98 to your computer and use it in GitHub Desktop.
Remote RSL366R (433.95MHz) Arduino program

Protocol: 1

Group 1 (I)

1 ON: 1381717 1 OFF: 1381716
2 ON: 1394005 2 OFF: 1394004
3 ON: 1397077 3 OFF: 1397076
4 ON: 1397845 4 OFF: 1397844

Group 2 (II)

1 ON: 4527445 1 OFF: 4527444
2 ON: 4539733 2 OFF: 4539732
3 ON: 4542805 3 OFF: 4542804
4 ON: 4543573 4 OFF: 4543572

Group 3 (III)

1 ON: 5313877 1 OFF: 5313876
2 ON: 5326165 2 OFF: 5326164
3 ON: 5329237 3 OFF: 5329236
4 ON: 5330005 4 OFF: 5330004

Group 4 (IV)

1 ON: 5510485 1 OFF: 5510484
2 ON: 5522773 2 OFF: 5522772
3 ON: 5525845 3 OFF: 5525844
4 ON: 5526613 4 OFF: 5526612
// https://github.com/sui77/rc-switch
#include <RCSwitch.h>
#define CONFIG_BUFSIZE ((8 + 16 + 8) / 8)
typedef union {
struct {
uint8_t transmitPin;
uint16_t pulseLength;
uint8_t repeatTx;
} c;
uint8_t in[CONFIG_BUFSIZE];
} ConfigU;
#define CODETOSEND_BUFSIZE (32 / 8)
typedef union {
unsigned long code;
uint8_t in[CODETOSEND_BUFSIZE];
} CodeToSendU;
enum State {
CONFIGURING,
RUNNING
};
RCSwitch rcswitch = RCSwitch();
State phase = CONFIGURING;
ConfigU config = {0};
cCodeToSendU codeToSend = {0};
void setup() {
Serial.begin(9600);
Serial.write("# Remote RSL366R (433.95MHz) (c) zopieux\n");
}
void loop() {
switch(phase) {
case CONFIGURING:
if (Serial.available() < CONFIG_BUFSIZE) return;
if (Serial.readBytes(config.in, CONFIG_BUFSIZE) != CONFIG_BUFSIZE) return;
Serial.print("transmitPin="); Serial.print((int)config.c.transmitPin); Serial.write("; ");
Serial.print("pulseLength="); Serial.print((int)config.c.pulseLength); Serial.write("; ");
Serial.print("repeatTx="); Serial.print((int)config.c.repeatTx); Serial.write(";\n");
rcswitch.enableTransmit((int)config.c.transmitPin);
rcswitch.setPulseLength((int)config.c.pulseLength);
rcswitch.setRepeatTransmit((int)config.c.repeatTx);
phase = RUNNING;
break;
case RUNNING:
if (Serial.available() < CODETOSEND_BUFSIZE) return;
if (Serial.readBytes(codeToSend.in, CODETOSEND_BUFSIZE) != CODETOSEND_BUFSIZE) return;
Serial.print("codeToSend="); Serial.print(codeToSend.code & 0xffffff); Serial.write(";\n");
rcswitch.send(codeToSend.code & 0xffffff, 24);
break;
}
}
s = serial.Serial("/dev/ttyUSB0", 9600)
print(s.readline())
# TX pin, pulse length, repeats
s.write(struct.pack("<BHB", 10, 413, 5))
print(s.readline())
while True:
s.write(struct.pack("<L", 1381717))
print(s.readline())
time.sleep(1)
s.write(struct.pack("<L", 1381716))
print(s.readline())
time.sleep(1)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment