mirror of
https://github.com/home-assistant/home-assistant.io.git
synced 2025-06-01 07:46:49 +00:00
135 lines
4.3 KiB
Markdown
135 lines
4.3 KiB
Markdown
---
|
|
layout: page
|
|
title: "BH1750 Light sensor"
|
|
description: "Instructions on how to integrate a BH1750 light sensor into Home Assistant."
|
|
date: 2017-06-10 00:00
|
|
sidebar: true
|
|
comments: false
|
|
sharing: true
|
|
footer: true
|
|
logo: raspberry-pi.png
|
|
ha_category: DIY
|
|
ha_release: 0.48
|
|
ha_iot_class: "Local Push"
|
|
---
|
|
|
|
The `bh1750` sensor platform allows you to read the ambient light level in Lux from a [BH1750FVI sensor](http://cpre.kmutnb.ac.th/esl/learning/bh1750-light-sensor/bh1750fvi-e_datasheet.pdf) connected via [I2c](https://en.wikipedia.org/wiki/I²C) bus (SDA, SCL pins). It allows you to use all the resolution modes of the sensor described in its datasheet.
|
|
|
|
Tested devices:
|
|
|
|
- [Raspberry Pi](https://www.raspberrypi.org/)
|
|
|
|
## {% linkable_title Configuration %}
|
|
|
|
To use your BH1750 sensor in your installation, add the following to your `configuration.yaml` file:
|
|
|
|
```yaml
|
|
# Example configuration.yaml entry
|
|
sensor:
|
|
- platform: bh1750
|
|
```
|
|
|
|
{% configuration %}
|
|
name:
|
|
description: Name of the sensor.
|
|
required: false
|
|
default: BH1750 Light Sensor
|
|
type: string
|
|
i2c_address:
|
|
description: I2c address of the sensor. It is 0x23 or 0x5C.
|
|
required: false
|
|
default: 0x23
|
|
type: string
|
|
i2c_bus:
|
|
description: I2c bus where the sensor is.
|
|
required: false
|
|
default: 1, for Raspberry Pi 2 and 3.
|
|
type: integer
|
|
operation_mode:
|
|
description: Working mode for the sensor.
|
|
required: false
|
|
default: continuous_high_res_mode_1
|
|
type: string
|
|
sensitivity:
|
|
description: The sensitivity of the sensor can be a value between 31 and 254.
|
|
required: false
|
|
default: 69
|
|
type: integer
|
|
measurement_delay_ms:
|
|
description: Delay time in ms for waiting the sensor to get the measure.
|
|
required: false
|
|
default: 120
|
|
type: integer
|
|
multiplier:
|
|
description: Correction coefficient to multiply the measured light level. Value between 0.1 and 10.
|
|
required: false
|
|
default: 1
|
|
type: integer
|
|
{% endconfiguration %}
|
|
|
|
## {% linkable_title Full Examples %}
|
|
|
|
If you want to specify the resolution mode of the digital sensor or need to change the default I2c address (which is 0x23), add more details to the `configuration.yaml` file.
|
|
|
|
The sensor can work with resolutions of 0.5 lx (high res mode 1), 1 lx (high res mode 2) or 4 lx (low res mode), and make measurements continuously or one time each call. To set any of these operation modes, select one of these combinations: `continuous_low_res_mode`, `continuous_high_res_mode_2`, `continuous_high_res_mode_1`, `one_time_high_res_mode_1`, `one_time_high_res_mode_2`, `one_time_low_res_mode`.
|
|
|
|
```yaml
|
|
# Example of customized configuration.yaml entry
|
|
sensor:
|
|
- platform: bh1750
|
|
name: Ambient light
|
|
i2c_address: 0x5C
|
|
operation_mode: one_time_high_res_mode_1
|
|
sensitivity: 60
|
|
measurement_delay_ms: 200
|
|
scan_interval: 25
|
|
```
|
|
|
|
## {% linkable_title Directions for installing smbus support on Raspberry Pi %}
|
|
|
|
Enable I2c interface with the Raspberry Pi configuration utility:
|
|
|
|
```bash
|
|
# pi user environment: Enable i2c interface
|
|
$ sudo raspi-config
|
|
```
|
|
|
|
Select `Interfacing options->I2C` choose `<Yes>` and hit `Enter`, then go to `Finish` and you'll be prompted to reboot.
|
|
|
|
Install dependencies for use the `smbus-cffi` module and enable your _homeassistant_ user to join the _i2c_ group:
|
|
|
|
```bash
|
|
# pi user environment: Install i2c dependencies and utilities
|
|
$ sudo apt-get install build-essential libi2c-dev i2c-tools python-dev libffi-dev
|
|
|
|
# pi user environment: Add homeassistant user to the i2c group
|
|
$ sudo addgroup homeassistant i2c
|
|
|
|
# pi user environment: Reboot Raspberry Pi to apply changes
|
|
$ sudo reboot
|
|
```
|
|
|
|
### {% linkable_title Check the i2c address of the sensor %}
|
|
|
|
After installing `i2c-tools`, a new utility is available to scan the addresses of the connected sensors:
|
|
|
|
```bash
|
|
$ /usr/sbin/i2cdetect -y 1
|
|
```
|
|
|
|
It will output a table like this:
|
|
|
|
```text
|
|
0 1 2 3 4 5 6 7 8 9 a b c d e f
|
|
00: -- -- -- -- -- -- -- -- -- -- -- -- --
|
|
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
|
20: -- -- -- 23 -- -- -- -- -- -- -- -- -- -- -- --
|
|
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
|
40: 40 -- -- -- -- -- UU -- -- -- -- -- -- -- -- --
|
|
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
|
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
|
|
70: -- -- -- -- -- -- -- 77
|
|
```
|
|
|
|
So you can see the sensor address what you are looking for is **0x23** (there are more i2c sensors in that Raspberry Pi).
|