ESP8266

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

Модератор: immortal

Аватара пользователя
Vovix
Сообщения: 1155
Зарегистрирован: Пн янв 27, 2014 1:43 am
Откуда: г.Ижевск
Благодарил (а): 60 раз
Поблагодарили: 532 раза
Контактная информация:

Re: ESP8266

Сообщение Vovix » Вт фев 17, 2015 11:50 am

MaksMS82 писал(а):
Vovix писал(а): MaksMS82,
что-то я не смог зарегистрироваться, похоже, здесь - http://esp8266.homes-smart.ru/?
Или сначала деньги, "а потом стулья"? :D
Только что проверил - все нормально, регистрация проходит..
Да, спасибо, у меня тоже всё в порядке стало!!!! Комп мой наверно тупил дома!?
Мой -CONNECT-
Windows 7(PHP 7.2) + Raspberry Pi(освещение на 1-Wire) + MP751(управление) + ESP8266(сенсоры) + LAN(сенсоры)
-=: Если вам помогло моё сообщение, нажмите кнопку "Поблагодарить за сообщение автора: Vovix" (кнопка Спасибо) справа! :=-
Skull
Сообщения: 38
Зарегистрирован: Вт фев 17, 2015 1:52 pm
Благодарил (а): 11 раз
Поблагодарили: 0

Re: ESP8266

Сообщение Skull » Вт фев 17, 2015 2:01 pm

Всем доброго времени суток !
Подскажите как подключить ESP к MD, пожалуйста. Тему покурил до последнего сообщения, в ESP указал адрес сервера (у меня он 192.168.1.101), создал сценарий espdata, создал объект ESP8266009f3dad (id), импортировал приложенный в теме файлик, однако поля остаются пустыми.
лог выполнения сценария-
Warning: Illegal string offset 'light' in C:\_majordomo\htdocs\modules\scripts\scripts.class.php(139) : eval()'d code on line 1
Warning: Illegal string offset 'ds' in C:\_majordomo\htdocs\modules\scripts\scripts.class.php(139) : eval()'d code on line 2
Warning: Illegal string offset 'bmpt' in C:\_majordomo\htdocs\modules\scripts\scripts.class.php(139) : eval()'d code on line 3
Warning: Illegal string offset 'bmpp' in C:\_majordomo\htdocs\modules\scripts\scripts.class.php(139) : eval()'d code on line 4
Warning: Illegal string offset 'dhtt1' in C:\_majordomo\htdocs\modules\scripts\scripts.class.php(139) : eval()'d code on line 5
Warning: Illegal string offset 'dhth1' in C:\_majordomo\htdocs\modules\scripts\scripts.class.php(139) : eval()'d code on line 6
Warning: Illegal string offset 'dhtt2' in C:\_majordomo\htdocs\modules\scripts\scripts.class.php(139) : eval()'d code on line 7
Warning: Illegal string offset 'dhth2' in C:\_majordomo\htdocs\modules\scripts\scripts.class.php(139) : eval()'d code on line 8
Warning: Illegal string offset 'idesp' in C:\_majordomo\htdocs\modules\scripts\scripts.class.php(139) : eval()'d code on line 9
Warning: Illegal string offset 'ver' in C:\_majordomo\htdocs\modules\scripts\scripts.class.php(139) : eval()'d code on line 10
Warning: Illegal string offset 'vdd' in C:\_majordomo\htdocs\modules\scripts\scripts.class.php(139) : eval()'d code on line 11
Warning: Illegal string offset 'freemem' in C:\_majordomo\htdocs\modules\scripts\scripts.class.php(139) : eval()'d code on line 12
Изображение
SergeyF
Сообщения: 9
Зарегистрирован: Чт фев 27, 2014 4:21 pm
Благодарил (а): 0
Поблагодарили: 5 раз

Re: ESP8266

Сообщение SergeyF » Вт фев 17, 2015 2:58 pm

У меня вот такой скрипт espdata:

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

$idesp=$params['idesp'];
if (!$idesp) return;
$esp=getObjectsByClass("ESP8266");
foreach($esp as $obj) 
{
    if (gg($obj['TITLE'].".idesp") ==$idesp)
    {
        if (is_array($params)) {
           foreach($params as $k=>$v) {    
            if ($k!="script") {
            sg($obj['TITLE'].".".$k,$v);
               }
           }
         }
    }
}
 
