diff --git a/.github/stale.yml b/.github/stale.yml new file mode 100644 index 00000000000..e5b0f5e954c --- /dev/null +++ b/.github/stale.yml @@ -0,0 +1,17 @@ +# 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 diff --git a/_config.yml b/_config.yml index 9500187094b..69312dd7804 100644 --- a/_config.yml +++ b/_config.yml @@ -140,11 +140,11 @@ social: # Home Assistant release details current_major_version: 0 current_minor_version: 57 -current_patch_version: 0 -date_released: 2017-11-04 +current_patch_version: 2 +date_released: 2017-11-05 # 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: "" +patch_version_notes: "#release-0572--november-5" # Minor release (Example #release-0431---april-25): diff --git a/sass/custom/_paulus.scss b/sass/custom/_paulus.scss index 16024b33bfe..2a9e1fb4ebc 100644 --- a/sass/custom/_paulus.scss +++ b/sass/custom/_paulus.scss @@ -394,15 +394,15 @@ p.note { .aside-module { .section { - margin-bottom: 16px; + margin-bottom: 10px; } .brand-logo-container { text-align: center; - height: 97px; + height: 87px; img { - max-height: 97px; + max-height: 67px; } } } diff --git a/source/_components/arduino.markdown b/source/_components/arduino.markdown index acfd091c727..5105f19c4cc 100644 --- a/source/_components/arduino.markdown +++ b/source/_components/arduino.markdown @@ -30,9 +30,12 @@ arduino: port: /dev/ttyACM0 ``` -Configuration variables: - -- **port** (*Required*): The port where your board is connected to your Home Assistant host. If you are using an original Arduino, the port will be named `ttyACM*` otherwise `ttyUSB*`. +{% configuration %} +port: + description: The port where your board is connected to your Home Assistant host. If you are using an original Arduino, the port will be named `ttyACM*` otherwise `ttyUSB*`. + required: true + type: string +{% endconfiguration %} The exact number can be determined with the command shown below. diff --git a/source/_components/binary_sensor.template.markdown b/source/_components/binary_sensor.template.markdown index 62f2a50b1ba..009f4131ddd 100644 --- a/source/_components/binary_sensor.template.markdown +++ b/source/_components/binary_sensor.template.markdown @@ -39,31 +39,36 @@ binary_sensor: required: true type: map keys: - friendly_name: - description: Name to use in the frontend. - required: false - type: string - entity_id: - description: Add a list of entity IDs so the sensor only reacts to state changes of these entities. This will reduce the number of times the sensor will try to update its state. - required: false - type: string, list - device_class: - description: The type/class of the sensor to set the icon in the frontend. - required: false - type: device_class - default: None - value_template: - description: Defines a template to set the state of the sensor. + sensor_name: + description: The slug of the sensor. required: true - type: template - delay_on: - description: The amount of time the template state must be ***met*** before this sensor will switch to `on`. - required: false - type: time - delay_off: - description: The amount of time the template state must be ***not met*** before this sensor will switch to `off`. - required: false - type: time + type: map + keys: + friendly_name: + description: Name to use in the frontend. + required: false + type: string + entity_id: + description: Add a list of entity IDs so the sensor only reacts to state changes of these entities. This will reduce the number of times the sensor will try to update its state. + required: false + type: string, list + device_class: + description: The type/class of the sensor to set the icon in the frontend. + required: false + type: device_class + default: None + value_template: + description: Defines a template to set the state of the sensor. + required: true + type: template + delay_on: + description: The amount of time the template state must be ***met*** before this sensor will switch to `on`. + required: false + type: time + delay_off: + description: The amount of time the template state must be ***not met*** before this sensor will switch to `off`. + required: false + type: time {% endconfiguration %} ## {% linkable_title Considerations %} diff --git a/source/_components/camera.markdown b/source/_components/camera.markdown index 48d1f58f5f0..e0dee527ad6 100644 --- a/source/_components/camera.markdown +++ b/source/_components/camera.markdown @@ -43,6 +43,8 @@ Take a snapshot from a camera. | `entity_id` | no | Name(s) of entities to create a snopshot from, e.g., `camera.living_room_camera`. | | `filename ` | no | Template of a file name. Variable is `entity_id`, e.g., {% raw %}`/tmp/snapshot_{{ entity_id }}`{% endraw %}. | +The path part of `filename` must be an entry in the `whitelist_external_dirs` in your [`homeassistant:`](/docs/configuration/basic/) section of your `configuration.yaml` file. + ### {% linkable_title Test if it works %} A simple way to test if you have set up your `camera` platform correctly, is to use service developer tool icon **Services** from the **Developer Tools**. Choose your service from the dropdown menu **Service**, enter something like the sample below into the **Service Data** field, and hit **CALL SERVICE**. diff --git a/source/_components/camera.rpi_camera.markdown b/source/_components/camera.rpi_camera.markdown index 7189dfd3d8a..6bfeb7696ea 100644 --- a/source/_components/camera.rpi_camera.markdown +++ b/source/_components/camera.rpi_camera.markdown @@ -24,17 +24,53 @@ camera: - platform: rpi_camera ``` -Configuration variables: - - - **name** (*Optional*): Name of the camera - - **image_width** (*Optional*): Set the image width (default: 640) - - **image_height** (*Optional*): Set the image height (default: 480) - - **image_quality** (*Optional*): Set the image quality (from 0 to 100, default: 7) - - **image_rotation** (*Optional*): Set image rotation (0-359, default: 0) - - **horizontal_flip** (*Optional*): Set horizontal flip (0 to disable, 1 to enable, default: 0) - - **vertical_flip** (*Optional*): Set vertical flip (0 to disable, 1 to enable, default: 0) - - **timelapse** (*Optional*): Takes a picture every ms (default: 1000) - - **file_path** (*Optional*): Save the picture in a custom file path (default: camera components folder) +{% configuration %} +image_width: + description: Set the image width. + required: false + default: 640 + type: int +name: + description: Name of the camera. + required: false + default: Raspberry Pi Camera + type: string +image_height: + description: Set the image height. + required: false + default: 480 + type: int +image_quality: + description: Set the image quality (from 0 to 100). + required: false + default: 7 + type: int +image_rotation: + description: Set image rotation (0-359). + required: false + default: 0 + type: int +horizontal_flip: + description: Set horizontal flip (0 to disable, 1 to enable). + required: false + default: 0 + type: int +vertical_flip: + description: Set vertical flip (0 to disable, 1 to enable). + required: false + default: 0 + type: int +timelapse: + description: Takes a picture every millisecond. + required: false + default: 1000 + type: int +file_path: + description: Save the picture in a custom file path. + required: false + default: The camera components folder. + type: string +{% endconfiguration %} The given **file_path** must be an existing file because the camera platform setup make a writeable check on it. diff --git a/source/_components/climate.ephember.markdown b/source/_components/climate.ephember.markdown index 962b34746e2..0b77e6a58b7 100644 --- a/source/_components/climate.ephember.markdown +++ b/source/_components/climate.ephember.markdown @@ -9,7 +9,7 @@ sharing: true footer: true logo: ephcontrolsember.png ha_category: Climate -ha_release: "0.55" +ha_release: 0.57 ha_iot_class: "Local Polling" --- diff --git a/source/_components/input_number.markdown b/source/_components/input_number.markdown index e043b924696..9c041e1b7f3 100644 --- a/source/_components/input_number.markdown +++ b/source/_components/input_number.markdown @@ -145,13 +145,12 @@ input_number: icon: mdi:target # Automation. - # This automation script runs when a value is received via MQTT on retained topic: setTemperature - # It sets the value slider on the GUI. This slides also had its own automation when the value is changed. +# This automation script runs when a value is received via MQTT on retained topic: setTemperature +# It sets the value slider on the GUI. This slides also had its own automation when the value is changed. - alias: Set temp slider trigger: platform: mqtt topic: "setTemperature" - # entity_id: input_number.target_temp action: service: input_number.set_value data_template: diff --git a/source/_components/media_player.vizio.markdown b/source/_components/media_player.vizio.markdown index ae68385e13a..7c8cfa363ba 100644 --- a/source/_components/media_player.vizio.markdown +++ b/source/_components/media_player.vizio.markdown @@ -97,4 +97,7 @@ Vizio SmartCast service is accessible through HTTPS with self-signed certificate `InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised.` You can adjust the log level for `media_player` components with the [logger](https://home-assistant.io/components/logger/) component, or if you need to keep a low log level for `media_player` you could proxy calls to your TV through an NGINX reverse proxy. + +If you want to only ignore only this specific [python urllib3 SSL warning](https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings), you will need to run Home Assistant with the python flag `-W` or the environment variable `PYTHONWARNINGS` set to: +`ignore:Unverified HTTPS request is being made`

