• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Нужна помощь Передача данных на ПК

mbc0

New member
Коротко: стоит задача собирать данные с нескольких датчиков температуры на ноутбук без интернета, сохранять в файл для дальнейшего анализа.
Ситуация:
На ноутбуке без интернета запущена программа - сокет сервер с адресом 127.0.0.1:11000 и сокет клиент. В клиенте набираем текстовую строку. Клиент соединяется с сервером, передает строку, получает ответ, разъединяется. Все работает.
На ноуте есть точка доступа WiFi.
ESP8266 успешно подключается к точке доступа, но соединиться с сервером по адресу 127.0.0.1:11000 не может.
Текст:
WiFiClient client;
if (!client.connect((127,0,0,1), 11000))
{ Serial.print(" connection failed"); delay(5000); return; }

Сообщает: connection failed
Что делать!!??

Добавлю. Большущая просьба. Если нечего сообщить по существу, не замусоривать тему.
 
Последнее редактирование:

mbc0

New member
Когда на ПК запускается локальный сервер, то получает по DNS от "lokalhost" два адреса:
[::1] (кстати что за чертовщина?)
или 127.0.0.1
работать с клиентом на ПК может по любому из них.
А с ESP никак.
За совет погуглить спасибо, обгуглился уже до умопомрачения!
 

Сергей_Ф

Moderator
Команда форума
ну во первых localhost.
Во вторых - это это локальный адрес компьютера для него самого и только для него
В третьих [::1] - это тоже локальный адрес по протоколу ipv6
esp не может подключиться к 127.0.0.1 потому, что этот адрес ведет на неё саму, а не на сервер

на счёт обгуглился - не верю
Яндекс
 

tretyakov_sa

Moderator
Команда форума
ESP8266 успешно подключается к точке доступа, но соединиться с сервером по адресу 127.0.0.1:11000 не может.
Текст:
WiFiClient client;
if (!client.connect((127,0,0,1), 11000)) { Serial.print(" connection failed"); delay(5000); return; }
Сообщает: connection failed
Что делать!!??
Выяснить реальный адрес компьютера. 127.0.0.1 не подойдет.
 
  • Like
Реакции: mbc0

Алексей.

Active member
Выяснить реальный адрес компьютера. 127.0.0.1 не подойдет.
Если он (ноут) кроме точки доступа ещё и dhcp сервер, а esp получает ip адрес по тому же dhcp, то адрес шлюза и будет тем самым адресом компьютера.
На ноутбуке без интернета запущена программа - сокет сервер с адресом 127.0.0.1:11000
Пока вы будите использовать "программа - сокет сервер с адресом 127.0.0.1:11000" никто не сможет установить с ней соединения с другого компьютера, esp и т.д. используйте на этой программе либо адрес 0.0.0.0 либо реальный адрес (тот что шлюзом работает).
 
  • Like
Реакции: mbc0

mbc0

New member
ну во первых localhost.
Во вторых - это это локальный адрес компьютера для него самого и только для него
В третьих [::1] - это тоже локальный адрес по протоколу ipv6
esp не может подключиться к 127.0.0.1 потому, что этот адрес ведет на неё саму, а не на сервер

на счёт обгуглился - не верю
Яндекс
Спасибо за "критику".
А по теме? Как подключиться ESP к локал серверу, есть что сказать?

Некоторые господа, слегка разбирающиеся в сетевых закоулках почему то считают, что и остальные просто обязаны с пеленок понимать эту чертову путаницу с масками, подсетями, шлюзами, динамическими, статическими, локальными и прочими адресами и т.п. и т.д.
Это неверное суждение.
 
Последнее редактирование:

Сергей_Ф

Moderator
Команда форума
Как подключиться ESP к локал серверу, есть что сказать?
Так вам уже объяснили выше. Не поняли?
Ну тогда придется слегка научиться разбираться в этой чертовой путанице. Никто за вас этого не сделает, тут волшебников нет. Уж извините. Ваш компьютер у вас в руках, вот и найдите его адрес.
Его укажите в клиенте на esp. На сервере сделайте как сказал @Алексей. .
 

nikolz

Well-known member
Спасибо за "критику".
А по теме? Как подключиться ESP к локал серверу, есть что сказать?

Некоторые господа, слегка разбирающиеся в сетевых закоулках почему то считают, что и остальные просто обязаны с пеленок понимать эту чертову путаницу с масками, подсетями, шлюзами, динамическими, статическими, локальными и прочими адресами и т.п. и т.д.
Это неверное суждение.
Некоторые господа, полагают, что можно сделать ВСЕ, не зная НИЧЕГО.
Надо просто наехать на тех,
кто знает как это сделать
или жалобно начать выпрашивать решение своих хотелок у них.
------------------
Типа - я ничего в этой хреновине не понимаю и изучать нет времени(жалко свое тратить - оно стоит денег), но требую халаяву и срочно (чужое время - не жалко, оно бесплатное).
 

