Skip to content

Instantly share code, notes, and snippets.

@silverjam
Created July 15, 2020 06:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save silverjam/b8d364259ad43025c75f49d9e48687e1 to your computer and use it in GitHub Desktop.
Save silverjam/b8d364259ad43025c75f49d9e48687e1 to your computer and use it in GitHub Desktop.
Arduino remote hack using esp8266 (NodeMCU) and some relays
#include <Arduino.h>
#include <ESP8266WiFi.h>
char ssid[] = "An Wi-Fi";
char pass[] = "xxx";
int status = WL_IDLE_STATUS;
#define BUTTON1_ON_PIN D1
#define BUTTON1_OFF_PIN D2
#define BUTTON2_ON_PIN D3
#define BUTTON2_OFF_PIN D4
#define BUTTON3_ON_PIN D7
#define BUTTON3_OFF_PIN D8
#define ASSERT_OFF HIGH
#define ASSERT_ON LOW
#define SLEEP_MS 1000
WiFiServer server(1337);
void setup()
{
Serial.begin(115200);
Serial.println();
Serial.println();
Serial.print("Starting...") ;
pinMode(LED_BUILTIN, OUTPUT);
pinMode(BUTTON1_ON_PIN, OUTPUT);
pinMode(BUTTON1_OFF_PIN, OUTPUT);
pinMode(BUTTON2_ON_PIN, OUTPUT);
pinMode(BUTTON2_OFF_PIN, OUTPUT);
pinMode(BUTTON3_ON_PIN, OUTPUT);
pinMode(BUTTON3_OFF_PIN, OUTPUT);
/*
digitalWrite(BUTTON1_ON_PIN, ASSERT_ON);
digitalWrite(BUTTON1_OFF_PIN, ASSERT_ON);
digitalWrite(BUTTON2_ON_PIN, ASSERT_ON);
digitalWrite(BUTTON2_OFF_PIN, ASSERT_ON);
digitalWrite(BUTTON3_ON_PIN, ASSERT_ON);
digitalWrite(BUTTON3_OFF_PIN, ASSERT_ON);
delay(200);
*/
digitalWrite(BUTTON1_ON_PIN, ASSERT_OFF);
digitalWrite(BUTTON1_OFF_PIN, ASSERT_OFF);
digitalWrite(BUTTON2_ON_PIN, ASSERT_OFF);
digitalWrite(BUTTON2_OFF_PIN, ASSERT_OFF);
digitalWrite(BUTTON3_ON_PIN, ASSERT_OFF);
digitalWrite(BUTTON3_OFF_PIN, ASSERT_OFF);
WiFi.begin(ssid, pass);
while ( WiFi.status() != WL_CONNECTED)
{
Serial.print("Attempting to connect to WPA SSID: ");
Serial.println(ssid);
String szStatus = String(WiFi.status());
Serial.println("WiFi status: " + szStatus);
delay(2000);
}
server.begin();
Serial.println("Setup done, ip address: " + WiFi.localIP().toString());
digitalWrite(LED_BUILTIN, LOW);
delay(1000);
digitalWrite(LED_BUILTIN, HIGH);
}
void handleCommand(char cmd)
{
if (cmd == 'n')
{
Serial.println("turning lights off");
digitalWrite(BUTTON1_OFF_PIN, LOW);
delay(SLEEP_MS);
digitalWrite(BUTTON1_OFF_PIN, HIGH);
delay(SLEEP_MS);
digitalWrite(BUTTON2_OFF_PIN, LOW);
delay(SLEEP_MS);
digitalWrite(BUTTON2_OFF_PIN, HIGH);
}
else if (cmd == 'y')
{
Serial.println("turning lights on");
digitalWrite(BUTTON1_ON_PIN, LOW);
delay(SLEEP_MS);
digitalWrite(BUTTON1_ON_PIN, HIGH);
delay(SLEEP_MS);
digitalWrite(BUTTON2_ON_PIN, LOW);
delay(SLEEP_MS);
digitalWrite(BUTTON2_ON_PIN, HIGH);
}
else if (cmd == 'a')
{
Serial.println("turning tv lights on");
digitalWrite(BUTTON1_ON_PIN, ASSERT_ON);
delay(SLEEP_MS);
digitalWrite(BUTTON1_ON_PIN, ASSERT_OFF);
}
else if (cmd == 'b')
{
Serial.println("turning tv lights off");
digitalWrite(BUTTON1_OFF_PIN, LOW);
delay(SLEEP_MS);
digitalWrite(BUTTON1_OFF_PIN, HIGH);
}
else if (cmd == 'c')
{
Serial.println("turning stairs lights on");
digitalWrite(BUTTON2_ON_PIN, LOW);
delay(SLEEP_MS);
digitalWrite(BUTTON2_ON_PIN, HIGH);
}
else if (cmd == 'd')
{
Serial.println("turning stairs lights off");
digitalWrite(BUTTON2_OFF_PIN, LOW);
delay(SLEEP_MS);
digitalWrite(BUTTON2_OFF_PIN, HIGH);
}
else if (cmd == 'e')
{
Serial.println("turning upstairs lights on");
digitalWrite(BUTTON3_ON_PIN, LOW);
delay(SLEEP_MS);
digitalWrite(BUTTON3_ON_PIN, HIGH);
}
else if (cmd == 'f')
{
Serial.println("turning upstairs lights off");
digitalWrite(BUTTON3_OFF_PIN, LOW);
delay(SLEEP_MS);
digitalWrite(BUTTON3_OFF_PIN, HIGH);
}
else
{
Serial.println("unknown command");
}
}
void loop()
{
WiFiClient client = server.available();
if (!client)
{
delay(200);
}
if (client)
{
while (client.connected())
{
Serial.println("got client");
if (client.available())
{
handleCommand(client.read());
}
client.stop();
digitalWrite(LED_BUILTIN, LOW);
delay(1000);
digitalWrite(LED_BUILTIN, HIGH);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment