Управляем ардуиной через интернет

esa
Offline
Зарегистрирован: 27.06.2015

Да, там пример для подключение по изернету. Вам главное не какое подключение, а как прописать и запустить виджет rtc. В этом примере все для вас есть. Так что разбирайтесь.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

виджет это ведь еще в приложении нужно виджет поставить realTime. ну мало ли зря поставил

esa
Offline
Зарегистрирован: 27.06.2015

Это вырезка из примера, который вам дал Дмитрий

Из примера ваши строки сл.

41-43,49,51,54-71,81,88,94

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

да именно так и сделал уже, вроде. но выдает неправильную дату

Current time: 0:22:38 1 1 1970

вот код

#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <SimpleTimer.h>
#include <TimeLib.h>
#include <WidgetRTC.h>

// Параметры аутентификации для ESP8266
char auth[] = "==="; // стер данные
char ssid[] = "==="; // Имя сети
char pass[] = "==="; // Пароль

SimpleTimer timer;

WidgetRTC rtc;

// Digital clock display of the time
void clockDisplay(){
  String currentTime = String(hour()) + ":" + minute() + ":" + second();
  String currentDate = String(day()) + " " + month() + " " + year();
  Serial.print("Current time: ");
  Serial.print(currentTime);
  Serial.print(" ");
  Serial.print(currentDate);
  Serial.println();

  Blynk.virtualWrite(V1, currentTime);
  Blynk.virtualWrite(V2, currentDate);
}

void setup(){
  Serial.begin(9600); // See the connection status in Serial Monitor
  Blynk.begin(auth, ssid, pass);

  rtc.begin();
  timer.setInterval(10000L, clockDisplay);
}

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

 

esa
Offline
Зарегистрирован: 27.06.2015

У меня была такая сетуация (телефон на андройде). Во-первых обновите ПО на телефоне и библиотеку до краней версии, во-вторых обновление времени происходит не всегда сразу, я ждал до 5 минут.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

библиотеки обновления не показывает. а вот приложение обновилось, андройд. но возможно позже чем я проверял

а вообще я минут 30 наверно ждал, когда писал пост уже почти 23 минуты было

russo
Offline
Зарегистрирован: 20.11.2014

А вы виджет добавили RTC (изображение часов) и указали часовой пояс?

И дописать надо

BLYNK_ATTACH_WIDGET(rtc, V9);

у меня он V9

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

да конечно. а эта строка была и без нее. выбрать номер виртуального пина в виджете на телефоне не предлагается, только пояс можно настроить. добавлю я эту строку, а какой пин писать не понял

esa
Offline
Зарегистрирован: 27.06.2015

russo пишет:

И дописать надо

BLYNK_ATTACH_WIDGET(rtc, V9);

Этого делать не надо в крайне версии библиотеке. Они ушли от виртуального пина на РТС

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

то есть просто

BLYNK_ATTACH_WIDGET(rtc);

?

esa
Offline
Зарегистрирован: 27.06.2015

Вообще без этой команды.

Дмитрий несколькими постами выше дал ссылку на пример с РТС

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

блин. ну тогда значит у меня неправильно работает. 1970 год и т.д. ладно ds2331прикручу

doom369
Offline
Зарегистрирован: 13.05.2015

Какая версия библиотеки у Вас?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

0.4.3.

приложение вчера обновилось

код тут

doom369
Offline
Зарегистрирован: 13.05.2015

Нужно 0.4.4 мы как раз по РТС делали изменения в последней версии.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

специально проверил в менеджере библиотек последняя 0.4.3

спасибо. скачаю вручную

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

не помогло. может в коде что то неверно?

 

doom369
Offline
Зарегистрирован: 13.05.2015

Вроде все правильно. Включитие дебаг и подождите 5 мин. Какой рещультат? Либы правильно скопировали? Удалили и распаковали заново? В проектк виджет есть?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

5 мин ждал, даже 10. результат тот же 1970 год и отсчет времени с нуля от заливки кода

либы не удалял. в проекте виджет есть. а через менеджер библиотек когда появится возможность обновить либу?

лучше вручную распаковывать или через меню добавить zip библиотеку?

+ сделал вручную. все что заменял удалил. не помогло

через 5 мин ничего не изменилось

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

doom369 ты ничего не менял на вашем сервере? просто взяло и заработало когда код для слайсера писал

doom369
Offline
Зарегистрирован: 13.05.2015

Нет. Можете поигратся с таймаутами таймера. Наверное причина где-то там. РТс на базе стандартной либы. Там можно менять интервал апдейта времени.

russo
Offline
Зарегистрирован: 20.11.2014

 ГЛЮК

esa
Offline
Зарегистрирован: 27.06.2015

Дмитрий, подскажи какой способ более надежен в связке arduino + esp-12:

1. Esp прошивается прошивкой с AT-командами (вер. 22), на ардуино заливается полный скетч (работа с blynk и управление датчиками).

2. На esp заливается скетч для управлении blynk и прием/отправка данных по rx-tx на arduino. На arduino заливается скетч для приема/отправки данных по rx-tx на esp + управление датчиками

Спасибо.

