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

ESP8266 коммуникация со стационарным компьютером с windows

AlexTVR

Member
Добрый день!
Перелопатил форум, но так и не нашел ответа на вопрос.
Итак, на стационарном компе готовлю текстовый файл в редакторе word в определенной папке.
ESP8266 подключена в качестве клиента (сервера) к wiFi в домашней локальной сети.
ESP8266 знает адрес файла, периодически подключается к стационарному компу и смотрит изменился ли файл.
Если изменился, забирает его и записывает в свою файловую систему.
Посоветуйте варианты решения.
 

enjoynering

Well-known member
Очевидно же. На стационарном компе должен крутиться ftp сервер (например filezilla). К нему то и обращается ftp клиент запущенный на esp8266.
 

CodeNameHawk

Moderator
Команда форума
как ESP может читать файлы на стационарном компе.
Напрямую не может читать, значит нужна на компе программа для связи с есп.
Помимо фтп это может быть вебсервер или можете написать свою программу.
 

nikolz

Well-known member
Добрый день!
Перелопатил форум, но так и не нашел ответа на вопрос.
Итак, на стационарном компе готовлю текстовый файл в редакторе word в определенной папке.
ESP8266 подключена в качестве клиента (сервера) к wiFi в домашней локальной сети.
ESP8266 знает адрес файла, периодически подключается к стационарному компу и смотрит изменился ли файл.
Если изменился, забирает его и записывает в свою файловую систему.
Посоветуйте варианты решения.
приводил давно на форуме решение на луа. Примерно 10 строк .
алгоритм работы может быть такой
ESP8266 - это клиент. Комп - это сервер
протокол UDP
ESP8266 обращается к компьютеру который проверяет изменился ли файл после предыдущего обращения
если да - то в ответ отсылает файл если нет то отсылает "ВигВам"
Чтобы к серверу могли обратится любые ESP делаем работу ESP в широковещательном режиме.
----------------
Посмотрите библиотеку Luasocket для windows
 

semper-7

New member
Добрый день!
Перелопатил форум, но так и не нашел ответа на вопрос.
Итак, на стационарном компе готовлю текстовый файл в редакторе word в определенной папке.
ESP8266 подключена в качестве клиента (сервера) к wiFi в домашней локальной сети.
ESP8266 знает адрес файла, периодически подключается к стационарному компу и смотрит изменился ли файл.
Если изменился, забирает его и записывает в свою файловую систему.
Посоветуйте варианты решения.
Стационарный комп о том, что изменился его файл однозначно узнает раньше чем ESP. Может лучше он сам отправит его на ESP. Т.е. может лучше реверсировать клиент-сервер систему. Если конечно ESP всегда включен.
 

semper-7

New member
Т.е. я предлагаю поднять на ESP tftp сервер. А с компа делать чтото вроде: tftp 192.168.1.123 PUT file.txt
 

nikolz

Well-known member
вот пример сервера на луа.
-------------------
socket = require("socket");
host = host or "localhost";
port = port or "8383";
server = assert(socket.bind(host, port));
ack = "\n";
while 1 do
print("server: waiting for client connection...");
control = assert(server:accept());
while 1 do
command = assert(control:receive());
assert(control:send(ack));
print(command);
(loadstring(command))();
end
end
 

pvvx

Активный участник сообщества
Очевидно же. На стационарном компе должен крутиться ftp сервер (например filezilla). К нему то и обращается ftp клиент запущенный на esp8266.
С FTP есть простейшее решение:
ESP должен опрашивать File Modification Time (команда MDTM) и запоминать это время. Если изменилось - грузить файл.

Вот только нормального FTP клиента на ESP нет и не будет в открытом доступе :p
 

semper-7

New member
Про ftp и tftp. Первый работает по TCP с авторизацией. Второй по UDP. Реализация первого довольно сложна. Второй гораздо проще. Мой tftp сервер на LUA всего 793 байта. Скачать можно на https://github.com/semper-7/esp-12
 

Вложения

  • 35.4 KB Просмотры: 5

semper-7

New member
Вот готовое решение с tftp. На ESP - tftp.lua, на компе cmd скрипт filetime.cmd в одной папке с контролируемым файлом filexxxx.txt:
T - время между проверками в секундах, сейчас там 2 сек.

@echo off
set IP=192.168.1.21
set F=filexxxx.txt
set T=2
set Z=""
:lll
for %%I in (%F%) do set X=%%~tI
if not "%X%"=="%Z%" tftp -i %IP% PUT %F%
set Z=%X%
choice /d n /t %T% >nul
goto lll

Все вложено. Проверил у себя - работает.
 

Вложения

pvvx

Активный участник сообщества
Все вложено. Проверил у себя - работает.
Если конечно ESP всегда включен.
А если 100 штук ESP и они сами выходят на связь когда захотят и в любой точке мира?
Тут уже нужны и простейшие SSL.
Тогда простое решение - github. У github, через api, можно запросить когда был последний коммит к файлу и загрузить если сменился. Всё делается пару командами c https в Arduino.
 

Алексей.

Active member
Тут уже нужны и простейшие SSL.
Одна проблема, от времени сертификаты тухнут, их заменяют свежими
отпечаток прежнего сертификата, по которому определяли подлинность, уже бесполезен, а на новый сертификат где теперь отпечаток добывать?
 

pvvx

Активный участник сообщества
Одна проблема, от времени сертификаты тухнут, их заменяют свежими
отпечаток прежнего сертификата, по которому определяли подлинность, уже бесполезен, а на новый сертификат где теперь отпечаток добывать?
Где берется сертификат и когда меняется, к примеру для файла JDY-10-pins.gif ?
 

pvvx

Активный участник сообщества
Алексей. - вы хотите получить готовый список действий или скетч для обновления устройств через github.
Я его не дам - т.к. загадят весь github непонятными бинарниками :)
Специальных сертификатов никаких не требуется. Обычное HTTPS соединение. И я уверен, что вы сами без проблем для себя это сделаете, если потребуется.

Для IoT пущай мучают специальные серверы :p
 
Сверху Снизу