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

Re: ESP8266

Добавлено: Чт апр 02, 2015 11:05 am
MaksMS82
Да, интересно конечно, это намного лучше чем ЛУА, хоть ресурсов не так жрет и можно больше функционала запихать в модуль, но все равно не дотягивает до чистого Си по оптимизации кода, т.к. там все равно есть обертка Ардуины.. Но все равно это прогресс.

Проект еще сырой, но думаю быстро это исправится. Вот только кривой SDK тормозит этот процесс...

Не смотря, что это Ардуино ИДЕ, но там много отличий в написании прошивки, например нельзя бездумно тыкать везде delay_ms.

Re: ESP8266

Добавлено: Чт апр 02, 2015 11:11 am
ignat99
https://github.com/pfalcon/esp-open-sdk

А вот этот SDK то же кривой?

Re: ESP8266

Добавлено: Чт апр 02, 2015 11:18 am
MaksMS82
ignat99 писал(а):https://github.com/pfalcon/esp-open-sdk

А вот этот SDK то же кривой?
Это не SDK , а компилятор..

Re: ESP8266

Добавлено: Чт апр 02, 2015 11:24 am
ignat99
http://www.esp8266.com/viewtopic.php?p= ... a33#p11989

Посмотрел, кастрированный olimex сервер esphttpd не потдерживает подключение к роутеру.
А исходный проект сервера из Голландии не собирается стандартным SDK (тот который кривой?).
Выше по ссылке кажется решение, как собрать веб-сервер, но при этом слетают пароли.

Оба не имеют различных библиотек для сенсоров.

Как я написал тут:
http://forum.katera.ru/index.php?/topic ... v-i-iakht/

cуществует 4 варианта решения (один от Адафрут на С++). Если кто то знает готовое решение для сенсоров приведитье тут.

Если Ардвино IDE для ESP будет поддерживать в будущем большинство сенсоров, да ещё UEXT шину, то это очень хорошо.

Re: ESP8266

Добавлено: Чт апр 02, 2015 11:26 am
ignat99
MaksMS82 писал(а): Это не SDK , а компилятор..
Я так и подумал. :-)
/home/vagrant/tmp/esp-open-sdk/crosstool-NG
То есть вот этот субмодуль SDK кривой?


Мне то же надо экономить время-деньги и нужно всё сразу и чтоб памяти 50% оставалось :-) для шифрования и хранения ключей :-)

https://github.com/esp8266/esp8266-wiki/wiki/Memory-Map

00000h 4k boot.bin Bootloader
01000h 64k app.v6.flash1.bin User application, slot 1
11000h 180k app.v6.irom0text1.bin SDK libraries, slot 1
3E000h 8k master_device_key.bin OTA device key
40000h 4k Unused
41000h 64k app.v6.flash1.bin User application, slot 2
51000h 180k app.v6.irom0text1.bin SDK libraries, slot 2
7E000h 8k blank.bin Filled with FFh. May be WiFi configuration.

Re: ESP8266

Добавлено: Чт апр 02, 2015 11:43 am
Jon2015
Я уже писал:http://smartliving.ru/forum/viewtopic.p ... 361#p20361
этот SDK шикарно работает с WiFi. Доработанные библиотеки связанные с низкоуровневым программированием (OneWire, DHT) скачивать там же.
Обычные библиотеки работают нормально (то что я успел проверить).

Re: ESP8266

Добавлено: Пн апр 06, 2015 8:23 am
Goerg
Подскажите пожалуйста, какой код нужно дописать в espdata, чтобы записывать полность весь полученный GET запрос в TXT файл. Необходимо для отладки т.к. время от времени просто не обрабатывает одну переменную и в базу ничего не записывает, хотя в GET запросе она присутствует.
Amarok писал(а):

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

if ($params['idesp']=="") { return; } //Если ID устройства отсутствует, то перестаем отрабатывать сценарий
addClass('ESP8266'); //Создаем класс ESP8266
addClassObject('ESP8266',$params['idesp']); //Создаем в классе ESP8266 объект где в качестве имени 
addClassProperty('ESP8266', 'vdd', 90); //Создаёт свойство класса и указывает, что необходимо хранить историю значений 90 дней
addClassProperty
........
//Распихиваем всё по свойствам. Если полученное значение пустое, то свойство не записываем
if ($params['bmpp']!="") { sg(($params['idesp'].".bmpp"),$params['bmpp']); } //Данные с датчика BMP (давление)
........
sg(($params['idesp'].".idesp"),$params['idesp']);  //    

Re: ESP8266

Добавлено: Пн апр 06, 2015 5:22 pm
sergejey
Goerg писал(а):Подскажите пожалуйста, какой код нужно дописать в espdata, чтобы записывать полность весь полученный GET запрос в TXT файл. Необходимо для отладки т.к. время от времени просто не обрабатывает одну переменную и в базу ничего не записывает, хотя в GET запросе она присутствует.
DebMes("espdata request: ".$_SERVER['REQUEST_URI']);

После этого в XRay во вкладке debug можно смотреть результат.

Re: ESP8266

Добавлено: Пт апр 10, 2015 4:38 pm
Controer
[quote="Amarok"]Что то этот код не работает:

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

addClass('ESP8266'); 
$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);
               }
           }
         }
    }
}
А этот (моё творение) работает:

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

$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("yyyyyyyyyyyyy");
//Распихиваем всё по свойствам. Если полученное значение пустое, то свойство не записываем
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);           }
Внимание, вопрос: как завести первый код? Всё таки он изящнее и короче.[/q
а если только 2 датчика температуры, в сценарии надо только 2 датчика оставить?

Re: ESP8266

Добавлено: Пт апр 10, 2015 10:20 pm
SergeyF
Попробуйте вот такой код:

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

//объект ищем по свойству idesp, так как имя объекта будет осмысленным, 
//а если не нашли - то добавляем с именем равным его айди

$idesp=$params['idesp'];

if (!$idesp) return;
//запишем в лог что пришло
DebMes("espdata request: ".$_SERVER['REQUEST_URI']);
 
$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);
            }
           }
         }
     //объект найден, свойства записаны, выходим
     return;
    }
}

//сюда попадет если нет объекта - создадим его, и запишем только одно свойство - его айди
//на следующем запросе мы попадем в первый цикл и все запишется
addClassObject('ESP8266', $idesp);
sg(($idesp.".idesp"),$idesp);