Created
July 15, 2020 06:04
-
-
Save silverjam/b8d364259ad43025c75f49d9e48687e1 to your computer and use it in GitHub Desktop.
Arduino remote hack using esp8266 (NodeMCU) and some relays
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#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