AI + BUSY Bar: how to build your own widget in minutes

20.11.2025 12 minutes Author: Lady Liberty

BUSY Bar is a modern focus device that supports the creation of simple and useful widgets without programming. Through a convenient HTTP-API, the user can add their own interface elements, update information in real time, and integrate BUSY Bar into workflows or a smart home. The device is suitable for both beginners and tech enthusiasts, as setup is easy and customization options are almost limitless.

In-depth guide

BUSY Bar  – a device for concentration and a modern Pomodoro timer with blocking distracting applications and integration into a smart home. In this post, we will show how to create widgets for BUSY Bar using the HTTP API. This will be possible not only for developers, but also for ordinary users.

Next you will learn how to:

  • Display images and text on the BUSY Bar screen.

  • Interact with the device directly from the browser.

  • Create widgets without programming.

Widgets we will make in this article

Before we start creating widgets, let’s get acquainted with the HTTP API and how to use it.

One API for all connection types

HTTP API is a protocol for interacting with BUSY Bar, available through all 3 supported connection types:

  • USB Ethernet — when connecting BUSY Bar to a PC, it is defined as a network adapter with a virtual network.

  • Wi-Fi network — fast, wireless connection. BUSY Bar can be placed anywhere within Wi-Fi coverage.

  • Cloud server — remote control via the Internet with encryption and authorization by key, using an API token issued in your BUSY account.

By using the same HTTP API across all three connection types, you can switch between them without rewriting your code.

How the HTTP API works in BUSY Bar

As the name suggests, the HTTP API is based on the HTTP protocol, which is used to transfer data over the Internet between a browser and a web server. When you enter a website URL, your browser sends an HTTP request and the server returns a web page in response.

Interaction with BUSY Bar is arranged in a similar way. BUSY Bar acts as an HTTP server and waits for requests, and the software on the PC acts as an HTTP client. This software can be any program that supports sending HTTP requests, for example, a smart home system, an application or a script.

A script or program sends a request and BUSY Bar returns data in JSON format

Thanks to the broad support of HTTP in programming languages, BUSY Bar can be accessed with just a few lines of code. And some simple requests, such as requesting general information about BUSY Bar, can be sent directly from the browser – simply by opening http://10.0.4.20/api/status/system.

The /api/status/system query returns general information about the BUSY Bar

When using a USB connection, the BUSY Bar’s IP address will always be 10.0.4.20 – it is even listed on the back of the device. When connecting via Wi-Fi, the IP address is assigned by the router. In the examples below, we will use a USB connection.

Документація HTTP API прямо на пристрої

All supported HTTP requests, their parameters, and response formats are described in the HTTP API documentation, which is hosted directly on the device. When connected via USB, it is available at:  http://10.0.4.20/docs.

HTTP API documentation opened from the device

You can also open the HTTP API documentation from the main page of the BUSY Bar web interface, which is available at http://10.0.4.20.

The main page of the BUSY Bar web interface and a link to the HTTP API documentation on it

You can test HTTP requests directly on the documentation page by doing the following:

  1. Select a request, for example: /api/display/draw (display text and images on the screen).

  2. Click Try it out.

  3. Configure the request parameters.

  4. Click Execute to send the request to the BUSY Bar.

After pressing Execute, the browser sends an HTTP API request to BUSY Bar, which returns a response indicating either success (OK) or an error (Bad Request) if something went wrong with the request. If successful, BUSY Bar displays “HELLO, WORLD!” on the screen.

[Video] Upon successful execution of the request, BUSY Bar displays the line “HELLO, WORLD!”

How AI can help leverage HTTP APIs

There are tons of guides, discussions, and code examples online for working with HTTP. And AI assistants can work with all this knowledge. So even without programming skills, you can create BUSY Bar widgets. For advanced users, there are also ready-made libraries for Python and JavaScript that implement our HTTP API.

To create a widget using an AI assistant (ChatGPT, Gemini, Claude, and others), you need:

  • Explain to him how to display images and text on the screen (1 prompt).

  • Explain what the widget should do (1-2 prompts).

  • Ask him to fix the problems (0-10 prompts).

As a result, you will get a script that runs on your PC and sends the widget UI to the connected USB device via HTTP API.

