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
 
Сверху Снизу