FAQ ESP8266

Подключение исполнительных устройств, датчиков, контроллеров.

Модератор: immortal

Dimkas
Сообщения: 48
Зарегистрирован: Пн сен 14, 2015 1:55 pm
Благодарил (а): 7 раз
Поблагодарили: 25 раз

FAQ ESP8266

Сообщение Dimkas » Сб мар 12, 2016 3:54 pm

Возьму на себя смелость, создать такую ветку, по модулям ESP. Надеюсь, никто не будет против.

Я конечно не специалист далеко в настройке и программировании majordomo, но те вопросы, которые возникали - успешно решились, благодаря этому форуму.
Но конечно всё не идеально, и найти ответ на вопрос - порой бывает очень сложно. Посему хотелось-бы создать путёвый FAQ вроде как на форуме 4PDA. Безумно удобно там всё происходит, и на каждый девайс, например смартфон - есть шапка, которая постоянно обновляется, и в ней собрано всё самое важное. И главное упорядочено. И не приходится просматривать сотни страниц форума, в поисках нужной инфы.

Итак, по модулям ESP уже сказано и написано сотни статей, но для себя я решил, что ESP это одно из лучших устройств, для умного дома. Функционал и цена - просто космос!

Для начинающих:
О модуляхПоказать
Первоначальные настройки (как запустить)Показать
Первый запуск модуля оказался достаточно непрост, но потом понеслось как по маслу!
Хорошо помогла статья: http://esp8266.ru/esp8266-podkluchenie- ... proshivki/
Очень много инфы, получились у меня некоторые ошибки, но всё позади =)

Как делал я:
ESP12-q ~140 рублей http://ru.aliexpress.com/item/Free-Ship ... 14761.html
Макетная плата ~8 рублей http://ru.aliexpress.com/item/10Pcs-DIY ... 63290.html
Стабилизатор 3.3v (1117-3.3) ~2.7 рубля - http://ru.aliexpress.com/item/10pcs-AMS ... 15272.html
Конденсатор танталовый 10мкф (для стабилизатора) ~6х2шт рублей http://ru.aliexpress.com/item/Free-ship ... 55486.html
Резисторы 10ком ~0,54рубля http://ru.aliexpress.com/item/10Pcs-DIY ... 63290.html
Итого получаем около 166 рублей Карл! 166 рублей, за девайс, который без проблем интегрируется в MajorDomo, и может выполнять десятки разных задач. Функционал такого устройства - порой просто поражает.
Правда ещё придется потратить 100 рублей, за прошивку (если нет желания изобретать велосипед)

По ссылке есть большая статья, но из неё по сути надо только вот эту схему:
Изображение
Проблемка с этой схемой у меня была только одна. Я привык программатор подключать наоборот, rx к tx, а tx к rx. Толи мой программатор с перепутанным обозначением, толи ещё проблема какая имеется, но заработало у меня только при rx-rx, tx-tx
Всё паяем на макетной плате, или травим - если не лень. Также добавляем туда стабилизатор ams1117-3.3 по этой схеме:
Изображение
Правда, я использовал другие конденсаторы, но всё отлично работает.

Вот, что получилось в итоге:
СпойлерПоказать
Можно и плату растравить, но мне как-то лениво. Тем-более, что каждое готовое устройство, в итоге не похоже на друг на друга.
В качестве соединителей, использовал жилы от обычной витой пары. Медные проводки в ней легко паяются, и валяются без дела на каждом углу.
Сам ESP-12 висит на некотором расстоянии от макетной платы, и под ним спрятались 5 резисторов на 10ком.

Изображение
Изображение
ПрошивкаПоказать
В программировании я не силён, посему выбор пал на готовую прошивку. Цена вопроса - 100 рублей за прошивку для одного модуля.
Есть такой замечательный сайт
http://www.wifi-iot.ru/ - конфигуратор прошивок.
По этой ссылке открывается конфигуратор, в котором отмечаем галочками нужный функционал, и сгенерированую прошивку скачиваем и соответственно заливаем в модуль.
Есть бесплатная версия, со вполне неплохим функционалом.
Также здесь можно почитать:
http://homes-smart.ru/index.php/oborudo ... ze-esp8266 - Описание прошивки и некоторых возможностей.