в этом случае имя объекта может быть осмысленным, а идентификатор хранится в свойстве класса idesp.
при любых изменениях передаваемых параметров от ESP все они тут же будут добавлены объекту
За это сообщение автора SergeyF поблагодарили (всего 3):
Skull (Вт фев 17, 2015 3:52 pm) • Jon2015 (Вт фев 17, 2015 8:01 pm) • Amarok (Ср фев 18, 2015 5:53 am)
Рейтинг: 3.49%
Skull
Сообщения: 38
Зарегистрирован: Вт фев 17, 2015 1:52 pm
Благодарил (а): 11 раз
Поблагодарили: 0

Re: ESP8266

Сообщение Skull » Вт фев 17, 2015 3:25 pm

ругается на первую строку
Отсюда http://wiki.barxatperm.ru/index.php?title=ESP8266
тоже не помогает- не видно данные.
Jon2015
Сообщения: 28
Зарегистрирован: Чт фев 05, 2015 8:07 pm
Благодарил (а): 9 раз
Поблагодарили: 5 раз

Re: ESP8266

Сообщение Jon2015 » Вт фев 17, 2015 8:12 pm

SergeyF писал(а):У меня вот такой скрипт espdata:

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

$idesp=$params['idesp'];
if (!$idesp) return;
$esp=getObjectsByClass("ESP8266");
foreach($esp as $obj) 
{
    if (gg($obj['TITLE'].".idesp") ==$idesp)
    {
        if (is_array($params)) {
           foreach($params as $k=>$v) {    
            if ($k!="script") {
            sg($obj['TITLE'].".".$k,$v);
               }
           }
         }
    }
}
 
в этом случае имя объекта может быть осмысленным, а идентификатор хранится в свойстве класса idesp.
при любых изменениях передаваемых параметров от ESP все они тут же будут добавлены объекту
Спасибо. Гениальное все просто.
Все переменные прописались в свойствах. И не надо больше просить разработчиков, что они там намутили с переменными.
У меня уже напрашивался вопрос: какие буковки зарезервировали под gpio, А тут на тебе, и все появилось само собой.
Skull
Сообщения: 38
Зарегистрирован: Вт фев 17, 2015 1:52 pm
Благодарил (а): 11 раз
Поблагодарили: 0

Re: ESP8266

Сообщение Skull » Вт фев 17, 2015 9:57 pm

Ребят, может кто расскажет пошагово ?
kostya066
Сообщения: 53
Зарегистрирован: Чт ноя 27, 2014 10:43 am
Благодарил (а): 7 раз
Поблагодарили: 13 раз

Re: ESP8266

Сообщение kostya066 » Вт фев 17, 2015 10:10 pm

Skull писал(а):Ребят, может кто расскажет пошагово ?
Покажи что у тебя в скрипте лежит.
Попробуй положить в скрипт вот это:

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

$idesp=$params['idesp'];
say($idesp);
 
в через 5 минут должно в логах появится ID устройства
За это сообщение автора kostya066 поблагодарил:
Skull (Вт фев 17, 2015 11:44 pm)
Рейтинг: 1.16%
Skull
Сообщения: 38
Зарегистрирован: Вт фев 17, 2015 1:52 pm
Благодарил (а): 11 раз
Поблагодарили: 0

Re: ESP8266

Сообщение Skull » Вт фев 17, 2015 11:44 pm

Да, появилось. Что делать дальше ?
в скрипте лежит что из Вики :
$light=$params['light']; //Данные с датчика BH1750
$ds=$params['ds']; //Данные с датчика DS18B20
$bmpt=$params['bmpt']; //Данные с датчика BMP (температура)
$bmpp=$params['bmpp']; //Данные с датчика BMP (давление)
$dhtt1=$params['dhtt1']; //Данные с первого датчика DHT (температура)
$dhth1=$params['dhth1']; //Данные с первого датчика DHT (влажность)
$dhtt2=$params['dhtt2']; // Данные со второго датчика DHT (температура)
$dhth2=$params['dhth2']; //Данные со второго датчика DHT (влажность)
$idesp=$params['idesp']; //ID устройства
$ver=$params['ver']; //Версия прошивки
$vdd=$params['vdd']; //Напряжение на модуле
$freemem=$params['freemem']; //Объем свободной памяти модуля
Аватара пользователя
Amarok
Сообщения: 1427
Зарегистрирован: Пт дек 14, 2012 12:24 pm
Откуда: Россия, Нижняя Тура
Благодарил (а): 460 раз
Поблагодарили: 126 раз
Контактная информация:

