По железу два NODE MCU, один из которых подключён к Blynk. Можно и второй подключить (так и есть уже, но это для возможности организации обмена данными). Роутер,к которому собственно подключены оба обвиняемых.
Задача обмениваться иногда данными хоть как то. Информации в сети много, и действительно я много нашёл что информации много, но самой информации много не нашёл. Тут пересмотрел много, но тоже не много.
- Пробовал на одном запустить сервер и он запускается, но не хочет подключаться к Blynk.
- Пробовал запустить клон и он запускается, но клон обновляет данные только в облаке (вижу на WEP и АРР). До второго устройства не доходит. Нужно синхронизировать, а для этого нужно знать когда именно, а для этого нужно получить данные от другого устройства а они не доходят.
- Пробовал подменивать токен (если это можно делать), но данные обновляются только на сервере и до второго устройства не доходят, от слова “совсем”.
char auth[] = BLYNK_AUTH_TOKEN;
char auth2[] = BLYNK_AUTH_TOKEN2;
void setup(){
Blynk.begin(auth, ssid, pass);
}
void loop(){
// тут естественно Blynk.run();
//*********************
Blynk.begin(auth2, ssid, pass);
Blynk.virtualWrite(V16, data); // send to device #2
Blynk.begin(auth, ssid, pass);
//*********************
}
- Пытался разобраться как устроен Blynk local server, но тут я пас. К тому же ещё какой то девайс нужен. Не вариант.
- Попробовал Blynk Bridge, но что то пошло не так и вообще ничего никуда не летит, даже на сервер. Может что с кодом не дописываю?
Вообще по мосту, на сколько я понял, Slave устройство по коду не отличается. В виртуальный пин прилетают изменения, а откуда именно какая вообще разница. С сервера. Тем не мение код первого, принимающего (ну или второго короче Slave).
#define BLYNK_AUTH_TOKEN "Slave_TOKEN"
char auth[] = BLYNK_AUTH_TOKEN;
void setup(){
Blynk.begin(auth, ssid, pass);
}
void loop(){
Blynk.run();
BLYNK_WRITE(V16){ // Принимаем, обрабатываем, радуемся жизни, благодарим создателей Blynk
bitWrite(valv, 0, param.asInt());
}
}
Код отправляемого устройства:
char auth[] = BLYNK_AUTH_TOKEN;
char auth2[] = BLYNK_AUTH_TOKEN2;
WidgetBridge bridge1(V25); // первые 25 заняты. 25-й на сервере не трогаем больше
BLYNK_CONNECTED() {
bridge1.setAuthToken(auth2); // Устройство Slave
}
void setup(){
Blynk.begin(auth, ssid, pass);
}
void loop(){
Blynk.run();
if(val){
bridge1.virtualWrite(V16, data); // Должно отправлять на Slave данные на V16
}
}
Хотя если из браузера посылать GET запрос, всё отрабатывает (даже на обеих устройствах если клон или под одним токеном).
В общем нужна помощь.
- В идеале хотелось бы чтоб через роутер у них это получалось чтоб не зависеть от интернет сбоев. (одно как минимум с Blynk)
- Можно и с мостом, но что с ним не так.
- Как работает клон и для чего он нужен вообще не совсем понятно.