From 398aeacf48c3dd103da55fad2c1d2d3389afd77f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anton=20Luka=20=C5=A0ijanec?= Date: Mon, 10 Oct 2022 11:59:48 +0200 Subject: prvi commit --- .gitignore | 1 + platformio.ini | 12 ++++++++++ src/main.cpp | 75 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 88 insertions(+) create mode 100644 .gitignore create mode 100644 platformio.ini create mode 100644 src/main.cpp diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..03f4a3c --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.pio diff --git a/platformio.ini b/platformio.ini new file mode 100644 index 0000000..5503719 --- /dev/null +++ b/platformio.ini @@ -0,0 +1,12 @@ +; https://docs.platformio.org/page/projectconf.html + +[env:myboard] +platform = espressif8266 +board = nodemcuv2 +monitor_speed = 460800 +upload_speed = 460800 +build_flags = -DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI -DDEBUG_ESP_PORT=Serial -DIP_FORWARD=1 -DMONITOR_SPEED=460800 +framework = arduino +board_build.filesystem = littlefs +board_build.ldscript = eagle.flash.4m2m.ld +src_filter = -<*> + diff --git a/src/main.cpp b/src/main.cpp new file mode 100644 index 0000000..5b0d7f9 --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,75 @@ +#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(); + } +} -- cgit v1.2.3