busy-screen
Turns your Raspberry Pi into a status screen to show your colleagues, family, friends, or whoever might disturb you if you're busy or not.
Science Score: 44.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Committers with academic emails
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (3.8%) to scientific vocabulary
Repository
Turns your Raspberry Pi into a status screen to show your colleagues, family, friends, or whoever might disturb you if you're busy or not.
Basic Info
Statistics
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 10
- Releases: 0
Metadata Files
README.md

Busy Screen

Turns your Raspberry Pi into a status screen to show your colleagues, family, friends, or whoever might disturb you if you're busy or not.
```shell PUT http://192.168.168.168:1880/status Content-Type: application/json; charset=utf-8
{ "name": "making frontend responsive", "task": "TICKET-123", "duration": "PT50M", } ```
Set status to "making frontend responsive" with an estimation of 50 minutes

Being busy with state "making frontend responsive" for 23 minutes

No more being busy
Installation
This application consists of a backend implemented as a Node RED flow and a frontend implemented with Kotlin JS.
Consequently, you'll need a Node RED installation and a webserver to provide access to the frontend.
When successfully installed, the loading screen shows up.

A few moments later the backend can receive status updates, like this one:
shell
curl -X PUT --location "http://192.168.168.168:1880/status" \
-H "Content-Type: application/json; charset=utf-8" \
-d "{
\"name\": \"finishing soon\",
\"duration\": \"PT2M\"
}"

The following properties are supported:
json
{
"name": "status name that is displayed in the speech bubble",
"task": "task title used as the headline on the top border",
"duration": "60000",
"email": "john.joe@example.com",
"on": {
"finish": {
"method": "post",
"url": "http://my-talking-robot/say",
"payload": "finished working"
}
}
}
The only required field is name. All other fields are optional.
The duration can be specified in
- number of milliseconds (
60000ms = 1min) or - in ISO8601 format (
PT1M/PT60S= 1min)
You can find further examples in http-client.http.
Connectivity
The connectivity options depend on your Pi Hero configuration.
Discovery
If you start your device with a connected screen, you see the following information that help you finding your device:
- Your device name is written on the left border.
- Your device IP is written on the right border.
- Your username is written below the avatar.
- Nearby devices are listed in a dropdown that opens when you click your username.
- The device currently connected to is always on top.
- Using the "Switch" button you can connect to the selected device.

Avahi is installed on your Raspberry Pi with all relevant services advertised in your network. You can use any zeroconf / mDNS / Bonjour client to discover your device.

Alternatively you can log in to your router and find out what new devices received a dynamic IP address from it.
Install Manually / Locally
The manual installation consists of the following steps:
1) Install Node RED
2) Import busy-screen.flow to Node RED
3) Build the frontend with ./gradlew build -x test
4) Set up an HTTP server to publish the just built frontend, e.g. using npx http-server -c -p 80
5) open the published frontend
(automatically opened if you use the npx command above)
6) change the address query parameter in the URL to the one of your Node RED installation
Customization
Busy Screen can be customized / extended in three ways:
1) The frontend is located at src/main/kotlin. You can make any changes you like to it and run the installation afterwards. 2) The Node RED flow can be freely changed as you like. In order to customize it, just edit it inside of Node RED. If you followed the installation steps above, you already have a running installation. 3) You can customize the way your Raspberry Pi image is created. The image creation is done with the image customization tool Kustomize. The actual configuration is stored in busy-screen.conf.
Responsive Design

Loading screen on small device

Loading screen on large device

Responsive previews with busy state

Responsive previews with done state
Debugging

Loading screen with error message
Known Issues / TODO
[ ] on Raspberry Pi B+ the Plymouth based loading screen only works
afterraspi-config→ Advanced Options → G1 Fake KMS was selected.[ ] get network connection to Raspberry Pi booted with dockerpi
- [ ] check for SSH
- [ ] check for HTTP
- [ ] change status and check if page changed
Copyright
Nintendo owns the copyright to Mario, Samus, the heart container, the coin and the controller. Please comply with the Nintendo guidelines and laws of the applicable jurisdiction.
South Park characters have been designed with the amazing SP-Studio.
References
Contributing
Want to contribute? Awesome! The most basic way to show your support is to star the project, or to raise issues. You can also support this project by making a PayPal donation to ensure this journey continues indefinitely!
Thanks again for your support, it is much appreciated! :pray:
License
MIT. See LICENSE for more details.
Owner
- Name: Björn Kahlert
- Login: bkahlert
- Kind: user
- Location: Berlin, Germany
- Website: bkahlert.com
- Repositories: 23
- Profile: https://github.com/bkahlert
Citation (CITATION.cff)
cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors:
- given-names: "Björn"
family-names: "Kahlert"
orcid: "https://orcid.org/0000-0003-1705-4067"
title: "Recordr — record terminal sessions and convert them to SVG"
version: 0.2.2
date-released: 2021-11-20
url: "https://github.com/bkahlert/recordr"
GitHub Events
Total
Last Year
Committers
Last synced: over 1 year ago
Top Committers
| Name | Commits | |
|---|---|---|
| Björn Kahlert | m****l@b****m | 50 |
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: about 1 year ago
All Time
- Total issues: 0
- Total pull requests: 101
- Average time to close issues: N/A
- Average time to close pull requests: about 1 month
- Total issue authors: 0
- Total pull request authors: 1
- Average comments per issue: 0
- Average comments per pull request: 0.9
- Merged pull requests: 0
- Bot issues: 0
- Bot pull requests: 101
Past Year
- Issues: 0
- Pull requests: 0
- Average time to close issues: N/A
- Average time to close pull requests: N/A
- Issue authors: 0
- Pull request authors: 0
- Average comments per issue: 0
- Average comments per pull request: 0
- Merged pull requests: 0
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
Pull Request Authors
- dependabot[bot] (101)
Top Labels
Issue Labels
Pull Request Labels
Dependencies
- com.bkahlert.kommons:kommons 1.11.0 implementation
- com.soywiz.korlibs.krypto:krypto 2.3.1 implementation
- io.ktor:ktor-client-core 1.6.2 implementation
- io.ktor:ktor-client-js 1.6.2 implementation
- io.ktor:ktor-client-websockets 1.6.2 implementation
- org.jetbrains.kotlinx:kotlinx-coroutines-core 1.5.1 implementation
- org.jetbrains.kotlinx:kotlinx-html 0.7.3 implementation
- org.jetbrains.kotlinx:kotlinx-serialization-json 1.2.2 implementation
- io.kotest:kotest-assertions-core-js 4.6.1 testImplementation
- io.kotest:kotest-framework-engine-js 4.6.1 testImplementation
- actions/cache v2 composite
- actions/checkout v2 composite
- actions/setup-java v2 composite
- actions/upload-artifact v2 composite
- gradle/wrapper-validation-action e6e38bacfdf1a337459f332974bb2327a31aaf4b composite
- 645 dependencies