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

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

A_D

Active member
Всё это к китайцам. Это их идеология в SDK - скрыть информацию и давать порциями, да всё запутать, чтобы продать тысячу раз добавив по крупице.
В STM32 ещё больше файлов и если там потребуется сделать аналог, то выйдет ешё запутанней или вообще ничего не выйдет при использовании стандартных либ.
ну на удивление.... там это выходит быстрее и проще.... ну это уже разгагольствование, думаю хватит оффтопа.
И проект не имеет вашей цели, а сделан для настройки имеющихся аппаратных кусков через Web и используемые вещи требуют высокой производительности и малого объема кода. Это не Arduino c массой ограничений.
Вам данный проект не годится. Используйте Arduino :)
это я понимаю и он реально подходит лучше других вариантов. А адурино я как то даже не скачивал и не смотрел чего там наворотили под ESP - хватило обычного под AVR, столько нагромождений в библиотеках + убожественная ide с маленькой буквы... не, пожалуй это даже для новичков не годится - лучше уж с чистого С начать обучать в нормальной IDE. :)
 

pvvx

Активный участник сообщества
ну на удивление.... там это выходит быстрее и проще.... ну это уже разгагольствование, думаю хватит оффтопа.
Эт не офтоп. Не видел я там, на STM32, Web сервера :) Что-то не лезет он в стандартные либы :)
это я понимаю и он реально подходит лучше других вариантов. А адурино я как то даже не скачивал и не смотрел чего там наворотили под ESP - хватило обычного под AVR, столько нагромождений в библиотеках + убожественная ide с маленькой буквы... не, пожалуй это даже для новичков не годится - лучше уж с чистого С начать обучать в нормальной IDE. :)
Тогда наверно понятно от куда и почему я использую приставку "свалка". Учтите ещё, что она строилась совместно с выходом глюк за глюком выходящих китайских SDK.
И время перехода на новый SDK у неё одно из первых. Дурино до сих пор не может переползти на SDK 1.4.0.
Да и это прикол - сравнивать работу цельной корпорации с мной одним, не являющимся проф.программистом, по вечерам. :) :) Итоги сотен человеко жизней и мои дцать человеко-часов. :)
Они работают по вашим предлагаемым методам и как итог – у них ничего и не реализовано за многие годы. А раз нет возможности при использовании их либ достичь результата в короткие сроки с малыми затратами - значит метод и принципы у них не верны.
 
Последнее редактирование:

A_D

Active member
Эт не офтоп. Не видел я там, на STM32, Web сервера :) Что-то не лезет он в стандартные либы :)
а тема то была не о web а об обычном uart :) ну а если про web - то к примеру в Keil е не мало фич, которые буквально кликами мыши набираешь необходимую переферию, обвес (типа веб сервера) и от программиста требуется минимум для запуска примера - а дальше вороти как хоч )

Тогда наверно понятно от куда и почему я использую приставку "свалка". Учтите ещё, что она строилась совместно с выходом глюк за глюком выходящих китайских SDK.
И время перехода на новый SDK у неё одно из первых. Дурино до сих пор не может переползти на SDK 1.4.0.
и тем не менее, Ваш вариант наиболее стабильный.

Да и это прикол - сравнивать работу цельной корпорации с мной одним, не являющимся проф.программистом, по вечерам. :) :) Итоги сотен человеко жизней и мои дцать человеко-часов. :)
вот и говорю - что уже оффтоп пошел.. сравнивать разные по маштабам результаты SDK от китай-товарищей и допилки от Вас vs крупных толковых более менее компаний.

Они работают по вашим предлагаемым методам и как итог – у них ничего и не реализовано за многие годы. А раз нет возможности при использовании их либ достичь результата в короткие сроки с малыми затратами - значит метод и принципы у них не верны.
эм, я никаких методов никому не предлагал.
 

pvvx

Активный участник сообщества
а тема то была не о web а об обычном uart :)
UART с управлением через web. Дык часть конфигурации Uart и описана, и остается после отключения TCP2UART.
эм, я никаких методов никому не предлагал.
А про кошмарное структурирование хидеров и либ я выдумал? :)
И я не сомневаюсь, что можно всё описать более структурированно и компактнее, да чтобы и итоговый код был ещё меньше и более производительный. Но вот вы не даете решений как это сделать, а сравниваете с неперспективными методами заимствованными у других. Неперспективными для одиночки, чтобы реализовать что ему требуется.
Для блогов и прочего видео "мигаем светодиодом" arduino явно перспективнее. :p