safari
Offline
Зарегистрирован: 02.02.2015

по моему опыту, использовать arduino (avr) в связке с ESP нужно только в следующих случаях:

1. не хватает физических пинов на ESP, а расширителя пинов по i2c/SPI нет под рукой, зато есть свободная arduino

2. нужны аналоговые порты на 5V (в ESP-шке он чуть ли не на 1V)

3. есть необходимость подключить како-нибудь экран на параллельном интерфейсе (что в общем-то частный случай п 1.

в остальных случаях за глаза хватит возможностей ESP-12. все её порты могут работать с релюшками, диодами и в качестве i2c, SPI, SofwareSerial и толерантны к 5V UART периферийным устройствам. По производительности и ресурсам платы вообще не соизмеримы.

и да, по вашему вопросу правильный ответ 2)

safari
Offline
Зарегистрирован: 02.02.2015

у меня в связках ESP-AVR остались только ESP-01 с прошивками TCP2UART-BRIDGE.

safari
Offline
Зарегистрирован: 02.02.2015

Дмитрий, добрый день.

Подскажите как на втором устройстве прочитать значение виртуального пина (допустим V0) первого устройства.

Оба устройства сидят на одном токене. Первой устройство загружается, как правило, раньше.

Мне нужно на втором устройстве прочитать состояние виртуального пина первого устройства.

BLYNK_WRITE(V0){

  PinState0=param.asInt();
}
вызывается при смене состояния пина и не подходит, т.к. первое устройство не собирается менять состояние своего пина. Значение PinState0 мне как-то надо передать в loop () второго устройства. Нужна какая-то функция с логигой типа VirtualRead(V0);

Возможно ли как-то обратиться к пину как к объекту типа Blynk.pinstate.V0.AsInt вне  BLYNK_WRITE()?

Очень не хочется читать его через REST API.

doom369
Offline
Зарегистрирован: 13.05.2015

Добрый. Есть Blynk.virtualSync(V0). Вроде как раз то что нужно для Вам. на одном пишите в пин на другом из него читаете.

doom369
Offline
Зарегистрирован: 13.05.2015

Blynk.virtualSync(V0) и есть по сути Blynk.pinstate.V0.AsInt.

>>Возможно ли как-то обратиться к пину как к объекту типа Blynk.pinstate.V0.AsInt вне  BLYNK_WRITE()?

Нет. Не понял зачем? Вызываете синк, синк отрабатывает в BLYNK_WRITE там меняете переменную и отдаете в луп.

safari
Offline
Зарегистрирован: 02.02.2015

Да, спасибо, уже успел перечитать маны и с 3-го раза разобрался :)

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

я не могу решить одну проблему. у меня 4 слайсера. их значения считываю и вывожу на дисплей. так то не надо мне это, но обраружил глюк, и куда копать не знаю. короче залил код (раз 20 наверно заливал). так вот сначала значения по нулям и может так прилично стоять и ничего не изменится. все по нулям. хотя значения не нулевые. стоит один подвигать и его значения считаются и выводятся на экран правильно. остальные не трогаешь они так по нулям и остаются как на фото

даже 2 слайсера перевел в другой режим (в настройках), все тоже самое. но сттоит хоть немного сдвинуть и остальные - чтобы значения изменились сразу считывает. тут на фото каждый подвигал и числа появились

может не совсем понятно. пока слайсер не сдвинешь его значения не изменятся, а останется изначальное 0. хотя и при запуске программы (на смарфоне) слайсер уже сдвинут и показывает рядом со слайсером что он не нулевой (как на первом фото 1, 3, 4 слайсеры)

arDubino
Offline
Зарегистрирован: 12.01.2017

это по голове разработчику стукни чтоб кнопку добавил как везде "применить" которая принудительно все обновит и запишет.

сейчас видимо он у вас и реагирует только тогда когда вы пытаетесь изменить параметр дергая его

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

ну да. реагирует только на изменение. если не тронуть так и будет ноль

doom369
Offline
Зарегистрирован: 13.05.2015

иОС, Андроид? Какая версия? локальный сервер или нет?

Слайдеры имеют изначальное значение 0. Не совсем понимаю в чем проблема. Если нужно выставить изначальное значение. То нужно или выставить в ранниг режиме или прислать с железки нужные через Blynk.virtualWrite.

doom369
Offline
Зарегистрирован: 13.05.2015

Если проблема в том, что вы поменяли значение слайдера до того как железка вышла онлайн, то Вы можете вызвать Blynk.virtualSync(V0). И получите самое последнее значение с сервера.

doom369
Offline
Зарегистрирован: 13.05.2015

arDubino пишет:

это по голове разработчику стукни чтоб кнопку добавил как везде "применить" которая принудительно все обновит и запишет.

Это все есть. Так что бить нас не надо :).

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

анройд. ваш сервер. в слайсере регулировка стоит от 1, а не от ноля. там ноля никогда и не должно быть

попробую Blynk.virtualSync(V0) поможет или нет. проблема считывания только после заливки кода в есп. пусть даже такого же. нужно слайсер подвигать и появятся значения. потом работает нормально. за ночь с настройками включить свет в 3 часа ночи, и каждые 2 часа на 2 минуты воды справилась. правда свет не выключился в 6, но это уже моя ошибка в коде

