• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Решено Websocket на LUA

blak soft

Member
пытаюсь подключиться к серверу "Градусник "
следующим кодом
Код:
local ws = websocket.createClient()
local sost

ws:on("connection", function(ws)
  sost = ('подключились')
  print (sost)
end)

ws:on("receive", function(_, msg, opcode)
  print('сообщение:', msg, opcode) -- opcode is 1 for text message, 2 for binary
end)

ws:on("close", function(_, status)
  print('отключились', status)
  ws = nil -- required to Lua gc the websocket client
end)


ws:connect("http://h120737.s07.test-hf.su/index.php")
if sost~= nil then ws:send('email=мыло',1)end
print("IP контроллера ",wifi.sta.getip())
print("уровень сигнала ",wifi.sta.getrssi ())
ws = nil
ответ получаю следующий

отключились -1
отключились nil
IP контроллера 192.168.1.101 255.255.255.0 192.168.1.1
уровень сигнала -36
nil nil nil
ошибка -1 означает (Не удалось извлечь протокол из URL-адреса)
можете подсказать что делаю не так
вот какие модули в прошивке
modules: adc,bit,crypto,ds18b20,encoder,file,gpio,http,net,node,ow,rtcfifo,rtcmem,rtctime,tmr,uart,websocket,wifi
 
Последнее редактирование:

Юрий Ботов

Moderator
Команда форума
Код:
пытаюсь подключиться к серверу "Градусник "
- антивирус воет благим матом на эту ссылку...
 

blak soft

Member
На сервере есть term.php
PHP:
code:
<?PHP
$t = $_POST['temp'];
$P = $_POST['p'];
$log = fopen("d.txt","at");
fwrite($log,"\n $t:$P \n");
fclose($log);
exit;
?>
Писал на делфи программу все нормально отправляла
А на luaс esp8266
Не хочет подскажите как это организовать?
 

Юрий Ботов

Moderator
Команда форума
Попробуйте (у вас это 19 строка):
Код:
ws:connect("ws://h120737.s07.test-hf.su/term.php")
Если конечно я правильно вас понял...
 

blak soft

Member
с проблемой подключения разобрался просто не тот модуль для подключения использовал
вот код для подключения по HTTP может кому пригодится
Код:
 http.post('http://ваш адрес.php','','что хотим послать',
  function(code, data)
    if (code < 0) then
      print("HTTP request failed")
    else
      print(code, data)
    end
  end)
но возник другой вопрос какой надо отправить запрос чтобы автоматически заполнить форму на сайте
http://h120737.s07.test-hf.su/
 
Последнее редактирование:

CodeNameHawk

