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

Нужна помощь Web сервер

amurka

New member
Добрый день
Помогите пожалуйста разобраться. Пытаюсь научиться работать с esp. Есть плата Amica к ней подключен DHT22. Хотелось получить веб страничку, на которой отображались бы значения температуры и влажности. Пробовал подключать в режимах STA и AP. Результат -
при подключении в режиме STA модуль к сети подключается. На страничку со стационарного ПК (подключен к роутеру по кабелю)можно зайти, значения температуры и влажности отображаются (при первом заходе с некоторой задержкой, при последующих обновлениях страницы - сразу). С планшета\смартфона зайти на страницу не получается ни в режиме STA ни в режиме AP("веб страница недоступна"). Причем в терминале видно, что запросы от этих устройств приходят.
Что я делаю не так?? Как получать данные при заходе на страничку с мобильных устройств?
Код честно признаюсь передрал с просторов интернета, слегка поправив в части параметров сети и назначения ножек для dht.

-- static IP setup
wifi.setmode(wifi.SOFTAP)
wifi.ap.config({ssid="FriGate",auth=wifi.OPEN})
--wifi.sta.connect()
wifi.ap.setip({ip="192.168.0.1",netmask="255.255.255.0",gateway="192.168.0.1"})
print("ESP8266 mode is: " .. wifi.getmode())
print("The module MAC address is: " .. wifi.ap.getmac())
print("Config done, IP is "..wifi.ap.getip())

PINdht = 4 -- data pin, GPIO2
-- run the server

srv=net.createServer(net.TCP,60)
print("Server created on " .. wifi.ap.getip())
srv:listen(80,function(conn)
conn:eek:n("receive",function(conn,request)
print(request)

status, temp, humi, temp_dec, humi_dec = dht.read(PINdht)
if status == dht.OK then
-- Integer firmware using this example
print(string.format("DHT Temperature:%d.%03d;Humidity:%d.%03d\r\n",
math.floor(temp),
temp_dec,
math.floor(humi),
humi_dec
))

-- Float firmware using this example
-- print("DHT Temperature:"..temp..";".."Humidity:"..humi)

elseif status == dht.ERROR_CHECKSUM then
print( "DHT Checksum error." )
elseif status == dht.ERROR_TIMEOUT then
print( "DHT timed out." )
end

if string.match(request, "machine") then
conn:send("\"Температура\": \""..math.floor(temp).."."..(temp_dec).."\", \"Влажность\": \"".. math.floor(humi).."."..(humi_dec).."\"")
else
conn:send('<html>')
conn:send('<title>On Deck</title></head>')
conn:send('<body bgcolor=\"#ffffff\">')
conn:send('<center>')
conn:send('<table bgcolor=\"#0000ff\" width=\"90%\" border=\"0\">')
conn:send('<tr>')
conn:send(' <td><font size=\"4\" face=\"arial, helvetica\" color=\"#ffffff\"><center>Температура</center></font></td>')
conn:send('</tr>')
conn:send('<tr>')
conn:send(' <td><font size=\"9\" face=\"arial, helvetica\" color=\"#ffffff\"><center>'..math.floor(temp).."."..(temp_dec)..'&deg;C</center></font></td>')
conn:send('</tr>')

conn:send('<tr>')
conn:send(' <td><font size=\"4\" face=\"arial, helvetica\" color=\"#ffffff\"><center>Влажность</center></font></td>')
conn:send('</tr>')
conn:send('<tr>')
conn:send(' <td><font size=\"9\" face=\"arial, helvetica\" color=\"#ffffff\"><center>'.. math.floor(humi).."."..(humi_dec)..'%</center></font></td>')
conn:send('</tr>')

conn:send('</table>')
conn:send('</center>')
conn:send('</body></html>')
end

end)
end)
 
Сверху Снизу