Trusted networks is only working for login since 0.101 (I still use that and have configured it as auth provider as shown in the config I posted). You can’t use it for stuff like cameras anymore. More details here.
Sorry to bring this up again but since upgrading from 0.100.x to 0.101.3 I have been getting IP address 127.0.0.1 banned, thus locking me out of HA when trying to log in via HA Cloud. It seems that using the local IP address from within my network still worked.
So I tried adding the below code for use_x_forwarded_for: true
and trusted_proxies:
hoping that it would prevent this ban, but then I was unable to get the HA login to load (via HA Cloud) at all, only local IP access worked.
http:
cors_allowed_origins:
- http://192.168.0.14:8123
ip_ban_enabled: true
login_attempts_threshold: 3
use_x_forwarded_for: true
trusted_proxies:
- 127.0.0.1
Since I’m away at work I was luckily able to talk my girlfriend through logging in and #'ing out the use_x_forwarded_for: true
and trusted_proxies:
lines.
Any idea why these caused HA to not work for me?
What is cors_allowed_origins doing?
I’m not sure… Its been in my config for a very long time…
I’ve never used that or seem any need to.
So in the past, I tried adding auth_providers but that seemed to cause HA to not load the GUI… not sure why as it is straight from the docs and passes the config check. Would this work to prevent the 127.0.0.1 from getting banned?
homeassistant:
auth_providers:
- type: trusted_networks
trusted_networks:
- 192.168.0.0/24
- 127.0.0.1
- type: homeassistant
Maybe Dave… 192.168.0.0 is most probably a /16 network not a /24… what IP addresses do you want to allow?
How do I determine a /16 vs. a /24 network? Not terminology I’m familiar with to be honest.
EDIT: I just Googled it… pretty sure /24 is correct as my subnet mask is 255.255.255.0
I just want to allow my laptop, tablet, phones etc which are all in the 192.168.0.x range. As for the 127.0.0.1, that was hoping to prevent the banning of what I assume is a Docker container or HA Cloud?
Ok from what you said, /24 is correct. Your config should work fine. 127.0.0.1 should mean it won’t require auth for anything on the HA machine itself.
x.x.x.x = 32 bits so a /16 means the x.x at the start is the ‘network’ a /24 means the x.x.x is the network and the remaining octet(s) are the ‘host’ so if all yours are on 192.168.0.x then /24 is correct. You should also see this as a subnet mask of 255.255.255.0 in the network settings for each device.
So… last night I again tried to include the code as per my post above. HA accepts the code, restarts fine and local access (within my home network using the HA server IP address) is fine, however I can’t access HA via the HA Cloud address. Take out the above code, restart = Cloud access restored. Any ideas? It’s really annoying me because I see that code as being the only way to get HA to stop banning 127.0.0.1 which subsequently blocks HA Cloud access
I don’t pretend to know much about any of this, but I did remember reading something on the Nabu Casa website here:
Caveats
We are currently not forwarding the IP address of the incoming request. Because of this, we are unable to support Home Assistant instances that have configured 127.0.0.1
or ::1
as trusted networks or proxies. It also means that if you use IP bans, the remote connection will be banned as a whole instead of just the address from which the incorrect passwords were entered. We are currently exploring a solution for this issue.
Yeah, I did read that but I guess I didn’t understand correctly that it would block my access. So basically my only option to prevent HA Cloud getting banned is to remove the IP Ban functionality completely… Surely other people would be having this issue as well? I really only started having trouble after upgrading from 0.100.3 to 0.101.3
I am also having this issue with HA version 0.102.3 and the AppDaemon HA Dashboard. I have a HA Dashboard running on a kindle fire tablet and I am constantly getting the Login attempt or request with invalid authentication
error message with the fire tablets IP address. My appdaemon.yaml file configured almost exactly like the OP. The HA Dashboard is working and there are no issues with access, but it would be nice if my log was not getting filled up with these error message. I have tried using the Auth trusted networks and trusted users, but neither of those config setting appear to be work anymore. I would like to hear if anyone has found a work-around for this issue or if the issues is being worked on by the development team.
Thanks for the support and guidance.
I could never figure this issue out with HAdashboard and appdaemon … I’ve since then switched to tileboard and wow what a major major upgrade for wall mounted tablets !!! Make the switch … I can send out my config.js file if that helps
YEEEEEES PLEASE
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' }
}, */
]
}
]
},
{
title: 'Doors',
bg: "images/monteverde.jpg",
icon: 'mdi-door',
header: DEFAULT_HEADER,
groups: [
{
title: 'Doors',
items: [
{ position: [0, 0], type: TYPES.SENSOR_ICON, title: "Garage Door", id: 'binary_sensor.garage_entry_door',
states: { on: 'Open', off: 'Closed' }, icons: { on: 'mdi-door-open', off: 'mdi-door-closed' },
},
{ position: [1, 0], type: TYPES.SENSOR_ICON, title: "Front Door", id: 'binary_sensor.front_door',
states: { on: 'Open', off: 'Closed' }, icons: { on: 'mdi-door-open', off: 'mdi-door-closed' },
},
{ position: [2, 0], 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: [3, 0], type: TYPES.SENSOR_ICON, title: "Guest Bedroom", subtitle: 'Doors', id: 'binary_sensor.guest_bedroom_doors',
states: { on: 'Open', off: 'Closed' }, icons: { on: 'mdi-door-open', off: 'mdi-door-closed' },
},
{ position: [4, 0], type: TYPES.SENSOR_ICON, title: "Living Room", subtitle: 'Doors', id: 'binary_sensor.living_room_doors',
states: { on: 'Open', off: 'Closed' }, icons: { on: 'mdi-door-open', off: 'mdi-door-closed' },
},
{ position: [5, 0], type: TYPES.SENSOR_ICON, title: "Dining Room", subtitle: "Door", id: 'binary_sensor.dining_room_doors',
states: { on: 'Open', off: 'Closed' }, icons: { on: 'mdi-door-open', off: 'mdi-door-closed' },
},
{ position: [0, 1], type: TYPES.SENSOR_ICON, title: "Family Room", subtitle: "Doors", id: 'binary_sensor.family_room_doors',
states: { on: 'Open', off: 'Closed' }, icons: { on: 'mdi-door-open', off: 'mdi-door-closed' },
},
{ position: [1, 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: [2, 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: [3, 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: [4, 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: [5, 1], type: TYPES.SENSOR_ICON, title: "Family Room", subtitle: "Motion", id: 'binary_sensor.family_motion',
state: false, states: { off: 'No Motion', on: 'Motion' }, icons: { off: 'mdi-run-fast', on: 'mdi-run-fast' }
},
{ position: [0, 2], type: TYPES.SENSOR_ICON, title: "Front Door", subtitle: "Motion", id: 'binary_sensor.doorbird_motion_206',
state: false, states: { off: 'No Motion', on: 'Motion' }, icons: { off: 'mdi-run-fast', on: 'mdi-run-fast' }
},
{ position: [1, 2], type: TYPES.LIGHT, title: "Alarm", id: 'switch.siren_196_2', theme: ITEM_TRANSPARENT,
states: { on: 'On', off: 'Off' }, icons: { on: 'mdi-alarm-bell', off: 'mdi-alarm-bell' },
},
]
},
]
},
{
title: 'Windows',
bg: "images/monteverde.jpg",
icon: 'mdi-window-open',
header: DEFAULT_HEADER,
groups: [
{
title: 'Windows',
items: [
{ position: [0, 0], type: TYPES.SENSOR_ICON, title: "Anthony's Bedroom", id: 'binary_sensor.blue_bedroom_windows',
states: { on: 'Open', off: 'Closed' }, icons: { on: 'mdi-window-open', off: 'mdi-window-closed' },
},
{ position: [1, 0], type: TYPES.SENSOR_ICON, title: "Nicholas' Bedroom", id: 'binary_sensor.tile_bedroom_windows',
states: { on: 'Open', off: 'Closed' }, icons: { on: 'mdi-window-open', off: 'mdi-window-closed' },
},
{ position: [2, 0], type: TYPES.SENSOR_ICON, title: "Amy's Bedroom", id: 'binary_sensor.rock_n_roll_bedroom_windows',
states: { on: 'Open', off: 'Closed' }, icons: { on: 'mdi-window-open', off: 'mdi-window-closed' },
},
{ position: [3, 0], type: TYPES.SENSOR_ICON, title: "Master Bedroom", id: 'binary_sensor.master_bedroom_windows',
states: { on: 'Open', off: 'Closed' }, icons: { on: 'mdi-window-open', off: 'mdi-window-closed' },
},
{ position: [4, 0], type: TYPES.SENSOR_ICON, title: "Master Bathroom", id: 'binary_sensor.master_bathroom_window',
states: { on: 'Open', off: 'Closed' }, icons: { on: 'mdi-window-open', off: 'mdi-window-closed' },
},
{ position: [0, 1], type: TYPES.SENSOR_ICON, title: "Office", id: 'binary_sensor.office_windows',
states: { on: 'Open', off: 'Closed' }, icons: { on: 'mdi-window-open', off: 'mdi-window-closed' },
},
{ position: [1, 1], type: TYPES.SENSOR_ICON, title: "Laundry Room", id: 'binary_sensor.laundry_room_windows',
states: { on: 'Open', off: 'Closed' }, icons: { on: 'mdi-window-open', off: 'mdi-window-closed' },
},
{ position: [2, 1], type: TYPES.SENSOR_ICON, title: "Powder Room", id: 'binary_sensor.powder_gallery_windows',
states: { on: 'Open', off: 'Closed' }, icons: { on: 'mdi-window-open', off: 'mdi-window-closed' },
},
{ position: [3, 1], type: TYPES.SENSOR_ICON, title: "Nook", subtitle: "Gallery", id: 'binary_sensor.nook_windows',
states: { on: 'Open', off: 'Closed' }, icons: { on: 'mdi-window-open', off: 'mdi-window-closed' },
},
]
},
]
},
{
title: 'Lights',
bg: "images/monteverde.jpg",
icon: 'mdi-numeric-1-box-multiple-outline',
header: DEFAULT_HEADER,
groups: [
{
title: 'First Floor Lights',
items: [
{ position: [0, 0], type: TYPES.LIGHT, state: false, title: "Hallways", subtitle: 'Gallery', id: 'switch.gallery_stairs_lights_scene',
states: { on: "On", off: "Off" }, icons: { on: "mdi-lightbulb-on", off: "mdi-lightbulb" }
},
{ position: [1, 0], type: TYPES.LIGHT, state: false, title: "Guest Hallway", id: 'switch.guest_hallway_scene',
states: { on: "On", off: "Off" }, icons: { on: "mdi-lightbulb-on", off: "mdi-lightbulb" }
},
{ position: [2, 0], type: TYPES.LIGHT, state: false, title: "Laundry Room", id: 'switch.laundry_room_light',
states: { on: "On", off: "Off" }, icons: { on: "mdi-lightbulb-on", off: "mdi-lightbulb" }
},
{ position: [3, 0], type: TYPES.LIGHT, state: false, title: "Guest Bedroom", id: 'switch.guest_bedroom_scene',
states: { on: "On", off: "Off" }, icons: { on: "mdi-ceiling-light", off: "mdi-ceiling-light" }
},
{ position: [4, 0], type: TYPES.LIGHT, state: false, title: "Guest Bathroom", id: 'switch.guest_bathroom_scene',
states: { on: "On", off: "Off" }, icons: { on: "mdi-vanity-light", off: "mdi-vanity-light" }
},
{ position: [5, 0], type: TYPES.LIGHT, state: false, title: "Guest Bathroom", subtitle: "Fan", id: 'light.guest_bathroom_fan',
states: { on: "On", off: "Off" }, icons: { on: "mdi-fan", off: "mdi-fan-off" }
},
{ position: [0, 1], type: TYPES.LIGHT, state: false, title: "Guest Bedroom", subtitle: "Closet", id: 'switch.guest_closet_light',
states: { on: "On", off: "Off" }, icons: { on: "mdi-lightbulb-on", off: "mdi-lightbulb" }
},
{ position: [1, 1], type: TYPES.LIGHT, state: false, title: "Garage Lights", id: 'switch.garage_lights_scene',
states: { on: "On", off: "Off" }, icons: { on: "mdi-lightbulb-on", off: "mdi-lightbulb" }
},
{ position: [2, 1], type: TYPES.LIGHT, state: false, title: "Powder Room", id: 'switch.powder_room_scene',
states: { on: "On", off: "Off" }, icons: { on: "mdi-vanity-light", off: "mdi-vanity-light" }
},
{ position: [3, 1], type: TYPES.LIGHT, state: false, title: "Powder Room", subtitle: "Fan", id: 'light.powder_room_fan',
states: { on: "On", off: "Off" }, icons: { on: "mdi-fan", off: "mdi-fan-off" }
},
{ position: [4, 1], type: TYPES.LIGHT, state: false, title: "Entry", id: 'switch.entry_scene',
states: { on: "On", off: "Off" }, icons: { on: "mdi-ceiling-light", off: "mdi-ceiling-light" }
},
{ position: [5, 1], type: TYPES.LIGHT, state: false, title: "Bar", id: 'switch.bar_light',
states: { on: "On", off: "Off" }, icons: { on: "mdi-lightbulb-on", off: "mdi-lightbulb" }
},
{ position: [0, 2], type: TYPES.LIGHT, state: false, title: "Hallway", subtitle: "Closet", id: 'switch.front_closet_light',
states: { on: "On", off: "Off" }, icons: { on: "mdi-lightbulb-on", off: "mdi-lightbulb" }
},
{ position: [1, 2], type: TYPES.LIGHT, state: false, title: "Data Room", id: 'switch.dataroom_light',
states: { on: "On", off: "Off" }, icons: { on: "mdi-lightbulb-on", off: "mdi-lightbulb" }
},
{ position: [2, 2], type: TYPES.LIGHT, state: false, title: "Living Room", id: 'switch.living_room_scene',
states: { on: "On", off: "Off" }, icons: { on: "mdi-ceiling-light", off: "mdi-ceiling-light" }
},
{ position: [3, 2], type: TYPES.LIGHT, state: false, title: "Living Room", subtitle: "Table Lights", id: 'switch.living_room_switched_lights',
states: { on: "On", off: "Off" }, icons: { on: "mdi-lamp", off: "mdi-lamp" }
},
{ position: [4, 2], type: TYPES.LIGHT, state: false, title: "Dining Room", id: 'switch.dining_room_scene',
states: { on: "On", off: "Off" }, icons: { on: "mdi-ceiling-light", off: "mdi-ceiling-light" }
},
{ position: [5, 2], type: TYPES.LIGHT, state: false, title: "Kitchen", id: 'switch.kitchen_scene',
states: { on: "On", off: "Off" }, icons: { on: "mdi-track-light", off: "mdi-track-light" }
},
{ position: [0, 3], type: TYPES.LIGHT, state: false, title: "Kitchen", subtitle: "Pantry", id: 'switch.pantry_light',
states: { on: "On", off: "Off" }, icons: { on: "mdi-lightbulb-on", off: "mdi-lightbulb" }
},
{ position: [1, 3], type: TYPES.LIGHT, state: false, title: "Kitchen", subtitle: "Cabinet Lights", id: 'switch.kitchen_cabinet_lights',
states: { on: "On", off: "Off" }, icons: { on: "mdi-lightbulb-on", off: "mdi-lightbulb" }
},
{ position: [2, 3], type: TYPES.LIGHT, state: false, title: "Family Room", subtitle: "Table Lights", id: 'switch.family_table_scene',
states: { on: "On", off: "Off" }, icons: { on: "mdi-lamp", off: "mdi-lamp" }
},
{ position: [3, 3], type: TYPES.LIGHT, state: false, title: "Family Room", subtitle: "Ceiling Lights", id: 'switch.family_room_scene',
states: { on: "On", off: "Off" }, icons: { on: "mdi-track-light", off: "mdi-track-light" }
},
{ position: [4, 3], type: TYPES.LIGHT, state: false, title: "Family Room", subtitle: "Hanging Light", id: 'switch.family_hanging_light',
states: { on: "On", off: "Off" }, icons: { on: "mdi-lightbulb-on", off: "mdi-lightbulb" }
},
{ position: [5, 3], type: TYPES.LIGHT, state: false, title: "Gym", id: 'switch.gym_scene',
states: { on: "On", off: "Off" }, icons: { on: "mdi-weight-lifter", off: "mdi-lightbulb" }
},
{ position: [0, 4],
type: TYPES.VACUUM,
theme: ITEM_TRANSPARENT,
title: 'Downstairs(' + '&vacuum.roomba_downstair.attributes.battery_level' + '%)',
subtitle: 'Roomba',
state: false,
id: 'vacuum.roomba_downstair',
icon: 'mdi-robot-vacuum',
customStyles: function (item, entity) {
if (entity.state == 'on') {
return {'backgroundColor': 'transparent','color': '#3ac900'};
} else {
return {'backgroundColor': 'transparent','color': '#f7f7f7'};
}
}
}
]
}
]
},
{
title: 'Lights',
bg: "images/monteverde.jpg",
icon: 'mdi-numeric-2-box-multiple-outline',
header: DEFAULT_HEADER,
groups: [
{
title: 'Second Floor Lights',
items: [
{ position: [0, 0], type: TYPES.LIGHT, state: false, title: "Anthony's Room", id: 'switch.anthony_room_scene',
states: { on: "On", off: "Off" }, icons: { on: "mdi-ceiling-light", off: "mdi-ceiling-light" }
},
{ position: [1, 0], type: TYPES.LIGHT, state: false, title: "Nicholas' Room", id: 'switch.nick_bedroom_scene',
states: { on: "On", off: "Off" }, icons: { on: "mdi-ceiling-light", off: "mdi-ceiling-light" }
},
{ position: [2, 0], type: TYPES.LIGHT, state: false, title: "Nicholas Bathroom", id: 'switch.nick_bath_scene',
states: { on: "On", off: "Off" }, icons: { on: "mdi-vanity-light", off: "mdi-vanity-light" }
},
{ position: [3, 0], type: TYPES.LIGHT, state: false, title: "Amelia's Room", id: 'switch.amelia_room_scene',
states: { on: "On", off: "Off" }, icons: { on: "mdi-lamp", off: "mdi-lamp" }
},
{ position: [4, 0], type: TYPES.LIGHT, state: false, title: "Amelia's Room", subtitle: "Ceiling Fan", id: 'switch.amy_bedroom_fan_light',
states: { on: "On", off: "Off" }, icons: { on: "mdi-ceiling-light", off: "mdi-ceiling-light" }
},
{ position: [5, 0], type: TYPES.LIGHT, state: false, title: "Amelia's Bathroom", id: 'switch.amelia_bathroom_scene',
states: { on: "On", off: "Off" }, icons: { on: "mdi-vanity-light", off: "mdi-vanity-light" }
},
{ position: [0, 1], type: TYPES.LIGHT, state: false, title: "Hallway Bathroom", id: 'switch.hallway_bathroom_scene',
states: { on: "On", off: "Off" }, icons: { on: "mdi-vanity-light", off: "mdi-vanity-light" }
},
{ position: [1, 1], type: TYPES.LIGHT, state: false, title: "Hallway Bathroom", subtitle: "Fan", id: 'switch.hall_bathroom_fan',
states: { on: "On", off: "Off" }, icons: { on: "mdi-fan", off: "mdi-fan-off" }
},
{ position: [2, 1], type: TYPES.LIGHT, state: false, title: "Office", id: 'switch.office_lights_scene',
states: { on: "On", off: "Off" }, icons: { on: "mdi-lightbulb-on", off: "mdi-lightbulb" }
},
{ position: [3, 1], type: TYPES.LIGHT, state: false, title: "Master Bedroom", subtitle: "Chandelier", id: 'light.master_bedroom_chandelier',
states: { on: "On", off: "Off" }, icons: { on: "mdi-ceiling-light", off: "mdi-ceiling-light" }
},
{ position: [4, 1], type: TYPES.LIGHT, state: false, title: "Master Bedroom", subtitle: "Table Lights", id: 'switch.master_table_scene',
states: { on: "On", off: "Off" }, icons: { on: "mdi-lamp", off: "mdi-lamp" }
},
{ position: [5, 1], type: TYPES.LIGHT, state: false, title: "Master Bedroom", subtitle: "Ceiling Lights", id: 'light.master_bedroom_ceiling_lights',
states: { on: "On", off: "Off" }, icons: { on: "mdi-track-light", off: "mdi-track-light" }
},
{ position: [0, 2], type: TYPES.LIGHT, state: false, title: "Master Bedroom", subtitle: "Closet Lights", id: 'switch.master_bedroom_closet_light',
states: { on: "On", off: "Off" }, icons: { on: "mdi-lightbulb-on", off: "mdi-lightbulb" }
},
{ position: [1, 2], type: TYPES.LIGHT, state: false, title: "Master Bathroom", id: 'switch.master_bath_scene',
states: { on: "On", off: "Off" }, icons: { on: "mdi-vanity-light", off: "mdi-vanity-light" }
},
{ position: [2, 2], type: TYPES.LIGHT, state: false, title: "Master Bathroom", subtitle: "Shower Light", id: 'switch.master_shower_light',
states: { on: "On", off: "Off" }, icons: { on: "mdi-lightbulb-on", off: "mdi-lightbulb" }
},
{ position: [3, 2], type: TYPES.LIGHT, state: false, title: "Master Bathroom", subtitle: "Toilet Light", id: 'light.master_toilet_light',
states: { on: "On", off: "Off" }, icons: { on: "mdi-lightbulb-on", off: "mdi-lightbulb" }
},
{ position: [4, 2], type: TYPES.LIGHT, state: false, title: "Master Bathroom", subtitle: "Fan", id: 'light.master_toilet_fan',
states: { on: "On", off: "Off" }, icons: { on: "mdi-fan", off: "mdi-fan-off" }
},
{ position: [5, 2], type: TYPES.LIGHT, state: false, title: "Hallways", subtitle: 'Gallery', id: 'switch.gallery_stairs_lights_scene',
states: { on: "On", off: "Off" }, icons: { on: "mdi-lightbulb-on", off: "mdi-lightbulb" }
},
{ position: [0, 3],
type: TYPES.VACUUM,
theme: ITEM_TRANSPARENT,
title: 'Upstairs(' + '&vacuum.roomba_upstairs.attributes.battery_level' + '%)',
subtitle: 'Roomba',
state: false,
id: 'vacuum.roomba_upstairs',
icon: 'mdi-robot-vacuum',
customStyles: function (item, entity) {
if (entity.state == 'on') {
return {'backgroundColor': 'transparent','color': '#3ac900'};
} else {
return {'backgroundColor': 'transparent','color': '#f7f7f7'};
}
}
}
]
},
]
},
{
title: 'Lights',
bg: "images/monteverde.jpg",
icon: 'mdi-home-lightbulb-outline',
header: DEFAULT_HEADER,
groups: [
{
title: 'Shack Lights',
items: [
{ position: [0, 0], type: TYPES.LIGHT, state: false, title: "Shack", id: 'switch.shack_lights_scene',
states: { on: "On", off: "Off" }, icons: { on: "mdi-track-light", off: "mdi-track-light" }
},
{ position: [1, 0], type: TYPES.LIGHT, state: false, title: "Shack Bathroom", id: 'switch.shack_bathroom_scene',
states: { on: "On", off: "Off" }, icons: { on: "mdi-vanity-light", off: "mdi-vanity-light" }
},
{ position: [2, 0], type: TYPES.LIGHT, state: false, title: "Shack Bathroom", subtitle: 'Fan', id: 'switch.shack_bathroom_fan',
states: { on: "On", off: "Off" }, icons: { on: "mdi-fan", off: "mdi-fan-off" }
},
]
},
/* {
title: 'Shack Thermostat/Sensors',
items: [
{ position: [0, 0], height: 1.3, type: TYPES.CLIMATE, title: "Shack", id: 'climate.shack', unit: '°F',
state: function (item, entity) {
return 'Current ' + entity.attributes.current_temperature + '°F';
}
},
{ position: [1, 0], type: TYPES.SENSOR, title: "Temperature", subtitle: "Shack", id: 'sensor.awair_shack_temperature',
unit: '@attributes.unit_of_measurement', state: false,
},
{ position: [2, 0], type: TYPES.SENSOR, title: 'Shack', subtitle: 'Bathroom', state: false, unit: '%',
id: 'sensor.wirelesstag_shack_bathroom_moisture',
customStyles: function (item, entity) { if (parseFloat(entity.state) > 6.0) { return {backgroundColor: 'red'}}
else { return {backgroundColor: 'acquablue'}}}
},
{ position: [2, 1], type: TYPES.SENSOR, title: 'Shack', subtitle: 'Sink', state: false, unit: '%',
id: 'sensor.wirelesstag_shack_bathroom_sink_moisture',
customStyles: function (item, entity) { if (parseFloat(entity.state) > 6.0) { return {backgroundColor: 'red'}}
else { return {backgroundColor: 'acquablue'}}}
},
]
}, */
]
},
{
title: 'Outdoor Lights',
bg: "images/monteverde.jpg",
icon: 'mdi-outdoor-lamp',
header: DEFAULT_HEADER,
groups: [
{
title: 'Outdoor Lights',
items: [
{ position: [0, 0], type: TYPES.LIGHT, state: false, title: "Stage", id: 'switch.outdoor_stage_lights',
states: { on: "On", off: "Off" }, icons: { on: "mdi-spotlight", off: "mdi-spotlight" }
},
{ position: [1, 0], type: TYPES.LIGHT, state: false, title: "Stage", subtitle: "Table Light", id: 'switch.landscape_stage_light',
states: { on: "On", off: "Off" }, icons: { on: "mdi-lamp", off: "mdi-lamp" }
},
{ position: [2, 0], type: TYPES.LIGHT, state: false, title: "Poolside", subtitle: "Chandelier", id: 'switch.outdoor_poolside_chandelier',
states: { on: "On", off: "Off" }, icons: { on: "mdi-ceiling-light", off: "mdi-ceiling-light" }
},
{ position: [3, 0], type: TYPES.LIGHT, state: false, title: "Patio", subtitle: "Canopy Lights", id: 'switch.outdoor_patio_canopy',
states: { on: "On", off: "Off" }, icons: { on: "mdi-string-lights", off: "mdi-string-lights" }
},
{ position: [4, 0], type: TYPES.LIGHT, state: false, title: "Bar", subtitle: "Chandelier", id: 'switch.outdoor_bar_chandelier',
states: { on: "On", off: "Off" }, icons: { on: "mdi-ceiling-light", off: "mdi-ceiling-light" }
},
{ position: [5, 0], type: TYPES.LIGHT, state: false, title: "Fireplace", subtitle: "Chandelier", id: 'switch.outdoor_dinning_chandelier',
states: { on: "On", off: "Off" }, icons: { on: "mdi-ceiling-light", off: "mdi-ceiling-light" }
},
{ position: [0, 1], type: TYPES.LIGHT, state: false, title: "Entry", subtitle: "Chandelier", id: 'switch.outdoor_front_lights',
states: { on: "On", off: "Off" }, icons: { on: "mdi-ceiling-light", off: "mdi-ceiling-light" }
},
{ position: [1, 1], type: TYPES.LIGHT, state: false, title: "House Light", subtitle: "Guest", id: 'switch.outdoor_guest_light',
states: { on: "On", off: "Off" }, icons: { on: "mdi-outdoor-lamp", off: "mdi-outdoor-lamp" }
},
{ position: [2, 1], type: TYPES.LIGHT, state: false, title: "House Light", subtitle: "Patio", id: 'switch.outdoor_bbq_light',
states: { on: "On", off: "Off" }, icons: { on: "mdi-outdoor-lamp", off: "mdi-outdoor-lamp" }
},
{ position: [3, 1], type: TYPES.LIGHT, state: false, title: "House Light", subtitle: "Fireplace", id: 'switch.outdoor_fireplace_light',
states: { on: "On", off: "Off" }, icons: { on: "mdi-outdoor-lamp", off: "mdi-outdoor-lamp" }
},
{ position: [4, 1], type: TYPES.LIGHT, state: false, title: "House Light", subtitle: "Dining", id: 'switch.outdoor_dining_light',
states: { on: "On", off: "Off" }, icons: { on: "mdi-outdoor-lamp", off: "mdi-outdoor-lamp" }
},
{ position: [5, 1], type: TYPES.LIGHT, state: false, title: "House Light", subtitle: "Rose Garden", id: 'switch.outdoor_rosegarden_light',
states: { on: "On", off: "Off" }, icons: { on: "mdi-outdoor-lamp", off: "mdi-outdoor-lamp" }
},
{ position: [0, 2], type: TYPES.LIGHT, state: false, title: "Landscape Lights", subtitle: "Back Yard", id: 'switch.landscape_backyard_lights',
states: { on: "On", off: "Off" }, icons: { on: "mdi-outdoor-lamp", off: "mdi-outdoor-lamp" }
},
{ position: [1, 2], type: TYPES.LIGHT, state: false, title: "Landscape Lights", subtitle: "Driveway", id: 'switch.landscape_driveway_lights',
states: { on: "On", off: "Off" }, icons: { on: "mdi-outdoor-lamp", off: "mdi-outdoor-lamp" }
},
{ position: [2, 2], type: TYPES.LIGHT, state: false, title: "Landscape Lights", subtitle: "Front Yard", id: 'switch.landscape_front_lights',
states: { on: "On", off: "Off" }, icons: { on: "mdi-outdoor-lamp", off: "mdi-outdoor-lamp" }
},
{ position: [3, 2], type: TYPES.LIGHT, state: false, title: "Landscape Lights", subtitle: "Rose Garden", id: 'switch.landscape_rosegarden_lights',
states: { on: "On", off: "Off" }, icons: { on: "mdi-outdoor-lamp", off: "mdi-outdoor-lamp" }
},
]
}
]
},
/* {
title: 'Themostats',
bg: "images/monteverde.jpg",
icon: 'mdi-thermostat',
header: DEFAULT_HEADER,
groups: [
{
title: 'Thermostats',
items: [
{ position: [0, 0], height: 1.3, type: TYPES.CLIMATE, title: "Family Room", id: 'climate.family_room', unit: '°F',
state: function (item, entity) {
return 'Current ' + entity.attributes.current_temperature + '°F';
}
},
{ position: [1, 0], height: 1.3, type: TYPES.CLIMATE, title: "Entry", id: 'climate.hallway', unit: '°F',
state: function (item, entity) {
return 'Current ' + entity.attributes.current_temperature + '°F';
}
},
{ position: [2, 0], height: 1.3, type: TYPES.CLIMATE, title: "Master Bedroom", id: 'climate.master_bedroom', unit: '°F',
state: function (item, entity) {
return 'Current ' + entity.attributes.current_temperature + '°F';
}
},
{ position: [3, 0], height: 1.3, type: TYPES.CLIMATE, title: "Shack", id: 'climate.shack', unit: '°F',
state: function (item, entity) {
return 'Current ' + entity.attributes.current_temperature + '°F';
}
},
]
}
]
}, */
{
title: 'Sensors',
bg: "images/monteverde.jpg",
icon: 'mdi-water-percent',
header: DEFAULT_HEADER,
groups: [
{
title: 'Wine Storage',
items: [
{ position: [0, 0], type: TYPES.TEXT_LIST, title: 'Eurocave Left', id: {}, state: false, height: .75,
customStyles: {'backgroundColor': 'lightyellow', 'color': 'black'},
list: [{ icon: 'mdi-water-percent', value: '&sensor.wirelesstag_eurocave_left_humidity.state' + ' %'},
{ icon: 'mdi-oil-temperature', value: '&sensor.wirelesstag_eurocave_left_temperature.state' + ' °F'}]
},
{ position: [0, 1], type: TYPES.TEXT_LIST, title: 'Eurocave Right', id: {}, state: false, height: .75,
customStyles: {'backgroundColor': 'darkred', 'color': 'white'},
list: [{ icon: 'mdi-water-percent', value: '&sensor.wirelesstag_eurocave_right_humidity.state' + ' %'},
{ icon: 'mdi-oil-temperature', value: '&sensor.wirelesstag_eurocave_right_temperature.state' + ' °F'}]
},
]
},
{
title: 'Leak Detectors',
items: [
{ position: [0, 0], type: TYPES.TEXT_LIST, state: 'Kitchen Island', id: {}, classes: ['-temp'], height: .6,
customStyles:
function(item,entity) { if (parseFloat(this.states['sensor.wirelesstag_kitchen_island_sink_moisture'].state) > 6.0)
{ return {'backgroundColor': 'red'} } },
list: [
{ icon: 'mdi-water-percent', value: '&sensor.wirelesstag_kitchen_island_sink_moisture.state' + ' %' },
{ icon: 'mdi-oil-temperature', value: '&sensor.wirelesstag_kitchen_island_sink_temperature.state' + ' °F' },
],
},
{ position: [1, 0], type: TYPES.TEXT_LIST, state: 'Kitchen Frig', id: {}, classes: ['-temp'], height: .6,
customStyles:
function(item,entity) { if (parseFloat(this.states['sensor.wirelesstag_kitchen_refrigerator_moisture'].state) > 6.0)
{ return {'backgroundColor': 'red'} } },
list: [
{ icon: 'mdi-water-percent', value: '&sensor.wirelesstag_kitchen_refrigerator_moisture.state' + ' %' },
{ icon: 'mdi-oil-temperature', value: '&sensor.wirelesstag_kitchen_refrigerator_temperature.state' + ' °F' },
]
},
{ position: [2, 0], type: TYPES.TEXT_LIST, state: 'Kitchen Sink', id: {}, classes: ['-temp'], height: .6,
customStyles:
function(item,entity) { if (parseFloat(this.states['sensor.wirelesstag_kitchen_sink_moisture'].state) > 6.0)
{ return {'backgroundColor': 'red'} } },
list: [
{ icon: 'mdi-water-percent', value: '&sensor.wirelesstag_kitchen_sink_moisture.state' + ' %' },
{ icon: 'mdi-oil-temperature', value: '&sensor.wirelesstag_kitchen_sink_temperature.state' + ' °F' },
]
},
{ position: [3, 0], type: TYPES.TEXT_LIST, state: 'Bar Sink', id: {}, classes: ['-temp'], height: .6,
customStyles:
function(item,entity) { if (parseFloat(this.states['sensor.wirelesstag_bar_moisture'].state) > 6.0)
{ return {'backgroundColor': 'red'} } },
list: [
{ icon: 'mdi-water-percent', value: '&sensor.wirelesstag_bar_moisture.state' + ' %' },
{ icon: 'mdi-oil-temperature', value: '&sensor.wirelesstag_bar_temperature.state' + ' °F' },
]
},
{ position: [0, .6], type: TYPES.TEXT_LIST, state: 'Laundry Sink', id: {}, classes: ['-temp'], height: .6,
customStyles:
function(item,entity) { if (parseFloat(this.states['sensor.wirelesstag_laundry_room_sink_moisture'].state) > 6.0)
{ return {'backgroundColor': 'red'} } },
list: [
{ icon: 'mdi-water-percent', value: '&sensor.wirelesstag_laundry_room_sink_moisture.state' + ' %' },
{ icon: 'mdi-oil-temperature', value: '&sensor.wirelesstag_laundry_room_sink_temperature.state' + ' °F' },
]
},
{ position: [1, .6], type: TYPES.TEXT_LIST, state: 'Washer/Dryer', id: {}, classes: ['-temp'], height: .6,
customStyles:
function(item,entity) { if (parseFloat(this.states['sensor.wirelesstag_washer_dryer_moisture'].state) > 6.0)
{ return {'backgroundColor': 'red'} } },
list: [
{ icon: 'mdi-water-percent', value: '&sensor.wirelesstag_washer_dryer_moisture.state' + ' %' },
{ icon: 'mdi-oil-temperature', value: '&sensor.wirelesstag_washer_dryer_temperature.state' + ' °F' },
]
},
{ position: [2, .6], type: TYPES.TEXT_LIST, state: 'Powder Room', id: {}, classes: ['-temp'], height: .6,
customStyles:
function(item,entity) { if (parseFloat(this.states['sensor.wirelesstag_powder_room_moisture'].state) > 6.0)
{ return {'backgroundColor': 'red'} } },
list: [
{ icon: 'mdi-water-percent', value: '&sensor.wirelesstag_powder_room_moisture.state' + ' %' },
{ icon: 'mdi-oil-temperature', value: '&sensor.wirelesstag_powder_room_temperature.state' + ' °F' },
]
},
{ position: [3, .6], type: TYPES.TEXT_LIST, state: 'Shack Bathroom', id: {}, classes: ['-temp'], height: .6,
customStyles:
function(item,entity) { if (parseFloat(this.states['sensor.wirelesstag_shack_bathroom_moisture'].state) > 6.0)
{ return {'backgroundColor': 'red'} } },
list: [
{ icon: 'mdi-water-percent', value: '&sensor.wirelesstag_shack_bathroom_moisture.state' + ' %' },
{ icon: 'mdi-oil-temperature', value: '&sensor.wirelesstag_shack_bathroom_temperature.state' + ' °F' },
]
},
{ position: [0, 1.2], type: TYPES.TEXT_LIST, state: 'Shack Sink', id: {}, classes: ['-temp'], height: .6,
customStyles:
function(item,entity) { if (parseFloat(this.states['sensor.wirelesstag_shack_bathroom_sink_moisture'].state) > 6.0)
{ return {'backgroundColor': 'red'} } },
list: [
{ icon: 'mdi-water-percent', value: '&sensor.wirelesstag_shack_bathroom_sink_moisture.state' + ' %' },
{ icon: 'mdi-oil-temperature', value: '&sensor.wirelesstag_shack_bathroom_sink_temperature.state' + ' °F' },
]
},
{ position: [1, 1.2], type: TYPES.TEXT_LIST, state: 'Water Heaters', id: {}, classes: ['-temp'], height: .6,
customStyles:
function(item,entity) { if (parseFloat(this.states['sensor.wirelesstag_water_heaters_moisture'].state) > 6.0)
{ return {'backgroundColor': 'red'} } },
list: [
{ icon: 'mdi-water-percent', value: '&sensor.wirelesstag_water_heaters_moisture.state' + ' %' },
{ icon: 'mdi-oil-temperature', value: '&sensor.wirelesstag_water_heaters_temperature.state' + ' °F' },
]
},
{ position: [2, 1.2], type: TYPES.TEXT_LIST, state: 'Nick Toilet', id: {}, classes: ['-temp'], height: .6,
customStyles:
function(item,entity) { if (parseFloat(this.states['sensor.wirelesstag_nicholas_bathroom_toilet_moisture'].state) > 6.0)
{ return {'backgroundColor': 'red'} } },
list: [
{ icon: 'mdi-water-percent', value: '&sensor.wirelesstag_nicholas_bathroom_toilet_moisture.state' + ' %' },
{ icon: 'mdi-oil-temperature', value: '&sensor.wirelesstag_nicholas_bathroom_toilet_temperature.state' + ' °F' },
]
},
{ position: [3, 1.2], type: TYPES.TEXT_LIST, state: 'Nick Sink', id: {}, classes: ['-temp'], height: .6,
customStyles:
function(item,entity) { if (parseFloat(this.states['sensor.wirelesstag_nicholas_bathroom_sink_moisture'].state) > 6.0)
{ return {'backgroundColor': 'red'} } },
list: [
{ icon: 'mdi-water-percent', value: '&sensor.wirelesstag_nicholas_bathroom_sink_moisture.state' + ' %' },
{ icon: 'mdi-oil-temperature', value: '&sensor.wirelesstag_nicholas_bathroom_sink_temperature.state' + ' °F' },
]
},
{ position: [0, 1.8], type: TYPES.TEXT_LIST, state: 'Master Left Sink', id: {}, classes: ['-temp'], height: .6,
customStyles:
function(item,entity) { if (parseFloat(this.states['sensor.wirelesstag_master_bathroom_left_sink_moisture'].state) > 6.0)
{ return {'backgroundColor': 'red'} } },
list: [
{ icon: 'mdi-water-percent', value: '&sensor.wirelesstag_master_bathroom_left_sink_moisture.state' + ' %' },
{ icon: 'mdi-oil-temperature', value: '&sensor.wirelesstag_master_bathroom_left_sink_temperature.state' + ' °F' },
]
},
{ position: [1, 1.8], type: TYPES.TEXT_LIST, state: 'Master Right Sink', id: {}, classes: ['-temp'], height: .6,
customStyles:
function(item,entity) { if (parseFloat(this.states['sensor.wirelesstag_master_bathroom_sink_right_moisture'].state) > 6.0)
{ return {'backgroundColor': 'red'} } },
list: [
{ icon: 'mdi-water-percent', value: '&sensor.wirelesstag_master_bathroom_sink_right_moisture.state' + ' %' },
{ icon: 'mdi-oil-temperature', value: '&sensor.wirelesstag_master_bathroom_sink_right_temperature.state' + ' °F' },
]
},
{ position: [2, 1.8], type: TYPES.TEXT_LIST, state: 'Master Toilet', id: {}, classes: ['-temp'], height: .6,
customStyles:
function(item,entity) { if (parseFloat(this.states['sensor.wirelesstag_master_bathroom_toilet_moisture'].state) > 6.0)
{ return {'backgroundColor': 'red'} } },
list: [
{ icon: 'mdi-water-percent', value: '&sensor.wirelesstag_master_bathroom_toilet_moisture.state' + ' %' },
{ icon: 'mdi-oil-temperature', value: '&sensor.wirelesstag_master_bathroom_toilet_temperature.state' + ' °F' },
]
},
{ position: [3, 1.8], type: TYPES.TEXT_LIST, state: 'Hallway Toilet', id: {}, classes: ['-temp'], height: .6,
customStyles:
function(item,entity) { if (parseFloat(this.states['sensor.wirelesstag_hallway_bathroom_toilet_moisture'].state) > 6.0)
{ return {'backgroundColor': 'red'} } },
list: [
{ icon: 'mdi-water-percent', value: '&sensor.wirelesstag_hallway_bathroom_toilet_moisture.state' + ' %' },
{ icon: 'mdi-oil-temperature', value: '&sensor.wirelesstag_hallway_bathroom_toilet_temperature.state' + ' °F' },
]
},
{ position: [0, 2.4], type: TYPES.TEXT_LIST, state: 'Hallway Sink', id: {}, classes: ['-temp'], height: .6,
customStyles:
function(item,entity) { if (parseFloat(this.states['sensor.wirelesstag_hallway_bathroom_sink_moisture'].state) > 6.0)
{ return {'backgroundColor': 'red'} } },
list: [
{ icon: 'mdi-water-percent', value: '&sensor.wirelesstag_hallway_bathroom_sink_moisture.state' + ' %' },
{ icon: 'mdi-oil-temperature', value: '&sensor.wirelesstag_hallway_bathroom_sink_temperature.state' + ' °F' },
]
},
{ position: [1, 2.4], type: TYPES.TEXT_LIST, state: 'Amy Sink', id: {}, classes: ['-temp'], height: .6,
customStyles:
function(item,entity) { if (parseFloat(this.states['sensor.wirelesstag_amelia_bathroom_sink_moisture'].state) > 6.0)
{ return {'backgroundColor': 'red'} } },
list: [
{ icon: 'mdi-water-percent', value: '&sensor.wirelesstag_amelia_bathroom_sink_moisture.state' + ' %' },
{ icon: 'mdi-oil-temperature', value: '&sensor.wirelesstag_amelia_bathroom_sink_temperature.state' + ' °F' },
]
},
{ position: [2, 2.4], type: TYPES.TEXT_LIST, state: 'Amy Toilet', id: {}, classes: ['-temp'], height: .6,
customStyles:
function(item,entity) { if (parseFloat(this.states['sensor.wirelesstag_amelia_bathroom_toilet_moisture'].state) > 6.0)
{ return {'backgroundColor': 'red'} } },
list: [
{ icon: 'mdi-water-percent', value: '&sensor.wirelesstag_amelia_bathroom_toilet_moisture.state' + ' %' },
{ icon: 'mdi-oil-temperature', value: '&sensor.wirelesstag_amelia_bathroom_toilet_temperature.state' + ' °F' },
]
},
{ position: [3, 2.4], type: TYPES.TEXT_LIST, state: 'Guest Sink', id: {}, classes: ['-temp'], height: .6,
customStyles:
function(item,entity) { if (parseFloat(this.states['sensor.wirelesstag_guest_bathroom_sink_moisture'].state) > 6.0)
{ return {'backgroundColor': 'red'} } },
list: [
{ icon: 'mdi-water-percent', value: '&sensor.wirelesstag_guest_bathroom_sink_moisture.state' + ' %'},
{ icon: 'mdi-oil-temperature', value: '&sensor.wirelesstag_guest_bathroom_sink_temperature.state' + ' °F' },
]
},
{ position: [0, 3], type: TYPES.TEXT_LIST, state: 'Guest Toilet', id: {}, classes: ['-temp'], height: .6,
customStyles:
function(item,entity) { if (parseFloat(this.states['sensor.wirelesstag_guest_bathroom_toilet_moisture'].state) > 6.0)
{ return {'backgroundColor': 'red'} } },
list: [
{ icon: 'mdi-water-percent', value: '&sensor.wirelesstag_guest_bathroom_toilet_moisture.state' + ' %'},
{ icon: 'mdi-oil-temperature', value: '&sensor.wirelesstag_guest_bathroom_toilet_temperature.state' + ' °F'},
]
},
]
}
]
},
/* {
title: 'Smoke/CO Detectors',
bg: "images/monteverde.jpg",
icon: 'mdi-smoke-detector',
header: DEFAULT_HEADER,
groups: [
{
title: 'Smoke/CO Detectors',
items: [
{ position: [0, 0], type: TYPES.SENSOR_ICON, subtitle: "Second Floor", title: "Smoke Detector",
id: 'sensor.upstairs_nest_protect_smoke_status',
states: { Ok: "OK", Warning: "Warning", Emergency: "Emergency" },
icons: { Ok: 'mdi-smoke-detector', Warning: 'mdi-smoke-detector', Emergency: 'mdi-smoke-detector' }
},
{ position: [1, 0], type: TYPES.SENSOR_ICON, subtitle: "First Floor", title: "Smoke Detector",
id: 'sensor.downstairs_nest_protect_smoke_status',
states: { Ok: "OK", Warning: "Warning", Emergency: "Emergency" },
icons: { Ok: 'mdi-smoke-detector', Warning: 'mdi-smoke-detector', Emergency: 'mdi-smoke-detector' }
},
{ position: [2, 0], type: TYPES.SENSOR_ICON, subtitle: "Shack", title: "Smoke Detector",
id: 'sensor.shack_nest_protect_smoke_status',
states: { Ok: "OK", Warning: "Warning", Emergency: "Emergency" },
icons: { Ok: 'mdi-smoke-detector', Warning: 'mdi-smoke-detector', Emergency: 'mdi-smoke-detector' }
},
{ position: [0, 1], type: TYPES.SENSOR_ICON, subtitle: "Second Floor", title: "CO Detector",
id: 'sensor.upstairs_nest_protect_co_status',
states: { Ok: "OK", Warning: "Warning", Emergency: "Emergency" },
icons: { Ok: 'mdi-periodic-table-co2', Warning: 'mdi-periodic-table-co2', Emergency: 'mdi-periodic-table-co2' }
},
{ position: [1, 1], type: TYPES.SENSOR_ICON, subtitle: "First Floor", title: "CO Detector",
id: 'sensor.downstairs_nest_protect_co_status',
states: { Ok: "OK", Warning: "Warning", Emergency: "Emergency" },
icons: { Ok: 'mdi-periodic-table-co2', Warning: 'mdi-periodic-table-co2', Emergency: 'mdi-periodic-table-co2' }
},
{ position: [2, 1], type: TYPES.SENSOR_ICON, subtitle: "Shack", title: "CO Detector",
id: 'sensor.shack_nest_protect_co_status',
states: { Ok: "OK", Warning: "Warning", Emergency: "Emergency" },
icons: { Ok: 'mdi-periodic-table-co2', Warning: 'mdi-periodic-table-co2', Emergency: 'mdi-periodic-table-co2' }
},
]
}
]
}, */
{
title: 'Pool/Spa',
bg: "images/monteverde.jpg",
icon: 'mdi-swim',
header: DEFAULT_HEADER,
groups: [
{
title: 'Pool/Spa (Screenlogic i9+3)',
items: [
{ position: [0, 0], type: TYPES.LIGHT, title: "Pool Mode", id: 'switch.pool_pump',
states: { on: 'On', off: 'Off' }, icons: { on: 'mdi-pool', off: 'mdi-pool' }, state: false,
},
{ position: [1, 0], type: TYPES.SENSOR, title: "Temperature", subtitle: "Pool", id: 'sensor.pool_temp',
unit: '°F', state: false,
},
{ position: [2, 0], type: TYPES.LIGHT, title: "Pump Status", id: 'switch.pool_pump',
state: '&sensor.pump_status.state', customStyles: { fontSize: '12px' },
states: { on: 'On', off: 'Off' }, icons: { on: 'mdi-water-pump', off: 'mdi-water-pump' }
},
{ position: [3, 0], type: TYPES.LIGHT, title: "Freeze Protect", id: 'sensor.freeze_protect', state: false,
states: { ON: 'On', OFF: 'Off' }, icons: { ON: 'mdi-snowflake', OFF: 'mdi-snowflake' }
},
{ position: [4, 0], type: TYPES.LIGHT, title: "Pool Lights", id: 'switch.pool_lights', state: false,
states: { on: 'On', off: 'Off' }, icons: { on: 'mdi-lightbulb-on', off: 'mdi-lightbulb' }
},
{ position: [0, 1], type: TYPES.LIGHT, title: "SPA Mode", id: 'switch.spa_pump',
states: { on: 'On', off: 'Off' }, icons: { on: 'mdi-hot-tub', off: 'mdi-hot-tub' }, state: false,
},
{ position: [1, 1], type: TYPES.SENSOR, title: "Temperature", subtitle: "SPA", id: 'sensor.spa_temp',
unit: '°F', state: false,
},
{ position: [2, 1], type: TYPES.LIGHT, title: "SPA Heater", id: 'sensor.spa_heater', state: false,
states: { ON: 'On', OFF: 'Off' }, icons: { ON: 'mdi-fire', OFF: 'mdi-fire' }
},
{ position: [3, 1], type: TYPES.LIGHT, title: "SPA Air Blower", id: 'switch.spa_air_blower', state: false,
states: { on: 'On', off: 'Off' }, icons: { on: 'mdi-weather-windy', off: 'mdi-weather-windy' }
},
{ position: [4, 1], type: TYPES.LIGHT, title: "SPA Light", id: 'switch.spa_light', state: false,
states: { on: 'On', off: 'Off' }, icons: { on: 'mdi-lightbulb-on', off: 'mdi-lightbulb' }
},
{ position: [0, 2], type: TYPES.LIGHT, title: "Floor Cleaner", id: 'sensor.floor_cleaner', state: false,
states: { ON: 'On', OFF: 'Off' }, icons: { ON: 'mdi-robot', OFF: 'mdi-robot' }
},
{ position: [1, 2], type: TYPES.LIGHT, title: "Waterfall", id: 'switch.pool_waterfall', state: false,
states: { on: 'On', off: 'Off' }, icons: { on: 'mdi-fountain', off: 'mdi-fountain' }
},
]
},
]
},
{
title: 'Media Players',
bg: "images/monteverde.jpg",
icon: 'mdi-play-network',
header: DEFAULT_HEADER,
groups: [
{
items: [
{ position: [0, 0], height: 1.5, width: 1.5, type: TYPES.MEDIA_PLAYER, id: 'media_player.dataroom', hideSource: false,
hideMuteButton: false, state: false, subtitle: '@attributes.media_title', bgSuffix: '@attributes.entity_picture',
},
{ position: [1.5, 0], height: 1.5, width: 1.5, type: TYPES.MEDIA_PLAYER, id: 'media_player.family_room_mkii', hideSource: false,
hideMuteButton: false, state: false, subtitle: '@attributes.media_title', bgSuffix: '@attributes.entity_picture',
},
{ position: [3, 0], height: 1.5, width: 1.5, type: TYPES.MEDIA_PLAYER, id: 'media_player.firepit', hideSource: false,
hideMuteButton: false, state: false, subtitle: '@attributes.media_title', bgSuffix: '@attributes.entity_picture',
},
{ position: [4.5, 0], height: 1.5, width: 1.5, type: TYPES.MEDIA_PLAYER, id: 'media_player.greenhouse', hideSource: false,
hideMuteButton: false, state: false, subtitle: '@attributes.media_title', bgSuffix: '@attributes.entity_picture',
},
{ position: [0, 1.5], height: 1.5, width: 1.5, type: TYPES.MEDIA_PLAYER, id: 'media_player.living_room', hideSource: false,
hideMuteButton: false, state: false, subtitle: '@attributes.media_title', bgSuffix: '@attributes.entity_picture',
},
{ position: [1.5, 1.5], height: 1.5, width: 1.5, type: TYPES.MEDIA_PLAYER, id: 'media_player.master_bedroom', hideSource: false,
hideMuteButton: false, state: false, subtitle: '@attributes.media_title', bgSuffix: '@attributes.entity_picture',
},
{ position: [3, 1.5], height: 1.5, width: 1.5, type: TYPES.MEDIA_PLAYER, id: 'media_player.office', hideSource: false,
hideMuteButton: false, state: false, subtitle: '@attributes.media_title', bgSuffix: '@attributes.entity_picture',
},
{ position: [4.5, 1.5], height: 1.5, width: 1.5, type: TYPES.MEDIA_PLAYER, id: 'media_player.poolside', hideSource: false,
hideMuteButton: false, state: false, subtitle: '@attributes.media_title', bgSuffix: '@attributes.entity_picture',
},
{ position: [0, 3], height: 1.5, width: 1.5, type: TYPES.MEDIA_PLAYER, id: 'media_player.outdoor_dining', hideSource: false,
hideMuteButton: false, state: false, subtitle: '@attributes.media_title', bgSuffix: '@attributes.entity_picture',
},
{ position: [1.5, 3], height: 1.5, width: 1.5, type: TYPES.MEDIA_PLAYER, id: 'media_player.rosegarden', hideSource: false,
hideMuteButton: false, state: false, subtitle: '@attributes.media_title', bgSuffix: '@attributes.entity_picture',
},
/* { position: [3, 3], height: 1.5, width: 1.5, type: TYPES.MEDIA_PLAYER, id: 'media_player.stage', hideSource: false,
hideMuteButton: false, state: false, subtitle: '@attributes.media_title', bgSuffix: '@attributes.entity_picure',
},
{ position: [4.5, 3], height: 1.5, width: 1.5, type: TYPES.MEDIA_PLAYER, id: 'media_player.mcintosh', hideSource: false,
hideMuteButton: false, state: false, subtitle: '@attributes.media_title', bgSuffix: '@attributes.entity_picture',
}, */
]
}
]
},
{
title: 'Security Cameras',
icon: 'mdi-cctv',
groups: [ { title: '',
items: [ { position: [0, 0], width: 7, height: 5, type: TYPES.IFRAME, id: {}, url: 'https://xx/ui3.htm' } ] } ]
}
]
}
I am getting this error when I test the POST URL from within my Meraki dashboard:
Login attempt or request with invalid authentication from sxxx.meraki.com (IP) (Apache-HttpClient/4.5.4 (Java/1.8.0_171))
Have any of you see this before?
I’m hitting this regularly too, also noticed since a 0.10x release. I’m going to have to disable my ip_bans.yaml now too. Wonder if there has been any progress or any issues logged against this?