ESP8266

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

Модератор: immortal

Руслан
Сообщения: 193
Зарегистрирован: Чт дек 17, 2015 10:08 am
Откуда: Уфа
Благодарил (а): 36 раз
Поблагодарили: 14 раз

Re: ESP8266

Сообщение Руслан » Чт дек 17, 2015 10:37 am

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

$rssi=$params['rssi']; //уровень сигнала
$gpiout0=$params['gpiout0']; //Данные выход GPIO 0
$gpiout1=$params['gpiout1']; //Данные выход GPIO 1
$gpiout2=$params['gpiout2']; //Данные выход GPIO 2
$gpiout3=$params['gpiout3']; //Данные выход GPIO 3
$gpiout4=$params['gpiout4']; //Данные выход GPIO 4
$gpiout5=$params['gpiout5']; //Данные выход GPIO 5
$gpiout12=$params['gpiout12']; //Данные выход GPIO 12
$gpiout13=$params['gpiout13']; //Данные выход GPIO 13
$gpiout14=$params['gpiout14']; //Данные выход GPIO 14
$gpiout15=$params['gpiout15']; //Данные выход GPIO 15
$gpiout16=$params['gpiout16']; //Данные выход GPIO 16
$gpio16=$params['gpio16']; //Данные вход GPIO 16
$gpio0=$params['gpio0']; //Данные вход GPIO 0
$gpio1=$params['gpio1']; //Данные вход GPIO 1
$gpio2=$params['gpio2']; //Данные вход GPIO 2
$gpio3=$params['gpio3']; //Данные вход GPIO 3
$gpio4=$params['gpio4']; //Данные вход GPIO 4
$gpio5=$params['gpio5']; //Данные вход GPIO 5
$gpio12=$params['gpio12']; //Данные GPIO 12
$gpio13=$params['gpio13']; //Данные GPIO 13
$gpio14=$params['gpio14']; //Данные GPIO 14
$gpio15=$params['gpio15']; //Данные GPIO 15
$bmpp=$params['bmpp']; //Данные с датчика BMP (давление)
$bmpt=$params['bmpt']; //Данные с датчика BMP (температура)
$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("yyyyyyyyyyyyy");
//Распихиваем всё по свойствам. Если полученное значение пустое, то свойство не записываем

if ($rssi!="") { sg(($idesp.".rssi"),$rssi); }
if ($gpio0!="") { sg(($idesp.".gpiout0"),$gpiout0); }
if ($gpio1!="") { sg(($idesp.".gpiout1"),$gpiout1); }
if ($gpio2!="") { sg(($idesp.".gpiout2"),$gpiout2); }
if ($gpio3!="") { sg(($idesp.".gpiout3"),$gpiout3); }
if ($gpio4!="") { sg(($idesp.".gpiout4"),$gpiout4); }
if ($gpio12!="") { sg(($idesp.".gpiout12"),$gpiout12); }
if ($gpio13!="") { sg(($idesp.".gpiout13"),$gpiout13); }
if ($gpio14!="") { sg(($idesp.".gpiout14"),$gpiout14); }
if ($gpio15!="") { sg(($idesp.".gpiout15"),$gpiout15); }
if ($gpio16!="") { sg(($idesp.".gpiout16"),$gpiout16); }

if ($gpiout0!="") { sg(($idesp.".gpio0"),$gpio0); }
if ($gpiout1!="") { sg(($idesp.".gpio1"),$gpio1); }
if ($gpiout2!="") { sg(($idesp.".gpio2"),$gpio2); }
if ($gpiout3!="") { sg(($idesp.".gpio3"),$gpio3); }
if ($gpiout4!="") { sg(($idesp.".gpio4"),$gpio4); }
if ($gpiout12!="") { sg(($idesp.".gpio12"),$gpio12); }
if ($gpiout13!="") { sg(($idesp.".gpio13"),$gpio13); }
if ($gpiout14!="") { sg(($idesp.".gpio14"),$gpio14); }
if ($gpiout15!="") { sg(($idesp.".gpio15"),$gpio15); }
if ($gpiout16!="") { sg(($idesp.".gpio16"),$gpio16); }