Ну а что про UART– вам надо описать свою процедуру обработки прерывания Uart и кидать какие-то принятые данные в буфер, как и передачу. Передача по прерываниям пустого fifo буфера UARTвообще проста. Вставлять это в web-свалку не буду, т.к. это дело протоколо-зависимо на 100% под каждый случай и не обобщается.
Готовится только простой modbus rtu. А далее, возможно, если будет желание и реализация типа "панели оператора" с частичными функциями ПЛК но только на web-сервере. По этому использовать структурированные либы и описания я не могу - не позволяют имеющиеся ресурсы у ESP8266...
 
Последнее редактирование:

A_D

Active member
ну я же писал - это не придирка, это просто выражение первых мыслей в слух, как только начинаешь вникать во всё то, что в большей степени китайцами нагорожено.
Блог я к сожалению (или счастью?) не веду, как и видео с моргалками не снимаю
- а что то маломайски серьезное реализовать уже на перспективной адурино как то не видится возможным имхо)
Спасибо большое за ответы выше! без них я бы точно дольше порядком разбирался ;)
 

ghostaz

New member
Здравствуйте. Прочитал первый пост с описанием сервера и его возможностей, есть ли поддержка динамических страниц?
 

codavr

New member
поддержка динамических страниц
некоторые возможности этого есть. ресурсов мало. никаких перлов и php. есть инклуд веб-файлов и вывод переменных сервера.

что-то конкретное можно дописать на си.
 
Последнее редактирование:

ghostaz

New member
То есть CGI поддерживается? Отлично!
Я правильно понимаю что можно на гитхабе взять из папки bin бинарник 0x00000.bin, прошить им чип и сервер будет работать? Или не все так просто?
 

pvvx

Активный участник сообщества
CGI только описанные, без дополнительного скриптового языка. Можно закопировать в диск любой набор веб страниц с java и javascript и он будет работать, как в варианте простейшего Web-сервера на windows...
Набор встроенных скриптовых переменных обеспечивает управление всеми режимами WiFi, UART, GPIO, ADC, переменных modbus и управление другими уже встроенными сервисами...
Поддержка передачи переменных в GET, POST, Куки и Мулти-Дата формате, формирование вывода переменных в XML.
GET, POST, Куки наборы переменных ограничены несколькими килобайтами за раз. Кол-во переменных в Мулти-Дата формате не ограничено (ограничено форматом передачи длины общего сообщения в 32 бита - 4294967296 байт - 4 Гегабайта).
PS: Впишу это в заголовок, чтобы не спрашивали... :) Но там уже всё в одно соо не лезет по ограничению объема...
 
Последнее редактирование:

ghostaz

New member
Если не сложно, опишите как загрузить веб сервер в чип. Модификация кода самого веб сервера мне не нужна, просто хотелось бы поставить сервер и писать странички. Возможно это уже где то описано, я не увидел. Заранее благодарен)
 

pvvx

Активный участник сообщества
Описано в теме TCP2UART. Скачиваете последний архив fullflash_and_webfs_xxx, прошиваете, собираете диск и вливаете в ESP8266 :)
Сейчас попробую туда добавить последний "скомпилленный" бинарник на meSDK1.4.1 для не желающих программировать на СИ...
 
Последнее редактирование:

pvvx

Активный участник сообщества
Кто поможет привести в порядок это https://github.com/pvvx/esp8266web/blob/master/WebVars.xlsx ?
Пока вставлено так:
web135.gif
Простым выводом сохранением из Exel в htm :)
Решил заодно почистить бардак с переменными...
 
Последнее редактирование:

SoftUniq

Member
Либо я туплю либо уже кроме кода не вижу нормального текста, ребят где есть полное описание возможностей данной прошивки?
Почему спрашиваю, мне надо прочитать данные датчика температуры и влажности, как это сделать?
 

pvvx

Активный участник сообщества
Попробовать можно, но что есть привести в порядок? Сделать в виде справки с перекрестными ссылками? Поправить текст?
А я сам не знаю. Но чтобы не было таких вопросов:
Либо я туплю либо уже кроме кода не вижу нормального текста, ребят где есть полное описание возможностей данной прошивки?
@Andy Korg - писатель из меня никудышный. Один печатный лист грамотно составленной технической документации есть рабочий день квалифицированного инженера. А у меня столько времени нет, чтобы нарисовать доки во всех форматах, да и накопившийся объем для описания web-свалки будет составлять сотни страниц...
 

PostLast

Member
pvvx, В проекте интегрирован старый или модифицированный pwm.h не из iot от 1.4.0 Он работоспособен с 1.4.0? Вы планируете интегрировать ШИМ в проект ?
 

pvvx

