C
ClassIsQuoteZ
星标 • Version 0.0.1.0xingbiao.classIsQuoteZ
244
0
Requires Windows to install
ClassIsQuoteZ
ClassIsland 插件:将 ClassIsland 的实时课程与天气信息推送到 Dot. 墨水屏设备。
功能特性
- 定时推送:按各画板实例配置的刷新间隔定时推送(最小 10 秒),串行推送并预留间隔以符合 Dot API 限流(10 req/s)。
- 状态即时推送:课表状态变化(上课 / 课间 / 放学)时立即推送一次;应用启动后也会立即推送一次。
- 画板模板:模板即一份完整的 Dot Canvas API JSON 请求体;内置预制模板(
Templates/,随插件分发、只读),也支持上传 / 删除用户自定义模板(存于插件配置目录,自动备份)。 - 变量系统:模板中任意字符串值均可书写
{变量}与$函数(),推送前统一求值:- 原子变量:日期时间(
{year}/{month}/{day}/{weekday}/{hour}/{minute})、天气({weatherIcon}/{weatherText}/{tempValue})、课程状态({state}/{subject}/{ordinal}/{periodStart}/{periodEnd}/{progress}/{remainingMin}/{remainingCount})、接下来两节课({next1Subject}/{next1Start}/{next2Subject}/{next2Start})。 - 函数:
$han(n)数字转中文数字、$pad(n,宽)补零、$pick(索引,…)按状态码取文案。 - 转义:
\{\}\$\\,函数参数内另支持\,\);未识别的变量 / 函数原样保留。 - 完整变量与函数清单可在设置页「画板实例」的提示条中查看。
- 原子变量:日期时间(
- 失败保护:凭据失效(401)或循环任务未添加画板 API 内容(404)等永久性失败会暂停该设备推送 5 分钟(修改 API Key 后立即恢复);瞬时失败 30 秒后自动重试。
- 实机画面回传:设置页内展示设备当前屏幕画面(每 30 秒自动轮询,可关闭;也支持手动刷新),并可为倒装悬挂的设备将预览旋转 180°。
- 设置持久化:设置变更经 500ms 防抖写入插件配置目录
Settings.json,应用退出时同步保存兜底。
使用前提
- 已安装并运行 ClassIsland(插件 API 2.0.0.0)。
- 在 Dot App「More → API Keys」生成 API Key(以
dot_app_开头)。 - 在 Dot App 内容工坊中,向目标设备的循环任务添加「画板 API」内容。
配置步骤
在 ClassIsland 设置页「Dot 设备」中:
- 点击「添加设备」,填写 API Key 与设备 SN(MAC 形式,如
7CE8B17A1E0C),可先「测试连接」验证凭据。 - 在设备页签中选择或上传画板模板,按需调整实例名称、刷新间隔与启用状态。
- 「任务 Key」一般留空(服务端自动定位循环任务中的画板内容);仅当循环任务中存在多条画板 API 内容时,才填写与目标内容 key 一致的值。
- 点击「推送画板」在真机上预览效果。
开发
dotnet build ClassIsQuoteZ/ClassIsQuoteZ.csproj -c Debug
- 目标框架
net8.0,基于ClassIsland.PluginSdk(版本见ClassIsQuoteZ.csproj)。 - 打包产物为
.cipx(见ClassIsQuoteZ/cipx/),插件清单为ClassIsQuoteZ/manifest.yml。
项目结构
ClassIsQuoteZ/
├── Plugin.cs # 插件入口:设置加载/防抖保存、DI 注册
├── Models/ # 设置对象图(设备 → 画板实例)
├── Services/
│ ├── DotApiClient.cs # Dot OpenAPI 推送客户端(401/404 专用异常)
│ ├── CanvasPushService.cs # 定时/状态触发推送后台服务
│ ├── CanvasDataProvider.cs # 原子变量计算(课程/天气/时间)
│ ├── BindingTemplate.cs # {变量}/$函数() 模板求值器
│ └── CanvasTemplateService.cs # 预制/用户模板管理
├── ViewModels/ # 设置页视图模型
├── Views/ # 设备设置页、画板实例设置与实机画面回传控件
├── Controls/ # ListDetailView 主从分栏控件
└── Templates/ # 预制画板模板(随包分发)
许可证
见仓库根目录 LICENSE。