ESP8266

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

Модератор: immortal

oleglapo
Сообщения: 26
Зарегистрирован: Чт янв 08, 2015 10:05 am
Благодарил (а): 5 раз
Поблагодарили: 10 раз

Re: ESP8266

Сообщение oleglapo » Ср янв 20, 2016 10:30 am

Руслан писал(а):Привет всем!
Прописываю еср в Мажоре.
Все сделал как здесь http://majordomo.smartliving.ru/forum/v ... 430#p25806
описано. Все работает.
Потом решил добавить еще, чтоб GPIO передавалось. Дописал код


В сценариях поле ESP826600f92343.gpio14 пустое.
Возможно, данные передаются как ON OFF а не в виде цифр, потому не работает. Подскажите пожалуйста, как исправить?
Я использую такой вот код:
СпойлерПоказать
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']); //
и всё нормально работает
За это сообщение автора oleglapo поблагодарили (всего 3):
kawkay (Ср янв 20, 2016 2:04 pm) • Securbond (Пн май 02, 2016 12:10 pm) • ngservis (Ср май 11, 2016 7:50 pm)
Рейтинг: 3.49%
Dragon
Сообщения: 96
Зарегистрирован: Ср авг 27, 2014 6:14 am
Благодарил (а): 36 раз
Поблагодарили: 0

Re: ESP8266

Сообщение Dragon » Чт янв 21, 2016 1:13 pm

Здравствуйте. Подскажите пожалуйста как можно передать показания температурного датчика с класса "ESP8266" > объект "Test" > свойство "Test.dhtt1" в класс "keySensors" > подкласс "TempSensors" > объект "ts_kitchen" > свойство "ts_kitchen.temp". По форуму полазил но то что там есть мне что то не помогло, данные не перенаправляются.
Jager
Сообщения: 708
Зарегистрирован: Сб авг 18, 2012 10:21 am
Благодарил (а): 26 раз
Поблагодарили: 183 раза

Re: ESP8266

Сообщение Jager » Чт янв 21, 2016 1:21 pm

Dragon писал(а):Здравствуйте. Подскажите пожалуйста как можно передать показания температурного датчика с класса "ESP8266" > объект "Test" > свойство "Test.dhtt1" в класс "keySensors" > подкласс "TempSensors" > объект "ts_kitchen" > свойство "ts_kitchen.temp". По форуму полазил но то что там есть мне что то не помогло, данные не перенаправляются.
Например так sg('ts_kitchen.temp',gg("Test.dhtt1"));
За это сообщение автора Jager поблагодарил:
dengi.76 (Ср авг 22, 2018 9:27 pm)
Рейтинг: 1.16%
kawkay
Сообщения: 53
Зарегистрирован: Вс апр 19, 2015 6:10 pm
Благодарил (а): 83 раза
Поблагодарили: 13 раз

Re: ESP8266

Сообщение kawkay » Чт янв 21, 2016 2:24 pm

$today=gg("ESP826600f33d0a.dhtt1");// температура в зале
sg('sensorZal.temp', $today);
$today=gg("ESP826600f33d0a.dsw1");// температура на улице
sg('sensorStreet.temp', $today);
За это сообщение автора kawkay поблагодарил:
Dragon (Пт янв 22, 2016 7:01 am)
Рейтинг: 1.16%
Dragon
Сообщения: 96
Зарегистрирован: Ср авг 27, 2014 6:14 am
Благодарил (а): 36 раз
Поблагодарили: 0

Re: ESP8266

Сообщение Dragon » Чт янв 21, 2016 3:10 pm

подскажите а где это приписывать
kawkay
Сообщения: 53
Зарегистрирован: Вс апр 19, 2015 6:10 pm
Благодарил (а): 83 раза
Поблагодарили: 13 раз

Re: ESP8266

Сообщение kawkay » Чт янв 21, 2016 4:53 pm

