• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Разработка ‘библиотеки’ малого webсервера на esp8266.

pvvx

Активный участник сообщества
10bytes240ms.gif12bytes240ms.gif
Не падает часами, что по 10 байт, что по 12 (240ms) ... :)
Есть завязка не связанная с TCP2UART, а связанная с SDK...
 
Последнее редактирование:

pvvx

Активный участник сообщества
pvvx, а еще проверьте пакетами по 10 байт
не по 8
И со страничкой GPIO
12345678+CRLF = 10 байт
Проблема вроде найдена и связана с повторностью вхождения в некоторые функции китай-SDK. Надо искать эти функции и вешать семафор. Для этого требуется много-много времени. Как и писал - Не приспособлена китай-SDK для мультизадачки и любые RTOS на ней будут глючить...
 
Последнее редактирование:

aloika

Active member
Проблема вроде найдена и связана с повторностью вхождения в некоторые функции китай-SDK.
Ну вот, а то я тут прямо сижу и чувствую, что говорю правду, а мне никто не верит :)
С задержкой поллинга 499 мс работает дольше. А вот если поставить 20 - то довольно быстро валится. С графиком ADC валится, кажется, быстрее чем с графиком Heap.
 
Последнее редактирование:

pvvx

Активный участник сообщества
Ну вот, а то я тут прямо сижу и чувствую, что говорю правду, а мне никто не верит :)
С задержкой поллинга 499 мс работает дольше. А вот если поставить 20 - то довольно быстро валится. С графиком ADC валится, кажется, быстрее чем с графиком Heap.
V0.3.5.gif
Ваша проблема решена, счас номер сменю и качайте новую версию 0.3.5. с git...
Готово.
Всё это время, пока картинки и то-сё тусую, да дописываю соо тут, оно работает, не прерывается....
 
Последнее редактирование:

aloika

Active member
Скачанное с git'a че-то не компилируется:

Код:
00:39:39 **** Build of configuration Default for project Web_Base ****
mingw32-make.exe -f E:/karpesh/ESP8266/esp8266web-master/Makefile all
mingw32-make[1]: Entering directory 'E:/karpesh/ESP8266/esp8266web-master/app'
mingw32-make[2]: Entering directory 'E:/karpesh/ESP8266/esp8266web-master/app/main'
mingw32-make[2]: Leaving directory 'E:/karpesh/ESP8266/esp8266web-master/app/main'
mingw32-make[2]: Entering directory 'E:/karpesh/ESP8266/esp8266web-master/app/phy'
mingw32-make[2]: Leaving directory 'E:/karpesh/ESP8266/esp8266web-master/app/phy'
mingw32-make[2]: *** Не заданы цели и не найден make-файл.  Останов.
../Makefile:154: recipe for target '.subdirs' failed
mingw32-make[1]: *** [.subdirs] Error 2
mingw32-make[1]: Leaving directory 'E:/karpesh/ESP8266/esp8266web-master/app'
E:/karpesh/ESP8266/esp8266web-master/Makefile:154: recipe for target '.subdirs' failed
mingw32-make.exe: *** [.subdirs] Error 2

00:39:41 Build Finished (took 2s.197ms)
 

pvvx

Активный участник сообщества
Расскажите хотя бы в двух словах, в чем там дело-то было?
Эта процедура вызывалась в момент отключенного "кэшировния" flash. Перемещена в IRAM.
+ мелочи, не влияющие на тот баг, например: исправил обработку времени максимального накопления до отправки пакета, т.к. на поставленный вопрос тут, в теме, в чем измеряются показания таймеров ответов ранее не было получено :) Но при этой редакции уже сам вспомнил. :)
Скачанное с git'a че-то не компилируется:
Потерялся файл :) Закинул.
Чего ещё там не хватает? (давно не проверял)
 
Последнее редактирование:

aloika

Active member
1. При нажатии на кнопки в UART модуля должно выдаться соответствующие символы, как это сделать?
2. Как принять данные, которые приходят в UART модуля, куда они отправляются в сети?
Если еще актуально, могу выложить свое решение. На основе последней версии сборки от pvvx. По сути там все также, как у Andy Korg, только компактнее, так как команд реализовано гораздо меньше.
 

sym2305

New member
Если еще актуально, могу выложить свое решение. На основе последней версии сборки от pvvx. По сути там все также, как у Andy Korg, только компактнее, так как команд реализовано гораздо меньше.
Конечно выкладывайте. Любая информация - на вес золота...
 

aloika

Active member
Конечно выкладывайте. Любая информация - на вес золота...
Выкладываю. Мной написан (частично скопипасчен, конечно) только swingbed.c и заголовок к нему swingbed.h.

Изменены (буквально в паре строк) файлы user_main.c, web_int_callbacks.c, web_int_vars.c.

Буду рад, если кому пригодится.
 