Для прошивки я использую вот такой usb адаптер:
http://media.nn.ru/data/ufiles/2016-03/ ... c04249.JPG
и nodemcu flasher
Программатор проверенный, и рабочий. Покупался достаточно давно. Дрова ставятся автоматом.
В Nodemcu, в разделе "Operation" выбираем Com порт (смотрим в диспетчере устройств). Никаких танцев с AT командами тут ненужно.
Затем в разделе "Config" выбираем загруженный файл прошивки
Не забываем закоротить нулевое gpio на модуле - на землю (это режим прошивки).
В завершении вертаемся в первый раздел "Operation" и жмём Flash.
Модуль прошит и готов к работе. Вынимаем перемычку с gpio0 на gnd, жмём три раза кнопку reset модуль перезагружается, и работает как точка доступа.
Подключаемся к новой точке доступа, и проводим настройки модуля.

Варианты установки (коробки, боксы и т.п.)
Распределительный коробПоказать
Вариант с использованием распределительного короба. Около 30 рублей в магазинах электрики.
В данной реализации стоит два мосфета, для управления яркостью светодиодной ленты на кухне.
Также планируется подключение датчика DHT, модуля реле, и IR светодиода, для управления музыкальным центром:
http://media.nn.ru/data/ufiles/2016-03/ ... c04250.JPG

Железные вопросы, и варианты их реализации
Подключение светодиодной ленты, ШИМ (PWM)Показать
Подключать нагрузки, с управлением по ШИМ можно с помощью мосфет транзистора. Прошивка от HomeSmart поддерживает 3 канала для ШИМ. То-есть можно подключить до трёх устройств.
Принцип подключения такой-же, как и в Arduino. Поэтому нагуглить элементарно:
http://cxem.net/beginner/beginner61.php - подключение RGB ленты к Arduino.
По ссылке выше - нам нужна всего-лишь одна схема:
Изображение
В статье рекомендуют мосфеты: STP16NF06 на алишке цены на них что-то недешевые. от 30 и выше рублей. По даташиту, мощность у них 16 ампер.

А к примеру http://ru.aliexpress.com/item/10pcs-fre ... 79122.html
Стоят уже 15 рублей, и мощность 98 ампер. Будет работать или нет - пока не проверял. Но свои светодиодные ленты, я запустил от мосфета, выпаянного из дохлого БП от компьютера,
там мосфеты около 50 ампер. И успешно работают. Я взял дохлый БП от компа, выпаял оттуда всё, что похоже на транзистор, и начал гуглить даташиты на каждый элемент. И все, где встречается
подобная схема:
Изображение
- должны подойти.

Управление:
В мажордомо создаём слайдербокс, с мин. знач. 0 и макс. знач. 255, с кодом:

Код: Выделить всё

$value= $params['VALUE']; 
$url = getURL("192.168.1.16/pwm?ch=0&set=$value",0);
Где "ch=0" - номер канала от 0 до 2.
Если 255 значений в слайдер боксе лишку, то меняем макс. знач. в слайдербоксе до 10, тогда код будет вот такой:

Код: Выделить всё

$value= $params['VALUE']*25.5; 
$url = getURL("192.168.1.16/pwm?ch=0&set=$value",0);
Можно потестить и без MajorDomo - забить в адресную строку браузера:

Код: Выделить всё

192.168.1.16/pwm?ch=0&set=255
Где "192.168.1.16" - адрес ESP модуля, а "set=255" значение яркости светодиодной ленты, от 0 до 255
Если в конец строки добавить "&flash=1" то заданное значение яркости запишется в энергонезависимую память модуля,
и при перезагрузке модуля - светодиодная лента включится, с ранее установленным значением яркости.
Управление релеПоказать
Самый простейший вариант управление нагрузками, с помощью модуля реле для Arduino.
Бывает массу разных вариантов, от модулей на одно реле, до 16шт на одной плате.
Для более богатых есть твердотельные реле. Они бесшумны.
Вот несколько вариантов:
http://ru.aliexpress.com/item/5V-Two-2- ... .20.9NQp0h
http://ru.aliexpress.com/item/4-channel ... fc26a4129f
http://ru.aliexpress.com/item/5V-DC-1-C ... 93f23a6bee

