TileBoard - New dashboard for Homeassistant

I have some electric blinds, but they do not report the state. I have them setup with RFXCOM RFXtrx and they are working fine. The issue I have is that when the blinds are down, and someone uses the remote to put them up, I cannot then use my TileBoard setup to lower them, as the state in Home Assistant is closed. Is there a way to setup the cover so that the state is ignored?

Ideally I’d like to be able to click the Up arrow and it calls the cover.open service and clicking down calls the cover.close service

Thanks

Can a Button be an Button with is pressend 0,5s And Then release?

I am looking to display the ETA for the next train arrival in a simple card. Please see my code here:
image

any tips to remove the to data points in red?

image

Thanks! I know its basic.

I installed Tileboard, as a separate docker container, and configured a few things. All is well, except for adding custom CSS. There is no mention of how to add custom.css file using docker installation. Can someone please help with this?

Hi,

I am trying to add a a picture oj meteo alert!
I am using this :

{
   position: [0, 3],
   type: TYPES.IMAGE,
   id: {},
   url: '/config/www/weather/meteo_france_alerte_today.png'},`

But my picture do not appear!

Do you know why?
thant you

Hi have an issue running dashboard on separate port.
I disabled SSL and added additional port 9123 in config:

Reaching URL: http://192.168.1.80:9123 i got:
image

If I add a long term token in config.js, I got a blank page with dashboard backgroud and this errror:

I also tried to force from this:

serverUrl: 'http://' + location.hostname + ':8123',
wsUrl: 'ws://' + location.hostname + ':8123/api/websocket',

to this

serverUrl: 'http://192.168.1.80:8123',
   wsUrl: 'ws://192.168.1.80:8123/api/websocket',

but nothing change.
I would like to run only dashboard on a tablet, without opening HA interface

Thanks for help

Marco

I have the same ERR with LordHayne,you said whit add-on tileboard directory just only contain config.js and custom.css. which way can I get the custom.css?And delate the other folder in tileboard ?

hey adam also looking into integrating the MCA to home assistant. can you confirm successful integration??

Hey, I am having some problems with the Add-on. After I installed it, I created a folder called tileboard in my config folder. Inside the tileboard folder, I created a file called config.js, where I pasted the example configurartion.
When opening the webUI, I get: "please make sure that you have “config.js” file and it is a valid javascript! if you are running tileboard for the first time, please rename “config.example.js” to “config.js” as a pop-up

Also, the logs show: [error] 388#388: *1 open() “/var/www/tileboard/config.js” failed (13: Permission denied), client: xxx, server: x-tileboard, request: “GET /config.js?r=x HTTP/1.1”, host: "myurl, referrer: “https://myurl/api/hassio_ingress/xxxxx/

Running the browser console, I get: net::ERR_ABORTED 403 (Forbidden)

If I delete my config,js file, the webUI open the example file, as stated on the logs.

Any help? Thanks!

I recently configured my Tileboard with the help of a GPT. You can also try it out via the following link:

you can ask questions like:

Basic Configuration Setup:

  • “I’m new to TileBoard. Can you help me set up a basic configuration with a light, a thermostat, and a weather widget?”

Customizing Tiles:

  • “I have several lights in my living room. How can I create a group of light control tiles in TileBoard?”
  • Entity details: Living room lights are light.living_room_ceiling, light.living_room_lamp1, light.living_room_lamp2.

Advanced Features:

  • “How can I configure a TileBoard page with a camera feed and motion sensors?”
  • Entity details: Camera entity is camera.front_door, motion sensors are binary_sensor.motion_sensor_1 and binary_sensor.motion_sensor_2.

Theme and Styling:

  • “I want to change the theme of my TileBoard to a dark theme. How can I do that?”

Integrating Media Controls:

  • “I’d like to add a tile to control my media player in Home Assistant. What’s the configuration for that?”
  • Entity details: Media player entity is media_player.living_room_speaker.

Creating Scenes and Automation Tiles:

  • “Can you show me how to create a ‘Good Night’ scene tile that turns off all lights and sets the thermostat to a specific temperature?”
  • Entity details: Lights are light.bedroom, light.living_room, and thermostat is climate.home_thermostat.

Security and Access Control:

  • “I need to set up a security dashboard with door lock controls and sensor status. How do I configure this in TileBoard?”
  • Entity details: Door lock is lock.front_door, sensors are binary_sensor.door_sensor and binary_sensor.window_sensor.

how do you like it?

Hi.
Try this

Opened without HA using the link “http://myip:9123/

I really want this to work! I have installed as addon on Homeasssistant, I have duckdns ssl running and would like to access the tileboard at a different port than my HA instance, when I specify another port, I get the cipher error. and find no way to change that

Hi @Emilic did u succseed? I’ve managed to open the tile board, but no tiles is working, i can only left in config the header part, otherwise i got black screen ;(

Hi everyone
I have a HA OS installation on raspberry, where can I find the files to modify? I can’t find them anywhere
Thank you

Dear TileBoard users,
i know the topic been discussed several times but I still struggling with simple step… accessing to the add-on configuration via external secured link (over https://)
How can I do it? I’m getting “ERR_SSL_VERSION_OR_CIPHER_MISMATCH” message instead of my beautiful dashboard :frowning:
Any help?

Hello,

I have the TileBoard Addon installed on a RaspBerry Pi4, and I want to know how to access only the content of the addon, without the Home Assistant UI menu.

Maybe through a link or something since I want to put TileBoard on a tablet with a kiosk application so that it opens the link directly.

If not, what alternatives do I have?

SOLUTION:
I have found the link, in the logs of the addon, I saw the link.
In the logs, go to client; xxxxx, server: xxxxx, request: xxxxx, host: xxxxx, referrer: (the link) “https://your_host:8123/api/hassio_ingress/xxxxx”

I realise that this is no longer maintained and so there could be issues that will not get fixed. However, I am hoping my issue is simple to correct.

I have not used tileboard for some time and have just come back to update my tileboard screen. I have a jpg that acts as my background.

As can be seen from the screenshot, the url indeed displays the jpg when I enter it on my laptop (not my raspberry pi home assistant). In the past, this was displaying correctly in tileboard. However, now, all I am getting is the default blue background. I have even changed my config to a basic default screen with no cards but it still does not work. The code is below:

/*
 This is an example configuration file.

 COPY OR RENAME THIS FILE TO config.js.

 Make sure you use real IDs from your HA entities.
*/

const userAgent = navigator.userAgent.toLowerCase();
const isTablet = /(ipad|tablet|(android(?!.*mobile))|(windows(?!.*phone)(.*touch))|kindle|playbook|silk|(puffin(?!.*(IP|AP|WP))))/.test(userAgent);
console.log(isTablet)

/*var GROUP_WIDTH = 3; 
var GROUP_MARGIN = 5; 
var TILE_MARGIN = 4; 
var TILE_SIZE = getTileSize(GROUP_WIDTH, TILE_MARGIN, GROUP_MARGIN); 
var TRANSITION = TRANSITIONS.SIMPLE; 
var CUSTOM_THEME = CUSTOM_THEMES.MOBILE; 

function getTileSize(tileCount, tileMargin, groupMargin) 
{ 
	var width = window.innerWidth 
	|| document.documentElement.clientWidth 
	|| document.body.clientWidth; 

	width -= groupMargin * 2 + tileMargin * (tileCount - 1); 

	return +(width / tileCount).toFixed(1); 
}*/

/*$(function () {
    
    // Get elements and starting sizes;
    var $box = $('#box'),
        $debug = $('#debug'),
        startingWidth = $box.width(),
        startingHeight = $box.height(),
        startingFontSize = 15;
    
    // On resize of box also resize font.
    $box.resize(function () {
        
        // Get new sizes and calculate percentage differences for height and width.
        var newWidth = $box.width(),
            newHeight = $box.height(),
            percentageWidthDifference = ((newWidth- startingWidth) / newWidth),
            percentageHeightDifference = ((newHeight - startingHeight) / newHeight),
            
            // Increase/decrease font size by the percentage.
            newFontSize = startingFontSize + (startingFontSize * percentageWidthDifference);

            // Set the new font size;        
            $box.css('font-size', newFontSize + 'px');        
        
            // Show values in debug area while resizing.
            $debug
                .html('Width: ' + Math.round(percentageWidthDifference * 100) + '% changed <br />')
                .append('Height: ' + Math.round(percentageHeightDifference * 100) + '% changed <br />')
                .append('Font size: ' + Math.round(newFontSize) + 'px');
        
    }).resizable();
});*/

var SPACER_WIDTH = 0;

if (isTablet == true) { SPACER_WIDTH = 7;} else { SPACER_WIDTH = 10;}

var CURRENT_DEVICE_TRACKED = 'NONE';

var OPEN_MAP_TILE = {
	position: [0, 3],
	type: TYPES.POPUP_IFRAME,
	id: {},
	width: 3,
	height: 2,
	url: function () {
		var lat = this.states[CURRENT_DEVICE_TRACKED].attributes.latitude;
        var lon = this.states[CURRENT_DEVICE_TRACKED].attributes.longitude;
        var zoom = '.0025';
        var url = "https://maps.google.com/maps?q=@" + lat + "," + lon + "&ll=" + lat + "," + lon + "&spn=" + zoom + "," + zoom + "&t=h&hl=en&output=embed";
        return (url);
	}
}

var CONFIG = {
	customTheme: CUSTOM_THEMES.TRANSPARENT, // CUSTOM_THEMES.TRANSPARENT, CUSTOM_THEMES.MATERIAL, CUSTOM_THEMES.MOBILE, CUSTOM_THEMES.COMPACT, CUSTOM_THEMES.HOMEKIT, CUSTOM_THEMES.WINPHONE, CUSTOM_THEMES.WIN95
	//transition: TRANSITIONS.ANIMATED_GPU, //ANIMATED or SIMPLE (better perfomance)
	transition: TRANSITIONS.SIMPLE, //ANIMATED or SIMPLE (better perfomance)
	entitySize: ENTITY_SIZES.SMALL, //SMALL, BIG are available
	tileSize: 90,
	tileMargin: 6,
	groupMarginCss: '10px',
	serverUrl: 'http://' + location.hostname + ':8123',
	wsUrl: 'ws://' + location.hostname + ':8123/api/websocket',
	authToken: null, // optional long-lived token (CAUTION: only if TileBoard is not exposed to the internet)
	googleApiKey: "AIzaSyCd3Cj96sNbGW1HAAOT60LfFTLiSQq4HUg", // Required if you are using Google Maps for device tracker
   //mapboxToken: "XXXXXXXXXX", // Required if you are using Mapbox for device tracker
	debug: false, // Prints entities and state change info to the console.
	pingConnection: true, //ping connection to prevent silent disconnections
	locale: 'en-us', // locale for date and number formats - available locales: it, de, es, fr, pt, ru, nl, pl, en-gb, en-us (default). See readme on adding custom locales.
   // next fields are optional
	events: [],
	timeFormat: 24,
	menuPosition: MENU_POSITIONS.LEFT, // or BOTTOM
	hideScrollbar: false, // horizontal scrollbar
	groupsAlign: GROUP_ALIGNS.HORIZONTALLY, // HORIZONTALLY, VERTICALLY, GRID
	onReady: function () {},

/**************************************************************************************************************************/
/*                                                                                                                        */
/*                                                   HEADER                                                               */
/*                                                                                                                        */
/**************************************************************************************************************************/

   header: { // https://github.com/resoai/TileBoard/wiki/Header-configuration
      styles: {
         margin: '30px 130px 0',
         fontSize: '28px'
      },
      right: [
         {
            type: HEADER_ITEMS.CUSTOM_HTML,
            html: 'MyCity'
         },
         {
            type: HEADER_ITEMS.WEATHER,
            styles: {
               margin: '0'
            },
            icon: '&weather.mycity.state',
            state: '&weather.mycity.state',
            icons: {
               'clear-day': 'clear',
               'clear-night': 'nt-clear',
               'cloudy': 'cloudy',
               'exceptional': 'unknown',
               'fog': 'fog',
               'hail': 'sleet',
               'lightning': 'chancestorms',
               'lightning-rainy': 'tstorms',
               'partly-cloudy-day': 'partlycloudy',
               'partly-cloudy-night': 'nt-partlycloudy',
               'partlycloudy': 'partlycloudy',
               'pouring': 'rain',
               'snowy': 'snow',
               'snowy-rainy': 'sleet',
               'wind': 'unknown',
               'windy': 'unknown',
               'windy-variant': 'unknown'
            },
            states: {
               'clear-night': 'Clear, night',
               'cloudy': 'Cloudy',
               'exceptional': 'Exceptional',
               'fog': 'Fog',
               'hail': 'Hail',
               'lightning': 'Lightning',
               'lightning-rainy': 'Lightning, rainy',
               'partlycloudy': 'Partly cloudy',
               'pouring': 'Pouring',
               'rainy': 'Rainy',
               'snowy': 'Snowy',
               'snowy-rainy': 'Snowy, rainy',
               'sunny': 'Sunny',
               'windy': 'Windy',
               'windy-variant': 'Windy'
            },
            fields: {
               temperature: '&weather.mycity.attributes.temperature',
               temperatureUnit: '°C',
            }
          }
      ],
      left: [
         {
            type: HEADER_ITEMS.CUSTOM_HTML,
            html: '<b><i>Home Sweet Home</b></i>'
         },
         {
            type: HEADER_ITEMS.DATETIME,
            dateFormat: 'EEEE, dd LLLL', //https://docs.angularjs.org/api/ng/filter/date
         },
         // {
         //    type: HEADER_ITEMS.DATE,
         //    dateFormat: 'EEEE, LLLL dd', //https://docs.angularjs.org/api/ng/filter/date
         // },
         // {
         //    type: HEADER_ITEMS.TIME,
         // },
      ]
   },

   /*screensaver: {// optional. https://github.com/resoai/TileBoard/wiki/Screensaver-configuration
      timeout: 300, // after 5 mins of inactive
      slidesTimeout: 10, // 10s for one slide
      styles: { fontSize: '40px' },
      leftBottom: [{ type: SCREENSAVER_ITEMS.DATETIME }], // put datetime to the left-bottom of screensaver
      slides: [
         { bg: 'images/bg1.jpeg' },
         {
            bg: 'images/bg2.png',
            rightTop: [ // put text to the 2nd slide
               {
                  type: SCREENSAVER_ITEMS.CUSTOM_HTML,
                  html: 'Welcome to the <b>TileBoard</b>',
                  styles: { fontSize: '40px' }
               }
            ]
         },
         { bg: 'images/bg3.jpg' }
      ]
   },*/

   pages: [
   {
         title: 'Curtains and Blinds',
         bg: 'http://192.168.0.186:8123/local/images/frontofhouse.jpg?v=1',
         icon: 'mdi-blinds',
         groups: [
            {
               title: '',
               width: 4,
               height: 3,
               items: [
               ]
            },
         ]
	}
	],
}

Is there any reason why this bg url definition would no longer work in the config?