Finally decommissioned Floorplan completely from the config #922
@ -1 +1 @@
|
||||
2024.10.3
|
||||
2024.11.0
|
||||
@ -0,0 +1,27 @@
|
||||
blueprint:
|
||||
name: Invert a binary sensor
|
||||
description: Creates a binary_sensor which holds the inverted value of a reference binary_sensor
|
||||
domain: template
|
||||
source_url: https://github.com/home-assistant/core/blob/dev/homeassistant/components/template/blueprints/inverted_binary_sensor.yaml
|
||||
input:
|
||||
reference_entity:
|
||||
name: Binary sensor to be inverted
|
||||
description: The binary_sensor which needs to have its value inverted
|
||||
selector:
|
||||
entity:
|
||||
domain: binary_sensor
|
||||
variables:
|
||||
reference_entity: !input reference_entity
|
||||
binary_sensor:
|
||||
state: >
|
||||
{% if states(reference_entity) == 'on' %}
|
||||
off
|
||||
{% elif states(reference_entity) == 'off' %}
|
||||
on
|
||||
{% else %}
|
||||
{{ states(reference_entity) }}
|
||||
{% endif %}
|
||||
# delay_on: not_used in this example
|
||||
# delay_off: not_used in this example
|
||||
# auto_off: not_used in this example
|
||||
availability: "{{ states(reference_entity) not in ('unknown', 'unavailable') }}"
|
||||
@ -1,65 +0,0 @@
|
||||
<h1 align="center">
|
||||
<a name="logo" href="https://www.vCloudInfo.com/tag/iot"><img src="https://raw.githubusercontent.com/CCOSTAN/Home-AssistantConfig/master/config/www/custom_ui/floorplan/images/branding/twitter_profile.png" alt="Bear Stone Smart Home" width="200"></a>
|
||||
<br>
|
||||
Bear Stone Smart Home Documentation
|
||||
</h1>
|
||||
<h4 align="center">Be sure to :star: my configuration repo so you can keep up to date on any daily progress!</h4>
|
||||
<div align="center">
|
||||
|
||||
[](https://x.com/ccostan)
|
||||
[](https://www.youtube.com/vCloudInfo?sub_confirmation=1)
|
||||
[](https://github.com/CCOSTAN)
|
||||
<h4>
|
||||
<a href="https://github.com/CCOSTAN/Home-AssistantConfig/commits/master"><img src="https://img.shields.io/github/last-commit/CCOSTAN/Home-AssistantConfig.svg?style=plasticr"/></a>
|
||||
<a href="https://github.com/CCOSTAN/Home-AssistantConfig/commits/master"><img src="https://img.shields.io/github/commit-activity/y/CCOSTAN/Home-AssistantConfig.svg?style=plasticr"/></a>
|
||||
</h4>
|
||||
</div>
|
||||
<p align="center"><a align="center" target="_blank" href="https://vcloudinfo.us12.list-manage.com/subscribe?u=45cab4343ffdbeb9667c28a26&id=e01847e94f"><img src="https://feeds.feedburner.com/RecentCommitsToBearStoneHA.1.gif" alt="Recent Commits to Bear Stone Smart Home" style="border:0"></a></p>
|
||||
|
||||
<div align="center"><a name="menu"></a>
|
||||
<h4>
|
||||
<a href="https://www.vCloudInfo.com/tag/iot">
|
||||
Blog
|
||||
</a>
|
||||
<span> | </span>
|
||||
<a href="https://github.com/CCOSTAN/Home-AssistantConfig#devices">
|
||||
Devices
|
||||
</a>
|
||||
<span> | </span>
|
||||
<a href="https://github.com/CCOSTAN/Home-AssistantConfig/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc">
|
||||
Todo List
|
||||
</a>
|
||||
<span> | </span>
|
||||
<a href="https://x.com/BearStoneHA">
|
||||
Smart Home Stats
|
||||
</a>
|
||||
<span> | </span>
|
||||
<a href="https://www.vcloudinfo.com/click-here">
|
||||
Follow Me
|
||||
</a>
|
||||
<span> | </span>
|
||||
<a href="https://github.com/CCOSTAN/Home-AssistantConfig/tree/master/config">
|
||||
Code
|
||||
</a>
|
||||
<span> | </span>
|
||||
<a href="https://github.com/CCOSTAN/Home-AssistantConfig#diagram">
|
||||
Diagram
|
||||
</a>
|
||||
<span> | </span>
|
||||
<a href="https://youtube.com/vCloudInfo">
|
||||
Youtube
|
||||
</a>
|
||||
<span> | </span>
|
||||
<a href="https://amzn.to/2HXSx2M">
|
||||
Support
|
||||
</a>
|
||||
</h4>
|
||||
|
||||

|
||||
<a name="bottom" href="https://github.com/CCOSTAN/Home-AssistantConfig#logo"><img align="right" border="0" src="https://raw.githubusercontent.com/CCOSTAN/Home-AssistantConfig/master/config/www/custom_ui/floorplan/images/branding/up_arrow.png" width="25" ></a>
|
||||
|
||||
**Still have questions on my Config?** <br>
|
||||
**Message me on X :** [](https://www.x.com/ccostan) or [](https://www.x.com/BearStoneHA)
|
||||
<!-- Subscribe Section -->
|
||||
<a href="https://eepurl.com/dmXFYz"><img align="center" border="0" src="https://raw.githubusercontent.com/CCOSTAN/Home-AssistantConfig/master/config/www/custom_ui/floorplan/images/branding/email_link.png" height="50" ></a>.
|
||||
<!-- Subscribe Section END-->
|
||||
@ -1,205 +0,0 @@
|
||||
SVG shapes */
|
||||
|
||||
svg, svg * {
|
||||
vector-effect: non-scaling-stroke !important;
|
||||
pointer-events: all !important;
|
||||
}
|
||||
/*
|
||||
/* Hover over */
|
||||
|
||||
/* Interior Garage */
|
||||
#binary_sensor\.mcu1_gpio12.window-opened {
|
||||
transform: rotate(270deg);
|
||||
transform-origin: left;
|
||||
}
|
||||
/* Back Door */
|
||||
#binary_sensor\.mcu2_gpio5.window-opened {
|
||||
transform: rotate(270deg);
|
||||
transform-origin: right;
|
||||
}
|
||||
#binary_sensor\.kitchen_door_opened.window-opened {
|
||||
transform: rotate(270deg);
|
||||
transform-origin: right;
|
||||
}
|
||||
|
||||
#sensor\.pirateweather_minutely_summary {
|
||||
fill: #231F26 !important;
|
||||
fill-opacity: 1.0;
|
||||
}
|
||||
|
||||
.entity:hover:not(.static-text):not(.static-temp):not(.static-text-date):not:(.static-text-time) {
|
||||
stroke: #03A9F4 !important;
|
||||
stroke-width: 1px !important;
|
||||
stroke-opacity: 1 !important;
|
||||
}
|
||||
|
||||
|
||||
.warning-background, .warning-text-background {
|
||||
fill: #fcf8e3 !important;
|
||||
fill-opacity: 1 !important;
|
||||
stroke: #faebcc !important;
|
||||
stroke-width: 1px !important;
|
||||
}
|
||||
|
||||
.static-text
|
||||
{
|
||||
fill: #FFFFA6 !important;
|
||||
font-family : Helvetica !important;
|
||||
font-weight : bold !important;
|
||||
font-size : 15px !important;
|
||||
}
|
||||
|
||||
.static-text-date
|
||||
{
|
||||
font-family : Helvetica !important;
|
||||
font-weight : bold !important;
|
||||
font-size : 16px !important;
|
||||
fill : #FFFFA6 !important;
|
||||
}
|
||||
|
||||
.static-text-time
|
||||
{
|
||||
font-family : Helvetica !important;
|
||||
font-weight : bold !important;
|
||||
font-size : 35px !important;
|
||||
fill: #FFFFA6 !important;
|
||||
}
|
||||
|
||||
.static-temp
|
||||
{
|
||||
font-family: Helvetica !important;
|
||||
font-size: 22px !important;
|
||||
fill: #FFFFA6 !important;
|
||||
}
|
||||
/* Last motion entity */
|
||||
|
||||
.last-motion {
|
||||
stroke: #808080 !important;
|
||||
stroke-width: 1px !important;
|
||||
stroke-opacity: 1 !important;
|
||||
}
|
||||
|
||||
/* Presence */
|
||||
.presence-on {
|
||||
fill: #BDF271 !important;
|
||||
}
|
||||
|
||||
.presence-off {
|
||||
fill: #3D3B3F !important;
|
||||
}
|
||||
|
||||
/* Text Home/Away */
|
||||
|
||||
.text-home {
|
||||
fill: #BDF271 !important;
|
||||
}
|
||||
|
||||
.text-away {
|
||||
fill: #E7376B !important;
|
||||
}
|
||||
|
||||
/* switches */
|
||||
|
||||
.switch-on {
|
||||
fill: orange !important;
|
||||
}
|
||||
|
||||
.switch-on-blue {
|
||||
fill: blue !important;
|
||||
}
|
||||
|
||||
.switch-off {
|
||||
fill: #cccccc !important;
|
||||
}
|
||||
|
||||
/* Juicebox */
|
||||
.juicebox-plugged {
|
||||
fill: orange !important;
|
||||
}
|
||||
.juicebox-standby {
|
||||
fill: grey !important;
|
||||
}
|
||||
.juicebox-charging {
|
||||
fill: green !important;
|
||||
}
|
||||
/* Buttons */
|
||||
|
||||
.button-on {
|
||||
fill: #FFFFA6 !important;
|
||||
fill-opacity: 0.25;
|
||||
}
|
||||
|
||||
.button-off {
|
||||
fill: #3D3B3F !important;
|
||||
fill-opacity: 0.5;
|
||||
}
|
||||
|
||||
/* Nest Protects */
|
||||
|
||||
.protect-on {
|
||||
fill: green !important;
|
||||
}
|
||||
|
||||
.protect-off {
|
||||
fill: red !important;
|
||||
}
|
||||
|
||||
/* Windows / Doors / Entry Points */
|
||||
|
||||
.window-open {
|
||||
fill: #c60919 !important;
|
||||
|
||||
}
|
||||
|
||||
.window-closed {
|
||||
fill: #00FFFF !important;
|
||||
}
|
||||
|
||||
/* Light */
|
||||
|
||||
.light-off {
|
||||
fill: #231F26 !important;
|
||||
fill-opacity: 1.0;
|
||||
stroke: black !important;
|
||||
stroke-width: 1;
|
||||
stroke-opacity:0.1;
|
||||
}
|
||||
.light-off:hover {
|
||||
transform-origin: center;
|
||||
transform: scale(2);
|
||||
}
|
||||
|
||||
.outdoor-light-off {
|
||||
fill: grey !important;
|
||||
fill-opacity: 1.0;
|
||||
stroke: black !important;
|
||||
stroke-width: 1;
|
||||
stroke-opacity:0.1;
|
||||
}
|
||||
.outdoor-light-off:hover {
|
||||
transform-origin: center;
|
||||
transform: scale(2);
|
||||
}
|
||||
.light-blue-on {
|
||||
fill: blue !important;
|
||||
fill-opacity: 1.0;
|
||||
stroke: #FFFFA6 !important;
|
||||
stroke-width: 10;
|
||||
stroke-opacity: 0.25;
|
||||
}
|
||||
.light-blue-on:hover {
|
||||
transform-origin: center;
|
||||
transform: scale(3);
|
||||
}
|
||||
|
||||
.light-on {
|
||||
fill: yellow !important;
|
||||
fill-opacity: 1.0;
|
||||
stroke: #FFFFA6 !important;
|
||||
stroke-width: 10;
|
||||
stroke-opacity: 0.25;
|
||||
}
|
||||
.light-on:hover {
|
||||
transform-origin: center;
|
||||
transform: scale(3);
|
||||
}
|
||||
|
Before Width: | Height: | Size: 82 KiB |
@ -1,287 +0,0 @@
|
||||
name: Alarm Panel
|
||||
image: /local/custom_ui/floorplan/alarm.svg
|
||||
stylesheet: /local/custom_ui/floorplan/alarm.css
|
||||
|
||||
rules:
|
||||
- name: input_booleans
|
||||
entities:
|
||||
- input_boolean.guest_mode
|
||||
- input_boolean.good_night
|
||||
- light.kitchen_lights
|
||||
- light.living_room_lights
|
||||
|
||||
states:
|
||||
- state: 'on'
|
||||
class: 'button-on'
|
||||
- state: 'off'
|
||||
class: 'button-off'
|
||||
|
||||
- name: thermostats_temp
|
||||
entities:
|
||||
- climate.downstairs
|
||||
- climate.upstairs
|
||||
text_template: '${entity.attributes.current_temperature ? Math.ceil(entity.attributes.current_temperature) + "°": "undefined"}'
|
||||
class_template: 'return "static-temp";'
|
||||
|
||||
- name: temp_darksky
|
||||
entities:
|
||||
- sensor.pirateweather_temperature
|
||||
text_template: '${entity.state ? Math.ceil(entity.state) + "°": "undefined"}'
|
||||
class_template: 'return "static-temp";'
|
||||
|
||||
- name: temp_round
|
||||
entities:
|
||||
- sensor.downstairs_thermostat_humidity
|
||||
- sensor.upstairs_thermostat_humidity
|
||||
- sensor.pirateweather_humidity
|
||||
- sensor.carlojuice_amps
|
||||
text_template: '${entity.state ? Math.ceil(entity.state) : "undefined"}'
|
||||
class_template: 'return "static-temp";'
|
||||
|
||||
- name: text_states
|
||||
entities:
|
||||
- sensor.last_message
|
||||
text_template: '${entity.state ? entity.state.replace(/\s{3,}/g,"") : "undefined"}'
|
||||
class_template: 'return "static-text";'
|
||||
|
||||
- name: text_font_date
|
||||
entities:
|
||||
- sensor.floorplan_date
|
||||
text_template: '${entity.state ? entity.state : "undefined"}'
|
||||
class_template: 'return "static-text-date";'
|
||||
|
||||
- name: text_font_time
|
||||
entities:
|
||||
- sensor.floorplan_time
|
||||
text_template: '${entity.state ? entity.state : "undefined"}'
|
||||
class_template: 'return "static-text-time";'
|
||||
|
||||
- name: Alarm
|
||||
entities:
|
||||
- input_boolean.alert_mode
|
||||
text_template: '${entity.state ? entity.state : "undefined"}'
|
||||
states:
|
||||
- state: 'on'
|
||||
class: 'text-home'
|
||||
- state: 'off'
|
||||
class: 'text-away'
|
||||
|
||||
- name: Family
|
||||
entities:
|
||||
- person.carlo
|
||||
- person.stacey
|
||||
- device_tracker.juicebox
|
||||
text_template: '${entity.state ? entity.state.replace("not_home", "away") : "undefined"}'
|
||||
|
||||
states:
|
||||
- state: 'home'
|
||||
class: 'text-home'
|
||||
- state: 'not_home'
|
||||
class: 'text-away'
|
||||
|
||||
- name: switches
|
||||
entities:
|
||||
- switch.front_landscaping
|
||||
- switch.back_landscaping
|
||||
- group.kitchen_accents
|
||||
- group.master_bathroom_accents
|
||||
- switch.lr_amp
|
||||
states:
|
||||
- state: 'on'
|
||||
class: 'switch-on'
|
||||
- state: 'off'
|
||||
class: 'switch-off'
|
||||
|
||||
- name: custom_switches
|
||||
entities:
|
||||
- switch.pool_deck
|
||||
states:
|
||||
- state: 'on'
|
||||
class: 'light-blue-on'
|
||||
- state: 'off'
|
||||
class: 'outdoor-light-off'
|
||||
|
||||
- name: Lights
|
||||
entities:
|
||||
- light.kids_hallway
|
||||
- light.bedroom_hallway
|
||||
- light_upstairs_hallway
|
||||
- light.m1_back_left
|
||||
- light.m1_back_right
|
||||
- light.m1_front_left
|
||||
- light.m1_front_right
|
||||
- light.slider
|
||||
- light.office_lamp
|
||||
- light.den_lamp
|
||||
- light.f2
|
||||
- light.f1
|
||||
- light.s1
|
||||
- light.s2
|
||||
- light.s3
|
||||
- light.s4
|
||||
- light.d1
|
||||
- light.d2
|
||||
- light.k1
|
||||
- light.k2
|
||||
- light.k3
|
||||
- light.k4
|
||||
- light.k5
|
||||
- light.k6
|
||||
- light.sink
|
||||
- light.fridge
|
||||
- light.couch_1
|
||||
- light.tv_light
|
||||
- light.bedroom
|
||||
- light.justin_go
|
||||
- light.paige_go
|
||||
- light.garage_attic
|
||||
- light.upstairs_lamp
|
||||
states:
|
||||
- state: 'on'
|
||||
class: 'light-on'
|
||||
- state: 'off'
|
||||
class: 'light-off'
|
||||
|
||||
- name: Outdoor Lights
|
||||
entities:
|
||||
- light.p1_front_left
|
||||
- light.p1_front_right
|
||||
- light.p1_back_left
|
||||
- light.p1_back_right
|
||||
- light.outdoor_bathroom
|
||||
- light.outdoor_foyer
|
||||
- light.outdoor_sconce_1
|
||||
- light.outdoor_sconce_2
|
||||
- light.outdoor_sconce_3
|
||||
- light.led_garage_large
|
||||
- light.led_garage_small
|
||||
- light.led_outdoor_den
|
||||
- light.flood_2
|
||||
states:
|
||||
- state: 'on'
|
||||
class: 'light-on'
|
||||
- state: 'off'
|
||||
class: 'outdoor-light-off'
|
||||
|
||||
- name: Nest Protects
|
||||
entities:
|
||||
- binary_sensor.upstairs_living_room_nest_protect_online
|
||||
- binary_sensor.hallway_nest_protect_kids_hallway_online
|
||||
- binary_sensor.justins_room_nest_protect_online
|
||||
- binary_sensor.kitchen_nest_protect_online
|
||||
- binary_sensor.master_bedroom_nest_protect_online
|
||||
- binary_sensor.master_hallway_nest_protect_online
|
||||
- binary_sensor.paiges_room_nest_protect_paiges_room_online
|
||||
- binary_sensor.upstairs_bedroom_nest_protect_online
|
||||
- binary_sensor.office_nest_protect_online
|
||||
states:
|
||||
- state: 'off'
|
||||
class: 'protect-off'
|
||||
- state: 'on'
|
||||
class: 'protect-on'
|
||||
|
||||
- name: Entry Points
|
||||
entities:
|
||||
- binary_sensor.mcu1_gpio4
|
||||
- binary_sensor.mcu1_gpio5
|
||||
- binary_sensor.mcu1_gpio10
|
||||
- binary_sensor.mcu1_gpio12
|
||||
- binary_sensor.mcu1_gpio13
|
||||
- binary_sensor.mcu1_gpio14
|
||||
- binary_sensor.mcu2_gpio4
|
||||
- binary_sensor.mcu2_gpio5
|
||||
- binary_sensor.mcu2_gpio9
|
||||
- binary_sensor.mcu2_gpio10
|
||||
- binary_sensor.mcu2_gpio12
|
||||
- binary_sensor.mcu2_gpio13
|
||||
- binary_sensor.mcu2_gpio14
|
||||
- binary_sensor.mcu3_gpio4
|
||||
- binary_sensor.mcu3_gpio5
|
||||
- binary_sensor.mcu3_gpio10
|
||||
- binary_sensor.mcu3_gpio14
|
||||
- binary_sensor.kitchen_door
|
||||
- binary_sensor.mcu3_light
|
||||
states:
|
||||
- state: 'off'
|
||||
class: 'window-closed'
|
||||
- state: 'on'
|
||||
class: 'window-open'
|
||||
|
||||
- name: Presence
|
||||
entities:
|
||||
- binary_sensor.sleepnumber_carlo_carlo_is_in_bed
|
||||
- binary_sensor.sleepnumber_carlo_stacey_is_in_bed
|
||||
states:
|
||||
- state: 'on'
|
||||
class: 'presence-on'
|
||||
- state: 'off'
|
||||
class: 'presence-off'
|
||||
|
||||
- name: Garage Doors
|
||||
entities:
|
||||
- cover.large_garage_door
|
||||
- cover.small_garage_door
|
||||
states:
|
||||
- state: 'closed'
|
||||
class: 'window-closed'
|
||||
- state: 'open'
|
||||
class: 'window-open'
|
||||
|
||||
- name: Juicebox
|
||||
entities:
|
||||
- sensor.carlojuice_charging_status
|
||||
states:
|
||||
- state: 'charging'
|
||||
class: 'juicebox-charging'
|
||||
- state: 'standby'
|
||||
class: 'juicebox-standby'
|
||||
- state: 'plugged'
|
||||
class: 'juicebox-plugged'
|
||||
|
||||
- name: Dark Sky Sensors
|
||||
entities:
|
||||
- sensor.pirateweather_minutely_summary
|
||||
image_template: '
|
||||
var imageName = "";
|
||||
|
||||
switch (entity.attributes.entity_picture) {
|
||||
case "/static/images/darksky/weather-sunny.svg":
|
||||
imageName = "sunny-1";
|
||||
break;
|
||||
|
||||
case "/static/images/darksky/weather-night.svg":
|
||||
imageName = "night-1";
|
||||
break;
|
||||
|
||||
case "/static/images/darksky/weather-partlycloudy.svg":
|
||||
imageName = "partlycloudy-day-1";
|
||||
break;
|
||||
|
||||
case "/static/images/darksky/weather-cloudy.svg":
|
||||
imageName = "partlycloudy-night-1";
|
||||
break;
|
||||
|
||||
case "/static/images/darksky/weather-cloudy.svg":
|
||||
imageName = "cloudy-day-1";
|
||||
break;
|
||||
|
||||
case "/static/images/darksky/weather-pouring.svg":
|
||||
imageName = "thunder";
|
||||
break;
|
||||
|
||||
case "/static/images/darksky/weather-snowy.svg":
|
||||
imageName = "snowy-day-1";
|
||||
break;
|
||||
}
|
||||
|
||||
return "/local/custom_ui/floorplan/images/weather/" + imageName + ".svg";
|
||||
'
|
||||
|
||||
- name: Camera Images
|
||||
entities:
|
||||
- camera.front_door
|
||||
- camera.camera1
|
||||
- camera.camera2
|
||||
- camera.camera3
|
||||
image_template: '${entity.attributes.entity_picture}'
|
||||
# image_refresh_interval: 20 # in seconds - Future options if needed.
|
||||
|
Before Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 8.3 KiB |
|
Before Width: | Height: | Size: 4.0 KiB |
|
Before Width: | Height: | Size: 3.1 KiB |
|
Before Width: | Height: | Size: 1005 B |
|
Before Width: | Height: | Size: 2.9 KiB |
@ -1,166 +0,0 @@
|
||||
/* @import url('https://fonts.googleapis.com/css?family=Black+Ops+One');
|
||||
|
||||
SVG shapes */
|
||||
|
||||
svg, svg * {
|
||||
vector-effect: non-scaling-stroke !important;
|
||||
pointer-events: all !important;
|
||||
}
|
||||
/*
|
||||
/* Hover over */
|
||||
|
||||
.entity:hover:not(.static-text):not(.static-temp):not(.static-text-date):not(.static-text-time) {
|
||||
stroke: #03A9F4 !important;
|
||||
stroke-width: 1px !important;
|
||||
stroke-opacity: 1 !important;
|
||||
}
|
||||
|
||||
|
||||
.warning-background, .warning-text-background {
|
||||
fill: #fcf8e3 !important;
|
||||
fill-opacity: 1 !important;
|
||||
stroke: #faebcc !important;
|
||||
stroke-width: 1px !important;
|
||||
}
|
||||
|
||||
.static-text
|
||||
{
|
||||
font-size : 47px !important;
|
||||
font-family : Helvetica !important;
|
||||
color : rgb(128, 128, 128) !important;
|
||||
}
|
||||
|
||||
.static-text-date
|
||||
{
|
||||
font-family : Helvetica !important;
|
||||
font-size : 47px !important;
|
||||
color : rgb(128, 128, 128) !important;
|
||||
}
|
||||
|
||||
.static-temp
|
||||
{
|
||||
font-size: 47.57px !important;
|
||||
font-family: Helvetica !important;
|
||||
fill: rgb(128, 128, 128) !important;
|
||||
}
|
||||
|
||||
.static-text-time
|
||||
{
|
||||
font-family: "Rockwell Extra Bold", "Rockwell Bold", monospace !important;
|
||||
font-size : 280px !important;
|
||||
color : rgb(0, 173, 238) !important;
|
||||
text-shadow: 0 0 30px #00adee;
|
||||
text-align: center; !important;
|
||||
}
|
||||
|
||||
.static-text-am_pm
|
||||
{
|
||||
font-family: "Rockwell Extra Bold", "Rockwell Bold", monospace !important;
|
||||
font-size : 60px !important;
|
||||
color : rgb(0, 173, 238) !important;
|
||||
text-shadow: 0 0 30px #00adee;
|
||||
}
|
||||
|
||||
|
||||
/* Last motion entity */
|
||||
|
||||
.last-motion {
|
||||
stroke: #808080 !important;
|
||||
stroke-width: 1px !important;
|
||||
stroke-opacity: 1 !important;
|
||||
}
|
||||
|
||||
/* Presence */
|
||||
.presence-on {
|
||||
fill: #BDF271 !important;
|
||||
}
|
||||
|
||||
.presence-off {
|
||||
fill: #3D3B3F !important;
|
||||
}
|
||||
|
||||
/* Text Home/Away */
|
||||
|
||||
.text-home {
|
||||
fill: #BDF271 !important;
|
||||
}
|
||||
|
||||
.text-away {
|
||||
fill: #E7376B !important;
|
||||
}
|
||||
|
||||
/* switches */
|
||||
|
||||
.switch-on {
|
||||
fill: orange !important;
|
||||
}
|
||||
|
||||
.switch-on-blue {
|
||||
fill: blue !important;
|
||||
}
|
||||
|
||||
.switch-off {
|
||||
fill: #cccccc !important;
|
||||
}
|
||||
/* Buttons */
|
||||
|
||||
.button-on {
|
||||
fill: #FFFFA6 !important;
|
||||
fill-opacity: 0.25;
|
||||
}
|
||||
|
||||
.button-off {
|
||||
fill: #3D3B3F !important;
|
||||
fill-opacity: 0.5;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Light */
|
||||
|
||||
.light-off {
|
||||
fill: #231F26 !important;
|
||||
fill-opacity: 1.0;
|
||||
stroke: black !important;
|
||||
stroke-width: 1;
|
||||
stroke-opacity:0.1;
|
||||
}
|
||||
.light-off:hover {
|
||||
transform-origin: center;
|
||||
transform: scale(2);
|
||||
}
|
||||
|
||||
.outdoor-light-off {
|
||||
fill: grey !important;
|
||||
fill-opacity: 1.0;
|
||||
stroke: black !important;
|
||||
stroke-width: 1;
|
||||
stroke-opacity:0.1;
|
||||
}
|
||||
.outdoor-light-off:hover {
|
||||
transform-origin: center;
|
||||
transform: scale(2);
|
||||
}
|
||||
.light-blue-on {
|
||||
fill: blue !important;
|
||||
fill-opacity: 1.0;
|
||||
stroke: #FFFFA6 !important;
|
||||
stroke-width: 10;
|
||||
stroke-opacity: 0.25;
|
||||
}
|
||||
.light-blue-on:hover {
|
||||
transform-origin: center;
|
||||
transform: scale(3);
|
||||
}
|
||||
|
||||
.light-on {
|
||||
fill: yellow !important;
|
||||
fill-opacity: 1.0;
|
||||
stroke: #FFFFA6 !important;
|
||||
stroke-width: 10;
|
||||
stroke-opacity: 0.25;
|
||||
}
|
||||
.light-on:hover {
|
||||
transform-origin: center;
|
||||
transform: scale(3);
|
||||
}
|
||||
|
Before Width: | Height: | Size: 17 KiB |
@ -1,148 +0,0 @@
|
||||
page_id: clock
|
||||
image: /local/custom_ui/floorplan/clock.svg
|
||||
stylesheet: /local/custom_ui/floorplan/clock.css
|
||||
|
||||
variables:
|
||||
- name: floorplan.hours
|
||||
- name: floorplan.minutes
|
||||
|
||||
defaults:
|
||||
hover_over: false
|
||||
more_info: false
|
||||
|
||||
rules:
|
||||
|
||||
- element: floorplan.clock_button
|
||||
action:
|
||||
service: floorplan.page_navigate
|
||||
data:
|
||||
page_id: clock_config
|
||||
|
||||
- entity: sensor.clock_stacey_alarm_time
|
||||
text_template: '${entity.state ? entity.state.slice(0, 5) : "00:00"}'
|
||||
|
||||
|
||||
- entity: input_boolean.clock_snooze
|
||||
image_template: '/local/custom_ui/floorplan/buttons/${(entity.state === "on") ? "snooze_on" : "snooze"}.svg'
|
||||
action:
|
||||
service: input_boolean.toggle
|
||||
data:
|
||||
entity_id: input_boolean.clock_snooze
|
||||
|
||||
- entity: input_boolean.school_mode
|
||||
image_template: '/local/custom_ui/floorplan/buttons/${(entity.state === "on") ? "school_on" : "school_off"}.svg'
|
||||
action:
|
||||
service: input_boolean.toggle
|
||||
data:
|
||||
entity_id: input_boolean.school_mode
|
||||
|
||||
- entity: media_player.alarm_clock
|
||||
image_template: '/local/custom_ui/floorplan/buttons/${(entity.state === "playing") ? "stop" : "radio_on"}.svg'
|
||||
action:
|
||||
service: '${(entity.state === "playing") ? "media_player.media_stop" : "media_player.play_media"}'
|
||||
data:
|
||||
media_content_id: http://listen.djcmedia.com:80/americascountryhigh
|
||||
media_content_type: audio/mp4
|
||||
|
||||
- name: thermostats_temp
|
||||
entities:
|
||||
- climate.downstairs
|
||||
- climate.upstairs
|
||||
text_template: '${entity.attributes.current_temperature ? Math.ceil(entity.attributes.current_temperature) + "°": "undefined"}'
|
||||
class_template: 'return "static-temp";'
|
||||
|
||||
- name: temp_darksky
|
||||
entities:
|
||||
- sensor.pirateweather_temperature
|
||||
text_template: '${entity.state ? Math.ceil(entity.state) + "°": "undefined"}'
|
||||
class_template: 'return "static-temp";'
|
||||
|
||||
- name: text_states
|
||||
entities:
|
||||
- sensor.pirateweather_minutely_summary
|
||||
hover_over: false
|
||||
more_info: false
|
||||
text_template: '${entity.state ? entity.state : "undefined"}'
|
||||
class_template: 'return "static-text";'
|
||||
|
||||
- name: text_font_date
|
||||
entities:
|
||||
- sensor.clock_date
|
||||
- sensor.clock_day
|
||||
hover_over: false
|
||||
more_info: false
|
||||
text_template: '${entity.state ? entity.state : "undefined"}'
|
||||
class_template: 'return "static-text-date";'
|
||||
|
||||
- name: text_font_time
|
||||
entities:
|
||||
- sensor.clock_time
|
||||
hover_over: false
|
||||
more_info: false
|
||||
text_template: '${entity.state ? entity.state : "undefined"}'
|
||||
class_template: 'return "static-text-time";'
|
||||
|
||||
- name: text_font_am_pm
|
||||
entities:
|
||||
- sensor.clock_am_pm
|
||||
hover_over: false
|
||||
more_info: false
|
||||
text_template: '${entity.state ? entity.state : "undefined"}'
|
||||
class_template: 'return "static-text-am_pm";'
|
||||
|
||||
|
||||
# - name: Presence
|
||||
# entities:
|
||||
# - binary_sensor.sleepnumber_carlo_carlo_is_in_bed
|
||||
# - binary_sensor.sleepnumber_carlo_stacey_is_in_bed
|
||||
# states:
|
||||
# - state: 'on'
|
||||
# class: 'presence-on'
|
||||
# - state: 'off'
|
||||
# class: 'presence-off'
|
||||
|
||||
- name: Dark Sky Sensors
|
||||
entities:
|
||||
- entity: sensor.pirateweather_minutely_summary
|
||||
element: sensor.pirateweather_minutely_summary_icon
|
||||
|
||||
image_template: '
|
||||
var imageName = "";
|
||||
|
||||
switch (entity.attributes.entity_picture) {
|
||||
case "/static/images/darksky/weather-sunny.svg":
|
||||
imageName = "sunny-1";
|
||||
break;
|
||||
|
||||
case "/static/images/darksky/weather-night.svg":
|
||||
imageName = "night-1";
|
||||
break;
|
||||
|
||||
case "/static/images/darksky/weather-partlycloudy.svg":
|
||||
imageName = "partlycloudy-day-1";
|
||||
break;
|
||||
|
||||
case "/static/images/darksky/weather-cloudy.svg":
|
||||
imageName = "partlycloudy-night-1";
|
||||
break;
|
||||
|
||||
case "/static/images/darksky/weather-cloudy.svg":
|
||||
imageName = "cloudy-day-1";
|
||||
break;
|
||||
|
||||
case "/static/images/darksky/weather-pouring.svg":
|
||||
imageName = "thunder";
|
||||
break;
|
||||
|
||||
case "/static/images/darksky/weather-snowy.svg":
|
||||
imageName = "snowy-day-1";
|
||||
break;
|
||||
}
|
||||
|
||||
return "/local/custom_ui/floorplan/images/weather/" + imageName + ".svg";
|
||||
'
|
||||
|
||||
- name: Camera Images
|
||||
entities:
|
||||
- camera.front_door
|
||||
image_template: '${entity.attributes.entity_picture}'
|
||||
|
Before Width: | Height: | Size: 18 KiB |
@ -1,172 +0,0 @@
|
||||
page_id: clock_config
|
||||
image: /local/custom_ui/floorplan/clock_config.svg
|
||||
stylesheet: /local/custom_ui/floorplan/clock.css
|
||||
|
||||
variables:
|
||||
- name: floorplan.hours
|
||||
- name: floorplan.minutes
|
||||
|
||||
defaults:
|
||||
hover_over: false
|
||||
more_info: false
|
||||
|
||||
startup:
|
||||
action:
|
||||
- service: floorplan.variable_set
|
||||
data:
|
||||
variable: floorplan.hours
|
||||
value_template: '${parseInt(entities["sensor.clock_stacey_alarm_time"].state.slice(0, 2)) ? parseInt(entities["sensor.clock_stacey_alarm_time"].state.slice(0, 2)): "00"}'
|
||||
- service: floorplan.variable_set
|
||||
data:
|
||||
variable: floorplan.minutes
|
||||
value_template: '${parseInt(entities["sensor.clock_stacey_alarm_time"].state.slice(3, 5)) ? parseInt(entities["sensor.clock_stacey_alarm_time"].state.slice(3, 5)): "00"}'
|
||||
|
||||
rules:
|
||||
|
||||
- element: floorplan.clock_button
|
||||
action:
|
||||
service: floorplan.page_navigate
|
||||
data:
|
||||
page_id: clock
|
||||
|
||||
- entity: sensor.clock_stacey_alarm_time
|
||||
text_template: '${entity.state ? entity.state.slice(0, 5) : "00:00"}'
|
||||
|
||||
- entities:
|
||||
- floorplan.hours
|
||||
- floorplan.minutes
|
||||
text_template: '${("0" + entity.state).slice(-2)}'
|
||||
|
||||
- entity: floorplan.hours
|
||||
element: input_number.alarm_time_hours_up
|
||||
action:
|
||||
service: floorplan.variable_set
|
||||
data:
|
||||
variable: floorplan.hours
|
||||
value_template: '${(parseInt(entity.state) + 1) % 24}'
|
||||
|
||||
- entity: floorplan.hours
|
||||
element: input_number.alarm_time_hours_down
|
||||
action:
|
||||
service: floorplan.variable_set
|
||||
data:
|
||||
variable: floorplan.hours
|
||||
value_template: '${((parseInt(entity.state) - 1) + 24) % 24}'
|
||||
|
||||
- entity: floorplan.minutes
|
||||
element: input_number.alarm_time_minutes_up
|
||||
action:
|
||||
service: floorplan.variable_set
|
||||
data:
|
||||
variable: floorplan.minutes
|
||||
value_template: '${((parseInt(entity.state / 5) * 5) + 5) % 60}'
|
||||
|
||||
- entity: floorplan.minutes
|
||||
element: input_number.alarm_time_minutes_down
|
||||
action:
|
||||
service: floorplan.variable_set
|
||||
data:
|
||||
variable: floorplan.minutes
|
||||
value_template: '${(((parseInt(entity.state / 5) * 5) - 5) + 60) % 60}'
|
||||
|
||||
- element: floorplan.save_alarm_time_button
|
||||
action:
|
||||
service: mqtt.publish
|
||||
data: '{
|
||||
"payload": "${(("0" + (parseInt((entities[`floorplan.hours`].state).slice(-2)) + 24) % 24)).slice(-2)}:${("0" + (((parseInt(entities[`floorplan.minutes`].state) / 5) * 5) % 60)).slice(-2)}",
|
||||
"topic": "clock/stacey_alarm_time",
|
||||
"retain": true
|
||||
}'
|
||||
|
||||
- entity: input_boolean.clock_snooze
|
||||
image_template: '/local/custom_ui/floorplan/buttons/${(entity.state === "on") ? "snooze_on" : "snooze"}.svg'
|
||||
action:
|
||||
service: homeassistant.toggle
|
||||
|
||||
- entity: input_boolean.school_mode
|
||||
image_template: '/local/custom_ui/floorplan/buttons/${(entity.state === "on") ? "school_on" : "school_off"}.svg'
|
||||
action:
|
||||
service: homeassistant.toggle
|
||||
|
||||
- entity: media_player.alarm_clock
|
||||
image_template: '/local/custom_ui/floorplan/buttons/${(entity.state === "playing") ? "stop" : "radio_on"}.svg'
|
||||
action:
|
||||
service: '${(entity.state === "playing") ? "media_player.media_stop" : "media_player.play_media"}'
|
||||
data:
|
||||
media_content_id: http://listen.djcmedia.com:80/americascountryhigh
|
||||
media_content_type: audio/mp4
|
||||
|
||||
- name: temp_darksky
|
||||
entities:
|
||||
- sensor.pirateweather_temperature
|
||||
text_template: '${entity.state ? Math.ceil(entity.state) + "°": "undefined"}'
|
||||
class_template: 'return "static-temp";'
|
||||
|
||||
- name: text_states
|
||||
entities:
|
||||
- sensor.pirateweather_minutely_summary
|
||||
text_template: '${entity.state ? entity.state : "undefined"}'
|
||||
class_template: 'return "static-text";'
|
||||
|
||||
- name: text_font_date
|
||||
entities:
|
||||
- sensor.clock_date
|
||||
- sensor.clock_day
|
||||
hover_over: false
|
||||
more_info: false
|
||||
text_template: '${entity.state ? entity.state : "undefined"}'
|
||||
class_template: 'return "static-text-date";'
|
||||
|
||||
- name: text_font_time
|
||||
entities:
|
||||
- sensor.clock_time
|
||||
hover_over: false
|
||||
more_info: false
|
||||
text_template: '${entity.state ? entity.state : "undefined"}'
|
||||
class_template: 'return "static-text-time";'
|
||||
|
||||
- name: Dark Sky Sensors
|
||||
entities:
|
||||
- entity: sensor.pirateweather_minutely_summary
|
||||
element: sensor.pirateweather_minutely_summary_icon
|
||||
|
||||
image_template: '
|
||||
var imageName = "";
|
||||
|
||||
switch (entity.attributes.entity_picture) {
|
||||
case "/static/images/darksky/weather-sunny.svg":
|
||||
imageName = "sunny-1";
|
||||
break;
|
||||
|
||||
case "/static/images/darksky/weather-night.svg":
|
||||
imageName = "night-1";
|
||||
break;
|
||||
|
||||
case "/static/images/darksky/weather-partlycloudy.svg":
|
||||
imageName = "partlycloudy-day-1";
|
||||
break;
|
||||
|
||||
case "/static/images/darksky/weather-cloudy.svg":
|
||||
imageName = "partlycloudy-night-1";
|
||||
break;
|
||||
|
||||
case "/static/images/darksky/weather-cloudy.svg":
|
||||
imageName = "cloudy-day-1";
|
||||
break;
|
||||
|
||||
case "/static/images/darksky/weather-pouring.svg":
|
||||
imageName = "thunder";
|
||||
break;
|
||||
|
||||
case "/static/images/darksky/weather-snowy.svg":
|
||||
imageName = "snowy-day-1";
|
||||
break;
|
||||
}
|
||||
|
||||
return "/local/custom_ui/floorplan/images/weather/" + imageName + ".svg";
|
||||
'
|
||||
|
||||
- name: Camera Images
|
||||
entities:
|
||||
- camera.front_door
|
||||
image_template: '${entity.attributes.entity_picture}'
|
||||
@ -1,19 +0,0 @@
|
||||
## This is the main Floorplan configuration page. To define the pages.
|
||||
## This one is called Floorclock since this is for my Clock application.
|
||||
## log_level: which can be set to one these: error, warning, info or debug
|
||||
|
||||
date_format: MMM-DD-YYYY
|
||||
#log_level: debug
|
||||
|
||||
fully_kiosk:
|
||||
|
||||
- name: Alarm Clock
|
||||
address: 00:FC:8B:4A:D5:CF
|
||||
motion_sensor: binary_sensor.clock_motion
|
||||
plugged_sensor: binary_sensor.clock_plugged
|
||||
screensaver_light: light.clock_screensaver
|
||||
media_player: media_player.alarm_clock
|
||||
|
||||
pages:
|
||||
- /local/custom_ui/floorplan/clock.yaml
|
||||
- /local/custom_ui/floorplan/clock_config.yaml
|
||||
@ -1,21 +0,0 @@
|
||||
date_format: MMM-DD-YYYY
|
||||
#log_level: debug
|
||||
|
||||
fully_kiosk:
|
||||
|
||||
- name: Bedroom Alarm Panel
|
||||
address: B4:7C:9C:9E:85:90
|
||||
motion_sensor: binary_sensor.bedroom_motion
|
||||
plugged_sensor: binary_sensor.bedroom_plugged
|
||||
screensaver_light: light.bedroom_screensaver
|
||||
media_player: media_player.bedroom_alarm_panel
|
||||
|
||||
# - name: Entry Alarm Panel
|
||||
# address: 00:FC:8B:4A:D5:CF
|
||||
# entities:
|
||||
# - binary_sensor.entry_motion
|
||||
# - binary_sensor.entry_plugged
|
||||
# - media_player.entry_alarm_panel
|
||||
|
||||
pages:
|
||||
- /local/custom_ui/floorplan/alarm.yaml
|
||||
|
Before Width: | Height: | Size: 1.4 MiB |
@ -1,207 +0,0 @@
|
||||
<!--
|
||||
Floorplan for Home Assistant
|
||||
Version: 1.0.8.3
|
||||
By Petar Kozul
|
||||
https://github.com/ExperienceLovelace/ha-floorplan
|
||||
-->
|
||||
|
||||
<script src="lib/jquery-3.3.1.min.js"></script>
|
||||
<script src="lib/moment.min.js"></script>
|
||||
<script src="lib/yaml.min.js"></script>
|
||||
|
||||
<!-- As documented here for Google Chrome, removes the need for touchstart -->
|
||||
<meta name="viewport" content="width=device-width">
|
||||
|
||||
<dom-module id="ha-floorplan">
|
||||
|
||||
<template>
|
||||
<style>
|
||||
#floorplan {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.loading-container {
|
||||
text-align: center;
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
.loading {
|
||||
height: 0px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
#log {
|
||||
max-height: 150px;
|
||||
overflow: auto;
|
||||
background-color: #eee;
|
||||
display: none;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
#log ul {
|
||||
list-style-type: none;
|
||||
padding-left: 0px;
|
||||
}
|
||||
|
||||
.error {
|
||||
color: #FF0000;
|
||||
}
|
||||
|
||||
.warning {
|
||||
color: #FF851B;
|
||||
}
|
||||
|
||||
.info {
|
||||
color: #0000FF;
|
||||
}
|
||||
|
||||
.debug {
|
||||
color: #000000;
|
||||
}
|
||||
</style>
|
||||
|
||||
<template is='dom-if' if='[[isLoading]]'>
|
||||
<div class='loading-container'>
|
||||
<paper-spinner active alt='Loading'></paper-spinner>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<div id="log">
|
||||
<a href="#" onclick="$(this).siblings('ul').html('').parent().css('display', 'none');">Clear log</a>
|
||||
<ul></ul>
|
||||
</div>
|
||||
|
||||
<div id="floorplan" on-tap="stopPropagation"></div>
|
||||
|
||||
</template>
|
||||
|
||||
</dom-module>
|
||||
|
||||
<script>
|
||||
class HaFloorplan extends Polymer.Element {
|
||||
static get is() { return 'ha-floorplan'; }
|
||||
|
||||
static get properties() {
|
||||
return {
|
||||
hass: {
|
||||
type: Object,
|
||||
observer: 'hassChanged'
|
||||
},
|
||||
inDialog: {
|
||||
type: Boolean,
|
||||
value: false,
|
||||
},
|
||||
isPanel: {
|
||||
type: Boolean,
|
||||
value: false,
|
||||
},
|
||||
config: {
|
||||
type: Object,
|
||||
},
|
||||
isLoading: {
|
||||
type: Boolean,
|
||||
value: true,
|
||||
},
|
||||
flooplan: {
|
||||
type: Object,
|
||||
value: undefined,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
connectedCallback() {
|
||||
super.connectedCallback();
|
||||
|
||||
if (!this.floorplan) {
|
||||
this.initFloorplan();
|
||||
}
|
||||
}
|
||||
|
||||
stopPropagation(e) {
|
||||
e.stopPropagation();
|
||||
}
|
||||
|
||||
initFloorplan() {
|
||||
this.loadScript('/local/custom_ui/floorplan/lib/floorplan.js')
|
||||
.then(() => {
|
||||
this.floorplan = new Floorplan();
|
||||
|
||||
let options = {
|
||||
doc: this.root,
|
||||
hass: this.hass,
|
||||
openMoreInfo: this.openMoreInfo.bind(this),
|
||||
setIsLoading: this.setIsLoading.bind(this),
|
||||
config: (this.config && this.config.config) || this.config,
|
||||
};
|
||||
|
||||
this.floorplan.init(options)
|
||||
.then(() => {
|
||||
this.setIsLoading(false);
|
||||
});
|
||||
})
|
||||
.catch((error) => {
|
||||
this.setIsLoading(false);
|
||||
this.logError(error);
|
||||
});
|
||||
}
|
||||
|
||||
hassChanged(newHass, oldHass) {
|
||||
if (this.floorplan) {
|
||||
this.floorplan.hassChanged(newHass, oldHass);
|
||||
}
|
||||
}
|
||||
|
||||
loadScript(scriptUrl) {
|
||||
return new Promise((resolve, reject) => {
|
||||
let script = document.createElement('script');
|
||||
script.src = this.cacheBuster(scriptUrl);
|
||||
script.onload = () => {
|
||||
return resolve();
|
||||
};
|
||||
script.onerror = (err) => {
|
||||
reject(new URIError(`${err.target.src}`));
|
||||
};
|
||||
|
||||
this.root.appendChild(script);
|
||||
});
|
||||
}
|
||||
|
||||
openMoreInfo(entityId) {
|
||||
this.fire('hass-more-info', { entityId: entityId });
|
||||
}
|
||||
|
||||
setIsLoading(isLoading) {
|
||||
this.isLoading = isLoading;
|
||||
}
|
||||
|
||||
cacheBuster(url) {
|
||||
return `${url}${(url.indexOf('?') >= 0) ? '&' : '?'}_=${new Date().getTime()}`;
|
||||
}
|
||||
|
||||
logError(message) {
|
||||
console.error(message);
|
||||
|
||||
let log = this.root.log;
|
||||
$(log).find('ul').prepend(`<li class="error">${message}</li>`)
|
||||
$(log).css('display', 'block');
|
||||
}
|
||||
|
||||
fire(type, detail, options) {
|
||||
options = options || {};
|
||||
detail = (detail === null || detail === undefined) ? {} : detail;
|
||||
const event = new Event(type, {
|
||||
bubbles: options.bubbles === undefined ? true : options.bubbles,
|
||||
cancelable: Boolean(options.cancelable),
|
||||
composed: options.composed === undefined ? true : options.composed
|
||||
});
|
||||
event.detail = detail;
|
||||
const node = options.node || this;
|
||||
node.dispatchEvent(event);
|
||||
return event;
|
||||
}
|
||||
}
|
||||
|
||||
customElements.define(HaFloorplan.is, HaFloorplan);
|
||||
|
||||
</script>
|
||||
|
Before Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 675 B |
|
Before Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 6.1 KiB |
|
Before Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 3.5 KiB |
|
Before Width: | Height: | Size: 3.5 KiB |
|
Before Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 34 KiB |
|
Before Width: | Height: | Size: 641 B |
|
Before Width: | Height: | Size: 3.2 KiB |
|
Before Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 306 KiB |
|
Before Width: | Height: | Size: 4.7 KiB |
|
Before Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 8.6 KiB |
|
Before Width: | Height: | Size: 53 KiB |
|
Before Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 808 B |
|
Before Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 119 KiB |
|
Before Width: | Height: | Size: 861 B |
|
Before Width: | Height: | Size: 842 B |
|
Before Width: | Height: | Size: 6.9 KiB |
|
Before Width: | Height: | Size: 3.9 KiB |
|
Before Width: | Height: | Size: 898 B |
|
Before Width: | Height: | Size: 726 KiB |
|
Before Width: | Height: | Size: 784 B |
|
Before Width: | Height: | Size: 10 MiB |
|
Before Width: | Height: | Size: 1.2 MiB |
|
Before Width: | Height: | Size: 1.6 MiB |
|
Before Width: | Height: | Size: 888 KiB |
|
Before Width: | Height: | Size: 997 B |
|
Before Width: | Height: | Size: 922 KiB |
|
Before Width: | Height: | Size: 954 KiB |
|
Before Width: | Height: | Size: 1023 KiB |
|
Before Width: | Height: | Size: 650 B |
|
Before Width: | Height: | Size: 3.9 KiB |
@ -1,63 +0,0 @@
|
||||
<h1 align="center">
|
||||
<a name="logo" href="https://www.vCloudInfo.com/tag/iot"><img src="https://raw.githubusercontent.com/CCOSTAN/Home-AssistantConfig/master/config/www/custom_ui/floorplan/images/branding/twitter_profile.png" alt="Bear Stone Smart Home" width="200"></a>
|
||||
<br>
|
||||
Bear Stone Smart Home Documentation
|
||||
</h1>
|
||||
<h4 align="center">Be sure to :star: my configuration repo so you can keep up to date on any daily progress!</h4>
|
||||
<div align="center">
|
||||
|
||||
[](https://x.com/ccostan)
|
||||
[](https://www.youtube.com/vCloudInfo?sub_confirmation=1)
|
||||
[](https://github.com/CCOSTAN)
|
||||
<h4>
|
||||
<a href="https://github.com/CCOSTAN/Home-AssistantConfig/commits/master"><img src="https://img.shields.io/github/last-commit/CCOSTAN/Home-AssistantConfig.svg?style=plasticr"/></a>
|
||||
<a href="https://github.com/CCOSTAN/Home-AssistantConfig/commits/master"><img src="https://img.shields.io/github/commit-activity/y/CCOSTAN/Home-AssistantConfig.svg?style=plasticr"/></a>
|
||||
</h4>
|
||||
</div>
|
||||
<p align="center"><a align="center" target="_blank" href="https://vcloudinfo.us12.list-manage.com/subscribe?u=45cab4343ffdbeb9667c28a26&id=e01847e94f"><img src="https://feeds.feedburner.com/RecentCommitsToBearStoneHA.1.gif" alt="Recent Commits to Bear Stone Smart Home" style="border:0"></a></p>
|
||||
<div align="center"><a name="menu"></a>
|
||||
<h4>
|
||||
<a href="https://www.vCloudInfo.com/tag/iot">
|
||||
Blog
|
||||
</a>
|
||||
<span> | </span>
|
||||
<a href="https://github.com/CCOSTAN/Home-AssistantConfig#devices">
|
||||
Devices
|
||||
</a>
|
||||
<span> | </span>
|
||||
<a href="https://github.com/CCOSTAN/Home-AssistantConfig/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc">
|
||||
Todo List
|
||||
</a>
|
||||
<span> | </span>
|
||||
<a href="https://x.com/BearStoneHA">
|
||||
Smart Home Stats
|
||||
</a>
|
||||
<span> | </span>
|
||||
<a href="https://www.vcloudinfo.com/click-here">
|
||||
Follow Me
|
||||
</a>
|
||||
<span> | </span>
|
||||
<a href="https://github.com/CCOSTAN/Home-AssistantConfig/tree/master/config">
|
||||
Code
|
||||
</a>
|
||||
<span> | </span>
|
||||
<a href="https://github.com/CCOSTAN/Home-AssistantConfig#diagram">
|
||||
Diagram
|
||||
</a>
|
||||
<span> | </span>
|
||||
<a href="https://youtube.com/vCloudInfo">
|
||||
Youtube
|
||||
</a>
|
||||
<span> | </span>
|
||||
<a href="https://amzn.to/2HXSx2M">
|
||||
Support
|
||||
</a>
|
||||
</h4>
|
||||
|
||||
<a name="bottom" href="https://github.com/CCOSTAN/Home-AssistantConfig#logo"><img align="right" border="0" src="https://raw.githubusercontent.com/CCOSTAN/Home-AssistantConfig/master/config/www/custom_ui/floorplan/images/branding/up_arrow.png" width="25" ></a>
|
||||
|
||||
**Still have questions on my Config?** <br>
|
||||
**Message me on X :** [](https://www.x.com/ccostan) or [](https://www.x.com/BearStoneHA)
|
||||
<!-- Subscribe Section -->
|
||||
<a href="https://eepurl.com/dmXFYz"><img align="center" border="0" src="https://raw.githubusercontent.com/CCOSTAN/Home-AssistantConfig/master/config/www/custom_ui/floorplan/images/branding/email_link.png" height="50" ></a>.
|
||||
<!-- Subscribe Section END-->
|
||||
|
Before Width: | Height: | Size: 731 KiB |
|
Before Width: | Height: | Size: 14 KiB |
|
Before Width: | Height: | Size: 348 KiB |
|
Before Width: | Height: | Size: 5.4 KiB |
|
Before Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 2.0 MiB |
|
Before Width: | Height: | Size: 579 KiB |
|
Before Width: | Height: | Size: 1.1 MiB |
|
Before Width: | Height: | Size: 976 KiB |
|
Before Width: | Height: | Size: 1.8 MiB |
|
Before Width: | Height: | Size: 252 KiB |
|
Before Width: | Height: | Size: 276 KiB |
|
Before Width: | Height: | Size: 1018 KiB |
|
Before Width: | Height: | Size: 702 KiB |
|
Before Width: | Height: | Size: 521 KiB |
|
Before Width: | Height: | Size: 1.7 MiB |
|
Before Width: | Height: | Size: 801 KiB |