Pull to refresh

Comments 18

Заголовок: А не запилить ли нам хардварный чат?

Статья: Полностью софтварный чат на MQTT и COM, железки чисто для виду, в качестве wifi модема\mqtt-клиента )

В современных реалиях, хардварный на самом деле это железо + софт (может ПЛИС выделяются, но там тоже программирование), и действительно железные решения обычно это аналоговые.

Соответственно увидав заголовок я сразу представил аналоговый чат, буквально.

Если честно, я об этом не подумал вообще. Потому что всего лишь имел в виду, что чат построен не классически в виде некоего server-side кода, а в виде "железки", с которой отправляя данные - можно общаться. Так что никакой "задней" мысли не было в заголовке и т.д.

Честно говоря ожидал аналоговой реализации или чего нибудь подобного

Может попробовать жать текст для уменьшения объёма передаваемых данных и обхода ограничений открытых брокеров (явно не сработает при ограничении числа сообщений)? Интересно, а APT используют C2 на базе открытых MQTT-брокеров, когда зловред мимикрирует под IoT-устройство?

В коде TaskHandler ошибки в части проверки, горит уже светодиод или нет, скобок не хватает. И сразу после гордое "код протестирован и работает".

Где на ваш взгляд не хватает и почему? Только что, не внося никаких изменений - запустил код на esp32. Все нормально работает:

if (digitalRead(LED==LOW) )

LED==LOW возвращает False, что в этом случае считывает digitalRead - загадка.

...то в таком случае, ровным счётом ничего не произойдёт ;-)

Проиллюстрирую наглядно: Посылается "ON" и потом ещё раз "ON" - соответственно, возникает описанная вами ситуация. И, как в одной старой передаче: "мы ведём репортаж прямо из центра событий, с улицы, на которой ровным счётом ни-че-го не происходит" :-)

И в противном случае: так же неоднократно посылается "OFF":

Так что ничего страшного...Но эту функцию ( void TaskHandler (String s) ) - я просто приложил как пример, откуда можно "дёргать" строку и куда передавать, для выполнения некоего действа. Она, в рамках этого кода глубоко вторична. Основной код - работает как и должен.

Но, в целях саморазвития: как нужно было бы улучшить этот фрагмент, с вашей точки зрения?

Но, в целях саморазвития: как нужно было бы улучшить этот фрагмент, с вашей точки зрения?

Ээээм, построить его на нормальном коде, а не на странных побочных эффектах, например?
Если надо сравнить прочитанное значение с LOW, то так и написать: if (digitalRead(LED)==LOW )
Простите, а какой смысл? Если на компе есть нечто, способное запустить arduino ide, то сил тем более хватит на любой mqtt-клиент. И вместо запуска этого клиента, мы зачем-то запускаем монструозный для данной задачи arduino ide, берет оттуда терминал, и пишем кучу вспомогательного кода для работы с этим терминалом, хотя уж serial-терминалов есть куча.

Ну, т.е. добавить сюда шифрование сообщений (подсказываю: не обязательно использовать хардварные решения esp, можно просто взять ардуиновскую AESLib с ровно двумя функциями aes128_enc_single и aes128_dec_single) — и это уже начинает иметь хоть какой-то смысл.
Добавить сюда клавиатуру и экранчик — и это тоже начинает иметь какой-то смысл.
Отвязаться от arduino ide, и подключить это к какому-нибудь спектруму, сделав интернет-чатик на спектруме — и это тоже начинает иметь какой-то смысл.
Опубликовать брокер в сети и сказать «давайте устроим новогодний хабра-чатик» — тоже, блин, имеет хоть какой-то смысл.
Но так, как сделано — смысла ноль, базовые куски кода и объяснение для школьников, как работают юникод. Зачем, мистер андерсен?

Я подсказываю, каким может быть следующий шаг: на есп в один порт принимаем сообщения из arduino ide, вторым портом отправляем обратно на комп, а на компе пишем программу, которая будет получать из второго порта текст и отправлять его mqtt-брокеру. Так esp будет использоваться еще более бессмысленно, что, несомненно, будет являться продолжением пути, по которому идет данная статья.

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

—… вот так, несложно, можно заменить одну ножку табуретки на бутылку из-под пива
— Но зачем? Она же не достает до пола, нет никакого смысла в том, чтобы теперь использовать эту табуретку. Можно заменить все ножки, и это будет иметь смысл. Или можно взять бутылку больше, чтобы она доставала до пола, и это тоже будет иметь смысл… Но так? Зачем?
— Я не ставил целью сделать идеальное решение на все времена!!! Это просто один из вариантов решения!!!

Ваше «решение» ничего не решает. Вы используете компьютер с сетью, который сам по себе может соединиться с сервером, с мощным процессором, способным прожевывать джаву, на которой написана arduino ide, который сам по себе может крутить любой mqtt-клиент, в качестве печатающей машинки, которая отправляет буквы на плату с wifi, которая через wifi отправляет сообщения на удаленный сервер. Еще и делает это с ограничениями. Плата не делает ничего, чего бы не смог сделать компьютер: она не работает автономно, она не предоставляет интерфейс для компа, не обладающего сетью или мощным процессором, она не предоставляет полностью контролируемое пользователем шифрование, ни-че-го.

Это как показывать, как вы взяли камень и забиваете им гвоздь, хотя рядом лежит молоток, потому что… Да хз, почему. Потому что если написать статью о том, как вы забиваете гвоздь молотком, это не будет никому интересно?

Опять 25... Я предложил решение используя СУЩЕСТВУЮЩУЮ инфраструктуру. Для использования этого решения не надо знать ничего про порты, java, как писать под винду, как делать GUI, как "движок" соединить с GUI. Ничего этого знать НЕ НАДО. Достаточно всего лишь знать минимум - как работать в среде Arduino IDE и иметь плату esp32. На этом всё. Минимум требующихся знаний и уже будет результат. А вы подходите с точки зрения максималиста "А давай всё правильно сделаем, учтём всё. Не важно,что по пути потребуется знать ещё кучу всего". Я же предлагаю короткий путь к результату. Не самый красивый, не самый правильный. Просто путь к результату. Не больше и не меньше.

«Я предложил решение, использующее существующие у меня вещи: сломанный стул и бутылку пива. Для того, чтобы сделать такой стул, не нужны 4 бутылки или стекольная мастерская, достаточно одной бутылки (можно поцарапанной), стула и сверла по стеклу. Минимум действий и уже результат. А вы подходите с точки зрения максималиста „а давайте сделаем, чтобы стул стоял ровно и на нем можно было сидеть. Неважно, что для этого потребуется 4 бутылки“. Я же предлагаю короткий путь к результату. Не самый красивый, не самый правильный, да, сидеть на нем нельзя. Просто путь к результату. Не больше и не меньше.»

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

вы hello world никогда не писали? с точки зрения логики — нет в этой программе никакой пользы.

например не как тест своих способностей к программированию а как тест/обучение настройке окружения?
Sign up to leave a comment.