Активный участник сообщества
Вы планируете интегрировать ШИМ в проект ?
Нет ШИМ на таймере мне не нравится. Слишком низкочастотен и при этом большой джиттер из-за биений внутренней шины доступа к i/o, низкой частоты строба выходов i/o и частых запретов прерываний в китай-части обслуживания WiFi на большое время.
Есть только аппаратный sigma-delta, но с ней тоже не всё корректно - нет четкой документации - чип работает как-то не так (дрожит сигнал).

gpioN_sgs=duty - Подключить вывод GPIOn к sigma-delta 312кГц
gpioN_sgс=1 - Отключить вывод GPIOn от sigma-delta 312кГц
gpio_sgn=duty - Задать новый параметр duty для sigma-delta 312кГц
Где:
duty – параметр duty от 0 до 255. При =128 - выход меандр
N – номер GPIO: 0..15.
Sigma-delta выход назначается на любое кол-во выходов, но внутренний источник сигнала один.

ШИМ ещё можно организовать на выходе сигнала данных I2S, но у него низкий CLK для вывода приличного качества в области звукового диапазона...
В итоге внешний DAC - дешевле и сердитей.
 
Последнее редактирование:

PostLast

Member
pvvx, Спасибо, попробую надо только понять где gpioN_sgs=duty рулить. Но вероятно я этой частотой весь эфир испорчу. Мне надо именно шим с низкой частотой.
пока от кода
Код:
#include "hw/pin_mux_register.h"
#include "driver/pwm.h"

// бла бла бла

#define PWM_0_OUT_IO_MUX PERIPHS_IO_MUX_MTDI_U
#define PWM_0_OUT_IO_NUM 12
#define PWM_0_OUT_IO_FUNC  FUNC_GPIO12

#define PWM_1_OUT_IO_MUX PERIPHS_IO_MUX_MTDO_U
#define PWM_1_OUT_IO_NUM 15
#define PWM_1_OUT_IO_FUNC  FUNC_GPIO15

#define PWM_2_OUT_IO_MUX PERIPHS_IO_MUX_MTCK_U
#define PWM_2_OUT_IO_NUM 13
#define PWM_2_OUT_IO_FUNC  FUNC_GPIO13

uint32 duty = 50;
uint32 io_info[][3] = {    /*{PERIPHS_IO_MUX_MTDI_U,PWM_0_OUT_IO_FUNC,PWM_0_OUT_IO_NUM} ,
                            {PWM_1_OUT_IO_MUX,PWM_1_OUT_IO_FUNC,PWM_1_OUT_IO_NUM},*/
                            {PWM_2_OUT_IO_MUX,PWM_2_OUT_IO_FUNC,PWM_2_OUT_IO_NUM}    };
        LOCAL    void ICACHE_FLASH_ATTR config_PWM(void) {
       pwm_init(100, &duty, 1, io_info);
       pwm_start();
    };


LOCAL void ICACHE_FLASH_ATTR init_done_cb(void)
{
получаю выхлоп транслятора
Код:
c:/Espressif/xtensa-lx106-elf/bin/xtensa-lx106-elf-gcc  -nostartfiles -nodefaultlibs -nostdlib -L../lib -T../ld/eagle.app.v6.ld -Wl,--no-check-sections -u call_user_start -Wl,-static -Wl,-Map -Wl,.output/eagle/image/eagle.app.v6.map -Wl,--start-group -lsdk gdbstub/.output/eagle/lib/libgdbstub.a driver/.output/eagle/lib/libdriver.a web/.output/eagle/lib/libweb.a mdbtcp/.output/eagle/lib/libmdbtcp.a user/.output/eagle/lib/libuser.a -Wl,--end-group -o .output/eagle/image/eagle.app.v6.out
user/.output/eagle/lib/libuser.a(user_main.o): In function `init_done_cb':
user_main.c:(.irom0.text+0x70): undefined reference to `pwm_init'
user_main.c:(.irom0.text+0x74): undefined reference to `pwm_start'
user_main.c:(.irom0.text+0xa7): undefined reference to `pwm_init'
user_main.c:(.irom0.text+0xad): undefined reference to `pwm_start'
collect2.exe: error: ld returned 1 exit status
../Makefile:288: recipe for target '.output/eagle/image/eagle.app.v6.out' failed
mingw32-make[1]: *** [.output/eagle/image/eagle.app.v6.out] Error 1
mingw32-make[1]: Leaving directory 'C:/esp8266web-master/app'
C:/esp8266web-master/Makefile:237: recipe for target '.subdirs' failed
mingw32-make.exe: *** [.subdirs] Error 2
pwm.h 1.4.0 но от вашей сборки естественно с другим pwm_init(100, &duty); выхлоп идентичен.
 
Последнее редактирование:
Сверху Снизу