в конце сценария espdata
СпойлерПоказать
$bmpp=$params['bmpp']; //Данные с датчика BMP (давление)
$bmpt=$params['bmpt']; //Данные с датчика BMP (температура)
$counter=$params['counter']; //Количество импульсов со счетчика
$dhth1=$params['dhth1']; //Данные с первого датчика DHT (влажность)
$dhth2=$params['dhth2']; //Данные со второго датчика DHT (влажность)
$dhtt1=$params['dhtt1']; //Данные с первого датчика DHT (температура)
$dhtt2=$params['dhtt2']; //Данные со второго датчика DHT (температура)
$dsw1=$params['dsw1']; //Данные с датчика DS18B20 №1
$dsw2=$params['dsw2']; //Данные с датчика DS18B20 №2
$dsw3=$params['dsw3']; //Данные с датчика DS18B20 №3
$dsw4=$params['dsw4']; //Данные с датчика DS18B20 №4
$dsw5=$params['dsw5']; //Данные с датчика DS18B20 №5
$freemem=$params['freemem']; //Объем свободной памяти модуля
$hostname=$params['$hostname']; //Имя модуля
$idesp=$params['idesp']; //ID устройства
$light=$params['light']; //Данные с датчика BH1750
$uptime=$params['uptime']; //Время непрерывной работы модуля
$vdd=$params['vdd']; //Напряжение на модуле
$ver=$params['ver']; //Версия прошивки
if ($idesp=="") { return; } //Если ID устройства отсутствует, то перестаем отрабатывать сценарий
addClass('ESP8266'); //Создаем класс ESP8266
addClassObject('ESP8266',$idesp); //Создаёт класс заданного имени дочерним от ParentClass
//say($idesp,1);
// Распихиваем всё по свойствам. Если полученное значение пустое, то свойство не записываем
if ($bmpp!="") { sg(($idesp.".bmpp"),$bmpp); }
if ($bmpt!="") { sg(($idesp.".bmpt"),$bmpt); }
if ($counter!="") { sg(($idesp.".counter"),$counter); }
if ($dhth1!="") { sg(($idesp.".dhth1"),$dhth1); }
if ($dhth2!="") { sg(($idesp.".dhth2"),$dhth2); }
if ($dhtt1!="") { sg(($idesp.".dhtt1"),$dhtt1); }
if ($dhtt2!="") { sg(($idesp.".dhtt2"),$dhtt2); }
if ($dsw1!="") { sg(($idesp.".dsw1"),$dsw1); }
if ($dsw2!="") { sg(($idesp.".dsw2"),$dsw2); }
if ($dsw3!="") { sg(($idesp.".dsw3"),$dsw3); }
if ($dsw4!="") { sg(($idesp.".dsw4"),$dsw4); }
if ($dsw5!="") { sg(($idesp.".dsw5"),$dsw5); }
if ($freemem!="") { sg(($idesp.".freemem"),$freemem); }
if ($hostname!="") { sg(($idesp.".hostname"),$hostname); }
if ($light!="") { sg(($idesp.".light"),$light); }
if ($uptime!="") { sg(($idesp.".uptime"),$uptime); }
if ($vdd!="") { sg(($idesp.".vdd"),$vdd); }
if ($ver!="") { sg(($idesp.".ver"),$ver); }
$today=gg("ESP826600f33d0a.dhtt1");// температура в зале
sg('sensorZal.temp', $today);
$today=gg("ESP826600f33d0a.dsw1");// температура на улице
sg('sensorStreet.temp', $today);
За это сообщение автора kawkay поблагодарил:
Dragon (Сб янв 23, 2016 9:11 am)
Рейтинг: 1.16%
Dragon
Сообщения: 96
Зарегистрирован: Ср авг 27, 2014 6:14 am
Благодарил (а): 36 раз
Поблагодарили: 0

Re: ESP8266

Сообщение Dragon » Вс янв 24, 2016 10:03 am

Вроде разобрался с привязкой модуля esp8266 к системе. Подключил к модулю кнопку и лампу. Настроил модуль что бы он включал лампу при нажатии железной кнопки на модуле. Также прописал лампу чтобы можно было включать и выключать с экрана можорика. Проблема вот всем: если я включают лампу со страницы то лампа загорается и индикатор на странице меняет состояние на включено если выключаю то тоже все отображается и лампа выключается. Но если я включают лампу с помощью железной кнопки то лампа включается но на странице не отображается что она включилась ,хотя она горит. Подскажите как сделать чтобы отображалось состояние лампы при нажатии железной кнопки на модуле esp8266. Прошивка модуля с homes-smart.ru.
MaksMS82
Сообщения: 422
Зарегистрирован: Ср сен 05, 2012 7:30 am
Откуда: Киров
Благодарил (а): 0
Поблагодарили: 70 раз
Контактная информация:

Re: ESP8266

Сообщение MaksMS82 » Пн янв 25, 2016 8:20 am

Модуль отсылает состояние GPIO как другие датчики при событии нажатия KEY- нужно только принять и обработать данный GPIO на стороне мажордомо.
За это сообщение автора MaksMS82 поблагодарил:
Dragon (Пн янв 25, 2016 11:09 am)
Рейтинг: 1.16%
Dragon
Сообщения: 96
Зарегистрирован: Ср авг 27, 2014 6:14 am
Благодарил (а): 36 раз
Поблагодарили: 0

Re: ESP8266

Сообщение Dragon » Пн янв 25, 2016 11:10 am

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

Re: ESP8266

Сообщение MaksMS82 » Пн янв 25, 2016 11:17 am

Вот это уже не подскажу.. Но думаю так же как датчик принять и установить переменную состояния выключателя.
Ответить