diff --git a/source/_components/notify.slack.markdown b/source/_components/notify.slack.markdown index 1eb10e8189a..0445d1df821 100644 --- a/source/_components/notify.slack.markdown +++ b/source/_components/notify.slack.markdown @@ -52,8 +52,10 @@ The following attributes can be placed `data` for extended functionality. | `username` | yes | Username if the url requires authentication. Is placed inside `file`. | `password` | yes | Password if the url requires authentication. Is placed inside `file`. | `auth` | yes | If set to `digest` HTTP-Digest-Authentication is used. If missing HTTP-BASIC-Authentication is used. Is placed inside `file`. +| `attachments` | yes | Array of [Slack attachments](https://api.slack.com/docs/message-attachments). See [the attachment documentation](https://api.slack.com/docs/message-attachments) for how to format. *NOTE*: if using `attachments`, they are shown **in addition** to `message` + +Example for posting file from URL: -Example for posting file from URL ```json { "message":"Message that will be added as a comment to the file.", @@ -68,7 +70,9 @@ Example for posting file from URL } } ``` -Example for posting file from local path + +Example for posting file from local path: + ```json { "message":"Message that will be added as a comment to the file.", @@ -82,5 +86,23 @@ Example for posting file from local path ``` Please note that `path` is validated against the `whitelist_external_dirs` in the `configuration.yaml`. +Example for posting formatted attachment: + +```json +{ + "message": "", + "data": { + "attachments": [ + { + "title": "WHAT A HORRIBLE NIGHT TO HAVE A CURSE.", + "image_url": "http://i.imgur.com/JEExnsI.gif" + } + ] + } +} +``` + +Please note that both `message` is a required key, but is always shown, so use an empty (`""`) string for `message` if you don't want the extra text. + To use notifications, please see the [getting started with automation page](/getting-started/automation/). diff --git a/source/_components/remember_the_milk.markdown b/source/_components/remember_the_milk.markdown index d76670fb86e..d4cc22fa10d 100644 --- a/source/_components/remember_the_milk.markdown +++ b/source/_components/remember_the_milk.markdown @@ -26,7 +26,7 @@ To be able to use this component, you need a Remember The Milk account and you n # Example configuration.yaml entry remember_the_milk: - your_rtm_account: + - name: your_rtm_account api_key: shared_secret: @@ -35,7 +35,7 @@ remember_the_milk: Configuration variables: {% configuration %} - account_name: + name: description: Name of the RTM account, as you can have serveral accounts in RTM. The name must be unique. required: true type: string diff --git a/source/_components/sensor.arduino.markdown b/source/_components/sensor.arduino.markdown index 3989aaf95f1..02fa7f6aaac 100644 --- a/source/_components/sensor.arduino.markdown +++ b/source/_components/sensor.arduino.markdown @@ -27,14 +27,23 @@ sensor: name: Door switch 0: name: Brightness - ``` -Configuration variables: - -- **pins** array (*Required*): Array of pins to use. - - **[number]** (*Required*): The pin number that corresponds with the pin numbering schema of your board. - - **name** (*Optional*): Name that will be used in the frontend for the pin. +{% configuration %} +pins: + description: List of pins to use. + required: true + type: map + keys: + pin_number: + description: The pin number that corresponds with the pin numbering schema of your board. + required: true + type: map + keys: + name: + default: Name that will be used in the frontend for the pin. + type: string +{% endconfiguration %} The 6 analog pins of an Arduino UNO are numbered from A0 to A5. diff --git a/source/_components/sensor.irish_rail_transport.markdown b/source/_components/sensor.irish_rail_transport.markdown index 2735bad819e..f107633701a 100644 --- a/source/_components/sensor.irish_rail_transport.markdown +++ b/source/_components/sensor.irish_rail_transport.markdown @@ -10,7 +10,7 @@ footer: true logo: irishrail.png ha_category: Transport ha_iot_class: "Cloud Polling" -ha_release: 0.56 +ha_release: 0.57 --- diff --git a/source/_components/sensor.london_air.markdown b/source/_components/sensor.london_air.markdown index 64e94ef24e4..d20d33fc715 100644 --- a/source/_components/sensor.london_air.markdown +++ b/source/_components/sensor.london_air.markdown @@ -36,7 +36,6 @@ sensor: - Enfield - Greenwich - Hackney - - Hammersmith and Fulham - Haringey - Harrow - Havering diff --git a/source/_components/sensor.luftdaten.markdown b/source/_components/sensor.luftdaten.markdown index 5e4b7cde98f..486b10e5f2a 100644 --- a/source/_components/sensor.luftdaten.markdown +++ b/source/_components/sensor.luftdaten.markdown @@ -46,7 +46,7 @@ sensor: default: Luftdaten Sensor type: string resource: - description: The URL of the API endpoint. Usually this has not to be changed. + description: The URL of the API endpoint. Usually this has not to be changed. required: false default: https://api.luftdaten.info/v1/sensor/ type: string @@ -62,19 +62,11 @@ sensor: keys: P1: description: Show the particle sensors (particles 10 microns and below). - required: false - type: string P2: description: Show the particle sensors (particles 2.5 microns and below). - required: false - type: string temperature: description: Display the temperature from a weather sensor. - required: false - type: string humidity: description: Display the humidity from a weather sensor. - required: false - type: string {% endconfiguration %} diff --git a/source/_components/sensor.openweathermap.markdown b/source/_components/sensor.openweathermap.markdown index 116d4cd9e3d..9dc0e763c1c 100644 --- a/source/_components/sensor.openweathermap.markdown +++ b/source/_components/sensor.openweathermap.markdown @@ -29,21 +29,49 @@ sensor: - weather ``` -Configuration variables: - -- **api_key** (*Required*): Your API key for http://openweathermap.org/. -- **name** (*Optional*): Additional name for the sensors. Default to platform name. -- **forecast** (*Optional*): Enables the forecast. The default is to display the current conditions. -- **language** (*Optional*): The language in which you want text results to be returned. It's a two-characters string, eg. `en`, `es`, `ru`, `it`, etc. Defaults to English. -- **monitored_conditions** array (*Required*): Conditions to display in the frontend. - - **weather**: A human-readable text summary. - - **temperature**: The current temperature. - - **wind_speed**: The wind speed. - - **wind_bearing**: The wind bearing. - - **humidity**: The relative humidity. - - **pressure**: The sea-level air pressure in millibars. - - **clouds**: Description about cloud coverage. - - **rain**: The rain volume. - - **snow**: The snow volume +{% configuration %} + apk_key: + description: Your API key for OpenWeatherMap. + required: true + type: string + name: + description: Additional name for the sensors. Default to platform name. + required: false + default: OWM + type: string + forecast: + description: Enables the forecast. The default is to display the current conditions. + required: false + default: false + type: string + language: + description: The language in which you want text results to be returned. It's a two-characters string, eg. `en`, `es`, `ru`, `it`, etc. + required: false + default: en + type: string + monitored_conditions: + description: Conditions to display in the frontend. + required: true + type: list + keys: + weather: + description: A human-readable text summary. + temperature: + description: The current temperature. + wind_speed: + description: The wind speed. + wind_bearing: + description: The wind bearing. + humidity: + description: The relative humidity. + pressure: + description: The sea-level air pressure in millibars. + clouds: + description: Description about cloud coverage. + rain: + description: The rain volume. + snow: + description: The snow volume. +{% endconfiguration %} Details about the API are available in the [OpenWeatherMap documentation](http://openweathermap.org/api). diff --git a/source/_components/switch.arduino.markdown b/source/_components/switch.arduino.markdown index 6b15a63431b..bc4f76b19e3 100644 --- a/source/_components/switch.arduino.markdown +++ b/source/_components/switch.arduino.markdown @@ -31,13 +31,32 @@ switch: negate: true ``` -Configuration variables: - -- **pins** array (*Required*): List of pins to use. - - **[number]** (*Required*): The pin number that corresponds with the pin numbering schema of your board. - - **name** (*Required*): Name that will be used in the frontend for the pin. - - **initial** (*Optional*): The initial value for this port. Defaults to `False` . - - **negate** (*Optional*): If this pin should be inverted. Defaults to `False`. +{% configuration %} +pins: + description: List of of pins to use. + required: true + type: map + keys: + pin_number: + description: The pin number that corresponds with the pin numbering schema of your board. + required: true + type: map + keys: + name: + default: Name that will be used in the frontend for the pin. + type: string + required: false + initial: + default: The initial value for this port. + type: boolean + required: false + default: false + negate: + default: If this pin should be inverted. + type: boolean + required: false + default: false +{% endconfiguration %} The digital pins are numbered from 0 to 13 on a Arduino UNO. The available pins are 2 till 13. For testing purposes you can use pin 13 because with that pin you can control the internal LED. diff --git a/source/_components/switch.rainbird.markdown b/source/_components/switch.rainbird.markdown index 455c9118ac8..44134393a61 100644 --- a/source/_components/switch.rainbird.markdown +++ b/source/_components/switch.rainbird.markdown @@ -9,7 +9,7 @@ sharing: true footer: true logo: rainbird.png ha_category: Hub -ha_release: 0.50 +ha_release: 0.57 ha_iot_class: "Local Polling" --- diff --git a/source/_components/tradfri.markdown b/source/_components/tradfri.markdown index 1ce20d6a0c2..281d7972211 100644 --- a/source/_components/tradfri.markdown +++ b/source/_components/tradfri.markdown @@ -22,6 +22,10 @@ You will be prompted to configure the gateway through the Home Assistant interfa If you see an "Unable to connect" message, restart the gateway and try again. Don't forget to assign a permanent IP to your Trådfri gateway.

+

+ The Python version 3.4.4 or greater is required for this component. The component will not initialize without this and will report a `Could not install all requirements` error in the logs. +

+ You can add the following to your `configuration.yaml` file if you are not using the [`discovery:`](/components/discovery/) component: ```yaml @@ -33,7 +37,7 @@ tradfri: Configuration variables: - **host** (*Required*): The IP address or hostname of your Trådfri gateway. - - **allow_tradfri_groups** (*Optional*): Enable this to stop Home Assistant from importing the groups defined on the Trådfri bridge. Defaults to `true`. + - **allow_tradfri_groups** (*Optional*): Set this to `false` to stop Home Assistant from importing the groups defined on the Trådfri bridge. Defaults to `true`.

Do not use the `api_key` variable. The key is only needed once at initial setup. diff --git a/source/_docs/configuration/customizing-devices.markdown b/source/_docs/configuration/customizing-devices.markdown index 9531f61520d..43f6885f334 100644 --- a/source/_docs/configuration/customizing-devices.markdown +++ b/source/_docs/configuration/customizing-devices.markdown @@ -49,7 +49,7 @@ homeassistant: icon: mdi:description "scene.month_*_colors": hidden: true - emulated_hue: false + emulated_hue_hidden: false homebridge_hidden: true ``` diff --git a/source/_docs/ecosystem/tor.markdown b/source/_docs/ecosystem/tor.markdown index 6d87b5f08b4..4c81451d576 100644 --- a/source/_docs/ecosystem/tor.markdown +++ b/source/_docs/ecosystem/tor.markdown @@ -10,20 +10,14 @@ footer: true redirect_from: /cookbook/tor_configuration/ --- -This is an example about how you can configure Tor to provide secure remote access to your Home Assistant instance as an Onion site, through [Tor's Hidden Service](https://www.torproject.org/docs/hidden-services.html.en) feature. With this enabled, you do not need to open your firewall ports or setup HTTPS to enable secure remote access. +This article guides your through the configuration of Tor to provide a secure access to your Home Assistant instance as an Onion site, through [Tor's Hidden Service](https://www.torproject.org/docs/hidden-services.html.en) feature, from remote. With this enabled, you do not need to open your firewall ports or setup HTTPS to enable secure remote access. This is useful if you want to have: - * Access your Home Assistant instance remotely without opening a firewall port or setting up a VPN - * Don't want to or know how to get an SSL/TLS certificate and HTTPS configuration setup - * Want to block attackers from even being able to access/scan your port and server at all - * Want to block anyone from knowing your home IP address and seeing your traffic to your Home Assistant - -## {% linkable_title Background and Contact %} - -This configuration is part of an effort to apply strong cryptography technologies (like Onion Routing and End-to-End Encryption) to technology we increasingly depend on in our day to day lives. Just like when WhatsApp enabled end-to-end encryption messaging for everyone, every home automation and IoT platform should do the same, because A) the technology is all there, freely licensed and open-source and B) up to this point, all the commercial manufacturers have been doing a horrific job with security. - -You can learn more about how Tor can be used to secure home automation and IoT platforms through this short set of slides on the [Internet of Onion Things](https://github.com/n8fr8/talks/blob/master/onion_things/Internet%20of%20Onion%20Things.pdf) + * Access your Home Assistant instance remotely without opening a firewall port or setting up a VPN. + * Don't want to or know how to get an SSL/TLS certificate and HTTPS configuration setup. + * Want to block attackers from even being able to access/scan your port and server at all. + * Want to block anyone from knowing your home IP address and seeing your traffic to your Home Assistant. ## {% linkable_title Hidden Services and Onion Sites %} @@ -61,7 +55,7 @@ The "stealth" entry above ensures traffic to and from your Home Assistant instan Then, restart Tor: ```bash -$ sudo /etc/init.d/tor restart +$ sudo systemctl restart tor ``` Then read the new generated authentication cookie from the Tor-generated hostname file: @@ -106,5 +100,3 @@ You could also use Tor as a means to connect your Home Assistant instance to a r As mentioned, with Orbot on Android, you can enable a "full device" VPN mode, that allows any app you have to tunnel through Tor, even if it is not Tor or proxy aware. This means you should be able to enter your "dot onion" Onion site address into any app you want to access to your Home Assistant instance, and it should work. -This configuration was provided by @n8fr8 ([github](https://github.com/n8fr8), [twitter](https://twitter.com/n8fr8)) of the [Guardian Project](https://guardianproject.info) and [Tor Project](https://torproject.org). You can send questions, feedback and ideas to [support@guardianproject.info](mailto:support@guardianproject.info). - diff --git a/source/_docs/z-wave/installation.markdown b/source/_docs/z-wave/installation.markdown index b7b6a12336f..40ef9739c62 100644 --- a/source/_docs/z-wave/installation.markdown +++ b/source/_docs/z-wave/installation.markdown @@ -153,6 +153,23 @@ On macOS you can find the USB stick with: $ ls /dev/cu.usbmodem* ``` +### {% linkable_title Hass.io %} + +To enable Z-Wave, plug your Z-Wave USB stick into your Raspberry Pi 3 and add the following to your `configuration.yaml`: + +```yaml +zwave: + usb_path: /dev/ttyACM0 +``` + +For some devices the `/dev/ttyAMA0` device is not detected by udev and is therefore not mapped by Docker. To explicitly set this device for mapping to Home-Assistant, execute the following command using the ssh add-on: + +```bash +$ curl -d '{"devices": ["ttyAMA0"]}' http://hassio/homeassistant/options +``` + +After that, you need to change `usb_path` to `/dev/ttyAMA0`. + ### {% linkable_title Network Key %} Security Z-Wave devices require a network key before being added to the network using the Add Secure Node button in the Z-Wave Network Management card. You must set the *network_key* configuration variable to use a network key before adding these devices. @@ -167,3 +184,30 @@ Ensure you keep a backup of this key. If you have to rebuild your system and don ## {% linkable_title First Run %} Upon first run, the `zwave` component will take time to initialize entities and entities may appear with incomplete names. Running a network heal may speed up this process. + +## {% linkable_title Troubleshooting %} + +### {% linkable_title Component could not be set up %} + +Sometimes the device may not be accessible and you'll get an error message upon startup about not being able to set up Z-Wave. Run the following command for your device path: + +```bash +ls -l /dev/ttyAMA0 +``` + +You should then see something like this: + +``` +crw-rw---- 1 root dialout 204, 64 Apr 1 12:34 /dev/ttyAMA0 +``` + +The important pieces are the first piece `crw-rw----` and the group `dialout`. If those are different then, for your device path, run: + +```bash +sudo chgrp dialout /dev/ttyAMA0 +sudo chmod g+rw /dev/ttyAMA0 +``` + +### {% linkable_title Device path changes %} + +If your device path changes when you restart, see [this guide](http://hintshop.ludvig.co.nz/show/persistent-names-usb-serial-devices/) on fixing it. diff --git a/source/_faq/browser.markdown b/source/_faq/browser.markdown new file mode 100644 index 00000000000..ee2dd204f7a --- /dev/null +++ b/source/_faq/browser.markdown @@ -0,0 +1,13 @@ +--- +layout: page +title: "Frontend is acting weird" +description: "Frontend is acting weird" +date: 2017-06-18 09:00 +comments: false +sharing: true +footer: true +ha_category: Usage +--- + + +Close the windows or tab and clear the cache. The frontend is aggressively caching and clearing the cache ensures that the frontend is reloaded when you access it the next time. diff --git a/source/_includes/asides/component_navigation.html b/source/_includes/asides/component_navigation.html index ac543147b60..56ba92ee777 100644 --- a/source/_includes/asides/component_navigation.html +++ b/source/_includes/asides/component_navigation.html @@ -1,4 +1,5 @@ {% assign components = site.components | sort: 'title' %} +{% assign github_main_repo = 'https://github.com/home-assistant/home-assistant/blob/master/homeassistant' %}

{% include edit_github.html %} @@ -23,13 +24,20 @@ {% if page.ha_iot_class %}
- IoT class: {{ page.ha_iot_class }} + IoT class: {{ page.ha_iot_class }}
{% endif %} {% if page.ha_release %}
- Introduced in release: {{ page.ha_release }} + Introduced in release: {{ page.ha_release }} +
+ {% endif %} + + {% if is_platform %} + {% endif %} diff --git a/source/_includes/asides/developers_navigation.html b/source/_includes/asides/developers_navigation.html index 613ff5834b4..34f1de46476 100644 --- a/source/_includes/asides/developers_navigation.html +++ b/source/_includes/asides/developers_navigation.html @@ -78,6 +78,7 @@
  • {% active_link /developers/frontend_add_more_info/ Add More Info Dialog %}
  • {% active_link /developers/frontend_creating_custom_panels/ Add Custom Panels %}
  • {% active_link /developers/frontend_creating_custom_ui/ Add Custom UI %}
  • +
  • {% active_link /developers/frontend_translation/ Translation %}
  • diff --git a/source/_includes/asides/docs_navigation.html b/source/_includes/asides/docs_navigation.html index cc64ef04a9f..463f65313e5 100644 --- a/source/_includes/asides/docs_navigation.html +++ b/source/_includes/asides/docs_navigation.html @@ -12,7 +12,7 @@
  • {% active_link /hassio/ Hass.io %}
  • {% active_link /docs/installation/virtualenv/ Python Virtual Env %}
  • {% active_link /docs/installation/hassbian/ Hassbian %}
  • -
  • {% active_link /docs/installation/raspberry-pi-all-in-one/ Raspberry Pi All-in-One %}
  • +
  • {% active_link /docs/installation/updating/ Updating %}
  • {% active_link /docs/installation/troubleshooting/ Troubleshooting %}
  • diff --git a/source/_posts/2017-11-04-release-57.markdown b/source/_posts/2017-11-04-release-57.markdown index 0a0e117979f..0779d7b5a66 100644 --- a/source/_posts/2017-11-04-release-57.markdown +++ b/source/_posts/2017-11-04-release-57.markdown @@ -83,6 +83,15 @@ Okay, one more highlight before we'll let you check out the changelog. Contribut - integration with Remember The Milk. ([@ChristianKuehnel] - [#9803]) ([remember_the_milk docs]) (new-platform) - Luftdaten sensor ([@lichtteil] - [#10274]) ([sensor.luftdaten docs]) (new-platform) +## {% linkable_title release 0.57.1 - november 4 %} + + - Fix login screen not showing when no password stored ([@balloob]) + +## {% linkable_title release 0.57.2 - november 5 %} + +- Update frontend with fixes for setting temperature on climate card ([@balloob]) +- Fix setting max brightness for TRADFRI ([@ggravlingen] - [#10359]) + ## {% linkable_title If you need help... %} ...don't hesitate to use our very active [forums](https://community.home-assistant.io/) or join us for a little [chat](https://discord.gg/c5DvZ4e). The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. @@ -429,6 +438,7 @@ Experiencing issues introduced by this release? Please report them in our [issue [#9988]: https://github.com/home-assistant/home-assistant/pull/9988 [#9990]: https://github.com/home-assistant/home-assistant/pull/9990 [#9996]: https://github.com/home-assistant/home-assistant/pull/9996 +[#10359]: https://github.com/home-assistant/home-assistant/pull/10359 [@C0DK]: https://github.com/C0DK [@ChristianKuehnel]: https://github.com/ChristianKuehnel [@DarkFox]: https://github.com/DarkFox diff --git a/source/_posts/2017-11-05-frontend-translations.markdown b/source/_posts/2017-11-05-frontend-translations.markdown new file mode 100644 index 00000000000..bf6cc8db753 --- /dev/null +++ b/source/_posts/2017-11-05-frontend-translations.markdown @@ -0,0 +1,26 @@ +--- +layout: post +title: "Translating Home Assistant" +description: "Introduction to the new translation integration with Lokalise." +date: 2017-11-05 20:00:00 -0500 +date_formatted: "November 5, 2017" +author: Adam Mills +comments: true +categories: Community +og_image: /images/blog/2017-11-0.57/languages.png +--- + +

    +The Home Assistant sidebar in 12 different languages +The Home Assistant sidebar in 12 different languages. +

    + +## {% linkable_title Translations %} + +As mentioned in the [0.57 release notes](https://home-assistant.io/blog/2017/11/04/release-57/), Home Assistant has launched a translated frontend. With the immediate influx of translations, we’ve made integration with a translation tool a top priority. [@c727] took the initiative to evaluate several tools, and we’re happy to announce that Home Assistant will be partnering with [Lokalise](https://lokalise.co/) to manage our translations! + +Lokalise allows us to open up translations for all of our multilingual users willing to contribute. Users can join the project using our [public signup link](https://lokalise.co/signup/3420425759f6d6d241f598.13594006/all/), and start translating right away. We’ve created a [translation startup guide](https://home-assistant.io/developers/frontend_translation/) with additional details about how to contribute. Instructions are provided there for how to request a new language. + +Now that we have a system in place, expect a lot more of the interface to be translatable soon. We still have some technical hurdles to overcome, but the hardest work is behind us now. The community has already done an outstanding job of providing translations. The future is looking bright! + +[@c727]: https://github.com/c727 diff --git a/source/developers/documentation/create_page.markdown b/source/developers/documentation/create_page.markdown index 8002a1f623f..db3ca834c6a 100644 --- a/source/developers/documentation/create_page.markdown +++ b/source/developers/documentation/create_page.markdown @@ -49,22 +49,31 @@ Every platform page should contain a configuration sample. This sample must cont The **Configuration Variables** section must use the {% raw %}`{% configuration %} ... {% endconfiguration %}`{% endraw %} tag. - -```text {% raw %} +```text {% configuration %} - api_key: - description: The API key to access the service. - required: true - type: string - name: - description: Name to use in the frontend. - required: false - default: The default name to use in the frontend. - type: string +api_key: + description: The API key to access the service. + required: true + type: string +name: + description: Name to use in the frontend. + required: false + default: The default name to use in the frontend. + type: string +monitored_conditions: + description: Conditions to display in the frontend. + required: true + type: list + keys: + weather: + description: A human-readable text summary. + temperature: + description: The current temperature. {% endconfiguration %} -{% endraw %} + ``` +{% endraw %} Available keys: diff --git a/source/developers/frontend.markdown b/source/developers/frontend.markdown index 41953ac381c..98e88c7f26d 100755 --- a/source/developers/frontend.markdown +++ b/source/developers/frontend.markdown @@ -79,19 +79,24 @@ $ git push -u HEAD ## {% linkable_title Development %} -While you are developing, you need to have gulp running to watch the source files for changes and build when necessary. +If you are changing `html` files under `/src` or `/panels` - just reload the page in your browser to see changes. +If you are changing javascript files under `/js` you need to have gulp running to watch the source files for changes and build when necessary. ```bash $ yarn run dev-watch ``` -The source code for the frontend can be found in two different directories: +The source code for the frontend can be found in different directories: - UI: `/home-assistant-polymer/src/` - Panels: `/home-assistant-polymer/panels/` + - Javascript code: `/home-assistant-polymer/js/` # {% linkable_title Building the Polymer frontend %} -Building a new version of the frontend is as simple as running `script/build_frontend`. +Building a new version of the frontend is as simple as running `script/build_frontend`. +To use a built version package it: `python setup.py sdist` +Install it: `pip3 install dist/home-assistant-frontend-xxxxxxxx.0.tar.gz --upgrade` +Run Home Assistant without trying to reinstall production package: `hass --skip-pip` [hass-polymer]: https://github.com/home-assistant/home-assistant-polymer diff --git a/source/developers/frontend_translation.markdown b/source/developers/frontend_translation.markdown new file mode 100644 index 00000000000..8f0090be5ef --- /dev/null +++ b/source/developers/frontend_translation.markdown @@ -0,0 +1,42 @@ +--- +layout: page +title: "Frontend Translation" +description: "How to translate the frontend for Home Assistant." +date: 2017-10-27 13:00 +sidebar: true +comments: false +sharing: true +footer: true +ha_release: 0.57 +--- + +## {% linkable_title How to start %} +[Join the translation team](https://lokalise.co/signup/3420425759f6d6d241f598.13594006/all/) and choose your language. Even if your language is completely translated, extra proofreading is a big help! Please feel free to review the existing translations, and vote for alternatives that might be more appropriate. + +First time users may find it helpful to switch between multilanguage and single language view using the Multilanguage view button. For more information about the translation workflow, please see the [Lokalise translation workflow documents](https://docs.lokalise.co/category/iOzEuQPS53-for-team-leads-and-translators). + +

    +The translation of the Home Assistant frontend is still a work in progress. More phrases will be available for translation soon. +

    + +## {% linkable_title Rules %} +1. Only native speakers should submit translations. +2. Stick to [Material Design guidelines](https://material.io/guidelines/style/writing.html). +3. Don't translate or change proper nouns like `Home Assistant`, `Hass.io` or `Hue`. + +## {% linkable_title Adding a new language %} +If your language is not listed you can request it at [GitHub](https://github.com/home-assistant/home-assistant-polymer/issues/new). Please provide both the English name and the native name for your language. For example: +``` +English Name: German +Native Name: Deutsch +``` + +

    +Region specific translations (`en-US`, `fr-CA`) will only be included if translations for that region need to differ from the base language translation. +

    + +### {% linkable_title Maintainer steps to add a new language %} +1. Language tags have to follow [BCP 47](https://tools.ietf.org/html/bcp47). A list of most language tags can be found here: [IANA sutbtag registry](http://www.iana.org/assignments/language-subtag-registry/language-subtag-registry). Examples: `fr`, `fr-CA`, `zh-Hans`. Only include the country code if country specific overrides are being included, and the base language is already translated. +2. Add the language tag and native name in `src/translations/translationMetadata.json`. Examples: "Français", "Français (CA)" +3. Add the new language in Lokalize. +Note: Sometimes you have to change the tag in Lokalise (Language -> Language settings -> custom ISO code). diff --git a/source/developers/rest_api.markdown b/source/developers/rest_api.markdown index 8f620814d5a..cf850cfbec4 100644 --- a/source/developers/rest_api.markdown +++ b/source/developers/rest_api.markdown @@ -139,25 +139,6 @@ $ curl -X GET -H "x-ha-access: YOUR_PASSWORD" \ -H "Content-Type: application/json" http://localhost:8123/api/discovery_info ``` -#### {% linkable_title GET /api/bootstrap %} -Returns all data needed to bootstrap Home Assistant. - -```json -{ - "config": {...}, - "events": [...], - "services": [...], - "states": [...] -} -``` - -Sample `curl` command: - -```bash -$ curl -X GET -H "x-ha-access: YOUR_PASSWORD" \ - -H "Content-Type: application/json" http://localhost:8123/api/bootstrap -``` - #### {% linkable_title GET /api/events %} Returns an array of event objects. Each event object contains event name and listener count. diff --git a/source/images/frontend/lokalise-multilanguage-view-button.png b/source/images/frontend/lokalise-multilanguage-view-button.png new file mode 100644 index 00000000000..12370813300 Binary files /dev/null and b/source/images/frontend/lokalise-multilanguage-view-button.png differ