Скрыть объявление
На нашем форуме недоступен просмотр изображений для неавторизованных пользователей. Если Вы уже зарегистрированы на нашем форуме, то можете войти. Если у Вас еще нет аккаунта, мы будем рады, если Вы к нам присоединитесь. Зарегистрироваться Вы можете здесь.

Sming Open Source Framework для нативной разработки прошивок ESP8266

Тема в разделе "Sming Open Source Framework", создана пользователем anakod, 20 мар 2015.

Метки:
  1. JustACat

    JustACat Moderator Команда форума

    Сообщения:
    568
    Симпатии:
    121
    Тогда может имеет смысл посмотреть в реализацию MQTT как раз под Arduino? Например.
    Сам MQTT пока не пользовал нигде, так что ничего не скажу.
    Но то, что MQTT вполне пригодилось бы - это факт, можно было бы и к openHub цеплять да и мало ли куда еще.
     
  2. Victor

    Victor Administrator Команда форума

    Сообщения:
    2.212
    Симпатии:
    388
    этот проект умер, автором похоже не поддерживается, потому как последний коммит в 12 году был
     
  3. JustACat

    JustACat Moderator Команда форума

    Сообщения:
    568
    Симпатии:
    121
    Victor, эм, ну я чисто для примера привел, а так можно и любой другой. Хотя, если не обновлялся - не значит, что умер, вполне возможно, что он отработан и работает :)
    Например, в этой статье на хабре его используют, статья недавняя.

    Да, вот даже если пройти по ссылкам на офф сайте mqtt.org, то попадем сюда:
    https://github.com/mqtt/mqtt.github.io/wiki/libraries - и там тоже ссылка на эту "либлиотеку". И еще на кучу других реализаций на всяких языках.
     
  4. Victor

    Victor Administrator Команда форума

    Сообщения:
    2.212
    Симпатии:
    388
    тогда ок
     
  5. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    9.296
    Симпатии:
    1.319
    Посмотрел. От конца Flash отнимается 4-ре сектора и вниз до кода. На lau и не слышно было, чтобы кто-то подтвердил, что там работает Flash более 1 MegBytes. И на SDK нет ld файлов более 1 Mb, и кэш кончается на этих 1 Mb, а перепрограмирование установок кэширования после ROM-BIOS я пока не находил.
    Адреса для этих 4-рех секторов в SDK пишутся не по размеру в заголовке flash, а по размеру указанному в структуре, переданной от ROM-BIOS. В eagle.rom.addr.v6.ld она значится как flashchip и является указателем на структуру SpiFlashChip, описанную в spi_flash.h. Там и находится uint32 chip_size; // chip size in byte и другие размеры - секторов и прочего, а не как у Lua в define.
    Более этого адреса (chip_size) функции spi_flash_xxx не работают и возвращают ошибку. Он является ограничителем всех функций работы с flash в ROM-BIOS. От него и отнимается пару секторов для записи конфигурации SDK. Если его изменить, то это позволяет иметь доступ до физического ограничения передаваемого адреса по стандартному протоколу SPI в Flash.
    И проблема с большими Flash давно решена, кроме как у Lua, NodeMCU и их клонов: перед обращением к процедурам flash изменяете chip_size на предел, а по окончанию - возвращаете значение.
    Пример:
    Код (C):
    1.  
    2. SpiFlashOpResult spi_flash_rd_16m(uint32 src_addr, void *des_addr, uint32 size) {
    3.     flashchip->chip_size = SIZE_MAX_FLASH;
    4.     SpiFlashOpResult ret = spi_flash_read(src_addr, (uint32 *) des_addr, size);
    5.     flashchip->chip_size = SIZE_MIN_FLASH;
    6.     return ret;
    7. }
    8.  
    Тем самым сохранение SDK делает на SIZE_MIN_FLASH - 4 сектора, а вы работаете со всей Flash, от 512K до 16M.
    При указании 16M сразу и навсегда в flashchip->chip_size, SDK начинает сохранять настройки в 16M-4 сектора, но при старте будет грузить их с указанного flashchip->chip_size - 4 сектора. :) По тому ставите всегда и везде 512K (в программаторе и заголовке flash) и в диске у вас будет дырка в эти 4-ре сектора, которую придется обходить... Реальный размер Flash определяете по повтору паттерна в дцать байт, взятого к примеру в начале flash. Смотрите на совпадение в 512K умноженному на 2, 4, 8, 16, 32 (512K <<= 1). Все мелкие flash повторяются по кругу.
    Это единственное рабочее и многократно проверенное решение.
     
    Последнее редактирование: 23 мар 2015
    programmer нравится это.
  6. JustACat

    JustACat Moderator Команда форума

    Сообщения:
    568
    Симпатии:
    121
    Ув. @anakod, я сделал следующее:
    - поставил UDK последней актуальной на данный момент версии 1.0.12 (как я понимаю, в нем сейчас SDK 0.9.5), точнее сказать, UDK уже стоял этот у меня
    - из eclipse выпилил примеры, которые идут с UDK (путем выделения и удаления :))
    - скачал с гитхаба вашу последнюю (на данный момент) версию Sming (последний комит по пул-реквесту около 7 часов назад)
    - распаковал ее на диск C (получилось C:\Sming\README.md для примера)
    - в eclipse импортировал примеры (а точнее всю папку C:\Sming\)
    - при попытке скомпилировать Basic_Blink (или любой другой) получаю ту же ошибку, что и @CHERTS, ругается на файл:
    c:/Espressif/ESP8266_SDK/include/lwip/ip_addr.h ... ... ...

    И тут умом я конечно понимаю, что могу подправить сам файл c:/Espressif/ESP8266_SDK/include/lwip/ip_addr.h , даже представляю, что поправить.
    Но я же вижу, что в папке Sming такой файл тоже присутствует в инклюдах (причем там он правильный), то есть я делаю вывод (учитывая ваши слова), что правильным решением было бы заставить компилятор брать ваш файл вместо того, что в папке ESP8266_SDK от UDK.

    И вот теперь вопрос: как решить проблему правильнее всего?
    Исправить файл c:/Espressif/ESP8266_SDK/include/lwip/ip_addr.h ?
    Или все же ковыряться с чем-то (наверное, с makefile), чтобы заставить компилятор брать ваши файлы вместо тех, что лежат в ESP8266_SDK ?
    Или может просто дождаться, пока вы совместно с @CHERTS соберете что-то цельное и со всех сторон замечательное? :)

    И извините, что отнимаю время глупыми вопросами, просто уж очень руки чешутся хоть что-то собрать и попробовать запустить, прямо мочи нету... :)

    Update:
    Лог со стандартным UDK (раскрыть)
    Код (Text):
    1.  
    2. 10:07:03 **** Build of configuration Default for project Basic_Blink ****
    3. mingw32-make.exe -f C:/Sming/Basic_Blink/Makefile all
    4. C+ ../Sming/system/stringconversion.cpp
    5. In file included from c:/Espressif/ESP8266_SDK/include/user_interface.h:11:0,
    6.                  from ../Sming/system/include/esp_systemapi.h:10,
    7.                  from include/user_config.h:29,
    8.                  from ../Sming/system/stringconversion.cpp:1:
    9. c:/Espressif/ESP8266_SDK/include/lwip/ip_addr.h:213:23: error: invalid suffix on literal; C++11 requires a space between literal and identifier [-Werror=literal-suffix]
    10.    LWIP_DEBUGF(debug, ("%"U16_F".%"U16_F".%"U16_F".%"U16_F,             \
    11.                        ^
    12. c:/Espressif/ESP8266_SDK/include/lwip/ip_addr.h:213:31: error: invalid suffix on literal; C++11 requires a space between literal and identifier [-Werror=literal-suffix]
    13.    LWIP_DEBUGF(debug, ("%"U16_F".%"U16_F".%"U16_F".%"U16_F,             \
    14.                                ^
    15. c:/Espressif/ESP8266_SDK/include/lwip/ip_addr.h:213:40: error: invalid suffix on literal; C++11 requires a space between literal and identifier [-Werror=literal-suffix]
    16.    LWIP_DEBUGF(debug, ("%"U16_F".%"U16_F".%"U16_F".%"U16_F,             \
    17.                                         ^
    18. c:/Espressif/ESP8266_SDK/include/lwip/ip_addr.h:213:49: error: invalid suffix on literal; C++11 requires a space between literal and identifier [-Werror=literal-suffix]
    19.    LWIP_DEBUGF(debug, ("%"U16_F".%"U16_F".%"U16_F".%"U16_F,             \
    20.                                                  ^
    21. cc1plus.exe: all warnings being treated as errors
    22. C:/Sming/Basic_Blink/Makefile:329: recipe for target 'out/build/../Sming/system/stringconversion.o' failed
    23. mingw32-make.exe: *** [out/build/../Sming/system/stringconversion.o] Error 1
    24.  
    25. 10:07:03 Build Finished (took 490ms)


    И, если просто переименовать каталог:
    C:\Espressif\ESP8266_SDK\include\lwip
    в
    C:\Espressif\ESP8266_SDK\include\lwip_ (например)
    То проекты сразу начинают нормально собираться:
    Лог (раскрыть)
    Код (Text):
    1.  
    2. 10:04:07 **** Build of configuration Default for project Basic_Blink ****
    3. mingw32-make.exe -f C:/Sming/Basic_Blink/Makefile all
    4. C+ ../Sming/system/stringconversion.cpp
    5. CC ../Sming/system/flashmem.c
    6. C+ ../Sming/system/esp_cplusplus.cpp
    7. C+ ../Sming/Wiring/WShift.cpp
    8. C+ ../Sming/Wiring/WMath.cpp
    9. C+ ../Sming/Wiring/SplitString.cpp
    10. C+ ../Sming/Wiring/WString.cpp
    11. C+ ../Sming/Wiring/Stream.cpp
    12. C+ ../Sming/Wiring/Print.cpp
    13. C+ ../Sming/Wiring/I2cMaster.cpp
    14. C+ ../Sming/Wiring/IPAddress.cpp
    15. C+ ../Sming/SmingCore/SPI.cpp
    16. C+ ../Sming/SmingCore/HardwareSerial.cpp
    17. C+ ../Sming/SmingCore/DataSourceStream.cpp
    18. C+ ../Sming/SmingCore/Wire.cpp
    19. C+ ../Sming/SmingCore/Clock.cpp
    20. C+ ../Sming/SmingCore/PWM.cpp
    21. C+ ../Sming/SmingCore/Digital.cpp
    22. C+ ../Sming/SmingCore/Interrupts.cpp
    23. C+ ../Sming/SmingCore/ESP8266EX.cpp
    24. C+ ../Sming/SmingCore/FileSystem.cpp
    25. C+ ../Sming/SmingCore/Timer.cpp
    26. C+ ../Sming/SmingCore/Network/HttpServer.cpp
    27. C+ ../Sming/SmingCore/Network/TcpClient.cpp
    28. C+ ../Sming/SmingCore/Network/HttpRequest.cpp
    29. C+ ../Sming/SmingCore/Network/TcpConnection.cpp
    30. C+ ../Sming/SmingCore/Network/HttpResponse.cpp
    31. C+ ../Sming/SmingCore/Network/URL.cpp
    32. C+ ../Sming/SmingCore/Network/HttpServerConnection.cpp
    33. C+ ../Sming/SmingCore/Network/HttpClient.cpp
    34. C+ ../Sming/SmingCore/Network/NetUtils.cpp
    35. C+ ../Sming/SmingCore/Network/TcpServer.cpp
    36. C+ ../Sming/SmingCore/Platform/System.cpp
    37. C+ ../Sming/SmingCore/Platform/AccessPoint.cpp
    38. C+ ../Sming/SmingCore/Platform/Station.cpp
    39. CC ../Sming/Services/SpifFS/spiffs.c
    40. CC ../Sming/Services/SpifFS/spiffs_hydrogen.c
    41. CC ../Sming/Services/SpifFS/spiffs_check.c
    42. CC ../Sming/Services/SpifFS/spiffs_nucleus.c
    43. CC ../Sming/Services/SpifFS/spiffs_gc.c
    44. CC ../Sming/Services/SpifFS/spiffs_cache.c
    45. C+ ../Sming/Services/ArduinoJson/ArduinoJson.cpp
    46. C+ ../Sming/Services/WebHelpers/escape.cpp
    47. C+ ../Sming/Services/WebHelpers/base64.cpp
    48. C+ ../Sming/Services/DateTime/DateTime.cpp
    49. C+ ../Sming/appinit/user_main.cpp
    50. C+ app/application.cpp
    51. C+ ../Sming/Libraries/DHT/DHT.cpp
    52. C+ ../Sming/Libraries/LiquidCrystal/LiquidCrystal_SR.cpp
    53. C+ ../Sming/Libraries/LiquidCrystal/LiquidCrystal_SR3W.cpp
    54. C+ ../Sming/Libraries/LiquidCrystal/LiquidCrystal.cpp
    55. C+ ../Sming/Libraries/LiquidCrystal/LCD.cpp
    56. C+ ../Sming/Libraries/LiquidCrystal/LiquidCrystal_SR2W.cpp
    57. C+ ../Sming/Libraries/LiquidCrystal/I2CIO.cpp
    58. C+ ../Sming/Libraries/LiquidCrystal/LiquidCrystal_I2C.cpp
    59. C+ ../Sming/Libraries/LiquidCrystal/FastIO.cpp
    60. C+ ../Sming/Libraries/Bounce/Bounce.cpp
    61. CC ../Sming/Libraries/Adafruit_GFX/glcdfont.c
    62. C+ ../Sming/Libraries/Adafruit_GFX/Adafruit_GFX.cpp
    63. C+ ../Sming/Libraries/TFT_ILI9163C/TFT_ILI9163C.cpp
    64. C+ ../Sming/Libraries/BMP180/BMP180.cpp
    65. C+ ../Sming/Libraries/BH1750FVI/BH1750FVI.cpp
    66. C+ ../Sming/Libraries/Adafruit_SSD1306/Adafruit_SSD1306.cpp
    67. C+ ../Sming/Libraries/OneWire/OneWire.cpp
    68. C+ ../Sming/Libraries/I2Cdev/I2Cdev.cpp
    69. C+ ../Sming/Libraries/HMC5883L/HMC5883L.cpp
    70. AR out/build/app_app.a
    71. LD out/build/app.out
    72. Run objcopy, please wait...
    73. objcopy done
    74. Run gen_appbin.exe
    75. No boot needed.
    76. Generate eagle.flash.bin and eagle.irom0text.bin successully in folder out/firmware.
    77. eagle.flash.bin-------->0x00000
    78. eagle.irom0text.bin---->0x10000
    79. Done
    80.  
    81. 10:04:25 Build Finished (took 17s.633ms)


    А значит действительно что-то с путями или порядком обращения к папкам в makefile не так...

    Update 2:
    Проверил все примеры из Sming - с переименованной папкой lwip все компилируются успешно. (в работе пока не проверял)
    Но меня все равно продолжает мучить чувство, что компилятор берет что-то еще ненужное из старого SDK, который пока в комплекте с UDK.
     
    Последнее редактирование: 23 мар 2015
    Victor нравится это.
  7. anakod

    anakod Moderator Команда форума

    Сообщения:
    314
    Симпатии:
    100
    Да, опять недоглядел (т.к. у меня самого поправленный файл), видимо порядок включения срабатывает не верно.

    Самое простое обновиться до последней версии есп сдк (можно скачать здесь же на сайте - на главной) или просто временно переименовать/заменить папку, как Вы и сделали.
     
    JustACat нравится это.
  8. verzi

    verzi Новичок

    Сообщения:
    23
    Симпатии:
    1
    MeteoControl собирается, прошивается, но похоже без html файлов. Какую бы страницу ни запрашивал, всегда вижу "404 Not Found".
    HttpServer_Bootstrap вроде работает, но html страничку тянет с сайта разработчика.
    Ну а в целом это конечно очень большой шаг вперед после Nodemcu с ее прожорливостью и творением уважаемого pvvx, которое у меня, как не очень продвинутого программиста вызывает тихий ужас. Своей непонятностью разумеется :)
     
    Последнее редактирование: 23 мар 2015
  9. anakod

    anakod Moderator Команда форума

    Сообщения:
    314
    Симпатии:
    100
    HTML файлы на данный момент всегда тянуться с внешнего сайта при первом запуске, по той причине, что пока альтернативных вариантов закачивать файлы в файловую систему мало :) Это планируется изменить в будущем, а пока проще всего прописать название/пароль Вашей сети в соответствующие константы кода перед заливкой прошивки, тогда все отработает автоматически.
     
  10. Victor

    Victor Administrator Команда форума

    Сообщения:
    2.212
    Симпатии:
    388
    Уважаемые форумчане!
    С согласия автора этого замечательного проекта создан отдельный раздел
    Sming Open Source Framework
    Для удобства, предлагаю продолжить обсуждение всех вопросов по этой теме по общепринятому принципу - "один вопрос-один топик" в новом разделе. Надеюсь, что вы и новые будущие члены нашего сообщества сочтут такой подход более удобным.

    Заранее спасибо вам за понимание.
     
  11. aloika

    aloika Активный участник сообщества

    Сообщения:
    379
    Симпатии:
    26
    anakod, ваше творение - это просто чудо какое-то, это очень, очень круто, то что вы делаете. Огромное вам спасибо, главное, не останавливайтесь :)

    У меня почему-то не тянутся. Похоже, с сайтом что-то случилось, и файлов там теперь нет (для проекта HttpServer_Bootstrap).

    Update: утянулись. Но я даже не понял, когда это произошло. Запустилось, когда я закомментировал последнее условие вот так:

    Код (Text):
    1.     if (!fileExist("index.html")  || !fileExist("bootstrap.css.gz") /* || !fileExist("jquery.js.gz") */)
    2.     {
    3.         // Download server content at first
    4. ...
    Что это означает? Последний файл не утянулся? Или не влез? Или его на сервере (в интернете) нет?

    Вообще, конечно, тут надо подумать, как лучше работать с HTML-файлами в таких условиях. Поднять под Windows web-сервер, писать страничку, закидывать ее на сервер, потом при старте прошивки проверять ее на новизну и загружать, если она новая? Но это очень уж неудобно.

    В качестве пожелания - надо продумать, как удобно работать с диском.

    Еще было бы здорово, если бы были примеры простейших веб-страничек. Страничка с кнопкой, с отображением значения переменной и т.д. С отображением значения переменной так, чтобы при изменении ее в модуле, она менялась и на страничке. Это для таких товарищей как я, далеких от HTML вообще.

    Еще надо бы пример по поднятию TCP-сервера и по TCP-клиенту.
     
    Последнее редактирование: 23 мар 2015
  12. JustACat

    JustACat Moderator Команда форума

    Сообщения:
    568
    Симпатии:
    121
    Ну и отличненько! :)

    Код (C):
    1. if (!fileExist("index.html")  || !fileExist("bootstrap.css.gz") || !fileExist("jquery.js.gz")){
    2.     ...
    3. }
    4. Если не существует файл index.html или не существует файл bootstrap.css.gz или не существует файл jquery.js.gz то {
    5.     делаем то, что у нас тут (а тут у нас, емнип, команда на запуск закачки файлов с внешнего сервера)
    6. }
    В варианте:
    Код (C):
    1. if (!fileExist("index.html")  || !fileExist("bootstrap.css.gz") /* || !fileExist("jquery.js.gz") */)
    Вы просто убрали из условия последнее "если", и это, по идее, никак не могло вызвать тот результат, который вы описываете.
    Скорее всего это совпадение.
    Например: вы закоментили последнее если, этим заставили компилятор скомпилировать прошивку по новой, и залить ее по новой в камень, что в итоге обнулило в нем файлы и заставило перескачать их (а при первом скачивании, возможно, произошел некий сбой).
    Либо, просто вы не дождались скачивания в 1 раз.
    Это все, имхо, конечно, но мне кажется так...

    aloika, от себя лично скажу (вы токмо не обижайтесь), все же работа с диском и тем более как загружать странички - имхо, не первоочередное.
    Потому что есть уже у нас разработка от @pvvx - да, она сложнее, но она есть, а при этом web-server на ESP нужен далеко не всем, если проводить ту же аналогию с Arduino, я, например, вижу массу других применений для ESP и работы ее вкупе с мастером, и весь этот HTTP на ней, имхо, перебор :)
    Ну и это тоже, по-моему, перебор... Откройте htmlbook.ru (сам им пользуюсь) и там этих примеров страничек и документации по html море просто :) Зачем ее дублировать?

    @aloika, вы только не примите в штыки, я всего лишь пытаюсь донести следующую важную мысль: у нас пока что один разработчик всего этого огромного пакета - @anakod .
    И мне лично хотелось бы, чтобы он, как основоположник всего этого, кто лучше всех разбирается во всем проекте в целом (во всех его тонкостях и нюансах), решил сначала вопросы, связанные с общей работой проекта:
    - простая установка и запуск (включая установку среды для этого, пусть это будет тот же UDK от @CHERTS - но установку нужно упростить, т.к. сейчас она вообще не тянет на простоту аналогичную Arduino)
    - общая документация, больше и развернутее
    - примеры создания своих проектов
    - отлов возможных каких-то ошибок

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

    Давайте лучше доведем общие моменты до ума, выловим ошибки, продумаем как упростить старт на этой системе для новичков, а затем все вместе возьмемся за частные примеры/библиотеки/драйверы устройств?
    Что скажете?

    PS: как предложил @Victor: думаю, стоит разнести частные вопросы (и тем более вопросы по конкретным примерам из Sming) по отдельным темам в этот наш новый раздел форума: http://esp8266.ru/forum/forums/Sming-Open-Source-Framework/
    @aloika, создайте, пожалуйста, отдельные темы по вашим вопросам.
    Я уже создал две профильные темы в разделе http://esp8266.ru/forum/forums/Sming-Open-Source-Framework/ это "Запрос библиотек/драйверов" и "Запрос примеров" - можете отписаться в них.
    Давайте вместе наведем порядок :)
     
  13. anakod

    anakod Moderator Команда форума

    Сообщения:
    314
    Симпатии:
    100
    Написал FTP, комит есть, подробности позже. Стоит пошлифовать.
     
  14. CHERTS

    CHERTS Moderator Команда форума

    Сообщения:
    483
    Симпатии:
    108
    Я мониторю каждый день github на предмет появления и изменения в проектах связанных с esp8266, собственно по слову esp8266 находится очень много всего, далее сортируем по последнему обновлению и видим все свежее. Ну а так же у меня склонировано куча репов с кодом, каждый день проверяются в них обновления, если что есть, сразу видно какой проект живой, какой мертвый.
     
  15. aloika

    aloika Активный участник сообщества

    Сообщения:
    379
    Симпатии:
    26
    Это понятно, что я убрал, я как раз и говорю о том, что на тот момент было непонятно, что именно произошло - или файла нет на диске ESP, или его нет на сервере в инете, или еще что. И никак по-простому это было не выяснить.

    Но когда это:
    заработает, думаю, будет все по-другому :)

    Я ни в коем случае не обижаюсь, пишите мне все, что думаете :)
    А я считаю, что как раз HTTP и все такое - это именно то, что отличает ESP от Ардуино. Работу со всякими датчиками и экранами я и на Атмеле запрограммирую. И возможностей там в этом плане больше - и ног, и АЦП с диф. входами и усилителями, и проч. и проч. А здесь ключевое- это именно все, что связано с Wi-Fi, серверами, клиентами, HTTP.

    @anakod немеряно крут :), с этим никто не спорит, и этот проект, как мне кажется, выкладывается на этот форум как раз для того, чтобы кто-нибудь посмотрел на это все свежим, не замыленным взглядом и высказал свои мысли и пожелания. Вот я и высказываю, с точки зрения своего, чайниковского вИдения. Ну и воспринимать эти мысли нужно соответственно.

    Тут речь не о том, как сделать красиво. Речь о том, как взаимодействовать из странички с модулем. Например, лично меня очень интересует вопрос, на который я пока не могу найти ответ - а можно как-нибудь отображать, например, значение переменной (допустим, состояние входа) на страничке динамически, т.е. если состояние входа изменится, чтобы сразу же изменилось и значение в веб-интерфейсе (без перезагрузки странички). Я в одном проекте использую для этого веб-сокеты, на сервере (на cubieboard) под openwrt запущена питоновская программа - tornado сервер, и так далее. Тут принципиальный вопрос - можно ли на этом модуле вообще делать интерфейсы-пульты, т.е. интерфейсы, которые в реальном времени что-нибудь отображают и чем-нибудь управляют, а не только странички, предназначенные для настройки - куча полей ввода и кнопка "Применить". В проекте pvvx есть странички, которые графики рисуют в реальном времени - как-то же это делается, значит.

    Вот я и высказал пожелание, что было бы здорово, если бы были примеры таких страничек, предельно простых, без лишнего, чтобы не гадать - это для основной функциональности, или для чего-то еще, убрать забыли.
     
  16. JustACat

    JustACat Moderator Команда форума

    Сообщения:
    568
    Симпатии:
    121
    Так Wi-Fi, сервера и клиенты - это да - это очень важно и полезно. А вот HTTP - это частность. HTTP - это для веб-серверов. А веб-сервера по определению должны быть на мощном железе.
    Оффтоп спрячу (раскрыть)
    Думаю, ESP к мощному железу отнести точно не выйдет.
    И я ничего против HTTP не имею, просто это очень уж действительно частный пример для такого слабенького железа...
    Где-то мы тут обсуждали уже так: есть у вас дома 10 розеток, в каждой по ESP и в каждой по Web-server'у? Зачем? =)
    Но в любом случае - дело конечно ваше.
    Хотя как по мне: ESP (пусть в каждой розетке) работают с неким мастером, тот же кубитрак/кубиборд взять, либо еще что-то подобное. Работают они с этим мастером по какому-то более оптимальному протоколу, тот же MQTT к примеру, либо что-то еще. А уж на мастере поднимайте нормальный веб-сервер, делайте любые удобные/красивые/быстрые интерфейсы - все будет летать.


    Ну, это понятно, что все мы лишь делимся своим мнением, это и правильно в общем-то. Пусть @anakod в итоге выбирает/решает, что делать :)
    А так, я там создал несколько подтемок соседних, вот в них формируйте свои запросы лучше. И структурировано - это тоже будет помощь @anakod'у.

    Ну, раз вас интересует решение связанное с вебом, то оно из веба и тырится:
    Спрятал (раскрыть)
    Берем страничку html + стили, добавляем к ней jquery (его, кстати, можно со стороннего сервера подгружать, тогда не нужно будет его пихать в ESP), добавляем наш собственный скрипт на js, который шлет периодически get (post) запросы по ajax технологии на esp, которая в ответ на них выдает уже чисто данные (без html), лучше в json (он же вроде тоже включен), ну и дальше на js это обрабатывается и подставляется в табличку на этой же выданной ранее страничке, либо там рисуется (можно применить svg) что-то, в общем, как-то так.
    Но опять же - это не имеет прямого отношения к ESP...
    С ней все стандартно: реализуем ответ на какой-то запрос, и в этот ответ вставляем некие данные (пусть это будут состояния пинов) в некоем формате (пусть будет json). Все. Все остальное - это HTML+CSS+JS+jQuery+Ajax+Json - это все лучше отладить отдельно - поставить на ПК веб-сервер локальный, и на нем попробовать реализовать это все (не трогая пока что ESP), а как разберетесь - тогда и в ESP можно будет запихать.
    Если по этой теме что-то интересно будет - обращайтесь, попробую помочь, чем смогу, но это точно не в теме Sming...
     
  17. aloika

    aloika Активный участник сообщества

    Сообщения:
    379
    Симпатии:
    26
    JustACat, большое спасибо за ответ, направление я понял, буду разбираться.
     
  18. pvvx

    pvvx Активный участник сообщества

    Сообщения:
    9.296
    Симпатии:
    1.319
    Обычно решается через AJAX . Пример управления всеми пинами чипа вставлен в версию от 0.1.5.
    Сервер MQTT - тоже. Но в стандартных роутерах mqtt broker-а нет :( Аналогично нет никакого ПО для работы с внешними устройствами IoT в стандартных бытовых устройствах, включая телефоны с android. В итоге для реализации простого умного дома или системы опроса множества датчиков для малой домашней поделки необходимо ещё разработать, создать и/или оплачивать сторонний сервер со специализированным ПО.
    Всё это временное явление и делать такое для домашних поделок не рекомендуется, т.к. данную нищу скоро заполнят нормальные решения от больших корпораций.
    Остаются только временные и очень специализированные проекты. Например использование модуля как датчика напряжения аккумулятора или ещё чего в авто, пока индустрия это решила.
    Делать умный дом с десятком модулей на WiFi нельзя. Сеть и так забита. Это уже многократно где рассмотрено.
    Оставшиеся варианты в большинстве случаев решаются через установку на модуле примитивного Web. ИМХО.

    PS: Реализации Chunked HTTP передачи в данной библиотеке я не нашел.
     
    Последнее редактирование: 24 мар 2015
  19. anakod

    anakod Moderator Команда форума

    Сообщения:
    314
    Симпатии:
    100
    Напишу подробнее по всем накопившемся вопросам:

    Мне кажется целевая аудитория Луа прошивки редко самостоятельно перепаивает флеш :) и вполне вероятно что со стороны программной части проблемы нет, но не проверив сказать ничего нельзя, а у меня к сожалению нет на руках нестандартных флеш контроллеров.

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

    Все таки было бы куда лучше если бы исправлением багов в SDK занимались разработчики SDK. Я за четкое разделение кода по уровням абстракции. Вот только как их в эту сторону пнуть? :)

    По результатам тестов пришел к выводу что порядок компиляции не поможет, берется ближайший файл. Поэтому пока только варианты брать оригинальное СДК 1.0 (в нем нет lwip), переименовывать папку руками или дождаться апдейта от уважаемого CHERTS. Как временное решение написал об этом в readme, но пока только костыли к сожалению :(
    Можно еще, конечно, отказаться от Си++11, он тут не сильно нужен, но все же это явно как то не очень хорошая идея.

    Уже несколько человек написало о проблемах с загрузкой файлов, буду разбираться внимательней, сегодня тестирую эту часть тоже.

    Вот именно пока они не заполнили, здесь действительно интересно и есть где развернуться, разве нет? :)
     
  20. JustACat

    JustACat Moderator Команда форума

    Сообщения:
    568
    Симпатии:
    121
    Боюсь, что их пнуть куда-то, куда нужно именно нам - очень сложно, если вообще реально, увы :(

    Я у себя в итоге как раз заменил в UDK старый SDK 095 на новый 100. Вроде все работает как надо.

    Может приобретете? Если дело в средствах, думаю, было бы не плохо организовать кнопочку Donate (как у @CHERTS в UDK). Конечно не настаиваю ни в коем разе.
     

Поделиться этой страницей