comelit-hub-rs Γ¨ un bridge che espone i dispositivi di un impianto Comelit HUB come accessori Apple HomeKit tramite il protocollo HAP (HomeKit Accessory Protocol). Comunica con il concentratore Comelit via MQTT e permette di controllare luci, tapparelle, termostati, citofoni e cancelli direttamente dall'app Casa di iOS/macOS.
| Dispositivo | Accessorio HomeKit |
|---|---|
| π‘ Luci | Lampadina on/off |
| πͺ Tapparelle / veneziane | Window Covering con posizione |
| π‘οΈ Termostati / deumidificatori | Termostato |
| πͺ Cancelli / porte | Porta |
| π Citofono | Campanello |
Il workspace Rust Γ¨ composto da quattro crate:
comelit-hub-rs/
βββ client/ # comelit-client-rs β libreria MQTT + CLI
βββ hap/ # comelit-hub-hap β bridge HAP (binario principale)
βββ tui/ # interfaccia TUI di diagnostica
βββ viper-client/ # client per dispositivi Viper
Il bridge si connette al concentratore Comelit, recupera l'indice dei dispositivi, crea gli accessori HAP corrispondenti e rimane in ascolto degli aggiornamenti MQTT per sincronizzare lo stato in tempo reale.
- Concentratore Comelit HUB (modello 20003150 o compatibile) raggiungibile in rete locale
- Rust 1.80+ (edition 2024) β solo per compilazione da sorgenti
- Apple Home (iOS 16+ / macOS 13+) per l'associazione HomeKit
git clone https://github.com/madchicken/comelit-hub-rs.git
cd comelit-hub-rs
cargo build --release -p comelit-hub-hapIl binario compilato si trova in target/release/comelit-hub-hap.
Lo script installa il binario, i file di configurazione e registra il servizio di sistema.
cd hap/installer
sudo ./install.shLinux β installa e abilita un'unitΓ systemd:
/etc/systemd/system/comelit-hub-hap.service
macOS β installa un LaunchDaemon:
/Library/LaunchDaemons/com.comelit.hub.hap.plist
Per disinstallare:
sudo ./uninstall.shCOMELIT_USER=admin
COMELIT_PASSWORD=admin
COMELIT_CONFIG=/etc/comelit-hub-hap/comelit-hub-hap-config.json
RUST_LOG=info
# Log
COMELIT_LOG_DIR=/var/log/comelit-hub-hap
COMELIT_LOG_PREFIX=comelit-hub
COMELIT_LOG_ROTATION=daily # minutely | hourly | daily | never
COMELIT_MAX_LOG_FILES=7{
"pairing_code": [1, 1, 1, 2, 2, 3, 3, 3],
"mount_lights": true,
"mount_window_covering": true,
"mount_thermo": true,
"mount_doors": true,
"mount_doorbells": false,
"window_covering": {
"opening_time": 35,
"closing_time": 35
},
"door": {
"opening_closing_time": 60,
"opened_time": 60
},
"prometheus_url": null,
"prometheus_token": null
}| Chiave | Descrizione |
|---|---|
pairing_code |
Codice di 8 cifre per l'associazione HomeKit |
mount_* |
Abilita/disabilita la registrazione per categoria di dispositivi |
window_covering.opening_time |
Tempo in secondi per aprire completamente una tapparella |
window_covering.closing_time |
Tempo in secondi per chiudere completamente una tapparella |
door.opening_closing_time |
Durata del ciclo apertura/chiusura cancello (secondi) |
door.opened_time |
Tempo che il cancello rimane aperto prima di richiudersi (secondi) |
prometheus_url |
URL del push gateway Prometheus (opzionale) |
comelit-hub-hap \
--user admin \
--password admin \
--host 192.168.1.100 \
--settings /etc/comelit-hub-hap/comelit-hub-hap-config.jsonSe --host viene omesso, il bridge esegue una scansione automatica della rete locale per trovare il concentratore Comelit.
--user <USER> Utente Comelit Bridge [default: admin]
--password <PASSWORD> Password Comelit Bridge [default: admin]
--host <HOST> IP o hostname del concentratore
--port <PORT> Porta MQTT [default: 1883]
--settings <PATH> Percorso del file di configurazione JSON
--log-dir <DIR> Directory per i file di log
--log-prefix <PREFIX> Prefisso dei file di log [default: comelit-hub]
--log-rotation <PERIOD> Rotazione: minutely | hourly | daily | never [default: daily]
--max-log-files <N> Numero massimo di file di log (0 = illimitato) [default: 7]
--log-to-console Stampa i log anche su console (con --log-dir)
--web-enabled Abilita la web UI [default: true]
--web-port <PORT> Porta della web UI [default: 8080]
Al primo avvio il bridge stampa un QR code nel log. Inquadralo con l'app Casa per completare l'associazione:
Pair your Comelit Bridge using pin code 111-22-333
Il codice di default Γ¨ 111-22-333 (configurabile tramite pairing_code nel JSON).
Il bridge espone una web UI sulla porta 8080 (configurabile) con:
- Stato della connessione al concentratore
- Lista dei dispositivi registrati e loro stato
- QR code per l'associazione HomeKit
- Endpoint
/metricsin formato Prometheus
Il crate client include una CLI per interagire direttamente con il concentratore Comelit senza HomeKit:
# Scansione della rete
comelit-hub-cli scan
# Informazioni su un dispositivo
comelit-hub-cli device-info --id DOM#BL#20.1
# Accendi/spegni una luce
comelit-hub-cli lights --id DOM#LT#1.1 --toggle 1
# Ascolta gli aggiornamenti in tempo reale
comelit-hub-cli listenLo script comelit-hub-ctl Γ¨ installato in /usr/local/bin e fornisce comandi di gestione uniformi su Linux e macOS:
comelit-hub-ctl start
comelit-hub-ctl stop
comelit-hub-ctl restart
comelit-hub-ctl status
comelit-hub-ctl logs# Compilazione debug
cargo build
# Test
cargo test
# Test con log visibili
RUST_LOG=debug cargo test -- --nocaptureMIT β vedi LICENSE.
