ESP32 micropython web配网

目录结构:
libs
∟ microdot
static
∟ index.html
∟ jquery.js
boot.py
main.py
index.html代码

<html>
<head>
<title>ESP32 Web服务</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script src="static/jquery.js" type="text/javascript"></script>
<style>
body {
  background-color: black;
  justify-content: center;
  align-items: center;
  text-align: center;
  color: white;
}
.tlable{
width:80px;
text-align:right;
display:inline-block;
margin-right:5px;
}
</style>
</head>
<h1>ESP32设置中心</h1>
<form action="wificonfig" method="post">
  <p><span class="tlable">SSID: </span><input type="text" name="ssid"></p>
  <p><span class="tlable">密码:</span> <input type="text" name="password"></p>
  <input type="submit" value="提交">
</form>
</body>
</html>

main.py代码

import machine
import network
import utime
from libs.microdot import Microdot
from libs.microdot import send_file
import json


# 保持配置文件
def save_config(config):
    """function to save the config dict to the JSON file"""
    with open("config.json", "w") as f:
        json.dump(config, f)
        
ap_mode = False
# 读取 WIFI 的账号密码
# load the config file from flash
ssid=''
password=''
with open("config.json") as f:
    config = json.load(f)
    print(config)
    ssid=config['ssid']
    password=config['password']
    if ssid=='':
        ap_mode = True
# 连接 WiFi
if ap_mode is False:
    wifi_connect_times = 0
    wlan = network.WLAN(network.STA_IF)
    wlan.active(False)
    wlan.active(True)
    if not wlan.isconnected():
        print('connecting to network...')
        wlan.connect(ssid, password)
    for i in range(20):
        print('第{}次尝试连接WIFI'.format(i))
        if wlan.isconnected():
            break
        utime.sleep_ms(500) #一般睡个5-10秒,应该绰绰有余
    # WIFI连接失败后开启热点,通过WiFi热点配网  
    if not wlan.isconnected():
        wlan.active(False) #关掉连接
        print('wifi connection error, please reconnect')
        config['ssid']=''
        save_config(config)
        machine.reset()
    else:
        print('network config:', wlan.ifconfig())
# 开启热点
else:
    # 创建Wi-Fi接入点
    wlan = network.WLAN(network.AP_IF)
    # 启用接入点
    wlan.active(True)
    # 设置接入点参数
    wlan.config(essid='herokay', authmode=network.AUTH_WPA_WPA2_PSK, password='123123123')
    # 输出接入点IP地址
    print('AP IP address:', wlan.ifconfig()[0])
    
app = Microdot()

#提供静态文件访问功能
@app.route('/static/<path:path>')
def static(request, path):
    if '..' in path:
        # directory traversal is not allowed
        return 'Not found', 404
    return send_file('static/' + path, max_age=86400)

@app.route('/')
def hello(request):
    return send_file('/static/index.html')

@app.post('/wificonfig')
def shutdown(request):
    config['ssid']=request.form.get('ssid')
    config['password']=request.form.get('password')
    save_config(config)
    machine.reset()
    return 'WIFI:' + ssid + ":" + password

app.run(host='0.0.0.0', port=80, debug=False)

app inventor中使用sqlite数据库

国内汉化的app inventor很多,并且网站不一样内容会有一定的差距,有的自带sqlite数据库插件,有的不带。sqlite插件不一致,使用方法区别也比较大,正好在查阅资料时发现了下面这个页面,介绍的插件比较全,使用方法也有事例。
https://community.kodular.io/t/four-working-examples-sqlite-extension/54254
国外网站,打开有可能会比较慢。

windows服务器安装jupyter lab并设置外网访问

一、下载安装python

https://www.python.org/

二、安装jupyter lab

安装jupyter lab

pip install jupyterlab -i https://pypi.tuna.tsinghua.edu.cn/simple

安装中文语言包

pip install jupyterlab-language-pack-zh-CN

三、设置外网访问

查看jupyter lab设置文件目录

jupyter --config-dir

生成jupyter lab设置文件(jupyter_lab_config.py)

jupyter lab --generate-config

生成密码

# 打开python,输入以下代码,按要求数据密码即可,输入过程中不显示
# 将生成的密码摘要复制到配置文件password的''中
from jupyter_server.auth import passwd
passwd()

修改配置文件

# 可以在jupyter_lab_config.py后面添加或者取消原文件中注释后修改
# ip可以设置成本底ip或者*
# notebook_dir根据自己开发环境修改
# port端口根据需要自己修改
# password通过python生成
# windows系统路径要用双斜杠\\
c.ServerApp.allow_remote_access = True
c.ServerApp.ip = '*'
c.ServerApp.open_browser = False
c.ServerApp.notebook_dir = '/home/username/target path/'
c.ServerApp.port = 9527
c.ServerApp.password = ''

安装代码提示插件

pip install jupyterlab-lsp

启动jupyter lab

jupyter lab

这浏览器中输入服务器IP:port,输入密码,修改语言即可

中国教师研修网挂机脚本

项目地址:

https://ipx.yanxiu.com/cms/project/index?projectId=6289627417674083363

说明:

该脚本是从模拟操作的角度实现挂机的,提前需要安装好tampermonkey

设置说明

需要上面两项设置打开,未打开的话请打开设置项设置

代码生效页面

课程列表页面,用于获取未学习课程,所进入课程学习结束后会自动刷新进入下一节课程:https://ipx.yanxiu.com/cms/project/index?projectId=6289627417674083363
内容列表页面,自动进入未学习视频学习
https://ipx.yanxiu.com/train/guide/course/list?projectId=6289627417674083363&role=*
课程播放页面,过程中评分页面自动评分4.5颗星
https://ipx.yanxiu.com/grain/course/8159721805453107209/detail?projectId=6289627417674083363&toolId=*