#include // https://github.com/tzapu/WiFiManager
#include
#include
/*
* Copyright Kris Occhipinti March, 6th 2021
* https://filmsbykris.com
*This program is free software: you can redistribute it and/or modify
*it under the terms of the GNU General Public License as published by
*the Free Software Foundation, either version 3 of the License, or
*(at your option) any later version.
*
*This program is distributed in the hope that it will be useful,
*but WITHOUT ANY WARRANTY; without even the implied warranty of
*MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
*GNU General Public License for more details.
*
*You should have received a copy of the GNU General Public License
*along with this program. If not, see .
*
*/
RCSwitch mySwitch = RCSwitch();
ESP8266WebServer server(80);
void setup() {
WiFi.mode(WIFI_STA); // explicitly set mode, esp defaults to STA+AP
// put your setup code here, to run once:
Serial.begin(115200);
//transmit 0 --> pin D3 on Wemo Esp
mySwitch.enableTransmit(0);
//This needs to be set to 180 for zap outlets
mySwitch.setPulseLength(180);
// WiFi.mode(WiFi_STA); // it is a good practice to make sure your code sets wifi mode how you want it.
//WiFiManager, Local intialization. Once its business is done, there is no need to keep it around
WiFiManager wm;
//reset settings - wipe credentials for testing
//wm.resetSettings();
// Automatically connect using saved credentials,
// if connection fails, it starts an access point with the specified name ( "AutoConnectAP"),
// if empty will auto generate SSID, if password is blank it will be anonymous AP (wm.autoConnect())
// then goes into a blocking loop awaiting configuration and will return success result
bool res;
// res = wm.autoConnect(); // auto generated AP name from chipid
res = wm.autoConnect("Outlets"); // anonymous ap
//res = wm.autoConnect("AutoConnectAP","password"); // password protected ap
if(!res) {
Serial.println("Failed to connect");
// ESP.restart();
}
else {
//if you get here you have connected to the WiFi
Serial.println("connected...yeey :)");
}
server.on("/", handleRoot);
server.begin();
}
void handleRoot() {
String msg = "";
for (uint8_t i = 0; i < server.args(); i++) {
msg += server.argName(i) + ": " + server.arg(i) + "\n";
}
//pulse seems to be either 180 or 320 for my devices
int pulse = server.arg("pulse").toInt();
int code = server.arg("code").toInt();
//bits 24 or 32
int bits = server.arg("bits").toInt();
mySwitch.setPulseLength(pulse);
mySwitch.send(code, bits);
server.send(200, "text/plain", msg);
Serial.println(msg);
}
void loop() {
// put your main code here, to run repeatedly:
server.handleClient();
}