• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

EspLua вместо NodeMCU

"Прикололся" ;)
pesp_conn->proto.udp->local_port =port+1;//espconn_port();
работает, но это заплатка к Lua :eek:!
 
Последнее редактирование:

pvvx

Активный участник сообщества
"Прикололся" ;)
pesp_conn->proto.udp->local_port =port+1;//espconn_port();
работает, но это заплатка к Lua :eek:!
Специально для вас:
поставьте тут https://github.com/pvvx/EspLua/blob/master/app/modules/net.c#L787
#if 1
И страслируйте. Выйдет это:
Код:
cu=net.createConnection(net.UDP)
cu:connect(1001,"192.168.4.2",1001)
cu:send("Привет")
И так тоже: cu:connect(1001,"192.168.4.2"), но тогда запрос со случайным портом, как и было.
Код:
Receive from 192.168.4.1 : 1001Ўї:
Привет
Receive from 192.168.4.1 : 41460Ўї:
Привет
Receive from 192.168.4.1 : 1001Ўї:
Привет
PS: А спамовщик jcmvbkbc куда делся? Врубился что-ли что опять насрал и сбежал?
 
Специально для вас:
Привет Pvvx!
Спасибо, работает.
до корректировок пробовал: cu:connect(portD,"192.168.0.109",portL)
Lua не обнаруживал ошибку, но portL не устанавливался.
Китайцы заложили переменную и забыли наверное.
Или пиши в стек сколько хочешь переменных...

Вот тут опечатка наверное, или я не "догоняю":
if(lport) pesp_conn->proto.tcp->local_port = lport;
сразу заменил на "udp".

Может китайцы и эти команды забыли?
channel=13
wifi.ap.channel(channel) -ругается.:(
или
wifi.setmode(2,PHY_MODE_11N, channel) -Lua проглотил...;)
Все равно сидит PHY_MODE_11B и на 6 канале.
Как канал хотя бы сменить?;)
Вот вот код:
Код:
wifi.setphymode(3)
print("Ch="..wifi.getchannel())
print("Phy="..wifi.getphymode())

Выдает:
Ch=6
Phy=3
>
но только выдает 6 канал
и соединение 54мб
 
Последнее редактирование:

nikolz

Well-known member
Но с текущими исправлениями она работает, только очень медленно, т.к. не рассчитана на размеры диска более 100 кило. См. описание автора https://github.com/pellepl/spiffs:
"* ОСОБЕННОСТИ:
Spiffs предназначена для небольших устройств c малыми размерами SPI flash. Выход за рамки ~ 128 к, вероятно, плохая идея. Это
побочный эффект дизайна c целью использования малой оперативной памяти, как это возможно."

Но и не сказать, что у spiffs малое использование памяти. Она использует RAM (heap + bss) к 4 килобайтам.
.
-----------------------------------------------
Если бы было до 128 к то автор бы не писал:
Цитата:
"Common memory capacaties for SPI flashes are 512kB up to 8MB of data, where blocks may be 64kB."
------------------------------------------
Использование памяти тоже автором указано :
Цитата:
"Say you have a logical page size of 256 bytes. You want to be able to have four
files open simultaneously, and you can give spiffs four cache pages. This
roughly sums up to:

256*2 (work buffer) +
32*4 (file descriptors) +
(256+32)*4 (cache pages) + 40 (cache metadata)

i.e. 1832 bytes."
---------------------------------------------------
Вообще-то размер может быть любой, но в существующей версии будет использовано лишь половина.
----------------------------------------------
Вообще-то и задачи которые решает данная файловая система тоже указана автором.
Он не делал самую быструю систему
--------------------------------------
Не надо искать черную кошку в темной комнате, если ее там быть не может.
 
Добавил команду wifi.setchannel():
Код:
static int wifi_setchannel( lua_State* L )
{
    s8 Ch;
      Ch = luaL_checkinteger( L, 1 );
      if ( Ch<= 1 ||Ch > 13 ) {
          luaL_error( L, "wrong arg range" );
          return 0;
      }
// тут не знаю что вызывать...   

      return 0;
}
подскажите что вызвать?
 

pvvx

