Un accesoriu HomeKit personalizat, cu Python

  • 2 minute de citit
  • 5 exemple de cod
  • 2 imagini

Disponibil și în English

Pe această pagină

Salut 👋,

În acest articol scurt vreau să arăt cum am implementat un accesoriu HomeKit personalizat, cu python.

Cardul SD al Home Assistant-ului meu a murit 🪦 acum câteva zile, iar suportul pentru senzorii bazați pe GPIO va fi eliminat în versiunile noi. Asta îl face nepotrivit pentru nevoile mele, dar mi-a oferit ocazia perfectă să încerc alte lucruri.

Ca să continui monitorizarea temperaturii și umidității din casă, am construit un accesoriu HomeKit personalizat folosind HAP Python.

Senzorul

Un senzor de calitate a aerului BME680 este folosit pentru a monitoriza temperatura și umiditatea. Este conectat la Pi conform următoarei scheme:

Comunicarea cu Pi-ul se face folosind protocolul I2C. Dacă vrei să folosești I2C în propriul tău montaj, trebuie activat din raspi-config, deoarece nu este activat implicit.

# Executăsudo raspi-config# Apoi selectează Interfacing options->I2C și activează-l.

Conexiunea poate fi testată cu următoarea comandă:

sudo apt-get install build-essential libi2c-dev i2c-tools python-dev libffi-dev git/usr/sbin/i2cdetect -y 1
pi@raspberrypi:~ $ i2cdetect -y 1     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f00:                         -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- 76 -- 

Va afișa adresa folosită de senzor, în cazul nostru adresa I2C 0x76.

Codul pentru accesoriu

Poți vedea codul complet pentru accesoriu și pentru senzorul bme680 în repo-ul meu de git.

Pentru a rula programul, clonează repository-ul și asigură-te că rulezi sub utilizatorul pi, altfel va trebui să schimbi câteva lucruri.

cd /home/pi && git clone [email protected]:dnutiu/bme680-homekit.git && cd bme680-homekitsudo apt-get install libavahi-compat-libdnssd-devpip3 install -r requirements.txt

Verifică faptul că programul funcționează rulând python3 main.py. Prima rulare te va întreba dacă vrei să adaugi accesoriul în aplicația Home. Dacă ratezi acest pas, îl poți repeta ștergând fișierul accessory.state din directorul home al utilizatorului pi și rulând programul din nou.

După ce ai verificat că funcționează, poți configura un serviciu systemd care să ruleze scriptul python al accesoriului la pornirea Pi-ului.

Copiază bme680-homekit.service în /etc/systemd/system și verifică dacă serviciul rulează.

sudo cp bme680-homekit.service /etc/systemd/systemsudo systemctl status bme680-homekit

Dacă vrei să rulezi acest lucru sub alt utilizator decât pi, va trebui să modifici fișierul bme680-homekit.service.

Felicitări că ai ajuns până aici! 🎉

Poți vedea mai multe exemple de cod în repository-ul HAP-Python.

Mulțumesc pentru lectură și distracție plăcută! 👩‍💻👨‍💻 ⚙️