кас
Вот что нужно!
кас
Обратная связь даже не нужна
Alexandre
чето тебя штырит
Slava
https://pin.it/dtjlxbudfc7hn5
Slava
Вот интересная статья, но скажу сразу, проблем много, перепаивать под лупой надо. У кого плохое зрение - будет еще хуже. Проще из модулей-полуфабрикатов собрать в пластиковой коробочке.
Andy
Andy
Alexandre
Славером?
ты не написал в сообщении, мастера тебе в МК надо или слейва, а потому по умолчанию мастер (для подключения внешней периферии)
слейв - это в МК редкость в принципе, и слейв-битбэнг реально сложен с прерываниями, а без прерываний затратен из-за постоянных ожиданий
Andy
кас
кас
Так вот, еще раз, подскажите, как проще и быстрее всего, в плане быстродействия, кинуть команду с ноута на есп? Еспха к ноуту подключена напрямую. Без инета
кас
Подключена по вайфаю
кас
Тк я попробовал на есп запустить вебсервер, на нём пару кнопок, и их нажатия обрабатывать, и работало это всё оч медленно, ищу способ сделать это иначе.
Во первых, снять с есп задачу отрисовки страницы, сделать свой гуи, это изи.
И во вторых, ищу способ наиболее быстрого способа передачи пакета данных напрямую.
кас
Хз, пытаюсь понятно объяснять)
Slava
Slava
Еще быстрее через сериал порт
кас
кас
Вот я как-то так делал!!!
кас
Но не помню как
Slava
По вифи post командой
кас
Я коннектился по ip с компа и передавал текст
кас
Не помню как
Slava
Ближе к ночи могу код показать
кас
И код этот потерял
кас
Телнет что-ли
Andy
кас
Ок, попробую
кас
Я прост через жопу делал
кас
По кнопке он через жс загружал другую страницу, есп это детектила и загружала старую с кнопками
кас
И по этому событию чето делала
кас
Не было времени разбираться с пост гет запросами
Slava
Я коннектился по ip с компа и передавал текст
WiFiClient TCPclient;
//---------------------------------------------------------
int Msg_for_Minion(String msg, String chat_id)
{
print_lcd(6, 0, "Msg_for_Minion");
delay(1);
String msg_ip = "";
String msg_cmd = "";
String ipm = "";
if (msg.indexOf("/m0") == 0)
{
msg_cmd = "list_cmd";
if (msg.indexOf("/m01") == 0) {ipm = "192.168.1.240";}
if (msg.indexOf("/m02") == 0) {ipm = "192.168.1.241";}
if (msg.indexOf("/m03") == 0) {ipm = "192.168.1.242";}
if (msg.indexOf("/m04") == 0) {ipm = "192.168.1.243";}
if (msg.indexOf("/m05") == 0) {ipm = "192.168.1.244";}
if (msg.indexOf("/m06") == 0) {ipm = "192.168.1.245";}
if (msg.indexOf("/m07") == 0) {ipm = "192.168.1.246";}
if (msg.indexOf("/m08") == 0) {ipm = "192.168.1.247";}
if (msg.indexOf("/m09") == 0) {ipm = "192.168.1.248";}
}
else
{
if (msg.indexOf("") > 0)
{
int pd = msg.indexOf("");
ipm = msg.substring(0, pd);
ipm = "192.168.1." + ipm;
ipm.replace("_", "");
ipm.replace("/m", "");
msg_cmd = msg.substring(pd + 2);
}else{
int pd = msg.indexOf("__");
ipm = msg.substring(0, pd);
ipm = "192.168.1." + ipm;
ipm.replace("_", "");
ipm.replace("/m", "");
msg_cmd = "slave";
}
}
WiFiClient client;
//delay(1);
if (!client.connect(ipm.c_str(), 80)) {
Serialprint("ERR: connection to minion failed" + ipm);
Msg_to_chat_id_over_TlgBot(chat_id, "миньон " + ipm + " не доступен, возможно села батарейка", "");
client.flush();
client.stop();
client.flush();
kill_tcp();
return 0;
}
Serialprint("->min [" + ipm + "][" + msg + "][" + msg_cmd + "]");
//print_lcd(2, 0, "->min " + (msg) + "");
String url = "/input_dmv?msg=" + msg_cmd + "&chat_id=" + chat_id;
//Serialprintln("Requesting URL: ");
//Serialprintln(url);
client.print(String("GET ") + url + " HTTP/1.1\r\n" +
"Host: " + msg_ip + "\r\n" +
"Connection: close\r\n\r\n");
unsigned long timeout = millis();
while (client.available() == 0) {
if (millis() - timeout > 6000) {
Serialprintln("ERR:");
Serialprintln("ERR: Msg_for_Minion Timeout !" + msg_ip);
Serialprintln("ERR:");
Msg_to_chat_id_over_TlgBot(chat_id, "миньон " + msg_ip + " не доступен, возможно села батарейка", "");
client.flush();
client.stop();
client.flush();
kill_tcp();
return 0;
}
}
String line = "";
while (client.available()) {
line += String(char(client.read()));
}
Serialprintln("<-min: " + line);
client.flush();
client.stop();
client.flush();
kill_tcp();
return 1;
}
Slava
это гет
Slava
String command = "\
POST " + url + " HTTP/1.1\r\n\
Host: " + config.ip_domovoy + "\r\n\
Content-Type: text/plain\r\n\
Сonnection: close\r\n\
Content-Length: " + txt.length() + "\r\n\r\n" + txt;
TCPclient.print(command);
Slava
это пост
Роман
Попробуйте почитать про передачу через UDP, я сам не разбирался, но куски кода что видел довольно простые и понятные. Вероятно это будет похоже на передачу "напрямую"
Slava
udp не гарантирует доставку данных, если я правильно знаю
Роман
Ну get/post вероятно вообще единственный метод со "встроенными" ответами о получении данных.
НО!Может там спамить будет каждую секунду данными что-то по UDP, и если один кусочек из 10 потеряется не критично.
В общем я лишь "где-то что-то" слышал) и посоветовал почитать по подробней) А вдруг!
Slava
да, при хорошем уровне вифи и прямым кодом и не сильнозагруженной ESP 1 секунда или даже меньше на передачу данных с получением ответа о доставке.
Роман
А если 10 раз за секунду?) Думаю через udp - легко)
Slava
если 10 раз в секунду - нужно что то помощьнее есп 😭
Slava
если потеря данных не критична - можно udp
Slava
в моём проекте критично - я выбрал TCP GET POST и еще проверку на доставку и повторную отправку через 15 секунд
кас
кас
Он без проверки
Anonymous
@johnsmithlf будет жить. Поприветствуем!
Anonymous
Danill maslov будет жить. Поприветствуем!
Yuriy
Yuriy
Slava
не увидел примера кода на WS
Yuriy
В продолжение, конечно тут зависит от размера того , что "гоняется", но накладные расходы минимальны относительно http post. Я не знаю, что за проект и требования. Возможно вам буферизация требуется, если канал не справляется с потоком данных. Кстати, чем меняется "занятость"? 10 раз в сек, это не звучит внушительно...
Anonymous
Mihail Shoshin будет жить. Поприветствуем!
Slava
Slava
почему до 81000, а не 82000 ?
Yuriy
Почему не MQTT?
Да почему нет, с учётом , что MQTT поверх WebSocket работает. 😀 Он выше в сетевой модели , уровнень абстракций уже прикладной.
если подходит для задачи , то изобретать велосипед не стоит (разве в целях изучения)
Ruslan
Anonymous
@AlexKondrat будет жить. Поприветствуем!
Yuriy
Я предполагал поверх TCP/IP
Можно и так, только что слать сообщения будет? Веб морда? В любом случае, конечно всё по tcp/ip (udp) пойдет.
Aleksandr
Aleksandr
Aleksandr
Aleksandr
Aleksandr
Aleksandr
https://docviewer.yandex.ru/view/0/?*=KMW%2FWwmaQN6Tscc69nMplfIaWpp7InVybCI6InlhLWRpc2stcHVibGljOi8vYjRlbGZHQ2VORDFJRFZMcnNscjkvWkFjMkc4WktrTnF4cWxSQjhMakRhS2JpZHladFNRbDI2QUpMWVFVS05uN3EvSjZicG1SeU9Kb25UM1ZvWG5EYWc9PSIsInRpdGxlIjoidGVzdF9icmRfMjAxOTA1MjQucGRmIiwibm9pZnJhbWUiOmZhbHNlLCJ1aWQiOiIwIiwidHMiOjE1NTk4ODcyNDk5NjQsInl1IjoiNTI5NDA5NjE1MTU1OTY1NDMzNCJ9
ㅤ
Интересно. А рамка заводская пресформа или 3d принтер?
Indr1x
Устанешь пост обработку делать после принтера на партии больше пары штук
Indr1x
Это не принтер
Aleksandr
Aleksandr
Aleksandr
Думаю так понятнее будет
Slava
Кого интересует управление и уведомления есп32 через заблокированный телеграм, без https, без постоянного обращения к апи телеграм и мгновенное реагирование... смотрите там...
Slava
SZLAB
ESP32 ESP8266 TELEGRAM BOT
https://t.me/szlab
Andy
Подписался. Начал играть в ждуна. :)
ㅤ
Aleksandr