Подключение к ESP:
Если ESP питается от 5 вольт с использованием стабилизатора 1117-3,3 то очевидно, что на входе 5 вольт, их и подключаем к нашему блоку реле.
Gnd от куда угодно, хоть от Esp хоть от стабилизатора. А входы на реле помечены как in - к gpio esp модуля.

Управлять можно gpio командой вида http://IP_ADRES/gpio?st=1&pin=12 - этим Вы установите на 12 GPIO логическую единицу. Дополнительные команды: &flash=1 - настройка запишется в энергонезависимую память. Просмотреть состояние GPIO можно по адресу http://IP_ADRESS/gpioprint

Интеграция в MajorDomo:
Сценарий espdata полный, с пустыми полямиПоказать
Изображение от пользователя: alekszander
Изображение

Но более продвинутый код, от пользователя: oleglapo, мне понравился больше, есть вроде как всё.
Только почему-то значение температуры от датчика ds18b20 - не ведет историю. Изменил 366 в датчике - на 50, и история появилась.

Код: Выделить всё

if ($params['idesp']=="") { return; } //Если ID устройства отсутствует, то перестаем отрабатывать сценарий
addClass('ESP8266'); //Создаем класс ESP8266
addClassObject('ESP8266',$params['idesp']); //Создаем в классе ESP8266 объект где в качестве имени 
addClassProperty('ESP8266', 'vdd', 366); //Создаёт свойство класса и указывает, что необходимо хранить историю значений 366 дней
addClassProperty('ESP8266', 'bmpp', 366); //Создаёт свойство класса и указывает, что необходимо хранить историю значений 366 дней
addClassProperty('ESP8266', 'bmpt', 366); //Создаёт свойство класса и указывает, что необходимо хранить историю значений 366 дней
addClassProperty('ESP8266', 'dhth1', 366); //Создаёт свойство класса и указывает, что необходимо хранить историю значений 366 дней
addClassProperty('ESP8266', 'dhth2', 366); //Создаёт свойство класса и указывает, что необходимо хранить историю значений 366 дней
addClassProperty('ESP8266', 'dhtt1', 366); //Создаёт свойство класса и указывает, что необходимо хранить историю значений 366 дней
addClassProperty('ESP8266', 'dhtt2', 366); //Создаёт свойство класса и указывает, что необходимо хранить историю значений 366 дней
addClassProperty('ESP8266', 'dsw1', 366); //Создаёт свойство класса и указывает, что необходимо хранить историю значений 366 дней
addClassProperty('ESP8266', 'dsw2', 366); //Создаёт свойство класса и указывает, что необходимо хранить историю значений 366 дней
addClassProperty('ESP8266', 'dsw3', 366); //Создаёт свойство класса и указывает, что необходимо хранить историю значений 366 дней
addClassProperty('ESP8266', 'dsw4', 366); //Создаёт свойство класса и указывает, что необходимо хранить историю значений 366 дней
addClassProperty('ESP8266', 'dsw5', 366); //Создаёт свойство класса и указывает, что необходимо хранить историю значений 366 дней
addClassProperty('ESP8266', 'amt', 366); //Создаёт свойство класса и указывает, что необходимо хранить историю значений 366 дней
addClassProperty('ESP8266', 'amh', 366); //Создаёт свойство класса и указывает, что необходимо хранить историю значений 366 дней
addClassProperty('ESP8266', 'updated', 1); //Создаёт свойство класса и указывает, что необходимо хранить историю значений 1 дней
addClassProperty('ESP8266', 'updatedTime', 1); //Создаёт свойство класса и указывает, что необходимо хранить историю значений 1 дней
addClassProperty('ESP8266', 'alive', 1); //Создаёт свойство класса и указывает, что необходимо хранить историю значений 1 дней
addClassProperty('ESP8266', 'pwm0', 1); //Создаёт свойство класса и указывает, что необходимо хранить историю значений 1 дней
addClassProperty('ESP8266', 'pwm1', 1); //Создаёт свойство класса и указывает, что необходимо хранить историю значений 1 дней
addClassProperty('ESP8266', 'pwm2', 1); //Создаёт свойство класса и указывает, что необходимо хранить историю значений 1 дней
addClassProperty('ESP8266', 'rssi', 1); //уровень сигнала
addClassProperty('ESP8266', 'gpiout0', 1); //Данные выход GPIO 0
addClassProperty('ESP8266', 'gpiout1', 1); //Данные выход GPIO 1
addClassProperty('ESP8266', 'gpiout2', 1); //Данные выход GPIO 2
addClassProperty('ESP8266', 'gpiout3', 1); //Данные выход GPIO 3
addClassProperty('ESP8266', 'gpiout4', 1); //Данные выход GPIO 4
addClassProperty('ESP8266', 'gpiout5', 1); //Данные выход GPIO 5
addClassProperty('ESP8266', 'gpiout12', 1); //Данные выход GPIO 12
addClassProperty('ESP8266', 'gpiout13', 1); //Данные выход GPIO 13
addClassProperty('ESP8266', 'gpiout14', 1); //Данные выход GPIO 14
addClassProperty('ESP8266', 'gpiout15', 1); //Данные выход GPIO 15
addClassProperty('ESP8266', 'gpiout16', 1); //Данные выход GPIO 16
addClassProperty('ESP8266', 'gpio0', 1); //Данные вход GPIO 0
addClassProperty('ESP8266', 'gpio1', 1); //Данные вход GPIO 1
addClassProperty('ESP8266', 'gpio2', 1); //Данные вход GPIO 2
addClassProperty('ESP8266', 'gpio3', 1); //Данные вход GPIO 3
addClassProperty('ESP8266', 'gpio4', 1); //Данные вход GPIO 4
addClassProperty('ESP8266', 'gpio5', 1); //Данные вход GPIO 5
addClassProperty('ESP8266', 'gpio12', 1); //Данные вход GPIO 12
addClassProperty('ESP8266', 'gpio13', 1); //Данные вход GPIO 13
addClassProperty('ESP8266', 'gpio14', 1); //Данные вход GPIO 14
addClassProperty('ESP8266', 'gpio15', 1); //Данные вход GPIO 15
addClassProperty('ESP8266', 'gpio16', 1); //Данные вход GPIO 16

