Last active
October 2, 2025 23:40
-
-
Save g4bri3lDev/16a83ad17f8e7a92085f5e00e5bdeb1f to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| blueprint: | |
| name: Minecraft Server Dashboard 2.6" | |
| description: > | |
| # Minecraft Server Dashboard for OpenEPaperLink | |
| Displays real-time Minecraft server information on e-paper displays including: | |
| - Server name and online/offline status | |
| - Current player count vs. maximum players | |
| - Server version information | |
| - Grid of online players (up to 12 slots with overflow indicator) | |
| ## Requirements | |
| - [OpenEPaperLink Integration](https://github.com/OpenEPaperLink/Home_Assistant_Integration) installed | |
| - [Minecraft Server](https://www.home-assistant.io/integrations/minecraft_server/) installed | |
| author: g4bri3lDev | |
| domain: automation | |
| source_url: https://gist.github.com/g4bri3lDev/16a83ad17f8e7a92085f5e00e5bdeb1f/raw | |
| input: | |
| displays: | |
| name: E-Paper Display(s) | |
| description: Which e-paper displays to show the dashboard on | |
| selector: | |
| device: | |
| multiple: true | |
| filter: | |
| integration: open_epaper_link | |
| server_name: | |
| name: Server Name | |
| description: Display name for your Minecraft server | |
| default: "Minecraft Server" | |
| selector: | |
| text: | |
| minecraft_status_sensor: | |
| name: Minecraft Server Status Sensor | |
| description: Binary sensor that shows server online/offline status | |
| selector: | |
| entity: | |
| filter: | |
| domain: binary_sensor | |
| minecraft_players_sensor: | |
| name: Minecraft Players Online Sensor | |
| description: Sensor that shows current player count and has players_list attribute | |
| selector: | |
| entity: | |
| filter: | |
| domain: sensor | |
| minecraft_version_sensor: | |
| name: Minecraft Server Version Sensor | |
| description: Sensor that shows the server version | |
| selector: | |
| entity: | |
| filter: | |
| domain: sensor | |
| optional: | |
| name: Optional | |
| icon: "mdi:cog" | |
| collapsed: true | |
| input: | |
| max_players: | |
| name: Maximum Players | |
| description: Maximum number of players your server supports | |
| default: 20 | |
| selector: | |
| number: | |
| min: 1 | |
| max: 100 | |
| step: 1 | |
| font_file: | |
| name: Font File | |
| description: Font file to use for text | |
| default: "ppb.ttf" | |
| selector: | |
| text: | |
| variables: | |
| server_name: !input server_name | |
| font_file: !input font_file | |
| minecraft_status: !input minecraft_status_sensor | |
| minecraft_players: !input minecraft_players_sensor | |
| minecraft_version: !input minecraft_version_sensor | |
| max_players: !input max_players | |
| players_list: "{{ state_attr(minecraft_players, 'players_list') or [] }}" | |
| trigger: | |
| - trigger: state | |
| entity_id: !input minecraft_status_sensor | |
| - trigger: state | |
| entity_id: !input minecraft_players_sensor | |
| action: | |
| - action: open_epaper_link.drawcustom | |
| target: | |
| device_id: !input displays | |
| data: | |
| background: white | |
| rotate: 0 | |
| dry-run: false | |
| payload: > | |
| [ | |
| { | |
| "type": "rectangle", | |
| "x_start": 4, | |
| "y_start": 4, | |
| "x_end": 292, | |
| "y_end": 24, | |
| "color": "black", | |
| "fill": "black" | |
| }, | |
| { | |
| "type": "text", | |
| "value": "{{ server_name }}", | |
| "x": 148, | |
| "y": 14, | |
| "font": "{{ font_file }}", | |
| "anchor": "mm", | |
| "color": "white" | |
| }, | |
| { | |
| "type": "rectangle", | |
| "x_start": 4, | |
| "y_start": 28, | |
| "x_end": 292, | |
| "y_end": 48, | |
| "color": "black", | |
| "fill": "gray" | |
| }, | |
| { | |
| "type": "text", | |
| "value": "{{ states(minecraft_players) }}/{{ max_players }}", | |
| "x": 8, | |
| "y": 38, | |
| "font": "{{ font_file }}", | |
| "anchor": "lm", | |
| "color": "black", | |
| "size": 14 | |
| }, | |
| { | |
| "type": "text", | |
| "value": "{% if is_state(minecraft_status, 'on') %}Online{% else %}Offline{% endif %}", | |
| "x": 148, | |
| "y": 38, | |
| "font": "{{ font_file }}", | |
| "anchor": "mm", | |
| "color": "{% if is_state(minecraft_status, 'on') %}black{% else %}red{% endif %}", | |
| "size": 14 | |
| }, | |
| { | |
| "type": "text", | |
| "value": "{{ states(minecraft_version) }}", | |
| "x": 288, | |
| "y": 38, | |
| "font": "{{ font_file }}", | |
| "anchor": "rm", | |
| "color": "black", | |
| "size": 14 | |
| }, | |
| {% if players_list | length > 0 %} | |
| {% for player in players_list[:12] %} | |
| { | |
| "type": "rectangle", | |
| "x_start": {{ 4 + ((loop.index0 % 3) * 97) }}, | |
| "x_end": {{ 97 + ((loop.index0 % 3) * 97) }}, | |
| "y_start": {{ 52 + ((loop.index0 // 3) * 24) }}, | |
| "y_end": {{ 72 + ((loop.index0 // 3) * 24) }}, | |
| "outline": "black" | |
| }, | |
| { | |
| "type": "text", | |
| "value": "{% if loop.index0 < 11 %}{{ player }}{% else %}+{{ players_list | length -11 }}{% endif %}", | |
| "x": {{ 51 + ((loop.index0 % 3) * 97) }}, | |
| "y": {{ 62 + ((loop.index0 // 3) * 24) }}, | |
| "font": "{{ font_file }}", | |
| "anchor": "mm", | |
| "color": "black", | |
| "size": 12 | |
| }, | |
| {% endfor %} | |
| {% else %} | |
| { | |
| "type": "text", | |
| "value": "No Players online", | |
| "x": 148, | |
| "y": 96, | |
| "font": "{{ font_file }}", | |
| "anchor": "mm", | |
| "color": "black", | |
| "size": 14 | |
| }, | |
| {% endif %} | |
| ] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment