• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе 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.
 
Сверху Снизу