Замутил забавную штуку github.com/speedcontrols/wifi-configurator для настройки регуляторов скорости через вафлю, на esp8266. Иногда так бывает, что надо настроить кучу параметров, но только один раз.
Естественно, ради одного раза лепить клавиатуру, индикатор и т.п. как-то не айс.
Плюс, т.к. мне интересно делать девайсы, который популярны исключительно в мировых масштабах 😃, то есть очень высокие требования по простоте и повторяемости решения.
Короче, идея в том, чтобы взять платку Wemos D1 mini, слепить на ней вебсервер + captive portal, а с девайсом обмениваться по простенькому протоколу. То есть, у разработчика железа отпадает потребность долбиться с написанием интерфейса. Он просто делает описание формы с параметрами в формате JSON, и реализует обмен строками через UART на подобие модемных команд (таких команд надо всего три). Ну и разводит разъем на плате, куда можно воткнуть плату на время настройки. Итоговая картина мне нравится:
Девайс не привязан к какому-то устройству. Разработчик сам описывает, какая форма ему нужна. Поигнаться с описаниями можно тут.
Цена вопроса - 3.5 бакса. Столько стоит плата с доставкой. Дешево и сердито, всё как я люблю 😃.
Протокол тоже тупой как пробка, реализовать не проблема. На два порядка проще, чем городить свой интерфейс. Соответственно, изменения в форму вносить тоже легко и просто.
Юзерам вроде тоже просто (прошивать). Ставится platform.io, который дальше “делает все сам”. Простота для юзера - важный момент, которому уделялось особое внимание.
Вообще этот девайс городился для регуляторов скорости, которые сейчас в разработке, но наверное можно приспособить куда угодно. Все ограничено только вашей фантазией.
Я конечно понимаю, что можно купить чистый esp8266, запаять на плату и сэкономить еще 1 бакс, но надо ли? Вроде и так достаточно дешево, и не надо париться с поддержкой прошивок. IMHO для любительских поделок - самое то что надо.
Честно говоря, сначала хотел полностью зааутсорсить софт, но что-то пошло не так 😃. Последние XX лет я очень плотно занимаюсь проектированием архитектур, и на гитхабе общаюсь с программистами, которые в этом хорошо шарят. Ну и мне казалось, что такие навыки есть абсолютно у всех, кто программировал дет десять. Оказалось что нет 😃. После того ужаса, который мне показали аж три человека, плюнул и начал делать сам. Расписал use-cases, разметил рыбу и наколотил ту часть в которой разбираюсь хорошо - вебню. В сумме ушло 4 дня. Фирмварь еще не готова, но там теперь накосячить уже сложно.
IMHO получилось клево и модульно:
Программистам вебни (HTML/JS) не надо ничего знать про C. Им даже железка не нужна, т.к. сделал эмулятор.
Программистам на C (для esp8266) не надо ничего знать про вебню. Т.к. для них генерится готовый файл, который надо раздавать вебсервером.
По задумке фирмварь тупо прокидывает строки между вебмордой и UART. То есть, когда ее сделают, то шансы что понадобится что-то менять - нулевые. Даже если захочется поменять формат команд. Единственное условие - чтобы команды и ответы были одностроковыми и заканчивались переводом строки.
Сейчас готова архитектура и все что связано с веб-мордой. Прошивки еще нет, но поиграться уже можно. Если есть желающие присоединиться - welcome. Сам погружаться в С не хочу (могу, но не моё это).
{"assets_hash":"a8b26fa7f6e768b07a72c8c9aadb9422","page_data":{"users":{"39c21abc3df9550077797d18":{"_id":"39c21abc3df9550077797d18","hid":349,"name":"Vitaly","nick":"Vitaly","avatar_id":null,"css":""}},"settings":{"blogs_can_create":false,"blogs_mod_can_delete":false,"blogs_mod_can_hard_delete":false,"blogs_mod_can_add_infractions":false,"can_report_abuse":false,"can_vote":false,"can_see_ip":false,"blogs_edit_comments_max_time":30,"blogs_show_ignored":false,"blogs_reply_old_comment_threshold":30,"votes_add_max_time":168},"entry":{"_id":"5b058b8d9970730077117e09","hid":23393,"title":"Вебня для настройки регулей через WiFi","html":"<p>Замутил забавную штуку <a href=\"https://github.com/speedcontrols/wifi-configurator\" class=\"link link-ext link-auto\" data-nd-link-type=\"autolink\" data-nd-link-orig=\"https://github.com/speedcontrols/wifi-configurator\" target=\"_blank\" rel=\"nofollow noopener\">github.com/speedcontrols/wifi-configurator</a> для настройки регуляторов скорости через вафлю, на esp8266. Иногда так бывает, что надо настроить кучу параметров, но только один раз.</p>\n<ul>\n<li>Естественно, ради одного раза лепить клавиатуру, индикатор и т.п. как-то не айс.</li>\n<li>Плюс, т.к. мне интересно делать девайсы, который популярны исключительно в мировых масштабах <span class=\"emoji emoji-smiley\" data-nd-emoji-src=\":smiley:\">😃</span>, то есть очень высокие требования по простоте и повторяемости решения.</li>\n</ul>\n<!--cut-->\n<p>Короче, идея в том, чтобы взять платку <a href=\"https://rcopen.com/r?to=https%3A%2F%2Fwww.aliexpress.com%2Fwholesale%3FSearchText%3DWemos%2BD1%2Bmini\" class=\"link link-ext\" data-nd-link-orig=\"https://www.aliexpress.com/wholesale?SearchText=Wemos+D1+mini\" target=\"_blank\" rel=\"nofollow noopener\">Wemos D1 mini</a>, слепить на ней вебсервер + captive portal, а с девайсом обмениваться по простенькому протоколу. То есть, у разработчика железа отпадает потребность долбиться с написанием интерфейса. Он просто делает описание формы с параметрами в формате JSON, и реализует обмен строками через UART на подобие модемных команд (таких команд надо всего три). Ну и разводит разъем на плате, куда можно воткнуть плату на время настройки. Итоговая картина мне нравится:</p>\n<ul>\n<li>Девайс не привязан к какому-то устройству. Разработчик сам описывает, какая форма ему нужна. Поигнаться с описаниями можно <a href=\"http://ulion.github.io/jsonform/playground/\" class=\"link link-ext\" data-nd-link-orig=\"http://ulion.github.io/jsonform/playground/\" target=\"_blank\" rel=\"nofollow noopener\">тут</a>.</li>\n<li>Цена вопроса - 3.5 бакса. Столько стоит плата с доставкой. Дешево и сердито, всё как я люблю <span class=\"emoji emoji-smiley\" data-nd-emoji-src=\":smiley:\">😃</span>.</li>\n<li><a href=\"https://github.com/speedcontrols/wifi-configurator/tree/master/doc\" class=\"link link-ext\" data-nd-link-orig=\"https://github.com/speedcontrols/wifi-configurator/tree/master/doc\" target=\"_blank\" rel=\"nofollow noopener\">Протокол</a> тоже тупой как пробка, реализовать не проблема. На два порядка проще, чем городить свой интерфейс. Соответственно, изменения в форму вносить тоже легко и просто.</li>\n<li>Юзерам вроде тоже просто (прошивать). Ставится platform.io, который дальше “делает все сам”. Простота для юзера - важный момент, которому уделялось особое внимание.</li>\n<li>Вообще этот девайс городился для регуляторов скорости, которые сейчас в разработке, но наверное можно приспособить куда угодно. Все ограничено только вашей фантазией.</li>\n</ul>\n<p>Я конечно понимаю, что можно купить чистый esp8266, запаять на плату и сэкономить еще 1 бакс, но надо ли? Вроде и так достаточно дешево, и не надо париться с поддержкой прошивок. IMHO для любительских поделок - самое то что надо.</p>\n<p>Честно говоря, сначала хотел полностью зааутсорсить софт, но что-то пошло не так <span class=\"emoji emoji-smiley\" data-nd-emoji-src=\":smiley:\">😃</span>. Последние XX лет я очень плотно занимаюсь проектированием архитектур, и на гитхабе общаюсь с программистами, которые в этом хорошо шарят. Ну и мне казалось, что такие навыки есть абсолютно у всех, кто программировал дет десять. Оказалось что нет <span class=\"emoji emoji-smiley\" data-nd-emoji-src=\":smiley:\">😃</span>. После того ужаса, который мне показали аж три человека, плюнул и начал делать сам. Расписал use-cases, разметил рыбу и наколотил ту часть в которой разбираюсь хорошо - вебню. В сумме ушло 4 дня. Фирмварь еще не готова, но там теперь накосячить уже сложно.</p>\n<p>IMHO получилось клево и модульно:</p>\n<ul>\n<li>Программистам вебни (HTML/JS) не надо ничего знать про C. Им даже железка не нужна, т.к. сделал эмулятор.</li>\n<li>Программистам на C (для esp8266) не надо ничего знать про вебню. Т.к. для них генерится готовый файл, который надо раздавать вебсервером.</li>\n<li>По задумке фирмварь тупо прокидывает строки между вебмордой и UART. То есть, когда ее сделают, то шансы что понадобится что-то менять - нулевые. Даже если захочется поменять формат команд. Единственное условие - чтобы команды и ответы были одностроковыми и заканчивались переводом строки.</li>\n</ul>\n<p>Сейчас готова архитектура и все что связано с веб-мордой. Прошивки еще нет, но поиграться уже можно. Если есть желающие присоединиться - welcome. Сам погружаться в С не хочу (могу, но не моё это).</p>\n","user":"39c21abc3df9550077797d18","ts":"2018-05-23T15:41:01.000Z","st":1,"cache":{"comment_count":0},"views":441,"bookmarks":0,"votes":0},"subscription":null},"locale":"en-US","user_id":"000000000000000000000000","user_hid":0,"user_name":"","user_nick":"","user_avatar":null,"is_member":false,"settings":{"can_access_acp":false,"can_use_dialogs":false,"hide_heavy_content":false},"unread_dialogs":false,"footer":{"rules":{"to":"common.rules"},"contacts":{"to":"rco-nodeca.contacts"}},"navbar":{"tracker":{"to":"users.tracker","autoselect":false,"priority":10},"forum":{"to":"forum.index"},"blogs":{"to":"blogs.index"},"clubs":{"to":"clubs.index"},"market":{"to":"market.index.buy"}},"recaptcha":{"public_key":"6LcyTs0dAAAAADW_1wxPfl0IHuXxBG7vMSSX26Z4"},"layout":"common.layout"}