//Распихиваем всё по свойствам. Если полученное значение пустое, то свойство не записываем
if ($params['bmpp']!="") { sg(($params['idesp'].".bmpp"),$params['bmpp']); } //Данные с датчика BMP (давление)
if ($params['bmpt']!="") { sg(($params['idesp'].".bmpt"),$params['bmpt']); } //Данные с датчика BMP (температура)
if ($params['counter']!="") { sg(($params['idesp'].".counter"),$params['counter']); } //Количество импульсов со счетчика
if ($params['dhth1']!="") { sg(($params['idesp'].".dhth1"),$params['dhth1']); } //Данные с первого датчика DHT (влажность)
if ($params['dhth2']!="") { sg(($params['idesp'].".dhth2"),$params['dhth2']); } //Данные со второго датчика DHT (влажность)
if ($params['dhtt1']!="") { sg(($params['idesp'].".dhtt1"),$params['dhtt1']); } //Данные с первого датчика DHT (температура)
if ($params['dhtt2']!="") { sg(($params['idesp'].".dhtt2"),$params['dhtt2']); } //Данные со второго датчика DHT (температура)
if ($params['dsw1']!="") { sg(($params['idesp'].".dsw1"),$params['dsw1']); } //Данные с датчика DS18B20 №1
if ($params['dsw2']!="") { sg(($params['idesp'].".dsw2"),$params['dsw2']); } //Данные с датчика DS18B20 №2
if ($params['dsw3']!="") { sg(($params['idesp'].".dsw3"),$params['dsw3']); } //Данные с датчика DS18B20 №3
if ($params['dsw4']!="") { sg(($params['idesp'].".dsw4"),$params['dsw4']); } //Данные с датчика DS18B20 №4
if ($params['dsw5']!="") { sg(($params['idesp'].".dsw5"),$params['dsw5']); } //Данные с датчика DS18B20 №5
if ($params['freemem']!="") { sg(($params['idesp'].".freemem"),$params['freemem']); } //Объем свободной памяти модуля
if ($params['hostname']!="") { sg(($params['idesp'].".hostname"),$params['hostname']); } //Имя модуля
if ($params['light']!="") { sg(($params['idesp'].".light"),$params['light']); } //Данные с датчика BH1750
if ($params['uptime']!="") { sg(($params['idesp'].".uptime"),$params['uptime']); } //Время непрерывной работы модуля
if ($params['vdd']!="") { sg(($params['idesp'].".vdd"),$params['vdd']); } //Напряжение на модуле
if ($params['ver']!="") { sg(($params['idesp'].".ver"),$params['ver']); } //Версия прошивки
if ($params['amh']!="") { sg(($params['idesp'].".amh"),$params['amh']); } //Данные с датчика AM2321 (влажность)
if ($params['amt']!="") { sg(($params['idesp'].".amt"),$params['amt']); } //Данные с датчика AM2321 (температура)
if ($params['wanip']!="") { sg(($params['idesp'].".wanip"),$params['wanip']); } //IP модуля
if ($params['pwm0']!="") { sg(($params['idesp'].".pwm0"),$params['pwm0']); } //ШИМ
if ($params['pwm1']!="") { sg(($params['idesp'].".pwm1"),$params['pwm1']); } //ШИМ
if ($params['pwm2']!="") { sg(($params['idesp'].".pwm2"),$params['pwm2']); } //ШИМ
if ($params['rssi']!="") { sg(($params['idesp'].".rssi"),$params['rssi']); } //Уровень сигнала
if ($params['gpio0']!="") { sg(($params['idesp'].".gpio0"),$params['gpio0']); } //Данные выход GPIO 0
if ($params['gpio1']!="") { sg(($params['idesp'].".gpio1"),$params['gpio1']); } //Данные выход GPIO 1
if ($params['gpio2']!="") { sg(($params['idesp'].".gpio2"),$params['gpio2']); } //Данные выход GPIO 2
if ($params['gpio3']!="") { sg(($params['idesp'].".gpio3"),$params['gpio3']); } //Данные выход GPIO 3
if ($params['gpio4']!="") { sg(($params['idesp'].".gpio4"),$params['gpio4']); } //Данные выход GPIO 4
if ($params['gpio5']!="") { sg(($params['idesp'].".gpio5"),$params['gpio5']); } //Данные выход GPIO 5
if ($params['gpio12']!="") { sg(($params['idesp'].".gpio12"),$params['gpio12']); } //Данные выход GPIO 12
if ($params['gpio13']!="") { sg(($params['idesp'].".gpio13"),$params['gpio13']); } //Данные выход GPIO 13
if ($params['gpio14']!="") { sg(($params['idesp'].".gpio14"),$params['gpio14']); } //Данные выход GPIO 14
if ($params['gpio15']!="") { sg(($params['idesp'].".gpio15"),$params['gpio15']); } //Данные выход GPIO 15
if ($params['gpio16']!="") { sg(($params['idesp'].".gpio16"),$params['gpio16']); } //Данные выход GPIO 16
if ($params['gpiout0']!="") { sg(($params['idesp'].".gpiout0"),$params['gpiout0']); } //Данные вход GPIO 0
if ($params['gpiout1']!="") { sg(($params['idesp'].".gpiout1"),$params['gpiout1']); } //Данные вход GPIO 1
if ($params['gpiout2']!="") { sg(($params['idesp'].".gpiout2"),$params['gpiout2']); } //Данные вход GPIO 2
if ($params['gpiout3']!="") { sg(($params['idesp'].".gpiout3"),$params['gpiout3']); } //Данные вход GPIO 3
if ($params['gpiout4']!="") { sg(($params['idesp'].".gpiout4"),$params['gpiout4']); } //Данные вход GPIO 4
if ($params['gpiout5']!="") { sg(($params['idesp'].".gpiout5"),$params['gpiout5']); } //Данные вход GPIO 5
if ($params['gpiout12']!="") { sg(($params['idesp'].".gpiout12"),$params['gpiout12']); } //Данные вход GPIO 12
if ($params['gpiout13']!="") { sg(($params['idesp'].".gpiout13"),$params['gpiout13']); } //Данные вход GPIO 13
if ($params['gpiout14']!="") { sg(($params['idesp'].".gpiout14"),$params['gpiout14']); } //Данные вход GPIO 14
if ($params['gpiout15']!="") { sg(($params['idesp'].".gpiout15"),$params['gpiout15']); } //Данные вход GPIO 15
if ($params['gpiout16']!="") { sg(($params['idesp'].".gpiout16"),$params['gpiout16']); } //Данные вход GPIO 16

