     return mqttClient.publish("devices/chromis/out", button);
 }
 
-/////////////////////////////////////////////////////////////////////////////////////
-// MAIN PROGRAM
-/////////////////////////////////////////////////////////////////////////////////////
-
-void setup() {
+////////////////////////////////////////////////////////////////////////////////
+// IRReceiver
+////////////////////////////////////////////////////////////////////////////////
+
+IRrecv irrecv(PIN_INPUT);
+IRsend irsend;
+
+decode_results results;
+
+void setupIr() {
     Serial.begin(9600);
     irrecv.blink13(TRUE);
     irrecv.enableIRIn(); // Start the receiver
-
-    pinMode(PIN_OUTPUT, OUTPUT);
-    Particle.function("emit", emit);
-
-	setupMqtt();
-}
-
-void loop() {
+}
+
+void loopIr() {
     if (irrecv.decode(&results)) {
         dumpSerial();
         irrecv.resume(); // Receive the next value
     }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// MAIN PROGRAM
+////////////////////////////////////////////////////////////////////////////////
+
+void setup() {
+    setupIr();
+
+    pinMode(PIN_OUTPUT, OUTPUT);
+
+    Particle.function("emit", emit);
+    Particle.function("test", test);
+
+	setupMqtt();
+}
+
+void loop() {
+    loopIr();
 	loopMqtt();
 }
 
-/////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////
 // Particle functions
-/////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////////////////////
 // Emits an IR code corresponding to one that was dumped earlier
 // i.e.
 // Power Off: "NEC,20DFA35C,32"
+
+int test(String command) {
+    emit("NEC,FFFFFFFF,32");
+    return 1;
+}
 
 int emit(String command) {
 	if (command == "") {

const int PIN_OUTPUT = A5;
const int PIN_INPUT = D0;

IRrecv irrecv(PIN_INPUT);
IRsend irsend;

decode_results results;

/////////////////////////////////////////////////////////////////////////////////////
// MQTT
/////////////////////////////////////////////////////////////////////////////////////

char myIpString[24];
byte server[] = { 10, 5, 23, 34 };

    return 1;
}

////////////////////////////////////////////////////////////////////////////////
// Helper methods
////////////////////////////////////////////////////////////////////////////////
void dumpSerial() {
    char out[32];

