#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <IRremote.h>
#include <PubSubClient.h>
#include <WiFi.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
WiFiClient espClient;
PubSubClient client(espClient);
const char* ssid = "Wokwi-GUEST";
const char* password = "";
const char* mqtt_server = "broker.netpie.io";
const int mqtt_port = 1883;
const char* mqtt_Client = "470ae3f7-48ce-437e-98bf-db191e7f9dc2"; //client
const char* mqtt_username = "KUuz53tfJu9hPjhi3oFxCqGRpwbzBgQm"; //token
const char* mqtt_password = "okujwpcHZowKJcidwckGMfyJuCARxV3Q";//Secret
String GettextClick;
char msg[100];
void reconnect() {
while (!client.connected()) {
Serial.print("Attemping MQTT connection...");
if (client.connect(mqtt_Client, mqtt_username, mqtt_password)) {
Serial.println("Connected");
client.subscribe("@msg/#");
} else {
Serial.print("failed,rc=");
Serial.print(client.state());
Serial.print("try again in 5 seconds");
delay(5000);
}
}
}
void setup() {
int ir = 4;
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Sornnaret-009");
IrReceiver.begin(ir);
//startoled
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for (;;);
}
display.display();
delay(2000);
display.clearDisplay();
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.print("");
Serial.println("WiFi connected");
client.setServer(mqtt_server, mqtt_port);
}
void loop() {
if (!client.connected()) {
reconnect();
} else if (client.connected()){
if (IrReceiver.decode()) {
int irRec = IrReceiver.decodedIRData.command;
Serial.println(irRec); //this returns IR signal in int
switch (irRec) {
case 162: //power
// Serial.println("Power");
GettextClick = "Power";
break;
case 226: //menu
// Serial.println("menu");
GettextClick = "Menu";
break;
case 2: // +
//Serial.println("+");
GettextClick = "Plus";
break;
case 152: // -
//Serial.println("-");
GettextClick = "Minus";
break;
case 224: //Prev
//Serial.println("Prev");
GettextClick = "Pervious";
break;
case 144: //next
//.println("next");
GettextClick = "Next";
break;
default:
GettextClick = "Invalid key";
break;
}
IrReceiver.resume();
display.clearDisplay();
display.setTextSize(3);
display.setTextColor(SSD1306_WHITE);
display.setCursor(10, 0);
display.println("Remote");
display.setCursor(25, 40);
display.println(GettextClick);
display.display();
String data = "{\"data\":{\"RemoteCick\":\"" + GettextClick + "\"}}";
Serial.println(data);
data.toCharArray(msg, (data.length() + 1));
client.publish("@shadow/data/update", msg);
client.loop();
delay(1000);
}
}
}