=AK=

New member
Коротко: стоит задача собирать данные с нескольких датчиков температуры на ноутбук без интернета, сохранять в файл для дальнейшего анализа.
...
На ноуте есть точка доступа WiFi.
ESP8266 успешно подключается к точке доступа, но соединиться с сервером по адресу 127.0.0.1:11000 не может.
...
Что делать!!??
Чтобы решить поставленную задачу, вовсе не требуется устанавливать соединение с сервером. Достаточно подключиться к точке доступа (ноутбуку) и бродкастить UDP сообщения, содержащие собранные с датчиков данные. Эти сообщения будут видны всем узлам локальной сети, включая ноут. В этом случае никаких IP адресов узнавать не надо, достаточно знать свой собственный IP адрес, а к нему применить маску 255.255.255.0, это и будет бродкаст.
 
Последнее редактирование:
  • Like
Реакции: mbc0

mbc0

New member
Чтобы решить поставленную задачу, вовсе не требуется устанавливать соединение с сервером. Достаточно подключиться к точке доступа (ноутбуку) и бродкастить UDP сообщения, содержащие собранные с датчиков данные. Эти сообщения будут видны всем узлам локальной сети, включая ноут. В этом случае никаких IP адресов узнавать не надо.
Спасибо за подсказку!
 

mbc0

New member
Так вам уже объяснили выше. Не поняли?
Ваш компьютер у вас в руках, вот и найдите его адрес.
Его укажите в клиенте на esp.
Где он? Этот адрес.
Я не администратор сетей.
Простой программер микроконтроллеров.

По команде ipconfig /all
перебрал все показанные адреса, ни к одному не подключается.
 
Последнее редактирование:

nikolz

Well-known member
Где он? Этот адрес.
Я не администратор сетей.
Простойпрограммер микроконтроллеров.
есть три способа:
1) В ESP делаете рассылку широковещательную, адрес 255.255.2545.0 и порт 9000 (например)
на компе пишите сервер который принимает все что с прота 9000
И принимаете
Комп либо по сети подключен к роутеру
либо на нем висит свисток который подключится к роутеру по wifi
-------------------------
2) комп по свистку подкл к роутеру и вы получаете от роутера ip
в ESP указываете этот IP
---------------------------
3) ESP подключается к роутеру
смотрите в роутере IP
на компе если сервер на компе ждете с этого IP
если сервер на ESP то с компа обращаетесь по этому IP
----------------------
Все это если не лень можете почитать в букваре по интернет и не надо про системных админов заливать.
 

mbc0

