#include RCSwitch mySwitch = RCSwitch(); uint8_t message[8]; int index = 0; boolean com = false; boolean on = false; void setup() { Serial.begin(9600); mySwitch.enableTransmit(11); } void loop() { while(Serial.available()) { if(index > 0 || (Serial.peek() >= 80 && Serial.peek() <= 95)) { message[index++] = Serial.read(); if(index > 7){ decodeMessage(); index = 0; } } } } void decodeMessage() { if(com) { int cmd = message[0]; Serial.println(cmd); int pin = message[1] - 97; Serial.println(pin); int val[6]; memcpy(val, message + 2, 6); for(int i =0;i<6;i++) {Serial.println(val[i]);} switch (cmd) { //case 80: break; //case 81: break; //case 82: break; //case 83: break; //case 84: break; //case 85: break; //case 86: break; case 87: switchLight(val); break; //case 88: break; //case 89: break; default: break; } } else if(message[0] == 90) { com = true; Serial.println("Ready!"); } else { Serial.println("Arduino not configured for communication!"); } } void switchLight(int val[]) { String triStateCode = ""; for(int i = 0; i < 6; i++) { String triStatePart = String(val[i], HEX); triStatePart = (triStatePart.length() < 2) ? String("0" + triStatePart) : triStatePart; triStateCode.concat(triStatePart); } char triState[triStateCode.length()]; triStateCode.toCharArray(triState, triStateCode.length()); if(on) { controlRCOutlets(triState); Serial.println("Light is off."); on = false; } else { controlRCOutlets(triState); Serial.println("Light is on."); on = true; } } void controlRCOutlets(const char* sCodeWord) { mySwitch.sendTriState(sCodeWord); delay(1000); }