当前位置: 首页 > Web前端 > HTML

树莓派桌面小屏应用

时间:2023-03-27 23:20:33 HTML

原文地址:https://blog.halberd.cn/artic...效果展示最近用electron做了一个应用,可以在树莓派小屏上显示一些实时信息。主要是想学习使用electron。涉及的工具:electron、vue3、vite、flask、websocket。这是实际效果。我买的树莓派屏幕很烂:制作过程的第一步当然是做一个可拆卸可调的支架。之前买的热熔胶派上用场了:开始一个electron项目,按照网上的教程,很简单,electron.js长这样:constpath=require('path');const{app,BrowserWindow}=require('electron');constisDev=process.env.IS_DEV==="true";functioncreateWindow(){constmainWindow=newBrowserWindow({fullscreen:true,webPreferences:{preload:path.join(__dirname,'preload.js'),nodeIntegration:真的,},});//并加载应用程序的index.html。//win.loadFile("index.html");mainWindow.loadURL(isDev?'http://localhost:3000':`file://${path.join(__dirname,'../dist/index.html')}`);//打开开发者工具。如果(isDev){mainWindow.webContents.openDevTools();}}//当Electron完成//初始化并准备好创建浏览器窗口时将调用此方法。//某些API只能在此事件发生后使用。app.whenReady().then(()=>{createWindow()app.on('激活',function(){//在macOS上,当单击停靠栏图标并且没有其他窗口打开时,通常会在应用程序中重新创建一个窗口。if(BrowserWindow.getAllWindows().length===0)createWindow()})});//当所有窗口关闭时退出,macOS除外。在那里,//应用程序及其菜单栏通常会保持活动状态,直到用户使用Cmd+Q.app.on('window-all-closed',()=>{if(process.platform!=='darwin'){app.quit();}});前后端代码也比较简单,开源在github上:https://github.com/yunyuyuan/...有一个ignore配置文件./config.json如下:{"host":"127.0.0.1","port":9876,"caiyun_token":"caiyunapi'stoken","todo-pwd":"密码,与todo列表的加密密码相同","gh_token":"githubtoken用于获取todolist"}主要是如何运行前后端,我找到了方法,在Runningthepythonsubprocessinnodejs,实际测试不行,没研究它仔细。看到_package.json_里面的electron:dev有一个concurrently-k"cross-envBROWSER=noneyarndev""yarnelectron"好像是在运行多个进程,于是改成了concurrently-k"py/venv/bin/pythonpy/main.py""cross-envBROWSER=noneyarndev""yarnelectron",先运行python后端,再运行前端,可以正常运行。其他天气查询的彩云api。待办事项列表仍然使用githubapi。我写了一个网页https://info.halberd.cn/用react更新to-dolist。RaspberryPi每隔一分钟就会获取最新的待办事项列表。其实这里可以用githubaction,配合frp打个洞(我有云服务器),更新to-do后自动触发树莓派更新,不用轮询,后面贴个todo贴纸就可以了。Todo列表使用cryptojs加密。虽然在github上有,但是不用担心泄露。