Franck Nijhof c464056402
Making our website faster, cleaner and prettier (#9853)
* 🔥 Removes octopress.js

* 🔥 Removes use of root_url var

* 🔥 Removes Octopress generator reference from feed

* 🔥 Removes delicious support

* 🔥 Removes support for Pinboard

* 🔥 Removes support for Disqus

* 🔥 Removes support for Google Plus

* ↩️ Migrate custom after_footer to default template

* ↩️ Migrate custom footer to default template

* ↩️ Migrate custom header to default template

* 🔥 Removes unused template files

* 🚀 Places time to read directly in post template

* 🚀 Removes unneeded capture from archive_post.html template

* 🔥 🚀 Removes unused, but heaving sorting call in component page

* 🚀 Merged javascripts into a single file

* 🔥 Removes more uses of root_url

* 🚀 Removal of unneeded captures from head

* 🔥 🚀 Removal of expensive liquid HTML compressor

* 🔥 Removes unneeded templates

* 🚀 Replaces kramdown with GitHub's CommonMark 🚀

* 💄 Adds Prism code syntax highlighting

*  Adds support for redirect in Netlify

* ↩️ 🔥 Let Netlify handle all developer doc redirects

* ✏️ Fixes typo in redirects file: Netify -> Netlify

* 🔥 Removes unused .themes folder

* 🔥 Removes unused aside.html template

* 🔥 Removes Disqus config leftover

* 🔥 Removes rouge highlighter config

* 🔥 Removes Octopress 🎉

* 💄 Adjust code block font size and adds soft wraps

* 💄 Adds styling for inline code blocks

* 💄 Improve styling of note/warning/info boxes + div support

* 🔨 Rewrites all note/warning/info boxes
2019-07-15 22:17:54 +02:00

148 lines
4.9 KiB
Markdown

---
title: "Arduino"
description: "Instructions on how to setup an Arduino boards within Home Assistant."
logo: arduino.png
ha_category:
- DIY
- Sensor
- Switch
featured: true
ha_release: pre 0.7
ha_iot_class: Local Polling
redirect_from:
- /components/sensor.arduino/
- /components/switch.arduino/
---
The [Arduino](https://www.arduino.cc/) device family are microcontroller boards that are often based on the ATmega328 chip. They come with digital input/output pins (some can be used as PWM outputs), analog inputs, and a USB connection.
The equipment depends on the [type](https://www.arduino.cc/en/Main/Products) of the board. The most common ones are the Arduino Uno and the Arduino Leonardo with 14 digital input/output pins and 6 analog input pins.
There are a lot of extensions (so-called [shields](https://www.arduino.cc/en/Main/ArduinoShields)) available. Those shields can be plugged-in into the existing connectors and stacked on top of each other. This makes it possible to expand the capabilities of the Arduino boards.
The `arduino` integration is designed to let you use a directly attached board to your Home Assistant host over USB.
There is currently support for the following device types within Home Assistant:
- [Sensor](#sensor)
- [Switch](#switch)
## Configuration
You need to have the [Firmata firmware](https://github.com/firmata/) on your board. Please upload the `StandardFirmata` sketch to your board; please refer to the [Arduino documentation](https://www.arduino.cc/en/Main/Howto) for further information.
To integrate an Arduino boards with Home Assistant, add the following section to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
arduino:
port: /dev/ttyACM0
```
{% 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.
```bash
$ ls /dev/ttyACM*
```
If that's not working, check your `dmesg` or `journalctl -f` output. Keep in mind that Arduino clones are often using a different name for the port (e.g., `/dev/ttyUSB*`).
<div class='note warning'>
A word of caution: The Arduino boards are not storing states. This means that with every initialization the pins are set to off/low.
</div>
Add the user who is used to run Home Assistant to the groups to allow access to the serial port.
```bash
$ sudo usermod -a -G dialout,lock $USER
```
## Sensor
The `arduino` sensor platform allows you to get numerical values from an analog input pin of an [Arduino](https://www.arduino.cc/) board. Usually the value is between 0 and 1024.
To enable an Arduino sensor with Home Assistant, add the following section to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
sensor:
platform: arduino
pins:
1:
name: Door switch
0:
name: Brightness
```
{% 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.
## Switch
The `arduino` switch platform allows you to control the digital pins of your [Arduino](https://www.arduino.cc/) board. Support for switching pins is limited to high/on and low/off of the digital pins. PWM (pin 3, 5, 6, 9, 10, and 11 on an Arduino Uno) is not supported yet.
To enable the Arduino pins with Home Assistant, add the following section to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
switch:
platform: arduino
pins:
11:
name: Fan Office
12:
name: Light Desk
initial: true
negate: true
```
{% 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.