sg(($params['idesp'].".idesp"),$params['idesp']); //           
А также список всех метрик, от производителя прошивки:
http://www.wifi-iot.ru/?menu=metrics (требуется авторизация)
более короткий код сценария espdataПоказать
Принимает только те параметры, которые передаёт модуль ESP. Без пустых значений.

Код: Выделить всё

$idesp=$params['idesp'];
if (!$idesp) return;
say ($idesp);
addClass('ESP8266');                    //Создаем класс ESP8266
addClassObject('ESP8266',$idesp);     //Создаёт класс заданного имени дочерним от ParentClass
sg ('ESP8266.'.$idesp.".idesp",$idesp);
$esp=getObjectsByClass("ESP8266");
foreach($esp as $obj) 
{
    if (gg($obj['TITLE'].".idesp") ==$idesp) //
    {
        if (is_array($params)) {
         sg ($obj['TITLE'].".LastUpdate",date("H:i",time()));
           foreach($params as $k=>$v) {    
            if ($k!="script") {
            sg($obj['TITLE'].".".$k,$v);
               }
           }
         }
    }
}
Управление gpioПоказать
http://majordomo.smartliving.ru/forum/v ... 638#p31638 - Включатель с изменением состояния
Управление климатомПоказать
http://majordomo.smartliving.ru/forum/v ... 266#p31266 - Настройка термостата (код от Aleks130699, инструкция от Oleglapo)
http://majordomo.smartliving.ru/forum/v ... 267#p31267 - Настройка термостата часть 2 (код от Aleks130699, инструкция от Oleglapo)
Последний раз редактировалось Dimkas Вт мар 22, 2016 9:43 pm, всего редактировалось 27 раз.
За это сообщение автора Dimkas поблагодарили (всего 19):
skysilver (Сб мар 12, 2016 8:43 pm) • slgeo (Сб мар 12, 2016 11:56 pm) • dima1383 (Пн мар 14, 2016 3:13 pm) • Antilox (Пн мар 21, 2016 4:59 pm) • devoff (Пн апр 18, 2016 1:47 pm) • dimens (Ср апр 20, 2016 11:30 pm) • RusikOk (Пн июн 20, 2016 8:23 pm) • Maikl (Вт авг 23, 2016 4:34 pm) • kurs (Чт янв 26, 2017 6:45 pm) • Rage_4er (Пн фев 06, 2017 11:09 am) и ещё 9
Рейтинг: 22.09%
Dimkas
Сообщения: 48
Зарегистрирован: Пн сен 14, 2015 1:55 pm
Благодарил (а): 7 раз
Поблагодарили: 25 раз