Moderator
Команда форума
Посылайте сразу
http.post('http://ваш адрес.php?temp=10&p=20','','что хотим послать',
а на сайте разбирайте без формы
$temp = $_GET['temp'];
$p = $_GET['p'];
 

blak soft

Member
да сервер это куда подключаются
у меня esp8266 с датчиком температуры он посылает на сервер данные, а с сервера программка берет данные и заносит их в журнал
 

CodeNameHawk

Moderator
Команда форума
просто надо было на стороне сервера изменить POST наGET
а с сервера программка берет данные и заносит их в журнал
Я прямо на сервере записываю данные датчиков в SQL базу данных.
С базы данных намного удобней выбирать данные, например за конкретную дату.
 
Последнее редактирование:

CodeNameHawk

Moderator
Команда форума
гораздо проще хранить такие данные в виде файлов с именем в виде даты и нет надобности использовать SQL.
Особенно проще потом выбрать все значения, где температура выше заданного уровня, посмотрю как вы будете перебирать сотни файлов.
 

CodeNameHawk

Moderator
Команда форума
а зачем Вы это делаете? и за сколько лет?
Если за год то полагаю миллисекунд 10.
Управление котлом. За три года. Если температура поменялась больше чем на один градус - не чаще раза в минуту, иначе раз в 20 минут.
По этим данным оптимизировал управление работы насосами системы отопления.
Просто экономия топлива.
 
Последнее редактирование:

CodeNameHawk

Moderator
Команда форума
Вы сами себе противоречите
все это надо делать в реальном времени.
и
надо сжимать данные а не слать все подряд засоряя сервер и эфир.
Если сервер не может принять 50 байт раз в минуту, рекомендую поменять сервер.
(Отсылать данные позже не будет наблюдения через интернет в реальном времени, ну пусть и с опозданием до минуты)
За год набегает около 5 МБайт данных.(Это с 14 датчиков температуры и немного служебной информации)
Если надо могу дать приглашение на бесплатный сервер с базой данных, который справляется и с большим потоком.

А собирать в базу данных а потом задним числом управлять - это как после драки махать кулаками.
Только анализ после 24 часов показывает, насколько точно был загружен котел и какие изменения настроек температурного режима работы дают комфортную температуру в доме.
Хорошо просматривается зависимость от внешней температуры.(Надо бы добавить датчик скорости ветра, очень влияет на температуру в доме)
Индикация состояния всей системы в реальном времени присутствует, но система справляется без нее.

Придумаете и сделаете свою систему или увидите какое то улучшение, вот тогда и напишите.

п.с. В этом году посмотрел автоматику промышленного автоматического котла на гранулы.
Обновление данных на странице раз в 30 секунд, запись в базу данных раз в 5 минут.
 
Последнее редактирование:

CodeNameHawk

Moderator
Команда форума
стремно имея мощный проц на ESP и кучу памяти делать вашу обработку на сервере
С управлением справляется атмега16. Данные с сервера только для меня, котел ручной с автоматической заслонкой подачи воздуха, сам не может ни дров подкинуть ни температуру поменять, только включение и выключения насосов в контурах отопления в зависимости от температур полученных с датчиков.
Вот и нужен был внешний сервер для нахождения этой зависимости, для оптимальной работы котла.
Сейчас сервер только для хранения и выдачи информации в удобном виде.

На есп локальный сервер и отсылка данных на внешний сервер.
Есп иногда ловит интересный глюк (это скорее всего от импульсной помехи по питанию, при выключении насоса)
перестает работать файловая система, файлы считывается пустыми, сама есп продолжает нормально работать, атмега тоже в это время ловит помеху и перегружается собакой.
Вызвать зависание в ручную не получается.
(за три года атмега пока ни разу не зависла, спасает собака, да и котел имеет пассивные системы безопасности на такой случай)
 
Последнее редактирование:

CodeNameHawk

Moderator
Команда форума
я отказался от файловой системы
-------------------------------
применять ее в большинстве систем практически нет смысла.
С этим согласен, но осталось со времени отладки html файлов, удобно переписать только один короткий файл, не меняя прошивки.

а еще люблю экономить потребление отправляя ESP спать
а также исполнять работу с датчиками в boot.
В данном случае нет особого смысла(хотя и не помешало бы), так есп должна оперативно реагировать на внешние запросы и получать данные с атмеги по uart.

не критики ради а дискуссии для.
Ну так не бросаемся друг на друга, просто беседа.
 

CodeNameHawk

Moderator
Команда форума
2) уменьшаем требования к источнику питания его размеры и стоимость
Мне видится, что блок питания должен быть рассчитан на максимальную мощность плюс запас для надежности.
Это, если система будет потреблять мах ток длительное время(по принципу, если что то может пойти не так, то когда нибудь это случится), например во время нештатной ситуации.
сли же мы отказываемся от сервера и считаем все в ESP , т е ей ничего не надо ни атмегу ни сервер
Ей то не надо, а мне не хочется получить паровою бомбу в виде перегретого котла (по принципу, если что то может пойти не так, то когда нибудь это случится).
Поэтому всеми доступными методами пытаюсь эту вероятность уменьшить.
И такие методы как запрещения ухода в сон, разделение заданий на разные процессоры, пассивные методы безопасности(предохранительный клапан, отбор тепла сомотеком) и человеческое наблюдение того стоят.
 

CodeNameHawk

Moderator
Команда форума
у Вас нет дублирования функций а есть разнесение их по разному железу - это не повышает отказоустойчивость
Если принять, что надежность есп ниже чем атмеги(уже одно то, что в есп часть закрытого кода), то повышает, так как отказ есп не мешает работе атмеги.
Надежность всей системы будет равна надежности атмеги.
Дублирование, резервирование и внешний WDT полезное и даже нужное и такое бы применил, если котел был бы автоматическим или на продажу.
Если кто покупал и использовал посоветуйте плату преобразователя с 12 на 220В с "чистой синусойдой" на 200 ватт.
 
Сверху Снизу