Comments 51
По поводу отдельного файла CSS — вы можете его залить во внутреннюю память Esp-шки, а затем считывать стандартным API в ответ на запрос к серверу.
Правда я столкнулся с тем, что при достижении некоторого размера страницы (примерно в 10кб) сервер уходит в даун, модуль — в ребут. Или же еще, как вариант, показывает только часть страницы. С чем связано — не знаю, может кто подскажет (прошивка — не NodeMCU, среда — Arduino IDE)?
Как с этим бороться? Разбивать страницы на меньшие — или есть еще какой-то вариант?
но зачем пытаться сделать из довольно маломощной железочки веб сервер отдающий мегабайты контента?
я бы на вашем месте вообще сделал бы просто сервисы, которые дёргать get\post запросами
например из мобильного приложения
У меня веб сервер на esp отлично переваривает 50-90 кб файлы, правда не под NodeMCU, а через Arduino IDE писал код, используя веб сервер из стандартной библиотеки.
Прошивка NodeMCU хороша только для совсем поиграться. Очень долго мучался, пытаясь получить более-менее стабильно работающий web-сервер, отдающий странички размером больше 1400 байт. В итоге перешёл на esp8266/Arduino — файлы в 80Кб отдаются нормально.
положить css на cdn сервис гугла или амазона и давать на него ссылку. нет сети — нет css, зато быстро и можно пихать мегабайтные css и js
Плохое решение. Предположим, вы на esp подняли вебморду управления чем-либо, и эта страничка тянет скрипты-стили откуда-то — и теперь представьте, что у вас мобильник, с которого вы пытаетесь что-то конфигурить, а сеть ловит плохо.
Можно подключить локальные стили через плагин к browser-у типа Stylish.
https://addons.mozilla.org/en-US/android/addon/stylish/?src=hp-dl-featured
https://addons.mozilla.org/en-US/firefox/addon/stylish/
Bra ON — Bra OFF

(оффтопик) bra по-английски означает не совсем то, что вы думаете. Это означает «бюстгалтер».

а мне нравится. лифчик ОН. лифчик ОФФ. хотя я бы оставил только лифчик ОФФ :))
Спасибо за статью. Мне подарили такую штуковину, я всё не знал как к ней подойти, теперь настало время встряхнуть с неё пыль)
Вы знаете, в случае с реле Блинк мне не нравится тем, что нет интернета — нет сервиса. Да, им очень легко пользоваться, его интерфейс приятен глазу и в интернете масса инструкций, но я стремлюсь чтобы мой умный дом не зависел от интернета. Сейчас разбираюсь с openwrt (lighttpd c sqlite3 уже запустились) чтобы временно (пока не дойдет до выделения отдельного железа под сервер) разместить там небольшую базу для ведения логов (температуры, влажности) и панель управления тем же «Bra». Кстати, если кто-то ткнет носом в аналогичный материал, буду признателен.
Увы, малины нету и не уверен что будет. Чую, что всё равно приду к отдельному серверу, на который всё и повесится. Так что пока тренируюсь на том что есть. Тем более, не так давно перепал вот такой интересный роутер: http://www.gl-inet.com/gl-inet6416/ — на нём и тренируюсь.
Интересно, про роутер. Оформите впечатления и опыт в виде поста!
Я тоже заглядываюсь с некоторых пор на GL-MT300A
Если что-то более-менее определенное с ним получится — обязательно поделюсь. А роутер и правда интересен. Плюс этой мой первый опыт работы с OpenWRT. Ранее не попадался подходящий испытуемый. А у этого даже GPIO выходы есть, который можно задействовать и UART уже присутсвует. В общем подходящая штучка для экспериментов.
Можете попробавать Orange Pi, правда там прошивку допиливать надо, но зато всего 14 USD. Она на Али производителем продается.
Как вариант можно в дальнейшем попробовать ещё и LinkIt Smart 7688. А по поводу Gl-Inet тоже хотел бы увидеть статью.
Всё, намек понял, статья «с чего начать с Gl-Inet» будет :). Реверс-инженеринга не ждите, но как его перепрошивать (после пятнадцати-то раз) точно расскажу.
Что делать с такой поделкой, если пропадет интернет? Облака это конечно хорошо, но показывать температуру дома, храня данные где-то у черта на рогах, а не том же на домашнем малиновом сервере, который будет работать всегда…
Есть локальный сервер. Его мона даже на малине поднять. 2 строки https://github.com/blynkkk/blynk-server#getting-started
На этой плате отдельно выведены три контакты для прошивки: TX, RX, GND. Так вот оказалось, что TX разведен на RX самой ESP-12, соответственно RX — на TX.

Просидел целый день с этой платой, прежде чем догадался прозвонить пины и выходы — грешил на софт. Самое обидное, что есть платы такого же вида, но с правильным обозначением выводов, поэтому проблема не гуглилась толком.
Кстати, у вас все цвета в RGB диоде работают? У меня почему-то красного нет.
При прозвоне тоже не было красного, но когда подключился китайским приложением — «полное RGB» было
А я взял Sonoff и перепрошил в Blynk.
Итого: клацаю релюхой, мигаю светодиодом, вижу температуру и давление:

Упс, влажность конечно, а не давление. Подключил что было под рукой — датчик DHT11
Это мои первые опыты с ESP8266 и Blynk поэтому может быть все не так правильно. Виртуальные пины нужны для программы на андроиде.
Светодиод пришлось инвертировать, потому что включением кнопки он выключался и наоборот.

прошивка
#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>

#include <DHT.h>
#include <DHT_U.h>
#include <Adafruit_Sensor.h>

#define DHTPIN 14  // 14 пин датчика температуры
#define DHTTYPE DHT11

DHT_Unified dht(DHTPIN, DHTTYPE);

#define VPIN_TEMP V1
#define VPIN_HUMIDITY V2
#define VPIN_INVERTLED V3
#define VPIN_UPTIME V5

// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "93c17d62c32647c9a8a5cab5c3c98783";

void setup()
{
  Serial.begin(9600);
  Blynk.begin(auth, "SSID", "password");// wifi ssid and password
  pinMode(13, OUTPUT);  // 13 пин светодиода
  digitalWrite(13, HIGH);
  Blynk.virtualWrite(VPIN_INVERTLED, 1);
  dht.begin();
}

BLYNK_READ(VPIN_TEMP)
{
  // This command writes DHT11 Temperature to Virtual Pin (1)
  sensors_event_t event;
  dht.temperature().getEvent(&event);
  if (!isnan(event.temperature)) {
    Blynk.virtualWrite(VPIN_TEMP, event.temperature-1);
  }
}

BLYNK_READ(VPIN_HUMIDITY)
{
  // This command writes DHT11 Temperature to Virtual Pin (1)
  sensors_event_t event;
  dht.humidity().getEvent(&event);
  if (!isnan(event.relative_humidity)) {
    Blynk.virtualWrite(VPIN_HUMIDITY, event.relative_humidity);
  }
}

BLYNK_READ(VPIN_UPTIME)
{
  // This command writes ESP8266's uptime in seconds to Virtual Pin (5)
  Blynk.virtualWrite(VPIN_UPTIME, millis() / 1000);
}

BLYNK_WRITE(VPIN_INVERTLED)
{
  if (param.asInt() == 0) 
  {
    digitalWrite(13, HIGH);
  } 
else
  {
    digitalWrite(13, LOW);
  }
}

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

Кстати, у меня с реле так же было: Чтобы выключить — нужно пин «выставить» в HIGH

if(_GET.pin == "ON1")then
              gpio.write(led1, gpio.LOW);
        elseif(_GET.pin == "OFF1")then
              gpio.write(led1, gpio.HIGH);
Звучит здорово! А перепрошивка осуществляется без больших плясок с бубном?
Вот статья как подпаять гребенку, подключить датчик, как шить.
Blynk я прошиваю из arduino-среды по инструкции с офф.сайта.
Я без проблем прошиваюсь через arduino uno, так как переходник USB to TTL никак не куплю.
У меня такой на руках. С ним неудобство в том, что при подключении к компьютеру гребёнка оказывается закрыта. Т.е. или датчики паять, или гребёнку заменить на нижней плате чтоб сквозная была. А так отличны модуль для помигать rgb-диодом, понажимать кнопочку и посветить фонариком из коробки.
Вопрос автору: Вы пробовали сделать сбор данных с датчиков на ESP8622 и последующе отправкой на собственный сайт (Joomla!) на стороннем хостинге(зная все айпи и имея средства отображения на самом сайте)?
Я только изучаю эту тему. Для начала хочется отправки на локальный сервер, то что на openwrt. Уверен, что если заработает локально, то и удаленно проблем не должно быть.
Я не автор но у меня ESP-12 показывает графики на олед экране, управляет вентилятором на 220 и отсылает данные на thingspeak.com
А вот оттуда можно данные на сайт вставлять с помощю ифрейма.
У меня сейчас тестируется ESP8266 c BME280 (температура, влажность, давление) + BH1750 (освещённость) + ADS1115 (напряжение на аккумуляторах). Всё это питается от двух аккумуляторов типа АА, которые заряжаются с помощью солнечной панели на 3,5В, через повышающий DC-DC на MT3608. Данные отправляются на ThingSpeak, которые можно посмотреть по этой ссылке.
Солнечной панели хватает для зарядки акков на темное время суток? Устройство дружит с отрицательными температурами?
Хватает не только на тёмное время суток. Пробовал без солнечной панели — хватило почти на месяц работы (показания отправлялись каждые пять минут, два аккумулятора ENELOOP 1900 мА*ч включенных последовательно), т.е. запас получается очень хороший.
В солнечный день аккмуляторы очень хорошо заряжаются. Ещё уточню один момент — коробка сейчас стоит на окне и направлена на запад, т.е. солнце начинает засвечивать панель во второй половине дня.
С отрицательными температурами должно дружить, т.к. NiMH аккумуляторы нормально работают при отрицательной температуре.
Я делал, прекрасно работает. А в чем там может быть проблема?
С broadlink такую штуку можно подружить? Я имею ввиду их приложение.
Поскольку делать самому и окружение и hard-часть — слишком затратно по времени.
Only those users with full accounts are able to leave comments. Log in, please.