Place to put your Basic demos and examples

Moderator: Mmiscool

User avatar
By Mmiscool
#35815 You are 100% correct about the cls being required. The html buffer can get filled up if you are prininting to it a lot.
User avatar
By Mmiscool
#35941 you can also use the serialprintln to only print to the serial port leaving the html buffer free.
User avatar
By peridot
#36062 I have now completed a working version of the ESP8266-MCU Web interface. The following functions are provided.
Multi data field output, software captures these fields from the MCU and makes them available to the WEB GUI, current software has 10 fields but more or less may be configured
Format, sync: field1:------field10:cmd:crlf
A command may also be sent on its own line as cmd:crlf

Commands are in the following format
"Send Email" email:crlf then on the next line sync: to_address:reply_address:subject:body:crlf
"Send Thingspeak data" ts:crlf then on the next line sync: key:fieldnumber:fielddata:crlf
"Change Network" net:crlf then on new line sync: name:pasword:ip:gateway:mask:crlf
"Network Time" ntp:crlf requests NTP time info
"ESP System info" info:crlf requests system information network name,IP,freeram,freeFlash
"ESP reboot" reboot:crlf restarts the ESP8266
"ESP quit" quit:crlf quits the ESP software, useful during development.

A constant stream of information is sent from the ESP including responses to above commands , this data may be parsed by the connected MCU.

This software needs ESPbasic 1.65 or greater, contains the new serial port commands.
Thanks to Mike for ESPbasic and being extremely responsive to change requests.

Code: Select allmemclear
serialprintln ""
serialprintln "uMite WUI Initialising......"
ver$ = "ESP8266 uMite WUI 0.8b"
'connect "Network" "password" "IP"" "gateway" "mask"
'baudrate 38400
serialflush
serialtimeout 3000
timesetup(11,0)
setupemail "mail.smtp2go.com" 2525 "youraddress" "password"
gosub [getinfo]

let otemp = 23.3
let ohum = 78
let ows = 10
let opres = 1008
let gtemp = 23.3
let ghum = 78
let bv = 12.6
let pvv = 18.6
let bp = 120
let pvp = 90

'put your web GUI code here
cls
wprint "<head>"
wprint "<meta http-equiv='refresh' content='15;URL=/input?'>"
wprint "</head>"

print "uMite Serial Network Server"
print
wprint "<br>"
wprint "Weather Station"
wprint "<br>"
wprint "Temperature="
wprint htmlvar(otemp)
wprint " 'C "
wprint " Humidity="
wprint htmlvar(ohum)
wprint " %RH"
wprint "<br>"
wprint " Avg Wind Speed="
wprint htmlvar(ows)
wprint " km/h"
wprint " Pressure="
wprint htmlvar(opres)
wprint " hpa"
wprint "<br>"
wprint "<br>"
wprint "GreenHouse"
wprint "<br>"
wprint "Temperature="
wprint htmlvar(gtemp)
wprint " 'C "
wprint " Humidity="
wprint htmlvar(ghum)
wprint " %RH"
wprint "<br>"
wprint "<br>"

wprint "Garden Solar"
wprint "<br>"
wprint "Battery="
wprint htmlvar(bv)
wprint " VDC "
wprint " PV Panels="
wprint htmlvar(pvv)
wprint " VDC"
wprint "<br>"
wprint "Battery Power Used="
wprint htmlvar(bp)
wprint " wHrs "
wprint " PV Power Gen="
wprint htmlvar(pvp)
wprint " wHrs "
wprint "<br>"
wprint "<br>"

button "Exit" [quit]
timer 6000 [update]
wait
'end of GUI code




'code runs as called by timer
'receives data packet from MCU
[update]
input "getdata:" str$
serialprint "LineLen:"
serialprintln len(str$)
serialprint "Packet:"
serialprintln str$
delay 5
if len(str$) = 1 then goto [exitupdate]
if instr(str$,"sync:") > 0 then goto [parsedata]
gosub [parse]
serialprintln field$
cmd = field$
goto [command]
[parsedata]
serialprintln "Parse data"
'each of your variables in sequence to be parsed from data string
gosub [parse]
sstatus = field$
gosub [parse]
otemp = field$
gosub [parse]
ohum = field$
gosub [parse]
ows = field$
gosub [parse]
opres = field$
gosub [parse]
gtemp = field$
gosub [parse]
ghum = field$
gosub [parse]
bv = field$
gosub [parse]
pvv = field$
gosub [parse]
bp = field$
gosub [parse]
pvp = field$
gosub [parse]
cmd = field$
[command]
serialprint "Command:"
serialprintln cmd
if cmd == "ntp" then gosub [gettime] else [exitupdate]
if cmd == "email" then gosub [sendemail] else [exitupdate]
if cmd == "info" then gosub [getinfo] else [exitupdate]
if cmd == "quit" then goto [quit]
if cmd == "reboot" then reboot
if cmd == "net" then gosub [setnet]
if cmd == "ts" then gosub [thingspeak]
[exitupdate]
wait

[thingspeak]
input "gettsdata:" str$
gosub [parse]
sstatus = field$
gosub [parse]
ts.key$ = field$
gosub [parse]
ts.fieldnum$ = field$
gosub [parse]
ts.fielddata$ = field$
serialprint "Send to thingspeak:"
b$ = ts.key$ & ts.fieldnum$ & ts.fielddata$
serialprintln b$
sendts(ts.key$,ts.fieldnum$,ts.fielddata$)
return

[setnet]
input "getnetwork:" str$
gosub [parse]
sstatus = field$
gosub [parse]
net.name$ = field$
gosub [parse]
net.password$ = field$
gosub [parse]
net.ip$ = field$
gosub [parse]
net.gateway$ = field$
gosub [parse]
net.mask$ = field$
if net.ip$ == "" then [auto] else [static]
[static]
serialprintln "connect static"
connect net.name$ net.password$ net.ip$ net.gateway$ net.mask$
goto [exitsetnet]
[auto]
serialprintln "connect auto"
connect net.name$ net.password$
[exitsetnet]
gosub [getinfo]
return

[sendemail]
input "getemail:" str$
gosub [parse]
sstatus = field$
gosub [parse]
address$ = field$
gosub [parse]
reply$ = field$
gosub [parse]
subject$ = field$
gosub [parse]
body$ = field$
serialprint "Send to:"
serialprintln address$ & reply$ & subject$ & body$
email address$ reply$ subject$ body$
return

[getinfo]
serialprintln ""
serialprint "Version:"
serialprintln ver$
serialprint "IP:"
serialprintln ip()
read "WIFIname" blaWIFIssid
serialprint "SSID:"
serialprintln blaWIFIssid
serialprint "FlashFree:"
serialprintln flashfree()
serialprint "RamFree:"
serialprintln ramfree()
return

[gettime]
ntp$ = time()
ntp$ = "NTP:" & ntp$
serialprintln ntp$
return

[parse]
field$ = ""
'serialprint "parse this:"
'serialprintln str$
[search]
delim = instr(str$,":")
'serialprintln delim
[found]
field = delim - 1
delim = delim + 1
rest = len(str$) - delim
field$ = left(str$,field)
rest$ = right(str$,rest)
str$ = rest$
'serialprintln field$
'serialprintln str$
[exitparse]
return


[quit]
timer 0
wprint "<a href='/'>Menu</a>"
end