diff --git a/source/_addons/lets_encrypt.markdown b/source/_addons/lets_encrypt.markdown index 5453e79c715..2b7d51b470d 100644 --- a/source/_addons/lets_encrypt.markdown +++ b/source/_addons/lets_encrypt.markdown @@ -11,6 +11,10 @@ footer: true Setup and manage a [Let's Encrypt](https://letsencrypt.org/) certificate. This will create a certificate on the first run and renew it if the certificate is expiring in the next 30 days. +

+This add-on need port 80/443 to verify the certificate request, please stop all add-ons they use also this ports, otherwise you can not start this add-on. +

+ ```json { "email": "example@example.com", diff --git a/source/_addons/nginx_proxy.markdown b/source/_addons/nginx_proxy.markdown new file mode 100644 index 00000000000..05d064d6df8 --- /dev/null +++ b/source/_addons/nginx_proxy.markdown @@ -0,0 +1,25 @@ +--- +layout: page +title: "Nginx SSL proxy" +description: "Nginx HomeAssistant SSL proxy" +date: 2017-04-30 13:28 +sidebar: true +comments: false +sharing: true +footer: true +--- + +Setup a SSL proxy with nginx and redirect port 80 to 443. Make sure you have generate certificate before you start this add-on. + + + +```json +{ + "domain": "home.example.com" +} +``` + +Configuration variables: + +- **domain** (*Required*): Domain they will proxy run with it. + diff --git a/source/_components/binary_sensor.ffmpeg_motion.markdown b/source/_components/binary_sensor.ffmpeg_motion.markdown index 07b9fa548e0..92cdaa2304a 100644 --- a/source/_components/binary_sensor.ffmpeg_motion.markdown +++ b/source/_components/binary_sensor.ffmpeg_motion.markdown @@ -17,7 +17,7 @@ redirect_from: /components/binary_sensor.ffmpeg/ The `ffmpeg` platform allows you to use any video feed with [FFmpeg](http://www.ffmpeg.org/) for motion sensors in Home Assistant.

-If the `ffmpeg` process is broken, the sensor will be unavailable. To controll the ffmpeg process of sensor, use the service *ffmpeg.start*, *ffmpeg.stop*, *ffmpeg.restart*. +If the `ffmpeg` process is broken, the sensor will be unavailable. To control the ffmpeg process of sensor, use the service *ffmpeg.start*, *ffmpeg.stop*, *ffmpeg.restart*.

### {% linkable_title Motion %} diff --git a/source/_components/binary_sensor.ffmpeg_noise.markdown b/source/_components/binary_sensor.ffmpeg_noise.markdown index c1f0c2eab2e..16b18761430 100644 --- a/source/_components/binary_sensor.ffmpeg_noise.markdown +++ b/source/_components/binary_sensor.ffmpeg_noise.markdown @@ -16,7 +16,7 @@ ha_release: 0.27 The `ffmpeg` platform allows you to use any video or audio feed with [FFmpeg](http://www.ffmpeg.org/) for various sensors in Home Assistant.

-If the `ffmpeg` process is broken, the sensor will be unavailable. To controll the ffmpeg process of sensor, use the service *ffmpeg.start*, *ffmpeg.stop*, *ffmpeg.restart*. +If the `ffmpeg` process is broken, the sensor will be unavailable. To control the ffmpeg process of sensor, use the service *ffmpeg.start*, *ffmpeg.stop*, *ffmpeg.restart*.

### {% linkable_title Noise %} diff --git a/source/_components/binary_sensor.template.markdown b/source/_components/binary_sensor.template.markdown index 15129c4ae28..39ea85e7d22 100644 --- a/source/_components/binary_sensor.template.markdown +++ b/source/_components/binary_sensor.template.markdown @@ -92,3 +92,17 @@ binary_sensor: - sensor.kitchen_co_status - sensor.wardrobe_co_status ``` +### {% linkable_title Change the icon %} + +This example shows how to change the icon based on the day/night cycle. + +```yaml +sensor: + - platform: template + sensors: + day_night: + friendly_name: 'Day/Night' + value_template: {% raw %}'{% if is_state("sun.sun", "above_horizon") %}Day{% else %}Night{% endif %}'{% endraw %} + icon_template: {% raw %}'{% if is_state("sun.sun", "above_horizon") %}mdi:weather-sunny{% else %}mdi:weather-night{% endif %}'{% endraw %} + +``` diff --git a/source/_components/climate.mysensors.markdown b/source/_components/climate.mysensors.markdown index 2ee210d76f4..c629b0083fc 100644 --- a/source/_components/climate.mysensors.markdown +++ b/source/_components/climate.mysensors.markdown @@ -42,7 +42,144 @@ You can use V_TEMP to send the current temperature from the node to Home Assista For more information, visit the [serial api] of MySensors. -### {% linkable_title Example sketch %} +### {% linkable_title Example sketch for MySensors 2.x %} + + +```cpp +/* +* Documentation: http://www.mysensors.org +* Support Forum: http://forum.mysensors.org +*/ + +#define MY_RADIO_NRF24 +#define CHILD_ID_HVAC 0 + +#include + +// Uncomment your heatpump model +//#include +//#include +//#include +//#include +//#include +//#include +//#include +//#include +//#include + +//Some global variables to hold the states +int POWER_STATE; +int TEMP_STATE; +int FAN_STATE; +int MODE_STATE; +int VDIR_STATE; +int HDIR_STATE; + +IRSenderPWM irSender(3); // IR led on Arduino digital pin 3, using Arduino PWM + +//Change to your Heatpump +HeatpumpIR *heatpumpIR = new PanasonicNKEHeatpumpIR(); + +/* +new PanasonicDKEHeatpumpIR() +new PanasonicJKEHeatpumpIR() +new PanasonicNKEHeatpumpIR() +new CarrierHeatpumpIR() +new MideaHeatpumpIR() +new FujitsuHeatpumpIR() +new MitsubishiFDHeatpumpIR() +new MitsubishiFEHeatpumpIR() +new SamsungHeatpumpIR() +new SharpHeatpumpIR() +new DaikinHeatpumpIR() +*/ + +MyMessage msgHVACSetPointC(CHILD_ID_HVAC, V_HVAC_SETPOINT_COOL); +MyMessage msgHVACSpeed(CHILD_ID_HVAC, V_HVAC_SPEED); +MyMessage msgHVACFlowState(CHILD_ID_HVAC, V_HVAC_FLOW_STATE); + +void presentation() { + sendSketchInfo("Heatpump", "2.1"); + present(CHILD_ID_HVAC, S_HVAC, "Thermostat"); +} + +void setup() { +} + +void loop() { + // put your main code here, to run repeatedly: +} + +void receive(const MyMessage &message) { + if (message.isAck()) { + Serial.println("This is an ack from gateway"); + return; + } + + Serial.print("Incoming message for: "); + Serial.print(message.sensor); + + String recvData = message.data; + recvData.trim(); + + Serial.print(", New status: "); + Serial.println(recvData); + switch (message.type) { + case V_HVAC_SPEED: + Serial.println("V_HVAC_SPEED"); + + if(recvData.equalsIgnoreCase("auto")) FAN_STATE = 0; + else if(recvData.equalsIgnoreCase("min")) FAN_STATE = 1; + else if(recvData.equalsIgnoreCase("normal")) FAN_STATE = 2; + else if(recvData.equalsIgnoreCase("max")) FAN_STATE = 3; + break; + + case V_HVAC_SETPOINT_COOL: + Serial.println("V_HVAC_SETPOINT_COOL"); + TEMP_STATE = message.getFloat(); + Serial.println(TEMP_STATE); + break; + + case V_HVAC_FLOW_STATE: + Serial.println("V_HVAC_FLOW_STATE"); + if (recvData.equalsIgnoreCase("coolon")) { + POWER_STATE = 1; + MODE_STATE = MODE_COOL; + } + else if (recvData.equalsIgnoreCase("heaton")) { + POWER_STATE = 1; + MODE_STATE = MODE_HEAT; + } + else if (recvData.equalsIgnoreCase("autochangeover")) { + POWER_STATE = 1; + MODE_STATE = MODE_AUTO; + } + else if (recvData.equalsIgnoreCase("off")){ + POWER_STATE = 0; + } + break; + } + sendHeatpumpCommand(); + sendNewStateToGateway(); +} + +void sendNewStateToGateway() { + send(msgHVACSetPointC.set(TEMP_STATE)); + send(msgHVACSpeed.set(FAN_STATE)); + send(msgHVACFlowState.set(MODE_STATE)); +} + +void sendHeatpumpCommand() { + Serial.println("Power = " + (String)POWER_STATE); + Serial.println("Mode = " + (String)MODE_STATE); + Serial.println("Fan = " + (String)FAN_STATE); + Serial.println("Temp = " + (String)TEMP_STATE); + + heatpumpIR->send(irSender, POWER_STATE, MODE_STATE, FAN_STATE, TEMP_STATE, VDIR_AUTO, HDIR_AUTO); +} +``` + +### {% linkable_title Example sketch for MySensors 1.x %} ```cpp /* diff --git a/source/_components/emulated_hue.markdown b/source/_components/emulated_hue.markdown index 4cb0d13b6b0..8db5a8205c5 100644 --- a/source/_components/emulated_hue.markdown +++ b/source/_components/emulated_hue.markdown @@ -7,6 +7,7 @@ sidebar: true comments: false sharing: true footer: true +logo: home-assistant.png ha_category: Hub ha_release: 0.27 ha_iot_class: "Local Push" diff --git a/source/_components/ffmpeg.markdown b/source/_components/ffmpeg.markdown index eb48e451421..caa322b587b 100644 --- a/source/_components/ffmpeg.markdown +++ b/source/_components/ffmpeg.markdown @@ -25,7 +25,7 @@ ffmpeg: Configuration variables: -- **ffmpeg_bin** (*Optional*): Default 'ffmpeg'. The name or path to the `ffmpeg` binary. +- **ffmpeg_bin** (*Optional*): Default `ffmpeg`. The name or path to the `ffmpeg` binary. - **run_test** (*Optional*): Default True. Check if `input` is usable by ffmpeg. ### {% linkable_title Raspbian Debian Jessie Lite Installations %} @@ -36,7 +36,9 @@ $ sudo echo "deb http://ftp.debian.org/debian jessie-backports main" >> /etc/apt $ sudo apt-get update $ sudo apt-get -t jessie-backports install ffmpeg ``` + We can use now following in the configuration: + ``` ffmpeg: ffmpeg_bin: /usr/bin/ffmpeg @@ -52,7 +54,44 @@ First check that your stream is playable by `ffmpeg` outside of Home Assistant w $ ffmpeg -i INPUT -an -f null - ``` -Now you should be able to see what is going wrong. The following list contains some common problems and solutions: +Now you should be able to see what is going wrong. The following list contains some common problems and solutions: - `[rtsp @ ...] UDP timeout, retrying with TCP`: You need to set an RTSP transport in the configuration with: `input: -rtsp_transport tcp -i INPUT` - `[rtsp @ ...] Could not find codec parameters for stream 0 (Video: ..., none): unspecified size`: FFmpeg needs more data or time for autodetection (the default is 5 seconds). You can set the `analyzeduration` and/or `probesize` options to experiment with giving FFmpeg more leeway. If you find the needed value, you can set it with: `input: -analyzeduration xy -probesize xy -i INPUT`. More information about this can be found [here](https://www.ffmpeg.org/ffmpeg-formats.html#Description). + +#### {% linkable_title USB cameras %} + +For `INPUT` a valid source is needed. USB camera are an easy way to test your video setup. To get all available USB cameras connected to the system, eg. use the v4l2 tools on a Linux machine. + +```bash +$ v4l2-ctl --list-devices +UVC Camera (046d:0825) (usb-0000:00:14.0-1): + /dev/video1 + +Integrated Camera (usb-0000:00:14.0-10): + /dev/video0 +``` + +Record a test video with your USB device `/dev/video1`: + +```bash +$ ffmpeg -i /dev/video1 -codec:v libx264 -qp 0 lossless.mp4 +[...] +Input #0, video4linux2,v4l2, from '/dev/video1': + Duration: N/A, start: 43556.376974, bitrate: 147456 kb/s + Stream #0:0: Video: rawvideo (YUY2 / 0x32595559), yuyv422, 640x480, 147456 kb/s, 30 fps, 30 tbr, 1000k tbn, 1000k tbc +[...] +Output #0, mp4, to 'lossless.mp4': + Metadata: + encoder : Lavf57.41.100 + Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv422p, 640x480, q=-1--1, 30 fps, 15360 tbn, 30 tbc + Metadata: + encoder : Lavc57.48.101 libx264 + Side data: + cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1 +Stream mapping: + Stream #0:0 -> #0:0 (rawvideo (native) -> h264 (libx264)) +Press [q] to stop, [?] for help +frame= 223 fps= 40 q=-1.0 Lsize= 16709kB time=00:00:07.40 bitrate=18497.5kbits/s dup=58 drop=0 speed=1.32x +``` + diff --git a/source/_components/influxdb.markdown b/source/_components/influxdb.markdown index 14b00a1a0fb..270d3df1872 100644 --- a/source/_components/influxdb.markdown +++ b/source/_components/influxdb.markdown @@ -109,7 +109,7 @@ It will read all your state_change events from the database and add them as data You can specify the source database either by pointing the `--config` option to the config directory which includes the default sqlite database or by giving a sqlalchemy connection URI with `--uri`. The writing to InfluxDB is done in batches that can be changed with `--step`. -You can control, which data is imported by using the commandline options `--exclude-entities` and `--exclude-domain`. +You can control, which data is imported by using the commandline options `--exclude_entities` and `--exclude_domains`. Both get a comma separated list of either entity-ids or domain names that are excluded from the import. To test what gets imported you can use the `--simulate` option, which disables the actual write to the InfluxDB instance. @@ -120,7 +120,7 @@ Example to run the script: ```bash $ hass --script influxdb_import --config CONFIG_DIR \ -H IP_INFLUXDB_HOST -u INFLUXDB_USERNAME -p INFLUXDB_PASSWORD \ - --dbname INFLUXDB_DB_NAME --exclude-domain automation,configurator + --dbname INFLUXDB_DB_NAME --exclude_domains automation,configurator ``` Script arguments: diff --git a/source/_components/light.markdown b/source/_components/light.markdown index 37097f82842..ac792c07060 100644 --- a/source/_components/light.markdown +++ b/source/_components/light.markdown @@ -33,7 +33,7 @@ Turns one light on or multiple lights on using [groups]({{site_root}}/components | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | | `entity_id` | no | String or list of strings that point at `entity_id`s of lights. Else targets all. -| `transition` | yes | Integer that represents the time the light should take to transition to the new state in seconds. *not supported by Wink +| `transition` | yes | Integer that represents the time the light should take to transition to the new state in seconds. *Not supported by all lights. | `profile` | yes | String with the name of one of the built-in profiles (relax, energize, concentrate, reading) or one of the custom profiles defined in `light_profiles.csv` in the current working directory. Light profiles define a xy color and a brightness. If a profile is given and a brightness or xy color then the profile values will be overwritten. | `xy_color` | yes | A list containing two floats representing the xy color you want the light to be. Two comma separated floats that represent the color in XY. | `rgb_color` | yes | A list containing three integers representing the rgb color you want the light to be. Three comma separated integers that represent the color in RGB. You can find a great chart here: [Hue Color Chart](http://www.developers.meethue.com/documentation/hue-xy-values) @@ -42,7 +42,7 @@ Turns one light on or multiple lights on using [groups]({{site_root}}/components | `color_name` | yes | A human readable string of a color name, such as `blue` or `goldenrod`. All [CSS3 color names](https://www.w3.org/TR/2010/PR-css3-color-20101028/#svg-color) are supported. | `brightness` | yes | Integer between 0 and 255 for how bright the color should be. | `brightness_pct`| yes | Alternatively, you can specify brightness in percent (a number between 0 and 100). -| `flash` | yes | Tell light to flash, can be either value `short` or `long`. *not supported by Wink +| `flash` | yes | Tell light to flash, can be either value `short` or `long`. *Not supported by all lights. | `effect`| yes | Applies an effect such as `colorloop` or `random`. ### {% linkable_title Service `light.turn_off` %} diff --git a/source/_components/light.osramlightify.markdown b/source/_components/light.osramlightify.markdown index 75dc48fd55e..86fa342c9b3 100644 --- a/source/_components/light.osramlightify.markdown +++ b/source/_components/light.osramlightify.markdown @@ -23,4 +23,5 @@ light: Configuration variables: - **host** (*Required*): IP address of the Osram Lightify bridge, eg. `192.168.1.50`. +- **allow_lightify_groups** (*Optional*): (true/false) Edit this to stop homeassistant from importing the lightify groups. diff --git a/source/_components/plant.markdown b/source/_components/plant.markdown index fcc9bcc8b93..2b77eee4e7e 100644 --- a/source/_components/plant.markdown +++ b/source/_components/plant.markdown @@ -7,6 +7,7 @@ sidebar: true comments: false sharing: true footer: true +logo: home-assistant.png ha_category: Other ha_release: 0.44 --- diff --git a/source/_components/rss_feed_template.markdown b/source/_components/rss_feed_template.markdown index c7f982614f1..9dff1d5ffc5 100644 --- a/source/_components/rss_feed_template.markdown +++ b/source/_components/rss_feed_template.markdown @@ -7,6 +7,7 @@ sidebar: true comments: false sharing: true footer: true +logo: home-assistant.png ha_category: Front end ha_release: 0.44 --- diff --git a/source/_components/sensor.dnsip.markdown b/source/_components/sensor.dnsip.markdown index 30f1035d87b..3eeff8b0c1e 100644 --- a/source/_components/sensor.dnsip.markdown +++ b/source/_components/sensor.dnsip.markdown @@ -7,6 +7,7 @@ sidebar: true comments: false sharing: true footer: true +logo: home-assistant.png ha_category: Sensor ha_iot_class: "Cloud Polling" ha_release: "0.40" diff --git a/source/_components/sensor.rflink.markdown b/source/_components/sensor.rflink.markdown index ab94b7c92b2..04207698f3b 100644 --- a/source/_components/sensor.rflink.markdown +++ b/source/_components/sensor.rflink.markdown @@ -42,10 +42,46 @@ Configuration variables: Device configuration variables: - **name** (*Optional*): Name for the device, defaults to RFLink ID. -- **sensor_type** (*Required*): Override automatically detected type of sensor. +- **sensor_type** (*Required*): Override automatically detected type of sensor. For list of values see below. - **unit_of_measurement** (*Optional*): Override automatically detected unit of sensor. - **aliasses** (*Optional*): Alternative RFLink ID's this device is known by. +Sensor type values: + +- average_windspeed +- barometric_pressure +- battery +- weather_forecast +- doorbell_melody +- command +- co2_air_quality +- current_phase_1 +- current_phase_2 +- current_phase_3 +- distance +- firmware +- humidity_status +- humidity +- hardware +- kilowatt +- light_intensity +- meter_value +- total_rain +- rain_rate +- total_rain +- revision +- noise_level +- temperature +- uv_intensity +- version +- voltage +- watt +- windchill +- winddirection +- windgusts +- windspeed +- windtemp + ### {% linkable_title Hiding/ignoring sensors %} Sensors are added automatically when the RFLink gateway intercepts a wireless command in the ether. To prevent cluttering the frontend use any of these methods: diff --git a/source/_components/sensor.snmp.markdown b/source/_components/sensor.snmp.markdown index d73d049fdb9..3252dedb66c 100644 --- a/source/_components/sensor.snmp.markdown +++ b/source/_components/sensor.snmp.markdown @@ -34,6 +34,7 @@ Configuration variables: - **community** (*Optional*): The SNMP community which is set for the device. Most devices have a default community set to to `public` with read-only permission (which is sufficient). - **baseoid** (*Required*): The OID where the information is located. It's advised to use the numerical notation. - **unit_of_measurement** (*Optional*): Defines the unit of measurement of the sensor, if any. +- **version** (*Optional*) version of SNMP protocol, `1` or `2c` defaults to `1`. Version `2c` is needed to read data from 64-bit counters. The OIDs may vary on different system because they are vendor-specific. Beside the device's manual is the [OID Repository](http://www.oid-info.com/) a good place to start if you are looking for OIDs. The following OIDs are for the load of a Linux systems. diff --git a/source/_components/telegram_bot.markdown b/source/_components/telegram_bot.markdown index 40df6e973fc..0f213b192d6 100644 --- a/source/_components/telegram_bot.markdown +++ b/source/_components/telegram_bot.markdown @@ -223,7 +223,7 @@ action: An example to show the use of event_data in the action: -``` +```yaml - alias: 'Kitchen Telegram Speak' trigger: platform: event diff --git a/source/_components/telegram_bot.polling.markdown b/source/_components/telegram_bot.polling.markdown index 3470f57ce68..1ea4b0bf5f3 100644 --- a/source/_components/telegram_bot.polling.markdown +++ b/source/_components/telegram_bot.polling.markdown @@ -35,5 +35,5 @@ Configuration variables: - **api_key** (*Required*): The API token of your bot. - **parse_mode** (*Optional*): Default parser for messages if not explicit in message data: 'html' or 'markdown'. Default is 'markdown'. -To get your `chat_id` and `api_key` follow the instructions [here](/components/notify.telegram/) . +To get your `chat_id` and `api_key` follow the instructions [here](/components/notify.telegram/). diff --git a/source/_docs/ecosystem/certificates/lets_encrypt.markdown b/source/_docs/ecosystem/certificates/lets_encrypt.markdown index caac6eb191c..e1d2e464c41 100644 --- a/source/_docs/ecosystem/certificates/lets_encrypt.markdown +++ b/source/_docs/ecosystem/certificates/lets_encrypt.markdown @@ -247,7 +247,7 @@ $ sudo adduser hass sudo If you did not already log in as the user that currently runs Home Assistant, change to that user (usually `hass` or `homeassistant` - you may have used a command similar to this in the past): ```bash -$ su -s /bin/bash hass +$ sudo su -s /bin/bash hass ``` Make sure you are in the home directory for the HA user: diff --git a/source/_docs/installation/armbian.markdown b/source/_docs/installation/armbian.markdown index d7b53d7ed2e..ce8b4c4e043 100644 --- a/source/_docs/installation/armbian.markdown +++ b/source/_docs/installation/armbian.markdown @@ -21,5 +21,5 @@ $ sudo apt-get install python3-dev python3-pip Install Home Assistant. ```bash -$ pip3 install homeassistant +$ sudo pip3 install homeassistant ``` diff --git a/source/_docs/installation/fedora.markdown b/source/_docs/installation/fedora.markdown index 574c661aa3c..cf945bbeaae 100644 --- a/source/_docs/installation/fedora.markdown +++ b/source/_docs/installation/fedora.markdown @@ -14,7 +14,7 @@ footer: true Install the development package of Python. ```bash -$ sudo dnf -y install python3-devel +$ sudo dnf -y install python3-devel redhat-rpm-config ``` and Home Assistant itself. @@ -27,7 +27,6 @@ To isolate the Home Assistant installation a [venv](https://docs.python.org/3/li ```bash $ sudo mkdir -p /opt/homeassistant -$ cd /opt/homeassistant ``` Now switch to the new directory, setup the venv, and activate it. @@ -40,7 +39,7 @@ $ source bin/activate Install Home Assistant itself. ```bash -$ pip3 install homeassistant +$ pip3 install homeassistant colorlog ``` -Check the [autostart](/docs/autostart/systemd/) section in the documentation for further details. +Check the [autostart](/docs/autostart/systemd/) section in the documentation for further details and the [Firewall section](/docs/installation/troubleshooting/#no-access-to-the-frontend) if you want to access your Home Assistant installation. diff --git a/source/_includes/asides/hassio_navigation.html b/source/_includes/asides/hassio_navigation.html index 747c931510c..d57bcc18998 100644 --- a/source/_includes/asides/hassio_navigation.html +++ b/source/_includes/asides/hassio_navigation.html @@ -8,6 +8,7 @@
  • {% active_link /hassio/installation/ Installation %}
  • {% active_link /addons/ Available add-ons %}
  • {% active_link /hassio/installing_third_party_addons/ Installing third-party add-ons %}
  • +
  • {% active_link /hassio/external_storage/ External storage %}
  • {% active_link /hassio/architecture/ Architecture %}
  • diff --git a/source/_posts/2017-02-04-babyphone.markdown b/source/_posts/2017-02-04-babyphone.markdown index 9d58c64c263..057e80b968a 100644 --- a/source/_posts/2017-02-04-babyphone.markdown +++ b/source/_posts/2017-02-04-babyphone.markdown @@ -10,7 +10,7 @@ categories: How-To og_image: /images/blog/2017-02-babyphone/social.png --- -One of the hardest part of being a parent is keeping a constant eye on the baby to make sure that baby is doing well. Thus, it is not surprising that baby monitors are one of the fastest growing baby product category. However, many of the baby monitors available on the market are rather dumb and expect the parents to keep looking at the video stream or listen to the audio. This how-to will help you create a smart baby monitor on a budget and integrate it with Home Assitant. Instead of relying on the poor quality baby monitor speakers, we use our existing speakers (eg. Sonos). We can also send notifications (with pictures) to avoid constant monitoring of the feed. +One of the hardest part of being a parent is keeping a constant eye on the baby to make sure that the baby is doing well. Thus, it is not surprising that baby monitors are one of the fastest growing baby product category. However, many of the baby monitors available on the market are rather dumb and expect the parents to keep looking at the video stream or listen to the audio. This how-to will help you create a smart baby monitor on a budget and integrate it with Home Assitant. Instead of relying on the poor quality baby monitor speakers, we use our existing speakers (eg. Sonos). We can also send notifications (with pictures) to avoid constant monitoring of the feed. Obviously, you can use the setup as a general purpose surveillance system to monitor noise in the whole house. @@ -18,9 +18,9 @@ Obviously, you can use the setup as a general purpose surveillance system to mon ### {% linkable_title Setup %} -We need an IP camera that can capture sound in the baby's room. It is also possible to use a Raspberry Pi with a microphone and send the audio to Home Assistant with `ffmpeg -f alsa -i hw:1,0 -vn -f rtp rtp://236.0.0.1:2000` over multicast. We can set the `input` option on the Home Assistant side to `rtp://236.0.0.1:2000` in same network. +We need an IP camera that can capture sound in the baby's room. It is also possible to use a Raspberry Pi with a microphone and send the audio to Home Assistant with `ffmpeg -f alsa -i hw:1,0 -vn -f rtp rtp://236.0.0.1:2000` over multicast. We can set the `input` option on the Home Assistant side to `rtp://236.0.0.1:2000` in the same network. -Next, we attach a FFmpeg noise binary sensor to our IP camera. The sensor has an output `option` that allows us to send the output to an [icecast2](http://icecast.org/) server for playing over speakers integrated with Home Assistant (eg. Sonos). We can use the binary sensor in our automation. You can ignore the icecast2 setup if you don't want to play the audio after the noise sensor trigger. +Next, we attach a `ffmpeg_noise` binary sensor to our IP camera. The sensor has an output `option` that allows us to send the output to an [icecast2](http://icecast.org/) server for playing over speakers integrated with Home Assistant. We can use the binary sensor in our automation. You can ignore the icecast2 setup if you don't want to play the audio after the noise sensor trigger.

    We change the platform name for binary sensor in 0.38 from `ffmpeg` to `ffmpeg_noise`. Also all service going to component and was rename from `binary_sensor.ffmpeg_xy` to `ffmpeg.xy`. @@ -47,7 +47,7 @@ We setup a icecast mount point for our babyphone and update `/etc/icecast2/iceca ``` -Now we can add the noise sensor to Home Assistant. We can lower the sensitivity of the sensor (so that you are not inundated with notifications for every cough of the baby) to 2 seconds using the `duration` option. The sensor should wait 60 seconds before restoring and it prevent us that a wine break will triggering a new alarm. +Now we can add the noise sensor to Home Assistant. We lower the sensitivity of the sensor (so that you are not inundated with notifications for every cough of the baby) to 2 seconds using the `duration` option. The sensor should wait 60 seconds before restoring and it prevent us that a wine break will triggering a new alarm. We can optimize the audio stream for human voice by using a highpass filter with 300 Hz and a lowpass filter with 2500 Hz. This filters out all non-human sounds such as background noise. We can even add a volume amplifier if the microphone volume is too low (you can remove it from `extra_arguments`). For icecast2 we convert the audio stream to mp3 with samplerate of 16000 (which is the minimum for Sonos speakers). We use `peak` to set the threshold for noise detection, where 0 dB is very loud and -100 dB is low. diff --git a/source/components/index.html b/source/components/index.html index 20acc5991f5..b0b6dfed3e8 100644 --- a/source/components/index.html +++ b/source/components/index.html @@ -36,9 +36,9 @@ Support for these components is provided by the Home Assistant community.

    All ({{tot}}) Featured - Added in {{ current_version }} ({{ current_version_components_count }}) - Added in {{ added_one_ago_version }} ({{ one_ago_version_components_count }}) - Added in {{ added_two_ago_version }} ({{ two_ago_version_components_count }}) + Added in {{ current_version }} ({{ current_version_components_count }}) + Added in {{ added_one_ago_version }} ({{ one_ago_version_components_count }}) + Added in {{ added_two_ago_version }} ({{ two_ago_version_components_count }}) {% for category in categories %} {% if category and category != 'Other' %} @@ -87,16 +87,14 @@ Support for these components is provided by the Home Assistant community. {% endraw %}