Compare commits
No commits in common. "next" and "master" have entirely different histories.
4675 changed files with 599401 additions and 134545 deletions
|
@ -1,22 +0,0 @@
|
|||
; This file is for unifying the coding style for different editors and IDEs.
|
||||
; More information at http://EditorConfig.org
|
||||
|
||||
root = true
|
||||
|
||||
; Use 2 spaces for indentation in all Ruby files
|
||||
|
||||
[*.rb]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
|
||||
[Rakefile]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
|
||||
[Gemfile*]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
|
||||
[config.ru]
|
||||
indent_style = space
|
||||
indent_size = 2
|
1
.gitattributes
vendored
1
.gitattributes
vendored
|
@ -1 +0,0 @@
|
|||
* text=auto
|
11
.github/PULL_REQUEST_TEMPLATE.md
vendored
11
.github/PULL_REQUEST_TEMPLATE.md
vendored
|
@ -1,11 +0,0 @@
|
|||
**Description:**
|
||||
|
||||
|
||||
**Pull request in [home-assistant](https://github.com/home-assistant/home-assistant) (if applicable):** home-assistant/home-assistant#<home-assistant PR number goes here>
|
||||
|
||||
## Checklist:
|
||||
|
||||
- [ ] Branch: Fixes, changes and adjustments should be created against `current`. New documentation for platforms/components and features should go to `next`.
|
||||
- [ ] The documentation follow the [standards][standards].
|
||||
|
||||
[standards]: https://home-assistant.io/developers/documentation/standards/
|
13
.github/move.yml
vendored
13
.github/move.yml
vendored
|
@ -1,13 +0,0 @@
|
|||
# Configuration for move-issues - https://github.com/dessant/move-issues
|
||||
|
||||
# Delete the command comment. Ignored when the comment also contains other content
|
||||
deleteCommand: true
|
||||
# Close the source issue after moving
|
||||
closeSourceIssue: true
|
||||
# Lock the source issue after moving
|
||||
lockSourceIssue: false
|
||||
# Set custom aliases for targets
|
||||
# aliases:
|
||||
# r: repo
|
||||
# or: owner/repo
|
||||
|
17
.github/stale.yml
vendored
17
.github/stale.yml
vendored
|
@ -1,17 +0,0 @@
|
|||
# Number of days of inactivity before an issue becomes stale
|
||||
daysUntilStale: 60
|
||||
# Number of days of inactivity before a stale issue is closed
|
||||
daysUntilClose: 7
|
||||
# Issues with these labels will never be considered stale
|
||||
#exemptLabels:
|
||||
# - pinned
|
||||
# - security
|
||||
# Label to use when marking an issue as stale
|
||||
staleLabel: Stale
|
||||
# Comment to post when marking an issue as stale. Set to `false` to disable
|
||||
markComment: >
|
||||
This issue has been automatically marked as stale because it has not had
|
||||
recent activity. It will be closed if no further activity occurs. Thank you
|
||||
for your contributions.
|
||||
# Comment to post when closing a stale issue. Set to `false` to disable
|
||||
closeComment: false
|
21
.gitignore
vendored
21
.gitignore
vendored
|
@ -1,21 +0,0 @@
|
|||
.bundle
|
||||
.DS_Store
|
||||
.sass-cache
|
||||
.gist-cache
|
||||
.pygments-cache
|
||||
public
|
||||
sass.old
|
||||
source.old
|
||||
source/_stash
|
||||
source/stylesheets/screen.css
|
||||
vendor
|
||||
node_modules
|
||||
source/.jekyll-metadata
|
||||
*.iml
|
||||
.idea/
|
||||
/.vs/home-assistant.github.io/v15/.suo
|
||||
/.vs/ProjectSettings.json
|
||||
/.vs/slnx.sqlite
|
||||
/.vs/config/applicationhost.config
|
||||
/.vs/slnx.sqlite-journal
|
||||
/.vs/VSWorkspaceState.json
|
3
.gitmodules
vendored
3
.gitmodules
vendored
|
@ -1,3 +0,0 @@
|
|||
[submodule "_deploy"]
|
||||
path = _deploy
|
||||
url = https://github.com/home-assistant/home-assistant.github.io.git
|
BIN
.jekyll-metadata
Normal file
BIN
.jekyll-metadata
Normal file
Binary file not shown.
5
.powrc
5
.powrc
|
@ -1,5 +0,0 @@
|
|||
if [ -f "$rvm_path/scripts/rvm" ] && [ -f ".rvmrc" ] ; then
|
||||
source "$rvm_path/scripts/rvm"
|
||||
source ".rvmrc"
|
||||
fi
|
||||
|
11
.project
11
.project
|
@ -1,11 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>home-assistant.github.io</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
</natures>
|
||||
</projectDescription>
|
|
@ -1 +0,0 @@
|
|||
2.4.3
|
|
@ -1,3 +0,0 @@
|
|||
plugins
|
||||
sass
|
||||
source
|
|
@ -1,44 +0,0 @@
|
|||
; This file is for unifying the coding style for different editors and IDEs.
|
||||
; More information at http://EditorConfig.org
|
||||
|
||||
|
||||
; Use 2 spaces for indentation in SCSS, JavaScript, HTML, and XML
|
||||
|
||||
[*.scss]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
|
||||
[*.js]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
|
||||
[*.html]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
|
||||
[*.xml]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
|
||||
|
||||
; Use 4 spaces for indentation in Markdown files
|
||||
|
||||
[*.md]
|
||||
indent_style = space
|
||||
indent_size = 4
|
||||
|
||||
[*.markdown]
|
||||
indent_style = space
|
||||
indent_size = 4
|
||||
|
||||
|
||||
; Override default indentation for some library files
|
||||
|
||||
[jwplayer/glow/glow.xml]
|
||||
indent_style = tab
|
||||
|
||||
[libs/jXHR.js]
|
||||
indent_style = tab
|
||||
|
||||
[libs/swfobject-dynamic.js]
|
||||
indent_style = tab
|
|
@ -1,5 +0,0 @@
|
|||
@import "base/utilities";
|
||||
@import "base/solarized";
|
||||
@import "base/theme";
|
||||
@import "base/typography";
|
||||
@import "base/layout";
|
|
@ -1,8 +0,0 @@
|
|||
@import "partials/header";
|
||||
@import "partials/navigation";
|
||||
@import "partials/blog";
|
||||
@import "partials/sharing";
|
||||
@import "partials/syntax";
|
||||
@import "partials/archive";
|
||||
@import "partials/sidebar";
|
||||
@import "partials/footer";
|
|
@ -1,192 +0,0 @@
|
|||
$max-width: 1200px !default;
|
||||
|
||||
// Padding used for layout margins
|
||||
$pad-min: 18px !default;
|
||||
$pad-narrow: 25px !default;
|
||||
$pad-medium: 35px !default;
|
||||
$pad-wide: 55px !default;
|
||||
|
||||
// Sidebar widths used in media queries
|
||||
$sidebar-width-medium: 240px !default;
|
||||
$sidebar-pad-medium: 15px !default;
|
||||
$sidebar-pad-wide: 20px !default;
|
||||
$sidebar-width-wide: 300px !default;
|
||||
|
||||
$indented-lists: false !default;
|
||||
|
||||
$header-font-size: 1em !default;
|
||||
$header-padding-top: 1.5em !default;
|
||||
$header-padding-bottom: 1.5em !default;
|
||||
|
||||
.group { @include pie-clearfix; }
|
||||
|
||||
@mixin collapse-sidebar {
|
||||
float: none;
|
||||
width: auto;
|
||||
clear: left;
|
||||
margin: 0;
|
||||
padding: 0 $pad-medium 1px;
|
||||
background-color: lighten($sidebar-bg, 2);
|
||||
border-top: 1px solid lighten($sidebar-border, 4);
|
||||
section {
|
||||
&.odd, &.even { float: left; width: 48%; }
|
||||
&.odd { margin-left: 0; }
|
||||
&.even { margin-left: 4%; }
|
||||
}
|
||||
&.thirds section {
|
||||
width: 30%;
|
||||
margin-left: 5%;
|
||||
&.first {
|
||||
margin-left: 0;
|
||||
clear: both;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
body {
|
||||
-webkit-text-size-adjust: none;
|
||||
max-width: $max-width;
|
||||
position: relative;
|
||||
margin: 0 auto;
|
||||
> header, > nav, > footer, #content > article, #content > div > article, #content > div > section {
|
||||
@extend .group;
|
||||
padding-left: $pad-min;
|
||||
padding-right: $pad-min;
|
||||
@media only screen and (min-width: 480px) {
|
||||
padding-left: $pad-narrow;
|
||||
padding-right: $pad-narrow;
|
||||
}
|
||||
@media only screen and (min-width: 768px) {
|
||||
padding-left: $pad-medium;
|
||||
padding-right: $pad-medium;
|
||||
}
|
||||
@media only screen and (min-width: 992px) {
|
||||
padding-left: $pad-wide;
|
||||
padding-right: $pad-wide;
|
||||
}
|
||||
}
|
||||
div.pagination {
|
||||
@extend .group;
|
||||
margin-left: $pad-min;
|
||||
margin-right: $pad-min;
|
||||
@media only screen and (min-width: 480px) {
|
||||
margin-left: $pad-narrow;
|
||||
margin-right: $pad-narrow;
|
||||
}
|
||||
@media only screen and (min-width: 768px) {
|
||||
margin-left: $pad-medium;
|
||||
margin-right: $pad-medium;
|
||||
}
|
||||
@media only screen and (min-width: 992px) {
|
||||
margin-left: $pad-wide;
|
||||
margin-right: $pad-wide;
|
||||
}
|
||||
}
|
||||
> header {
|
||||
font-size: $header-font-size;
|
||||
padding-top: $header-padding-top;
|
||||
padding-bottom: $header-padding-bottom;
|
||||
}
|
||||
}
|
||||
|
||||
#content {
|
||||
overflow: hidden;
|
||||
> div, > article { width: 100%; }
|
||||
}
|
||||
|
||||
aside.sidebar {
|
||||
float: none;
|
||||
padding: 0 $pad-min 1px;
|
||||
background-color: lighten($sidebar-bg, 2);
|
||||
border-top: 1px solid $sidebar-border;
|
||||
@extend .group;
|
||||
}
|
||||
|
||||
.flex-content { max-width: 100%; height: auto; }
|
||||
|
||||
.basic-alignment {
|
||||
&.left { float: left; margin-right: 1.5em; }
|
||||
&.right { float: right; margin-left: 1.5em; }
|
||||
&.center { display:block; margin: 0 auto 1.5em; }
|
||||
&.left, &.right { margin-bottom: .8em; }
|
||||
}
|
||||
|
||||
.toggle-sidebar { &, .no-sidebar & { display: none; }}
|
||||
|
||||
body.sidebar-footer {
|
||||
@media only screen and (min-width: 750px) {
|
||||
aside.sidebar{ @include collapse-sidebar; }
|
||||
}
|
||||
#content { margin-right: 0px; }
|
||||
.toggle-sidebar { display: none; }
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 550px) {
|
||||
body > header { font-size: $header-font-size; }
|
||||
}
|
||||
@media only screen and (min-width: 750px) {
|
||||
aside.sidebar { @include collapse-sidebar; }
|
||||
}
|
||||
#main, #content, .sidebar {
|
||||
@extend .group;
|
||||
}
|
||||
@media only screen and (min-width: 768px) {
|
||||
body { -webkit-text-size-adjust: auto; }
|
||||
body > header { font-size: $header-font-size * 1.2; }
|
||||
#main {
|
||||
padding: 0;
|
||||
margin: 0 auto;
|
||||
}
|
||||
#content {
|
||||
overflow: visible;
|
||||
margin-right: $sidebar-width-medium;
|
||||
position: relative;
|
||||
.no-sidebar & { margin-right: 0; border-right: 0; }
|
||||
.collapse-sidebar & { margin-right: 20px; }
|
||||
> div, > article {
|
||||
padding-top: $pad-medium/2;
|
||||
padding-bottom: $pad-medium/2;
|
||||
float: left;
|
||||
}
|
||||
}
|
||||
aside.sidebar {
|
||||
width: $sidebar-width-medium - $sidebar-pad-medium*2;
|
||||
padding: 0 $sidebar-pad-medium $sidebar-pad-medium;
|
||||
background: none;
|
||||
clear: none;
|
||||
float: left;
|
||||
margin: 0 -100% 0 0;
|
||||
section {
|
||||
width: auto; margin-left: 0;
|
||||
&.odd, &.even { float: none; width: auto; margin-left: 0; }
|
||||
}
|
||||
.collapse-sidebar & {
|
||||
@include collapse-sidebar;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 992px) {
|
||||
body > header { font-size: $header-font-size * 1.3; }
|
||||
#content { margin-right: $sidebar-width-wide; }
|
||||
#content {
|
||||
> div, > article {
|
||||
padding-top: $pad-wide/2;
|
||||
padding-bottom: $pad-wide/2;
|
||||
}
|
||||
}
|
||||
aside.sidebar {
|
||||
width: $sidebar-width-wide - $sidebar-pad-wide*2;
|
||||
padding: 1.2em $sidebar-pad-wide $sidebar-pad-wide;
|
||||
.collapse-sidebar & {
|
||||
padding: { left: $pad-wide; right: $pad-wide; }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@if $indented-lists == false {
|
||||
@media only screen and (min-width: 768px) {
|
||||
ul, ol { margin-left: 0; }
|
||||
}
|
||||
}
|
||||
|
|
@ -1,46 +0,0 @@
|
|||
$base03: #002b36 !default; //darkest blue
|
||||
$base02: #073642 !default; //dark blue
|
||||
$base01: #586e75 !default; //darkest gray
|
||||
$base00: #657b83 !default; //dark gray
|
||||
$base0: #839496 !default; //medium gray
|
||||
$base1: #93a1a1 !default; //medium light gray
|
||||
$base2: #eee8d5 !default; //cream
|
||||
$base3: #fdf6e3 !default; //white
|
||||
$solar-yellow: #b58900 !default;
|
||||
$solar-orange: #cb4b16 !default;
|
||||
$solar-red: #dc322f !default;
|
||||
$solar-magenta: #d33682 !default;
|
||||
$solar-violet: #6c71c4 !default;
|
||||
$solar-blue: #268bd2 !default;
|
||||
$solar-cyan: #2aa198 !default;
|
||||
$solar-green: #859900 !default;
|
||||
|
||||
$solarized: dark !default;
|
||||
|
||||
@if $solarized == light {
|
||||
|
||||
$_base03: $base03;
|
||||
$_base02: $base02;
|
||||
$_base01: $base01;
|
||||
$_base00: $base00;
|
||||
$_base0: $base0;
|
||||
$_base1: $base1;
|
||||
$_base2: $base2;
|
||||
$_base3: $base3;
|
||||
|
||||
$base03: $_base3;
|
||||
$base02: $_base2;
|
||||
$base01: $_base1;
|
||||
$base00: $_base0;
|
||||
$base0: $_base00;
|
||||
$base1: $_base01;
|
||||
$base2: $_base02;
|
||||
$base3: $_base03;
|
||||
}
|
||||
|
||||
/* non highlighted code colors */
|
||||
$pre-bg: $base03 !default;
|
||||
$pre-border: darken($base02, 5) !default;
|
||||
$pre-color: $base1 !default;
|
||||
|
||||
|
|
@ -1,85 +0,0 @@
|
|||
$noise-bg: image-url('noise.png') top left !default;
|
||||
$img-border: inline-image('dotted-border.png') !default;
|
||||
|
||||
// Main Link Colors
|
||||
$link-color: lighten(#165b94, 3) !default;
|
||||
$link-color-hover: adjust-color($link-color, $lightness: 10, $saturation: 25) !default;
|
||||
$link-color-visited: adjust-color($link-color, $hue: 80, $lightness: -4) !default;
|
||||
$link-color-active: adjust-color($link-color-hover, $lightness: -15) !default;
|
||||
|
||||
// Main Section Colors
|
||||
$main-bg: #f8f8f8 !default;
|
||||
$page-bg: #252525 !default;
|
||||
$article-border: #eeeeee !default;
|
||||
|
||||
$header-bg: #333 !default;
|
||||
$header-border: lighten($header-bg, 15) !default;
|
||||
$title-color: #f2f2f2 !default;
|
||||
$subtitle-color: #aaa !default;
|
||||
|
||||
$text-color: #222 !default;
|
||||
$text-color-light: #aaa !default;
|
||||
$type-border: #ddd !default;
|
||||
|
||||
/* Navigation */
|
||||
$nav-bg: #ccc !default;
|
||||
$nav-bg-front: image-url('noise.png') !default;
|
||||
$nav-bg-back: linear-gradient(lighten($nav-bg, 8), $nav-bg, darken($nav-bg, 11)) !default;
|
||||
$nav-color: darken($nav-bg, 38) !default;
|
||||
$nav-color-hover: darken($nav-color, 25) !default;
|
||||
$nav-placeholder: desaturate(darken($nav-bg, 10), 15) !default;
|
||||
$nav-border: darken($nav-bg, 10) !default;
|
||||
$nav-border-top: lighten($nav-bg, 15) !default;
|
||||
$nav-border-bottom: darken($nav-bg, 25) !default;
|
||||
$nav-border-left: darken($nav-bg, 11) !default;
|
||||
$nav-border-right: lighten($nav-bg, 7) !default;
|
||||
|
||||
/* Sidebar colors */
|
||||
$sidebar-bg: #f2f2f2 !default;
|
||||
$sidebar-link-color: $text-color !default;
|
||||
$sidebar-link-color-hover: $link-color-hover !default;
|
||||
$sidebar-link-color-active: $link-color-active !default;
|
||||
$sidebar-color: change-color(mix($text-color, $sidebar-bg, 80), $hue: hue($sidebar-bg), $saturation: saturation($sidebar-bg)/2) !default;
|
||||
$sidebar-border: desaturate(darken($sidebar-bg, 7), 10) !default;
|
||||
$sidebar-border-hover: darken($sidebar-bg, 7) !default;
|
||||
$sidebar-link-color-subdued: lighten($sidebar-color, 20) !default;
|
||||
$sidebar-link-color-subdued-hover: $sidebar-link-color-hover !default;
|
||||
|
||||
$footer-color: #888 !default;
|
||||
$footer-bg: #ccc !default;
|
||||
$footer-bg-front: image-url('noise.png') !default;
|
||||
$footer-bg-back: linear-gradient(lighten($footer-bg, 8), $footer-bg, darken($footer-bg, 11)) !default;
|
||||
$footer-color: darken($footer-bg, 38) !default;
|
||||
$footer-color-hover: darken($footer-color, 10) !default;
|
||||
$footer-border-top: lighten($footer-bg, 15) !default;
|
||||
$footer-border-bottom: darken($footer-bg, 15) !default;
|
||||
$footer-link-color: darken($footer-bg, 38) !default;
|
||||
$footer-link-color-hover: darken($footer-color, 25) !default;
|
||||
$page-border-bottom: darken($footer-bg, 5) !default;
|
||||
|
||||
|
||||
/* Core theme application */
|
||||
|
||||
a {
|
||||
@include link-colors($link-color, $hover: $link-color-hover, $focus: $link-color-hover, $visited: $link-color-visited, $active: $link-color-active);
|
||||
}
|
||||
aside.sidebar a {
|
||||
@include link-colors($sidebar-link-color, $hover: $sidebar-link-color-hover, $focus: $sidebar-link-color-hover, $active: $sidebar-link-color-active);
|
||||
}
|
||||
a {
|
||||
@include transition(color .3s);
|
||||
}
|
||||
|
||||
html {
|
||||
background: $page-bg image-url('line-tile.png') top left;
|
||||
}
|
||||
body {
|
||||
> div {
|
||||
background: $sidebar-bg $noise-bg;
|
||||
border-bottom: 1px solid $page-border-bottom;
|
||||
> div {
|
||||
background: $main-bg $noise-bg;
|
||||
border-right: 1px solid $sidebar-border;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,164 +0,0 @@
|
|||
$blockquote: $type-border !default;
|
||||
$sans: "PT Sans", "Helvetica Neue", Arial, sans-serif !default;
|
||||
$serif: "PT Serif", Georgia, Times, "Times New Roman", serif !default;
|
||||
$mono: Menlo, Monaco, "Andale Mono", "lucida console", "Courier New", monospace !default;
|
||||
$heading-font-family: "PT Serif", "Georgia", "Helvetica Neue", Arial, sans-serif !default;
|
||||
$header-title-font-family: $heading-font-family !default;
|
||||
$header-subtitle-font-family: $heading-font-family !default;
|
||||
|
||||
// Fonts
|
||||
.heading {
|
||||
font-family: $heading-font-family;
|
||||
}
|
||||
.sans { font-family: $sans; }
|
||||
.serif { font-family: $serif; }
|
||||
.mono { font-family: $mono; }
|
||||
|
||||
body > header h1 {
|
||||
font-size: 2.2em;
|
||||
@extend .heading;
|
||||
font-family: $header-title-font-family;
|
||||
font-weight: normal;
|
||||
line-height: 1.2em;
|
||||
margin-bottom: 0.6667em;
|
||||
}
|
||||
body > header h2 {
|
||||
font-family: $header-subtitle-font-family;
|
||||
}
|
||||
|
||||
body {
|
||||
line-height: 1.5em;
|
||||
color: $text-color;
|
||||
@extend .serif;
|
||||
}
|
||||
h1 {
|
||||
font-size: 2.2em;
|
||||
line-height: 1.2em;
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 992px) {
|
||||
body { font-size: 1.15em; }
|
||||
h1 { font-size: 2.6em; line-height: 1.2em; }
|
||||
}
|
||||
|
||||
#{headings()}{
|
||||
@extend .heading;
|
||||
text-rendering: optimizelegibility;
|
||||
margin-bottom: 1em;
|
||||
font-weight: bold;
|
||||
}
|
||||
h2, section h1 {
|
||||
font-size: 1.5em;
|
||||
}
|
||||
h3, section h2, section section h1 {
|
||||
font-size: 1.3em;
|
||||
}
|
||||
h4, section h3, section section h2, section section section h1 {
|
||||
font-size: 1em;
|
||||
}
|
||||
h5, section h4, section section h3 {
|
||||
font-size: .9em;
|
||||
}
|
||||
h6, section h5, section section h4, section section section h3 {
|
||||
font-size: .8em;
|
||||
}
|
||||
|
||||
p, article blockquote, ul, ol { margin-bottom: 1.5em; }
|
||||
|
||||
ul { list-style-type: disc;
|
||||
ul { list-style-type: circle; margin-bottom: 0px;
|
||||
ul { list-style-type: square; margin-bottom: 0px; }}}
|
||||
|
||||
ol { list-style-type: decimal;
|
||||
ol { list-style-type: lower-alpha; margin-bottom: 0px;
|
||||
ol { list-style-type: lower-roman; margin-bottom: 0px; }}}
|
||||
|
||||
ul, ol { &, ul, ol { margin-left: 1.3em; }}
|
||||
ul, ol { ul, ol { margin-bottom: 0em; }}
|
||||
|
||||
strong { font-weight: bold; }
|
||||
|
||||
em { font-style: italic; }
|
||||
|
||||
sup, sub { font-size: 0.75em; position: relative; display: inline-block; padding: 0 .2em; line-height: .8em;}
|
||||
sup { top: -.5em; }
|
||||
sub { bottom: -.5em; }
|
||||
|
||||
a[rev='footnote']{ font-size: .75em; padding: 0 .3em; line-height: 1; }
|
||||
|
||||
q { font-style: italic;
|
||||
&:before { content: "\201C"; }
|
||||
&:after { content: "\201D"; }
|
||||
}
|
||||
|
||||
em, dfn { font-style: italic; }
|
||||
|
||||
strong, dfn { font-weight: bold; }
|
||||
|
||||
del, s { text-decoration: line-through; }
|
||||
|
||||
abbr, acronym { border-bottom: 1px dotted; cursor: help; }
|
||||
|
||||
pre, code, tt { @extend .mono; }
|
||||
|
||||
hr { margin-bottom: 0.2em; }
|
||||
|
||||
small { font-size: .8em; }
|
||||
|
||||
big { font-size: 1.2em; }
|
||||
|
||||
article blockquote {
|
||||
$bq-margin: 1.2em;
|
||||
font-style: italic;
|
||||
position: relative;
|
||||
font-size: 1.2em;
|
||||
line-height: 1.5em;
|
||||
padding-left: 1em;
|
||||
border-left: 4px solid rgba($text-color-light, .5);
|
||||
cite {
|
||||
font-style: italic;
|
||||
a { color: $text-color-light !important; word-wrap: break-word; }
|
||||
&:before { content: '\2014'; padding:{right: .3em; left: .3em;} color: $text-color-light; }
|
||||
}
|
||||
@media only screen and (min-width: 992px) {
|
||||
padding-left: 1.5em;
|
||||
border-left-width: 4px;
|
||||
}
|
||||
}
|
||||
|
||||
.pullquote-right:before,
|
||||
.pullquote-left:before {
|
||||
/* Reset metrics. */
|
||||
padding: 0;
|
||||
border: none;
|
||||
|
||||
/* Content */
|
||||
content: attr(data-pullquote);
|
||||
|
||||
/* Pull out to the right, modular scale based margins. */
|
||||
float: right;
|
||||
width: 45%;
|
||||
margin: .5em 0 1em 1.5em;
|
||||
|
||||
/* Baseline correction */
|
||||
position: relative;
|
||||
top: 7px;
|
||||
font-size: 1.4em;
|
||||
line-height: 1.45em;
|
||||
}
|
||||
|
||||
.pullquote-left:before {
|
||||
/* Make left pullquotes align properly. */
|
||||
float: left;
|
||||
margin: .5em 1.5em 1em 0;
|
||||
}
|
||||
|
||||
/* @extend this to force long lines of continuous text to wrap */
|
||||
.force-wrap {
|
||||
white-space: -moz-pre-wrap;
|
||||
white-space: -pre-wrap;
|
||||
white-space: -o-pre-wrap;
|
||||
white-space: pre-wrap;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
|
@ -1,28 +0,0 @@
|
|||
@mixin mask-image($img, $repeat: no-repeat){
|
||||
@include experimental(mask-image, image-url($img), -webkit, -moz, -o, -ms);
|
||||
@include experimental(mask-repeat, $repeat, -webkit, -moz, -o, -ms);
|
||||
width: image-width($img);
|
||||
height: image-height($img);
|
||||
}
|
||||
|
||||
@mixin shadow-box($border: #fff .5em solid, $shadow: rgba(#000, .15) 0 1px 4px, $border-radius: .3em) {
|
||||
@include border-radius($border-radius);
|
||||
@include box-shadow($shadow);
|
||||
@include box-sizing(border-box);
|
||||
border: $border;
|
||||
}
|
||||
|
||||
@mixin selection($bg, $color: inherit, $text-shadow: none){
|
||||
* {
|
||||
&::-moz-selection { background: $bg; color: $color; text-shadow: $text-shadow; }
|
||||
&::-webkit-selection { background: $bg; color: $color; text-shadow: $text-shadow; }
|
||||
&::selection { background: $bg; color: $color; text-shadow: $text-shadow; }
|
||||
}
|
||||
}
|
||||
|
||||
@function text-color($color, $dark: dark, $light: light){
|
||||
$text-color: ( (red($color)*299) + (green($color)*587) + (blue($color)*114) ) / 1000;
|
||||
$text-color: if($text-color >= 150, $dark, $light);
|
||||
@return $text-color;
|
||||
}
|
||||
|
|
@ -1,43 +0,0 @@
|
|||
// Here you can easily change your sites's color scheme.
|
||||
// To give it a try, uncomment some of the lines below rebuild your blog, and see how it works.
|
||||
// If you need a handy color picker try http://hslpicker.com
|
||||
|
||||
//$header-bg: #263347;
|
||||
//$subtitle-color: lighten($header-bg, 58);
|
||||
//$nav-bg: desaturate(lighten(#8fc17a, 18), 5);
|
||||
//$nav-bg-front: image-url('noise.png');
|
||||
//$nav-bg-back: linear-gradient(lighten($nav-bg, 8), $nav-bg, darken($nav-bg, 11));
|
||||
//$sidebar-bg: desaturate(#eceff5, 8);
|
||||
//$sidebar-link-color: saturate(#526f9a, 10);
|
||||
//$sidebar-link-color-hover: darken(#7ab662, 9);
|
||||
//$footer-bg: #ccc !default;
|
||||
//$footer-bg-front: image-url('noise.png');
|
||||
//$footer-bg-back: linear-gradient(lighten($footer-bg, 8), $footer-bg, darken($footer-bg, 11));
|
||||
|
||||
|
||||
/* To use the light Solarized highlighting theme uncomment the following line */
|
||||
//$solarized: light;
|
||||
|
||||
/* If you want to tweak the Solarized colors you can do that here */
|
||||
//$base03: #002b36; //darkest blue
|
||||
//$base02: #073642; //dark blue
|
||||
//$base01: #586e75; //darkest gray
|
||||
//$base00: #657b83; //dark gray
|
||||
//$base0: #839496; //medium gray
|
||||
//$base1: #93a1a1; //medium light gray
|
||||
//$base2: #eee8d5; //cream
|
||||
//$base3: #fdf6e3; //white
|
||||
//$solar-yellow: #b58900;
|
||||
//$solar-orange: #cb4b16;
|
||||
//$solar-red: #dc322f;
|
||||
//$solar-magenta: #d33682;
|
||||
//$solar-violet: #6c71c4;
|
||||
//$solar-blue: #268bd2;
|
||||
//$solar-cyan: #2aa198;
|
||||
//$solar-green: #859900;
|
||||
|
||||
|
||||
/* Non highlighted code colors */
|
||||
//$pre-bg: $base03;
|
||||
//$pre-border: darken($base02, 5);
|
||||
//$pre-color: $base1;
|
|
@ -1,10 +0,0 @@
|
|||
// Here you can easily change font faces which are used in your site.
|
||||
// To give it a try, uncomment some of the lines below rebuild your blog, and see how it works. your sites's.
|
||||
// If you love to use Web Fonts, you also need to add some lines to source/_includes/custom/head.html
|
||||
|
||||
//$sans: "Optima", sans-serif;
|
||||
//$serif: "Baskerville", serif;
|
||||
//$mono: "Courier", monospace;
|
||||
//$heading-font-family: "Verdana", sans-serif;
|
||||
//$header-title-font-family: "Futura", sans-serif;
|
||||
//$header-subtitle-font-family: "Futura", sans-serif;
|
|
@ -1,21 +0,0 @@
|
|||
// Here you can easily change your sites's layout.
|
||||
// To give it a try, uncomment some of the lines below, make changes, rebuild your blog, and see how it works.
|
||||
|
||||
//$header-font-size: 1em;
|
||||
//$header-padding-top: 1.5em;
|
||||
//$header-padding-bottom: 1.5em;
|
||||
|
||||
//$max-width: 1350px;
|
||||
//$indented-lists: true;
|
||||
|
||||
// Padding used for layout margins
|
||||
//$pad-min: 18px;
|
||||
//$pad-narrow: 25px;
|
||||
//$pad-medium: 35px;
|
||||
//$pad-wide: 55px;
|
||||
|
||||
// Sidebar widths used in media queries
|
||||
//$sidebar-width-medium: 240px;
|
||||
//$sidebar-pad-medium: 15px;
|
||||
//$sidebar-pad-wide: 20px;
|
||||
//$sidebar-width-wide: 300px;
|
|
@ -1,2 +0,0 @@
|
|||
// This File is imported last, and will override other styles in the cascade
|
||||
// Add styles here to make changes without digging in too much
|
|
@ -1,72 +0,0 @@
|
|||
#archive {
|
||||
#content > div { &, > article { padding-top: 0; } }
|
||||
}
|
||||
#blog-archives {
|
||||
article {
|
||||
padding: 1em 0 1em;
|
||||
position: relative;
|
||||
background: $img-border bottom left repeat-x;
|
||||
&:last-child {
|
||||
background: none;
|
||||
}
|
||||
footer { padding: 0; margin: 0;}
|
||||
}
|
||||
h1 { color: $text-color; margin-bottom: .3em; }
|
||||
h2 { display: none; }
|
||||
h1 {
|
||||
font-size: 1.5em;
|
||||
a {
|
||||
@include hover-link;
|
||||
color: inherit;
|
||||
&:hover { color: $link-color-hover; }
|
||||
font-weight: normal;
|
||||
display: inline-block;
|
||||
}
|
||||
}
|
||||
a.category, time {
|
||||
@extend .sans;
|
||||
color: $text-color-light;
|
||||
}
|
||||
color: $text-color-light;
|
||||
.entry-content { display: none; }
|
||||
time {
|
||||
font-size: .9em;
|
||||
line-height: 1.2em;
|
||||
.month, .day { display: inline-block; }
|
||||
.month { text-transform: uppercase; }
|
||||
}
|
||||
p { margin-bottom: 1em; }
|
||||
&, .entry-content { a { @include link-colors(inherit, $link-color-hover); }}
|
||||
a:hover { color: $link-color-hover; }
|
||||
@media only screen and (min-width: 550px) {
|
||||
article { margin-left: 5em; }
|
||||
h2 {
|
||||
margin-bottom: .3em;
|
||||
font-weight: normal;
|
||||
display: inline-block;
|
||||
position: relative; top: -1px;
|
||||
float: left;
|
||||
&:first-child { padding-top: .75em; }
|
||||
}
|
||||
time {
|
||||
position: absolute;
|
||||
text-align: right;
|
||||
left: 0em;
|
||||
top: 1.8em;
|
||||
}
|
||||
.year { display: none; }
|
||||
article {
|
||||
padding:{left: 4.5em; bottom: .7em;}
|
||||
}
|
||||
a.category {
|
||||
line-height: 1.1em;
|
||||
}
|
||||
}
|
||||
}
|
||||
#content > .category {
|
||||
article {
|
||||
margin-left: 0;
|
||||
padding-left: 6.8em;
|
||||
}
|
||||
.year { display: inline; }
|
||||
}
|
|
@ -1,141 +0,0 @@
|
|||
article {
|
||||
padding-top: 1em;
|
||||
a { @extend .force-wrap; }
|
||||
header {
|
||||
position: relative;
|
||||
padding-top: 2em;
|
||||
padding-bottom: 1em;
|
||||
margin-bottom: 1em;
|
||||
background: $img-border bottom left repeat-x;
|
||||
h1 {
|
||||
margin: 0;
|
||||
a { text-decoration: none;
|
||||
&:hover { text-decoration: underline; } }
|
||||
}
|
||||
p {
|
||||
font-size: .9em;
|
||||
color: $text-color-light;
|
||||
margin: 0;
|
||||
&.meta {
|
||||
@extend .sans;
|
||||
text-transform: uppercase;
|
||||
position: absolute; top: 0;
|
||||
}
|
||||
}
|
||||
@media only screen and (min-width: 768px) {
|
||||
margin-bottom: 1.5em;
|
||||
padding-bottom: 1em;
|
||||
background: $img-border bottom left repeat-x;
|
||||
}
|
||||
}
|
||||
h2 {
|
||||
padding-top: 0.8em;
|
||||
background: $img-border top left repeat-x;
|
||||
}
|
||||
.entry-content & h2:first-child, header + h2 { padding-top: 0; }
|
||||
h2:first-child, header + h2 { background: none; }
|
||||
.feature {
|
||||
padding-top: .5em;
|
||||
margin-bottom: 1em;
|
||||
padding-bottom: 1em;
|
||||
background: $img-border bottom left repeat-x;
|
||||
font-size: 2.0em; font-style: italic;
|
||||
line-height: 1.3em;
|
||||
}
|
||||
img, video, .flash-video {
|
||||
@extend .flex-content;
|
||||
@extend .basic-alignment;
|
||||
@include shadow-box;
|
||||
}
|
||||
video, .flash-video { margin: 0 auto 1.5em; }
|
||||
video { display: block; width: 100%; }
|
||||
.flash-video {
|
||||
> div {
|
||||
position: relative;
|
||||
display: block;
|
||||
padding-bottom: 56.25%;
|
||||
padding-top: 1px;
|
||||
height: 0;
|
||||
overflow: hidden;
|
||||
iframe, object, embed {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
> footer {
|
||||
padding-bottom: 2.5em;
|
||||
margin-top: 2em;
|
||||
@extend .sans;
|
||||
p.meta {
|
||||
margin-bottom: .8em;
|
||||
font-size: .85em;
|
||||
clear: both;
|
||||
overflow: hidden;
|
||||
}
|
||||
.byline + time:before, time +time:before, .comments:before, .byline ~ .categories:before {
|
||||
@extend .separator;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
article + article {
|
||||
.blog-index & {
|
||||
background: $img-border top left repeat-x;
|
||||
}
|
||||
}
|
||||
#content .blog-index {
|
||||
padding: { top: 0; bottom: 0; }
|
||||
article { padding-top: 2em; }
|
||||
article header { background: none; padding-bottom: 0; }
|
||||
article h1 {
|
||||
font-size: 2.2em;
|
||||
a { color: inherit; &:hover { color: $link-color-hover; } }
|
||||
}
|
||||
a[rel=full-article] {
|
||||
background: darken($main-bg, 5);
|
||||
display: inline-block;
|
||||
padding: .4em .8em;
|
||||
margin-right: .5em;
|
||||
text-decoration: none;
|
||||
color: mix($text-color, $text-color-light);
|
||||
@extend .serif;
|
||||
@include transition(background-color .5s);
|
||||
&:hover {
|
||||
background: $link-color-hover;
|
||||
text-shadow: none;
|
||||
color: $main-bg;
|
||||
}
|
||||
}
|
||||
footer {
|
||||
@extend .sans;
|
||||
margin-top: 1em;
|
||||
}
|
||||
}
|
||||
|
||||
.separator {
|
||||
content: "\2022 ";
|
||||
padding: 0 .4em 0 .2em;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
#content div.pagination {
|
||||
text-align: center;
|
||||
font-size: .95em;
|
||||
position: relative;
|
||||
background: $img-border top left repeat-x;
|
||||
padding: {top: 1.5em; bottom: 1.5em;}
|
||||
a {
|
||||
text-decoration: none;
|
||||
color: $text-color-light;
|
||||
&.prev { position: absolute; left: 0; }
|
||||
&.next { position: absolute; right: 0; }
|
||||
&:hover { color: $link-color-hover; }
|
||||
&[href*=archive] {
|
||||
&:before, &:after { content: '\2014'; padding: 0 .3em; }
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,19 +0,0 @@
|
|||
body > footer {
|
||||
@extend .sans;
|
||||
font-size: .8em;
|
||||
color: $footer-color;
|
||||
text-shadow: lighten($footer-bg, 5) 0 1px;
|
||||
background-color: $footer-bg;
|
||||
@include background($footer-bg-front, $footer-bg-back);
|
||||
border-top: 1px solid $footer-border-top;
|
||||
position: relative;
|
||||
padding-top: 1em;
|
||||
padding-bottom: 1em;
|
||||
margin-bottom: 3em;
|
||||
@include border-bottom-radius(.4em);
|
||||
z-index: 1;
|
||||
a {
|
||||
@include link-colors($footer-link-color, $footer-link-color-hover, $visited: $footer-link-color);
|
||||
}
|
||||
p:last-child { margin-bottom: 0; }
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
body > header {
|
||||
background: $header-bg;
|
||||
h1 {
|
||||
display: inline-block;
|
||||
margin: 0;
|
||||
a, a:visited, a:hover {
|
||||
color: $title_color;
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
h2 {
|
||||
margin: .2em 0 0;
|
||||
@extend .sans;
|
||||
font-size: 1em;
|
||||
color: $subtitle-color;
|
||||
font-weight: normal;
|
||||
}
|
||||
}
|
|
@ -1,137 +0,0 @@
|
|||
body > nav {
|
||||
position: relative;
|
||||
background-color: $nav-bg;
|
||||
@include background($nav-bg-front, $nav-bg-back);
|
||||
border: {
|
||||
top: 1px solid $nav-border-top;
|
||||
bottom: 1px solid $nav-border-bottom; }
|
||||
padding-top: .35em;
|
||||
padding-bottom: .35em;
|
||||
form {
|
||||
@include background-clip(padding-box);
|
||||
margin: 0; padding: 0;
|
||||
.search {
|
||||
padding: .3em .5em 0;
|
||||
font-size: .85em;
|
||||
font-family: $sans;
|
||||
line-height: 1.1em;
|
||||
width: 95%;
|
||||
@include border-radius(.5em);
|
||||
@include background-clip(padding-box);
|
||||
@include box-shadow(lighten($nav-bg, 2) 0 1px);
|
||||
background-color: lighten($nav-bg, 15);
|
||||
border: 1px solid $nav-border;
|
||||
color: #888;
|
||||
&:focus {
|
||||
color: #444;
|
||||
border-color: #80b1df;
|
||||
@include box-shadow(#80b1df 0 0 4px, #80b1df 0 0 3px inset);
|
||||
background-color: #fff;
|
||||
outline: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
fieldset[role=search]{ float: right; width: 48%; }
|
||||
fieldset.mobile-nav{ float: left; width: 48%;
|
||||
select{ width: 100%; font-size: .8em; border: 1px solid #888;}
|
||||
}
|
||||
ul { display: none; }
|
||||
@media only screen and (min-width: 550px) {
|
||||
font-size: .9em;
|
||||
ul {
|
||||
@include horizontal-list(0);
|
||||
float: left;
|
||||
display: block;
|
||||
padding-top: .15em;
|
||||
}
|
||||
ul.subscription {
|
||||
margin-left: .8em;
|
||||
float: right;
|
||||
li:last-child a { padding-right: 0; }
|
||||
}
|
||||
ul li {
|
||||
margin: 0;
|
||||
}
|
||||
a {
|
||||
@include link-colors($nav-color, $nav-color-hover, $visited: $nav-color);
|
||||
font-family: $sans;
|
||||
text-shadow: lighten($nav-bg, 12) 0 1px;
|
||||
float: left;
|
||||
text-decoration: none;
|
||||
font-size: 1.1em;
|
||||
padding: .1em 0;
|
||||
line-height: 1.5em;
|
||||
}
|
||||
li + li {
|
||||
border-left: 1px solid $nav-border-left;
|
||||
margin-left: .8em;
|
||||
a {
|
||||
padding-left: .8em;
|
||||
border-left: 1px solid $nav-border-right;
|
||||
}
|
||||
}
|
||||
form {
|
||||
float: right;
|
||||
text-align: left;
|
||||
padding-left: .8em;
|
||||
width: $sidebar-width-medium - $pad-medium*2 - $sidebar-pad-medium + 20px;
|
||||
.search {
|
||||
width: 93%;
|
||||
font-size: .95em;
|
||||
line-height: 1.2em;
|
||||
}
|
||||
}
|
||||
ul[data-subscription$=email] + form {
|
||||
width: $sidebar-width-medium - $pad-medium*2 - $sidebar-pad-medium - 58px;
|
||||
.search { width: 91%; }
|
||||
}
|
||||
fieldset.mobile-nav { display: none; }
|
||||
fieldset[role=search]{ width: 99%; }
|
||||
}
|
||||
@media only screen and (min-width: 992px) {
|
||||
form {
|
||||
width: $sidebar-width-wide - $pad-wide - $sidebar-pad-wide*2 + 10px;
|
||||
}
|
||||
ul[data-subscription$=email] + form {
|
||||
width: $sidebar-width-wide - $pad-wide - $sidebar-pad-wide*2 - 58px;
|
||||
}
|
||||
}
|
||||
}
|
||||
.no-placeholder {
|
||||
body > nav .search {
|
||||
background: lighten($nav-bg, 15) image-url('search.png') .3em .25em no-repeat;
|
||||
text-indent: 1.3em;
|
||||
}
|
||||
}
|
||||
@mixin mask-subscription-nav($feed: 'rss.png'){
|
||||
position: relative; top: 0px;
|
||||
text-indent: -999999em;
|
||||
background-color: $nav-border-right;
|
||||
border: 0;
|
||||
padding: 0;
|
||||
&,&:after { @include mask-image($feed); }
|
||||
&:after {
|
||||
content: "";
|
||||
position: absolute; top: -1px; left: 0;
|
||||
background-color: lighten($nav-color, 25);
|
||||
}
|
||||
&:hover:after { background-color: lighten($nav-color, 20); }
|
||||
}
|
||||
.maskImage {
|
||||
body > nav {
|
||||
@media only screen and (min-width: 550px) {
|
||||
ul[data-subscription$=email] + form {
|
||||
width: $sidebar-width-medium - $pad-medium*2 - $sidebar-pad-medium - 32px;
|
||||
}
|
||||
}
|
||||
@media only screen and (min-width: 992px) {
|
||||
ul[data-subscription$=email] + form {
|
||||
width: $sidebar-width-wide - $pad-wide - $sidebar-pad-wide*2 - 32px;
|
||||
}
|
||||
}
|
||||
}
|
||||
ul.subscription { position: relative; top: .2em; li, a { border: 0; padding: 0; }}
|
||||
a[rel=subscribe-rss]{ @include mask-subscription-nav('rss.png'); }
|
||||
a[rel=subscribe-email]{ @include mask-subscription-nav('email.png'); }
|
||||
}
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
.sharing {
|
||||
p.meta + & {
|
||||
padding: { top: 1em; left: 0; }
|
||||
background: $img-border top left repeat-x;
|
||||
}
|
||||
}
|
||||
|
||||
#fb-root { display: none; }
|
|
@ -1,4 +0,0 @@
|
|||
@import "sidebar/base";
|
||||
@import "sidebar/googleplus";
|
||||
@import "sidebar/pinboard";
|
||||
@import "sidebar/delicious";
|
|
@ -1,261 +0,0 @@
|
|||
.highlight, html .gist .gist-file .gist-syntax .gist-highlight {
|
||||
table td.code { width: 100%; }
|
||||
border: 1px solid $pre-border !important;
|
||||
}
|
||||
.highlight .line-numbers, html .gist .gist-file .gist-syntax .highlight .line_numbers {
|
||||
text-align: right;
|
||||
font-size: 13px;
|
||||
line-height: 1.45em;
|
||||
@if $solarized == light {
|
||||
background: lighten($base03, 1) $noise-bg !important;
|
||||
border-right: 1px solid darken($base02, 2) !important;
|
||||
@include box-shadow(lighten($base03, 2) -1px 0 inset);
|
||||
text-shadow: lighten($base02, 2) 0 -1px;
|
||||
} @else {
|
||||
background: $base02 $noise-bg !important;
|
||||
border-right: 1px solid darken($base03, 2) !important;
|
||||
@include box-shadow(lighten($base02, 2) -1px 0 inset);
|
||||
text-shadow: darken($base02, 10) 0 -1px;
|
||||
}
|
||||
span { color: $base01 !important; }
|
||||
padding: .8em !important;
|
||||
@include border-radius(0);
|
||||
}
|
||||
|
||||
figure.code, .gist-file, pre {
|
||||
@include box-shadow(rgba(#000, .06) 0 0 10px);
|
||||
.highlight pre { @include box-shadow(none); }
|
||||
}
|
||||
|
||||
.gist .highlight, figure.code .highlight {
|
||||
@include selection(adjust-color($base03, $lightness: 23%, $saturation: -65%), $text-shadow: $base03 0 1px);
|
||||
}
|
||||
html .gist .gist-file {
|
||||
margin-bottom: 1.8em;
|
||||
position: relative;
|
||||
border: none;
|
||||
padding-top: image-height("code_bg.png") !important;
|
||||
.highlight {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.gist-syntax {
|
||||
border-bottom: 0 !important;
|
||||
background: none !important;
|
||||
.gist-highlight {
|
||||
background: $base03 !important;
|
||||
}
|
||||
.highlight pre {
|
||||
@extend .pre-code;
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
.gist-meta {
|
||||
padding: .6em 0.8em;
|
||||
border: 1px solid lighten($base02, 2) !important;
|
||||
color: $base01;
|
||||
font-size: .7em !important;
|
||||
@if $solarized == light {
|
||||
background: lighten($base03, 2) $noise-bg;
|
||||
border: 1px solid $pre-border !important;
|
||||
border-top: 1px solid lighten($base03, 2) !important;
|
||||
} @else {
|
||||
background: $base02 $noise-bg;
|
||||
}
|
||||
@extend .sans;
|
||||
line-height: 1.5em;
|
||||
a {
|
||||
color: mix($base1, $base01) !important;
|
||||
@include hover-link;
|
||||
&:hover { color: $base1 !important; }
|
||||
}
|
||||
a[href*='#file'] {
|
||||
position: absolute; top: 0; left:0; right:-10px;
|
||||
color: #474747 !important;
|
||||
@extend .code-title;
|
||||
&:hover { color: $link-color !important; }
|
||||
}
|
||||
a[href*=raw]{
|
||||
@extend .download-source;
|
||||
top: .4em;
|
||||
}
|
||||
}
|
||||
}
|
||||
pre {
|
||||
background: $pre-bg $noise-bg;
|
||||
@include border-radius(.4em);
|
||||
@extend .mono;
|
||||
border: 1px solid $pre-border;
|
||||
line-height: 1.45em;
|
||||
font-size: 13px;
|
||||
margin-bottom: 2.1em;
|
||||
padding: .8em 1em;
|
||||
color: $pre-color;
|
||||
overflow: auto;
|
||||
}
|
||||
h3.filename {
|
||||
@extend .code-title;
|
||||
+ pre { @include border-top-radius(0px); }
|
||||
}
|
||||
|
||||
p, li {
|
||||
code {
|
||||
@extend .mono;
|
||||
display: inline-block;
|
||||
white-space: no-wrap;
|
||||
background: #fff;
|
||||
font-size: .8em;
|
||||
line-height: 1.5em;
|
||||
color: #555;
|
||||
border: 1px solid #ddd;
|
||||
@include border-radius(.4em);
|
||||
padding: 0 .3em;
|
||||
margin: -1px 0;
|
||||
}
|
||||
pre code { font-size: 1em !important; background: none; border: none; }
|
||||
}
|
||||
|
||||
.pre-code {
|
||||
font-family: $mono !important;
|
||||
overflow: scroll;
|
||||
overflow-y: hidden;
|
||||
display: block;
|
||||
padding: .8em;
|
||||
overflow-x: auto;
|
||||
line-height: 1.45em;
|
||||
background: $base03 $noise-bg !important;
|
||||
color: $base1 !important;
|
||||
span { color: $base1 !important; }
|
||||
span { font-style: normal !important; font-weight: normal !important; }
|
||||
|
||||
.c { color: $base01 !important; font-style: italic !important; } /* Comment */
|
||||
.cm { color: $base01 !important; font-style: italic !important; } /* Comment.Multiline */
|
||||
.cp { color: $base01 !important; font-style: italic !important; } /* Comment.Preproc */
|
||||
.c1 { color: $base01 !important; font-style: italic !important; } /* Comment.Single */
|
||||
.cs { color: $base01 !important; font-weight: bold !important; font-style: italic !important; } /* Comment.Special */
|
||||
.err { color: $solar-red !important; background: none !important; } /* Error */
|
||||
.k { color: $solar-orange !important; } /* Keyword */
|
||||
.o { color: $base1 !important; font-weight: bold !important; } /* Operator */
|
||||
.p { color: $base1 !important; } /* Operator */
|
||||
.ow { color: $solar-cyan !important; font-weight: bold !important; } /* Operator.Word */
|
||||
.gd { color: $base1 !important; background-color: mix($solar-red, $base03, 25%) !important; display: inline-block; } /* Generic.Deleted */
|
||||
.gd .x { color: $base1 !important; background-color: mix($solar-red, $base03, 35%) !important; display: inline-block; } /* Generic.Deleted.Specific */
|
||||
.ge { color: $base1 !important; font-style: italic !important; } /* Generic.Emph */
|
||||
//.gr { color: #aa0000 } /* Generic.Error */
|
||||
.gh { color: $base01 !important; } /* Generic.Heading */
|
||||
.gi { color: $base1 !important; background-color: mix($solar-green, $base03, 20%) !important; display: inline-block; } /* Generic.Inserted */
|
||||
.gi .x { color: $base1 !important; background-color: mix($solar-green, $base03, 40%) !important; display: inline-block; } /* Generic.Inserted.Specific */
|
||||
//.go { color: #888888 } /* Generic.Output */
|
||||
//.gp { color: #555555 } /* Generic.Prompt */
|
||||
.gs { color: $base1 !important; font-weight: bold !important; } /* Generic.Strong */
|
||||
.gu { color: $solar-violet !important; } /* Generic.Subheading */
|
||||
//.gt { color: #aa0000 } /* Generic.Traceback */
|
||||
.kc { color: $solar-green !important; font-weight: bold !important; } /* Keyword.Constant */
|
||||
.kd { color: $solar-blue !important; } /* Keyword.Declaration */
|
||||
.kp { color: $solar-orange !important; font-weight: bold !important; } /* Keyword.Pseudo */
|
||||
.kr { color: $solar-magenta !important; font-weight: bold !important; } /* Keyword.Reserved */
|
||||
.kt { color: $solar-cyan !important; } /* Keyword.Type */
|
||||
.n { color: $solar-blue !important; }
|
||||
.na { color: $solar-blue !important; } /* Name.Attribute */
|
||||
.nb { color: $solar-green !important; } /* Name.Builtin */
|
||||
.nc { color: $solar-magenta !important;} /* Name.Class */
|
||||
.no { color: $solar-yellow !important; } /* Name.Constant */
|
||||
//.ni { color: #800080 } /* Name.Entity */
|
||||
.nl { color: $solar-green !important; }
|
||||
.ne { color: $solar-blue !important; font-weight: bold !important; } /* Name.Exception */
|
||||
.nf { color: $solar-blue !important; font-weight: bold !important; } /* Name.Function */
|
||||
.nn { color: $solar-yellow !important; } /* Name.Namespace */
|
||||
.nt { color: $solar-blue !important; font-weight: bold !important; } /* Name.Tag */
|
||||
.nx { color: $solar-yellow !Important; }
|
||||
//.bp { color: #999999 } /* Name.Builtin.Pseudo */
|
||||
//.vc { color: #008080 } /* Name.Variable.Class */
|
||||
.vg { color: $solar-blue !important; } /* Name.Variable.Global */
|
||||
.vi { color: $solar-blue !important; } /* Name.Variable.Instance */
|
||||
.nv { color: $solar-blue !important; } /* Name.Variable */
|
||||
//.w { color: #bbbbbb } /* Text.Whitespace */
|
||||
.mf { color: $solar-cyan !important; } /* Literal.Number.Float */
|
||||
.m { color: $solar-cyan !important; } /* Literal.Number */
|
||||
.mh { color: $solar-cyan !important; } /* Literal.Number.Hex */
|
||||
.mi { color: $solar-cyan !important; } /* Literal.Number.Integer */
|
||||
//.mo { color: #009999 } /* Literal.Number.Oct */
|
||||
.s { color: $solar-cyan !important; } /* Literal.String */
|
||||
//.sb { color: #d14 } /* Literal.String.Backtick */
|
||||
//.sc { color: #d14 } /* Literal.String.Char */
|
||||
.sd { color: $solar-cyan !important; } /* Literal.String.Doc */
|
||||
.s2 { color: $solar-cyan !important; } /* Literal.String.Double */
|
||||
.se { color: $solar-red !important; } /* Literal.String.Escape */
|
||||
//.sh { color: #d14 } /* Literal.String.Heredoc */
|
||||
.si { color: $solar-blue !important; } /* Literal.String.Interpol */
|
||||
//.sx { color: #d14 } /* Literal.String.Other */
|
||||
.sr { color: $solar-cyan !important; } /* Literal.String.Regex */
|
||||
.s1 { color: $solar-cyan !important; } /* Literal.String.Single */
|
||||
//.ss { color: #990073 } /* Literal.String.Symbol */
|
||||
//.il { color: #009999 } /* Literal.Number.Integer.Long */
|
||||
div { .gd, .gd .x, .gi, .gi .x { display: inline-block; width: 100%; }}
|
||||
}
|
||||
|
||||
.highlight, .gist-highlight {
|
||||
pre { background: none; @include border-radius(0px); border: none; padding: 0; margin-bottom: 0; }
|
||||
margin-bottom: 1.8em;
|
||||
background: $base03;
|
||||
overflow-y: hidden;
|
||||
overflow-x: auto;
|
||||
}
|
||||
|
||||
$solar-scroll-bg: rgba(#fff, .15);
|
||||
$solar-scroll-thumb: rgba(#fff, .2);
|
||||
@if $solarized == light {
|
||||
$solar-scroll-bg: rgba(#000, .15);
|
||||
$solar-scroll-thumb: rgba(#000, .15);
|
||||
}
|
||||
|
||||
pre, .highlight, .gist-highlight {
|
||||
&::-webkit-scrollbar { height: .5em; background: $solar-scroll-bg; }
|
||||
&::-webkit-scrollbar-thumb:horizontal { background: $solar-scroll-thumb; -webkit-border-radius: 4px; border-radius: 4px }
|
||||
}
|
||||
|
||||
.highlight code {
|
||||
@extend .pre-code; background: #000;
|
||||
}
|
||||
figure.code {
|
||||
background: none;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
margin-bottom: 1.5em;
|
||||
pre { margin-bottom: 0; }
|
||||
figcaption {
|
||||
position: relative;
|
||||
@extend .code-title;
|
||||
a { @extend .download-source; }
|
||||
}
|
||||
.highlight {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.code-title {
|
||||
text-align: center;
|
||||
font-size: 13px;
|
||||
line-height: 2em;
|
||||
text-shadow: #cbcccc 0 1px 0;
|
||||
color: #474747;
|
||||
font-weight: normal;
|
||||
margin-bottom: 0;
|
||||
@include border-top-radius(5px);
|
||||
font-family: "Helvetica Neue", Arial, "Lucida Grande", "Lucida Sans Unicode", Lucida, sans-serif;
|
||||
background: #aaaaaa image-url("code_bg.png") top repeat-x;
|
||||
border: 1px solid #565656;
|
||||
border-top-color: #cbcbcb;
|
||||
border-left-color: #a5a5a5;
|
||||
border-right-color: #a5a5a5;
|
||||
border-bottom: 0;
|
||||
}
|
||||
|
||||
.download-source {
|
||||
position: absolute; right: .8em;
|
||||
@include hover-link;
|
||||
color: #666 !important;
|
||||
z-index: 1;
|
||||
font-size: 13px;
|
||||
text-shadow: #cbcccc 0 1px 0;
|
||||
padding-left: 3em;
|
||||
}
|
|
@ -1,106 +0,0 @@
|
|||
.side-shadow-border {
|
||||
@include box-shadow(lighten($sidebar-bg, 5) 0 1px);
|
||||
}
|
||||
aside.sidebar {
|
||||
overflow: hidden;
|
||||
color: $sidebar-color;
|
||||
text-shadow: lighten($sidebar-bg, 8) 0 1px;
|
||||
a { @extend .force-wrap; }
|
||||
section {
|
||||
@extend .sans;
|
||||
font-size: .8em;
|
||||
line-height: 1.4em;
|
||||
margin-bottom: 1.5em;
|
||||
h1 {
|
||||
margin: 1.5em 0 0;
|
||||
padding-bottom: .2em;
|
||||
border-bottom: 1px solid $sidebar-border;
|
||||
@extend .side-shadow-border;
|
||||
+ p {
|
||||
padding-top: .4em;
|
||||
}
|
||||
}
|
||||
}
|
||||
img {
|
||||
@extend .flex-content;
|
||||
@extend .basic-alignment;
|
||||
@include shadow-box($border: #fff .3em solid);
|
||||
}
|
||||
ul {
|
||||
margin-bottom: 0.5em;
|
||||
margin-left: 0;
|
||||
}
|
||||
li {
|
||||
list-style: none;
|
||||
padding: .5em 0;
|
||||
margin: 0;
|
||||
border-bottom: 1px solid $sidebar-border;
|
||||
@extend .side-shadow-border;
|
||||
p:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
a {
|
||||
color: inherit;
|
||||
@include transition(color .5s);
|
||||
}
|
||||
&:hover a {
|
||||
color: $sidebar-link-color;
|
||||
&:hover { color: $sidebar-link-color-hover; }
|
||||
}
|
||||
}
|
||||
.aside-alt-link {
|
||||
color: $sidebar-link-color-subdued;
|
||||
&:hover {
|
||||
color: $sidebar-link-color-subdued-hover;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 768px) {
|
||||
.toggle-sidebar {
|
||||
outline: none;
|
||||
position: absolute; right: -10px; top: 0; bottom: 0;
|
||||
display: inline-block;
|
||||
text-decoration: none;
|
||||
color: mix($text-color-light, $sidebar-bg);
|
||||
width: 9px;
|
||||
cursor: pointer;
|
||||
&:hover {
|
||||
background: mix($sidebar-border, $sidebar-bg);
|
||||
@include background(linear-gradient(left, rgba($sidebar-border, .5), rgba($sidebar-border, 0)));
|
||||
}
|
||||
&:after {
|
||||
position: absolute; right: -11px; top: 0;
|
||||
width: 20px;
|
||||
font-size: 1.2em;
|
||||
line-height: 1.1em;
|
||||
padding-bottom: .15em;
|
||||
@include border-bottom-right-radius(.3em);
|
||||
text-align: center;
|
||||
background: $main-bg $noise-bg;
|
||||
border-bottom: 1px solid $sidebar-border;
|
||||
border-right: 1px solid $sidebar-border;
|
||||
content: "\00BB";
|
||||
text-indent: -1px;
|
||||
}
|
||||
.collapse-sidebar & {
|
||||
text-indent: 0px;
|
||||
right: -20px;
|
||||
width: 19px;
|
||||
&:hover {
|
||||
background: mix($sidebar-border, $sidebar-bg);
|
||||
}
|
||||
&:after {
|
||||
border-left: 1px solid $sidebar-border;
|
||||
text-shadow: #fff 0 1px;
|
||||
content: "\00AB";
|
||||
left: 0px; right: 0;
|
||||
text-align: center;
|
||||
text-indent: 0;
|
||||
border: 0;
|
||||
border-right-width: 0;
|
||||
background: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,4 +0,0 @@
|
|||
.delicious-posts {
|
||||
a.delicious-link { margin-bottom: .5em; display: block; }
|
||||
p { font-size: 1em; }
|
||||
}
|
|
@ -1,26 +0,0 @@
|
|||
.googleplus {
|
||||
h1 {
|
||||
-moz-box-shadow: none !important;
|
||||
-webkit-box-shadow: none !important;
|
||||
-o-box-shadow: none !important;
|
||||
box-shadow: none !important;
|
||||
border-bottom: 0px none !important;
|
||||
}
|
||||
a {
|
||||
text-decoration: none;
|
||||
white-space: normal !important;
|
||||
line-height: 32px;
|
||||
|
||||
img {
|
||||
float: left;
|
||||
margin-right: 0.5em;
|
||||
border: 0 none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.googleplus-hidden {
|
||||
position: absolute;
|
||||
top: -1000em;
|
||||
left: -1000em;
|
||||
}
|
|
@ -1,12 +0,0 @@
|
|||
#pinboard_linkroll {
|
||||
.pin-title, .pin-description {
|
||||
display: block;
|
||||
margin-bottom: .5em;
|
||||
}
|
||||
.pin-tag {
|
||||
@include hover-link;
|
||||
@extend .aside-alt-link;
|
||||
&:after { content: ','; }
|
||||
&:last-child:after { content: ''; }
|
||||
}
|
||||
}
|
|
@ -1,6 +0,0 @@
|
|||
/*
|
||||
Add plugin stylesheets to this directory and they will be automatically
|
||||
Imported. Load order is alphabetical and styles can be overriden in
|
||||
custom/_style.scss which is loaded after all plugin stylesheets.
|
||||
*/
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
@import "compass";
|
||||
@include global-reset;
|
||||
|
||||
@import "custom/colors";
|
||||
@import "custom/fonts";
|
||||
@import "custom/layout";
|
||||
@import "base";
|
||||
@import "partials";
|
||||
@import "plugins/**/*";
|
||||
@import "custom/styles";
|
|
@ -1,5 +0,0 @@
|
|||
{% include disqus.html %}
|
||||
{% include facebook_like.html %}
|
||||
{% include google_plus_one.html %}
|
||||
{% include twitter_sharing.html %}
|
||||
{% include custom/after_footer.html %}
|
|
@ -1,8 +0,0 @@
|
|||
{% capture category %}{{ post.categories | size }}{% endcapture %}
|
||||
<h1><a href="{{ root_url }}{{ post.url }}">{% if site.titlecase %}{{ post.title | titlecase }}{% else %}{{ post.title }}{% endif %}</a></h1>
|
||||
<time datetime="{{ post.date | datetime | date_to_xmlschema }}" pubdate>{{ post.date | date: "<span class='month'>%b</span> <span class='day'>%d</span> <span class='year'>%Y</span>"}}</time>
|
||||
{% if category != '0' %}
|
||||
<footer>
|
||||
<span class="categories">posted in {{ post.categories | category_links }}</span>
|
||||
</footer>
|
||||
{% endif %}
|
|
@ -1,29 +0,0 @@
|
|||
{% unless page.no_header %}
|
||||
<header>
|
||||
{% if index %}
|
||||
<h1 class="entry-title"><a href="{{ root_url }}{{ post.url }}">{% if site.titlecase %}{{ post.title | titlecase }}{% else %}{{ post.title }}{% endif %}</a></h1>
|
||||
{% else %}
|
||||
<h1 class="entry-title">{% if site.titlecase %}{{ page.title | titlecase }}{% else %}{{ page.title }}{% endif %}</h1>
|
||||
{% endif %}
|
||||
{% unless page.meta == false %}
|
||||
<p class="meta">
|
||||
{% include post/date.html %}{{ time }}
|
||||
{% if site.disqus_short_name and page.comments != false and post.comments != false and site.disqus_show_comment_count == true %}
|
||||
| <a href="{% if index %}{{ root_url }}{{ post.url }}{% endif %}#disqus_thread"
|
||||
data-disqus-identifier="{% if post.meta.disqus_id %}{{ post.meta.disqus_id }}{% else %}{{ site.url }}{{ post.url }}{% endif %}">Comments</a>
|
||||
{% endif %}
|
||||
</p>
|
||||
{% endunless %}
|
||||
</header>
|
||||
{% endunless %}
|
||||
{% if index %}
|
||||
<div class="entry-content">{{ content | excerpt }}</div>
|
||||
{% capture excerpted %}{{ content | has_excerpt }}{% endcapture %}
|
||||
{% if excerpted == 'true' %}
|
||||
<footer>
|
||||
<a rel="full-article" href="{{ root_url }}{{ post.url }}">{{ site.excerpt_link }}</a>
|
||||
</footer>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
<div class="entry-content">{{ content }}</div>
|
||||
{% endif %}
|
|
@ -1,8 +0,0 @@
|
|||
{% if site.delicious_user %}
|
||||
<section>
|
||||
<h1>On Delicious</h1>
|
||||
<div id="delicious"></div>
|
||||
<script type="text/javascript" src="http://feeds.delicious.com/v2/json/{{ site.delicious_user }}?count={{ site.delicious_count }}&sort=date&callback=renderDeliciousLinks"></script>
|
||||
<p><a href="http://delicious.com/{{ site.delicious_user }}">My Delicious Bookmarks »</a></p>
|
||||
</section>
|
||||
{% endif %}
|
|
@ -1,30 +0,0 @@
|
|||
{% if site.github_user %}
|
||||
<section>
|
||||
<h1>GitHub Repos</h1>
|
||||
<ul id="gh_repos">
|
||||
<li class="loading">Status updating...</li>
|
||||
</ul>
|
||||
{% if site.github_show_profile_link %}
|
||||
<a href="https://github.com/{{site.github_user}}">@{{site.github_user}}</a> on GitHub
|
||||
{% endif %}
|
||||
<script type="text/javascript">
|
||||
$(document).ready(function(){
|
||||
if (!window.jXHR){
|
||||
var jxhr = document.createElement('script');
|
||||
jxhr.type = 'text/javascript';
|
||||
jxhr.src = '{{ root_url}}/javascripts/libs/jXHR.js';
|
||||
var s = document.getElementsByTagName('script')[0];
|
||||
s.parentNode.insertBefore(jxhr, s);
|
||||
}
|
||||
|
||||
github.showRepos({
|
||||
user: '{{site.github_user}}',
|
||||
count: {{site.github_repo_count}},
|
||||
skip_forks: {{site.github_skip_forks}},
|
||||
target: '#gh_repos'
|
||||
});
|
||||
});
|
||||
</script>
|
||||
<script src="{{ root_url }}/javascripts/github.js" type="text/javascript"> </script>
|
||||
</section>
|
||||
{% endif %}
|
|
@ -1,11 +0,0 @@
|
|||
{% if site.googleplus_user %}
|
||||
<section class="googleplus{% if site.googleplus_hidden %} googleplus-hidden{% endif %}">
|
||||
<h1>
|
||||
<a href="https://plus.google.com/{{ site.googleplus_user }}?rel=author">
|
||||
<img src="http://www.google.com/images/icons/ui/gprofile_button-32.png" width="32" height="32">
|
||||
Google+
|
||||
</a>
|
||||
</h1>
|
||||
</section>
|
||||
{% endif %}
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
{% if site.pinboard_user %}
|
||||
<section>
|
||||
<h1>My Pinboard</h1>
|
||||
<ul id="pinboard_linkroll">Fetching linkroll...</ul>
|
||||
<p><a href="http://pinboard.in/u:{{ site.pinboard_user }}">My Pinboard Bookmarks »</a></p>
|
||||
</section>
|
||||
<script type="text/javascript">
|
||||
var linkroll = 'pinboard_linkroll'; //id target for pinboard list
|
||||
var pinboard_user = "{{ site.pinboard_user }}"; //id target for pinboard list
|
||||
var pinboard_count = {{ site.pinboard_count }}; //id target for pinboard list
|
||||
(function(){
|
||||
var pinboardInit = document.createElement('script');
|
||||
pinboardInit.type = 'text/javascript';
|
||||
pinboardInit.async = true;
|
||||
pinboardInit.src = '{{ root_url }}/javascripts/pinboard.js';
|
||||
document.getElementsByTagName('head')[0].appendChild(pinboardInit);
|
||||
})();
|
||||
</script>
|
||||
{% endif %}
|
|
@ -1,10 +0,0 @@
|
|||
<section>
|
||||
<h1>Recent Posts</h1>
|
||||
<ul id="recent_posts">
|
||||
{% for post in site.posts limit: site.recent_posts %}
|
||||
<li class="post">
|
||||
<a href="{{ root_url }}{{ post.url }}">{% if site.titlecase %}{{ post.title | titlecase }}{% else %}{{ post.title }}{% endif %}</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</section>
|
|
@ -1,3 +0,0 @@
|
|||
{% comment %}
|
||||
Add content to be output at the bottom of each page. (You might use this for analytics scripts, for example)
|
||||
{% endcomment %}
|
|
@ -1,4 +0,0 @@
|
|||
<section>
|
||||
<h1>About Me</h1>
|
||||
<p>A little something about me.</p>
|
||||
</section>
|
|
@ -1,27 +0,0 @@
|
|||
---
|
||||
layout: null
|
||||
---
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<feed xmlns="http://www.w3.org/2005/Atom">
|
||||
|
||||
<title><![CDATA[{% if site.titlecase %}{{ page.title | titlecase | cdata_escape }}{% else %}{{ page.title | cdata_escape }}{% endif %} | {{ site.title | cdata_escape }}]]></title>
|
||||
<link href="{{ site.url }}/{{ page.feed_url }}" rel="self"/>
|
||||
<link href="{{ site.url }}/"/>
|
||||
<updated>{{ site.time | date_to_xmlschema }}</updated>
|
||||
<id>{{ site.url }}/</id>
|
||||
<author>
|
||||
<name><![CDATA[{{ site.author | strip_html }}]]></name>
|
||||
{% if site.email %}<email><![CDATA[{{ site.email }}]]></email>{% endif %}
|
||||
</author>
|
||||
<generator uri="http://octopress.org/">Octopress</generator>
|
||||
|
||||
{% for post in site.categories[page.category] limit: 5 %}
|
||||
<entry>
|
||||
<title type="html"><![CDATA[{% if site.titlecase %}{{ post.title | titlecase | cdata_escape }}{% else %}{{ post.title | cdata_escape }}{% endif %}]]></title>
|
||||
<link href="{{ site.url }}{{ post.url }}"/>
|
||||
<updated>{{ post.date | date_to_xmlschema }}</updated>
|
||||
<id>{{ site.url }}{{ post.id }}</id>
|
||||
<content type="html"><![CDATA[{{ post.content | expand_urls: site.url | markdownify | cdata_escape }}]]></content>
|
||||
</entry>
|
||||
{% endfor %}
|
||||
</feed>
|
|
@ -1,4 +0,0 @@
|
|||
<p>
|
||||
Copyright © {{ site.time | date: "%Y" }} - {{ site.author }} -
|
||||
<span class="credit">Powered by <a href="http://octopress.org">Octopress</a></span>
|
||||
</p>
|
|
@ -1,3 +0,0 @@
|
|||
<!--Fonts from Google"s Web font directory at http://google.com/webfonts -->
|
||||
<link href="//fonts.googleapis.com/css?family=PT+Serif:regular,italic,bold,bolditalic" rel="stylesheet" type="text/css">
|
||||
<link href="//fonts.googleapis.com/css?family=PT+Sans:regular,italic,bold,bolditalic" rel="stylesheet" type="text/css">
|
|
@ -1,6 +0,0 @@
|
|||
<hgroup>
|
||||
<h1><a href="{{ root_url }}/">{{ site.title }}</a></h1>
|
||||
{% if site.subtitle %}
|
||||
<h2>{{ site.subtitle }}</h2>
|
||||
{% endif %}
|
||||
</hgroup>
|
|
@ -1,4 +0,0 @@
|
|||
<ul class="main-navigation">
|
||||
<li><a href="{{ root_url }}/">Blog</a></li>
|
||||
<li><a href="{{ root_url }}/blog/archives">Archives</a></li>
|
||||
</ul>
|
|
@ -1,21 +0,0 @@
|
|||
{% comment %} Load script if disquss comments are enabled and `page.comments` is either empty (index) or set to true {% endcomment %}
|
||||
{% if site.disqus_short_name and page.comments != false %}
|
||||
<script type="text/javascript">
|
||||
var disqus_shortname = '{{ site.disqus_short_name }}';
|
||||
{% if page.comments == true %}
|
||||
{% comment %} `page.comments` can be only be set to true on pages/posts, so we embed the comments here. {% endcomment %}
|
||||
// var disqus_developer = 1;
|
||||
var disqus_identifier = '{{ site.url }}{{ page.url }}';
|
||||
var disqus_url = '{{ site.url }}{{ page.url }}';
|
||||
var disqus_script = 'embed.js';
|
||||
{% else %}
|
||||
{% comment %} As `page.comments` is empty, we must be on the index page. {% endcomment %}
|
||||
var disqus_script = 'count.js';
|
||||
{% endif %}
|
||||
(function () {
|
||||
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
|
||||
dsq.src = '//' + disqus_shortname + '.disqus.com/' + disqus_script;
|
||||
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
|
||||
}());
|
||||
</script>
|
||||
{% endif %}
|
|
@ -1,10 +0,0 @@
|
|||
{% if site.facebook_like %}
|
||||
<div id="fb-root"></div>
|
||||
<script>(function(d, s, id) {
|
||||
var js, fjs = d.getElementsByTagName(s)[0];
|
||||
if (d.getElementById(id)) {return;}
|
||||
js = d.createElement(s); js.id = id; js.async = true;
|
||||
js.src = "//connect.facebook.net/en_US/all.js#appId=212934732101925&xfbml=1";
|
||||
fjs.parentNode.insertBefore(js, fjs);
|
||||
}(document, 'script', 'facebook-jssdk'));</script>
|
||||
{% endif %}
|
|
@ -1 +0,0 @@
|
|||
{% include custom/footer.html %}
|
|
@ -1,13 +0,0 @@
|
|||
{% if site.google_analytics_tracking_id %}
|
||||
<script type="text/javascript">
|
||||
var _gaq = _gaq || [];
|
||||
_gaq.push(['_setAccount', '{{ site.google_analytics_tracking_id }}']);
|
||||
_gaq.push(['_trackPageview']);
|
||||
|
||||
(function() {
|
||||
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
|
||||
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
|
||||
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
|
||||
})();
|
||||
</script>
|
||||
{% endif %}
|
|
@ -1,9 +0,0 @@
|
|||
{% if site.google_plus_one %}
|
||||
<script type="text/javascript">
|
||||
(function() {
|
||||
var script = document.createElement('script'); script.type = 'text/javascript'; script.async = true;
|
||||
script.src = 'https://apis.google.com/js/plusone.js';
|
||||
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(script, s);
|
||||
})();
|
||||
</script>
|
||||
{% endif %}
|
|
@ -1,31 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<!--[if IEMobile 7 ]><html class="no-js iem7"><![endif]-->
|
||||
<!--[if lt IE 9]><html class="no-js lte-ie8"><![endif]-->
|
||||
<!--[if (gt IE 8)|(gt IEMobile 7)|!(IEMobile)|!(IE)]><!--><html class="no-js" lang="en"><!--<![endif]-->
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>{% if page.title %}{% if site.titlecase %}{{ page.title | titlecase }}{% else %}{{ page.title }}{% endif %} - {% endif %}{{ site.title }}</title>
|
||||
<meta name="author" content="{{ site.author }}">
|
||||
|
||||
{% capture description %}{% if page.description %}{{ page.description }}{% else %}{{ content | raw_content }}{% endif %}{% endcapture %}
|
||||
<meta name="description" content="{{ description | strip_html | condense_spaces | truncate:150 }}">
|
||||
{% if page.keywords %}<meta name="keywords" content="{{ page.keywords }}">{% endif %}
|
||||
|
||||
<!-- http://t.co/dKP3o1e -->
|
||||
<meta name="HandheldFriendly" content="True">
|
||||
<meta name="MobileOptimized" content="320">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="theme-color" content="#038FC7">
|
||||
|
||||
{% capture canonical %}{{ site.url }}{% if site.permalink contains '.html' %}{{ page.url }}{% else %}{{ page.url | remove:'index.html' | strip_slash }}{% endif %}{% endcapture %}
|
||||
<link rel="canonical" href="{{ canonical }}">
|
||||
<link href="{{ root_url }}/favicon.png" rel="icon">
|
||||
<link href="{{ root_url }}/stylesheets/screen.css" media="screen, projection" rel="stylesheet" type="text/css">
|
||||
<link href="{{ site.subscribe_rss }}" rel="alternate" title="{{site.title}}" type="application/atom+xml">
|
||||
<script src="{{ root_url }}/javascripts/modernizr-2.0.js"></script>
|
||||
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
|
||||
<script>!window.jQuery && document.write(unescape('%3Cscript src="./javascripts/libs/jquery.min.js"%3E%3C/script%3E'))</script>
|
||||
<script src="{{ root_url }}/javascripts/octopress.js" type="text/javascript"></script>
|
||||
{% include custom/head.html %}
|
||||
{% include google_analytics.html %}
|
||||
</head>
|
|
@ -1 +0,0 @@
|
|||
{% include custom/header.html %}
|
|
@ -1,15 +0,0 @@
|
|||
<ul class="subscription" data-subscription="rss{% if site.subscribe_email %} email{% endif %}">
|
||||
<li><a href="{{ site.subscribe_rss }}" rel="subscribe-rss" title="subscribe via RSS">RSS</a></li>
|
||||
{% if site.subscribe_email %}
|
||||
<li><a href="{{ site.subscribe_email }}" rel="subscribe-email" title="subscribe via email">Email</a></li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
{% if site.simple_search %}
|
||||
<form action="{{ site.simple_search }}" method="get">
|
||||
<fieldset role="search">
|
||||
<input type="hidden" name="q" value="site:{{ site.url | shorthand_url }}" />
|
||||
<input class="search" type="text" name="q" results="0" placeholder="Search"/>
|
||||
</fieldset>
|
||||
</form>
|
||||
{% endif %}
|
||||
{% include custom/navigation.html %}
|
|
@ -1,8 +0,0 @@
|
|||
{% if post.author %}
|
||||
{% assign author = post.author %}
|
||||
{% elsif page.author %}
|
||||
{% assign author = page.author %}
|
||||
{% else %}
|
||||
{% assign author = site.author %}
|
||||
{% endif %}
|
||||
{% if author %}<span class="byline author vcard">Posted by <span class="fn">{{ author }}</span></span>{% endif %}
|
|
@ -1,10 +0,0 @@
|
|||
{% capture category %}{% if post %}{{ post.categories | category_links | size }}{% else %}{{ page.categories | category_links | size }}{% endif %}{% endcapture %}
|
||||
{% unless category == '0' %}
|
||||
<span class="categories">
|
||||
{% if post %}
|
||||
{{ post.categories | category_links }}
|
||||
{% else %}
|
||||
{{ page.categories | category_links }}
|
||||
{% endif %}
|
||||
</span>
|
||||
{% endunless %}
|
|
@ -1,5 +0,0 @@
|
|||
{% if page.date %}{% capture time %}{{ page.date_time_html }}{% endcapture %}{% endif %}
|
||||
{% if post.date %}{% capture time %}{{ post.date_time_html }}{% endcapture %}{% endif %}
|
||||
|
||||
{% if page.updated %}{% capture updated %}{{ page.date_time_updated_html }}{% endcapture %}{% endif %}
|
||||
{% if post.updated %}{% capture updated %}{{ post.date_time_updated_html }}{% endcapture %}{% endif %}
|
|
@ -1 +0,0 @@
|
|||
<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
|
|
@ -1,11 +0,0 @@
|
|||
<div class="sharing">
|
||||
{% if site.twitter_tweet_button %}
|
||||
<a href="//twitter.com/share" class="twitter-share-button" data-url="{{ site.url }}{{ page.url }}" data-via="{{ site.twitter_user }}" data-counturl="{{ site.url }}{{ page.url }}" >Tweet</a>
|
||||
{% endif %}
|
||||
{% if site.google_plus_one %}
|
||||
<div class="g-plusone" data-size="{{ site.google_plus_one_size }}"></div>
|
||||
{% endif %}
|
||||
{% if site.facebook_like %}
|
||||
<div class="fb-like" data-send="true" data-width="450" data-show-faces="false"></div>
|
||||
{% endif %}
|
||||
</div>
|
|
@ -1,11 +0,0 @@
|
|||
{% if site.twitter_follow_button or site.twitter_tweet_button %}
|
||||
<script type="text/javascript">
|
||||
(function(){
|
||||
var twitterWidgets = document.createElement('script');
|
||||
twitterWidgets.type = 'text/javascript';
|
||||
twitterWidgets.async = true;
|
||||
twitterWidgets.src = '//platform.twitter.com/widgets.js';
|
||||
document.getElementsByTagName('head')[0].appendChild(twitterWidgets);
|
||||
})();
|
||||
</script>
|
||||
{% endif %}
|
|
@ -1,17 +0,0 @@
|
|||
---
|
||||
layout: page
|
||||
footer: false
|
||||
---
|
||||
|
||||
<div id="blog-archives" class="category">
|
||||
{% for post in site.categories[page.category] %}
|
||||
{% capture this_year %}{{ post.date | date: "%Y" }}{% endcapture %}
|
||||
{% unless year == this_year %}
|
||||
{% assign year = this_year %}
|
||||
<h2>{{ year }}</h2>
|
||||
{% endunless %}
|
||||
<article>
|
||||
{% include archive_post.html %}
|
||||
</article>
|
||||
{% endfor %}
|
||||
</div>
|
|
@ -1,14 +0,0 @@
|
|||
{% capture root_url %}{{ site.root | strip_slash }}{% endcapture %}
|
||||
{% include head.html %}
|
||||
<body {% if page.body_id %} id="{{ page.body_id }}" {% endif %} {% if page.sidebar == false %} class="no-sidebar" {% endif %} {% if page.sidebar == 'collapse' or site.sidebar == 'collapse' %} class="collapse-sidebar sidebar-footer" {% endif %}>
|
||||
<header role="banner">{% include header.html %}</header>
|
||||
<nav role="navigation">{% include navigation.html %}</nav>
|
||||
<div id="main">
|
||||
<div id="content">
|
||||
{{ content | expand_urls: root_url }}
|
||||
</div>
|
||||
</div>
|
||||
<footer role="contentinfo">{% include footer.html %}</footer>
|
||||
{% include after_footer.html %}
|
||||
</body>
|
||||
</html>
|
|
@ -1,42 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
---
|
||||
|
||||
<div>
|
||||
<article role="article">
|
||||
{% if page.title %}
|
||||
<header>
|
||||
<h1 class="entry-title">{% if site.titlecase %}{{ page.title | titlecase }}{% else %}{{ page.title }}{% endif %}</h1>
|
||||
{% if page.date %}<p class="meta">{% include post/date.html %}{{ time }}</p>{% endif %}
|
||||
</header>
|
||||
{% endif %}
|
||||
{{ content }}
|
||||
{% unless page.footer == false %}
|
||||
<footer>
|
||||
{% if page.date or page.author %}<p class="meta">
|
||||
{% if page.author %}{% include post/author.html %}{% endif %}
|
||||
{% include post/date.html %}{% if updated %}{{ updated }}{% else %}{{ time }}{% endif %}
|
||||
{% if page.categories %}{% include post/categories.html %}{% endif %}
|
||||
</p>{% endif %}
|
||||
{% unless page.sharing == false %}
|
||||
{% include post/sharing.html %}
|
||||
{% endunless %}
|
||||
</footer>
|
||||
{% endunless %}
|
||||
</article>
|
||||
{% if site.disqus_short_name and page.comments == true %}
|
||||
<section>
|
||||
<h1>Comments</h1>
|
||||
<div id="disqus_thread" aria-live="polite">{% include post/disqus_thread.html %}</div>
|
||||
</section>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% unless page.sidebar == false %}
|
||||
<aside class="sidebar">
|
||||
{% if site.page_asides.size %}
|
||||
{% include_array page_asides %}
|
||||
{% else %}
|
||||
{% include_array default_asides %}
|
||||
{% endif %}
|
||||
</aside>
|
||||
{% endunless %}
|
|
@ -1,43 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
single: true
|
||||
---
|
||||
|
||||
<div>
|
||||
<article class="hentry" role="article">
|
||||
{% include article.html %}
|
||||
<footer>
|
||||
<p class="meta">
|
||||
{% include post/author.html %}
|
||||
{% include post/date.html %}{{ time }}{% if updated %} {{ updated }}{% endif %}
|
||||
{% include post/categories.html %}
|
||||
</p>
|
||||
{% unless page.sharing == false %}
|
||||
{% include post/sharing.html %}
|
||||
{% endunless %}
|
||||
<p class="meta">
|
||||
{% if page.previous.url %}
|
||||
<a class="basic-alignment left" href="{{page.previous.url}}" title="Previous Post: {{page.previous.title}}">« {{page.previous.title}}</a>
|
||||
{% endif %}
|
||||
{% if page.next.url %}
|
||||
<a class="basic-alignment right" href="{{page.next.url}}" title="Next Post: {{page.next.title}}">{{page.next.title}} »</a>
|
||||
{% endif %}
|
||||
</p>
|
||||
</footer>
|
||||
</article>
|
||||
{% if site.disqus_short_name and page.comments == true %}
|
||||
<section>
|
||||
<h1>Comments</h1>
|
||||
<div id="disqus_thread" aria-live="polite">{% include post/disqus_thread.html %}</div>
|
||||
</section>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% unless page.sidebar == false %}
|
||||
<aside class="sidebar">
|
||||
{% if site.post_asides.size %}
|
||||
{% include_array post_asides %}
|
||||
{% else %}
|
||||
{% include_array default_asides %}
|
||||
{% endif %}
|
||||
</aside>
|
||||
{% endunless %}
|
|
@ -1,27 +0,0 @@
|
|||
---
|
||||
layout: null
|
||||
---
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<feed xmlns="http://www.w3.org/2005/Atom">
|
||||
|
||||
<title><![CDATA[{{ site.title | cdata_escape }}]]></title>
|
||||
<link href="{{ site.url }}/atom.xml" rel="self"/>
|
||||
<link href="{{ site.url }}/"/>
|
||||
<updated>{{ site.time | date_to_xmlschema }}</updated>
|
||||
<id>{{ site.url }}/</id>
|
||||
<author>
|
||||
<name><![CDATA[{{ site.author | strip_html }}]]></name>
|
||||
{% if site.email %}<email><![CDATA[{{ site.email }}]]></email>{% endif %}
|
||||
</author>
|
||||
<generator uri="http://octopress.org/">Octopress</generator>
|
||||
|
||||
{% for post in site.posts limit: 20 %}
|
||||
<entry>
|
||||
<title type="html"><![CDATA[{% if site.titlecase %}{{ post.title | titlecase | cdata_escape }}{% else %}{{ post.title | cdata_escape }}{% endif %}]]></title>
|
||||
<link href="{{ site.url }}{{ post.url }}"/>
|
||||
<updated>{{ post.date | date_to_xmlschema }}</updated>
|
||||
<id>{{ site.url }}{{ post.id }}</id>
|
||||
<content type="html"><![CDATA[{{ post.content | expand_urls: site.url | cdata_escape }}]]></content>
|
||||
</entry>
|
||||
{% endfor %}
|
||||
</feed>
|
|
@ -1,18 +0,0 @@
|
|||
---
|
||||
layout: page
|
||||
title: Blog Archive
|
||||
footer: false
|
||||
---
|
||||
|
||||
<div id="blog-archives">
|
||||
{% for post in site.posts reverse %}
|
||||
{% capture this_year %}{{ post.date | date: "%Y" }}{% endcapture %}
|
||||
{% unless year == this_year %}
|
||||
{% assign year = this_year %}
|
||||
<h2>{{ year }}</h2>
|
||||
{% endunless %}
|
||||
<article>
|
||||
{% include archive_post.html %}
|
||||
</article>
|
||||
{% endfor %}
|
||||
</div>
|
Binary file not shown.
Before Width: | Height: | Size: 17 KiB |
|
@ -1,29 +0,0 @@
|
|||
---
|
||||
layout: default
|
||||
---
|
||||
|
||||
<div class="blog-index">
|
||||
{% assign index = true %}
|
||||
{% for post in paginator.posts %}
|
||||
{% assign content = post.content %}
|
||||
<article>
|
||||
{% include article.html %}
|
||||
</article>
|
||||
{% endfor %}
|
||||
<div class="pagination">
|
||||
{% if paginator.next_page %}
|
||||
<a class="prev" href="{{paginator.next_page_path}}">← Older</a>
|
||||
{% endif %}
|
||||
<a href="/blog/archives">Blog Archives</a>
|
||||
{% if paginator.previous_page %}
|
||||
<a class="next" href="{{paginator.previous_page_path}}">Newer →</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
<aside class="sidebar">
|
||||
{% if site.blog_index_asides.size %}
|
||||
{% include_array blog_index_asides %}
|
||||
{% else %}
|
||||
{% include_array default_asides %}
|
||||
{% endif %}
|
||||
</aside>
|
|
@ -1,151 +0,0 @@
|
|||
function getNav() {
|
||||
var mainNav = $('ul.main-navigation, ul[role=main-navigation]').before('<fieldset class="mobile-nav">')
|
||||
var mobileNav = $('fieldset.mobile-nav').append('<select>');
|
||||
mobileNav.find('select').append('<option value="">Navigate…</option>');
|
||||
var addOption = function(i, option) {
|
||||
mobileNav.find('select').append('<option value="' + this.href + '">» ' + $(this).text() + '</option>');
|
||||
}
|
||||
mainNav.find('a').each(addOption);
|
||||
$('ul.subscription a').each(addOption);
|
||||
mobileNav.find('select').bind('change', function(event) {
|
||||
if (event.target.value) { window.location.href = event.target.value; }
|
||||
});
|
||||
}
|
||||
|
||||
function addSidebarToggler() {
|
||||
if(!$('body').hasClass('sidebar-footer')) {
|
||||
$('#content').append('<span class="toggle-sidebar"></span>');
|
||||
$('.toggle-sidebar').bind('click', function(e) {
|
||||
e.preventDefault();
|
||||
$('body').toggleClass('collapse-sidebar');
|
||||
});
|
||||
}
|
||||
var sections = $('aside.sidebar > section');
|
||||
if (sections.length > 1) {
|
||||
sections.each(function(index, section){
|
||||
if ((sections.length >= 3) && index % 3 === 0) {
|
||||
$(section).addClass("first");
|
||||
}
|
||||
var count = ((index +1) % 2) ? "odd" : "even";
|
||||
$(section).addClass(count);
|
||||
});
|
||||
}
|
||||
if (sections.length >= 3){ $('aside.sidebar').addClass('thirds'); }
|
||||
}
|
||||
|
||||
function testFeatures() {
|
||||
var features = ['maskImage'];
|
||||
$(features).map(function(i, feature) {
|
||||
if (Modernizr.testAllProps(feature)) {
|
||||
$('html').addClass(feature);
|
||||
} else {
|
||||
$('html').addClass('no-'+feature);
|
||||
}
|
||||
});
|
||||
if ("placeholder" in document.createElement("input")) {
|
||||
$('html').addClass('placeholder');
|
||||
} else {
|
||||
$('html').addClass('no-placeholder');
|
||||
}
|
||||
}
|
||||
|
||||
function addCodeLineNumbers() {
|
||||
if (navigator.appName === 'Microsoft Internet Explorer') { return; }
|
||||
$('div.gist-highlight').each(function(code) {
|
||||
var tableStart = '<table><tbody><tr><td class="gutter">',
|
||||
lineNumbers = '<pre class="line-numbers">',
|
||||
tableMiddle = '</pre></td><td class="code">',
|
||||
tableEnd = '</td></tr></tbody></table>',
|
||||
count = $('.line', code).length;
|
||||
for (var i=1;i<=count; i++) {
|
||||
lineNumbers += '<span class="line-number">'+i+'</span>\n';
|
||||
}
|
||||
var table = tableStart + lineNumbers + tableMiddle + '<pre>'+$('pre', code).html()+'</pre>' + tableEnd;
|
||||
$(code).html(table);
|
||||
});
|
||||
}
|
||||
|
||||
function flashVideoFallback(){
|
||||
var flashplayerlocation = "/assets/jwplayer/player.swf",
|
||||
flashplayerskin = "/assets/jwplayer/glow/glow.xml";
|
||||
$('video').each(function(i, video){
|
||||
video = $(video);
|
||||
if (!Modernizr.video.h264 && swfobject.getFlashPlayerVersion() || window.location.hash.indexOf("flash-test") !== -1){
|
||||
video.children('source[src$=mp4]').first().map(i, function(source){
|
||||
var src = $(source).attr('src'),
|
||||
id = 'video_'+Math.round(1 + Math.random()*(100000)),
|
||||
width = video.attr('width'),
|
||||
height = parseInt(video.attr('height'), 10) + 30;
|
||||
video.after('<div class="flash-video"><div><div id='+id+'>');
|
||||
swfobject.embedSWF(flashplayerlocation, id, width, height + 30, "9.0.0",
|
||||
{ file : src, image : video.attr('poster'), skin : flashplayerskin } ,
|
||||
{ movie : src, wmode : "opaque", allowfullscreen : "true" }
|
||||
);
|
||||
});
|
||||
video.remove();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
function wrapFlashVideos() {
|
||||
$('object').each(function(i, object) {
|
||||
if( $(object).find('param[name=movie]').length ){
|
||||
$(object).wrap('<div class="flash-video">')
|
||||
}
|
||||
});
|
||||
$('iframe[src*=vimeo],iframe[src*=youtube]').wrap('<div class="flash-video">')
|
||||
}
|
||||
|
||||
function renderDeliciousLinks(items) {
|
||||
var output = "<ul>";
|
||||
for (var i=0,l=items.length; i<l; i++) {
|
||||
output += '<li><a href="' + items[i].u + '" title="Tags: ' + (items[i].t == "" ? "" : items[i].t.join(', ')) + '">' + items[i].d + '</a></li>';
|
||||
}
|
||||
output += "</ul>";
|
||||
$('#delicious').html(output);
|
||||
}
|
||||
|
||||
$('document').ready(function() {
|
||||
testFeatures();
|
||||
wrapFlashVideos();
|
||||
flashVideoFallback();
|
||||
addCodeLineNumbers();
|
||||
getNav();
|
||||
addSidebarToggler();
|
||||
});
|
||||
|
||||
// iOS scaling bug fix
|
||||
// Rewritten version
|
||||
// By @mathias, @cheeaun and @jdalton
|
||||
// Source url: https://gist.github.com/901295
|
||||
(function(doc) {
|
||||
var addEvent = 'addEventListener',
|
||||
type = 'gesturestart',
|
||||
qsa = 'querySelectorAll',
|
||||
scales = [1, 1],
|
||||
meta = qsa in doc ? doc[qsa]('meta[name=viewport]') : [];
|
||||
function fix() {
|
||||
meta.content = 'width=device-width,minimum-scale=' + scales[0] + ',maximum-scale=' + scales[1];
|
||||
doc.removeEventListener(type, fix, true);
|
||||
}
|
||||
if ((meta = meta[meta.length - 1]) && addEvent in doc) {
|
||||
fix();
|
||||
scales = [0.25, 1.6];
|
||||
doc[addEvent](type, fix, true);
|
||||
}
|
||||
}(document));
|
||||
|
||||
/*! SWFObject v2.2 modified by Brandon Mathis to contain only what is necessary to dynamically embed flash objects
|
||||
* Uncompressed source in javascripts/libs/swfobject-dynamic.js
|
||||
* <http://code.google.com/p/swfobject/>
|
||||
released under the MIT License <http://www.opensource.org/licenses/mit-license.php>
|
||||
*/
|
||||
var swfobject=function(){function s(a,b,d){var q,k=n(d);if(g.wk&&g.wk<312)return q;if(k){if(typeof a.id==l)a.id=d;if(g.ie&&g.win){var e="",c;for(c in a)if(a[c]!=Object.prototype[c])c.toLowerCase()=="data"?b.movie=a[c]:c.toLowerCase()=="styleclass"?e+=' class="'+a[c]+'"':c.toLowerCase()!="classid"&&(e+=" "+c+'="'+a[c]+'"');c="";for(var f in b)b[f]!=Object.prototype[f]&&(c+='<param name="'+f+'" value="'+b[f]+'" />');k.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'+e+">"+c+
|
||||
"</object>";q=n(a.id)}else{f=i.createElement(o);f.setAttribute("type",m);for(var h in a)a[h]!=Object.prototype[h]&&(h.toLowerCase()=="styleclass"?f.setAttribute("class",a[h]):h.toLowerCase()!="classid"&&f.setAttribute(h,a[h]));for(e in b)b[e]!=Object.prototype[e]&&e.toLowerCase()!="movie"&&(a=f,c=e,h=b[e],d=i.createElement("param"),d.setAttribute("name",c),d.setAttribute("value",h),a.appendChild(d));k.parentNode.replaceChild(f,k);q=f}}return q}function n(a){var b=null;try{b=i.getElementById(a)}catch(d){}return b}
|
||||
function t(a){var b=g.pv,a=a.split(".");a[0]=parseInt(a[0],10);a[1]=parseInt(a[1],10)||0;a[2]=parseInt(a[2],10)||0;return b[0]>a[0]||b[0]==a[0]&&b[1]>a[1]||b[0]==a[0]&&b[1]==a[1]&&b[2]>=a[2]?!0:!1}function u(a){return/[\\\"<>\.;]/.exec(a)!=null&&typeof encodeURIComponent!=l?encodeURIComponent(a):a}var l="undefined",o="object",m="application/x-shockwave-flash",v=window,i=document,j=navigator,g=function(){var a=typeof i.getElementById!=l&&typeof i.getElementsByTagName!=l&&typeof i.createElement!=l,
|
||||
b=j.userAgent.toLowerCase(),d=j.platform.toLowerCase(),g=d?/win/.test(d):/win/.test(b),d=d?/mac/.test(d):/mac/.test(b),b=/webkit/.test(b)?parseFloat(b.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):!1,k=!+"\u000b1",e=[0,0,0],c=null;if(typeof j.plugins!=l&&typeof j.plugins["Shockwave Flash"]==o){if((c=j.plugins["Shockwave Flash"].description)&&!(typeof j.mimeTypes!=l&&j.mimeTypes[m]&&!j.mimeTypes[m].enabledPlugin))k=!1,c=c.replace(/^.*\s+(\S+\s+\S+$)/,"$1"),e[0]=parseInt(c.replace(/^(.*)\..*$/,"$1"),
|
||||
10),e[1]=parseInt(c.replace(/^.*\.(.*)\s.*$/,"$1"),10),e[2]=/[a-zA-Z]/.test(c)?parseInt(c.replace(/^.*[a-zA-Z]+(.*)$/,"$1"),10):0}else if(typeof v.ActiveXObject!=l)try{var f=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");if(f&&(c=f.GetVariable("$version")))k=!0,c=c.split(" ")[1].split(","),e=[parseInt(c[0],10),parseInt(c[1],10),parseInt(c[2],10)]}catch(h){}return{w3:a,pv:e,wk:b,ie:k,win:g,mac:d}}();return{embedSWF:function(a,b,d,i,k,e,c,f,h){var j={success:!1,id:b};if(g.w3&&!(g.wk&&g.wk<312)&&
|
||||
a&&b&&d&&i&&k){d+="";i+="";var p={};if(f&&typeof f===o)for(var m in f)p[m]=f[m];p.data=a;p.width=d;p.height=i;a={};if(c&&typeof c===o)for(var n in c)a[n]=c[n];if(e&&typeof e===o)for(var r in e)typeof a.flashvars!=l?a.flashvars+="&"+r+"="+e[r]:a.flashvars=r+"="+e[r];if(t(k))b=s(p,a,b),j.success=!0,j.ref=b}h&&h(j)},ua:g,getFlashPlayerVersion:function(){return{major:g.pv[0],minor:g.pv[1],release:g.pv[2]}},hasFlashPlayerVersion:t,createSWF:function(a,b,d){if(g.w3)return s(a,b,d)},getQueryParamValue:function(a){var b=
|
||||
i.location.search||i.location.hash;if(b){/\?/.test(b)&&(b=b.split("?")[1]);if(a==null)return u(b);for(var b=b.split("&"),d=0;d<b.length;d++)if(b[d].substring(0,b[d].indexOf("="))==a)return u(b[d].substring(b[d].indexOf("=")+1))}return""}}}();
|
||||
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
---
|
||||
layout: null
|
||||
---
|
||||
User-agent: *
|
||||
Disallow:
|
||||
|
||||
Sitemap: {{ site.url }}/sitemap.xml
|
|
@ -1,6 +0,0 @@
|
|||
language: ruby
|
||||
sudo: false
|
||||
cache: bundler
|
||||
script: travis_wait bundle exec rake generate
|
||||
after_success:
|
||||
- '[ "${TRAVIS_BRANCH}" = "current" ] && [ "${TRAVIS_PULL_REQUEST}" = "false" ] && bundle exec rake deploy || false'
|
54
CLA.md
54
CLA.md
|
@ -1,54 +0,0 @@
|
|||
# Contributor License Agreement
|
||||
|
||||
The following terms are used throughout this agreement:
|
||||
|
||||
**You** - the person or legal entity including its affiliates asked to accept this agreement.
|
||||
An affiliate is any entity that controls or is controlled by the legal entity, or is under common control with it.
|
||||
|
||||
**Project** - is an umbrella term that refers to any and all Home Assistant open source projects.
|
||||
|
||||
**Contribution** - any type of work that is submitted to a Project, including any modifications or additions to existing work.
|
||||
|
||||
**Submitted** - conveyed to a Project via a pull request, commit, issue, or any form of electronic, written, or
|
||||
verbal communication with Home Assistant, contributors or maintainers.
|
||||
|
||||
# 1. Grant of Copyright License.
|
||||
|
||||
Subject to the terms and conditions of this agreement, You grant to the Projects’ maintainers, contributors,
|
||||
users and to Home Assistant a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce,
|
||||
prepare derivative works of, publicly display, publicly perform, sublicense, and distribute Your contributions and such
|
||||
derivative works. Except for this license, You reserve all rights, title, and interest in your contributions.
|
||||
|
||||
# 2. Grant of Patent License.
|
||||
|
||||
Subject to the terms and conditions of this agreement, You grant to the Projects’ maintainers, contributors, users and to
|
||||
Home Assistant a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent
|
||||
license to make, have made, use, offer to sell, sell, import, and otherwise transfer your contributions, where such license
|
||||
applies only to those patent claims licensable by you that are necessarily infringed by your contribution or by combination of
|
||||
your contribution with the project to which this contribution was submitted.
|
||||
|
||||
If any entity institutes patent litigation - including cross-claim or counterclaim in a lawsuit - against You alleging that
|
||||
your contribution or any project it was submitted to constitutes or is responsible for direct or contributory patent infringement,
|
||||
then any patent licenses granted to that entity under this agreement shall terminate as of the date such litigation is filed.
|
||||
|
||||
# 3. Source of Contribution.
|
||||
|
||||
Your contribution is either your original creation, based upon previous work that, to the best of your knowledge,
|
||||
is covered under an appropriate open source license and you have the right under that license to submit that work with modifications,
|
||||
whether created in whole or in part by you, or you have clearly identified the source of the contribution and any license or other
|
||||
restriction (like related patents, trademarks, and license agreements) of which you are personally aware.
|
||||
|
||||
## Attribution
|
||||
|
||||
This Contributor License Agreement is adapted from the [GitHub CLA][github-cla].
|
||||
|
||||
## Signing
|
||||
|
||||
To sign this CLA you must first submit a pull request to a repository under the Home Assistant organization.
|
||||
|
||||
## Adoption
|
||||
|
||||
This Contributor License Agreement (CLA) was first announced on January 21st, 2017 in [this][cla-blog] blog post and adopted January 28th, 2017.
|
||||
|
||||
[github-cla]: https://cla.github.com/agreement
|
||||
[cla-blog]: https://home-assistant.io/blog/2017/01/21/home-assistant-governance/
|
|
@ -1,80 +0,0 @@
|
|||
# Contributor Covenant Code of Conduct
|
||||
|
||||
## Our Pledge
|
||||
|
||||
In the interest of fostering an open and welcoming environment, we as
|
||||
contributors and maintainers pledge to making participation in our project and
|
||||
our community a harassment-free experience for everyone, regardless of age, body
|
||||
size, disability, ethnicity, gender identity and expression, level of experience,
|
||||
nationality, personal appearance, race, religion, or sexual identity and
|
||||
orientation.
|
||||
|
||||
## Our Standards
|
||||
|
||||
Examples of behavior that contributes to creating a positive environment
|
||||
include:
|
||||
|
||||
* Using welcoming and inclusive language
|
||||
* Being respectful of differing viewpoints and experiences
|
||||
* Gracefully accepting constructive criticism
|
||||
* Focusing on what is best for the community
|
||||
* Showing empathy towards other community members
|
||||
|
||||
Examples of unacceptable behavior by participants include:
|
||||
|
||||
* The use of sexualized language or imagery and unwelcome sexual attention or
|
||||
advances
|
||||
* Trolling, insulting/derogatory comments, and personal or political attacks
|
||||
* Public or private harassment
|
||||
* Publishing others' private information, such as a physical or electronic
|
||||
address, without explicit permission
|
||||
* Other conduct which could reasonably be considered inappropriate in a
|
||||
professional setting
|
||||
|
||||
## Our Responsibilities
|
||||
|
||||
Project maintainers are responsible for clarifying the standards of acceptable
|
||||
behavior and are expected to take appropriate and fair corrective action in
|
||||
response to any instances of unacceptable behavior.
|
||||
|
||||
Project maintainers have the right and responsibility to remove, edit, or
|
||||
reject comments, commits, code, wiki edits, issues, and other contributions
|
||||
that are not aligned to this Code of Conduct, or to ban temporarily or
|
||||
permanently any contributor for other behaviors that they deem inappropriate,
|
||||
threatening, offensive, or harmful.
|
||||
|
||||
## Scope
|
||||
|
||||
This Code of Conduct applies both within project spaces and in public spaces
|
||||
when an individual is representing the project or its community. Examples of
|
||||
representing a project or community include using an official project e-mail
|
||||
address, posting via an official social media account, or acting as an appointed
|
||||
representative at an online or offline event. Representation of a project may be
|
||||
further defined and clarified by project maintainers.
|
||||
|
||||
## Enforcement
|
||||
|
||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
||||
reported by contacting the project team at [safety@home-assistant.io][email]. All
|
||||
complaints will be reviewed and investigated and will result in a response that
|
||||
is deemed necessary and appropriate to the circumstances. The project team is
|
||||
obligated to maintain confidentiality with regard to the reporter of an incident.
|
||||
Further details of specific enforcement policies may be posted separately.
|
||||
|
||||
Project maintainers who do not follow or enforce the Code of Conduct in good
|
||||
faith may face temporary or permanent repercussions as determined by other
|
||||
members of the project's leadership.
|
||||
|
||||
## Attribution
|
||||
|
||||
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
|
||||
available [here][version].
|
||||
|
||||
## Adoption
|
||||
|
||||
This Code of Conduct was first adopted January 21st, 2017 and announced in [this][coc-blog] blog post.
|
||||
|
||||
[homepage]: http://contributor-covenant.org
|
||||
[version]: http://contributor-covenant.org/version/1/4/
|
||||
[email]: mailto:safety@home-assistant.io
|
||||
[coc-blog]: https://home-assistant.io/blog/2017/01/21/home-assistant-governance/
|
27
Gemfile
27
Gemfile
|
@ -1,27 +0,0 @@
|
|||
source "https://rubygems.org"
|
||||
|
||||
ruby "> 2.3.0"
|
||||
|
||||
group :development do
|
||||
gem 'rake', '~> 10.0'
|
||||
gem 'jekyll', '~> 3.0'
|
||||
gem 'compass', '~> 0.12'
|
||||
gem 'sass-globbing', '~> 1.0'
|
||||
gem 'stringex', '~> 1.4'
|
||||
gem 'pry'
|
||||
|
||||
# See https://github.com/home-assistant/home-assistant.github.io/pull/3904
|
||||
gem 'rb-inotify', '< 0.9.9'
|
||||
end
|
||||
|
||||
group :jekyll_plugins do
|
||||
gem 'jekyll-paginate'
|
||||
gem 'jekyll-redirect-from'
|
||||
gem 'jekyll-sitemap'
|
||||
gem 'jekyll-time-to-read'
|
||||
gem 'octopress', '~> 3.0'
|
||||
gem 'octopress-include-tag'
|
||||
end
|
||||
|
||||
gem 'sinatra', '~> 1.4.2'
|
||||
gem 'nokogiri'
|
120
Gemfile.lock
120
Gemfile.lock
|
@ -1,120 +0,0 @@
|
|||
GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
addressable (2.5.2)
|
||||
public_suffix (>= 2.0.2, < 4.0)
|
||||
chunky_png (1.3.8)
|
||||
coderay (1.1.1)
|
||||
colorator (1.1.0)
|
||||
compass (0.12.7)
|
||||
chunky_png (~> 1.2)
|
||||
fssm (>= 0.2.7)
|
||||
sass (~> 3.2.19)
|
||||
ffi (1.9.18)
|
||||
forwardable-extended (2.6.0)
|
||||
fssm (0.2.10)
|
||||
jekyll (3.5.2)
|
||||
addressable (~> 2.4)
|
||||
colorator (~> 1.0)
|
||||
jekyll-sass-converter (~> 1.0)
|
||||
jekyll-watch (~> 1.1)
|
||||
kramdown (~> 1.3)
|
||||
liquid (~> 4.0)
|
||||
mercenary (~> 0.3.3)
|
||||
pathutil (~> 0.9)
|
||||
rouge (~> 1.7)
|
||||
safe_yaml (~> 1.0)
|
||||
jekyll-paginate (1.1.0)
|
||||
jekyll-redirect-from (0.12.1)
|
||||
jekyll (~> 3.3)
|
||||
jekyll-sass-converter (1.3.0)
|
||||
sass (~> 3.2)
|
||||
jekyll-sitemap (1.1.1)
|
||||
jekyll (~> 3.3)
|
||||
jekyll-time-to-read (0.1.2)
|
||||
jekyll
|
||||
jekyll-watch (1.5.0)
|
||||
listen (~> 3.0, < 3.1)
|
||||
kramdown (1.14.0)
|
||||
liquid (4.0.0)
|
||||
listen (3.0.8)
|
||||
rb-fsevent (~> 0.9, >= 0.9.4)
|
||||
rb-inotify (~> 0.9, >= 0.9.7)
|
||||
mercenary (0.3.6)
|
||||
method_source (0.8.2)
|
||||
mini_portile2 (2.3.0)
|
||||
nokogiri (1.8.2)
|
||||
mini_portile2 (~> 2.3.0)
|
||||
octopress (3.0.11)
|
||||
jekyll (>= 2.0)
|
||||
mercenary (~> 0.3.2)
|
||||
octopress-deploy
|
||||
octopress-escape-code (~> 2.0)
|
||||
octopress-hooks (~> 2.0)
|
||||
redcarpet (~> 3.0)
|
||||
titlecase
|
||||
octopress-deploy (1.3.0)
|
||||
colorator
|
||||
octopress-escape-code (2.1.1)
|
||||
jekyll (~> 3.0)
|
||||
octopress-hooks (2.6.2)
|
||||
jekyll (>= 2.0)
|
||||
octopress-include-tag (1.1.3)
|
||||
jekyll (>= 2.0)
|
||||
octopress-tag-helpers (~> 1.0)
|
||||
octopress-tag-helpers (1.0.8)
|
||||
jekyll (>= 2.0)
|
||||
pathutil (0.14.0)
|
||||
forwardable-extended (~> 2.6)
|
||||
pry (0.10.4)
|
||||
coderay (~> 1.1.0)
|
||||
method_source (~> 0.8.1)
|
||||
slop (~> 3.4)
|
||||
public_suffix (3.0.0)
|
||||
rack (1.6.9)
|
||||
rack-protection (1.5.5)
|
||||
rack
|
||||
rake (10.5.0)
|
||||
rb-fsevent (0.10.2)
|
||||
rb-inotify (0.9.8)
|
||||
ffi (>= 0.5.0)
|
||||
redcarpet (3.4.0)
|
||||
rouge (1.11.1)
|
||||
safe_yaml (1.0.4)
|
||||
sass (3.2.19)
|
||||
sass-globbing (1.1.5)
|
||||
sass (>= 3.1)
|
||||
sinatra (1.4.8)
|
||||
rack (~> 1.5)
|
||||
rack-protection (~> 1.4)
|
||||
tilt (>= 1.3, < 3)
|
||||
slop (3.6.0)
|
||||
stringex (1.5.1)
|
||||
tilt (2.0.8)
|
||||
titlecase (0.1.1)
|
||||
|
||||
PLATFORMS
|
||||
ruby
|
||||
|
||||
DEPENDENCIES
|
||||
compass (~> 0.12)
|
||||
jekyll (~> 3.0)
|
||||
jekyll-paginate
|
||||
jekyll-redirect-from
|
||||
jekyll-sitemap
|
||||
jekyll-time-to-read
|
||||
nokogiri
|
||||
octopress (~> 3.0)
|
||||
octopress-include-tag
|
||||
pry
|
||||
rake (~> 10.0)
|
||||
rb-inotify (< 0.9.9)
|
||||
sass-globbing (~> 1.0)
|
||||
sinatra (~> 1.4.2)
|
||||
stringex (~> 1.4)
|
||||
|
||||
RUBY VERSION
|
||||
ruby 2.4.1p111
|
||||
|
||||
BUNDLED WITH
|
||||
1.16.1
|
177
LICENSE.md
177
LICENSE.md
|
@ -1,177 +0,0 @@
|
|||
## creative commons
|
||||
|
||||
# Attribution-NonCommercial-ShareAlike 4.0 International
|
||||
|
||||
Creative Commons Corporation (“Creative Commons”) is not a law firm and does not provide legal services or legal advice. Distribution of Creative Commons public licenses does not create a lawyer-client or other relationship. Creative Commons makes its licenses and related information available on an “as-is” basis. Creative Commons gives no warranties regarding its licenses, any material licensed under their terms and conditions, or any related information. Creative Commons disclaims all liability for damages resulting from their use to the fullest extent possible.
|
||||
|
||||
### Using Creative Commons Public Licenses
|
||||
|
||||
Creative Commons public licenses provide a standard set of terms and conditions that creators and other rights holders may use to share original works of authorship and other material subject to copyright and certain other rights specified in the public license below. The following considerations are for informational purposes only, are not exhaustive, and do not form part of our licenses.
|
||||
|
||||
* __Considerations for licensors:__ Our public licenses are intended for use by those authorized to give the public permission to use material in ways otherwise restricted by copyright and certain other rights. Our licenses are irrevocable. Licensors should read and understand the terms and conditions of the license they choose before applying it. Licensors should also secure all rights necessary before applying our licenses so that the public can reuse the material as expected. Licensors should clearly mark any material not subject to the license. This includes other CC-licensed material, or material used under an exception or limitation to copyright. [More considerations for licensors](http://wiki.creativecommons.org/Considerations_for_licensors_and_licensees#Considerations_for_licensors).
|
||||
|
||||
* __Considerations for the public:__ By using one of our public licenses, a licensor grants the public permission to use the licensed material under specified terms and conditions. If the licensor’s permission is not necessary for any reason–for example, because of any applicable exception or limitation to copyright–then that use is not regulated by the license. Our licenses grant only permissions under copyright and certain other rights that a licensor has authority to grant. Use of the licensed material may still be restricted for other reasons, including because others have copyright or other rights in the material. A licensor may make special requests, such as asking that all changes be marked or described. Although not required by our licenses, you are encouraged to respect those requests where reasonable. [More considerations for the public](http://wiki.creativecommons.org/Considerations_for_licensors_and_licensees#Considerations_for_licensees).
|
||||
|
||||
## Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International Public License
|
||||
|
||||
By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and conditions of this Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International Public License ("Public License"). To the extent this Public License may be interpreted as a contract, You are granted the Licensed Rights in consideration of Your acceptance of these terms and conditions, and the Licensor grants You such rights in consideration of benefits the Licensor receives from making the Licensed Material available under these terms and conditions.
|
||||
|
||||
### Section 1 – Definitions.
|
||||
|
||||
a. __Adapted Material__ means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated, altered, arranged, transformed, or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor. For purposes of this Public License, where the Licensed Material is a musical work, performance, or sound recording, Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image.
|
||||
|
||||
b. __Adapter's License__ means the license You apply to Your Copyright and Similar Rights in Your contributions to Adapted Material in accordance with the terms and conditions of this Public License.
|
||||
|
||||
c. __BY-NC-SA Compatible License__ means a license listed at [creativecommons.org/compatiblelicenses](http://creativecommons.org/compatiblelicenses), approved by Creative Commons as essentially the equivalent of this Public License.
|
||||
|
||||
d. __Copyright and Similar Rights__ means copyright and/or similar rights closely related to copyright including, without limitation, performance, broadcast, sound recording, and Sui Generis Database Rights, without regard to how the rights are labeled or categorized. For purposes of this Public License, the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights.
|
||||
|
||||
e. __Effective Technological Measures__ means those measures that, in the absence of proper authority, may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996, and/or similar international agreements.
|
||||
|
||||
f. __Exceptions and Limitations__ means fair use, fair dealing, and/or any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material.
|
||||
|
||||
g. __License Elements__ means the license attributes listed in the name of a Creative Commons Public License. The License Elements of this Public License are Attribution, NonCommercial, and ShareAlike.
|
||||
|
||||
h. __Licensed Material__ means the artistic or literary work, database, or other material to which the Licensor applied this Public License.
|
||||
|
||||
i. __Licensed Rights__ means the rights granted to You subject to the terms and conditions of this Public License, which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license.
|
||||
|
||||
h. __Licensor__ means the individual(s) or entity(ies) granting rights under this Public License.
|
||||
|
||||
i. __NonCommercial__ means not primarily intended for or directed towards commercial advantage or monetary compensation. For purposes of this Public License, the exchange of the Licensed Material for other material subject to Copyright and Similar Rights by digital file-sharing or similar means is NonCommercial provided there is no payment of monetary compensation in connection with the exchange.
|
||||
|
||||
j. __Share__ means to provide material to the public by any means or process that requires permission under the Licensed Rights, such as reproduction, public display, public performance, distribution, dissemination, communication, or importation, and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them.
|
||||
|
||||
k. __Sui Generis Database Rights__ means rights other than copyright resulting from Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, as amended and/or succeeded, as well as other essentially equivalent rights anywhere in the world.
|
||||
|
||||
l. __You__ means the individual or entity exercising the Licensed Rights under this Public License. Your has a corresponding meaning.
|
||||
|
||||
### Section 2 – Scope.
|
||||
|
||||
a. ___License grant.___
|
||||
|
||||
1. Subject to the terms and conditions of this Public License, the Licensor hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive, irrevocable license to exercise the Licensed Rights in the Licensed Material to:
|
||||
|
||||
A. reproduce and Share the Licensed Material, in whole or in part, for NonCommercial purposes only; and
|
||||
|
||||
B. produce, reproduce, and Share Adapted Material for NonCommercial purposes only.
|
||||
|
||||
2. __Exceptions and Limitations.__ For the avoidance of doubt, where Exceptions and Limitations apply to Your use, this Public License does not apply, and You do not need to comply with its terms and conditions.
|
||||
|
||||
3. __Term.__ The term of this Public License is specified in Section 6(a).
|
||||
|
||||
4. __Media and formats; technical modifications allowed.__ The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created, and to make technical modifications necessary to do so. The Licensor waives and/or agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights, including technical modifications necessary to circumvent Effective Technological Measures. For purposes of this Public License, simply making modifications authorized by this Section 2(a)(4) never produces Adapted Material.
|
||||
|
||||
5. __Downstream recipients.__
|
||||
|
||||
A. __Offer from the Licensor – Licensed Material.__ Every recipient of the Licensed Material automatically receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License.
|
||||
|
||||
B. __Additional offer from the Licensor – Adapted Material.__ Every recipient of Adapted Material from You automatically receives an offer from the Licensor to exercise the Licensed Rights in the Adapted Material under the conditions of the Adapter’s License You apply.
|
||||
|
||||
C. __No downstream restrictions.__ You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material.
|
||||
|
||||
6. __No endorsement.__ Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are, or that Your use of the Licensed Material is, connected with, or sponsored, endorsed, or granted official status by, the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i).
|
||||
|
||||
b. ___Other rights.___
|
||||
|
||||
1. Moral rights, such as the right of integrity, are not licensed under this Public License, nor are publicity, privacy, and/or other similar personality rights; however, to the extent possible, the Licensor waives and/or agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights, but not otherwise.
|
||||
|
||||
2. Patent and trademark rights are not licensed under this Public License.
|
||||
|
||||
3. To the extent possible, the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights, whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme. In all other cases the Licensor expressly reserves any right to collect such royalties, including when the Licensed Material is used other than for NonCommercial purposes.
|
||||
|
||||
### Section 3 – License Conditions.
|
||||
|
||||
Your exercise of the Licensed Rights is expressly made subject to the following conditions.
|
||||
|
||||
a. ___Attribution.___
|
||||
|
||||
1. If You Share the Licensed Material (including in modified form), You must:
|
||||
|
||||
A. retain the following if it is supplied by the Licensor with the Licensed Material:
|
||||
|
||||
i. identification of the creator(s) of the Licensed Material and any others designated to receive attribution, in any reasonable manner requested by the Licensor (including by pseudonym if designated);
|
||||
|
||||
ii. a copyright notice;
|
||||
|
||||
iii. a notice that refers to this Public License;
|
||||
|
||||
iv. a notice that refers to the disclaimer of warranties;
|
||||
|
||||
v. a URI or hyperlink to the Licensed Material to the extent reasonably practicable;
|
||||
|
||||
B. indicate if You modified the Licensed Material and retain an indication of any previous modifications; and
|
||||
|
||||
C. indicate the Licensed Material is licensed under this Public License, and include the text of, or the URI or hyperlink to, this Public License.
|
||||
|
||||
2. You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium, means, and context in which You Share the Licensed Material. For example, it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information.
|
||||
|
||||
3. If requested by the Licensor, You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable.
|
||||
|
||||
b. ___ShareAlike.___
|
||||
|
||||
In addition to the conditions in Section 3(a), if You Share Adapted Material You produce, the following conditions also apply.
|
||||
|
||||
1. The Adapter’s License You apply must be a Creative Commons license with the same License Elements, this version or later, or a BY-NC-SA Compatible License.
|
||||
|
||||
2. You must include the text of, or the URI or hyperlink to, the Adapter's License You apply. You may satisfy this condition in any reasonable manner based on the medium, means, and context in which You Share Adapted Material.
|
||||
|
||||
3. You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, Adapted Material that restrict exercise of the rights granted under the Adapter's License You apply.
|
||||
|
||||
### Section 4 – Sui Generis Database Rights.
|
||||
|
||||
Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material:
|
||||
|
||||
a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, reuse, reproduce, and Share all or a substantial portion of the contents of the database for NonCommercial purposes only;
|
||||
|
||||
b. if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights, then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material, including for purposes of Section 3(b); and
|
||||
|
||||
c. You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database.
|
||||
|
||||
For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under this Public License where the Licensed Rights include other Copyright and Similar Rights.
|
||||
|
||||
### Section 5 – Disclaimer of Warranties and Limitation of Liability.
|
||||
|
||||
a. __Unless otherwise separately undertaken by the Licensor, to the extent possible, the Licensor offers the Licensed Material as-is and as-available, and makes no representations or warranties of any kind concerning the Licensed Material, whether express, implied, statutory, or other. This includes, without limitation, warranties of title, merchantability, fitness for a particular purpose, non-infringement, absence of latent or other defects, accuracy, or the presence or absence of errors, whether or not known or discoverable. Where disclaimers of warranties are not allowed in full or in part, this disclaimer may not apply to You.__
|
||||
|
||||
b. __To the extent possible, in no event will the Licensor be liable to You on any legal theory (including, without limitation, negligence) or otherwise for any direct, special, indirect, incidental, consequential, punitive, exemplary, or other losses, costs, expenses, or damages arising out of this Public License or use of the Licensed Material, even if the Licensor has been advised of the possibility of such losses, costs, expenses, or damages. Where a limitation of liability is not allowed in full or in part, this limitation may not apply to You.__
|
||||
|
||||
c. The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability.
|
||||
|
||||
### Section 6 – Term and Termination.
|
||||
|
||||
a. This Public License applies for the term of the Copyright and Similar Rights licensed here. However, if You fail to comply with this Public License, then Your rights under this Public License terminate automatically.
|
||||
|
||||
b. Where Your right to use the Licensed Material has terminated under Section 6(a), it reinstates:
|
||||
|
||||
1. automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery of the violation; or
|
||||
|
||||
2. upon express reinstatement by the Licensor.
|
||||
|
||||
For the avoidance of doubt, this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License.
|
||||
|
||||
c. For the avoidance of doubt, the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time; however, doing so will not terminate this Public License.
|
||||
|
||||
d. Sections 1, 5, 6, 7, and 8 survive termination of this Public License.
|
||||
|
||||
### Section 7 – Other Terms and Conditions.
|
||||
|
||||
a. The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed.
|
||||
|
||||
b. Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License.
|
||||
|
||||
### Section 8 – Interpretation.
|
||||
|
||||
a. For the avoidance of doubt, this Public License does not, and shall not be interpreted to, reduce, limit, restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License.
|
||||
|
||||
b. To the extent possible, if any provision of this Public License is deemed unenforceable, it shall be automatically reformed to the minimum extent necessary to make it enforceable. If the provision cannot be reformed, it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions.
|
||||
|
||||
c. No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor.
|
||||
|
||||
d. Nothing in this Public License constitutes or may be interpreted as a limitation upon, or waiver of, any privileges and immunities that apply to the Licensor or You, including from the legal processes of any jurisdiction or authority.
|
||||
|
||||
```
|
||||
Creative Commons is not a party to its public licenses. Notwithstanding, Creative Commons may elect to apply one of its public licenses to material it publishes and in those instances will be considered the “Licensor.” Except for the limited purpose of indicating that material is shared under a Creative Commons public license or as otherwise permitted by the Creative Commons policies published at [creativecommons.org/policies](http://creativecommons.org/policies), Creative Commons does not authorize the use of the trademark “Creative Commons” or any other trademark or logo of Creative Commons without its prior written consent including, without limitation, in connection with any unauthorized modifications to any of its public licenses or any other arrangements, understandings, or agreements concerning use of licensed material. For the avoidance of doubt, this paragraph does not form part of the public licenses.
|
||||
|
||||
Creative Commons may be contacted at creativecommons.org
|
||||
```
|
|
@ -1,34 +0,0 @@
|
|||
[](https://discord.gg/CxqDrfU)
|
||||
[](https://travis-ci.org/home-assistant/home-assistant.github.io)
|
||||
[](http://www.krihelinator.xyz)
|
||||
[](https://creativecommons.org/licenses/by-nc-sa/4.0/)
|
||||
|
||||
# Home Assistant website
|
||||
|
||||
This is the source for the [Home-Assistant.io website](https://home-assistant.io).
|
||||
|
||||
## Setup
|
||||
|
||||
Setting up to contribute to documentation and the process for submitting pull requests is [explained here](https://home-assistant.io/developers/documentation/).
|
||||
|
||||
## Site preview
|
||||
|
||||
In order to make the preview available on [http://127.0.0.1:4000](http://127.0.0.1:4000), use the command as follows:
|
||||
|
||||
```bash
|
||||
bundle exec rake preview
|
||||
```
|
||||
|
||||
## Speeding up site generation
|
||||
|
||||
Every release we post long changelogs to the website. This slows down generation of the website significantly! We include some tools to temporarily exclude the blog posts that you're not working on out of the way.
|
||||
|
||||
```bash
|
||||
bundle exec rake isolate[filename-of-blogpost]
|
||||
```
|
||||
|
||||
When you're done working on the site, run the following command to move the posts back again:
|
||||
|
||||
```bash
|
||||
bundle exec rake integrate
|
||||
```
|
429
Rakefile
429
Rakefile
|
@ -1,429 +0,0 @@
|
|||
require "rubygems"
|
||||
require "bundler/setup"
|
||||
require "stringex"
|
||||
|
||||
## -- Rsync Deploy config -- ##
|
||||
# Be sure your public key is listed in your server's ~/.ssh/authorized_keys file
|
||||
ssh_user = "user@domain.com"
|
||||
ssh_port = "22"
|
||||
document_root = "~/website.com/"
|
||||
rsync_delete = false
|
||||
rsync_args = "" # Any extra arguments to pass to rsync
|
||||
deploy_default = "push"
|
||||
|
||||
# This will be configured for you when you run config_deploy
|
||||
deploy_branch = "master"
|
||||
|
||||
## -- Misc Configs -- ##
|
||||
|
||||
public_dir = "public/" # compiled site directory
|
||||
source_dir = "source" # source file directory
|
||||
blog_index_dir = 'source/blog' # directory for your blog's index page (if you put your index in source/blog/index.html, set this to 'source/blog')
|
||||
deploy_dir = "_deploy" # deploy directory (for Github pages deployment)
|
||||
stash_dir = "_stash" # directory to stash posts for speedy generation
|
||||
posts_dir = "_posts" # directory for blog files
|
||||
themes_dir = ".themes" # directory for blog files
|
||||
new_post_ext = "markdown" # default new post file extension when using the new_post task
|
||||
new_page_ext = "markdown" # default new page file extension when using the new_page task
|
||||
server_port = "4000" # port for preview server eg. localhost:4000
|
||||
|
||||
if (/cygwin|mswin|mingw|bccwin|wince|emx/ =~ RUBY_PLATFORM) != nil
|
||||
puts '## Set the codepage to 65001 for Windows machines'
|
||||
`chcp 65001`
|
||||
end
|
||||
|
||||
desc "Initial setup for Octopress: copies the default theme into the path of Jekyll's generator. Rake install defaults to rake install[classic] to install a different theme run rake install[some_theme_name]"
|
||||
task :install, :theme do |t, args|
|
||||
if File.directory?(source_dir) || File.directory?("sass")
|
||||
abort("rake aborted!") if ask("A theme is already installed, proceeding will overwrite existing files. Are you sure?", ['y', 'n']) == 'n'
|
||||
end
|
||||
# copy theme into working Jekyll directories
|
||||
theme = args.theme || 'classic'
|
||||
puts "## Copying "+theme+" theme into ./#{source_dir} and ./sass"
|
||||
mkdir_p source_dir
|
||||
cp_r "#{themes_dir}/#{theme}/source/.", source_dir
|
||||
mkdir_p "sass"
|
||||
cp_r "#{themes_dir}/#{theme}/sass/.", "sass"
|
||||
mkdir_p "#{source_dir}/#{posts_dir}"
|
||||
mkdir_p public_dir
|
||||
end
|
||||
|
||||
#######################
|
||||
# Working with Jekyll #
|
||||
#######################
|
||||
|
||||
desc "Generate jekyll site"
|
||||
task :generate do
|
||||
raise "### You haven't set anything up yet. First run `rake install` to set up an Octopress theme." unless File.directory?(source_dir)
|
||||
puts "## Generating Site with Jekyll"
|
||||
success = system "compass compile --css-dir #{source_dir}/stylesheets"
|
||||
abort("Generating CSS failed") unless success
|
||||
success = system "jekyll build"
|
||||
abort("Generating site failed") unless success
|
||||
if ENV["CONTEXT"] != 'production'
|
||||
File.open("#{public_dir}robots.txt", 'w') do |f|
|
||||
f.write "User-agent: *\n"
|
||||
f.write "Disallow: /\n"
|
||||
end
|
||||
end
|
||||
public_dir
|
||||
end
|
||||
|
||||
desc "Watch the site and regenerate when it changes"
|
||||
task :watch do
|
||||
raise "### You haven't set anything up yet. First run `rake install` to set up an Octopress theme." unless File.directory?(source_dir)
|
||||
puts "Starting to watch source with Jekyll and Compass."
|
||||
system "compass compile --css-dir #{source_dir}/stylesheets" unless File.exist?("#{source_dir}/stylesheets/screen.css")
|
||||
jekyllPid = Process.spawn({"OCTOPRESS_ENV"=>"preview"}, "jekyll build --watch --incremental")
|
||||
compassPid = Process.spawn("compass watch")
|
||||
|
||||
trap("INT") {
|
||||
[jekyllPid, compassPid].each { |pid| Process.kill(9, pid) rescue Errno::ESRCH }
|
||||
exit 0
|
||||
}
|
||||
|
||||
[jekyllPid, compassPid].each { |pid| Process.wait(pid) }
|
||||
end
|
||||
|
||||
desc "preview the site in a web browser"
|
||||
task :preview, :listen do |t, args|
|
||||
listen_addr = args[:listen] || '127.0.0.1'
|
||||
raise "### You haven't set anything up yet. First run `rake install` to set up an Octopress theme." unless File.directory?(source_dir)
|
||||
puts "Starting to watch source with Jekyll and Compass. Starting Rack on port #{server_port}"
|
||||
system "compass compile --css-dir #{source_dir}/stylesheets" unless File.exist?("#{source_dir}/stylesheets/screen.css")
|
||||
jekyllPid = Process.spawn({"OCTOPRESS_ENV"=>"preview"}, "jekyll build --watch --incremental")
|
||||
compassPid = Process.spawn("compass watch")
|
||||
rackupPid = Process.spawn("rackup --port #{server_port} --host #{listen_addr}")
|
||||
|
||||
trap("INT") {
|
||||
[jekyllPid, compassPid, rackupPid].each { |pid| Process.kill(9, pid) rescue Errno::ESRCH }
|
||||
exit 0
|
||||
}
|
||||
|
||||
[jekyllPid, compassPid, rackupPid].each { |pid| Process.wait(pid) }
|
||||
end
|
||||
|
||||
# usage rake new_post[my-new-post] or rake new_post['my new post'] or rake new_post (defaults to "new-post")
|
||||
desc "Begin a new post in #{source_dir}/#{posts_dir}"
|
||||
task :new_post, :title do |t, args|
|
||||
if args.title
|
||||
title = args.title
|
||||
else
|
||||
title = get_stdin("Enter a title for your post: ")
|
||||
end
|
||||
raise "### You haven't set anything up yet. First run `rake install` to set up an Octopress theme." unless File.directory?(source_dir)
|
||||
mkdir_p "#{source_dir}/#{posts_dir}"
|
||||
filename = "#{source_dir}/#{posts_dir}/#{Time.now.strftime('%Y-%m-%d')}-#{title.to_url}.#{new_post_ext}"
|
||||
if File.exist?(filename)
|
||||
abort("rake aborted!") if ask("#{filename} already exists. Do you want to overwrite?", ['y', 'n']) == 'n'
|
||||
end
|
||||
puts "Creating new post: #{filename}"
|
||||
open(filename, 'w') do |post|
|
||||
post.puts "---"
|
||||
post.puts "layout: post"
|
||||
post.puts "title: \"#{title.gsub(/&/,'&')}\""
|
||||
post.puts "date: #{Time.now.strftime('%Y-%m-%d %H:%M:%S %z')}"
|
||||
post.puts "comments: true"
|
||||
post.puts "categories: "
|
||||
post.puts "---"
|
||||
end
|
||||
end
|
||||
|
||||
# usage rake new_page[my-new-page] or rake new_page[my-new-page.html] or rake new_page (defaults to "new-page.markdown")
|
||||
desc "Create a new page in #{source_dir}/(filename)/index.#{new_page_ext}"
|
||||
task :new_page, :filename do |t, args|
|
||||
raise "### You haven't set anything up yet. First run `rake install` to set up an Octopress theme." unless File.directory?(source_dir)
|
||||
args.with_defaults(:filename => 'new-page')
|
||||
page_dir = [source_dir]
|
||||
if args.filename.downcase =~ /(^.+\/)?(.+)/
|
||||
filename, dot, extension = $2.rpartition('.').reject(&:empty?) # Get filename and extension
|
||||
title = filename
|
||||
page_dir.concat($1.downcase.sub(/^\//, '').split('/')) unless $1.nil? # Add path to page_dir Array
|
||||
if extension.nil?
|
||||
page_dir << filename
|
||||
filename = "index"
|
||||
end
|
||||
extension ||= new_page_ext
|
||||
page_dir = page_dir.map! { |d| d = d.to_url }.join('/') # Sanitize path
|
||||
filename = filename.downcase.to_url
|
||||
|
||||
mkdir_p page_dir
|
||||
file = "#{page_dir}/#{filename}.#{extension}"
|
||||
if File.exist?(file)
|
||||
abort("rake aborted!") if ask("#{file} already exists. Do you want to overwrite?", ['y', 'n']) == 'n'
|
||||
end
|
||||
puts "Creating new page: #{file}"
|
||||
open(file, 'w') do |page|
|
||||
page.puts "---"
|
||||
page.puts "layout: page"
|
||||
page.puts "title: \"#{title}\""
|
||||
page.puts "date: #{Time.now.strftime('%Y-%m-%d %H:%M')}"
|
||||
page.puts "comments: true"
|
||||
page.puts "sharing: true"
|
||||
page.puts "footer: true"
|
||||
page.puts "---"
|
||||
end
|
||||
else
|
||||
puts "Syntax error: #{args.filename} contains unsupported characters"
|
||||
end
|
||||
end
|
||||
|
||||
# usage rake isolate[my-post]
|
||||
desc "Move all other posts than the one currently being worked on to a temporary stash location (stash) so regenerating the site happens much more quickly."
|
||||
task :isolate, :filename do |t, args|
|
||||
stash_dir = "#{source_dir}/#{stash_dir}"
|
||||
FileUtils.mkdir(stash_dir) unless File.exist?(stash_dir)
|
||||
Dir.glob("#{source_dir}/#{posts_dir}/*.*") do |post|
|
||||
FileUtils.mv post, stash_dir unless post.include?(args.filename)
|
||||
end
|
||||
end
|
||||
|
||||
desc "Move all stashed posts back into the posts directory, ready for site generation."
|
||||
task :integrate do
|
||||
FileUtils.mv Dir.glob("#{source_dir}/#{stash_dir}/*.*"), "#{source_dir}/#{posts_dir}/"
|
||||
end
|
||||
|
||||
desc "Clean out caches: .pygments-cache, .gist-cache, .sass-cache"
|
||||
task :clean do
|
||||
rm_rf [Dir.glob(".pygments-cache/**"), Dir.glob(".gist-cache/**"), Dir.glob(".sass-cache/**"), "source/stylesheets/screen.css"]
|
||||
end
|
||||
|
||||
desc "Move sass to sass.old, install sass theme updates, replace sass/custom with sass.old/custom"
|
||||
task :update_style, :theme do |t, args|
|
||||
theme = args.theme || 'classic'
|
||||
if File.directory?("sass.old")
|
||||
puts "removed existing sass.old directory"
|
||||
rm_r "sass.old", :secure=>true
|
||||
end
|
||||
mv "sass", "sass.old"
|
||||
puts "## Moved styles into sass.old/"
|
||||
cp_r "#{themes_dir}/"+theme+"/sass/", "sass", :remove_destination=>true
|
||||
cp_r "sass.old/custom/.", "sass/custom/", :remove_destination=>true
|
||||
puts "## Updated Sass ##"
|
||||
end
|
||||
|
||||
desc "Move source to source.old, install source theme updates, replace source/_includes/navigation.html with source.old's navigation"
|
||||
task :update_source, :theme do |t, args|
|
||||
theme = args.theme || 'classic'
|
||||
if File.directory?("#{source_dir}.old")
|
||||
puts "## Removed existing #{source_dir}.old directory"
|
||||
rm_r "#{source_dir}.old", :secure=>true
|
||||
end
|
||||
mkdir "#{source_dir}.old"
|
||||
cp_r "#{source_dir}/.", "#{source_dir}.old"
|
||||
puts "## Copied #{source_dir} into #{source_dir}.old/"
|
||||
cp_r "#{themes_dir}/"+theme+"/source/.", source_dir, :remove_destination=>true
|
||||
cp_r "#{source_dir}.old/_includes/custom/.", "#{source_dir}/_includes/custom/", :remove_destination=>true
|
||||
cp "#{source_dir}.old/favicon.png", source_dir
|
||||
mv "#{source_dir}/index.html", "#{blog_index_dir}", :force=>true if blog_index_dir != source_dir
|
||||
cp "#{source_dir}.old/index.html", source_dir if blog_index_dir != source_dir && File.exists?("#{source_dir}.old/index.html")
|
||||
puts "## Updated #{source_dir} ##"
|
||||
end
|
||||
|
||||
##############
|
||||
# Deploying #
|
||||
##############
|
||||
|
||||
desc "Default deploy task"
|
||||
task :deploy do
|
||||
# Check if preview posts exist, which should not be published
|
||||
if File.exists?(".preview-mode")
|
||||
puts "## Found posts in preview mode, regenerating files ..."
|
||||
File.delete(".preview-mode")
|
||||
Rake::Task[:generate].execute
|
||||
end
|
||||
|
||||
Rake::Task[:copydot].invoke(source_dir, public_dir)
|
||||
Rake::Task["#{deploy_default}"].execute
|
||||
end
|
||||
|
||||
desc "Generate website and deploy"
|
||||
task :gen_deploy => [:integrate, :generate, :deploy] do
|
||||
end
|
||||
|
||||
desc "copy dot files for deployment"
|
||||
task :copydot, :source, :dest do |t, args|
|
||||
FileList["#{args.source}/**/.*"].exclude("**/.", "**/..", "**/.DS_Store", "**/._*").each do |file|
|
||||
cp_r file, file.gsub(/#{args.source}/, "#{args.dest}") unless File.directory?(file)
|
||||
end
|
||||
end
|
||||
|
||||
desc "Deploy website via rsync"
|
||||
task :rsync do
|
||||
exclude = ""
|
||||
if File.exists?('./rsync-exclude')
|
||||
exclude = "--exclude-from '#{File.expand_path('./rsync-exclude')}'"
|
||||
end
|
||||
puts "## Deploying website via Rsync"
|
||||
ok_failed system("rsync -avze 'ssh -p #{ssh_port}' #{exclude} #{rsync_args} #{"--delete" unless rsync_delete == false} #{public_dir}/ #{ssh_user}:#{document_root}")
|
||||
end
|
||||
|
||||
desc "deploy public directory to github pages"
|
||||
multitask :push do
|
||||
puts "## Deploying branch to Github Pages "
|
||||
puts "## Pulling any updates from Github Pages "
|
||||
cd "#{deploy_dir}" do
|
||||
system "git checkout #{deploy_branch}"
|
||||
end
|
||||
(Dir["#{deploy_dir}/*"]).each { |f| rm_rf(f) }
|
||||
Rake::Task[:copydot].invoke(public_dir, deploy_dir)
|
||||
puts "\n## Copying #{public_dir} to #{deploy_dir}"
|
||||
cp_r "#{public_dir}/.", deploy_dir
|
||||
cd "#{deploy_dir}" do
|
||||
if ENV["TRAVIS"] == 'true'
|
||||
system 'git config user.name "Travis CI"'
|
||||
system 'git config user.email "balloob+bot@gmail.com"'
|
||||
end
|
||||
|
||||
system "git add -A"
|
||||
message = "Site updated at #{Time.now.utc}"
|
||||
puts "\n## Committing: #{message}"
|
||||
system "git commit -m \"#{message}\""
|
||||
|
||||
puts "\n## Pushing generated #{deploy_dir} website"
|
||||
if ENV["GH_TOKEN"].nil?
|
||||
Bundler.with_clean_env { system "git push origin #{deploy_branch}" }
|
||||
else
|
||||
puts "## Using GH_TOKEN"
|
||||
new_origin = `git remote -v | grep origin | grep push | awk '{print $2}'`.chomp.sub('//', "//#{ENV['GH_TOKEN']}@")
|
||||
system "git remote add origin-auth #{new_origin} > /dev/null 2>&1"
|
||||
system "git push --quiet origin-auth #{deploy_branch} > /dev/null 2>&1"
|
||||
end
|
||||
|
||||
puts "\n## Github Pages deploy complete"
|
||||
end
|
||||
end
|
||||
|
||||
desc "Update configurations to support publishing to root or sub directory"
|
||||
task :set_root_dir, :dir do |t, args|
|
||||
puts ">>> !! Please provide a directory, eg. rake config_dir[publishing/subdirectory]" unless args.dir
|
||||
if args.dir
|
||||
if args.dir == "/"
|
||||
dir = ""
|
||||
else
|
||||
dir = "/" + args.dir.sub(/(\/*)(.+)/, "\\2").sub(/\/$/, '');
|
||||
end
|
||||
rakefile = IO.read(__FILE__)
|
||||
rakefile.sub!(/public_dir(\s*)=(\s*)(["'])[\w\-\/]*["']/, "public_dir\\1=\\2\\3public#{dir}\\3")
|
||||
File.open(__FILE__, 'w') do |f|
|
||||
f.write rakefile
|
||||
end
|
||||
compass_config = IO.read('config.rb')
|
||||
compass_config.sub!(/http_path(\s*)=(\s*)(["'])[\w\-\/]*["']/, "http_path\\1=\\2\\3#{dir}/\\3")
|
||||
compass_config.sub!(/http_images_path(\s*)=(\s*)(["'])[\w\-\/]*["']/, "http_images_path\\1=\\2\\3#{dir}/images\\3")
|
||||
compass_config.sub!(/http_fonts_path(\s*)=(\s*)(["'])[\w\-\/]*["']/, "http_fonts_path\\1=\\2\\3#{dir}/fonts\\3")
|
||||
compass_config.sub!(/css_dir(\s*)=(\s*)(["'])[\w\-\/]*["']/, "css_dir\\1=\\2\\3public#{dir}/stylesheets\\3")
|
||||
File.open('config.rb', 'w') do |f|
|
||||
f.write compass_config
|
||||
end
|
||||
jekyll_config = IO.read('_config.yml')
|
||||
jekyll_config.sub!(/^destination:.+$/, "destination: public#{dir}")
|
||||
jekyll_config.sub!(/^subscribe_rss:\s*\/.+$/, "subscribe_rss: #{dir}/atom.xml")
|
||||
jekyll_config.sub!(/^root:.*$/, "root: /#{dir.sub(/^\//, '')}")
|
||||
File.open('_config.yml', 'w') do |f|
|
||||
f.write jekyll_config
|
||||
end
|
||||
rm_rf public_dir
|
||||
mkdir_p "#{public_dir}#{dir}"
|
||||
puts "## Site's root directory is now '/#{dir.sub(/^\//, '')}' ##"
|
||||
end
|
||||
end
|
||||
|
||||
desc "Set up _deploy folder and deploy branch for Github Pages deployment"
|
||||
task :setup_github_pages, :repo do |t, args|
|
||||
if args.repo
|
||||
repo_url = args.repo
|
||||
else
|
||||
puts "Enter the read/write url for your repository"
|
||||
puts "(For example, 'git@github.com:your_username/your_username.github.io.git)"
|
||||
puts " or 'https://github.com/your_username/your_username.github.io')"
|
||||
repo_url = get_stdin("Repository url: ")
|
||||
end
|
||||
protocol = (repo_url.match(/(^git)@/).nil?) ? 'https' : 'git'
|
||||
if protocol == 'git'
|
||||
user = repo_url.match(/:([^\/]+)/)[1]
|
||||
else
|
||||
user = repo_url.match(/github\.com\/([^\/]+)/)[1]
|
||||
end
|
||||
branch = (repo_url.match(/\/[\w-]+\.github\.(?:io|com)/).nil?) ? 'gh-pages' : 'master'
|
||||
project = (branch == 'gh-pages') ? repo_url.match(/\/([^\.]+)/)[1] : ''
|
||||
unless (`git remote -v` =~ /origin.+?octopress(?:\.git)?/).nil?
|
||||
# If octopress is still the origin remote (from cloning) rename it to octopress
|
||||
system "git remote rename origin octopress"
|
||||
if branch == 'master'
|
||||
# If this is a user/organization pages repository, add the correct origin remote
|
||||
# and checkout the source branch for committing changes to the blog source.
|
||||
system "git remote add origin #{repo_url}"
|
||||
puts "Added remote #{repo_url} as origin"
|
||||
system "git config branch.master.remote origin"
|
||||
puts "Set origin as default remote"
|
||||
system "git branch -m master source"
|
||||
puts "Master branch renamed to 'source' for committing your blog source files"
|
||||
else
|
||||
unless !public_dir.match("#{project}").nil?
|
||||
system "rake set_root_dir[#{project}]"
|
||||
end
|
||||
end
|
||||
end
|
||||
url = blog_url(user, project)
|
||||
jekyll_config = IO.read('_config.yml')
|
||||
jekyll_config.sub!(/^url:.*$/, "url: #{url}")
|
||||
File.open('_config.yml', 'w') do |f|
|
||||
f.write jekyll_config
|
||||
end
|
||||
rm_rf deploy_dir
|
||||
mkdir deploy_dir
|
||||
cd "#{deploy_dir}" do
|
||||
system "git init"
|
||||
system 'echo "My Octopress Page is coming soon …" > index.html'
|
||||
system "git add ."
|
||||
system "git commit -m \"Octopress init\""
|
||||
system "git branch -m gh-pages" unless branch == 'master'
|
||||
system "git remote add origin #{repo_url}"
|
||||
rakefile = IO.read(__FILE__)
|
||||
rakefile.sub!(/deploy_branch(\s*)=(\s*)(["'])[\w-]*["']/, "deploy_branch\\1=\\2\\3#{branch}\\3")
|
||||
rakefile.sub!(/deploy_default(\s*)=(\s*)(["'])[\w-]*["']/, "deploy_default\\1=\\2\\3push\\3")
|
||||
File.open(__FILE__, 'w') do |f|
|
||||
f.write rakefile
|
||||
end
|
||||
end
|
||||
puts "\n---\n## Now you can deploy to #{repo_url} with `rake deploy` ##"
|
||||
end
|
||||
|
||||
def ok_failed(condition)
|
||||
if (condition)
|
||||
puts "OK"
|
||||
else
|
||||
puts "FAILED"
|
||||
end
|
||||
end
|
||||
|
||||
def get_stdin(message)
|
||||
print message
|
||||
STDIN.gets.chomp
|
||||
end
|
||||
|
||||
def ask(message, valid_options)
|
||||
if valid_options
|
||||
answer = get_stdin("#{message} #{valid_options.to_s.gsub(/"/, '').gsub(/, /,'/')} ") while !valid_options.include?(answer)
|
||||
else
|
||||
answer = get_stdin(message)
|
||||
end
|
||||
answer
|
||||
end
|
||||
|
||||
def blog_url(user, project)
|
||||
url = if File.exists?('source/CNAME')
|
||||
"http://#{IO.read('source/CNAME').strip}"
|
||||
else
|
||||
"http://#{user.downcase}.github.io"
|
||||
end
|
||||
url += "/#{project}" unless project == ''
|
||||
url
|
||||
end
|
||||
|
||||
desc "list tasks"
|
||||
task :list do
|
||||
puts "Tasks: #{(Rake::Task.tasks - [Rake::Task[:list]]).join(', ')}"
|
||||
puts "(type rake -T for more detail)\n\n"
|
||||
end
|
155
_config.yml
155
_config.yml
|
@ -1,155 +0,0 @@
|
|||
# See options at https://github.com/coogie/oscailte
|
||||
# ----------------------- #
|
||||
# Main Configs #
|
||||
# ----------------------- #
|
||||
|
||||
url: https://www.home-assistant.io
|
||||
title: Home Assistant
|
||||
subtitle: Open-source home automation platform running on Python 3
|
||||
author: Home Assistant
|
||||
simple_search: https://www.google.com/search
|
||||
description: Home Assistant is an open-source home automation platform running on Python 3.
|
||||
|
||||
# Default date format is "ordinal" (resulting in "July 22nd 2007")
|
||||
# You can customize the format as defined in
|
||||
# http://www.ruby-doc.org/core-1.9.2/Time.html#method-i-strftime
|
||||
# Additionally, %o will give you the ordinal representation of the day
|
||||
date_format: "ordinal"
|
||||
|
||||
# RSS / Email (optional) subscription links (change if using something like Feedburner)
|
||||
subscribe_rss: /atom.xml
|
||||
subscribe_email:
|
||||
# RSS feeds can list your email address if you like
|
||||
email:
|
||||
|
||||
# ----------------------- #
|
||||
# Jekyll & Plugins #
|
||||
# ----------------------- #
|
||||
|
||||
permalink: /blog/:year/:month/:day/:title/
|
||||
source: source
|
||||
destination: public/
|
||||
plugins_dir: plugins
|
||||
code_dir: downloads/code
|
||||
category_dir: blog/categories
|
||||
markdown: kramdown
|
||||
timezone: UTC
|
||||
|
||||
kramdown:
|
||||
input: GFM
|
||||
auto_ids: false
|
||||
footnote_nr: 1
|
||||
entity_output: as_char
|
||||
toc_levels: 1..6
|
||||
smart_quotes: lsquo,rsquo,ldquo,rdquo
|
||||
parse_block_html: true
|
||||
|
||||
highlighter: rouge
|
||||
|
||||
plugins:
|
||||
- jekyll-redirect-from
|
||||
- jekyll-time-to-read
|
||||
- octopress-include-tag
|
||||
|
||||
paginate: 10 # Posts per page on the blog index
|
||||
paginate_path: "blog/posts/:num" # Directory base for pagination URLs eg. /posts/2/
|
||||
recent_posts: 5 # Posts in the sidebar Recent Posts section
|
||||
excerpt_link: "Read on →" # "Continue reading" link text at the bottom of excerpted articles
|
||||
excerpt_separator: "<!--more-->"
|
||||
|
||||
titlecase: true # Converts page and post titles to titlecase
|
||||
|
||||
# Each layout uses the default asides, but they can have their own asides instead. Simply uncomment the lines below
|
||||
# and add an array with the asides you want to use.
|
||||
# blog_index_asides:
|
||||
# post_asides:
|
||||
# page_asides:
|
||||
|
||||
collections:
|
||||
components:
|
||||
output: true
|
||||
cookbook:
|
||||
output: true
|
||||
docs:
|
||||
output: true
|
||||
addons:
|
||||
output: true
|
||||
faq:
|
||||
output: true
|
||||
|
||||
# ----------------------- #
|
||||
# 3rd Party Settings #
|
||||
# ----------------------- #
|
||||
|
||||
# Github repositories
|
||||
github_user:
|
||||
github_repo_count: 0
|
||||
github_show_profile_link: true
|
||||
github_skip_forks: true
|
||||
|
||||
# Twitter
|
||||
twitter_user: balloob
|
||||
twitter_tweet_button: true
|
||||
|
||||
# Google +1
|
||||
google_plus_one: true
|
||||
google_plus_one_size: standard
|
||||
|
||||
# Google Plus Profile
|
||||
# Hidden: No visible button, just add author information to search results
|
||||
googleplus_user: +PaulusSchoutsen
|
||||
googleplus_hidden: true
|
||||
|
||||
# Pinboard
|
||||
pinboard_user:
|
||||
pinboard_count: 3
|
||||
|
||||
# Delicious
|
||||
delicious_user:
|
||||
delicious_count: 3
|
||||
|
||||
# Disqus Comments
|
||||
disqus_short_name: home-assistant
|
||||
disqus_show_comment_count: true
|
||||
|
||||
# Google Analytics
|
||||
google_analytics_tracking_id: UA-57927901-1
|
||||
|
||||
# Facebook Like
|
||||
facebook_like: true
|
||||
|
||||
# Liquid template compressor
|
||||
compress_html:
|
||||
clippings: []
|
||||
comments: []
|
||||
endings: []
|
||||
ignore:
|
||||
envs: []
|
||||
blanklines: true
|
||||
profile: false
|
||||
startings: []
|
||||
|
||||
social:
|
||||
visible: false
|
||||
facebook:
|
||||
app_id: 338291289691179
|
||||
|
||||
twitter:
|
||||
account: home_assistant
|
||||
|
||||
# Home Assistant release details
|
||||
current_major_version: 0
|
||||
current_minor_version: 69
|
||||
current_patch_version: 0
|
||||
date_released: 2018-05-11
|
||||
|
||||
# Either # or the anchor link to latest release notes in the blog post.
|
||||
# Must be prefixed with a # and have double quotes around it.
|
||||
# Major release:
|
||||
patch_version_notes: "#"
|
||||
# Minor release (Example #release-0431---april-25):
|
||||
|
||||
# Date we moved to Discourse for comments
|
||||
# disqus_end_date: 2018-01-26 0:00:00
|
||||
# Disqus is adding gross ads, move all comments to discourse.
|
||||
disqus_end_date: 2010-01-26 0:00:00
|
1
_deploy
1
_deploy
|
@ -1 +0,0 @@
|
|||
Subproject commit 69146ecaf4d31902ab9ea0a4e6c9f3985d99e808
|
163
addons/bluetooth_bcm43xx/index.html
Normal file
163
addons/bluetooth_bcm43xx/index.html
Normal file
|
@ -0,0 +1,163 @@
|
|||
<!doctype html>
|
||||
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
|
||||
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
|
||||
<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]-->
|
||||
<!--[if gt IE 8]><!--> <html> <!--<![endif]-->
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<title>Bluetooth BCM43xx - Home Assistant</title>
|
||||
<meta name="author" content="Home Assistant">
|
||||
<meta name="description" content="Activate the BCM43xx Bluetooth chipset on a Raspberry Pi 3.">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="canonical" href="https://home-assistant.io/addons/bluetooth_bcm43xx/">
|
||||
<meta property="fb:app_id" content="338291289691179">
|
||||
<meta property="og:title" content="Bluetooth BCM43xx">
|
||||
<meta property="og:site_name" content="Home Assistant">
|
||||
<meta property="og:url" content="https://home-assistant.io/addons/bluetooth_bcm43xx/">
|
||||
<meta property="og:type" content="article">
|
||||
<meta property="og:description" content="Activate the BCM43xx Bluetooth chipset on a Raspberry Pi 3.">
|
||||
<meta property="og:image" content="https://home-assistant.io/images/default-social.png">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:site" content="@home_assistant">
|
||||
<meta name="twitter:title" content="Bluetooth BCM43xx">
|
||||
<meta name="twitter:description" content="Activate the BCM43xx Bluetooth chipset on a Raspberry Pi 3.">
|
||||
<meta name="twitter:image" content="https://home-assistant.io/images/default-social.png">
|
||||
<link href="/stylesheets/screen.css" media="screen, projection, print" rel="stylesheet">
|
||||
<link href="/atom.xml" rel="alternate" title="Home Assistant" type="application/atom+xml">
|
||||
<link rel='shortcut icon' href='/images/favicon.ico' />
|
||||
<link rel='icon' type='image/png' href='/images/favicon-192x192.png' sizes='192x192' />
|
||||
</head>
|
||||
<body >
|
||||
<header class='site-header'>
|
||||
<div class="grid-wrapper">
|
||||
<div class="grid">
|
||||
<div class="grid__item three-tenths lap-two-sixths palm-one-whole ha-title">
|
||||
<a href="/" class="site-title">
|
||||
<img width='40' src='/demo/favicon-192x192.png'>
|
||||
<span>Home Assistant</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="grid__item seven-tenths lap-four-sixths palm-one-whole">
|
||||
<nav>
|
||||
<input type="checkbox" id="toggle">
|
||||
<label for="toggle" class="toggle" data-open="Main Menu" data-close="Close Menu"></label>
|
||||
<ul class="menu pull-right">
|
||||
<li><a href="/getting-started/">Getting started</a></li>
|
||||
<li><a href="/components/">Components</a></li>
|
||||
<li><a href="/docs/">Docs</a></li>
|
||||
<li><a href="/cookbook/">Examples</a></li>
|
||||
<li><a href="/developers/">Developers</a></li>
|
||||
<li><a href="/blog/">Blog</a></li>
|
||||
<li><a href="/help/">Need help?</a></li>
|
||||
<li><a href='#' class='show-search'><i class="icon-search"></i></a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
<div class='search-container' style='display: none'>
|
||||
<div class='search'>
|
||||
<i class="icon-search"></i>
|
||||
<input id='search' placeholder='Search the docs…'>
|
||||
<a href='#' class='close'><i class="icon-remove-sign"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
<div class="grid-wrapper">
|
||||
<div class="grid grid-center">
|
||||
<div class="grid__item two-thirds lap-one-whole palm-one-whole">
|
||||
<article class="page">
|
||||
<div class='edit-github'><a href='https://github.com/home-assistant/home-assistant.github.io/tree/current/source/_addons/bluetooth_bcm43xx.markdown'>Edit this page on GitHub</a></div>
|
||||
<header>
|
||||
<h1 class="title indent">
|
||||
Bluetooth BCM43xx
|
||||
</h1>
|
||||
</header>
|
||||
<hr class="divider">
|
||||
<p>Start this add-on to activate the BCM43xx Bluetooth chipset.</p>
|
||||
<p>Supported platforms: Raspberry Pi 3.</p>
|
||||
</article>
|
||||
</div>
|
||||
<aside id="sidebar" class="grid__item one-third lap-one-whole palm-one-whole">
|
||||
<div class="grid">
|
||||
<section class="aside-module grid__item one-whole lap-one-half">
|
||||
<div class='section'>
|
||||
<h1 class="title delta">Topics</h1>
|
||||
<ul class='divided sidebar-menu'>
|
||||
<li>
|
||||
<a href='/hassio/'>Hass.io </a>
|
||||
<ul>
|
||||
<li><a href='/hassio/installation/'>Installation </a></li>
|
||||
<li><a href='/addons/'>Available add-ons </a></li>
|
||||
<li><a href='/hassio/installing_third_party_addons/'>Installing third-party add-ons </a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class='divided sidebar-menu'>
|
||||
<li>
|
||||
Advanced
|
||||
<ul>
|
||||
<li><a href='/hassio/zwave/'>Z-Wave </a></li>
|
||||
<li><a href='/hassio/external_storage/'>External storage </a></li>
|
||||
<li><a href='/hassio/run_local/'>Execute local things </a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class='divided sidebar-menu'>
|
||||
<li><a href='/developers/hassio/addon_development/'>Looking to create an add-on?</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
</div>
|
||||
<footer>
|
||||
<div class="grid-wrapper">
|
||||
<div class="grid">
|
||||
<div class="grid__item">
|
||||
<div class="copyright">
|
||||
<a rel="me" href='https://twitter.com/home_assistant'><i class="icon-twitter"></i></a>
|
||||
<a rel="me" href='https://facebook.com/homeassistantio'><i class="icon-facebook"></i></a>
|
||||
<a rel="me" href='https://plus.google.com/110560654828510104551'><i class="icon-google-plus"></i></a>
|
||||
<a rel="me" href='https://github.com/home-assistant/home-assistant'><i class="icon-github"></i></a>
|
||||
<div class="credit">
|
||||
Contact us at <a href='mailto:hello@home-assistant.io'>hello@home-assistant.io</a> (no support!).<br>
|
||||
Website powered by <a href='http://jekyllrb.com/'>Jekyll</a> and the <a href='https://github.com/coogie/oscailte'>Oscalite theme</a>.<br />
|
||||
Hosted by <a href='https://pages.github.com/'>GitHub</a> and served by <a href='https://cloudflare.com'>CloudFlare</a>.
|
||||
</div>
|
||||
<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png" /></a><br /><span xmlns:dct="http://purl.org/dc/terms/" property="dct:title">home-assistant.io</span> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/">Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License</a>.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
<script>
|
||||
var _gaq=[['_setAccount','UA-57927901-1'],['_trackPageview']];
|
||||
(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];
|
||||
g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js';
|
||||
s.parentNode.insertBefore(g,s)}(document,'script'));
|
||||
</script>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/docsearch.js/2/docsearch.min.css" />
|
||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/docsearch.js/2/docsearch.min.js"></script>
|
||||
<script type="text/javascript">
|
||||
docsearch({
|
||||
apiKey: 'ae96d94b201c5444c8a443093edf3efb',
|
||||
indexName: 'home-assistant',
|
||||
inputSelector: '#search',
|
||||
debug: false // Set debug to true if you want to inspect the dropdown
|
||||
});
|
||||
document.querySelector('.search .close').addEventListener('click', function(ev) {
|
||||
ev.preventDefault();
|
||||
document.querySelector('.search-container').style.display = 'none';
|
||||
});
|
||||
document.querySelector('.show-search').addEventListener('click', function(ev) {
|
||||
ev.preventDefault();
|
||||
document.querySelector('.search-container').style.display = 'block';
|
||||
document.getElementById('toggle').checked = false;
|
||||
document.querySelector('.search-container input').focus();
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
162
addons/cec_scan/index.html
Normal file
162
addons/cec_scan/index.html
Normal file
|
@ -0,0 +1,162 @@
|
|||
<!doctype html>
|
||||
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
|
||||
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
|
||||
<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]-->
|
||||
<!--[if gt IE 8]><!--> <html> <!--<![endif]-->
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<title>CEC Scanner - Home Assistant</title>
|
||||
<meta name="author" content="Home Assistant">
|
||||
<meta name="description" content="Scan HDMI CEC devices.">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="canonical" href="https://home-assistant.io/addons/cec_scan/">
|
||||
<meta property="fb:app_id" content="338291289691179">
|
||||
<meta property="og:title" content="CEC Scanner">
|
||||
<meta property="og:site_name" content="Home Assistant">
|
||||
<meta property="og:url" content="https://home-assistant.io/addons/cec_scan/">
|
||||
<meta property="og:type" content="article">
|
||||
<meta property="og:description" content="Scan HDMI CEC devices.">
|
||||
<meta property="og:image" content="https://home-assistant.io/images/default-social.png">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:site" content="@home_assistant">
|
||||
<meta name="twitter:title" content="CEC Scanner">
|
||||
<meta name="twitter:description" content="Scan HDMI CEC devices.">
|
||||
<meta name="twitter:image" content="https://home-assistant.io/images/default-social.png">
|
||||
<link href="/stylesheets/screen.css" media="screen, projection, print" rel="stylesheet">
|
||||
<link href="/atom.xml" rel="alternate" title="Home Assistant" type="application/atom+xml">
|
||||
<link rel='shortcut icon' href='/images/favicon.ico' />
|
||||
<link rel='icon' type='image/png' href='/images/favicon-192x192.png' sizes='192x192' />
|
||||
</head>
|
||||
<body >
|
||||
<header class='site-header'>
|
||||
<div class="grid-wrapper">
|
||||
<div class="grid">
|
||||
<div class="grid__item three-tenths lap-two-sixths palm-one-whole ha-title">
|
||||
<a href="/" class="site-title">
|
||||
<img width='40' src='/demo/favicon-192x192.png'>
|
||||
<span>Home Assistant</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="grid__item seven-tenths lap-four-sixths palm-one-whole">
|
||||
<nav>
|
||||
<input type="checkbox" id="toggle">
|
||||
<label for="toggle" class="toggle" data-open="Main Menu" data-close="Close Menu"></label>
|
||||
<ul class="menu pull-right">
|
||||
<li><a href="/getting-started/">Getting started</a></li>
|
||||
<li><a href="/components/">Components</a></li>
|
||||
<li><a href="/docs/">Docs</a></li>
|
||||
<li><a href="/cookbook/">Examples</a></li>
|
||||
<li><a href="/developers/">Developers</a></li>
|
||||
<li><a href="/blog/">Blog</a></li>
|
||||
<li><a href="/help/">Need help?</a></li>
|
||||
<li><a href='#' class='show-search'><i class="icon-search"></i></a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
<div class='search-container' style='display: none'>
|
||||
<div class='search'>
|
||||
<i class="icon-search"></i>
|
||||
<input id='search' placeholder='Search the docs…'>
|
||||
<a href='#' class='close'><i class="icon-remove-sign"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
<div class="grid-wrapper">
|
||||
<div class="grid grid-center">
|
||||
<div class="grid__item two-thirds lap-one-whole palm-one-whole">
|
||||
<article class="page">
|
||||
<div class='edit-github'><a href='https://github.com/home-assistant/home-assistant.github.io/tree/current/source/_addons/cec_scan.markdown'>Edit this page on GitHub</a></div>
|
||||
<header>
|
||||
<h1 class="title indent">
|
||||
CEC Scanner
|
||||
</h1>
|
||||
</header>
|
||||
<hr class="divider">
|
||||
<p>Help you to discover the HDMI CEC address. Start the add-on and look into the log to see all connected device on HDMI.</p>
|
||||
</article>
|
||||
</div>
|
||||
<aside id="sidebar" class="grid__item one-third lap-one-whole palm-one-whole">
|
||||
<div class="grid">
|
||||
<section class="aside-module grid__item one-whole lap-one-half">
|
||||
<div class='section'>
|
||||
<h1 class="title delta">Topics</h1>
|
||||
<ul class='divided sidebar-menu'>
|
||||
<li>
|
||||
<a href='/hassio/'>Hass.io </a>
|
||||
<ul>
|
||||
<li><a href='/hassio/installation/'>Installation </a></li>
|
||||
<li><a href='/addons/'>Available add-ons </a></li>
|
||||
<li><a href='/hassio/installing_third_party_addons/'>Installing third-party add-ons </a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class='divided sidebar-menu'>
|
||||
<li>
|
||||
Advanced
|
||||
<ul>
|
||||
<li><a href='/hassio/zwave/'>Z-Wave </a></li>
|
||||
<li><a href='/hassio/external_storage/'>External storage </a></li>
|
||||
<li><a href='/hassio/run_local/'>Execute local things </a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class='divided sidebar-menu'>
|
||||
<li><a href='/developers/hassio/addon_development/'>Looking to create an add-on?</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
</div>
|
||||
<footer>
|
||||
<div class="grid-wrapper">
|
||||
<div class="grid">
|
||||
<div class="grid__item">
|
||||
<div class="copyright">
|
||||
<a rel="me" href='https://twitter.com/home_assistant'><i class="icon-twitter"></i></a>
|
||||
<a rel="me" href='https://facebook.com/homeassistantio'><i class="icon-facebook"></i></a>
|
||||
<a rel="me" href='https://plus.google.com/110560654828510104551'><i class="icon-google-plus"></i></a>
|
||||
<a rel="me" href='https://github.com/home-assistant/home-assistant'><i class="icon-github"></i></a>
|
||||
<div class="credit">
|
||||
Contact us at <a href='mailto:hello@home-assistant.io'>hello@home-assistant.io</a> (no support!).<br>
|
||||
Website powered by <a href='http://jekyllrb.com/'>Jekyll</a> and the <a href='https://github.com/coogie/oscailte'>Oscalite theme</a>.<br />
|
||||
Hosted by <a href='https://pages.github.com/'>GitHub</a> and served by <a href='https://cloudflare.com'>CloudFlare</a>.
|
||||
</div>
|
||||
<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png" /></a><br /><span xmlns:dct="http://purl.org/dc/terms/" property="dct:title">home-assistant.io</span> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/">Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License</a>.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
<script>
|
||||
var _gaq=[['_setAccount','UA-57927901-1'],['_trackPageview']];
|
||||
(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];
|
||||
g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js';
|
||||
s.parentNode.insertBefore(g,s)}(document,'script'));
|
||||
</script>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/docsearch.js/2/docsearch.min.css" />
|
||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/docsearch.js/2/docsearch.min.js"></script>
|
||||
<script type="text/javascript">
|
||||
docsearch({
|
||||
apiKey: 'ae96d94b201c5444c8a443093edf3efb',
|
||||
indexName: 'home-assistant',
|
||||
inputSelector: '#search',
|
||||
debug: false // Set debug to true if you want to inspect the dropdown
|
||||
});
|
||||
document.querySelector('.search .close').addEventListener('click', function(ev) {
|
||||
ev.preventDefault();
|
||||
document.querySelector('.search-container').style.display = 'none';
|
||||
});
|
||||
document.querySelector('.show-search').addEventListener('click', function(ev) {
|
||||
ev.preventDefault();
|
||||
document.querySelector('.search-container').style.display = 'block';
|
||||
document.getElementById('toggle').checked = false;
|
||||
document.querySelector('.search-container input').focus();
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
171
addons/check_config/index.html
Normal file
171
addons/check_config/index.html
Normal file
|
@ -0,0 +1,171 @@
|
|||
<!doctype html>
|
||||
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
|
||||
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
|
||||
<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]-->
|
||||
<!--[if gt IE 8]><!--> <html> <!--<![endif]-->
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<title>Check Home Assistant configuration - Home Assistant</title>
|
||||
<meta name="author" content="Home Assistant">
|
||||
<meta name="description" content="Check your current Home Assistant configuration against a new version.">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="canonical" href="https://home-assistant.io/addons/check_config/">
|
||||
<meta property="fb:app_id" content="338291289691179">
|
||||
<meta property="og:title" content="Check Home Assistant configuration">
|
||||
<meta property="og:site_name" content="Home Assistant">
|
||||
<meta property="og:url" content="https://home-assistant.io/addons/check_config/">
|
||||
<meta property="og:type" content="article">
|
||||
<meta property="og:description" content="Check your current Home Assistant configuration against a new version.">
|
||||
<meta property="og:image" content="https://home-assistant.io/images/default-social.png">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:site" content="@home_assistant">
|
||||
<meta name="twitter:title" content="Check Home Assistant configuration">
|
||||
<meta name="twitter:description" content="Check your current Home Assistant configuration against a new version.">
|
||||
<meta name="twitter:image" content="https://home-assistant.io/images/default-social.png">
|
||||
<link href="/stylesheets/screen.css" media="screen, projection, print" rel="stylesheet">
|
||||
<link href="/atom.xml" rel="alternate" title="Home Assistant" type="application/atom+xml">
|
||||
<link rel='shortcut icon' href='/images/favicon.ico' />
|
||||
<link rel='icon' type='image/png' href='/images/favicon-192x192.png' sizes='192x192' />
|
||||
</head>
|
||||
<body >
|
||||
<header class='site-header'>
|
||||
<div class="grid-wrapper">
|
||||
<div class="grid">
|
||||
<div class="grid__item three-tenths lap-two-sixths palm-one-whole ha-title">
|
||||
<a href="/" class="site-title">
|
||||
<img width='40' src='/demo/favicon-192x192.png'>
|
||||
<span>Home Assistant</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="grid__item seven-tenths lap-four-sixths palm-one-whole">
|
||||
<nav>
|
||||
<input type="checkbox" id="toggle">
|
||||
<label for="toggle" class="toggle" data-open="Main Menu" data-close="Close Menu"></label>
|
||||
<ul class="menu pull-right">
|
||||
<li><a href="/getting-started/">Getting started</a></li>
|
||||
<li><a href="/components/">Components</a></li>
|
||||
<li><a href="/docs/">Docs</a></li>
|
||||
<li><a href="/cookbook/">Examples</a></li>
|
||||
<li><a href="/developers/">Developers</a></li>
|
||||
<li><a href="/blog/">Blog</a></li>
|
||||
<li><a href="/help/">Need help?</a></li>
|
||||
<li><a href='#' class='show-search'><i class="icon-search"></i></a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
<div class='search-container' style='display: none'>
|
||||
<div class='search'>
|
||||
<i class="icon-search"></i>
|
||||
<input id='search' placeholder='Search the docs…'>
|
||||
<a href='#' class='close'><i class="icon-remove-sign"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
<div class="grid-wrapper">
|
||||
<div class="grid grid-center">
|
||||
<div class="grid__item two-thirds lap-one-whole palm-one-whole">
|
||||
<article class="page">
|
||||
<div class='edit-github'><a href='https://github.com/home-assistant/home-assistant.github.io/tree/current/source/_addons/check_config.markdown'>Edit this page on GitHub</a></div>
|
||||
<header>
|
||||
<h1 class="title indent">
|
||||
Check Home Assistant configuration
|
||||
</h1>
|
||||
</header>
|
||||
<hr class="divider">
|
||||
<p>You can use this addon to check whether your configuration files are valid against the new version of Home Assistant before you actually update your Home Assistant installation. This addon will help you avoid errors due to breaking changes, resulting in a smooth update.</p>
|
||||
<div class="language-json highlighter-rouge"><pre class="highlight"><code><span class="p">{</span><span class="w">
|
||||
</span><span class="nt">"version"</span><span class="p">:</span><span class="w"> </span><span class="s2">"latest"</span><span class="w">
|
||||
</span><span class="p">}</span><span class="w">
|
||||
</span></code></pre>
|
||||
</div>
|
||||
<p>Configuration variables:</p>
|
||||
<ul>
|
||||
<li><strong>version</strong> (<em>Required</em>): Version of Home Assistant that you plan to install.</li>
|
||||
</ul>
|
||||
</article>
|
||||
</div>
|
||||
<aside id="sidebar" class="grid__item one-third lap-one-whole palm-one-whole">
|
||||
<div class="grid">
|
||||
<section class="aside-module grid__item one-whole lap-one-half">
|
||||
<div class='section'>
|
||||
<h1 class="title delta">Topics</h1>
|
||||
<ul class='divided sidebar-menu'>
|
||||
<li>
|
||||
<a href='/hassio/'>Hass.io </a>
|
||||
<ul>
|
||||
<li><a href='/hassio/installation/'>Installation </a></li>
|
||||
<li><a href='/addons/'>Available add-ons </a></li>
|
||||
<li><a href='/hassio/installing_third_party_addons/'>Installing third-party add-ons </a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class='divided sidebar-menu'>
|
||||
<li>
|
||||
Advanced
|
||||
<ul>
|
||||
<li><a href='/hassio/zwave/'>Z-Wave </a></li>
|
||||
<li><a href='/hassio/external_storage/'>External storage </a></li>
|
||||
<li><a href='/hassio/run_local/'>Execute local things </a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class='divided sidebar-menu'>
|
||||
<li><a href='/developers/hassio/addon_development/'>Looking to create an add-on?</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
</div>
|
||||
<footer>
|
||||
<div class="grid-wrapper">
|
||||
<div class="grid">
|
||||
<div class="grid__item">
|
||||
<div class="copyright">
|
||||
<a rel="me" href='https://twitter.com/home_assistant'><i class="icon-twitter"></i></a>
|
||||
<a rel="me" href='https://facebook.com/homeassistantio'><i class="icon-facebook"></i></a>
|
||||
<a rel="me" href='https://plus.google.com/110560654828510104551'><i class="icon-google-plus"></i></a>
|
||||
<a rel="me" href='https://github.com/home-assistant/home-assistant'><i class="icon-github"></i></a>
|
||||
<div class="credit">
|
||||
Contact us at <a href='mailto:hello@home-assistant.io'>hello@home-assistant.io</a> (no support!).<br>
|
||||
Website powered by <a href='http://jekyllrb.com/'>Jekyll</a> and the <a href='https://github.com/coogie/oscailte'>Oscalite theme</a>.<br />
|
||||
Hosted by <a href='https://pages.github.com/'>GitHub</a> and served by <a href='https://cloudflare.com'>CloudFlare</a>.
|
||||
</div>
|
||||
<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png" /></a><br /><span xmlns:dct="http://purl.org/dc/terms/" property="dct:title">home-assistant.io</span> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/">Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License</a>.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
<script>
|
||||
var _gaq=[['_setAccount','UA-57927901-1'],['_trackPageview']];
|
||||
(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];
|
||||
g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js';
|
||||
s.parentNode.insertBefore(g,s)}(document,'script'));
|
||||
</script>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/docsearch.js/2/docsearch.min.css" />
|
||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/docsearch.js/2/docsearch.min.js"></script>
|
||||
<script type="text/javascript">
|
||||
docsearch({
|
||||
apiKey: 'ae96d94b201c5444c8a443093edf3efb',
|
||||
indexName: 'home-assistant',
|
||||
inputSelector: '#search',
|
||||
debug: false // Set debug to true if you want to inspect the dropdown
|
||||
});
|
||||
document.querySelector('.search .close').addEventListener('click', function(ev) {
|
||||
ev.preventDefault();
|
||||
document.querySelector('.search-container').style.display = 'none';
|
||||
});
|
||||
document.querySelector('.show-search').addEventListener('click', function(ev) {
|
||||
ev.preventDefault();
|
||||
document.querySelector('.search-container').style.display = 'block';
|
||||
document.getElementById('toggle').checked = false;
|
||||
document.querySelector('.search-container input').focus();
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
220
addons/configurator/index.html
Normal file
220
addons/configurator/index.html
Normal file
|
@ -0,0 +1,220 @@
|
|||
<!doctype html>
|
||||
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
|
||||
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
|
||||
<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]-->
|
||||
<!--[if gt IE 8]><!--> <html> <!--<![endif]-->
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<title>HASS Configurator - Home Assistant</title>
|
||||
<meta name="author" content="Home Assistant">
|
||||
<meta name="description" content="Browser-based configuration file editor for Home Assistant.">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="canonical" href="https://home-assistant.io/addons/configurator/">
|
||||
<meta property="fb:app_id" content="338291289691179">
|
||||
<meta property="og:title" content="HASS Configurator">
|
||||
<meta property="og:site_name" content="Home Assistant">
|
||||
<meta property="og:url" content="https://home-assistant.io/addons/configurator/">
|
||||
<meta property="og:type" content="article">
|
||||
<meta property="og:description" content="Browser-based configuration file editor for Home Assistant.">
|
||||
<meta property="og:image" content="https://home-assistant.io/images/hassio/screenshots/addon-hass-configurator.png">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:site" content="@home_assistant">
|
||||
<meta name="twitter:title" content="HASS Configurator">
|
||||
<meta name="twitter:description" content="Browser-based configuration file editor for Home Assistant.">
|
||||
<meta name="twitter:image" content="https://home-assistant.io/images/hassio/screenshots/addon-hass-configurator.png">
|
||||
<link href="/stylesheets/screen.css" media="screen, projection, print" rel="stylesheet">
|
||||
<link href="/atom.xml" rel="alternate" title="Home Assistant" type="application/atom+xml">
|
||||
<link rel='shortcut icon' href='/images/favicon.ico' />
|
||||
<link rel='icon' type='image/png' href='/images/favicon-192x192.png' sizes='192x192' />
|
||||
</head>
|
||||
<body >
|
||||
<header class='site-header'>
|
||||
<div class="grid-wrapper">
|
||||
<div class="grid">
|
||||
<div class="grid__item three-tenths lap-two-sixths palm-one-whole ha-title">
|
||||
<a href="/" class="site-title">
|
||||
<img width='40' src='/demo/favicon-192x192.png'>
|
||||
<span>Home Assistant</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="grid__item seven-tenths lap-four-sixths palm-one-whole">
|
||||
<nav>
|
||||
<input type="checkbox" id="toggle">
|
||||
<label for="toggle" class="toggle" data-open="Main Menu" data-close="Close Menu"></label>
|
||||
<ul class="menu pull-right">
|
||||
<li><a href="/getting-started/">Getting started</a></li>
|
||||
<li><a href="/components/">Components</a></li>
|
||||
<li><a href="/docs/">Docs</a></li>
|
||||
<li><a href="/cookbook/">Examples</a></li>
|
||||
<li><a href="/developers/">Developers</a></li>
|
||||
<li><a href="/blog/">Blog</a></li>
|
||||
<li><a href="/help/">Need help?</a></li>
|
||||
<li><a href='#' class='show-search'><i class="icon-search"></i></a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
<div class='search-container' style='display: none'>
|
||||
<div class='search'>
|
||||
<i class="icon-search"></i>
|
||||
<input id='search' placeholder='Search the docs…'>
|
||||
<a href='#' class='close'><i class="icon-remove-sign"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
<div class="grid-wrapper">
|
||||
<div class="grid grid-center">
|
||||
<div class="grid__item two-thirds lap-one-whole palm-one-whole">
|
||||
<article class="page">
|
||||
<div class='edit-github'><a href='https://github.com/home-assistant/home-assistant.github.io/tree/current/source/_addons/configurator.markdown'>Edit this page on GitHub</a></div>
|
||||
<header>
|
||||
<h1 class="title indent">
|
||||
HASS Configurator
|
||||
</h1>
|
||||
</header>
|
||||
<hr class="divider">
|
||||
<p>As long as a fully featured configuration GUI for Home Assistant is still under development, you can use this add-on to add a browser-based file-editor to your Hass.IO installation. By default it will listen on port <code class="highlighter-rouge">3218</code> of the host Hass.IO is running on.</p>
|
||||
<p>More information and a standalone version for regular Home Assistant installations can be found in the <a href="https://github.com/danielperna84/hass-configurator">GitHub repository</a>.</p>
|
||||
<p class="img">
|
||||
<img src="/images/hassio/screenshots/addon-hass-configurator.png" />
|
||||
Screenshot of the HASS Configurator.
|
||||
</p>
|
||||
<h3><a class="title-link" name="feature-list" href="#feature-list"></a> Feature list</h3>
|
||||
<ul>
|
||||
<li>Web-Based editor to modify your files with syntax highlighting.</li>
|
||||
<li>Upload and download files.</li>
|
||||
<li>Stage and commit changes in Git repositories, create and switch between branches, push to remotes.</li>
|
||||
<li>Lists of available triggers, events, entities, conditions, and services. The selected element gets inserted into the editor at the last cursor position.</li>
|
||||
<li>Restart Home Assistant directly with the click of a button. Reloading groups, automations, etc. can be done as well. An API-password is required.</li>
|
||||
<li>SSL support.</li>
|
||||
<li>Optional authentication and IP filtering for added security.</li>
|
||||
<li>Direct links to Home Assistant documentation and icons.</li>
|
||||
<li>Execute shell commands within the add-on container.</li>
|
||||
<li>Editor settings are saved in your browser.</li>
|
||||
</ul>
|
||||
<h3><a class="title-link" name="add-on-configuration" href="#add-on-configuration"></a> Add-on Configuration</h3>
|
||||
<div class="language-json highlighter-rouge"><pre class="highlight"><code><span class="p">{</span><span class="w">
|
||||
</span><span class="nt">"username"</span><span class="p">:</span><span class="w"> </span><span class="s2">"admin"</span><span class="p">,</span><span class="w">
|
||||
</span><span class="nt">"password"</span><span class="p">:</span><span class="w"> </span><span class="s2">"secret"</span><span class="p">,</span><span class="w">
|
||||
</span><span class="nt">"certfile"</span><span class="p">:</span><span class="w"> </span><span class="s2">"fullchain.pem"</span><span class="p">,</span><span class="w">
|
||||
</span><span class="nt">"keyfile"</span><span class="p">:</span><span class="w"> </span><span class="s2">"privkey.pem"</span><span class="p">,</span><span class="w">
|
||||
</span><span class="nt">"ssl"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w">
|
||||
</span><span class="nt">"allowed_networks"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">"192.168.0.0/16"</span><span class="p">],</span><span class="w">
|
||||
</span><span class="nt">"banned_ips"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">"8.8.8.8"</span><span class="p">],</span><span class="w">
|
||||
</span><span class="nt">"banlimit"</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w">
|
||||
</span><span class="nt">"ignore_pattern"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">"__pycache__"</span><span class="p">],</span><span class="w">
|
||||
</span><span class="nt">"dirsfirst"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w">
|
||||
</span><span class="nt">"sesame"</span><span class="p">:</span><span class="w"> </span><span class="s2">"somesecretnobodycanguess"</span><span class="w">
|
||||
</span><span class="p">}</span><span class="w">
|
||||
</span></code></pre>
|
||||
</div>
|
||||
<ul>
|
||||
<li><strong>username</strong> (<em>Optional</em>): Set a username to access your configuration is protected.</li>
|
||||
<li><strong>password</strong> (<em>Required</em>): Set a password for access.</li>
|
||||
<li><strong>ssl</strong> (<em>Optional</em>): Enable or Disable SSL for the editor.</li>
|
||||
<li><strong>allowed_networks</strong> (<em>Optional</em>): Limit access to the configurator by adding allowed IP addresses/networks to the list.</li>
|
||||
<li><strong>banned_ips</strong> (<em>Optional</em>): List of statically banned IP addresses.</li>
|
||||
<li><strong>banlimit</strong> (<em>Optional</em>): Ban access from IPs after <code class="highlighter-rouge">banlimit</code> failed login attempts. The default value <code class="highlighter-rouge">0</code> disables this feature. Restart the add-on to clear the list of banned IP addresses.</li>
|
||||
<li><strong>ignore_pattern</strong> (<em>Optional</em>): Files and folders to ignore in the UI.</li>
|
||||
<li><strong>dirsfirst</strong> (<em>Optional</em>): List directories before files in the file browser.</li>
|
||||
<li><strong>sesame</strong> (<em>Optional</em>): Secret token to dynamically allow access from the IP the request originates from. Open your bookmark https://hassio.yourdomain.com:8123/somesecretnobodycanguess while <code class="highlighter-rouge">allowed_networks</code> is set to <code class="highlighter-rouge">[]</code> and boom! Open Sesame! You can use the <em>Network status</em> menu to revoke IP addresses for which access has been granted.</li>
|
||||
</ul>
|
||||
<h3><a class="title-link" name="embedding-into-home-assistant" href="#embedding-into-home-assistant"></a> Embedding into Home-Assistant</h3>
|
||||
<p>Using the Home Assistant component <a href="https://home-assistant.io/components/panel_iframe/">panel_iframe</a> it is possible to embed the configurator directly into Home Assistant, allowing you to modify your configuration from within the Home Assistant frontend.</p>
|
||||
<p>An example configuration would look like this:</p>
|
||||
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">panel_iframe</span><span class="pi">:</span>
|
||||
<span class="s">configurator</span><span class="pi">:</span>
|
||||
<span class="s">title</span><span class="pi">:</span> <span class="s">Configurator</span>
|
||||
<span class="s">icon</span><span class="pi">:</span> <span class="s">mdi:wrench</span>
|
||||
<span class="s">url</span><span class="pi">:</span> <span class="s">http://hassio.local:3218</span>
|
||||
</code></pre>
|
||||
</div>
|
||||
<p class="note warning">
|
||||
Be careful when setting up port forwarding to the configurator while embedding into Home Assistant. If you don’t restrict access by requiring authentication and/or blocking based on client IP addresses, your configuration will be exposed to the internet!
|
||||
</p>
|
||||
</article>
|
||||
</div>
|
||||
<aside id="sidebar" class="grid__item one-third lap-one-whole palm-one-whole">
|
||||
<div class="grid">
|
||||
<section class="aside-module grid__item one-whole lap-one-half">
|
||||
<div class='section'>
|
||||
<h1 class="title delta">Topics</h1>
|
||||
<ul class='divided sidebar-menu'>
|
||||
<li>
|
||||
<a href='/hassio/'>Hass.io </a>
|
||||
<ul>
|
||||
<li><a href='/hassio/installation/'>Installation </a></li>
|
||||
<li><a href='/addons/'>Available add-ons </a></li>
|
||||
<li><a href='/hassio/installing_third_party_addons/'>Installing third-party add-ons </a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class='divided sidebar-menu'>
|
||||
<li>
|
||||
Advanced
|
||||
<ul>
|
||||
<li><a href='/hassio/zwave/'>Z-Wave </a></li>
|
||||
<li><a href='/hassio/external_storage/'>External storage </a></li>
|
||||
<li><a href='/hassio/run_local/'>Execute local things </a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class='divided sidebar-menu'>
|
||||
<li><a href='/developers/hassio/addon_development/'>Looking to create an add-on?</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
</div>
|
||||
<footer>
|
||||
<div class="grid-wrapper">
|
||||
<div class="grid">
|
||||
<div class="grid__item">
|
||||
<div class="copyright">
|
||||
<a rel="me" href='https://twitter.com/home_assistant'><i class="icon-twitter"></i></a>
|
||||
<a rel="me" href='https://facebook.com/homeassistantio'><i class="icon-facebook"></i></a>
|
||||
<a rel="me" href='https://plus.google.com/110560654828510104551'><i class="icon-google-plus"></i></a>
|
||||
<a rel="me" href='https://github.com/home-assistant/home-assistant'><i class="icon-github"></i></a>
|
||||
<div class="credit">
|
||||
Contact us at <a href='mailto:hello@home-assistant.io'>hello@home-assistant.io</a> (no support!).<br>
|
||||
Website powered by <a href='http://jekyllrb.com/'>Jekyll</a> and the <a href='https://github.com/coogie/oscailte'>Oscalite theme</a>.<br />
|
||||
Hosted by <a href='https://pages.github.com/'>GitHub</a> and served by <a href='https://cloudflare.com'>CloudFlare</a>.
|
||||
</div>
|
||||
<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png" /></a><br /><span xmlns:dct="http://purl.org/dc/terms/" property="dct:title">home-assistant.io</span> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/">Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License</a>.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
<script>
|
||||
var _gaq=[['_setAccount','UA-57927901-1'],['_trackPageview']];
|
||||
(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];
|
||||
g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js';
|
||||
s.parentNode.insertBefore(g,s)}(document,'script'));
|
||||
</script>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/docsearch.js/2/docsearch.min.css" />
|
||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/docsearch.js/2/docsearch.min.js"></script>
|
||||
<script type="text/javascript">
|
||||
docsearch({
|
||||
apiKey: 'ae96d94b201c5444c8a443093edf3efb',
|
||||
indexName: 'home-assistant',
|
||||
inputSelector: '#search',
|
||||
debug: false // Set debug to true if you want to inspect the dropdown
|
||||
});
|
||||
document.querySelector('.search .close').addEventListener('click', function(ev) {
|
||||
ev.preventDefault();
|
||||
document.querySelector('.search-container').style.display = 'none';
|
||||
});
|
||||
document.querySelector('.show-search').addEventListener('click', function(ev) {
|
||||
ev.preventDefault();
|
||||
document.querySelector('.search-container').style.display = 'block';
|
||||
document.getElementById('toggle').checked = false;
|
||||
document.querySelector('.search-container input').focus();
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
209
addons/dhcp_server/index.html
Normal file
209
addons/dhcp_server/index.html
Normal file
|
@ -0,0 +1,209 @@
|
|||
<!doctype html>
|
||||
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
|
||||
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
|
||||
<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]-->
|
||||
<!--[if gt IE 8]><!--> <html> <!--<![endif]-->
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<title>DHCP server - Home Assistant</title>
|
||||
<meta name="author" content="Home Assistant">
|
||||
<meta name="description" content="A simple DHCP server.">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="canonical" href="https://home-assistant.io/addons/dhcp_server/">
|
||||
<meta property="fb:app_id" content="338291289691179">
|
||||
<meta property="og:title" content="DHCP server">
|
||||
<meta property="og:site_name" content="Home Assistant">
|
||||
<meta property="og:url" content="https://home-assistant.io/addons/dhcp_server/">
|
||||
<meta property="og:type" content="article">
|
||||
<meta property="og:description" content="A simple DHCP server.">
|
||||
<meta property="og:image" content="https://home-assistant.io/images/default-social.png">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:site" content="@home_assistant">
|
||||
<meta name="twitter:title" content="DHCP server">
|
||||
<meta name="twitter:description" content="A simple DHCP server.">
|
||||
<meta name="twitter:image" content="https://home-assistant.io/images/default-social.png">
|
||||
<link href="/stylesheets/screen.css" media="screen, projection, print" rel="stylesheet">
|
||||
<link href="/atom.xml" rel="alternate" title="Home Assistant" type="application/atom+xml">
|
||||
<link rel='shortcut icon' href='/images/favicon.ico' />
|
||||
<link rel='icon' type='image/png' href='/images/favicon-192x192.png' sizes='192x192' />
|
||||
</head>
|
||||
<body >
|
||||
<header class='site-header'>
|
||||
<div class="grid-wrapper">
|
||||
<div class="grid">
|
||||
<div class="grid__item three-tenths lap-two-sixths palm-one-whole ha-title">
|
||||
<a href="/" class="site-title">
|
||||
<img width='40' src='/demo/favicon-192x192.png'>
|
||||
<span>Home Assistant</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="grid__item seven-tenths lap-four-sixths palm-one-whole">
|
||||
<nav>
|
||||
<input type="checkbox" id="toggle">
|
||||
<label for="toggle" class="toggle" data-open="Main Menu" data-close="Close Menu"></label>
|
||||
<ul class="menu pull-right">
|
||||
<li><a href="/getting-started/">Getting started</a></li>
|
||||
<li><a href="/components/">Components</a></li>
|
||||
<li><a href="/docs/">Docs</a></li>
|
||||
<li><a href="/cookbook/">Examples</a></li>
|
||||
<li><a href="/developers/">Developers</a></li>
|
||||
<li><a href="/blog/">Blog</a></li>
|
||||
<li><a href="/help/">Need help?</a></li>
|
||||
<li><a href='#' class='show-search'><i class="icon-search"></i></a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
<div class='search-container' style='display: none'>
|
||||
<div class='search'>
|
||||
<i class="icon-search"></i>
|
||||
<input id='search' placeholder='Search the docs…'>
|
||||
<a href='#' class='close'><i class="icon-remove-sign"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
<div class="grid-wrapper">
|
||||
<div class="grid grid-center">
|
||||
<div class="grid__item two-thirds lap-one-whole palm-one-whole">
|
||||
<article class="page">
|
||||
<div class='edit-github'><a href='https://github.com/home-assistant/home-assistant.github.io/tree/current/source/_addons/dhcp_server.markdown'>Edit this page on GitHub</a></div>
|
||||
<header>
|
||||
<h1 class="title indent">
|
||||
DHCP server
|
||||
</h1>
|
||||
</header>
|
||||
<hr class="divider">
|
||||
<p>Create a simple DHCP server for your network and allow setting fixed IPs for devices.</p>
|
||||
<div class="language-json highlighter-rouge"><pre class="highlight"><code><span class="p">{</span><span class="w">
|
||||
</span><span class="nt">"domain"</span><span class="p">:</span><span class="w"> </span><span class="s2">"mynetwork.local"</span><span class="p">,</span><span class="w">
|
||||
</span><span class="nt">"dns"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">"8.8.8.8"</span><span class="p">,</span><span class="w"> </span><span class="s2">"8.8.4.4"</span><span class="p">],</span><span class="w">
|
||||
</span><span class="nt">"networks"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w">
|
||||
</span><span class="p">{</span><span class="w">
|
||||
</span><span class="nt">"subnet"</span><span class="p">:</span><span class="w"> </span><span class="s2">"192.168.1.0"</span><span class="p">,</span><span class="w">
|
||||
</span><span class="nt">"netmask"</span><span class="p">:</span><span class="w"> </span><span class="s2">"255.255.255.0"</span><span class="p">,</span><span class="w">
|
||||
</span><span class="nt">"range_start"</span><span class="p">:</span><span class="w"> </span><span class="s2">"192.168.1.100"</span><span class="p">,</span><span class="w">
|
||||
</span><span class="nt">"range_end"</span><span class="p">:</span><span class="w"> </span><span class="s2">"192.168.1.200"</span><span class="p">,</span><span class="w">
|
||||
</span><span class="nt">"broadcast"</span><span class="p">:</span><span class="w"> </span><span class="s2">"192.168.1.255"</span><span class="p">,</span><span class="w">
|
||||
</span><span class="nt">"gateway"</span><span class="p">:</span><span class="w"> </span><span class="s2">"192.168.1.1"</span><span class="p">,</span><span class="w">
|
||||
</span><span class="nt">"interface"</span><span class="p">:</span><span class="w"> </span><span class="s2">"eth0"</span><span class="w">
|
||||
</span><span class="p">}</span><span class="w">
|
||||
</span><span class="p">],</span><span class="w">
|
||||
</span><span class="nt">"hosts"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w">
|
||||
</span><span class="p">{</span><span class="w">
|
||||
</span><span class="nt">"name"</span><span class="p">:</span><span class="w"> </span><span class="s2">"webcam_xy"</span><span class="p">,</span><span class="w">
|
||||
</span><span class="nt">"mac"</span><span class="p">:</span><span class="w"> </span><span class="s2">"aa:bb:ee:cc"</span><span class="p">,</span><span class="w">
|
||||
</span><span class="nt">"ip"</span><span class="p">:</span><span class="w"> </span><span class="s2">"192.168.1.40"</span><span class="w">
|
||||
</span><span class="p">}</span><span class="w">
|
||||
</span><span class="p">]</span><span class="w">
|
||||
</span><span class="p">}</span><span class="w">
|
||||
</span></code></pre>
|
||||
</div>
|
||||
<p>Configuration variables:</p>
|
||||
<ul>
|
||||
<li><strong>domain</strong> (<em>Required</em>): Your network domain name.</li>
|
||||
<li><strong>dns</strong> (<em>Required</em>): A list of DNS server for your network.</li>
|
||||
<li><strong>networks</strong> (<em>Optional</em>): A list of network to provide DHCP.
|
||||
- <strong>subnet</strong> (<em>Required</em>): Your network schema.
|
||||
- <strong>netmask</strong> (<em>Required</em>): Your network netmask.
|
||||
- <strong>range_start</strong> (<em>Required</em>): Start address for dhcp leases.
|
||||
- <strong>range_end</strong> (<em>Required</em>): End address for dhcp leases.
|
||||
- <strong>broadcast</strong> (<em>Required</em>): Network broadcast address.
|
||||
- <strong>gateway</strong> (<em>Required</em>): A List of gateways.
|
||||
<ul>
|
||||
<li><strong>interface</strong> (<em>Required</em>): Interface on that will be listen. Normally is <code class="highlighter-rouge">eth0</code> for ethernet wired connection and <code class="highlighter-rouge">wlan0</code> for wireless connection.</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><strong>hosts</strong> (<em>Optional</em>): A list of fixed IPs for devices.
|
||||
<ul>
|
||||
<li><strong>name</strong> (<em>Required</em>): Name/hostname of your device.
|
||||
- <strong>mac</strong> (<em>Required</em>): Mac address of your device.
|
||||
- <strong>ip</strong> (<em>Required</em>): Fix ip address for device.</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</article>
|
||||
</div>
|
||||
<aside id="sidebar" class="grid__item one-third lap-one-whole palm-one-whole">
|
||||
<div class="grid">
|
||||
<section class="aside-module grid__item one-whole lap-one-half">
|
||||
<div class='section'>
|
||||
<h1 class="title delta">Topics</h1>
|
||||
<ul class='divided sidebar-menu'>
|
||||
<li>
|
||||
<a href='/hassio/'>Hass.io </a>
|
||||
<ul>
|
||||
<li><a href='/hassio/installation/'>Installation </a></li>
|
||||
<li><a href='/addons/'>Available add-ons </a></li>
|
||||
<li><a href='/hassio/installing_third_party_addons/'>Installing third-party add-ons </a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class='divided sidebar-menu'>
|
||||
<li>
|
||||
Advanced
|
||||
<ul>
|
||||
<li><a href='/hassio/zwave/'>Z-Wave </a></li>
|
||||
<li><a href='/hassio/external_storage/'>External storage </a></li>
|
||||
<li><a href='/hassio/run_local/'>Execute local things </a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class='divided sidebar-menu'>
|
||||
<li><a href='/developers/hassio/addon_development/'>Looking to create an add-on?</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
</div>
|
||||
<footer>
|
||||
<div class="grid-wrapper">
|
||||
<div class="grid">
|
||||
<div class="grid__item">
|
||||
<div class="copyright">
|
||||
<a rel="me" href='https://twitter.com/home_assistant'><i class="icon-twitter"></i></a>
|
||||
<a rel="me" href='https://facebook.com/homeassistantio'><i class="icon-facebook"></i></a>
|
||||
<a rel="me" href='https://plus.google.com/110560654828510104551'><i class="icon-google-plus"></i></a>
|
||||
<a rel="me" href='https://github.com/home-assistant/home-assistant'><i class="icon-github"></i></a>
|
||||
<div class="credit">
|
||||
Contact us at <a href='mailto:hello@home-assistant.io'>hello@home-assistant.io</a> (no support!).<br>
|
||||
Website powered by <a href='http://jekyllrb.com/'>Jekyll</a> and the <a href='https://github.com/coogie/oscailte'>Oscalite theme</a>.<br />
|
||||
Hosted by <a href='https://pages.github.com/'>GitHub</a> and served by <a href='https://cloudflare.com'>CloudFlare</a>.
|
||||
</div>
|
||||
<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png" /></a><br /><span xmlns:dct="http://purl.org/dc/terms/" property="dct:title">home-assistant.io</span> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/">Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License</a>.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
<script>
|
||||
var _gaq=[['_setAccount','UA-57927901-1'],['_trackPageview']];
|
||||
(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];
|
||||
g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js';
|
||||
s.parentNode.insertBefore(g,s)}(document,'script'));
|
||||
</script>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/docsearch.js/2/docsearch.min.css" />
|
||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/docsearch.js/2/docsearch.min.js"></script>
|
||||
<script type="text/javascript">
|
||||
docsearch({
|
||||
apiKey: 'ae96d94b201c5444c8a443093edf3efb',
|
||||
indexName: 'home-assistant',
|
||||
inputSelector: '#search',
|
||||
debug: false // Set debug to true if you want to inspect the dropdown
|
||||
});
|
||||
document.querySelector('.search .close').addEventListener('click', function(ev) {
|
||||
ev.preventDefault();
|
||||
document.querySelector('.search-container').style.display = 'none';
|
||||
});
|
||||
document.querySelector('.show-search').addEventListener('click', function(ev) {
|
||||
ev.preventDefault();
|
||||
document.querySelector('.search-container').style.display = 'block';
|
||||
document.getElementById('toggle').checked = false;
|
||||
document.querySelector('.search-container input').focus();
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
184
addons/dnsmasq/index.html
Normal file
184
addons/dnsmasq/index.html
Normal file
|
@ -0,0 +1,184 @@
|
|||
<!doctype html>
|
||||
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
|
||||
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
|
||||
<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]-->
|
||||
<!--[if gt IE 8]><!--> <html> <!--<![endif]-->
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<title>Dnsmasq - Home Assistant</title>
|
||||
<meta name="author" content="Home Assistant">
|
||||
<meta name="description" content="A simple DNS server.">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="canonical" href="https://home-assistant.io/addons/dnsmasq/">
|
||||
<meta property="fb:app_id" content="338291289691179">
|
||||
<meta property="og:title" content="Dnsmasq">
|
||||
<meta property="og:site_name" content="Home Assistant">
|
||||
<meta property="og:url" content="https://home-assistant.io/addons/dnsmasq/">
|
||||
<meta property="og:type" content="article">
|
||||
<meta property="og:description" content="A simple DNS server.">
|
||||
<meta property="og:image" content="https://home-assistant.io/images/default-social.png">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:site" content="@home_assistant">
|
||||
<meta name="twitter:title" content="Dnsmasq">
|
||||
<meta name="twitter:description" content="A simple DNS server.">
|
||||
<meta name="twitter:image" content="https://home-assistant.io/images/default-social.png">
|
||||
<link href="/stylesheets/screen.css" media="screen, projection, print" rel="stylesheet">
|
||||
<link href="/atom.xml" rel="alternate" title="Home Assistant" type="application/atom+xml">
|
||||
<link rel='shortcut icon' href='/images/favicon.ico' />
|
||||
<link rel='icon' type='image/png' href='/images/favicon-192x192.png' sizes='192x192' />
|
||||
</head>
|
||||
<body >
|
||||
<header class='site-header'>
|
||||
<div class="grid-wrapper">
|
||||
<div class="grid">
|
||||
<div class="grid__item three-tenths lap-two-sixths palm-one-whole ha-title">
|
||||
<a href="/" class="site-title">
|
||||
<img width='40' src='/demo/favicon-192x192.png'>
|
||||
<span>Home Assistant</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="grid__item seven-tenths lap-four-sixths palm-one-whole">
|
||||
<nav>
|
||||
<input type="checkbox" id="toggle">
|
||||
<label for="toggle" class="toggle" data-open="Main Menu" data-close="Close Menu"></label>
|
||||
<ul class="menu pull-right">
|
||||
<li><a href="/getting-started/">Getting started</a></li>
|
||||
<li><a href="/components/">Components</a></li>
|
||||
<li><a href="/docs/">Docs</a></li>
|
||||
<li><a href="/cookbook/">Examples</a></li>
|
||||
<li><a href="/developers/">Developers</a></li>
|
||||
<li><a href="/blog/">Blog</a></li>
|
||||
<li><a href="/help/">Need help?</a></li>
|
||||
<li><a href='#' class='show-search'><i class="icon-search"></i></a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
<div class='search-container' style='display: none'>
|
||||
<div class='search'>
|
||||
<i class="icon-search"></i>
|
||||
<input id='search' placeholder='Search the docs…'>
|
||||
<a href='#' class='close'><i class="icon-remove-sign"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
<div class="grid-wrapper">
|
||||
<div class="grid grid-center">
|
||||
<div class="grid__item two-thirds lap-one-whole palm-one-whole">
|
||||
<article class="page">
|
||||
<div class='edit-github'><a href='https://github.com/home-assistant/home-assistant.github.io/tree/current/source/_addons/dnsmasq.markdown'>Edit this page on GitHub</a></div>
|
||||
<header>
|
||||
<h1 class="title indent">
|
||||
Dnsmasq
|
||||
</h1>
|
||||
</header>
|
||||
<hr class="divider">
|
||||
<p>Setup and manage a <a href="http://thekelleys.org.uk/dnsmasq/doc.html">Dnsmasq</a> DNS server. This allows you to manipulate DNS requests. For example, you can have your Home Assistant domain resolve with an internal address inside your network.</p>
|
||||
<p class="note info">
|
||||
<code class="highlighter-rouge">interface</code> options are for resinos based installation. On other system you can set it to <code class="highlighter-rouge">""</code>, for listen on every interface.
|
||||
</p>
|
||||
<div class="language-json highlighter-rouge"><pre class="highlight"><code><span class="p">{</span><span class="w">
|
||||
</span><span class="nt">"defaults"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">"8.8.8.8"</span><span class="p">,</span><span class="w"> </span><span class="s2">"8.8.4.4"</span><span class="p">],</span><span class="w">
|
||||
</span><span class="nt">"forwards"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w">
|
||||
</span><span class="p">{</span><span class="nt">"domain"</span><span class="p">:</span><span class="w"> </span><span class="s2">"mystuff.local"</span><span class="p">,</span><span class="w"> </span><span class="nt">"server"</span><span class="p">:</span><span class="w"> </span><span class="s2">"192.168.1.40"</span><span class="p">}</span><span class="w">
|
||||
</span><span class="p">],</span><span class="w">
|
||||
</span><span class="nt">"hosts"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w">
|
||||
</span><span class="p">{</span><span class="nt">"host"</span><span class="p">:</span><span class="w"> </span><span class="s2">"home.mydomain.io"</span><span class="p">,</span><span class="w"> </span><span class="nt">"ip"</span><span class="p">:</span><span class="w"> </span><span class="s2">"192.168.1.10"</span><span class="p">}</span><span class="w">
|
||||
</span><span class="p">],</span><span class="w">
|
||||
</span><span class="nt">"interface"</span><span class="p">:</span><span class="w"> </span><span class="s2">"eth1"</span><span class="w">
|
||||
</span><span class="p">}</span><span class="w">
|
||||
</span></code></pre>
|
||||
</div>
|
||||
<p>Configuration variables:</p>
|
||||
<ul>
|
||||
<li><strong>defaults</strong> (<em>Required</em>): A list of DNS servers to forward default requests to.</li>
|
||||
<li><strong>forwards</strong> (<em>Optional</em>): A list of domains that will forward to a specific server.</li>
|
||||
<li><strong>hosts</strong> (<em>Optional</em>): A list of hosts to resolve statically.</li>
|
||||
<li><strong>interface</strong> (<em>Optional</em>): If an interface is set, it listens only on this interface. Needs to be set for ResinOS. Normally is <code class="highlighter-rouge">eth0</code> for ethernet wired connection and <code class="highlighter-rouge">wlan0</code> for wireless connection.</li>
|
||||
</ul>
|
||||
</article>
|
||||
</div>
|
||||
<aside id="sidebar" class="grid__item one-third lap-one-whole palm-one-whole">
|
||||
<div class="grid">
|
||||
<section class="aside-module grid__item one-whole lap-one-half">
|
||||
<div class='section'>
|
||||
<h1 class="title delta">Topics</h1>
|
||||
<ul class='divided sidebar-menu'>
|
||||
<li>
|
||||
<a href='/hassio/'>Hass.io </a>
|
||||
<ul>
|
||||
<li><a href='/hassio/installation/'>Installation </a></li>
|
||||
<li><a href='/addons/'>Available add-ons </a></li>
|
||||
<li><a href='/hassio/installing_third_party_addons/'>Installing third-party add-ons </a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class='divided sidebar-menu'>
|
||||
<li>
|
||||
Advanced
|
||||
<ul>
|
||||
<li><a href='/hassio/zwave/'>Z-Wave </a></li>
|
||||
<li><a href='/hassio/external_storage/'>External storage </a></li>
|
||||
<li><a href='/hassio/run_local/'>Execute local things </a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class='divided sidebar-menu'>
|
||||
<li><a href='/developers/hassio/addon_development/'>Looking to create an add-on?</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
</div>
|
||||
<footer>
|
||||
<div class="grid-wrapper">
|
||||
<div class="grid">
|
||||
<div class="grid__item">
|
||||
<div class="copyright">
|
||||
<a rel="me" href='https://twitter.com/home_assistant'><i class="icon-twitter"></i></a>
|
||||
<a rel="me" href='https://facebook.com/homeassistantio'><i class="icon-facebook"></i></a>
|
||||
<a rel="me" href='https://plus.google.com/110560654828510104551'><i class="icon-google-plus"></i></a>
|
||||
<a rel="me" href='https://github.com/home-assistant/home-assistant'><i class="icon-github"></i></a>
|
||||
<div class="credit">
|
||||
Contact us at <a href='mailto:hello@home-assistant.io'>hello@home-assistant.io</a> (no support!).<br>
|
||||
Website powered by <a href='http://jekyllrb.com/'>Jekyll</a> and the <a href='https://github.com/coogie/oscailte'>Oscalite theme</a>.<br />
|
||||
Hosted by <a href='https://pages.github.com/'>GitHub</a> and served by <a href='https://cloudflare.com'>CloudFlare</a>.
|
||||
</div>
|
||||
<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png" /></a><br /><span xmlns:dct="http://purl.org/dc/terms/" property="dct:title">home-assistant.io</span> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/">Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License</a>.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
<script>
|
||||
var _gaq=[['_setAccount','UA-57927901-1'],['_trackPageview']];
|
||||
(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];
|
||||
g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js';
|
||||
s.parentNode.insertBefore(g,s)}(document,'script'));
|
||||
</script>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/docsearch.js/2/docsearch.min.css" />
|
||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/docsearch.js/2/docsearch.min.js"></script>
|
||||
<script type="text/javascript">
|
||||
docsearch({
|
||||
apiKey: 'ae96d94b201c5444c8a443093edf3efb',
|
||||
indexName: 'home-assistant',
|
||||
inputSelector: '#search',
|
||||
debug: false // Set debug to true if you want to inspect the dropdown
|
||||
});
|
||||
document.querySelector('.search .close').addEventListener('click', function(ev) {
|
||||
ev.preventDefault();
|
||||
document.querySelector('.search-container').style.display = 'none';
|
||||
});
|
||||
document.querySelector('.show-search').addEventListener('click', function(ev) {
|
||||
ev.preventDefault();
|
||||
document.querySelector('.search-container').style.display = 'block';
|
||||
document.getElementById('toggle').checked = false;
|
||||
document.querySelector('.search-container input').focus();
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
190
addons/duckdns/index.html
Normal file
190
addons/duckdns/index.html
Normal file
|
@ -0,0 +1,190 @@
|
|||
<!doctype html>
|
||||
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
|
||||
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
|
||||
<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]-->
|
||||
<!--[if gt IE 8]><!--> <html> <!--<![endif]-->
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<title>DuckDNS - Home Assistant</title>
|
||||
<meta name="author" content="Home Assistant">
|
||||
<meta name="description" content="Automatically update your Duck DNS IP address with integrated HTTPS support via Let's Encrypt.">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="canonical" href="https://home-assistant.io/addons/duckdns/">
|
||||
<meta property="fb:app_id" content="338291289691179">
|
||||
<meta property="og:title" content="DuckDNS">
|
||||
<meta property="og:site_name" content="Home Assistant">
|
||||
<meta property="og:url" content="https://home-assistant.io/addons/duckdns/">
|
||||
<meta property="og:type" content="article">
|
||||
<meta property="og:description" content="Automatically update your Duck DNS IP address with integrated HTTPS support via Let's Encrypt.">
|
||||
<meta property="og:image" content="https://home-assistant.io/images/default-social.png">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:site" content="@home_assistant">
|
||||
<meta name="twitter:title" content="DuckDNS">
|
||||
<meta name="twitter:description" content="Automatically update your Duck DNS IP address with integrated HTTPS support via Let's Encrypt.">
|
||||
<meta name="twitter:image" content="https://home-assistant.io/images/default-social.png">
|
||||
<link href="/stylesheets/screen.css" media="screen, projection, print" rel="stylesheet">
|
||||
<link href="/atom.xml" rel="alternate" title="Home Assistant" type="application/atom+xml">
|
||||
<link rel='shortcut icon' href='/images/favicon.ico' />
|
||||
<link rel='icon' type='image/png' href='/images/favicon-192x192.png' sizes='192x192' />
|
||||
</head>
|
||||
<body >
|
||||
<header class='site-header'>
|
||||
<div class="grid-wrapper">
|
||||
<div class="grid">
|
||||
<div class="grid__item three-tenths lap-two-sixths palm-one-whole ha-title">
|
||||
<a href="/" class="site-title">
|
||||
<img width='40' src='/demo/favicon-192x192.png'>
|
||||
<span>Home Assistant</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="grid__item seven-tenths lap-four-sixths palm-one-whole">
|
||||
<nav>
|
||||
<input type="checkbox" id="toggle">
|
||||
<label for="toggle" class="toggle" data-open="Main Menu" data-close="Close Menu"></label>
|
||||
<ul class="menu pull-right">
|
||||
<li><a href="/getting-started/">Getting started</a></li>
|
||||
<li><a href="/components/">Components</a></li>
|
||||
<li><a href="/docs/">Docs</a></li>
|
||||
<li><a href="/cookbook/">Examples</a></li>
|
||||
<li><a href="/developers/">Developers</a></li>
|
||||
<li><a href="/blog/">Blog</a></li>
|
||||
<li><a href="/help/">Need help?</a></li>
|
||||
<li><a href='#' class='show-search'><i class="icon-search"></i></a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
<div class='search-container' style='display: none'>
|
||||
<div class='search'>
|
||||
<i class="icon-search"></i>
|
||||
<input id='search' placeholder='Search the docs…'>
|
||||
<a href='#' class='close'><i class="icon-remove-sign"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
<div class="grid-wrapper">
|
||||
<div class="grid grid-center">
|
||||
<div class="grid__item two-thirds lap-one-whole palm-one-whole">
|
||||
<article class="page">
|
||||
<div class='edit-github'><a href='https://github.com/home-assistant/home-assistant.github.io/tree/current/source/_addons/duckdns.markdown'>Edit this page on GitHub</a></div>
|
||||
<header>
|
||||
<h1 class="title indent">
|
||||
DuckDNS
|
||||
</h1>
|
||||
</header>
|
||||
<hr class="divider">
|
||||
<p><a href="https://duckdns.org/">Duck DNS</a> is a free service which will point a DNS (sub domains of duckdns.org) to an IP of your choice. This add-on includes support for Let’s Encrypt and will automatically create and renew your certificates.</p>
|
||||
<div class="language-json highlighter-rouge"><pre class="highlight"><code><span class="p">{</span><span class="w">
|
||||
</span><span class="nt">"lets_encrypt"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
|
||||
</span><span class="nt">"accept_terms"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w">
|
||||
</span><span class="p">},</span><span class="w">
|
||||
</span><span class="nt">"token"</span><span class="p">:</span><span class="w"> </span><span class="s2">"sdfj-2131023-dslfjsd-12321"</span><span class="p">,</span><span class="w">
|
||||
</span><span class="nt">"domains"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">"my-domain.duckdns.org"</span><span class="p">]</span><span class="w">
|
||||
</span><span class="p">}</span><span class="w">
|
||||
</span></code></pre>
|
||||
</div>
|
||||
<p>Configuration variables:</p>
|
||||
<ul>
|
||||
<li><strong>token</strong> (<em>Required</em>): Your Duck DNS API key.</li>
|
||||
<li><strong>domains</strong> (<em>Required</em>): A list of domains to update DNS.</li>
|
||||
<li><strong>seconds</strong> (<em>Optional</em>): Seconds between updates to Duck DNS.</li>
|
||||
<li><strong>lets_encrypt.accept_terms</strong> (<em>Optional</em>): If you accept the <a href="https://letsencrypt.org/repository/">Let’s Encrypt Subscriber Agreement</a>, it will generate & update Let’s Enrypt certificates for your DuckDNS domain.</li>
|
||||
</ul>
|
||||
<h2><a class="title-link" name="home-assistant-configuration" href="#home-assistant-configuration"></a> Home Assistant configuration</h2>
|
||||
<p>Use the following configuration in Home Assistant to use the generated certificate:</p>
|
||||
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">http</span><span class="pi">:</span>
|
||||
<span class="s">base_url</span><span class="pi">:</span> <span class="s">https://my-domain.duckdns.org:8123</span>
|
||||
<span class="s">ssl_certificate</span><span class="pi">:</span> <span class="s">/ssl/fullchain.pem</span>
|
||||
<span class="s">ssl_key</span><span class="pi">:</span> <span class="s">/ssl/privkey.pem</span>
|
||||
</code></pre>
|
||||
</div>
|
||||
<p>If you use a port other than <code class="highlighter-rouge">8123</code> or an SSL proxy, change the port number accordingly.</p>
|
||||
<h2><a class="title-link" name="router-configuration" href="#router-configuration"></a> Router configuration</h2>
|
||||
<p>You’ll need to forward the port you listed in your configuration (8123 in the example above) on your router to your Home Assistant system. You can find guides on how to do this on <a href="https://portforward.com/">Port Forward</a> - noting that you’ll only need to forward the TCP port.</p>
|
||||
<p>Ensure that you allocate the Home Assistant system a fixed IP on your network before you configure port forwarding. You can do this either on the computer itself (see the <a href="/hassio/installation/">install guide</a> or via a static lease on your router.</p>
|
||||
</article>
|
||||
</div>
|
||||
<aside id="sidebar" class="grid__item one-third lap-one-whole palm-one-whole">
|
||||
<div class="grid">
|
||||
<section class="aside-module grid__item one-whole lap-one-half">
|
||||
<div class='section'>
|
||||
<h1 class="title delta">Topics</h1>
|
||||
<ul class='divided sidebar-menu'>
|
||||
<li>
|
||||
<a href='/hassio/'>Hass.io </a>
|
||||
<ul>
|
||||
<li><a href='/hassio/installation/'>Installation </a></li>
|
||||
<li><a href='/addons/'>Available add-ons </a></li>
|
||||
<li><a href='/hassio/installing_third_party_addons/'>Installing third-party add-ons </a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class='divided sidebar-menu'>
|
||||
<li>
|
||||
Advanced
|
||||
<ul>
|
||||
<li><a href='/hassio/zwave/'>Z-Wave </a></li>
|
||||
<li><a href='/hassio/external_storage/'>External storage </a></li>
|
||||
<li><a href='/hassio/run_local/'>Execute local things </a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class='divided sidebar-menu'>
|
||||
<li><a href='/developers/hassio/addon_development/'>Looking to create an add-on?</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
</div>
|
||||
<footer>
|
||||
<div class="grid-wrapper">
|
||||
<div class="grid">
|
||||
<div class="grid__item">
|
||||
<div class="copyright">
|
||||
<a rel="me" href='https://twitter.com/home_assistant'><i class="icon-twitter"></i></a>
|
||||
<a rel="me" href='https://facebook.com/homeassistantio'><i class="icon-facebook"></i></a>
|
||||
<a rel="me" href='https://plus.google.com/110560654828510104551'><i class="icon-google-plus"></i></a>
|
||||
<a rel="me" href='https://github.com/home-assistant/home-assistant'><i class="icon-github"></i></a>
|
||||
<div class="credit">
|
||||
Contact us at <a href='mailto:hello@home-assistant.io'>hello@home-assistant.io</a> (no support!).<br>
|
||||
Website powered by <a href='http://jekyllrb.com/'>Jekyll</a> and the <a href='https://github.com/coogie/oscailte'>Oscalite theme</a>.<br />
|
||||
Hosted by <a href='https://pages.github.com/'>GitHub</a> and served by <a href='https://cloudflare.com'>CloudFlare</a>.
|
||||
</div>
|
||||
<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png" /></a><br /><span xmlns:dct="http://purl.org/dc/terms/" property="dct:title">home-assistant.io</span> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/">Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License</a>.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
<script>
|
||||
var _gaq=[['_setAccount','UA-57927901-1'],['_trackPageview']];
|
||||
(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];
|
||||
g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js';
|
||||
s.parentNode.insertBefore(g,s)}(document,'script'));
|
||||
</script>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/docsearch.js/2/docsearch.min.css" />
|
||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/docsearch.js/2/docsearch.min.js"></script>
|
||||
<script type="text/javascript">
|
||||
docsearch({
|
||||
apiKey: 'ae96d94b201c5444c8a443093edf3efb',
|
||||
indexName: 'home-assistant',
|
||||
inputSelector: '#search',
|
||||
debug: false // Set debug to true if you want to inspect the dropdown
|
||||
});
|
||||
document.querySelector('.search .close').addEventListener('click', function(ev) {
|
||||
ev.preventDefault();
|
||||
document.querySelector('.search-container').style.display = 'none';
|
||||
});
|
||||
document.querySelector('.show-search').addEventListener('click', function(ev) {
|
||||
ev.preventDefault();
|
||||
document.querySelector('.search-container').style.display = 'block';
|
||||
document.getElementById('toggle').checked = false;
|
||||
document.querySelector('.search-container input').focus();
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
204
addons/git_pull/index.html
Normal file
204
addons/git_pull/index.html
Normal file
|
@ -0,0 +1,204 @@
|
|||
<!doctype html>
|
||||
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
|
||||
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
|
||||
<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]-->
|
||||
<!--[if gt IE 8]><!--> <html> <!--<![endif]-->
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<title>GIT pull - Home Assistant</title>
|
||||
<meta name="author" content="Home Assistant">
|
||||
<meta name="description" content="Load and update configuration files for Home Assistant from a GIT repository.">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="canonical" href="https://home-assistant.io/addons/git_pull/">
|
||||
<meta property="fb:app_id" content="338291289691179">
|
||||
<meta property="og:title" content="GIT pull">
|
||||
<meta property="og:site_name" content="Home Assistant">
|
||||
<meta property="og:url" content="https://home-assistant.io/addons/git_pull/">
|
||||
<meta property="og:type" content="article">
|
||||
<meta property="og:description" content="Load and update configuration files for Home Assistant from a GIT repository.">
|
||||
<meta property="og:image" content="https://home-assistant.io/images/default-social.png">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:site" content="@home_assistant">
|
||||
<meta name="twitter:title" content="GIT pull">
|
||||
<meta name="twitter:description" content="Load and update configuration files for Home Assistant from a GIT repository.">
|
||||
<meta name="twitter:image" content="https://home-assistant.io/images/default-social.png">
|
||||
<link href="/stylesheets/screen.css" media="screen, projection, print" rel="stylesheet">
|
||||
<link href="/atom.xml" rel="alternate" title="Home Assistant" type="application/atom+xml">
|
||||
<link rel='shortcut icon' href='/images/favicon.ico' />
|
||||
<link rel='icon' type='image/png' href='/images/favicon-192x192.png' sizes='192x192' />
|
||||
</head>
|
||||
<body >
|
||||
<header class='site-header'>
|
||||
<div class="grid-wrapper">
|
||||
<div class="grid">
|
||||
<div class="grid__item three-tenths lap-two-sixths palm-one-whole ha-title">
|
||||
<a href="/" class="site-title">
|
||||
<img width='40' src='/demo/favicon-192x192.png'>
|
||||
<span>Home Assistant</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="grid__item seven-tenths lap-four-sixths palm-one-whole">
|
||||
<nav>
|
||||
<input type="checkbox" id="toggle">
|
||||
<label for="toggle" class="toggle" data-open="Main Menu" data-close="Close Menu"></label>
|
||||
<ul class="menu pull-right">
|
||||
<li><a href="/getting-started/">Getting started</a></li>
|
||||
<li><a href="/components/">Components</a></li>
|
||||
<li><a href="/docs/">Docs</a></li>
|
||||
<li><a href="/cookbook/">Examples</a></li>
|
||||
<li><a href="/developers/">Developers</a></li>
|
||||
<li><a href="/blog/">Blog</a></li>
|
||||
<li><a href="/help/">Need help?</a></li>
|
||||
<li><a href='#' class='show-search'><i class="icon-search"></i></a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
<div class='search-container' style='display: none'>
|
||||
<div class='search'>
|
||||
<i class="icon-search"></i>
|
||||
<input id='search' placeholder='Search the docs…'>
|
||||
<a href='#' class='close'><i class="icon-remove-sign"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
<div class="grid-wrapper">
|
||||
<div class="grid grid-center">
|
||||
<div class="grid__item two-thirds lap-one-whole palm-one-whole">
|
||||
<article class="page">
|
||||
<div class='edit-github'><a href='https://github.com/home-assistant/home-assistant.github.io/tree/current/source/_addons/git_pull.markdown'>Edit this page on GitHub</a></div>
|
||||
<header>
|
||||
<h1 class="title indent">
|
||||
GIT pull
|
||||
</h1>
|
||||
</header>
|
||||
<hr class="divider">
|
||||
<p>Load and update configuration files for Home Assistant from a GIT repository.</p>
|
||||
<div class="language-json highlighter-rouge"><pre class="highlight"><code><span class="p">{</span><span class="w">
|
||||
</span><span class="nt">"repository"</span><span class="p">:</span><span class="w"> </span><span class="s2">"https://example.com/my_configs.git"</span><span class="p">,</span><span class="w">
|
||||
</span><span class="nt">"auto_restart"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w">
|
||||
</span><span class="nt">"repeat"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
|
||||
</span><span class="nt">"active"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w">
|
||||
</span><span class="nt">"interval"</span><span class="p">:</span><span class="w"> </span><span class="mi">300</span><span class="w">
|
||||
</span><span class="p">},</span><span class="w">
|
||||
</span><span class="nt">"deployment_key"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w">
|
||||
</span><span class="s2">"-----BEGIN RSA PRIVATE KEY-----"</span><span class="p">,</span><span class="w">
|
||||
</span><span class="s2">"MIIEowIBAAKCAQEAv3hUrCvqGZKpXQ5ofxTOuH6pYSOZDsCqPqmaGBdUzBFgauQM"</span><span class="p">,</span><span class="w">
|
||||
</span><span class="s2">"xDEcoODGHIsWd7t9meAFqUtKXndeiKjfP0MMKsttnDohL1kb9mRvHre4VUqMsT5F"</span><span class="p">,</span><span class="w">
|
||||
</span><span class="s2">"..."</span><span class="p">,</span><span class="w">
|
||||
</span><span class="s2">"i3RUtnIHxGi1NqknIY56Hwa3id2yk7cEzvQGAAko/t6PCbe20AfmSQczs7wDNtBD"</span><span class="p">,</span><span class="w">
|
||||
</span><span class="s2">"HgXRyIqIXHYk2+5w+N2eunURIBqCI9uWYK/r81TMR6V84R+XhtvM"</span><span class="p">,</span><span class="w">
|
||||
</span><span class="s2">"-----END RSA PRIVATE KEY-----"</span><span class="w">
|
||||
</span><span class="p">],</span><span class="w">
|
||||
</span><span class="nt">"deployment_key_protocol"</span><span class="p">:</span><span class="w"> </span><span class="s2">"rsa"</span><span class="w">
|
||||
</span><span class="p">}</span><span class="w">
|
||||
</span></code></pre>
|
||||
</div>
|
||||
<ul>
|
||||
<li><strong>repository</strong> (<em>Required</em>): GIT url to your repository. You have to add .git to your GITHub-Repository-URL (see example Config)</li>
|
||||
<li><strong>auto_restart</strong> (<em>Optional</em>): Make a restart of Home-Assistant if the config have change and is valid.</li>
|
||||
<li><strong>repeat/active</strong> (<em>Optional</em>): Pull periodic for GIT updates.</li>
|
||||
<li><strong>repeat/interval</strong> (<em>Optional</em>): Pull all x seconds and look for changes.</li>
|
||||
<li><strong>deployment_user</strong> (<em>Optional</em>): Username to use when authenticating to a repo with a username and password.</li>
|
||||
<li><strong>deployment_password</strong> (<em>Optional</em>): Password to use when authenticating to a repo. Ignored if deployment_user is not set.</li>
|
||||
<li><strong>deployment_key</strong> (<em>Optional</em>): A private SSH key that will be used for communication during git operations. This key is mandatory for ssh-accessed repositories, which are the ones with the following pattern: <code class="highlighter-rouge"><user>@<host>:<repository path></code>.</li>
|
||||
<li>
|
||||
<p><strong>deployment_key_protocol</strong> (<em>Optional</em>): The key protocol. Default is “rsa”. Valid protocols are:</p>
|
||||
<ul>
|
||||
<li><strong>dsa</strong></li>
|
||||
<li><strong>ecdsa</strong></li>
|
||||
<li><strong>ed25519</strong></li>
|
||||
<li><strong>rsa</strong></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<p>The protocol is typically known by the suffix of the private key –e.g., a key file named <code class="highlighter-rouge">id_rsa</code> will be a private key using “rsa” protocol.</p>
|
||||
<p class="note warning">
|
||||
You should only use this add-on if you do not have an existing configuration or if your existing configuration is already in a git repository. If the script does not find the necessary git files in your configuration folder, it will delete anything that might be there. Please ensure that there is a <code class="highlighter-rouge">.git</code> folder before using this. You can verify this by listing the items in the configuration folder including hidden files. The command is <code class="highlighter-rouge">ls -a /config</code>.
|
||||
</p>
|
||||
</article>
|
||||
</div>
|
||||
<aside id="sidebar" class="grid__item one-third lap-one-whole palm-one-whole">
|
||||
<div class="grid">
|
||||
<section class="aside-module grid__item one-whole lap-one-half">
|
||||
<div class='section'>
|
||||
<h1 class="title delta">Topics</h1>
|
||||
<ul class='divided sidebar-menu'>
|
||||
<li>
|
||||
<a href='/hassio/'>Hass.io </a>
|
||||
<ul>
|
||||
<li><a href='/hassio/installation/'>Installation </a></li>
|
||||
<li><a href='/addons/'>Available add-ons </a></li>
|
||||
<li><a href='/hassio/installing_third_party_addons/'>Installing third-party add-ons </a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class='divided sidebar-menu'>
|
||||
<li>
|
||||
Advanced
|
||||
<ul>
|
||||
<li><a href='/hassio/zwave/'>Z-Wave </a></li>
|
||||
<li><a href='/hassio/external_storage/'>External storage </a></li>
|
||||
<li><a href='/hassio/run_local/'>Execute local things </a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class='divided sidebar-menu'>
|
||||
<li><a href='/developers/hassio/addon_development/'>Looking to create an add-on?</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
</div>
|
||||
<footer>
|
||||
<div class="grid-wrapper">
|
||||
<div class="grid">
|
||||
<div class="grid__item">
|
||||
<div class="copyright">
|
||||
<a rel="me" href='https://twitter.com/home_assistant'><i class="icon-twitter"></i></a>
|
||||
<a rel="me" href='https://facebook.com/homeassistantio'><i class="icon-facebook"></i></a>
|
||||
<a rel="me" href='https://plus.google.com/110560654828510104551'><i class="icon-google-plus"></i></a>
|
||||
<a rel="me" href='https://github.com/home-assistant/home-assistant'><i class="icon-github"></i></a>
|
||||
<div class="credit">
|
||||
Contact us at <a href='mailto:hello@home-assistant.io'>hello@home-assistant.io</a> (no support!).<br>
|
||||
Website powered by <a href='http://jekyllrb.com/'>Jekyll</a> and the <a href='https://github.com/coogie/oscailte'>Oscalite theme</a>.<br />
|
||||
Hosted by <a href='https://pages.github.com/'>GitHub</a> and served by <a href='https://cloudflare.com'>CloudFlare</a>.
|
||||
</div>
|
||||
<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png" /></a><br /><span xmlns:dct="http://purl.org/dc/terms/" property="dct:title">home-assistant.io</span> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/">Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License</a>.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
<script>
|
||||
var _gaq=[['_setAccount','UA-57927901-1'],['_trackPageview']];
|
||||
(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];
|
||||
g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js';
|
||||
s.parentNode.insertBefore(g,s)}(document,'script'));
|
||||
</script>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/docsearch.js/2/docsearch.min.css" />
|
||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/docsearch.js/2/docsearch.min.js"></script>
|
||||
<script type="text/javascript">
|
||||
docsearch({
|
||||
apiKey: 'ae96d94b201c5444c8a443093edf3efb',
|
||||
indexName: 'home-assistant',
|
||||
inputSelector: '#search',
|
||||
debug: false // Set debug to true if you want to inspect the dropdown
|
||||
});
|
||||
document.querySelector('.search .close').addEventListener('click', function(ev) {
|
||||
ev.preventDefault();
|
||||
document.querySelector('.search-container').style.display = 'none';
|
||||
});
|
||||
document.querySelector('.show-search').addEventListener('click', function(ev) {
|
||||
ev.preventDefault();
|
||||
document.querySelector('.search-container').style.display = 'block';
|
||||
document.getElementById('toggle').checked = false;
|
||||
document.querySelector('.search-container input').focus();
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
211
addons/google_assistant/index.html
Normal file
211
addons/google_assistant/index.html
Normal file
|
@ -0,0 +1,211 @@
|
|||
<!doctype html>
|
||||
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
|
||||
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
|
||||
<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]-->
|
||||
<!--[if gt IE 8]><!--> <html> <!--<![endif]-->
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<title>Google Assistant - Home Assistant</title>
|
||||
<meta name="author" content="Home Assistant">
|
||||
<meta name="description" content="Enhance your Hass.io installation with Google Assistant.">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="canonical" href="https://home-assistant.io/addons/google_assistant/">
|
||||
<meta property="fb:app_id" content="338291289691179">
|
||||
<meta property="og:title" content="Google Assistant">
|
||||
<meta property="og:site_name" content="Home Assistant">
|
||||
<meta property="og:url" content="https://home-assistant.io/addons/google_assistant/">
|
||||
<meta property="og:type" content="article">
|
||||
<meta property="og:description" content="Enhance your Hass.io installation with Google Assistant.">
|
||||
<meta property="og:image" content="https://home-assistant.io/images/default-social.png">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:site" content="@home_assistant">
|
||||
<meta name="twitter:title" content="Google Assistant">
|
||||
<meta name="twitter:description" content="Enhance your Hass.io installation with Google Assistant.">
|
||||
<meta name="twitter:image" content="https://home-assistant.io/images/default-social.png">
|
||||
<link href="/stylesheets/screen.css" media="screen, projection, print" rel="stylesheet">
|
||||
<link href="/atom.xml" rel="alternate" title="Home Assistant" type="application/atom+xml">
|
||||
<link rel='shortcut icon' href='/images/favicon.ico' />
|
||||
<link rel='icon' type='image/png' href='/images/favicon-192x192.png' sizes='192x192' />
|
||||
</head>
|
||||
<body >
|
||||
<header class='site-header'>
|
||||
<div class="grid-wrapper">
|
||||
<div class="grid">
|
||||
<div class="grid__item three-tenths lap-two-sixths palm-one-whole ha-title">
|
||||
<a href="/" class="site-title">
|
||||
<img width='40' src='/demo/favicon-192x192.png'>
|
||||
<span>Home Assistant</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="grid__item seven-tenths lap-four-sixths palm-one-whole">
|
||||
<nav>
|
||||
<input type="checkbox" id="toggle">
|
||||
<label for="toggle" class="toggle" data-open="Main Menu" data-close="Close Menu"></label>
|
||||
<ul class="menu pull-right">
|
||||
<li><a href="/getting-started/">Getting started</a></li>
|
||||
<li><a href="/components/">Components</a></li>
|
||||
<li><a href="/docs/">Docs</a></li>
|
||||
<li><a href="/cookbook/">Examples</a></li>
|
||||
<li><a href="/developers/">Developers</a></li>
|
||||
<li><a href="/blog/">Blog</a></li>
|
||||
<li><a href="/help/">Need help?</a></li>
|
||||
<li><a href='#' class='show-search'><i class="icon-search"></i></a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
<div class='search-container' style='display: none'>
|
||||
<div class='search'>
|
||||
<i class="icon-search"></i>
|
||||
<input id='search' placeholder='Search the docs…'>
|
||||
<a href='#' class='close'><i class="icon-remove-sign"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
<div class="grid-wrapper">
|
||||
<div class="grid grid-center">
|
||||
<div class="grid__item two-thirds lap-one-whole palm-one-whole">
|
||||
<article class="page">
|
||||
<div class='edit-github'><a href='https://github.com/home-assistant/home-assistant.github.io/tree/current/source/_addons/google_assistant.markdown'>Edit this page on GitHub</a></div>
|
||||
<header>
|
||||
<h1 class="title indent">
|
||||
Google Assistant
|
||||
</h1>
|
||||
</header>
|
||||
<hr class="divider">
|
||||
<p class="note">
|
||||
If you want to integrate your Google Home, or mobile phone running Google Assistant, with Home Assistant, then you want the <a href="https://home-assistant.io/components/google_assistant/">Google Assistant component</a>.
|
||||
</p>
|
||||
<p><a href="https://assistant.google.com/">Google Assistant</a> is an AI-powered voice assistant that runs on the Raspberry Pi and x86 platforms and interact via the <a href="/components/dialogflow/">DialogFlow</a> integration with Home-Assistant. You can also use <a href="https://actions.google.com/">Google Actions</a> to extend its functionality.</p>
|
||||
<p>To enable access to the Google Assistant API, do the following:</p>
|
||||
<ol>
|
||||
<li>In the <a href="https://console.cloud.google.com/project">Cloud Platform Console</a>, go to the Projects page. Select an existing project or create a new project</li>
|
||||
<li>Open the project. In the top of the page search for Google Assistant API or use <a href="https://console.developers.google.com/apis/api/embeddedassistant.googleapis.com/overview">this link</a> and enable it.</li>
|
||||
<li>Create an <a href="https://console.developers.google.com/apis/credentials/oauthclient">OAuth Client ID</a>, pick type “Other”, click “Create” and download the JSON file by clicking the Download JSON button on the right side.</li>
|
||||
</ol>
|
||||
<p>Now install and activate the <a href="/addons/samba/">Samba</a> add-on so you can upload your credential file. Connect to the “share” Samba share and copy your credentials over. Name the file <code class="highlighter-rouge">google_assistant.json</code>.</p>
|
||||
<p>Now it’s time to start Google Assistant for the first time. When the Google Assistant add-on starts, it will output your audio devices in the “Logs” card. You might have to hit “refresh” to get the latest logs:</p>
|
||||
<div class="language-text highlighter-rouge"><pre class="highlight"><code>**** List of PLAYBACK Hardware Devices ****
|
||||
card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA]
|
||||
Subdevices: 8/8
|
||||
Subdevice #0: subdevice #0
|
||||
Subdevice #1: subdevice #1
|
||||
Subdevice #2: subdevice #2
|
||||
Subdevice #3: subdevice #3
|
||||
Subdevice #4: subdevice #4
|
||||
Subdevice #5: subdevice #5
|
||||
Subdevice #6: subdevice #6
|
||||
Subdevice #7: subdevice #7
|
||||
card 0: ALSA [bcm2835 ALSA], device 1: bcm2835 ALSA [bcm2835 IEC958/HDMI]
|
||||
Subdevices: 1/1
|
||||
Subdevice #0: subdevice #0
|
||||
card 1: Microphone [Yeti Stereo Microphone], device 0: USB Audio [USB Audio]
|
||||
Subdevices: 1/1
|
||||
Subdevice #0: subdevice #0
|
||||
</code></pre>
|
||||
</div>
|
||||
<p>You need to use this information to point the add-on at the right speakers and microphone. The information describes different cards and devices. On a Raspberry Pi 3, card 0 - device 0 is the built-in headset port, card 0 - device 1 is the HDMI port. In the example above, the USB microphone showed up as card 1 - device 0.</p>
|
||||
<p>Find the microphone and speakers that you want to use and note down their device and card number. We will need that to configure the add-on options <code class="highlighter-rouge">mic</code> (microphone to use) and <code class="highlighter-rouge">speaker</code> (speaker to use). The format for these options is <code class="highlighter-rouge"><card #>,<device #></code>. Change the configuration options and click save.</p>
|
||||
<p>The next step is to authenticate your Google account with Google Assistant. Start the add-on and click on the “OPEN WEB UI” button to start authentication.</p>
|
||||
<h3>Add-on configuration</h3>
|
||||
<p>Configuration example that uses the USB microphone and the built-in headset audio output on the Raspberry Pi. Note that card and device numbers can differ on your device.</p>
|
||||
<div class="language-json highlighter-rouge"><pre class="highlight"><code><span class="p">{</span><span class="w">
|
||||
</span><span class="nt">"mic"</span><span class="p">:</span><span class="w"> </span><span class="s2">"1,0"</span><span class="p">,</span><span class="w">
|
||||
</span><span class="nt">"speaker"</span><span class="p">:</span><span class="w"> </span><span class="s2">"0,0"</span><span class="p">,</span><span class="w">
|
||||
</span><span class="nt">"client_secrets"</span><span class="p">:</span><span class="w"> </span><span class="s2">"google_assistant.json"</span><span class="w">
|
||||
</span><span class="p">}</span><span class="w">
|
||||
</span></code></pre>
|
||||
</div>
|
||||
<p>Configuration variables:</p>
|
||||
<ul>
|
||||
<li><strong>mic</strong>: This is the hardware address of your microphone. Look at the add-on output</li>
|
||||
<li><strong>speaker</strong>: This is the hardware address of your speakers. Look at the add-on output</li>
|
||||
</ul>
|
||||
<h3><a class="title-link" name="home-assistant-configuration" href="#home-assistant-configuration"></a> Home Assistant configuration</h3>
|
||||
<p>Use the Home Assistant <a href="/components/dialogflow/">DialogFlow component</a> to integrate the add-on into Home Assistant.</p>
|
||||
</article>
|
||||
</div>
|
||||
<aside id="sidebar" class="grid__item one-third lap-one-whole palm-one-whole">
|
||||
<div class="grid">
|
||||
<section class="aside-module grid__item one-whole lap-one-half">
|
||||
<div class='section'>
|
||||
<h1 class="title delta">Topics</h1>
|
||||
<ul class='divided sidebar-menu'>
|
||||
<li>
|
||||
<a href='/hassio/'>Hass.io </a>
|
||||
<ul>
|
||||
<li><a href='/hassio/installation/'>Installation </a></li>
|
||||
<li><a href='/addons/'>Available add-ons </a></li>
|
||||
<li><a href='/hassio/installing_third_party_addons/'>Installing third-party add-ons </a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class='divided sidebar-menu'>
|
||||
<li>
|
||||
Advanced
|
||||
<ul>
|
||||
<li><a href='/hassio/zwave/'>Z-Wave </a></li>
|
||||
<li><a href='/hassio/external_storage/'>External storage </a></li>
|
||||
<li><a href='/hassio/run_local/'>Execute local things </a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class='divided sidebar-menu'>
|
||||
<li><a href='/developers/hassio/addon_development/'>Looking to create an add-on?</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
</div>
|
||||
<footer>
|
||||
<div class="grid-wrapper">
|
||||
<div class="grid">
|
||||
<div class="grid__item">
|
||||
<div class="copyright">
|
||||
<a rel="me" href='https://twitter.com/home_assistant'><i class="icon-twitter"></i></a>
|
||||
<a rel="me" href='https://facebook.com/homeassistantio'><i class="icon-facebook"></i></a>
|
||||
<a rel="me" href='https://plus.google.com/110560654828510104551'><i class="icon-google-plus"></i></a>
|
||||
<a rel="me" href='https://github.com/home-assistant/home-assistant'><i class="icon-github"></i></a>
|
||||
<div class="credit">
|
||||
Contact us at <a href='mailto:hello@home-assistant.io'>hello@home-assistant.io</a> (no support!).<br>
|
||||
Website powered by <a href='http://jekyllrb.com/'>Jekyll</a> and the <a href='https://github.com/coogie/oscailte'>Oscalite theme</a>.<br />
|
||||
Hosted by <a href='https://pages.github.com/'>GitHub</a> and served by <a href='https://cloudflare.com'>CloudFlare</a>.
|
||||
</div>
|
||||
<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png" /></a><br /><span xmlns:dct="http://purl.org/dc/terms/" property="dct:title">home-assistant.io</span> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/">Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License</a>.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
<script>
|
||||
var _gaq=[['_setAccount','UA-57927901-1'],['_trackPageview']];
|
||||
(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];
|
||||
g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js';
|
||||
s.parentNode.insertBefore(g,s)}(document,'script'));
|
||||
</script>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/docsearch.js/2/docsearch.min.css" />
|
||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/docsearch.js/2/docsearch.min.js"></script>
|
||||
<script type="text/javascript">
|
||||
docsearch({
|
||||
apiKey: 'ae96d94b201c5444c8a443093edf3efb',
|
||||
indexName: 'home-assistant',
|
||||
inputSelector: '#search',
|
||||
debug: false // Set debug to true if you want to inspect the dropdown
|
||||
});
|
||||
document.querySelector('.search .close').addEventListener('click', function(ev) {
|
||||
ev.preventDefault();
|
||||
document.querySelector('.search-container').style.display = 'none';
|
||||
});
|
||||
document.querySelector('.show-search').addEventListener('click', function(ev) {
|
||||
ev.preventDefault();
|
||||
document.querySelector('.search-container').style.display = 'block';
|
||||
document.getElementById('toggle').checked = false;
|
||||
document.querySelector('.search-container input').focus();
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
216
addons/homematic/index.html
Normal file
216
addons/homematic/index.html
Normal file
|
@ -0,0 +1,216 @@
|
|||
<!doctype html>
|
||||
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
|
||||
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
|
||||
<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]-->
|
||||
<!--[if gt IE 8]><!--> <html> <!--<![endif]-->
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<title>HomeMatic - Home Assistant</title>
|
||||
<meta name="author" content="Home Assistant">
|
||||
<meta name="description" content="HomeMatic hardware support to turn you Home-Assistant into a CCU.">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="canonical" href="https://home-assistant.io/addons/homematic/">
|
||||
<meta property="fb:app_id" content="338291289691179">
|
||||
<meta property="og:title" content="HomeMatic">
|
||||
<meta property="og:site_name" content="Home Assistant">
|
||||
<meta property="og:url" content="https://home-assistant.io/addons/homematic/">
|
||||
<meta property="og:type" content="article">
|
||||
<meta property="og:description" content="HomeMatic hardware support to turn you Home-Assistant into a CCU.">
|
||||
<meta property="og:image" content="https://home-assistant.io/images/default-social.png">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:site" content="@home_assistant">
|
||||
<meta name="twitter:title" content="HomeMatic">
|
||||
<meta name="twitter:description" content="HomeMatic hardware support to turn you Home-Assistant into a CCU.">
|
||||
<meta name="twitter:image" content="https://home-assistant.io/images/default-social.png">
|
||||
<link href="/stylesheets/screen.css" media="screen, projection, print" rel="stylesheet">
|
||||
<link href="/atom.xml" rel="alternate" title="Home Assistant" type="application/atom+xml">
|
||||
<link rel='shortcut icon' href='/images/favicon.ico' />
|
||||
<link rel='icon' type='image/png' href='/images/favicon-192x192.png' sizes='192x192' />
|
||||
</head>
|
||||
<body >
|
||||
<header class='site-header'>
|
||||
<div class="grid-wrapper">
|
||||
<div class="grid">
|
||||
<div class="grid__item three-tenths lap-two-sixths palm-one-whole ha-title">
|
||||
<a href="/" class="site-title">
|
||||
<img width='40' src='/demo/favicon-192x192.png'>
|
||||
<span>Home Assistant</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="grid__item seven-tenths lap-four-sixths palm-one-whole">
|
||||
<nav>
|
||||
<input type="checkbox" id="toggle">
|
||||
<label for="toggle" class="toggle" data-open="Main Menu" data-close="Close Menu"></label>
|
||||
<ul class="menu pull-right">
|
||||
<li><a href="/getting-started/">Getting started</a></li>
|
||||
<li><a href="/components/">Components</a></li>
|
||||
<li><a href="/docs/">Docs</a></li>
|
||||
<li><a href="/cookbook/">Examples</a></li>
|
||||
<li><a href="/developers/">Developers</a></li>
|
||||
<li><a href="/blog/">Blog</a></li>
|
||||
<li><a href="/help/">Need help?</a></li>
|
||||
<li><a href='#' class='show-search'><i class="icon-search"></i></a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
<div class='search-container' style='display: none'>
|
||||
<div class='search'>
|
||||
<i class="icon-search"></i>
|
||||
<input id='search' placeholder='Search the docs…'>
|
||||
<a href='#' class='close'><i class="icon-remove-sign"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
<div class="grid-wrapper">
|
||||
<div class="grid grid-center">
|
||||
<div class="grid__item two-thirds lap-one-whole palm-one-whole">
|
||||
<article class="page">
|
||||
<div class='edit-github'><a href='https://github.com/home-assistant/home-assistant.github.io/tree/current/source/_addons/homematic.markdown'>Edit this page on GitHub</a></div>
|
||||
<header>
|
||||
<h1 class="title indent">
|
||||
HomeMatic
|
||||
</h1>
|
||||
</header>
|
||||
<hr class="divider">
|
||||
<p>Set up a <a href="https://github.com/eq-3/occu">HomeMatic</a> hardware layer. At the moment we don’t support hmIP, but that is in progress. For learning and handling devices use our internal HomeMatic panel and services (in progress) or use <a href="https://github.com/hobbyquaker/homematic-manager">Homematic-Manager</a> > 2.0.</p>
|
||||
<p>The logic layer will be Home-Assistant. There is no ReGa or other logic layer installed. You can’t import an existing configuration, you’ll need re-learn it into Home-Assistant.</p>
|
||||
<p>Follow devices will be supported and tested:</p>
|
||||
<ul>
|
||||
<li><a href="https://www.elv.ch/homematic-funkmodul-fuer-raspberry-pi-bausatz.html">HM-MOD-RPI-PCB</a></li>
|
||||
</ul>
|
||||
<div class="language-json highlighter-rouge"><pre class="highlight"><code><span class="p">{</span><span class="w">
|
||||
</span><span class="nt">"rf_enable"</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="p">,</span><span class="w">
|
||||
</span><span class="nt">"rf"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w">
|
||||
</span><span class="p">{</span><span class="w">
|
||||
</span><span class="nt">"type"</span><span class="p">:</span><span class="w"> </span><span class="s2">"CCU2"</span><span class="p">,</span><span class="w">
|
||||
</span><span class="nt">"device"</span><span class="p">:</span><span class="w"> </span><span class="s2">"/dev/ttyAMA0"</span><span class="w">
|
||||
</span><span class="p">}</span><span class="w">
|
||||
</span><span class="p">],</span><span class="w">
|
||||
</span><span class="nt">"wired_enable"</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="p">,</span><span class="w">
|
||||
</span><span class="nt">"wired"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w">
|
||||
</span><span class="p">{</span><span class="w">
|
||||
</span><span class="nt">"serial"</span><span class="p">:</span><span class="w"> </span><span class="s2">"xy"</span><span class="p">,</span><span class="w">
|
||||
</span><span class="nt">"key"</span><span class="p">:</span><span class="w"> </span><span class="s2">"abc"</span><span class="p">,</span><span class="w">
|
||||
</span><span class="nt">"ip"</span><span class="p">:</span><span class="w"> </span><span class="s2">"192.168.0.0"</span><span class="w">
|
||||
</span><span class="p">}</span><span class="w">
|
||||
</span><span class="p">]</span><span class="w">
|
||||
</span><span class="p">}</span><span class="w">
|
||||
</span></code></pre>
|
||||
</div>
|
||||
<p>Configuration variables:</p>
|
||||
<ul>
|
||||
<li><strong>rf_enable</strong> (<em>Require</em>): Boolean. Enable or disable BidCoS-RF.</li>
|
||||
<li><strong>wired_enable</strong> (<em>Require</em>): Boolean. Enable or disable BidCoS-Wired.</li>
|
||||
</ul>
|
||||
<p>For RF devices</p>
|
||||
<ul>
|
||||
<li><strong>type</strong> (<em>Require</em>): Device type for RFD service. Look into the manual of your device.</li>
|
||||
<li><strong>device</strong> (<em>Require</em>): Device on the host.</li>
|
||||
</ul>
|
||||
<p>For RF devices</p>
|
||||
<ul>
|
||||
<li><strong>serial</strong> (<em>Require</em>): Serial number of the device.</li>
|
||||
<li><strong>key</strong> (<em>Require</em>): Encrypted key.</li>
|
||||
<li><strong>ip</strong> (<em>Require</em>): IP address of LAN gateway.</li>
|
||||
</ul>
|
||||
<h2><a class="title-link" name="home-assistant-configuration" href="#home-assistant-configuration"></a> Home Assistant configuration</h2>
|
||||
<p>Use the following configuration in Home Assistant to use it:</p>
|
||||
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">homematic</span><span class="pi">:</span>
|
||||
<span class="s">interfaces</span><span class="pi">:</span>
|
||||
<span class="s">rf</span><span class="pi">:</span>
|
||||
<span class="s">host</span><span class="pi">:</span> <span class="s">core-homematic</span>
|
||||
<span class="s">port</span><span class="pi">:</span> <span class="s">2001</span>
|
||||
</code></pre>
|
||||
</div>
|
||||
<h2><a class="title-link" name="raspberry-pi3" href="#raspberry-pi3"></a> Raspberry Pi3</h2>
|
||||
<p>With HM-MOD-PRI-PCB you need to add follow into your <code class="highlighter-rouge">config.txt</code> on boot partition:</p>
|
||||
<div class="highlighter-rouge"><pre class="highlight"><code>dtoverlay=pi3-miniuart-bt
|
||||
</code></pre>
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
<aside id="sidebar" class="grid__item one-third lap-one-whole palm-one-whole">
|
||||
<div class="grid">
|
||||
<section class="aside-module grid__item one-whole lap-one-half">
|
||||
<div class='section'>
|
||||
<h1 class="title delta">Topics</h1>
|
||||
<ul class='divided sidebar-menu'>
|
||||
<li>
|
||||
<a href='/hassio/'>Hass.io </a>
|
||||
<ul>
|
||||
<li><a href='/hassio/installation/'>Installation </a></li>
|
||||
<li><a href='/addons/'>Available add-ons </a></li>
|
||||
<li><a href='/hassio/installing_third_party_addons/'>Installing third-party add-ons </a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class='divided sidebar-menu'>
|
||||
<li>
|
||||
Advanced
|
||||
<ul>
|
||||
<li><a href='/hassio/zwave/'>Z-Wave </a></li>
|
||||
<li><a href='/hassio/external_storage/'>External storage </a></li>
|
||||
<li><a href='/hassio/run_local/'>Execute local things </a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class='divided sidebar-menu'>
|
||||
<li><a href='/developers/hassio/addon_development/'>Looking to create an add-on?</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
</div>
|
||||
<footer>
|
||||
<div class="grid-wrapper">
|
||||
<div class="grid">
|
||||
<div class="grid__item">
|
||||
<div class="copyright">
|
||||
<a rel="me" href='https://twitter.com/home_assistant'><i class="icon-twitter"></i></a>
|
||||
<a rel="me" href='https://facebook.com/homeassistantio'><i class="icon-facebook"></i></a>
|
||||
<a rel="me" href='https://plus.google.com/110560654828510104551'><i class="icon-google-plus"></i></a>
|
||||
<a rel="me" href='https://github.com/home-assistant/home-assistant'><i class="icon-github"></i></a>
|
||||
<div class="credit">
|
||||
Contact us at <a href='mailto:hello@home-assistant.io'>hello@home-assistant.io</a> (no support!).<br>
|
||||
Website powered by <a href='http://jekyllrb.com/'>Jekyll</a> and the <a href='https://github.com/coogie/oscailte'>Oscalite theme</a>.<br />
|
||||
Hosted by <a href='https://pages.github.com/'>GitHub</a> and served by <a href='https://cloudflare.com'>CloudFlare</a>.
|
||||
</div>
|
||||
<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png" /></a><br /><span xmlns:dct="http://purl.org/dc/terms/" property="dct:title">home-assistant.io</span> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/">Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License</a>.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
<script>
|
||||
var _gaq=[['_setAccount','UA-57927901-1'],['_trackPageview']];
|
||||
(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];
|
||||
g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js';
|
||||
s.parentNode.insertBefore(g,s)}(document,'script'));
|
||||
</script>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/docsearch.js/2/docsearch.min.css" />
|
||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/docsearch.js/2/docsearch.min.js"></script>
|
||||
<script type="text/javascript">
|
||||
docsearch({
|
||||
apiKey: 'ae96d94b201c5444c8a443093edf3efb',
|
||||
indexName: 'home-assistant',
|
||||
inputSelector: '#search',
|
||||
debug: false // Set debug to true if you want to inspect the dropdown
|
||||
});
|
||||
document.querySelector('.search .close').addEventListener('click', function(ev) {
|
||||
ev.preventDefault();
|
||||
document.querySelector('.search-container').style.display = 'none';
|
||||
});
|
||||
document.querySelector('.show-search').addEventListener('click', function(ev) {
|
||||
ev.preventDefault();
|
||||
document.querySelector('.search-container').style.display = 'block';
|
||||
document.getElementById('toggle').checked = false;
|
||||
document.querySelector('.search-container input').focus();
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
250
addons/index.html
Normal file
250
addons/index.html
Normal file
|
@ -0,0 +1,250 @@
|
|||
<!doctype html>
|
||||
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
|
||||
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
|
||||
<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]-->
|
||||
<!--[if gt IE 8]><!--> <html> <!--<![endif]-->
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<title>Hass.io Add-ons - Home Assistant</title>
|
||||
<meta name="author" content="Home Assistant">
|
||||
<meta name="description" content="List of the built-in add-ons of Hass.io.">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="canonical" href="https://home-assistant.io/addons/">
|
||||
<meta property="fb:app_id" content="338291289691179">
|
||||
<meta property="og:title" content="Hass.io Add-ons">
|
||||
<meta property="og:site_name" content="Home Assistant">
|
||||
<meta property="og:url" content="https://home-assistant.io/addons/">
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:description" content="List of the built-in add-ons of Hass.io.">
|
||||
<meta property="og:image" content="https://home-assistant.io/images/default-social.png">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:site" content="@home_assistant">
|
||||
<meta name="twitter:title" content="Hass.io Add-ons">
|
||||
<meta name="twitter:description" content="List of the built-in add-ons of Hass.io.">
|
||||
<meta name="twitter:image" content="https://home-assistant.io/images/default-social.png">
|
||||
<link href="/stylesheets/screen.css" media="screen, projection, print" rel="stylesheet">
|
||||
<link href="/atom.xml" rel="alternate" title="Home Assistant" type="application/atom+xml">
|
||||
<link rel='shortcut icon' href='/images/favicon.ico' />
|
||||
<link rel='icon' type='image/png' href='/images/favicon-192x192.png' sizes='192x192' />
|
||||
</head>
|
||||
<body >
|
||||
<header class='site-header'>
|
||||
<div class="grid-wrapper">
|
||||
<div class="grid">
|
||||
<div class="grid__item three-tenths lap-two-sixths palm-one-whole ha-title">
|
||||
<a href="/" class="site-title">
|
||||
<img width='40' src='/demo/favicon-192x192.png'>
|
||||
<span>Home Assistant</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="grid__item seven-tenths lap-four-sixths palm-one-whole">
|
||||
<nav>
|
||||
<input type="checkbox" id="toggle">
|
||||
<label for="toggle" class="toggle" data-open="Main Menu" data-close="Close Menu"></label>
|
||||
<ul class="menu pull-right">
|
||||
<li><a href="/getting-started/">Getting started</a></li>
|
||||
<li><a href="/components/">Components</a></li>
|
||||
<li><a href="/docs/">Docs</a></li>
|
||||
<li><a href="/cookbook/">Examples</a></li>
|
||||
<li><a href="/developers/">Developers</a></li>
|
||||
<li><a href="/blog/">Blog</a></li>
|
||||
<li><a href="/help/">Need help?</a></li>
|
||||
<li><a href='#' class='show-search'><i class="icon-search"></i></a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
<div class='search-container' style='display: none'>
|
||||
<div class='search'>
|
||||
<i class="icon-search"></i>
|
||||
<input id='search' placeholder='Search the docs…'>
|
||||
<a href='#' class='close'><i class="icon-remove-sign"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
<div class="grid-wrapper">
|
||||
<div class="grid grid-center">
|
||||
<div class="grid__item two-thirds lap-one-whole palm-one-whole">
|
||||
<article class="page">
|
||||
<div class='edit-github'><a href='https://github.com/home-assistant/home-assistant.github.io/tree/current/source/addons/index.html'>Edit this page on GitHub</a></div>
|
||||
<header>
|
||||
<h1 class="title indent">
|
||||
Hass.io Add-ons
|
||||
</h1>
|
||||
</header>
|
||||
<hr class="divider">
|
||||
<p>Add-ons for Hass.io allow the user to extend the functionality around Home Assistant. This can be running an application that Home Assistant can integrate with (like an MQTT broker) or to share the configuration via Samba for easy editing from other computers. Add-ons can be configured via the Hass.io panel in Home Assistant.</p>
|
||||
<p>
|
||||
Check the Hass.io forums for <a href='https://community.home-assistant.io/tags/hassio-repository'>add-on repositories managed by the community</a>.
|
||||
</p>
|
||||
<p class='note'>
|
||||
Add-ons are only available if you've used the Hass.io installer. If you installed Home Assistant using any other method then you cannot use add-ons (but you can achieve the same result manually).
|
||||
</p>
|
||||
<h3><a class='title-link' name='featured-add-ons' href='#featured-add-ons'></a> Featured add-ons </h3>
|
||||
<ul>
|
||||
<li>
|
||||
<a href='/addons/duckdns/'>DuckDNS</a><br>
|
||||
Automatically update your Duck DNS IP address with integrated HTTPS support via Let's Encrypt.
|
||||
</li>
|
||||
<li>
|
||||
<a href='/addons/google_assistant/'>Google Assistant</a><br>
|
||||
Enhance your Hass.io installation with Google Assistant.
|
||||
</li>
|
||||
<li>
|
||||
<a href='/addons/configurator/'>HASS Configurator</a><br>
|
||||
Browser-based configuration file editor for Home Assistant.
|
||||
</li>
|
||||
<li>
|
||||
<a href='/addons/mosquitto/'>Mosquitto MQTT broker</a><br>
|
||||
Fast and reliable MQTT broker.
|
||||
</li>
|
||||
<li>
|
||||
<a href='/addons/ssh/'>SSH Server</a><br>
|
||||
Allow logging in remotely to Hass.io using SSH.
|
||||
</li>
|
||||
<li>
|
||||
<a href='/addons/samba/'>Samba</a><br>
|
||||
Manage your Home Assistant and custom add-ons over Samba.
|
||||
</li>
|
||||
</ul>
|
||||
<h3><a class='title-link' name='other-add-ons' href='#other-add-ons'></a> Other add-ons </h3>
|
||||
<ul>
|
||||
<li>
|
||||
<a href='/addons/bluetooth_bcm43xx/'>Bluetooth BCM43xx</a><br>
|
||||
Activate the BCM43xx Bluetooth chipset on a Raspberry Pi 3.
|
||||
</li>
|
||||
<li>
|
||||
<a href='/addons/cec_scan/'>CEC Scanner</a><br>
|
||||
Scan HDMI CEC devices.
|
||||
</li>
|
||||
<li>
|
||||
<a href='/addons/check_config/'>Check Home Assistant configuration</a><br>
|
||||
Check your current Home Assistant configuration against a new version.
|
||||
</li>
|
||||
<li>
|
||||
<a href='/addons/dhcp_server/'>DHCP server</a><br>
|
||||
A simple DHCP server.
|
||||
</li>
|
||||
<li>
|
||||
<a href='/addons/dnsmasq/'>Dnsmasq</a><br>
|
||||
A simple DNS server.
|
||||
</li>
|
||||
<li>
|
||||
<a href='/addons/git_pull/'>GIT pull</a><br>
|
||||
Load and update configuration files for Home Assistant from a GIT repository.
|
||||
</li>
|
||||
<li>
|
||||
<a href='/addons/homematic/'>HomeMatic</a><br>
|
||||
HomeMatic hardware support to turn you Home-Assistant into a CCU.
|
||||
</li>
|
||||
<li>
|
||||
<a href='/addons/lets_encrypt/'>Let's Encrypt</a><br>
|
||||
Automatically manage your SSL certificate using Let's Encrypt.
|
||||
</li>
|
||||
<li>
|
||||
<a href='/addons/mariadb/'>MariaDB</a><br>
|
||||
MariaDB Server is one of the most popular database servers in the world.
|
||||
</li>
|
||||
<li>
|
||||
<a href='/addons/nginx_proxy/'>NGINX SSL proxy</a><br>
|
||||
NGINX Home Assistant SSL proxy.
|
||||
</li>
|
||||
<li>
|
||||
<a href='/addons/rpc_shutdown/'>RPC Shutdown</a><br>
|
||||
Simple way for remote windows shutdowns.
|
||||
</li>
|
||||
<li>
|
||||
<a href='/addons/snips/'>Snips.ai</a><br>
|
||||
Enhance your Hass.io installation with a local voice assistant.
|
||||
</li>
|
||||
<li>
|
||||
<a href='/addons/tellstick/'>TellStick</a><br>
|
||||
Telldus TellStick service enabler and tools.
|
||||
</li>
|
||||
</ul>
|
||||
</article>
|
||||
</div>
|
||||
<aside id="sidebar" class="grid__item one-third lap-one-whole palm-one-whole">
|
||||
<div class="grid">
|
||||
<section class="aside-module grid__item one-whole lap-one-half">
|
||||
<div class='section'>
|
||||
<h1 class="title delta">Topics</h1>
|
||||
<ul class='divided sidebar-menu'>
|
||||
<li>
|
||||
<a href='/hassio/'>Hass.io </a>
|
||||
<ul>
|
||||
<li><a href='/hassio/installation/'>Installation </a></li>
|
||||
<li><a class='active' href='/addons/'>Available add-ons </a></li>
|
||||
<li><a href='/hassio/installing_third_party_addons/'>Installing third-party add-ons </a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class='divided sidebar-menu'>
|
||||
<li>
|
||||
Advanced
|
||||
<ul>
|
||||
<li><a href='/hassio/zwave/'>Z-Wave </a></li>
|
||||
<li><a href='/hassio/external_storage/'>External storage </a></li>
|
||||
<li><a href='/hassio/run_local/'>Execute local things </a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class='divided sidebar-menu'>
|
||||
<li><a href='/developers/hassio/addon_development/'>Looking to create an add-on?</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
</div>
|
||||
<footer>
|
||||
<div class="grid-wrapper">
|
||||
<div class="grid">
|
||||
<div class="grid__item">
|
||||
<div class="copyright">
|
||||
<a rel="me" href='https://twitter.com/home_assistant'><i class="icon-twitter"></i></a>
|
||||
<a rel="me" href='https://facebook.com/homeassistantio'><i class="icon-facebook"></i></a>
|
||||
<a rel="me" href='https://plus.google.com/110560654828510104551'><i class="icon-google-plus"></i></a>
|
||||
<a rel="me" href='https://github.com/home-assistant/home-assistant'><i class="icon-github"></i></a>
|
||||
<div class="credit">
|
||||
Contact us at <a href='mailto:hello@home-assistant.io'>hello@home-assistant.io</a> (no support!).<br>
|
||||
Website powered by <a href='http://jekyllrb.com/'>Jekyll</a> and the <a href='https://github.com/coogie/oscailte'>Oscalite theme</a>.<br />
|
||||
Hosted by <a href='https://pages.github.com/'>GitHub</a> and served by <a href='https://cloudflare.com'>CloudFlare</a>.
|
||||
</div>
|
||||
<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png" /></a><br /><span xmlns:dct="http://purl.org/dc/terms/" property="dct:title">home-assistant.io</span> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/">Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License</a>.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
<script>
|
||||
var _gaq=[['_setAccount','UA-57927901-1'],['_trackPageview']];
|
||||
(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];
|
||||
g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js';
|
||||
s.parentNode.insertBefore(g,s)}(document,'script'));
|
||||
</script>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/docsearch.js/2/docsearch.min.css" />
|
||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/docsearch.js/2/docsearch.min.js"></script>
|
||||
<script type="text/javascript">
|
||||
docsearch({
|
||||
apiKey: 'ae96d94b201c5444c8a443093edf3efb',
|
||||
indexName: 'home-assistant',
|
||||
inputSelector: '#search',
|
||||
debug: false // Set debug to true if you want to inspect the dropdown
|
||||
});
|
||||
document.querySelector('.search .close').addEventListener('click', function(ev) {
|
||||
ev.preventDefault();
|
||||
document.querySelector('.search-container').style.display = 'none';
|
||||
});
|
||||
document.querySelector('.show-search').addEventListener('click', function(ev) {
|
||||
ev.preventDefault();
|
||||
document.querySelector('.search-container').style.display = 'block';
|
||||
document.getElementById('toggle').checked = false;
|
||||
document.querySelector('.search-container input').focus();
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
185
addons/lets_encrypt/index.html
Normal file
185
addons/lets_encrypt/index.html
Normal file
|
@ -0,0 +1,185 @@
|
|||
<!doctype html>
|
||||
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
|
||||
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
|
||||
<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]-->
|
||||
<!--[if gt IE 8]><!--> <html> <!--<![endif]-->
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<title>Let's Encrypt - Home Assistant</title>
|
||||
<meta name="author" content="Home Assistant">
|
||||
<meta name="description" content="Automatically manage your SSL certificate using Let's Encrypt.">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="canonical" href="https://home-assistant.io/addons/lets_encrypt/">
|
||||
<meta property="fb:app_id" content="338291289691179">
|
||||
<meta property="og:title" content="Let's Encrypt">
|
||||
<meta property="og:site_name" content="Home Assistant">
|
||||
<meta property="og:url" content="https://home-assistant.io/addons/lets_encrypt/">
|
||||
<meta property="og:type" content="article">
|
||||
<meta property="og:description" content="Automatically manage your SSL certificate using Let's Encrypt.">
|
||||
<meta property="og:image" content="https://home-assistant.io/images/default-social.png">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:site" content="@home_assistant">
|
||||
<meta name="twitter:title" content="Let's Encrypt">
|
||||
<meta name="twitter:description" content="Automatically manage your SSL certificate using Let's Encrypt.">
|
||||
<meta name="twitter:image" content="https://home-assistant.io/images/default-social.png">
|
||||
<link href="/stylesheets/screen.css" media="screen, projection, print" rel="stylesheet">
|
||||
<link href="/atom.xml" rel="alternate" title="Home Assistant" type="application/atom+xml">
|
||||
<link rel='shortcut icon' href='/images/favicon.ico' />
|
||||
<link rel='icon' type='image/png' href='/images/favicon-192x192.png' sizes='192x192' />
|
||||
</head>
|
||||
<body >
|
||||
<header class='site-header'>
|
||||
<div class="grid-wrapper">
|
||||
<div class="grid">
|
||||
<div class="grid__item three-tenths lap-two-sixths palm-one-whole ha-title">
|
||||
<a href="/" class="site-title">
|
||||
<img width='40' src='/demo/favicon-192x192.png'>
|
||||
<span>Home Assistant</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="grid__item seven-tenths lap-four-sixths palm-one-whole">
|
||||
<nav>
|
||||
<input type="checkbox" id="toggle">
|
||||
<label for="toggle" class="toggle" data-open="Main Menu" data-close="Close Menu"></label>
|
||||
<ul class="menu pull-right">
|
||||
<li><a href="/getting-started/">Getting started</a></li>
|
||||
<li><a href="/components/">Components</a></li>
|
||||
<li><a href="/docs/">Docs</a></li>
|
||||
<li><a href="/cookbook/">Examples</a></li>
|
||||
<li><a href="/developers/">Developers</a></li>
|
||||
<li><a href="/blog/">Blog</a></li>
|
||||
<li><a href="/help/">Need help?</a></li>
|
||||
<li><a href='#' class='show-search'><i class="icon-search"></i></a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
<div class='search-container' style='display: none'>
|
||||
<div class='search'>
|
||||
<i class="icon-search"></i>
|
||||
<input id='search' placeholder='Search the docs…'>
|
||||
<a href='#' class='close'><i class="icon-remove-sign"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
<div class="grid-wrapper">
|
||||
<div class="grid grid-center">
|
||||
<div class="grid__item two-thirds lap-one-whole palm-one-whole">
|
||||
<article class="page">
|
||||
<div class='edit-github'><a href='https://github.com/home-assistant/home-assistant.github.io/tree/current/source/_addons/lets_encrypt.markdown'>Edit this page on GitHub</a></div>
|
||||
<header>
|
||||
<h1 class="title indent">
|
||||
Let's Encrypt
|
||||
</h1>
|
||||
</header>
|
||||
<hr class="divider">
|
||||
<p class="note">
|
||||
You should not use this if you are also using the <a href="/addons/duckdns/">DuckDNS add-on</a>. The DuckDNS add-on has integrated Let’s Encrypt support.
|
||||
</p>
|
||||
<p>Setup and manage a <a href="https://letsencrypt.org/">Let’s Encrypt</a> certificate. This addon will create a certificate on the first run and will auto-renew if the certificate is within 30 days of expiration. This add-on uses port 80 to verify the certificate request. You will need to stop all other add-ons that also use this port.</p>
|
||||
<div class="language-json highlighter-rouge"><pre class="highlight"><code><span class="p">{</span><span class="w">
|
||||
</span><span class="nt">"email"</span><span class="p">:</span><span class="w"> </span><span class="s2">"example@example.com"</span><span class="p">,</span><span class="w">
|
||||
</span><span class="nt">"domains"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">"example.com"</span><span class="p">,</span><span class="w"> </span><span class="s2">"mqtt.example.com"</span><span class="p">,</span><span class="w"> </span><span class="s2">"hass.example.com"</span><span class="p">]</span><span class="w">
|
||||
</span><span class="p">}</span><span class="w">
|
||||
</span></code></pre>
|
||||
</div>
|
||||
<p>Configuration variables:</p>
|
||||
<ul>
|
||||
<li><strong>email</strong> (<em>Required</em>): Your email address for registration on Let’s Encrypt.</li>
|
||||
<li><strong>domains</strong> (<em>Required</em>): A list of domains to create/renew the certificate.</li>
|
||||
</ul>
|
||||
<h2><a class="title-link" name="home-assistant-configuration" href="#home-assistant-configuration"></a> Home Assistant configuration</h2>
|
||||
<p>Use the following configuration in Home Assistant to use the generated certificate:</p>
|
||||
<div class="language-yaml highlighter-rouge"><pre class="highlight"><code><span class="s">http</span><span class="pi">:</span>
|
||||
<span class="s">base_url</span><span class="pi">:</span> <span class="s">https://my-domain.tld:8123</span>
|
||||
<span class="s">ssl_certificate</span><span class="pi">:</span> <span class="s">/ssl/fullchain.pem</span>
|
||||
<span class="s">ssl_key</span><span class="pi">:</span> <span class="s">/ssl/privkey.pem</span>
|
||||
</code></pre>
|
||||
</div>
|
||||
<p>If you use another port such as <code class="highlighter-rouge">8123</code> or an SSL proxy, change the port number.</p>
|
||||
</article>
|
||||
</div>
|
||||
<aside id="sidebar" class="grid__item one-third lap-one-whole palm-one-whole">
|
||||
<div class="grid">
|
||||
<section class="aside-module grid__item one-whole lap-one-half">
|
||||
<div class='section'>
|
||||
<h1 class="title delta">Topics</h1>
|
||||
<ul class='divided sidebar-menu'>
|
||||
<li>
|
||||
<a href='/hassio/'>Hass.io </a>
|
||||
<ul>
|
||||
<li><a href='/hassio/installation/'>Installation </a></li>
|
||||
<li><a href='/addons/'>Available add-ons </a></li>
|
||||
<li><a href='/hassio/installing_third_party_addons/'>Installing third-party add-ons </a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class='divided sidebar-menu'>
|
||||
<li>
|
||||
Advanced
|
||||
<ul>
|
||||
<li><a href='/hassio/zwave/'>Z-Wave </a></li>
|
||||
<li><a href='/hassio/external_storage/'>External storage </a></li>
|
||||
<li><a href='/hassio/run_local/'>Execute local things </a></li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class='divided sidebar-menu'>
|
||||
<li><a href='/developers/hassio/addon_development/'>Looking to create an add-on?</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
</div>
|
||||
<footer>
|
||||
<div class="grid-wrapper">
|
||||
<div class="grid">
|
||||
<div class="grid__item">
|
||||
<div class="copyright">
|
||||
<a rel="me" href='https://twitter.com/home_assistant'><i class="icon-twitter"></i></a>
|
||||
<a rel="me" href='https://facebook.com/homeassistantio'><i class="icon-facebook"></i></a>
|
||||
<a rel="me" href='https://plus.google.com/110560654828510104551'><i class="icon-google-plus"></i></a>
|
||||
<a rel="me" href='https://github.com/home-assistant/home-assistant'><i class="icon-github"></i></a>
|
||||
<div class="credit">
|
||||
Contact us at <a href='mailto:hello@home-assistant.io'>hello@home-assistant.io</a> (no support!).<br>
|
||||
Website powered by <a href='http://jekyllrb.com/'>Jekyll</a> and the <a href='https://github.com/coogie/oscailte'>Oscalite theme</a>.<br />
|
||||
Hosted by <a href='https://pages.github.com/'>GitHub</a> and served by <a href='https://cloudflare.com'>CloudFlare</a>.
|
||||
</div>
|
||||
<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png" /></a><br /><span xmlns:dct="http://purl.org/dc/terms/" property="dct:title">home-assistant.io</span> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/">Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License</a>.
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
<script>
|
||||
var _gaq=[['_setAccount','UA-57927901-1'],['_trackPageview']];
|
||||
(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];
|
||||
g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js';
|
||||
s.parentNode.insertBefore(g,s)}(document,'script'));
|
||||
</script>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/docsearch.js/2/docsearch.min.css" />
|
||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/docsearch.js/2/docsearch.min.js"></script>
|
||||
<script type="text/javascript">
|
||||
docsearch({
|
||||
apiKey: 'ae96d94b201c5444c8a443093edf3efb',
|
||||
indexName: 'home-assistant',
|
||||
inputSelector: '#search',
|
||||
debug: false // Set debug to true if you want to inspect the dropdown
|
||||
});
|
||||
document.querySelector('.search .close').addEventListener('click', function(ev) {
|
||||
ev.preventDefault();
|
||||
document.querySelector('.search-container').style.display = 'none';
|
||||
});
|
||||
document.querySelector('.show-search').addEventListener('click', function(ev) {
|
||||
ev.preventDefault();
|
||||
document.querySelector('.search-container').style.display = 'block';
|
||||
document.getElementById('toggle').checked = false;
|
||||
document.querySelector('.search-container input').focus();
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue