#include #include #include #include unsigned int packets = 0; WiFiUDP u; unsigned int doreport = 0; uint64_t imp; unsigned long last_imp = 0; IRAM_ATTR void isr () { unsigned long time = millis(); unsigned long lumax = -1; if (time < last_imp) { // debouncer if (lumax - last_imp + time < (unsigned long) 100) // saj ne bo več kot 36 kW porabe return; } else if (last_imp + (unsigned long) 100 > time) return; last_imp = time; if (imp++ % 2) digitalWrite(D8, HIGH); else digitalWrite(D8, LOW); } void setup () { Serial.begin(MONITOR_SPEED); pinMode(D5, INPUT); pinMode(D6, OUTPUT); pinMode(D7, OUTPUT); pinMode(D8, OUTPUT); EEPROM.begin(512); EEPROM.get(0, imp); WiFi.begin("OpenWrt", NULL); IPAddress a(10,69,69,35); IPAddress g(10,69,69,1); IPAddress n(255,255,255,0); IPAddress d1(10,69,69,1); IPAddress d2(89,212,194,154); WiFi.config(a, g, n, d1, d2); u.begin(35358); attachInterrupt(digitalPinToInterrupt(D5), isr, FALLING); } void loop () { if (WiFi.status() == WL_CONNECTED) digitalWrite(D7, LOW); else digitalWrite(D7, HIGH); if (u.parsePacket()) { packets++; if (packets % 2) digitalWrite(D6, HIGH); else digitalWrite(D6, LOW); Serial.println(); char p[512]; u.read(p, 255); if (!strncmp(p, "reset", 5)) { imp = 0; Serial.println("reset"); } } uint64_t imp_stored; EEPROM.get(0, imp_stored); if (imp_stored != imp) { EEPROM.put(0, imp); EEPROM.commit(); Serial.println(String(imp)); IPAddress b(255,255,255,255); u.beginPacket(b, 35358); char buf[255]; sprintf(buf, "%lld\n", imp); u.write(buf); u.endPacket(); } }