Активный участник сообщества
@Vladimir555 про nikolz:
Ничего он не делает и никогда ни на какие просьбы не дает примеров, а только ругается :)
Ему цитату от автора привели и перевели про 128 из git, а он что-то выдумывает, ищет черных кошаков и всё "ГЛАВРЫБА" наоборот...
Добавил команду:
Код:
static int wifi_setchannel( lua_State* L )
{
    s8 Ch;
      Ch = luaL_checkinteger( L, 1 );
      if ( Ch<= 1 ||Ch > 13 ) {
          luaL_error( L, "wrong arg range" );
          return 0;
      }
// тут не знаю что вызывать...   

      return 0;
}
подскажите что вызвать?
Мне кажется, что luaL_checkinteger( L, 1 ) вытягивает только числа... Надо глядеть.
 

pvvx

Активный участник сообщества
256*2 (work buffer) +
32*4 (file descriptors) +
(256+32)*4 (cache pages) + 40 (cache metadata)

i.e. 1832 bytes."
bss переменные забыли, структуры там громадные, да ещё стек тоже...
Заполнение объема диска тоже не половина, а немного больше.
А итого уже проверено на 80MHz проце - итог печальный и даны примеры с тестами.
 
Последнее редактирование:
Мне кажется, что luaL_checkinteger( L, 1 ) вытягивает только числа... Надо глядеть.
каналы это и есть числа... 1-13;)
L966
Код:
 unsigned channel = luaL_checkinteger(L, -1);
    if (channel < 1 || channel > 13)
      return luaL_error( L, "channel:1~13" );
на wifi.setchannel(55)
отвечает правильно "wrong arg range"

или я опять не догоняю?
Вопрос что там из SDK вызвать?
 
Последнее редактирование:

pvvx

Активный участник сообщества
Про канал - добавьте это:
struct softap_config config;
if(wifi_softap_get_config(&config)) {
config.channel = ????
wifi_softap_set_config(&config);
}
Но там беда с каналом : Его номер в AP имеет зависимость с каналом ST.
Сильно не изучал эту китай-зависимость.

Есть ещё такие функции в SDK 1.2.0:
uint8 wifi_get_channel(void);
bool wifi_set_channel(uint8 channel);
Описанное выше (wifi_softap_set_config) работает и на старых SDK.
Вот что пишут китайцы:
8.4. ESP8266 soft-AP and station channel configuration Even though ESP8266 can be in soft-AP + station mode,it actually has only one hardware channel.
So in soft-AP + station mode, ESP8266 soft-AP will adjust its channel configuration to be as same as ESP8266 station.
This limitation may cause some inconvenience in softAP + station mode users need to pay attention,for example:
Case 1.
(1) If user connect ESP8266 station to a router(e.g. router is in channel 6)
(2) Then set ESP8266 softAP by wifi_softap_set_config
(3) The API may return true, but channel will always be channel 6. Because we have only one hardware channel.
Case 2.
(1)If user set ESP8266 softAP a channel number(e.g. channel 5) by wifi_softap_set_config
(2)Some stations connected to ESP8266 softAP.
(3)Then connect ESP8266 station to a router of which channel number is different (e.g. channel 6) .
(4)ESP8266 softAP has to adjust its channel to be as same as ESP8266 station , in this case, is channel 6.
(5)So the stations that connected to ESP8266 softAP in step 2 will be disconnected because of the channel change.
Espressif
 
Последнее редактирование:

nikolz

Well-known member
Добавил команду wifi.setchannel():
Код:
static int wifi_setchannel( lua_State* L )
{
    s8 Ch;
      Ch = luaL_checkinteger( L, 1 );
      if ( Ch<= 1 ||Ch > 13 ) {
          luaL_error( L, "wrong arg range" );
          return 0;
      }
// тут не знаю что вызывать...  

      return 0;
}
подскажите что вызвать?
return 0; - Означает, что Вы не возвращаете параметры из функции, поэтому ничего не надо вызывать.
или Вы что-то хотите вернуть?
 

nikolz

Well-known member
Ch = luaL_checkinteger( L, 1 );
Проверяет значение на заданный тип и преобразует его в целое если тип число
 

nikolz

Well-known member
@Vladimir555 про nikolz:
Ничего он не делает и никогда ни на какие просьбы не дает примеров, а только ругается :)
Ему цитату от автора привели и перевели про 128 из git, а он что-то выдумывает, ищет черных кошаков и всё "ГЛАВРЫБА" наоборот...

Мне кажется, что luaL_checkinteger( L, 1 ) вытягивает только числа... Надо глядеть.
pvvx,
Вы все сплетни сочиняете ? Не надоело?
 

