C

ClassIslandMarketplace
Preview

C

ClassIsQuoteZ

星标 • Version 0.0.1.0
xingbiao.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,应用退出时同步保存兜底。

使用前提

  1. 已安装并运行 ClassIsland(插件 API 2.0.0.0)。
  2. 在 Dot App「More → API Keys」生成 API Key(以 dot_app_ 开头)。
  3. 在 Dot App 内容工坊中,向目标设备的循环任务添加「画板 API」内容。

配置步骤

在 ClassIsland 设置页「Dot 设备」中:

  1. 点击「添加设备」,填写 API Key 与设备 SN(MAC 形式,如 7CE8B17A1E0C),可先「测试连接」验证凭据。
  2. 在设备页签中选择或上传画板模板,按需调整实例名称、刷新间隔与启用状态。
  3. 「任务 Key」一般留空(服务端自动定位循环任务中的画板内容);仅当循环任务中存在多条画板 API 内容时,才填写与目标内容 key 一致的值。
  4. 点击「推送画板」在真机上预览效果。

开发

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。