前言 项目演示: BV1Sy4y1u7s8 固件源码: WiFi_VFD 配置工具源码: WiFi_VFD_tools 默认连接密码为CHR233，AP模式热点名为WIFI_VFD_xxxxxx，AP密码为CHRXWCHRXW 注意事项 API请求方法不限，推荐使用GET方法，只接受位于Params的参数 未给定的参数均视为 【“”】或【0】 文档性API 所有文档性API均不需要身份验证 / 说明 返回在线文档地址 请求参数 无需参数 返回值示例 online doc: https://blog.chrxw.com/archives/1970/01/01/1569.html /version 说明 返回固件版本号和编译日期 请求参数 无需参数 返回值示例 Firmware version: 1.7.0 Build date: May 7 2021 23:59:18 /test 说明 固定返回 success , 用于检查固件是否正常 请求参数 无需参数 返回值示例 success 功能性API 所有功能性API均需要提供一个名为【k】的连接密码参数，如果密码错误则返回【403】错误 如果设备的连接密码为空，代表不需要身份验证，传入任意的【k】或者不传入【k】都能通过身份验证 设备重启后会自动从闪存读取上一次保存的设置 为了降低闪存的读写损耗，默认不会将修改的设置写入闪存，如果需要保存此次设置，可以传入名为【f】的任意非空值作为参数 例如 http://....../set/mode?m=1&f=1 所有功能性API如果调用成功均返回 success, 后文均省略返回值 功能性API - 通用 /set/mode 说明 设置当前模式 参数 参数名 意义 取值范围 说明 默认值 k 连接密码 文本 用于身份验证 "" m 模式代码 1-3 【1】:时钟模式, 2:文字模式, 3: 进度条模式 必须 f 写入闪存 布尔 【""/0】:不写入闪存，其他值:写入闪存 0 /set/wifi 说明 设置WiFi连接，无需【f】参数 如果测试连接成功会自动写入闪存并自动重启 如果测试连接失败则会使用上一次的设置 参数 |参数名|意义|取值范围|说明|默认值| |-|-|-| |k|连接密码|文本|用于身份验证|""| |s|WiFi SSID|文本|WiFi的名称|必须| |p|WiFi 密码|文本|WiFi的密码|必须| /set/password 说明 设置设备的连接密码，默认连接密码为【CHR233】，无需【f】参数 参数 |参数名|意义|取值范围|说明|默认值| |-|-|-| |k|连接密码|文本|用于身份验证|""| |kn|新的连接密码|文本|要设置的连接密码|""| /set/bright 说明 设置显示屏亮度 参数 参数名 意义 取值范围 说明 默认值 k 连接密码 文本 用于身份验证 "" b 显示屏亮度 0-255 显示屏亮度，0:完全关闭显示屏，255:最高亮度 0 f 写入闪存 布尔 【""/0】:不写入闪存，其他值:写入闪存 0 /set/reboot 说明 重启设备 参数 |参数名|意义|取值范围|说明|默认值| |-|-|-| |k|连接密码|文本|用于身份验证|""| /set/reset 说明 格式化内置闪存，清除所有设置 参数 |参数名|意义|取值范围|说明|默认值| |-|-|-| |k|连接密码|文本|用于身份验证|""| 功能性API - 模式1 - 时钟模式 调用该模式的API后, 会自动切换到模式2, 但是对模式的修改不会写入闪存 /set/time/config 说明 设置时钟的样式 参数 参数名 意义 取值范围 说明 默认值 k 连接密码 文本 用于身份验证 "" h 24小时 布尔 【""/0】:12小时制, 其他值:24小时制 "" a 显示上下午 布尔 【""/0】:不显示AM/PM, 其他值:显示AM/PM "" w 显示星期 布尔 【""/0】:不显示星期, 其他值:显示星期 "" f 写入闪存 布尔 【""/0】:不写入闪存，其他值:写入闪存 0 功能性API - 模式2 - 文字模式 调用该模式的API后, 会自动切换到模式2, 但是对模式的修改不会写入闪存 /set/text/icon 说明 控制显示屏上面一排的图标显示 参数【i】当做二进制数处理，从低到高分别对应从左到右的12个图标, 1代表点亮, 0代表熄灭 参数 参数名 意义 取值范围 说明 默认值 k 连接密码 文本 用于身份验证 "" i 0-4095 整数 从高到低的12个二进制位代表从左到右12个图标的亮灭状态 0 f 写入闪存 布尔 【""/0】:不写入闪存，其他值:写入闪存 0 /set/text/spare 说明 单独控制显示屏下面一排某一位显示的内容, 显示的字符由VFD屏内置的字库决定, 传入的参数为要显示的字符编码 字库兼容ASCII编码, 非ASCII编码的区域存放了一些特殊符号, 这些特殊符号只能通过此API显示出来 未指定的位置 参数 参数名 意义 取值范围 说明 默认值 k 连接密码 文本 用于身份验证 "" 1 第1位 0-255 【0】:无动作, 其他数值:修改第1位的字符编码 0 2 第2位 0-255 【0】:无动作, 其他数值:修改第2位的字符编码 0 3 第3位 0-255 【0】:无动作, 其他数值:修改第3位的字符编码 0 x 第x位 0-255 【0】:无动作, 其他数值:修改第x位的字符编码 0 10 第10位 0-255 【0】:无动作, 其他数值:修改第10位的字符编码 0 11 第11位 0-255 【0】:无动作, 其他数值:修改第11位的字符编码 0 12 第12位 0-255 【0】:无动作, 其他数值:修改第12位的字符编码 0 f 写入闪存 布尔 【""/0】:不写入闪存，其他值:写入闪存 0 /set/text/group 说明 设置需要显示的字符串, 字符串长度最大为300, 超出的部分会被截断 由于显示屏只能显示12位字符, 可以开启滚动显示模式来循环播放文本 参数 参数名 意义 取值范围 说明 默认值 k 连接密码 文本 用于身份验证 "" w 屏显字符串 文本 要显示在屏幕上的字符串 "" f 写入闪存 布尔 【""/0】:不写入闪存，其他值:写入闪存 0 /set/text/mode 说明 设置文本显示模式, 可以设置滚动显示的模式 参数 参数名 意义 取值范围 说明 默认值 k 连接密码 文本 用于身份验证 "" m 文字显示模式 0-3 【0】:静态文本, 1:向左滚动, 2:向右滚动, 3:左右滚动 【0】 f 写入闪存 布尔 【""/0】:不写入闪存，其他值:写入闪存 0 功能性API - 模式3 - 进度条模式 调用该模式的API后, 会自动切换到模式3, 但是对模式的修改不会写入闪存 /set/proc/config 说明 设置进度的条样式 因为屏幕只能显示12个字符, 因此只能显示4位 参数 参数名 意义 取值范围 说明 默认值 k 连接密码 文本 用于身份验证 "" l 是否显示标签 布尔 【""/0】不显示文字标签, 其他值:显示文字标签 "" n 是否显示百分比 布尔 【""/0】不显示百分比, 其他值:显示百分比 "" i 是否启用图标进度条 布尔 【""/0】用“▮”和“ ”绘制进度条, 其他值:利用上方的图标绘制进度条(模式2的图标设定会暂时失效) "" f 写入闪存 布尔 【""/0】:不写入闪存，其他值:写入闪存 0 /set/proc/value 说明 修改进度条数值 参数 参数名 意义 取值范围 说明 默认值 k 连接密码 文本 用于身份验证 "" v 进度条百分比 0-100 进度条当前的进度 0 f 写入闪存 布尔 【""/0】:不写入闪存，其他值:写入闪存 0 /set/proc/string 说明 修改进度条标签（和模式2共用一个缓冲区） 参数 参数名 意义 取值范围 说明 默认值 k 连接密码 文本 用于身份验证 "" w 屏显字符串 文本 只会显示前4位, 并且需要开启“显示标签”才会显示 0 f 写入闪存 布尔 【""/0】:不写入闪存，其他值:写入闪存 0
前言 阿里云快到期了，这几天在手动迁移应用，然后遇到了很蛋疼的事，我的域名设置了HSTS，只允许HTTPS请求，不允许HTTP请求。以前懒的搞，一直是用IP访问的，趁着这次机会，就打算弄个反代，让它支持HTTPS。考虑到服务器性能捉急，这次就不装宝塔面板了，手动装个Caddy完事，图新鲜装了个Caddy V2，中文文档不太多，遇到了不少坑，就写个简单的指南吧。 附上链接：Caddy英文文档 安装Caddy 引用自官方文档 Debian/Ubuntu sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo apt-key add - curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee -a /etc/apt/sources.list.d/caddy-stable.list sudo apt update sudo apt install caddy CentOS/RedHat dnf install 'dnf-command(copr)' dnf copr enable @caddy/caddy dnf install caddy 常用命令 # 启动 systemctl start caddy # 停止 systemctl stop caddy # 重启 systecmtl restart caddy # 开机自启 systemctl enable caddy # 取消开机自启 systemctl disable caddy 配置文件 默认配置 Caddy默认的配置文件为/etc/caddy/Caddyfile，默认配置如下： # The Caddyfile is an easy way to configure your Caddy web server. # # Unless the file starts with a global options block, the first # uncommented line is always the address of your site. # # To use your own domain name (with automatic HTTPS), first make # sure your domain's A/AAAA DNS records are properly pointed to # this machine's public IP, then replace the line below with your # domain name. :80 # # Set this path to your site's directory. root * /usr/share/caddy # # Enable the static file server. file_server # # Another common task is to set up a reverse proxy: # reverse_proxy localhost:8080 # # Or serve a PHP site through php-fpm: # php_fastcgi localhost:9000 # # Refer to the Caddy docs for more information: # https://caddyserver.com/docs/caddyfile :80定义了一个站点，监听来自80端口的所有请求 root * /usr/share/caddy定义了站点根目录 file_server表示静态文件服务器，允许访问站点根目录下的文件 设置反向代理 配置文件： { experimental_http3 } http://xxx.chrxw.com{ encode gzip reverse_proxy http://localhost:8000 } 配置文件修改以后，使用命令systemctl restart caddy即可重启caddy，因为我的域名使用了HSTS，所以还是不能访问，还得配置TLS 配置文件分为两个部分，第一部分是全局配置，第二个是站点配置 experimental_http3表示启用QUIC支持，没啥用，纯好玩 encode gzip表示对响应启用Gzip压缩 reverse_proxy http://localhost:8000表示反代本地的8000端口 配置TLS证书 首先得有TLS证书，我放在/home/.caddy/目录下，权限设置： # 修改文件属组 chown caddy:caddy /home/.caddy -R # 去除其他用户的读写权限 chmod go-rwx /home/.caddy -R 配置文件修改成这样： { experimental_http3 } https://xxx.chrxw.com{ encode gzip tls /home/.caddy/xxx_chrxw_com.pem /home/.caddy/xxx_chrxw_com.key reverse_proxy http://localhost:8000 } 配置文件修改以后，使用命令systemctl restart caddy即可重启caddy，如果一切顺利，已经支持HTTPS访问了。 如果还是访问不了，使用命令systemctl status caddy -l查看错误原因。 配置文件只是增加了TLS证书，然后把站点的访问协议改成了https。