• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Не передаются оповещения

Homo Faber

New member
Здравствуйте, знатоки!
Имею конфигурацию (или она меня имеет?) Arduino Uno+ESP01S (с адаптером уровней сигналов и питания). На смартфоне неделю назад установил BLYNK, на нём виртуальный светодиод (V1), виртуальная кнопка (V0) и Notifiation. К Arduino присобачена кнопка и 2 светодиода. Кнопкой переключаются цвета виртуального светодиода V1 (красный, жёлтый и зелёный). Виртуальной кнопкой переключаются по очереди светодиоды прикрученные к Arduino.
Теперь о проблеме: прикрученная к Arduino кнопка переключает цвета V1 по каждому нажатию, 4-е нажатие должно послать оповещение. И вот тут и порылась пресловутая собака! Не отсылается оповещение, хоть плачь...
Вот скетч:
Код:
#define BLYNK_PRINT Serial

// Подключение библиотек
#include <BlynkSimpleShieldEsp8266.h>                             // Библиотека для работы с внешним модулем ESP8266 (ESP-01)
#include <SoftwareSerial.h>                                       // Библиотека програмной реализации обмена по UART-протоколу

// 8 - RX, 9 - TX, соответствует обозначениям на адаптере питания и сигналов модуля ESP-01
SoftwareSerial ESP01(9, 8); // RX, TX

char auth[] = "**************";                 // Идентификатор
char ssid[] = "**************";                                       // Точка доступа
char pass[] = "**************";                                         // Пароль

ESP8266 wifi(&ESP01);                                             // Подключаем ESP через SoftwareSerial

WidgetLED led1(V1);

int LED_Cnt=1;                                                    // Объявление переменной счётчика
bool LED_Status=false;                                            // Объявление переменной статуса (состояния)
bool B_Con=false;                                                 // Объявление переменной контроля соединения

#define BLYNK_GREEN     "#00FF00"                                 // Определение цвета ЗЕЛЁНЫЙ
#define BLYNK_YELLOW    "#FFFF00"                                 // Определение цвета ЖЁЛТЫЙ
#define BLYNK_RED       "#FF0000"                                 // Определение цвета КРАСНЫЙ

void setup()
{
  Serial.begin(9600);                                             // Подключаем последовательный порт со скоростью 9600

  delay(10);                                                      // Задержка 10 mS

  ESP01.begin(9600);                                              // Подключаем модуль ESP8266(ESP-01) на заданной скорости

  delay(10);                                                      // Задержка 10 mS

  Blynk.begin(auth, wifi, ssid, pass);                            // Соединяемся с BLYNK

  led1.on();                                                      // Включаем виртуальный светодиод, чтобы видеть цвета
  led1.setColor(BLYNK_RED);                                       // Задаём виртуальному светодиоду красный цвет
 
  pinMode(12,INPUT);                                              // Назначаем 12 порт ввода
  digitalWrite(12,HIGH);                                          // Включаем подтягивающий резистор
  pinMode(10,OUTPUT);                                             // Назначаем 10 порт вывода и...
  digitalWrite(10,LOW);                                           // подаём на него низкий уровень
  pinMode(11,OUTPUT);                                             // Назначаем 11 порт вывода и...
  digitalWrite(11,LOW);                                           // подаём на него низкий уровень
  pinMode(13,OUTPUT);                                             // Назначаем 13 порт вывода и...
  digitalWrite(13,LOW);                                           // подаём на него низкий уровень
}

void loop()
{
      Blynk.run();                                                    // Запуск BLYNK
  if (digitalRead(12)==LOW)                                       // Если на 12 порту низкий уровень (0)
// Изменение цвета виртуальных светодиодов на смартфоне
     {
      LED_Cnt=LED_Cnt+1;                                          // Приращение счётчика
      if (LED_Cnt==1)                                             // Счётчик = 1
         {
          led1.setColor(BLYNK_RED);                               // Задаём цвет КРАСНЫЙ
Serial.println("КРАСНЫЙ");
         }
      if (LED_Cnt==2)                                             // Счётчик = 2
         {
          led1.setColor(BLYNK_YELLOW);                            // Задаём цвет ЖЁЛТЫЙ
Serial.println("ЖЁЛТЫЙ");
         }
      if (LED_Cnt==3)                                             // Счётчик = 3
         {
          led1.setColor(BLYNK_GREEN);                             // Задаём цвет ЗЕЛЁНЫЙ
Serial.println("ЗЕЛЁНЫЙ");
         }
      if (LED_Cnt==4)                                             // Счётчик = 4
         {
          Blynk.notify("ALARM!");                             // Передаём оповещение
Serial.println("ОПОВЕЩЕНИЕ");
          LED_Cnt=0;                                              // Сбрасываем счётчик
         }
     }
     delay(100);                                                  // Задержка для исключения дребезга контактов
}

BLYNK_WRITE(V0)                                                   // Функция, отслеживающая изменение виртуального пина 0
{
  int pinValue = param.asInt();                                   // Переменная текущего состояния виртуального пина
  if (pinValue==1)                                                // Если нажата виртуальная кнопка на смартфоне
// Управление реальными светодиодами
     {
      if (LED_Status)                                             // Если переменная состояния TRUE
         {
          digitalWrite(10,HIGH);                                  // Подаём на выход 10 высокий уровень
          digitalWrite(11,LOW);                                   // Подаём на выход 11 низкий уровень
          LED_Status=false;                                       // Состояние FALSE
         }
      else
         {
          digitalWrite(10,LOW);                                   // Подаём на выход 10 низкий уровень
          digitalWrite(11,HIGH);                                  // Подаём на выход 11 высокий уровень
          LED_Status=true;                                        // Состояние TRUE
         }
     }
}
Светодиоды и кнопки работают, нет проблем, на ESPшке вижу мигание синенького огонька обмена данными, в том числе и при передаче оповещения (попытался выделить строку жирным шрифтом). Оповещение настроено с высоким (HIGH) приоритетом, задан цвет и звук. Но Н И Х Р Е Н А не приходит на смарфтон. Может кто ни будь подсказать в чём моя ошибка?
Честно скажу, с BLYNKом только начал разбираться, вроде неплохая вещь, но понимания всех нюансов пока нет...
 

Homo Faber

New member
Судя по синему светодиоду на ESP, то отсылается (кстати, как это можно проверить?), а вот насчёт включения не совсем понятно. Виджет Notificstion я включил в проект, а как его включить?
 

Homo Faber

New member
Всё, отбой, оповещения заработали. Просто сменил библиотеку, у меня была BETA.
 
Сверху Снизу