https://github.com/pilotak/homeassistant-mcp2221
Exposes GPIOs of MCP2221 to HomeAssistant
https://github.com/pilotak/homeassistant-mcp2221
gpio homeassistant input mcp2221 mcp2221a output proxmox usb usb-hid
Last synced: about 2 months ago
JSON representation
Exposes GPIOs of MCP2221 to HomeAssistant
- Host: GitHub
- URL: https://github.com/pilotak/homeassistant-mcp2221
- Owner: pilotak
- License: apache-2.0
- Created: 2024-01-07T17:38:35.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2026-01-26T20:00:29.000Z (4 months ago)
- Last Synced: 2026-01-27T07:34:35.047Z (4 months ago)
- Topics: gpio, homeassistant, input, mcp2221, mcp2221a, output, proxmox, usb, usb-hid
- Language: Python
- Homepage:
- Size: 30.3 KB
- Stars: 3
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# HomeAssistant MCP2221 integration
[](https://github.com/pilotak/homeassistant-mcp2221/actions/workflows/validate.yaml)
Integration that adds missing GPIOs (input, output, ADC) to your NUC or Proxmox-based installation over USB.
```yaml
# Example configuration.yaml entry
mcp2221:
- switches:
- name: "Output 0"
pin: 0
unique_id: out0
- name: "Output 1"
pin: 1
unique_id: out1
binary_sensors:
- name: "Input 2"
pin: 2
unique_id: in2
device_class: door
- name: "Input 3"
pin: 3
unique_id: in3
icon: mdi:electric-switch
# adc:
# ref: 4.096
# sensors:
# - name: "voltage"
# pin: 3
# unique_id: adc3
```
## Install via [HACS](https://github.com/custom-components/hacs)
You can find this integration in the community store.
[](https://my.home-assistant.io/redirect/hacs_repository/?owner=pilotak&repository=homeassistant-mcp2221&category=Integration)
## Install manually
You need to copy the `mcp2221` folder from this repo to the `custom_components` folder in the root of your configuration. The file tree should look like this:
```
└── ...
└── configuration.yaml
└── custom_components
└── mcp2221
└── __init__.py
└── sensor.py
└── ...
```
> **Note**: if the `custom_components` directory does not exist, you need to create it.
### Full examples
1️⃣Switch (output) & multiple devices
You can also specift multiple device, just adjust the index (`dev`) or even specify different PID/VID
```yaml
mcp2221:
- dev: 0
pid: 0x00DD
vid: 0x04D8
switches:
- name: "Output 0"
pin: 0
unique_id: output_0_0
icon: mdi:toggle-switch
- dev: 1
switches:
- name: "Output 0"
pin: 0
unique_id: output_1_0
icon: mdi:toggle-switch
```
2️⃣Binary sensor (input)
❗Don't leave pin floating
```yaml
mcp2221:
binary_sensors:
- name: "Input 1"
pin: 1
inverted: True
unique_id: input_0
icon: mdi:toggle-switch
scan_interval: 10
device_class: door
```
3️⃣Sensor (ADC)
Only pins GP1-GP3, result is 10-bit (0-1023)
You can also adjust the result, example here is when power supply is 3.3V
```yaml
mcp2221:
adc:
ref: "VDD" # or 1.024, 2.048, 4.096
sensors:
- name: "Battery voltage"
pin: 3
unique_id: battery_voltage
scan_interval: 50
icon: mdi:car-battery
device_class: voltage
unit_of_measurement: V
value_template: "{{ value * 3.3 / 1023}}"
```