Archives mensuelles : mars 2022

FreeBSD des jails avec iocage… ou pas…

J’ai testé juste pour voir… iocage

J’ai créé une jail via iocage sur un disque ou j’ai de la place… 8 To (en USB).

FreeBSD création de jail du nom de “hb” avec iocage:

iocage activate dd8t
iocage fetch
iocage create -r 12.2-RELEASE -c 1 -n hb
iocage set ip4_addr=”bce0|192.168.0.1/24,lo0|127.0.0.2/32″ hb
iocage set allow_raw_sockets=1 hb
iocage set allow_socket_af=1 hb
iocage start hb
iocage console hb

iocage fonctionne ? on va migrer la jail hb du disque usb externe vers le SSD interne du système (mon système de fichier est ZFS).

iocage stop ALL
zfs unmount -f dd8t/iocage
zfs snapshot -r dd8t/iocage@migration
zfs send -R dd8t/iocage@migration | zfs receive -v zroot/iocage
iocage clean -a
zfs destroy -f dd8t/iocage
iocage activate zroot
zfs destroy -r zroot/iocage@migration

Il n’y a pas un grand intérêt… c’est un peu plus rapide que de faire les jails soit même…

FreeBSD – IoT – homebride – rtl_433

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:

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