• Система автоматизации с открытым исходным кодом на базе 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)
 
Сверху Снизу