Вложения

mcmega

Member
aloika, Спасибо огромное, буду пробовать.
Использую например эту кнопку:
<input type="button" onclick="onSEND_Start()" value="Запустить качание"/>

И к ней идёт скрипт:
function onSEND_Start()
{
newAJAXCommand('gpio.xml?swbd_enable=1');
}

А как послать в UART свои символы при нажатии на кнопку? Я так понимаю нужно в прошивке что то добавлять?
Может есть способ сделать так, чтоб отправляемый код можно было только в Web добавлять?
 
Последнее редактирование:

aloika

Active member
А как послать в UART свои символы при нажатии на кнопку? Я так понимаю нужно в прошивке что то добавлять?
В файле swingbed.c функция set_enable(enable) непосредственно передает символы в UART:

Код:
//===============================================================================
// set_enable(enable) включение/отключение устройства качания
// Формат команды:
//
// A5                                            0
// B2                                            1
// enable - включено/выключено                    2
// checksum 1..2                                3
//-------------------------------------------------------------------------------
void ICACHE_FLASH_ATTR set_enable(uint8 enable)
{

    uart0_put_char(0xA5);
    uart0_put_char(0xB2);
    uart0_put_char(enable);
    uart0_put_char((uint8)(enable+0xB2));
}

А в функции (в том же файле) swbd_web_int_vars(char *cstr, uint32 val) при наличии в html "swbd_enable=значение" вызывается set_enable(val).

Код:
void ICACHE_FLASH_ATTR swbd_web_int_vars(char *cstr, uint32 val)
{
    if(!os_memcmp((void*)cstr, "swbd_", 5)) {
                            cstr += 5;
                            if(!os_memcmp((void*)cstr, "enable", 6)) set_enable(val);
                            else if(!os_memcmp((void*)cstr, "speed", 5)) set_speed(val);
                            else if(!os_memcmp((void*)cstr, "sensivity", 9)) set_sensivity(val);
                            else if(!os_memcmp((void*)cstr, "setting_time", 12)) set_setting_time(val);

                #if DEBUGSOO > 5
                            else os_printf(" - none!\n");
                #endif
                        }
}
Может есть способ сделать так, чтоб отправляемый код можно было только в Web добавлять?
Это уже и так есть на странице samples в оригинальной сборке от pvvx, при заходе на эту страницу в UART отправляется "Hello!"
 
Привет, Pvvx!
Тестирую Version: 0.3.5.
Тест UDP по умолчанию включен ?
UDP_TEST_PORT >1 (1025)
В UART Debug нет сообщения об инициализации UDP...
Порт UDP 192,168,4,1 :1025 молчит.
Что не так делаю?;)
 

pvvx

Активный участник сообщества
Тестирую Version: 0.3.5.
Тест UDP по умолчанию включен ?
UDP_TEST_PORT >1 (1025)
В UART Debug нет сообщения об инициализации UDP...
В UART при инициализации есть (после NetBIOS):
NetBIOS init, name 'AESP8266'
UDP Test port 1025 init... Ok
Disk init: 56 files, addr = 0x0000a000

TestUDP1025.gif
Порт UDP 192,168,4,1 :1025 молчит.
Что не так делаю?;)
Не тот номер IP у запрашивающего порта. Если включились к AP ESP8266, то запрашивающий должен находиться в той-же сети (IP+маска).
Или действуйте так:
TestUDP1025bc.gif
Все зависит от "роуминга" пакетов в компе, местной сети (если внешний роутер и через него) и т.д...
 
Последнее редактирование:

aloika

Active member
pvvx, я извиняюсь за назойливость, а websocket'ы так до конца и не реализованы в текущей версии? Так-то я вижу, что по тексту много про это написано, но явно чего-то нет и все это дело выключено. Вот если бы все это до ума довести и хотя бы один рабочий примерчик - вот было бы здорово :rolleyes:
 

pvvx

Активный участник сообщества
pvvx, я извиняюсь за назойливость, а websocket'ы так до конца и не реализованы в текущей версии? Так-то я вижу, что по тексту много про это написано, но явно чего-то нет и все это дело выключено. Вот если бы все это до ума довести и хотя бы один рабочий примерчик - вот было бы здорово :rolleyes:
Пока не доделано, т.к. для второй части требуется выбор уже специфичного протокола. Их много... и все основные работают на UTF-8 и типа.
 

mcmega

Member
aloika, т.е. в исходнике менять ничего не надо?
А как тогда всё это прописать правильно?
Создаю кнопку на странице:
<input type="button" onclick="onSEND_Cmd()" value="Cmd"/>

В скрипте пишу:
function onSEND_Cmd()
{newAJAXCommand('gpio.xml?swbd_enable=СВОИ СИМВОЛЫ');}

Или как нужно сделать правильно?
 
Последнее редактирование:
Сверху Снизу