De quoi est-il question ?
L’Internet des objets ou IdO ou en anglais IoT (Internet of Things)
HomeKit est un logiciel de domotique développé par Apple qui permet aux utilisateurs de contrôler les objets connectés de sa maison intelligente via son iPhone, iPad, Mac, …
Le logiciel homebridge permet de rendre compatible HomeKit des équipements (IoT) qui de base ne sont pas compatible avec Apple.
Le projet consiste avec des équipements en place depuis longtemps et non standard Apple à pouvoir obtenir de l’information, commander les objets et déclencher des actions.
Exemple: Via les scénarios HomeKit, Allumer 3 spots (parking, allée, jardin) lorsqu’il y a une détection de mouvement sur la camera parking entre 1/4 d’heure avant le couché du soleil et 1/4 après le levé du soleil.
Le contexte est le suivant, je dispose:
- de plusieurs capteurs thermo hygrométriques en 433 Mhz (ce type),
- de capteurs de mouvements et de contact portes/fenêtres, d’alarme, …
- de capteurs de consommation électrique, maison, prises, …
- de cameras (dont une sur les places de parking devant la maison),
- de plusieurs spots LED du parking jusqu’à la porte d’entrée de la maison.
Nous allons donc utiliser sur un serveur de type Raspberry PI avec les logiciels suivants:
- https://www.freebsd.org/ FreeBSD Système d’exploitation UNIX libre.
- https://homebridge.io/ Logiciel qui permet d’intégrer des appareils domestiques intelligents qui ne prennent pas nativement en charge HomeKit d’Apple.
- https://github.com/merbanan/rtl_433 Logiciel de décodage des transmissions par ondes hertziennes (dont le 433.92 Mhz)
- https://www.meross.com/ c’est un fournisseur d’IoT pas cher (commande de prises électrique, etc.)
- https://motion-project.github.io/ Motion est un logiciel de détection vidéo et qui permet de diffuser un flux vidéo. Je l’utilise en complément des détecteurs PIR.
- https://github.com/aler9/rtsp-simple-server un serveur et proxy qui permet de publier des flux vidéo et audio en direct (pour des raisons de sécurité mes camera IP sont derrière du filtrage IP et ne communique qu’avec ce proxy et absolument pas avec Internet…)
Noté qu’avec les informations remontées sur votre téléphone vous pouvez faire votre propre système d’alarmes.
FreeBSD installation du logiciel homebridge:
En plus de hombridge J’ajoute le module d’interface web, la gestion des caméras, le plugin pour la gestion des équipements en 433 Mhz ainsi que le plugin pour les IOT meross dans mon cas, prises, sensors, plug, …
pkg install npm-node14-6.14.8 avahi-libdns
ln -s /usr/local/include/avahi-compat-libdns_sd/dns_sd.h /usr/local/include
npm install -g mdns
npm install -g -unsafe-perm homebridge
npm install -g -unsafe-perm homebridge-config-ui-x
npm install -g -unsafe-perm homebridge-meross
npm install -g -unsafe-perm homebridge-camera-ffmpeg
npm install -g -unsafe-perm homebridge-rtl
# si vous installez un plugin qui ne fonctionne pas comme vous voulez pour d’autres types d’equipements, faire un npm uninstall
npm install -g -unsafe-perm homebridge-samsungsmarttv
npm uninstall homebridge-samsungtv
ajouter dans /etc/rc.conf :
homebridge_enable=YES
homebridge_user=homebridge
homebridge_facility=local0
homebridge_priority=info
ajouter dans /etc/syslog.conf et revoir newsyslog en conséquence:
local0.info /var/log/local0.log
créé un utilisateur homebridge
homebridge:*:1010:1010::0:0:Homebridge Apple:/home/homebridge:/usr/sbin/nologin
Exemple de la configuration homebridge:
{ "bridge": { "name": "Homebridge", "username": "AA:BB:CC:DD:EE:FF", "port": 51826, "pin": "123-45-678" }, "mdns": { "interface": "192.168.0.1" }, "description": "My Homebridge", "accessories": [], "platforms": [ { "name": "Config", "port": 8080, "auth": "admin", "theme": "auto", "tempUnits": "c", "lang": "auto", "sudo": false, "log": { "method": "file", "path": "/var/log/local0.log" }, "platform": "config" }, { "name": "Meross", "username": "MyUserName", "password": "MySecret", "disableDeviceLogging": false, "debug": true, "platform": "Meross" }, { "platform": "Camera-ffmpeg", "porthttp": "6666", "cameras": [ { "name": "Camera Parking", "motion": true, "videoConfig": { "source": "-rtsp_transport tcp -i rtsp://127.0.0.1:8554/parking_hd", "stillImageSource": "-rtsp_transport tcp -i rtsp://127.0.0.1:8554/parking_hd -vframes 1 -r 1", "maxStreams": 2, "maxWidth": 2560, "maxHeight": 1920, "maxFPS": 16, "audio": true } } ] }, { "platform": "rtl_433", "devices": [ { "id": "123123", "name": "Temperature exterieure", "type": "temperature" }, { "id": "456456", "name": "Porte entree", "type": "contact" }, { "id": "789789", "name": "PIR Parking", "type": "motion" } ] } ] }
Pour signaler un évènement comme une détection de mouvement d’une camera, il y a plusieurs solutions:
- Avec le logiciel rtl_433, une détection par des capteurs, soit de mouvement (type PIR), soit de contact, la remonter à HomeKit est alors automatique via Homebridge et le module homebridge-rtl
- et/ou une détection sur la base de l’analyse d’un flux vidéo d’une camera via le logiciel motion, il faut alors faire appel à l’URL:
http://192.168.0.1:6666/motion?Camera%20Parking
Dans ma configuration du logiciel motion pour la camera du parking (parking.conf) j’ai:
on_event_start /usr/local/etc/motion/get_parking_event_start %f
C’est juste un petit script pour signaler à homebridge une alarme de mouvement:
#!/bin/sh
# signal motion to homebridge (HomeKit Apple)
/usr/local/bin/wget –quiet –timeout=2 -O /dev/null ‘http://192.168.0.1:6666/motion?Camera%20Parking’
En savoir plus:
https://sunoo.github.io/homebridge-camera-ffmpeg/automation/http.html
Si besoin pour debuger:
DEBUG= »* » /usr/local/bin/homebridge -D
kill -HUP `cat /var/run/homebridge.pid`
/usr/local/etc/rc.d/homebridge start
tail -F /var/log/local0