BLYNK
HOME       📲 GETTING STARTED       📗 DOCS       ❓HELP CENTER       👉 SKETCH BUILDER

Передача данных посредством Bridge

Доброго дня, такая ситуация:
Есть 2 МК esp8266 и esp32 и wi-fi роутер.
Задача отправить данные с датчика освещенности temt6000 который подключен к esp8266 на esp32, который должен эти данные отправить в приложение. Все МК подключенны к одной wi-fi сети, а между собой связаны с помощью blynk Bridge. (Есть другие варианты решения, более простые, но нужно сделать именно так.)
Я прочитал документацию к Bridge, смотрел примеры в интернете, различные варианты кода, но все равно не понимаю как работает эта штука.
Вот код первого МК esp8266 который должен отсылать данные на esp32:

#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>

int analogy = A0;
float light;
int light_value;

char auth[] = "";
char ssid[] = "";
char pass[] = "";

WidgetBridge bridge1(V1);
BlynkTimer timer;

static bool value = true;
void blynkAnotherDevice() 
{
  bridge1.virtualWrite(V5, light); 
   delay (1000);}

BLYNK_CONNECTED() {
  bridge1.setAuthToken(""); 
}

void setup()
{
  pinMode(analogy, INPUT);
  Serial.begin(9600);
  Blynk.begin(auth, ssid, pass);
  timer.setInterval(1000L, blynkAnotherDevice);
}

void loop () { 
  int light_value = analogRead(analogy);
  light = light_value * 0.0976;// расчет процента 
  Serial.println(light);
  delay(1000);
  Blynk.run (); 
  timer.run (); 
}

Я отправляю данные на V5 (исходя из примера), а на втором МК esp32 нужно их обработать и отправить в приложение. Вот код esp32:

#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>

char auth[] = "";
char ssid[] = "";
char pass[] = "";

BlynkTimer timer;

BLYNK_WRITE(V5)
        {
       int pinData = param.asInt(); 
        }
void setup()
{
 Serial.begin(9600);
 Blynk.begin(auth, ssid, pass);
}

void loop()
{
  Blynk.run();
  timer.run();
}

По идее данные должны записываться на виртуальном пине V5 и отправляться в приложение?
Я попробовал разные варианты с BLYNK_READ, пробовал использовать разные виртуальные пины, пробовал дописывать в коде esp32 Blynk.digitalWrite что бы оно отправлялось в приложение, но оно не отправляет именно с esp32.
Если esp32 отключить от сети или вообще не подключать, то показания датчика приходят в приложение с 1-го МК es8266 если на этот пин вирутальный, V5, подключить монитор, но как сделать так чтоб именно esp32 их отправлял. сначала принимал, от 1-го МК, а потом отправлял в приложение.

Pete.

Спасибо за ответ.
Все работает, но…
Я получаю данные в приложении из первого микроконтроллера (esp8266) к которому подключен датчик освещения. Мне необходимо чтоб данные из esp8266 пересылались в esp 32 и далее в приложение.
Я использую виртуальный пин V5. Даже когда esp32 не подключен к сети, я могу видеть данные с датчика в приложении. То есть они сразу доступны из esp8266, а мне необходимо чтоб их в приложение отправлял именно esp32. Может задача настолько глупая, что невыполнима?

The ESP8266 and the ESP32 talk to the Blynk server, not to each other. That’s how Blynk works.

If you want the ESP8266 to send the data to the ESP32 then you should use a different method. Maybe MQTT or ESP-NOW.

Pete.

Понятно, специально не хотелось лезть в дебри MQTT, но раз вариант с Blynk не работает, буду думать другой вариант. Спасибо за ответ! :slight_smile:

I love MQTT.

Pete.

Я что-то не понял в чем проблема. Отправляйте новое значение с esp32 в приложение…?

Мне необходимо что бы только лишь esp32 отправляла данные в приложение, предварительно получив их от esp8266. Сейчас же данные может и доходят до esp32, но их можно прочесть даже тогда когда esp32 не активна (не подключена, без питания и вообще лежит в шкафу без проводов), то есть данные поступают с esp8266, собственно нарушается концепция проекта и вопрос, зачем тогда esp32 если данные идут с esp8266. Вопрос логичный, но надо сделать так, как я описал.