A Home Assistant custom integration that renders a pixel-perfect adaptive clock on Divoom Pixoo displays.
Pairs with Adaptive Lighting to shift clock color temperature throughout the day.
Exposes your Divoom Pixoo as a light entity in Home Assistant. When Adaptive Lighting (or anything else) changes the light's color temperature or brightness, this integration:
- Converts the color temperature to RGB
- Renders a 16x16 pixel clock image using a built-in 3x5 bitmap font
- Pushes the image to your Pixoo via Bluetooth
The clock digits follow your circadian rhythm -- warm amber at night, cool white during the day.
- Pixel-perfect 3x5 bitmap font -- no external font files, hardcoded bitmaps
- Progress border -- 60 perimeter pixels fill clockwise, 1 per second
- 12-hour format by default (configurable to 24h)
- Adaptive color -- responds to color_temp and RGB from any HA automation
- Non-blocking -- rendering runs in an executor, won't slow down HA
- Duplicate frame skipping -- only pushes to BT when something changes
+------------------+
| ooooooooooooo... | <- Progress border (fills clockwise)
| o . |
| o ## ## . | <- Hours (3x5 font, centered)
| o #### ## . |
| o ## ## . |
| o ## ## . |
| o #### #### . |
| o . |
| o :: . | <- Colon separator
| o . |
| o #### ## ## . | <- Minutes (3x5 font)
| o ## ## ## . |
| o #### #### . |
| o ## ## . |
| o #### ## . |
| ................. | <- Progress border
+------------------+
o = border lit . = border dim # = digit
- hass-divoom installed and configured with your Pixoo paired via Bluetooth
- A working
notify.divoom_deviceservice (test it in Developer Tools > Actions first)
- Open HACS in your Home Assistant UI
- Go to Integrations > three-dot menu > Custom repositories
- Add
https://github.com/Bewinxed/hass-pixoo-clockwith category Integration - Click Install
- Restart Home Assistant
- Copy the
custom_components/pixoo_clockfolder to yourconfig/custom_components/directory - Restart Home Assistant
Add to your configuration.yaml:
light:
- platform: pixoo_clock
name: "Pixoo Clock"
notify_service: "notify.divoom_device"
twelve_hour: true| Option | Default | Description |
|---|---|---|
name |
Pixoo Clock |
Entity name |
notify_service |
notify.divoom_device |
The hass-divoom notify service to use |
twelve_hour |
true |
Use 12-hour format (false for 24-hour) |
- Install Adaptive Lighting via HACS
- Go to Settings > Devices & Services > Adaptive Lighting > Configure
- Add
light.pixoo_clock(or whatever you named it) to the controlled lights - Done -- the clock color now follows your circadian schedule
You can also control it manually:
# Set to warm amber
service: light.turn_on
target:
entity_id: light.pixoo_clock
data:
color_temp_kelvin: 2700
brightness: 200
# Set to cool white
service: light.turn_on
target:
entity_id: light.pixoo_clock
data:
color_temp_kelvin: 5500
brightness: 255
# Set to any RGB color
service: light.turn_on
target:
entity_id: light.pixoo_clock
data:
rgb_color: [255, 0, 128]
# Turn off the display
service: light.turn_off
target:
entity_id: light.pixoo_clockTested with the original Divoom Pixoo (16x16, Bluetooth Classic). Should work with any 16x16 Divoom display supported by hass-divoom.
Larger displays (Pixoo-64, Pixoo-Max) will work but the clock will only use a 16x16 area. PRs welcome for multi-resolution support.
The integration creates a standard Home Assistant light entity that supports color_temp and rgb color modes. Every second, it:
- Checks if the time or color has changed since the last frame
- If yes, renders a new 16x16 image using Pillow with the built-in bitmap font
- Saves it as a GIF to
/config/pixelart/clock.gif - Calls
notify.divoom_devicewithmessage: "image"to push it to the Pixoo
The rendering runs in an executor thread so it never blocks the HA event loop.
MIT