pvvx

Активный участник сообщества
pvvx,
Вы все сплетни сочиняете ? Не надоело?
А вам? Хоть какой пример на Lua дайте народу, а то пока только фантазии на вольную тему от вас.
Да и при чем тут сплетни? У меня в EspLua диск на spiffs работает, в NodeMCU - нет и уже так пол года, пока не влез...
Heap в SDK1.2.0 + EspLua больше, чем в NodeMCU на старой бэте 0.9.6.
Ну и т.д.
Или вы считаете, что я должен переписать всё и проверить за свой счет, да отадать вам, когда вы не принимаете никакого участия, кроме выдумок и наговоров?
 
Последнее редактирование:

nikolz

Well-known member
А вам? Хоть какой пример на Lua дайте народу, а то пока только фантазии на вольную тему от вас.
Вот по вашей просьбе,
специально для народа сочинил анекдот:
-----------------------------
Новости дня:
Сегодня президент России выступил с инициативой.
Он предложил включить в список олимпийских игр
новый вид соревнования - Борьбу с коррупцией.
Он также выразил уверенность,
что сборная России выиграет все медали по данному виду соревнований.
-----------------------
Главным тренером сборной назначен генеральный прокурор.
-----------------------------
Председателем попечительского совета сборной назначен премьер министр.
-----------------------
Лидеры фракций с воодушевлением восприняли новое предложение президента.
Они готовы в срочном порядке вернутся с каникул и принять законы,
позволяющие развиваться данному виду соревнований не только в Москве,
но и в российской глубинке.
--------------------
 
Последнее редактирование:

nikolz

Well-known member
А вам? Хоть какой пример на Lua дайте народу, а то пока только фантазии на вольную тему от вас.
А народу надо?
Я не знаю,что ему надо.
Вот Вам не надо. Верно?
или Вы не народ?
Тогда откуда знаете, что надо народу?
Только депутаты чиновники и президент знают все что народу надо.
Но Вы же не из их числа?
или из них, родимых и сердобольных?
 

pvvx

Активный участник сообщества
А народу надо?
Я не знаю,что ему надо.
У вас спрашивали на данном форуме, но вы практически ни разу не ответили и не привели примеров или решений (хоть как альтернативу). Только анекдоты и прочий спам, да недовольства на то, что у других, за всё что они берутся - выходит с решением задачи :p
Вот сравнение по прожорству памяти:
Код:
   Section|     Web свалка* | EspLua  |
---------------------------------------
      data:            1356 |    2776 |
    rodata:            2540 |       8 |
       bss:           27464 |   32688 |
      text:           19656 |   44148 |
irom0_text:          203236 |  411500 |
Total Used RAM:       31360 |   35472 |
Free RAM:             50560 |   46448 |
Free IRAM:            29514 |    5022 |
Total Free RAM:       80074 |   51470 |
Max Disk ph.size**:  266240 |   40960 |

* Нет тормозных чтений данных расположенных в rodata
  и irom0_text через перерывание исключения в CPU
** Возможность для выделения под диск в 512k flash
"Web свалка" дана как сравнение с минимальной (урезанной) SDK 1.2.0. Т.е. ещё можно много выжать в EspLua, что не сказать о вашей горячо любимой NodeMCU.
Да, и когда вы займетесь своим любимым делом - кляузничать NodeMCU-шникам?
Я же не собираюсь поддерживать Lua на ESP всю жизнь, а делаю работу над ошибками NodeMCU, чтобы они опять стянули и вставили наработанное, раз сами не могут :)
Вы думкаете, что вас из-за чего-то другого тут держат :)
 
Вот получилось:
Код:
static int wifi_setchannel( lua_State* L )
{
    s8 Ch;
    Ch = luaL_checkinteger( L, 1 );
      if ( Ch <1 || Ch > 13 ) {
          luaL_error( L, "Error,channel:1~13" );
          return 0;
      }
      struct softap_config config;
      if(wifi_softap_get_config(&config)) {
      config.channel = Ch;
      wifi_softap_set_config(&config);
      }
      return 0;
}
ЧуднО как то (все по китайски) , два раза из 10 сработало , нужно после создания AP переключать или до того?
У Вас в проекте TCP2UART весело каналы скачут, а здесь что то...:(
Может в коде что не правильно?
 
Сверху Снизу