doom369
Offline
Зарегистрирован: 13.05.2015

Ага. Теперь проблему понял. Да, это возможно наша бага. Пофиксим. Спасибо за репорт.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

да не за что. а то я голову сломал

а с чем может быть связано дублирование периодическое сообщения в терминал?

на фото этого нет, но периодически бывает и не так уже редко

doom369
Offline
Зарегистрирован: 13.05.2015

Терминал - Наша бага. Уже пофиксили. Скоро будет апдейт.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

хорошо)

doom369
Offline
Зарегистрирован: 13.05.2015

Слайдеры раюотают правильно. Проверили. Используйте Blynk.virtualSync

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

хорошо

safari
Offline
Зарегистрирован: 02.02.2015

Дмитрий.

Помогите еще разобраться с синхронизайцией двух устройств.

Два девайса (далее 1) и 2)) ESP8266 сидят на одном виджете и привязаны к одному токену:

1) сюда подключены выключатель и реле, которое управляет светом. свет управляется через через виртуальный пин V0

2) сюда подключен голосовой модуль, который распознает команду и передает её на вход ESP-шки. далее ESP 
считывает состояние V0, и пишет Blynk.virtualWrite(V0, LOW) или HIGH, в зависимости от состояния V0;    

При этом, 1)  модуль отрабатывает, как надо, управляет светом, реагирует на команды кнопки виджета, если нажимать на самом виджете. Вся логика включения/выключения реле света прописана в BLYNK_WRITE(V0)

2) модуль корректно шлёт команды серверу, кнопка на виджете меняет состояние как надо, а вот 1) модуль никак не реагирует, свет не включается,не выключается. Раньше все было на REST, работало как надо. Решил вот перевести на родной API, но чёта не догоняю...

Получается, что на девайсе 1)  BLYNK_WRITE(V0) отрабатывается только если я нажал на кнопку виджета на смартфоне пальцем. А если я сотояние этого виджета изменил с девайса 2) через Blynk.virtualWrite(V0, LOW) то девайс 1) об этом ничего не знает. Хотя в доках написано, что  BLYNK_WRITE должен вызываться при каждом Blynk.run() ?

safari
Offline
Зарегистрирован: 02.02.2015

В общем, опытным путем я выяснил, что если состояние Vпина изменилось программно через virtualWrite, то сервер другим девайсам на том же токене это событие не рассылает (рассылает всем, только если ты нажал на кнопку виджета на смартфоне).

v-a-y
Offline
Зарегистрирован: 09.10.2015

Safari, а что за голосовой модуль на esp? Или это отдельная железка на uart?

safari
Offline
Зарегистрирован: 02.02.2015

отдельная на uart

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

doom369 пишет:

Если проблема в том, что вы поменяли значение слайдера до того как железка вышла онлайн, то Вы можете вызвать Blynk.virtualSync(V0). И получите самое последнее значение с сервера.

да помогло. только пишется немного иначе

 

russo
Offline
Зарегистрирован: 20.11.2014

Дмитрий здравствуйте, можете подсказать?

измерение темпиратуры идет от DS18B20 - 3 штуки, подключены к разным пинам. Железка MEGA2560 и W5100

Функция измерения темпиратуры написал сам (для оптимизации кода), там при резете идет задержка 750 миллисекунд. При измерении темпиратуры пропадает связь иногда, где-то через раз. Измерение происходит раз в минуту, на разных промежутках времени для трех датчиков, т.е. за раз сразу три датчика не опрашиваются.

вот код измерения темпиратуры

if(a==52) //прошло 60 секунд - измеряем темпир
  {
    byte data[2];
    ds_2.reset();
    ds_2.write(0xCC);
    ds_2.write(0x44);
    delay(750);
    ds_2.reset();
    ds_2.write(0xCC);
    ds_2.write(0xBE);
    data[0] = ds_2.read();
    data[1] = ds_2.read();
    float Temp_ds_dec = data[0] & 0b00001111;   //выделяем четыре младших бита для дробной части
    int   Temp_ds = (data[1] << 8) + data[0];
    float Temp;
    Temp_ds = Temp_ds >> 4;
    Temp = Temp_ds_dec/16 + Temp_ds;
    Serial.print("obratka_2 = ");
    Serial.println(Temp);
    Blynk.virtualWrite(V19, Temp); //  
  }

Как избавиться от

delay(750); ?

или какую библиотеку лучше использовать для DS18B20 ?

 

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

сам написал этот код, а как пользоваться millis не знаешь?

doom369
Offline
Зарегистрирован: 13.05.2015

@russo Здравствуйте. Я не эксперт по железу, поэтому не могу ответить. Но у нас на форуме есть несколько примеров рабочего кода. Вот например один из топиков с кодом - http://community.blynk.cc/t/ds18b20-measure-value/6986/4 или вот - http://community.blynk.cc/t/solved-ds18b20-high-value-on-blynk-app/3167/17. Взгляните пожайлуйста. Может найдете как воспользвоватся.