Re: ESP8266

Сообщение Amarok » Ср фев 18, 2015 5:57 am

SergeyF писал(а):У меня вот такой скрипт espdata:
...
в этом случае имя объекта может быть осмысленным, а идентификатор хранится в свойстве класса idesp.
при любых изменениях передаваемых параметров от ESP все они тут же будут добавлены объекту
Можно скрин глянуть?
Моя Алиска живёт на Proxmox в Debian 12
kostya066
Сообщения: 53
Зарегистрирован: Чт ноя 27, 2014 10:43 am
Благодарил (а): 7 раз
Поблагодарили: 13 раз

Re: ESP8266

Сообщение kostya066 » Ср фев 18, 2015 7:42 am

Skull писал(а):Да, появилось. Что делать дальше ?
в скрипте лежит что из Вики :
$light=$params['light']; //Данные с датчика BH1750
$ds=$params['ds']; //Данные с датчика DS18B20
$bmpt=$params['bmpt']; //Данные с датчика BMP (температура)
$bmpp=$params['bmpp']; //Данные с датчика BMP (давление)
$dhtt1=$params['dhtt1']; //Данные с первого датчика DHT (температура)
$dhth1=$params['dhth1']; //Данные с первого датчика DHT (влажность)
$dhtt2=$params['dhtt2']; // Данные со второго датчика DHT (температура)
$dhth2=$params['dhth2']; //Данные со второго датчика DHT (влажность)
$idesp=$params['idesp']; //ID устройства
$ver=$params['ver']; //Версия прошивки
$vdd=$params['vdd']; //Напряжение на модуле
$freemem=$params['freemem']; //Объем свободной памяти модуля
Этот код правильный, но у вас в классе объект называется ID устройство.
отсюда и затык, к выше указанному коду нужно дописать setGlobal(($idesp.".хххх"),$xxxx);
Это будет выглядеть вот так:

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

$light=$params['light'];  //Данные с датчика BH1750
$ds=$params['ds'];        //Данные с датчика DS18B20
$bmpt=$params['bmpt'];  //Данные с датчика BMP (температура)
$bmpp=$params['bmpp'];  //Данные с датчика BMP (давление)
$dhtt1=$params['dhtt1']; //Данные с первого датчика DHT (температура)
$dhth1=$params['dhth1'];  //Данные с первого датчика DHT (влажность)
$dhtt2=$params['dhtt2']; // Данные со второго датчика DHT (температура)
$dhth2=$params['dhth2'];  //Данные со второго датчика DHT (влажность)
$idesp=$params['idesp'];  //ID устройства
$ver=$params['ver'];     //Версия прошивки
$vdd=$params['vdd']; //Напряжение на модуле
$freemem=$params['freemem']; //Объем свободной памяти модуля
setGlobal(($idesp.".light"),$light);
setGlobal(($idesp.".ds"),$ds);
setGlobal(($idesp.".bmpt"),$bmpt);
setGlobal(($idesp.".bmpp"),$bmpp);
setGlobal(($idesp.".dhtt1"),$dhtt1);
setGlobal(($idesp.".dhtt2"),$dhtt2);
setGlobal(($idesp.".dhth1"),$dhth1);
setGlobal(($idesp.".dhth2"),$dhth2);
setGlobal(($idesp.".idesp"),$idesp);
setGlobal(($idesp.".ver"),$ver);
setGlobal(($idesp.".vdd"),$vdd);
setGlobal(($idesp.".freemem"),$freemem);

а попробуйте положить этот код, заодно и проверим как он работает:)

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

$idesp=$params['idesp'];
if (!$idesp) return;
$esp=getObjectsByClass("ESP8266");
foreach($esp as $obj) 
{
    if (gg($obj['TITLE'].".idesp") ==$idesp)
    {
        if (is_array($params)) {
           foreach($params as $k=>$v) {    
            if ($k!="script") {
            sg($obj['TITLE'].".".$k,$v);
               }
           }
         }
    }
}
 
За это сообщение автора kostya066 поблагодарили (всего 2):
Skull (Ср фев 18, 2015 10:26 am) • Varrcan (Пн май 30, 2016 2:00 am)
Рейтинг: 2.33%
Ответить