The script runs on a PC and draws a widget on the BUSY Bar screen via HTTP API

Next, we will show you with real practical examples how to make a widget without programming. We will use ChatGPT. All generated AI scripts are available via links at each step.

Step 0: Teaching AI to use the BUSY Bar screen

When creating each widget, you first need to explain to the AI ​​how to use the HTTP API, namely two requests:

  • /api/assets/upload — to upload images to BUSY Bar memory.

  • /api/display/draw — to display text and previously uploaded images.

AI prompt (based on HTTP API documentation):

У мене є девайс із кольоровим LED екраном 72x16 та HTTP API. IP адреса девайсу – 10.0.4.20. HTTP API підтримує 2 POST запиту: /api/assets/upload - для завантаження картинки на пам'ять девайса (картинка передається в двійковому вигляді). Запитує 2 параметри: app_id (текстовий id програми) і file (ім'я файлу). /api/display/draw - для виведення тексту та раніше завантажених картинок. Є 3 шрифти: мало (висота 5), medium (висота 7), big (висота 10). width задає ширину поля виведення тексту (текст прокручуватиметься зі швидкістю scroll_rate, якщо не міститься). Приклад запиту:
{
  "app_id": "my_app",
  "elements": [
    {
      "id": "0",
      "timeout": 6,
      "type": "text",
      "text": "Hello, World!",
      "x": 1,
      "y": 3,
      "font": "big",
      "color": "#AAFF00FF",
      "width": 72,
      "scroll_rate": 60,
    },
    {
      "id": "1",
      "timeout": 6,
      "type": "image",
      "path": "data.png",
      "x": 0,
      "y": 0,
    }
  ]
}

Result:  AI is now able to display images and texts on the screen via USB, as well as use different fonts and text colors.

Making a clock widget

To start, just for practice, let’s make a very simple clock and date widget. The time and date will be taken from the PC and updated on the BUSY Bar screen once a second. We will display the time in a large font – often it is more important to see it than the date.

Step 1: Outputting time and date

Prompt to AI: Display the current date (small) and time (large) in the center of the screen. Date format – day. month. year. Display time with seconds.

Result: The AI ​​has written a script in Python. It needs to be saved in a file with the extension .py and run with the command python file.py (Windows) or python3 file.py (Linux/macOS).

Script from AI: clock-1.py

Clock widget. Step 1: Date and time displayed on the screen (clock not running)

Not bad, but it’s a static image. Let’s ask the AI ​​to make the clock tick, and at the same time fix the horizontal alignment and add colors.

Step 2: Clockwork, Colors, and Alignment

🤖 AI Prompt: Make the clock tick and not stop. The text is currently not centered, move it to the right by 3 pixels. Display the time in light green.

Script from AI:  clock-2.py

Result:

[Video] Clock Widget. Step 2: The finished widget

We got the widget ready in just 3 prompts. The only caveat is that AI aligns the text to the center with an error, since the characters have different widths (for example, the numbers 1 and 5). In the next version of the HTTP API, we will add horizontal and vertical text alignment, which will completely solve this problem.

Making a weather widget

The script, running on a PC, will receive weather from open sources on the Internet and display it on the BUSY Bar screen for several cities. For each city, the script will display a weather icon, city, and temperature.

Step 1: Display the weather

🤖 AI Prompt: Create a script that displays the weather in 3 cities in turn: Dubai, London, New York with a 3-second pause. Get the weather from open sources without the need for registration.

Script from AI:  weather-1.py

Result:

[Video] Weather widget. Step 1: Display weather in 3 cities

You can see that the script is successfully retrieving weather data, but due to the rapid scrolling of the text and frequent switching of cities, it is impossible to read anything right now. Let’s fix this.

Step 2: Improving the interface

🤖 Prompt to AI: On the left, display a weather icon (16×16), let the script draw them itself. On the right, display: city (small) and temperature (large).

Script from AI:  weather-2.py

Result:

[Video] Weather Widget. Step 2: Re-arranging the Elements on the Screen

It’s better, but there are still a few shortcomings that we will eliminate with the next requests to AI.

Step 3: Understanding the degree sign

🤖 AI prompt: The degree symbol is not displayed. The device is definitely able to display this symbol in big font.