if ($bmpp!="") { sg(($idesp.".bmpp"),$bmpp); }
if ($bmpt!="") { sg(($idesp.".bmpt"),$bmpt); }

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); }

В сценариях поле ESP826600f92343.gpio14 пустое.
Возможно, данные передаются как ON OFF а не в виде цифр, потому не работает. Подскажите пожалуйста, как исправить?
MaksMS82
Сообщения: 422
Зарегистрирован: Ср сен 05, 2012 7:30 am
Откуда: Киров
Благодарил (а): 0
Поблагодарили: 70 раз
Контактная информация:

Re: ESP8266

Сообщение MaksMS82 » Чт дек 17, 2015 10:43 am

Данные GPIO передаются как 0 или 1
Руслан
Сообщения: 193
Зарегистрирован: Чт дек 17, 2015 10:08 am
Откуда: Уфа
Благодарил (а): 36 раз
Поблагодарили: 14 раз

Re: ESP8266

Сообщение Руслан » Чт дек 17, 2015 5:23 pm

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

Re: ESP8266

Сообщение MaksMS82 » Чт дек 17, 2015 5:27 pm

Gpio в модуле должны быть назначены на вход или выход
Руслан
Сообщения: 193
Зарегистрирован: Чт дек 17, 2015 10:08 am
Откуда: Уфа
Благодарил (а): 36 раз
Поблагодарили: 14 раз

Re: ESP8266

Сообщение Руслан » Чт дек 17, 2015 9:20 pm

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

Re: ESP8266

Сообщение MaksMS82 » Чт дек 17, 2015 9:27 pm

Где-то мажордомо можно вывести сырые данные в консоли - её можно как-то вывести и видеть весь пакет данных с модуля. НО где смотреть не подскажу - не пользуюсь системой этой..

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

Данные будут видны только у гпио назначенных на выход, Когда состояние было изменено и прошла отправка данных с выбранным интервалом. Если нужна немедленная отправка, то необходимо использовать функции прерывания.
Руслан
Сообщения: 193
Зарегистрирован: Чт дек 17, 2015 10:08 am
Откуда: Уфа
Благодарил (а): 36 раз
Поблагодарили: 14 раз

Re: ESP8266

Сообщение Руслан » Пт дек 18, 2015 6:28 am

Вот с этим кодом работает

$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);
}
}
}
}
}
Вложения
Безымянный.jpg
Безымянный.jpg (66.43 КБ) 14197 просмотров
kawkay
Сообщения: 53
Зарегистрирован: Вс апр 19, 2015 6:10 pm
Благодарил (а): 83 раза
Поблагодарили: 13 раз

Re: ESP8266

Сообщение kawkay » Вт дек 22, 2015 9:47 pm

Но ваш код работает только при одной ESP8266 в системе.При наличии нескольких ESP при срабатывании этого кода данные затираются.
Аватара пользователя
slgeo
Сообщения: 551
Зарегистрирован: Чт фев 05, 2015 2:35 pm
Откуда: РнД
Благодарил (а): 139 раз
Поблагодарили: 74 раза

Re: ESP8266

Сообщение slgeo » Ср дек 23, 2015 1:51 pm

очевидно, надо массив объектов создавать
Raspberry Pi2 Model B + NRF24L01 (MySensors) + 1-Wire + Esp8266 (WiFi-IoT)
CONNECT
Руслан
Сообщения: 193
Зарегистрирован: Чт дек 17, 2015 10:08 am
Откуда: Уфа
Благодарил (а): 36 раз
Поблагодарили: 14 раз

Re: ESP8266

Сообщение Руслан » Ср дек 23, 2015 7:22 pm

Нет вы не правы. В объектах у меня видно 3 модуля
Безымянный.png
Безымянный.png (66.34 КБ) 13911 просмотров
,
у каждого свои уникальные свойства
и ничего не затирается ;)
Ответить