Cod Fain LED Server WS2812FX
Cod Fain LED Server WS2812FX
h>
#include <ESP8266WebServer.h>
#include <WS2812FX.h>
#include "DHT.h"
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
float Temperature=0;
float Humidity=0;
int GASlevel;
int PIRvalue;
#ifdef STATIC_IP
IPAddress ip(192,168,0,123);
IPAddress gateway(192,168,0,1);
IPAddress subnet(255,255,255,0);
#endif
// QUICKFIX...See https://github.com/esp8266/Arduino/issues/263
#define LED_COUNT 60
#define WIFI_TIMEOUT 30000 // checks WiFi every ...ms. Reset after this time, if WiFi cannot
reconnect.
#define HTTP_PORT 80
#define DEFAULT_BRIGHTNESS 0
uint8_t myModes[] = {}; // *** optionally create a custom list of effect/mode numbers
ESP8266WebServer server(HTTP_PORT);
void setup(){
Serial.begin(115200);
delay(500);
Serial.println("\n\nStarting...");
modes.reserve(5000);
modes_setup();
Serial.println("WS2812FX setup");
ws2812fx.init();
ws2812fx.setMode(DEFAULT_MODE);
ws2812fx.setColor(DEFAULT_COLOR);
ws2812fx.setSpeed(DEFAULT_SPEED);
ws2812fx.setBrightness(DEFAULT_BRIGHTNESS);
ws2812fx.start();
Serial.println("Wifi setup");
wifi_setup();
server.on("/", srv_handle_index_html);
server.on("/main.js", srv_handle_main_js);
server.on("/modes", srv_handle_modes);
server.on("/set", srv_handle_set);
server.onNotFound(srv_handle_not_found);
server.begin();
Serial.println("ready!");
pinMode(4,INPUT_PULLUP);
pinMode(5,INPUT_PULLUP);
pinMode(DHTPin, INPUT);
dht.begin();
pinMode(GAS, INPUT);
pinMode(BUZZERPin, OUTPUT);
pinMode(PIRpin, INPUT);
void loop() {
server.handleClient();
ws2812fx.service();
if(WiFi.status() != WL_CONNECTED) {
wifi_setup();
} else {
Serial.println("OK");
last_wifi_check_time = now;
if(auto_cycle && (now - auto_last_change > 10000)) { // cycle effect mode every 10 seconds
if(myModes[i] == ws2812fx.getMode()) {
break;
}
}
ws2812fx.setMode(next_mode);
auto_last_change = now;
lcd.print(" C");
lcd.setCursor(0,1);
lcd.print("Humi.: ");
lcd.print(Humidity);
lcd.print(" % ");
GASlevel=analogRead(GAS);
if(GASlevel==1023){
int a=ws2812fx.getMode();
int b=ws2812fx.getBrightness();
int c=ws2812fx.getColor();
Serial.println("GAZ");
tone(BUZZERPin, 50);
delay(50);
ws2812fx.setMode(0);
ws2812fx.setBrightness(255);
ws2812fx.setColor(0xFF0000);
delay(500);
noTone(BUZZERPin);
delay(100);
ws2812fx.setMode(0);
ws2812fx.setBrightness(0);
ws2812fx.setColor(0xFF0000);
delay(500);
ws2812fx.setMode(a);
ws2812fx.setBrightness(b);
ws2812fx.setColor(c);
PIRvalue = digitalRead(PIRpin);
if(PIRvalue==1){
Serial.println("PIR DETECTED");
ws2812fx.setBrightness(255);
/*
*/
void wifi_setup() {
Serial.println();
Serial.print("Connecting to ");
Serial.println(WIFI_SSID);
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
WiFi.mode(WIFI_STA);
#ifdef STATIC_IP
#endif
while(WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
Serial.println();
Serial.print("Tried ");
Serial.print(WIFI_TIMEOUT);
ESP.reset();
Serial.println("");
Serial.println("WiFi connected");
Serial.println(WiFi.localIP());
Serial.println();
}
/*
*/
void modes_setup() {
modes = "";
modes += ws2812fx.getModeName(m);
modes += "</a></li>";
/* #####################################################
# Webserver Functions
##################################################### */
void srv_handle_not_found() {
void srv_handle_index_html() {
server.send_P(200,"text/html", index_html);
void srv_handle_main_js() {
server.send_P(200,"application/javascript", main_js);
void srv_handle_modes() {
server.send(200,"text/plain", modes);
void srv_handle_set() {
if(server.argName(i) == "c") {
ws2812fx.setColor(tmp);
if(server.argName(i) == "m") {
ws2812fx.setMode(tmp % ws2812fx.getModeCount());
if(server.argName(i) == "b") {
if(server.arg(i)[0] == '-') {
ws2812fx.setBrightness(ws2812fx.getBrightness() * 0.8);
ws2812fx.setBrightness(tmp);
if(server.argName(i) == "s") {
if(server.arg(i)[0] == '-') {
ws2812fx.setSpeed(max(ws2812fx.getSpeed(), 5) * 1.2);
ws2812fx.setSpeed(ws2812fx.getSpeed() * 0.8);
} else {
ws2812fx.setSpeed(tmp);
if(server.argName(i) == "a") {
if(server.arg(i)[0] == '-') {
auto_cycle = false;
} else {
auto_cycle = true;
auto_last_change = 0;