Script from AI:  weather-3.py

Result:

[Video] Weather widget. Step 3: The degree symbol is now displayed correctly
Almost done. The only thing that’s confusing is the confusing weather icons. This seems to be a weakness of ChatGPT. Why not use weather icons with emojis then?

Step 4: Making beautiful icons

You need to prepare icons for the main weather phenomena (sunny, cloudy, rainy, etc.). The icons themselves can be taken from open sources, for example, there is an excellent font Noto Color Emoji 16.0 from Google. Images of all symbols are available in репозиторії GitHub .

We will need pictures:

  • ☀️  sun.png (сонячно) – символ  u2600

  • ☁️  cloud.png (хмарно) — символ  u2601

  • 🌫️  fog.png (туман) – символ  u1f32b

  • ⛅  partly.png (хмарно) — символ  u1324

  • 🌧️  rain.png (дощ) – символ  u1327

  • 🌨️  snow.png (сніг) – символ  u1328

These images need to be scaled to 16×16 and saved in the icons folder, which should be located in the script folder. After that, you need to ask the AI ​​to refine the script.

🤖 AI prompt: Extract icons from the ready-made files I put in the icons folder: cloud.png, fog.png, partly.png, rain.png, snow.png, sun.png.

Script from AI:  weather-4.py

Result:

[Video] Weather widget. Step 4: Finished widget

Done! You can change the list of cities in the script. You can leave only one city and then only its weather will be displayed, updating every 3 seconds.

Making a ping monitor

Ping is a way to check the availability of devices on the network. The point is to send a special request to the IP address of the node being tested and measure the time from sending the request to receiving a response.

This parameter is important in some online games, where the game server’s response speed and the quality of the connection can determine the outcome of the game. Therefore, it is useful to have a ping indicator that is updated in real time.

Ping indicator in Pokémon UNITE

Step 1: Outputting a ping graph

🤖 AI Prompt: Create a script that displays a graph of the game server’s ping by IP. Update the graph once a second. In the upper left corner, display the ping in small font.

Script from AI:  ping-monitor-1.py

AI generated a script that takes the server IP address as a parameter. Therefore, the address must be specified when running the script. For example, if the server address is 8.8.8.8, then to monitor its availability, the command would look like this:   python3 ping-monitor-1.py –server 8.8.8.8

Result:

[Video] Ping Monitor. Step 1: The graph and current ping value are displayed on the screen

Great, almost done. But it’s not clear what values ​​we see on the graph. But that’s not so important. What’s more important is that we can immediately see the deviation of the ping from normal values. We can use different colors to identify good, average and bad ping.

Step 2: Color the graph

🤖 AI Prompt: Let the bars corresponding to 0-20 ms be green, 21-50 – yellow, and more than 50 – red. The height of the scale is 100 ms.

Script from AI:  ping-monitor-2.py

Result:

[Відео] Пінг-монітор. Крок 2: Графік прикрашається відповідно до значення пінгу
Great! There’s one small, cosmetic detail left – displaying the game logo on the left side of the screen.

Step 3: Add the game logo

🤖 Prompt to AI: Let’s display the CS: GO game logo to the left of the graph.

The AI ​​asks for the game logo file to be called csgo.png and placed in the script folder. Google the image you want, scale it to 16×16, and save it.

Script from AI: ping-monitor-3.py

Result:

[Відео] Пінг-монітор. Крок 3: Готовий віджет

Done! In a few steps, without any programming, we were able to create a visual widget. It can be used not only to monitor the availability of a game server, but also to monitor the availability of any other servers on the LAN or the Internet in general.

Conclusion

BUSY Bar demonstrates how easy it can be to create your own widgets by combining an open HTTP API with the capabilities of modern AI assistants. Even without programming, a user can quickly learn to display text, graphics, weather icons, or ping graphs – just a few clear prompts are enough. The single logic of operation is the same for all connection types, and the documentation is available directly on the device, which makes the process even more convenient. As a result, BUSY Bar becomes not just a Pomodoro timer, but a flexible tool for creating personalized microinterfaces for any tasks.

Subscribe
Notify of
0 Коментарі
Oldest
Newest Most Voted
Found an error?
If you find an error, take a screenshot and send it to the bot.