New member
есть три способа:
1) В ESP делаете рассылку широковещательную, адрес 255.255.2545.0 и порт 9000 (например)
на компе пишите сервер который принимает все что с прота 9000
И принимаете
Комп либо по сети подключен к роутеру
либо на нем висит свисток который подключится к роутеру по wifi
Вот текст:
........
void setup()
{
Serial.begin(74880); pinMode(12,OUTPUT); pinMode(13,OUTPUT); pinMode(15,OUTPUT);
digitalWrite(15, HIGH);
#include <WiFi_scan.h>
#include <WiFi_connect.h>
digitalWrite(15, 0);
}
void loop() {
Serial.println(); Serial.print("соединение с "); Serial.print(iphost); Serial.print(':'); Serial.print(port);

// Use WiFiClient class to create TCP connections
WiFiClient client; if (!client.connect(iphost, port)) { Serial.print(" connection failed"); delay(5000); return; }
.......

Выводит:
Scan SSID
1: ASUS, Ch:6 (-57dBm)
2: Multi-Temp, Ch:6 (-52dBm)

Подключение к Multi-Temp.........................
Подключено Используем URL: 192.168.173.131
Хост модуля: ESP_112514


соединение с 255.255.255.0:11000 connection failed

На компе локал сокет сервер работает портом 11000
 

nikolz

Well-known member
Вот текст:
........
void setup()
{
Serial.begin(74880); pinMode(12,OUTPUT); pinMode(13,OUTPUT); pinMode(15,OUTPUT);
digitalWrite(15, HIGH);
#include <WiFi_scan.h>
#include <WiFi_connect.h>
digitalWrite(15, 0);
}
void loop() {
Serial.println(); Serial.print("соединение с "); Serial.print(iphost); Serial.print(':'); Serial.print(port);

// Use WiFiClient class to create TCP connections
WiFiClient client; if (!client.connect(iphost, port)) { Serial.print(" connection failed"); delay(5000); return; }
.......

Выводит:
Scan SSID
1: ASUS, Ch:6 (-57dBm)
2: Multi-Temp, Ch:6 (-52dBm)

Подключение к Multi-Temp.........................
Подключено Используем URL: 192.168.173.131
Хост модуля: ESP_112514


соединение с 255.255.255.0:11000 connection failed

На компе локал сокет сервер работает портом 11000
могу выложить вам для изучения и применение сервер на луа для компа , который слушает по указанному порту всех и отправляет ответ ASK при получении данных с ESP
------------------------- сервер----------------------
local socket=require("socket")
local host,port ='*',3999; local udp = socket.udp(); local data
udp:setsockname(host,port);
while 1 do
local data,ip,port = udp:receivefrom()
if data then print(os.date() .. ">"..data) udp:sendto("ASK",ip,port) end
end
-------------------------------------------
Для ESP выкладывать не буду, так как это на СИ и не 10 строк.
 

=AK=

New member
Вот текст:
........
Это не текст, а какие-то бессмысленные обрывки текста. Можно догадаться, что сначала сканируете окружающие сети, потом подключаетесь к одной из них, после чего непонятно зачем пытаетесь подключиться к 255.255.255.0:11000. Хотя вам прямым тестом было сказано, что:

1) Подключаться по TCP ни к кому не надо. Вы должны послать UDP сообщение на широковещательный адрес. При отсылке UDP сообщений никаких подключений не происходит, сообщение просто уходит адресату, без ответа. В случае широковещательного адреса его получат все узлы локальной сети, к которой вы подключились.

2) 255.255.255.0 это не сам IP адрес, а маска для него. То есть, вы должны взять известный адрес локальной сети (можно адрес хоста, но на мой вкус лучше взять свой собственный адрес) и применить к нему маску, в результате вы получите адрес, который для этой сети является широковещательным.

Почитайте, что такое TCP и UDP и в чем разница между ними, а то вы совсем уж неприглядно выглядите, даже самых базовых вещей не знаете и демонстративно не желаете знать, просто дОлбитесь как баран в чугунные ворота.
 

nikolz

Well-known member
Это не текст, а какие-то бессмысленные обрывки текста. Можно догадаться, что сначала сканируете окружающие сети, потом подключаетесь к одной из них, после чего непонятно зачем пытаетесь подключиться к 255.255.255.0:11000. Хотя вам прямым тестом было сказано, что:

1) Подключаться по TCP ни к кому не надо. Вы должны послать UDP сообщение на широковещательный адрес. При отсылке UDP сообщений никаких подключений не происходит, сообщение просто уходит адресату, без ответа. В случае широковещательного адреса его получат все узлы локальной сети, к которой вы подключились.

2) 255.255.255.0 это не сам IP адрес, а маска для него. То есть, вы должны взять известный адрес локальной сети (можно адрес хоста, но на мой вкус лучше взять свой собственный адрес) и применить к нему маску, в результате вы получите адрес, который для этой сети является широковещательным.

Почитайте, что такое TCP и UDP и в чем разница между ними, а то вы совсем уж неприглядно выглядите, даже самых базовых вещей не знаете и демонстративно не желаете знать, просто дОлбитесь как баран в чугунные ворота.
Все еще проще
Не надо брать известный адрес сети, можно взять любой адрес в сети даже не существующий
А сервер на компе, который я выложил выше примет посылку с ESP
Я беру адрес равный адресу роутера(это gw в структуре IP4_ADDR для ESP)
но последний байт 255
 

mbc0

New member
Все еще проще
Не надо брать известный адрес сети, можно взять любой адрес в сети даже не существующий
А сервер на компе, который я выложил выше примет посылку с ESP
Я беру адрес равный адресу роутера(это gw в структуре IP4_ADDR для ESP)
но последний байт 255
Установил на ноуте LUA
Запустил ваш сервер.

вот кусок проги в ардуино. выше соединение WiFi точкой доступа
.....
Serial.print("Connected! IP address: ");
Serial.println(WiFi.localIP());
Serial.printf("UDP server on port %d\n", localPort);
Udp.begin(3999);
}

void loop() {
Serial.println("Send");
Udp.beginPacket((192,168,173,255), 3999);
Udp.write("Glotay chert poberi!!");
Udp.endPacket();
Serial.println("End");

Не видит хоть тресни.
 
Сверху Снизу