#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()) { uint8_t x = Serial.read(); if(index > 0 || (x >= 80 && x <= 95)) { message[index++] = x; if(index > 7){ decodeMessage(); index = 0; } } } } void decodeMessage() { if(com) { int cmd = message[0]; int pin = message[1] - 97; uint8_t val[6]; memcpy(val, message + 2, 6); 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(uint8_t 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() + 1]; triStateCode.toUpperCase(); triStateCode.toCharArray(triState, triStateCode.length() + 1); controlRCOutlets(triState); Serial.println("RC-Tristate send!"); } void controlRCOutlets(const char* sCodeWord) { mySwitch.sendTriState(sCodeWord); delay(1000); }