various urls, pw and userid == xx
sent as 3 post due to size
var DOORENTRY_TILE = {
position: [0, 2],
type: TYPES.DOOR_ENTRY,
id: {},
icon: 'mdi-doorbell-video',
title: 'Door entry',
state: false,
layout: {
camera: {
type: TYPES.CAMERA,
id: {},
refresh: 1000,
bgSize: 'cover',
filter: function (item, entity) {return "http://192.168.1.36:1050/image/doorbird?user=xx&pw=xx"},
},
page: { },
tiles: [ ],
}
};
var CONFIG = {
customTheme: CUSTOM_THEMES.COMPACT, // 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)
entitySize: ENTITY_SIZES.NORMAL, // NORMAL, SMALL, BIG are available
tileSize: 125,
tileMargin: 6,
serverUrl: "http://192.168.1.123:8123",
password: "xx",
wsUrl: "ws://192.168.1.123:8123/api/websocket",
authToken: "xx",
googleApiKey: "xx", // 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
doorEntryTimeout: 12,
ignoreErrors: true,
// next fields are optional
events: [
{
command: 'open_page',
action: function(e) {
window.openPage(CONFIG.pages[e.page]);
}
},
{
command: 'doorbell',
action: function(eventData) {
this.$scope.openDoorEntry(DOORENTRY_TILE, DOORENTRY_TILE.id);
}
},
],
timeFormat: 12,
menuPosition: MENU_POSITIONS.LEFT, // or BOTTOM
hideScrollbar: false, // horizontal scrollbar
groupsAlign: GROUP_ALIGNS.HORIZONTALLY, // or VERTICALLY
onReady: function () {},
/* header: { // https://github.com/resoai/TileBoard/wiki/Header-configuration
styles: {
padding: '10px 13px 0',
fontSize: '18px'
},
left: [],
right: [
{
type: HEADER_ITEMS.DATETIME,
dateFormat: 'EEEE, LLLL dd', //https://docs.angularjs.org/api/ng/filter/date
}
]
},
*/
/*
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: 'Main page',
bg: "images/monteverde.jpg",
icon: 'mdi-home-assistant',
header: DEFAULT_HEADER,
groups: [
{
title: '',
items: [
{
position: [0, 0],
type: TYPES.ALARM,
id: "alarm_control_panel.home_alarm",
theme: ITEM_TRANSPARENT,
title: 'Home Alarm',
subtitle: '&sensor.home_alarm_keypad.state',
icons: {
disarmed: 'mdi-bell-off',
pending: 'mdi-bell',
armed_home: 'mdi-bell-plus',
armed_away: 'mdi-bell',
triggered: 'mdi-bell-ring'
},
states: {
disarmed: 'Disarmed',
pending: 'Pending',
armed_home: 'Armed home',
armed_away: 'Armed away',
triggered: 'Triggered'
}
},
{ position: [1, 0], type: TYPES.SENSOR_ICON, title: "Pool/Spa", id: 'sensor.poolspa_mode',
states: { spa: 'Spa', pool: 'Pool', floor: "Floor", freeze: "Freeze", off: "Off" }, theme: ITEM_TRANSPARENT,
icons: { spa: 'mdi-hot-tub', pool: 'mdi-pool', floor: 'mdi-robot', freeze: 'mdi-snowflake', off: 'mdi-swim' },
/* customStyles: function (item, entity) { if (entity.state == "off") { return {backgroundColor: 'blue'} }
else { return {backgroundColor: 'red' } }
} */
},
{ position: [2, 0], type: TYPES.SENSOR, title: "Temperature", subtitle: "Pool/Spa", id: 'sensor.water_temp',
unit: '°F', state: false, theme: ITEM_TRANSPARENT,
},
{
position: [3, 0],
title: 'Net Energy',
subtitle: '',
// classes: ['-sensor-small-text'],
theme: ITEM_TRANSPARENT,
type: TYPES.GAUGE,
state: false,
id: 'sensor.net_demand',
value: function(item, entity) {
if (parseFloat(entity.state) >= 0) { return (((parseFloat(entity.state) + 13) / 26) * 100); }
else { return (((parseFloat(entity.state) + 13) / 26) * 100); }
},
settings: {
size: 100, // Defaults to 50% of either height or width, whichever is smaller
type: 'full', // Options are: 'full', 'semi', and 'arch'. Defaults to 'full'
min: 0,
max: 100,
cap: 'round', // Options are: 'round', 'butt'. Defaults to 'butt'
thick: 6,
label: '@state kW',
append: '@attributes.unit_of_measurement', // Defaults to undefined
prepend: '',
duration: 1500,
thresholds: { 0: { color: 'green'}, 50: { color: 'yellow' }, 70: { color: 'red' } },
labelOnly: true,
foregroundColor: 'rgba(0, 150, 136, 1)', // Defaults to rgba(0, 150, 136, 1)
backgroundColor: 'rgba(0, 0, 0, 0.1)', // Defaults to rgba(0, 0, 0, 0.1)
fractionSize: 1, // Number of decimal places to round the number to. Defaults to current locale formatting
},
},
{ position: [4, 0], type: TYPES.SENSOR_ICON, title: "Mail & Packages", id: 'sensor.mail_packages_delivered', theme: ITEM_TRANSPARENT,
subtitle: 'USPS(' + '&sensor.mail_usps_mail.state' + '),' + 'Transit(' + '&sensor.mail_packages_in_transit.state' + ')',
states: { 0: 'No Packages', 1: "One Package", 2: "Two Packages", 3: "Three Packages", 4: "Four Packages" },
icons: { 0: 'mdi-package-variant-closed', 1: 'mdi-package-variant', 2: "mdi-package-variant", 3: "mdi-package-variant", 4: "mdi-package-variant" },
},
{ position: [6, 2], type: TYPES.IMAGE, id: {}, bg: 'images/xx-guest-network-qrcode.png'
},
{ position: [5, 0], type: TYPES.SENSOR_ICON, state: false, title: null, id: 'switch.gym_scene',
states: { on: "On", off: "Off" }, icon: 'mdi-weight-lifter',
customStyles: function (item, entity) { if (entity.state == 'on') {
return { 'backgroundColor': 'transparent', 'color': '#fff', 'opacity': '0.75' };
}
else {
return { 'opacity': '0' };
}
}
},
{
position: [6, 1], type: TYPES.SENSOR_ICON, id: 'binary_sensor.trashtomorrow', title: 'Trash Tomorrow',
state: false, icon: 'mdi-dump-truck',
customStyles: function (item, entity) { if (entity.state == 'on') {
return { 'backgroundColor': 'green', 'color': '#fff', 'opacity': '0.5' };
}
else {
return { 'opacity': '0' };
}
}
},
{
position: [6, 1], type: TYPES.SENSOR_ICON, id: 'binary_sensor.trashday', title: 'Trash Day',
state: false, icon: 'mdi-dump-truck',
customStyles: function (item, entity) { if (entity.state == 'on') {
return { 'backgroundColor': 'red', 'color': '#fff', 'opacity': '0.7' };
}
else {
return { 'opacity': '0' };
}
}
},
{ // using nws also check app.js for values
position: [0, 3],
height: 2,
theme: ITEM_TRANSPARENT,
type: TYPES.WEATHER,
id: 'weather.kcrq_daynight',
customStyles: { fontSize: '11px' },
title: 'Palomar Airport',
state: '&weather.kcrq_daynight.state',
icon: '&weather.kcrq_daynight.state',
icons: {
'clear-day': 'clear',
'clear-night': 'nt-clear',
'cloudy': 'cloudy',
'rain': 'rain',
'rainy': 'rain',
'sleet': 'sleet',
'snow': 'snow',
'wind': 'hazy',
'fog': 'fog',
'partlycloudy': 'partlycloudy',
'partly-cloudy-day': 'partlycloudy',
'partly-cloudy-night': 'nt-partlycloudy',
'lightning-rainy': 'tstorms',
'sunny': 'clear'
},
fields: {
Summary: '&weather.kcrq_daynight.state',
temperature: '&weather.kcrq_daynight.attributes.temperature',
temperatureUnit: '°F',
windSpeed: '&weather.kcrq_daynight.attributes.wind_speed',
windSpeedUnit: 'mph &sensor.nws_summary.attributes.wind_bearing',
humidity: '&weather.kcrq_daynight.attributes.humidity',
humidityUnit: '%',
list: [
'&weather.kcrq_daynight.attributes.pressure' + ' inHg, ' + '&sensor.mkiii_rainfall_tileboard.state',
'&sensor.nws_summary.attributes.precipitation_propability' + '% Chance of Rain',
'&sensor.nws_summary.attributes.visibility' + ' mi Visibility'
]
}
},
/* { // darksky depracated after apple acquitiion
position: [0, 3],
height: 2,
theme: ITEM_TRANSPARENT,
type: TYPES.WEATHER,
id: 'weather.dark_sky',
customStyles: { fontSize: '11px' },
state: '&sensor.dark_sky_summary.state',
icon: '&sensor.dark_sky_icon.state',
icons: {
'clear-day': 'clear',
'clear-night': 'nt-clear',
'cloudy': 'cloudy',
'rain': 'rain',
'sleet': 'sleet',
'snow': 'snow',
'wind': 'hazy',
'fog': 'fog',
'partly-cloudy-day': 'partlycloudy',
'partly-cloudy-night': 'nt-partlycloudy'
},
fields: { // most of that fields are optional
summary: '&sensor.dark_sky_summary.state',
temperature: '&sensor.dark_sky_temperature.state',
temperatureUnit: '&sensor.dark_sky_temperature.attributes.unit_of_measurement',
windSpeed: '&sensor.dark_sky_wind_speed.state',
windSpeedUnit: '&sensor.dark_sky_wind_speed.attributes.unit_of_measurement',
humidity: '&sensor.dark_sky_humidity.state',
humidityUnit: '&sensor.dark_sky_humidity.attributes.unit_of_measurement',
list: [
'Pressure '+ '&sensor.dark_sky_pressure.state'+ '&sensor.dark_sky_pressure.attributes.unit_of_measurement',
'&sensor.dark_sky_precip_probability.state'+ '&sensor.dark_sky_precip_probability.attributes.unit_of_measurement' +
' chance of rain',
]
}
},*/
{
position: [4, 4],
type: TYPES.CAMERA,
// id: 'camera.doorbird_thumbnail',
id: {},
bgSize: 'cover',
width: 2,
state: false,
title: '',
refresh: 5000,
// filter: function (item, entity) {return "http://192.168.1.36:1050/mjpg/doorbird/video.mjpg?user=dan&pw=9665"},
filter: function (item, entity) {return "http://192.168.1.36:1050/image/doorbird?user=dan&pw=9665"},
fullscreen: {
type: TYPES.CAMERA,
bgSize: 'contain',
refresh: 1000,
// filter: function (item, entity) {return "http://192.168.1.36:1050/mjpg/doorbird/video.mjpg?user=dan&pw=9665"},
filter: function (item, entity) {return "http://192.168.1.36:1050/image/doorbird?user=dan&pw=9665"},
}
},
{ position: [0, 1], type: TYPES.CUSTOM, title: 'Garage Door', subtitle: 'Left', id: 'cover.left_garage_door',
states: { closed: 'Closed', open: 'Open' }, icons: {open: 'mdi-garage-open',closed: 'mdi-garage'},
action: function(item, entity) {
var action = 'open_cover';
if(entity.state === 'open') { action = 'close_cover'; }
Api.send({ type: 'call_service',
domain: 'cover',
service: action,
service_data: { entity_id: 'cover.left_garage_door' }
});
}
},
// { position: [0, 1], type: TYPES.LOCK, title: "Garage Door", subtitle: "Left", id: 'cover.left_garage_door',
// states: { closed: 'Closed', open: 'Open' }, icons: { closed: 'mdi-garage', open: 'mdi-garage-open' },
{ position: [1, 1], type: TYPES.CUSTOM, title: 'Garage Door', subtitle: 'Right', id: 'cover.right_garage_door',
states: { closed: 'Closed', open: 'Open' }, icons: {open: 'mdi-garage-open',closed: 'mdi-garage'},
action: function(item, entity) {
var action = 'open_cover';
if(entity.state === 'open') { action = 'close_cover'; }
Api.send({ type: 'call_service',
domain: 'cover',
service: action,
service_data: { entity_id: 'cover.right_garage_door' }
});
}
},
// { position: [1, 1], type: TYPES.LOCK, title: "Garage Door", subtitle: "Right", id: 'cover.right_garage_door',
// states: { closed: 'Closed', open: 'Open' }, icons: { closed: 'mdi-garage', open: 'mdi-garage-open' }
{ position: [2, 1], type: TYPES.LOCK, title: "Rose Garden Gate", id: 'lock.rose_garden_gate_198',
states: { locked: 'Locked', unlocked: 'Unlocked' }, icons: { locked: 'mdi-gate', unlocked: 'mdi-gate' },
},
{ position: [3, 1], type: TYPES.LOCK, title: "Back Gate", id: 'lock.back_gate_202',
states: { locked: 'Locked', unlocked: 'Unlocked' }, icons: { locked: 'mdi-gate', unlocked: 'mdi-gate' }
},
{ position: [4, 1], type: TYPES.LOCK, title: "Front Door Lock", id: 'lock.front_door_lock_197',
states: { locked: 'Locked', unlocked: 'Unlocked' }, icons: { locked: 'mdi-lock-smart', unlocked: 'mdi-lock-smart' },
},
{ position: [0, 2], type: TYPES.DEVICE_TRACKER, title: "Dan", id: 'device_tracker.life360_dan', map: 'google',
bgSuffix: '@attributes.entity_picture', states: { home: 'Home', not_home: 'Away' }, zoomLevels: [10],
customStyles: function (item, entity) {
if (entity.state !== 'home') { return { 'opacity': 0.7, 'filter': 'grayscale()', 'color': 'white', 'fontSize': '18px' }; }
else { return { 'opacity': 1, 'filter': '', 'color': 'white', 'fontSize': '18px'}; }
},
},
{ position: [1, 2], type: TYPES.DEVICE_TRACKER, title: "Cheryl", id: 'device_tracker.life360_cheryl_xx', map: 'google',
states: { home: 'Home', not_home: 'Away' }, zoomLevels: [10], bgSuffix: '@attributes.entity_picture',
customStyles: function (item, entity) {
if (entity.state !== 'home') { return { 'opacity': 0.7, 'filter': 'grayscale()', 'color': 'white', 'fontSize': '18px' }; }
else { return { 'opacity': 1, 'filter': '', 'color': 'white', 'fontSize': '18px'}; }
}
},
{ position: [2, 2], type: TYPES.DEVICE_TRACKER, title: "Amy", id: 'device_tracker.life360_amelia_xx', map: 'google',
states: { home: 'Home', not_home: 'Away' }, bgSuffix: '@attributes.entity_picture', zoomLevels: [10],
customStyles: function (item, entity) {
if (entity.state !== 'home') { return { 'opacity': 0.7, 'filter': 'grayscale()', 'color': 'white', 'fontSize': '18px' }; }
else { return { 'opacity': 1, 'filter': '', 'color': 'white', 'fontSize': '18px'}; }
}
},
{ position: [3, 2], type: TYPES.DEVICE_TRACKER, title: "Nicholas", id: 'device_tracker.life360_nicholas_xx', map: 'google',
states: { home: 'Home', not_home: 'Away' }, zoomLevels: [10], bgSuffix: '@attributes.entity_picture',
customStyles: function (item, entity) {
if (entity.state !== 'home') { return { 'opacity': 0.7, 'filter': 'grayscale()', 'color': 'white', 'fontSize': '18px' }; }
else { return { 'opacity': 1, 'filter': '', 'color': 'white', 'fontSize': '18px'}; }
}
},
{ position: [4, 2], type: TYPES.DEVICE_TRACKER, title: "Anthony", id: 'device_tracker.life360_anthony', map: 'google',
states: { home: 'Home', not_home: 'Away' }, zoomLevels: [10], bgSuffix: '@attributes.entity_picture',
customStyles: function (item, entity) {
if (entity.state !== 'home') { return { 'opacity': 0.7, 'filter': 'grayscale()', 'color': 'white', 'fontSize': '18px' }; }
else { return { 'opacity': 1, 'filter': '', 'color': 'white', 'fontSize': '18px'}; }
}
},
{
position: [1, 3], type: TYPES.WEATHER_LIST, width: 2, height: 1, id: {},
title: null, secondaryTitle: 'Wind',
icons: { 'clear-day': 'clear', 'clear-night': 'nt-clear', 'cloudy': 'cloudy', 'rain': 'rain','rainy': 'rain',
'sleet': 'sleet', 'snow': 'snow', 'wind': 'hazy', 'fog': 'fog', 'partly-cloudy-day': 'partlycloudy',
'partly-cloudy-night': 'nt-partlycloudy', 'lightning-rainy': 'tstorms', 'partlycloudy': 'partlycloudy',
},
hideHeader: false, customStyles: { 'fontSize': '13px' }, theme: ITEM_TRANSPARENT,
list: ['1p','2p','3p'].map(function (id) {
var wind_bearing = '&sensor.nws_summary_' + id + '.attributes.wind_bearing';
var wind_speed = '&sensor.nws_summary_' + id + '.attributes.wind_speed mph';
var ampm = '&sensor.nws_summary_' + id + '.attributes.daytime';
return {
date: '&sensor.nws_summary_' + id + '.attributes.date' + ampm,
icon: '&sensor.nws_icon_' + id + '.state',
primary: '&sensor.nws_summary_' + id + '.attributes.short_summary',
secondary: wind_speed,
}
})
},
/* { // darksky version
position: [1, 3], type: TYPES.WEATHER_LIST, width: 2, height: 1, id: {},
icons: { 'clear-day': 'clear', 'clear-night': 'nt-clear', 'cloudy': 'cloudy', 'rain': 'rain',
'sleet': 'sleet', 'snow': 'snow', 'wind': 'hazy', 'fog': 'fog', 'partly-cloudy-day': 'partlycloudy',
'partly-cloudy-night': 'nt-partlycloudy', 'sunny': 'clear-day'
},
hideHeader: false, customStyles: { 'fontSize': '13px' }, theme: ITEM_TRANSPARENT,
list: [1,2,3].map(function (id) {
var forecast = "&sensor.dark_sky_summary_" + id + "d.state";
return {
date: function () {
var d = new Date(Date.now() + id * 24 * 60 * 60 * 1000);
return d.toString().split(' ').slice(1, 3).join(' ');
},
icon: '&sensor.dark_sky_icon_' + id + 'd.state',
primary: forecast
}
})
},*/
{ position: [3, 3], type: TYPES.TEXT_LIST, title: 'Temperature', id: {}, state: false,
customStyles: { 'fontSize': '13px' },
list: [{ value: '&sensor.awair_family_room_temperature.state' + ' °F', title: 'Family'},
{ value: '&sensor.awair_upstairs_temperature.state' + ' °F', title: 'Upstairs'},
{ value: '&sensor.awair_shack_temperature.state' + ' °F', title: 'Shack'},
{ value: '&sensor.mkiii_air_temperature.state' + ' °F', title: 'Outdoor'}]
},
/* { position: [1, 3], type: TYPES.SENSOR, title: "Temperature", subtitle: "Family Room", id: 'sensor.awair_family_room_temperature',
unit: '@attributes.unit_of_measurement', state: false,
},
{ position: [2, 3], type: TYPES.SENSOR, title: "Temperature", subtitle: "Second Floor", id: 'sensor.awair_upstairs_temperature',
unit: '@attributes.unit_of_measurement', state: false,
},
{ position: [3, 3], type: TYPES.SENSOR, title: "Temperature", subtitle: "Shack", id: 'sensor.awair_shack_temperature',
unit: '@attributes.unit_of_measurement', state: false,
},*/
{ position: [5, 1], type: TYPES.LIGHT, title: "Fountain", subtitle: "Front Entry", id: 'switch.frontdoor_fountain',
state: false, states: { on: 'On', off: 'Off' }, icons: { on: 'mdi-fountain', off: 'mdi-fountain' }
},
{ position: [5, 2], type: TYPES.LIGHT, title: "Fountain", subtitle: "Rose Garden", id: 'switch.garden_fountain',
state: false, states: { on: 'On', off: 'Off' }, icons: { on: 'mdi-fountain', off: 'mdi-fountain' }
},
{ position: [6, 4], type: TYPES.CUSTOM, title: "Reload", id: {}, icon: 'mdi-reload', theme: ITEM_TRANSPARENT,
action: function(e) { window.location.reload(); }
},
// { position: [6, 1], type: TYPES.CUSTOM, title: '', id: {}, hidden: true,
// refresh: 10000, action: function(e) { window.openPage(CONFIG.pages[0]); }
// },
{ position: [1, 4], type: TYPES.LIGHT, title: "House", subtitle: "Lights", id: 'binary_sensor.house_lights',
states: { on: "On", off: "Off" }, icons: { on: "mdi-lightbulb-group", off: "mdi-lightbulb-group" }
},
{ position: [2, 4], type: TYPES.LIGHT, title: "Shack", subtitle: "Lights", id: 'binary_sensor.shack_lights',
states: { on: "On", off: "Off" }, icons: { on: "mdi-lightbulb-group", off: "mdi-lightbulb-group" }
},
{ position: [3, 4], type: TYPES.LIGHT, title: "Outdoor", subtitle: "Lights", id: 'binary_sensor.outdoor_lights',
states: { on: "On", off: "Off" }, icons: { on: "mdi-lightbulb-group", off: "mdi-lightbulb-group" }
},
{ position: [4, 3], type: TYPES.SENSOR_ICON, title: "House", subtitle: 'Doors', id: 'binary_sensor.doors',
states: { on: 'Open', off: 'Closed' }, icons: { on: 'mdi-door-open', off: 'mdi-door-closed' },
},
{ position: [5, 3], type: TYPES.SENSOR_ICON, title: "House", subtitle: 'Windows', id: 'binary_sensor.windows',
states: { on: 'Open', off: 'Closed' }, icons: { on: 'mdi-window-open', off: 'mdi-window-closed' },
},
{ position: [6, 3], type: TYPES.GAUGE, title: "Water &sensor.flume_daily_gallons.state gals",
id: 'sensor.flume_sensor_monte_verde',
// id: 'sensor.flume_sensor_6557172369087683770',
state: false,
settings: {
size: 100, // Defaults to 50% of either height or width, whichever is smaller
type: 'arch', // Options are: 'full', 'semi', and 'arch'. Defaults to 'full'
min: 0,
max: 10,
cap: 'round', // Options are: 'round', 'butt'. Defaults to 'butt'
thick: 6,
label: function(item, entity) { return parseFloat(entity.state).toFixed(1) + ' g/m' },
// append: '@attributes.unit_of_measurement',
prepend: '',
// duration: 1500,
thresholds: { 0: { color: 'green'}, 2: { color: 'yellow' }, 5: { color: 'red' } },
labelOnly: true,
foregroundColor: 'rgba(0, 150, 136, 1)',
backgroundColor: 'rgba(0, 0, 0, 0.1)',
fractionSize: 1,
}
},
/* { position: [6, 3], type: TYPES.SENSOR_ICON, title: "CO Detectors", id: 'binary_sensor.co',
states: { off: "Ok", on: "Warning" }, icons: { off: 'mdi-periodic-table-co2', on: 'mdi-periodic-table-co2' }
},
{ position: [6, 4], type: TYPES.SENSOR_ICON, title: "Smoke Detectors", id: "binary_sensor.smoke",
states: { off: "Ok", on: "Warning" }, icons: { off: 'mdi-smoke-detector', on: 'mdi-smoke-detector' }
}, */
]
}
]
},