Страница 49 из 121

Re: ESP8266

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


В сценариях поле ESP826600f92343.gpio14 пустое.
Возможно, данные передаются как ON OFF а не в виде цифр, потому не работает. Подскажите пожалуйста, как исправить?
Я использую такой вот код:
SPOILERSPOILER_SHOW
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']); //
и всё нормально работает

Re: ESP8266

Добавлено: Чт янв 21, 2016 1:13 pm
Dragon
Здравствуйте. Подскажите пожалуйста как можно передать показания температурного датчика с класса "ESP8266" > объект "Test" > свойство "Test.dhtt1" в класс "keySensors" > подкласс "TempSensors" > объект "ts_kitchen" > свойство "ts_kitchen.temp". По форуму полазил но то что там есть мне что то не помогло, данные не перенаправляются.

Re: ESP8266

Добавлено: Чт янв 21, 2016 1:21 pm
Jager
Dragon писал(а):Здравствуйте. Подскажите пожалуйста как можно передать показания температурного датчика с класса "ESP8266" > объект "Test" > свойство "Test.dhtt1" в класс "keySensors" > подкласс "TempSensors" > объект "ts_kitchen" > свойство "ts_kitchen.temp". По форуму полазил но то что там есть мне что то не помогло, данные не перенаправляются.
Например так sg('ts_kitchen.temp',gg("Test.dhtt1"));

Re: ESP8266

Добавлено: Чт янв 21, 2016 2:24 pm
kawkay
$today=gg("ESP826600f33d0a.dhtt1");// температура в зале
sg('sensorZal.temp', $today);
$today=gg("ESP826600f33d0a.dsw1");// температура на улице
sg('sensorStreet.temp', $today);

Re: ESP8266

Добавлено: Чт янв 21, 2016 3:10 pm
Dragon
подскажите а где это приписывать

Re: ESP8266

Добавлено: Чт янв 21, 2016 4:53 pm
kawkay
в конце сценария espdata
SPOILERSPOILER_SHOW
$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);

Re: ESP8266

Добавлено: Вс янв 24, 2016 10:03 am
Dragon
Вроде разобрался с привязкой модуля esp8266 к системе. Подключил к модулю кнопку и лампу. Настроил модуль что бы он включал лампу при нажатии железной кнопки на модуле. Также прописал лампу чтобы можно было включать и выключать с экрана можорика. Проблема вот всем: если я включают лампу со страницы то лампа загорается и индикатор на странице меняет состояние на включено если выключаю то тоже все отображается и лампа выключается. Но если я включают лампу с помощью железной кнопки то лампа включается но на странице не отображается что она включилась ,хотя она горит. Подскажите как сделать чтобы отображалось состояние лампы при нажатии железной кнопки на модуле esp8266. Прошивка модуля с homes-smart.ru.

Re: ESP8266

Добавлено: Пн янв 25, 2016 8:20 am
MaksMS82
Модуль отсылает состояние GPIO как другие датчики при событии нажатия KEY- нужно только принять и обработать данный GPIO на стороне мажордомо.

Re: ESP8266

Добавлено: Пн янв 25, 2016 11:10 am
Dragon
А как это сделать.

Re: ESP8266

Добавлено: Пн янв 25, 2016 11:17 am
MaksMS82
Вот это уже не подскажу.. Но думаю так же как датчик принять и установить переменную состояния выключателя.