Re: FAQ ESP8266

Сообщение Dimkas » Сб мар 12, 2016 3:54 pm

Народ, пишите - не стесняйтесь!
Что убавить, что добавить?
Хочется создать хорошую инструкцию для начинающих, чтоб избавить их от долгих поисков нужной информации.
Я и сам начинающий, и по началу было массу вопросов и непоняток, по самым элементарным вещам. (да и сейчас есть =) )
Последний раз редактировалось Dimkas Вс мар 13, 2016 1:45 am, всего редактировалось 1 раз.
За это сообщение автора Dimkas поблагодарил:
Rage_4er (Пн фев 06, 2017 11:09 am)
Рейтинг: 1.16%
Dimkas
Сообщения: 48
Зарегистрирован: Пн сен 14, 2015 1:55 pm
Благодарил (а): 7 раз
Поблагодарили: 25 раз

Re: FAQ ESP8266

Сообщение Dimkas » Сб мар 12, 2016 3:57 pm

ещё резерв
Dimkas
Сообщения: 48
Зарегистрирован: Пн сен 14, 2015 1:55 pm
Благодарил (а): 7 раз
Поблагодарили: 25 раз

Re: FAQ ESP8266

Сообщение Dimkas » Сб мар 12, 2016 4:01 pm

1214
Dimkas
Сообщения: 48
Зарегистрирован: Пн сен 14, 2015 1:55 pm
Благодарил (а): 7 раз
Поблагодарили: 25 раз

