Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**************************************************************
- * ta procedura nie zatrzymuje programu przy braku sieci wifi
- **************************************************************/
- #define BLYNK_PRINT Serial // Comment this out to disable prints and save space
- #include <ESP8266WiFi.h>
- #include <BlynkSimpleEsp8266.h>
- #include <Timers.h> //
- #include <Ticker.h> //do wachdoga ESP
- char auth[] = "22222222222222222222222222222";
- Timers <4> akcja; // 4 wątki
- WidgetLED led1(V1); // vLED wskażnik połącznia z arduino - miga co 1 sek jeśli jest połączenie
- WidgetLED led5(V5); //vLED wskaznik sucho/mokro
- Ticker tickerOSWatch;
- #define OSWATCH_RESET_TIME 30 //wd w sek
- static unsigned long last_loop;
- void ICACHE_RAM_ATTR osWatch(void) { //watchdog 30 sek
- unsigned long t = millis();
- unsigned long last_run = abs(t - last_loop);
- if(last_run >= (OSWATCH_RESET_TIME * 1000)) {
- // save the hit here to eeprom or to rtc memory if needed
- ESP.restart(); // normal reboot
- //ESP.reset(); // hard reset
- }
- }
- void spij() //procedura deepsleep
- {
- Serial.println("aaa spij");
- delay(100);
- ESP.deepSleep(1 * 60 * 1000 * 1000);
- delay(1000);
- }
- int flaga1s = 0;
- void timer1sek() //coś do zrobienia co 1 sek
- {
- transmitBLYNK(); //procedura wysyłania do serwera BLYNK zamiast BLYNK_Read który działa tylko gdy aplikacja w telefonie jest otwarta
- // sprawdzBLYNK(); //tu nieaktywna bo i tak bedzie reset po wyjciu z uspienia
- miganievLED(); //mruganie ldem w telefonie info ze moduł ESP działa
- miganieLED2(); //miganie ledem na esp w czasie wybudzenia
- analogwe(); //czytanie adc i decyzja co robic dalej
- wdwifi(); // wd gdy nie ma wifi na razie w testach
- flaga1s = 1;
- }
- int czywifi = -1; //czy jest wifi - 0 nie ma
- int czyblynk = -1;
- int run_wd_wifi = 0; //trzeba by zresetować
- void wdwifi(){
- if (czywifi == 0){
- Serial.println("brak wifi ");
- }
- if (czyblynk == 0){
- Serial.println("brak blynk ");
- }
- }
- const int sucho = 700;
- int suchoflaga = 0;
- int analog = 0;
- void analogwe()
- {
- analog = analogRead(A0);
- Serial.println(analog);
- if (sucho < analog){
- Serial.println("sucho");
- if (suchoflaga == 0){
- suchoflaga = 1; //flaga bedzie kasowana po wyjściu z uśpienia
- Blynk.notify("Rusz sie podlac kwiatki");
- led5.on(); //wskaznik sucho
- }
- }
- }
- int LED12 = HIGH;
- void miganieLED2()
- {
- LED12 = !LED12;
- if (LED12 == 0){
- digitalWrite(12, LOW);
- }
- else {
- digitalWrite(12, HIGH);
- }
- }
- int wskrunAr = 0; //vLED miga co sek
- void miganievLED()
- {
- wskrunAr = !wskrunAr ;
- if (wskrunAr == 0){
- led1.off(); //miganie vLED dla kontroli połączenia z UNO
- }
- else {
- led1.on();
- }
- }
- void transmitBLYNK(){ //procedura wysyłania do serwera BLYNK
- wyslij_V12();
- wyslij_V11();
- }
- void wyslij_V12(){
- analog = analogRead(A0);
- float i = analog;
- String str = String(i, 0 ) + " V";
- Blynk.virtualWrite(V12, str);
- }
- void wyslij_V11(){
- analog = analogRead(A0);
- analog = analog + 10;
- Blynk.virtualWrite(V11, analog);
- }
- /*
- BLYNK_READ(V11) //napiecie to musiałem zastąpić bo nie działa offline
- {
- analog = analogRead(A0);
- Blynk.virtualWrite(V11, analog);
- }
- */
- void sprawdzBLYNK() // test połączenia z BLYNK jeśli nie ma - RESET
- {
- bool r = Blynk.connected();
- if (r == 1) { //jeśli jest połączenie to zgaś LED
- digitalWrite(12, HIGH);
- }
- else {
- digitalWrite(12, LOW);
- ESP.restart(); // normal reboot
- }
- }
- bool isFirstConnect = true;
- // This function will run every time Blynk connection is established
- BLYNK_CONNECTED() {
- if (isFirstConnect) {
- Blynk.syncAll(); //ważna procedura - po starcie arduino synchronizuje wszystkiw wirtualne piny ze zmiennymi programu
- isFirstConnect = false;
- }
- }
- void WifiBlynk(){ //logowanie do wifi i blynk nie wstrzymujące wejścia do pętli głównej
- WiFi.begin("xxx","yyyyyyyyyy");
- Blynk.config(auth);
- WiFi.status();
- Blynk.connect();
- }
- void bezwifi(){ // tu w przyszłości procedura obsługi modułu przy braku wifi
- }
- //+++++++++++++++++++++++++++++++++++++= koniec procedur
- void setup()
- {
- pinMode(12, OUTPUT); // dioda sygnalizacyjna pracy pętli 1 sek w przerwaniu
- digitalWrite(12, LOW);
- akcja.attach(0, 1500, timer1sek); // uruchamianie timera 1 sek
- akcja.attach(1, 20000, spij); // usypianie po 20 sek pracy
- Serial.begin(115200);
- //ma byc wachdog
- last_loop = millis();
- tickerOSWatch.attach_ms(((OSWATCH_RESET_TIME / 3) * 1000), osWatch);
- WifiBlynk(); //logowanie do wifi i blynk
- Serial.println("ESP_blynk_sleep_adc_wd_v6"); //kod programu
- wskrunAr = 0; //vLED
- digitalWrite(12, HIGH);
- led5.off(); //wskaznik sucho/mokro off= mokro
- } //SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS koniec setup
- void loop()
- {
- last_loop = millis(); //wd
- akcja.process(); //
- if (WiFi.status() == WL_CONNECTED) { //sprawdzenie czy uruchomiło się wifi
- czywifi = 1;
- if (Blynk.connected() == true) { //sprawdzenie czy jest połączenie z blynk
- czyblynk = 1;
- Blynk.run();
- } else {
- czyblynk = 0;
- // Blynk.connect(5); //kolejna próba połączenia z BLYNK
- Blynk.run();
- }
- } else {
- czywifi = 0;
- bezwifi();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement