Comments 18
Заголовок: А не запилить ли нам хардварный чат?
Статья: Полностью софтварный чат на MQTT и COM, железки чисто для виду, в качестве wifi модема\mqtt-клиента )
Соответственно увидав заголовок я сразу представил аналоговый чат, буквально.
Честно говоря ожидал аналоговой реализации или чего нибудь подобного
Может попробовать жать текст для уменьшения объёма передаваемых данных и обхода ограничений открытых брокеров (явно не сработает при ограничении числа сообщений)? Интересно, а APT используют C2 на базе открытых MQTT-брокеров, когда зловред мимикрирует под IoT-устройство?
В коде TaskHandler ошибки в части проверки, горит уже светодиод или нет, скобок не хватает. И сразу после гордое "код протестирован и работает".
Где на ваш взгляд не хватает и почему? Только что, не внося никаких изменений - запустил код на esp32. Все нормально работает:
if (digitalRead(LED==LOW) )
LED==LOW возвращает False, что в этом случае считывает digitalRead - загадка.
...то в таком случае, ровным счётом ничего не произойдёт ;-)
Проиллюстрирую наглядно: Посылается "ON" и потом ещё раз "ON" - соответственно, возникает описанная вами ситуация. И, как в одной старой передаче: "мы ведём репортаж прямо из центра событий, с улицы, на которой ровным счётом ни-че-го не происходит" :-)
И в противном случае: так же неоднократно посылается "OFF":
Так что ничего страшного...Но эту функцию ( void TaskHandler (String s) ) - я просто приложил как пример, откуда можно "дёргать" строку и куда передавать, для выполнения некоего действа. Она, в рамках этого кода глубоко вторична. Основной код - работает как и должен.
Но, в целях саморазвития: как нужно было бы улучшить этот фрагмент, с вашей точки зрения?
Ну, т.е. добавить сюда шифрование сообщений (подсказываю: не обязательно использовать хардварные решения 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. На этом всё. Минимум требующихся знаний и уже будет результат. А вы подходите с точки зрения максималиста "А давай всё правильно сделаем, учтём всё. Не важно,что по пути потребуется знать ещё кучу всего". Я же предлагаю короткий путь к результату. Не самый красивый, не самый правильный. Просто путь к результату. Не больше и не меньше.
например не как тест своих способностей к программированию а как тест/обучение настройке окружения?
Как я делал хардварный чат — а получился всё равно софтварный ¯\_(ツ)_/¯