Re: FAQ ESP8266

Сообщение Dimkas » Сб мар 12, 2016 4:01 pm

7874
MaksMS82
Сообщения: 422
Зарегистрирован: Ср сен 05, 2012 7:30 am
Откуда: Киров
Благодарил (а): 0
Поблагодарили: 70 раз
Контактная информация:

Re: FAQ ESP8266 (в разработке)

Сообщение MaksMS82 » Пн мар 14, 2016 9:08 am

Список метрик передаваемые модулем для мажордомо https://wifi-iot.com/?m=wiki&id=24
Последний раз редактировалось MaksMS82 Пт май 13, 2016 10:38 am, всего редактировалось 1 раз.
За это сообщение автора MaksMS82 поблагодарил:
Dimkas (Пн мар 14, 2016 1:07 pm)
Рейтинг: 1.16%
oleglapo
Сообщения: 26
Зарегистрирован: Чт янв 08, 2015 10:05 am
Благодарил (а): 5 раз
Поблагодарили: 10 раз

Re: FAQ ESP8266

Сообщение oleglapo » Пн мар 14, 2016 3:36 pm

Dimkas писал(а):Народ, пишите - не стесняйтесь!
Что убавить, что добавить?
Хочется создать хорошую инструкцию для начинающих, чтоб избавить их от долгих поисков нужной информации.
Я и сам начинающий, и по началу было массу вопросов и непоняток, по самым элементарным вещам. (да и сейчас есть =) )
СпойлерПоказать
espdata

Код: Выделить всё

$idesp=$params['idesp'];
if (!$idesp) return;
say ($idesp);
addClass('ESP8266');                    //Создаем класс ESP8266
addClassObject('ESP8266',$idesp);     //Создаёт класс заданного имени дочерним от ParentClass
sg ('ESP8266.'.$idesp.".idesp",$idesp);
$esp=getObjectsByClass("ESP8266");
foreach($esp as $obj) 
{
    if (gg($obj['TITLE'].".idesp") ==$idesp) //
    {
        if (is_array($params)) {
         sg ($obj['TITLE'].".LastUpdate",date("H:i",time()));
           foreach($params as $k=>$v) {    
            if ($k!="script") {
            sg($obj['TITLE'].".".$k,$v);
               }
           }
         }
    }
}
Руслан оставлял, проверенно работает и короче, нет пустой инфы

ну и настройку термостата от Aleks130699

Код: Выделить всё

$url=('http://esp8266:0000@'.($this->getProperty("ip")).'/configtermo?st='.($this->getProperty("Select")).'&ln='.($this->getProperty("Sensor")).'&rmin='.($this->getProperty("rmin")).'&rmax='.($this->getProperty("rmax")).'&gpio='.($this->getProperty("gpio")));
$this->setProperty('url',$url);
getURL(''.($this->getProperty("url")).'', 0);
getURL('http://esp8266:0000@'.($this->getProperty("ip")).'/configtermo?trn='.($this->getProperty("status")).'&st='.($this->getProperty("Select")).'', 0);
если надо подробные скрины могу выложить
Последний раз редактировалось oleglapo Пн мар 14, 2016 9:08 pm, всего редактировалось 1 раз.
Dimkas
Сообщения: 48
Зарегистрирован: Пн сен 14, 2015 1:55 pm
Благодарил (а): 7 раз
Поблагодарили: 25 раз

