-
Back to the source
08/24/2022 at 10:02 • 0 commentsI've found the source code!
It was on an older laptop that got passed along and that I happened to get on my desk for some updates. Anyway, glad to have it. Now I can improve on it, add OTA, MQTT-autodiscover etc.
And try to ignore the big cringe you get when you see your own software from a few years ago :|
#ifndef UNIT_TEST #include <Arduino.h> #endif #include <PubSubClient.h> #include <ESP8266WiFi.h> #include <ESP8266WiFiMulti.h> ESP8266WiFiMulti WiFiMulti; #include <WiFiClient.h> #include <WiFiClientSecure.h> #include <WiFiServer.h> #include <WiFiUdp.h> #include <IRremoteESP8266.h> #include <IRsend.h> #include <IRrecv.h> #include <IRutils.h> #define PIN_IRLED 10 #define PIN_IRSENSOR 4 uint16_t RECV_PIN = PIN_IRSENSOR; unsigned long previousMillis = 0; unsigned long currentMillis = 0; const long interval = 60000; const char* ssid = "***"; const char* password = "***"; IPAddress mqtt_server(192,168,1,***); char* message = ""; WiFiClient espClient; PubSubClient client(espClient); IRsend irsend(PIN_IRLED); // An IR LED is controlled by GPIO pin 4 (D2) IRrecv irrecv(RECV_PIN); decode_results results; void callback(char* topic, byte* payload, unsigned int length) { Serial.print("Message arrived ["); Serial.print(topic); Serial.print("] "); for (int i=0;i<length;i++) { char receivedChar = (char)payload[i]; Serial.print(receivedChar); if (receivedChar == '0'){ Serial.println(" - Off received"); client.publish("LEDStalamp/Response"," - ALL OFF received"); irsend.sendNEC(0xFF827D, 32); irsend.sendNEC(0xFFE817, 32); } if (receivedChar == '1'){ Serial.println(" - On received"); client.publish("LEDStalamp/Response"," - ALL ON received"); irsend.sendNEC(0xFF02FD, 32); irsend.sendNEC(0xFF6897, 32); } if (receivedChar == 'U'){ Serial.println("RGB+ received"); client.publish("LEDStalamp/Response"," - RGB+ received"); irsend.sendNEC(0xFF3AC5, 32); } if (receivedChar == 'X'){ Serial.println("RGB- received"); client.publish("LEDStalamp/Response"," - RGB- received"); irsend.sendNEC(0xFFBA45, 32); } if (receivedChar == 'Y'){ Serial.println("RGB OFF received"); client.publish("LEDStalamp/Response"," - RGB OFF received"); irsend.sendNEC(0xFF827D, 32); } if (receivedChar == 'Z'){ Serial.println("RGB ON received"); client.publish("LEDStalamp/Response"," - RGB ON received"); irsend.sendNEC(0xFF02FD, 32); } if (receivedChar == 'R'){ Serial.println("RGB RED received"); client.publish("LEDStalamp/Response"," - RGB RED received"); irsend.sendNEC(0xFF1AE5, 32); } if (receivedChar == 'G'){ Serial.println("RGB GREEN received"); client.publish("LEDStalamp/Response"," - RGB GREEN received"); irsend.sendNEC(0xFF9A65, 32); } if (receivedChar == 'B'){ Serial.println("RGB BLUE received"); client.publish("LEDStalamp/Response"," - RGB BLUE received"); irsend.sendNEC(0xFFA25D, 32); } if (receivedChar == 'W'){ Serial.println("RGB WHITE received"); client.publish("LEDStalamp/Response"," - RGB WHITE received"); irsend.sendNEC(0xFF22DD, 32); } if (receivedChar == 'C'){ Serial.println("RGB R1 received"); client.publish("LEDStalamp/Response"," - RGB R1 received"); irsend.sendNEC(0xFF2AD5, 32); } if (receivedChar == 'D'){ Serial.println("RGB R2 received"); client.publish("LEDStalamp/Response"," - RGB R2 received"); irsend.sendNEC(0xFF0AF5, 32); } if (receivedChar == 'E'){ Serial.println("RGB R3 received"); client.publish("LEDStalamp/Response"," - RGB R3 received"); irsend.sendNEC(0xFF38C7, 32); } if (receivedChar == 'F'){ Serial.println("RGB R4 received"); client.publish("LEDStalamp/Response"," - RGB R4 received"); irsend.sendNEC(0xFF18E7, 32); } if (receivedChar == 'H'){ Serial.println("RGB G1 received"); client.publish("LEDStalamp/Response"," - RGB G1 received"); irsend.sendNEC(0xFFAA55, 32); } if (receivedChar == 'I'){ Serial.println("RGB G2 received"); client.publish("LEDStalamp/Response"," - RGB G2 received"); irsend.sendNEC(0xFF8A75, 32); } if (receivedChar == 'J'){ Serial.println("RGB G3 received"); client.publish("LEDStalamp/Response"," - RGB G3 received"); irsend.sendNEC(0xFFB847, 32); } if (receivedChar == 'K'){ Serial.println("RGB G4 received"); client.publish("LEDStalamp/Response"," - RGB G4 received"); irsend.sendNEC(0xFF9867, 32); } if (receivedChar == 'L'){ Serial.println("RGB B1 received"); client.publish("LEDStalamp/Response"," - RGB B1 received"); irsend.sendNEC(0xFF926D, 32); } if (receivedChar == 'M'){ Serial.println("RGB B2 received"); client.publish("LEDStalamp/Response"," - RGB B2 received"); irsend.sendNEC(0xFFB24D, 32); } if (receivedChar == 'N'){ Serial.println("RGB B2 received"); client.publish("LEDStalamp/Response"," - RGB B3 received"); irsend.sendNEC(0xFF7887, 32); } if (receivedChar == 'O'){ Serial.println("RGB B4 received"); client.publish("LEDStalamp/Response"," - RGB B4 received"); irsend.sendNEC(0xFF58A7, 32); } if (receivedChar == 'P'){ Serial.println("RGB W1 received"); client.publish("LEDStalamp/Response"," - RGB W1 received"); irsend.sendNEC(0xFF12ED, 32); } if (receivedChar == 'Q'){ Serial.println("RGB W2 received"); client.publish("LEDStalamp/Response"," - RGB W2 received"); irsend.sendNEC(0xFF32CD, 32); } if (receivedChar == 'S'){ Serial.println("RGB W3 received"); client.publish("LEDStalamp/Response"," - RGB W3 received"); irsend.sendNEC(0xFFF807, 32); } if (receivedChar == 'T'){ Serial.println("RGB W4 received"); client.publish("LEDStalamp/Response"," - RGB W4 received"); irsend.sendNEC(0xFFD827, 32); } if (receivedChar == 'a'){ Serial.println("WHITE+ received"); client.publish("LEDStalamp/Response"," - WHITE+ received"); irsend.sendNEC(0xFF28D7, 32); } if (receivedChar == 'b'){ Serial.println("WHITE- received"); client.publish("LEDStalamp/Response"," - WHITE- received"); irsend.sendNEC(0xFFA857, 32); } if (receivedChar == 'c'){ Serial.println("WHITE OFF received"); client.publish("LEDStalamp/Response"," - WHITE OFF received"); irsend.sendNEC(0xFF6897, 32); } if (receivedChar == 'd'){ Serial.println("WHITE ON received"); client.publish("LEDStalamp/Response"," - WHITE ON received"); irsend.sendNEC(0xFFE817, 32); } if (receivedChar == 'e'){ Serial.println("WHITE 25% received"); client.publish("LEDStalamp/Response"," - WHITE 25% received"); irsend.sendNEC(0xFF08F7, 32); } if (receivedChar == 'f'){ Serial.println("WHITE 50% received"); client.publish("LEDStalamp/Response"," - WHITE 50% received"); irsend.sendNEC(0xFF8877, 32); } if (receivedChar == 'g'){ Serial.println("WHITE 75% received"); client.publish("LEDStalamp/Response"," - WHITE 75% received"); irsend.sendNEC(0xFF48B7, 32); } if (receivedChar == 'h'){ Serial.println("WHITE 100% received"); client.publish("LEDStalamp/Response"," - WHITE 100% received"); irsend.sendNEC(0xFFC837, 32); } if (receivedChar == 'i'){ Serial.println("JUMP3 received"); client.publish("LEDStalamp/Response"," - JUMP3 received"); irsend.sendNEC(0xFF30CF, 32); } if (receivedChar == 'j'){ Serial.println("FADE3 received"); client.publish("LEDStalamp/Response"," - FADE3 received"); irsend.sendNEC(0xFFB04F, 32); } if (receivedChar == 'k'){ Serial.println("JUMP7 received"); client.publish("LEDStalamp/Response"," - JUMP7 received"); irsend.sendNEC(0xFF708F, 32); } if (receivedChar == 'l'){ Serial.println("QUICK received"); client.publish("LEDStalamp/Response"," - QUICK received"); irsend.sendNEC(0xFFF00F, 32); } if (receivedChar == 'm'){ Serial.println("FADE7 received"); client.publish("LEDStalamp/Response"," - FADE7 received"); irsend.sendNEC(0xFF10EF, 32); } if (receivedChar == 'n'){ Serial.println("FLASH received"); client.publish("LEDStalamp/Response"," - FLASH received"); irsend.sendNEC(0xFF906F, 32); } if (receivedChar == 'o'){ Serial.println("AUTO received"); client.publish("LEDStalamp/Response"," - AUTO received"); irsend.sendNEC(0xFF50AF, 32); } if (receivedChar == 'p'){ Serial.println("SLOW received"); client.publish("LEDStalamp/Response"," - SLOW received"); irsend.sendNEC(0xFFD02F, 32); } } Serial.println(); } void reconnect() { // Loop until we're reconnected while (!client.connected()) { Serial.print("Attempting MQTT connection..."); // Attempt to connect if (client.connect("ESP8266", "snokkie", "jiggiejiggie")) { Serial.println("connected"); // ... and subscribe to topic client.subscribe("LEDStalamp/Command"); message = "MQTT connected: "; client.publish("LEDStalamp/Response",message); } else { Serial.print("failed, rc="); Serial.print(client.state()); Serial.println(" try again in 5 seconds"); // Wait 5 seconds before retrying delay(5000); } } } void setup(){ irsend.begin(); irrecv.enableIRIn(); // Start the receiver pinMode(PIN_IRSENSOR,INPUT_PULLUP); pinMode(PIN_IRLED, OUTPUT); // nothing to setup Serial.begin(115200); Serial.println("\n--START--"); WiFiMulti.addAP(ssid, password); while(WiFiMulti.run() != WL_CONNECTED) { Serial.print("."); delay(500); } Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); client.setServer(mqtt_server, 1883); client.setCallback(callback); } void loop(){ if (!client.connected()) { reconnect(); } client.loop(); currentMillis = millis(); if(currentMillis - previousMillis >= interval) { previousMillis = currentMillis; client.publish("LEDStalamp/Response"," - Still allive!"); } if (irrecv.decode(&results)) { // print() & println() can't handle printing long longs. (uint64_t) serialPrintUint64(results.value, HEX); Serial.println(""); irrecv.resume(); // Receive the next value } }