Re: FAQ ESP8266

Сообщение Dimkas » Пн мар 14, 2016 3:49 pm

oleglapo писал(а): если надо подробные скрины могу выложить
Спасибо, было-бы неплохо. Ещё по возможности, научите меня делать ссылки непосредственно на сообщение в форуме, это возможно здесь?
oleglapo
Сообщения: 26
Зарегистрирован: Чт янв 08, 2015 10:05 am
Благодарил (а): 5 раз
Поблагодарили: 10 раз

Re: FAQ ESP8266

Сообщение oleglapo » Пн мар 14, 2016 3:56 pm

скрины сейчас сделаю и выложу
Последний раз редактировалось oleglapo Пн мар 14, 2016 5:57 pm, всего редактировалось 2 раза.
За это сообщение автора oleglapo поблагодарил:
Dimkas (Пн мар 14, 2016 4:45 pm)
Рейтинг: 1.16%
oleglapo
Сообщения: 26
Зарегистрирован: Чт янв 08, 2015 10:05 am
Благодарил (а): 5 раз
Поблагодарили: 10 раз

Re: FAQ ESP8266 (в разработке)

Сообщение oleglapo » Пн мар 14, 2016 4:50 pm

Создаём новый класс в объектах
2016-03-14 16-10-29 Скриншот экрана.png
2016-03-14 16-10-29 Скриншот экрана.png (23.83 КБ) 49611 просмотров
2016-03-14 16-13-48 Скриншот экрана.png
2016-03-14 16-13-48 Скриншот экрана.png (19.39 КБ) 49611 просмотров
В свойствах создаём новые свойства
2016-03-14 16-14-15 Скриншот экрана.png
2016-03-14 16-14-15 Скриншот экрана.png (13.26 КБ) 49611 просмотров
Добавляем новый метод
2016-03-14 16-15-07 Скриншот экрана.png
2016-03-14 16-15-07 Скриншот экрана.png (10.27 КБ) 49611 просмотров
2016-03-14 16-15-55 Скриншот экрана.png
2016-03-14 16-15-55 Скриншот экрана.png (28.77 КБ) 49611 просмотров

Код: Выделить всё

$url=('http://esp8266:0000@'.($this->getProperty("ip")).'/configtermo?st='.($this->getProperty("Select")).'&ln='.($this->getProperty("Sensor")).'&rmin='.($this->getProperty("rmin")).'&rmax='.($this->getProperty("rmax")).'&gpio='.($this->getProperty("gpio")));
$this->setProperty('url',$url);
getURL(''.($this->getProperty("url")).'', 0);
getURL('http://esp8266:0000@'.($this->getProperty("ip")).'/configtermo?trn='.($this->getProperty("status")).'&st='.($this->getProperty("Select")).'', 0); 
Добавляем новый объект
2016-03-14 16-36-30 Скриншот экрана (2).png
2016-03-14 16-36-30 Скриншот экрана (2).png (11.97 КБ) 49611 просмотров
2016-03-14 16-17-05 Скриншот экрана.png
2016-03-14 16-17-05 Скриншот экрана.png (23.97 КБ) 49611 просмотров
2016-03-14 16-17-42 Скриншот экрана.png
2016-03-14 16-17-42 Скриншот экрана.png (35.61 КБ) 49611 просмотров
в объектах должно выглядеть так
2016-03-14 16-12-48 Скриншот экрана.png
2016-03-14 16-12-48 Скриншот экрана.png (4.09 КБ) 49611 просмотров
Последний раз редактировалось oleglapo Пн мар 14, 2016 5:10 pm, всего редактировалось 2 раза.
За это сообщение автора oleglapo поблагодарил:
Dimkas (Пн мар 14, 2016 5:20 pm)
Рейтинг: 1.16%
Ответить